@adonis-agora/agent 0.55.0 → 0.57.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 (119) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/providers/agent_provider.d.ts.map +1 -1
  3. package/dist/providers/agent_provider.js +84 -10
  4. package/dist/providers/agent_provider.js.map +1 -1
  5. package/dist/src/ag-ui/adapter.d.ts.map +1 -1
  6. package/dist/src/ag-ui/adapter.js +1 -2
  7. package/dist/src/ag-ui/adapter.js.map +1 -1
  8. package/dist/src/ag-ui/encoder.d.ts +7 -92
  9. package/dist/src/ag-ui/encoder.d.ts.map +1 -1
  10. package/dist/src/ag-ui/encoder.js +14 -498
  11. package/dist/src/ag-ui/encoder.js.map +1 -1
  12. package/dist/src/ag-ui/frames.d.ts +17 -0
  13. package/dist/src/ag-ui/frames.d.ts.map +1 -0
  14. package/dist/src/ag-ui/frames.js +69 -0
  15. package/dist/src/ag-ui/frames.js.map +1 -0
  16. package/dist/src/ag-ui/index.d.ts +9 -6
  17. package/dist/src/ag-ui/index.d.ts.map +1 -1
  18. package/dist/src/ag-ui/index.js +9 -6
  19. package/dist/src/ag-ui/index.js.map +1 -1
  20. package/dist/src/ag-ui/stream.d.ts +7 -23
  21. package/dist/src/ag-ui/stream.d.ts.map +1 -1
  22. package/dist/src/ag-ui/stream.js +9 -64
  23. package/dist/src/ag-ui/stream.js.map +1 -1
  24. package/dist/src/agent-service.d.ts +22 -0
  25. package/dist/src/agent-service.d.ts.map +1 -1
  26. package/dist/src/agent-service.js +57 -5
  27. package/dist/src/agent-service.js.map +1 -1
  28. package/dist/src/ai-tool-ref.d.ts +26 -4
  29. package/dist/src/ai-tool-ref.d.ts.map +1 -1
  30. package/dist/src/ai-tool-ref.js +6 -1
  31. package/dist/src/ai-tool-ref.js.map +1 -1
  32. package/dist/src/confirmed-tool.d.ts +2 -2
  33. package/dist/src/confirmed-tool.d.ts.map +1 -1
  34. package/dist/src/confirmed-tool.js.map +1 -1
  35. package/dist/src/guardrails/agent.d.ts.map +1 -1
  36. package/dist/src/guardrails/agent.js +11 -0
  37. package/dist/src/guardrails/agent.js.map +1 -1
  38. package/dist/src/index.d.ts +4 -3
  39. package/dist/src/index.d.ts.map +1 -1
  40. package/dist/src/index.js +4 -3
  41. package/dist/src/index.js.map +1 -1
  42. package/dist/src/mcp-client/options.d.ts +12 -0
  43. package/dist/src/mcp-client/options.d.ts.map +1 -1
  44. package/dist/src/mcp-client/tool-source.d.ts.map +1 -1
  45. package/dist/src/mcp-client/tool-source.js +2 -0
  46. package/dist/src/mcp-client/tool-source.js.map +1 -1
  47. package/dist/src/media/index.d.ts +1 -1
  48. package/dist/src/media/index.d.ts.map +1 -1
  49. package/dist/src/media/index.js +1 -1
  50. package/dist/src/media/index.js.map +1 -1
  51. package/dist/src/media/media-attachment-staging.d.ts +107 -6
  52. package/dist/src/media/media-attachment-staging.d.ts.map +1 -1
  53. package/dist/src/media/media-attachment-staging.js +173 -21
  54. package/dist/src/media/media-attachment-staging.js.map +1 -1
  55. package/dist/src/react/ag-ui.d.ts +41 -0
  56. package/dist/src/react/ag-ui.d.ts.map +1 -0
  57. package/dist/src/react/ag-ui.js +63 -0
  58. package/dist/src/react/ag-ui.js.map +1 -0
  59. package/dist/src/react/client.d.ts +12 -0
  60. package/dist/src/react/client.d.ts.map +1 -0
  61. package/dist/src/react/client.js +21 -0
  62. package/dist/src/react/client.js.map +1 -0
  63. package/dist/src/react/index.d.ts +3 -8
  64. package/dist/src/react/index.d.ts.map +1 -1
  65. package/dist/src/react/index.js +4 -20
  66. package/dist/src/react/index.js.map +1 -1
  67. package/dist/src/react/media.d.ts +18 -0
  68. package/dist/src/react/media.d.ts.map +1 -0
  69. package/dist/src/react/media.js +18 -0
  70. package/dist/src/react/media.js.map +1 -0
  71. package/dist/src/spi/agent-store.d.ts +22 -0
  72. package/dist/src/spi/agent-store.d.ts.map +1 -1
  73. package/dist/src/spi/agent-store.js.map +1 -1
  74. package/dist/src/spi/attachment-staging.d.ts +5 -0
  75. package/dist/src/spi/attachment-staging.d.ts.map +1 -1
  76. package/dist/src/spi/tool.d.ts +24 -0
  77. package/dist/src/spi/tool.d.ts.map +1 -1
  78. package/dist/src/stores/factory.d.ts +8 -2
  79. package/dist/src/stores/factory.d.ts.map +1 -1
  80. package/dist/src/stores/factory.js +8 -2
  81. package/dist/src/stores/factory.js.map +1 -1
  82. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  83. package/dist/src/stores/lucid-schema.js +2 -0
  84. package/dist/src/stores/lucid-schema.js.map +1 -1
  85. package/dist/src/stores/lucid.d.ts +12 -0
  86. package/dist/src/stores/lucid.d.ts.map +1 -1
  87. package/dist/src/stores/lucid.js +47 -0
  88. package/dist/src/stores/lucid.js.map +1 -1
  89. package/dist/src/testing/in-memory-store.d.ts +7 -0
  90. package/dist/src/testing/in-memory-store.d.ts.map +1 -1
  91. package/dist/src/testing/in-memory-store.js +33 -0
  92. package/dist/src/testing/in-memory-store.js.map +1 -1
  93. package/dist/src/tool-discovery.d.ts.map +1 -1
  94. package/dist/src/tool-discovery.js +27 -9
  95. package/dist/src/tool-discovery.js.map +1 -1
  96. package/dist/src/tool-filters.d.ts +33 -0
  97. package/dist/src/tool-filters.d.ts.map +1 -0
  98. package/dist/src/tool-filters.js +45 -0
  99. package/dist/src/tool-filters.js.map +1 -0
  100. package/dist/src/tool-registry.d.ts +33 -5
  101. package/dist/src/tool-registry.d.ts.map +1 -1
  102. package/dist/src/tool-registry.js +55 -11
  103. package/dist/src/tool-registry.js.map +1 -1
  104. package/dist/src/types.d.ts +16 -0
  105. package/dist/src/types.d.ts.map +1 -1
  106. package/package.json +15 -5
  107. package/skills/agent-tools/SKILL.md +19 -1
  108. package/dist/src/ag-ui/input.d.ts +0 -72
  109. package/dist/src/ag-ui/input.d.ts.map +0 -1
  110. package/dist/src/ag-ui/input.js +0 -216
  111. package/dist/src/ag-ui/input.js.map +0 -1
  112. package/dist/src/ag-ui/interrupt-id.d.ts +0 -27
  113. package/dist/src/ag-ui/interrupt-id.d.ts.map +0 -1
  114. package/dist/src/ag-ui/interrupt-id.js +0 -42
  115. package/dist/src/ag-ui/interrupt-id.js.map +0 -1
  116. package/dist/src/ag-ui/types.d.ts +0 -202
  117. package/dist/src/ag-ui/types.d.ts.map +0 -1
  118. package/dist/src/ag-ui/types.js +0 -33
  119. package/dist/src/ag-ui/types.js.map +0 -1
@@ -27,15 +27,18 @@ export function registerToolExport(registry, exported, defaultRoles, app) {
27
27
  if (registry.has(meta.name)) {
28
28
  return null;
29
29
  }
30
+ // `isEnabled()` / `canUse()` / `describe()` live on the tool CLASS, while the registry holds the
31
+ // wrapper built here. Each is forwarded only when the class declares it — a gate left behind on
32
+ // the class would be one an app declares, sees no error for, and that never runs.
33
+ const declares = (method) => typeof proto?.[method] === 'function';
34
+ let resolveInstance;
30
35
  if (app === undefined) {
31
36
  // No container: instantiate now (no DI); skip if construction throws — pre-DI behavior.
32
37
  const instance = instantiate(cls);
33
38
  if (instance === null) {
34
39
  return null;
35
40
  }
36
- registry.register(specFromMeta(meta, defaultRoles), {
37
- execute: (input, ctx) => instance.execute(input, ctx),
38
- });
41
+ resolveInstance = () => Promise.resolve(instance);
39
42
  }
40
43
  else {
41
44
  // Container DI: resolve the tool (and its `@inject`'d deps) through the IoC container — the
@@ -43,13 +46,27 @@ export function registerToolExport(registry, exported, defaultRoles, app) {
43
46
  // `boot()`, before the app is fully booted, so an eager `container.make()` could fail resolving
44
47
  // a peer service — the same reason the Lucid store factory resolves lazily.
45
48
  let instancePromise;
46
- registry.register(specFromMeta(meta, defaultRoles), {
47
- execute: (input, ctx) => {
48
- instancePromise ??= app.container.make(cls);
49
- return instancePromise.then((instance) => instance.execute(input, ctx));
50
- },
51
- });
49
+ resolveInstance = () => {
50
+ instancePromise ??= app.container.make(cls);
51
+ return instancePromise;
52
+ };
52
53
  }
54
+ const handler = {
55
+ execute: async (input, ctx) => (await resolveInstance()).execute(input, ctx),
56
+ // Called through the instance so each keeps its `this` (and its injected deps).
57
+ ...(declares('isEnabled')
58
+ ? { isEnabled: async () => (await resolveInstance()).isEnabled?.() ?? true }
59
+ : {}),
60
+ ...(declares('canUse')
61
+ ? { canUse: async (actor) => (await resolveInstance()).canUse?.(actor) ?? true }
62
+ : {}),
63
+ ...(declares('describe')
64
+ ? {
65
+ describe: async (scope) => (await resolveInstance()).describe?.(scope),
66
+ }
67
+ : {}),
68
+ };
69
+ registry.register(specFromMeta(meta, defaultRoles), handler);
53
70
  return { name: meta.name, source: 'class' };
54
71
  }
55
72
  /** Register a `defineTool` functional tool, applying `defaultRoles` when it declares none. */
@@ -69,6 +86,7 @@ function specFromMeta(meta, defaultRoles) {
69
86
  inputSchema: meta.input,
70
87
  roles: meta.roles ?? defaultRoles,
71
88
  ...(meta.ability !== undefined ? { ability: meta.ability } : {}),
89
+ ...(meta.enabled !== undefined ? { enabled: meta.enabled } : {}),
72
90
  ...(meta.presentation !== undefined ? { presentation: meta.presentation } : {}),
73
91
  ...(meta.terminal === true ? { terminal: true } : {}),
74
92
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tool-discovery.js","sourceRoot":"","sources":["../../src/tool-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-discovery.js","sourceRoot":"","sources":["../../src/tool-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { ToolHandler } from './spi/tool.js';
2
+ import type { Actor, ToolSpec } from './types.js';
3
+ /**
4
+ * Is this tool part of this deployment right now? `ToolSpec.enabled` and the handler's
5
+ * `isEnabled()` are ANDed — either one saying no is enough — and both default to yes.
6
+ *
7
+ * Resolved per turn rather than at registration, so the answer can come from configuration that
8
+ * did not exist when the tool was registered.
9
+ */
10
+ export declare function isToolEnabled(spec: ToolSpec, handler?: ToolHandler): Promise<boolean>;
11
+ /**
12
+ * Drop tools this deployment has turned off, before anyone asks who may call them. A disabled tool
13
+ * is absent, not forbidden — the difference matters, because "forbidden" tells the model (and the
14
+ * user reading a refusal) that the capability exists.
15
+ */
16
+ export declare function filterToolsByEnabled<T extends {
17
+ spec: ToolSpec;
18
+ handler?: ToolHandler;
19
+ }>(entries: T[]): Promise<T[]>;
20
+ /**
21
+ * May this actor use this tool, per the tool's OWN gate? Tools without a `canUse` say yes and are
22
+ * governed by the `RolesPolicy` alone.
23
+ */
24
+ export declare function canActorUseTool(actor: Actor, handler?: ToolHandler): Promise<boolean>;
25
+ /**
26
+ * Drop tools whose own `canUse` refuses this actor. Runs after the app-wide `RolesPolicy`, and is
27
+ * additive to it — a tool can narrow who reaches it, never widen.
28
+ */
29
+ export declare function filterToolsByCanUse<T extends {
30
+ spec: ToolSpec;
31
+ handler?: ToolHandler;
32
+ }>(entries: T[], actor: Actor): Promise<T[]>;
33
+ //# sourceMappingURL=tool-filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-filters.d.ts","sourceRoot":"","sources":["../../src/tool-filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3F;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,EAC5F,OAAO,EAAE,CAAC,EAAE,GACX,OAAO,CAAC,CAAC,EAAE,CAAC,CAQd;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3F;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,EAC3F,OAAO,EAAE,CAAC,EAAE,EACZ,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,CAAC,EAAE,CAAC,CAQd"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Is this tool part of this deployment right now? `ToolSpec.enabled` and the handler's
3
+ * `isEnabled()` are ANDed — either one saying no is enough — and both default to yes.
4
+ *
5
+ * Resolved per turn rather than at registration, so the answer can come from configuration that
6
+ * did not exist when the tool was registered.
7
+ */
8
+ export async function isToolEnabled(spec, handler) {
9
+ const declared = typeof spec.enabled === 'function' ? await spec.enabled() : (spec.enabled ?? true);
10
+ if (!declared) {
11
+ return false;
12
+ }
13
+ return handler?.isEnabled === undefined ? true : await handler.isEnabled();
14
+ }
15
+ /**
16
+ * Drop tools this deployment has turned off, before anyone asks who may call them. A disabled tool
17
+ * is absent, not forbidden — the difference matters, because "forbidden" tells the model (and the
18
+ * user reading a refusal) that the capability exists.
19
+ */
20
+ export async function filterToolsByEnabled(entries) {
21
+ const checked = await Promise.all(entries.map(async (entry) => ({
22
+ entry,
23
+ enabled: await isToolEnabled(entry.spec, entry.handler),
24
+ })));
25
+ return checked.filter((row) => row.enabled).map((row) => row.entry);
26
+ }
27
+ /**
28
+ * May this actor use this tool, per the tool's OWN gate? Tools without a `canUse` say yes and are
29
+ * governed by the `RolesPolicy` alone.
30
+ */
31
+ export async function canActorUseTool(actor, handler) {
32
+ return handler?.canUse === undefined ? true : await handler.canUse(actor);
33
+ }
34
+ /**
35
+ * Drop tools whose own `canUse` refuses this actor. Runs after the app-wide `RolesPolicy`, and is
36
+ * additive to it — a tool can narrow who reaches it, never widen.
37
+ */
38
+ export async function filterToolsByCanUse(entries, actor) {
39
+ const checked = await Promise.all(entries.map(async (entry) => ({
40
+ entry,
41
+ allowed: await canActorUseTool(actor, entry.handler),
42
+ })));
43
+ return checked.filter((row) => row.allowed).map((row) => row.entry);
44
+ }
45
+ //# sourceMappingURL=tool-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-filters.js","sourceRoot":"","sources":["../../src/tool-filters.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc,EAAE,OAAqB;IACvE,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;IACrF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAY;IAEZ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK;QACL,OAAO,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;KACxD,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAY,EAAE,OAAqB;IACvE,OAAO,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAY,EACZ,KAAY;IAEZ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK;QACL,OAAO,EAAE,MAAM,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;KACrD,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC"}
@@ -7,6 +7,19 @@ export declare class ToolForbiddenError extends Error {
7
7
  readonly toolName: string;
8
8
  constructor(toolName: string);
9
9
  }
10
+ /**
11
+ * Thrown when a registered tool is invoked while this deployment has it turned off (`enabled` /
12
+ * `isEnabled()`). Distinct from {@link ToolForbiddenError}, which is about the actor, and from
13
+ * {@link ToolNotFoundError}, which is about a name nobody registered — an operator reading a log
14
+ * needs to tell "you flipped the flag" apart from "that tool does not exist in this build".
15
+ *
16
+ * Reachable in normal operation, not just from a forged call: a HITL `action` approved before the
17
+ * flag was turned off runs its tool afterwards.
18
+ */
19
+ export declare class ToolDisabledError extends Error {
20
+ readonly toolName: string;
21
+ constructor(toolName: string);
22
+ }
10
23
  /** Thrown when a tool is invoked that was never registered. */
11
24
  export declare class ToolNotFoundError extends Error {
12
25
  readonly toolName: string;
@@ -40,15 +53,30 @@ export declare class ToolRegistry {
40
53
  has(name: string): boolean;
41
54
  spec(name: string): ToolSpec | undefined;
42
55
  allSpecs(): ToolSpec[];
43
- /** The tools to offer the model for this actor+persona, after the two filter layers. */
56
+ /**
57
+ * The tools to offer the model for this actor+agent, after the four filter layers: what this
58
+ * agent pinned, what this deployment has enabled, what this actor's role allows, and what each
59
+ * tool's own `canUse` allows this actor.
60
+ *
61
+ * Every layer only ever removes tools, so no arrangement of them can widen what a turn reaches.
62
+ * The allow-list goes FIRST, even though it is the narrowest statement: it is a pure name-set
63
+ * match, while each of the three below it may be a round trip — an authz service, a feature-flag
64
+ * store, an entitlement table — and this runs once per model step.
65
+ */
44
66
  definitionsFor(actor: Actor, policy: RolesPolicy, allowedTools?: string[], scope?: Omit<ToolDescribeScope, 'actor'>): Promise<ToolDefinition[]>;
45
67
  /**
46
- * The specs {@link definitionsFor} offers the model, whole — the same filters in the same order.
47
- * For a surface that lists what an actor can reach (`GET <path>/tools`), which must never disagree
48
- * with what the model is actually shown.
68
+ * The specs {@link definitionsFor} offers the model, whole — the same four gates (allow-list,
69
+ * enabled, role, `canUse`) in the same order. For a surface that lists what an actor can reach
70
+ * (`GET <path>/tools`), which must never disagree with what the model is actually shown.
49
71
  */
50
72
  visibleSpecs(actor: Actor, policy: RolesPolicy, allowedTools?: string[]): Promise<ToolSpec[]>;
51
- /** Run a tool. Re-checks the role (defense-in-depth) and re-parses the input via Zod. */
73
+ private visibleEntries;
74
+ /**
75
+ * Run a tool. Re-checks that the tool is enabled, that the role allows it and that the tool's own
76
+ * `canUse` admits the actor (defense-in-depth — a call can reach here from a replayed durable step
77
+ * or an approval granted before the flag moved, neither of which went through `definitionsFor`
78
+ * again) and re-parses the input.
79
+ */
52
80
  invoke(name: string, input: unknown, ctx: AiToolCtx, policy: RolesPolicy): Promise<unknown>;
53
81
  }
54
82
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElE,qEAAqE;AACrE,qBAAa,kBAAmB,SAAQ,KAAK;aACf,QAAQ,EAAE,MAAM;IAA5C,YAA4B,QAAQ,EAAE,MAAM,EAG3C;CACF;AAED,+DAA+D;AAC/D,qBAAa,iBAAkB,SAAQ,KAAK;aACd,QAAQ,EAAE,MAAM;IAA5C,YAA4B,QAAQ,EAAE,MAAM,EAG3C;CACF;AAED,uEAAuE;AACvE,qBAAa,qBAAsB,SAAQ,KAAK;aAE5B,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE;IAF3D,YACkB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE,EAM1D;CACF;AAOD;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAEnD;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhC;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEvC;IAED,QAAQ,IAAI,QAAQ,EAAE,CAErB;IAED,wFAAwF;IAClF,cAAc,CAClB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,WAAW,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,KAAK,GAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAM,GAC3C,OAAO,CAAC,cAAc,EAAE,CAAC,CAgB3B;IAED;;;;OAIG;IACG,YAAY,CAChB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,WAAW,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGrB;IAED,yFAAyF;IACnF,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAiBlB;CACF;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAIlD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAH/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,YACmB,YAAY,GAAE,MAAM,EAAO,EAC5C,OAAO,GAAE,kBAAuB,EAGjC;IAED,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAIzC;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB;IACvD,YAAY,YAAY,GAAE,MAAM,EAAO,EAEtC;CACF"}
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ/E,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElE,qEAAqE;AACrE,qBAAa,kBAAmB,SAAQ,KAAK;aACf,QAAQ,EAAE,MAAM;IAA5C,YAA4B,QAAQ,EAAE,MAAM,EAG3C;CACF;AAED;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aACd,QAAQ,EAAE,MAAM;IAA5C,YAA4B,QAAQ,EAAE,MAAM,EAG3C;CACF;AAED,+DAA+D;AAC/D,qBAAa,iBAAkB,SAAQ,KAAK;aACd,QAAQ,EAAE,MAAM;IAA5C,YAA4B,QAAQ,EAAE,MAAM,EAG3C;CACF;AAED,uEAAuE;AACvE,qBAAa,qBAAsB,SAAQ,KAAK;aAE5B,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE;IAF3D,YACkB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE,EAM1D;CACF;AAOD;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAEnD;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhC;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEvC;IAED,QAAQ,IAAI,QAAQ,EAAE,CAErB;IAED;;;;;;;;;OASG;IACG,cAAc,CAClB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,WAAW,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,KAAK,GAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAM,GAC3C,OAAO,CAAC,cAAc,EAAE,CAAC,CAe3B;IAED;;;;OAIG;IACG,YAAY,CAChB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,WAAW,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAErB;YAEa,cAAc;IAuB5B;;;;;OAKG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAuBlB;CACF;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAIlD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAH/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,YACmB,YAAY,GAAE,MAAM,EAAO,EAC5C,OAAO,GAAE,kBAAuB,EAGjC;IAED,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAIzC;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB;IACvD,YAAY,YAAY,GAAE,MAAM,EAAO,EAEtC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { filterToolsByRole, personaFilterTools } from './personas.js';
2
+ import { canActorUseTool, filterToolsByCanUse, filterToolsByEnabled, isToolEnabled, } from './tool-filters.js';
2
3
  import { createNoopEmitUi } from './tool-ui.js';
3
4
  /** Thrown when an actor invokes a tool their role is not allowed. */
4
5
  export class ToolForbiddenError extends Error {
@@ -9,6 +10,23 @@ export class ToolForbiddenError extends Error {
9
10
  this.name = 'ToolForbiddenError';
10
11
  }
11
12
  }
13
+ /**
14
+ * Thrown when a registered tool is invoked while this deployment has it turned off (`enabled` /
15
+ * `isEnabled()`). Distinct from {@link ToolForbiddenError}, which is about the actor, and from
16
+ * {@link ToolNotFoundError}, which is about a name nobody registered — an operator reading a log
17
+ * needs to tell "you flipped the flag" apart from "that tool does not exist in this build".
18
+ *
19
+ * Reachable in normal operation, not just from a forged call: a HITL `action` approved before the
20
+ * flag was turned off runs its tool afterwards.
21
+ */
22
+ export class ToolDisabledError extends Error {
23
+ toolName;
24
+ constructor(toolName) {
25
+ super(`Tool "${toolName}" is disabled in this deployment`);
26
+ this.toolName = toolName;
27
+ this.name = 'ToolDisabledError';
28
+ }
29
+ }
12
30
  /** Thrown when a tool is invoked that was never registered. */
13
31
  export class ToolNotFoundError extends Error {
14
32
  toolName;
@@ -61,13 +79,21 @@ export class ToolRegistry {
61
79
  allSpecs() {
62
80
  return [...this.entries.values()].map((entry) => entry.spec);
63
81
  }
64
- /** The tools to offer the model for this actor+persona, after the two filter layers. */
82
+ /**
83
+ * The tools to offer the model for this actor+agent, after the four filter layers: what this
84
+ * agent pinned, what this deployment has enabled, what this actor's role allows, and what each
85
+ * tool's own `canUse` allows this actor.
86
+ *
87
+ * Every layer only ever removes tools, so no arrangement of them can widen what a turn reaches.
88
+ * The allow-list goes FIRST, even though it is the narrowest statement: it is a pure name-set
89
+ * match, while each of the three below it may be a round trip — an authz service, a feature-flag
90
+ * store, an entitlement table — and this runs once per model step.
91
+ */
65
92
  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;
93
+ const visible = await this.visibleEntries(actor, policy, allowedTools);
94
+ return Promise.all(visible.map(async ({ spec, handler }) => {
69
95
  // 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 });
96
+ const override = handler.describe === undefined ? undefined : await handler.describe({ actor, ...scope });
71
97
  return {
72
98
  name: spec.name,
73
99
  kind: spec.kind,
@@ -77,23 +103,41 @@ export class ToolRegistry {
77
103
  }));
78
104
  }
79
105
  /**
80
- * The specs {@link definitionsFor} offers the model, whole — the same filters in the same order.
81
- * For a surface that lists what an actor can reach (`GET <path>/tools`), which must never disagree
82
- * with what the model is actually shown.
106
+ * The specs {@link definitionsFor} offers the model, whole — the same four gates (allow-list,
107
+ * enabled, role, `canUse`) in the same order. For a surface that lists what an actor can reach
108
+ * (`GET <path>/tools`), which must never disagree with what the model is actually shown.
83
109
  */
84
110
  async visibleSpecs(actor, policy, allowedTools) {
85
- const roleScoped = await filterToolsByRole(this.allSpecs(), actor, policy);
86
- return personaFilterTools(roleScoped, allowedTools);
111
+ return (await this.visibleEntries(actor, policy, allowedTools)).map(({ spec }) => spec);
87
112
  }
88
- /** Run a tool. Re-checks the role (defense-in-depth) and re-parses the input via Zod. */
113
+ async visibleEntries(actor, policy, allowedTools) {
114
+ const pinnedNames = new Set(personaFilterTools(this.allSpecs(), allowedTools).map((spec) => spec.name));
115
+ const pinned = [...this.entries.values()].filter((entry) => pinnedNames.has(entry.spec.name));
116
+ const live = await filterToolsByEnabled(pinned);
117
+ const allowedByRole = new Set((await filterToolsByRole(live.map((entry) => entry.spec), actor, policy)).map((spec) => spec.name));
118
+ const roleScoped = live.filter((entry) => allowedByRole.has(entry.spec.name));
119
+ return filterToolsByCanUse(roleScoped, actor);
120
+ }
121
+ /**
122
+ * Run a tool. Re-checks that the tool is enabled, that the role allows it and that the tool's own
123
+ * `canUse` admits the actor (defense-in-depth — a call can reach here from a replayed durable step
124
+ * or an approval granted before the flag moved, neither of which went through `definitionsFor`
125
+ * again) and re-parses the input.
126
+ */
89
127
  async invoke(name, input, ctx, policy) {
90
128
  const entry = this.entries.get(name);
91
129
  if (entry === undefined) {
92
130
  throw new ToolNotFoundError(name);
93
131
  }
132
+ if (!(await isToolEnabled(entry.spec, entry.handler))) {
133
+ throw new ToolDisabledError(name);
134
+ }
94
135
  if (!(await policy.can(ctx.actor, entry.spec))) {
95
136
  throw new ToolForbiddenError(name);
96
137
  }
138
+ if (!(await canActorUseTool(ctx.actor, entry.handler))) {
139
+ throw new ToolForbiddenError(name);
140
+ }
97
141
  const validation = await entry.spec.inputSchema['~standard'].validate(input);
98
142
  if (validation.issues !== undefined) {
99
143
  throw new ToolInputInvalidError(name, validation.issues);
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/tool-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,qEAAqE;AACrE,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACf,QAAQ;IAApC,YAA4B,QAAgB;QAC1C,KAAK,CAAC,SAAS,QAAQ,gCAAgC,CAAC,CAAC;wBAD/B,QAAQ;QAElC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,+DAA+D;AAC/D,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACd,QAAQ;IAApC,YAA4B,QAAgB;QAC1C,KAAK,CAAC,SAAS,QAAQ,qBAAqB,CAAC,CAAC;wBADpB,QAAQ;QAElC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,uEAAuE;AACvE,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAE5B,QAAQ;IACR,MAAM;IAFxB,YACkB,QAAgB,EAChB,MAAyC;QAEzD,KAAK,CACH,2BAA2B,QAAQ,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3F,CAAC;wBALc,QAAQ;sBACR,MAAM;QAKtB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAOD;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACN,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAEpD,QAAQ,CAAC,IAAc,EAAE,OAAoB;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACtC,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,cAAc,CAClB,KAAY,EACZ,MAAmB,EACnB,YAAuB,EACvB,KAAK,GAAqC,EAAE;QAE5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;YACrD,sFAAsF;YACtF,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC5F,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC,WAAW;gBACtD,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC,WAAW;aACvD,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAChB,KAAY,EACZ,MAAmB,EACnB,YAAuB;QAEvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3E,OAAO,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,KAAc,EACd,GAAc,EACd,MAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7E,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC;QACD,iGAAiG;QACjG,gFAAgF;QAChF,MAAM,QAAQ,GACZ,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/F,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAIV,YAAY;IAHd,UAAU,CAAa;IAExC,YACmB,YAAY,GAAa,EAAE,EAC5C,OAAO,GAAuB,EAAE;4BADf,YAAY;QAG7B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC;IAClD,CAAC;IAED,GAAG,CAAC,KAAY,EAAE,IAAc;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;CACF;AAaD;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;IACvD,YAAY,YAAY,GAAa,EAAE;QACrC,KAAK,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF"}
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,16 @@ export interface ToolSpec {
53
53
  terminal?: boolean;
54
54
  /** Roles allowed to invoke. Undefined → defaults applied by RolesPolicy (unrestricted unless `defaultRoles` is set). */
55
55
  roles?: string[];
56
+ /**
57
+ * Whether the tool exists in this deployment. `false` (or a predicate returning `false`) drops it
58
+ * before the role filter, so it is never offered to the model and cannot be invoked. Undefined →
59
+ * enabled.
60
+ *
61
+ * A predicate is re-evaluated every turn, so a flag flipped at runtime takes effect on the next
62
+ * message with nothing re-registered. For availability that depends on a container-resolved
63
+ * service, put `isEnabled()` on the tool class instead — a spec is data, a handler is a service.
64
+ */
65
+ enabled?: boolean | (() => boolean | Promise<boolean>);
56
66
  /**
57
67
  * An authorization ability name (e.g. 'cache.purge'). Consumed by an ability-aware RolesPolicy
58
68
  * such as the `@adonis-agora/agent/authz` Bouncer adapter (`authzToolAuthorizer`), which denies
@@ -398,6 +408,12 @@ export interface ThreadSummary {
398
408
  * `model` runs on it. `null` → the provider's default. Undefined for a store that does not persist it.
399
409
  */
400
410
  model?: string | null;
411
+ /**
412
+ * The agent this thread's turns run as when a send names none (`PATCH /threads/:id
413
+ * { defaultAgent }`). `null` → the configured default agent. Undefined for a store that does not
414
+ * persist it.
415
+ */
416
+ defaultAgent?: string | null;
401
417
  /**
402
418
  * The run streaming on this thread right now — the one a reloading client re-attaches to
403
419
  * (`GET <path>/chat/:runId/stream`) — or `null` when none is. Set when a turn starts, cleared when
@@ -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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonis-agora/agent",
3
- "version": "0.55.0",
3
+ "version": "0.57.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": {
@@ -156,6 +156,11 @@
156
156
  "import": "./dist/src/react/genui/json-render.js",
157
157
  "default": "./dist/src/react/genui/json-render.js"
158
158
  },
159
+ "./react/media": {
160
+ "types": "./dist/src/react/media.d.ts",
161
+ "import": "./dist/src/react/media.js",
162
+ "default": "./dist/src/react/media.js"
163
+ },
159
164
  "./react/markdown": {
160
165
  "types": "./dist/src/react/markdown.d.ts",
161
166
  "import": "./dist/src/react/markdown.js",
@@ -199,8 +204,9 @@
199
204
  "@adonisjs/core": "^7.3.0",
200
205
  "@adonisjs/lucid": "^22.4.0",
201
206
  "@adonisjs/redis": "^9.2.0 || ^10.0.0 || ^11.0.0",
202
- "@dudousxd/nestjs-agent-core": ">=0.26.0 <1.0.0",
203
- "@dudousxd/nestjs-agent-react": ">=0.28.0 <1.0.0",
207
+ "@dudousxd/nestjs-agent-core": ">=0.35.0 <1.0.0",
208
+ "@dudousxd/nestjs-agent-react": ">=0.30.0 <1.0.0",
209
+ "@dudousxd/nestjs-media-client": ">=0.3.0 <1.0.0",
204
210
  "@qdrant/js-client-rest": "^1.11.0",
205
211
  "ai": "^7.0.0",
206
212
  "node-sql-parser": "^5.3.0",
@@ -253,6 +259,9 @@
253
259
  "@dudousxd/nestjs-agent-react": {
254
260
  "optional": true
255
261
  },
262
+ "@dudousxd/nestjs-media-client": {
263
+ "optional": true
264
+ },
256
265
  "@adonis-agora/media": {
257
266
  "optional": true
258
267
  }
@@ -269,8 +278,9 @@
269
278
  "@ag-ui/client": "1.0.1",
270
279
  "@ag-ui/core": "1.0.1",
271
280
  "@ai-sdk/react": "^4.0.125",
272
- "@dudousxd/nestjs-agent-core": "0.33.0",
273
- "@dudousxd/nestjs-agent-react": "0.28.0",
281
+ "@dudousxd/nestjs-agent-core": "0.36.0",
282
+ "@dudousxd/nestjs-agent-react": "0.31.0",
283
+ "@dudousxd/nestjs-media-client": "0.3.0",
274
284
  "@qdrant/js-client-rest": "1.19.0",
275
285
  "@tanstack/intent": "0.4.0",
276
286
  "@testing-library/dom": "10.4.2",
@@ -50,7 +50,7 @@ export default class GetWeather extends ReadTool<Input, { tempC: number }> {
50
50
  name: 'get_weather',
51
51
  description: 'Current weather for a city.',
52
52
  input,
53
- roles: ['MEMBER'], // omit → config.defaultRoles (['ADMIN'] by default)
53
+ roles: ['MEMBER'], // omit → config.defaultRoles ([] — open — by default)
54
54
  }
55
55
 
56
56
  async execute({ city }: Input, _ctx: AiToolCtx) {
@@ -209,6 +209,24 @@ arguments and expires (`ttlMs`, default 15 min).
209
209
  Source: `packages/adonis/docs/mcp.mdx` ("Writes with a human gate"),
210
210
  `packages/adonis/src/confirmed-tool.ts`.
211
211
 
212
+ ## Feature flags and per-user gates — `enabled`, `isEnabled()`, `canUse(actor)`
213
+
214
+ ```ts
215
+ // A flag with no service behind it: on the options (boolean, or a predicate re-read every turn).
216
+ static tool = { name: 'search_docs', description: '...', input, enabled: () => env.get('DOCS') === true }
217
+
218
+ // A flag or entitlement that needs a service: methods on the (container-resolved) class.
219
+ isEnabled() { return this.flags.on('docs') }
220
+ canUse(actor: Actor) { return this.plans.includesDocs(actor.tenantRef) }
221
+ ```
222
+
223
+ `defineTool` / `defineConfirmedTool` take `enabled` and `canUse` as options; `mcpServers[]`
224
+ takes both per server. Order on the offered list AND on invoke: allow-list → `enabled` →
225
+ `RolesPolicy` → `canUse`; none can widen. A disabled tool is never shown to the model and
226
+ invoking one throws `ToolDisabledError` (not `ToolForbiddenError`). Prefer these to registering a
227
+ tool conditionally, and to refusing inside `execute` (which costs the model a turn).
228
+ Source: `packages/adonis/docs/authoring/tools.mdx`, `packages/adonis/src/tool-filters.ts`.
229
+
212
230
  ## Common mistakes
213
231
 
214
232
  ### CRITICAL — shipping a privileged tool without `roles`
@@ -1,72 +0,0 @@
1
- import { type InterruptAddress } from './interrupt-id.js';
2
- import type { AgUiContext, AgUiMessage, AgUiResumeEntry, AgUiRunInput } from './types.js';
3
- /**
4
- * Read a request body as a `RunAgentInput`, or say why it is not one.
5
- *
6
- * Only what this producer acts on is checked, and a KNOWN member with a value the schema rejects is
7
- * malformed (the run never starts). A member it does not recognise is not an error — the protocol's
8
- * asymmetry: a newer consumer's input must not bounce off an older producer.
9
- */
10
- export declare function parseRunInput(body: unknown): AgUiRunInput | string;
11
- /** A media part carried inline, ready to be staged as an attachment. */
12
- export interface InlineMedia {
13
- kind: 'image' | 'audio' | 'video' | 'document';
14
- contentType: string;
15
- data: Buffer;
16
- filename: string;
17
- }
18
- export interface UserTurn {
19
- /** The text of the message the run answers. */
20
- text: string;
21
- media: InlineMedia[];
22
- /** Why a part was not used, one sentence each — reported, never fatal. */
23
- dropped: string[];
24
- }
25
- /**
26
- * The turn a run answers: the LAST user message of the input. The library keeps each thread's
27
- * history itself, so the earlier messages the consumer restates are not read back in — what the
28
- * agent resumes from is what it stored.
29
- *
30
- * Multimodal parts: text parts are the message's text; a media part carried inline (`data`) becomes
31
- * an attachment. A part by `url` or by provider `file` handle is dropped and said so — this producer
32
- * hands the model only bytes it staged itself, never an address a caller supplied.
33
- */
34
- export declare function readUserTurn(messages: readonly AgUiMessage[]): UserTurn | null;
35
- /** `context` entries as the library's page context carries them, or `undefined` for none. */
36
- export declare function readContext(context: readonly AgUiContext[] | undefined): AgUiContext[] | undefined;
37
- /**
38
- * What the library reads from `forwardedProps` — the consumer's channel for what AG-UI does not
39
- * model: which agent, which model, which persona, and the page context the tools see.
40
- */
41
- export interface ForwardedOptions {
42
- agent?: string;
43
- model?: string;
44
- persona?: string;
45
- pageContext?: Record<string, unknown>;
46
- }
47
- export declare function readForwardedProps(forwarded: unknown): ForwardedOptions;
48
- /** One resume entry this producer can act on. */
49
- export interface ResumeDecision {
50
- address: InterruptAddress;
51
- entry: AgUiResumeEntry;
52
- }
53
- export interface ResumePlan {
54
- decisions: ResumeDecision[];
55
- /** Entries naming an interrupt this producer did not raise: skipped with a warning, never fatal. */
56
- unrecognised: string[];
57
- }
58
- /**
59
- * Sort a resume list into what it answers. Every recognised entry must continue the SAME library
60
- * run from the SAME point — they are the interrupts of one `RUN_FINISHED` — and a list that does not
61
- * is malformed (a string says why).
62
- */
63
- export declare function planResume(resume: readonly AgUiResumeEntry[]): ResumePlan | string;
64
- /** `{ approved, reason?, remember? }` out of an approval's resume payload. A bare boolean is accepted. */
65
- export declare function readApprovalPayload(payload: unknown): {
66
- approved: boolean;
67
- reason?: string;
68
- remember?: boolean;
69
- } | null;
70
- /** `questionId → string[]` out of an elicitation's resume payload (`{ answers }` or the map itself). */
71
- export declare function readAnswersPayload(payload: unknown): Record<string, string[]> | null;
72
- //# sourceMappingURL=input.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/ag-ui/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAEV,WAAW,EACX,WAAW,EACX,eAAe,EACf,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,CA+BlE;AAED,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAuBD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG,QAAQ,GAAG,IAAI,CAyD9E;AAED,6FAA6F;AAC7F,wBAAgB,WAAW,CACzB,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,GAC1C,WAAW,EAAE,GAAG,SAAS,CAO3B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,gBAAgB,CAevE;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,oGAAoG;IACpG,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,UAAU,GAAG,MAAM,CAwBlF;AAED,0GAA0G;AAC1G,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,IAAI,CAQP;AAED,wGAAwG;AACxG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAWpF"}