veryfront 0.1.261 → 0.1.263

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 (83) hide show
  1. package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
  2. package/esm/cli/commands/knowledge/command.js +19 -26
  3. package/esm/cli/templates/manifest.d.ts +470 -470
  4. package/esm/cli/templates/manifest.js +519 -519
  5. package/esm/deno.js +1 -1
  6. package/esm/src/agent/ag-ui-detached-start.d.ts +1 -4
  7. package/esm/src/agent/ag-ui-detached-start.d.ts.map +1 -1
  8. package/esm/src/agent/ag-ui-detached-start.js +4 -67
  9. package/esm/src/agent/ag-ui-handler.d.ts +1 -4
  10. package/esm/src/agent/ag-ui-handler.d.ts.map +1 -1
  11. package/esm/src/agent/ag-ui-handler.js +3 -61
  12. package/esm/src/agent/ag-ui-host-support.d.ts.map +1 -1
  13. package/esm/src/agent/ag-ui-host-support.js +2 -21
  14. package/esm/src/agent/ag-ui-request-shared.d.ts +4 -0
  15. package/esm/src/agent/ag-ui-request-shared.d.ts.map +1 -0
  16. package/esm/src/agent/ag-ui-request-shared.js +47 -0
  17. package/esm/src/agent/ag-ui-run-control.d.ts.map +1 -1
  18. package/esm/src/agent/ag-ui-run-control.js +1 -23
  19. package/esm/src/agent/ag-ui-runtime-handler.d.ts +1 -5
  20. package/esm/src/agent/ag-ui-runtime-handler.d.ts.map +1 -1
  21. package/esm/src/agent/ag-ui-runtime-handler.js +3 -67
  22. package/esm/src/agent/ag-ui-tool-shared.d.ts +15 -0
  23. package/esm/src/agent/ag-ui-tool-shared.d.ts.map +1 -0
  24. package/esm/src/agent/ag-ui-tool-shared.js +47 -0
  25. package/esm/src/agent/conversation-run-event-preparation.d.ts +3 -1
  26. package/esm/src/agent/conversation-run-event-preparation.d.ts.map +1 -1
  27. package/esm/src/agent/conversation-run-event-preparation.js +40 -0
  28. package/esm/src/agent/index.d.ts +3 -1
  29. package/esm/src/agent/index.d.ts.map +1 -1
  30. package/esm/src/agent/index.js +2 -1
  31. package/esm/src/agent/runtime-ag-ui-contract.d.ts.map +1 -1
  32. package/esm/src/agent/runtime-ag-ui-contract.js +2 -21
  33. package/esm/src/chat/chat-ui-message-helpers.d.ts +20 -0
  34. package/esm/src/chat/chat-ui-message-helpers.d.ts.map +1 -0
  35. package/esm/src/chat/chat-ui-message-helpers.js +167 -0
  36. package/esm/src/chat/index.d.ts +2 -0
  37. package/esm/src/chat/index.d.ts.map +1 -1
  38. package/esm/src/chat/index.js +1 -0
  39. package/esm/src/chat/protocol.d.ts +109 -0
  40. package/esm/src/chat/protocol.d.ts.map +1 -1
  41. package/esm/src/provider/runtime-loader/provider-http.d.ts +47 -0
  42. package/esm/src/provider/runtime-loader/provider-http.d.ts.map +1 -0
  43. package/esm/src/provider/runtime-loader/provider-http.js +171 -0
  44. package/esm/src/provider/runtime-loader/provider-records.d.ts +2 -0
  45. package/esm/src/provider/runtime-loader/provider-records.d.ts.map +1 -0
  46. package/esm/src/provider/runtime-loader/provider-records.js +6 -0
  47. package/esm/src/provider/runtime-loader.d.ts +2 -32
  48. package/esm/src/provider/runtime-loader.d.ts.map +1 -1
  49. package/esm/src/provider/runtime-loader.js +3 -176
  50. package/esm/src/routing/api/module-loader/external-import-rewriter.d.ts +27 -0
  51. package/esm/src/routing/api/module-loader/external-import-rewriter.d.ts.map +1 -0
  52. package/esm/src/routing/api/module-loader/external-import-rewriter.js +339 -0
  53. package/esm/src/routing/api/module-loader/loader.d.ts +1 -22
  54. package/esm/src/routing/api/module-loader/loader.d.ts.map +1 -1
  55. package/esm/src/routing/api/module-loader/loader.js +4 -336
  56. package/esm/src/server/dev-ui/manifest.d.ts +17 -17
  57. package/esm/src/server/dev-ui/manifest.js +17 -17
  58. package/esm/src/utils/version-constant.d.ts +1 -1
  59. package/esm/src/utils/version-constant.js +1 -1
  60. package/package.json +1 -1
  61. package/src/cli/commands/knowledge/command.ts +27 -32
  62. package/src/cli/templates/manifest.js +519 -519
  63. package/src/deno.js +1 -1
  64. package/src/src/agent/ag-ui-detached-start.ts +4 -92
  65. package/src/src/agent/ag-ui-handler.ts +3 -81
  66. package/src/src/agent/ag-ui-host-support.ts +5 -28
  67. package/src/src/agent/ag-ui-request-shared.ts +62 -0
  68. package/src/src/agent/ag-ui-run-control.ts +1 -27
  69. package/src/src/agent/ag-ui-runtime-handler.ts +3 -86
  70. package/src/src/agent/ag-ui-tool-shared.ts +77 -0
  71. package/src/src/agent/conversation-run-event-preparation.ts +57 -1
  72. package/src/src/agent/index.ts +19 -0
  73. package/src/src/agent/runtime-ag-ui-contract.ts +5 -28
  74. package/src/src/chat/chat-ui-message-helpers.ts +232 -0
  75. package/src/src/chat/index.ts +19 -0
  76. package/src/src/chat/protocol.ts +148 -0
  77. package/src/src/provider/runtime-loader/provider-http.ts +207 -0
  78. package/src/src/provider/runtime-loader/provider-records.ts +7 -0
  79. package/src/src/provider/runtime-loader.ts +10 -214
  80. package/src/src/routing/api/module-loader/external-import-rewriter.ts +461 -0
  81. package/src/src/routing/api/module-loader/loader.ts +19 -462
  82. package/src/src/server/dev-ui/manifest.js +17 -17
  83. package/src/src/utils/version-constant.ts +1 -1
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.261",
3
+ "version": "0.1.263",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "workspace": [
@@ -1,10 +1,7 @@
1
1
  import { z } from "zod";
2
+ import { type AgUiResumeValue } from "./ag-ui-tool-shared.js";
2
3
  import { type RunResumeSessionManager } from "./runtime/index.js";
3
4
  import type { Agent } from "./types.js";
4
- type AgUiResumeValue = {
5
- result: unknown;
6
- isError: boolean;
7
- };
8
5
  type AgUiContextValue = Record<string, unknown> | ((request: Request) => Record<string, unknown> | Promise<Record<string, unknown>>);
9
6
  export declare const AgUiDetachedStartRequestSchema: z.ZodObject<{
10
7
  messages: z.ZodArray<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-detached-start.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-detached-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ag-ui-detached-start.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-detached-start.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,12 @@
1
1
  import { z } from "zod";
2
2
  import { INVALID_ARGUMENT } from "../errors/index.js";
3
- import { SKILL_TOOL_IDS } from "../skill/types.js";
4
- import { toolRegistry } from "../tool/index.js";
5
3
  import { streamDataStreamEvents } from "./data-stream.js";
6
- import { AgUiRequestSchema, normalizeAgUiMessages, } from "./ag-ui-host-support.js";
4
+ import { AgUiRequestSchema, normalizeAgUiMessages } from "./ag-ui-host-support.js";
5
+ import { extractRequest } from "./ag-ui-request-shared.js";
6
+ import { buildMergedAgUiTools } from "./ag-ui-tool-shared.js";
7
7
  import { AgentRuntime, RunAlreadyExistsError, } from "./runtime/index.js";
8
8
  const AGENT_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
9
9
  const AG_UI_DETACHED_RUN_ID_SCHEMA = z.string().min(1).max(128).regex(AGENT_ID_PATTERN);
10
- function isRequest(obj) {
11
- return (typeof obj === "object" &&
12
- obj !== null &&
13
- "json" in obj &&
14
- typeof obj.json === "function" &&
15
- "url" in obj &&
16
- typeof obj.url === "string" &&
17
- "method" in obj &&
18
- typeof obj.method === "string");
19
- }
20
- function extractRequest(requestOrCtx) {
21
- if (isRequest(requestOrCtx))
22
- return requestOrCtx;
23
- if (typeof requestOrCtx === "object" && requestOrCtx !== null && "request" in requestOrCtx) {
24
- const candidate = requestOrCtx.request;
25
- if (isRequest(candidate))
26
- return candidate;
27
- }
28
- throw INVALID_ARGUMENT.create({
29
- detail: "Invalid handler argument: expected Request or APIContext",
30
- });
31
- }
32
10
  function buildStreamContext(request, baseContext, threadId, runId) {
33
11
  return {
34
12
  ...baseContext,
@@ -40,49 +18,8 @@ function buildStreamContext(request, baseContext, threadId, runId) {
40
18
  },
41
19
  };
42
20
  }
43
- function createInjectedAgUiTool(runId, tool, sessionManager) {
44
- return {
45
- id: tool.name,
46
- type: "function",
47
- description: tool.description ?? tool.name,
48
- inputSchema: z.record(z.string(), z.unknown()),
49
- inputSchemaJson: (tool.parameters ??
50
- { type: "object", properties: {}, additionalProperties: true }),
51
- execute: async (_input, context) => {
52
- const toolCallId = typeof context?.toolCallId === "string" ? context.toolCallId : null;
53
- if (!toolCallId) {
54
- throw new Error(`Missing toolCallId for injected tool "${tool.name}"`);
55
- }
56
- sessionManager.prepareForSignal(runId, toolCallId);
57
- const submitted = await sessionManager.waitForSignal(runId, toolCallId);
58
- if (submitted.isError) {
59
- throw new Error(typeof submitted.result === "string"
60
- ? submitted.result
61
- : JSON.stringify(submitted.result));
62
- }
63
- return submitted.result;
64
- },
65
- };
66
- }
67
21
  function buildMergedTools(agent, request, sessionManager) {
68
- const injectedTools = Object.fromEntries(request.tools.map((tool) => [
69
- tool.name,
70
- createInjectedAgUiTool(request.runId, tool, sessionManager),
71
- ]));
72
- if (!agent.config.tools) {
73
- return Object.keys(injectedTools).length > 0 ? injectedTools : undefined;
74
- }
75
- if (agent.config.tools === true) {
76
- const merged = {};
77
- for (const [toolId] of toolRegistry.getAll()) {
78
- if (!agent.config.skills && SKILL_TOOL_IDS.has(toolId)) {
79
- continue;
80
- }
81
- merged[toolId] = true;
82
- }
83
- return { ...merged, ...injectedTools };
84
- }
85
- return { ...agent.config.tools, ...injectedTools };
22
+ return buildMergedAgUiTools(agent, request.runId, request.tools, sessionManager);
86
23
  }
87
24
  function scheduleDetachedTask(requestOrCtx, task) {
88
25
  if (typeof requestOrCtx === "object" &&
@@ -1,10 +1,7 @@
1
1
  import type { Agent } from "./types.js";
2
2
  import { type RunResumeSessionManager } from "./runtime/index.js";
3
+ import { type AgUiResumeValue } from "./ag-ui-tool-shared.js";
3
4
  export { type AgUiContextItem, AgUiContextItemSchema, type AgUiInjectedTool, AgUiInjectedToolSchema, type AgUiRequest, AgUiRequestSchema, } from "./ag-ui-host-support.js";
4
- type AgUiResumeValue = {
5
- result: unknown;
6
- isError: boolean;
7
- };
8
5
  export interface AgUiHandlerOptions {
9
6
  context?: Record<string, unknown> | ((request: Request) => Record<string, unknown> | Promise<Record<string, unknown>>);
10
7
  sessionManager?: RunResumeSessionManager<AgUiResumeValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-handler.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAkB5B,OAAO,EACL,KAAK,eAAe,EACpB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,KAAK,WAAW,EAChB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAQjC,KAAK,eAAe,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAkT7D,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,cAAc,CAAC,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,KAAK,EAAE,KAAK,CAAC;CACd;AAUD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"ag-ui-handler.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAc5B,OAAO,EAAE,KAAK,eAAe,EAAwB,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EACL,KAAK,eAAe,EACpB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,KAAK,WAAW,EAChB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AA8OjC,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,cAAc,CAAC,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,KAAK,EAAE,KAAK,CAAC;CACd;AAUD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC"}
@@ -2,40 +2,17 @@ import * as dntShim from "../../_dnt.shims.js";
2
2
  import { z } from "zod";
3
3
  import { getAgent } from "./composition/index.js";
4
4
  import { AgentRuntime, RunAlreadyExistsError, } from "./runtime/index.js";
5
- import { INVALID_ARGUMENT } from "../errors/index.js";
6
- import { SKILL_TOOL_IDS } from "../skill/types.js";
7
- import { toolRegistry } from "../tool/index.js";
8
5
  import { createStreamTransformState, finalizeRunEvents, formatAgUiEvent, mapRuntimeEventToAgUi, } from "../internal-agents/ag-ui-sse.js";
9
6
  import { streamDataStreamEvents } from "./data-stream.js";
10
7
  import { normalizeAgUiMessages, parseAgUiRequestOrError, } from "./ag-ui-host-support.js";
8
+ import { extractRequest } from "./ag-ui-request-shared.js";
9
+ import { buildMergedAgUiTools } from "./ag-ui-tool-shared.js";
11
10
  export { AgUiContextItemSchema, AgUiInjectedToolSchema, AgUiRequestSchema, } from "./ag-ui-host-support.js";
12
11
  const AG_UI_HEADERS = {
13
12
  "Content-Type": "text/event-stream",
14
13
  "Cache-Control": "no-cache",
15
14
  Connection: "keep-alive",
16
15
  };
17
- function isRequest(obj) {
18
- return (typeof obj === "object" &&
19
- obj !== null &&
20
- "json" in obj &&
21
- typeof obj.json === "function" &&
22
- "url" in obj &&
23
- typeof obj.url === "string" &&
24
- "method" in obj &&
25
- typeof obj.method === "string");
26
- }
27
- function extractRequest(requestOrCtx) {
28
- if (isRequest(requestOrCtx))
29
- return requestOrCtx;
30
- if (typeof requestOrCtx === "object" && requestOrCtx !== null && "request" in requestOrCtx) {
31
- const candidate = requestOrCtx.request;
32
- if (isRequest(candidate))
33
- return candidate;
34
- }
35
- throw INVALID_ARGUMENT.create({
36
- detail: "Invalid handler argument: expected Request or APIContext",
37
- });
38
- }
39
16
  function generateRunId() {
40
17
  return `run_${dntShim.crypto.randomUUID().replaceAll("-", "")}`;
41
18
  }
@@ -155,30 +132,6 @@ async function createAgUiDirectStreamResponse(agent, request, baseContext) {
155
132
  upstreamStatusText: upstream.statusText,
156
133
  });
157
134
  }
158
- function createInjectedAgUiTool(runId, tool, sessionManager) {
159
- return {
160
- id: tool.name,
161
- type: "function",
162
- description: tool.description ?? tool.name,
163
- inputSchema: z.record(z.string(), z.unknown()),
164
- inputSchemaJson: (tool.parameters ??
165
- { type: "object", properties: {}, additionalProperties: true }),
166
- execute: async (_input, context) => {
167
- const toolCallId = typeof context?.toolCallId === "string" ? context.toolCallId : null;
168
- if (!toolCallId) {
169
- throw new Error(`Missing toolCallId for injected tool "${tool.name}"`);
170
- }
171
- sessionManager.prepareForSignal(runId, toolCallId);
172
- const submitted = await sessionManager.waitForSignal(runId, toolCallId);
173
- if (submitted.isError) {
174
- throw new Error(typeof submitted.result === "string"
175
- ? submitted.result
176
- : JSON.stringify(submitted.result));
177
- }
178
- return submitted.result;
179
- },
180
- };
181
- }
182
135
  async function createAgUiInjectedToolsStreamResponse(agent, request, baseContext, sessionManager) {
183
136
  const threadId = request.threadId ?? dntShim.crypto.randomUUID();
184
137
  const runId = request.runId ?? generateRunId();
@@ -191,20 +144,9 @@ async function createAgUiInjectedToolsStreamResponse(agent, request, baseContext
191
144
  }
192
145
  throw error;
193
146
  }
194
- const injectedTools = Object.fromEntries(request.tools.map((tool) => [tool.name, createInjectedAgUiTool(runId, tool, sessionManager)]));
195
- const mergedTools = !agent.config.tools
196
- ? injectedTools
197
- : agent.config.tools === true
198
- ? {
199
- ...Object.fromEntries([...toolRegistry.getAll()]
200
- .filter(([toolId]) => agent.config.skills || !SKILL_TOOL_IDS.has(toolId))
201
- .map(([toolId]) => [toolId, true])),
202
- ...injectedTools,
203
- }
204
- : { ...agent.config.tools, ...injectedTools };
205
147
  const runtime = new AgentRuntime(agent.id, {
206
148
  ...agent.config,
207
- tools: mergedTools,
149
+ tools: buildMergedAgUiTools(agent, runId, request.tools, sessionManager),
208
150
  });
209
151
  let upstreamBody;
210
152
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-host-support.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-host-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAY1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAgBD,eAAO,MAAM,sBAAsB;;;;iBAOjC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;2BAqBhC,CAAC;AAYH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAe5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AA0E5D,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAE7E;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,CA6BjC;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,OAAO,EAAE,CAUlF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAQpF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAUxF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,QAAQ,CASlF"}
1
+ {"version":3,"file":"ag-ui-host-support.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-host-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAa1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAgBD,eAAO,MAAM,sBAAsB;;;;iBAOjC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;2BAqBhC,CAAC;AAYH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAe5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AA0E5D,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAE7E;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,CAKjC;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,OAAO,EAAE,CAUlF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAQpF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAUxF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,QAAQ,CASlF"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { formatAgUiEvent } from "../internal-agents/ag-ui-sse.js";
3
+ import { parseAgUiJsonRequestOrError } from "./ag-ui-request-shared.js";
3
4
  const AGENT_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
4
5
  const MAX_TOOL_PARAMETERS_BYTES = 16_384;
5
6
  const MAX_CONTEXT_ITEM_BYTES = 16_384;
@@ -127,27 +128,7 @@ export async function parseAgUiRequest(request) {
127
128
  return AgUiRequestSchema.parse(await request.json());
128
129
  }
129
130
  export async function parseAgUiRequestOrError(request) {
130
- try {
131
- return await parseAgUiRequest(request);
132
- }
133
- catch (error) {
134
- if (error instanceof z.ZodError) {
135
- return Response.json({
136
- error: "Invalid AG-UI request",
137
- details: error.issues.map((issue) => ({
138
- path: issue.path,
139
- message: issue.message,
140
- })),
141
- }, { status: 400 });
142
- }
143
- if (error instanceof SyntaxError || error instanceof TypeError) {
144
- return Response.json({
145
- error: "Invalid AG-UI request",
146
- details: [{ path: [], message: "Malformed JSON request body" }],
147
- }, { status: 400 });
148
- }
149
- throw error;
150
- }
131
+ return await parseAgUiJsonRequestOrError(() => parseAgUiRequest(request), "Invalid AG-UI request");
151
132
  }
152
133
  export function normalizeAgUiMessages(messages) {
153
134
  return messages.map((message) => ({
@@ -0,0 +1,4 @@
1
+ export declare function isRequest(value: unknown): value is Request;
2
+ export declare function extractRequest(requestOrCtx: unknown): Request;
3
+ export declare function parseAgUiJsonRequestOrError<T>(parseRequest: () => Promise<T>, errorLabel: string): Promise<T | Response>;
4
+ //# sourceMappingURL=ag-ui-request-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ag-ui-request-shared.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-request-shared.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAW1D;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAW7D;AAED,wBAAsB,2BAA2B,CAAC,CAAC,EACjD,YAAY,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC9B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CA6BvB"}
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ import { INVALID_ARGUMENT } from "../errors/index.js";
3
+ export function isRequest(value) {
4
+ return (typeof value === "object" &&
5
+ value !== null &&
6
+ "json" in value &&
7
+ typeof value.json === "function" &&
8
+ "url" in value &&
9
+ typeof value.url === "string" &&
10
+ "method" in value &&
11
+ typeof value.method === "string");
12
+ }
13
+ export function extractRequest(requestOrCtx) {
14
+ if (isRequest(requestOrCtx))
15
+ return requestOrCtx;
16
+ if (typeof requestOrCtx === "object" && requestOrCtx !== null && "request" in requestOrCtx) {
17
+ const candidate = requestOrCtx.request;
18
+ if (isRequest(candidate))
19
+ return candidate;
20
+ }
21
+ throw INVALID_ARGUMENT.create({
22
+ detail: "Invalid handler argument: expected Request or APIContext",
23
+ });
24
+ }
25
+ export async function parseAgUiJsonRequestOrError(parseRequest, errorLabel) {
26
+ try {
27
+ return await parseRequest();
28
+ }
29
+ catch (error) {
30
+ if (error instanceof z.ZodError) {
31
+ return Response.json({
32
+ error: errorLabel,
33
+ details: error.issues.map((issue) => ({
34
+ path: issue.path,
35
+ message: issue.message,
36
+ })),
37
+ }, { status: 400 });
38
+ }
39
+ if (error instanceof SyntaxError || error instanceof TypeError) {
40
+ return Response.json({
41
+ error: errorLabel,
42
+ details: [{ path: [], message: "Malformed JSON request body" }],
43
+ }, { status: 400 });
44
+ }
45
+ throw error;
46
+ }
47
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-run-control.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-run-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,uBAAuB,EAGxB,MAAM,6BAA6B,CAAC;AAKrC,eAAO,MAAM,sBAAsB;;;;;2BAOjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAgCF,MAAM,WAAW,4BAA4B;IAC3C,YAAY,CAAC,EACT,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,GAAG,IAAI,CAAC,GACvE,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,wBAAyB,SAAQ,4BAA4B;IAC5E,cAAc,EAAE,uBAAuB,CAAC,WAAW,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,4BAA4B;IACzF,cAAc,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;CAC5C;AAaD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAChC,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAsD9C;AAED,wBAAgB,uBAAuB,CAAC,CAAC,GAAG,OAAO,EACjD,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACnC,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAgB9C"}
1
+ {"version":3,"file":"ag-ui-run-control.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-run-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,uBAAuB,EAGxB,MAAM,6BAA6B,CAAC;AAKrC,eAAO,MAAM,sBAAsB;;;;;2BAOjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAMF,MAAM,WAAW,4BAA4B;IAC3C,YAAY,CAAC,EACT,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,GAAG,IAAI,CAAC,GACvE,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,wBAAyB,SAAQ,4BAA4B;IAC5E,cAAc,EAAE,uBAAuB,CAAC,WAAW,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,4BAA4B;IACzF,cAAc,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;CAC5C;AAaD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAChC,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAsD9C;AAED,wBAAgB,uBAAuB,CAAC,CAAC,GAAG,OAAO,EACjD,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACnC,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAgB9C"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { INVALID_ARGUMENT } from "../errors/index.js";
2
+ import { extractRequest } from "./ag-ui-request-shared.js";
3
3
  import { RunNotActiveError, WaitConflictError, WaitNotPendingError, } from "./runtime/resume-session.js";
4
4
  const RESUME_PATH_REGEX = /^\/api\/ag-ui\/runs\/([^/]+)\/resume$/;
5
5
  const CANCEL_PATH_REGEX = /^\/api\/ag-ui\/runs\/([^/]+)$/;
@@ -11,28 +11,6 @@ export const AgUiResumeSignalSchema = z.discriminatedUnion("type", [
11
11
  isError: z.boolean().optional().default(false),
12
12
  }),
13
13
  ]);
14
- function isRequest(value) {
15
- return (typeof value === "object" &&
16
- value !== null &&
17
- "json" in value &&
18
- typeof value.json === "function" &&
19
- "url" in value &&
20
- typeof value.url === "string" &&
21
- "method" in value &&
22
- typeof value.method === "string");
23
- }
24
- function extractRequest(requestOrCtx) {
25
- if (isRequest(requestOrCtx))
26
- return requestOrCtx;
27
- if (typeof requestOrCtx === "object" && requestOrCtx !== null && "request" in requestOrCtx) {
28
- const candidate = requestOrCtx.request;
29
- if (isRequest(candidate))
30
- return candidate;
31
- }
32
- throw INVALID_ARGUMENT.create({
33
- detail: "Invalid handler argument: expected Request or APIContext",
34
- });
35
- }
36
14
  function getRunId(pathname, regex) {
37
15
  return regex.exec(pathname)?.[1] ?? null;
38
16
  }
@@ -1,10 +1,7 @@
1
1
  import { type RunResumeSessionManager } from "./runtime/index.js";
2
2
  import type { Agent } from "./types.js";
3
3
  import { type AgUiRuntimeRequest } from "./runtime-ag-ui-contract.js";
4
- type AgUiResumeValue = {
5
- result: unknown;
6
- isError: boolean;
7
- };
4
+ import { type AgUiResumeValue } from "./ag-ui-tool-shared.js";
8
5
  export interface AgUiRuntimeLifecycleContext {
9
6
  request: AgUiRuntimeRequest;
10
7
  toolCallId?: string;
@@ -33,5 +30,4 @@ export type AgUiRuntimeHandlerConfig = AgUiRuntimeHandlerConfigWithAgent | (AgUi
33
30
  execute: AgUiRuntimeHandlerExecute;
34
31
  });
35
32
  export declare function createAgUiRuntimeHandler(config: AgUiRuntimeHandlerConfig): (requestOrCtx: unknown) => Promise<Response>;
36
- export {};
37
33
  //# sourceMappingURL=ag-ui-runtime-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-runtime-handler.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-runtime-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,6BAA6B,CAAC;AAgBrC,KAAK,eAAe,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAG7D,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqWD,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,yBAAyB,GAAG,CACtC,KAAK,EAAE,8BAA8B,KAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAElC,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,cAAc,CAAC,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1E;AAED,MAAM,WAAW,iCAAkC,SAAQ,yBAAyB;IAClF,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,MAAM,wBAAwB,GAChC,iCAAiC,GACjC,CAAC,yBAAyB,GAAG;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAAC;AAE5F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAqI9C"}
1
+ {"version":3,"file":"ag-ui-runtime-handler.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-runtime-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,KAAK,eAAe,EAAwB,MAAM,wBAAwB,CAAC;AAkBpF,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqRD,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,yBAAyB,GAAG,CACtC,KAAK,EAAE,8BAA8B,KAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAElC,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,cAAc,CAAC,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1E;AAED,MAAM,WAAW,iCAAkC,SAAQ,yBAAyB;IAClF,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,MAAM,wBAAwB,GAChC,iCAAiC,GACjC,CAAC,yBAAyB,GAAG;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAAC;AAE5F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAqI9C"}
@@ -1,9 +1,8 @@
1
1
  import { z } from "zod";
2
- import { INVALID_ARGUMENT } from "../errors/index.js";
3
- import { SKILL_TOOL_IDS } from "../skill/types.js";
4
- import { toolRegistry } from "../tool/index.js";
5
2
  import { AgentRuntime, RunAlreadyExistsError, } from "./runtime/index.js";
6
3
  import { parseAgUiRuntimeRequestOrError, } from "./runtime-ag-ui-contract.js";
4
+ import { extractRequest } from "./ag-ui-request-shared.js";
5
+ import { buildMergedAgUiTools } from "./ag-ui-tool-shared.js";
7
6
  import { normalizeAgUiRuntimeMessages } from "./ag-ui-runtime-support.js";
8
7
  import { createStreamTransformState, finalizeRunEvents, formatAgUiEvent, mapRuntimeEventToAgUi, } from "../internal-agents/ag-ui-sse.js";
9
8
  import { streamDataStreamEvents } from "./data-stream.js";
@@ -33,31 +32,9 @@ async function invokeLifecycleCallbackAndWait(callback, context) {
33
32
  return;
34
33
  }
35
34
  }
36
- function isRequest(obj) {
37
- return (typeof obj === "object" &&
38
- obj !== null &&
39
- "json" in obj &&
40
- typeof obj.json === "function" &&
41
- "url" in obj &&
42
- typeof obj.url === "string" &&
43
- "method" in obj &&
44
- typeof obj.method === "string");
45
- }
46
35
  function isRecord(value) {
47
36
  return typeof value === "object" && value !== null && !Array.isArray(value);
48
37
  }
49
- function extractRequest(requestOrCtx) {
50
- if (isRequest(requestOrCtx))
51
- return requestOrCtx;
52
- if (typeof requestOrCtx === "object" && requestOrCtx !== null && "request" in requestOrCtx) {
53
- const candidate = requestOrCtx.request;
54
- if (isRequest(candidate))
55
- return candidate;
56
- }
57
- throw INVALID_ARGUMENT.create({
58
- detail: "Invalid handler argument: expected Request or APIContext",
59
- });
60
- }
61
38
  function buildStreamContext(request, baseContext) {
62
39
  return {
63
40
  ...baseContext,
@@ -179,49 +156,8 @@ async function createAgUiRuntimeDirectStreamResponse(agent, request, baseContext
179
156
  onToolCallSeen: lifecycle?.onToolCallSeen,
180
157
  });
181
158
  }
182
- function createInjectedAgUiTool(runId, tool, sessionManager) {
183
- return {
184
- id: tool.name,
185
- type: "function",
186
- description: tool.description ?? tool.name,
187
- inputSchema: z.record(z.string(), z.unknown()),
188
- inputSchemaJson: (tool.parameters ??
189
- { type: "object", properties: {}, additionalProperties: true }),
190
- execute: async (_input, context) => {
191
- const toolCallId = typeof context?.toolCallId === "string" ? context.toolCallId : null;
192
- if (!toolCallId) {
193
- throw new Error(`Missing toolCallId for injected tool "${tool.name}"`);
194
- }
195
- sessionManager.prepareForSignal(runId, toolCallId);
196
- const submitted = await sessionManager.waitForSignal(runId, toolCallId);
197
- if (submitted.isError) {
198
- throw new Error(typeof submitted.result === "string"
199
- ? submitted.result
200
- : JSON.stringify(submitted.result));
201
- }
202
- return submitted.result;
203
- },
204
- };
205
- }
206
159
  function buildMergedTools(agent, request, sessionManager) {
207
- const injectedTools = Object.fromEntries(request.tools.map((tool) => [
208
- tool.name,
209
- createInjectedAgUiTool(request.runId, tool, sessionManager),
210
- ]));
211
- if (!agent.config.tools) {
212
- return Object.keys(injectedTools).length > 0 ? injectedTools : undefined;
213
- }
214
- if (agent.config.tools === true) {
215
- const merged = {};
216
- for (const [toolId] of toolRegistry.getAll()) {
217
- if (!agent.config.skills && SKILL_TOOL_IDS.has(toolId)) {
218
- continue;
219
- }
220
- merged[toolId] = true;
221
- }
222
- return { ...merged, ...injectedTools };
223
- }
224
- return { ...agent.config.tools, ...injectedTools };
160
+ return buildMergedAgUiTools(agent, request.runId, request.tools, sessionManager);
225
161
  }
226
162
  async function createAgUiRuntimeInjectedToolsStreamResponse(agent, request, baseContext, sessionManager, lifecycle) {
227
163
  try {
@@ -0,0 +1,15 @@
1
+ import type { Tool } from "../tool/types.js";
2
+ import type { RunResumeSessionManager } from "./runtime/index.js";
3
+ import type { Agent } from "./types.js";
4
+ export type AgUiResumeValue = {
5
+ result: unknown;
6
+ isError: boolean;
7
+ };
8
+ export interface AgUiInjectedToolLike {
9
+ name: string;
10
+ description?: string;
11
+ parameters?: unknown;
12
+ }
13
+ export declare function createInjectedAgUiTool(runId: string, tool: AgUiInjectedToolLike, sessionManager: RunResumeSessionManager<AgUiResumeValue>): Tool;
14
+ export declare function buildMergedAgUiTools(agent: Agent, runId: string, tools: AgUiInjectedToolLike[], sessionManager: RunResumeSessionManager<AgUiResumeValue>): Agent["config"]["tools"];
15
+ //# sourceMappingURL=ag-ui-tool-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ag-ui-tool-shared.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-tool-shared.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,oBAAoB,EAC1B,cAAc,EAAE,uBAAuB,CAAC,eAAe,CAAC,GACvD,IAAI,CA0BN;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,oBAAoB,EAAE,EAC7B,cAAc,EAAE,uBAAuB,CAAC,eAAe,CAAC,GACvD,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAwB1B"}
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ import { SKILL_TOOL_IDS } from "../skill/types.js";
3
+ import { toolRegistry } from "../tool/registry.js";
4
+ export function createInjectedAgUiTool(runId, tool, sessionManager) {
5
+ return {
6
+ id: tool.name,
7
+ type: "function",
8
+ description: tool.description ?? tool.name,
9
+ inputSchema: z.record(z.string(), z.unknown()),
10
+ inputSchemaJson: (tool.parameters ??
11
+ { type: "object", properties: {}, additionalProperties: true }),
12
+ execute: async (_input, context) => {
13
+ const toolCallId = typeof context?.toolCallId === "string" ? context.toolCallId : null;
14
+ if (!toolCallId) {
15
+ throw new Error(`Missing toolCallId for injected tool "${tool.name}"`);
16
+ }
17
+ sessionManager.prepareForSignal(runId, toolCallId);
18
+ const submitted = await sessionManager.waitForSignal(runId, toolCallId);
19
+ if (submitted.isError) {
20
+ throw new Error(typeof submitted.result === "string"
21
+ ? submitted.result
22
+ : JSON.stringify(submitted.result));
23
+ }
24
+ return submitted.result;
25
+ },
26
+ };
27
+ }
28
+ export function buildMergedAgUiTools(agent, runId, tools, sessionManager) {
29
+ const injectedTools = Object.fromEntries(tools.map((tool) => [
30
+ tool.name,
31
+ createInjectedAgUiTool(runId, tool, sessionManager),
32
+ ]));
33
+ if (!agent.config.tools) {
34
+ return Object.keys(injectedTools).length > 0 ? injectedTools : undefined;
35
+ }
36
+ if (agent.config.tools === true) {
37
+ const merged = {};
38
+ for (const [toolId] of toolRegistry.getAll()) {
39
+ if (!agent.config.skills && SKILL_TOOL_IDS.has(toolId)) {
40
+ continue;
41
+ }
42
+ merged[toolId] = true;
43
+ }
44
+ return { ...merged, ...injectedTools };
45
+ }
46
+ return { ...agent.config.tools, ...injectedTools };
47
+ }
@@ -1,5 +1,7 @@
1
- import { type ChatStreamEvent } from "../chat/protocol.js";
1
+ import { type ChatMessageMetadata, type ChatStreamEvent, type ChatUiMessageChunk } from "../chat/protocol.js";
2
2
  import { type ConversationRunEvent, ConversationRunEventEncoder } from "./conversation-run-events.js";
3
+ export declare function toConversationRunStreamEvent(chunk: ChatUiMessageChunk<ChatMessageMetadata>): ChatStreamEvent;
3
4
  export declare function prepareConversationRunStreamEvents(events: ChatStreamEvent[], encoder?: ConversationRunEventEncoder): ConversationRunEvent[];
5
+ export declare function prepareConversationRunChunkEvents(chunks: ChatUiMessageChunk<ChatMessageMetadata>[], encoder?: ConversationRunEventEncoder): ConversationRunEvent[];
4
6
  export declare function prepareConversationRunExternalEvents(events: ConversationRunEvent[]): ConversationRunEvent[];
5
7
  //# sourceMappingURL=conversation-run-event-preparation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-run-event-preparation.d.ts","sourceRoot":"","sources":["../../../src/src/agent/conversation-run-event-preparation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,KAAK,oBAAoB,EACzB,2BAA2B,EAE5B,MAAM,8BAA8B,CAAC;AAGtC,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB;AAED,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,oBAAoB,EAAE,GAC7B,oBAAoB,EAAE,CAExB"}
1
+ {"version":3,"file":"conversation-run-event-preparation.d.ts","sourceRoot":"","sources":["../../../src/src/agent/conversation-run-event-preparation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,oBAAoB,EACzB,2BAA2B,EAE5B,MAAM,8BAA8B,CAAC;AAiBtC,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,GAC7C,eAAe,CAuBjB;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,EAAE,EACjD,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAKxB;AAED,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,oBAAoB,EAAE,GAC7B,oBAAoB,EAAE,CAExB"}
@@ -1,8 +1,48 @@
1
1
  import { ConversationRunEventEncoder, encodeConversationRunEvents, } from "./conversation-run-events.js";
2
2
  import { normalizeConversationRunEvents } from "./conversation-run-event-normalization.js";
3
+ function normalizeFinishReason(reason) {
4
+ switch (reason) {
5
+ case "stop":
6
+ case "length":
7
+ case "tool-calls":
8
+ case "content-filter":
9
+ case "error":
10
+ case "other":
11
+ return reason;
12
+ default:
13
+ return undefined;
14
+ }
15
+ }
16
+ export function toConversationRunStreamEvent(chunk) {
17
+ switch (chunk.type) {
18
+ case "start":
19
+ return {
20
+ type: "start",
21
+ ...(chunk.messageId !== undefined ? { messageId: chunk.messageId } : {}),
22
+ ...(chunk.messageMetadata !== undefined ? { messageMetadata: chunk.messageMetadata } : {}),
23
+ };
24
+ case "finish": {
25
+ const finishReason = normalizeFinishReason(chunk.finishReason);
26
+ return {
27
+ type: "finish",
28
+ ...(finishReason !== undefined ? { finishReason } : {}),
29
+ };
30
+ }
31
+ case "message-metadata":
32
+ return {
33
+ type: "message-metadata",
34
+ messageMetadata: chunk.messageMetadata,
35
+ };
36
+ default:
37
+ return chunk;
38
+ }
39
+ }
3
40
  export function prepareConversationRunStreamEvents(events, encoder = new ConversationRunEventEncoder()) {
4
41
  return normalizeConversationRunEvents(encodeConversationRunEvents(events, encoder));
5
42
  }
43
+ export function prepareConversationRunChunkEvents(chunks, encoder = new ConversationRunEventEncoder()) {
44
+ return prepareConversationRunStreamEvents(chunks.map((chunk) => toConversationRunStreamEvent(chunk)), encoder);
45
+ }
6
46
  export function prepareConversationRunExternalEvents(events) {
7
47
  return normalizeConversationRunEvents(events);
8
48
  }