@finchtech/cli 0.3.1 → 0.3.2
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.
- package/README.md +102 -67
- package/dist/finch.js +1415 -1230
- package/package.json +51 -50
package/README.md
CHANGED
|
@@ -1,67 +1,102 @@
|
|
|
1
|
-
# Finch Agent CLI
|
|
2
|
-
|
|
3
|
-
Install the public npm package with `npm install -g @finchtech/cli`, then run `finch --help`. The primary executable is `finch`; `finchtech` is an equivalent fallback for machines where another application already owns the `finch` command.
|
|
4
|
-
|
|
5
|
-
The Finch Agent CLI stores wallet keys, AgentCLI Session bearers, and MCP grant bearers only in an owner-only `FINCHTECH_HOME`, which defaults to `~/.finchtech`; secrets are never accepted as command arguments or emitted to stdout.
|
|
6
|
-
|
|
7
|
-
`finch logout` revokes Account-bound remote authority before removing local Session and grant state. If invalid, corrupt, or legacy Session metadata prevents that flow, `finch logout --local` performs an explicit offline reset of only `session/` and `grants/`. It makes no network request and reports `remoteRevoked: false`; it remains available while an irreversible recovery is pending and preserves profiles, registered wallets, transaction journals, and recovery records so the user can log in again and run the recorded recovery command. Ordinary logout and wallet switching remain blocked until that recovery completes.
|
|
8
|
-
|
|
9
|
-
CLI-authored EVM addresses accept canonical lowercase or valid EIP-55 input and are normalized to lowercase before request validation and transport. Invalid mixed-case and uppercase forms are rejected. Remote responses and Remote MCP plans remain strictly lowercase so normalization cannot change signed or hashed plan bytes.
|
|
10
|
-
|
|
11
|
-
Valid remote Identity, Agent, Task, Skill, and OAuth errors are emitted in their original domain envelope with the remote trace ID. Local transport failures use `CLI_REMOTE_UNAVAILABLE`; malformed or contract-invalid responses use `CLI_RESPONSE_INVALID`. Locally synthesized failures use a null trace ID rather than impersonating a server trace.
|
|
12
|
-
|
|
13
|
-
The command groups are `wallet`, `login/status/logout`, `site`, `mcp doctor`, `mcp authorize`, `mcp grant`, `creator`, `credentials`, `intent`, `operation show`, `purchase`, `task`, and `skill`. Run `finch --help` for the exact command list as one JSON value.
|
|
14
|
-
|
|
15
|
-
`finch site open` creates a sixty-second one-use handoff from the active AgentCLI Session and opens the exact configured Finch origin in the local default Browser. `finch site login <REQUEST_URL>` binds a website-created five-minute request once, then opens the same confirmation page. Both commands require the wallet, CLI, and graphical Browser on the user's machine. A launch failure returns `BROWSER_OPEN_FAILED` without printing the secret completion URL. The Browser receives only a normal seven-day Finch Web Session; wallet signing, broadcast, and market confirmation remain local CLI actions.
|
|
16
|
-
|
|
17
|
-
`finch mcp doctor` is read-only. It verifies that the active CLI authority, AgentCLI Session, local wallet, MCP challenge, OAuth metadata, and source-controlled persistent-Harness manifest agree. The Agent Harness owns Remote MCP configuration, OAuth credentials, and refresh; the CLI does not configure or launch Codex and never reads Harness OAuth material. During the Harness's native OAuth flow, the authorization page supplies an exact `finch mcp authorize <REQUEST_TOKEN>` command. The versioned base64url token carries the original OAuth request without shell metacharacters so Windows package-manager and Volta launchers cannot split it; the CLI decodes it before applying the existing origin, callback, state, and scope checks. That command uses only the active local AgentCLI Session and opens the verified callback without returning its one-use code. It never uses a Browser Session, Social account, or extension wallet as Agent authority. Configure `https://www.finchtech.ai/mcp` once through the Harness, then use MCP `identity_actor_get` together with `finch status` to verify exact Account and wallet alignment before custody. The server-reported environment is diagnostic and never selects the CLI endpoint or a transaction chain.
|
|
18
|
-
|
|
19
|
-
Ordinary installs require no profile file or environment selection. Network commands default to the PROD endpoint at `https://www.finchtech.ai`. An internal TEST installation may provide one strict owner-only `{ "version": 1, "origin": "..." }` profile override; it cannot configure an environment, chain, contract, or RPC. `finch login --chain-id <CHAIN_ID>` explicitly selects only the authentication chain, which the selected server must support. Market transaction chains come from Remote MCP/API plans and are independent of the login chain. `intent approve` signs only the shared publication-v2 or Local-purchase-v1 EIP-712 authorization; it cannot sign arbitrary transaction calldata.
|
|
20
|
-
|
|
21
|
-
`operation show` and signing-decision recovery require an active, unexpired MCP grant for the current account and endpoint with `agent_market:operations:read`. The CLI selects that grant from protected local state and never substitutes the AgentCLI Session bearer.
|
|
22
|
-
|
|
23
|
-
Creator commands are thin projections of the shared Agent Market merchant operations. Reads require `agent_market:merchant:read`; mutations require `agent_market:merchant:write`, a stable caller-chosen `--request-id` UUID for local idempotency recovery, and `--expected-revision` wherever the shared operation requires If-Match. Structured request bodies come from bounded JSON `--from-file` documents and are validated against the same shared schemas before HTTP.
|
|
24
|
-
|
|
25
|
-
Local AgentOn HMAC generation is not a product command. `credentials material-download <setupId> --out-file <absolute-path>` claims the AgentOn setup, downloads only its exact live lease as raw FCR1, and creates a new owner-only file; stdout contains only `keyId` and `path`. `credentials fulfill` accepts only Direct credential uploads. It accepts either an existing protected FCR1 with `--from-file <path>`, or a protected raw Bearer token with `--bearer-token-file <path> --key-id <keyId>`; the latter validates one whitespace-free token and adds the `Bearer ` prefix only in CLI memory. Secret bytes never enter argv or stdout.
|
|
26
|
-
|
|
27
|
-
`purchase transaction <operationId>` is read-only. It requires an active `agent_market:buyer:purchase` MCP grant and returns the two server-composed transaction requests plus their chain authority; it does not sign or broadcast arbitrary calldata.
|
|
28
|
-
|
|
29
|
-
`purchase submit <operationId>` requires the same grant and uses only the source-controlled public RPCs for the plan's chain. It uses the protected wallet to re-encode and submit the exact server-composed USDC approval and AgentService Vault purchase. Before signing it verifies `eth_chainId`, the reviewed chain contract authority, every transaction field, and a successful `eth_call` simulation. Every returned broadcast hash is atomically checkpointed before receipt waiting; a restart re-verifies the exact wallet, call, receipt, block, and current server authority and never re-broadcasts a known phase. Finch then verifies the canonical confirmation event and creates Call Rights. If the purchase receipt conclusively reverts, the paired zero-allowance cleanup follows the same checkpoint discipline; unknown receipts are never guessed. The RPC owns nonce selection. User RPC and environment variables are ignored, and neither RPC URLs nor wallet keys are emitted.
|
|
30
|
-
|
|
31
|
-
`purchase recover-approval <operationId> --transaction-hash <hash>` is the narrow adoption path for an approval broadcast before its durable checkpoint was written. It re-fetches the current server authority and active wallet, then verifies the exact successful approval transaction and sufficient live token allowance on the plan chain before writing one owner-only recovery journal. It never broadcasts, confirms, scans chain history, or accepts a nonce. A subsequent `purchase submit` continues with the purchase phase without approving again.
|
|
32
|
-
|
|
33
|
-
If the process exits after broadcasting the Vault purchase but before confirmation returns, recover with `purchase confirm <operationId> --transaction-hash <hash>`. This command never trusts the supplied hash: Finch fetches and decodes the canonical chain receipt before any Call Rights mutation.
|
|
34
|
-
|
|
35
|
-
Task and Skill business discovery and preparation stay in the Remote MCP server. The `task` commands only fund an exact prepared Task pool, sign exact prepared awards, or submit an exact prepared reclaim. Skill purchase, conversion, price, and supply commands submit strict MCP preparations. `skill publish-submit --path <file-or-directory> --from-file <plan>` and `skill version-submit` accept either one file or one directory, then apply the plan's independent `plaintext`, `finchip_v2`, or `lit` content mode; filtering, deterministic ZIP construction, encryption, upload, and key custody remain local. `skill asset-upload --path <cover> --from-file <plan>` uploads a separately prepared public cover, and `skill presentation-submit --from-file <plan>` publishes bounded public presentation metadata without changing protected package bytes. `skill download --from-file <delivery> --out-file <new-file>` downloads IPFS content directly or signs with the entitled local wallet for protected content, verifies the SkillRoot and every file (or the plaintext ZIP hash for historical Skills), and creates an owner-only file. Every transaction action uses its plan's chain, source-controlled public RPCs, and reviewed chain-level contract authority. The CLI recomputes transaction bytes locally and rejects mismatched chains, destinations, calldata, values, source commits, or envelope tags.
|
|
36
|
-
|
|
37
|
-
## ZIP import and SkillRoot publication
|
|
38
|
-
|
|
39
|
-
Version 0.3.1 fixes Skill search continuation: pass the returned `nextCursor` unchanged as
|
|
40
|
-
`--cursor`. Search uses the server rules; the CLI does not implement a matching algorithm.
|
|
41
|
-
Older clients receive an upgrade message from the Skill search API.
|
|
42
|
-
|
|
43
|
-
Version 0.3.0 upgrades Skill publication and encrypted delivery together. Upgrade with
|
|
44
|
-
`pnpm add -g @finchtech/cli@0.3.
|
|
45
|
-
or downloading encrypted Skills from the upgraded gateway. Older CLI versions cannot use
|
|
46
|
-
the new encrypted delivery, including for historical Skills; 0.3.0 retains historical package support.
|
|
47
|
-
|
|
48
|
-
A single `.zip` passed to `skill publish-submit --path` or `skill version-submit --path` is expanded locally before filtering and primary-document hashing; request a `file` source plan for this input. Directory inputs keep ZIP assets as ordinary files. Imports support stored/DEFLATE ZIPs up to 10 MiB compressed and expanded, with at most 1024 entries. Unsafe paths, symbolic links, encrypted ZIPs, ZIP64, conflicting entries, and corrupt content are refused. Include `SKILL.md`, `README.md`, or one unambiguous root Markdown document.
|
|
49
|
-
|
|
50
|
-
New Skills publish a DAG-CBOR SkillRoot hash in one graph bundle. Existing Skill identities keep ZIP-hash updates. New Skills require this updated CLI; it verifies every object and decrypts protected files locally into an ordinary ZIP. Historical ZIP downloads and whole-package decryption remain supported. A pending publication reuses its uploaded bytes and saved root commitment on resume.
|
|
51
|
-
|
|
52
|
-
The [publication ADR](../../docs/adr/ADR-0064-20260908-skillroot-publication.md) specifies the pinned draft, bundle/profile format, compatibility trust boundary, and rollout order.
|
|
53
|
-
|
|
54
|
-
Finch-managed and Lit downloads use Oracle V2 device-sealed grants and a non-extractable local CryptoKey.
|
|
55
|
-
The updated gateway also supports historical Finch-managed and Lit ZIPs through this delivery. It refuses
|
|
56
|
-
old bare-key buyer requests; use the updated CLI. Both providers use the same sealed delivery. See
|
|
57
|
-
[ADR-0065](../../docs/adr/ADR-0065-20260908-skill-oracle-v2-delivery.md) for deployment requirements.
|
|
58
|
-
|
|
59
|
-
Publication preparation accepts an optional `summary` (up to 500 characters). It is committed in
|
|
60
|
-
SkillRoot exactly as supplied, matching Browser publication metadata; omission means an empty summary.
|
|
61
|
-
Equal public file bytes, paths, name, summary, version and history produce equal roots. Encrypted
|
|
62
|
-
publications use random keys/IVs and need not produce the same root. Updates send the proposed
|
|
63
|
-
manifest for server validation; URI intents are prepared after the new chain binding is confirmed.
|
|
64
|
-
|
|
65
|
-
Finch-managed publication key requests use a signed timestamp and a one-time nonce. Each request is
|
|
66
|
-
valid for five minutes; retrying after expiry or a lost response requires a fresh signature. The
|
|
67
|
-
gateway rejects older CLI publication requests without timestamps. Historical downloads are unchanged.
|
|
1
|
+
# Finch Agent CLI
|
|
2
|
+
|
|
3
|
+
Install the public npm package with `npm install -g @finchtech/cli`, then run `finch --help`. The primary executable is `finch`; `finchtech` is an equivalent fallback for machines where another application already owns the `finch` command.
|
|
4
|
+
|
|
5
|
+
The Finch Agent CLI stores wallet keys, AgentCLI Session bearers, and MCP grant bearers only in an owner-only `FINCHTECH_HOME`, which defaults to `~/.finchtech`; secrets are never accepted as command arguments or emitted to stdout.
|
|
6
|
+
|
|
7
|
+
`finch logout` revokes Account-bound remote authority before removing local Session and grant state. If invalid, corrupt, or legacy Session metadata prevents that flow, `finch logout --local` performs an explicit offline reset of only `session/` and `grants/`. It makes no network request and reports `remoteRevoked: false`; it remains available while an irreversible recovery is pending and preserves profiles, registered wallets, transaction journals, and recovery records so the user can log in again and run the recorded recovery command. Ordinary logout and wallet switching remain blocked until that recovery completes.
|
|
8
|
+
|
|
9
|
+
CLI-authored EVM addresses accept canonical lowercase or valid EIP-55 input and are normalized to lowercase before request validation and transport. Invalid mixed-case and uppercase forms are rejected. Remote responses and Remote MCP plans remain strictly lowercase so normalization cannot change signed or hashed plan bytes.
|
|
10
|
+
|
|
11
|
+
Valid remote Identity, Agent, Task, Skill, and OAuth errors are emitted in their original domain envelope with the remote trace ID. Local transport failures use `CLI_REMOTE_UNAVAILABLE`; malformed or contract-invalid responses use `CLI_RESPONSE_INVALID`. Locally synthesized failures use a null trace ID rather than impersonating a server trace.
|
|
12
|
+
|
|
13
|
+
The command groups are `wallet`, `login/status/logout`, `site`, `mcp doctor`, `mcp authorize`, `mcp grant`, `creator`, `credentials`, `intent`, `operation show`, `purchase`, `task`, and `skill`. Run `finch --help` for the exact command list as one JSON value.
|
|
14
|
+
|
|
15
|
+
`finch site open` creates a sixty-second one-use handoff from the active AgentCLI Session and opens the exact configured Finch origin in the local default Browser. `finch site login <REQUEST_URL>` binds a website-created five-minute request once, then opens the same confirmation page. Both commands require the wallet, CLI, and graphical Browser on the user's machine. A launch failure returns `BROWSER_OPEN_FAILED` without printing the secret completion URL. The Browser receives only a normal seven-day Finch Web Session; wallet signing, broadcast, and market confirmation remain local CLI actions.
|
|
16
|
+
|
|
17
|
+
`finch mcp doctor` is read-only. It verifies that the active CLI authority, AgentCLI Session, local wallet, MCP challenge, OAuth metadata, and source-controlled persistent-Harness manifest agree. The Agent Harness owns Remote MCP configuration, OAuth credentials, and refresh; the CLI does not configure or launch Codex and never reads Harness OAuth material. During the Harness's native OAuth flow, the authorization page supplies an exact `finch mcp authorize <REQUEST_TOKEN>` command. The versioned base64url token carries the original OAuth request without shell metacharacters so Windows package-manager and Volta launchers cannot split it; the CLI decodes it before applying the existing origin, callback, state, and scope checks. That command uses only the active local AgentCLI Session and opens the verified callback without returning its one-use code. It never uses a Browser Session, Social account, or extension wallet as Agent authority. Configure `https://www.finchtech.ai/mcp` once through the Harness, then use MCP `identity_actor_get` together with `finch status` to verify exact Account and wallet alignment before custody. The server-reported environment is diagnostic and never selects the CLI endpoint or a transaction chain.
|
|
18
|
+
|
|
19
|
+
Ordinary installs require no profile file or environment selection. Network commands default to the PROD endpoint at `https://www.finchtech.ai`. An internal TEST installation may provide one strict owner-only `{ "version": 1, "origin": "..." }` profile override; it cannot configure an environment, chain, contract, or RPC. `finch login --chain-id <CHAIN_ID>` explicitly selects only the authentication chain, which the selected server must support. Market transaction chains come from Remote MCP/API plans and are independent of the login chain. `intent approve` signs only the shared publication-v2 or Local-purchase-v1 EIP-712 authorization; it cannot sign arbitrary transaction calldata.
|
|
20
|
+
|
|
21
|
+
`operation show` and signing-decision recovery require an active, unexpired MCP grant for the current account and endpoint with `agent_market:operations:read`. The CLI selects that grant from protected local state and never substitutes the AgentCLI Session bearer.
|
|
22
|
+
|
|
23
|
+
Creator commands are thin projections of the shared Agent Market merchant operations. Reads require `agent_market:merchant:read`; mutations require `agent_market:merchant:write`, a stable caller-chosen `--request-id` UUID for local idempotency recovery, and `--expected-revision` wherever the shared operation requires If-Match. Structured request bodies come from bounded JSON `--from-file` documents and are validated against the same shared schemas before HTTP.
|
|
24
|
+
|
|
25
|
+
Local AgentOn HMAC generation is not a product command. `credentials material-download <setupId> --out-file <absolute-path>` claims the AgentOn setup, downloads only its exact live lease as raw FCR1, and creates a new owner-only file; stdout contains only `keyId` and `path`. `credentials fulfill` accepts only Direct credential uploads. It accepts either an existing protected FCR1 with `--from-file <path>`, or a protected raw Bearer token with `--bearer-token-file <path> --key-id <keyId>`; the latter validates one whitespace-free token and adds the `Bearer ` prefix only in CLI memory. Secret bytes never enter argv or stdout.
|
|
26
|
+
|
|
27
|
+
`purchase transaction <operationId>` is read-only. It requires an active `agent_market:buyer:purchase` MCP grant and returns the two server-composed transaction requests plus their chain authority; it does not sign or broadcast arbitrary calldata.
|
|
28
|
+
|
|
29
|
+
`purchase submit <operationId>` requires the same grant and uses only the source-controlled public RPCs for the plan's chain. It uses the protected wallet to re-encode and submit the exact server-composed USDC approval and AgentService Vault purchase. Before signing it verifies `eth_chainId`, the reviewed chain contract authority, every transaction field, and a successful `eth_call` simulation. Every returned broadcast hash is atomically checkpointed before receipt waiting; a restart re-verifies the exact wallet, call, receipt, block, and current server authority and never re-broadcasts a known phase. Finch then verifies the canonical confirmation event and creates Call Rights. If the purchase receipt conclusively reverts, the paired zero-allowance cleanup follows the same checkpoint discipline; unknown receipts are never guessed. The RPC owns nonce selection. User RPC and environment variables are ignored, and neither RPC URLs nor wallet keys are emitted.
|
|
30
|
+
|
|
31
|
+
`purchase recover-approval <operationId> --transaction-hash <hash>` is the narrow adoption path for an approval broadcast before its durable checkpoint was written. It re-fetches the current server authority and active wallet, then verifies the exact successful approval transaction and sufficient live token allowance on the plan chain before writing one owner-only recovery journal. It never broadcasts, confirms, scans chain history, or accepts a nonce. A subsequent `purchase submit` continues with the purchase phase without approving again.
|
|
32
|
+
|
|
33
|
+
If the process exits after broadcasting the Vault purchase but before confirmation returns, recover with `purchase confirm <operationId> --transaction-hash <hash>`. This command never trusts the supplied hash: Finch fetches and decodes the canonical chain receipt before any Call Rights mutation.
|
|
34
|
+
|
|
35
|
+
Task and Skill business discovery and preparation stay in the Remote MCP server. The `task` commands only fund an exact prepared Task pool, sign exact prepared awards, or submit an exact prepared reclaim. Skill purchase, conversion, price, and supply commands submit strict MCP preparations. `skill publish-submit --path <file-or-directory> --from-file <plan>` and `skill version-submit` accept either one file or one directory, then apply the plan's independent `plaintext`, `finchip_v2`, or `lit` content mode; filtering, deterministic ZIP construction, encryption, upload, and key custody remain local. `skill asset-upload --path <cover> --from-file <plan>` uploads a separately prepared public cover, and `skill presentation-submit --from-file <plan>` publishes bounded public presentation metadata without changing protected package bytes. `skill download --from-file <delivery> --out-file <new-file>` downloads IPFS content directly or signs with the entitled local wallet for protected content, verifies the SkillRoot and every file (or the plaintext ZIP hash for historical Skills), and creates an owner-only file. Every transaction action uses its plan's chain, source-controlled public RPCs, and reviewed chain-level contract authority. The CLI recomputes transaction bytes locally and rejects mismatched chains, destinations, calldata, values, source commits, or envelope tags.
|
|
36
|
+
|
|
37
|
+
## ZIP import and SkillRoot publication
|
|
38
|
+
|
|
39
|
+
Version 0.3.1 fixes Skill search continuation: pass the returned `nextCursor` unchanged as
|
|
40
|
+
`--cursor`. Search uses the server rules; the CLI does not implement a matching algorithm.
|
|
41
|
+
Older clients receive an upgrade message from the Skill search API.
|
|
42
|
+
|
|
43
|
+
Version 0.3.0 upgrades Skill publication and encrypted delivery together. Upgrade with
|
|
44
|
+
`pnpm add -g @finchtech/cli@0.3.2` and verify `finch --version` before publishing new Skills
|
|
45
|
+
or downloading encrypted Skills from the upgraded gateway. Older CLI versions cannot use
|
|
46
|
+
the new encrypted delivery, including for historical Skills; 0.3.0 retains historical package support.
|
|
47
|
+
|
|
48
|
+
A single `.zip` passed to `skill publish-submit --path` or `skill version-submit --path` is expanded locally before filtering and primary-document hashing; request a `file` source plan for this input. Directory inputs keep ZIP assets as ordinary files. Imports support stored/DEFLATE ZIPs up to 10 MiB compressed and expanded, with at most 1024 entries. Unsafe paths, symbolic links, encrypted ZIPs, ZIP64, conflicting entries, and corrupt content are refused. Include `SKILL.md`, `README.md`, or one unambiguous root Markdown document.
|
|
49
|
+
|
|
50
|
+
New Skills publish a DAG-CBOR SkillRoot hash in one graph bundle. Existing Skill identities keep ZIP-hash updates. New Skills require this updated CLI; it verifies every object and decrypts protected files locally into an ordinary ZIP. Historical ZIP downloads and whole-package decryption remain supported. A pending publication reuses its uploaded bytes and saved root commitment on resume.
|
|
51
|
+
|
|
52
|
+
The [publication ADR](../../docs/adr/ADR-0064-20260908-skillroot-publication.md) specifies the pinned draft, bundle/profile format, compatibility trust boundary, and rollout order.
|
|
53
|
+
|
|
54
|
+
Finch-managed and Lit downloads use Oracle V2 device-sealed grants and a non-extractable local CryptoKey.
|
|
55
|
+
The updated gateway also supports historical Finch-managed and Lit ZIPs through this delivery. It refuses
|
|
56
|
+
old bare-key buyer requests; use the updated CLI. Both providers use the same sealed delivery. See
|
|
57
|
+
[ADR-0065](../../docs/adr/ADR-0065-20260908-skill-oracle-v2-delivery.md) for deployment requirements.
|
|
58
|
+
|
|
59
|
+
Publication preparation accepts an optional `summary` (up to 500 characters). It is committed in
|
|
60
|
+
SkillRoot exactly as supplied, matching Browser publication metadata; omission means an empty summary.
|
|
61
|
+
Equal public file bytes, paths, name, summary, version and history produce equal roots. Encrypted
|
|
62
|
+
publications use random keys/IVs and need not produce the same root. Updates send the proposed
|
|
63
|
+
manifest for server validation; URI intents are prepared after the new chain binding is confirmed.
|
|
64
|
+
|
|
65
|
+
Finch-managed publication key requests use a signed timestamp and a one-time nonce. Each request is
|
|
66
|
+
valid for five minutes; retrying after expiry or a lost response requires a fresh signature. The
|
|
67
|
+
gateway rejects older CLI publication requests without timestamps. Historical downloads are unchanged.
|
|
68
|
+
|
|
69
|
+
### Local publication failures
|
|
70
|
+
|
|
71
|
+
Directory publication rejects symbolic links, including internal relative links and broken links.
|
|
72
|
+
It skips excluded paths (for example `.git`, `node_modules`, `.aws`, and credential files) before reading
|
|
73
|
+
or descending into them. `excluded` lists a skipped directory once instead of enumerating its children.
|
|
74
|
+
Keep required resource paths functional when preparing a link-free source; deleting required links is
|
|
75
|
+
not a valid repair. ZIP imports also reject symbolic links.
|
|
76
|
+
|
|
77
|
+
Source errors keep exit code 2 and `AGENT_MARKET_REQUEST_INVALID`. Parse the JSON string in `error.state`
|
|
78
|
+
for `diagnosticCode`: `SKILL_SOURCE_SYMLINK_UNSUPPORTED`, `SKILL_SOURCE_UNREADABLE`, or
|
|
79
|
+
`SKILL_UPLOAD_SIZE_INVALID`. Source diagnostics include a root-relative `path` (`.` for the selected
|
|
80
|
+
root); size diagnostics include `actualBytes` and `maxBytes`. The 10 MiB limit applies to the final
|
|
81
|
+
upload object, including SkillRoot metadata and encryption overhead. STORE ZIP construction does not
|
|
82
|
+
compress files. A size rejection occurs before that upload and before transaction submission.
|
|
83
|
+
|
|
84
|
+
Publish, version, and publication-recovery failures also include `phase`, `fingerprint`,
|
|
85
|
+
`transactionHashes` (keyed by `primary`, `uri`, or `lit`), `submissionStatus`, and `recoveryCommand` in
|
|
86
|
+
`error.state`. `packaging` includes local hashing/encryption; `transaction` covers signing, broadcast,
|
|
87
|
+
and receipt handling. A validated remote error keeps its code, message, trace and HTTP status
|
|
88
|
+
(`remoteStatus`), with its original state retained as `remoteState`; publication retry guidance takes
|
|
89
|
+
precedence over a remote service's generic retry flag. Private causes, RPC URLs, credentials and
|
|
90
|
+
journal contents are never printed.
|
|
91
|
+
|
|
92
|
+
Publication failures set `retryable: false`: this is not permission to replay a paid operation.
|
|
93
|
+
`not_attempted` means no send was attempted in this invocation and no hashes were found in the
|
|
94
|
+
validated journal; it is not proof about other invocations. `hash_known` includes known transaction
|
|
95
|
+
hashes. `uncertain` means sending or durable checkpointing failed; contact support before retrying or
|
|
96
|
+
recovering, even when a hash is shown. A non-null `recoveryCommand` is provided only after a journal
|
|
97
|
+
is validated or saved and no submission/checkpoint uncertainty was observed. Recheck CLI/MCP identity
|
|
98
|
+
and use that command rather than repeating publish-submit. Cleanup failures do not claim a journal
|
|
99
|
+
still exists. If source is unavailable or its excluded-path inventory changed across CLI versions,
|
|
100
|
+
the fingerprint-only recovery command can use the already stored publication bytes.
|
|
101
|
+
|
|
102
|
+
CLI 0.3.2 adds publication source/size diagnostics and safe recovery state. Use 0.3.2 or newer for the diagnostic and recovery guidance in this release. Updating this Skill does not upgrade the installed CLI.
|