feat(cli): iln submit interactive, cancel, marketplace, fund, and status rich output#261
Merged
Levi-Ojukwu merged 31 commits intoJun 28, 2026
Conversation
…il, buildTimeline
|
@Jaydbrown Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Merged commands from main (reputation, completion) with PR branch (submit, cancel, marketplace, fund, status).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #233
Closes #231
Closes #230
Closes #229
Summary
Implement
iln submitcommand with interactive prompts #229 —iln submitinteractive prompts: Refactoredsubmit.tsto support both flag-based (--payer,--amount,--token,--rate,--due) and interactive (@inquirer/promptswizard) modes. Added--dry-runflag that serialises the transaction payload as JSON without signing. Prints a receipt table on success. Both modes are injection-testable viamakeSubmitCommand(prompter, submitter).Implement
iln cancelcommand #233 —iln cancel: Newcancel.tscommand that fetches the invoice, guards against non-Pending state, shows a confirmation prompt ("Cancel Invoice #X (100 USDC, due 2025-12-31)? This cannot be undone. [y/N]"), and prints the TX hash on success.--yesskips the prompt for scripting.Implement
iln fundcommand with marketplace listing #230 —iln marketplace+iln fundconfirm: Newmarketplace.tscommand lists Pending invoices in a terminal table with--sort yield|amount|dueand--filter token=USDCflags. Updatedfund.tsadds a confirmation prompt ("Fund invoice #X (500 USDC, 3.2% yield)? [y/N]") with--yesto skip.Implement
iln statuscommand with rich output #231 —iln statusrich output: Refactoredstatus.tsto display a full invoice summary (ID, colour-coded state badge, submitter, payer, LP, token, amount, discount rate, effective yield, due date, time-to-expiry countdown, mini status timeline).--jsonoutputs raw JSON for piping;--watchpolls every 10 seconds until a terminal state (Paid, Cancelled, Expired) is reached.Test plan
iln submit --payer G... --amount 100 --token USDC --rate 300 --due 2025-12-31prints receipt table with invoice ID and TX hashiln submit --dry-runprints JSON payload and exits cleanly without calling the submitteriln submit(no flags) calls the prompter wizard and passes answers to the submitteriln cancel --id Xon a Pending invoice shows confirm prompt;ycancels,naborts cleanlyiln cancel --id Xon a Funded/Paid invoice prints an error and exits 1iln cancel --id X --yesskips the prompt and cancels immediatelyiln marketplaceprints a table of Pending invoices sorted by yield descendingiln marketplace --sort amountsorts by amount descendingiln marketplace --filter token=USDCshows only USDC invoicesiln fund --id Xshows confirmation with amount, token, and yield;yfunds,nabortsiln fund --id X --yesskips confirmationiln status --id Xprints full detail table and timelineiln status --id X --jsonoutputs valid parseable JSON with all fieldsiln status --id X --watchpolls every 10 s and stops when state reaches Paid/Cancelled/Expired