veryfront 0.1.212 → 0.1.214

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 (45) hide show
  1. package/esm/cli/mcp/advanced-tools.d.ts.map +1 -1
  2. package/esm/cli/mcp/advanced-tools.js +2 -0
  3. package/esm/cli/mcp/standalone.d.ts.map +1 -1
  4. package/esm/cli/mcp/standalone.js +34 -0
  5. package/esm/cli/mcp/tools/cicd-tools.d.ts +13 -0
  6. package/esm/cli/mcp/tools/cicd-tools.d.ts.map +1 -1
  7. package/esm/cli/mcp/tools/cicd-tools.js +14 -83
  8. package/esm/cli/mcp/tools/deploy-tool.d.ts +37 -0
  9. package/esm/cli/mcp/tools/deploy-tool.d.ts.map +1 -0
  10. package/esm/cli/mcp/tools/deploy-tool.js +85 -0
  11. package/esm/deno.js +1 -1
  12. package/esm/src/agent/ag-ui-browser-encoder.d.ts.map +1 -1
  13. package/esm/src/agent/ag-ui-browser-encoder.js +3 -0
  14. package/esm/src/agent/data-stream.d.ts.map +1 -1
  15. package/esm/src/agent/data-stream.js +37 -2
  16. package/esm/src/agent/runtime/chat-stream-handler.d.ts.map +1 -1
  17. package/esm/src/agent/runtime/chat-stream-handler.js +7 -0
  18. package/esm/src/agent/runtime/runtime-tool-types.d.ts +3 -0
  19. package/esm/src/agent/runtime/runtime-tool-types.d.ts.map +1 -1
  20. package/esm/src/internal-agents/schema.d.ts.map +1 -1
  21. package/esm/src/internal-agents/schema.js +24 -1
  22. package/esm/src/provider/runtime-loader.d.ts +2 -0
  23. package/esm/src/provider/runtime-loader.d.ts.map +1 -1
  24. package/esm/src/provider/runtime-loader.js +159 -4
  25. package/esm/src/provider/veryfront-cloud/provider.js +2 -2
  26. package/esm/src/provider/veryfront-cloud/shared.d.ts +1 -1
  27. package/esm/src/provider/veryfront-cloud/shared.d.ts.map +1 -1
  28. package/esm/src/provider/veryfront-cloud/shared.js +4 -1
  29. package/esm/src/utils/version-constant.d.ts +1 -1
  30. package/esm/src/utils/version-constant.js +1 -1
  31. package/package.json +1 -1
  32. package/src/cli/mcp/advanced-tools.ts +2 -0
  33. package/src/cli/mcp/standalone.ts +34 -0
  34. package/src/cli/mcp/tools/cicd-tools.ts +15 -92
  35. package/src/cli/mcp/tools/deploy-tool.ts +132 -0
  36. package/src/deno.js +1 -1
  37. package/src/src/agent/ag-ui-browser-encoder.ts +3 -0
  38. package/src/src/agent/data-stream.ts +39 -2
  39. package/src/src/agent/runtime/chat-stream-handler.ts +8 -0
  40. package/src/src/agent/runtime/runtime-tool-types.ts +4 -0
  41. package/src/src/internal-agents/schema.ts +28 -1
  42. package/src/src/provider/runtime-loader.ts +213 -4
  43. package/src/src/provider/veryfront-cloud/provider.ts +2 -2
  44. package/src/src/provider/veryfront-cloud/shared.ts +8 -1
  45. package/src/src/utils/version-constant.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"advanced-tools.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/advanced-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAgC1C,eAAO,MAAM,aAAa,EAAE,OAAO,EA0BlC,CAAC"}
1
+ {"version":3,"file":"advanced-tools.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/advanced-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAiC1C,eAAO,MAAM,aAAa,EAAE,OAAO,EA2BlC,CAAC"}
@@ -2,6 +2,7 @@ import { vfCreateProject, vfListExamples, vfListIntegrations, vfListTemplates, v
2
2
  import { vfGetDebugContext, vfGetFlywheelStatus, vfHotReload, vfPreviewRoute, vfTriggerHmr, vfWaitForReady, } from "./tools/dev-tools.js";
3
3
  import { vfGetComponentTree, vfGetProjectContext, vfListLocalProjects, vfListRoutes, } from "./tools/project-tools.js";
4
4
  import { vfBuild } from "./tools/build-tool.js";
5
+ import { vfTriggerDeploy } from "./tools/deploy-tool.js";
5
6
  import { vfRunLint } from "./tools/run-lint-tool.js";
6
7
  import { vfRunTests } from "./tools/run-tests-tool.js";
7
8
  import { vfGetConventions, vfScaffold } from "./tools/scaffold-tools.js";
@@ -29,6 +30,7 @@ export const advancedTools = [
29
30
  vfGetDebugContext,
30
31
  vfGetComponentTree,
31
32
  vfBuild,
33
+ vfTriggerDeploy,
32
34
  vfHotReload,
33
35
  vfTriggerHmr,
34
36
  vfWaitForReady,
@@ -1 +1 @@
1
- {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/standalone.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA4B;gBAEnC,MAAM,GAAE,mBAAwB;IAM5C,KAAK,IAAI,IAAI;IAWb,IAAI,IAAI,IAAI;YAME,aAAa;IAW3B,OAAO,CAAC,cAAc;YAgCR,eAAe;IAqB7B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,mBAAmB;YAyBb,mBAAmB;IA6CjC,OAAO,CAAC,iBAAiB;YAkBX,gBAAgB;IAwB9B,OAAO,CAAC,WAAW;IAkQnB,OAAO,CAAC,mBAAmB;CA0F5B;AAED,wBAAgB,yBAAyB,CAAC,MAAM,GAAE,mBAAwB,GAAG,mBAAmB,CAI/F"}
1
+ {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/standalone.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA4B;gBAEnC,MAAM,GAAE,mBAAwB;IAM5C,KAAK,IAAI,IAAI;IAWb,IAAI,IAAI,IAAI;YAME,aAAa;IAW3B,OAAO,CAAC,cAAc;YAgCR,eAAe;IAqB7B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,mBAAmB;YAyBb,mBAAmB;IA6CjC,OAAO,CAAC,iBAAiB;YAkBX,gBAAgB;IAwB9B,OAAO,CAAC,WAAW;IAoSnB,OAAO,CAAC,mBAAmB;CA0F5B;AAED,wBAAgB,yBAAyB,CAAC,MAAM,GAAE,mBAAwB,GAAG,mBAAmB,CAI/F"}
@@ -442,6 +442,40 @@ export class StandaloneMCPServer {
442
442
  };
443
443
  },
444
444
  },
445
+ {
446
+ name: "vf_trigger_deploy",
447
+ description: "Deploy a project to an environment via the Veryfront API. " +
448
+ "Creates a release from the specified branch and deploys it to the target environment. " +
449
+ "Requires a valid API token (set VERYFRONT_API_TOKEN or run 'veryfront login'). " +
450
+ "Do not use for local builds — use vf_build instead. " +
451
+ "Do not use for running tests before deploy — use vf_run_tests instead.",
452
+ inputSchema: {
453
+ type: "object",
454
+ properties: {
455
+ projectSlug: {
456
+ type: "string",
457
+ description: "The project slug to deploy. Example: 'my-app'.",
458
+ },
459
+ environment: {
460
+ type: "string",
461
+ description: "Target environment name. Defaults to 'production'.",
462
+ },
463
+ branch: {
464
+ type: "string",
465
+ description: "Git branch to create the release from. Defaults to 'main'.",
466
+ },
467
+ },
468
+ required: ["projectSlug"],
469
+ },
470
+ async execute(args) {
471
+ const { triggerDeploy } = await import("./tools/deploy-tool.js");
472
+ return triggerDeploy({
473
+ projectSlug: args.projectSlug,
474
+ environment: args.environment ?? "production",
475
+ branch: args.branch ?? "main",
476
+ });
477
+ },
478
+ },
445
479
  ...this.createContext7Tools(),
446
480
  ];
447
481
  }
@@ -1,3 +1,16 @@
1
+ /**
2
+ * CI/CD MCP tools — placeholder
3
+ *
4
+ * These tools require backend API support that is not yet available.
5
+ * They were previously registered as stubs returning "not_implemented",
6
+ * which misled agents into wasting tool calls.
7
+ *
8
+ * Re-add tools here when the deploy API is available:
9
+ * - vf_get_pipeline_status
10
+ * - vf_get_deploy_history
11
+ * - vf_get_build_logs
12
+ * - vf_trigger_deploy
13
+ */
1
14
  import type { MCPTool } from "../../../src/mcp/index.js";
2
15
  export declare const cicdTools: MCPTool[];
3
16
  //# sourceMappingURL=cicd-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cicd-tools.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/cicd-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAuFzD,eAAO,MAAM,SAAS,EAAE,OAAO,EAK9B,CAAC"}
1
+ {"version":3,"file":"cicd-tools.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/cicd-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,eAAO,MAAM,SAAS,EAAE,OAAO,EAAO,CAAC"}
@@ -1,83 +1,14 @@
1
- import { z } from "zod";
2
- const getPipelineStatusInput = z.object({
3
- projectSlug: z.string().describe("Project slug"),
4
- environment: z.string().optional().default("production").describe("Target environment"),
5
- });
6
- const vfGetPipelineStatus = {
7
- name: "vf_get_pipeline_status",
8
- title: "Pipeline Status",
9
- annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: false },
10
- description: "Get the current build/deploy pipeline state for a project environment.",
11
- inputSchema: getPipelineStatusInput,
12
- execute: async (input) => {
13
- return {
14
- status: "not_implemented",
15
- message: "CI/CD pipeline API not yet available. This tool requires backend support.",
16
- projectSlug: input.projectSlug,
17
- environment: input.environment,
18
- };
19
- },
20
- };
21
- const getDeployHistoryInput = z.object({
22
- projectSlug: z.string().describe("Project slug"),
23
- limit: z.number().optional().default(10).describe("Number of recent deployments to return"),
24
- });
25
- const vfGetDeployHistory = {
26
- name: "vf_get_deploy_history",
27
- title: "Deploy History",
28
- annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: false },
29
- description: "List recent deployments with status, version, URL, and timestamp.",
30
- inputSchema: getDeployHistoryInput,
31
- execute: async (input) => {
32
- return {
33
- status: "not_implemented",
34
- message: "Deploy history API not yet available.",
35
- projectSlug: input.projectSlug,
36
- };
37
- },
38
- };
39
- const getBuildLogsInput = z.object({
40
- projectSlug: z.string().describe("Project slug"),
41
- deployId: z.string().optional().describe("Specific deployment ID (latest if omitted)"),
42
- });
43
- const vfGetBuildLogs = {
44
- name: "vf_get_build_logs",
45
- title: "Build Logs",
46
- annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: false },
47
- description: "Get build logs from an active or recent build/deployment.",
48
- inputSchema: getBuildLogsInput,
49
- execute: async (input) => {
50
- return {
51
- status: "not_implemented",
52
- message: "Build logs API not yet available.",
53
- projectSlug: input.projectSlug,
54
- };
55
- },
56
- };
57
- const triggerDeployInput = z.object({
58
- projectSlug: z.string().describe("Project slug"),
59
- environment: z.string().optional().default("production").describe("Target environment"),
60
- branch: z.string().optional().default("main").describe("Branch to deploy"),
61
- });
62
- const vfTriggerDeploy = {
63
- name: "vf_trigger_deploy",
64
- title: "Trigger Deploy",
65
- annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: false },
66
- description: "Trigger a deployment to an environment. Returns a deployment ID for status tracking.",
67
- inputSchema: triggerDeployInput,
68
- execute: async (input) => {
69
- return {
70
- status: "not_implemented",
71
- message: "Deploy trigger API not yet available.",
72
- projectSlug: input.projectSlug,
73
- environment: input.environment,
74
- branch: input.branch,
75
- };
76
- },
77
- };
78
- export const cicdTools = [
79
- vfGetPipelineStatus,
80
- vfGetDeployHistory,
81
- vfGetBuildLogs,
82
- vfTriggerDeploy,
83
- ];
1
+ /**
2
+ * CI/CD MCP tools — placeholder
3
+ *
4
+ * These tools require backend API support that is not yet available.
5
+ * They were previously registered as stubs returning "not_implemented",
6
+ * which misled agents into wasting tool calls.
7
+ *
8
+ * Re-add tools here when the deploy API is available:
9
+ * - vf_get_pipeline_status
10
+ * - vf_get_deploy_history
11
+ * - vf_get_build_logs
12
+ * - vf_trigger_deploy
13
+ */
14
+ export const cicdTools = [];
@@ -0,0 +1,37 @@
1
+ /**
2
+ * MCP tool: vf_trigger_deploy
3
+ *
4
+ * Creates a release from a branch and deploys it to an environment.
5
+ * Wraps the same API calls used by the `vf deploy` CLI command.
6
+ */
7
+ import { z } from "zod";
8
+ import type { MCPTool } from "../../../src/mcp/index.js";
9
+ declare const triggerDeployInput: z.ZodObject<{
10
+ projectSlug: z.ZodString;
11
+ environment: z.ZodDefault<z.ZodOptional<z.ZodString>>;
12
+ branch: z.ZodDefault<z.ZodOptional<z.ZodString>>;
13
+ }, z.core.$strip>;
14
+ export type TriggerDeployInput = z.infer<typeof triggerDeployInput>;
15
+ export interface TriggerDeployResult {
16
+ success: boolean;
17
+ deploymentId?: string;
18
+ release?: {
19
+ id: string;
20
+ name: string;
21
+ version: string;
22
+ };
23
+ environment?: {
24
+ id: string;
25
+ name: string;
26
+ };
27
+ error?: string;
28
+ }
29
+ /**
30
+ * Trigger a deploy via the Veryfront API.
31
+ *
32
+ * Exported for standalone MCP server reuse.
33
+ */
34
+ export declare function triggerDeploy(input: TriggerDeployInput): Promise<TriggerDeployResult>;
35
+ export declare const vfTriggerDeploy: MCPTool<TriggerDeployInput, TriggerDeployResult>;
36
+ export {};
37
+ //# sourceMappingURL=deploy-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-tool.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/deploy-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AASzD,QAAA,MAAM,kBAAkB;;;;iBAUtB,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,WAAW,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAiE9B;AAED,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,kBAAkB,EAAE,mBAAmB,CAkB5E,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * MCP tool: vf_trigger_deploy
3
+ *
4
+ * Creates a release from a branch and deploys it to an environment.
5
+ * Wraps the same API calls used by the `vf deploy` CLI command.
6
+ */
7
+ import { z } from "zod";
8
+ import { getEnvironmentConfig } from "../../../src/config/index.js";
9
+ import { createApiClient, resolveConfig } from "../../shared/config.js";
10
+ import { createDeployment, createRelease, getEnvironmentByName, } from "../../commands/deploy/command.js";
11
+ const triggerDeployInput = z.object({
12
+ projectSlug: z.string().describe("The project slug to deploy. Example: 'my-app'."),
13
+ environment: z.string().optional().default("production").describe("Target environment name. Defaults to 'production'."),
14
+ branch: z.string().optional().default("main").describe("Git branch to create the release from. Defaults to 'main'."),
15
+ });
16
+ /**
17
+ * Trigger a deploy via the Veryfront API.
18
+ *
19
+ * Exported for standalone MCP server reuse.
20
+ */
21
+ export async function triggerDeploy(input) {
22
+ try {
23
+ const env = getEnvironmentConfig();
24
+ const apiToken = env.apiToken;
25
+ if (!apiToken) {
26
+ return {
27
+ success: false,
28
+ error: "Not authenticated. Run 'veryfront login' first.",
29
+ };
30
+ }
31
+ const config = await resolveConfig(undefined, {
32
+ ...env,
33
+ apiToken,
34
+ projectSlug: input.projectSlug,
35
+ });
36
+ const client = createApiClient(config);
37
+ const environment = await getEnvironmentByName(client, input.projectSlug, input.environment);
38
+ if (!environment) {
39
+ return {
40
+ success: false,
41
+ error: `Environment "${input.environment}" not found.`,
42
+ };
43
+ }
44
+ const release = await createRelease(client, input.projectSlug, {
45
+ branch: input.branch,
46
+ });
47
+ const deployment = await createDeployment(client, input.projectSlug, release.id, environment.id);
48
+ return {
49
+ success: true,
50
+ deploymentId: deployment.id,
51
+ release: { id: release.id, name: release.name, version: release.version },
52
+ environment: { id: environment.id, name: environment.name },
53
+ };
54
+ }
55
+ catch (error) {
56
+ const message = error instanceof Error ? error.message : String(error);
57
+ if (message.includes("Missing API token") ||
58
+ message.includes("Authentication required") ||
59
+ message.includes("401")) {
60
+ return {
61
+ success: false,
62
+ error: "Not authenticated. Run 'veryfront login' first.",
63
+ };
64
+ }
65
+ return { success: false, error: message };
66
+ }
67
+ }
68
+ export const vfTriggerDeploy = {
69
+ name: "vf_trigger_deploy",
70
+ title: "Trigger Deploy",
71
+ annotations: {
72
+ readOnlyHint: false,
73
+ destructiveHint: false,
74
+ idempotentHint: false,
75
+ openWorldHint: true,
76
+ },
77
+ description: "Use this when you need to deploy a project to an environment via the Veryfront API. " +
78
+ "Creates a release from the specified branch and deploys it to the target environment. " +
79
+ "Returns the deployment ID, release info, and environment info on success. " +
80
+ "Requires a valid API token (set VERYFRONT_API_TOKEN or run 'veryfront login'). " +
81
+ "Do not use for local builds — use vf_build instead. " +
82
+ "Do not use for running tests before deploy — use vf_run_tests instead.",
83
+ inputSchema: triggerDeployInput,
84
+ execute: (input) => triggerDeploy(input),
85
+ };
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.212",
3
+ "version": "0.1.214",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-browser-encoder.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,wBAAgB,6BAA6B,IAAI,uBAAuB,CAYvE;AAuND,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,EAAE,CA6M3B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,uBAAuB,EAAE,CA8B3B"}
1
+ {"version":3,"file":"ag-ui-browser-encoder.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,wBAAgB,6BAA6B,IAAI,uBAAuB,CAYvE;AAuND,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,EAAE,CAgN3B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,uBAAuB,EAAE,CA8B3B"}
@@ -344,6 +344,9 @@ export function mapRuntimeStreamEventToAgUiBrowserEvents(state, event) {
344
344
  },
345
345
  ];
346
346
  default:
347
+ if (typeof event.type === "string" && event.type.startsWith("data-")) {
348
+ return [createCustomDataEvent(event.type.slice(5), event.data)];
349
+ }
347
350
  return [];
348
351
  }
349
352
  }
@@ -1 +1 @@
1
- {"version":3,"file":"data-stream.d.ts","sourceRoot":"","sources":["../../../src/src/agent/data-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAMzE,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmB1E;AAED,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAwCvF;AAED,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAoBtF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiB5E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG;IACvD,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB,CAoBA;AAED,wBAAuB,sBAAsB,CAC3C,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,cAAc,CAAC,sBAAsB,CAAC,CAkCxC"}
1
+ {"version":3,"file":"data-stream.d.ts","sourceRoot":"","sources":["../../../src/src/agent/data-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAMzE,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmB1E;AAwBD,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAuDvF;AAED,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAoBtF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiB5E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG;IACvD,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB,CAoBA;AAED,wBAAuB,sBAAsB,CAC3C,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,cAAc,CAAC,sBAAsB,CAAC,CAkCxC"}
@@ -17,6 +17,27 @@ export function stripLeadingEmptyObjectPlaceholder(rawArgs) {
17
17
  }
18
18
  return normalized;
19
19
  }
20
+ /**
21
+ * Minimum overlap length at which `mergeToolInputDelta` will accept a
22
+ * tail-overlap as an intentional retransmission from the provider and
23
+ * dedup the leading chunk of the next delta.
24
+ *
25
+ * Empirically, overlaps of 1–3 characters are almost always coincidental
26
+ * in streamed JSON (e.g. `"`, `,`, `":`, `,"`). Accepting them as dedup
27
+ * causes silent character drops — the exact pathology observed in staging
28
+ * on 2026-04-15 where `create_file` tool calls arrived at the classifier
29
+ * with 2–5 chars missing from the middle of the buffer. Requiring at
30
+ * least 4 chars of overlap makes false matches vanishingly unlikely while
31
+ * still honoring the real "retransmitted content-suffix" case pinned by
32
+ * the existing "overlapping suffix dedup" regression test (which relies
33
+ * on a 6-char `Report` overlap).
34
+ *
35
+ * Similarly, short deltas (< 4 chars) are treated as append-mode
36
+ * regardless of what they look like: a 1-char delta literally cannot
37
+ * contain enough signal to distinguish retransmission from append, and
38
+ * we will not silently drop it.
39
+ */
40
+ const MIN_OVERLAP_DEDUP_LENGTH = 4;
20
41
  export function mergeToolInputDelta(currentArguments, nextDelta) {
21
42
  const normalizedDelta = nextDelta.trimStart();
22
43
  const candidateDeltas = normalizedDelta.startsWith('"')
@@ -35,15 +56,29 @@ export function mergeToolInputDelta(currentArguments, nextDelta) {
35
56
  if (currentArguments.length === 0) {
36
57
  return nextDelta;
37
58
  }
59
+ // Short deltas are trusted as append-mode. Retransmission at this size
60
+ // is indistinguishable from append and would produce more corruption
61
+ // than it prevents — see MIN_OVERLAP_DEDUP_LENGTH.
62
+ if (nextDelta.length < MIN_OVERLAP_DEDUP_LENGTH) {
63
+ return currentArguments + nextDelta;
64
+ }
38
65
  for (const candidate of candidateDeltas) {
39
- if (candidate === currentArguments || currentArguments.includes(candidate)) {
66
+ // Exact duplicate: the provider resent the same full buffer.
67
+ if (candidate === currentArguments) {
40
68
  return currentArguments;
41
69
  }
70
+ // Cumulative mode: the delta is a strict extension of the current
71
+ // buffer and supersedes it verbatim.
42
72
  if (candidate.startsWith(currentArguments)) {
43
73
  return candidate;
44
74
  }
75
+ // Tail retransmission: the provider resent a suffix of the current
76
+ // buffer as the prefix of the new delta. Only accept overlaps of
77
+ // MIN_OVERLAP_DEDUP_LENGTH or longer — trivial 1-3 char matches in
78
+ // streamed JSON are overwhelmingly coincidental and deduping them
79
+ // corrupts append-mode streams.
45
80
  const maxOverlap = Math.min(currentArguments.length, candidate.length);
46
- for (let overlap = maxOverlap; overlap > 0; overlap--) {
81
+ for (let overlap = maxOverlap; overlap >= MIN_OVERLAP_DEDUP_LENGTH; overlap--) {
47
82
  if (currentArguments.endsWith(candidate.slice(0, overlap))) {
48
83
  return currentArguments + candidate.slice(overlap);
49
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat-stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/chat-stream-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAqB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAYtF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,IAAI,CAAC;CACZ;AAyED,wBAAgB,iBAAiB,IAAI,eAAe,CAQnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,CAAC,EAAE,mBAAmB,EAC/B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC,CAuZf"}
1
+ {"version":3,"file":"chat-stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/chat-stream-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAqB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAYtF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,IAAI,CAAC;CACZ;AAyED,wBAAgB,iBAAiB,IAAI,eAAe,CAQnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,CAAC,EAAE,mBAAmB,EAC/B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC,CA+Zf"}
@@ -202,6 +202,13 @@ export function processStream(result, state, controller, encoder, textPartId, ca
202
202
  continue;
203
203
  }
204
204
  const typedPart = part;
205
+ if (typedPart.type.startsWith("data-")) {
206
+ sendSSE(controller, encoder, {
207
+ type: typedPart.type,
208
+ data: "data" in typedPart ? typedPart.data : undefined,
209
+ });
210
+ continue;
211
+ }
205
212
  switch (typedPart.type) {
206
213
  case "text-delta": {
207
214
  closeReasoningSegment();
@@ -58,6 +58,9 @@ export type RuntimeStreamPart = {
58
58
  } | {
59
59
  type: "reasoning-end";
60
60
  id: string;
61
+ } | {
62
+ type: `data-${string}`;
63
+ data: unknown;
61
64
  } | {
62
65
  type: "tool-input-start";
63
66
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-tool-types.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/runtime-tool-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACtC,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC1C,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IAC7C,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,MAAM,6BAA6B,GAAG,CAC1C,OAAO,EAAE,4BAA4B,KAClC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,qBAAqB,GAAG,IAAI,CAAC;AAE1E,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACrC;IACA,IAAI,EAAE,kBAAkB,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvD;IACA,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACC;IACA,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACC;IACA,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACC;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,IAAI,CAAC;CACV,GACC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACnC"}
1
+ {"version":3,"file":"runtime-tool-types.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/runtime-tool-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAML,KAAK,kBAAkB,EAIxB,MAAM,oCAAoC,CAAC;AAiB5C,eAAO,MAAM,WAAW,aAAyB,CAAC;AAElD,eAAO,MAAM,aAAa,aAAqD,CAAC;AAEhF,eAAO,MAAM,+BAA+B;;;;;;;;;;2BAc1C,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;iBAAgC,CAAC;AACvE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;2BAA+B,CAAC;AACrE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAA2B,CAAC;AAC7D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;6BAA2B,CAAC;AAC7D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA2B,CAAC;AAEnE,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;iBAMlD,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmB3C,CAAC;AAyKH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,GACtD,kBAAkB,CAWpB;AAED,eAAO,MAAM,kBAAkB;;;;;2BAU7B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACtD,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAML,KAAK,kBAAkB,EAIxB,MAAM,oCAAoC,CAAC;AAkB5C,eAAO,MAAM,WAAW,aAAyB,CAAC;AAElD,eAAO,MAAM,aAAa,aAAqD,CAAC;AAEhF,eAAO,MAAM,+BAA+B;;;;;;;;;;2BAc1C,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;iBAAgC,CAAC;AACvE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;2BAA+B,CAAC;AACrE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAA2B,CAAC;AAC7D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;6BAA2B,CAAC;AAC7D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA2B,CAAC;AAEnE,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;iBAMlD,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmB3C,CAAC;AAmMH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,GACtD,kBAAkB,CAWpB;AAED,eAAO,MAAM,kBAAkB;;;;;2BAU7B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACtD,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { AgUiRuntimeContextItemSchema, AgUiRuntimeContextSchema, AgUiRuntimeInjectedToolSchema, AgUiRuntimeMessageSchema, AgUiRuntimeRequestSchema, AgUiRuntimeRunIdSchema, } from "../agent/runtime-ag-ui-contract.js";
3
+ import { stripLeadingEmptyObjectPlaceholder } from "../agent/data-stream.js";
3
4
  const AGENT_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
4
5
  const MAX_FORWARDED_PROPS_BYTES = 65_536;
5
6
  const MAX_TOOL_RESULT_BYTES = 65_536;
@@ -56,10 +57,32 @@ export const InternalAgentStreamRequestSchema = z.object({
56
57
  });
57
58
  function extractToolArgs(part) {
58
59
  const args = part.args;
59
- if (args && typeof args === "object" && !Array.isArray(args)) {
60
+ if (args && typeof args === "object" && !Array.isArray(args) && Object.keys(args).length > 0) {
60
61
  return args;
61
62
  }
62
63
  const input = part.input;
64
+ if (input && typeof input === "object" && !Array.isArray(input) && Object.keys(input).length > 0) {
65
+ return input;
66
+ }
67
+ const inputText = part.inputText;
68
+ if (typeof inputText === "string" && inputText.length > 0) {
69
+ try {
70
+ const normalizedInputText = (() => {
71
+ const stripped = stripLeadingEmptyObjectPlaceholder(inputText);
72
+ return stripped.trimStart().startsWith('"') ? `{${stripped}` : stripped;
73
+ })();
74
+ const parsed = JSON.parse(normalizedInputText);
75
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
76
+ return parsed;
77
+ }
78
+ }
79
+ catch {
80
+ return {};
81
+ }
82
+ }
83
+ if (args && typeof args === "object" && !Array.isArray(args)) {
84
+ return args;
85
+ }
63
86
  if (input && typeof input === "object" && !Array.isArray(input)) {
64
87
  return input;
65
88
  }
@@ -18,6 +18,8 @@ export interface GoogleRuntimeConfig {
18
18
  name?: string;
19
19
  fetch?: typeof globalThis.fetch;
20
20
  }
21
+ export declare const TOOL_INPUT_PENDING_THRESHOLD_MS = 5000;
22
+ export declare function withToolInputStatusTransitions(stream: AsyncIterable<unknown>, thresholdMs?: number): AsyncIterable<unknown>;
21
23
  type ProviderKind = "anthropic" | "openai" | "google";
22
24
  /**
23
25
  * Structured warning emitted when a provider runtime drops or rewrites a
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-loader.d.ts","sourceRoot":"","sources":["../../../src/src/provider/runtime-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAqdD,KAAK,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAwBF;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE;QACnB,QAAQ,EAAE,YAAY,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;CAUF;AAED,4EAA4E;AAC5E,qBAAa,uBAAwB,SAAQ,aAAa;CAAG;AAE7D,mFAAmF;AACnF,qBAAa,sBAAuB,SAAQ,aAAa;CAAG;AAE5D,2DAA2D;AAC3D,qBAAa,kBAAmB,SAAQ,aAAa;CAAG;AAExD,6DAA6D;AAC7D,qBAAa,oBAAqB,SAAQ,aAAa;CAAG;AAqtE1D,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CA4Ed;AA4jBD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CA4Ed;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,MAAM,GACd,YAAY,CA4Ed;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAwEd;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CA2ClB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CAiDlB"}
1
+ {"version":3,"file":"runtime-loader.d.ts","sourceRoot":"","sources":["../../../src/src/provider/runtime-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAuWD,eAAO,MAAM,+BAA+B,OAAQ,CAAC;AAoDrD,wBAAuB,8BAA8B,CACnD,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,WAAW,SAAkC,GAC5C,aAAa,CAAC,OAAO,CAAC,CAgJxB;AA+GD,KAAK,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAwBF;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE;QACnB,QAAQ,EAAE,YAAY,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;CAUF;AAED,4EAA4E;AAC5E,qBAAa,uBAAwB,SAAQ,aAAa;CAAG;AAE7D,mFAAmF;AACnF,qBAAa,sBAAuB,SAAQ,aAAa;CAAG;AAE5D,2DAA2D;AAC3D,qBAAa,kBAAmB,SAAQ,aAAa;CAAG;AAExD,6DAA6D;AAC7D,qBAAa,oBAAqB,SAAQ,aAAa;CAAG;AAqtE1D,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CA8Ed;AA4jBD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CA8Ed;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,MAAM,GACd,YAAY,CA8Ed;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CA0Ed;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CA2ClB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CAiDlB"}