@mcsherrylabs/evolver-mcp 0.0.0-stage → 0.8.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/dist/amount.d.ts +20 -0
- package/dist/amount.d.ts.map +1 -0
- package/dist/amount.js +44 -0
- package/dist/amount.js.map +1 -0
- package/dist/bootstrap.d.ts +264 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +901 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/channel.d.ts +78 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +288 -0
- package/dist/channel.js.map +1 -0
- package/dist/claim.d.ts +48 -0
- package/dist/claim.d.ts.map +1 -0
- package/dist/claim.js +81 -0
- package/dist/claim.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +34 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +39 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +77 -0
- package/dist/config.js.map +1 -0
- package/dist/content.d.ts +51 -0
- package/dist/content.d.ts.map +1 -0
- package/dist/content.js +60 -0
- package/dist/content.js.map +1 -0
- package/dist/group.d.ts +60 -0
- package/dist/group.d.ts.map +1 -0
- package/dist/group.js +204 -0
- package/dist/group.js.map +1 -0
- package/dist/identity.d.ts +87 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +230 -0
- package/dist/identity.js.map +1 -0
- package/dist/inbox.d.ts +30 -0
- package/dist/inbox.d.ts.map +1 -0
- package/dist/inbox.js +95 -0
- package/dist/inbox.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +39 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +83 -0
- package/dist/mcp.js.map +1 -0
- package/dist/read.d.ts +175 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +219 -0
- package/dist/read.js.map +1 -0
- package/dist/result.d.ts +110 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +97 -0
- package/dist/result.js.map +1 -0
- package/dist/signer.d.ts +37 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +76 -0
- package/dist/signer.js.map +1 -0
- package/dist/tools.d.ts +44 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +642 -0
- package/dist/tools.js.map +1 -0
- package/dist/write.d.ts +173 -0
- package/dist/write.d.ts.map +1 -0
- package/dist/write.js +322 -0
- package/dist/write.js.map +1 -0
- package/package.json +55 -4
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/write.d.ts
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { hexToBytes } from "@mcsherrylabs/evolver-client";
|
|
2
|
+
import type { Signer, SubmitResult } from "@mcsherrylabs/evolver-client";
|
|
3
|
+
export { hexToBytes };
|
|
4
|
+
import type { ChainReads } from "./read.js";
|
|
5
|
+
import type { SubmissionOutcome, ToolResult } from "./result.js";
|
|
6
|
+
/** Rounds of life given to a signed transaction.
|
|
7
|
+
*
|
|
8
|
+
* ⚠️ SHORT ON PURPOSE. A signed transaction is a bearer artefact: valid until it expires,
|
|
9
|
+
* submission unauthenticated, no cancel. Nothing here waits on a human between signing and
|
|
10
|
+
* submitting, so a long window buys nothing and leaves a live artefact in a transcript. */
|
|
11
|
+
export declare const DEFAULT_TTL_OFFSET = 50;
|
|
12
|
+
/** What `signTransfer`/`submitSigned` need from the world, injected so every rule is exercised
|
|
13
|
+
* against a fake rather than a live node. */
|
|
14
|
+
export interface WriteDeps {
|
|
15
|
+
readonly identity: string;
|
|
16
|
+
readonly signer: Signer;
|
|
17
|
+
readonly ttlOffset?: number;
|
|
18
|
+
readonly reads: ChainReads;
|
|
19
|
+
submitTx(bytes: Uint8Array): Promise<SubmitResult>;
|
|
20
|
+
}
|
|
21
|
+
/** A signed credit transfer, as recorded for inspection. INTENT, not bytes — the base64 bytes
|
|
22
|
+
* live in a separate map so a live, submittable artefact never sits on what a model reads. */
|
|
23
|
+
export interface SignedTransfer {
|
|
24
|
+
readonly txId: string;
|
|
25
|
+
readonly expiresAtRound: number;
|
|
26
|
+
readonly signedAtRound: number;
|
|
27
|
+
readonly summary: {
|
|
28
|
+
readonly sender: string;
|
|
29
|
+
readonly recipient: string;
|
|
30
|
+
readonly amount: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** A signed opaque channel write (SUBM-07), as recorded. Carries the `verb: "opaque"` tag so a
|
|
34
|
+
* reader can tell it from a transfer, and `fields` (the caller-supplied channel + body size) in
|
|
35
|
+
* place of the transfer's named fields. Intent, never bytes. */
|
|
36
|
+
export interface SignedOpaque {
|
|
37
|
+
readonly txId: string;
|
|
38
|
+
readonly expiresAtRound: number;
|
|
39
|
+
readonly signedAtRound: number;
|
|
40
|
+
readonly verb: "opaque";
|
|
41
|
+
readonly fields: {
|
|
42
|
+
readonly channel: string;
|
|
43
|
+
readonly bodyBytes: number;
|
|
44
|
+
};
|
|
45
|
+
readonly summary: {
|
|
46
|
+
readonly sender: string;
|
|
47
|
+
readonly channel: string;
|
|
48
|
+
readonly bodyBytes: number;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** A signed identity administration operation (SIGN-03..07), as recorded for inspection. Intent,
|
|
52
|
+
* never bytes — the base64 bytes live in a separate map. The `verb` discriminator tells a reader
|
|
53
|
+
* what happened; `fields`/`summary` name ONLY public, non-key, non-PoP metadata (key `type`/`label`,
|
|
54
|
+
* a target, a starting credit) — never `publicKey`, `popSignature`, `bytes` or `base64`. */
|
|
55
|
+
export interface SignedIdentity {
|
|
56
|
+
readonly txId: string;
|
|
57
|
+
readonly expiresAtRound: number;
|
|
58
|
+
readonly signedAtRound: number;
|
|
59
|
+
readonly verb: "create_identity" | "delete_identity" | "add_key" | "replace_key" | "delete_key";
|
|
60
|
+
readonly fields: Record<string, string>;
|
|
61
|
+
readonly summary: Record<string, string>;
|
|
62
|
+
}
|
|
63
|
+
/** A signed groups-ledger operation (SIGN-09..12) or the multi-recipient group credit transfer
|
|
64
|
+
* (SIGN-02), as recorded for inspection. Intent, never bytes — the base64 bytes live in a separate
|
|
65
|
+
* map. `fields`/`summary` name ONLY public metadata (group name, member node id, decimal
|
|
66
|
+
* recipient/amount strings) — never `publicKey`, `popSignature`, `bytes` or `base64`. */
|
|
67
|
+
export interface SignedGroup {
|
|
68
|
+
readonly txId: string;
|
|
69
|
+
readonly expiresAtRound: number;
|
|
70
|
+
readonly signedAtRound: number;
|
|
71
|
+
readonly verb: "create_group" | "delete_group" | "add_member" | "remove_member" | "group_transfer";
|
|
72
|
+
readonly fields: Record<string, string>;
|
|
73
|
+
readonly summary: Record<string, string>;
|
|
74
|
+
}
|
|
75
|
+
/** A signed channel-ledger operation (SIGN-13..18: claim, unclaim, write, set-toll, set-write-policy,
|
|
76
|
+
* set-DA-policy), as recorded for inspection. Intent, never bytes — the base64 bytes live in a
|
|
77
|
+
* separate map. `fields`/`summary` name ONLY public metadata (channel ledger id, write policy, toll
|
|
78
|
+
* as a decimal string, DA group/threshold) — never `publicKey`, `popSignature`, `popSig`, `bytes` or
|
|
79
|
+
* `base64`. */
|
|
80
|
+
export interface SignedChannel {
|
|
81
|
+
readonly txId: string;
|
|
82
|
+
readonly expiresAtRound: number;
|
|
83
|
+
readonly signedAtRound: number;
|
|
84
|
+
readonly verb: "channel_claim" | "channel_unclaim" | "channel_write" | "channel_toll" | "channel_write_policy" | "channel_da";
|
|
85
|
+
readonly fields: Record<string, string>;
|
|
86
|
+
readonly summary: Record<string, string>;
|
|
87
|
+
}
|
|
88
|
+
/** Everything this session signed: a transfer, an opaque channel write, an identity operation, a
|
|
89
|
+
* groups-ledger operation, or a channel-ledger operation. */
|
|
90
|
+
export type SignedRecord = SignedTransfer | SignedOpaque | SignedIdentity | SignedGroup | SignedChannel;
|
|
91
|
+
/** A channel id a caller may write to — NOT a core ledger, NOT the reserved namespace.
|
|
92
|
+
*
|
|
93
|
+
* ⚠️ CASE-INSENSITIVE ON PURPOSE, AND NOT BECAUSE THE NODE IS. The node compares ledger ids
|
|
94
|
+
* exactly, but refusing every casing costs nothing and removes a whole class of bypass that opens
|
|
95
|
+
* the moment anything in the path normalises case. This refusal is the only thing between a
|
|
96
|
+
* caller and the node's own interpreters. This single refusal is EXPORTED so `src/channel.ts`
|
|
97
|
+
* imports and REUSES it verbatim — never re-implements it (single dispatch-safety rule). */
|
|
98
|
+
export declare function writableChannelId(raw: unknown): string | ToolResult<never>;
|
|
99
|
+
/** A caller-supplied id, safe to name in a refusal. Echoing it verbatim gifts an attacker content
|
|
100
|
+
* AND size in the transcript; the id is named only when it LOOKS like one. */
|
|
101
|
+
export declare const namedInRefusal: (txId: string) => string;
|
|
102
|
+
/** Everything this session signed, by id. */
|
|
103
|
+
export declare function recordedById(txId: string): SignedRecord | undefined;
|
|
104
|
+
/** Record a signed operation into BOTH session stores — the intent record AND the base64 bearer
|
|
105
|
+
* bytes. This is the single record path shared by `signTransfer` and `composeIdentityTx` (via
|
|
106
|
+
* `src/identity.ts`); composing and recording in one call is what keeps inspect/submit from ever
|
|
107
|
+
* seeing a signed transaction whose record is missing. */
|
|
108
|
+
export declare function recordSigned(signed: SignedRecord, bytes: Uint8Array): void;
|
|
109
|
+
/** The signed bytes for one recorded transaction, base64. Undefined for anything this session
|
|
110
|
+
* did not sign. */
|
|
111
|
+
export declare function peekBytes(txId: string): string | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* Sign a credit transfer to a `txId` and record it — no network submit (SIGN-20).
|
|
114
|
+
*
|
|
115
|
+
* Reads the chain tip to bound the TTL (the read is mandatory: a transaction's life is relative
|
|
116
|
+
* to the current round, and a guessed round is refused). If the chain is unreachable, signing
|
|
117
|
+
* fails as `unreachable` — but it still does NOT submit.
|
|
118
|
+
*/
|
|
119
|
+
export declare function signTransfer(deps: WriteDeps, params: {
|
|
120
|
+
recipient: string;
|
|
121
|
+
amount: string;
|
|
122
|
+
}): Promise<ToolResult<SignedTransfer>>;
|
|
123
|
+
/**
|
|
124
|
+
* Sign a write to a channel — the generic escape hatch (SUBM-07). Signs only; `evolver_submit` is
|
|
125
|
+
* still the only thing that reaches a chain.
|
|
126
|
+
*
|
|
127
|
+
* ⚠️ WHAT THE CALLER IS TRUSTED WITH, AND WHAT IT IS NOT. The caller chooses the bytes and the
|
|
128
|
+
* channel. It does NOT choose the interpreter: `writableChannelId` below refuses every CORE ledger
|
|
129
|
+
* id and the whole reserved `ce.evolver.` namespace, so the bytes reach a ledger the core never
|
|
130
|
+
* parses. That is the whole safety argument — a caller who could name `ce.evolver.ledger.identity`
|
|
131
|
+
* with a crafted body would be handing the node a transfer or key registration signed as this
|
|
132
|
+
* identity. The sign DIGEST was never the weak point; DISPATCH was.
|
|
133
|
+
*
|
|
134
|
+
* ⚠️ NOT THE 157 LOGIN. The `signedRequest` SDK path is a challenge-response login proof that sends
|
|
135
|
+
* its own HTTP and carries no commit interval; it is a DIFFERENT affordance and is not wired here.
|
|
136
|
+
*/
|
|
137
|
+
export declare function signOpaque(deps: WriteDeps, params: {
|
|
138
|
+
channel: string;
|
|
139
|
+
bodyHex: string;
|
|
140
|
+
}): Promise<ToolResult<SignedOpaque>>;
|
|
141
|
+
/** What a signed submit returned, for an agent to branch on.
|
|
142
|
+
*
|
|
143
|
+
* The committed branch carries `commitIntervalMs` (SUBM-03/04): a non-negative integer number of
|
|
144
|
+
* milliseconds, present ONLY when a commit was observed. `classifySubmit`'s `SubmissionOutcome`
|
|
145
|
+
* is interval-free; the submit wrapper widens exactly the committed branch, so `fined`/`refused`/
|
|
146
|
+
* `unknown` report NO interval key at all. */
|
|
147
|
+
export type SubmitReport = SubmissionOutcome & {
|
|
148
|
+
readonly commitIntervalMs?: number;
|
|
149
|
+
readonly submitted?: Record<string, string | number>;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Submit a transaction this session signed, by its `txId` (SIGN-19). Never signs, never does
|
|
153
|
+
* network work before the guards clear:
|
|
154
|
+
*
|
|
155
|
+
* Rule 1 (SUBM-08) — only what this session signed: otherwise this agent is a submission relay.
|
|
156
|
+
* Rule 2 (SAFE-01) — never twice: a repeat is a no-op the chain refuses, and re-signing is the
|
|
157
|
+
* loop that pays twice. Here the refusal names "look it up", never re-sign.
|
|
158
|
+
*
|
|
159
|
+
* The `txId` resolves the signed record and the base64 bytes; the ordinary `submitTx` route is
|
|
160
|
+
* used (a credit transfer is not a channel write, so never `submitTxWithDa`).
|
|
161
|
+
*/
|
|
162
|
+
export declare function submitSigned(deps: WriteDeps, txId: string): Promise<SubmitReport>;
|
|
163
|
+
/**
|
|
164
|
+
* Read back what a signed transaction would do (READ-05). Answers from the session RECORD, not
|
|
165
|
+
* by decoding — and not from any other transaction. Contacts no chain.
|
|
166
|
+
*/
|
|
167
|
+
export declare function inspectSigned(txId: string): ToolResult<SignedRecord>;
|
|
168
|
+
/** Test seam only: forget this session's signing history (all three stores). */
|
|
169
|
+
export declare function __resetSession(): void;
|
|
170
|
+
/** The single compose→sign→record helper, re-exported from `src/identity.ts` so every identity verb
|
|
171
|
+
* and any future signing verb shares ONE compose implementation (never two). */
|
|
172
|
+
export { composeIdentityTx as composeAndSign } from "./identity.js";
|
|
173
|
+
//# sourceMappingURL=write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
|
package/dist/write.js
ADDED
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
// Signing and submitting, as two capabilities that never fuse.
|
|
2
|
+
//
|
|
3
|
+
// `signTransfer` produces a transaction that has gone nowhere (SIGN-20: a `txId`, NO submit).
|
|
4
|
+
// `submitSigned` sends one this session already signed, refusing anything else (SUBM-08) and
|
|
5
|
+
// refusing a repeat (SAFE-01). The ledger is pinned (LEDGER.identity) so no caller-chosen ledger
|
|
6
|
+
// ever reaches the signed bytes — a signing tool composes what it signs from named, typed fields
|
|
7
|
+
// and chooses the ledger itself.
|
|
8
|
+
//
|
|
9
|
+
// The two-step contract is STRUCTURAL, not advisory: an in-memory record of what THIS session
|
|
10
|
+
// signed is what `submitSigned` resolves a `txId` against, and what `inspectSigned` (READ-05)
|
|
11
|
+
// answers from. A description telling the model "don't re-sign" competes with chain text the
|
|
12
|
+
// model reads by design, so the guards are here, in code.
|
|
13
|
+
import { LEDGER, buildSignedTx, transferBody, txIdHex, channelBody, hexToBytes, CORE_LEDGER_IDS, RESERVED_LEDGER_PREFIX, } from "@mcsherrylabs/evolver-client";
|
|
14
|
+
// ONE hex decoder, re-exported: the SDK's `hexToBytes` (which refuses non-hex rather than coercing).
|
|
15
|
+
// `signOpaque` and the identity verbs both use it — a second hand-rolled decoder is the bug class.
|
|
16
|
+
export { hexToBytes };
|
|
17
|
+
import { formatAmount, parseAmount } from "./amount.js";
|
|
18
|
+
import { classifySubmit } from "./result.js";
|
|
19
|
+
/** Rounds of life given to a signed transaction.
|
|
20
|
+
*
|
|
21
|
+
* ⚠️ SHORT ON PURPOSE. A signed transaction is a bearer artefact: valid until it expires,
|
|
22
|
+
* submission unauthenticated, no cancel. Nothing here waits on a human between signing and
|
|
23
|
+
* submitting, so a long window buys nothing and leaves a live artefact in a transcript. */
|
|
24
|
+
export const DEFAULT_TTL_OFFSET = 50;
|
|
25
|
+
/** The largest body `signOpaque` will sign, in bytes: the node's HTTP request cap (65536) less
|
|
26
|
+
* room for the transaction envelope. An oversized POST is refused by the listener before the
|
|
27
|
+
* node reads it, unreadably, so the outcome would arrive as `unknown` after submit already marked
|
|
28
|
+
* the id sent — a dead end. Refusing here is free and names the bound. */
|
|
29
|
+
const MAX_BODY_BYTES = 65536 - 1024;
|
|
30
|
+
/** A channel id a caller may write to — NOT a core ledger, NOT the reserved namespace.
|
|
31
|
+
*
|
|
32
|
+
* ⚠️ CASE-INSENSITIVE ON PURPOSE, AND NOT BECAUSE THE NODE IS. The node compares ledger ids
|
|
33
|
+
* exactly, but refusing every casing costs nothing and removes a whole class of bypass that opens
|
|
34
|
+
* the moment anything in the path normalises case. This refusal is the only thing between a
|
|
35
|
+
* caller and the node's own interpreters. This single refusal is EXPORTED so `src/channel.ts`
|
|
36
|
+
* imports and REUSES it verbatim — never re-implements it (single dispatch-safety rule). */
|
|
37
|
+
export function writableChannelId(raw) {
|
|
38
|
+
const id = String(raw ?? "").trim();
|
|
39
|
+
if (id.length === 0)
|
|
40
|
+
return { kind: "partial", what: "channel", cause: "no channel given" };
|
|
41
|
+
const lower = id.toLowerCase();
|
|
42
|
+
if (CORE_LEDGER_IDS.some((c) => c.toLowerCase() === lower))
|
|
43
|
+
return {
|
|
44
|
+
kind: "partial",
|
|
45
|
+
what: "channel",
|
|
46
|
+
cause: `"${id}" is a CORE ledger, not a channel. Writing to it would not be an opaque message — ` +
|
|
47
|
+
`the node parses that ledger's bodies and applies what it finds, so these bytes could be a ` +
|
|
48
|
+
`transfer or key registration signed as this identity. Refused before anything was signed.`,
|
|
49
|
+
};
|
|
50
|
+
if (lower.startsWith(RESERVED_LEDGER_PREFIX))
|
|
51
|
+
return {
|
|
52
|
+
kind: "partial",
|
|
53
|
+
what: "channel",
|
|
54
|
+
cause: `"${id}" is in the reserved "${RESERVED_LEDGER_PREFIX}" namespace, which belongs to the node's own ledgers. A channel lives outside it.`,
|
|
55
|
+
};
|
|
56
|
+
return id;
|
|
57
|
+
}
|
|
58
|
+
// ── session stores ────────────────────────────────────────────────────────────
|
|
59
|
+
//
|
|
60
|
+
// Three maps, two audiences. The RECORD (`signedThisSession`) is intent: what `inspectSigned`
|
|
61
|
+
// answers from. The BYTES (`bytesThisSession`, base64) are the bearer artefact submitted to the
|
|
62
|
+
// chain. They are deliberately separate so the transaction id is the only lookup key and the
|
|
63
|
+
// base64 never reaches a signing or inspection result (~86 KB each otherwise). `alreadySubmitted`
|
|
64
|
+
// is the "never twice" guard.
|
|
65
|
+
const signedThisSession = new Map();
|
|
66
|
+
const alreadySubmitted = new Set();
|
|
67
|
+
const bytesThisSession = new Map();
|
|
68
|
+
/** A transaction id as a lookup key. Ids are lowercase hex, but a model retyping one should not
|
|
69
|
+
* fail on case or a stray space. */
|
|
70
|
+
const asKey = (txId) => String(txId ?? "").trim().toLowerCase();
|
|
71
|
+
/** A caller-supplied id, safe to name in a refusal. Echoing it verbatim gifts an attacker content
|
|
72
|
+
* AND size in the transcript; the id is named only when it LOOKS like one. */
|
|
73
|
+
export const namedInRefusal = (txId) => {
|
|
74
|
+
const k = asKey(txId);
|
|
75
|
+
if (k.length === 0)
|
|
76
|
+
return "(empty)";
|
|
77
|
+
return /^[0-9a-f]{64}$/.test(k) ? k : `(not a transaction id: ${k.length} characters)`;
|
|
78
|
+
};
|
|
79
|
+
/** Everything this session signed, by id. */
|
|
80
|
+
export function recordedById(txId) {
|
|
81
|
+
return signedThisSession.get(asKey(txId));
|
|
82
|
+
}
|
|
83
|
+
/** Record a signed operation into BOTH session stores — the intent record AND the base64 bearer
|
|
84
|
+
* bytes. This is the single record path shared by `signTransfer` and `composeIdentityTx` (via
|
|
85
|
+
* `src/identity.ts`); composing and recording in one call is what keeps inspect/submit from ever
|
|
86
|
+
* seeing a signed transaction whose record is missing. */
|
|
87
|
+
export function recordSigned(signed, bytes) {
|
|
88
|
+
const k = asKey(signed.txId);
|
|
89
|
+
signedThisSession.set(k, signed);
|
|
90
|
+
if (!bytesThisSession.has(k))
|
|
91
|
+
bytesThisSession.set(k, Buffer.from(bytes).toString("base64"));
|
|
92
|
+
}
|
|
93
|
+
/** The signed bytes for one recorded transaction, base64. Undefined for anything this session
|
|
94
|
+
* did not sign. */
|
|
95
|
+
export function peekBytes(txId) {
|
|
96
|
+
return bytesThisSession.get(asKey(txId));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Sign a credit transfer to a `txId` and record it — no network submit (SIGN-20).
|
|
100
|
+
*
|
|
101
|
+
* Reads the chain tip to bound the TTL (the read is mandatory: a transaction's life is relative
|
|
102
|
+
* to the current round, and a guessed round is refused). If the chain is unreachable, signing
|
|
103
|
+
* fails as `unreachable` — but it still does NOT submit.
|
|
104
|
+
*/
|
|
105
|
+
export async function signTransfer(deps, params) {
|
|
106
|
+
const recipient = String(params.recipient ?? "").trim();
|
|
107
|
+
if (recipient.length === 0)
|
|
108
|
+
return { kind: "partial", what: "recipient", cause: "no recipient given" };
|
|
109
|
+
// Validate BEFORE anything touches the chain: a refusal here costs nothing, while a bad amount
|
|
110
|
+
// that reaches the wire becomes a transaction that does the wrong thing.
|
|
111
|
+
const amount = parseAmount(String(params.amount ?? ""));
|
|
112
|
+
if (!amount.ok)
|
|
113
|
+
return { kind: "partial", what: "amount", cause: amount.error };
|
|
114
|
+
let tip;
|
|
115
|
+
try {
|
|
116
|
+
tip = await deps.reads.currentRound();
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
return { kind: "unreachable", chain: "", cause: e instanceof Error ? e.message : String(e) };
|
|
120
|
+
}
|
|
121
|
+
const expiresAtRound = tip + (deps.ttlOffset ?? DEFAULT_TTL_OFFSET);
|
|
122
|
+
const body = transferBody([{ recipient, amount: amount.value }]);
|
|
123
|
+
const bytes = buildSignedTx({
|
|
124
|
+
ledgerId: LEDGER.identity,
|
|
125
|
+
senderNodeId: deps.identity,
|
|
126
|
+
body,
|
|
127
|
+
ttlRound: expiresAtRound,
|
|
128
|
+
signers: [deps.signer],
|
|
129
|
+
});
|
|
130
|
+
const signed = {
|
|
131
|
+
txId: txIdHex(LEDGER.identity, deps.identity, expiresAtRound, body),
|
|
132
|
+
expiresAtRound,
|
|
133
|
+
signedAtRound: tip,
|
|
134
|
+
summary: { sender: deps.identity, recipient, amount: formatAmount(amount.value) },
|
|
135
|
+
};
|
|
136
|
+
signedThisSession.set(asKey(signed.txId), signed);
|
|
137
|
+
bytesThisSession.set(asKey(signed.txId), Buffer.from(bytes).toString("base64"));
|
|
138
|
+
return { kind: "ok", value: signed };
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
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.
|
|
143
|
+
*
|
|
144
|
+
* ⚠️ WHAT THE CALLER IS TRUSTED WITH, AND WHAT IT IS NOT. The caller chooses the bytes and the
|
|
145
|
+
* channel. It does NOT choose the interpreter: `writableChannelId` below refuses every CORE ledger
|
|
146
|
+
* id and the whole reserved `ce.evolver.` namespace, so the bytes reach a ledger the core never
|
|
147
|
+
* parses. That is the whole safety argument — a caller who could name `ce.evolver.ledger.identity`
|
|
148
|
+
* with a crafted body would be handing the node a transfer or key registration signed as this
|
|
149
|
+
* identity. The sign DIGEST was never the weak point; DISPATCH was.
|
|
150
|
+
*
|
|
151
|
+
* ⚠️ NOT THE 157 LOGIN. The `signedRequest` SDK path is a challenge-response login proof that sends
|
|
152
|
+
* its own HTTP and carries no commit interval; it is a DIFFERENT affordance and is not wired here.
|
|
153
|
+
*/
|
|
154
|
+
export async function signOpaque(deps, params) {
|
|
155
|
+
// 1. the channel — the refusal that pays for the caller-chosen-ledger exemption.
|
|
156
|
+
const channel = writableChannelId(params.channel);
|
|
157
|
+
if (typeof channel !== "string")
|
|
158
|
+
return channel;
|
|
159
|
+
// 2. the body, hex. Decoded by a parser that refuses a non-hex / odd-length input rather than
|
|
160
|
+
// silently producing a wrong-length run of bytes.
|
|
161
|
+
let body;
|
|
162
|
+
try {
|
|
163
|
+
body = hexToBytes(String(params.bodyHex ?? "").trim());
|
|
164
|
+
}
|
|
165
|
+
catch (e) {
|
|
166
|
+
return { kind: "partial", what: "bodyHex", cause: e instanceof Error ? e.message : String(e) };
|
|
167
|
+
}
|
|
168
|
+
if (body.length === 0)
|
|
169
|
+
return {
|
|
170
|
+
kind: "partial",
|
|
171
|
+
what: "bodyHex",
|
|
172
|
+
cause: "no body given — a channel write carries the bytes you supply, and an empty one costs the same while conveying nothing",
|
|
173
|
+
};
|
|
174
|
+
if (body.length > MAX_BODY_BYTES)
|
|
175
|
+
return {
|
|
176
|
+
kind: "partial",
|
|
177
|
+
what: "bodyHex",
|
|
178
|
+
cause: `${body.length} bytes is over the ${MAX_BODY_BYTES}-byte limit this verb will sign ` +
|
|
179
|
+
`(the node's HTTP request cap, less the transaction envelope). A larger body is rejected ` +
|
|
180
|
+
`by the listener before the node sees it, unreadably. Split the payload, or put it in ` +
|
|
181
|
+
`content storage and write the digest.`,
|
|
182
|
+
};
|
|
183
|
+
// 3. the chain tip, to bound the life. A guessed expiry round is refused outright.
|
|
184
|
+
let tip;
|
|
185
|
+
try {
|
|
186
|
+
tip = await deps.reads.currentRound();
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
return { kind: "unreachable", chain: "", cause: e instanceof Error ? e.message : String(e) };
|
|
190
|
+
}
|
|
191
|
+
const expiresAtRound = tip + (deps.ttlOffset ?? DEFAULT_TTL_OFFSET);
|
|
192
|
+
const bodyBytes = channelBody(body);
|
|
193
|
+
const bytes = buildSignedTx({
|
|
194
|
+
ledgerId: channel,
|
|
195
|
+
senderNodeId: deps.identity,
|
|
196
|
+
body: bodyBytes,
|
|
197
|
+
ttlRound: expiresAtRound,
|
|
198
|
+
signers: [deps.signer],
|
|
199
|
+
});
|
|
200
|
+
const signed = {
|
|
201
|
+
txId: txIdHex(channel, deps.identity, expiresAtRound, bodyBytes),
|
|
202
|
+
expiresAtRound,
|
|
203
|
+
signedAtRound: tip,
|
|
204
|
+
verb: "opaque",
|
|
205
|
+
fields: { channel, bodyBytes: body.length },
|
|
206
|
+
summary: { sender: deps.identity, channel, bodyBytes: body.length },
|
|
207
|
+
};
|
|
208
|
+
signedThisSession.set(asKey(signed.txId), signed);
|
|
209
|
+
bytesThisSession.set(asKey(signed.txId), Buffer.from(bytes).toString("base64"));
|
|
210
|
+
return { kind: "ok", value: signed };
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Submit a transaction this session signed, by its `txId` (SIGN-19). Never signs, never does
|
|
214
|
+
* network work before the guards clear:
|
|
215
|
+
*
|
|
216
|
+
* Rule 1 (SUBM-08) — only what this session signed: otherwise this agent is a submission relay.
|
|
217
|
+
* Rule 2 (SAFE-01) — never twice: a repeat is a no-op the chain refuses, and re-signing is the
|
|
218
|
+
* loop that pays twice. Here the refusal names "look it up", never re-sign.
|
|
219
|
+
*
|
|
220
|
+
* The `txId` resolves the signed record and the base64 bytes; the ordinary `submitTx` route is
|
|
221
|
+
* used (a credit transfer is not a channel write, so never `submitTxWithDa`).
|
|
222
|
+
*/
|
|
223
|
+
export async function submitSigned(deps, txId) {
|
|
224
|
+
const signed = recordedById(txId);
|
|
225
|
+
if (signed === undefined)
|
|
226
|
+
return {
|
|
227
|
+
kind: "refused",
|
|
228
|
+
reason: "not_signed_here",
|
|
229
|
+
message: `no transaction with id ${namedInRefusal(txId)} was signed by this agent in this ` +
|
|
230
|
+
`session, so nothing will be submitted. Sign it first, and submit the id the signing ` +
|
|
231
|
+
`step returned.`,
|
|
232
|
+
};
|
|
233
|
+
if (alreadySubmitted.has(signed.txId))
|
|
234
|
+
return {
|
|
235
|
+
kind: "refused",
|
|
236
|
+
reason: "already_submitted",
|
|
237
|
+
message: `this transaction (${signed.txId}) has already been submitted in this session. Do NOT ` +
|
|
238
|
+
`sign the payment again — that makes a DIFFERENT transaction that nothing deduplicates, ` +
|
|
239
|
+
`and both may commit. Look it up instead.`,
|
|
240
|
+
txId: signed.txId,
|
|
241
|
+
};
|
|
242
|
+
const bytes = peekBytes(signed.txId);
|
|
243
|
+
if (bytes === undefined)
|
|
244
|
+
return {
|
|
245
|
+
kind: "refused",
|
|
246
|
+
reason: "not_signed_here",
|
|
247
|
+
message: `this session recorded transaction ${signed.txId} but holds no bytes for it, so there is ` +
|
|
248
|
+
`nothing to submit. Sign it again.`,
|
|
249
|
+
txId: signed.txId,
|
|
250
|
+
};
|
|
251
|
+
alreadySubmitted.add(signed.txId);
|
|
252
|
+
const raw = Uint8Array.from(Buffer.from(bytes, "base64"));
|
|
253
|
+
// ── the commit interval (SUBM-03): two monotonic timestamps bracket EXACTLY the submit call ──
|
|
254
|
+
//
|
|
255
|
+
// `performance.now()` is monotonic — it cannot jump the way a wall-clock (`Date.now()`) does on
|
|
256
|
+
// an NTP step. `t0` is taken after every guard (record resolution, not_signed_here /
|
|
257
|
+
// already_submitted refusals, byte peek) so the non-submit work stays OUTSIDE the bracket. A
|
|
258
|
+
// throw here is `unknown` with NO interval — nothing was observed, so nothing is reported.
|
|
259
|
+
const t0 = performance.now();
|
|
260
|
+
let result;
|
|
261
|
+
try {
|
|
262
|
+
result = await deps.submitTx(raw);
|
|
263
|
+
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
return {
|
|
266
|
+
kind: "unknown",
|
|
267
|
+
why: `the submission could not be completed: ${e instanceof Error ? e.message : String(e)}`,
|
|
268
|
+
txId: signed.txId,
|
|
269
|
+
submitted: { ...signed.summary, expiresAtRound: signed.expiresAtRound },
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
const t1 = performance.now();
|
|
273
|
+
const commitIntervalMs = Math.round(t1 - t0);
|
|
274
|
+
const outcome = classifySubmit(result);
|
|
275
|
+
// An EXACT, FREE version-skew detector. The id is computed independently on both ends over the
|
|
276
|
+
// same fields, so a disagreement is unambiguous evidence the two ends encode differently. A
|
|
277
|
+
// mismatch is `unknown` with NO interval: the wrong id means the commit was never identified, so
|
|
278
|
+
// there is no coherent "time to commit" to report.
|
|
279
|
+
if (outcome.kind === "committed" && outcome.txId && outcome.txId.toLowerCase() !== signed.txId.toLowerCase())
|
|
280
|
+
return {
|
|
281
|
+
kind: "unknown",
|
|
282
|
+
why: `the node computed a different transaction id (${outcome.txId}) than this client did ` +
|
|
283
|
+
`(${signed.txId}). Treat the outcome as unknown and look the transaction up.`,
|
|
284
|
+
txId: signed.txId,
|
|
285
|
+
submitted: { ...signed.summary, expiresAtRound: signed.expiresAtRound },
|
|
286
|
+
};
|
|
287
|
+
// The interval is attached ONLY to the committed branch (SUBM-04): a fined/refused/unknown
|
|
288
|
+
// outcome is not a commit, so any duration reported there would be a mislead. `classifySubmit`
|
|
289
|
+
// stays interval-free; the interval is the submit wrapper's concern, and only when a commit was
|
|
290
|
+
// actually observed.
|
|
291
|
+
if (outcome.kind === "committed") {
|
|
292
|
+
return {
|
|
293
|
+
...outcome,
|
|
294
|
+
commitIntervalMs,
|
|
295
|
+
submitted: { ...signed.summary, expiresAtRound: signed.expiresAtRound },
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
return { ...outcome, submitted: { ...signed.summary, expiresAtRound: signed.expiresAtRound } };
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Read back what a signed transaction would do (READ-05). Answers from the session RECORD, not
|
|
302
|
+
* by decoding — and not from any other transaction. Contacts no chain.
|
|
303
|
+
*/
|
|
304
|
+
export function inspectSigned(txId) {
|
|
305
|
+
const rec = recordedById(txId);
|
|
306
|
+
if (rec !== undefined)
|
|
307
|
+
return { kind: "ok", value: rec };
|
|
308
|
+
return {
|
|
309
|
+
kind: "not_found",
|
|
310
|
+
what: `transaction ${namedInRefusal(txId)} was not signed in this session — this tool reads back what THIS agent signed, never transactions from elsewhere`,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
/** Test seam only: forget this session's signing history (all three stores). */
|
|
314
|
+
export function __resetSession() {
|
|
315
|
+
signedThisSession.clear();
|
|
316
|
+
alreadySubmitted.clear();
|
|
317
|
+
bytesThisSession.clear();
|
|
318
|
+
}
|
|
319
|
+
/** The single compose→sign→record helper, re-exported from `src/identity.ts` so every identity verb
|
|
320
|
+
* and any future signing verb shares ONE compose implementation (never two). */
|
|
321
|
+
export { composeIdentityTx as composeAndSign } from "./identity.js";
|
|
322
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,57 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcsherrylabs/evolver-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.8.0",
|
|
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
|
+
"type": "module",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://gitlab.com/openstar/evolver-mcp.git"
|
|
10
|
+
},
|
|
11
|
+
"bin": {
|
|
12
|
+
"evolver-mcp": "dist/cli.js"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=20"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc -p tsconfig.build.json",
|
|
25
|
+
"start": "node dist/index.js",
|
|
26
|
+
"typecheck": "tsc --noEmit",
|
|
27
|
+
"check:result": "tsx test/result-checks.ts",
|
|
28
|
+
"check:config": "tsx test/config-checks.ts",
|
|
29
|
+
"check:heights": "tsx test/heights-checks.ts",
|
|
30
|
+
"check:principal": "tsx test/principal-checks.ts",
|
|
31
|
+
"check:keys": "tsx test/identity-keys-checks.ts",
|
|
32
|
+
"check:channelterms": "tsx test/channelterms-checks.ts",
|
|
33
|
+
"check:surface": "tsx test/surface-checks.ts",
|
|
34
|
+
"check:signing": "tsx test/signing-checks.ts",
|
|
35
|
+
"check:interval": "tsx test/interval-checks.ts",
|
|
36
|
+
"check:classify": "tsx test/classify-checks.ts",
|
|
37
|
+
"check:identity": "tsx test/identity-checks.ts",
|
|
38
|
+
"check:claim": "tsx test/claim-checks.ts",
|
|
39
|
+
"check:content": "tsx test/content-checks.ts",
|
|
40
|
+
"check:inbox": "tsx test/inbox-checks.ts",
|
|
41
|
+
"check:group": "tsx test/group-checks.ts",
|
|
42
|
+
"check:channel": "tsx test/channel-checks.ts",
|
|
43
|
+
"check:bootstrap": "tsx test/bootstrap-checks.ts",
|
|
44
|
+
"check:publish": "tsx test/publish-checks.ts",
|
|
45
|
+
"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: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:bootstrap && npm run check:publish"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@mcsherrylabs/evolver-client": "0.19.1",
|
|
49
|
+
"@modelcontextprotocol/sdk": "1.32.1",
|
|
50
|
+
"typebox": "1.3.32"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/node": "^22.10.0",
|
|
54
|
+
"tsx": "^4.19.2",
|
|
55
|
+
"typescript": "^5.6.0"
|
|
56
|
+
}
|
|
57
|
+
}
|