@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.
- package/deploy/release.json +1 -1
- package/dist/application-signer.d.ts +16 -0
- package/dist/application-signer.d.ts.map +1 -0
- package/dist/application-signer.js +55 -0
- package/dist/application-signer.js.map +1 -0
- package/dist/approved-request.d.ts +30 -0
- package/dist/approved-request.d.ts.map +1 -0
- package/dist/approved-request.js +167 -0
- package/dist/approved-request.js.map +1 -0
- package/dist/attachment-tools.d.ts +3 -0
- package/dist/attachment-tools.d.ts.map +1 -0
- package/dist/attachment-tools.js +32 -0
- package/dist/attachment-tools.js.map +1 -0
- package/dist/attachments.d.ts +41 -0
- package/dist/attachments.d.ts.map +1 -0
- package/dist/attachments.js +458 -0
- package/dist/attachments.js.map +1 -0
- package/dist/content-file-tools.d.ts +3 -0
- package/dist/content-file-tools.d.ts.map +1 -0
- package/dist/content-file-tools.js +67 -0
- package/dist/content-file-tools.js.map +1 -0
- package/dist/content-files.d.ts +32 -0
- package/dist/content-files.d.ts.map +1 -0
- package/dist/content-files.js +79 -0
- package/dist/content-files.js.map +1 -0
- package/dist/content-ranges.d.ts +41 -0
- package/dist/content-ranges.d.ts.map +1 -0
- package/dist/content-ranges.js +75 -0
- package/dist/content-ranges.js.map +1 -0
- package/dist/content.d.ts +62 -19
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +180 -25
- package/dist/content.js.map +1 -1
- package/dist/files.d.ts +60 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +355 -0
- package/dist/files.js.map +1 -0
- package/dist/group-crypto-tools.d.ts +3 -0
- package/dist/group-crypto-tools.d.ts.map +1 -0
- package/dist/group-crypto-tools.js +47 -0
- package/dist/group-crypto-tools.js.map +1 -0
- package/dist/group-crypto.d.ts +24 -0
- package/dist/group-crypto.d.ts.map +1 -0
- package/dist/group-crypto.js +135 -0
- package/dist/group-crypto.js.map +1 -0
- package/dist/group-key-provider.d.ts +30 -0
- package/dist/group-key-provider.d.ts.map +1 -0
- package/dist/group-key-provider.js +72 -0
- package/dist/group-key-provider.js.map +1 -0
- package/dist/group-keys.d.ts +34 -0
- package/dist/group-keys.d.ts.map +1 -0
- package/dist/group-keys.js +88 -0
- package/dist/group-keys.js.map +1 -0
- package/dist/group-ownership.d.ts +78 -0
- package/dist/group-ownership.d.ts.map +1 -0
- package/dist/group-ownership.js +324 -0
- package/dist/group-ownership.js.map +1 -0
- package/dist/group.d.ts +2 -2
- package/dist/group.js +3 -3
- package/dist/group.js.map +1 -1
- package/dist/http-profiles.d.ts +47 -0
- package/dist/http-profiles.d.ts.map +1 -0
- package/dist/http-profiles.js +161 -0
- package/dist/http-profiles.js.map +1 -0
- package/dist/human-approval.d.ts +14 -0
- package/dist/human-approval.d.ts.map +1 -0
- package/dist/human-approval.js +34 -0
- package/dist/human-approval.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +94 -40
- package/dist/index.js.map +1 -1
- package/dist/login-profiles.d.ts +25 -0
- package/dist/login-profiles.d.ts.map +1 -0
- package/dist/login-profiles.js +77 -0
- package/dist/login-profiles.js.map +1 -0
- package/dist/login-tools.d.ts +3 -0
- package/dist/login-tools.d.ts.map +1 -0
- package/dist/login-tools.js +27 -0
- package/dist/login-tools.js.map +1 -0
- package/dist/login.d.ts +36 -0
- package/dist/login.d.ts.map +1 -0
- package/dist/login.js +144 -0
- package/dist/login.js.map +1 -0
- package/dist/mcp.d.ts +1 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +22 -6
- package/dist/mcp.js.map +1 -1
- package/dist/node-transport.d.ts +14 -0
- package/dist/node-transport.d.ts.map +1 -0
- package/dist/node-transport.js +54 -0
- package/dist/node-transport.js.map +1 -0
- package/dist/p2p-tools.d.ts +3 -0
- package/dist/p2p-tools.d.ts.map +1 -0
- package/dist/p2p-tools.js +52 -0
- package/dist/p2p-tools.js.map +1 -0
- package/dist/p2p.d.ts +67 -0
- package/dist/p2p.d.ts.map +1 -0
- package/dist/p2p.js +326 -0
- package/dist/p2p.js.map +1 -0
- package/dist/proof-attempts.d.ts +19 -0
- package/dist/proof-attempts.d.ts.map +1 -0
- package/dist/proof-attempts.js +30 -0
- package/dist/proof-attempts.js.map +1 -0
- package/dist/read.d.ts +60 -1
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +97 -5
- package/dist/read.js.map +1 -1
- package/dist/signed-http-tools.d.ts +3 -0
- package/dist/signed-http-tools.d.ts.map +1 -0
- package/dist/signed-http-tools.js +33 -0
- package/dist/signed-http-tools.js.map +1 -0
- package/dist/signed-http.d.ts +30 -0
- package/dist/signed-http.d.ts.map +1 -0
- package/dist/signed-http.js +114 -0
- package/dist/signed-http.js.map +1 -0
- package/dist/tools.d.ts +27 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +243 -32
- package/dist/tools.js.map +1 -1
- package/dist/transaction-interchange-tools.d.ts +3 -0
- package/dist/transaction-interchange-tools.d.ts.map +1 -0
- package/dist/transaction-interchange-tools.js +41 -0
- package/dist/transaction-interchange-tools.js.map +1 -0
- package/dist/transaction-interchange.d.ts +141 -0
- package/dist/transaction-interchange.d.ts.map +1 -0
- package/dist/transaction-interchange.js +502 -0
- package/dist/transaction-interchange.js.map +1 -0
- package/dist/transaction-policy.d.ts +32 -0
- package/dist/transaction-policy.d.ts.map +1 -0
- package/dist/transaction-policy.js +89 -0
- package/dist/transaction-policy.js.map +1 -0
- package/dist/write.d.ts +52 -13
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +95 -25
- package/dist/write.js.map +1 -1
- 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;
|
|
127
|
-
*
|
|
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
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
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
|
|
162
|
-
*
|
|
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
|
package/dist/write.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"AAaA,OAAO,EAML,UAAU,EAGX,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAIzE,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjE;;;;4FAI4F;AAC5F,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC;8CAC8C;AAC9C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;
|
|
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;
|
|
142
|
-
*
|
|
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
|
|
225
|
-
*
|
|
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 (
|
|
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
|
-
|
|
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
|
-
//
|
|
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
|
|
277
|
-
const
|
|
278
|
-
|
|
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
|
-
|
|
363
|
+
txId: signed.txId,
|
|
364
|
+
...(mode === "ordinary" ? { commitIntervalMs: durationMs } : daTiming),
|
|
299
365
|
submitted: { ...signed.summary, expiresAtRound: signed.expiresAtRound },
|
|
300
366
|
};
|
|
301
367
|
}
|
|
302
|
-
//
|
|
303
|
-
//
|
|
304
|
-
return { ...outcome,
|
|
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.
|
|
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.
|
|
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",
|