@mcsherrylabs/evolver-mcp 0.11.0 → 0.13.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 (137) hide show
  1. package/deploy/release.json +1 -1
  2. package/dist/application-signer.d.ts +16 -0
  3. package/dist/application-signer.d.ts.map +1 -0
  4. package/dist/application-signer.js +55 -0
  5. package/dist/application-signer.js.map +1 -0
  6. package/dist/approved-request.d.ts +30 -0
  7. package/dist/approved-request.d.ts.map +1 -0
  8. package/dist/approved-request.js +167 -0
  9. package/dist/approved-request.js.map +1 -0
  10. package/dist/attachment-tools.d.ts +3 -0
  11. package/dist/attachment-tools.d.ts.map +1 -0
  12. package/dist/attachment-tools.js +32 -0
  13. package/dist/attachment-tools.js.map +1 -0
  14. package/dist/attachments.d.ts +41 -0
  15. package/dist/attachments.d.ts.map +1 -0
  16. package/dist/attachments.js +458 -0
  17. package/dist/attachments.js.map +1 -0
  18. package/dist/content-file-tools.d.ts +3 -0
  19. package/dist/content-file-tools.d.ts.map +1 -0
  20. package/dist/content-file-tools.js +67 -0
  21. package/dist/content-file-tools.js.map +1 -0
  22. package/dist/content-files.d.ts +32 -0
  23. package/dist/content-files.d.ts.map +1 -0
  24. package/dist/content-files.js +79 -0
  25. package/dist/content-files.js.map +1 -0
  26. package/dist/content-ranges.d.ts +41 -0
  27. package/dist/content-ranges.d.ts.map +1 -0
  28. package/dist/content-ranges.js +75 -0
  29. package/dist/content-ranges.js.map +1 -0
  30. package/dist/content.d.ts +62 -19
  31. package/dist/content.d.ts.map +1 -1
  32. package/dist/content.js +180 -25
  33. package/dist/content.js.map +1 -1
  34. package/dist/files.d.ts +60 -0
  35. package/dist/files.d.ts.map +1 -0
  36. package/dist/files.js +355 -0
  37. package/dist/files.js.map +1 -0
  38. package/dist/group-crypto-tools.d.ts +3 -0
  39. package/dist/group-crypto-tools.d.ts.map +1 -0
  40. package/dist/group-crypto-tools.js +47 -0
  41. package/dist/group-crypto-tools.js.map +1 -0
  42. package/dist/group-crypto.d.ts +24 -0
  43. package/dist/group-crypto.d.ts.map +1 -0
  44. package/dist/group-crypto.js +135 -0
  45. package/dist/group-crypto.js.map +1 -0
  46. package/dist/group-key-provider.d.ts +30 -0
  47. package/dist/group-key-provider.d.ts.map +1 -0
  48. package/dist/group-key-provider.js +72 -0
  49. package/dist/group-key-provider.js.map +1 -0
  50. package/dist/group-keys.d.ts +34 -0
  51. package/dist/group-keys.d.ts.map +1 -0
  52. package/dist/group-keys.js +88 -0
  53. package/dist/group-keys.js.map +1 -0
  54. package/dist/group-ownership.d.ts +78 -0
  55. package/dist/group-ownership.d.ts.map +1 -0
  56. package/dist/group-ownership.js +324 -0
  57. package/dist/group-ownership.js.map +1 -0
  58. package/dist/group.d.ts +2 -2
  59. package/dist/group.js +3 -3
  60. package/dist/group.js.map +1 -1
  61. package/dist/http-profiles.d.ts +47 -0
  62. package/dist/http-profiles.d.ts.map +1 -0
  63. package/dist/http-profiles.js +161 -0
  64. package/dist/http-profiles.js.map +1 -0
  65. package/dist/human-approval.d.ts +14 -0
  66. package/dist/human-approval.d.ts.map +1 -0
  67. package/dist/human-approval.js +34 -0
  68. package/dist/human-approval.js.map +1 -0
  69. package/dist/index.d.ts +11 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +94 -40
  72. package/dist/index.js.map +1 -1
  73. package/dist/login-profiles.d.ts +25 -0
  74. package/dist/login-profiles.d.ts.map +1 -0
  75. package/dist/login-profiles.js +77 -0
  76. package/dist/login-profiles.js.map +1 -0
  77. package/dist/login-tools.d.ts +3 -0
  78. package/dist/login-tools.d.ts.map +1 -0
  79. package/dist/login-tools.js +27 -0
  80. package/dist/login-tools.js.map +1 -0
  81. package/dist/login.d.ts +36 -0
  82. package/dist/login.d.ts.map +1 -0
  83. package/dist/login.js +144 -0
  84. package/dist/login.js.map +1 -0
  85. package/dist/mcp.d.ts +1 -0
  86. package/dist/mcp.d.ts.map +1 -1
  87. package/dist/mcp.js +22 -6
  88. package/dist/mcp.js.map +1 -1
  89. package/dist/node-transport.d.ts +14 -0
  90. package/dist/node-transport.d.ts.map +1 -0
  91. package/dist/node-transport.js +54 -0
  92. package/dist/node-transport.js.map +1 -0
  93. package/dist/p2p-tools.d.ts +3 -0
  94. package/dist/p2p-tools.d.ts.map +1 -0
  95. package/dist/p2p-tools.js +52 -0
  96. package/dist/p2p-tools.js.map +1 -0
  97. package/dist/p2p.d.ts +67 -0
  98. package/dist/p2p.d.ts.map +1 -0
  99. package/dist/p2p.js +326 -0
  100. package/dist/p2p.js.map +1 -0
  101. package/dist/proof-attempts.d.ts +19 -0
  102. package/dist/proof-attempts.d.ts.map +1 -0
  103. package/dist/proof-attempts.js +30 -0
  104. package/dist/proof-attempts.js.map +1 -0
  105. package/dist/read.d.ts +60 -1
  106. package/dist/read.d.ts.map +1 -1
  107. package/dist/read.js +97 -5
  108. package/dist/read.js.map +1 -1
  109. package/dist/signed-http-tools.d.ts +3 -0
  110. package/dist/signed-http-tools.d.ts.map +1 -0
  111. package/dist/signed-http-tools.js +33 -0
  112. package/dist/signed-http-tools.js.map +1 -0
  113. package/dist/signed-http.d.ts +30 -0
  114. package/dist/signed-http.d.ts.map +1 -0
  115. package/dist/signed-http.js +114 -0
  116. package/dist/signed-http.js.map +1 -0
  117. package/dist/tools.d.ts +27 -1
  118. package/dist/tools.d.ts.map +1 -1
  119. package/dist/tools.js +243 -32
  120. package/dist/tools.js.map +1 -1
  121. package/dist/transaction-interchange-tools.d.ts +3 -0
  122. package/dist/transaction-interchange-tools.d.ts.map +1 -0
  123. package/dist/transaction-interchange-tools.js +41 -0
  124. package/dist/transaction-interchange-tools.js.map +1 -0
  125. package/dist/transaction-interchange.d.ts +141 -0
  126. package/dist/transaction-interchange.d.ts.map +1 -0
  127. package/dist/transaction-interchange.js +502 -0
  128. package/dist/transaction-interchange.js.map +1 -0
  129. package/dist/transaction-policy.d.ts +32 -0
  130. package/dist/transaction-policy.d.ts.map +1 -0
  131. package/dist/transaction-policy.js +89 -0
  132. package/dist/transaction-policy.js.map +1 -0
  133. package/dist/write.d.ts +52 -13
  134. package/dist/write.d.ts.map +1 -1
  135. package/dist/write.js +95 -25
  136. package/dist/write.js.map +1 -1
  137. package/package.json +4 -3
@@ -0,0 +1,89 @@
1
+ // Host policy is an explicit capability, not model-supplied transaction approval. No wire codec.
2
+ import { constants, openSync, fstatSync, readSync, closeSync } from "node:fs";
3
+ import { isAbsolute } from "node:path";
4
+ import { isValidPrincipalName, CORE_LEDGER_IDS, RESERVED_LEDGER_PREFIX } from "@mcsherrylabs/evolver-client";
5
+ export const TRANSACTION_BYTES = 65_536;
6
+ export const TRANSACTION_BASE64_CHARS = 4 * Math.ceil(TRANSACTION_BYTES / 3);
7
+ export const TRANSACTION_OPERATIONS = ["transfer", "create_identity", "delete_identity", "add_key", "replace_key", "delete_key",
8
+ "create_group", "add_member", "remove_member", "delete_group", "transfer_group_ownership", "claim_channel", "unclaim_channel",
9
+ "update_channel_da", "update_channel_toll", "update_channel_write_policy", "channel_write"];
10
+ const amount = (v) => typeof v === "string" && /^(0|[1-9][0-9]{0,18})$/.test(v) && BigInt(v) <= 9223372036854775807n;
11
+ const list = (v, test) => Array.isArray(v) && v.length <= 32 &&
12
+ v.every(s => typeof s === "string" && test(s)) && new Set(v).size === v.length;
13
+ export function transactionChainUrl(value) {
14
+ if (typeof value !== "string" || value.length > 2048 || /[^\x21-\x7e]/.test(value))
15
+ throw new Error();
16
+ const u = new URL(value);
17
+ if (!["http:", "https:"].includes(u.protocol) || u.username || u.password || u.search || u.hash ||
18
+ (u.pathname !== "/" && u.pathname !== ""))
19
+ throw new Error();
20
+ return u.origin;
21
+ }
22
+ export function resolveTransactionPolicy(raw) {
23
+ try {
24
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
25
+ throw new Error();
26
+ const p = raw;
27
+ const fields = ["chainUrl", "allowedSenders", "operations", "channelLedgers", "recipients", "maxAmount", "maxToll",
28
+ "maxTtlRounds", "maxSubmitBytes", "localRoles", "allowRelay", "allowDa"];
29
+ if (Object.keys(p).length !== fields.length || Object.keys(p).some(k => !fields.includes(k)))
30
+ throw new Error();
31
+ const chainUrl = transactionChainUrl(p.chainUrl);
32
+ if (!list(p.allowedSenders, isValidPrincipalName) || !list(p.recipients, isValidPrincipalName) ||
33
+ !list(p.operations, s => TRANSACTION_OPERATIONS.includes(s)) ||
34
+ !list(p.channelLedgers, s => /^[a-zA-Z0-9]+(?:\.[a-zA-Z0-9]+)*$/.test(s) && s.length <= 255 &&
35
+ !s.startsWith(RESERVED_LEDGER_PREFIX) && !CORE_LEDGER_IDS.includes(s)) ||
36
+ !list(p.localRoles, s => s === "sender" || s === "incoming_group_owner") || !amount(p.maxAmount) || !amount(p.maxToll) ||
37
+ !Number.isSafeInteger(p.maxTtlRounds) || p.maxTtlRounds < 1 || p.maxTtlRounds > 50 ||
38
+ !Number.isSafeInteger(p.maxSubmitBytes) || p.maxSubmitBytes < 1 || p.maxSubmitBytes > TRANSACTION_BYTES ||
39
+ typeof p.allowRelay !== "boolean" || typeof p.allowDa !== "boolean")
40
+ throw new Error();
41
+ const policy = structuredClone({ ...p, chainUrl });
42
+ for (const value of Object.values(policy))
43
+ if (Array.isArray(value))
44
+ Object.freeze(value);
45
+ return { ok: true, policy: Object.freeze(policy) };
46
+ }
47
+ catch {
48
+ return { ok: false };
49
+ }
50
+ }
51
+ /** Dedicated operator-owned regular file; no symlink, hardlink or group/world permissions.
52
+ * Read through the same descriptor we checked. FileRoot excludes this configuration path.
53
+ * Same-UID host processes remain trusted, as for all MCP host-held keys/policy. */
54
+ export function loadTransactionPolicyFromEnv(env) {
55
+ const path = env.EVOLVER_TRANSACTION_POLICY_PATH;
56
+ if (path === undefined)
57
+ return { ok: true };
58
+ let fd;
59
+ try {
60
+ if (!isAbsolute(path) || !process.getuid)
61
+ throw new Error();
62
+ fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
63
+ const st = fstatSync(fd);
64
+ if (!st.isFile() || st.nlink !== 1 || st.uid !== process.getuid() || (st.mode & 0o077) !== 0 || st.size > 16_384)
65
+ throw new Error();
66
+ const buffer = Buffer.alloc(16_385);
67
+ let count = 0;
68
+ while (count < buffer.length) {
69
+ const n = readSync(fd, buffer, count, buffer.length - count, null);
70
+ if (n === 0)
71
+ break;
72
+ count += n;
73
+ }
74
+ const after = fstatSync(fd);
75
+ if (count > 16_384 || count !== st.size || after.size !== st.size || after.mtimeMs !== st.mtimeMs ||
76
+ after.ctimeMs !== st.ctimeMs || after.nlink !== 1)
77
+ throw new Error();
78
+ const text = new TextDecoder("utf-8", { fatal: true }).decode(buffer.subarray(0, count));
79
+ return resolveTransactionPolicy(JSON.parse(text));
80
+ }
81
+ catch {
82
+ return { ok: false };
83
+ }
84
+ finally {
85
+ if (fd !== undefined)
86
+ closeSync(fd);
87
+ }
88
+ }
89
+ //# sourceMappingURL=transaction-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-policy.js","sourceRoot":"","sources":["../src/transaction-policy.ts"],"names":[],"mappings":"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"}
package/dist/write.d.ts CHANGED
@@ -17,6 +17,8 @@ export interface WriteDeps {
17
17
  readonly ttlOffset?: number;
18
18
  readonly reads: ChainReads;
19
19
  submitTx(bytes: Uint8Array): Promise<SubmitResult>;
20
+ /** Gateway collection/assembly/submission; never falls back to ordinary submit. */
21
+ submitTxWithDa?(bytes: Uint8Array): Promise<SubmitResult>;
20
22
  }
21
23
  /** A signed credit transfer, as recorded for inspection. INTENT, not bytes — the base64 bytes
22
24
  * live in a separate map so a live, submittable artefact never sits on what a model reads. */
@@ -70,10 +72,28 @@ export interface SignedGroup {
70
72
  readonly txId: string;
71
73
  readonly expiresAtRound: number;
72
74
  readonly signedAtRound: number;
73
- readonly verb: "create_group" | "delete_group" | "add_member" | "remove_member" | "group_transfer";
75
+ readonly verb: "create_group" | "delete_group" | "add_member" | "remove_member" | "group_transfer" | "group_ownership_transfer";
74
76
  readonly fields: Record<string, string>;
75
77
  readonly summary: Record<string, string>;
76
78
  }
79
+ /** A PREPARED group ownership transfer awaiting the incoming owner's consent. Nothing is signed and
80
+ * no bytes exist, so `submitSigned` cannot find it: an unconsented transfer is unsubmittable by
81
+ * construction, not by a flag. Kept apart from `signedThisSession` for that reason. */
82
+ export interface PendingOwnershipTransfer {
83
+ readonly txId: string;
84
+ readonly expiresAtRound: number;
85
+ readonly preparedAtRound: number;
86
+ readonly verb: "group_ownership_transfer_pending";
87
+ readonly fields: {
88
+ readonly ledgerId: string;
89
+ readonly groupName: string;
90
+ readonly outgoingOwner: string;
91
+ readonly incomingOwner: string;
92
+ readonly maxToll: string;
93
+ };
94
+ readonly summary: Record<string, string>;
95
+ readonly status: string;
96
+ }
77
97
  /** A signed channel-ledger operation (SIGN-13..18: claim, unclaim, write, set-toll, set-write-policy,
78
98
  * set-DA-policy), as recorded for inspection. Intent, never bytes — the base64 bytes live in a
79
99
  * separate map. `fields`/`summary` name ONLY public metadata (channel ledger id, write policy, toll
@@ -98,6 +118,12 @@ export type SignedRecord = SignedTransfer | SignedOpaque | SignedIdentity | Sign
98
118
  * caller and the node's own interpreters. This single refusal is EXPORTED so `src/channel.ts`
99
119
  * imports and REUSES it verbatim — never re-implements it (single dispatch-safety rule). */
100
120
  export declare function writableChannelId(raw: unknown): string | ToolResult<never>;
121
+ /** One PROCESS attempt budget per intent, shared by legacy ordinary/DA and approved external
122
+ * artifacts. Authorization-set variants have different fingerprints, NOT independent budgets.
123
+ * Claim synchronously before network. An uncertain attempt remains consumed until restart;
124
+ * export/other sessions mean this is never a global exactly-once guarantee. */
125
+ export declare function submissionAttempted(txId: string): boolean;
126
+ export declare function claimSubmissionAttempt(txId: string): boolean;
101
127
  /** A caller-supplied id, safe to name in a refusal. Echoing it verbatim gifts an attacker content
102
128
  * AND size in the transcript; the id is named only when it LOOKS like one. */
103
129
  export declare const namedInRefusal: (txId: string) => string;
@@ -108,6 +134,19 @@ export declare function recordedById(txId: string): SignedRecord | undefined;
108
134
  * `src/identity.ts`); composing and recording in one call is what keeps inspect/submit from ever
109
135
  * seeing a signed transaction whose record is missing. */
110
136
  export declare function recordSigned(signed: SignedRecord, bytes: Uint8Array): void;
137
+ /** Record an operation whose envelope carries auths assembled from MORE than this session's signer
138
+ * (the group ownership transfer). Strict where `recordSigned` is lenient: it never replaces or
139
+ * merges an existing id, so a verified multi-auth envelope cannot be shadowed by, or shadow, an
140
+ * earlier record. Returns false (recording nothing) when the id is already known. */
141
+ export declare function recordAssembledOnce(signed: SignedGroup, bytes: Uint8Array): boolean;
142
+ export declare const MAX_PENDING_OWNERSHIP = 16;
143
+ /** Remember a prepared transfer. False when the bound is reached or the id is already known. */
144
+ export declare function recordPendingOwnership(p: PendingOwnershipTransfer): boolean;
145
+ export declare function pendingOwnershipById(txId: string): PendingOwnershipTransfer | undefined;
146
+ export declare function dropPendingOwnership(txId: string): void;
147
+ /** Forget prepared transfers that can no longer be admitted (expiry <= round). They were never
148
+ * signed, so nothing submittable is lost; this keeps the bound from filling with dead entries. */
149
+ export declare function pruneExpiredPendingOwnership(round: number): void;
111
150
  /** The signed bytes for one recorded transaction, base64. Undefined for anything this session
112
151
  * did not sign. */
113
152
  export declare function peekBytes(txId: string): string | undefined;
@@ -123,8 +162,8 @@ export declare function signTransfer(deps: WriteDeps, params: {
123
162
  amount: string;
124
163
  }): Promise<ToolResult<SignedTransfer>>;
125
164
  /**
126
- * Sign a write to a channel — the generic escape hatch (SUBM-07). Signs only; `evolver_submit` is
127
- * still the only thing that reaches a chain.
165
+ * Sign a write to a channel — the generic escape hatch (SUBM-07). Signs only; a separate
166
+ * `evolver_submit` or `evolver_submit_da` call is what reaches a chain.
128
167
  *
129
168
  * ⚠️ WHAT THE CALLER IS TRUSTED WITH, AND WHAT IT IS NOT. The caller chooses the bytes and the
130
169
  * channel. It does NOT choose the interpreter: `writableChannelId` below refuses every CORE ledger
@@ -140,14 +179,13 @@ export declare function signOpaque(deps: WriteDeps, params: {
140
179
  channel: string;
141
180
  bodyHex: string;
142
181
  }): Promise<ToolResult<SignedOpaque>>;
143
- /** What a signed submit returned, for an agent to branch on.
144
- *
145
- * The committed branch carries `commitIntervalMs` (SUBM-03/04): a non-negative integer number of
146
- * milliseconds, present ONLY when a commit was observed. `classifySubmit`'s `SubmissionOutcome`
147
- * is interval-free; the submit wrapper widens exactly the committed branch, so `fined`/`refused`/
148
- * `unknown` report NO interval key at all. */
182
+ /** What a signed submit returned. Ordinary `commitIntervalMs` is present ONLY on an observed
183
+ * matching commit. DA `daSubmitDurationMs` measures the entire gateway call (including collection
184
+ * and assembly), even on an unsuccessful/unknown return; it never claims commit-only latency.
185
+ * The published SDK provides no separate collection or commit timing. Local guards have neither. */
149
186
  export type SubmitReport = SubmissionOutcome & {
150
187
  readonly commitIntervalMs?: number;
188
+ readonly daSubmitDurationMs?: number;
151
189
  readonly submitted?: Record<string, string | number>;
152
190
  };
153
191
  /**
@@ -158,15 +196,16 @@ export type SubmitReport = SubmissionOutcome & {
158
196
  * Rule 2 (SAFE-01) — never twice: a repeat is a no-op the chain refuses, and re-signing is the
159
197
  * loop that pays twice. Here the refusal names "look it up", never re-sign.
160
198
  *
161
- * The `txId` resolves the signed record and the base64 bytes; the ordinary `submitTx` route is
162
- * used (a credit transfer is not a channel write, so never `submitTxWithDa`).
199
+ * The `txId` resolves the signed record and the exact stored bytes. Both routes share these guards
200
+ * and mark the id before awaiting the network, including when the result is unknown. DA permits
201
+ * only channel-write intent, never a core-ledger operation or owners-ledger administration.
163
202
  */
164
- export declare function submitSigned(deps: WriteDeps, txId: string): Promise<SubmitReport>;
203
+ export declare function submitSigned(deps: WriteDeps, txId: string, mode?: "ordinary" | "da"): Promise<SubmitReport>;
165
204
  /**
166
205
  * Read back what a signed transaction would do (READ-05). Answers from the session RECORD, not
167
206
  * by decoding — and not from any other transaction. Contacts no chain.
168
207
  */
169
- export declare function inspectSigned(txId: string): ToolResult<SignedRecord>;
208
+ export declare function inspectSigned(txId: string): ToolResult<SignedRecord | PendingOwnershipTransfer>;
170
209
  /** Test seam only: forget this session's signing history (all three stores). */
171
210
  export declare function __resetSession(): void;
172
211
  /** The single compose→sign→record helper, re-exported from `src/identity.ts` so every identity verb
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
package/dist/write.js CHANGED
@@ -68,6 +68,18 @@ const bytesThisSession = new Map();
68
68
  /** A transaction id as a lookup key. Ids are lowercase hex, but a model retyping one should not
69
69
  * fail on case or a stray space. */
70
70
  const asKey = (txId) => String(txId ?? "").trim().toLowerCase();
71
+ /** One PROCESS attempt budget per intent, shared by legacy ordinary/DA and approved external
72
+ * artifacts. Authorization-set variants have different fingerprints, NOT independent budgets.
73
+ * Claim synchronously before network. An uncertain attempt remains consumed until restart;
74
+ * export/other sessions mean this is never a global exactly-once guarantee. */
75
+ export function submissionAttempted(txId) { return alreadySubmitted.has(asKey(txId)); }
76
+ export function claimSubmissionAttempt(txId) {
77
+ const id = asKey(txId);
78
+ if (!/^[0-9a-f]{64}$/.test(id) || alreadySubmitted.has(id))
79
+ return false;
80
+ alreadySubmitted.add(id);
81
+ return true;
82
+ }
71
83
  /** A caller-supplied id, safe to name in a refusal. Echoing it verbatim gifts an attacker content
72
84
  * AND size in the transcript; the id is named only when it LOOKS like one. */
73
85
  export const namedInRefusal = (txId) => {
@@ -90,6 +102,44 @@ export function recordSigned(signed, bytes) {
90
102
  if (!bytesThisSession.has(k))
91
103
  bytesThisSession.set(k, Buffer.from(bytes).toString("base64"));
92
104
  }
105
+ /** Record an operation whose envelope carries auths assembled from MORE than this session's signer
106
+ * (the group ownership transfer). Strict where `recordSigned` is lenient: it never replaces or
107
+ * merges an existing id, so a verified multi-auth envelope cannot be shadowed by, or shadow, an
108
+ * earlier record. Returns false (recording nothing) when the id is already known. */
109
+ export function recordAssembledOnce(signed, bytes) {
110
+ const k = asKey(signed.txId);
111
+ if (signedThisSession.has(k) || bytesThisSession.has(k))
112
+ return false;
113
+ signedThisSession.set(k, signed);
114
+ bytesThisSession.set(k, Buffer.from(bytes).toString("base64"));
115
+ return true;
116
+ }
117
+ // Prepared-but-unconsented ownership transfers. Bounded so a looping caller cannot grow it.
118
+ export const MAX_PENDING_OWNERSHIP = 16;
119
+ const pendingOwnershipThisSession = new Map();
120
+ /** Remember a prepared transfer. False when the bound is reached or the id is already known. */
121
+ export function recordPendingOwnership(p) {
122
+ const k = asKey(p.txId);
123
+ if (pendingOwnershipThisSession.has(k) || signedThisSession.has(k))
124
+ return false;
125
+ if (pendingOwnershipThisSession.size >= MAX_PENDING_OWNERSHIP)
126
+ return false;
127
+ pendingOwnershipThisSession.set(k, p);
128
+ return true;
129
+ }
130
+ export function pendingOwnershipById(txId) {
131
+ return pendingOwnershipThisSession.get(asKey(txId));
132
+ }
133
+ export function dropPendingOwnership(txId) {
134
+ pendingOwnershipThisSession.delete(asKey(txId));
135
+ }
136
+ /** Forget prepared transfers that can no longer be admitted (expiry <= round). They were never
137
+ * signed, so nothing submittable is lost; this keeps the bound from filling with dead entries. */
138
+ export function pruneExpiredPendingOwnership(round) {
139
+ for (const [k, p] of pendingOwnershipThisSession)
140
+ if (p.expiresAtRound <= round)
141
+ pendingOwnershipThisSession.delete(k);
142
+ }
93
143
  /** The signed bytes for one recorded transaction, base64. Undefined for anything this session
94
144
  * did not sign. */
95
145
  export function peekBytes(txId) {
@@ -138,8 +188,8 @@ export async function signTransfer(deps, params) {
138
188
  return { kind: "ok", value: signed };
139
189
  }
140
190
  /**
141
- * Sign a write to a channel — the generic escape hatch (SUBM-07). Signs only; `evolver_submit` is
142
- * still the only thing that reaches a chain.
191
+ * Sign a write to a channel — the generic escape hatch (SUBM-07). Signs only; a separate
192
+ * `evolver_submit` or `evolver_submit_da` call is what reaches a chain.
143
193
  *
144
194
  * ⚠️ WHAT THE CALLER IS TRUSTED WITH, AND WHAT IT IS NOT. The caller chooses the bytes and the
145
195
  * channel. It does NOT choose the interpreter: `writableChannelId` below refuses every CORE ledger
@@ -221,10 +271,11 @@ export async function signOpaque(deps, params) {
221
271
  * Rule 2 (SAFE-01) — never twice: a repeat is a no-op the chain refuses, and re-signing is the
222
272
  * loop that pays twice. Here the refusal names "look it up", never re-sign.
223
273
  *
224
- * The `txId` resolves the signed record and the base64 bytes; the ordinary `submitTx` route is
225
- * used (a credit transfer is not a channel write, so never `submitTxWithDa`).
274
+ * The `txId` resolves the signed record and the exact stored bytes. Both routes share these guards
275
+ * and mark the id before awaiting the network, including when the result is unknown. DA permits
276
+ * only channel-write intent, never a core-ledger operation or owners-ledger administration.
226
277
  */
227
- export async function submitSigned(deps, txId) {
278
+ export async function submitSigned(deps, txId, mode = "ordinary") {
228
279
  const signed = recordedById(txId);
229
280
  if (signed === undefined)
230
281
  return {
@@ -234,7 +285,7 @@ export async function submitSigned(deps, txId) {
234
285
  `session, so nothing will be submitted. Sign it first, and submit the id the signing ` +
235
286
  `step returned.`,
236
287
  };
237
- if (alreadySubmitted.has(signed.txId))
288
+ if (submissionAttempted(signed.txId))
238
289
  return {
239
290
  kind: "refused",
240
291
  reason: "already_submitted",
@@ -243,6 +294,18 @@ export async function submitSigned(deps, txId) {
243
294
  `and both may commit. Look it up instead.`,
244
295
  txId: signed.txId,
245
296
  };
297
+ if (mode === "da") {
298
+ if (!("verb" in signed) || (signed.verb !== "opaque" && signed.verb !== "channel_write"))
299
+ return { kind: "refused", reason: "not_channel_write", txId: signed.txId,
300
+ message: "DA submission accepts only session-signed opaque/channel_write intent. Use evolver_submit for transfers and administration; nothing was sent." };
301
+ const channel = writableChannelId(signed.fields.channel);
302
+ if (typeof channel !== "string")
303
+ return { kind: "refused", reason: "not_channel_write", txId: signed.txId,
304
+ message: "DA submission refuses core/reserved or missing channel targets; nothing was sent." };
305
+ if (!deps.submitTxWithDa)
306
+ return { kind: "refused", reason: "da_not_configured", txId: signed.txId,
307
+ message: "DA gateway submission is not configured; nothing was sent. No ordinary-submit fallback was attempted." };
308
+ }
246
309
  const bytes = peekBytes(signed.txId);
247
310
  if (bytes === undefined)
248
311
  return {
@@ -252,30 +315,35 @@ export async function submitSigned(deps, txId) {
252
315
  `nothing to submit. Sign it again.`,
253
316
  txId: signed.txId,
254
317
  };
255
- alreadySubmitted.add(signed.txId);
318
+ if (!claimSubmissionAttempt(signed.txId))
319
+ return { kind: "refused", reason: "already_submitted", txId: signed.txId,
320
+ message: "This intent was already attempted through another submission route. Look up the original txId; never re-sign or retry automatically." };
256
321
  const raw = Uint8Array.from(Buffer.from(bytes, "base64"));
257
- // ── the commit interval (SUBM-03): two monotonic timestamps bracket EXACTLY the submit call ──
258
- //
259
- // `performance.now()` is monotonic — it cannot jump the way a wall-clock (`Date.now()`) does on
260
- // an NTP step. `t0` is taken after every guard (record resolution, not_signed_here /
261
- // already_submitted refusals, byte peek) so the non-submit work stays OUTSIDE the bracket. A
262
- // throw here is `unknown` with NO interval — nothing was observed, so nothing is reported.
322
+ // Monotonic timestamps bracket exactly ONE SDK call, after all local guards. The DA call
323
+ // includes collection/assembly: elapsed time is not commit-only latency, even when committed.
263
324
  const t0 = performance.now();
264
325
  let result;
265
326
  try {
266
- result = await deps.submitTx(raw);
327
+ result = mode === "da" ? await deps.submitTxWithDa(raw) : await deps.submitTx(raw);
267
328
  }
268
329
  catch (e) {
269
330
  return {
270
331
  kind: "unknown",
271
332
  why: `the submission could not be completed: ${e instanceof Error ? e.message : String(e)}`,
272
333
  txId: signed.txId,
334
+ ...(mode === "da" ? { daSubmitDurationMs: Math.round(performance.now() - t0) } : {}),
273
335
  submitted: { ...signed.summary, expiresAtRound: signed.expiresAtRound },
274
336
  };
275
337
  }
276
- const t1 = performance.now();
277
- const commitIntervalMs = Math.round(t1 - t0);
278
- const outcome = classifySubmit(result);
338
+ const durationMs = Math.round(performance.now() - t0);
339
+ const daTiming = mode === "da" ? { daSubmitDurationMs: durationMs } : {};
340
+ let outcome = classifySubmit(result);
341
+ if (mode === "da" && outcome.kind === "unknown") {
342
+ // SDK 0.21.0 parseSubmit drops reason/message on `timeout`, including the node's
343
+ // da_collection_in_progress response. Do not infer which phase is pending from that shape.
344
+ const detail = result.kind === "timeout" ? "the gateway returned a pending/timeout outcome" : outcome.why;
345
+ outcome = { ...outcome, why: `${detail}. DA collection may still be in progress or submission may be uncertain; the SDK does not distinguish these phases. This is not da_unavailable or a final refusal` };
346
+ }
279
347
  // An EXACT, FREE version-skew detector. The id is computed independently on both ends over the
280
348
  // same fields, so a disagreement is unambiguous evidence the two ends encode differently. A
281
349
  // mismatch is `unknown` with NO interval: the wrong id means the commit was never identified, so
@@ -286,22 +354,20 @@ export async function submitSigned(deps, txId) {
286
354
  why: `the node computed a different transaction id (${outcome.txId}) than this client did ` +
287
355
  `(${signed.txId}). Treat the outcome as unknown and look the transaction up.`,
288
356
  txId: signed.txId,
357
+ ...daTiming,
289
358
  submitted: { ...signed.summary, expiresAtRound: signed.expiresAtRound },
290
359
  };
291
- // The interval is attached ONLY to the committed branch (SUBM-04): a fined/refused/unknown
292
- // outcome is not a commit, so any duration reported there would be a mislead. `classifySubmit`
293
- // stays interval-free; the interval is the submit wrapper's concern, and only when a commit was
294
- // actually observed.
295
360
  if (outcome.kind === "committed") {
296
361
  return {
297
362
  ...outcome,
298
- commitIntervalMs,
363
+ txId: signed.txId,
364
+ ...(mode === "ordinary" ? { commitIntervalMs: durationMs } : daTiming),
299
365
  submitted: { ...signed.summary, expiresAtRound: signed.expiresAtRound },
300
366
  };
301
367
  }
302
- // An ambiguous node response may omit/echo the wrong ID. Reconciliation always uses the
303
- // canonical ID this session signed, never an absent or untrusted response ID.
304
- return { ...outcome, ...(outcome.kind === "unknown" ? { txId: signed.txId } : {}),
368
+ // Reconciliation always uses the original signed-intent ID, even when the gateway omits or
369
+ // echoes a different ID. Adding gateway DA auths does not change that intent.
370
+ return { ...outcome, txId: signed.txId, ...daTiming,
305
371
  submitted: { ...signed.summary, expiresAtRound: signed.expiresAtRound } };
306
372
  }
307
373
  /**
@@ -312,6 +378,9 @@ export function inspectSigned(txId) {
312
378
  const rec = recordedById(txId);
313
379
  if (rec !== undefined)
314
380
  return { kind: "ok", value: rec };
381
+ const pending = pendingOwnershipById(txId);
382
+ if (pending !== undefined)
383
+ return { kind: "ok", value: pending };
315
384
  return {
316
385
  kind: "not_found",
317
386
  what: `transaction ${namedInRefusal(txId)} was not signed in this session — this tool contacts no chain; this is not evidence of on-chain absence`,
@@ -322,6 +391,7 @@ export function __resetSession() {
322
391
  signedThisSession.clear();
323
392
  alreadySubmitted.clear();
324
393
  bytesThisSession.clear();
394
+ pendingOwnershipThisSession.clear();
325
395
  }
326
396
  /** The single compose→sign→record helper, re-exported from `src/identity.ts` so every identity verb
327
397
  * and any future signing verb shares ONE compose implementation (never two). */
package/dist/write.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcsherrylabs/evolver-mcp",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "MCP server over a configurable Evolver node — read the chain, sign a transfer, administer what you own, write to a channel, submit a signed transaction. Wraps @mcsherrylabs/evolver-client; implements no wire format of its own.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -53,9 +53,10 @@
53
53
  "test": "npm run build && npm run typecheck && npm run check:result && npm run check:config && npm run check:heights && npm run check:principal && npm run check:transaction && npm run check:keys && npm run check:channelterms && npm run check:surface && npm run check:signing && npm run check:interval && npm run check:classify && npm run check:identity && npm run check:claim && npm run check:content && npm run check:inbox && npm run check:group && npm run check:channel && npm run check:channel-admin-apply && npm run check:bootstrap && npm run check:install && npm run check:deployment && npm run check:startup && npm run check:publish && npm run check:channel-regression"
54
54
  },
55
55
  "dependencies": {
56
- "@mcsherrylabs/evolver-client": "0.21.0",
56
+ "@mcsherrylabs/evolver-client": "0.22.1",
57
57
  "@modelcontextprotocol/sdk": "1.32.1",
58
- "typebox": "1.3.32"
58
+ "typebox": "1.3.32",
59
+ "undici": "6.29.1"
59
60
  },
60
61
  "devDependencies": {
61
62
  "@types/node": "^22.10.0",