@sentropic/h2a-cli 0.1.0 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/bin.js +30 -2
  2. package/dist/bin.js.map +1 -1
  3. package/dist/cli-contract.d.ts +62 -0
  4. package/dist/cli-contract.d.ts.map +1 -0
  5. package/dist/cli-contract.js +239 -0
  6. package/dist/cli-contract.js.map +1 -0
  7. package/dist/cli.d.ts +51 -0
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +711 -2
  10. package/dist/cli.js.map +1 -1
  11. package/dist/hosts/claude.d.ts +11 -6
  12. package/dist/hosts/claude.d.ts.map +1 -1
  13. package/dist/hosts/claude.js +40 -1
  14. package/dist/hosts/claude.js.map +1 -1
  15. package/dist/hosts/codex.d.ts +64 -6
  16. package/dist/hosts/codex.d.ts.map +1 -1
  17. package/dist/hosts/codex.js +39 -1
  18. package/dist/hosts/codex.js.map +1 -1
  19. package/dist/hosts/gemini.d.ts +8 -6
  20. package/dist/hosts/gemini.d.ts.map +1 -1
  21. package/dist/hosts/gemini.js +9 -1
  22. package/dist/hosts/gemini.js.map +1 -1
  23. package/dist/index.d.ts +8 -34
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +5 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/runtime/local-files/index.d.ts +5 -0
  28. package/dist/runtime/local-files/index.d.ts.map +1 -0
  29. package/dist/runtime/local-files/index.js +5 -0
  30. package/dist/runtime/local-files/index.js.map +1 -0
  31. package/dist/runtime/local-files/locks.d.ts +43 -0
  32. package/dist/runtime/local-files/locks.d.ts.map +1 -0
  33. package/dist/runtime/local-files/locks.js +197 -0
  34. package/dist/runtime/local-files/locks.js.map +1 -0
  35. package/dist/runtime/local-files/paths.d.ts +18 -0
  36. package/dist/runtime/local-files/paths.d.ts.map +1 -0
  37. package/dist/runtime/local-files/paths.js +28 -0
  38. package/dist/runtime/local-files/paths.js.map +1 -0
  39. package/dist/runtime/local-files/schema.d.ts +47 -0
  40. package/dist/runtime/local-files/schema.d.ts.map +1 -0
  41. package/dist/runtime/local-files/schema.js +77 -0
  42. package/dist/runtime/local-files/schema.js.map +1 -0
  43. package/dist/runtime/local-files/store.d.ts +44 -0
  44. package/dist/runtime/local-files/store.d.ts.map +1 -0
  45. package/dist/runtime/local-files/store.js +407 -0
  46. package/dist/runtime/local-files/store.js.map +1 -0
  47. package/dist/runtime/mcp/handlers.d.ts +62 -0
  48. package/dist/runtime/mcp/handlers.d.ts.map +1 -0
  49. package/dist/runtime/mcp/handlers.js +261 -0
  50. package/dist/runtime/mcp/handlers.js.map +1 -0
  51. package/dist/runtime/mcp/index.d.ts +5 -0
  52. package/dist/runtime/mcp/index.d.ts.map +1 -0
  53. package/dist/runtime/mcp/index.js +5 -0
  54. package/dist/runtime/mcp/index.js.map +1 -0
  55. package/dist/runtime/mcp/server.d.ts +26 -0
  56. package/dist/runtime/mcp/server.d.ts.map +1 -0
  57. package/dist/runtime/mcp/server.js +45 -0
  58. package/dist/runtime/mcp/server.js.map +1 -0
  59. package/dist/runtime/mcp/stdio.d.ts +21 -0
  60. package/dist/runtime/mcp/stdio.d.ts.map +1 -0
  61. package/dist/runtime/mcp/stdio.js +103 -0
  62. package/dist/runtime/mcp/stdio.js.map +1 -0
  63. package/dist/runtime/mcp/tools.d.ts +19 -0
  64. package/dist/runtime/mcp/tools.d.ts.map +1 -0
  65. package/dist/runtime/mcp/tools.js +175 -0
  66. package/dist/runtime/mcp/tools.js.map +1 -0
  67. package/package.json +7 -4
@@ -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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"}