@cedulon/mcp-server 0.2.4 → 0.3.1

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/index.js CHANGED
@@ -43,6 +43,22 @@ const TOOLS = [
43
43
  type: "object",
44
44
  additionalProperties: false,
45
45
  properties: {
46
+ trust: {
47
+ type: "object",
48
+ description: "Rail key you hold out of band: { publicKeyPem, accountId?, railId?, windowStartMs?, windowEndMs? }",
49
+ },
50
+ issuerTrust: {
51
+ type: "object",
52
+ description: "Issuer key(s) you hold out of band: { publicKeyPem: string | string[] }. Without it the audit checks this server's records against this server's own key.",
53
+ },
54
+ witnessTrust: {
55
+ type: "object",
56
+ description: "Transparency log key you hold out of band: { publicKeyPem: string | string[] }",
57
+ },
58
+ payeeTrust: {
59
+ type: "object",
60
+ description: "Payee keys you hold out of band, keyed by payee: { \"payee-1\": publicKeyPem }",
61
+ },
46
62
  extraSettlements: {
47
63
  type: "array",
48
64
  description: "Optional extra extract rows, used to inject a bypass settlement in tests",
@@ -62,7 +78,7 @@ const TOOLS = [
62
78
  },
63
79
  {
64
80
  name: "cedulon_verify_receipt",
65
- description: "Verify a spend receipt COSE_Sign1 (and payee countersignature when present).",
81
+ description: "Verify a spend receipt COSE_Sign1 (and payee countersignature when present). Supply expectIssuerKeyPem to check it against a key you already hold; without one the receipt is only checked against the key it carries, which any key satisfies.",
66
82
  annotations: {
67
83
  title: "Verify a spend receipt",
68
84
  readOnlyHint: true,
@@ -77,6 +93,14 @@ const TOOLS = [
77
93
  publicKeyPem: { type: "string" },
78
94
  counterCoseHex: { type: "string" },
79
95
  payeePublicKeyPem: { type: "string" },
96
+ expectIssuerKeyPem: {
97
+ type: "string",
98
+ description: "Issuer key you hold out of band. Omit and the check is self-referential.",
99
+ },
100
+ expectPayeeKeyPem: {
101
+ type: "string",
102
+ description: "Payee key you hold out of band, for the countersignature.",
103
+ },
80
104
  },
81
105
  },
82
106
  },
@@ -141,7 +165,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
141
165
  return textResult(outcome, !outcome.ok);
142
166
  }
143
167
  case "cedulon_audit": {
144
- const report = session.audit({ extraSettlements: asExtraSettlements(args.extraSettlements) });
168
+ const report = session.audit({
169
+ extraSettlements: asExtraSettlements(args.extraSettlements),
170
+ trust: args.trust,
171
+ issuerTrust: args.issuerTrust,
172
+ witnessTrust: args.witnessTrust,
173
+ payeeTrust: args.payeeTrust,
174
+ });
145
175
  return textResult({
146
176
  ok: report.ok,
147
177
  summary: report.summary,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/session.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type Finding } from "@cedulon/audit";
1
+ import { type Finding, type IssuerTrustPin, type PayeeTrustPins, type RailTrustPin } from "@cedulon/audit";
2
2
  import { type SignedCheckpoint } from "@cedulon/checkpoint";
3
3
  import { PolicyEngine, type Policy } from "@cedulon/core";
4
4
  import { type SignedReceipt } from "@cedulon/receipts";
@@ -22,12 +22,29 @@ export type SpendDeny = {
22
22
  export type SpendOutcome = SpendOk | SpendDeny;
23
23
  export type AuditArgs = {
24
24
  extraSettlements?: RailSettlement[];
25
+ /**
26
+ * Trust roots the caller holds out of band. Without them the audit is checking
27
+ * this server's records against this server's own key, which is a question
28
+ * that answers itself - so every answer it could give was conditional.
29
+ */
30
+ trust?: RailTrustPin;
31
+ issuerTrust?: IssuerTrustPin;
32
+ witnessTrust?: IssuerTrustPin;
33
+ payeeTrust?: PayeeTrustPins;
25
34
  };
35
+ /**
36
+ * Whether the file holding this server's signing key is protected by the OS.
37
+ * `owner-only` is a mode this platform enforces; `unprotected-on-this-platform`
38
+ * is Windows, where the same call succeeds and protects nothing because the
39
+ * access control there is the directory ACL, which this server does not set.
40
+ */
41
+ export type StateProtection = "in-memory" | "absent" | "owner-only" | "unprotected-on-this-platform";
26
42
  export type StatusReport = {
27
43
  version: string;
28
44
  policy: Record<string, unknown>;
29
45
  receiptCount: number;
30
46
  chainHead: string | null;
47
+ stateProtection: StateProtection;
31
48
  };
32
49
  export type PanelReceipt = {
33
50
  payer: string;
@@ -44,7 +61,8 @@ export type PanelCheckpoint = {
44
61
  startMs: number;
45
62
  endMs: number;
46
63
  receiptCount: number;
47
- totals: Record<string, string>;
64
+ /** `null` when the checkpoint was signed with its totals withheld. */
65
+ totals: Record<string, string> | null;
48
66
  chainHead: string | null;
49
67
  hash: string;
50
68
  };
@@ -62,6 +80,10 @@ export type LedgerExport = {
62
80
  warnings: Finding[];
63
81
  };
64
82
  export type VerifyArgs = {
83
+ /** Issuer key the caller holds out of band; without it the check is self-referential. */
84
+ expectIssuerKeyPem?: string;
85
+ /** Payee key the caller holds out of band, for the countersignature. */
86
+ expectPayeeKeyPem?: string;
65
87
  receipt?: SignedReceipt;
66
88
  coseHex?: string;
67
89
  publicKeyPem?: string;
@@ -77,6 +99,9 @@ export declare class CedulonSession {
77
99
  checkpoints: SignedCheckpoint[];
78
100
  readonly payer: string;
79
101
  private readonly statePath;
102
+ /** Fingerprint of the state file as this session last saw it. */
103
+ private lastSeenState;
104
+ private lockDepth;
80
105
  constructor(opts?: {
81
106
  policy?: Policy;
82
107
  keys?: AdapterKeys;
@@ -84,17 +109,71 @@ export declare class CedulonSession {
84
109
  payer?: string;
85
110
  });
86
111
  spend(args: SpendArgs, nowMs?: number): SpendOutcome;
112
+ /**
113
+ * Discard what this session was holding and take the file as it now stands.
114
+ * A conflict is otherwise permanent - the session keeps a view the disk no
115
+ * longer matches and refuses every write, with no way back short of restarting
116
+ * the process. Returns the nonces this session was holding that the file does
117
+ * not have, so nothing disappears silently.
118
+ */
119
+ reload(): {
120
+ dropped: string[];
121
+ };
122
+ private snapshot;
123
+ private restore;
124
+ private settleAndRecord;
87
125
  audit(args?: AuditArgs): import("@cedulon/audit").AuditReport;
88
126
  status(): StatusReport;
127
+ /**
128
+ * Said out loud rather than left to be inferred from the absence of an error:
129
+ * a server that writes a private key to disk has to report which protection it
130
+ * actually got.
131
+ */
132
+ stateProtection(): StateProtection;
133
+ /**
134
+ * A path checked once at startup is a path an attacker can replace afterwards,
135
+ * and the directories were never checked at all. Anything symlinked on the way
136
+ * lets whoever placed the link choose where the private key lands.
137
+ */
138
+ private assertNoSymlink;
139
+ /**
140
+ * Reading the fingerprint and then writing leaves a window: two servers that
141
+ * both read before either wrote each saw an unchanged file, and one receipt
142
+ * disappeared with both sides reporting success. An exclusive create is the
143
+ * cheapest thing that actually closes it. A lock whose holder is gone is taken
144
+ * over rather than obeyed forever.
145
+ */
146
+ private withStateLock;
147
+ private lockHolderPid;
148
+ /**
149
+ * A temp file from a write that never finished still holds the signing key in
150
+ * the clear. The writer that left it is gone; nothing else is going to clean
151
+ * it up.
152
+ */
153
+ private sweepStaleTemp;
154
+ private pidIsGone;
155
+ private lockHolderIsGone;
89
156
  exportLedger(): LedgerExport;
157
+ /**
158
+ * `expectIssuerKeyPem` / `expectPayeeKeyPem` are the keys the caller already
159
+ * holds. Without them this answers whether the receipt is internally
160
+ * consistent, which any minted key satisfies - so the answer says which
161
+ * question it answered rather than letting the caller assume the stronger one.
162
+ */
90
163
  verify(args: VerifyArgs): {
91
164
  ok: boolean;
92
165
  receipt: boolean;
93
166
  countersignature: boolean | null;
167
+ issuerCheckedAgainstSuppliedKey: boolean;
168
+ payeeCheckedAgainstSuppliedKey: boolean | null;
94
169
  };
95
170
  private rebuildCheckpoint;
96
171
  private load;
97
172
  private save;
173
+ private writeLocked;
174
+ private writeState;
175
+ /** What the state file looked like the last time this session agreed with it. */
176
+ private readStateFingerprint;
98
177
  }
99
178
  export declare function receiptFromArgs(args: VerifyArgs): SignedReceipt;
100
179
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAkB,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAA2F,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhJ,OAAO,EACL,UAAU,EAEV,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,kBAAkB,EAAE,MAAkE,CAAC;AAEpG,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG;IACtB,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;IACpC;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,8BAA8B,CAAC;AAEnC,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;IAGpB,SAAS,EAAE,eAAe,GAAG,aAAa,CAAC;IAC3C,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AA8BF,wBAAgB,aAAa,IAAI,MAAM,CAUtC;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,aAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAM;IACxC,WAAW,EAAE,gBAAgB,EAAE,CAAM;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,iEAAiE;IACjE,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,SAAS,CAAK;gBAEV,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAmBrG,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,SAAa,GAAG,YAAY;IAiDxD;;;;;;OAMG;IACH,MAAM,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAY/B,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,eAAe;IA8BvB,KAAK,CAAC,IAAI,GAAE,SAAc;IAa1B,MAAM,IAAI,YAAY;IAUtB;;;;OAIG;IACH,eAAe,IAAI,eAAe;IA8ClC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IA4BvB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAsDrB,OAAO,CAAC,aAAa;IASrB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,gBAAgB;IAmBxB,YAAY,IAAI,YAAY;IAmC5B;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG;QACxB,EAAE,EAAE,OAAO,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;QACjC,+BAA+B,EAAE,OAAO,CAAC;QACzC,8BAA8B,EAAE,OAAO,GAAG,IAAI,CAAC;KAChD;IAyBD,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,IAAI;IA0CZ,OAAO,CAAC,IAAI;IA+BZ,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,UAAU;IAelB,iFAAiF;IACjF,OAAO,CAAC,oBAAoB;CAU7B;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAmB/D"}
package/dist/session.js CHANGED
@@ -1,7 +1,8 @@
1
- import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
1
+ import { lstatSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
2
+ import { createHash } from "node:crypto";
2
3
  import { createRequire } from "node:module";
3
- import { dirname } from "node:path";
4
- import { audit } from "@cedulon/audit";
4
+ import { basename, dirname, join } from "node:path";
5
+ import { audit, } from "@cedulon/audit";
5
6
  import { buildCheckpointClaims, checkpointHash, signCheckpoint, } from "@cedulon/checkpoint";
6
7
  import { PolicyEngine, policyDocument } from "@cedulon/core";
7
8
  import { claimsFromCbor, generateReceiptKeys, receiptHash, verifyCounterSignature, verifyReceipt } from "@cedulon/receipts";
@@ -44,6 +45,9 @@ export class CedulonSession {
44
45
  checkpoints = [];
45
46
  payer;
46
47
  statePath;
48
+ /** Fingerprint of the state file as this session last saw it. */
49
+ lastSeenState = null;
50
+ lockDepth = 0;
47
51
  constructor(opts) {
48
52
  this.payer = opts?.payer ?? envOr("CEDULON_PAYER", "payer-1");
49
53
  this.statePath = opts?.statePath !== undefined ? opts.statePath : process.env.CEDULON_STATE_PATH || null;
@@ -54,10 +58,107 @@ export class CedulonSession {
54
58
  receiptPublicPem: generated.publicKeyPem,
55
59
  };
56
60
  if (this.statePath) {
61
+ // Read through on load, a symlink at this path lets whoever placed it
62
+ // decide what this server starts up believing. Refusing the path is the
63
+ // only answer that does not depend on write ordering.
64
+ this.assertNoSymlink();
57
65
  this.load();
66
+ this.lastSeenState = this.readStateFingerprint();
58
67
  }
59
68
  }
60
69
  spend(args, nowMs = Date.now()) {
70
+ // Settle first and save afterwards and a failed save leaves the rail holding
71
+ // a settlement whose receipt exists only in memory. Restart, and it is a
72
+ // settlement with no receipt - the one condition this project exists to make
73
+ // impossible. So the whole thing happens under the lock, and the write is
74
+ // proven possible before any money moves.
75
+ let locked = null;
76
+ try {
77
+ locked = this.withStateLock(() => {
78
+ if (this.statePath) {
79
+ // The path is checked before the fingerprint, not after. A fingerprint
80
+ // taken through a replaced path answers a question about the
81
+ // attacker's file, and the mismatch it produces is reported as
82
+ // state-conflict - which an operator reads as another writer rather
83
+ // than as a stolen destination. Checking the path first means a
84
+ // hijacked one is named as what it is.
85
+ this.assertNoSymlink();
86
+ if (this.readStateFingerprint() !== this.lastSeenState) {
87
+ return { ok: false, reason: "state-conflict" };
88
+ }
89
+ }
90
+ // Everything from here is undone together if the record cannot be
91
+ // written. A settlement the caller was told failed must not survive in
92
+ // memory, must not reach the ledger, and must not be carried out to disk
93
+ // by the next payment that succeeds.
94
+ const undo = this.snapshot();
95
+ try {
96
+ return this.settleAndRecord(args, nowMs);
97
+ }
98
+ catch (err) {
99
+ this.restore(undo);
100
+ if (err?.message === "cedulon-state-symlink") {
101
+ throw err;
102
+ }
103
+ return { ok: false, reason: "state-io" };
104
+ }
105
+ });
106
+ }
107
+ catch (err) {
108
+ const message = err?.message ?? "";
109
+ if (message.startsWith("cedulon-state-locked")) {
110
+ return { ok: false, reason: `state-locked:${message.split(":")[1] ?? "unknown"}` };
111
+ }
112
+ if (message === "cedulon-state-lock-io") {
113
+ return { ok: false, reason: "state-io" };
114
+ }
115
+ throw err;
116
+ }
117
+ return locked;
118
+ }
119
+ /**
120
+ * Discard what this session was holding and take the file as it now stands.
121
+ * A conflict is otherwise permanent - the session keeps a view the disk no
122
+ * longer matches and refuses every write, with no way back short of restarting
123
+ * the process. Returns the nonces this session was holding that the file does
124
+ * not have, so nothing disappears silently.
125
+ */
126
+ reload() {
127
+ const held = this.receipts.map((r) => r.claims.nonce);
128
+ this.receipts.length = 0;
129
+ this.checkpoints = [];
130
+ this.ledger.restore([]);
131
+ this.engine.store.reset();
132
+ this.load();
133
+ this.lastSeenState = this.readStateFingerprint();
134
+ const now = new Set(this.receipts.map((r) => r.claims.nonce));
135
+ return { dropped: held.filter((nonce) => !now.has(nonce)) };
136
+ }
137
+ snapshot() {
138
+ return {
139
+ receipts: [...this.receipts],
140
+ settlements: this.ledger.extract(),
141
+ checkpoints: this.checkpoints,
142
+ usedNonces: new Set(this.engine.store.usedNonces),
143
+ consumedDecisions: new Set(this.engine.store.consumedDecisions),
144
+ counters: { ...this.engine.store.counters },
145
+ nextDecision: this.engine.nextDecision,
146
+ };
147
+ }
148
+ restore(snap) {
149
+ this.receipts.splice(0, this.receipts.length, ...snap.receipts);
150
+ this.ledger.restore(snap.settlements);
151
+ this.checkpoints = snap.checkpoints;
152
+ this.engine.store.usedNonces.clear();
153
+ for (const n of snap.usedNonces)
154
+ this.engine.store.usedNonces.add(n);
155
+ this.engine.store.consumedDecisions.clear();
156
+ for (const d of snap.consumedDecisions)
157
+ this.engine.store.consumedDecisions.add(d);
158
+ this.engine.store.counters = { ...snap.counters };
159
+ this.engine.nextDecision = snap.nextDecision;
160
+ }
161
+ settleAndRecord(args, nowMs) {
61
162
  const prev = this.receipts.length === 0 ? null : receiptHash(this.receipts[this.receipts.length - 1]);
62
163
  const result = gatedSettleWithLedger(this.engine, {
63
164
  req: {
@@ -85,6 +186,10 @@ export class CedulonSession {
85
186
  receipts: this.receipts,
86
187
  checkpoints: this.checkpoints,
87
188
  settlements,
189
+ trust: args.trust,
190
+ issuerTrust: args.issuerTrust,
191
+ witnessTrust: args.witnessTrust,
192
+ payeeTrust: args.payeeTrust,
88
193
  });
89
194
  }
90
195
  status() {
@@ -93,8 +198,225 @@ export class CedulonSession {
93
198
  policy: policyDocument(this.engine.policy),
94
199
  receiptCount: this.receipts.length,
95
200
  chainHead: this.receipts.length === 0 ? null : receiptHash(this.receipts[this.receipts.length - 1]),
201
+ stateProtection: this.stateProtection(),
96
202
  };
97
203
  }
204
+ /**
205
+ * Said out loud rather than left to be inferred from the absence of an error:
206
+ * a server that writes a private key to disk has to report which protection it
207
+ * actually got.
208
+ */
209
+ stateProtection() {
210
+ if (!this.statePath) {
211
+ return "in-memory";
212
+ }
213
+ let file;
214
+ try {
215
+ // Read back off the file rather than inferred from process.platform. A
216
+ // mount that ignores POSIX modes - a Windows drive seen from WSL, some
217
+ // network shares - accepts the call and leaves the file world-readable,
218
+ // and the claim would have been wrong in exactly the case that matters.
219
+ file = statSync(this.statePath);
220
+ }
221
+ catch {
222
+ // "There is no file" is a different fact from "the file has no
223
+ // protection", and an operator acting on the second would be chasing a
224
+ // permission problem that does not exist.
225
+ return "absent";
226
+ }
227
+ if ((file.mode & 0o777) !== 0o600) {
228
+ return "unprotected-on-this-platform";
229
+ }
230
+ // Mode 0600 says who can open the file, and the parent says who can replace
231
+ // it - but a grandparent anyone can write lets the parent itself be renamed
232
+ // away, key and all, with a decoy left in its place. So walk up: every
233
+ // directory on the path has to be closed to others, or sticky, which is what
234
+ // makes a shared /tmp safe against exactly that rename.
235
+ let dir = dirname(this.statePath);
236
+ for (;;) {
237
+ let entry;
238
+ try {
239
+ entry = statSync(dir);
240
+ }
241
+ catch {
242
+ return "unprotected-on-this-platform";
243
+ }
244
+ const openToOthers = (entry.mode & 0o022) !== 0;
245
+ const sticky = (entry.mode & 0o1000) !== 0;
246
+ if (openToOthers && !sticky) {
247
+ return "unprotected-on-this-platform";
248
+ }
249
+ const parent = dirname(dir);
250
+ if (parent === dir) {
251
+ return "owner-only";
252
+ }
253
+ dir = parent;
254
+ }
255
+ }
256
+ /**
257
+ * A path checked once at startup is a path an attacker can replace afterwards,
258
+ * and the directories were never checked at all. Anything symlinked on the way
259
+ * lets whoever placed the link choose where the private key lands.
260
+ */
261
+ assertNoSymlink() {
262
+ if (!this.statePath) {
263
+ return;
264
+ }
265
+ const seen = [];
266
+ let node = this.statePath;
267
+ for (;;) {
268
+ seen.push(node);
269
+ const parent = dirname(node);
270
+ if (parent === node) {
271
+ break;
272
+ }
273
+ node = parent;
274
+ }
275
+ for (const path of seen) {
276
+ try {
277
+ if (lstatSync(path).isSymbolicLink()) {
278
+ throw new Error("cedulon-state-symlink");
279
+ }
280
+ }
281
+ catch (err) {
282
+ if (err?.code === "ENOENT") {
283
+ continue;
284
+ }
285
+ throw err;
286
+ }
287
+ }
288
+ }
289
+ /**
290
+ * Reading the fingerprint and then writing leaves a window: two servers that
291
+ * both read before either wrote each saw an unchanged file, and one receipt
292
+ * disappeared with both sides reporting success. An exclusive create is the
293
+ * cheapest thing that actually closes it. A lock whose holder is gone is taken
294
+ * over rather than obeyed forever.
295
+ */
296
+ withStateLock(run) {
297
+ if (!this.statePath || this.lockDepth > 0) {
298
+ // Already held by an outer call - settling and saving happen under one
299
+ // lock, so the payment and the record it needs cannot be separated.
300
+ this.lockDepth += 1;
301
+ try {
302
+ return run();
303
+ }
304
+ finally {
305
+ this.lockDepth -= 1;
306
+ }
307
+ }
308
+ // The lock now guards the whole settle-and-save, which can run before the
309
+ // state file has ever been written, so its directory has to exist first.
310
+ mkdirSync(dirname(this.statePath), { recursive: true, mode: 0o700 });
311
+ const lockPath = `${this.statePath}.lock`;
312
+ // The lock path decides where a file gets created just as the state path
313
+ // does, so it is guarded the same way.
314
+ try {
315
+ if (lstatSync(lockPath).isSymbolicLink()) {
316
+ throw new Error("cedulon-state-symlink");
317
+ }
318
+ }
319
+ catch (err) {
320
+ if (err?.code !== "ENOENT") {
321
+ throw err;
322
+ }
323
+ }
324
+ this.sweepStaleTemp();
325
+ const claim = () => writeFileSync(lockPath, JSON.stringify({ pid: process.pid }), { flag: "wx", mode: 0o600 });
326
+ try {
327
+ claim();
328
+ }
329
+ catch (err) {
330
+ if (err?.code !== "EEXIST") {
331
+ // The lock sits beside the state file, so a directory that cannot be
332
+ // written refuses the lock before it ever refuses the record. That is
333
+ // the same failure as a write that cannot complete, and the caller has
334
+ // to hear it as a refused payment rather than as a crash: the mapping
335
+ // to state-io lives inside the lock and is unreachable from here.
336
+ throw new Error("cedulon-state-lock-io", { cause: err });
337
+ }
338
+ if (!this.lockHolderIsGone(lockPath)) {
339
+ throw new Error(`cedulon-state-locked:${this.lockHolderPid(lockPath) ?? "unknown"}`);
340
+ }
341
+ rmSync(lockPath, { force: true });
342
+ claim();
343
+ }
344
+ this.lockDepth += 1;
345
+ try {
346
+ return run();
347
+ }
348
+ finally {
349
+ this.lockDepth -= 1;
350
+ rmSync(lockPath, { force: true });
351
+ }
352
+ }
353
+ lockHolderPid(lockPath) {
354
+ try {
355
+ const pid = JSON.parse(readFileSync(lockPath, "utf8")).pid;
356
+ return typeof pid === "number" ? pid : null;
357
+ }
358
+ catch {
359
+ return null;
360
+ }
361
+ }
362
+ /**
363
+ * A temp file from a write that never finished still holds the signing key in
364
+ * the clear. The writer that left it is gone; nothing else is going to clean
365
+ * it up.
366
+ */
367
+ sweepStaleTemp() {
368
+ if (!this.statePath) {
369
+ return;
370
+ }
371
+ const dir = dirname(this.statePath);
372
+ const prefix = `.${basename(this.statePath)}.`;
373
+ let entries;
374
+ try {
375
+ entries = readdirSync(dir);
376
+ }
377
+ catch {
378
+ return;
379
+ }
380
+ for (const entry of entries) {
381
+ if (!entry.startsWith(prefix) || !entry.endsWith(".tmp")) {
382
+ continue;
383
+ }
384
+ const pid = Number(entry.slice(prefix.length, -".tmp".length));
385
+ if (Number.isFinite(pid) && pid !== process.pid && !this.pidIsGone(pid)) {
386
+ continue;
387
+ }
388
+ rmSync(join(dir, entry), { force: true });
389
+ }
390
+ }
391
+ pidIsGone(pid) {
392
+ try {
393
+ process.kill(pid, 0);
394
+ return false;
395
+ }
396
+ catch (err) {
397
+ return err?.code !== "EPERM";
398
+ }
399
+ }
400
+ lockHolderIsGone(lockPath) {
401
+ let pid;
402
+ try {
403
+ pid = JSON.parse(readFileSync(lockPath, "utf8")).pid;
404
+ }
405
+ catch {
406
+ // A lock we cannot read says nothing about who holds it.
407
+ return true;
408
+ }
409
+ if (typeof pid !== "number" || pid === process.pid) {
410
+ return true;
411
+ }
412
+ try {
413
+ process.kill(pid, 0);
414
+ return false;
415
+ }
416
+ catch (err) {
417
+ return err?.code !== "EPERM";
418
+ }
419
+ }
98
420
  exportLedger() {
99
421
  const report = this.audit();
100
422
  const gap = report.findings.find((f) => f.code === "settlement-without-receipt");
@@ -129,14 +451,35 @@ export class CedulonSession {
129
451
  warnings: report.warnings,
130
452
  };
131
453
  }
454
+ /**
455
+ * `expectIssuerKeyPem` / `expectPayeeKeyPem` are the keys the caller already
456
+ * holds. Without them this answers whether the receipt is internally
457
+ * consistent, which any minted key satisfies - so the answer says which
458
+ * question it answered rather than letting the caller assume the stronger one.
459
+ */
132
460
  verify(args) {
133
461
  const signed = receiptFromArgs(args);
134
- const receiptOk = verifyReceipt(signed);
462
+ const receiptOk = verifyReceipt(signed, args.expectIssuerKeyPem);
463
+ // Two questions, so two answers. One flag read as "nothing was checked"
464
+ // whenever either key was missing, including when the issuer had been.
465
+ const issuerCheckedAgainstSuppliedKey = args.expectIssuerKeyPem !== undefined;
135
466
  if (!signed.counterCoseHex) {
136
- return { ok: receiptOk, receipt: receiptOk, countersignature: null };
467
+ return {
468
+ ok: receiptOk,
469
+ receipt: receiptOk,
470
+ countersignature: null,
471
+ issuerCheckedAgainstSuppliedKey,
472
+ payeeCheckedAgainstSuppliedKey: null,
473
+ };
137
474
  }
138
- const counterOk = verifyCounterSignature(signed);
139
- return { ok: receiptOk && counterOk, receipt: receiptOk, countersignature: counterOk };
475
+ const counterOk = verifyCounterSignature(signed, args.expectPayeeKeyPem);
476
+ return {
477
+ ok: receiptOk && counterOk,
478
+ receipt: receiptOk,
479
+ countersignature: counterOk,
480
+ issuerCheckedAgainstSuppliedKey,
481
+ payeeCheckedAgainstSuppliedKey: args.expectPayeeKeyPem !== undefined,
482
+ };
140
483
  }
141
484
  rebuildCheckpoint(nowMs) {
142
485
  if (this.receipts.length === 0) {
@@ -161,7 +504,15 @@ export class CedulonSession {
161
504
  catch {
162
505
  return;
163
506
  }
164
- const parsed = JSON.parse(raw);
507
+ let parsed;
508
+ try {
509
+ parsed = JSON.parse(raw);
510
+ }
511
+ catch {
512
+ // A file that does not parse is not an empty ledger. Starting from zero
513
+ // here would quietly drop every receipt the state was holding.
514
+ throw new Error("cedulon-state-unreadable");
515
+ }
165
516
  if (parsed.version !== 1) {
166
517
  throw new Error("cedulon-state-version");
167
518
  }
@@ -204,8 +555,59 @@ export class CedulonSession {
204
555
  allowedSum: this.engine.store.counters.allowedSum.toString(),
205
556
  },
206
557
  };
207
- mkdirSync(dirname(this.statePath), { recursive: true });
208
- writeFileSync(this.statePath, `${JSON.stringify(payload)}\n`);
558
+ // The receipt private key is in this payload in the clear: there is no
559
+ // secret to encrypt it with here, so the file mode is the whole protection.
560
+ // And writeFileSync truncates before it writes - a crash in between leaves a
561
+ // short file that the next start would read as the whole ledger. Write to a
562
+ // temporary name in the same directory, then rename: on POSIX and on NTFS
563
+ // the swap is atomic, so a reader sees the old file or the new one.
564
+ const dir = dirname(this.statePath);
565
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
566
+ this.assertNoSymlink();
567
+ this.writeLocked(dir, payload);
568
+ }
569
+ writeLocked(dir, payload) {
570
+ if (!this.statePath) {
571
+ return;
572
+ }
573
+ this.withStateLock(() => {
574
+ // Atomic writes stop a torn file; they do not stop a lost one. Two servers
575
+ // sharing a state path both load it, both append, and the later rename
576
+ // wins - the other one's receipt is simply gone. Comparing under the lock
577
+ // turns that into a loud stop.
578
+ const current = this.readStateFingerprint();
579
+ if (current !== this.lastSeenState) {
580
+ throw new Error("cedulon-state-conflict");
581
+ }
582
+ this.writeState(dir, payload);
583
+ });
584
+ }
585
+ writeState(dir, payload) {
586
+ if (!this.statePath) {
587
+ return;
588
+ }
589
+ const tmp = join(dir, `.${basename(this.statePath)}.${process.pid}.tmp`);
590
+ writeFileSync(tmp, `${JSON.stringify(payload)}\n`, { mode: 0o600 });
591
+ try {
592
+ renameSync(tmp, this.statePath);
593
+ }
594
+ catch (err) {
595
+ rmSync(tmp, { force: true });
596
+ throw err;
597
+ }
598
+ this.lastSeenState = this.readStateFingerprint();
599
+ }
600
+ /** What the state file looked like the last time this session agreed with it. */
601
+ readStateFingerprint() {
602
+ if (!this.statePath) {
603
+ return null;
604
+ }
605
+ try {
606
+ return createHash("sha256").update(readFileSync(this.statePath)).digest("hex");
607
+ }
608
+ catch {
609
+ return null;
610
+ }
209
611
  }
210
612
  }
211
613
  export function receiptFromArgs(args) {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cedulon/mcp-server",
3
- "version": "0.2.4",
3
+ "version": "0.3.1",
4
4
  "mcpName": "io.github.dogrucanemek-alt/cedulon",
5
5
  "description": "Local stdio MCP server for policy-gated Cedulon spend and audit.",
6
6
  "license": "Apache-2.0",
@@ -44,12 +44,12 @@
44
44
  "access": "public"
45
45
  },
46
46
  "dependencies": {
47
- "@cedulon/audit": "^0.2.0",
48
- "@cedulon/checkpoint": "^0.2.0",
49
- "@cedulon/core": "^0.2.0",
50
- "@cedulon/cose": "^0.2.0",
51
- "@cedulon/receipts": "^0.2.0",
52
- "@cedulon/x402-adapter": "^0.2.0",
47
+ "@cedulon/audit": "^0.3.0",
48
+ "@cedulon/checkpoint": "^0.3.0",
49
+ "@cedulon/core": "^0.3.0",
50
+ "@cedulon/cose": "^0.3.0",
51
+ "@cedulon/receipts": "^0.3.0",
52
+ "@cedulon/x402-adapter": "^0.3.0",
53
53
  "@modelcontextprotocol/sdk": "^1.30.0"
54
54
  }
55
55
  }