@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.
- package/CHANGELOG.md +10 -0
- package/dist/cli/hermes-kanban.d.ts +2 -0
- package/dist/cli/hermes-kanban.d.ts.map +1 -0
- package/dist/cli/hermes-kanban.js +86 -0
- package/dist/cli/hermes-kanban.js.map +1 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +5 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/frameworks/hermes-kanban.d.ts +131 -0
- package/dist/frameworks/hermes-kanban.d.ts.map +1 -0
- package/dist/frameworks/hermes-kanban.js +486 -0
- package/dist/frameworks/hermes-kanban.js.map +1 -0
- package/dist/frameworks/index.d.ts +1 -0
- package/dist/frameworks/index.d.ts.map +1 -1
- package/dist/frameworks/index.js +1 -0
- package/dist/frameworks/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/receipts/dag.d.ts.map +1 -1
- package/dist/receipts/dag.js +2 -0
- package/dist/receipts/dag.js.map +1 -1
- package/dist/telemetry.js +1 -1
- package/package.json +6 -1
- package/src/frameworks/hermes-kanban.ts +622 -0
- package/src/frameworks/index.ts +1 -0
- package/src/receipts/dag.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## 0.14.0
|
|
2
|
+
|
|
3
|
+
- Added Hermes Kanban adapters for TypeScript and Python with governed task envelopes, per-task spend caps, profile capability ceilings, reclaim receipts, and signed DAG receipt trees.
|
|
4
|
+
- Added Reviewer Cascade auto-wiring for reviewer-profile and high-risk Kanban tasks while keeping task titles, prompts, summaries, outputs, and free-text metadata out of receipts.
|
|
5
|
+
- Added `agentguard hermes-kanban demo` plus tests for cap blocking, capability denial, revocation, diamond DAG verification, tamper detection, builderCode separation, and zero-data-plane behavior.
|
|
6
|
+
|
|
7
|
+
## 0.13.3
|
|
8
|
+
|
|
9
|
+
- Hardened DAG receipt verification compatibility by preserving legacy builder attribution fields during normalization.
|
|
10
|
+
|
|
1
11
|
## 0.13.2
|
|
2
12
|
|
|
3
13
|
- Added thin framework adapters for Vercel AI SDK middleware, Claude Code hooks, Hermes hooks, and OpenRouter OpenAI-compatible clients.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-kanban.d.ts","sourceRoot":"","sources":["../../src/cli/hermes-kanban.ts"],"names":[],"mappings":"AAYA,wBAAsB,eAAe,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAwC1E"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runHermesKanban = runHermesKanban;
|
|
37
|
+
const ed = __importStar(require("@noble/ed25519"));
|
|
38
|
+
const hermes_kanban_1 = require("../frameworks/hermes-kanban");
|
|
39
|
+
const HELP = `agentguard hermes-kanban: govern Hermes Kanban board tasks locally and emit signed DAG receipts.
|
|
40
|
+
|
|
41
|
+
usage:
|
|
42
|
+
agentguard hermes-kanban demo
|
|
43
|
+
|
|
44
|
+
The demo uses metadata-only task ids and hashes the board slug before signing.
|
|
45
|
+
`;
|
|
46
|
+
async function runHermesKanban(argv = []) {
|
|
47
|
+
const command = argv[0] ?? 'help';
|
|
48
|
+
if (command === 'help' || command === '-h' || command === '--help') {
|
|
49
|
+
process.stdout.write(HELP);
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
if (command !== 'demo') {
|
|
53
|
+
process.stderr.write(`agentguard hermes-kanban: unknown command '${command}'\n\n`);
|
|
54
|
+
process.stderr.write(HELP);
|
|
55
|
+
return 2;
|
|
56
|
+
}
|
|
57
|
+
const privateKey = new Uint8Array(32).fill(41);
|
|
58
|
+
const publicKey = await ed.getPublicKeyAsync(privateKey);
|
|
59
|
+
const policy = {
|
|
60
|
+
id: 'hermes-kanban-demo',
|
|
61
|
+
name: 'Hermes Kanban demo',
|
|
62
|
+
scope: { tenantId: 'demo' },
|
|
63
|
+
caps: [{ window: 'per_day', amountCents: 500, action: 'block' }],
|
|
64
|
+
mode: 'enforce',
|
|
65
|
+
version: 1,
|
|
66
|
+
effectiveFrom: new Date().toISOString(),
|
|
67
|
+
};
|
|
68
|
+
const adapter = (0, hermes_kanban_1.createHermesKanbanAdapter)({
|
|
69
|
+
policy,
|
|
70
|
+
scope: { tenantId: 'demo', agentId: 'hermes-kanban' },
|
|
71
|
+
config: { signingKeys: { privateKey, publicKey } },
|
|
72
|
+
runtimeBudgetCentsPerMinute: 5,
|
|
73
|
+
});
|
|
74
|
+
adapter.governTask({ taskId: 'survey', boardSlug: 'demo-board', profile: 'researcher', maxRuntimeMinutes: 1 });
|
|
75
|
+
await adapter.emitTaskReceipt({ taskId: 'survey', modelIds: ['openai/gpt-4o-mini'], tokenCounts: { inputTokens: 100, outputTokens: 40 }, totalCostCents: 1 });
|
|
76
|
+
adapter.governTask({ taskId: 'draft', boardSlug: 'demo-board', profile: 'writer', parentTaskIds: ['survey'], maxRuntimeMinutes: 2, builderCode: 'HERMES' });
|
|
77
|
+
await adapter.emitTaskReceipt({ taskId: 'draft', modelIds: ['openai/gpt-4o-mini'], tokenCounts: { inputTokens: 200, outputTokens: 120 }, totalCostCents: 2 });
|
|
78
|
+
adapter.governTask({ taskId: 'fact-check', boardSlug: 'demo-board', profile: 'researcher', parentTaskIds: ['survey'], maxRuntimeMinutes: 1 });
|
|
79
|
+
await adapter.emitTaskReceipt({ taskId: 'fact-check', modelIds: ['openai/gpt-4o-mini'], tokenCounts: { inputTokens: 120, outputTokens: 30 }, totalCostCents: 1 });
|
|
80
|
+
adapter.governTask({ taskId: 'review', boardSlug: 'demo-board', profile: 'reviewer', parentTaskIds: ['draft', 'fact-check'], maxRuntimeMinutes: 2 });
|
|
81
|
+
const receipt = await adapter.emitTaskReceipt({ taskId: 'review', modelIds: ['anthropic/claude-sonnet-4-6'], tokenCounts: { inputTokens: 240, outputTokens: 60 }, totalCostCents: 4, highRiskClassifierScore: 0.82, reviewerVerdict: 'approved' });
|
|
82
|
+
const verification = await adapter.verifyDag();
|
|
83
|
+
process.stdout.write(JSON.stringify({ receipt: receipt.dag, publicKeyHex: Buffer.from(publicKey).toString('hex'), verification }, null, 2) + '\n');
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=hermes-kanban.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-kanban.js","sourceRoot":"","sources":["../../src/cli/hermes-kanban.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwDH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAiGlF"}
|
package/dist/cli/main.js
CHANGED
|
@@ -67,6 +67,7 @@ commands:
|
|
|
67
67
|
explain Decode a signed receipt with cap math + signature breakdown.
|
|
68
68
|
serve Open a local dashboard at http://localhost:8787.
|
|
69
69
|
telemetry Manage opt-in anonymous SDK activation metrics.
|
|
70
|
+
hermes-kanban Govern Hermes Kanban tasks and emit signed DAG receipts.
|
|
70
71
|
--version Show the installed SDK version.
|
|
71
72
|
--help Show this help.
|
|
72
73
|
|
|
@@ -173,6 +174,10 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
173
174
|
const { runTelemetry } = await Promise.resolve().then(() => __importStar(require('./telemetry')));
|
|
174
175
|
return runTelemetry(rest);
|
|
175
176
|
}
|
|
177
|
+
if (command === 'hermes-kanban') {
|
|
178
|
+
const { runHermesKanban } = await Promise.resolve().then(() => __importStar(require('./hermes-kanban')));
|
|
179
|
+
return runHermesKanban(rest);
|
|
180
|
+
}
|
|
176
181
|
process.stderr.write(`agentguard: unknown command '${command}'\n\n`);
|
|
177
182
|
process.stderr.write(HELP);
|
|
178
183
|
return 2;
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { verifyReceiptDag, type ReceiptCapabilityLevel, type ReceiptDagEnvelope, type ReceiptDagNode } from '../receipts/dag';
|
|
2
|
+
import { type SpendGuardConfig } from '../spend-guard';
|
|
3
|
+
import type { Provider, SignedDecisionLogEntry, SpendDecision, SpendPolicy, SpendScope } from '../types';
|
|
4
|
+
export type HermesKanbanProfile = 'researcher' | 'writer' | 'reviewer' | 'director' | 'orchestrator' | string;
|
|
5
|
+
export type HermesKanbanTaskState = 'governed' | 'running' | 'completed' | 'revoked';
|
|
6
|
+
export interface HermesKanbanProfilePolicy {
|
|
7
|
+
capability: ReceiptCapabilityLevel;
|
|
8
|
+
toolAllowlist?: string[];
|
|
9
|
+
capCents?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface HermesKanbanAdapterOptions {
|
|
12
|
+
policy: SpendPolicy;
|
|
13
|
+
scope: SpendScope;
|
|
14
|
+
config?: Omit<SpendGuardConfig, 'policy'>;
|
|
15
|
+
licenseKey?: string;
|
|
16
|
+
defaultModel?: string;
|
|
17
|
+
defaultCapCents?: number;
|
|
18
|
+
runtimeBudgetCentsPerMinute?: number;
|
|
19
|
+
profileMap?: Record<string, HermesKanbanProfilePolicy>;
|
|
20
|
+
reviewerCascade?: {
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
highRiskThreshold?: number;
|
|
23
|
+
drafterModel?: string;
|
|
24
|
+
reviewerModel?: string;
|
|
25
|
+
drafterMaxCostCents?: number;
|
|
26
|
+
reviewerMaxCostCents?: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface HermesKanbanTaskInput {
|
|
30
|
+
taskId: string;
|
|
31
|
+
boardSlug: string;
|
|
32
|
+
profile: HermesKanbanProfile;
|
|
33
|
+
parentTaskIds?: string[];
|
|
34
|
+
maxRuntimeMinutes?: number;
|
|
35
|
+
maxRuntimeMs?: number;
|
|
36
|
+
metadata?: Record<string, unknown>;
|
|
37
|
+
builderCode?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface HermesKanbanEnvelope {
|
|
40
|
+
taskId: string;
|
|
41
|
+
taskHash: string;
|
|
42
|
+
boardHash: string;
|
|
43
|
+
profile: string;
|
|
44
|
+
state: HermesKanbanTaskState;
|
|
45
|
+
capabilityCeiling: ReceiptCapabilityLevel;
|
|
46
|
+
toolAllowlist: string[];
|
|
47
|
+
capCents: number;
|
|
48
|
+
parentTaskIds: string[];
|
|
49
|
+
parentEntryHashes: string[];
|
|
50
|
+
scope: SpendScope;
|
|
51
|
+
builderCode?: string;
|
|
52
|
+
createdAt: string;
|
|
53
|
+
revokedAt?: string;
|
|
54
|
+
completedAt?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface HermesKanbanDispatchInput {
|
|
57
|
+
taskId: string;
|
|
58
|
+
model?: string;
|
|
59
|
+
provider?: Provider;
|
|
60
|
+
inputTokens: number;
|
|
61
|
+
outputTokens: number;
|
|
62
|
+
metadata?: Record<string, unknown>;
|
|
63
|
+
}
|
|
64
|
+
export interface HermesKanbanDispatchResult {
|
|
65
|
+
allow: boolean;
|
|
66
|
+
decision: SpendDecision;
|
|
67
|
+
signed: SignedDecisionLogEntry | null;
|
|
68
|
+
}
|
|
69
|
+
export interface HermesKanbanCapabilityInput {
|
|
70
|
+
taskId: string;
|
|
71
|
+
requestedCapability: ReceiptCapabilityLevel;
|
|
72
|
+
toolName?: string;
|
|
73
|
+
toolArgs?: Record<string, unknown>;
|
|
74
|
+
}
|
|
75
|
+
export interface HermesKanbanCapabilityResult {
|
|
76
|
+
approved: boolean;
|
|
77
|
+
reason?: string;
|
|
78
|
+
signed?: SignedDecisionLogEntry | null;
|
|
79
|
+
decision?: SpendDecision;
|
|
80
|
+
editedArgs?: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
export interface HermesKanbanReceiptInput {
|
|
83
|
+
taskId: string;
|
|
84
|
+
parentTaskIds?: string[];
|
|
85
|
+
capability?: ReceiptCapabilityLevel;
|
|
86
|
+
modelIds?: string[];
|
|
87
|
+
tokenCounts?: {
|
|
88
|
+
inputTokens?: number;
|
|
89
|
+
outputTokens?: number;
|
|
90
|
+
};
|
|
91
|
+
totalCostCents?: number;
|
|
92
|
+
metadata?: Record<string, unknown>;
|
|
93
|
+
highRiskClassifierScore?: number;
|
|
94
|
+
keywordRisk?: boolean;
|
|
95
|
+
reviewerVerdict?: 'drafter_only' | 'review_required' | 'approved' | 'rejected';
|
|
96
|
+
}
|
|
97
|
+
export interface HermesKanbanReceiptResult {
|
|
98
|
+
node: ReceiptDagNode;
|
|
99
|
+
envelope: HermesKanbanEnvelope;
|
|
100
|
+
dag: ReceiptDagEnvelope;
|
|
101
|
+
verification?: Awaited<ReturnType<typeof verifyReceiptDag>>;
|
|
102
|
+
}
|
|
103
|
+
export declare function createHermesKanbanAdapter(opts: HermesKanbanAdapterOptions): HermesKanbanAdapter;
|
|
104
|
+
export declare class HermesKanbanAdapter {
|
|
105
|
+
private readonly opts;
|
|
106
|
+
private readonly taskGuards;
|
|
107
|
+
private readonly envelopes;
|
|
108
|
+
private readonly nodesByTaskId;
|
|
109
|
+
private readonly nodes;
|
|
110
|
+
private readonly profileMap;
|
|
111
|
+
private readonly config;
|
|
112
|
+
constructor(opts: HermesKanbanAdapterOptions);
|
|
113
|
+
governTask(input: HermesKanbanTaskInput): HermesKanbanEnvelope;
|
|
114
|
+
enforceProviderCall(input: HermesKanbanDispatchInput): Promise<HermesKanbanDispatchResult>;
|
|
115
|
+
guardCapability(input: HermesKanbanCapabilityInput): Promise<HermesKanbanCapabilityResult>;
|
|
116
|
+
revokeTask(taskId: string): Promise<HermesKanbanReceiptResult>;
|
|
117
|
+
emitTaskReceipt(input: HermesKanbanReceiptInput): Promise<HermesKanbanReceiptResult>;
|
|
118
|
+
getEnvelope(taskId: string): HermesKanbanEnvelope | null;
|
|
119
|
+
getReceiptDag(rootTaskId?: string): ReceiptDagEnvelope;
|
|
120
|
+
outboundPayloads(): Record<string, unknown>[];
|
|
121
|
+
verifyDag(publicKeyHex?: string): Promise<Awaited<ReturnType<typeof verifyReceiptDag>>>;
|
|
122
|
+
private signTaskNode;
|
|
123
|
+
private receiptResult;
|
|
124
|
+
private requireEnvelope;
|
|
125
|
+
private requireGuard;
|
|
126
|
+
private requireNode;
|
|
127
|
+
private profilePolicy;
|
|
128
|
+
private publicKeyHex;
|
|
129
|
+
}
|
|
130
|
+
export declare function hermesKanbanSignerFingerprint(opts: HermesKanbanAdapterOptions): string | null;
|
|
131
|
+
//# sourceMappingURL=hermes-kanban.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-kanban.d.ts","sourceRoot":"","sources":["../../src/frameworks/hermes-kanban.ts"],"names":[],"mappings":"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"}
|