@adonis-agora/agent 0.1.0 → 0.3.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.
Files changed (78) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/src/actor-resolver.js +86 -0
  3. package/dist/src/actor-resolver.js.map +1 -0
  4. package/dist/src/agent-registry.js +17 -0
  5. package/dist/src/agent-registry.js.map +1 -0
  6. package/dist/src/ai-sdk/index.js +2 -0
  7. package/dist/src/ai-sdk/index.js.map +1 -0
  8. package/dist/src/authorizer.js +21 -0
  9. package/dist/src/authorizer.js.map +1 -0
  10. package/dist/src/durable/agent-run-workflow.d.ts +6 -2
  11. package/dist/src/durable/agent-run-workflow.d.ts.map +1 -1
  12. package/dist/src/durable/agent-run-workflow.js +5 -15
  13. package/dist/src/durable/agent-run-workflow.js.map +1 -1
  14. package/dist/src/hooks/tools.d.ts +45 -0
  15. package/dist/src/hooks/tools.d.ts.map +1 -0
  16. package/dist/src/hooks/tools.js +48 -0
  17. package/dist/src/hooks/tools.js.map +1 -0
  18. package/dist/src/in-process-sink.d.ts +16 -0
  19. package/dist/src/in-process-sink.d.ts.map +1 -0
  20. package/dist/src/in-process-sink.js +57 -0
  21. package/dist/src/in-process-sink.js.map +1 -0
  22. package/dist/src/index.d.ts +2 -2
  23. package/dist/src/index.d.ts.map +1 -1
  24. package/dist/src/index.js +2 -2
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/personas.js +14 -0
  27. package/dist/src/personas.js.map +1 -0
  28. package/dist/src/spi/actor-resolver.js +2 -0
  29. package/dist/src/spi/actor-resolver.js.map +1 -0
  30. package/dist/src/spi/agent-runner.js +2 -0
  31. package/dist/src/spi/agent-runner.js.map +1 -0
  32. package/dist/src/spi/model-provider.js +2 -0
  33. package/dist/src/spi/model-provider.js.map +1 -0
  34. package/dist/src/spi/quota-store.js +2 -0
  35. package/dist/src/spi/quota-store.js.map +1 -0
  36. package/dist/src/spi/roles-policy.js +2 -0
  37. package/dist/src/spi/roles-policy.js.map +1 -0
  38. package/dist/src/spi/token-stream-sink.d.ts +22 -0
  39. package/dist/src/spi/token-stream-sink.d.ts.map +1 -0
  40. package/dist/src/spi/token-stream-sink.js +2 -0
  41. package/dist/src/spi/token-stream-sink.js.map +1 -0
  42. package/dist/src/spi/tool.js +2 -0
  43. package/dist/src/spi/tool.js.map +1 -0
  44. package/dist/src/stores/factory.d.ts +14 -2
  45. package/dist/src/stores/factory.d.ts.map +1 -1
  46. package/dist/src/stores/factory.js +10 -2
  47. package/dist/src/stores/factory.js.map +1 -1
  48. package/dist/src/stores/lucid-governance-queries.d.ts +13 -1
  49. package/dist/src/stores/lucid-governance-queries.d.ts.map +1 -1
  50. package/dist/src/stores/lucid-governance-queries.js +18 -2
  51. package/dist/src/stores/lucid-governance-queries.js.map +1 -1
  52. package/dist/src/stores/lucid-pricing.d.ts +13 -1
  53. package/dist/src/stores/lucid-pricing.d.ts.map +1 -1
  54. package/dist/src/stores/lucid-pricing.js +10 -2
  55. package/dist/src/stores/lucid-pricing.js.map +1 -1
  56. package/dist/src/stores/lucid-schema.d.ts +7 -0
  57. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  58. package/dist/src/stores/lucid-schema.js +26 -0
  59. package/dist/src/stores/lucid-schema.js.map +1 -1
  60. package/dist/src/stores/lucid.d.ts +5 -2
  61. package/dist/src/stores/lucid.d.ts.map +1 -1
  62. package/dist/src/stores/lucid.js +3 -3
  63. package/dist/src/stores/lucid.js.map +1 -1
  64. package/dist/src/testing/fake-model-provider.js +36 -0
  65. package/dist/src/testing/fake-model-provider.js.map +1 -0
  66. package/dist/src/testing/in-memory-quota.js +24 -0
  67. package/dist/src/testing/in-memory-quota.js.map +1 -0
  68. package/dist/src/testing/in-memory-sink.js +55 -0
  69. package/dist/src/testing/in-memory-sink.js.map +1 -0
  70. package/dist/src/tool-discovery.js +126 -0
  71. package/dist/src/tool-discovery.js.map +1 -0
  72. package/dist/src/tool-registry.js +90 -0
  73. package/dist/src/tool-registry.js.map +1 -0
  74. package/dist/stubs/main.d.ts +3 -0
  75. package/dist/stubs/main.d.ts.map +1 -0
  76. package/dist/stubs/main.js +4 -0
  77. package/dist/stubs/main.js.map +1 -0
  78. package/package.json +6 -5
package/CHANGELOG.md ADDED
@@ -0,0 +1,39 @@
1
+ # @adonis-agora/agent
2
+
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2](https://github.com/DavideCarvalho/adonis-agent/pull/2) [`3ed796f`](https://github.com/DavideCarvalho/adonis-agent/commit/3ed796f5106416726526651088fb98c1d2495172) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - `autoCreateTables` now defaults to **`true`** for the Lucid stores — the agent lib manages its own
8
+ schema by default, completing the ecosystem convention (mirrors `@adonis-agora/durable` and
9
+ `@adonis-agora/authz`). On first use a store provisions the six shared agent tables with `CREATE
10
+ TABLE IF NOT EXISTS`; set `autoCreateTables: false` (on `stores.lucid`, `pricingStores.lucid`, or
11
+ `governanceQueries.lucid`) to opt out and run the published migration instead.
12
+
13
+ Crucially, provisioning is no longer the agent store's job alone: the **pricing store** and the
14
+ **governance read-model** also auto-provision on first use, sharing one memoized `CREATE TABLE` pass
15
+ per db client (new exported `ensureAgentTables`). This closes two real gaps — seeding model prices
16
+ before the first agent run, and opening the governance dashboard on a fresh deploy — that the
17
+ store-only auto-create left broken.
18
+
19
+ The dashboard's peer range is bumped to `@adonis-agora/agent@^0.3.0`.
20
+
21
+ ## 0.2.0
22
+
23
+ ### Minor Changes
24
+
25
+ - [`f1fea00`](https://github.com/DavideCarvalho/adonis-agent/commit/f1fea00e165ef6d106fa67ed9ceda6e03ddbca3b) - Suporta `@adonis-agora/durable` 0.8.x (o peer passa de `^0.7.0` para `^0.8.0`).
26
+
27
+ O durable 0.8.0 removeu o decorator `@Workflow`, que o `AgentRunWorkflow` usava, em favor de
28
+ `BaseWorkflow` + `static workflow = { name, version }`. Instalar agent 0.1.0 ao lado de durable
29
+ 0.8.0 derrubava o modo durable inteiro — `TypeError: (0 , Workflow) is not a function` ao carregar
30
+ o módulo, com o provider caindo silenciosamente no runner inline. O `^0.7.0` barrava a combinação,
31
+ então ninguém instalou os dois juntos; o preço era ficar preso ao durable 0.7.
32
+
33
+ O `AgentRunWorkflow` agora estende `BaseWorkflow` e declara `static workflow`. O resto da
34
+ integração (`WorkflowEngine.start/signal/cancel`, `registerWorkflowClass`, `WorkflowSuspended`,
35
+ `ContinueAsNew`, `WorkflowCtx`) não mudou.
36
+
37
+ O bug nasceu de um vão de teste: o `durable` não era devDependency, então o lockfile resolvia
38
+ 0.7.0 e a suíte exercitava o runner durable contra a versão antiga — verde e cega para o 0.8.0.
39
+ Agora é devDependency em `^0.8.0`, e os testes rodam contra a mesma versão que o peer promete.
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The default {@link ActorResolver} the provider installs when `config/agent.ts` sets no
3
+ * `actorResolver`. It throws on every request rather than inventing an identity — security by
4
+ * default. Wire a real resolver (e.g. {@link AuthActorResolver}) or the opt-in
5
+ * {@link HeaderActorResolver} via `defineConfig({ actorResolver })`.
6
+ */
7
+ export class UnconfiguredActorResolver {
8
+ resolve() {
9
+ throw new Error('No actorResolver configured. @adonis-agora/agent refuses to fabricate a caller identity. ' +
10
+ 'Set defineConfig({ actorResolver }) in config/agent.ts with a resolver that reads your ' +
11
+ 'authenticated principal (e.g. AuthActorResolver over ctx.auth.user), or the built-in ' +
12
+ 'HeaderActorResolver behind a trusted gateway.');
13
+ }
14
+ }
15
+ /** Read a string header off an Adonis-ish `HttpContext` without trusting its concrete shape. */
16
+ function readHeader(ctx, name) {
17
+ const request = ctx.request;
18
+ const value = request?.header?.(name);
19
+ return typeof value === 'string' ? value : undefined;
20
+ }
21
+ /**
22
+ * A development / gateway {@link ActorResolver} that trusts request headers:
23
+ * `x-actor-id` (required), `x-actor-role` (comma-separated → `roles`), `x-tenant-ref`.
24
+ *
25
+ * **Security:** it throws when `x-actor-id` is absent — it never fabricates an identity and never
26
+ * grants a default role (an actor with no `x-actor-role` gets `roles: []`, i.e. no tools). Trusting
27
+ * client headers is only safe behind a gateway that strips and re-sets them from an authenticated
28
+ * principal. Real deployments should provide their own resolver (or {@link AuthActorResolver}) that
29
+ * reads a verified session/JWT instead.
30
+ */
31
+ export class HeaderActorResolver {
32
+ resolve(ctx) {
33
+ const id = readHeader(ctx, 'x-actor-id');
34
+ if (id === undefined || id.length === 0) {
35
+ throw new Error('HeaderActorResolver: missing x-actor-id header. No default actor is fabricated. ' +
36
+ 'Send x-actor-id from a trusted gateway, or configure defineConfig({ actorResolver }) ' +
37
+ 'with a resolver that reads your authenticated principal.');
38
+ }
39
+ const roles = (readHeader(ctx, 'x-actor-role') ?? '')
40
+ .split(',')
41
+ .map((role) => role.trim())
42
+ .filter((role) => role.length > 0);
43
+ const tenantRef = readHeader(ctx, 'x-tenant-ref');
44
+ return {
45
+ id,
46
+ roles,
47
+ ...(tenantRef !== undefined ? { tenantRef } : {}),
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * Reads Adonis's authenticated principal (`ctx.auth.user`, populated by `@adonisjs/auth`) into an
53
+ * {@link Actor}. Fail-closed: throws when no user is authenticated rather than fabricating one. Pass
54
+ * a `toActor` mapper when your user model doesn't expose `id`/`roles`/`tenantRef` directly (e.g. to
55
+ * pull roles from a relation). This is the resolver most apps wire in `config/agent.ts`.
56
+ */
57
+ export class AuthActorResolver {
58
+ options;
59
+ constructor(options = {}) {
60
+ this.options = options;
61
+ }
62
+ resolve(ctx) {
63
+ const user = ctx.auth?.user;
64
+ if (user === undefined || user === null) {
65
+ throw new Error('AuthActorResolver: no authenticated user on ctx.auth.user. Authenticate the request ' +
66
+ '(e.g. an auth middleware) before it reaches the agent routes; no identity is fabricated.');
67
+ }
68
+ if (this.options.toActor !== undefined) {
69
+ return this.options.toActor(user);
70
+ }
71
+ const record = user;
72
+ if (record.id === undefined || record.id === null) {
73
+ throw new Error('AuthActorResolver: ctx.auth.user has no id; pass a toActor mapper.');
74
+ }
75
+ const roles = Array.isArray(record.roles)
76
+ ? record.roles.filter((role) => typeof role === 'string')
77
+ : [];
78
+ const tenantRef = typeof record.tenantRef === 'string' ? record.tenantRef : undefined;
79
+ return {
80
+ id: String(record.id),
81
+ roles,
82
+ ...(tenantRef !== undefined ? { tenantRef } : {}),
83
+ };
84
+ }
85
+ }
86
+ //# sourceMappingURL=actor-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actor-resolver.js","sourceRoot":"","sources":["../../src/actor-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** Holds the named agent definitions registered via `AgentModule.forFeature([...])`. */
2
+ export class AgentRegistry {
3
+ definitions = new Map();
4
+ register(definition) {
5
+ this.definitions.set(definition.name, definition);
6
+ }
7
+ get(name) {
8
+ return this.definitions.get(name);
9
+ }
10
+ has(name) {
11
+ return this.definitions.has(name);
12
+ }
13
+ list() {
14
+ return [...this.definitions.values()];
15
+ }
16
+ }
17
+ //# sourceMappingURL=agent-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../src/agent-registry.ts"],"names":[],"mappings":"AAEA,wFAAwF;AACxF,MAAM,OAAO,aAAa;IACP,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IAElE,QAAQ,CAAC,UAA2B;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { aiSdkModel } from './ai-sdk-model.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai-sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { DefaultRolesPolicy } from './tool-registry.js';
2
+ /**
3
+ * The default tool authorizer the provider binds when `config/agent.ts` sets no `authorizer` /
4
+ * `rolesPolicy`. Fail-closed and ADMIN-only by default: a tool that declares no `roles` is offered
5
+ * (and invocable) ONLY to an actor holding one of the configured `defaultRoles` (`['ADMIN']` unless
6
+ * overridden). Authorization is a plain set intersection of the actor's roles against the tool's.
7
+ *
8
+ * This is a thin, explicitly-named binding over core's {@link DefaultRolesPolicy} (the `RolesPolicy`
9
+ * seam) so apps that plug an ability-aware gate (`@adonis-agora/authz` Bouncer adapter) swap ONLY the
10
+ * binding, never the seam. The double check — offered-tools filter AND an invoke-time re-check inside
11
+ * `ToolRegistry.invoke` — both run through this same `can(actor, tool)`.
12
+ */
13
+ export class DefaultToolAuthorizer extends DefaultRolesPolicy {
14
+ constructor(defaultRoles = ['ADMIN']) {
15
+ super(defaultRoles);
16
+ }
17
+ can(actor, tool) {
18
+ return super.can(actor, tool);
19
+ }
20
+ }
21
+ //# sourceMappingURL=authorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorizer.js","sourceRoot":"","sources":["../../src/authorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAsB,SAAQ,kBAAkB;IAC3D,YAAY,eAAyB,CAAC,OAAO,CAAC;QAC5C,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"}
@@ -1,4 +1,4 @@
1
- import { type WorkflowCtx } from '@adonis-agora/durable';
1
+ import { BaseWorkflow, type WorkflowCtx } from '@adonis-agora/durable';
2
2
  import type { AgentRunInput } from '../types.js';
3
3
  /**
4
4
  * The workflow input. A superset of {@link AgentRunInput} carrying the two fields only the durable
@@ -29,7 +29,11 @@ export interface DurableAgentRunInput extends AgentRunInput {
29
29
  *
30
30
  * Instantiated by the engine with no arguments; its deps come from {@link getDurableAgentContext}.
31
31
  */
32
- export declare class AgentRunWorkflow {
32
+ export declare class AgentRunWorkflow extends BaseWorkflow {
33
+ static workflow: {
34
+ name: string;
35
+ version: string;
36
+ };
33
37
  run(ctx: WorkflowCtx, input: DurableAgentRunInput): Promise<{
34
38
  text: string;
35
39
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-run-workflow.d.ts","sourceRoot":"","sources":["../../../src/durable/agent-run-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAG3D;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+BD;;;;;;;;;;;;;;;GAeG;AACH,qBACa,gBAAgB;IACrB,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAuEpF"}
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;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAG3D;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+BD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAgB,QAAQ;;;MAA6C;IAE/D,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAuEpF"}
@@ -1,11 +1,4 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var AgentRunWorkflow_1;
8
- import { ContinueAsNew, Workflow, WorkflowSuspended, } from '@adonis-agora/durable';
1
+ import { BaseWorkflow, ContinueAsNew, WorkflowSuspended, } from '@adonis-agora/durable';
9
2
  import { utcDay } from '../agent-deps.js';
10
3
  import { runAgentLoop } from '../agent-loop.js';
11
4
  import { getDurableAgentContext } from './agent-run-context.js';
@@ -52,7 +45,8 @@ function childSinkWriter(inner) {
52
45
  *
53
46
  * Instantiated by the engine with no arguments; its deps come from {@link getDurableAgentContext}.
54
47
  */
55
- let AgentRunWorkflow = AgentRunWorkflow_1 = class AgentRunWorkflow {
48
+ export class AgentRunWorkflow extends BaseWorkflow {
49
+ static workflow = { name: 'agora.agent.run', version: '1' };
56
50
  async run(ctx, input) {
57
51
  const { factory, store } = getDurableAgentContext();
58
52
  const day = input.day ?? utcDay();
@@ -84,7 +78,7 @@ let AgentRunWorkflow = AgentRunWorkflow_1 = class AgentRunWorkflow {
84
78
  });
85
79
  return thread.id;
86
80
  });
87
- return ctx.child(AgentRunWorkflow_1, {
81
+ return ctx.child(AgentRunWorkflow, {
88
82
  agentName,
89
83
  threadId: subThreadId,
90
84
  actor: input.actor,
@@ -120,9 +114,5 @@ let AgentRunWorkflow = AgentRunWorkflow_1 = class AgentRunWorkflow {
120
114
  throw error;
121
115
  }
122
116
  }
123
- };
124
- AgentRunWorkflow = AgentRunWorkflow_1 = __decorate([
125
- Workflow({ name: 'agora.agent.run', version: '1' })
126
- ], AgentRunWorkflow);
127
- export { AgentRunWorkflow };
117
+ }
128
118
  //# sourceMappingURL=agent-run-workflow.js.map
@@ -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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"}
@@ -0,0 +1,45 @@
1
+ import type { IndexGenerator } from '@adonisjs/assembler/index_generator';
2
+ /**
3
+ * Where the generated tools barrel is written, relative to the app root. The agent provider imports
4
+ * THIS path at boot (build-time codegen) instead of scanning `app/agent_tools` with `readdir` at
5
+ * runtime. Kept in sync with the module the provider imports.
6
+ */
7
+ export declare const GENERATED_TOOLS_OUTPUT = ".adonisjs/agent/tools.ts";
8
+ /** Options for {@link toolsHook} — mirror the relevant `IndexGenerator.add` knobs. */
9
+ export interface ToolsHookOptions {
10
+ /** Directory the generator scans for tool modules, relative to the app root. Default `app/agent_tools`. */
11
+ source?: string;
12
+ /** Import alias the generated barrel uses for each tool module. Default `#agent_tools`. */
13
+ importAlias?: string;
14
+ /** Output path for the generated barrel, relative to the app root. Default `.adonisjs/agent/tools.ts`. */
15
+ output?: string;
16
+ }
17
+ /**
18
+ * An AdonisJS **Assembler `init` hook** that generates a typed barrel of the app's `app/agent_tools/`
19
+ * directory at build/dev time — exactly how `@adonisjs/core` generates the controllers/events barrels
20
+ * and how `@adonis-agora/durable`'s steps hook does for `app/steps`. The provider imports the generated
21
+ * `.adonisjs/agent/tools.ts` at boot and registers every `@AiTool`/`defineTool` export it finds
22
+ * (falling back to the runtime scan when the barrel is absent).
23
+ *
24
+ * Register it in `adonisrc.ts`:
25
+ *
26
+ * ```ts
27
+ * export default defineConfig({
28
+ * hooks: {
29
+ * init: [() => import('@adonis-agora/agent/hooks/tools')],
30
+ * },
31
+ * })
32
+ * ```
33
+ */
34
+ export declare function toolsHook(options?: ToolsHookOptions): {
35
+ run(_parent: unknown, _hooks: unknown, indexGenerator: IndexGenerator): void;
36
+ };
37
+ /**
38
+ * The default export is the hook object itself, so `() => import('@adonis-agora/agent/hooks/tools')`
39
+ * in `adonisrc.ts` resolves to a ready hook (the assembler calls its `run`).
40
+ */
41
+ declare const _default: {
42
+ run(_parent: unknown, _hooks: unknown, indexGenerator: IndexGenerator): void;
43
+ };
44
+ export default _default;
45
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/hooks/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AAEjE,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,2GAA2G;IAC3G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0GAA0G;IAC1G,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB;iBAMvC,OAAO,UAAU,OAAO,kBAAkB,cAAc,GAAG,IAAI;EAa/E;AAED;;;GAGG;;iBAlBc,OAAO,UAAU,OAAO,kBAAkB,cAAc,GAAG,IAAI;;AAmBhF,wBAA2B"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Where the generated tools barrel is written, relative to the app root. The agent provider imports
3
+ * THIS path at boot (build-time codegen) instead of scanning `app/agent_tools` with `readdir` at
4
+ * runtime. Kept in sync with the module the provider imports.
5
+ */
6
+ export const GENERATED_TOOLS_OUTPUT = '.adonisjs/agent/tools.ts';
7
+ /**
8
+ * An AdonisJS **Assembler `init` hook** that generates a typed barrel of the app's `app/agent_tools/`
9
+ * directory at build/dev time — exactly how `@adonisjs/core` generates the controllers/events barrels
10
+ * and how `@adonis-agora/durable`'s steps hook does for `app/steps`. The provider imports the generated
11
+ * `.adonisjs/agent/tools.ts` at boot and registers every `@AiTool`/`defineTool` export it finds
12
+ * (falling back to the runtime scan when the barrel is absent).
13
+ *
14
+ * Register it in `adonisrc.ts`:
15
+ *
16
+ * ```ts
17
+ * export default defineConfig({
18
+ * hooks: {
19
+ * init: [() => import('@adonis-agora/agent/hooks/tools')],
20
+ * },
21
+ * })
22
+ * ```
23
+ */
24
+ export function toolsHook(options = {}) {
25
+ const source = options.source ?? 'app/agent_tools';
26
+ const importAlias = options.importAlias ?? '#agent_tools';
27
+ const output = options.output ?? GENERATED_TOOLS_OUTPUT;
28
+ return {
29
+ run(_parent, _hooks, indexGenerator) {
30
+ indexGenerator.add('agent_tools', {
31
+ source,
32
+ as: 'barrelFile',
33
+ exportName: 'tools',
34
+ importAlias,
35
+ removeSuffix: 'tool',
36
+ skipSegments: ['agent_tools'],
37
+ output,
38
+ comment: true,
39
+ });
40
+ },
41
+ };
42
+ }
43
+ /**
44
+ * The default export is the hook object itself, so `() => import('@adonis-agora/agent/hooks/tools')`
45
+ * in `adonisrc.ts` resolves to a ready hook (the assembler calls its `run`).
46
+ */
47
+ export default toolsHook();
48
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/hooks/tools.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAYjE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAAC,UAA4B,EAAE;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,sBAAsB,CAAC;IAExD,OAAO;QACL,GAAG,CAAC,OAAgB,EAAE,MAAe,EAAE,cAA8B;YACnE,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE;gBAChC,MAAM;gBACN,EAAE,EAAE,YAAY;gBAChB,UAAU,EAAE,OAAO;gBACnB,WAAW;gBACX,YAAY,EAAE,MAAM;gBACpB,YAAY,EAAE,CAAC,aAAa,CAAC;gBAC7B,MAAM;gBACN,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,eAAe,SAAS,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { SinkWriter, TokenStreamSink } from './spi/token-stream-sink.js';
2
+ /**
3
+ * The default {@link TokenStreamSink}: buffers chunks per run in-process so a reconnecting
4
+ * subscriber replays everything so far, then follows live until the run ends. Good for a single
5
+ * replica; a multi-replica deployment needs a shared (Redis) sink so any pod can serve any run's
6
+ * stream. Byte-identical to the `InMemoryTokenStreamSink` shipped from `./testing`.
7
+ */
8
+ export declare class InProcessTokenStreamSink implements TokenStreamSink {
9
+ private readonly runs;
10
+ private buffer;
11
+ private wake;
12
+ open(runId: string): SinkWriter;
13
+ subscribe(runId: string): AsyncIterable<Uint8Array>;
14
+ close(runId: string): void;
15
+ }
16
+ //# sourceMappingURL=in-process-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-process-sink.d.ts","sourceRoot":"","sources":["../../src/in-process-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAQ9E;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IAErD,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,IAAI;IAOZ,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAcxB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC;IAkB1D,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG3B"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * The default {@link TokenStreamSink}: buffers chunks per run in-process so a reconnecting
3
+ * subscriber replays everything so far, then follows live until the run ends. Good for a single
4
+ * replica; a multi-replica deployment needs a shared (Redis) sink so any pod can serve any run's
5
+ * stream. Byte-identical to the `InMemoryTokenStreamSink` shipped from `./testing`.
6
+ */
7
+ export class InProcessTokenStreamSink {
8
+ runs = new Map();
9
+ buffer(runId) {
10
+ let buf = this.runs.get(runId);
11
+ if (buf === undefined) {
12
+ buf = { chunks: [], ended: false, notify: new Set() };
13
+ this.runs.set(runId, buf);
14
+ }
15
+ return buf;
16
+ }
17
+ wake(buf) {
18
+ for (const resolve of buf.notify) {
19
+ resolve();
20
+ }
21
+ buf.notify.clear();
22
+ }
23
+ open(runId) {
24
+ const buf = this.buffer(runId);
25
+ return {
26
+ write: (chunk) => {
27
+ buf.chunks.push(chunk);
28
+ this.wake(buf);
29
+ },
30
+ end: () => {
31
+ buf.ended = true;
32
+ this.wake(buf);
33
+ },
34
+ };
35
+ }
36
+ async *subscribe(runId) {
37
+ const buf = this.buffer(runId);
38
+ let index = 0;
39
+ while (true) {
40
+ while (index < buf.chunks.length) {
41
+ const chunk = buf.chunks[index];
42
+ index += 1;
43
+ if (chunk !== undefined) {
44
+ yield chunk;
45
+ }
46
+ }
47
+ if (buf.ended) {
48
+ return;
49
+ }
50
+ await new Promise((resolve) => buf.notify.add(resolve));
51
+ }
52
+ }
53
+ close(runId) {
54
+ this.runs.delete(runId);
55
+ }
56
+ }
57
+ //# sourceMappingURL=in-process-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-process-sink.js","sourceRoot":"","sources":["../../src/in-process-sink.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IAClB,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE7C,MAAM,CAAC,KAAa;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,IAAI,CAAC,GAAc;QACzB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO;YACL,KAAK,EAAE,CAAC,KAAiB,EAAE,EAAE;gBAC3B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,GAAG,EAAE,GAAG,EAAE;gBACR,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,SAAS,CAAC,KAAa;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,EAAE,CAAC;YACZ,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChC,KAAK,IAAI,CAAC,CAAC;gBACX,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "0.1.0";
1
+ export declare const VERSION = "0.3.0";
2
2
  export * from './types.js';
3
3
  export * from './spi/tool.js';
4
4
  export * from './spi/model-provider.js';
@@ -46,7 +46,7 @@ export type { RolesPolicy as ToolAuthorizer } from './spi/roles-policy.js';
46
46
  export { InlineAgentRunner } from './runners/inline-agent-runner.js';
47
47
  export { LucidAgentStore } from './stores/lucid.js';
48
48
  export type { LucidAgentStoreOptions, LucidDatabaseLike, LucidClientLike, LucidQueryBuilderLike, LucidInsertBuilderLike, } from './stores/lucid.js';
49
- export { createTableStatements, createAgentTables, AGENT_TABLES } from './stores/lucid-schema.js';
49
+ export { createTableStatements, createAgentTables, ensureAgentTables, AGENT_TABLES, } from './stores/lucid-schema.js';
50
50
  export { LedgerQuotaStore } from './stores/ledger-quota.js';
51
51
  export { LucidPricingStore } from './stores/lucid-pricing.js';
52
52
  export { LucidGovernanceQueries } from './stores/lucid-governance-queries.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export const VERSION = '0.1.0';
1
+ export const VERSION = '0.3.0';
2
2
  export * from './types.js';
3
3
  export * from './spi/tool.js';
4
4
  export * from './spi/model-provider.js';
@@ -36,7 +36,7 @@ export { AgentService } from './agent-service.js';
36
36
  export { DefaultToolAuthorizer } from './authorizer.js';
37
37
  export { InlineAgentRunner } from './runners/inline-agent-runner.js';
38
38
  export { LucidAgentStore } from './stores/lucid.js';
39
- export { createTableStatements, createAgentTables, AGENT_TABLES } from './stores/lucid-schema.js';
39
+ export { createTableStatements, createAgentTables, ensureAgentTables, AGENT_TABLES, } from './stores/lucid-schema.js';
40
40
  export { LedgerQuotaStore } from './stores/ledger-quota.js';
41
41
  export { LucidPricingStore } from './stores/lucid-pricing.js';
42
42
  export { LucidGovernanceQueries } from './stores/lucid-governance-queries.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,kBAAkB,GAGnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qCAAqC,EACrC,uCAAuC,GACxC,MAAM,iBAAiB,CAAC;AAMzB,cAAc,kBAAkB,CAAC;AAEjC,gFAAgF;AAChF,OAAO,EACL,YAAY,EACZ,MAAM,EACN,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AA+B5B,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEpG,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EACL,oBAAoB,GAErB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQpD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,gFAAgF;AAChF,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,aAAa,GACd,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,kBAAkB,GAGnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qCAAqC,EACrC,uCAAuC,GACxC,MAAM,iBAAiB,CAAC;AAMzB,cAAc,kBAAkB,CAAC;AAEjC,gFAAgF;AAChF,OAAO,EACL,YAAY,EACZ,MAAM,EACN,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AA+B5B,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEpG,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EACL,oBAAoB,GAErB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQpD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,gFAAgF;AAChF,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,aAAa,GACd,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /** First filter layer: drop tools the actor's role may not invoke. `can` may be async (authz). */
2
+ export async function filterToolsByRole(tools, actor, policy) {
3
+ const checked = await Promise.all(tools.map(async (tool) => ({ tool, allowed: await policy.can(actor, tool) })));
4
+ return checked.filter((entry) => entry.allowed).map((entry) => entry.tool);
5
+ }
6
+ /** Second filter layer: if the persona pins an allow-list, keep only those tool names. */
7
+ export function personaFilterTools(tools, allowedTools) {
8
+ if (allowedTools === undefined) {
9
+ return tools;
10
+ }
11
+ const allowed = new Set(allowedTools);
12
+ return tools.filter((tool) => allowed.has(tool.name));
13
+ }
14
+ //# sourceMappingURL=personas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/personas.ts"],"names":[],"mappings":"AAGA,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAiB,EACjB,KAAY,EACZ,MAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAC9E,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,kBAAkB,CAChC,KAAiB,EACjB,YAAkC;IAElC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=actor-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actor-resolver.js","sourceRoot":"","sources":["../../../src/spi/actor-resolver.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../src/spi/agent-runner.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-provider.js","sourceRoot":"","sources":["../../../src/spi/model-provider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=quota-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-store.js","sourceRoot":"","sources":["../../../src/spi/quota-store.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=roles-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles-policy.js","sourceRoot":"","sources":["../../../src/spi/roles-policy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The "data plane": live token transport, decoupled from the durable control plane.
3
+ *
4
+ * The model turn writes deltas to a `SinkWriter` keyed by runId; the HTTP layer
5
+ * `subscribe`s by runId and pipes the chunks to the browser as SSE. A late subscriber
6
+ * (reconnect/resume) replays buffered chunks first, then follows live — which is what
7
+ * makes streaming survive a dropped connection or a pod restart.
8
+ */
9
+ export interface SinkWriter {
10
+ write(chunk: Uint8Array): void | Promise<void>;
11
+ /** Mark the run's stream finished (no more chunks). */
12
+ end(): void | Promise<void>;
13
+ }
14
+ export interface TokenStreamSink {
15
+ /** Open (or reopen) the writer for a run. */
16
+ open(runId: string): SinkWriter | Promise<SinkWriter>;
17
+ /** Replay buffered chunks for the run, then yield live ones until `end()`. */
18
+ subscribe(runId: string): AsyncIterable<Uint8Array>;
19
+ /** Drop any buffer/resources for the run. */
20
+ close(runId: string): void | Promise<void>;
21
+ }
22
+ //# sourceMappingURL=token-stream-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-stream-sink.d.ts","sourceRoot":"","sources":["../../../src/spi/token-stream-sink.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,uDAAuD;IACvD,GAAG,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,8EAA8E;IAC9E,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACpD,6CAA6C;IAC7C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=token-stream-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-stream-sink.js","sourceRoot":"","sources":["../../../src/spi/token-stream-sink.ts"],"names":[],"mappings":""}