@agentguard-run/spend 0.13.2 → 0.14.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.
@@ -0,0 +1,486 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HermesKanbanAdapter = void 0;
4
+ exports.createHermesKanbanAdapter = createHermesKanbanAdapter;
5
+ exports.hermesKanbanSignerFingerprint = hermesKanbanSignerFingerprint;
6
+ const crypto_1 = require("crypto");
7
+ const cost_table_1 = require("../cost-table");
8
+ const decision_log_1 = require("../decision-log");
9
+ const dag_1 = require("../receipts/dag");
10
+ const spend_guard_1 = require("../spend-guard");
11
+ const common_1 = require("./common");
12
+ const DEFAULT_PROFILE_MAP = {
13
+ researcher: { capability: 'READ_ONLY', toolAllowlist: ['web.fetch', 'file.read', 'notes.read', 'search.query'] },
14
+ writer: { capability: 'TRANSACT', toolAllowlist: ['draft.create', 'file.write', 'notes.write', 'email.draft'] },
15
+ reviewer: { capability: 'READ_ONLY', toolAllowlist: ['review.read', 'notes.read', 'decision.record'] },
16
+ director: { capability: 'ORCHESTRATE', toolAllowlist: ['task.assign', 'board.plan', 'decision.record'] },
17
+ orchestrator: { capability: 'ORCHESTRATE', toolAllowlist: ['task.assign', 'board.plan', 'decision.record'] },
18
+ };
19
+ const CAPABILITY_RANK = {
20
+ READ_ONLY: 0,
21
+ TRANSACT: 1,
22
+ ADMIN: 2,
23
+ ORCHESTRATE: 3,
24
+ };
25
+ const DATA_PLANE_KEYS = /^(title|summary|prompt|completion|content|messages|input|output|text|raw|source|notes|draft|body|transcript)$/i;
26
+ const SAFE_METADATA_KEYS = new Set([
27
+ 'assignee',
28
+ 'board_hash',
29
+ 'duration_ms',
30
+ 'event',
31
+ 'model',
32
+ 'model_id',
33
+ 'outcome',
34
+ 'priority',
35
+ 'profile',
36
+ 'provider',
37
+ 'risk_score',
38
+ 'state',
39
+ 'task_id',
40
+ 'ticket_id',
41
+ 'token_count',
42
+ 'workflow_id',
43
+ ]);
44
+ function createHermesKanbanAdapter(opts) {
45
+ return new HermesKanbanAdapter(opts);
46
+ }
47
+ class HermesKanbanAdapter {
48
+ opts;
49
+ taskGuards = new Map();
50
+ envelopes = new Map();
51
+ nodesByTaskId = new Map();
52
+ nodes = [];
53
+ profileMap;
54
+ config;
55
+ constructor(opts) {
56
+ this.opts = opts;
57
+ this.profileMap = { ...DEFAULT_PROFILE_MAP, ...(opts.profileMap ?? {}) };
58
+ this.config = opts.config ?? {};
59
+ }
60
+ governTask(input) {
61
+ assertTaskInput(input);
62
+ const profilePolicy = this.profilePolicy(input.profile);
63
+ const capCents = capForTask(input, profilePolicy, this.opts);
64
+ const boardHash = hashValue(input.boardSlug);
65
+ const taskHash = hashValue(input.taskId);
66
+ const scope = { ...this.opts.scope, taskId: input.taskId };
67
+ const envelope = {
68
+ taskId: input.taskId,
69
+ taskHash,
70
+ boardHash,
71
+ profile: normalizeProfile(input.profile),
72
+ state: 'governed',
73
+ capabilityCeiling: profilePolicy.capability,
74
+ toolAllowlist: [...(profilePolicy.toolAllowlist ?? [])],
75
+ capCents,
76
+ parentTaskIds: [...new Set(input.parentTaskIds ?? [])],
77
+ parentEntryHashes: [],
78
+ scope,
79
+ builderCode: safeBuilderCode(input.builderCode),
80
+ createdAt: new Date().toISOString(),
81
+ };
82
+ const taskPolicy = {
83
+ ...this.opts.policy,
84
+ id: `${this.opts.policy.id}:hermes-kanban:${taskHash.slice(0, 12)}`,
85
+ name: `${this.opts.policy.name} Hermes Kanban task`,
86
+ scope,
87
+ caps: [{ window: 'per_day', amountCents: capCents, action: 'block', reason: 'Hermes Kanban task cap' }],
88
+ requiredCapability: spendCapabilityForReceiptCapability(profilePolicy.capability),
89
+ };
90
+ this.envelopes.set(input.taskId, envelope);
91
+ this.taskGuards.set(input.taskId, new spend_guard_1.SpendGuard({
92
+ policy: taskPolicy,
93
+ ...this.config,
94
+ licenseKey: this.opts.licenseKey ?? this.config.licenseKey,
95
+ }));
96
+ return { ...envelope };
97
+ }
98
+ async enforceProviderCall(input) {
99
+ const envelope = this.requireEnvelope(input.taskId);
100
+ assertActive(envelope);
101
+ assertMetadataOnly(input.metadata ?? {});
102
+ validateTokens(input.inputTokens, input.outputTokens);
103
+ const guard = this.requireGuard(input.taskId);
104
+ const model = safeLabel(input.model) ?? this.opts.defaultModel ?? 'openai/gpt-4o-mini';
105
+ const call = {
106
+ provider: input.provider ?? (0, cost_table_1.inferProvider)(model),
107
+ model,
108
+ inputTokens: input.inputTokens,
109
+ outputTokens: input.outputTokens,
110
+ scope: envelope.scope,
111
+ workflowId: envelope.boardHash,
112
+ subagentId: envelope.taskId,
113
+ label: 'hermes-kanban',
114
+ capabilityClaim: spendCapabilityForReceiptCapability(envelope.capabilityCeiling),
115
+ requestShape: (0, common_1.safeRequestShape)({
116
+ framework: 'hermes-kanban',
117
+ event: 'provider-call',
118
+ taskId: envelope.taskId,
119
+ taskHash: envelope.taskHash,
120
+ boardHash: envelope.boardHash,
121
+ profile: envelope.profile,
122
+ metadata: filterReceiptMetadata(input.metadata ?? {}),
123
+ }),
124
+ };
125
+ const { decision, signed } = await guard.decide(call);
126
+ return { allow: decision.action !== 'block', decision, signed };
127
+ }
128
+ async guardCapability(input) {
129
+ const envelope = this.requireEnvelope(input.taskId);
130
+ assertActive(envelope);
131
+ assertMetadataOnly(input.toolArgs ?? {});
132
+ if (CAPABILITY_RANK[input.requestedCapability] > CAPABILITY_RANK[envelope.capabilityCeiling]) {
133
+ return {
134
+ approved: false,
135
+ reason: `Hermes Kanban profile ${envelope.profile} is capped at ${envelope.capabilityCeiling}`,
136
+ };
137
+ }
138
+ if (input.toolName && envelope.toolAllowlist.length > 0 && !toolAllowed(input.toolName, envelope.toolAllowlist)) {
139
+ return { approved: false, reason: `Tool ${input.toolName} is outside the Hermes Kanban profile allowlist` };
140
+ }
141
+ const gate = await this.requireGuard(input.taskId).guardToolCall({
142
+ toolName: input.toolName ?? 'hermes-kanban.tool',
143
+ toolArgs: (0, common_1.safeRequestShape)(input.toolArgs ?? {}),
144
+ workflowId: envelope.boardHash,
145
+ scope: envelope.scope,
146
+ });
147
+ return {
148
+ approved: gate.approved,
149
+ reason: gate.decision.reasons.join('; '),
150
+ signed: gate.signed,
151
+ decision: gate.decision,
152
+ editedArgs: gate.editedArgs,
153
+ };
154
+ }
155
+ async revokeTask(taskId) {
156
+ const envelope = this.requireEnvelope(taskId);
157
+ if (envelope.state === 'revoked')
158
+ return this.receiptResult(envelope, this.requireNode(taskId));
159
+ envelope.state = 'revoked';
160
+ envelope.revokedAt = new Date().toISOString();
161
+ const node = await this.signTaskNode(envelope, {
162
+ event: 'revoked',
163
+ action: 'block',
164
+ blocked: true,
165
+ capability: envelope.capabilityCeiling,
166
+ trustScore: 0.7,
167
+ });
168
+ this.nodesByTaskId.set(taskId, node);
169
+ this.nodes.push(node);
170
+ return this.receiptResult(envelope, node);
171
+ }
172
+ async emitTaskReceipt(input) {
173
+ const envelope = this.requireEnvelope(input.taskId);
174
+ assertActive(envelope);
175
+ assertMetadataOnly(input.metadata ?? {});
176
+ envelope.state = 'completed';
177
+ envelope.completedAt = new Date().toISOString();
178
+ const parentTaskIds = [...new Set(input.parentTaskIds ?? envelope.parentTaskIds)];
179
+ const parentNodes = parentTaskIds.map((id) => this.nodesByTaskId.get(id)).filter(Boolean);
180
+ envelope.parentEntryHashes = parentNodes.map((node) => node.entryHash);
181
+ const capability = input.capability ?? envelope.capabilityCeiling;
182
+ const triggers = reviewerCascadeTriggers(envelope, input, this.opts);
183
+ const node = await this.signTaskNode(envelope, {
184
+ event: 'completed',
185
+ action: 'allow',
186
+ blocked: false,
187
+ capability,
188
+ trustScore: triggers.length > 0 ? 0.9 : 0.94,
189
+ parentNodes,
190
+ metadata: input.metadata,
191
+ modelIds: input.modelIds,
192
+ tokenCounts: input.tokenCounts,
193
+ totalCostCents: input.totalCostCents,
194
+ reviewerCascade: triggers.length > 0 ? buildReviewerCascadeReceipt(input, this.opts, triggers) : undefined,
195
+ });
196
+ this.nodesByTaskId.set(input.taskId, node);
197
+ this.nodes.push(node);
198
+ return this.receiptResult(envelope, node);
199
+ }
200
+ getEnvelope(taskId) {
201
+ const envelope = this.envelopes.get(taskId);
202
+ return envelope ? { ...envelope, parentTaskIds: [...envelope.parentTaskIds], parentEntryHashes: [...envelope.parentEntryHashes], toolAllowlist: [...envelope.toolAllowlist] } : null;
203
+ }
204
+ getReceiptDag(rootTaskId) {
205
+ const root = rootTaskId ? this.nodesByTaskId.get(rootTaskId) : this.nodes[this.nodes.length - 1];
206
+ return {
207
+ nodes: [...this.nodes],
208
+ rootId: root?.entryHash ?? '0'.repeat(64),
209
+ workflowId: this.nodes[0]?.workflowId ?? null,
210
+ };
211
+ }
212
+ outboundPayloads() {
213
+ return [];
214
+ }
215
+ async verifyDag(publicKeyHex) {
216
+ const key = publicKeyHex ?? this.publicKeyHex();
217
+ return (0, dag_1.verifyReceiptDag)(this.getReceiptDag(), key);
218
+ }
219
+ async signTaskNode(envelope, args) {
220
+ if (!this.config.signingKeys)
221
+ throw new Error('Hermes Kanban receipts require signingKeys');
222
+ const parentNodes = args.parentNodes ?? [];
223
+ const decision = taskDecision(envelope, args, this.opts.policy);
224
+ return (0, dag_1.signDagNode)({
225
+ sequence: this.nodes.length,
226
+ decision,
227
+ privateKey: this.config.signingKeys.privateKey,
228
+ publicKey: this.config.signingKeys.publicKey,
229
+ parents: parentNodes,
230
+ workflowId: envelope.boardHash,
231
+ trustScore: args.trustScore,
232
+ blocked: args.blocked,
233
+ capability: args.capability,
234
+ builderCode: envelope.builderCode ?? null,
235
+ });
236
+ }
237
+ receiptResult(envelope, node) {
238
+ return {
239
+ node,
240
+ envelope: { ...envelope, parentTaskIds: [...envelope.parentTaskIds], parentEntryHashes: [...envelope.parentEntryHashes], toolAllowlist: [...envelope.toolAllowlist] },
241
+ dag: this.getReceiptDag(envelope.taskId),
242
+ };
243
+ }
244
+ requireEnvelope(taskId) {
245
+ const envelope = this.envelopes.get(taskId);
246
+ if (!envelope)
247
+ throw new Error(`Unknown Hermes Kanban task ${taskId}`);
248
+ return envelope;
249
+ }
250
+ requireGuard(taskId) {
251
+ const guard = this.taskGuards.get(taskId);
252
+ if (!guard)
253
+ throw new Error(`Unknown Hermes Kanban task ${taskId}`);
254
+ return guard;
255
+ }
256
+ requireNode(taskId) {
257
+ const node = this.nodesByTaskId.get(taskId);
258
+ if (!node)
259
+ throw new Error(`Hermes Kanban task ${taskId} has no receipt`);
260
+ return node;
261
+ }
262
+ profilePolicy(profile) {
263
+ return this.profileMap[normalizeProfile(profile)] ?? { capability: 'READ_ONLY', toolAllowlist: [] };
264
+ }
265
+ publicKeyHex() {
266
+ if (!this.config.signingKeys)
267
+ throw new Error('Hermes Kanban receipts require signingKeys');
268
+ return Buffer.from(this.config.signingKeys.publicKey).toString('hex');
269
+ }
270
+ }
271
+ exports.HermesKanbanAdapter = HermesKanbanAdapter;
272
+ function taskDecision(envelope, args, policy) {
273
+ const parentNodes = args.parentNodes ?? [];
274
+ const inputTokens = safeNonNegativeInteger(args.tokenCounts?.inputTokens);
275
+ const outputTokens = safeNonNegativeInteger(args.tokenCounts?.outputTokens);
276
+ const totalCostCents = safeNonNegativeInteger(args.totalCostCents);
277
+ const receipt = {
278
+ type: 'hermes_kanban_task',
279
+ event: args.event,
280
+ taskId: envelope.taskId,
281
+ taskHash: envelope.taskHash,
282
+ boardHash: envelope.boardHash,
283
+ profile: envelope.profile,
284
+ capability: args.capability,
285
+ capabilityCeiling: envelope.capabilityCeiling,
286
+ state: envelope.state,
287
+ parentTaskIds: [...envelope.parentTaskIds],
288
+ parentEntryHashes: parentNodes.map((node) => node.entryHash),
289
+ parentMsgHashes: parentNodes.map((node) => node.msgHash),
290
+ modelIds: safeModelIds(args.modelIds ?? []),
291
+ inputTokens,
292
+ outputTokens,
293
+ totalCostCents,
294
+ metadata: filterReceiptMetadata(args.metadata ?? {}),
295
+ };
296
+ if (args.reviewerCascade)
297
+ receipt.reviewerCascade = args.reviewerCascade;
298
+ const decision = {
299
+ decisionId: (0, crypto_1.randomUUID)(),
300
+ timestamp: new Date().toISOString(),
301
+ action: args.action,
302
+ triggeredCap: null,
303
+ triggeredScopeKey: null,
304
+ projectedCents: totalCostCents,
305
+ windowSpendBefore: 0,
306
+ windowSpendAfter: totalCostCents,
307
+ provider: 'unknown',
308
+ modelRequested: 'hermes-kanban',
309
+ modelResolved: 'hermes-kanban',
310
+ policyId: policy.id,
311
+ policyVersion: policy.version,
312
+ enforcementMode: policy.mode,
313
+ reasons: [`Hermes Kanban task ${args.event}: ${envelope.taskId}`],
314
+ entryType: 'outcome',
315
+ outcomeReceipt: receipt,
316
+ };
317
+ if (envelope.builderCode)
318
+ decision.builderCode = envelope.builderCode;
319
+ return decision;
320
+ }
321
+ function buildReviewerCascadeReceipt(input, opts, triggers) {
322
+ const cascade = opts.reviewerCascade ?? {};
323
+ return {
324
+ outcome: safeLabel(input.metadata?.outcome) ?? 'hermes_kanban_task',
325
+ drafter: {
326
+ model: cascade.drafterModel ?? opts.defaultModel ?? 'openai/gpt-4o-mini',
327
+ maxCostCents: safeNonNegativeInteger(cascade.drafterMaxCostCents ?? 25),
328
+ },
329
+ reviewer: {
330
+ model: cascade.reviewerModel ?? 'anthropic/claude-sonnet-4-6',
331
+ maxCostCents: safeNonNegativeInteger(cascade.reviewerMaxCostCents ?? 75),
332
+ },
333
+ triggerFired: triggers,
334
+ reviewerVerdict: input.reviewerVerdict ?? 'review_required',
335
+ };
336
+ }
337
+ function reviewerCascadeTriggers(envelope, input, opts) {
338
+ if (opts.reviewerCascade?.enabled === false)
339
+ return [];
340
+ const threshold = opts.reviewerCascade?.highRiskThreshold ?? 0.55;
341
+ const triggers = [];
342
+ if (envelope.profile === 'reviewer')
343
+ triggers.push('reviewer_profile');
344
+ if (typeof input.highRiskClassifierScore === 'number' && input.highRiskClassifierScore >= threshold)
345
+ triggers.push(`risk_score_above:${threshold}`);
346
+ if (input.keywordRisk === true)
347
+ triggers.push('keyword_prefilter');
348
+ return [...new Set(triggers)];
349
+ }
350
+ function capForTask(input, profilePolicy, opts) {
351
+ if (Number.isSafeInteger(profilePolicy.capCents) && profilePolicy.capCents >= 0)
352
+ return profilePolicy.capCents;
353
+ const runtimeMinutes = runtimeMinutesFor(input);
354
+ const runtimeBudget = opts.runtimeBudgetCentsPerMinute ?? 10;
355
+ const cap = Math.ceil(runtimeMinutes * runtimeBudget);
356
+ return Math.max(1, Math.min(cap, opts.defaultCapCents ?? cap));
357
+ }
358
+ function runtimeMinutesFor(input) {
359
+ if (Number.isFinite(input.maxRuntimeMinutes) && input.maxRuntimeMinutes > 0)
360
+ return input.maxRuntimeMinutes;
361
+ if (Number.isFinite(input.maxRuntimeMs) && input.maxRuntimeMs > 0)
362
+ return input.maxRuntimeMs / 60_000;
363
+ return 5;
364
+ }
365
+ function spendCapabilityForReceiptCapability(capability) {
366
+ if (capability === 'ORCHESTRATE')
367
+ return 'payment_execute';
368
+ if (capability === 'ADMIN')
369
+ return 'payment_initiate';
370
+ if (capability === 'TRANSACT')
371
+ return 'data_write';
372
+ return 'read_only';
373
+ }
374
+ function assertTaskInput(input) {
375
+ assertPlainRecord(input, 'task');
376
+ const allowed = new Set(['taskId', 'boardSlug', 'profile', 'parentTaskIds', 'maxRuntimeMinutes', 'maxRuntimeMs', 'metadata', 'builderCode']);
377
+ for (const key of Object.keys(input)) {
378
+ if (!allowed.has(key))
379
+ throw new Error(`Hermes Kanban task input cannot include data-plane or unknown field: ${key}`);
380
+ }
381
+ if (!safeLabel(input.taskId))
382
+ throw new Error('Hermes Kanban taskId is required');
383
+ if (!safeLabel(input.boardSlug))
384
+ throw new Error('Hermes Kanban boardSlug is required');
385
+ if (!safeLabel(input.profile))
386
+ throw new Error('Hermes Kanban profile is required');
387
+ assertMetadataOnly(input.metadata ?? {});
388
+ for (const parent of input.parentTaskIds ?? []) {
389
+ if (!safeLabel(parent))
390
+ throw new Error('Hermes Kanban parent task id must be a metadata identifier');
391
+ }
392
+ }
393
+ function assertMetadataOnly(value, path = 'metadata') {
394
+ if (value == null)
395
+ return;
396
+ if (Array.isArray(value)) {
397
+ for (let i = 0; i < value.length; i++)
398
+ assertMetadataOnly(value[i], `${path}[${i}]`);
399
+ return;
400
+ }
401
+ if (typeof value !== 'object')
402
+ return;
403
+ for (const [key, child] of Object.entries(value)) {
404
+ if (DATA_PLANE_KEYS.test(key))
405
+ throw new Error(`Hermes Kanban metadata cannot include data-plane field: ${path}.${key}`);
406
+ assertMetadataOnly(child, `${path}.${key}`);
407
+ }
408
+ }
409
+ function assertPlainRecord(value, name) {
410
+ if (!value || typeof value !== 'object' || Array.isArray(value))
411
+ throw new Error(`Hermes Kanban ${name} must be an object`);
412
+ }
413
+ function assertActive(envelope) {
414
+ if (envelope.state === 'revoked')
415
+ throw new spend_guard_1.AgentGuardBlockedError(blockedDecision(envelope, 'revoked'), envelope.scope);
416
+ if (envelope.state === 'completed')
417
+ throw new spend_guard_1.AgentGuardBlockedError(blockedDecision(envelope, 'completed'), envelope.scope);
418
+ }
419
+ function blockedDecision(envelope, state) {
420
+ return {
421
+ decisionId: (0, crypto_1.randomUUID)(),
422
+ timestamp: new Date().toISOString(),
423
+ action: 'block',
424
+ triggeredCap: null,
425
+ triggeredScopeKey: null,
426
+ projectedCents: 0,
427
+ windowSpendBefore: 0,
428
+ windowSpendAfter: 0,
429
+ provider: 'unknown',
430
+ modelRequested: 'hermes-kanban',
431
+ modelResolved: 'hermes-kanban',
432
+ policyId: 'hermes-kanban',
433
+ policyVersion: 1,
434
+ enforcementMode: 'enforce',
435
+ reasons: [`Hermes Kanban task ${envelope.taskId} is ${state}`],
436
+ };
437
+ }
438
+ function filterReceiptMetadata(metadata) {
439
+ assertMetadataOnly(metadata);
440
+ const out = {};
441
+ for (const [key, value] of Object.entries(metadata)) {
442
+ if (!SAFE_METADATA_KEYS.has(key))
443
+ continue;
444
+ if (value == null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
445
+ out[key] = value;
446
+ }
447
+ }
448
+ return out;
449
+ }
450
+ function validateTokens(inputTokens, outputTokens) {
451
+ if (!Number.isSafeInteger(inputTokens) || inputTokens < 0)
452
+ throw new Error('inputTokens must be a non-negative safe integer');
453
+ if (!Number.isSafeInteger(outputTokens) || outputTokens < 0)
454
+ throw new Error('outputTokens must be a non-negative safe integer');
455
+ }
456
+ function hashValue(value) {
457
+ return (0, decision_log_1.sha256Hex)((0, decision_log_1.canonicalJson)({ value }));
458
+ }
459
+ function normalizeProfile(profile) {
460
+ return profile.trim().toLowerCase().replace(/[^a-z0-9_.:-]/g, '_');
461
+ }
462
+ function safeLabel(value) {
463
+ if (typeof value !== 'string')
464
+ return undefined;
465
+ const trimmed = value.trim();
466
+ if (!trimmed || !/^[A-Za-z0-9_.:/-]{1,160}$/.test(trimmed))
467
+ return undefined;
468
+ return trimmed;
469
+ }
470
+ function safeBuilderCode(value) {
471
+ const label = safeLabel(value);
472
+ return label ? label.slice(0, 64) : undefined;
473
+ }
474
+ function safeModelIds(models) {
475
+ return models.map((model) => safeLabel(model)).filter(Boolean);
476
+ }
477
+ function safeNonNegativeInteger(value) {
478
+ return Number.isSafeInteger(value) && value >= 0 ? value : 0;
479
+ }
480
+ function toolAllowed(toolName, allowlist) {
481
+ return allowlist.some((allowed) => toolName === allowed || toolName.startsWith(`${allowed}.`));
482
+ }
483
+ function hermesKanbanSignerFingerprint(opts) {
484
+ return opts.config?.signingKeys ? (0, decision_log_1.computeSignerFingerprint)(opts.config.signingKeys.publicKey) : null;
485
+ }
486
+ //# sourceMappingURL=hermes-kanban.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-kanban.js","sourceRoot":"","sources":["../../src/frameworks/hermes-kanban.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ export * from './openrouter';
3
3
  export * from './vercel-ai';
4
4
  export * from './claude-code';
5
5
  export * from './hermes';
6
+ export * from './hermes-kanban';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/frameworks/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/frameworks/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
@@ -19,4 +19,5 @@ __exportStar(require("./openrouter"), exports);
19
19
  __exportStar(require("./vercel-ai"), exports);
20
20
  __exportStar(require("./claude-code"), exports);
21
21
  __exportStar(require("./hermes"), exports);
22
+ __exportStar(require("./hermes-kanban"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/frameworks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,8CAA4B;AAC5B,gDAA8B;AAC9B,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/frameworks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,8CAA4B;AAC5B,gDAA8B;AAC9B,2CAAyB;AACzB,kDAAgC"}
package/dist/index.d.ts CHANGED
@@ -33,7 +33,7 @@ export { withSpendGuardAnthropic, type AnthropicBindingOptions } from './binding
33
33
  export { withSpendGuardBedrock, type BedrockBindingOptions } from './bindings/bedrock';
34
34
  export { recommend, defaultKey, type ModelRouteRecommendation, type RecommendOptions } from './router';
35
35
  export { DEFAULT_LOCALE, SUPPORTED_LOCALES, TRANSLATIONS, type SupportedLocale, resolveLocale, t, formatBlockedTrace, type BlockedTraceArgs, } from './i18n';
36
- export declare const AGENTGUARD_SPEND_VERSION = "0.13.2";
36
+ export declare const AGENTGUARD_SPEND_VERSION = "0.14.0";
37
37
  export declare const agentguard: {
38
38
  workflow: typeof runWorkflow;
39
39
  };
package/dist/index.js CHANGED
@@ -161,7 +161,7 @@ Object.defineProperty(exports, "TRANSLATIONS", { enumerable: true, get: function
161
161
  Object.defineProperty(exports, "resolveLocale", { enumerable: true, get: function () { return i18n_1.resolveLocale; } });
162
162
  Object.defineProperty(exports, "t", { enumerable: true, get: function () { return i18n_1.t; } });
163
163
  Object.defineProperty(exports, "formatBlockedTrace", { enumerable: true, get: function () { return i18n_1.formatBlockedTrace; } });
164
- exports.AGENTGUARD_SPEND_VERSION = '0.13.2';
164
+ exports.AGENTGUARD_SPEND_VERSION = '0.14.0';
165
165
  exports.agentguard = {
166
166
  workflow: context_1.workflow,
167
167
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../../src/receipts/dag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../../src/receipts/dag.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC;AAExF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,sBAAsB,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,sBAAsB,CAAC;AAEtE,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,WAAW,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAgBD,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC;IAClD,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,sBAAsB,GAAG,MAAM,CAAC,CAAC;IAClE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,cAAc,CAAC,CAqB1B;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAG3H;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAG5E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAY1E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,sBAAsB,CAa1F;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,MAAM,GAAG,UAAU,GACpE,OAAO,CAAC,4BAA4B,CAAC,CA4DvC;AAED,wBAAgB,cAAc,CAC5B,cAAc,EAAE,sBAAsB,EACtC,qBAAqB,EAAE,4BAA4B,EACnD,UAAU,GAAE,wBAA6B,GACxC,oBAAoB,CAoCtB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,CAG3D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,SAAS,SAAK,GAAG,uBAAuB,CAMpG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,eAAe,EAAE,CAgBhH;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAM/G;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,EAAE,EAAE,UAAU,GAAE,MAAM,GAAG,IAAW,GAAG,kBAAkB,CAI9H"}
@@ -153,6 +153,7 @@ async function verifyReceiptDag(nodes, signerKeys) {
153
153
  entryHash: node.entryHash,
154
154
  signature: node.signature,
155
155
  signerFingerprint: node.signerFingerprint,
156
+ builderCode: node.builderCode ?? undefined,
156
157
  }, publicKey);
157
158
  if (!legacyOk)
158
159
  return failure('LEGACY_SIGNATURE_OR_HASH_INVALID');
@@ -302,6 +303,7 @@ function normalizeDagNode(input) {
302
303
  entryHash: candidate.entryHash,
303
304
  signature: candidate.signature,
304
305
  signerFingerprint: candidate.signerFingerprint,
306
+ builderCode: candidate.builderCode ?? null,
305
307
  timestamp: stringOrNull(decision.timestamp) ?? new Date(0).toISOString(),
306
308
  previousHash,
307
309
  legacyPreviousHash: previousHash,