@decentrys/agent 0.1.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 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@decentrys/agent",
3
+ "version": "0.1.0",
4
+ "description": "AgentGuard: policy enforcement in front of an autonomous on-chain agent. An agent cannot widen the limits its operator set.",
5
+ "license": "MIT",
6
+ "author": "Decentrys Labs",
7
+ "homepage": "https://decentrys.com",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/teamdecentrys-byte/Decentrys.git",
11
+ "directory": "sdk/agent"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/teamdecentrys-byte/Decentrys/issues"
15
+ },
16
+ "keywords": [
17
+ "decentrys",
18
+ "blockchain",
19
+ "web3",
20
+ "security",
21
+ "crypto",
22
+ "ai-agent",
23
+ "autonomous",
24
+ "policy",
25
+ "guardrails"
26
+ ],
27
+ "sideEffects": false,
28
+ "engines": {
29
+ "node": ">=18"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "main": "dist/index.js",
35
+ "types": "dist/index.d.ts",
36
+ "exports": {
37
+ ".": {
38
+ "types": "./dist/index.d.ts",
39
+ "import": "./dist/browser/decentrys-agent.mjs",
40
+ "default": "./dist/index.js"
41
+ },
42
+ "./browser": "./dist/browser/decentrys-agent.mjs"
43
+ },
44
+ "files": [
45
+ "dist",
46
+ "!dist/.tsbuildinfo*",
47
+ "src",
48
+ "LICENSE",
49
+ "README.md"
50
+ ],
51
+ "dependencies": {
52
+ "@decentrys/protect": "0.1.0"
53
+ },
54
+ "devDependencies": {
55
+ "typescript": "^5.7.2",
56
+ "vitest": "^3.2.7"
57
+ },
58
+ "scripts": {
59
+ "build": "tsc -p tsconfig.json && npm run build:browser",
60
+ "build:browser": "../../node_modules/.bin/esbuild src/index.ts --bundle --format=esm --target=es2022 --outfile=dist/browser/decentrys-agent.mjs && ../../node_modules/.bin/esbuild src/index.ts --bundle --format=iife --global-name=DecentrysAgent --target=es2022 --outfile=dist/browser/decentrys-agent.js",
61
+ "typecheck": "tsc -p tsconfig.spec.json",
62
+ "test": "vitest run"
63
+ }
64
+ }
@@ -0,0 +1,351 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { TransportError, type RequestOptions, type Transport } from '@decentrys/protect';
3
+
4
+ import { AgentGuard } from './client';
5
+ import { sealPolicy } from './policy';
6
+ import { SpendLedger } from './ledger';
7
+ import type { AgentAction, AgentDecision } from './model';
8
+
9
+ /**
10
+ * The guard as an operator actually wires it: a sealed policy, a Decentrys
11
+ * client, and an agent proposing actions at it.
12
+ *
13
+ * The transport is injected so a test controls exactly what the platform
14
+ * answered — including answering nothing, which is the case that decides
15
+ * whether an outage becomes a signing spree.
16
+ */
17
+
18
+ const NOW = new Date('2026-09-06T12:00:00Z');
19
+ const AGENT = 'agent-treasury-1';
20
+
21
+ /** A transport whose every response the test controls. */
22
+ function stub(handler: (options: RequestOptions) => Promise<unknown>): Transport & { calls: RequestOptions[] } {
23
+ const calls: RequestOptions[] = [];
24
+ return {
25
+ calls,
26
+ request: <T>(options: RequestOptions): Promise<T> => {
27
+ calls.push(options);
28
+ return handler(options) as Promise<T>;
29
+ },
30
+ };
31
+ }
32
+
33
+ /** An evidence payload in the shape every Protect endpoint returns. */
34
+ const NO_FINDINGS = {
35
+ facts: [], capabilities: [], threatSignals: [], unknowns: [], historyStatus: 'LIMITED',
36
+ };
37
+
38
+ const CONFIRMED_DRAINER = {
39
+ ...NO_FINDINGS,
40
+ threatSignals: [{
41
+ type: 'KNOWN_DRAINER_BYTECODE',
42
+ severity: 'CRITICAL',
43
+ confidence: 0.99,
44
+ explanation: 'Bytecode matches a confirmed drainer family.',
45
+ hops: 0,
46
+ status: 'ACTIVE',
47
+ createdAt: NOW.toISOString(),
48
+ lastSeen: NOW.toISOString(),
49
+ evidence: [{
50
+ id: 'ev_1', type: 'BYTECODE_MATCH', source: 'Decentrys',
51
+ observedAt: NOW.toISOString(), confidence: 0.99, analystVerified: true,
52
+ }],
53
+ }],
54
+ };
55
+
56
+ function action(overrides: Partial<AgentAction> = {}): AgentAction {
57
+ return {
58
+ agentId: AGENT,
59
+ chain: 'ethereum',
60
+ type: 'transfer',
61
+ from: '0x1111111111111111111111111111111111111111',
62
+ to: '0x2222222222222222222222222222222222222222',
63
+ valueUsd: 100,
64
+ ...overrides,
65
+ };
66
+ }
67
+
68
+ function guard(transport: Transport, policy = sealPolicy({ maxValuePerActionUsd: 1_000 }), extra = {}) {
69
+ return new AgentGuard({ policy, transport, ...extra });
70
+ }
71
+
72
+ // ---------------------------------------------------------------------------
73
+
74
+ describe('construction', () => {
75
+ /**
76
+ * The one place this throws. A missing credential or an unsealed policy is a
77
+ * wiring error a human made at deploy time, and failing there is far better
78
+ * than a guard that runs and screens nothing.
79
+ */
80
+ it('refuses to run without a way to reach Decentrys', () => {
81
+ expect(() => new AgentGuard({ policy: sealPolicy({}) }))
82
+ .toThrow(/apiKey or an existing Decentrys client/);
83
+ });
84
+
85
+ it('refuses a policy that did not come from sealPolicy', () => {
86
+ expect(() => new AgentGuard({
87
+ // The cast is the point: this is what an agent constructing its own
88
+ // limits would have to do, and it does not survive the runtime check.
89
+ policy: { maxValuePerActionUsd: 10_000_000 } as unknown as ReturnType<typeof sealPolicy>,
90
+ apiKey: 'k',
91
+ })).toThrow(/sealed policy is required/);
92
+ });
93
+
94
+ it('reports whether it can actually hold budget', () => {
95
+ const readOnly = { spentUsdSince: () => 0, actionsSince: () => 0 };
96
+ expect(guard(stub(() => Promise.resolve(NO_FINDINGS))).reservesBudget).toBe(true);
97
+ expect(guard(stub(() => Promise.resolve(NO_FINDINGS)), sealPolicy({}), { ledger: readOnly }).reservesBudget)
98
+ .toBe(false);
99
+ });
100
+ });
101
+
102
+ describe('screening a proposed action', () => {
103
+ it('permits a clean action inside the operator\'s limits', async () => {
104
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)));
105
+ const decision = await g.assessAgentTransaction(action(), { now: NOW });
106
+
107
+ expect(decision.verdict).toBe('allow');
108
+ expect(decision.reasons).toEqual([]);
109
+ expect(decision.reservationId).toBe(decision.decisionId);
110
+ });
111
+
112
+ /** The requirement in one line: no amount is small enough. */
113
+ it('denies a confirmed-malicious counterparty regardless of value', async () => {
114
+ const g = guard(stub(() => Promise.resolve(CONFIRMED_DRAINER)), sealPolicy({
115
+ maxValuePerActionUsd: 10_000_000,
116
+ }));
117
+
118
+ for (const valueUsd of [0, 1, 9_999_999]) {
119
+ const decision = await g.assessAgentTransaction(action({ valueUsd }), { now: NOW });
120
+ expect(decision.verdict, `at $${valueUsd}`).toBe('deny');
121
+ expect(decision.assessment?.riskLevel).toBe('KNOWN_MALICIOUS');
122
+ }
123
+ });
124
+
125
+ /**
126
+ * A denied action must not consume the agent's budget. Otherwise an attacker
127
+ * who can only get denials still gets the agent shut down for the day.
128
+ */
129
+ it('holds no budget for an action it denied', async () => {
130
+ const ledger = new SpendLedger({ clock: () => NOW.getTime() });
131
+ const g = guard(stub(() => Promise.resolve(CONFIRMED_DRAINER)), sealPolicy({}), { ledger });
132
+
133
+ const decision = await g.assessAgentTransaction(action({ valueUsd: 500 }), { now: NOW });
134
+
135
+ expect(decision.verdict).toBe('deny');
136
+ expect(decision.reservationId).toBeUndefined();
137
+ expect(ledger.spentUsdSince(AGENT, 0)).toBe(0);
138
+ });
139
+
140
+ /**
141
+ * An approval is assessed on its spender *and* its allowance together, which
142
+ * is a different question from "is this transaction dangerous" and the one
143
+ * an unlimited approval turns on.
144
+ */
145
+ it('screens an approval as an approval', async () => {
146
+ const transport = stub(() => Promise.resolve(NO_FINDINGS));
147
+ const g = guard(transport, sealPolicy({ allowUnlimitedApprovals: false }));
148
+
149
+ await g.assessAgentTransaction(action({
150
+ type: 'approve', token: '0xtoken', approvalAmount: 'unlimited', valueUsd: 0,
151
+ }), { now: NOW });
152
+
153
+ expect(transport.calls[0]?.path).toBe('/v1/protect/approval');
154
+ });
155
+
156
+ /**
157
+ * Screening runs even when a local rule has already failed. A record saying
158
+ * an action exceeded its cap, while omitting that its counterparty was
159
+ * confirmed malicious, sends an operator to raise the cap and ship the same
160
+ * hole.
161
+ */
162
+ it('still screens an action a local rule already denied', async () => {
163
+ const transport = stub(() => Promise.resolve(CONFIRMED_DRAINER));
164
+ const g = guard(transport, sealPolicy({ maxValuePerActionUsd: 100 }));
165
+
166
+ const decision = await g.assessAgentTransaction(action({ valueUsd: 5_000 }), { now: NOW });
167
+
168
+ expect(transport.calls).toHaveLength(1);
169
+ const failed = decision.evaluations.filter((e) => e.outcome === 'fail').map((e) => e.rule);
170
+ expect(failed).toContain('VALUE_PER_ACTION');
171
+ expect(failed).toContain('RISK_LEVEL');
172
+ });
173
+ });
174
+
175
+ describe('when Decentrys is unreachable', () => {
176
+ const down = () => stub(() => Promise.reject(new TransportError('network', 'connection refused')));
177
+
178
+ /**
179
+ * Protect never throws; an unreachable service produces an assessment whose
180
+ * `unknowns` say so, and on the surface that reads as
181
+ * NO_CRITICAL_RISK_DETECTED. For an autonomous signer, treating it as a
182
+ * clean result is the whole failure — a clean bill of health issued by an
183
+ * outage.
184
+ */
185
+ it('does not read an outage as a clean result', async () => {
186
+ const decision = await guard(down()).assessAgentTransaction(action(), { now: NOW });
187
+
188
+ expect(decision.assessment).toBeUndefined();
189
+ expect(decision.assessmentUnavailable).toMatch(/connection refused/);
190
+ expect(decision.verdict).not.toBe('allow');
191
+ });
192
+
193
+ it('escalates to a person by default', async () => {
194
+ const decision = await guard(down()).assessAgentTransaction(action(), { now: NOW });
195
+ expect(decision.verdict).toBe('require_human_approval');
196
+ });
197
+
198
+ it('stops under failMode closed', async () => {
199
+ const g = guard(down(), sealPolicy({ failMode: 'closed', maxValuePerActionUsd: 1_000 }));
200
+ expect((await g.assessAgentTransaction(action(), { now: NOW })).verdict).toBe('deny');
201
+ });
202
+
203
+ it('proceeds on local limits alone under failMode open', async () => {
204
+ const g = guard(down(), sealPolicy({ failMode: 'open', maxValuePerActionUsd: 1_000 }));
205
+ expect((await g.assessAgentTransaction(action({ valueUsd: 100 }), { now: NOW })).verdict).toBe('allow');
206
+ expect((await g.assessAgentTransaction(action({ valueUsd: 5_000 }), { now: NOW })).verdict).toBe('deny');
207
+ });
208
+ });
209
+
210
+ describe('budget across a run', () => {
211
+ /**
212
+ * The failure a per-action cap cannot catch. Every one of these transfers is
213
+ * individually reasonable; the sequence is the treasury.
214
+ */
215
+ it('stops an agent once its cumulative window is spent', async () => {
216
+ const ledger = new SpendLedger({ clock: () => NOW.getTime() });
217
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)), sealPolicy({
218
+ maxValuePerActionUsd: 1_000,
219
+ spendWindows: [{ label: 'daily', windowMs: 86_400_000, maxValueUsd: 1_000 }],
220
+ }), { ledger });
221
+
222
+ const verdicts: string[] = [];
223
+ for (let i = 0; i < 4; i += 1) {
224
+ const decision = await g.assessAgentTransaction(action({ valueUsd: 400 }), { now: NOW });
225
+ verdicts.push(decision.verdict);
226
+ if (decision.verdict === 'allow') g.confirm(decision.decisionId, { txHash: `0x${i}`, now: NOW });
227
+ }
228
+
229
+ expect(verdicts).toEqual(['allow', 'allow', 'deny', 'deny']);
230
+ expect(ledger.spentUsdSince(AGENT, 0)).toBe(800);
231
+ });
232
+
233
+ it('gives the budget back when an allowed action is not taken', async () => {
234
+ const ledger = new SpendLedger({ clock: () => NOW.getTime() });
235
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)), sealPolicy({
236
+ spendWindows: [{ label: 'daily', windowMs: 86_400_000, maxValueUsd: 1_000 }],
237
+ }), { ledger });
238
+
239
+ const first = await g.assessAgentTransaction(action({ valueUsd: 900 }), { now: NOW });
240
+ g.release(first.decisionId, { note: 'the route disappeared', now: NOW });
241
+
242
+ const second = await g.assessAgentTransaction(action({ valueUsd: 900 }), { now: NOW });
243
+ expect(second.verdict).toBe('allow');
244
+ });
245
+
246
+ /**
247
+ * A sub-task can be given a tighter budget without escaping the agent's
248
+ * overall one — the point of sharing the ledger rather than starting a
249
+ * fresh count per task.
250
+ */
251
+ it('shares one ledger between a guard and the narrower guards derived from it', async () => {
252
+ const ledger = new SpendLedger({ clock: () => NOW.getTime() });
253
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)), sealPolicy({
254
+ spendWindows: [{ label: 'daily', windowMs: 86_400_000, maxValueUsd: 1_000 }],
255
+ }), { ledger });
256
+
257
+ const task = g.withPolicy({ maxValuePerActionUsd: 600 });
258
+
259
+ const first = await g.assessAgentTransaction(action({ valueUsd: 600 }), { now: NOW });
260
+ expect(first.verdict).toBe('allow');
261
+
262
+ const second = await task.assessAgentTransaction(action({ valueUsd: 600 }), { now: NOW });
263
+ expect(second.verdict).toBe('deny');
264
+ expect(second.reasons.join(' ')).toMatch(/daily spend limit/);
265
+ });
266
+
267
+ it('cannot be handed a wider policy through a derived guard', async () => {
268
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)), sealPolicy({ maxValuePerActionUsd: 500 }));
269
+ const wider = g.withPolicy({ maxValuePerActionUsd: 5_000_000 });
270
+
271
+ expect(wider.policy.policy.maxValuePerActionUsd).toBe(500);
272
+ expect((await wider.assessAgentTransaction(action({ valueUsd: 1_000 }), { now: NOW })).verdict).toBe('deny');
273
+ });
274
+
275
+ it('cannot be widened by a per-call restriction either', async () => {
276
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)), sealPolicy({ maxValuePerActionUsd: 500 }));
277
+
278
+ const decision = await g.assessAgentTransaction(action({ valueUsd: 1_000 }), {
279
+ now: NOW, restrict: { maxValuePerActionUsd: 5_000_000 },
280
+ });
281
+ expect(decision.verdict).toBe('deny');
282
+ });
283
+ });
284
+
285
+ describe('the record it leaves', () => {
286
+ it('logs every decision, with what happened to it afterwards', async () => {
287
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)));
288
+ const decision = await g.assessAgentTransaction(action(), { now: NOW });
289
+ g.confirm(decision.decisionId, { txHash: '0xabc', now: NOW });
290
+
291
+ const [entry] = g.auditLog({ agentId: AGENT });
292
+ expect(entry?.decision.decisionId).toBe(decision.decisionId);
293
+ expect(entry?.outcome?.state).toBe('confirmed');
294
+ expect(entry?.outcome?.txHash).toBe('0xabc');
295
+ });
296
+
297
+ it('explains a decision by id, and says so plainly when it does not have one', async () => {
298
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)));
299
+ const decision = await g.assessAgentTransaction(action(), { now: NOW });
300
+
301
+ expect(g.explain(decision.decisionId)?.verdict).toBe('allow');
302
+ expect(g.explain('ad_never-happened')).toBeNull();
303
+ });
304
+
305
+ /**
306
+ * The in-memory log dies with the process, so a durable trail is written
307
+ * through this hook — and a sink that throws must not be able to change a
308
+ * verdict in either direction.
309
+ */
310
+ it('ships every decision to the operator\'s sink, and survives one that throws', async () => {
311
+ const shipped: AgentDecision[] = [];
312
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)), sealPolicy({}), {
313
+ onDecision: (d: AgentDecision) => {
314
+ shipped.push(d);
315
+ throw new Error('the log server is down');
316
+ },
317
+ });
318
+
319
+ const decision = await g.assessAgentTransaction(action(), { now: NOW });
320
+
321
+ expect(decision.verdict).toBe('allow');
322
+ expect(shipped).toHaveLength(1);
323
+ });
324
+
325
+ it('keeps the audit log bounded rather than growing without limit', async () => {
326
+ const g = guard(stub(() => Promise.resolve(NO_FINDINGS)), sealPolicy({}), { auditLogEntries: 3 });
327
+
328
+ for (let i = 0; i < 10; i += 1) await g.assessAgentTransaction(action(), { now: NOW });
329
+
330
+ expect(g.auditLog()).toHaveLength(3);
331
+ });
332
+ });
333
+
334
+ describe('offline evaluation', () => {
335
+ /**
336
+ * For replaying a recorded decision against a different policy. It applies
337
+ * the same rules; what it cannot do is discover that a counterparty was
338
+ * labelled since — so it says the assessment is missing rather than
339
+ * pretending it looked.
340
+ */
341
+ it('applies the policy without a network call, and says nothing was screened', () => {
342
+ const g = guard(stub(() => Promise.reject(new Error('should not be called'))), sealPolicy({
343
+ failMode: 'closed', maxValuePerActionUsd: 1_000,
344
+ }));
345
+
346
+ const decision = g.evaluate(action({ valueUsd: 100 }), { now: NOW });
347
+
348
+ expect(decision.verdict).toBe('deny');
349
+ expect(decision.evaluations.find((e) => e.rule === 'ASSESSMENT_AVAILABILITY')?.outcome).toBe('fail');
350
+ });
351
+ });