@sentropic/h2a-cli 0.1.1 → 0.1.7
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/bin.js +30 -2
- package/dist/bin.js.map +1 -1
- package/dist/cli-contract.d.ts +62 -0
- package/dist/cli-contract.d.ts.map +1 -0
- package/dist/cli-contract.js +239 -0
- package/dist/cli-contract.js.map +1 -0
- package/dist/cli.d.ts +51 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +711 -2
- package/dist/cli.js.map +1 -1
- package/dist/hosts/claude.d.ts +11 -6
- package/dist/hosts/claude.d.ts.map +1 -1
- package/dist/hosts/claude.js +40 -1
- package/dist/hosts/claude.js.map +1 -1
- package/dist/hosts/codex.d.ts +64 -6
- package/dist/hosts/codex.d.ts.map +1 -1
- package/dist/hosts/codex.js +39 -1
- package/dist/hosts/codex.js.map +1 -1
- package/dist/hosts/gemini.d.ts +8 -6
- package/dist/hosts/gemini.d.ts.map +1 -1
- package/dist/hosts/gemini.js +9 -1
- package/dist/hosts/gemini.js.map +1 -1
- package/dist/index.d.ts +8 -34
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/runtime/local-files/index.d.ts +5 -0
- package/dist/runtime/local-files/index.d.ts.map +1 -0
- package/dist/runtime/local-files/index.js +5 -0
- package/dist/runtime/local-files/index.js.map +1 -0
- package/dist/runtime/local-files/locks.d.ts +43 -0
- package/dist/runtime/local-files/locks.d.ts.map +1 -0
- package/dist/runtime/local-files/locks.js +197 -0
- package/dist/runtime/local-files/locks.js.map +1 -0
- package/dist/runtime/local-files/paths.d.ts +18 -0
- package/dist/runtime/local-files/paths.d.ts.map +1 -0
- package/dist/runtime/local-files/paths.js +28 -0
- package/dist/runtime/local-files/paths.js.map +1 -0
- package/dist/runtime/local-files/schema.d.ts +47 -0
- package/dist/runtime/local-files/schema.d.ts.map +1 -0
- package/dist/runtime/local-files/schema.js +77 -0
- package/dist/runtime/local-files/schema.js.map +1 -0
- package/dist/runtime/local-files/store.d.ts +44 -0
- package/dist/runtime/local-files/store.d.ts.map +1 -0
- package/dist/runtime/local-files/store.js +407 -0
- package/dist/runtime/local-files/store.js.map +1 -0
- package/dist/runtime/mcp/handlers.d.ts +62 -0
- package/dist/runtime/mcp/handlers.d.ts.map +1 -0
- package/dist/runtime/mcp/handlers.js +261 -0
- package/dist/runtime/mcp/handlers.js.map +1 -0
- package/dist/runtime/mcp/index.d.ts +5 -0
- package/dist/runtime/mcp/index.d.ts.map +1 -0
- package/dist/runtime/mcp/index.js +5 -0
- package/dist/runtime/mcp/index.js.map +1 -0
- package/dist/runtime/mcp/server.d.ts +26 -0
- package/dist/runtime/mcp/server.d.ts.map +1 -0
- package/dist/runtime/mcp/server.js +45 -0
- package/dist/runtime/mcp/server.js.map +1 -0
- package/dist/runtime/mcp/stdio.d.ts +21 -0
- package/dist/runtime/mcp/stdio.d.ts.map +1 -0
- package/dist/runtime/mcp/stdio.js +103 -0
- package/dist/runtime/mcp/stdio.js.map +1 -0
- package/dist/runtime/mcp/tools.d.ts +19 -0
- package/dist/runtime/mcp/tools.d.ts.map +1 -0
- package/dist/runtime/mcp/tools.js +175 -0
- package/dist/runtime/mcp/tools.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { H2A_ARTIFACT_KINDS, H2A_AUTHORITY_MATRIX, appendJournalEntry, assertValidNegotiationState, canSignArtifactKind, computeHash, createJournalEntry, isH2AEnvelope, verifyCanonical, verifyJournalChain } from "@sentropic/h2a";
|
|
4
|
+
import { withLockSync } from "./locks.js";
|
|
5
|
+
import { inboxDir, localStorePaths, negotiationDir, negotiationJournalFile, outboxDir } from "./paths.js";
|
|
6
|
+
import { H2A_STORE_SCHEMA_FILE, H2A_STORE_SCHEMA_VERSION, StoreSchemaMismatchError, readCliPackageVersion } from "./schema.js";
|
|
7
|
+
function ensureDir(path) {
|
|
8
|
+
mkdirSync(path, { recursive: true });
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Compute the immutable on-disk target for a stabilized artifact (DEC-031, DEC-033).
|
|
12
|
+
* `CONTRACT`/`POLICY`/`ENGAGEMENT` get their own subtree keyed by `artifact.id`;
|
|
13
|
+
* anything else (AMENDMENT/MANDATE/AUTHORITY/ENFORCEMENT_PLAN/unknown) falls
|
|
14
|
+
* back to `<root>/artifacts/<artifactHash>.json` so write-once semantics still
|
|
15
|
+
* apply (DEC-033).
|
|
16
|
+
*/
|
|
17
|
+
function resolveStabilizedArtifactPath(paths, artifact, artifactHash) {
|
|
18
|
+
const a = (typeof artifact === "object" && artifact !== null
|
|
19
|
+
? artifact
|
|
20
|
+
: {});
|
|
21
|
+
const kind = typeof a.kind === "string" ? a.kind : undefined;
|
|
22
|
+
const id = typeof a.id === "string" ? a.id : undefined;
|
|
23
|
+
if (kind === "CONTRACT" && id) {
|
|
24
|
+
return join(paths.contracts, id, "contract.json");
|
|
25
|
+
}
|
|
26
|
+
if (kind === "POLICY" && id) {
|
|
27
|
+
return join(paths.policies, `${id}.json`);
|
|
28
|
+
}
|
|
29
|
+
if (kind === "ENGAGEMENT" && id) {
|
|
30
|
+
return join(paths.engagements, id, "charter.json");
|
|
31
|
+
}
|
|
32
|
+
// Fallback: hash-addressed under <root>/artifacts/. We replace ":" so the
|
|
33
|
+
// canonical "sha256:<hex>" prefix maps to a portable filename.
|
|
34
|
+
const safeHash = artifactHash.replace(/:/g, "_");
|
|
35
|
+
return join(paths.artifacts, `${safeHash}.json`);
|
|
36
|
+
}
|
|
37
|
+
function ensureLayout(paths) {
|
|
38
|
+
ensureDir(paths.root);
|
|
39
|
+
ensureDir(paths.registry);
|
|
40
|
+
ensureDir(paths.contracts);
|
|
41
|
+
ensureDir(paths.policies);
|
|
42
|
+
ensureDir(paths.engagements);
|
|
43
|
+
ensureDir(paths.artifacts);
|
|
44
|
+
ensureDir(paths.negotiations);
|
|
45
|
+
ensureDir(paths.inbox);
|
|
46
|
+
ensureDir(paths.outbox);
|
|
47
|
+
}
|
|
48
|
+
function readJsonl(file) {
|
|
49
|
+
if (!existsSync(file))
|
|
50
|
+
return [];
|
|
51
|
+
const content = readFileSync(file, "utf8");
|
|
52
|
+
if (content.length === 0)
|
|
53
|
+
return [];
|
|
54
|
+
const lines = content.split("\n");
|
|
55
|
+
const out = [];
|
|
56
|
+
for (const line of lines) {
|
|
57
|
+
if (line.length === 0)
|
|
58
|
+
continue;
|
|
59
|
+
out.push(JSON.parse(line));
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
function appendJsonl(file, value) {
|
|
64
|
+
appendFileSync(file, `${JSON.stringify(value)}\n`, { encoding: "utf8" });
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Initialize or validate the schema sentinel for a store root (DEC-036).
|
|
68
|
+
* Returns silently on success; throws `StoreSchemaMismatchError` if the
|
|
69
|
+
* on-disk version is unknown and `allowVersionMismatch` is false.
|
|
70
|
+
*/
|
|
71
|
+
function ensureSchemaSentinel(root, options) {
|
|
72
|
+
const sentinelPath = join(root, H2A_STORE_SCHEMA_FILE);
|
|
73
|
+
if (!existsSync(sentinelPath)) {
|
|
74
|
+
const payload = {
|
|
75
|
+
version: H2A_STORE_SCHEMA_VERSION,
|
|
76
|
+
createdAt: new Date().toISOString(),
|
|
77
|
+
createdBy: readCliPackageVersion()
|
|
78
|
+
};
|
|
79
|
+
writeFileSync(sentinelPath, `${JSON.stringify(payload, null, 2)}\n`, "utf8");
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
let parsed;
|
|
83
|
+
try {
|
|
84
|
+
parsed = JSON.parse(readFileSync(sentinelPath, "utf8"));
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
throw new StoreSchemaMismatchError("<unparseable>", H2A_STORE_SCHEMA_VERSION, root);
|
|
88
|
+
}
|
|
89
|
+
const found = typeof parsed.version === "string" ? parsed.version : "<missing>";
|
|
90
|
+
if (found === H2A_STORE_SCHEMA_VERSION)
|
|
91
|
+
return;
|
|
92
|
+
if (options.allowVersionMismatch) {
|
|
93
|
+
process.stderr.write(`h2a store: schema version mismatch at ${root} (found "${found}", expected "${H2A_STORE_SCHEMA_VERSION}"); proceeding read-only because allowVersionMismatch=true (DEC-036)\n`);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
throw new StoreSchemaMismatchError(found, H2A_STORE_SCHEMA_VERSION, root);
|
|
97
|
+
}
|
|
98
|
+
export function createLocalStore(options) {
|
|
99
|
+
const paths = localStorePaths(options.root);
|
|
100
|
+
ensureLayout(paths);
|
|
101
|
+
ensureSchemaSentinel(paths.root, {
|
|
102
|
+
allowVersionMismatch: options.allowVersionMismatch === true
|
|
103
|
+
});
|
|
104
|
+
if (!existsSync(paths.instances)) {
|
|
105
|
+
writeFileSync(paths.instances, "", { encoding: "utf8" });
|
|
106
|
+
}
|
|
107
|
+
const lockTimeoutMs = options.lockTimeoutMs ?? 5000;
|
|
108
|
+
const lockOpts = { timeoutMs: lockTimeoutMs };
|
|
109
|
+
const registryLock = join(paths.registry, ".lock");
|
|
110
|
+
const negotiationLock = (id) => join(negotiationDir(paths, id), ".lock");
|
|
111
|
+
const inboxLock = (actor) => join(inboxDir(paths, actor), ".lock");
|
|
112
|
+
const outboxLock = (actor) => join(outboxDir(paths, actor), ".lock");
|
|
113
|
+
function listInstances() {
|
|
114
|
+
return readJsonl(paths.instances);
|
|
115
|
+
}
|
|
116
|
+
function findInstance(id) {
|
|
117
|
+
return listInstances().find((entry) => entry.id === id);
|
|
118
|
+
}
|
|
119
|
+
function registerInstance(reg) {
|
|
120
|
+
withLockSync(registryLock, () => {
|
|
121
|
+
if (findInstance(reg.id)) {
|
|
122
|
+
throw new Error(`Instance already registered: ${reg.id}`);
|
|
123
|
+
}
|
|
124
|
+
appendJsonl(paths.instances, reg);
|
|
125
|
+
}, lockOpts);
|
|
126
|
+
}
|
|
127
|
+
function negotiationStateFile(id) {
|
|
128
|
+
return `${negotiationDir(paths, id)}/state.json`;
|
|
129
|
+
}
|
|
130
|
+
function openNegotiation(record) {
|
|
131
|
+
assertValidNegotiationState(record.status);
|
|
132
|
+
ensureDir(negotiationDir(paths, record.id));
|
|
133
|
+
return withLockSync(negotiationLock(record.id), () => {
|
|
134
|
+
const file = negotiationStateFile(record.id);
|
|
135
|
+
if (existsSync(file)) {
|
|
136
|
+
throw new Error(`Negotiation already open: ${record.id}`);
|
|
137
|
+
}
|
|
138
|
+
writeFileSync(file, `${JSON.stringify(record, null, 2)}\n`, "utf8");
|
|
139
|
+
return record;
|
|
140
|
+
}, lockOpts);
|
|
141
|
+
}
|
|
142
|
+
function readNegotiation(id) {
|
|
143
|
+
const file = negotiationStateFile(id);
|
|
144
|
+
if (!existsSync(file))
|
|
145
|
+
return undefined;
|
|
146
|
+
return JSON.parse(readFileSync(file, "utf8"));
|
|
147
|
+
}
|
|
148
|
+
function updateNegotiationStatus(id, status) {
|
|
149
|
+
assertValidNegotiationState(status);
|
|
150
|
+
ensureDir(negotiationDir(paths, id));
|
|
151
|
+
return withLockSync(negotiationLock(id), () => {
|
|
152
|
+
const current = readNegotiation(id);
|
|
153
|
+
if (!current) {
|
|
154
|
+
throw new Error(`Negotiation not found: ${id}`);
|
|
155
|
+
}
|
|
156
|
+
const updated = { ...current, status };
|
|
157
|
+
writeFileSync(negotiationStateFile(id), `${JSON.stringify(updated, null, 2)}\n`, "utf8");
|
|
158
|
+
return updated;
|
|
159
|
+
}, lockOpts);
|
|
160
|
+
}
|
|
161
|
+
function readNegotiationJournalUnlocked(negotiationId) {
|
|
162
|
+
const file = negotiationJournalFile(paths, negotiationId);
|
|
163
|
+
if (!existsSync(file))
|
|
164
|
+
return [];
|
|
165
|
+
const entries = readJsonl(file);
|
|
166
|
+
const check = verifyJournalChain(entries);
|
|
167
|
+
if (!check.ok) {
|
|
168
|
+
throw new Error(`Negotiation ${negotiationId}: corrupt journal chain at index ${check.index}: ${check.reason}`);
|
|
169
|
+
}
|
|
170
|
+
return entries;
|
|
171
|
+
}
|
|
172
|
+
function readNegotiationJournal(negotiationId) {
|
|
173
|
+
return readNegotiationJournalUnlocked(negotiationId);
|
|
174
|
+
}
|
|
175
|
+
function appendNegotiationEvent(negotiationId, payload) {
|
|
176
|
+
ensureDir(negotiationDir(paths, negotiationId));
|
|
177
|
+
return withLockSync(negotiationLock(negotiationId), () => {
|
|
178
|
+
const file = negotiationJournalFile(paths, negotiationId);
|
|
179
|
+
const existing = readNegotiationJournalUnlocked(negotiationId);
|
|
180
|
+
const previous = existing[existing.length - 1];
|
|
181
|
+
const entry = previous
|
|
182
|
+
? appendJournalEntry(previous, payload)
|
|
183
|
+
: createJournalEntry(payload);
|
|
184
|
+
appendJsonl(file, entry);
|
|
185
|
+
return entry;
|
|
186
|
+
}, lockOpts);
|
|
187
|
+
}
|
|
188
|
+
function stabilizeNegotiation(negotiationId, options = {}) {
|
|
189
|
+
ensureDir(negotiationDir(paths, negotiationId));
|
|
190
|
+
return withLockSync(negotiationLock(negotiationId), () => {
|
|
191
|
+
const record = readNegotiation(negotiationId);
|
|
192
|
+
if (!record) {
|
|
193
|
+
throw new Error(`Negotiation not found: ${negotiationId}`);
|
|
194
|
+
}
|
|
195
|
+
if (record.status === "stabilized") {
|
|
196
|
+
throw new Error(`Negotiation already stabilized: ${negotiationId}`);
|
|
197
|
+
}
|
|
198
|
+
if (!Array.isArray(record.requiredSigners) || record.requiredSigners.length === 0) {
|
|
199
|
+
throw new Error(`Negotiation ${negotiationId} has no requiredSigners`);
|
|
200
|
+
}
|
|
201
|
+
const entries = readNegotiationJournalUnlocked(negotiationId);
|
|
202
|
+
const byHash = new Map();
|
|
203
|
+
for (const entry of entries) {
|
|
204
|
+
const body = entry.body;
|
|
205
|
+
if (!body || body.kind !== "signature")
|
|
206
|
+
continue;
|
|
207
|
+
if (typeof body.artifactHash !== "string" || !body.signature)
|
|
208
|
+
continue;
|
|
209
|
+
const signer = entry.actor.instance;
|
|
210
|
+
const sig = body.signature;
|
|
211
|
+
if (sig.by !== signer) {
|
|
212
|
+
throw new Error(`Negotiation ${negotiationId}: signature by ${sig.by} does not match actor.instance ${signer}`);
|
|
213
|
+
}
|
|
214
|
+
const registration = findInstance(signer);
|
|
215
|
+
if (!registration) {
|
|
216
|
+
throw new Error(`Negotiation ${negotiationId}: signer ${signer} is not registered`);
|
|
217
|
+
}
|
|
218
|
+
const keys = registration.publicKeys ?? [];
|
|
219
|
+
if (keys.length === 0) {
|
|
220
|
+
throw new Error(`Negotiation ${negotiationId}: signer ${signer} has no publicKeys in the registry`);
|
|
221
|
+
}
|
|
222
|
+
const verified = keys.some((pem) => verifyCanonical({ artifactHash: body.artifactHash }, sig, pem));
|
|
223
|
+
if (!verified) {
|
|
224
|
+
throw new Error(`Negotiation ${negotiationId}: signature by ${signer} fails verification against registered keys`);
|
|
225
|
+
}
|
|
226
|
+
const bucket = byHash.get(body.artifactHash) ?? new Map();
|
|
227
|
+
bucket.set(signer, sig);
|
|
228
|
+
byHash.set(body.artifactHash, bucket);
|
|
229
|
+
}
|
|
230
|
+
const required = new Set(record.requiredSigners);
|
|
231
|
+
let winningHash;
|
|
232
|
+
for (const [hash, bucket] of byHash) {
|
|
233
|
+
const have = new Set(bucket.keys());
|
|
234
|
+
const allPresent = [...required].every((id) => have.has(id));
|
|
235
|
+
if (allPresent) {
|
|
236
|
+
winningHash = hash;
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!winningHash) {
|
|
241
|
+
const summary = [...byHash].map(([hash, bucket]) => `${hash} signed by ${[...bucket.keys()].join(",")}`);
|
|
242
|
+
throw new Error(`Negotiation ${negotiationId}: no artifactHash has the full quorum (${record.requiredSigners.join(",")}). Collected: ${summary.join(" | ")}`);
|
|
243
|
+
}
|
|
244
|
+
// Walk back through the journal to find the offer/counter event whose body.artifact
|
|
245
|
+
// hashes to the winning artifactHash. We then persist that artifact JSON to its
|
|
246
|
+
// immutable target file (DEC-031 + DEC-033).
|
|
247
|
+
let winningArtifact;
|
|
248
|
+
for (const entry of entries) {
|
|
249
|
+
const body = entry.body;
|
|
250
|
+
if (!body || body.artifact === undefined)
|
|
251
|
+
continue;
|
|
252
|
+
if (computeHash(body.artifact) === winningHash) {
|
|
253
|
+
winningArtifact = body.artifact;
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
if (winningArtifact === undefined) {
|
|
258
|
+
throw new Error(`stabilizeNegotiation: no offer/counter event matches the winning artifactHash ${winningHash}`);
|
|
259
|
+
}
|
|
260
|
+
// Authority check (DEC-035): every signer of the winning artifactHash
|
|
261
|
+
// must hold at least one role allowed by H2A_AUTHORITY_MATRIX for the
|
|
262
|
+
// artifact's declared kind. Unknown/missing kinds emit a stderr warning
|
|
263
|
+
// and skip the check (V1 permissive on extension).
|
|
264
|
+
const winningKind = (typeof winningArtifact === "object" && winningArtifact !== null
|
|
265
|
+
? winningArtifact.kind
|
|
266
|
+
: undefined);
|
|
267
|
+
const knownKind = typeof winningKind === "string" &&
|
|
268
|
+
H2A_ARTIFACT_KINDS.includes(winningKind)
|
|
269
|
+
? winningKind
|
|
270
|
+
: undefined;
|
|
271
|
+
if (knownKind) {
|
|
272
|
+
const signersBucket = byHash.get(winningHash);
|
|
273
|
+
if (signersBucket) {
|
|
274
|
+
for (const signer of signersBucket.keys()) {
|
|
275
|
+
const reg = findInstance(signer);
|
|
276
|
+
const roles = (reg?.roles ?? []);
|
|
277
|
+
const allowed = roles.some((role) => canSignArtifactKind(role, knownKind));
|
|
278
|
+
if (!allowed) {
|
|
279
|
+
throw new Error(`Negotiation ${negotiationId}: signer ${signer} is not authorized to sign artifact kind ${knownKind} (roles: [${roles.join(",")}]); allowed roles: [${H2A_AUTHORITY_MATRIX[knownKind].roles.join(",")}]`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
process.stderr.write(`h2a stabilize: negotiation ${negotiationId} artifact ${winningHash} has no recognizable kind; skipping authority check (DEC-035)\n`);
|
|
286
|
+
}
|
|
287
|
+
const artifactPath = resolveStabilizedArtifactPath(paths, winningArtifact, winningHash);
|
|
288
|
+
ensureDir(dirname(artifactPath));
|
|
289
|
+
try {
|
|
290
|
+
writeFileSync(artifactPath, `${JSON.stringify(winningArtifact, null, 2)}\n`, { encoding: "utf8", flag: "wx" });
|
|
291
|
+
}
|
|
292
|
+
catch (err) {
|
|
293
|
+
const e = err;
|
|
294
|
+
if (e.code === "EEXIST") {
|
|
295
|
+
throw new Error(`stabilizeNegotiation: stabilized artifact already on disk at ${artifactPath}`);
|
|
296
|
+
}
|
|
297
|
+
throw err;
|
|
298
|
+
}
|
|
299
|
+
// Inline append + status update (we already hold the per-negotiation
|
|
300
|
+
// lock, so we cannot recurse into the wrapped helpers).
|
|
301
|
+
const journalFile = negotiationJournalFile(paths, negotiationId);
|
|
302
|
+
const entriesForAppend = readNegotiationJournalUnlocked(negotiationId);
|
|
303
|
+
const previous = entriesForAppend[entriesForAppend.length - 1];
|
|
304
|
+
const finalPayload = {
|
|
305
|
+
id: options.eventId ?? `evt-stabilize-${Date.now().toString(36)}`,
|
|
306
|
+
type: "event",
|
|
307
|
+
actor: { instance: "h2a-cli", role: "MANDATAIRE", scope: record.scope },
|
|
308
|
+
body: {
|
|
309
|
+
kind: "stabilized",
|
|
310
|
+
artifactHash: winningHash,
|
|
311
|
+
signers: record.requiredSigners,
|
|
312
|
+
artifactPath
|
|
313
|
+
},
|
|
314
|
+
createdAt: new Date().toISOString()
|
|
315
|
+
};
|
|
316
|
+
const finalEvent = previous
|
|
317
|
+
? appendJournalEntry(previous, finalPayload)
|
|
318
|
+
: createJournalEntry(finalPayload);
|
|
319
|
+
appendJsonl(journalFile, finalEvent);
|
|
320
|
+
const updated = {
|
|
321
|
+
...record,
|
|
322
|
+
status: "stabilized",
|
|
323
|
+
currentArtifactHash: winningHash
|
|
324
|
+
};
|
|
325
|
+
writeFileSync(negotiationStateFile(negotiationId), `${JSON.stringify(updated, null, 2)}\n`, "utf8");
|
|
326
|
+
return {
|
|
327
|
+
record: updated,
|
|
328
|
+
artifactHash: winningHash,
|
|
329
|
+
signers: record.requiredSigners,
|
|
330
|
+
finalEvent,
|
|
331
|
+
artifactPath
|
|
332
|
+
};
|
|
333
|
+
}, lockOpts);
|
|
334
|
+
}
|
|
335
|
+
function envelopeFile(dir, envelopeId) {
|
|
336
|
+
return join(dir, `${envelopeId}.json`);
|
|
337
|
+
}
|
|
338
|
+
function readEnvelopesFrom(dir) {
|
|
339
|
+
if (!existsSync(dir))
|
|
340
|
+
return [];
|
|
341
|
+
const files = readdirSync(dir).filter((f) => f.endsWith(".json")).sort();
|
|
342
|
+
const out = [];
|
|
343
|
+
for (const file of files) {
|
|
344
|
+
const parsed = JSON.parse(readFileSync(join(dir, file), "utf8"));
|
|
345
|
+
if (isH2AEnvelope(parsed)) {
|
|
346
|
+
out.push(parsed);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return out;
|
|
350
|
+
}
|
|
351
|
+
function putInboxMessage(actor, envelope) {
|
|
352
|
+
if (!isH2AEnvelope(envelope)) {
|
|
353
|
+
throw new Error("putInboxMessage: payload is not a valid H2A envelope");
|
|
354
|
+
}
|
|
355
|
+
const dir = inboxDir(paths, actor);
|
|
356
|
+
ensureDir(dir);
|
|
357
|
+
withLockSync(inboxLock(actor), () => {
|
|
358
|
+
writeFileSync(envelopeFile(dir, envelope.id), JSON.stringify(envelope, null, 2), "utf8");
|
|
359
|
+
}, lockOpts);
|
|
360
|
+
}
|
|
361
|
+
function readInbox(actor) {
|
|
362
|
+
return readEnvelopesFrom(inboxDir(paths, actor));
|
|
363
|
+
}
|
|
364
|
+
function popInboxMessage(actor, envelopeId) {
|
|
365
|
+
const dir = inboxDir(paths, actor);
|
|
366
|
+
ensureDir(dir);
|
|
367
|
+
return withLockSync(inboxLock(actor), () => {
|
|
368
|
+
const file = envelopeFile(dir, envelopeId);
|
|
369
|
+
if (!existsSync(file))
|
|
370
|
+
return undefined;
|
|
371
|
+
const envelope = JSON.parse(readFileSync(file, "utf8"));
|
|
372
|
+
unlinkSync(file);
|
|
373
|
+
return envelope;
|
|
374
|
+
}, lockOpts);
|
|
375
|
+
}
|
|
376
|
+
function putOutboxMessage(actor, envelope) {
|
|
377
|
+
if (!isH2AEnvelope(envelope)) {
|
|
378
|
+
throw new Error("putOutboxMessage: payload is not a valid H2A envelope");
|
|
379
|
+
}
|
|
380
|
+
const dir = outboxDir(paths, actor);
|
|
381
|
+
ensureDir(dir);
|
|
382
|
+
withLockSync(outboxLock(actor), () => {
|
|
383
|
+
writeFileSync(envelopeFile(dir, envelope.id), JSON.stringify(envelope, null, 2), "utf8");
|
|
384
|
+
}, lockOpts);
|
|
385
|
+
}
|
|
386
|
+
function readOutbox(actor) {
|
|
387
|
+
return readEnvelopesFrom(outboxDir(paths, actor));
|
|
388
|
+
}
|
|
389
|
+
return {
|
|
390
|
+
paths,
|
|
391
|
+
registerInstance,
|
|
392
|
+
listInstances,
|
|
393
|
+
findInstance,
|
|
394
|
+
openNegotiation,
|
|
395
|
+
readNegotiation,
|
|
396
|
+
updateNegotiationStatus,
|
|
397
|
+
appendNegotiationEvent,
|
|
398
|
+
readNegotiationJournal,
|
|
399
|
+
stabilizeNegotiation,
|
|
400
|
+
putInboxMessage,
|
|
401
|
+
readInbox,
|
|
402
|
+
popInboxMessage,
|
|
403
|
+
putOutboxMessage,
|
|
404
|
+
readOutbox
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/runtime/local-files/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type H2AActorRegistration, type H2AEnvelope, type H2AJournalPayload, type H2ANegotiationRecord, type H2ARole } from "@sentropic/h2a";
|
|
2
|
+
import type { LocalStore } from "../local-files/store.js";
|
|
3
|
+
export interface McpToolResult {
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
}
|
|
6
|
+
export interface McpErrorResult {
|
|
7
|
+
error: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function handleRegisterInstance(store: LocalStore, args: {
|
|
10
|
+
registration?: H2AActorRegistration;
|
|
11
|
+
} | undefined): McpToolResult | McpErrorResult;
|
|
12
|
+
export declare function handleDiscoverInstances(store: LocalStore, args: {
|
|
13
|
+
role?: H2ARole;
|
|
14
|
+
scope?: string;
|
|
15
|
+
} | undefined): McpToolResult | McpErrorResult;
|
|
16
|
+
export declare function handleInbox(store: LocalStore, args: {
|
|
17
|
+
action?: "read" | "put" | "pop";
|
|
18
|
+
instance?: string;
|
|
19
|
+
envelope?: H2AEnvelope;
|
|
20
|
+
envelopeId?: string;
|
|
21
|
+
} | undefined): McpToolResult | McpErrorResult;
|
|
22
|
+
export declare function handleAppendJournal(store: LocalStore, args: {
|
|
23
|
+
negotiationId?: string;
|
|
24
|
+
payload?: H2AJournalPayload<unknown>;
|
|
25
|
+
} | undefined): McpToolResult | McpErrorResult;
|
|
26
|
+
export declare function handleOpenNegotiation(store: LocalStore, args: {
|
|
27
|
+
record?: H2ANegotiationRecord;
|
|
28
|
+
} | undefined): McpToolResult | McpErrorResult;
|
|
29
|
+
interface OfferLikeArgs {
|
|
30
|
+
negotiationId?: string;
|
|
31
|
+
instance?: string;
|
|
32
|
+
artifact?: unknown;
|
|
33
|
+
eventId?: string;
|
|
34
|
+
causationId?: string;
|
|
35
|
+
correlationId?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare function handleOffer(store: LocalStore, args: OfferLikeArgs | undefined): McpToolResult | McpErrorResult;
|
|
38
|
+
export declare function handleCounteroffer(store: LocalStore, args: OfferLikeArgs | undefined): McpToolResult | McpErrorResult;
|
|
39
|
+
export declare function handleSign(store: LocalStore, args: {
|
|
40
|
+
negotiationId?: string;
|
|
41
|
+
instance?: string;
|
|
42
|
+
artifact?: unknown;
|
|
43
|
+
privateKeyPem?: string;
|
|
44
|
+
eventId?: string;
|
|
45
|
+
causationId?: string;
|
|
46
|
+
correlationId?: string;
|
|
47
|
+
} | undefined): McpToolResult | McpErrorResult;
|
|
48
|
+
export declare function handleStabilize(store: LocalStore, args: {
|
|
49
|
+
negotiationId?: string;
|
|
50
|
+
eventId?: string;
|
|
51
|
+
} | undefined): McpToolResult | McpErrorResult;
|
|
52
|
+
export declare function handleEscalate(store: LocalStore, args: {
|
|
53
|
+
negotiationId?: string;
|
|
54
|
+
instance?: string;
|
|
55
|
+
channel?: string;
|
|
56
|
+
payload?: unknown;
|
|
57
|
+
causationId?: string;
|
|
58
|
+
correlationId?: string;
|
|
59
|
+
} | undefined): McpToolResult | McpErrorResult;
|
|
60
|
+
export declare function notImplemented(toolName: string): McpErrorResult;
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/handlers.ts"],"names":[],"mappings":"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"}
|