@inflowpayai/inflow 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +6 -5
  2. package/dist/cli.js +267 -12
  3. package/package.json +3 -3
package/dist/cli.js CHANGED
@@ -7,6 +7,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
7
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
8
  var __getProtoOf = Object.getPrototypeOf;
9
9
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __esm = (fn, res) => function __init() {
11
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
12
+ };
10
13
  var __commonJS = (cb, mod) => function __require() {
11
14
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12
15
  };
@@ -27,10 +30,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
27
30
  mod
28
31
  ));
29
32
 
33
+ // <define:__SKILL_BODIES__>
34
+ var define_SKILL_BODIES_default;
35
+ var init_define_SKILL_BODIES = __esm({
36
+ "<define:__SKILL_BODIES__>"() {
37
+ define_SKILL_BODIES_default = { "agentic-payments": '# Agentic Payments\n\nPay HTTP 402-protected resources on the user\'s behalf. InFlow speaks two payment protocols - **MPP** and **x402** - but the flow is the same for both: shared setup (install, run, authenticate), then a **router** that picks the protocol from the seller\'s 402 header, then one **Paying a 402 resource** section that covers both. A per-protocol **delta table** at the top of that section lists the handful of real differences (header name, credential name, filters, error codes); read your row, then follow the shared steps.\n\n## Installing\n\nInstall with `npm install -g @inflowpayai/inflow`. Or run directly with `npx -y @inflowpayai/inflow`.\n\n## Running\n\nInFlow runs as a **standalone CLI** or an **MCP server**.\n\n**MCP**: add an `inflow` server to your MCP client config that runs `npx -y @inflowpayai/inflow --mcp`. Keep the `-y` flag - it suppresses npx\'s confirmation prompt, without which the MCP host can stall on first run.\n\n**MCP mode** exposes every CLI command as a tool. Call `tools/list` on the MCP server for the authoritative inventory; arguments mirror the CLI flags one-to-one.\n\n### Common commands / options\n\n**The CLI is the source of truth for exact flags, enums, and output shapes** - run `inflow <command> --schema` for one command, or `inflow --llms-full` for everything. This playbook covers *when and why*, not exhaustive parameter lists; when you need a precise flag name, value set, or response shape, query the CLI rather than guessing.\n\n- `inflow --llms` (or `--llms-full` for parameter detail) - discover all commands. `inflow <command> --schema` for a single command\'s JSON Schema.\n- `inflow --skill` - print this playbook (no frontmatter) to stdout. Use it to paste into the system-prompt field of an MCP host that doesn\'t natively load skills: `inflow --skill | pbcopy`.\n- Default output is `toon`. Override with `--format <fmt>`; for programmatic parsing prefer `json` (single document) or `jsonl` (line-delimited).\n- Multi-step flows return `_next.command` - run it to continue.\n- `--auth <path>` overrides the credentials file location.\n- `--api-key <key>` or `INFLOW_API_KEY=<key>` is an alternative to device-flow auth.\n\n## Authenticate\n\nAuthentication is shared by both protocols - do it once, before either payment flow. **Don\'t start a payment until the user is authenticated.**\n\nCheck the current state first - the user may already be logged in:\n\n```bash\ninflow auth status\n```\n\nA successful `auth status` returns `authenticated: true` plus `auth_method` (`device_token` or `api_key`), a truncated `access_token` preview (never the full token), `credentials_path`, `connection`, and possibly an `update` field. For the user\'s identity (email, handle, account id), call `inflow user get` - `auth status` deliberately omits it. Run the command to see the full shape.\n\nIf the response includes an `update` field, a newer version of `inflow` is published.\n\n**Surface and defer.** Tell the user a newer version is available and how to upgrade - `npm install -g @inflowpayai/inflow@latest` (or `npx -y @inflowpayai/inflow@latest`). Then **proceed with the current version**. Only block on the upgrade if a subsequent command fails with `VERSION_UNSUPPORTED` (or an HTTP 426 from the API), at which point the upgrade is mandatory and you should not retry until it lands.\n\nIf `authenticated` is `false`, start the device flow:\n\n```bash\ninflow auth login --client-name "<your-agent-name>"\n```\n\nReplace `<your-agent-name>` with the name of your agent or application (for example `"Personal Assistant"`, `"Shopping Bot"`). The device-authorization page in the user\'s browser displays this name when they approve the connection. Use a clear, unique, identifiable name.\n\nThe response includes a `verification_url` (present this to the user), a `phrase`, and a `_next.command`. Run that command immediately to poll until authenticated. **Do not wait for the user to respond before starting the poll.**\n\nIf your environment can\'t relay the verification phrase to the user while a separate polling command blocks I/O, use inline polling instead:\n\n```bash\ninflow auth login --client-name "<name>" --interval 5 --timeout 300\n```\n\n**API key alternative:** if the user provides an API key, set `INFLOW_API_KEY=<key>` in the environment (or pass `--api-key <key>` to any command) instead of running `auth login`. The API key takes precedence over a saved device token.\n\n## Which protocol? - start here\n\nBefore paying, decide which protocol the resource uses. **You do not choose it - the seller\'s 402 challenge decides.** Run one read-only, no-auth command and let it detect both:\n\n```bash\ninflow inspect <url>\n```\n\n`inflow inspect` probes the URL **once** and decodes both MPP and x402 challenges from the same 402. Read its `detected` array to pick the pay rail:\n\n| `detected` | Pay with |\n| --- | --- |\n| `["mpp"]` | `inflow mpp pay <url>` |\n| `["x402"]` | `inflow x402 pay <url>` |\n| `["mpp", "x402"]` | `inflow mpp pay <url>` - **MPP wins when both are present** |\n| `[]` (seller still returned 402) | Not InFlow-payable on this account. Stop and tell the user; check `warnings` for why. |\n\nIf `inspect` returns `outcome: "no-payment-required"`, the URL isn\'t paywalled - there\'s nothing to pay.\n\n---\n\n## Paying a 402 resource\n\nOne flow for both protocols. Prerequisite: you are authenticated (see [Authenticate](#authenticate)). First find your protocol\'s row in the **Protocol deltas** table below - it names the 402 header that selected it, the matching model, the filter flags, and the credential and replay header you\'ll use. Everything else in this section applies to both protocols.\n\n**Sequencing.** Run pre-flight before pay - `pay` fails or double-charges if the pre-flight checks didn\'t clear. `inspect` and `decode` are read-only and need no auth, so they may run before you authenticate if useful (e.g. sizing up a paywall first).\n\n### Protocol deltas\n\n| Aspect | MPP | x402 |\n| --- | --- | --- |\n| Selected when the 402 carries | `WWW-Authenticate: Payment` | `PAYMENT-REQUIRED` (and no `WWW-Authenticate: Payment`) |\n| Command prefix | `inflow mpp \u2026` | `inflow x402 \u2026` |\n| Matching model | The seller\'s challenge **pins the rail** - the buyer does not choose scheme/network/asset | Pay where the x402 `accepts` \u2229 `supported.kinds` is non-empty |\n| Filter flags | `--payment-method`, `--intent`, `--currency`, `--rail`, `--instrument-id` | `--scheme`, `--network`, `--asset`, `--asset-name` |\n| Credential field (after approval) | `credential` (from `mpp status` when `state` is `ready`) | `encoded_payload` (from `x402 status` after approval) |\n| Replay header | `Authorization: Payment <credential>` | `PAYMENT-SIGNATURE: <encoded_payload>` |\n| Write-credential-to-disk flag | `--credential-file <path>` | `--payload-file <path>` |\n| Idempotency | - | `--payment-id` (see Step 2) |\n| Cancel uses | `approval_id` | `approval_id` |\n| Protocol-specific error codes | `PAYMENT_FAILED`, `PAYMENT_EXPIRED`, `PAYMENT_NOT_ACCEPTED` | `APPROVAL_TIMEOUT`, `APPROVAL_FAILED`, `APPROVAL_CANCELLED` |\n\nThroughout this section `<mpp|x402>` means "use your protocol\'s prefix." For the exact parameters and output shape of any command below, run `inflow <command> --schema`.\n\n### Step 1: Pre-flight evaluation\n\n```bash\n# 1. Parse what the seller will accept - read-only, no auth (both protocols in one probe)\ninflow inspect <url>\n\n# (Already have the raw 402 header from a prior response? Decode it directly instead of re-probing:)\ninflow <mpp|x402> decode \'<402 header value>\'\n\n# 2. List what the buyer\'s account can pay with (use the protocol from `detected`)\ninflow <mpp|x402> supported\n\n# 3. Check balances for the candidate currency/asset(s)\ninflow balances list\n```\n\n`inflow inspect` returns what the seller accepts under its `mpp` and `x402` keys - the price is each challenge\'s `amount` field (raw atomic units for x402; the asset is the on-chain contract address, not a symbol). `decode` parses a single raw header you already hold (and also accepts a base64url credential / receipt). `supported` returns what the account can pay with; `balances list` returns `available` per currency. Run the commands to see the exact shapes.\n\nDecide whether you can pay (apply your protocol\'s matching model from the delta table):\n\n| Condition | Meaning | Action |\n| --- | --- | --- |\n| No payable match between the seller and the buyer\'s `supported` methods | No payable rail | Stop \u2192 `NO_INFLOW_MATCH`. Tell the user the seller\'s rails aren\'t supported by their account. |\n| A match exists, but `balances.available < amount` for every match | Right rail, not enough funds | Stop \u2192 run `inflow deposit-addresses list`, surface the address(es) in full, ask the user to fund a matching network. |\n| A match exists **and** \u22651 match has `balances.available \u2265 amount` | Payable | Proceed to Step 2. |\n\n**Optional filters** narrow *which* offer to fulfil - optional, AND-combined, applied on `pay`, and an empty result fails with `NO_FILTERED_MATCH` (it does not fall through to a default order). One non-obvious case: MPP\'s `--instrument-id` picks *how* to fund (an instrument-rail / fiat challenge), not which challenge. For the exact filter flags and accepted values per protocol, run `inflow <mpp|x402> pay --schema`.\n\n**Decimal precision.** `balances.available` and the challenge/`amount` value are decimal strings preserving BigDecimal precision. **Never parse them to a JS `Number`** - that drops precision. Compare as strings, or use a `BigInt` / `decimal.js`-style library.\n\n### Step 2: Pay\n\nBefore initiating the call, summarize the intent to the user in chat: amount, currency, resource URL, and the method/rail (MPP) or scheme/network (x402). The user verifies the canonical details on the approval screen; the chat summary is what they read first. Example:\n\n> "I\'m about to pay 0.10 USDC to api.foo.dev for /dataset.csv. Requesting approval next."\n\n**Fast path (recommended).** When the agent can block until the payment finishes, set `--interval N` and let the CLI run the whole flow in one call - probe, decode, prepare, await approval, replay against the seller, return the body:\n\n```bash\ninflow <mpp|x402> pay <url> --interval 5 --max-attempts 180\n```\n\nThe result includes `outcome`, `transaction_id`, `response_status`, `settled`, the seller body inline (or `output_saved_to` if `--output-file` is set), and the now-consumed credential (`credential` for MPP, `encoded_payload` for x402). On the fast path the CLI has already replayed that credential to fetch the body - it appears in the result for reference only; **do not replay it yourself.** To surface `approval_url` *before* the call returns, add `--format jsonl` - frames stream line-by-line. With the default `json` (or `toon`), the agent only sees the final buffered result.\n\n**`outcome` values.** A completed `pay` returns one of three terminal outcomes - branch on it, don\'t assume `paid`:\n\n| `outcome` | Meaning | What to do |\n| --- | --- | --- |\n| `paid` | Settled and the seller returned 2xx | Deliver the body to the user |\n| `no-payment-required` | The resource wasn\'t paywalled, or was already paid | Tell the user nothing was charged; return the body |\n| `replay-rejected` | Payment was approved (funds in transit) but the seller replied non-2xx on the replay | Do NOT report success. Tell the user the seller\'s response failed; because the payment didn\'t complete, the in-transit funds are reverted to their InFlow balance. Offer to retry |\n\n**Two-step path.** Use this when the agent\'s host can\'t block I/O long enough for the user to approve (chat UIs that yield between turns). Drop `--interval`; the first call returns `transaction_id` + `approval_id` + `approval_url` + a `_next` `status` command, and the agent drives the replay itself once a credential arrives.\n\n```bash\ninflow <mpp|x402> pay <url>\n# -> { "transaction_id": "txn_abc", "approval_id": "appr_xyz", "approval_url": "https://app.inflowpay.ai/approvals/appr_xyz", "_next": { "command": "<mpp|x402> status txn_abc --interval 5 --max-attempts 180" } }\n```\n\nMind the two distinct ids: poll, replay, and resume all use `transaction_id`; **cancel uses `approval_id`** (`inflow <mpp|x402> cancel <approval_id>`). Both are returned by `pay`.\n\nFor non-GET requests, pass `--method`, `--data`, `--header` (repeatable):\n\n```bash\ninflow <mpp|x402> pay https://seller.example.com/api/widgets --method POST --data \'{"sku":"widget-1"}\' --header "X-Custom: value" --interval 5 --max-attempts 180\n```\n\n**Idempotency (x402 only).** Set `--payment-id <id>` whenever a retry on transport failure is possible - the server treats two requests with the same id as the same logical payment, so a retry after a network blip won\'t double-charge. Use a stable random opaque value generated once per intent; reuse the same id on transport retry; regenerate only when the user explicitly wants a fresh charge. Don\'t tie the id to wall-clock time - a date-based id silently double-charges on next-day "buy this again" requests. Without `--payment-id`, the server generates one each call - fine for one-shots, unsafe for retries. (Format constraints: `inflow x402 pay --schema`.)\n\n```bash\ninflow x402 pay <url> --payment-id "<stable-opaque-id>"\n```\n\n**Sensitive / binary output.** The one-time bearer credential (`credential` for MPP, `encoded_payload` for x402; returned after approval and echoed in the fast-path result) must not be echoed back in chat. Write it to disk at mode `0o600` with your protocol\'s flag (`--credential-file <path>` for MPP, `--payload-file <path>` for x402); replay then reads from that file. For the seller\'s response body, `--output-file <path>` writes bytes to disk and replaces `body` / `body_base64` with `output_saved_to: <path>` - pair with `--no-show-body` for binary content (PDFs, images, audio, datasets) so bytes never appear inline as base64:\n\n```bash\ninflow <mpp|x402> pay https://api.foo.dev/dataset.csv --interval 5 --max-attempts 180 --output-file /tmp/dataset.csv --no-show-body\n```\n\n**Polling discipline.** Persist `transaction_id` as soon as `pay` returns it. Then:\n\n- Run `_next.command` (or `<mpp|x402> status <transaction_id> --interval N`) immediately. Don\'t wait for the user to confirm before polling starts.\n- If polling is interrupted - network drop, session bounce, user kills the agent - resume with `inflow <mpp|x402> status <transaction_id> --interval 5 --max-attempts 180`. Only create a new transaction if the original expired (`PAYMENT_EXPIRED` for MPP, `APPROVAL_TIMEOUT` for x402), was denied/cancelled, or its credential is already consumed.\n- If `POLLING_TIMEOUT` fires before approval, ask the user whether to keep waiting or cancel - don\'t silently restart the poll.\n- If >12 minutes elapsed without a user response (\u22483 min before the 15-minute approval window closes), surface that explicitly so they can act before the window closes.\n- If the user aborts ("nevermind", "cancel that"), call `inflow <mpp|x402> cancel <approval_id>` before exiting. Otherwise the approval sits pending for 15 minutes and triggers phantom notifications in the user\'s InFlow app.\n\nOnce `status` reports the credential (MPP: `state: ready` with `credential`; x402: `encoded_payload`), replay the original seller request with your protocol\'s replay header from the delta table - `Authorization: Payment <credential>` (MPP) or `PAYMENT-SIGNATURE: <encoded_payload>` (x402); use `$(cat <file>)` if you wrote it to disk with `--credential-file` / `--payload-file`. The seller\'s protected response comes back on the replay.\n\n### Limits\n\n| Limit | Value |\n| --- | --- |\n| Approval window | 15 minutes from `pay` creating the transaction (`--timeout` overrides the polling deadline) |\n| Polling stop condition | Polling ends at whichever fires first: `--max-attempts` (count, default `0` = unlimited) or `--timeout` (seconds, default `900` = the full 15-min window). The examples use `--interval 5 --max-attempts 180` (= 900 s) so a copied command covers the whole window - `--interval 5 --max-attempts 60` (= 300 s) would stop polling at 5 min, well before approval can land |\n| Credential reuse | One-time. The credential (`credential` for MPP, `encoded_payload` for x402) is consumed by the first seller replay - not reusable; a failed seller call requires a new `pay` |\n\n### Worked example (MPP)\n\nA user asks the agent to fetch a paywalled dataset at `https://api.foo.dev/dataset.csv`.\n\nPre-flight: `inflow inspect <url>` reports `detected: ["mpp"]` with the seller\'s challenges; then `inflow mpp supported` (methods the buyer can pay with) and `inflow balances list`. The seller offers the `inflow` method in USDC; the user\'s 100.5 USDC balance covers the 0.10 USDC price. Summarize intent, then pay:\n\n```bash\ninflow mpp pay https://api.foo.dev/dataset.csv --interval 5 --max-attempts 180 --output-file /tmp/dataset.csv --no-show-body\n# Persist transaction_id from the response in case polling is interrupted.\n# Returns outcome "paid" with output_saved_to /tmp/dataset.csv.\n```\n\n> "Approval requested - confirm in the InFlow app: https://app.inflowpay.ai/approvals/appr_xyz\n> I\'ll keep polling. 15-min window."\n\nOnce the result arrives:\n\n> "Paid 0.10 USDC. Transaction txn_abc. Saved the dataset to /tmp/dataset.csv."\n\n**Two-step variant** (host can\'t block): follow Step 2\'s two-step path; once `mpp status` reports `state: ready`, replay with `Authorization: Payment <credential>` (or `$(cat <path>)` via `--credential-file` to keep it out of chat).\n\n### Worked example (x402)\n\nA user asks the agent to fetch a paywalled article at `https://api.foo.dev/article-3`.\n\nPre-flight: `inflow inspect <url>` reports `detected: ["x402"]`; the intersection lands on `exact` \xD7 `solana:mainnet`, and the user\'s 100.5 USDC balance easily covers the 0.10 USDC the seller requires. Proceed.\n\n> "I\'m about to pay 0.10 USDC on Solana mainnet to api.foo.dev for /article-3.\n> Your balance is 100.5 USDC - plenty. Requesting approval next."\n\n```bash\ninflow x402 pay https://api.foo.dev/article-3 --payment-id "<stable-opaque-id>" --interval 5 --max-attempts 180\n# Persist transaction_id from the response in case polling gets interrupted.\n# Returns outcome "paid"; body contains the article JSON.\n```\n\n> "Approval requested - confirm in the InFlow app: https://app.inflowpay.ai/approvals/appr_xyz\n> I\'ll keep polling. 15-min window."\n\nOnce the result arrives:\n\n> "Paid 0.10 USDC. Transaction txn_abc. Server returned: \'How to brew coffee - ...\'"\n\n**Two-step variant** (host can\'t block): follow Step 2\'s two-step path; once `x402 status` returns the `encoded_payload`, replay with `PAYMENT-SIGNATURE: <encoded_payload>` (use `--payload-file` to keep it out of chat).\n\n### MPP errors\n\nAll errors in agent mode are JSON with `code` and `message` fields and exit code 1. MPP-specific codes (shared codes are in [\xA7 Shared errors](#shared-errors)). "What to tell the user" is the prompt to surface - don\'t dump the raw error:\n\n| Error code | Recovery | What to tell the user |\n| --- | --- | --- |\n| `PAYMENT_FAILED` | `inflow mpp status <transaction_id>` for the precise state, then create a new transaction with `inflow mpp pay`. (Terminal `failed` state, or no credential produced.) | "The payment didn\'t go through - it was declined, underfunded, or the transaction failed. Want me to try again, switch funding, or stop?" |\n| `PAYMENT_EXPIRED` | Start a new `inflow mpp pay`. | "The payment window expired before it was ready to settle. Want me to start a new one, or stop here?" |\n| `PAYMENT_NOT_ACCEPTED` | `inflow inspect <url>` to re-check the challenge; adjust and retry. | - |\n\n### x402 errors\n\nAll errors in agent mode are JSON with `code` and `message` fields and exit code 1. x402-specific codes (shared codes are in [\xA7 Shared errors](#shared-errors)). "What to tell the user" is the prompt to surface - don\'t dump the raw error:\n\n| Error code | Recovery | What to tell the user |\n| --- | --- | --- |\n| `APPROVAL_TIMEOUT` | `inflow x402 status <transaction_id>` for the precise reason, then create a new transaction. | "You didn\'t approve within 15 minutes, so the request expired. Want me to start a new payment, or stop here?" |\n| `APPROVAL_FAILED` | Same recovery as `APPROVAL_TIMEOUT` (declined / insufficient funds in the matched asset / generic). | "Approval didn\'t go through (declined or insufficient funds in the matched asset). Want me to try a different funding source, top up, or stop?" |\n| `APPROVAL_CANCELLED` | Same recovery (cancelled via `x402 cancel` or server-side). | "You cancelled the approval. Stopping here unless you want to start a new payment." |\n| `INVALID_PAYMENT_ID` | `--payment-id` violated the format (see `inflow x402 pay --schema`). Adjust or omit the payment id. | - |\n\n---\n\n## Security & data handling\n\nApplies to both protocols.\n\n- Treat OAuth tokens and API keys as secrets - never echo them. The one-time bearer credential (`encoded_payload` for x402, `credential` for MPP) returned after approval should be replayed directly against the seller and discarded, not pasted back to the user.\n- Respect `/agents.txt` and `/llm.txt` on sites you browse.\n- Avoid suspicious 402 endpoints - if the domain doesn\'t match what the user asked to pay, or the price is different from expectation, stop and ask.\n- When displaying deposit addresses to the user, print the full address (don\'t truncate). Truncating breaks copy-paste.\n\n## Shared errors\n\nThese apply to both protocols (in addition to each section\'s protocol-specific codes). All are JSON with `code` and `message` and exit code 1. Where a command is protocol-specific, use your prefix (`<mpp|x402>`). "What to tell the user" is the prompt to surface - don\'t dump the raw error:\n\n| Error code | Recovery | What to tell the user |\n| --- | --- | --- |\n| `NOT_AUTHENTICATED` | No saved device token and no `--api-key` / `INFLOW_API_KEY` configured. Run `inflow auth login` or set the API key env var. | - |\n| `NO_INFLOW_MATCH` | Seller\'s rails aren\'t supported by the account. Fund a matching method/chain, or use a different seller. | "The seller wants `<method/rail or scheme\xD7network>`, but your account can\'t pay on that rail. Either fund a matching method, or pick a different seller." |\n| `NO_FILTERED_MATCH` | A `pay` filter emptied the candidate list. Loosen the filter (flags per the delta table), or re-check the seller\'s unfiltered options with `inflow inspect <url>`. | "Your filter removed every option the seller accepts. Loosen it or re-check the seller\'s options with `inflow inspect`." |\n| `INVALID_402` / `DECODE_FAILED` | Seller returned 402 but the protocol\'s header was missing (`INVALID_402`) or unparseable (`DECODE_FAILED`). Verify the URL is payable; pass the raw header to `inflow <mpp|x402> decode` for the detailed parse error. | - |\n| `POLLING_TIMEOUT` | `--interval` polling reached its max-attempts or timeout. Retryable - resume with `inflow <mpp|x402> status <transaction_id> --interval 5 --max-attempts 180`. | "Still waiting on your approval - want me to keep polling, or cancel the request? (`inflow <mpp|x402> cancel <approval_id>` cancels it.)" |\n| `api_error` | Non-2xx from the InFlow API on the plain data calls (`user`, `balances`, `deposit-addresses`); discriminate on `httpStatus`. `401` - saved auth rejected, re-run `inflow auth login`. `426` (`VERSION_UNSUPPORTED`) - upgrade and retry. `5xx` - server-side; wait and retry. (Note: `pay`/`status` rejections instead surface the server\'s own code, e.g. `INSUFFICIENT_FUNDS`, or the protocol\'s terminal code - not `api_error`.) | - |\n| `VERSION_UNSUPPORTED` / HTTP 426 | Installed `inflow` CLI is below the minimum supported version. `npm install -g @inflowpayai/inflow@latest`, then retry; don\'t retry on the old version. | - |\n| `transport_error` | Network failure - check connectivity; retry. | - |\n\n## Out of scope\n\nThis skill covers programmatic HTTP 402 payments (MPP and x402) only. It does NOT handle:\n\n- **Traditional merchant checkouts** No PANs (credit card forms, hosted checkouts).\n- **Card issuance** or wallet management beyond `balances list` and `deposit-addresses list`.\n- **Refunds, disputes, chargebacks** - handled out of band via support.\n- **Peer-to-peer transfers** between users or wallets.\n- **FX / currency conversion.** Buyer logic matches the seller\'s accepted rails against the account\'s supported assets.\n- **Subscriptions / recurring payments.** Each `pay` is one-shot.\n\nFor any of the above, point the user to https://app.inflowpay.ai or support.\n\n## Further docs\n\n- MPP protocol: https://mpp.dev\n- x402 protocol: https://x402.org\n- InFlow: https://app.inflowpay.ai\n' };
38
+ }
39
+ });
40
+
30
41
  // ../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js
31
42
  var require_code = __commonJS({
32
43
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js"(exports) {
33
44
  "use strict";
45
+ init_define_SKILL_BODIES();
34
46
  Object.defineProperty(exports, "__esModule", { value: true });
35
47
  exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;
36
48
  var _CodeOrName = class {
@@ -185,6 +197,7 @@ var require_code = __commonJS({
185
197
  var require_scope = __commonJS({
186
198
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.js"(exports) {
187
199
  "use strict";
200
+ init_define_SKILL_BODIES();
188
201
  Object.defineProperty(exports, "__esModule", { value: true });
189
202
  exports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;
190
203
  var code_1 = require_code();
@@ -330,6 +343,7 @@ var require_scope = __commonJS({
330
343
  var require_codegen = __commonJS({
331
344
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.js"(exports) {
332
345
  "use strict";
346
+ init_define_SKILL_BODIES();
333
347
  Object.defineProperty(exports, "__esModule", { value: true });
334
348
  exports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;
335
349
  var code_1 = require_code();
@@ -1050,6 +1064,7 @@ var require_codegen = __commonJS({
1050
1064
  var require_util = __commonJS({
1051
1065
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.js"(exports) {
1052
1066
  "use strict";
1067
+ init_define_SKILL_BODIES();
1053
1068
  Object.defineProperty(exports, "__esModule", { value: true });
1054
1069
  exports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;
1055
1070
  var codegen_1 = require_codegen();
@@ -1217,6 +1232,7 @@ var require_util = __commonJS({
1217
1232
  var require_names = __commonJS({
1218
1233
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/names.js"(exports) {
1219
1234
  "use strict";
1235
+ init_define_SKILL_BODIES();
1220
1236
  Object.defineProperty(exports, "__esModule", { value: true });
1221
1237
  var codegen_1 = require_codegen();
1222
1238
  var names = {
@@ -1256,6 +1272,7 @@ var require_names = __commonJS({
1256
1272
  var require_errors = __commonJS({
1257
1273
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.js"(exports) {
1258
1274
  "use strict";
1275
+ init_define_SKILL_BODIES();
1259
1276
  Object.defineProperty(exports, "__esModule", { value: true });
1260
1277
  exports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;
1261
1278
  var codegen_1 = require_codegen();
@@ -1378,6 +1395,7 @@ var require_errors = __commonJS({
1378
1395
  var require_boolSchema = __commonJS({
1379
1396
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/boolSchema.js"(exports) {
1380
1397
  "use strict";
1398
+ init_define_SKILL_BODIES();
1381
1399
  Object.defineProperty(exports, "__esModule", { value: true });
1382
1400
  exports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0;
1383
1401
  var errors_1 = require_errors();
@@ -1429,6 +1447,7 @@ var require_boolSchema = __commonJS({
1429
1447
  var require_rules = __commonJS({
1430
1448
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.js"(exports) {
1431
1449
  "use strict";
1450
+ init_define_SKILL_BODIES();
1432
1451
  Object.defineProperty(exports, "__esModule", { value: true });
1433
1452
  exports.getRules = exports.isJSONType = void 0;
1434
1453
  var _jsonTypes = ["string", "number", "integer", "boolean", "null", "object", "array"];
@@ -1460,6 +1479,7 @@ var require_rules = __commonJS({
1460
1479
  var require_applicability = __commonJS({
1461
1480
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/applicability.js"(exports) {
1462
1481
  "use strict";
1482
+ init_define_SKILL_BODIES();
1463
1483
  Object.defineProperty(exports, "__esModule", { value: true });
1464
1484
  exports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0;
1465
1485
  function schemaHasRulesForType({ schema, self }, type) {
@@ -1483,6 +1503,7 @@ var require_applicability = __commonJS({
1483
1503
  var require_dataType = __commonJS({
1484
1504
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.js"(exports) {
1485
1505
  "use strict";
1506
+ init_define_SKILL_BODIES();
1486
1507
  Object.defineProperty(exports, "__esModule", { value: true });
1487
1508
  exports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0;
1488
1509
  var rules_1 = require_rules();
@@ -1667,6 +1688,7 @@ var require_dataType = __commonJS({
1667
1688
  var require_defaults = __commonJS({
1668
1689
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/defaults.js"(exports) {
1669
1690
  "use strict";
1691
+ init_define_SKILL_BODIES();
1670
1692
  Object.defineProperty(exports, "__esModule", { value: true });
1671
1693
  exports.assignDefaults = void 0;
1672
1694
  var codegen_1 = require_codegen();
@@ -1704,6 +1726,7 @@ var require_defaults = __commonJS({
1704
1726
  var require_code2 = __commonJS({
1705
1727
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/code.js"(exports) {
1706
1728
  "use strict";
1729
+ init_define_SKILL_BODIES();
1707
1730
  Object.defineProperty(exports, "__esModule", { value: true });
1708
1731
  exports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;
1709
1732
  var codegen_1 = require_codegen();
@@ -1837,6 +1860,7 @@ var require_code2 = __commonJS({
1837
1860
  var require_keyword = __commonJS({
1838
1861
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/keyword.js"(exports) {
1839
1862
  "use strict";
1863
+ init_define_SKILL_BODIES();
1840
1864
  Object.defineProperty(exports, "__esModule", { value: true });
1841
1865
  exports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;
1842
1866
  var codegen_1 = require_codegen();
@@ -1955,6 +1979,7 @@ var require_keyword = __commonJS({
1955
1979
  var require_subschema = __commonJS({
1956
1980
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.js"(exports) {
1957
1981
  "use strict";
1982
+ init_define_SKILL_BODIES();
1958
1983
  Object.defineProperty(exports, "__esModule", { value: true });
1959
1984
  exports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;
1960
1985
  var codegen_1 = require_codegen();
@@ -2038,6 +2063,7 @@ var require_subschema = __commonJS({
2038
2063
  var require_fast_deep_equal = __commonJS({
2039
2064
  "../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js"(exports, module) {
2040
2065
  "use strict";
2066
+ init_define_SKILL_BODIES();
2041
2067
  module.exports = function equal(a, b) {
2042
2068
  if (a === b) return true;
2043
2069
  if (a && b && typeof a == "object" && typeof b == "object") {
@@ -2073,6 +2099,7 @@ var require_fast_deep_equal = __commonJS({
2073
2099
  var require_json_schema_traverse = __commonJS({
2074
2100
  "../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js"(exports, module) {
2075
2101
  "use strict";
2102
+ init_define_SKILL_BODIES();
2076
2103
  var traverse = module.exports = function(schema, opts, cb) {
2077
2104
  if (typeof opts == "function") {
2078
2105
  cb = opts;
@@ -2161,6 +2188,7 @@ var require_json_schema_traverse = __commonJS({
2161
2188
  var require_resolve = __commonJS({
2162
2189
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.js"(exports) {
2163
2190
  "use strict";
2191
+ init_define_SKILL_BODIES();
2164
2192
  Object.defineProperty(exports, "__esModule", { value: true });
2165
2193
  exports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0;
2166
2194
  var util_1 = require_util();
@@ -2317,6 +2345,7 @@ var require_resolve = __commonJS({
2317
2345
  var require_validate = __commonJS({
2318
2346
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.js"(exports) {
2319
2347
  "use strict";
2348
+ init_define_SKILL_BODIES();
2320
2349
  Object.defineProperty(exports, "__esModule", { value: true });
2321
2350
  exports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;
2322
2351
  var boolSchema_1 = require_boolSchema();
@@ -2825,6 +2854,7 @@ var require_validate = __commonJS({
2825
2854
  var require_validation_error = __commonJS({
2826
2855
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.js"(exports) {
2827
2856
  "use strict";
2857
+ init_define_SKILL_BODIES();
2828
2858
  Object.defineProperty(exports, "__esModule", { value: true });
2829
2859
  var ValidationError = class extends Error {
2830
2860
  constructor(errors) {
@@ -2841,6 +2871,7 @@ var require_validation_error = __commonJS({
2841
2871
  var require_ref_error = __commonJS({
2842
2872
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.js"(exports) {
2843
2873
  "use strict";
2874
+ init_define_SKILL_BODIES();
2844
2875
  Object.defineProperty(exports, "__esModule", { value: true });
2845
2876
  var resolve_1 = require_resolve();
2846
2877
  var MissingRefError = class extends Error {
@@ -2858,6 +2889,7 @@ var require_ref_error = __commonJS({
2858
2889
  var require_compile = __commonJS({
2859
2890
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.js"(exports) {
2860
2891
  "use strict";
2892
+ init_define_SKILL_BODIES();
2861
2893
  Object.defineProperty(exports, "__esModule", { value: true });
2862
2894
  exports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0;
2863
2895
  var codegen_1 = require_codegen();
@@ -3101,6 +3133,7 @@ var require_data = __commonJS({
3101
3133
  var require_utils = __commonJS({
3102
3134
  "../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/utils.js"(exports, module) {
3103
3135
  "use strict";
3136
+ init_define_SKILL_BODIES();
3104
3137
  var isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu);
3105
3138
  var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);
3106
3139
  var isHexPair = RegExp.prototype.test.bind(/^[\da-f]{2}$/iu);
@@ -3414,6 +3447,7 @@ var require_utils = __commonJS({
3414
3447
  var require_schemes = __commonJS({
3415
3448
  "../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/schemes.js"(exports, module) {
3416
3449
  "use strict";
3450
+ init_define_SKILL_BODIES();
3417
3451
  var { isUUID } = require_utils();
3418
3452
  var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;
3419
3453
  var supportedSchemeNames = (
@@ -3624,6 +3658,7 @@ var require_schemes = __commonJS({
3624
3658
  var require_fast_uri = __commonJS({
3625
3659
  "../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/index.js"(exports, module) {
3626
3660
  "use strict";
3661
+ init_define_SKILL_BODIES();
3627
3662
  var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require_utils();
3628
3663
  var { SCHEMES, getSchemeHandler } = require_schemes();
3629
3664
  function normalize(uri, options) {
@@ -3910,6 +3945,7 @@ var require_fast_uri = __commonJS({
3910
3945
  var require_uri = __commonJS({
3911
3946
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/uri.js"(exports) {
3912
3947
  "use strict";
3948
+ init_define_SKILL_BODIES();
3913
3949
  Object.defineProperty(exports, "__esModule", { value: true });
3914
3950
  var uri = require_fast_uri();
3915
3951
  uri.code = 'require("ajv/dist/runtime/uri").default';
@@ -3921,6 +3957,7 @@ var require_uri = __commonJS({
3921
3957
  var require_core = __commonJS({
3922
3958
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.js"(exports) {
3923
3959
  "use strict";
3960
+ init_define_SKILL_BODIES();
3924
3961
  Object.defineProperty(exports, "__esModule", { value: true });
3925
3962
  exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;
3926
3963
  var validate_1 = require_validate();
@@ -4532,6 +4569,7 @@ var require_core = __commonJS({
4532
4569
  var require_id = __commonJS({
4533
4570
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/id.js"(exports) {
4534
4571
  "use strict";
4572
+ init_define_SKILL_BODIES();
4535
4573
  Object.defineProperty(exports, "__esModule", { value: true });
4536
4574
  var def = {
4537
4575
  keyword: "id",
@@ -4547,6 +4585,7 @@ var require_id = __commonJS({
4547
4585
  var require_ref = __commonJS({
4548
4586
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/ref.js"(exports) {
4549
4587
  "use strict";
4588
+ init_define_SKILL_BODIES();
4550
4589
  Object.defineProperty(exports, "__esModule", { value: true });
4551
4590
  exports.callRef = exports.getValidate = void 0;
4552
4591
  var ref_error_1 = require_ref_error();
@@ -4669,6 +4708,7 @@ var require_ref = __commonJS({
4669
4708
  var require_core2 = __commonJS({
4670
4709
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/index.js"(exports) {
4671
4710
  "use strict";
4711
+ init_define_SKILL_BODIES();
4672
4712
  Object.defineProperty(exports, "__esModule", { value: true });
4673
4713
  var id_1 = require_id();
4674
4714
  var ref_1 = require_ref();
@@ -4690,6 +4730,7 @@ var require_core2 = __commonJS({
4690
4730
  var require_limitNumber = __commonJS({
4691
4731
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js"(exports) {
4692
4732
  "use strict";
4733
+ init_define_SKILL_BODIES();
4693
4734
  Object.defineProperty(exports, "__esModule", { value: true });
4694
4735
  var codegen_1 = require_codegen();
4695
4736
  var ops = codegen_1.operators;
@@ -4722,6 +4763,7 @@ var require_limitNumber = __commonJS({
4722
4763
  var require_multipleOf = __commonJS({
4723
4764
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js"(exports) {
4724
4765
  "use strict";
4766
+ init_define_SKILL_BODIES();
4725
4767
  Object.defineProperty(exports, "__esModule", { value: true });
4726
4768
  var codegen_1 = require_codegen();
4727
4769
  var error = {
@@ -4750,6 +4792,7 @@ var require_multipleOf = __commonJS({
4750
4792
  var require_ucs2length = __commonJS({
4751
4793
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/ucs2length.js"(exports) {
4752
4794
  "use strict";
4795
+ init_define_SKILL_BODIES();
4753
4796
  Object.defineProperty(exports, "__esModule", { value: true });
4754
4797
  function ucs2length(str) {
4755
4798
  const len = str.length;
@@ -4776,6 +4819,7 @@ var require_ucs2length = __commonJS({
4776
4819
  var require_limitLength = __commonJS({
4777
4820
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js"(exports) {
4778
4821
  "use strict";
4822
+ init_define_SKILL_BODIES();
4779
4823
  Object.defineProperty(exports, "__esModule", { value: true });
4780
4824
  var codegen_1 = require_codegen();
4781
4825
  var util_1 = require_util();
@@ -4808,6 +4852,7 @@ var require_limitLength = __commonJS({
4808
4852
  var require_pattern = __commonJS({
4809
4853
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.js"(exports) {
4810
4854
  "use strict";
4855
+ init_define_SKILL_BODIES();
4811
4856
  Object.defineProperty(exports, "__esModule", { value: true });
4812
4857
  var code_1 = require_code2();
4813
4858
  var util_1 = require_util();
@@ -4845,6 +4890,7 @@ var require_pattern = __commonJS({
4845
4890
  var require_limitProperties = __commonJS({
4846
4891
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js"(exports) {
4847
4892
  "use strict";
4893
+ init_define_SKILL_BODIES();
4848
4894
  Object.defineProperty(exports, "__esModule", { value: true });
4849
4895
  var codegen_1 = require_codegen();
4850
4896
  var error = {
@@ -4874,6 +4920,7 @@ var require_limitProperties = __commonJS({
4874
4920
  var require_required = __commonJS({
4875
4921
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.js"(exports) {
4876
4922
  "use strict";
4923
+ init_define_SKILL_BODIES();
4877
4924
  Object.defineProperty(exports, "__esModule", { value: true });
4878
4925
  var code_1 = require_code2();
4879
4926
  var codegen_1 = require_codegen();
@@ -4956,6 +5003,7 @@ var require_required = __commonJS({
4956
5003
  var require_limitItems = __commonJS({
4957
5004
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js"(exports) {
4958
5005
  "use strict";
5006
+ init_define_SKILL_BODIES();
4959
5007
  Object.defineProperty(exports, "__esModule", { value: true });
4960
5008
  var codegen_1 = require_codegen();
4961
5009
  var error = {
@@ -4985,6 +5033,7 @@ var require_limitItems = __commonJS({
4985
5033
  var require_equal = __commonJS({
4986
5034
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/equal.js"(exports) {
4987
5035
  "use strict";
5036
+ init_define_SKILL_BODIES();
4988
5037
  Object.defineProperty(exports, "__esModule", { value: true });
4989
5038
  var equal = require_fast_deep_equal();
4990
5039
  equal.code = 'require("ajv/dist/runtime/equal").default';
@@ -4996,6 +5045,7 @@ var require_equal = __commonJS({
4996
5045
  var require_uniqueItems = __commonJS({
4997
5046
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js"(exports) {
4998
5047
  "use strict";
5048
+ init_define_SKILL_BODIES();
4999
5049
  Object.defineProperty(exports, "__esModule", { value: true });
5000
5050
  var dataType_1 = require_dataType();
5001
5051
  var codegen_1 = require_codegen();
@@ -5063,6 +5113,7 @@ var require_uniqueItems = __commonJS({
5063
5113
  var require_const = __commonJS({
5064
5114
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.js"(exports) {
5065
5115
  "use strict";
5116
+ init_define_SKILL_BODIES();
5066
5117
  Object.defineProperty(exports, "__esModule", { value: true });
5067
5118
  var codegen_1 = require_codegen();
5068
5119
  var util_1 = require_util();
@@ -5092,6 +5143,7 @@ var require_const = __commonJS({
5092
5143
  var require_enum = __commonJS({
5093
5144
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.js"(exports) {
5094
5145
  "use strict";
5146
+ init_define_SKILL_BODIES();
5095
5147
  Object.defineProperty(exports, "__esModule", { value: true });
5096
5148
  var codegen_1 = require_codegen();
5097
5149
  var util_1 = require_util();
@@ -5141,6 +5193,7 @@ var require_enum = __commonJS({
5141
5193
  var require_validation = __commonJS({
5142
5194
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.js"(exports) {
5143
5195
  "use strict";
5196
+ init_define_SKILL_BODIES();
5144
5197
  Object.defineProperty(exports, "__esModule", { value: true });
5145
5198
  var limitNumber_1 = require_limitNumber();
5146
5199
  var multipleOf_1 = require_multipleOf();
@@ -5179,6 +5232,7 @@ var require_validation = __commonJS({
5179
5232
  var require_additionalItems = __commonJS({
5180
5233
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js"(exports) {
5181
5234
  "use strict";
5235
+ init_define_SKILL_BODIES();
5182
5236
  Object.defineProperty(exports, "__esModule", { value: true });
5183
5237
  exports.validateAdditionalItems = void 0;
5184
5238
  var codegen_1 = require_codegen();
@@ -5232,6 +5286,7 @@ var require_additionalItems = __commonJS({
5232
5286
  var require_items = __commonJS({
5233
5287
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items.js"(exports) {
5234
5288
  "use strict";
5289
+ init_define_SKILL_BODIES();
5235
5290
  Object.defineProperty(exports, "__esModule", { value: true });
5236
5291
  exports.validateTuple = void 0;
5237
5292
  var codegen_1 = require_codegen();
@@ -5289,6 +5344,7 @@ var require_items = __commonJS({
5289
5344
  var require_prefixItems = __commonJS({
5290
5345
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js"(exports) {
5291
5346
  "use strict";
5347
+ init_define_SKILL_BODIES();
5292
5348
  Object.defineProperty(exports, "__esModule", { value: true });
5293
5349
  var items_1 = require_items();
5294
5350
  var def = {
@@ -5306,6 +5362,7 @@ var require_prefixItems = __commonJS({
5306
5362
  var require_items2020 = __commonJS({
5307
5363
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js"(exports) {
5308
5364
  "use strict";
5365
+ init_define_SKILL_BODIES();
5309
5366
  Object.defineProperty(exports, "__esModule", { value: true });
5310
5367
  var codegen_1 = require_codegen();
5311
5368
  var util_1 = require_util();
@@ -5341,6 +5398,7 @@ var require_items2020 = __commonJS({
5341
5398
  var require_contains = __commonJS({
5342
5399
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.js"(exports) {
5343
5400
  "use strict";
5401
+ init_define_SKILL_BODIES();
5344
5402
  Object.defineProperty(exports, "__esModule", { value: true });
5345
5403
  var codegen_1 = require_codegen();
5346
5404
  var util_1 = require_util();
@@ -5435,6 +5493,7 @@ var require_contains = __commonJS({
5435
5493
  var require_dependencies = __commonJS({
5436
5494
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js"(exports) {
5437
5495
  "use strict";
5496
+ init_define_SKILL_BODIES();
5438
5497
  Object.defineProperty(exports, "__esModule", { value: true });
5439
5498
  exports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0;
5440
5499
  var codegen_1 = require_codegen();
@@ -5529,6 +5588,7 @@ var require_dependencies = __commonJS({
5529
5588
  var require_propertyNames = __commonJS({
5530
5589
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js"(exports) {
5531
5590
  "use strict";
5591
+ init_define_SKILL_BODIES();
5532
5592
  Object.defineProperty(exports, "__esModule", { value: true });
5533
5593
  var codegen_1 = require_codegen();
5534
5594
  var util_1 = require_util();
@@ -5572,6 +5632,7 @@ var require_propertyNames = __commonJS({
5572
5632
  var require_additionalProperties = __commonJS({
5573
5633
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js"(exports) {
5574
5634
  "use strict";
5635
+ init_define_SKILL_BODIES();
5575
5636
  Object.defineProperty(exports, "__esModule", { value: true });
5576
5637
  var code_1 = require_code2();
5577
5638
  var codegen_1 = require_codegen();
@@ -5678,6 +5739,7 @@ var require_additionalProperties = __commonJS({
5678
5739
  var require_properties = __commonJS({
5679
5740
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/properties.js"(exports) {
5680
5741
  "use strict";
5742
+ init_define_SKILL_BODIES();
5681
5743
  Object.defineProperty(exports, "__esModule", { value: true });
5682
5744
  var validate_1 = require_validate();
5683
5745
  var code_1 = require_code2();
@@ -5736,6 +5798,7 @@ var require_properties = __commonJS({
5736
5798
  var require_patternProperties = __commonJS({
5737
5799
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js"(exports) {
5738
5800
  "use strict";
5801
+ init_define_SKILL_BODIES();
5739
5802
  Object.defineProperty(exports, "__esModule", { value: true });
5740
5803
  var code_1 = require_code2();
5741
5804
  var codegen_1 = require_codegen();
@@ -5810,6 +5873,7 @@ var require_patternProperties = __commonJS({
5810
5873
  var require_not = __commonJS({
5811
5874
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.js"(exports) {
5812
5875
  "use strict";
5876
+ init_define_SKILL_BODIES();
5813
5877
  Object.defineProperty(exports, "__esModule", { value: true });
5814
5878
  var util_1 = require_util();
5815
5879
  var def = {
@@ -5841,6 +5905,7 @@ var require_not = __commonJS({
5841
5905
  var require_anyOf = __commonJS({
5842
5906
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js"(exports) {
5843
5907
  "use strict";
5908
+ init_define_SKILL_BODIES();
5844
5909
  Object.defineProperty(exports, "__esModule", { value: true });
5845
5910
  var code_1 = require_code2();
5846
5911
  var def = {
@@ -5858,6 +5923,7 @@ var require_anyOf = __commonJS({
5858
5923
  var require_oneOf = __commonJS({
5859
5924
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js"(exports) {
5860
5925
  "use strict";
5926
+ init_define_SKILL_BODIES();
5861
5927
  Object.defineProperty(exports, "__esModule", { value: true });
5862
5928
  var codegen_1 = require_codegen();
5863
5929
  var util_1 = require_util();
@@ -5916,6 +5982,7 @@ var require_oneOf = __commonJS({
5916
5982
  var require_allOf = __commonJS({
5917
5983
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js"(exports) {
5918
5984
  "use strict";
5985
+ init_define_SKILL_BODIES();
5919
5986
  Object.defineProperty(exports, "__esModule", { value: true });
5920
5987
  var util_1 = require_util();
5921
5988
  var def = {
@@ -5943,6 +6010,7 @@ var require_allOf = __commonJS({
5943
6010
  var require_if = __commonJS({
5944
6011
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.js"(exports) {
5945
6012
  "use strict";
6013
+ init_define_SKILL_BODIES();
5946
6014
  Object.defineProperty(exports, "__esModule", { value: true });
5947
6015
  var codegen_1 = require_codegen();
5948
6016
  var util_1 = require_util();
@@ -6012,6 +6080,7 @@ var require_if = __commonJS({
6012
6080
  var require_thenElse = __commonJS({
6013
6081
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js"(exports) {
6014
6082
  "use strict";
6083
+ init_define_SKILL_BODIES();
6015
6084
  Object.defineProperty(exports, "__esModule", { value: true });
6016
6085
  var util_1 = require_util();
6017
6086
  var def = {
@@ -6030,6 +6099,7 @@ var require_thenElse = __commonJS({
6030
6099
  var require_applicator = __commonJS({
6031
6100
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.js"(exports) {
6032
6101
  "use strict";
6102
+ init_define_SKILL_BODIES();
6033
6103
  Object.defineProperty(exports, "__esModule", { value: true });
6034
6104
  var additionalItems_1 = require_additionalItems();
6035
6105
  var prefixItems_1 = require_prefixItems();
@@ -6078,6 +6148,7 @@ var require_applicator = __commonJS({
6078
6148
  var require_dynamicAnchor = __commonJS({
6079
6149
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js"(exports) {
6080
6150
  "use strict";
6151
+ init_define_SKILL_BODIES();
6081
6152
  Object.defineProperty(exports, "__esModule", { value: true });
6082
6153
  exports.dynamicAnchor = void 0;
6083
6154
  var codegen_1 = require_codegen();
@@ -6113,6 +6184,7 @@ var require_dynamicAnchor = __commonJS({
6113
6184
  var require_dynamicRef = __commonJS({
6114
6185
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js"(exports) {
6115
6186
  "use strict";
6187
+ init_define_SKILL_BODIES();
6116
6188
  Object.defineProperty(exports, "__esModule", { value: true });
6117
6189
  exports.dynamicRef = void 0;
6118
6190
  var codegen_1 = require_codegen();
@@ -6159,6 +6231,7 @@ var require_dynamicRef = __commonJS({
6159
6231
  var require_recursiveAnchor = __commonJS({
6160
6232
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js"(exports) {
6161
6233
  "use strict";
6234
+ init_define_SKILL_BODIES();
6162
6235
  Object.defineProperty(exports, "__esModule", { value: true });
6163
6236
  var dynamicAnchor_1 = require_dynamicAnchor();
6164
6237
  var util_1 = require_util();
@@ -6180,6 +6253,7 @@ var require_recursiveAnchor = __commonJS({
6180
6253
  var require_recursiveRef = __commonJS({
6181
6254
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js"(exports) {
6182
6255
  "use strict";
6256
+ init_define_SKILL_BODIES();
6183
6257
  Object.defineProperty(exports, "__esModule", { value: true });
6184
6258
  var dynamicRef_1 = require_dynamicRef();
6185
6259
  var def = {
@@ -6195,6 +6269,7 @@ var require_recursiveRef = __commonJS({
6195
6269
  var require_dynamic = __commonJS({
6196
6270
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/index.js"(exports) {
6197
6271
  "use strict";
6272
+ init_define_SKILL_BODIES();
6198
6273
  Object.defineProperty(exports, "__esModule", { value: true });
6199
6274
  var dynamicAnchor_1 = require_dynamicAnchor();
6200
6275
  var dynamicRef_1 = require_dynamicRef();
@@ -6209,6 +6284,7 @@ var require_dynamic = __commonJS({
6209
6284
  var require_dependentRequired = __commonJS({
6210
6285
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js"(exports) {
6211
6286
  "use strict";
6287
+ init_define_SKILL_BODIES();
6212
6288
  Object.defineProperty(exports, "__esModule", { value: true });
6213
6289
  var dependencies_1 = require_dependencies();
6214
6290
  var def = {
@@ -6226,6 +6302,7 @@ var require_dependentRequired = __commonJS({
6226
6302
  var require_dependentSchemas = __commonJS({
6227
6303
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js"(exports) {
6228
6304
  "use strict";
6305
+ init_define_SKILL_BODIES();
6229
6306
  Object.defineProperty(exports, "__esModule", { value: true });
6230
6307
  var dependencies_1 = require_dependencies();
6231
6308
  var def = {
@@ -6242,6 +6319,7 @@ var require_dependentSchemas = __commonJS({
6242
6319
  var require_limitContains = __commonJS({
6243
6320
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitContains.js"(exports) {
6244
6321
  "use strict";
6322
+ init_define_SKILL_BODIES();
6245
6323
  Object.defineProperty(exports, "__esModule", { value: true });
6246
6324
  var util_1 = require_util();
6247
6325
  var def = {
@@ -6262,6 +6340,7 @@ var require_limitContains = __commonJS({
6262
6340
  var require_next = __commonJS({
6263
6341
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/next.js"(exports) {
6264
6342
  "use strict";
6343
+ init_define_SKILL_BODIES();
6265
6344
  Object.defineProperty(exports, "__esModule", { value: true });
6266
6345
  var dependentRequired_1 = require_dependentRequired();
6267
6346
  var dependentSchemas_1 = require_dependentSchemas();
@@ -6275,6 +6354,7 @@ var require_next = __commonJS({
6275
6354
  var require_unevaluatedProperties = __commonJS({
6276
6355
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js"(exports) {
6277
6356
  "use strict";
6357
+ init_define_SKILL_BODIES();
6278
6358
  Object.defineProperty(exports, "__esModule", { value: true });
6279
6359
  var codegen_1 = require_codegen();
6280
6360
  var util_1 = require_util();
@@ -6341,6 +6421,7 @@ var require_unevaluatedProperties = __commonJS({
6341
6421
  var require_unevaluatedItems = __commonJS({
6342
6422
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js"(exports) {
6343
6423
  "use strict";
6424
+ init_define_SKILL_BODIES();
6344
6425
  Object.defineProperty(exports, "__esModule", { value: true });
6345
6426
  var codegen_1 = require_codegen();
6346
6427
  var util_1 = require_util();
@@ -6385,6 +6466,7 @@ var require_unevaluatedItems = __commonJS({
6385
6466
  var require_unevaluated = __commonJS({
6386
6467
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/index.js"(exports) {
6387
6468
  "use strict";
6469
+ init_define_SKILL_BODIES();
6388
6470
  Object.defineProperty(exports, "__esModule", { value: true });
6389
6471
  var unevaluatedProperties_1 = require_unevaluatedProperties();
6390
6472
  var unevaluatedItems_1 = require_unevaluatedItems();
@@ -6397,6 +6479,7 @@ var require_unevaluated = __commonJS({
6397
6479
  var require_format = __commonJS({
6398
6480
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.js"(exports) {
6399
6481
  "use strict";
6482
+ init_define_SKILL_BODIES();
6400
6483
  Object.defineProperty(exports, "__esModule", { value: true });
6401
6484
  var codegen_1 = require_codegen();
6402
6485
  var error = {
@@ -6487,6 +6570,7 @@ var require_format = __commonJS({
6487
6570
  var require_format2 = __commonJS({
6488
6571
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/index.js"(exports) {
6489
6572
  "use strict";
6573
+ init_define_SKILL_BODIES();
6490
6574
  Object.defineProperty(exports, "__esModule", { value: true });
6491
6575
  var format_1 = require_format();
6492
6576
  var format = [format_1.default];
@@ -6498,6 +6582,7 @@ var require_format2 = __commonJS({
6498
6582
  var require_metadata = __commonJS({
6499
6583
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/metadata.js"(exports) {
6500
6584
  "use strict";
6585
+ init_define_SKILL_BODIES();
6501
6586
  Object.defineProperty(exports, "__esModule", { value: true });
6502
6587
  exports.contentVocabulary = exports.metadataVocabulary = void 0;
6503
6588
  exports.metadataVocabulary = [
@@ -6521,6 +6606,7 @@ var require_metadata = __commonJS({
6521
6606
  var require_draft2020 = __commonJS({
6522
6607
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/draft2020.js"(exports) {
6523
6608
  "use strict";
6609
+ init_define_SKILL_BODIES();
6524
6610
  Object.defineProperty(exports, "__esModule", { value: true });
6525
6611
  var core_1 = require_core2();
6526
6612
  var validation_1 = require_validation();
@@ -6549,6 +6635,7 @@ var require_draft2020 = __commonJS({
6549
6635
  var require_types = __commonJS({
6550
6636
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.js"(exports) {
6551
6637
  "use strict";
6638
+ init_define_SKILL_BODIES();
6552
6639
  Object.defineProperty(exports, "__esModule", { value: true });
6553
6640
  exports.DiscrError = void 0;
6554
6641
  var DiscrError;
@@ -6563,6 +6650,7 @@ var require_types = __commonJS({
6563
6650
  var require_discriminator = __commonJS({
6564
6651
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.js"(exports) {
6565
6652
  "use strict";
6653
+ init_define_SKILL_BODIES();
6566
6654
  Object.defineProperty(exports, "__esModule", { value: true });
6567
6655
  var codegen_1 = require_codegen();
6568
6656
  var types_1 = require_types();
@@ -7033,6 +7121,7 @@ var require_validation2 = __commonJS({
7033
7121
  var require_json_schema_2020_12 = __commonJS({
7034
7122
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/index.js"(exports) {
7035
7123
  "use strict";
7124
+ init_define_SKILL_BODIES();
7036
7125
  Object.defineProperty(exports, "__esModule", { value: true });
7037
7126
  var metaSchema = require_schema();
7038
7127
  var applicator = require_applicator2();
@@ -7068,6 +7157,7 @@ var require_json_schema_2020_12 = __commonJS({
7068
7157
  var require__ = __commonJS({
7069
7158
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/2020.js"(exports, module) {
7070
7159
  "use strict";
7160
+ init_define_SKILL_BODIES();
7071
7161
  Object.defineProperty(exports, "__esModule", { value: true });
7072
7162
  exports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv2020 = void 0;
7073
7163
  var core_1 = require_core();
@@ -7145,6 +7235,7 @@ var require__ = __commonJS({
7145
7235
  var require_formats = __commonJS({
7146
7236
  "../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/dist/formats.js"(exports) {
7147
7237
  "use strict";
7238
+ init_define_SKILL_BODIES();
7148
7239
  Object.defineProperty(exports, "__esModule", { value: true });
7149
7240
  exports.formatNames = exports.fastFormats = exports.fullFormats = void 0;
7150
7241
  function fmtDef(validate, compare) {
@@ -7348,6 +7439,7 @@ var require_formats = __commonJS({
7348
7439
  var require_draft7 = __commonJS({
7349
7440
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/draft7.js"(exports) {
7350
7441
  "use strict";
7442
+ init_define_SKILL_BODIES();
7351
7443
  Object.defineProperty(exports, "__esModule", { value: true });
7352
7444
  var core_1 = require_core2();
7353
7445
  var validation_1 = require_validation();
@@ -7527,6 +7619,7 @@ var require_json_schema_draft_07 = __commonJS({
7527
7619
  var require_ajv = __commonJS({
7528
7620
  "../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/ajv.js"(exports, module) {
7529
7621
  "use strict";
7622
+ init_define_SKILL_BODIES();
7530
7623
  Object.defineProperty(exports, "__esModule", { value: true });
7531
7624
  exports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = void 0;
7532
7625
  var core_1 = require_core();
@@ -7597,6 +7690,7 @@ var require_ajv = __commonJS({
7597
7690
  var require_limit = __commonJS({
7598
7691
  "../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/dist/limit.js"(exports) {
7599
7692
  "use strict";
7693
+ init_define_SKILL_BODIES();
7600
7694
  Object.defineProperty(exports, "__esModule", { value: true });
7601
7695
  exports.formatLimitDefinition = void 0;
7602
7696
  var ajv_1 = require_ajv();
@@ -7669,6 +7763,7 @@ var require_limit = __commonJS({
7669
7763
  var require_dist = __commonJS({
7670
7764
  "../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/dist/index.js"(exports, module) {
7671
7765
  "use strict";
7766
+ init_define_SKILL_BODIES();
7672
7767
  Object.defineProperty(exports, "__esModule", { value: true });
7673
7768
  var formats_1 = require_formats();
7674
7769
  var limit_1 = require_limit();
@@ -7711,6 +7806,7 @@ var require_dist = __commonJS({
7711
7806
  var require_constants = __commonJS({
7712
7807
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/constants.js"(exports, module) {
7713
7808
  "use strict";
7809
+ init_define_SKILL_BODIES();
7714
7810
  var SEMVER_SPEC_VERSION = "2.0.0";
7715
7811
  var MAX_LENGTH = 256;
7716
7812
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
@@ -7743,6 +7839,7 @@ var require_constants = __commonJS({
7743
7839
  var require_debug = __commonJS({
7744
7840
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/debug.js"(exports, module) {
7745
7841
  "use strict";
7842
+ init_define_SKILL_BODIES();
7746
7843
  var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
7747
7844
  };
7748
7845
  module.exports = debug;
@@ -7753,6 +7850,7 @@ var require_debug = __commonJS({
7753
7850
  var require_re = __commonJS({
7754
7851
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/re.js"(exports, module) {
7755
7852
  "use strict";
7853
+ init_define_SKILL_BODIES();
7756
7854
  var {
7757
7855
  MAX_SAFE_COMPONENT_LENGTH,
7758
7856
  MAX_SAFE_BUILD_LENGTH,
@@ -7841,6 +7939,7 @@ var require_re = __commonJS({
7841
7939
  var require_parse_options = __commonJS({
7842
7940
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/parse-options.js"(exports, module) {
7843
7941
  "use strict";
7942
+ init_define_SKILL_BODIES();
7844
7943
  var looseOption = Object.freeze({ loose: true });
7845
7944
  var emptyOpts = Object.freeze({});
7846
7945
  var parseOptions = (options) => {
@@ -7860,6 +7959,7 @@ var require_parse_options = __commonJS({
7860
7959
  var require_identifiers = __commonJS({
7861
7960
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/identifiers.js"(exports, module) {
7862
7961
  "use strict";
7962
+ init_define_SKILL_BODIES();
7863
7963
  var numeric = /^[0-9]+$/;
7864
7964
  var compareIdentifiers = (a, b) => {
7865
7965
  if (typeof a === "number" && typeof b === "number") {
@@ -7885,6 +7985,7 @@ var require_identifiers = __commonJS({
7885
7985
  var require_semver = __commonJS({
7886
7986
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/classes/semver.js"(exports, module) {
7887
7987
  "use strict";
7988
+ init_define_SKILL_BODIES();
7888
7989
  var debug = require_debug();
7889
7990
  var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
7890
7991
  var { safeRe: re, t } = require_re();
@@ -8164,6 +8265,7 @@ var require_semver = __commonJS({
8164
8265
  var require_parse = __commonJS({
8165
8266
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/parse.js"(exports, module) {
8166
8267
  "use strict";
8268
+ init_define_SKILL_BODIES();
8167
8269
  var SemVer = require_semver();
8168
8270
  var parse = (version, options, throwErrors = false) => {
8169
8271
  if (version instanceof SemVer) {
@@ -8186,6 +8288,7 @@ var require_parse = __commonJS({
8186
8288
  var require_valid = __commonJS({
8187
8289
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/valid.js"(exports, module) {
8188
8290
  "use strict";
8291
+ init_define_SKILL_BODIES();
8189
8292
  var parse = require_parse();
8190
8293
  var valid = (version, options) => {
8191
8294
  const v = parse(version, options);
@@ -8199,6 +8302,7 @@ var require_valid = __commonJS({
8199
8302
  var require_clean = __commonJS({
8200
8303
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/clean.js"(exports, module) {
8201
8304
  "use strict";
8305
+ init_define_SKILL_BODIES();
8202
8306
  var parse = require_parse();
8203
8307
  var clean = (version, options) => {
8204
8308
  const s = parse(version.trim().replace(/^[=v]+/, ""), options);
@@ -8212,6 +8316,7 @@ var require_clean = __commonJS({
8212
8316
  var require_inc = __commonJS({
8213
8317
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/inc.js"(exports, module) {
8214
8318
  "use strict";
8319
+ init_define_SKILL_BODIES();
8215
8320
  var SemVer = require_semver();
8216
8321
  var inc = (version, release, options, identifier, identifierBase) => {
8217
8322
  if (typeof options === "string") {
@@ -8236,6 +8341,7 @@ var require_inc = __commonJS({
8236
8341
  var require_diff = __commonJS({
8237
8342
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/diff.js"(exports, module) {
8238
8343
  "use strict";
8344
+ init_define_SKILL_BODIES();
8239
8345
  var parse = require_parse();
8240
8346
  var diff = (version1, version2) => {
8241
8347
  const v1 = parse(version1, null, true);
@@ -8280,6 +8386,7 @@ var require_diff = __commonJS({
8280
8386
  var require_major = __commonJS({
8281
8387
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/major.js"(exports, module) {
8282
8388
  "use strict";
8389
+ init_define_SKILL_BODIES();
8283
8390
  var SemVer = require_semver();
8284
8391
  var major = (a, loose) => new SemVer(a, loose).major;
8285
8392
  module.exports = major;
@@ -8290,6 +8397,7 @@ var require_major = __commonJS({
8290
8397
  var require_minor = __commonJS({
8291
8398
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/minor.js"(exports, module) {
8292
8399
  "use strict";
8400
+ init_define_SKILL_BODIES();
8293
8401
  var SemVer = require_semver();
8294
8402
  var minor = (a, loose) => new SemVer(a, loose).minor;
8295
8403
  module.exports = minor;
@@ -8300,6 +8408,7 @@ var require_minor = __commonJS({
8300
8408
  var require_patch = __commonJS({
8301
8409
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/patch.js"(exports, module) {
8302
8410
  "use strict";
8411
+ init_define_SKILL_BODIES();
8303
8412
  var SemVer = require_semver();
8304
8413
  var patch = (a, loose) => new SemVer(a, loose).patch;
8305
8414
  module.exports = patch;
@@ -8310,6 +8419,7 @@ var require_patch = __commonJS({
8310
8419
  var require_prerelease = __commonJS({
8311
8420
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/prerelease.js"(exports, module) {
8312
8421
  "use strict";
8422
+ init_define_SKILL_BODIES();
8313
8423
  var parse = require_parse();
8314
8424
  var prerelease = (version, options) => {
8315
8425
  const parsed = parse(version, options);
@@ -8323,6 +8433,7 @@ var require_prerelease = __commonJS({
8323
8433
  var require_compare = __commonJS({
8324
8434
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/compare.js"(exports, module) {
8325
8435
  "use strict";
8436
+ init_define_SKILL_BODIES();
8326
8437
  var SemVer = require_semver();
8327
8438
  var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
8328
8439
  module.exports = compare;
@@ -8333,6 +8444,7 @@ var require_compare = __commonJS({
8333
8444
  var require_rcompare = __commonJS({
8334
8445
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/rcompare.js"(exports, module) {
8335
8446
  "use strict";
8447
+ init_define_SKILL_BODIES();
8336
8448
  var compare = require_compare();
8337
8449
  var rcompare = (a, b, loose) => compare(b, a, loose);
8338
8450
  module.exports = rcompare;
@@ -8343,6 +8455,7 @@ var require_rcompare = __commonJS({
8343
8455
  var require_compare_loose = __commonJS({
8344
8456
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/compare-loose.js"(exports, module) {
8345
8457
  "use strict";
8458
+ init_define_SKILL_BODIES();
8346
8459
  var compare = require_compare();
8347
8460
  var compareLoose = (a, b) => compare(a, b, true);
8348
8461
  module.exports = compareLoose;
@@ -8353,6 +8466,7 @@ var require_compare_loose = __commonJS({
8353
8466
  var require_compare_build = __commonJS({
8354
8467
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/compare-build.js"(exports, module) {
8355
8468
  "use strict";
8469
+ init_define_SKILL_BODIES();
8356
8470
  var SemVer = require_semver();
8357
8471
  var compareBuild = (a, b, loose) => {
8358
8472
  const versionA = new SemVer(a, loose);
@@ -8367,6 +8481,7 @@ var require_compare_build = __commonJS({
8367
8481
  var require_sort = __commonJS({
8368
8482
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/sort.js"(exports, module) {
8369
8483
  "use strict";
8484
+ init_define_SKILL_BODIES();
8370
8485
  var compareBuild = require_compare_build();
8371
8486
  var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
8372
8487
  module.exports = sort;
@@ -8377,6 +8492,7 @@ var require_sort = __commonJS({
8377
8492
  var require_rsort = __commonJS({
8378
8493
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/rsort.js"(exports, module) {
8379
8494
  "use strict";
8495
+ init_define_SKILL_BODIES();
8380
8496
  var compareBuild = require_compare_build();
8381
8497
  var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
8382
8498
  module.exports = rsort;
@@ -8387,6 +8503,7 @@ var require_rsort = __commonJS({
8387
8503
  var require_gt = __commonJS({
8388
8504
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/gt.js"(exports, module) {
8389
8505
  "use strict";
8506
+ init_define_SKILL_BODIES();
8390
8507
  var compare = require_compare();
8391
8508
  var gt = (a, b, loose) => compare(a, b, loose) > 0;
8392
8509
  module.exports = gt;
@@ -8397,6 +8514,7 @@ var require_gt = __commonJS({
8397
8514
  var require_lt = __commonJS({
8398
8515
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/lt.js"(exports, module) {
8399
8516
  "use strict";
8517
+ init_define_SKILL_BODIES();
8400
8518
  var compare = require_compare();
8401
8519
  var lt = (a, b, loose) => compare(a, b, loose) < 0;
8402
8520
  module.exports = lt;
@@ -8407,6 +8525,7 @@ var require_lt = __commonJS({
8407
8525
  var require_eq = __commonJS({
8408
8526
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/eq.js"(exports, module) {
8409
8527
  "use strict";
8528
+ init_define_SKILL_BODIES();
8410
8529
  var compare = require_compare();
8411
8530
  var eq = (a, b, loose) => compare(a, b, loose) === 0;
8412
8531
  module.exports = eq;
@@ -8417,6 +8536,7 @@ var require_eq = __commonJS({
8417
8536
  var require_neq = __commonJS({
8418
8537
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/neq.js"(exports, module) {
8419
8538
  "use strict";
8539
+ init_define_SKILL_BODIES();
8420
8540
  var compare = require_compare();
8421
8541
  var neq = (a, b, loose) => compare(a, b, loose) !== 0;
8422
8542
  module.exports = neq;
@@ -8427,6 +8547,7 @@ var require_neq = __commonJS({
8427
8547
  var require_gte = __commonJS({
8428
8548
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/gte.js"(exports, module) {
8429
8549
  "use strict";
8550
+ init_define_SKILL_BODIES();
8430
8551
  var compare = require_compare();
8431
8552
  var gte = (a, b, loose) => compare(a, b, loose) >= 0;
8432
8553
  module.exports = gte;
@@ -8437,6 +8558,7 @@ var require_gte = __commonJS({
8437
8558
  var require_lte = __commonJS({
8438
8559
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/lte.js"(exports, module) {
8439
8560
  "use strict";
8561
+ init_define_SKILL_BODIES();
8440
8562
  var compare = require_compare();
8441
8563
  var lte = (a, b, loose) => compare(a, b, loose) <= 0;
8442
8564
  module.exports = lte;
@@ -8447,6 +8569,7 @@ var require_lte = __commonJS({
8447
8569
  var require_cmp = __commonJS({
8448
8570
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/cmp.js"(exports, module) {
8449
8571
  "use strict";
8572
+ init_define_SKILL_BODIES();
8450
8573
  var eq = require_eq();
8451
8574
  var neq = require_neq();
8452
8575
  var gt = require_gt();
@@ -8497,6 +8620,7 @@ var require_cmp = __commonJS({
8497
8620
  var require_coerce = __commonJS({
8498
8621
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/coerce.js"(exports, module) {
8499
8622
  "use strict";
8623
+ init_define_SKILL_BODIES();
8500
8624
  var SemVer = require_semver();
8501
8625
  var parse = require_parse();
8502
8626
  var { safeRe: re, t } = require_re();
@@ -8543,6 +8667,7 @@ var require_coerce = __commonJS({
8543
8667
  var require_truncate = __commonJS({
8544
8668
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/truncate.js"(exports, module) {
8545
8669
  "use strict";
8670
+ init_define_SKILL_BODIES();
8546
8671
  var parse = require_parse();
8547
8672
  var constants = require_constants();
8548
8673
  var SemVer = require_semver();
@@ -8584,6 +8709,7 @@ var require_truncate = __commonJS({
8584
8709
  var require_lrucache = __commonJS({
8585
8710
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/lrucache.js"(exports, module) {
8586
8711
  "use strict";
8712
+ init_define_SKILL_BODIES();
8587
8713
  var LRUCache = class {
8588
8714
  constructor() {
8589
8715
  this.max = 1e3;
@@ -8622,6 +8748,7 @@ var require_lrucache = __commonJS({
8622
8748
  var require_range = __commonJS({
8623
8749
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/classes/range.js"(exports, module) {
8624
8750
  "use strict";
8751
+ init_define_SKILL_BODIES();
8625
8752
  var SPACE_CHARACTERS = /\s+/g;
8626
8753
  var Range = class _Range {
8627
8754
  constructor(range, options) {
@@ -9002,6 +9129,7 @@ var require_range = __commonJS({
9002
9129
  var require_comparator = __commonJS({
9003
9130
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/classes/comparator.js"(exports, module) {
9004
9131
  "use strict";
9132
+ init_define_SKILL_BODIES();
9005
9133
  var ANY = /* @__PURE__ */ Symbol("SemVer ANY");
9006
9134
  var Comparator = class _Comparator {
9007
9135
  static get ANY() {
@@ -9115,6 +9243,7 @@ var require_comparator = __commonJS({
9115
9243
  var require_satisfies = __commonJS({
9116
9244
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/satisfies.js"(exports, module) {
9117
9245
  "use strict";
9246
+ init_define_SKILL_BODIES();
9118
9247
  var Range = require_range();
9119
9248
  var satisfies = (version, range, options) => {
9120
9249
  try {
@@ -9132,6 +9261,7 @@ var require_satisfies = __commonJS({
9132
9261
  var require_to_comparators = __commonJS({
9133
9262
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/to-comparators.js"(exports, module) {
9134
9263
  "use strict";
9264
+ init_define_SKILL_BODIES();
9135
9265
  var Range = require_range();
9136
9266
  var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
9137
9267
  module.exports = toComparators;
@@ -9142,6 +9272,7 @@ var require_to_comparators = __commonJS({
9142
9272
  var require_max_satisfying = __commonJS({
9143
9273
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/max-satisfying.js"(exports, module) {
9144
9274
  "use strict";
9275
+ init_define_SKILL_BODIES();
9145
9276
  var SemVer = require_semver();
9146
9277
  var Range = require_range();
9147
9278
  var maxSatisfying = (versions, range, options) => {
@@ -9171,6 +9302,7 @@ var require_max_satisfying = __commonJS({
9171
9302
  var require_min_satisfying = __commonJS({
9172
9303
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/min-satisfying.js"(exports, module) {
9173
9304
  "use strict";
9305
+ init_define_SKILL_BODIES();
9174
9306
  var SemVer = require_semver();
9175
9307
  var Range = require_range();
9176
9308
  var minSatisfying = (versions, range, options) => {
@@ -9200,6 +9332,7 @@ var require_min_satisfying = __commonJS({
9200
9332
  var require_min_version = __commonJS({
9201
9333
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/min-version.js"(exports, module) {
9202
9334
  "use strict";
9335
+ init_define_SKILL_BODIES();
9203
9336
  var SemVer = require_semver();
9204
9337
  var Range = require_range();
9205
9338
  var gt = require_gt();
@@ -9259,6 +9392,7 @@ var require_min_version = __commonJS({
9259
9392
  var require_valid2 = __commonJS({
9260
9393
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/valid.js"(exports, module) {
9261
9394
  "use strict";
9395
+ init_define_SKILL_BODIES();
9262
9396
  var Range = require_range();
9263
9397
  var validRange = (range, options) => {
9264
9398
  try {
@@ -9275,6 +9409,7 @@ var require_valid2 = __commonJS({
9275
9409
  var require_outside = __commonJS({
9276
9410
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/outside.js"(exports, module) {
9277
9411
  "use strict";
9412
+ init_define_SKILL_BODIES();
9278
9413
  var SemVer = require_semver();
9279
9414
  var Comparator = require_comparator();
9280
9415
  var { ANY } = Comparator;
@@ -9344,6 +9479,7 @@ var require_outside = __commonJS({
9344
9479
  var require_gtr = __commonJS({
9345
9480
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/gtr.js"(exports, module) {
9346
9481
  "use strict";
9482
+ init_define_SKILL_BODIES();
9347
9483
  var outside = require_outside();
9348
9484
  var gtr = (version, range, options) => outside(version, range, ">", options);
9349
9485
  module.exports = gtr;
@@ -9354,6 +9490,7 @@ var require_gtr = __commonJS({
9354
9490
  var require_ltr = __commonJS({
9355
9491
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/ltr.js"(exports, module) {
9356
9492
  "use strict";
9493
+ init_define_SKILL_BODIES();
9357
9494
  var outside = require_outside();
9358
9495
  var ltr = (version, range, options) => outside(version, range, "<", options);
9359
9496
  module.exports = ltr;
@@ -9364,6 +9501,7 @@ var require_ltr = __commonJS({
9364
9501
  var require_intersects = __commonJS({
9365
9502
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/intersects.js"(exports, module) {
9366
9503
  "use strict";
9504
+ init_define_SKILL_BODIES();
9367
9505
  var Range = require_range();
9368
9506
  var intersects = (r1, r2, options) => {
9369
9507
  r1 = new Range(r1, options);
@@ -9378,6 +9516,7 @@ var require_intersects = __commonJS({
9378
9516
  var require_simplify = __commonJS({
9379
9517
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/simplify.js"(exports, module) {
9380
9518
  "use strict";
9519
+ init_define_SKILL_BODIES();
9381
9520
  var satisfies = require_satisfies();
9382
9521
  var compare = require_compare();
9383
9522
  module.exports = (versions, range, options) => {
@@ -9428,6 +9567,7 @@ var require_simplify = __commonJS({
9428
9567
  var require_subset = __commonJS({
9429
9568
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/subset.js"(exports, module) {
9430
9569
  "use strict";
9570
+ init_define_SKILL_BODIES();
9431
9571
  var Range = require_range();
9432
9572
  var Comparator = require_comparator();
9433
9573
  var { ANY } = Comparator;
@@ -9590,6 +9730,7 @@ var require_subset = __commonJS({
9590
9730
  var require_semver2 = __commonJS({
9591
9731
  "../../node_modules/.pnpm/semver@7.8.1/node_modules/semver/index.js"(exports, module) {
9592
9732
  "use strict";
9733
+ init_define_SKILL_BODIES();
9593
9734
  var internalRe = require_re();
9594
9735
  var constants = require_constants();
9595
9736
  var SemVer = require_semver();
@@ -9684,9 +9825,11 @@ var require_semver2 = __commonJS({
9684
9825
  });
9685
9826
 
9686
9827
  // src/cli.tsx
9828
+ init_define_SKILL_BODIES();
9687
9829
  import process9 from "process";
9688
9830
 
9689
9831
  // ../core/dist/index.js
9832
+ init_define_SKILL_BODIES();
9690
9833
  import {
9691
9834
  MppClient
9692
9835
  } from "@inflowpayai/mpp";
@@ -9696,6 +9839,7 @@ import { unlink } from "fs/promises";
9696
9839
  import path5 from "path";
9697
9840
 
9698
9841
  // ../../node_modules/.pnpm/conf@13.1.0/node_modules/conf/dist/source/index.js
9842
+ init_define_SKILL_BODIES();
9699
9843
  import { isDeepStrictEqual } from "util";
9700
9844
  import process7 from "process";
9701
9845
  import fs2 from "fs";
@@ -9704,6 +9848,7 @@ import crypto from "crypto";
9704
9848
  import assert from "assert";
9705
9849
 
9706
9850
  // ../../node_modules/.pnpm/dot-prop@9.0.0/node_modules/dot-prop/index.js
9851
+ init_define_SKILL_BODIES();
9707
9852
  var isObject = (value) => {
9708
9853
  const type = typeof value;
9709
9854
  return value !== null && (type === "object" || type === "function");
@@ -9919,6 +10064,7 @@ function hasProperty(object, path6) {
9919
10064
  }
9920
10065
 
9921
10066
  // ../../node_modules/.pnpm/env-paths@3.0.0/node_modules/env-paths/index.js
10067
+ init_define_SKILL_BODIES();
9922
10068
  import path from "path";
9923
10069
  import os from "os";
9924
10070
  import process2 from "process";
@@ -9975,16 +10121,22 @@ function envPaths(name, { suffix = "nodejs" } = {}) {
9975
10121
  }
9976
10122
 
9977
10123
  // ../../node_modules/.pnpm/atomically@2.1.1/node_modules/atomically/dist/index.js
10124
+ init_define_SKILL_BODIES();
9978
10125
  import { once } from "events";
9979
10126
  import { createWriteStream } from "fs";
9980
10127
  import path3 from "path";
9981
10128
  import { Readable } from "stream";
9982
10129
 
9983
10130
  // ../../node_modules/.pnpm/stubborn-fs@2.0.0/node_modules/stubborn-fs/dist/index.js
10131
+ init_define_SKILL_BODIES();
9984
10132
  import fs from "fs";
9985
10133
  import { promisify } from "util";
9986
10134
 
10135
+ // ../../node_modules/.pnpm/stubborn-utils@1.0.2/node_modules/stubborn-utils/dist/index.js
10136
+ init_define_SKILL_BODIES();
10137
+
9987
10138
  // ../../node_modules/.pnpm/stubborn-utils@1.0.2/node_modules/stubborn-utils/dist/attemptify_async.js
10139
+ init_define_SKILL_BODIES();
9988
10140
  var attemptifyAsync = (fn, options) => {
9989
10141
  const { onError } = options;
9990
10142
  return function attemptified(...args) {
@@ -9994,6 +10146,7 @@ var attemptifyAsync = (fn, options) => {
9994
10146
  var attemptify_async_default = attemptifyAsync;
9995
10147
 
9996
10148
  // ../../node_modules/.pnpm/stubborn-utils@1.0.2/node_modules/stubborn-utils/dist/attemptify_sync.js
10149
+ init_define_SKILL_BODIES();
9997
10150
  var attemptifySync = (fn, options) => {
9998
10151
  const { onError } = options;
9999
10152
  return function attemptified(...args) {
@@ -10006,7 +10159,11 @@ var attemptifySync = (fn, options) => {
10006
10159
  };
10007
10160
  var attemptify_sync_default = attemptifySync;
10008
10161
 
10162
+ // ../../node_modules/.pnpm/stubborn-utils@1.0.2/node_modules/stubborn-utils/dist/retryify_async.js
10163
+ init_define_SKILL_BODIES();
10164
+
10009
10165
  // ../../node_modules/.pnpm/stubborn-utils@1.0.2/node_modules/stubborn-utils/dist/constants.js
10166
+ init_define_SKILL_BODIES();
10010
10167
  var RETRY_INTERVAL = 250;
10011
10168
 
10012
10169
  // ../../node_modules/.pnpm/stubborn-utils@1.0.2/node_modules/stubborn-utils/dist/retryify_async.js
@@ -10036,6 +10193,7 @@ var retryifyAsync = (fn, options) => {
10036
10193
  var retryify_async_default = retryifyAsync;
10037
10194
 
10038
10195
  // ../../node_modules/.pnpm/stubborn-utils@1.0.2/node_modules/stubborn-utils/dist/retryify_sync.js
10196
+ init_define_SKILL_BODIES();
10039
10197
  var retryifySync = (fn, options) => {
10040
10198
  const { isRetriable } = options;
10041
10199
  return function retryified(options2) {
@@ -10059,9 +10217,11 @@ var retryifySync = (fn, options) => {
10059
10217
  var retryify_sync_default = retryifySync;
10060
10218
 
10061
10219
  // ../../node_modules/.pnpm/stubborn-fs@2.0.0/node_modules/stubborn-fs/dist/constants.js
10220
+ init_define_SKILL_BODIES();
10062
10221
  import process3 from "process";
10063
10222
 
10064
10223
  // ../../node_modules/.pnpm/stubborn-fs@2.0.0/node_modules/stubborn-fs/dist/handlers.js
10224
+ init_define_SKILL_BODIES();
10065
10225
  var Handlers = {
10066
10226
  /* API */
10067
10227
  isChangeErrorOk: (error) => {
@@ -10154,6 +10314,7 @@ var FS = {
10154
10314
  var dist_default = FS;
10155
10315
 
10156
10316
  // ../../node_modules/.pnpm/atomically@2.1.1/node_modules/atomically/dist/constants.js
10317
+ init_define_SKILL_BODIES();
10157
10318
  import process4 from "process";
10158
10319
  var DEFAULT_ENCODING = "utf8";
10159
10320
  var DEFAULT_FILE_MODE = 438;
@@ -10167,6 +10328,7 @@ var IS_USER_ROOT2 = process4.getuid ? !process4.getuid() : false;
10167
10328
  var LIMIT_BASENAME_LENGTH = 128;
10168
10329
 
10169
10330
  // ../../node_modules/.pnpm/atomically@2.1.1/node_modules/atomically/dist/utils/lang.js
10331
+ init_define_SKILL_BODIES();
10170
10332
  var isException = (value) => {
10171
10333
  return value instanceof Error && "code" in value;
10172
10334
  };
@@ -10177,18 +10339,28 @@ var isUndefined = (value) => {
10177
10339
  return value === void 0;
10178
10340
  };
10179
10341
 
10342
+ // ../../node_modules/.pnpm/atomically@2.1.1/node_modules/atomically/dist/utils/scheduler.js
10343
+ init_define_SKILL_BODIES();
10344
+
10180
10345
  // ../../node_modules/.pnpm/atomically@2.1.1/node_modules/atomically/dist/utils/temp.js
10346
+ init_define_SKILL_BODIES();
10181
10347
  import path2 from "path";
10182
10348
 
10349
+ // ../../node_modules/.pnpm/when-exit@2.1.5/node_modules/when-exit/dist/node/index.js
10350
+ init_define_SKILL_BODIES();
10351
+
10183
10352
  // ../../node_modules/.pnpm/when-exit@2.1.5/node_modules/when-exit/dist/node/interceptor.js
10353
+ init_define_SKILL_BODIES();
10184
10354
  import process6 from "process";
10185
10355
 
10186
10356
  // ../../node_modules/.pnpm/when-exit@2.1.5/node_modules/when-exit/dist/node/constants.js
10357
+ init_define_SKILL_BODIES();
10187
10358
  import process5 from "process";
10188
10359
  var IS_LINUX = process5.platform === "linux";
10189
10360
  var IS_WINDOWS = process5.platform === "win32";
10190
10361
 
10191
10362
  // ../../node_modules/.pnpm/when-exit@2.1.5/node_modules/when-exit/dist/node/signals.js
10363
+ init_define_SKILL_BODIES();
10192
10364
  var Signals = ["SIGHUP", "SIGINT", "SIGTERM"];
10193
10365
  if (!IS_WINDOWS) {
10194
10366
  Signals.push("SIGALRM", "SIGABRT", "SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT");
@@ -10378,7 +10550,11 @@ function writeFileSync(filePath, data, options = DEFAULT_WRITE_OPTIONS) {
10378
10550
  var import__ = __toESM(require__(), 1);
10379
10551
  var import_ajv_formats = __toESM(require_dist(), 1);
10380
10552
 
10553
+ // ../../node_modules/.pnpm/debounce-fn@6.0.0/node_modules/debounce-fn/index.js
10554
+ init_define_SKILL_BODIES();
10555
+
10381
10556
  // ../../node_modules/.pnpm/mimic-function@5.0.1/node_modules/mimic-function/index.js
10557
+ init_define_SKILL_BODIES();
10382
10558
  var copyProperty = (to, from, property, ignoreNonConfigurable) => {
10383
10559
  if (property === "length" || property === "prototype") {
10384
10560
  return;
@@ -10496,6 +10672,7 @@ var debounce_fn_default = debounceFunction;
10496
10672
  var import_semver = __toESM(require_semver2(), 1);
10497
10673
 
10498
10674
  // ../../node_modules/.pnpm/uint8array-extras@1.5.0/node_modules/uint8array-extras/index.js
10675
+ init_define_SKILL_BODIES();
10499
10676
  var objectToString = Object.prototype.toString;
10500
10677
  var uint8ArrayStringified = "[object Uint8Array]";
10501
10678
  var arrayBufferStringified = "[object ArrayBuffer]";
@@ -11001,7 +11178,11 @@ import {
11001
11178
  import { sellerProbe as sellerProbe4 } from "@inflowpayai/x402-buyer/probe";
11002
11179
  import { hostname } from "os";
11003
11180
 
11181
+ // ../../node_modules/.pnpm/strip-ansi@7.2.0/node_modules/strip-ansi/index.js
11182
+ init_define_SKILL_BODIES();
11183
+
11004
11184
  // ../../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
11185
+ init_define_SKILL_BODIES();
11005
11186
  function ansiRegex({ onlyFirst = false } = {}) {
11006
11187
  const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
11007
11188
  const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
@@ -13595,18 +13776,21 @@ async function runDepositAddressesList(input) {
13595
13776
  }
13596
13777
 
13597
13778
  // src/cli.tsx
13598
- import { Cli as Cli7 } from "incur";
13779
+ import { Cli as Cli7, Help } from "incur";
13599
13780
 
13600
13781
  // src/commands/auth/index.tsx
13782
+ init_define_SKILL_BODIES();
13601
13783
  import { Cli } from "incur";
13602
13784
  import { Text as Text6 } from "ink";
13603
13785
  import { useEffect as useEffect5, useState as useState2 } from "react";
13604
13786
 
13605
13787
  // src/hooks/use-flow-exit.ts
13788
+ init_define_SKILL_BODIES();
13606
13789
  import { useApp } from "ink";
13607
13790
  import { useCallback, useRef } from "react";
13608
13791
 
13609
13792
  // src/utils/best-effort-cancel.ts
13793
+ init_define_SKILL_BODIES();
13610
13794
  var CANCEL_GRACE_MS = 1500;
13611
13795
  function runBestEffortCancel(cancel, done, graceMs = CANCEL_GRACE_MS) {
13612
13796
  let finished = false;
@@ -13650,6 +13834,7 @@ function useFlowExit(onComplete) {
13650
13834
  }
13651
13835
 
13652
13836
  // src/utils/render-ink-until-exit.tsx
13837
+ init_define_SKILL_BODIES();
13653
13838
  import { render } from "ink";
13654
13839
  async function renderInkUntilExit(element, resolveResult) {
13655
13840
  const instance = render(element);
@@ -13658,14 +13843,17 @@ async function renderInkUntilExit(element, resolveResult) {
13658
13843
  }
13659
13844
 
13660
13845
  // src/utils/user-display.ts
13846
+ init_define_SKILL_BODIES();
13661
13847
  var NPM_INSTALL_COMMAND = "npm install -g @inflowpayai/inflow";
13662
13848
 
13663
13849
  // src/commands/auth/login.tsx
13850
+ init_define_SKILL_BODIES();
13664
13851
  import { Box, Text, useInput } from "ink";
13665
13852
  import Spinner from "ink-spinner";
13666
13853
  import { useEffect, useReducer } from "react";
13667
13854
 
13668
13855
  // src/utils/open-url.ts
13856
+ init_define_SKILL_BODIES();
13669
13857
  import { spawn } from "child_process";
13670
13858
  import { platform } from "os";
13671
13859
  var ALLOWED_SCHEMES = /* @__PURE__ */ new Set(["http:", "https:"]);
@@ -13785,6 +13973,7 @@ var Login = ({ auth, clientName, connection, priorRefreshToken, onComplete }) =>
13785
13973
  };
13786
13974
 
13787
13975
  // src/commands/auth/login-api-key.tsx
13976
+ init_define_SKILL_BODIES();
13788
13977
  import { Box as Box2, Text as Text2 } from "ink";
13789
13978
  import Spinner2 from "ink-spinner";
13790
13979
  import { useEffect as useEffect2, useReducer as useReducer2 } from "react";
@@ -13832,6 +14021,7 @@ var LoginApiKey = ({ apiKey: apiKey2, auth, connection, onComplete }) => {
13832
14021
  };
13833
14022
 
13834
14023
  // src/commands/auth/login-prompt.tsx
14024
+ init_define_SKILL_BODIES();
13835
14025
  import { Box as Box3, Text as Text3, useInput as useInput2 } from "ink";
13836
14026
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
13837
14027
  var LoginPrompt = ({ userDisplay, onAccept, onReject }) => {
@@ -13851,11 +14041,13 @@ var LoginPrompt = ({ userDisplay, onAccept, onReject }) => {
13851
14041
  };
13852
14042
 
13853
14043
  // src/commands/auth/logout.tsx
14044
+ init_define_SKILL_BODIES();
13854
14045
  import { Box as Box4, Text as Text4 } from "ink";
13855
14046
  import Spinner3 from "ink-spinner";
13856
14047
  import { useCallback as useCallback2 } from "react";
13857
14048
 
13858
14049
  // src/hooks/use-flow-state.ts
14050
+ init_define_SKILL_BODIES();
13859
14051
  import { useEffect as useEffect3, useRef as useRef2, useState } from "react";
13860
14052
  function useFlowState(action, onComplete) {
13861
14053
  const [status, setStatus] = useState("loading");
@@ -13912,6 +14104,7 @@ var Logout = ({ auth, onComplete }) => {
13912
14104
  };
13913
14105
 
13914
14106
  // src/commands/auth/schema.ts
14107
+ init_define_SKILL_BODIES();
13915
14108
  import { z } from "incur";
13916
14109
  var loginOptions = z.object({
13917
14110
  clientName: z.string().default("InFlow").describe("Agent or app name shown to the user during device authorization."),
@@ -13931,6 +14124,7 @@ var statusOptions = z.object({
13931
14124
  });
13932
14125
 
13933
14126
  // src/commands/auth/status.tsx
14127
+ init_define_SKILL_BODIES();
13934
14128
  import { Box as Box5, Text as Text5 } from "ink";
13935
14129
  import Spinner4 from "ink-spinner";
13936
14130
  import { useEffect as useEffect4, useReducer as useReducer3 } from "react";
@@ -14094,7 +14288,7 @@ function displayConnection(stored, ctx) {
14094
14288
  if (auth !== void 0) out.authBaseUrl = auth;
14095
14289
  return out;
14096
14290
  }
14097
- var INSTRUCTION_NO_INTERVAL = "Present the verification_url to the user and ask them to authorize. Then call `auth status --interval 5 --max-attempts 60` to poll until authenticated. Do not wait for the user to reply \u2014 start polling immediately.";
14291
+ var INSTRUCTION_NO_INTERVAL = "Present the verification_url to the user and ask them to authorize. Then call `auth status --interval 5 --max-attempts 60` to poll until authenticated. Do not wait for the user to reply - start polling immediately.";
14098
14292
  var INSTRUCTION_WITH_INTERVAL = "Present the verification_url to the user and ask them to authorize in their browser. Polling has started automatically \u2014 no further action needed.";
14099
14293
  var POST_LOGIN_TIP = "Signed in. Try: inflow balances list or inflow x402 pay <url>.";
14100
14294
  var PROBE_TIMEOUT_MS = 3e4;
@@ -14428,10 +14622,12 @@ function createAuthCli(authResource, userResource, updateProbe2, authStorage2, c
14428
14622
  }
14429
14623
 
14430
14624
  // src/commands/balances/index.tsx
14625
+ init_define_SKILL_BODIES();
14431
14626
  import { Cli as Cli2 } from "incur";
14432
14627
  import "react";
14433
14628
 
14434
14629
  // src/utils/assert-session.ts
14630
+ init_define_SKILL_BODIES();
14435
14631
  import { Errors } from "incur";
14436
14632
  var MISSING_SESSION_ERROR = {
14437
14633
  code: "NOT_AUTHENTICATED",
@@ -14450,11 +14646,13 @@ function assertSessionGuard(c, storage2, inflow2) {
14450
14646
  }
14451
14647
 
14452
14648
  // src/commands/balances/list.tsx
14649
+ init_define_SKILL_BODIES();
14453
14650
  import { Box as Box7, Text as Text8 } from "ink";
14454
14651
  import Spinner5 from "ink-spinner";
14455
14652
  import { useCallback as useCallback3 } from "react";
14456
14653
 
14457
14654
  // src/utils/table.tsx
14655
+ init_define_SKILL_BODIES();
14458
14656
  import { Box as Box6, Text as Text7 } from "ink";
14459
14657
  import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
14460
14658
  var CELL_COLOR_PALETTE = [
@@ -14546,6 +14744,7 @@ var BalancesList = ({ balanceResource, onComplete }) => {
14546
14744
  };
14547
14745
 
14548
14746
  // src/commands/balances/schema.ts
14747
+ init_define_SKILL_BODIES();
14549
14748
  import { z as z2 } from "incur";
14550
14749
  var listOptions = z2.object({});
14551
14750
 
@@ -14585,10 +14784,12 @@ function createBalancesCli(balanceResource, authStorage2, inflow2) {
14585
14784
  }
14586
14785
 
14587
14786
  // src/commands/deposit-addresses/index.tsx
14787
+ init_define_SKILL_BODIES();
14588
14788
  import { Cli as Cli3 } from "incur";
14589
14789
  import "react";
14590
14790
 
14591
14791
  // src/commands/deposit-addresses/list.tsx
14792
+ init_define_SKILL_BODIES();
14592
14793
  import { Box as Box8, Text as Text9 } from "ink";
14593
14794
  import Spinner6 from "ink-spinner";
14594
14795
  import { useCallback as useCallback4 } from "react";
@@ -14622,6 +14823,7 @@ var DepositAddressesList = ({ depositAddressResource, onComplete }) => {
14622
14823
  };
14623
14824
 
14624
14825
  // src/commands/deposit-addresses/schema.ts
14826
+ init_define_SKILL_BODIES();
14625
14827
  import { z as z3 } from "incur";
14626
14828
  var listOptions2 = z3.object({});
14627
14829
 
@@ -14666,7 +14868,11 @@ function createDepositAddressesCli(depositAddressResource, authStorage2, inflow2
14666
14868
  return cli2;
14667
14869
  }
14668
14870
 
14871
+ // src/commands/inspect/index.tsx
14872
+ init_define_SKILL_BODIES();
14873
+
14669
14874
  // src/commands/mpp/inspect.tsx
14875
+ init_define_SKILL_BODIES();
14670
14876
  import { Box as Box9, Text as Text10 } from "ink";
14671
14877
  import Spinner7 from "ink-spinner";
14672
14878
  import { useEffect as useEffect6, useReducer as useReducer4 } from "react";
@@ -14784,6 +14990,7 @@ function buildNoPaymentFrame(result) {
14784
14990
  }
14785
14991
 
14786
14992
  // src/commands/x402/inspect.tsx
14993
+ init_define_SKILL_BODIES();
14787
14994
  import { Box as Box10, Text as Text11 } from "ink";
14788
14995
  import Spinner8 from "ink-spinner";
14789
14996
  import { useEffect as useEffect7, useReducer as useReducer5 } from "react";
@@ -14907,6 +15114,7 @@ function buildNoPaymentFrame2(result) {
14907
15114
  }
14908
15115
 
14909
15116
  // src/commands/inspect/combined-inspect-view.tsx
15117
+ init_define_SKILL_BODIES();
14910
15118
  import { Box as Box11, Text as Text12 } from "ink";
14911
15119
  import Spinner9 from "ink-spinner";
14912
15120
  import { useEffect as useEffect8, useReducer as useReducer6 } from "react";
@@ -15063,6 +15271,7 @@ var CombinedInspectView = ({ url, method, deps, onComplete }) => {
15063
15271
  };
15064
15272
 
15065
15273
  // src/commands/inspect/schema.ts
15274
+ init_define_SKILL_BODIES();
15066
15275
  import { z as z4 } from "incur";
15067
15276
  var inspectArgs = z4.object({
15068
15277
  url: z4.string().describe("The resource URL to probe for MPP and/or x402 payment challenges. No payment is made.")
@@ -15196,7 +15405,7 @@ async function runCombinedInspectCommand(c) {
15196
15405
  }
15197
15406
  function createInspectCommand() {
15198
15407
  return {
15199
- description: "Detect a URL's payment protocol(s) and show MPP and x402 challenges together. Read-only probe \u2014 no auth, no payment. Read `detected` to choose a pay rail (MPP wins when both are present).",
15408
+ description: "Detect a URL's payment protocol(s) and show MPP and x402 challenges together. Read-only probe - no auth, no payment. Read `detected` to choose a pay rail (MPP wins when both are present).",
15200
15409
  args: inspectArgs,
15201
15410
  options: inspectOptions,
15202
15411
  outputPolicy: "agent-only",
@@ -15218,11 +15427,13 @@ function createInspectCommand() {
15218
15427
  }
15219
15428
 
15220
15429
  // src/commands/mpp/index.tsx
15430
+ init_define_SKILL_BODIES();
15221
15431
  import { chmodSync, writeFileSync as writeFileSync2 } from "fs";
15222
15432
  import { resolve as resolvePath2 } from "path";
15223
15433
  import { Cli as Cli4 } from "incur";
15224
15434
 
15225
15435
  // src/commands/mpp/cancel.tsx
15436
+ init_define_SKILL_BODIES();
15226
15437
  import { Box as Box12, Text as Text13 } from "ink";
15227
15438
  import Spinner10 from "ink-spinner";
15228
15439
  import { useCallback as useCallback5 } from "react";
@@ -15247,6 +15458,7 @@ var CancelView = ({ approvalId, cancel, onComplete }) => {
15247
15458
  };
15248
15459
 
15249
15460
  // src/commands/mpp/decode.tsx
15461
+ init_define_SKILL_BODIES();
15250
15462
  import { Box as Box13, Text as Text14 } from "ink";
15251
15463
  import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
15252
15464
  function ChallengeBody({ challenge }) {
@@ -15301,6 +15513,7 @@ var DecodeView = ({ result }) => {
15301
15513
  };
15302
15514
 
15303
15515
  // src/commands/mpp/pay.tsx
15516
+ init_define_SKILL_BODIES();
15304
15517
  import { Box as Box14, Text as Text15, useInput as useInput3 } from "ink";
15305
15518
  import Spinner11 from "ink-spinner";
15306
15519
  import { useEffect as useEffect9, useReducer as useReducer7, useState as useState3 } from "react";
@@ -15479,6 +15692,7 @@ var PayView = ({ url, method, deps, onComplete, onCancel }) => {
15479
15692
  };
15480
15693
 
15481
15694
  // src/commands/mpp/schema.ts
15695
+ init_define_SKILL_BODIES();
15482
15696
  import { z as z5 } from "incur";
15483
15697
  var payArgs = z5.object({
15484
15698
  url: z5.string().describe("The MPP-protected resource URL to pay for.")
@@ -15499,7 +15713,7 @@ var payOptions = z5.object({
15499
15713
  maxAttempts: z5.coerce.number().default(0).describe("Hard cap on poll attempts when --interval > 0. 0 means unlimited."),
15500
15714
  timeout: z5.coerce.number().default(900).describe("Polling deadline in seconds. Default 900s (matches the server-side approval expiry)."),
15501
15715
  instrumentId: z5.string().optional().describe(
15502
- "Funding instrument id (UUID) for an instrument-rail challenge. The buyer does not choose the rail \u2014 it is derived from the seller challenge; this is the only buyer-supplied payment option."
15716
+ "Funding instrument id (UUID) for an instrument-rail challenge. The buyer does not choose the rail - it is derived from the seller challenge; this is the only buyer-supplied payment option."
15503
15717
  ),
15504
15718
  showBody: z5.boolean().default(true).describe(
15505
15719
  "Include the seller response body in the result. Default true so AI assistants paying for content receive the deliverable. Pass --no-show-body to suppress (e.g. for binary downloads paired with --output-file)."
@@ -15548,6 +15762,7 @@ var inspectOptions2 = z5.object({
15548
15762
  });
15549
15763
 
15550
15764
  // src/commands/mpp/status.tsx
15765
+ init_define_SKILL_BODIES();
15551
15766
  import { Box as Box15, Text as Text16 } from "ink";
15552
15767
  import Spinner12 from "ink-spinner";
15553
15768
  import { useEffect as useEffect10, useReducer as useReducer8 } from "react";
@@ -15623,6 +15838,7 @@ var MppStatusView = ({
15623
15838
  };
15624
15839
 
15625
15840
  // src/commands/mpp/supported.tsx
15841
+ init_define_SKILL_BODIES();
15626
15842
  import { Box as Box16, Text as Text17 } from "ink";
15627
15843
  import Spinner13 from "ink-spinner";
15628
15844
  import { useCallback as useCallback6 } from "react";
@@ -16084,14 +16300,14 @@ function createMppCli(inflow2, authStorage2, apiBaseUrl2) {
16084
16300
  }
16085
16301
  });
16086
16302
  cli2.command("supported", {
16087
- description: "List the methods the buyer can pay with \u2014 by intent, settlement rail, and currency.",
16303
+ description: "List the methods the buyer can pay with - by intent, settlement rail, and currency.",
16088
16304
  outputPolicy: "agent-only",
16089
16305
  async run(c) {
16090
16306
  return runSupportedCommand(c, inflow2, authStorage2);
16091
16307
  }
16092
16308
  });
16093
16309
  cli2.command("inspect", {
16094
- description: "Show the seller's MPP challenge(s) for a URL. Read-only probe \u2014 no auth, no payment.",
16310
+ description: "Show the seller's MPP challenge(s) for a URL. Read-only probe - no auth, no payment.",
16095
16311
  args: inspectArgs2,
16096
16312
  options: inspectOptions2,
16097
16313
  outputPolicy: "agent-only",
@@ -16103,10 +16319,12 @@ function createMppCli(inflow2, authStorage2, apiBaseUrl2) {
16103
16319
  }
16104
16320
 
16105
16321
  // src/commands/user/index.tsx
16322
+ init_define_SKILL_BODIES();
16106
16323
  import { Cli as Cli5, Errors as Errors2 } from "incur";
16107
16324
  import "react";
16108
16325
 
16109
16326
  // src/commands/user/get.tsx
16327
+ init_define_SKILL_BODIES();
16110
16328
  import { Box as Box17, Text as Text18 } from "ink";
16111
16329
  import Spinner14 from "ink-spinner";
16112
16330
  import { useCallback as useCallback7, useRef as useRef3 } from "react";
@@ -16151,6 +16369,7 @@ var UserGet = ({ userResource, onComplete }) => {
16151
16369
  };
16152
16370
 
16153
16371
  // src/commands/user/schema.ts
16372
+ init_define_SKILL_BODIES();
16154
16373
  import { z as z6 } from "incur";
16155
16374
  var getOptions = z6.object({});
16156
16375
 
@@ -16203,11 +16422,13 @@ function createUserCli(user, authStorage2, inflow2) {
16203
16422
  }
16204
16423
 
16205
16424
  // src/commands/x402/index.tsx
16425
+ init_define_SKILL_BODIES();
16206
16426
  import { chmodSync as chmodSync2, writeFileSync as writeFileSync3 } from "fs";
16207
16427
  import { resolve as resolvePath3 } from "path";
16208
16428
  import { Cli as Cli6 } from "incur";
16209
16429
 
16210
16430
  // src/commands/x402/cancel.tsx
16431
+ init_define_SKILL_BODIES();
16211
16432
  import { Box as Box18, Text as Text19 } from "ink";
16212
16433
  import Spinner15 from "ink-spinner";
16213
16434
  import { useCallback as useCallback8 } from "react";
@@ -16232,6 +16453,7 @@ var CancelView2 = ({ approvalId, cancel, onComplete }) => {
16232
16453
  };
16233
16454
 
16234
16455
  // src/commands/x402/decode.tsx
16456
+ init_define_SKILL_BODIES();
16235
16457
  import { fromFoundationRequirements as fromFoundationRequirements3 } from "@inflowpayai/x402-buyer";
16236
16458
  import { Box as Box19, Text as Text20 } from "ink";
16237
16459
  import { jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
@@ -16263,6 +16485,7 @@ var DecodeView2 = ({ decoded }) => {
16263
16485
  };
16264
16486
 
16265
16487
  // src/commands/x402/pay.tsx
16488
+ init_define_SKILL_BODIES();
16266
16489
  import { Box as Box20, Text as Text21, useInput as useInput4 } from "ink";
16267
16490
  import Spinner16 from "ink-spinner";
16268
16491
  import { useEffect as useEffect11, useReducer as useReducer9, useState as useState4 } from "react";
@@ -16441,6 +16664,7 @@ var PayView2 = ({ url, method, deps, onComplete, onCancel }) => {
16441
16664
  };
16442
16665
 
16443
16666
  // src/commands/x402/schema.ts
16667
+ init_define_SKILL_BODIES();
16444
16668
  import { z as z7 } from "incur";
16445
16669
  var payArgs2 = z7.object({
16446
16670
  url: z7.string().describe("The x402-protected resource URL to pay for.")
@@ -16508,6 +16732,7 @@ var inspectOptions3 = z7.object({
16508
16732
  });
16509
16733
 
16510
16734
  // src/commands/x402/status.tsx
16735
+ init_define_SKILL_BODIES();
16511
16736
  import { Box as Box21, Text as Text22 } from "ink";
16512
16737
  import Spinner17 from "ink-spinner";
16513
16738
  import { useEffect as useEffect12, useReducer as useReducer10 } from "react";
@@ -16580,6 +16805,7 @@ var X402StatusView = ({
16580
16805
  };
16581
16806
 
16582
16807
  // src/commands/x402/supported.tsx
16808
+ init_define_SKILL_BODIES();
16583
16809
  import { Box as Box22, Text as Text23 } from "ink";
16584
16810
  import Spinner18 from "ink-spinner";
16585
16811
  import { useCallback as useCallback9 } from "react";
@@ -17024,7 +17250,7 @@ function createX402Cli(inflow2, authStorage2, apiBaseUrl2) {
17024
17250
  }
17025
17251
  });
17026
17252
  cli2.command("inspect", {
17027
- description: "Show the seller's PAYMENT-REQUIRED accepts for a URL. Read-only probe \u2014 no auth, no payment.",
17253
+ description: "Show the seller's PAYMENT-REQUIRED accepts for a URL. Read-only probe - no auth, no payment.",
17028
17254
  args: inspectArgs3,
17029
17255
  options: inspectOptions3,
17030
17256
  outputPolicy: "agent-only",
@@ -17036,6 +17262,7 @@ function createX402Cli(inflow2, authStorage2, apiBaseUrl2) {
17036
17262
  }
17037
17263
 
17038
17264
  // src/utils/update-probe.ts
17265
+ init_define_SKILL_BODIES();
17039
17266
  import process8 from "process";
17040
17267
  import updateNotifier from "update-notifier";
17041
17268
  var FRESH_TTL_MS = 60 * 60 * 1e3;
@@ -17103,14 +17330,42 @@ function formatUpdateNotice(info) {
17103
17330
  }
17104
17331
 
17105
17332
  // src/cli.tsx
17106
- var cliVersion = "0.6.6";
17333
+ var cliVersion = "0.7.0";
17107
17334
  var cliName = "@inflowpayai/inflow";
17108
- var skillBody = '# Agentic Payments\n\nPay HTTP 402-protected resources on the user\'s behalf. InFlow speaks two payment protocols \u2014 **MPP** and **x402** \u2014 but the flow is the same for both: shared setup (install, run, authenticate), then a **router** that picks the protocol from the seller\'s 402 header, then one **Paying a 402 resource** section that covers both. A per-protocol **delta table** at the top of that section lists the handful of real differences (header name, credential name, filters, error codes); read your row, then follow the shared steps.\n\n## Installing\n\nInstall with `npm install -g @inflowpayai/inflow`. Or run directly with `npx @inflowpayai/inflow`.\n\n## Running\n\nInFlow runs as a **standalone CLI** or an **MCP server**.\n\n**MCP**: add an `inflow` server to your MCP client config that runs `npx -y @inflowpayai/inflow --mcp`. Keep the `-y` flag \u2014 it suppresses npx\'s confirmation prompt, without which the MCP host can stall on first run.\n\n**MCP mode** exposes every CLI command as a tool. Call `tools/list` on the MCP server for the authoritative inventory; arguments mirror the CLI flags one-to-one.\n\n### Common commands / options\n\n**The CLI is the source of truth for exact flags, enums, and output shapes** \u2014 run `inflow <command> --schema` for one command, or `inflow --llms-full` for everything. This playbook covers *when and why*, not exhaustive parameter lists; when you need a precise flag name, value set, or response shape, query the CLI rather than guessing.\n\n- `inflow --llms` (or `--llms-full` for parameter detail) \u2014 discover all commands. `inflow <command> --schema` for a single command\'s JSON Schema.\n- `inflow --skill` \u2014 print this playbook (no frontmatter) to stdout. Use it to paste into the system-prompt field of an MCP host that doesn\'t natively load skills: `inflow --skill | pbcopy`.\n- Default output is `toon`. Override with `--format <fmt>`; for programmatic parsing prefer `json` (single document) or `jsonl` (line-delimited).\n- Multi-step flows return `_next.command` \u2014 run it to continue.\n- `--auth <path>` overrides the credentials file location.\n- `--api-key <key>` or `INFLOW_API_KEY=<key>` is an alternative to device-flow auth.\n\n## Authenticate\n\nAuthentication is shared by both protocols \u2014 do it once, before either payment flow. **Don\'t start a payment until the user is authenticated.**\n\nCheck the current state first \u2014 the user may already be logged in:\n\n```bash\ninflow auth status\n```\n\nA successful `auth status` returns `authenticated: true` plus `auth_method` (`device_token` or `api_key`), a truncated `access_token` preview (never the full token), `credentials_path`, `connection`, and possibly an `update` field. For the user\'s identity (email, handle, account id), call `inflow user get` \u2014 `auth status` deliberately omits it. Run the command to see the full shape.\n\nIf the response includes an `update` field, a newer version of `inflow` is published.\n\n**Surface and defer.** Tell the user a newer version is available and how to upgrade \u2014 `npm install -g @inflowpayai/inflow@latest` (or `npx @inflowpayai/inflow@latest`). Then **proceed with the current version**. Only block on the upgrade if a subsequent command fails with `VERSION_UNSUPPORTED` (or an HTTP 426 from the API), at which point the upgrade is mandatory and you should not retry until it lands.\n\nIf `authenticated` is `false`, start the device flow:\n\n```bash\ninflow auth login --client-name "<your-agent-name>"\n```\n\nReplace `<your-agent-name>` with the name of your agent or application (for example `"Personal Assistant"`, `"Shopping Bot"`). The device-authorization page in the user\'s browser displays this name when they approve the connection. Use a clear, unique, identifiable name.\n\nThe response includes a `verification_url` (present this to the user), a `phrase`, and a `_next.command`. Run that command immediately to poll until authenticated. **Do not wait for the user to respond before starting the poll.**\n\nIf your environment can\'t relay the verification phrase to the user while a separate polling command blocks I/O, use inline polling instead:\n\n```bash\ninflow auth login --client-name "<name>" --interval 5 --timeout 300\n```\n\n**API key alternative:** if the user provides an API key, set `INFLOW_API_KEY=<key>` in the environment (or pass `--api-key <key>` to any command) instead of running `auth login`. The API key takes precedence over a saved device token.\n\n## Which protocol? \u2014 start here\n\nBefore paying, decide which protocol the resource uses. **You do not choose it \u2014 the seller\'s 402 challenge decides.** Run one read-only, no-auth command and let it detect both:\n\n```bash\ninflow inspect <url>\n```\n\n`inflow inspect` probes the URL **once** and decodes both MPP and x402 challenges from the same 402. Read its `detected` array to pick the pay rail:\n\n| `detected` | Pay with |\n| --- | --- |\n| `["mpp"]` | `inflow mpp pay <url>` |\n| `["x402"]` | `inflow x402 pay <url>` |\n| `["mpp", "x402"]` | `inflow mpp pay <url>` \u2014 **MPP wins when both are present** |\n| `[]` (seller still returned 402) | Not InFlow-payable on this account. Stop and tell the user; check `warnings` for why. |\n\nIf `inspect` returns `outcome: "no-payment-required"`, the URL isn\'t paywalled \u2014 there\'s nothing to pay.\n\n---\n\n## Paying a 402 resource\n\nOne flow for both protocols. Prerequisite: you are authenticated (see [Authenticate](#authenticate)). First find your protocol\'s row in the **Protocol deltas** table below \u2014 it names the 402 header that selected it, the matching model, the filter flags, and the credential and replay header you\'ll use. Everything else in this section applies to both protocols.\n\n**Sequencing.** Run pre-flight before pay \u2014 `pay` fails or double-charges if the pre-flight checks didn\'t clear. `inspect` and `decode` are read-only and need no auth, so they may run before you authenticate if useful (e.g. sizing up a paywall first).\n\n### Protocol deltas\n\n| Aspect | MPP | x402 |\n| --- | --- | --- |\n| Selected when the 402 carries | `WWW-Authenticate: Payment` | `PAYMENT-REQUIRED` (and no `WWW-Authenticate: Payment`) |\n| Command prefix | `inflow mpp \u2026` | `inflow x402 \u2026` |\n| Matching model | The seller\'s challenge **pins the rail** \u2014 the buyer does not choose scheme/network/asset | Pay where the x402 `accepts` \u2229 `supported.kinds` is non-empty |\n| Filter flags | `--payment-method`, `--intent`, `--currency`, `--rail`, `--instrument-id` | `--scheme`, `--network`, `--asset`, `--asset-name` |\n| Credential field (after approval) | `credential` (from `mpp status` when `state` is `ready`) | `encoded_payload` (from `x402 status` after approval) |\n| Replay header | `Authorization: Payment <credential>` | `PAYMENT-SIGNATURE: <encoded_payload>` |\n| Write-credential-to-disk flag | `--credential-file <path>` | `--payload-file <path>` |\n| Idempotency | \u2014 | `--payment-id` (see Step 2) |\n| Cancel uses | `approval_id` | `approval_id` |\n| Protocol-specific error codes | `PAYMENT_FAILED`, `PAYMENT_EXPIRED`, `PAYMENT_NOT_ACCEPTED` | `APPROVAL_TIMEOUT`, `APPROVAL_FAILED`, `APPROVAL_CANCELLED` |\n\nThroughout this section `<mpp|x402>` means "use your protocol\'s prefix." For the exact parameters and output shape of any command below, run `inflow <command> --schema`.\n\n### Step 1: Pre-flight evaluation\n\n```bash\n# 1. Parse what the seller will accept \u2014 read-only, no auth (both protocols in one probe)\ninflow inspect <url>\n\n# (Already have the raw 402 header from a prior response? Decode it directly instead of re-probing:)\ninflow <mpp|x402> decode \'<402 header value>\'\n\n# 2. List what the buyer\'s account can pay with (use the protocol from `detected`)\ninflow <mpp|x402> supported\n\n# 3. Check balances for the candidate currency/asset(s)\ninflow balances list\n```\n\n`inflow inspect` returns what the seller accepts under its `mpp` and `x402` keys \u2014 the price is each challenge\'s `amount` field (raw atomic units for x402; the asset is the on-chain contract address, not a symbol). `decode` parses a single raw header you already hold (and also accepts a base64url credential / receipt). `supported` returns what the account can pay with; `balances list` returns `available` per currency. Run the commands to see the exact shapes.\n\nDecide whether you can pay (apply your protocol\'s matching model from the delta table):\n\n| Condition | Meaning | Action |\n| --- | --- | --- |\n| No payable match between the seller and the buyer\'s `supported` methods | No payable rail | Stop \u2192 `NO_INFLOW_MATCH`. Tell the user the seller\'s rails aren\'t supported by their account. |\n| A match exists, but `balances.available < amount` for every match | Right rail, not enough funds | Stop \u2192 run `inflow deposit-addresses list`, surface the address(es) in full, ask the user to fund a matching network. |\n| A match exists **and** \u22651 match has `balances.available \u2265 amount` | Payable | Proceed to Step 2. |\n\n**Optional filters** narrow *which* offer to fulfil \u2014 optional, AND-combined, applied on `pay`, and an empty result fails with `NO_FILTERED_MATCH` (it does not fall through to a default order). One non-obvious case: MPP\'s `--instrument-id` picks *how* to fund (an instrument-rail / fiat challenge), not which challenge. For the exact filter flags and accepted values per protocol, run `inflow <mpp|x402> pay --schema`.\n\n**Decimal precision.** `balances.available` and the challenge/`amount` value are decimal strings preserving BigDecimal precision. **Never parse them to a JS `Number`** \u2014 that drops precision. Compare as strings, or use a `BigInt` / `decimal.js`-style library.\n\n### Step 2: Pay\n\nBefore initiating the call, summarize the intent to the user in chat: amount, currency, resource URL, and the method/rail (MPP) or scheme/network (x402). The user verifies the canonical details on the approval screen; the chat summary is what they read first. Example:\n\n> "I\'m about to pay 0.10 USDC to api.foo.dev for /dataset.csv. Requesting approval next."\n\n**Fast path (recommended).** When the agent can block until the payment finishes, set `--interval N` and let the CLI run the whole flow in one call \u2014 probe, decode, prepare, await approval, replay against the seller, return the body:\n\n```bash\ninflow <mpp|x402> pay <url> --interval 5 --max-attempts 180\n```\n\nThe result includes `outcome`, `transaction_id`, `response_status`, `settled`, the seller body inline (or `output_saved_to` if `--output-file` is set), and the now-consumed credential (`credential` for MPP, `encoded_payload` for x402). On the fast path the CLI has already replayed that credential to fetch the body \u2014 it appears in the result for reference only; **do not replay it yourself.** To surface `approval_url` *before* the call returns, add `--format jsonl` \u2014 frames stream line-by-line. With the default `json` (or `toon`), the agent only sees the final buffered result.\n\n**`outcome` values.** A completed `pay` returns one of three terminal outcomes \u2014 branch on it, don\'t assume `paid`:\n\n| `outcome` | Meaning | What to do |\n| --- | --- | --- |\n| `paid` | Settled and the seller returned 2xx | Deliver the body to the user |\n| `no-payment-required` | The resource wasn\'t paywalled, or was already paid | Tell the user nothing was charged; return the body |\n| `replay-rejected` | Payment was approved (funds in transit) but the seller replied non-2xx on the replay | Do NOT report success. Tell the user the seller\'s response failed; because the payment didn\'t complete, the in-transit funds are reverted to their InFlow balance. Offer to retry |\n\n**Two-step path.** Use this when the agent\'s host can\'t block I/O long enough for the user to approve (chat UIs that yield between turns). Drop `--interval`; the first call returns `transaction_id` + `approval_id` + `approval_url` + a `_next` `status` command, and the agent drives the replay itself once a credential arrives.\n\n```bash\ninflow <mpp|x402> pay <url>\n# -> { "transaction_id": "txn_abc", "approval_id": "appr_xyz", "approval_url": "https://app.inflowpay.ai/approvals/appr_xyz", "_next": { "command": "<mpp|x402> status txn_abc --interval 5 --max-attempts 180" } }\n```\n\nMind the two distinct ids: poll, replay, and resume all use `transaction_id`; **cancel uses `approval_id`** (`inflow <mpp|x402> cancel <approval_id>`). Both are returned by `pay`.\n\nFor non-GET requests, pass `--method`, `--data`, `--header` (repeatable):\n\n```bash\ninflow <mpp|x402> pay https://seller.example.com/api/widgets --method POST --data \'{"sku":"widget-1"}\' --header "X-Custom: value" --interval 5 --max-attempts 180\n```\n\n**Idempotency (x402 only).** Set `--payment-id <id>` whenever a retry on transport failure is possible \u2014 the server treats two requests with the same id as the same logical payment, so a retry after a network blip won\'t double-charge. Use a stable random opaque value generated once per intent; reuse the same id on transport retry; regenerate only when the user explicitly wants a fresh charge. Don\'t tie the id to wall-clock time \u2014 a date-based id silently double-charges on next-day "buy this again" requests. Without `--payment-id`, the server generates one each call \u2014 fine for one-shots, unsafe for retries. (Format constraints: `inflow x402 pay --schema`.)\n\n```bash\ninflow x402 pay <url> --payment-id "<stable-opaque-id>"\n```\n\n**Sensitive / binary output.** The one-time bearer credential (`credential` for MPP, `encoded_payload` for x402; returned after approval and echoed in the fast-path result) must not be echoed back in chat. Write it to disk at mode `0o600` with your protocol\'s flag (`--credential-file <path>` for MPP, `--payload-file <path>` for x402); replay then reads from that file. For the seller\'s response body, `--output-file <path>` writes bytes to disk and replaces `body` / `body_base64` with `output_saved_to: <path>` \u2014 pair with `--no-show-body` for binary content (PDFs, images, audio, datasets) so bytes never appear inline as base64:\n\n```bash\ninflow <mpp|x402> pay https://api.foo.dev/dataset.csv --interval 5 --max-attempts 180 --output-file /tmp/dataset.csv --no-show-body\n```\n\n**Polling discipline.** Persist `transaction_id` as soon as `pay` returns it. Then:\n\n- Run `_next.command` (or `<mpp|x402> status <transaction_id> --interval N`) immediately. Don\'t wait for the user to confirm before polling starts.\n- If polling is interrupted \u2014 network drop, session bounce, user kills the agent \u2014 resume with `inflow <mpp|x402> status <transaction_id> --interval 5 --max-attempts 180`. Only create a new transaction if the original expired (`PAYMENT_EXPIRED` for MPP, `APPROVAL_TIMEOUT` for x402), was denied/cancelled, or its credential is already consumed.\n- If `POLLING_TIMEOUT` fires before approval, ask the user whether to keep waiting or cancel \u2014 don\'t silently restart the poll.\n- If >12 minutes elapsed without a user response (\u22483 min before the 15-minute approval window closes), surface that explicitly so they can act before the window closes.\n- If the user aborts ("nevermind", "cancel that"), call `inflow <mpp|x402> cancel <approval_id>` before exiting. Otherwise the approval sits pending for 15 minutes and triggers phantom notifications in the user\'s InFlow app.\n\nOnce `status` reports the credential (MPP: `state: ready` with `credential`; x402: `encoded_payload`), replay the original seller request with your protocol\'s replay header from the delta table \u2014 `Authorization: Payment <credential>` (MPP) or `PAYMENT-SIGNATURE: <encoded_payload>` (x402); use `$(cat <file>)` if you wrote it to disk with `--credential-file` / `--payload-file`. The seller\'s protected response comes back on the replay.\n\n### Limits\n\n| Limit | Value |\n| --- | --- |\n| Approval window | 15 minutes from `pay` creating the transaction (`--timeout` overrides the polling deadline) |\n| Polling stop condition | Polling ends at whichever fires first: `--max-attempts` (count, default `0` = unlimited) or `--timeout` (seconds, default `900` = the full 15-min window). The examples use `--interval 5 --max-attempts 180` (= 900 s) so a copied command covers the whole window \u2014 `--interval 5 --max-attempts 60` (= 300 s) would stop polling at 5 min, well before approval can land |\n| Credential reuse | One-time. The credential (`credential` for MPP, `encoded_payload` for x402) is consumed by the first seller replay \u2014 not reusable; a failed seller call requires a new `pay` |\n\n### Worked example (MPP)\n\nA user asks the agent to fetch a paywalled dataset at `https://api.foo.dev/dataset.csv`.\n\nPre-flight: `inflow inspect <url>` reports `detected: ["mpp"]` with the seller\'s challenges; then `inflow mpp supported` (methods the buyer can pay with) and `inflow balances list`. The seller offers the `inflow` method in USDC; the user\'s 100.5 USDC balance covers the 0.10 USDC price. Summarize intent, then pay:\n\n```bash\ninflow mpp pay https://api.foo.dev/dataset.csv --interval 5 --max-attempts 180 --output-file /tmp/dataset.csv --no-show-body\n# Persist transaction_id from the response in case polling is interrupted.\n# Returns outcome "paid" with output_saved_to /tmp/dataset.csv.\n```\n\n> "Approval requested \u2014 confirm in the InFlow app: https://app.inflowpay.ai/approvals/appr_xyz\n> I\'ll keep polling. 15-min window."\n\nOnce the result arrives:\n\n> "Paid 0.10 USDC. Transaction txn_abc. Saved the dataset to /tmp/dataset.csv."\n\n**Two-step variant** (host can\'t block): follow Step 2\'s two-step path; once `mpp status` reports `state: ready`, replay with `Authorization: Payment <credential>` (or `$(cat <path>)` via `--credential-file` to keep it out of chat).\n\n### Worked example (x402)\n\nA user asks the agent to fetch a paywalled article at `https://api.foo.dev/article-3`.\n\nPre-flight: `inflow inspect <url>` reports `detected: ["x402"]`; the intersection lands on `exact` \xD7 `solana:mainnet`, and the user\'s 100.5 USDC balance easily covers the 0.10 USDC the seller requires. Proceed.\n\n> "I\'m about to pay 0.10 USDC on Solana mainnet to api.foo.dev for /article-3.\n> Your balance is 100.5 USDC \u2014 plenty. Requesting approval next."\n\n```bash\ninflow x402 pay https://api.foo.dev/article-3 --payment-id "<stable-opaque-id>" --interval 5 --max-attempts 180\n# Persist transaction_id from the response in case polling gets interrupted.\n# Returns outcome "paid"; body contains the article JSON.\n```\n\n> "Approval requested \u2014 confirm in the InFlow app: https://app.inflowpay.ai/approvals/appr_xyz\n> I\'ll keep polling. 15-min window."\n\nOnce the result arrives:\n\n> "Paid 0.10 USDC. Transaction txn_abc. Server returned: \'How to brew coffee \u2014 ...\'"\n\n**Two-step variant** (host can\'t block): follow Step 2\'s two-step path; once `x402 status` returns the `encoded_payload`, replay with `PAYMENT-SIGNATURE: <encoded_payload>` (use `--payload-file` to keep it out of chat).\n\n### MPP errors\n\nAll errors in agent mode are JSON with `code` and `message` fields and exit code 1. MPP-specific codes (shared codes are in [\xA7 Shared errors](#shared-errors)). "What to tell the user" is the prompt to surface \u2014 don\'t dump the raw error:\n\n| Error code | Recovery | What to tell the user |\n| --- | --- | --- |\n| `PAYMENT_FAILED` | `inflow mpp status <transaction_id>` for the precise state, then create a new transaction with `inflow mpp pay`. (Terminal `failed` state, or no credential produced.) | "The payment didn\'t go through \u2014 it was declined, underfunded, or the transaction failed. Want me to try again, switch funding, or stop?" |\n| `PAYMENT_EXPIRED` | Start a new `inflow mpp pay`. | "The payment window expired before it was ready to settle. Want me to start a new one, or stop here?" |\n| `PAYMENT_NOT_ACCEPTED` | `inflow inspect <url>` to re-check the challenge; adjust and retry. | \u2014 |\n\n### x402 errors\n\nAll errors in agent mode are JSON with `code` and `message` fields and exit code 1. x402-specific codes (shared codes are in [\xA7 Shared errors](#shared-errors)). "What to tell the user" is the prompt to surface \u2014 don\'t dump the raw error:\n\n| Error code | Recovery | What to tell the user |\n| --- | --- | --- |\n| `APPROVAL_TIMEOUT` | `inflow x402 status <transaction_id>` for the precise reason, then create a new transaction. | "You didn\'t approve within 15 minutes, so the request expired. Want me to start a new payment, or stop here?" |\n| `APPROVAL_FAILED` | Same recovery as `APPROVAL_TIMEOUT` (declined / insufficient funds in the matched asset / generic). | "Approval didn\'t go through (declined or insufficient funds in the matched asset). Want me to try a different funding source, top up, or stop?" |\n| `APPROVAL_CANCELLED` | Same recovery (cancelled via `x402 cancel` or server-side). | "You cancelled the approval. Stopping here unless you want to start a new payment." |\n| `INVALID_PAYMENT_ID` | `--payment-id` violated the format (see `inflow x402 pay --schema`). Adjust or omit the payment id. | \u2014 |\n\n---\n\n## Security & data handling\n\nApplies to both protocols.\n\n- Treat OAuth tokens and API keys as secrets \u2014 never echo them. The one-time bearer credential (`encoded_payload` for x402, `credential` for MPP) returned after approval should be replayed directly against the seller and discarded, not pasted back to the user.\n- Respect `/agents.txt` and `/llm.txt` on sites you browse.\n- Avoid suspicious 402 endpoints \u2014 if the domain doesn\'t match what the user asked to pay, or the price is different from expectation, stop and ask.\n- When displaying deposit addresses to the user, print the full address (don\'t truncate). Truncating breaks copy-paste.\n\n## Shared errors\n\nThese apply to both protocols (in addition to each section\'s protocol-specific codes). All are JSON with `code` and `message` and exit code 1. Where a command is protocol-specific, use your prefix (`<mpp|x402>`). "What to tell the user" is the prompt to surface \u2014 don\'t dump the raw error:\n\n| Error code | Recovery | What to tell the user |\n| --- | --- | --- |\n| `NOT_AUTHENTICATED` | No saved device token and no `--api-key` / `INFLOW_API_KEY` configured. Run `inflow auth login` or set the API key env var. | \u2014 |\n| `NO_INFLOW_MATCH` | Seller\'s rails aren\'t supported by the account. Fund a matching method/chain, or use a different seller. | "The seller wants `<method/rail or scheme\xD7network>`, but your account can\'t pay on that rail. Either fund a matching method, or pick a different seller." |\n| `NO_FILTERED_MATCH` | A `pay` filter emptied the candidate list. Loosen the filter (flags per the delta table), or re-check the seller\'s unfiltered options with `inflow inspect <url>`. | "Your filter removed every option the seller accepts. Loosen it or re-check the seller\'s options with `inflow inspect`." |\n| `INVALID_402` / `DECODE_FAILED` | Seller returned 402 but the protocol\'s header was missing (`INVALID_402`) or unparseable (`DECODE_FAILED`). Verify the URL is payable; pass the raw header to `inflow <mpp|x402> decode` for the detailed parse error. | \u2014 |\n| `POLLING_TIMEOUT` | `--interval` polling reached its max-attempts or timeout. Retryable \u2014 resume with `inflow <mpp|x402> status <transaction_id> --interval 5 --max-attempts 180`. | "Still waiting on your approval \u2014 want me to keep polling, or cancel the request? (`inflow <mpp|x402> cancel <approval_id>` cancels it.)" |\n| `api_error` | Non-2xx from the InFlow API on the plain data calls (`user`, `balances`, `deposit-addresses`); discriminate on `httpStatus`. `401` \u2014 saved auth rejected, re-run `inflow auth login`. `426` (`VERSION_UNSUPPORTED`) \u2014 upgrade and retry. `5xx` \u2014 server-side; wait and retry. (Note: `pay`/`status` rejections instead surface the server\'s own code, e.g. `INSUFFICIENT_FUNDS`, or the protocol\'s terminal code \u2014 not `api_error`.) | \u2014 |\n| `VERSION_UNSUPPORTED` / HTTP 426 | Installed `inflow` CLI is below the minimum supported version. `npm install -g @inflowpayai/inflow@latest`, then retry; don\'t retry on the old version. | \u2014 |\n| `transport_error` | Network failure \u2014 check connectivity; retry. | \u2014 |\n\n## Out of scope\n\nThis skill covers programmatic HTTP 402 payments (MPP and x402) only. It does NOT handle:\n\n- **Traditional merchant checkouts** No PANs (credit card forms, hosted checkouts).\n- **Card issuance** or wallet management beyond `balances list` and `deposit-addresses list`.\n- **Refunds, disputes, chargebacks** \u2014 handled out of band via support.\n- **Peer-to-peer transfers** between users or wallets.\n- **FX / currency conversion.** Buyer logic matches the seller\'s accepted rails against the account\'s supported assets.\n- **Subscriptions / recurring payments.** Each `pay` is one-shot.\n\nFor any of the above, point the user to https://app.inflowpay.ai or support.\n\n## Further docs\n\n- MPP protocol: https://mpp.dev\n- x402 protocol: https://x402.org\n- InFlow: https://app.inflowpay.ai\n';
17109
- if (process9.argv.includes("--skill")) {
17110
- process9.stdout.write(skillBody.endsWith("\n") ? skillBody : `${skillBody}
17335
+ var bootstrapBody = '# InFlow - Agent Setup\n\n> Served at https://inflowcli.ai/skill.md - the onboarding entry point for AI agents. InFlow gives your agent a wallet\n> to register, access, and pay for services autonomously across fiat and stablecoins, over MPP and x402.\n\nYou are an AI agent whose user asked to get set up with InFlow. Follow these steps.\n\n## 1. Install\n\nRequires Node.js >= 22.\n\nmacOS / Linux:\n\n```bash\ncurl -fsSL https://inflowcli.ai/cli | bash\n```\n\nWindows:\n\n```powershell\niwr -useb https://inflowcli.ai/install.ps1 | iex\n```\n\nOr install with npm directly: `npm install -g @inflowpayai/inflow`. Or skip installing and run every command through\n`npx -y @inflowpayai/inflow`.\n\nRunning as an MCP server? Add an `inflow` server to your MCP client config that runs `npx -y @inflowpayai/inflow --mcp`\n(keep `-y`; without it the host can stall on first run).\n\n## 2. Authenticate\n\nCheck the current state first - the user may already be logged in:\n\n```bash\ninflow auth status\n```\n\nIf the response includes an `update` field, tell the user a newer version is available and how to upgrade\n(`npm install -g @inflowpayai/inflow@latest`), then proceed with the current version.\n\nIf `authenticated` is `false`, start the OAuth device flow:\n\n```bash\ninflow auth login --client-name "<your-agent-name>"\n```\n\nReplace `<your-agent-name>` with a clear, unique, identifiable name for your agent - the user sees it on the approval\npage in their browser. The response includes a `verification_url` (present it to the user), a `phrase`, and a\n`_next.command` - run that command immediately to poll until authenticated; do not wait for the user to respond before\nstarting the poll. If your environment can\'t relay the phrase while a polling command blocks I/O, use inline polling\ninstead:\n\n```bash\ninflow auth login --client-name "<name>" --interval 5 --timeout 300\n```\n\nConfirm with `inflow auth status` before proceeding.\n\n## 3. Load the playbook for your task\n\nSetup alone is not enough. Before performing a task with InFlow, load and follow its playbook:\n\n| Task | Playbook |\n| --------------------------------------------- | ------------------------------------------------------------------------------ |\n| Pay HTTP 402-protected resources (MPP / x402) | run `inflow --skill`, or fetch https://inflowcli.ai/skills/agentic-payments.md |\n\nPrefer `inflow --skill` - it always matches the version you are running. The web copy reflects the latest release;\ncompare its `version:` header against `inflow --version`.\n\nThe CLI is self-describing - prefer querying it over static docs: `inflow --llms` (command index), `inflow --llms-full`\n(parameter detail), `inflow <command> --schema` (JSON Schema for one command).\n\n## Links\n\n- Command index: https://inflowcli.ai/llms.txt (full reference: https://inflowcli.ai/llms-full.txt)\n- Source: https://github.com/inflowpayai/inflow-cli\n- Web app: https://app.inflowpay.ai\n- MPP protocol: https://mpp.dev\n- x402 protocol: https://x402.org\n- Contact: info@inflowpay.ai\n';
17336
+ var skillBodies = define_SKILL_BODIES_default;
17337
+ var DEFAULT_SKILL = "agentic-payments";
17338
+ Help.registerGlobalFlags([
17339
+ { flag: "--bootstrap", desc: "Print the agent setup guide (install, authenticate, load a playbook)" },
17340
+ { flag: "--skill [name]", desc: `Print a skill playbook (default: ${DEFAULT_SKILL})` }
17341
+ ]);
17342
+ function printBody(body) {
17343
+ process9.stdout.write(body.endsWith("\n") ? body : `${body}
17111
17344
  `);
17112
17345
  process9.exit(0);
17113
17346
  }
17347
+ if (process9.argv.includes("--bootstrap")) {
17348
+ printBody(bootstrapBody);
17349
+ }
17350
+ var skillFlagIndex = process9.argv.findIndex((arg) => arg === "--skill" || arg.startsWith("--skill="));
17351
+ if (skillFlagIndex !== -1) {
17352
+ const flagArg = process9.argv[skillFlagIndex];
17353
+ let name;
17354
+ if (flagArg.startsWith("--skill=")) {
17355
+ const value = flagArg.slice("--skill=".length);
17356
+ name = value.length > 0 ? value : DEFAULT_SKILL;
17357
+ } else {
17358
+ const next = process9.argv[skillFlagIndex + 1];
17359
+ name = next !== void 0 && !next.startsWith("-") ? next : DEFAULT_SKILL;
17360
+ }
17361
+ const body = skillBodies[name];
17362
+ if (body === void 0) {
17363
+ process9.stderr.write(`Unknown skill '${name}'. Available: ${Object.keys(skillBodies).sort().join(", ")}
17364
+ `);
17365
+ process9.exit(1);
17366
+ }
17367
+ printBody(body);
17368
+ }
17114
17369
  var CLI_CLIENT_IDS = {
17115
17370
  production: "1f4ccbcbddce500e19b37fa0877ba032",
17116
17371
  sandbox: "19ba1cd46402cf2695c3056da0ac03ab"
@@ -17214,7 +17469,7 @@ Received ${signal}; exiting.
17214
17469
  process9.on("SIGTERM", onSignal);
17215
17470
  }
17216
17471
  var cli = Cli7.create("inflow", {
17217
- description: "InFlow \u2014 agentic MPP / x402 payments from your machine.",
17472
+ description: "InFlow - agentic MPP / x402 payments from your machine.",
17218
17473
  version: cliVersion
17219
17474
  });
17220
17475
  var backgroundUpdateProbe = makeBackgroundUpdateProbe(cliName, cliVersion);