@adonis-agora/agent 0.45.0 → 0.47.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 +29 -0
- package/dist/assets/spa/assets/{index-7XqfoeQH.js → index-Be6OClIm.js} +1 -1
- package/dist/assets/spa/index.html +1 -1
- package/dist/providers/agent_provider.d.ts +1 -1
- package/dist/providers/agent_provider.d.ts.map +1 -1
- package/dist/providers/agent_provider.js +112 -33
- package/dist/providers/agent_provider.js.map +1 -1
- package/dist/src/agent-service.d.ts +27 -8
- package/dist/src/agent-service.d.ts.map +1 -1
- package/dist/src/agent-service.js +66 -7
- package/dist/src/agent-service.js.map +1 -1
- package/dist/src/ai-sdk/ai-sdk-model.d.ts +30 -13
- package/dist/src/ai-sdk/ai-sdk-model.d.ts.map +1 -1
- package/dist/src/ai-sdk/ai-sdk-model.js +160 -89
- package/dist/src/ai-sdk/ai-sdk-model.js.map +1 -1
- package/dist/src/ai-sdk/index.d.ts +1 -1
- package/dist/src/ai-sdk/index.d.ts.map +1 -1
- package/dist/src/ai-sdk/index.js +1 -1
- package/dist/src/ai-sdk/index.js.map +1 -1
- package/dist/src/ai-tool-ref.d.ts +23 -8
- package/dist/src/ai-tool-ref.d.ts.map +1 -1
- package/dist/src/ai-tool-ref.js +21 -4
- package/dist/src/ai-tool-ref.js.map +1 -1
- package/dist/src/anonymous-actor-resolver.d.ts +38 -0
- package/dist/src/anonymous-actor-resolver.d.ts.map +1 -0
- package/dist/src/anonymous-actor-resolver.js +76 -0
- package/dist/src/anonymous-actor-resolver.js.map +1 -0
- package/dist/src/authorizer.d.ts +4 -3
- package/dist/src/authorizer.d.ts.map +1 -1
- package/dist/src/authorizer.js +5 -4
- package/dist/src/authorizer.js.map +1 -1
- package/dist/src/define_config.d.ts +31 -32
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js +2 -2
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/durable/agent-run-workflow.d.ts.map +1 -1
- package/dist/src/durable/agent-run-workflow.js +8 -1
- package/dist/src/durable/agent-run-workflow.js.map +1 -1
- package/dist/src/durable/durable-agent-runner.d.ts.map +1 -1
- package/dist/src/durable/durable-agent-runner.js +3 -0
- package/dist/src/durable/durable-agent-runner.js.map +1 -1
- package/dist/src/index.d.ts +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/media/index.d.ts +7 -0
- package/dist/src/media/index.d.ts.map +1 -0
- package/dist/src/media/index.js +7 -0
- package/dist/src/media/index.js.map +1 -0
- package/dist/src/media/media-attachment-staging.d.ts +115 -0
- package/dist/src/media/media-attachment-staging.d.ts.map +1 -0
- package/dist/src/media/media-attachment-staging.js +145 -0
- package/dist/src/media/media-attachment-staging.js.map +1 -0
- package/dist/src/runners/inline-agent-runner.d.ts +3 -1
- package/dist/src/runners/inline-agent-runner.d.ts.map +1 -1
- package/dist/src/runners/inline-agent-runner.js +17 -1
- package/dist/src/runners/inline-agent-runner.js.map +1 -1
- package/dist/src/spi/agent-store.d.ts +8 -0
- package/dist/src/spi/agent-store.d.ts.map +1 -1
- package/dist/src/spi/agent-store.js +8 -1
- package/dist/src/spi/agent-store.js.map +1 -1
- package/dist/src/spi/attachment-staging.d.ts +30 -12
- package/dist/src/spi/attachment-staging.d.ts.map +1 -1
- package/dist/src/stores/factory.d.ts +18 -65
- package/dist/src/stores/factory.d.ts.map +1 -1
- package/dist/src/stores/factory.js +24 -56
- package/dist/src/stores/factory.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +1 -0
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +9 -2
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/testing/in-memory-attachment-staging.d.ts +7 -1
- package/dist/src/testing/in-memory-attachment-staging.d.ts.map +1 -1
- package/dist/src/testing/in-memory-attachment-staging.js +22 -2
- package/dist/src/testing/in-memory-attachment-staging.js.map +1 -1
- package/dist/src/testing/in-memory-store.d.ts +1 -0
- package/dist/src/testing/in-memory-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-store.js +7 -1
- package/dist/src/testing/in-memory-store.js.map +1 -1
- package/dist/src/tool-registry.d.ts +5 -1
- package/dist/src/tool-registry.d.ts.map +1 -1
- package/dist/src/tool-registry.js +8 -2
- package/dist/src/tool-registry.js.map +1 -1
- package/dist/src/types.d.ts +43 -8
- package/dist/src/types.d.ts.map +1 -1
- package/dist/stubs/config/agent.stub +12 -13
- package/package.json +10 -1
- package/skills/agent-governance/SKILL.md +4 -3
- package/skills/agent-personas-agents/SKILL.md +3 -3
- package/skills/agent-setup/SKILL.md +39 -69
- package/skills/agent-tools/SKILL.md +11 -10
- package/dist/src/stores/ledger-quota.d.ts +0 -23
- package/dist/src/stores/ledger-quota.d.ts.map +0 -1
- package/dist/src/stores/ledger-quota.js +0 -32
- package/dist/src/stores/ledger-quota.js.map +0 -1
|
@@ -14,19 +14,24 @@ export declare const AI_TOOL_META_KEY: unique symbol;
|
|
|
14
14
|
*/
|
|
15
15
|
export declare const AGENT_TOOL_BRAND: unique symbol;
|
|
16
16
|
export interface AiToolOptions {
|
|
17
|
-
name: string;
|
|
18
17
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* What the model calls it. Omit on a class → the class name, camelCased, with a trailing `Tool`
|
|
19
|
+
* dropped (`GetWeatherTool` → `getWeather`). Required on {@link defineTool}, which has no class.
|
|
21
20
|
*/
|
|
22
|
-
|
|
21
|
+
name?: string;
|
|
22
|
+
/**
|
|
23
|
+
* `read` auto-executes; `action` requires HITL approval. Default `'read'`. (Core's `ToolKind` also
|
|
24
|
+
* has `agent` for delegation, but that kind is synthesized from an agent's `delegatesTo` — never
|
|
25
|
+
* authored here.)
|
|
26
|
+
*/
|
|
27
|
+
kind?: 'read' | 'action';
|
|
23
28
|
description: string;
|
|
24
29
|
/**
|
|
25
30
|
* Input schema as a [Standard Schema](https://standardschema.dev) — Zod, Valibot, or ArkType.
|
|
26
31
|
* Validated (again) before the handler runs.
|
|
27
32
|
*/
|
|
28
33
|
input: StandardSchemaV1;
|
|
29
|
-
/** Roles allowed to invoke. Omit to inherit the config's `defaultRoles` (
|
|
34
|
+
/** Roles allowed to invoke. Omit to inherit the config's `defaultRoles` (unrestricted by default). */
|
|
30
35
|
roles?: string[];
|
|
31
36
|
/**
|
|
32
37
|
* Authz ability checked by an ability-aware `RolesPolicy` (e.g. an `@adonis-agora/authz` Bouncer
|
|
@@ -49,8 +54,16 @@ export interface AiToolOptions {
|
|
|
49
54
|
/** A successful call ends the turn — no model call narrates what it already showed. */
|
|
50
55
|
terminal?: boolean;
|
|
51
56
|
}
|
|
52
|
-
/**
|
|
53
|
-
|
|
57
|
+
/**
|
|
58
|
+
* The metadata a tool class carries for discovery + registration — from `@AiTool` or `static tool` —
|
|
59
|
+
* with the defaults applied.
|
|
60
|
+
*/
|
|
61
|
+
export type AiToolMeta = AiToolOptions & {
|
|
62
|
+
name: string;
|
|
63
|
+
kind: 'read' | 'action';
|
|
64
|
+
};
|
|
65
|
+
/** `GetWeatherTool` → `getWeather`; `SQLQueryTool` → `sqlQuery`. */
|
|
66
|
+
export declare function toolNameFromClass(className: string): string;
|
|
54
67
|
/** Structural shape of a tool class: a constructor whose instance implements `execute`. */
|
|
55
68
|
export type ToolClass = abstract new (...args: never[]) => ToolHandler;
|
|
56
69
|
/**
|
|
@@ -101,5 +114,7 @@ export declare function isBrandedFunctionalTool(value: unknown): value is Brande
|
|
|
101
114
|
* )
|
|
102
115
|
* ```
|
|
103
116
|
*/
|
|
104
|
-
export declare function defineTool<I = unknown, O = unknown>(options: AiToolOptions
|
|
117
|
+
export declare function defineTool<I = unknown, O = unknown>(options: AiToolOptions & {
|
|
118
|
+
name: string;
|
|
119
|
+
}, execute: (input: I, ctx: AiToolCtx) => Promise<O> | O): BrandedFunctionalTool;
|
|
105
120
|
//# sourceMappingURL=ai-tool-ref.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tool-ref.d.ts","sourceRoot":"","sources":["../../src/ai-tool-ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAAgD,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAAmD,CAAC;AAE1F,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-tool-ref.d.ts","sourceRoot":"","sources":["../../src/ai-tool-ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAAgD,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAAmD,CAAC;AAE1F,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,KAAK,EAAE,gBAAgB,CAAC;IACxB,sGAAsG;IACtG,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEnF,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO3D;AAWD,2FAA2F;AAC3F,MAAM,MAAM,SAAS,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,WAAW,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,IACnC,CAAC,SAAS,SAAS,UAAU,CAAC,KAAG,CAAC,CAQ3C;AA+BD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAMtE;AAED,4FAA4F;AAC5F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,oGAAoG;AACpG,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC;CACnC;AAED,kGAAkG;AAClG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAQtF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EACjD,OAAO,EAAE,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACzC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACpD,qBAAqB,CAgBvB"}
|
package/dist/src/ai-tool-ref.js
CHANGED
|
@@ -9,6 +9,23 @@ export const AI_TOOL_META_KEY = Symbol.for('@agora/agent:ai-tool-meta');
|
|
|
9
9
|
* module's exports — the functional alternative to an `@AiTool` class.
|
|
10
10
|
*/
|
|
11
11
|
export const AGENT_TOOL_BRAND = Symbol.for('@agora/agent:functional-tool');
|
|
12
|
+
/** `GetWeatherTool` → `getWeather`; `SQLQueryTool` → `sqlQuery`. */
|
|
13
|
+
export function toolNameFromClass(className) {
|
|
14
|
+
const base = className.replace(/Tool$/, '') || className;
|
|
15
|
+
const leadingCaps = /^[A-Z]+(?=[A-Z][a-z]|$)/.exec(base)?.[0];
|
|
16
|
+
if (leadingCaps !== undefined && leadingCaps.length > 1) {
|
|
17
|
+
return leadingCaps.toLowerCase() + base.slice(leadingCaps.length);
|
|
18
|
+
}
|
|
19
|
+
return base.charAt(0).toLowerCase() + base.slice(1);
|
|
20
|
+
}
|
|
21
|
+
/** Apply the `name` / `kind` defaults, the name taken from `className`. */
|
|
22
|
+
function resolveMeta(options, className) {
|
|
23
|
+
return {
|
|
24
|
+
...options,
|
|
25
|
+
name: options.name ?? toolNameFromClass(className),
|
|
26
|
+
kind: options.kind ?? 'read',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
12
29
|
/**
|
|
13
30
|
* Marks a class as an AI tool. The class must implement `execute(input, ctx)`. The provider's
|
|
14
31
|
* `app/agent_tools` discovery (or the generated `hooks/tools` barrel) registers every `@AiTool`
|
|
@@ -24,7 +41,7 @@ export const AGENT_TOOL_BRAND = Symbol.for('@agora/agent:functional-tool');
|
|
|
24
41
|
export function AiTool(options) {
|
|
25
42
|
return (target) => {
|
|
26
43
|
Object.defineProperty(target, AI_TOOL_META_KEY, {
|
|
27
|
-
value: options,
|
|
44
|
+
value: resolveMeta(options, target.name ?? ''),
|
|
28
45
|
enumerable: false,
|
|
29
46
|
configurable: true,
|
|
30
47
|
});
|
|
@@ -43,11 +60,11 @@ function staticToolMeta(target) {
|
|
|
43
60
|
if (typeof target !== 'function')
|
|
44
61
|
return undefined;
|
|
45
62
|
const config = target.tool;
|
|
46
|
-
if (config && typeof config === 'object' && typeof config.
|
|
63
|
+
if (config && typeof config === 'object' && typeof config.description === 'string') {
|
|
47
64
|
// `kind` may come from the config itself (BaseTool / @AiTool) or from the kind-specific base's static
|
|
48
65
|
// (ReadTool → 'read', ActionTool → 'action'), which keeps it out of the subclass's `static tool`.
|
|
49
66
|
const kind = config.kind ?? target.kind;
|
|
50
|
-
return { ...config, kind };
|
|
67
|
+
return resolveMeta({ ...config, ...(kind !== undefined ? { kind } : {}) }, target.name ?? '');
|
|
51
68
|
}
|
|
52
69
|
return undefined;
|
|
53
70
|
}
|
|
@@ -96,7 +113,7 @@ export function isBrandedFunctionalTool(value) {
|
|
|
96
113
|
export function defineTool(options, execute) {
|
|
97
114
|
const spec = {
|
|
98
115
|
name: options.name,
|
|
99
|
-
kind: options.kind,
|
|
116
|
+
kind: options.kind ?? 'read',
|
|
100
117
|
description: options.description,
|
|
101
118
|
inputSchema: options.input,
|
|
102
119
|
...(options.roles !== undefined ? { roles: options.roles } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tool-ref.js","sourceRoot":"","sources":["../../src/ai-tool-ref.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkB,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAEvF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkB,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-tool-ref.js","sourceRoot":"","sources":["../../src/ai-tool-ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ActorResolver } from './spi/actor-resolver.js';
|
|
2
|
+
import type { Actor } from './types.js';
|
|
3
|
+
/** Options for {@link AnonymousActorResolver}. All optional. */
|
|
4
|
+
export interface AnonymousActorOptions {
|
|
5
|
+
/** Cookie name. Default `agent_anon`. */
|
|
6
|
+
cookieName?: string;
|
|
7
|
+
/** Cookie lifetime in days. Default 365. */
|
|
8
|
+
maxAgeDays?: number;
|
|
9
|
+
/** `SameSite`. Default `lax`; `none` (a cross-site client) forces `Secure`. */
|
|
10
|
+
sameSite?: 'lax' | 'strict' | 'none';
|
|
11
|
+
/** `Secure`. Default `'auto'` — set when the request came over HTTPS. */
|
|
12
|
+
secure?: boolean | 'auto';
|
|
13
|
+
/** Cookie path. Default `/`. */
|
|
14
|
+
path?: string;
|
|
15
|
+
/** Roles every anonymous actor holds. Default `['anonymous']`. */
|
|
16
|
+
roles?: string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The default identity when `config/agent.ts` sets no `actorResolver`: the endpoints are PUBLIC and
|
|
20
|
+
* every browser is its own anonymous actor, so visitors never share threads, quota or attachments.
|
|
21
|
+
*
|
|
22
|
+
* On the first request without it, the response sets `agent_anon=<32 random bytes, base64url>;
|
|
23
|
+
* Path=/; Max-Age=31536000; HttpOnly; SameSite=Lax` (plus `Secure` over HTTPS), and the actor id is
|
|
24
|
+
* `anon:` + a SHA-256 digest of the token — the contract of `@dudousxd/nestjs-agent`'s resolver of
|
|
25
|
+
* the same name. The cookie is `HttpOnly` (page scripts cannot read it), server-minted, and needs no
|
|
26
|
+
* secret: the digest is stable across pods and restarts. A client needs no code for it.
|
|
27
|
+
*
|
|
28
|
+
* Require login instead with `actorResolver: new AuthActorResolver()` (reads `ctx.auth.user`).
|
|
29
|
+
*/
|
|
30
|
+
export declare class AnonymousActorResolver implements ActorResolver {
|
|
31
|
+
private readonly options;
|
|
32
|
+
private readonly cookieName;
|
|
33
|
+
private readonly roles;
|
|
34
|
+
constructor(options?: AnonymousActorOptions);
|
|
35
|
+
resolve(context: unknown): Actor;
|
|
36
|
+
private setCookie;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=anonymous-actor-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anonymous-actor-resolver.d.ts","sourceRoot":"","sources":["../../src/anonymous-actor-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAoCD;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAuB,YAAW,aAAa;IAI9C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IAEjC,YAA6B,OAAO,GAAE,qBAA0B,EAG/D;IAED,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAU/B;IAED,OAAO,CAAC,SAAS;CAmBlB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { createHash, randomBytes } from 'node:crypto';
|
|
2
|
+
/** The minted cookie value: 32 random bytes, base64url (43 characters). */
|
|
3
|
+
const TOKEN_PATTERN = /^[A-Za-z0-9_-]{43}$/;
|
|
4
|
+
/** One minted token per request, however many times a request resolves its actor. */
|
|
5
|
+
const minted = new WeakMap();
|
|
6
|
+
function readCookie(ctx, name) {
|
|
7
|
+
const raw = ctx.request?.header?.('cookie');
|
|
8
|
+
if (raw === undefined)
|
|
9
|
+
return undefined;
|
|
10
|
+
for (const pair of raw.split(';')) {
|
|
11
|
+
const index = pair.indexOf('=');
|
|
12
|
+
if (index === -1)
|
|
13
|
+
continue;
|
|
14
|
+
if (pair.slice(0, index).trim() === name) {
|
|
15
|
+
try {
|
|
16
|
+
return decodeURIComponent(pair.slice(index + 1).trim());
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The default identity when `config/agent.ts` sets no `actorResolver`: the endpoints are PUBLIC and
|
|
27
|
+
* every browser is its own anonymous actor, so visitors never share threads, quota or attachments.
|
|
28
|
+
*
|
|
29
|
+
* On the first request without it, the response sets `agent_anon=<32 random bytes, base64url>;
|
|
30
|
+
* Path=/; Max-Age=31536000; HttpOnly; SameSite=Lax` (plus `Secure` over HTTPS), and the actor id is
|
|
31
|
+
* `anon:` + a SHA-256 digest of the token — the contract of `@dudousxd/nestjs-agent`'s resolver of
|
|
32
|
+
* the same name. The cookie is `HttpOnly` (page scripts cannot read it), server-minted, and needs no
|
|
33
|
+
* secret: the digest is stable across pods and restarts. A client needs no code for it.
|
|
34
|
+
*
|
|
35
|
+
* Require login instead with `actorResolver: new AuthActorResolver()` (reads `ctx.auth.user`).
|
|
36
|
+
*/
|
|
37
|
+
export class AnonymousActorResolver {
|
|
38
|
+
options;
|
|
39
|
+
cookieName;
|
|
40
|
+
roles;
|
|
41
|
+
constructor(options = {}) {
|
|
42
|
+
this.options = options;
|
|
43
|
+
this.cookieName = options.cookieName ?? 'agent_anon';
|
|
44
|
+
this.roles = options.roles ?? ['anonymous'];
|
|
45
|
+
}
|
|
46
|
+
resolve(context) {
|
|
47
|
+
const ctx = (typeof context === 'object' && context !== null ? context : {});
|
|
48
|
+
let token = minted.get(ctx) ?? readCookie(ctx, this.cookieName);
|
|
49
|
+
if (token === undefined || !TOKEN_PATTERN.test(token)) {
|
|
50
|
+
token = randomBytes(32).toString('base64url');
|
|
51
|
+
minted.set(ctx, token);
|
|
52
|
+
this.setCookie(ctx, token);
|
|
53
|
+
}
|
|
54
|
+
const digest = createHash('sha256').update(token).digest('base64url').slice(0, 32);
|
|
55
|
+
return { id: `anon:${digest}`, roles: [...this.roles] };
|
|
56
|
+
}
|
|
57
|
+
setCookie(ctx, token) {
|
|
58
|
+
const sameSite = this.options.sameSite ?? 'lax';
|
|
59
|
+
const secureOption = this.options.secure ?? 'auto';
|
|
60
|
+
const secure = sameSite === 'none' ||
|
|
61
|
+
(secureOption === 'auto' ? ctx.request?.secure?.() === true : secureOption);
|
|
62
|
+
const maxAge = Math.round((this.options.maxAgeDays ?? 365) * 24 * 60 * 60);
|
|
63
|
+
const cookie = [
|
|
64
|
+
`${this.cookieName}=${token}`,
|
|
65
|
+
`Path=${this.options.path ?? '/'}`,
|
|
66
|
+
`Max-Age=${maxAge}`,
|
|
67
|
+
'HttpOnly',
|
|
68
|
+
`SameSite=${sameSite === 'none' ? 'None' : sameSite === 'strict' ? 'Strict' : 'Lax'}`,
|
|
69
|
+
...(secure ? ['Secure'] : []),
|
|
70
|
+
].join('; ');
|
|
71
|
+
// Plain (unsigned) on purpose: the value is already unguessable, and the NestJS contract is the
|
|
72
|
+
// raw token. `append` keeps any other `Set-Cookie` the app's own middleware wrote.
|
|
73
|
+
ctx.response?.append?.('Set-Cookie', cookie);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=anonymous-actor-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anonymous-actor-resolver.js","sourceRoot":"","sources":["../../src/anonymous-actor-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/src/authorizer.d.ts
CHANGED
|
@@ -2,9 +2,10 @@ import { DefaultRolesPolicy } from './tool-registry.js';
|
|
|
2
2
|
import type { Actor, ToolSpec } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* The default tool authorizer the provider binds when `config/agent.ts` sets no `authorizer` /
|
|
5
|
-
* `rolesPolicy`.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* `rolesPolicy`. A tool that declares `roles` is offered (and invocable) only to an actor holding one
|
|
6
|
+
* of them; a tool that declares none takes `defaultRoles` — `[]` unless configured, which means no
|
|
7
|
+
* restriction (anyone the actor resolver resolved, an anonymous visitor included). Set
|
|
8
|
+
* `defaultRoles: ['ADMIN']` for the old fail-closed posture.
|
|
8
9
|
*
|
|
9
10
|
* This is a thin, explicitly-named binding over core's {@link DefaultRolesPolicy} (the `RolesPolicy`
|
|
10
11
|
* seam) so apps that plug an ability-aware gate (`@adonis-agora/authz` Bouncer adapter) swap ONLY the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorizer.d.ts","sourceRoot":"","sources":["../../src/authorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"authorizer.d.ts","sourceRoot":"","sources":["../../src/authorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D,YAAY,YAAY,GAAE,MAAM,EAAO,EAEtC;IAEQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAElD;CACF"}
|
package/dist/src/authorizer.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { DefaultRolesPolicy } from './tool-registry.js';
|
|
2
2
|
/**
|
|
3
3
|
* The default tool authorizer the provider binds when `config/agent.ts` sets no `authorizer` /
|
|
4
|
-
* `rolesPolicy`.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* `rolesPolicy`. A tool that declares `roles` is offered (and invocable) only to an actor holding one
|
|
5
|
+
* of them; a tool that declares none takes `defaultRoles` — `[]` unless configured, which means no
|
|
6
|
+
* restriction (anyone the actor resolver resolved, an anonymous visitor included). Set
|
|
7
|
+
* `defaultRoles: ['ADMIN']` for the old fail-closed posture.
|
|
7
8
|
*
|
|
8
9
|
* This is a thin, explicitly-named binding over core's {@link DefaultRolesPolicy} (the `RolesPolicy`
|
|
9
10
|
* seam) so apps that plug an ability-aware gate (`@adonis-agora/authz` Bouncer adapter) swap ONLY the
|
|
@@ -11,7 +12,7 @@ import { DefaultRolesPolicy } from './tool-registry.js';
|
|
|
11
12
|
* `ToolRegistry.invoke` — both run through this same `can(actor, tool)`.
|
|
12
13
|
*/
|
|
13
14
|
export class DefaultToolAuthorizer extends DefaultRolesPolicy {
|
|
14
|
-
constructor(defaultRoles = [
|
|
15
|
+
constructor(defaultRoles = []) {
|
|
15
16
|
super(defaultRoles);
|
|
16
17
|
}
|
|
17
18
|
can(actor, tool) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorizer.js","sourceRoot":"","sources":["../../src/authorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD
|
|
1
|
+
{"version":3,"file":"authorizer.js","sourceRoot":"","sources":["../../src/authorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,qBAAsB,SAAQ,kBAAkB;IAC3D,YAAY,YAAY,GAAa,EAAE;QACrC,KAAK,CAAC,YAAY,CAAC,CAAC;IACtB,CAAC;IAEQ,GAAG,CAAC,KAAY,EAAE,IAAc;QACvC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -16,13 +16,13 @@ import type { ModelProvider } from './spi/model-provider.js';
|
|
|
16
16
|
import type { AgentPricingStore } from './spi/pricing-store.js';
|
|
17
17
|
import type { InputProcessor, OutputProcessor } from './spi/processors.js';
|
|
18
18
|
import type { QuotaProvider } from './spi/quota-provider.js';
|
|
19
|
-
import type { QuotaStore } from './spi/quota-store.js';
|
|
20
19
|
import type { Retriever } from './spi/retriever.js';
|
|
21
20
|
import type { RolesPolicy } from './spi/roles-policy.js';
|
|
22
21
|
import type { TokenStreamSink } from './spi/token-stream-sink.js';
|
|
23
22
|
import type { StreamProtocol } from './sse.js';
|
|
24
|
-
import type { ActorDirectoryFactory, AttachmentStagingContext, AttachmentStagingFactory, EmbeddingFactory, GovernanceQueriesContext, GovernanceQueriesFactory, LucidGovernanceConfig, LucidPricingConfig, LucidStoreConfig, MemoryActorDirectoryConfig, MemoryRetrieverConfig, MemoryStoreConfig, PgVectorRetrieverConfig, PricingContext, PricingFactory,
|
|
25
|
-
import { actorDirectories, attachmentStores, governanceQueries, pricingStores,
|
|
23
|
+
import type { ActorDirectoryFactory, AttachmentStagingContext, AttachmentStagingFactory, EmbeddingFactory, GovernanceQueriesContext, GovernanceQueriesFactory, LucidGovernanceConfig, LucidPricingConfig, LucidStoreConfig, MemoryActorDirectoryConfig, MemoryRetrieverConfig, MemoryStoreConfig, PgVectorRetrieverConfig, PricingContext, PricingFactory, RedisTokenSinkConfig, RetrieverContext, RetrieverFactory, StoreContext, StoreFactory, TokenSinkFactory } from './stores/factory.js';
|
|
24
|
+
import { actorDirectories, attachmentStores, governanceQueries, pricingStores, retrievers, stores, streamTransports, tokenSinks } from './stores/factory.js';
|
|
25
|
+
import type { QuotaLimits } from './stores/ledger-quota-provider.js';
|
|
26
26
|
import type { ToolTransientRetrySetting } from './tool-retry.js';
|
|
27
27
|
import type { Actor, AgentDefinition } from './types.js';
|
|
28
28
|
/** A lazy factory thunk, so the peer (`ai`/a provider SDK) is imported only when the config loads. */
|
|
@@ -65,14 +65,16 @@ export interface AgentConfig {
|
|
|
65
65
|
*/
|
|
66
66
|
sink?: TokenStreamSink | SinkFactory;
|
|
67
67
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* `
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
68
|
+
* The caller's budget. `{ limits: { day?: { tokens?, usd? }, month?: { tokens?, usd? } } }` puts
|
|
69
|
+
* ceilings on the built-in ledger provider; a `QuotaProvider` of your own replaces it. Either way
|
|
70
|
+
* `GET <path>/quota` reports it and a send whose report comes back `blocked` is refused with `429`
|
|
71
|
+
* before the turn starts. Omit → reported (usage off the ledger), never enforced — for a public
|
|
72
|
+
* (anonymous) deployment that means unbounded model spend, so set limits there; they apply per
|
|
73
|
+
* actor, which is per browser in anonymous mode.
|
|
74
74
|
*/
|
|
75
|
-
quota?:
|
|
75
|
+
quota?: {
|
|
76
|
+
limits: QuotaLimits;
|
|
77
|
+
} | QuotaProvider;
|
|
76
78
|
/**
|
|
77
79
|
* Prices each turn's tokens into the assistant message's `usage.costUsd`. A provider-reported cost
|
|
78
80
|
* (a gateway) always wins; otherwise the loop estimates from this store's current price rows (fetched
|
|
@@ -138,24 +140,15 @@ export interface AgentConfig {
|
|
|
138
140
|
*/
|
|
139
141
|
retrievalFilter?: (actor: Actor) => Record<string, unknown>;
|
|
140
142
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
143
|
+
* Where chat attachments are stored — the bring-your-own-storage seam. `attachmentStores.media()`
|
|
144
|
+
* keeps them in `@adonis-agora/media` (any Drive disk: S3, GCS, R2, the filesystem);
|
|
145
|
+
* `attachmentStores.memory()` inlines them for tests and demos; or pass your own
|
|
146
|
+
* `AttachmentStagingStore`. When set, `POST <path>/attachments` accepts uploads (the store's
|
|
147
|
+
* `describe()` sets the size cap and content types; default 20 MiB, images/PDF/text/CSV) and a send
|
|
148
|
+
* names them as `attachments: [{ mediaId }]` — the url the model fetches is resolved by the store,
|
|
149
|
+
* never taken from the request. Omit → attachments are off.
|
|
147
150
|
*/
|
|
148
|
-
|
|
149
|
-
/** Per-file byte cap the upload route enforces. Default 20 MiB. */
|
|
150
|
-
attachmentMaxBytes?: number;
|
|
151
|
-
/**
|
|
152
|
-
* Allowed upload content types, matched EXACTLY (no wildcards, no `text/*` prefix rule). Default:
|
|
153
|
-
* `['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'application/pdf', 'text/plain',
|
|
154
|
-
* 'text/csv']` — what multimodal providers commonly accept as native image/file parts. Anything
|
|
155
|
-
* else, `text/markdown` included, is rejected with `415`. Passing this REPLACES the default list
|
|
156
|
-
* rather than extending it, so spread the types you still want.
|
|
157
|
-
*/
|
|
158
|
-
attachmentAllowedContentTypes?: string[];
|
|
151
|
+
attachments?: AttachmentStagingStore | AttachmentStagingFactory;
|
|
159
152
|
/**
|
|
160
153
|
* Tool authorization gate. Defaults to `DefaultToolAuthorizer` (fail-closed, ADMIN-only; role-set
|
|
161
154
|
* intersection). `authorizer` and `rolesPolicy` are aliases — pass either.
|
|
@@ -163,7 +156,12 @@ export interface AgentConfig {
|
|
|
163
156
|
authorizer?: RolesPolicy;
|
|
164
157
|
/** Alias of {@link AgentConfig.authorizer}. */
|
|
165
158
|
rolesPolicy?: RolesPolicy;
|
|
166
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* Roles a tool requires when it declares none. Default `[]` — no restriction: every tool is
|
|
161
|
+
* callable by whoever `actorResolver` resolved (an anonymous visitor included, when none is
|
|
162
|
+
* configured). `action` tools still park on approval regardless. `['ADMIN']` restores the old
|
|
163
|
+
* fail-closed default.
|
|
164
|
+
*/
|
|
167
165
|
defaultRoles?: string[];
|
|
168
166
|
/**
|
|
169
167
|
* Resolves the acting actor per request (the identity seam). Defaults to a resolver that THROWS on
|
|
@@ -204,12 +202,13 @@ export interface AgentConfig {
|
|
|
204
202
|
/**
|
|
205
203
|
* Which models a caller may pick — `GET <path>/models`, a send's `model`, a thread's pinned model
|
|
206
204
|
* (`PATCH <path>/threads/:id { model }`). The picked id reaches the model provider as
|
|
207
|
-
* `ModelTurnArgs.model` (`
|
|
205
|
+
* `ModelTurnArgs.model` (`aiSdkModels` runs the turn on it).
|
|
208
206
|
*
|
|
209
207
|
* A fixed list is a literal — `{ default: 'gpt-4o-mini', providers: [{ id: 'openai', label:
|
|
210
208
|
* 'OpenAI', models: [{ id: 'gpt-4o-mini', label: 'GPT-4o mini', available: true }] }] }`; pass a
|
|
211
209
|
* `ModelCatalog` (`list({ actor, agent })`) to decide per caller (plan, budget, provider health).
|
|
212
|
-
* Omit →
|
|
210
|
+
* Omit → the catalog the model provider carries (`aiSdkModels({ … })`), else an empty one, and a
|
|
211
|
+
* request naming a model is refused with `400`.
|
|
213
212
|
*/
|
|
214
213
|
models?: ModelCatalog | ModelCatalogView;
|
|
215
214
|
/**
|
|
@@ -312,6 +311,6 @@ export interface AgentConfig {
|
|
|
312
311
|
}
|
|
313
312
|
/** Identity helper giving `config/agent.ts` full type-checking. */
|
|
314
313
|
export declare function defineConfig(config: AgentConfig): AgentConfig;
|
|
315
|
-
export type { ActorDirectoryFactory, AttachmentStagingContext, AttachmentStagingFactory, EmbeddingFactory, GovernanceQueriesContext, GovernanceQueriesFactory, LucidGovernanceConfig, LucidPricingConfig, LucidStoreConfig, MemoryActorDirectoryConfig, MemoryRetrieverConfig, MemoryStoreConfig, PgVectorRetrieverConfig, PricingContext, PricingFactory,
|
|
316
|
-
export { actorDirectories, attachmentStores, governanceQueries, pricingStores,
|
|
314
|
+
export type { ActorDirectoryFactory, AttachmentStagingContext, AttachmentStagingFactory, EmbeddingFactory, GovernanceQueriesContext, GovernanceQueriesFactory, LucidGovernanceConfig, LucidPricingConfig, LucidStoreConfig, MemoryActorDirectoryConfig, MemoryRetrieverConfig, MemoryStoreConfig, PgVectorRetrieverConfig, PricingContext, PricingFactory, RedisTokenSinkConfig, RetrieverContext, RetrieverFactory, StoreContext, StoreFactory, TokenSinkFactory, };
|
|
315
|
+
export { actorDirectories, attachmentStores, governanceQueries, pricingStores, retrievers, stores, streamTransports, tokenSinks, };
|
|
317
316
|
//# sourceMappingURL=define_config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { actorDirectories, attachmentStores, governanceQueries, pricingStores,
|
|
1
|
+
import { actorDirectories, attachmentStores, governanceQueries, pricingStores, retrievers, stores, streamTransports, tokenSinks, } from './stores/factory.js';
|
|
2
2
|
/** Identity helper giving `config/agent.ts` full type-checking. */
|
|
3
3
|
export function defineConfig(config) {
|
|
4
4
|
return config;
|
|
5
5
|
}
|
|
6
|
-
export { actorDirectories, attachmentStores, governanceQueries, pricingStores,
|
|
6
|
+
export { actorDirectories, attachmentStores, governanceQueries, pricingStores, retrievers, stores, streamTransports, tokenSinks, };
|
|
7
7
|
//# sourceMappingURL=define_config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AA6CA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAgS7B,mEAAmE;AACnE,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC;AAyBD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,UAAU,GACX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run-workflow.d.ts","sourceRoot":"","sources":["../../../src/durable/agent-run-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,KAAK,WAAW,EAEjB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-run-workflow.d.ts","sourceRoot":"","sources":["../../../src/durable/agent-run-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,KAAK,WAAW,EAEjB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAgB,QAAQ;QAAK,IAAI;QAAqB,OAAO;MAAQ;IAE/D,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CA+HlF;CACF"}
|
|
@@ -2,6 +2,7 @@ import { BaseWorkflow, ContinueAsNew, WorkflowSuspended, } from '@adonis-agora/d
|
|
|
2
2
|
import { utcDay } from '../agent-deps.js';
|
|
3
3
|
import { runAgentLoop, settleAll, streamErrorFrame } from '../agent-loop.js';
|
|
4
4
|
import { isReplayIntegrityError } from '../replay-integrity.js';
|
|
5
|
+
import { clearActiveRun } from '../spi/agent-store.js';
|
|
5
6
|
import { childSinkWriter } from '../spi/token-stream-sink.js';
|
|
6
7
|
import { getDurableAgentContext } from './agent-run-context.js';
|
|
7
8
|
/**
|
|
@@ -131,7 +132,12 @@ export class AgentRunWorkflow extends BaseWorkflow {
|
|
|
131
132
|
},
|
|
132
133
|
};
|
|
133
134
|
try {
|
|
134
|
-
|
|
135
|
+
const result = await runAgentLoop({ ...deps, day }, input, hooks);
|
|
136
|
+
// The top-level run owns the thread's active-run pointer (a child runs on a scratch thread).
|
|
137
|
+
if (!isChild) {
|
|
138
|
+
await ctx.localStep('deactivate', () => clearActiveRun(store, input.threadId, ctx.runId));
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
135
141
|
}
|
|
136
142
|
catch (error) {
|
|
137
143
|
// A suspend / continue-as-new is control flow, not a failure — let the engine handle it.
|
|
@@ -161,6 +167,7 @@ export class AgentRunWorkflow extends BaseWorkflow {
|
|
|
161
167
|
// terminal, so it can't clobber a completion. Each run (parent AND child) owns its own row.
|
|
162
168
|
await ctx.localStep('persist:run:fail', () => store.recordRunEnd({ runId: ctx.runId, status: 'failed', error: message }));
|
|
163
169
|
if (!isChild) {
|
|
170
|
+
await ctx.localStep('deactivate', () => clearActiveRun(store, input.threadId, ctx.runId));
|
|
164
171
|
const writer = await deps.sink.open(ctx.runId);
|
|
165
172
|
await writer.write(streamErrorFrame(error));
|
|
166
173
|
await writer.end();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run-workflow.js","sourceRoot":"","sources":["../../../src/durable/agent-run-workflow.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-run-workflow.js","sourceRoot":"","sources":["../../../src/durable/agent-run-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-agent-runner.d.ts","sourceRoot":"","sources":["../../../src/durable/durable-agent-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAejD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAMlD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IANzB;;;OAGG;IACH,YACmB,MAAM,EAAE,cAAc,EACtB,KAAK,CAAC,EAAE,UAAU,YAAA,EACjC;IAEE,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"durable-agent-runner.d.ts","sourceRoot":"","sources":["../../../src/durable/durable-agent-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAejD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAMlD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IANzB;;;OAGG;IACH,YACmB,MAAM,EAAE,cAAc,EACtB,KAAK,CAAC,EAAE,UAAU,YAAA,EACjC;IAEE,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAkB5D;IAEK,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;IAEK,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzC;CACF"}
|
|
@@ -32,6 +32,9 @@ export class DurableAgentRunner {
|
|
|
32
32
|
const stamped = { ...input, day: input.day ?? utcDay() };
|
|
33
33
|
// Own the run id so we can still return it when the run suspends synchronously on start (below).
|
|
34
34
|
const runId = crypto.randomUUID();
|
|
35
|
+
// Before the engine starts it: a run the engine drives synchronously could otherwise end (and
|
|
36
|
+
// clear it) before it was set. The workflow clears it when the run ends.
|
|
37
|
+
await this.store?.setActiveStream(input.threadId, runId);
|
|
35
38
|
try {
|
|
36
39
|
await this.engine.start(AgentRunWorkflow, stamped, runId);
|
|
37
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-agent-runner.js","sourceRoot":"","sources":["../../../src/durable/durable-agent-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK1C,OAAO,EAAE,gBAAgB,EAA6B,MAAM,yBAAyB,CAAC;AAEtF;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,MAAM,IAAI,GAAI,KAAmC,EAAE,IAAI,CAAC;IACxD,OAAO,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,eAAe,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAMV,MAAM;IACN,KAAK;IANxB;;;OAGG;IACH,YACmB,MAAsB,EACtB,KAAkB;sBADlB,MAAM;qBACN,KAAK;IACrB,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,KAAoB;QAC9B,MAAM,OAAO,GAAyB,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,MAAM,EAAE,EAAE,CAAC;QAC/E,iGAAiG;QACjG,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2FAA2F;YAC3F,+FAA+F;YAC/F,kEAAkE;YAClE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAkB,EAAE,KAAiB;QAC/D,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,+FAA+F;QAC/F,0FAA0F;QAC1F,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACvD,iGAAiG;QACjG,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACxF,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"durable-agent-runner.js","sourceRoot":"","sources":["../../../src/durable/durable-agent-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK1C,OAAO,EAAE,gBAAgB,EAA6B,MAAM,yBAAyB,CAAC;AAEtF;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,MAAM,IAAI,GAAI,KAAmC,EAAE,IAAI,CAAC;IACxD,OAAO,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,eAAe,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAMV,MAAM;IACN,KAAK;IANxB;;;OAGG;IACH,YACmB,MAAsB,EACtB,KAAkB;sBADlB,MAAM;qBACN,KAAK;IACrB,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,KAAoB;QAC9B,MAAM,OAAO,GAAyB,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,MAAM,EAAE,EAAE,CAAC;QAC/E,iGAAiG;QACjG,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,8FAA8F;QAC9F,yEAAyE;QACzE,MAAM,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2FAA2F;YAC3F,+FAA+F;YAC/F,kEAAkE;YAClE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAkB,EAAE,KAAiB;QAC/D,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,+FAA+F;QAC/F,0FAA0F;QAC1F,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACvD,iGAAiG;QACjG,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACxF,CAAC;CACF"}
|