@agenticprimitives/treasury-service-agent 0.0.0-alpha.4
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/LICENSE +21 -0
- package/README.md +70 -0
- package/dist/benchmarks/benchmark.d.ts +28 -0
- package/dist/benchmarks/benchmark.d.ts.map +1 -0
- package/dist/benchmarks/benchmark.js +26 -0
- package/dist/benchmarks/benchmark.js.map +1 -0
- package/dist/benchmarks/suite.d.ts +11 -0
- package/dist/benchmarks/suite.d.ts.map +1 -0
- package/dist/benchmarks/suite.js +166 -0
- package/dist/benchmarks/suite.js.map +1 -0
- package/dist/capabilities.d.ts +68 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +68 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/catalog-defi.d.ts +29 -0
- package/dist/catalog-defi.d.ts.map +1 -0
- package/dist/catalog-defi.js +79 -0
- package/dist/catalog-defi.js.map +1 -0
- package/dist/catalog.d.ts +86 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +199 -0
- package/dist/catalog.js.map +1 -0
- package/dist/dispatch/delegation-authority.d.ts +58 -0
- package/dist/dispatch/delegation-authority.d.ts.map +1 -0
- package/dist/dispatch/delegation-authority.js +62 -0
- package/dist/dispatch/delegation-authority.js.map +1 -0
- package/dist/grant.d.ts +34 -0
- package/dist/grant.d.ts.map +1 -0
- package/dist/grant.js +40 -0
- package/dist/grant.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/intents/intent-types.d.ts +65 -0
- package/dist/intents/intent-types.d.ts.map +1 -0
- package/dist/intents/intent-types.js +44 -0
- package/dist/intents/intent-types.js.map +1 -0
- package/dist/intents/resolved-treasury-order.d.ts +38 -0
- package/dist/intents/resolved-treasury-order.d.ts.map +1 -0
- package/dist/intents/resolved-treasury-order.js +2 -0
- package/dist/intents/resolved-treasury-order.js.map +1 -0
- package/dist/intents/treasury-intent-resolver.d.ts +30 -0
- package/dist/intents/treasury-intent-resolver.d.ts.map +1 -0
- package/dist/intents/treasury-intent-resolver.js +113 -0
- package/dist/intents/treasury-intent-resolver.js.map +1 -0
- package/dist/payments/order-to-mandate.d.ts +31 -0
- package/dist/payments/order-to-mandate.d.ts.map +1 -0
- package/dist/payments/order-to-mandate.js +46 -0
- package/dist/payments/order-to-mandate.js.map +1 -0
- package/dist/plans.d.ts +27 -0
- package/dist/plans.d.ts.map +1 -0
- package/dist/plans.js +47 -0
- package/dist/plans.js.map +1 -0
- package/dist/plugins/defi-plugin.d.ts +54 -0
- package/dist/plugins/defi-plugin.d.ts.map +1 -0
- package/dist/plugins/defi-plugin.js +30 -0
- package/dist/plugins/defi-plugin.js.map +1 -0
- package/dist/profiles.d.ts +92 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +60 -0
- package/dist/profiles.js.map +1 -0
- package/dist/receipt.d.ts +16 -0
- package/dist/receipt.d.ts.map +1 -0
- package/dist/receipt.js +16 -0
- package/dist/receipt.js.map +1 -0
- package/dist/risk/risk-policy.d.ts +44 -0
- package/dist/risk/risk-policy.d.ts.map +1 -0
- package/dist/risk/risk-policy.js +50 -0
- package/dist/risk/risk-policy.js.map +1 -0
- package/dist/schemas.d.ts +68 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +24 -0
- package/dist/schemas.js.map +1 -0
- package/dist/solvers/broker.d.ts +24 -0
- package/dist/solvers/broker.d.ts.map +1 -0
- package/dist/solvers/broker.js +43 -0
- package/dist/solvers/broker.js.map +1 -0
- package/dist/solvers/digest.d.ts +5 -0
- package/dist/solvers/digest.d.ts.map +1 -0
- package/dist/solvers/digest.js +27 -0
- package/dist/solvers/digest.js.map +1 -0
- package/dist/solvers/plan-validation.d.ts +40 -0
- package/dist/solvers/plan-validation.d.ts.map +1 -0
- package/dist/solvers/plan-validation.js +66 -0
- package/dist/solvers/plan-validation.js.map +1 -0
- package/dist/solvers/quote-ranking.d.ts +47 -0
- package/dist/solvers/quote-ranking.d.ts.map +1 -0
- package/dist/solvers/quote-ranking.js +48 -0
- package/dist/solvers/quote-ranking.js.map +1 -0
- package/dist/solvers/solver-port.d.ts +104 -0
- package/dist/solvers/solver-port.d.ts.map +1 -0
- package/dist/solvers/solver-port.js +2 -0
- package/dist/solvers/solver-port.js.map +1 -0
- package/dist/strategy/strategy-controller.d.ts +36 -0
- package/dist/strategy/strategy-controller.d.ts.map +1 -0
- package/dist/strategy/strategy-controller.js +66 -0
- package/dist/strategy/strategy-controller.js.map +1 -0
- package/dist/strategy/strategy-definition.d.ts +55 -0
- package/dist/strategy/strategy-definition.d.ts.map +1 -0
- package/dist/strategy/strategy-definition.js +39 -0
- package/dist/strategy/strategy-definition.js.map +1 -0
- package/dist/strategy/triggers.d.ts +27 -0
- package/dist/strategy/triggers.d.ts.map +1 -0
- package/dist/strategy/triggers.js +22 -0
- package/dist/strategy/triggers.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const ALLOWED = {
|
|
2
|
+
draft: ['simulated', 'cancelled'],
|
|
3
|
+
simulated: ['awaiting-approval', 'approved', 'cancelled'],
|
|
4
|
+
'awaiting-approval': ['approved', 'cancelled'],
|
|
5
|
+
approved: ['active', 'cancelled'],
|
|
6
|
+
active: ['paused', 'expired', 'closed'],
|
|
7
|
+
paused: ['active', 'closed', 'expired'],
|
|
8
|
+
expired: [],
|
|
9
|
+
closed: [],
|
|
10
|
+
cancelled: [],
|
|
11
|
+
};
|
|
12
|
+
export class StrategyTransitionError extends Error {
|
|
13
|
+
}
|
|
14
|
+
export function createRun(strategyId, runId, at) {
|
|
15
|
+
return { strategyId, runId, status: 'draft', history: [{ status: 'draft', at }] };
|
|
16
|
+
}
|
|
17
|
+
export function canTransition(from, to) {
|
|
18
|
+
return ALLOWED[from].includes(to);
|
|
19
|
+
}
|
|
20
|
+
/** Guarded transition. Throws on an illegal transition (fail-closed). */
|
|
21
|
+
export function transitionRun(state, to, at) {
|
|
22
|
+
if (!canTransition(state.status, to)) {
|
|
23
|
+
throw new StrategyTransitionError(`illegal strategy transition ${state.status} → ${to}`);
|
|
24
|
+
}
|
|
25
|
+
return { ...state, status: to, history: [...state.history, { status: to, at }] };
|
|
26
|
+
}
|
|
27
|
+
/** Emergency stop: pause (or close) an active/paused run; only the declared authority may invoke it. */
|
|
28
|
+
export function emergencyStop(state, args) {
|
|
29
|
+
if (state.status !== 'active' && state.status !== 'paused') {
|
|
30
|
+
throw new StrategyTransitionError(`cannot emergency-stop a ${state.status} run`);
|
|
31
|
+
}
|
|
32
|
+
if (args.mandate.emergencyStopAuthority && args.mandate.emergencyStopAuthority !== args.authority) {
|
|
33
|
+
throw new StrategyTransitionError('caller is not the emergency-stop authority');
|
|
34
|
+
}
|
|
35
|
+
const to = args.close ? 'closed' : 'paused';
|
|
36
|
+
// bypass the normal table for the close-from-paused path (emergency authority):
|
|
37
|
+
return { ...state, status: to, history: [...state.history, { status: to, at: args.at }] };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=strategy-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy-definition.js","sourceRoot":"","sources":["../../src/strategy/strategy-definition.ts"],"names":[],"mappings":"AAiDA,MAAM,OAAO,GAA6C;IACxD,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;IACjC,SAAS,EAAE,CAAC,mBAAmB,EAAE,UAAU,EAAE,WAAW,CAAC;IACzD,mBAAmB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;IAC9C,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACjC,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;IACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACvC,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,EAAE;CACd,CAAC;AAEF,MAAM,OAAO,uBAAwB,SAAQ,KAAK;CAAG;AAErD,MAAM,UAAU,SAAS,CAAC,UAAkB,EAAE,KAAa,EAAE,EAAU;IACrE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAoB,EAAE,EAAkB;IACpE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,KAAuB,EAAE,EAAkB,EAAE,EAAU;IACnF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,uBAAuB,CAAC,+BAA+B,KAAK,CAAC,MAAM,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,aAAa,CAAC,KAAuB,EAAE,IAAkF;IACvI,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3D,MAAM,IAAI,uBAAuB,CAAC,2BAA2B,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QAClG,MAAM,IAAI,uBAAuB,CAAC,4CAA4C,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,EAAE,GAAmB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5D,gFAAgF;IAChF,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5F,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type TriggerCondition = {
|
|
2
|
+
kind: 'price';
|
|
3
|
+
asset: string;
|
|
4
|
+
op: 'gte' | 'lte';
|
|
5
|
+
value: number;
|
|
6
|
+
} | {
|
|
7
|
+
kind: 'time';
|
|
8
|
+
atOrAfter: number;
|
|
9
|
+
} | {
|
|
10
|
+
kind: 'drawdown';
|
|
11
|
+
bps: number;
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'schedule';
|
|
14
|
+
everySeconds: number;
|
|
15
|
+
};
|
|
16
|
+
export interface TriggerContext {
|
|
17
|
+
nowSeconds: number;
|
|
18
|
+
prices?: Record<string, number>;
|
|
19
|
+
drawdownBps?: number;
|
|
20
|
+
lastRunAt?: number;
|
|
21
|
+
}
|
|
22
|
+
/** Evaluate all triggers (OR semantics): fired if ANY condition holds. */
|
|
23
|
+
export declare function evaluateTriggers(triggers: TriggerCondition[], ctx: TriggerContext): {
|
|
24
|
+
fired: boolean;
|
|
25
|
+
firedBy: string[];
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=triggers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../src/strategy/triggers.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,cAAc,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAGzH"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Strategy triggers (spec 284 PR-F). Deterministic evaluation of when a strategy MAY propose a run.
|
|
2
|
+
// Triggers only gate WHETHER the model is consulted; whether a proposed run is in-mandate is the
|
|
3
|
+
// StrategyController's separate, deterministic decision.
|
|
4
|
+
function fires(t, ctx) {
|
|
5
|
+
switch (t.kind) {
|
|
6
|
+
case 'price': {
|
|
7
|
+
const p = ctx.prices?.[t.asset];
|
|
8
|
+
if (p === undefined)
|
|
9
|
+
return false;
|
|
10
|
+
return t.op === 'gte' ? p >= t.value : p <= t.value;
|
|
11
|
+
}
|
|
12
|
+
case 'time': return ctx.nowSeconds >= t.atOrAfter;
|
|
13
|
+
case 'drawdown': return (ctx.drawdownBps ?? 0) >= t.bps;
|
|
14
|
+
case 'schedule': return ctx.lastRunAt === undefined || ctx.nowSeconds - ctx.lastRunAt >= t.everySeconds;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** Evaluate all triggers (OR semantics): fired if ANY condition holds. */
|
|
18
|
+
export function evaluateTriggers(triggers, ctx) {
|
|
19
|
+
const firedBy = triggers.filter((t) => fires(t, ctx)).map((t) => t.kind);
|
|
20
|
+
return { fired: firedBy.length > 0, firedBy };
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=triggers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggers.js","sourceRoot":"","sources":["../../src/strategy/triggers.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,iGAAiG;AACjG,yDAAyD;AAezD,SAAS,KAAK,CAAC,CAAmB,EAAE,GAAmB;IACrD,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YAClC,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACtD,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,CAAC;QAClD,KAAK,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACxD,KAAK,UAAU,CAAC,CAAC,OAAO,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,YAAY,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,QAA4B,EAAE,GAAmB;IAChF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agenticprimitives/treasury-service-agent",
|
|
3
|
+
"version": "0.0.0-alpha.4",
|
|
4
|
+
"description": "Intent-native DeFi Treasury Agent (spec 284): a domain composition over service-agent — skill catalog + profiles + treasury authority-scope/receipt helpers, evolving toward intent resolution, solver brokering, and DAG execution. Catalog = definitions + plans only; providers external (ADR-0037).",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/agentictrustlabs/agenticprimitives.git",
|
|
9
|
+
"directory": "domains/treasury-service-agent"
|
|
10
|
+
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"main": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"LICENSE",
|
|
22
|
+
"dist",
|
|
23
|
+
"README.md"
|
|
24
|
+
],
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"vitest": "^4.1.8"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"agentic",
|
|
33
|
+
"primitives",
|
|
34
|
+
"treasury",
|
|
35
|
+
"defi",
|
|
36
|
+
"intent",
|
|
37
|
+
"service-agent"
|
|
38
|
+
],
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@agenticprimitives/types": "1.0.0-alpha.17",
|
|
41
|
+
"@agenticprimitives/service-agent": "0.0.0-alpha.4",
|
|
42
|
+
"@agenticprimitives/intent-marketplace": "0.0.0-alpha.13",
|
|
43
|
+
"@agenticprimitives/intent-resolver": "0.0.0-alpha.13",
|
|
44
|
+
"@agenticprimitives/payments": "0.0.0-alpha.13",
|
|
45
|
+
"@agenticprimitives/delegation": "1.0.0-alpha.17"
|
|
46
|
+
},
|
|
47
|
+
"scripts": {
|
|
48
|
+
"build": "tsc -p tsconfig.build.json",
|
|
49
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
50
|
+
"test": "vitest run",
|
|
51
|
+
"test:unit": "vitest run test --passWithNoTests",
|
|
52
|
+
"clean": "rm -rf dist"
|
|
53
|
+
}
|
|
54
|
+
}
|