@adonis-agora/agent 0.44.0 → 0.46.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 (90) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/providers/agent_provider.d.ts.map +1 -1
  3. package/dist/providers/agent_provider.js +42 -4
  4. package/dist/providers/agent_provider.js.map +1 -1
  5. package/dist/src/agent-loop.d.ts.map +1 -1
  6. package/dist/src/agent-loop.js +78 -28
  7. package/dist/src/agent-loop.js.map +1 -1
  8. package/dist/src/ai-sdk/ai-sdk-model.d.ts +30 -13
  9. package/dist/src/ai-sdk/ai-sdk-model.d.ts.map +1 -1
  10. package/dist/src/ai-sdk/ai-sdk-model.js +160 -89
  11. package/dist/src/ai-sdk/ai-sdk-model.js.map +1 -1
  12. package/dist/src/ai-sdk/index.d.ts +1 -1
  13. package/dist/src/ai-sdk/index.d.ts.map +1 -1
  14. package/dist/src/ai-sdk/index.js +1 -1
  15. package/dist/src/ai-sdk/index.js.map +1 -1
  16. package/dist/src/ai-tool-ref.d.ts +25 -8
  17. package/dist/src/ai-tool-ref.d.ts.map +1 -1
  18. package/dist/src/ai-tool-ref.js +22 -4
  19. package/dist/src/ai-tool-ref.js.map +1 -1
  20. package/dist/src/anonymous-actor-resolver.d.ts +38 -0
  21. package/dist/src/anonymous-actor-resolver.d.ts.map +1 -0
  22. package/dist/src/anonymous-actor-resolver.js +76 -0
  23. package/dist/src/anonymous-actor-resolver.js.map +1 -0
  24. package/dist/src/authorizer.d.ts +4 -3
  25. package/dist/src/authorizer.d.ts.map +1 -1
  26. package/dist/src/authorizer.js +5 -4
  27. package/dist/src/authorizer.js.map +1 -1
  28. package/dist/src/define_config.d.ts +16 -3
  29. package/dist/src/define_config.d.ts.map +1 -1
  30. package/dist/src/define_config.js.map +1 -1
  31. package/dist/src/genui/builtins.d.ts +6 -0
  32. package/dist/src/genui/builtins.d.ts.map +1 -0
  33. package/dist/src/genui/builtins.js +6 -0
  34. package/dist/src/genui/builtins.js.map +1 -0
  35. package/dist/src/genui/factory.d.ts +34 -0
  36. package/dist/src/genui/factory.d.ts.map +1 -0
  37. package/dist/src/genui/factory.js +11 -0
  38. package/dist/src/genui/factory.js.map +1 -0
  39. package/dist/src/genui/index.d.ts +53 -0
  40. package/dist/src/genui/index.d.ts.map +1 -0
  41. package/dist/src/genui/index.js +72 -0
  42. package/dist/src/genui/index.js.map +1 -0
  43. package/dist/src/index.d.ts +5 -2
  44. package/dist/src/index.d.ts.map +1 -1
  45. package/dist/src/index.js +5 -2
  46. package/dist/src/index.js.map +1 -1
  47. package/dist/src/mcp/server.d.ts.map +1 -1
  48. package/dist/src/mcp/server.js +4 -1
  49. package/dist/src/mcp/server.js.map +1 -1
  50. package/dist/src/spi/agent-store.d.ts +7 -0
  51. package/dist/src/spi/agent-store.d.ts.map +1 -1
  52. package/dist/src/spi/token-stream-sink.d.ts +2 -0
  53. package/dist/src/spi/token-stream-sink.d.ts.map +1 -1
  54. package/dist/src/spi/token-stream-sink.js.map +1 -1
  55. package/dist/src/spi/tool.d.ts +40 -0
  56. package/dist/src/spi/tool.d.ts.map +1 -1
  57. package/dist/src/sse.d.ts.map +1 -1
  58. package/dist/src/sse.js +1 -0
  59. package/dist/src/sse.js.map +1 -1
  60. package/dist/src/stores/lucid.d.ts +2 -0
  61. package/dist/src/stores/lucid.d.ts.map +1 -1
  62. package/dist/src/stores/lucid.js +7 -0
  63. package/dist/src/stores/lucid.js.map +1 -1
  64. package/dist/src/testing/in-memory-store.d.ts +2 -0
  65. package/dist/src/testing/in-memory-store.d.ts.map +1 -1
  66. package/dist/src/testing/in-memory-store.js +10 -0
  67. package/dist/src/testing/in-memory-store.js.map +1 -1
  68. package/dist/src/testing/index.d.ts +1 -0
  69. package/dist/src/testing/index.d.ts.map +1 -1
  70. package/dist/src/testing/index.js +1 -0
  71. package/dist/src/testing/index.js.map +1 -1
  72. package/dist/src/tool-discovery.d.ts.map +1 -1
  73. package/dist/src/tool-discovery.js +1 -0
  74. package/dist/src/tool-discovery.js.map +1 -1
  75. package/dist/src/tool-registry.d.ts +7 -3
  76. package/dist/src/tool-registry.d.ts.map +1 -1
  77. package/dist/src/tool-registry.js +25 -9
  78. package/dist/src/tool-registry.js.map +1 -1
  79. package/dist/src/tool-ui.d.ts +35 -0
  80. package/dist/src/tool-ui.d.ts.map +1 -0
  81. package/dist/src/tool-ui.js +100 -0
  82. package/dist/src/tool-ui.js.map +1 -0
  83. package/dist/src/types.d.ts +12 -7
  84. package/dist/src/types.d.ts.map +1 -1
  85. package/dist/stubs/config/agent.stub +9 -7
  86. package/package.json +16 -1
  87. package/skills/agent-governance/SKILL.md +4 -3
  88. package/skills/agent-personas-agents/SKILL.md +3 -3
  89. package/skills/agent-setup/SKILL.md +12 -9
  90. package/skills/agent-tools/SKILL.md +11 -10
@@ -1,4 +1,5 @@
1
1
  import { filterToolsByRole, personaFilterTools } from './personas.js';
2
+ import { createNoopEmitUi } from './tool-ui.js';
2
3
  /** Thrown when an actor invokes a tool their role is not allowed. */
3
4
  export class ToolForbiddenError extends Error {
4
5
  toolName;
@@ -61,12 +62,18 @@ export class ToolRegistry {
61
62
  return [...this.entries.values()].map((entry) => entry.spec);
62
63
  }
63
64
  /** The tools to offer the model for this actor+persona, after the two filter layers. */
64
- async definitionsFor(actor, policy, allowedTools) {
65
- return (await this.visibleSpecs(actor, policy, allowedTools)).map((spec) => ({
66
- name: spec.name,
67
- kind: spec.kind,
68
- description: spec.description,
69
- inputSchema: spec.inputSchema,
65
+ async definitionsFor(actor, policy, allowedTools, scope = {}) {
66
+ const visible = await this.visibleSpecs(actor, policy, allowedTools);
67
+ return Promise.all(visible.map(async (spec) => {
68
+ const handler = this.entries.get(spec.name)?.handler;
69
+ // After every gate: a tool this actor cannot reach is never asked to describe itself.
70
+ const override = handler?.describe === undefined ? undefined : await handler.describe({ actor, ...scope });
71
+ return {
72
+ name: spec.name,
73
+ kind: spec.kind,
74
+ description: override?.description ?? spec.description,
75
+ inputSchema: override?.inputSchema ?? spec.inputSchema,
76
+ };
70
77
  }));
71
78
  }
72
79
  /**
@@ -91,17 +98,26 @@ export class ToolRegistry {
91
98
  if (validation.issues !== undefined) {
92
99
  throw new ToolInputInvalidError(name, validation.issues);
93
100
  }
94
- return entry.handler.execute(validation.value, ctx);
101
+ // `emitUi` is part of the context's contract; a caller without a conversation (a test, a script,
102
+ // a JavaScript host) gets the no-op rather than a tool that crashes calling it.
103
+ const withEmit = typeof ctx.emitUi === 'function' ? ctx : { ...ctx, emitUi: createNoopEmitUi(ctx.requestId) };
104
+ return entry.handler.execute(validation.value, withEmit);
95
105
  }
96
106
  }
97
- /** Default gate: one of the actor's roles must be in spec.roles (defaulting to ADMIN-only). */
107
+ /**
108
+ * Default gate: one of the actor's roles must be in `spec.roles` (else the default roles). An empty
109
+ * list means no restriction — the default: a tool is callable by whoever the actor resolver resolved,
110
+ * an anonymous visitor included. `action` tools still park on approval regardless.
111
+ */
98
112
  export class DefaultRolesPolicy {
99
113
  defaultRoles;
100
- constructor(defaultRoles = ['ADMIN']) {
114
+ constructor(defaultRoles = []) {
101
115
  this.defaultRoles = defaultRoles;
102
116
  }
103
117
  can(actor, tool) {
104
118
  const allowed = tool.roles ?? this.defaultRoles;
119
+ if (allowed.length === 0)
120
+ return true;
105
121
  return (actor.roles ?? []).some((role) => allowed.includes(role));
106
122
  }
107
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/tool-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { SinkWriter } from './spi/token-stream-sink.js';
2
+ import type { AiToolCtx } from './spi/tool.js';
3
+ import type { AgentUiComponent } from './stream-events.js';
4
+ /**
5
+ * What a tool step returns: the output alone when the tool pushed nothing (the bytes a run journaled
6
+ * before `emitUi` existed), else an envelope carrying the pushes with it.
7
+ */
8
+ export declare function wrapToolStepOutput(output: unknown, ui: readonly AgentUiComponent[]): unknown;
9
+ /** Read a tool step's result back — an envelope, or a bare output recorded without one. */
10
+ export declare function unwrapToolStepOutput(raw: unknown): {
11
+ output: unknown;
12
+ ui: AgentUiComponent[];
13
+ };
14
+ export type EmitUi = AiToolCtx['emitUi'];
15
+ /**
16
+ * An `emitUi` for a context with no conversation to push into (an MCP call, a handler invoked
17
+ * directly): it accepts the push and answers an id, so a tool never has to branch on where it runs.
18
+ */
19
+ export declare function createNoopEmitUi(scope?: string): EmitUi;
20
+ export interface UiCollector {
21
+ emit: EmitUi;
22
+ /** Every distinct component pushed, first-seen order, last props per id. */
23
+ components(): AgentUiComponent[];
24
+ /** Restart the default id counter — a retried attempt re-pushes under the same ids. */
25
+ restart(): void;
26
+ }
27
+ /**
28
+ * The `emitUi` of one tool call. Ids default to `<toolCallId>:ui:<n>`; each push is written to the
29
+ * run's stream as it happens (a component frame, which both envelopes carry) and kept for the step's
30
+ * result.
31
+ */
32
+ export declare function createUiCollector(toolCallId: string, writer?: SinkWriter): UiCollector;
33
+ /** Merge component lists: first-seen order, last props per id. */
34
+ export declare function mergeUi(...lists: readonly (readonly AgentUiComponent[] | undefined)[]): AgentUiComponent[];
35
+ //# sourceMappingURL=tool-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-ui.d.ts","sourceRoot":"","sources":["../../src/tool-ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgB3D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAM5F;AAED,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAU9F;AAED,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,GAAG,MAAM,CAUvD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,UAAU,IAAI,gBAAgB,EAAE,CAAC;IACjC,uFAAuF;IACvF,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,CAyCtF;AAED,kEAAkE;AAClE,wBAAgB,OAAO,CACrB,GAAG,KAAK,EAAE,SAAS,CAAC,SAAS,gBAAgB,EAAE,GAAG,SAAS,CAAC,EAAE,GAC7D,gBAAgB,EAAE,CAQpB"}
@@ -0,0 +1,100 @@
1
+ /*
2
+ * `ctx.emitUi` plumbing, after `tool-ui.ts` in `@dudousxd/nestjs-agent-core`: a collector per tool
3
+ * call that streams each push and remembers it, and the envelope that carries the pushes on the
4
+ * tool step's journaled result — so a durable replay neither re-streams nor re-persists them.
5
+ */
6
+ const TOOL_STEP_UI = '@@adonis-agent/tool-step-ui';
7
+ /**
8
+ * What a tool step returns: the output alone when the tool pushed nothing (the bytes a run journaled
9
+ * before `emitUi` existed), else an envelope carrying the pushes with it.
10
+ */
11
+ export function wrapToolStepOutput(output, ui) {
12
+ if (ui.length === 0) {
13
+ return output;
14
+ }
15
+ const wrapped = { [TOOL_STEP_UI]: 1, output, ui: [...ui] };
16
+ return wrapped;
17
+ }
18
+ /** Read a tool step's result back — an envelope, or a bare output recorded without one. */
19
+ export function unwrapToolStepOutput(raw) {
20
+ if (typeof raw === 'object' &&
21
+ raw !== null &&
22
+ raw[TOOL_STEP_UI] === 1) {
23
+ const wrapped = raw;
24
+ return { output: wrapped.output, ui: Array.isArray(wrapped.ui) ? wrapped.ui : [] };
25
+ }
26
+ return { output: raw, ui: [] };
27
+ }
28
+ /**
29
+ * An `emitUi` for a context with no conversation to push into (an MCP call, a handler invoked
30
+ * directly): it accepts the push and answers an id, so a tool never has to branch on where it runs.
31
+ */
32
+ export function createNoopEmitUi(scope = 'noop') {
33
+ let next = 0;
34
+ return async (_component, _props, options = {}) => {
35
+ if (options.id !== undefined) {
36
+ return { id: options.id };
37
+ }
38
+ const id = `${scope}:ui:${next}`;
39
+ next += 1;
40
+ return { id };
41
+ };
42
+ }
43
+ /**
44
+ * The `emitUi` of one tool call. Ids default to `<toolCallId>:ui:<n>`; each push is written to the
45
+ * run's stream as it happens (a component frame, which both envelopes carry) and kept for the step's
46
+ * result.
47
+ */
48
+ export function createUiCollector(toolCallId, writer) {
49
+ const pushed = new Map();
50
+ let next = 0;
51
+ const emit = async (component, props, options = {}) => {
52
+ if (typeof component !== 'string' || component.length === 0) {
53
+ throw new Error('emitUi: component must be a non-empty string');
54
+ }
55
+ if (typeof props !== 'object' || props === null || Array.isArray(props)) {
56
+ throw new Error('emitUi: props must be a JSON object');
57
+ }
58
+ let id = options.id;
59
+ if (id === undefined) {
60
+ id = `${toolCallId}:ui:${next}`;
61
+ next += 1;
62
+ }
63
+ const entry = {
64
+ id,
65
+ component,
66
+ // Snapshot: the frame and the persisted value are what the tool pushed at THIS moment.
67
+ props: JSON.parse(JSON.stringify(props)),
68
+ ...(options.version !== undefined ? { version: options.version } : {}),
69
+ toolCallId,
70
+ };
71
+ pushed.set(id, entry);
72
+ await writer?.write({
73
+ t: 'component',
74
+ name: component,
75
+ data: entry.props,
76
+ id,
77
+ toolCallId,
78
+ ...(entry.version !== undefined ? { version: entry.version } : {}),
79
+ });
80
+ return { id };
81
+ };
82
+ return {
83
+ emit,
84
+ components: () => [...pushed.values()],
85
+ restart: () => {
86
+ next = 0;
87
+ },
88
+ };
89
+ }
90
+ /** Merge component lists: first-seen order, last props per id. */
91
+ export function mergeUi(...lists) {
92
+ const merged = new Map();
93
+ for (const list of lists) {
94
+ for (const component of list ?? []) {
95
+ merged.set(component.id, component);
96
+ }
97
+ }
98
+ return [...merged.values()];
99
+ }
100
+ //# sourceMappingURL=tool-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-ui.js","sourceRoot":"","sources":["../../src/tool-ui.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,12 @@ export interface ToolSpec {
44
44
  inputSchema: StandardSchemaV1;
45
45
  /** For `kind: 'agent'` — the name of the agent to delegate to. */
46
46
  targetAgent?: string;
47
- /** Roles allowed to invoke. Undefined → defaults applied by RolesPolicy (e.g. ADMIN-only). */
47
+ /**
48
+ * A successful call ENDS the turn: its effect is the answer (it pushed the UI the user reads), so
49
+ * no further model call narrates it. A failed call does not end it — the model gets to recover.
50
+ */
51
+ terminal?: boolean;
52
+ /** Roles allowed to invoke. Undefined → defaults applied by RolesPolicy (unrestricted unless `defaultRoles` is set). */
48
53
  roles?: string[];
49
54
  /**
50
55
  * An authorization ability name (e.g. 'cache.purge'). Consumed by an ability-aware RolesPolicy
@@ -285,8 +290,8 @@ export interface DelegateEdge {
285
290
  /** Name of the agent to delegate to — the `target` in `ask_<target>`. */
286
291
  agent: string;
287
292
  /**
288
- * Roles allowed to invoke the synthesized delegate tool. Omitted → the `RolesPolicy` default,
289
- * which is ADMIN-only under {@link import('./authorizer.js').DefaultToolAuthorizer}.
293
+ * Roles allowed to invoke the synthesized delegate tool. Omitted → the `RolesPolicy` default
294
+ * (`defaultRoles`; unrestricted unless configured, under {@link import('./authorizer.js').DefaultToolAuthorizer}).
290
295
  */
291
296
  roles?: string[];
292
297
  /**
@@ -314,10 +319,10 @@ export interface AgentDefinition {
314
319
  * Other agents this agent may delegate to. Each edge is auto-registered as an `agent`-kind tool
315
320
  * named `ask_<target>`, which the loop authorizes exactly like any other tool.
316
321
  *
317
- * A bare string declares the edge with no authorization annotation, which is fail-closed on
318
- * purpose: under the default {@link import('./authorizer.js').DefaultToolAuthorizer} a tool with
319
- * no `roles` is ADMIN-only, and under the `@adonis-agora/agent/authz` adapter a tool with no
320
- * `ability` is denied outright — so under authz a bare edge can never be called. Use the
322
+ * A bare string declares the edge with no authorization annotation: under the default
323
+ * {@link import('./authorizer.js').DefaultToolAuthorizer} it takes `defaultRoles` (unrestricted
324
+ * unless configured), and under the `@adonis-agora/agent/authz` adapter a tool with no `ability`
325
+ * is denied outright — so under authz a bare edge can never be called. Use the
321
326
  * {@link DelegateEdge} object form to declare the `roles` and/or `ability` the delegate tool
322
327
  * carries.
323
328
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,6FAA6F;AAC7F,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,6FAA6F;IAC7F,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC;;;;OAIG;IACH,WAAW,EAAE,gBAAgB,CAAC;IAC9B,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wHAAwH;IACxH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,gCAAgC;AAChC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC;IACd;;;;OAIG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,4FAA4F;IAC5F,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,OAAO,GACP,YAAY,GACZ,SAAS,GACT,WAAW,GACX,mBAAmB,CAAC;AAExB,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,sDAAsD;AACtD,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,mGAAmG;IACnG,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,mGAAmG;IACnG,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7E,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,YAAY,EAAE,MAAM,GAAG,aAAa,CAAC;IACrC,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,sGAAsG;IACtG,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,8FAA8F;IAC9F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACtC,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,uGAAuG;IACvG,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2EAA2E;AAC3E,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,MAAM,CAAC;AAEjD,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAErF,oGAAoG;AACpG,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,mGAAmG;IACnG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GACtB,eAAe,GACf,kBAAkB,GAClB,UAAU,GACV,UAAU,GACV,QAAQ;AACV,4EAA4E;GAC1E,SAAS,CAAC"}
@@ -1,7 +1,8 @@
1
1
  {{{
2
2
  exports({ to: app.configPath('agent.ts') })
3
3
  }}}
4
- import { defineConfig, stores, AuthActorResolver } from '@adonis-agora/agent'
4
+ import { defineConfig, stores } from '@adonis-agora/agent'
5
+ // import { AuthActorResolver } from '@adonis-agora/agent'
5
6
  // import { attachmentStores } from '@adonis-agora/agent'
6
7
  // import { aiSdkModel } from '@adonis-agora/agent/ai-sdk'
7
8
  // import { openai } from '@ai-sdk/openai'
@@ -9,8 +10,9 @@ import { defineConfig, stores, AuthActorResolver } from '@adonis-agora/agent'
9
10
  /**
10
11
  * Configuration for @adonis-agora/agent. Only \`model\` is required. Pick a \`store\` by name from the
11
12
  * \`stores\` map (each driver's peer is imported lazily, only when selected); omit \`store\` for the
12
- * in-memory store. The runner is in-process by default (\`durable\` is deferred). The actor resolver
13
- * defaults to one that THROWS — the agent never fabricates a caller — so wire a real one.
13
+ * in-memory store. The runner is in-process by default (\`durable\` is deferred). With no
14
+ * \`actorResolver\` the endpoints are PUBLIC: every browser is its own anonymous actor (an HttpOnly
15
+ * cookie). Uncomment the \`actorResolver\` line below to require login.
14
16
  *
15
17
  * Publish the tables with \`node ace migration:run\` after configuring.
16
18
  */
@@ -31,12 +33,12 @@ export default defineConfig({
31
33
  lucid: stores.lucid(),
32
34
  },
33
35
 
34
- // Identity seam — reads ctx.auth.user (fail-closed: throws when unauthenticated). Swap for your own
35
- // resolver, or HeaderActorResolver behind a trusted gateway.
36
- actorResolver: new AuthActorResolver(),
36
+ // Identity. Omitted → public, one anonymous actor per browser. This line requires login instead
37
+ // (reads ctx.auth.user; 401 without). Or HeaderActorResolver behind a trusted gateway.
38
+ // actorResolver: new AuthActorResolver(),
37
39
 
38
40
  // path: 'agent', // → /agent/chat, /agent/threads, ...
39
- // defaultRoles: ['ADMIN'], // roles a tool requires when it declares none (fail-closed)
41
+ // defaultRoles: ['ADMIN'], // roles a tool requires when it declares none (default: none — open)
40
42
  // maxSteps: 8, // cap on model↔tool iterations per turn
41
43
 
42
44
  // Governance console — served automatically at <path>/dashboard (default /agent/dashboard), no
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonis-agora/agent",
3
- "version": "0.44.0",
3
+ "version": "0.46.0",
4
4
  "description": "Governed, durable-backed AI agent (chat + tool-calling + governance) for AdonisJS — part of the Agora ecosystem.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -140,6 +140,16 @@
140
140
  "types": "./dist/src/react/index.d.ts",
141
141
  "import": "./dist/src/react/index.js",
142
142
  "default": "./dist/src/react/index.js"
143
+ },
144
+ "./genui": {
145
+ "types": "./dist/src/genui/index.d.ts",
146
+ "import": "./dist/src/genui/index.js",
147
+ "default": "./dist/src/genui/index.js"
148
+ },
149
+ "./genui/builtins": {
150
+ "types": "./dist/src/genui/builtins.d.ts",
151
+ "import": "./dist/src/genui/builtins.js",
152
+ "default": "./dist/src/genui/builtins.js"
143
153
  }
144
154
  },
145
155
  "files": [
@@ -163,6 +173,7 @@
163
173
  "@adonisjs/core": "^7.3.0",
164
174
  "@adonisjs/lucid": "^22.4.0",
165
175
  "@adonisjs/redis": "^9.2.0 || ^10.0.0 || ^11.0.0",
176
+ "@dudousxd/nestjs-agent-core": ">=0.26.0 <1.0.0",
166
177
  "@qdrant/js-client-rest": "^1.11.0",
167
178
  "ai": "^7.0.0",
168
179
  "node-sql-parser": "^5.3.0",
@@ -208,6 +219,9 @@
208
219
  },
209
220
  "zod": {
210
221
  "optional": true
222
+ },
223
+ "@dudousxd/nestjs-agent-core": {
224
+ "optional": true
211
225
  }
212
226
  },
213
227
  "devDependencies": {
@@ -219,6 +233,7 @@
219
233
  "@adonisjs/core": "7.5.2",
220
234
  "@adonisjs/lucid": "22.4.2",
221
235
  "@adonisjs/redis": "11.0.0",
236
+ "@dudousxd/nestjs-agent-core": "0.26.0",
222
237
  "@qdrant/js-client-rest": "1.19.0",
223
238
  "@tanstack/intent": "0.4.0",
224
239
  "@types/node": "26.6.3",
@@ -3,7 +3,7 @@ name: agent-governance
3
3
  description: >-
4
4
  Lock down @adonis-agora/agent: the ActorResolver identity seam (AuthActorResolver over
5
5
  ctx.auth.user with toActor mapper, HeaderActorResolver x-actor-id/x-actor-role behind a
6
- gateway, UnconfiguredActorResolver throwing default), DefaultToolAuthorizer role
6
+ gateway, AnonymousActorResolver public default — one anonymous actor per browser), DefaultToolAuthorizer role
7
7
  intersection with the offered-tools + invoke-time double check, object-level ownership
8
8
  via evaluateOwnership (404 for unknown ids), governanceAuthorize mounting semantics for
9
9
  /agent/governance/* (404 without it) and the dashboard mount refusals,
@@ -24,8 +24,9 @@ sources:
24
24
 
25
25
  # Governance: identity, authorization, ownership
26
26
 
27
- Authorization in `@adonis-agora/agent` is fail-closed at three layers: **who is calling**
28
- (an `ActorResolver` that never fabricates an identity), **what they may do** (a
27
+ Authorization in `@adonis-agora/agent` works at three layers: **who is calling**
28
+ (an `ActorResolver` — anonymous per browser when none is configured, `AuthActorResolver` to
29
+ require login), **what they may do** (a
29
30
  `RolesPolicy` checked twice — before the model sees a tool and again at invoke time),
30
31
  and **which records they may address** (object-level ownership on every run/thread route).
31
32
 
@@ -152,9 +152,9 @@ delegatesTo: [{ agent: 'researcher', roles: ['ANALYST', 'ADMIN'] }]
152
152
  ```
153
153
 
154
154
  Mechanism: a delegate tool goes through the SAME gate as every other tool. A bare string
155
- carries nothing, so under `DefaultToolAuthorizer` it is ADMIN-only, and under the authz
156
- Bouncer adapter a spec without `ability` is denied outright — the edge becomes uncalled
157
- for everyone but admins.
155
+ carries nothing, so under `DefaultToolAuthorizer` it takes `defaultRoles` (open unless
156
+ configured), and under the authz Bouncer adapter a spec without `ability` is denied
157
+ outright — the edge becomes uncalled for everyone.
158
158
  Source: `packages/adonis/docs/authoring/personas-and-agents.mdx` ("Authorizing a
159
159
  delegation"), `packages/adonis/src/types.ts` (`DelegateEdge`).
160
160
 
@@ -63,7 +63,8 @@ export default defineConfig({
63
63
  lucid: stores.lucid(), // persists to SQL via @adonisjs/lucid
64
64
  },
65
65
 
66
- // Identity seam — fail-closed. Without a resolver every request throws → 401.
66
+ // Identity. Omitted → endpoints PUBLIC, one anonymous actor per browser (HttpOnly cookie).
67
+ // This line requires login instead (ctx.auth.user; 401 without).
67
68
  actorResolver: new AuthActorResolver(),
68
69
 
69
70
  defaultAgent: {
@@ -181,15 +182,17 @@ Source: `packages/adonis/src/stores/factory.ts` (`tokenSinks`),
181
182
 
182
183
  ## Common mistakes
183
184
 
184
- ### HIGH — omitting `actorResolver` and shipping 401s everywhere
185
+ ### HIGH — omitting `actorResolver` in an app that has logins
185
186
 
186
187
  ```ts
187
- // Wrong — UnconfiguredActorResolver THROWS on every request; all routes answer 401.
188
+ // Wrong for an app with users — no resolver means the endpoints are PUBLIC: every browser
189
+ // is its own anonymous actor (anon:<sha256 of an HttpOnly cookie>), and your users'
190
+ // threads are not tied to their accounts.
188
191
  export default defineConfig({ model: () => aiSdkModel(openai('gpt-4o-mini')) })
189
192
  ```
190
193
 
191
194
  ```ts
192
- // Correct — read the authenticated principal; no identity is ever fabricated.
195
+ // Correct — one line requires login (reads ctx.auth.user; 401 without).
193
196
  import { AuthActorResolver } from '@adonis-agora/agent'
194
197
  export default defineConfig({
195
198
  model: () => aiSdkModel(openai('gpt-4o-mini')),
@@ -197,11 +200,11 @@ export default defineConfig({
197
200
  })
198
201
  ```
199
202
 
200
- Mechanism: the provider installs `UnconfiguredActorResolver` by default, whose
201
- `resolve()` unconditionally throws rather than invent a caller — the route replies 401
202
- before the model ever runs.
203
- Source: `packages/adonis/src/actor-resolver.ts` (`UnconfiguredActorResolver`),
204
- `packages/adonis/docs/governance/authorization.mdx` ("No resolver, no service").
203
+ Mechanism: with no resolver the provider installs `AnonymousActorResolver` and logs a boot
204
+ notice that the endpoints are public. Right for a free public chat (set a `quota` there);
205
+ wrong for an app whose users log in.
206
+ Source: `packages/adonis/src/anonymous-actor-resolver.ts`,
207
+ `packages/adonis/docs/governance/authorization.mdx` ("No resolver: the endpoints are public").
205
208
 
206
209
  ### MEDIUM — expecting quota enforcement after configuring only a store
207
210
 
@@ -6,7 +6,7 @@ description: >-
6
6
  discovery from app/agent_tools via the .adonisjs/agent/tools.js barrel (toolsHook with
7
7
  source/importAlias/output) vs the runtime scan fallback, Standard Schema inputs
8
8
  (Zod/Valibot/ArkType), AiToolCtx actor scoping, constructor DI (@inject, lazy + cached),
9
- roles/ability fail-closed gating under defaultRoles, and the dataTool governed read-only
9
+ roles/ability gating under defaultRoles (open by default), and the dataTool governed read-only
10
10
  SQL satellite. Use for "write a tool", "my tool is never called", "tool forbidden",
11
11
  "agent_tools barrel not generating", or "let the agent query the database".
12
12
  metadata:
@@ -167,23 +167,24 @@ Source: `packages/adonis/docs/authoring/tools.mdx` ("Configuring the generator")
167
167
 
168
168
  ## Common mistakes
169
169
 
170
- ### CRITICAL — shipping tools without `roles` and calling them unreachable
170
+ ### CRITICAL — shipping a privileged tool without `roles`
171
171
 
172
172
  ```ts
173
- // Wrong — no roles → inherits defaultRoles ['ADMIN']; MEMBER actors never see this tool.
174
- static tool = { name: 'get_order', description: '...', input }
173
+ // Wrong — no roles → inherits defaultRoles, which is [] (open) by default: every actor,
174
+ // an anonymous visitor included, is offered this tool.
175
+ static tool = { name: 'refund_order', kind: 'action', description: '...', input }
175
176
  ```
176
177
 
177
178
  ```ts
178
- // Correct — declare who may invoke.
179
- static tool = { name: 'get_order', description: '...', input, roles: ['MEMBER'] }
179
+ // Correct — declare who may invoke (or set defaultRoles: ['ADMIN'] to close every tool by default).
180
+ static tool = { name: 'refund_order', kind: 'action', description: '...', input, roles: ['ADMIN'] }
180
181
  ```
181
182
 
182
183
  Mechanism: `definitionsFor` filters the offered tool list through the role gate BEFORE
183
- each model turn, so a tool the actor cannot invoke is never described to the model — it
184
- cannot call what it was never shown. This is why "the model didn't call my tool" is
185
- usually an authorization default, not a prompt problem.
186
- Source: `packages/adonis/docs/authoring/tools.mdx` (fail-closed callout),
184
+ each model turn, and `invoke` re-checks it. A tool with no `roles` takes `defaultRoles`;
185
+ an empty list is no restriction. An `action` still parks on approval — but by default the
186
+ requester approves, so for a public chat that is only a confirmation.
187
+ Source: `packages/adonis/docs/governance/authorization.mdx`,
187
188
  `packages/adonis/src/tool-registry.ts` (`DefaultRolesPolicy.can`).
188
189
 
189
190
  ### HIGH — trusting an id from the model's arguments instead of `ctx.actor`