veryfront 0.1.154 → 0.1.156

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.
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/files/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,KAAK,eAAe,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAAC;AAK7F,OAAO,EAAE,KAAK,SAAS,EAA0C,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAkB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlE,KAAK,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,QAAA,MAAM,mBAAmB;;;;;;iBAMvB,CAAC;AAEH,QAAA,MAAM,kBAAkB;;;;;;;iBAOtB,CAAC;AAEH,QAAA,MAAM,kBAAkB;;;;;;;iBAOtB,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;iBAMzB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AA4CvE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,GACf,eAAe,CAAC,gBAAgB,CAAC,CAQnC;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,GACf,eAAe,CAAC,eAAe,CAAC,CASlC;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,GACf,eAAe,CAAC,eAAe,CAAC,CASlC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,GACf,eAAe,CAAC,kBAAkB,CAAC,CAQrC;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGlF;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAM,GAC3C,OAAO,CAAC,eAAe,EAAE,CAAC,CAI5B;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAO3B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA2IlE"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/files/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,KAAK,eAAe,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAAC;AAK7F,OAAO,EAAE,KAAK,SAAS,EAA0C,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAkB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlE,KAAK,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,QAAA,MAAM,mBAAmB;;;;;;iBAMvB,CAAC;AAEH,QAAA,MAAM,kBAAkB;;;;;;;iBAOtB,CAAC;AAEH,QAAA,MAAM,kBAAkB;;;;;;;iBAOtB,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;iBAMzB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAoCvE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,GACf,eAAe,CAAC,gBAAgB,CAAC,CAQnC;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,GACf,eAAe,CAAC,eAAe,CAAC,CASlC;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,GACf,eAAe,CAAC,eAAe,CAAC,CASlC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,GACf,eAAe,CAAC,kBAAkB,CAAC,CAQrC;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGlF;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAM,GAC3C,OAAO,CAAC,eAAe,EAAE,CAAC,CAI5B;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAO3B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA2IlE"}
@@ -4,6 +4,7 @@ import { dirname, normalize } from "../../../src/platform/compat/path/index.js";
4
4
  import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
5
5
  import { cliLogger } from "../../utils/index.js";
6
6
  import { createApiClient, resolveConfigWithAuth } from "../../shared/config.js";
7
+ import { getStringArg } from "../../shared/parsed-args.js";
7
8
  import { getFileContent, listAllFiles } from "../pull/command.js";
8
9
  const MAIN_SOURCE = { type: "main" };
9
10
  const FilesListArgsSchema = z.object({
@@ -36,14 +37,6 @@ const FilesDeleteArgsSchema = z.object({
36
37
  json: z.boolean().default(false),
37
38
  quiet: z.boolean().default(false),
38
39
  });
39
- function getStringArg(args, ...keys) {
40
- for (const key of keys) {
41
- const value = args[key];
42
- if (typeof value === "string" && value)
43
- return value;
44
- }
45
- return undefined;
46
- }
47
40
  function getBooleanArg(args, ...keys) {
48
41
  return keys.some((key) => Boolean(args[key]));
49
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/issues/command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA0GxD,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6PnE"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/issues/command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkGxD,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8PnE"}
@@ -7,15 +7,7 @@ import { cwd } from "../../../src/platform/index.js";
7
7
  import { cliLogger } from "../../utils/index.js";
8
8
  import { createIssuesManager, parseState } from "../../../src/issues/index.js";
9
9
  import { bold, muted, success } from "../../ui/index.js";
10
- /** Extract a string value from parsed args by checking multiple keys */
11
- function str(args, ...keys) {
12
- for (const k of keys) {
13
- const v = args[k];
14
- if (typeof v === "string" && v)
15
- return v;
16
- }
17
- return undefined;
18
- }
10
+ import { getStringArg } from "../../shared/parsed-args.js";
19
11
  /** Extract a boolean value from parsed args by checking multiple keys */
20
12
  function bool(args, ...keys) {
21
13
  for (const k of keys) {
@@ -103,17 +95,17 @@ export async function issuesCommand(args) {
103
95
  const verbose = Boolean(args.verbose || args.v);
104
96
  switch (subcommand) {
105
97
  case "create": {
106
- const title = str(args, "title", "t") || getId(args, 2);
98
+ const title = getStringArg(args, "title", "t") || getId(args, 2);
107
99
  if (!title) {
108
100
  throw new Error("Title is required. Usage: veryfront issues create --title 'My issue'");
109
101
  }
110
102
  const issue = await manager.create({
111
103
  title,
112
- body: str(args, "body", "b"),
113
- labels: parseLabels(str(args, "labels", "l")),
114
- milestone: str(args, "milestone", "m"),
115
- assignees: parseLabels(str(args, "assignees", "a")),
116
- prefix: getPrefix(str(args, "prefix"), "ISSUE"),
104
+ body: getStringArg(args, "body", "b"),
105
+ labels: parseLabels(getStringArg(args, "labels", "l")),
106
+ milestone: getStringArg(args, "milestone", "m"),
107
+ assignees: parseLabels(getStringArg(args, "assignees", "a")),
108
+ prefix: getPrefix(getStringArg(args, "prefix"), "ISSUE"),
117
109
  });
118
110
  if (json) {
119
111
  printJson(issue);
@@ -125,15 +117,16 @@ export async function issuesCommand(args) {
125
117
  }
126
118
  case "list":
127
119
  case "ls": {
128
- const stateArg = str(args, "state");
120
+ const stateArg = getStringArg(args, "state");
129
121
  const result = await manager.list({
130
122
  state: stateArg ? parseState(stateArg) ?? undefined : undefined,
131
- labels: parseLabels(str(args, "labels", "l")),
132
- milestone: str(args, "milestone", "m"),
133
- assignee: str(args, "assignee"),
134
- prefix: getPrefix(str(args, "prefix")),
135
- sortBy: str(args, "sort") || "created_at",
136
- sortDirection: str(args, "dir") || "desc",
123
+ labels: parseLabels(getStringArg(args, "labels", "l")),
124
+ milestone: getStringArg(args, "milestone", "m"),
125
+ assignee: getStringArg(args, "assignee"),
126
+ prefix: getPrefix(getStringArg(args, "prefix")),
127
+ sortBy: getStringArg(args, "sort") ||
128
+ "created_at",
129
+ sortDirection: getStringArg(args, "dir") || "desc",
137
130
  limit: num(args, "limit"),
138
131
  });
139
132
  if (json) {
@@ -184,25 +177,25 @@ export async function issuesCommand(args) {
184
177
  return;
185
178
  }
186
179
  const updates = {};
187
- const title = str(args, "title", "t");
180
+ const title = getStringArg(args, "title", "t");
188
181
  if (title)
189
182
  updates.title = title;
190
- const body = str(args, "body", "b");
183
+ const body = getStringArg(args, "body", "b");
191
184
  if (body)
192
185
  updates.body = body;
193
- const stateArg = str(args, "state");
186
+ const stateArg = getStringArg(args, "state");
194
187
  if (stateArg) {
195
188
  const state = parseState(stateArg);
196
189
  if (state)
197
190
  updates.state = state;
198
191
  }
199
- const labels = parseLabels(str(args, "labels", "l"));
192
+ const labels = parseLabels(getStringArg(args, "labels", "l"));
200
193
  if (labels)
201
194
  updates.labels = labels;
202
- const assignees = parseLabels(str(args, "assignees", "a"));
195
+ const assignees = parseLabels(getStringArg(args, "assignees", "a"));
203
196
  if (assignees)
204
197
  updates.assignees = assignees;
205
- const milestone = str(args, "milestone", "m");
198
+ const milestone = getStringArg(args, "milestone", "m");
206
199
  if (milestone)
207
200
  updates.milestone = milestone;
208
201
  if (!Object.keys(updates).length) {
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/command.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { basename, extname, join, normalize, relative } from "../../../src/platf
5
5
  import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
6
6
  import { cliLogger } from "../../utils/index.js";
7
7
  import { createApiClient, resolveConfigWithAuth } from "../../shared/config.js";
8
+ import { getStringArg } from "../../shared/parsed-args.js";
8
9
  import { downloadUploadToFile, listAllUploads } from "../uploads/command.js";
9
10
  import { putRemoteFileFromLocal } from "../files/command.js";
10
11
  import { knowledgeIngestPythonSource } from "./parser-source.js";
@@ -60,14 +61,6 @@ const KnowledgeIngestArgsSchema = z.object({
60
61
  });
61
62
  }
62
63
  });
63
- function getStringArg(args, ...keys) {
64
- for (const key of keys) {
65
- const value = args[key];
66
- if (typeof value === "string" && value)
67
- return value;
68
- }
69
- return undefined;
70
- }
71
64
  function getBooleanArg(args, ...keys) {
72
65
  return keys.some((key) => Boolean(args[key]));
73
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/uploads/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/uploads/command.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { dirname, join, normalize, resolve } from "../../../src/platform/compat/
5
5
  import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
6
6
  import { cliLogger } from "../../utils/index.js";
7
7
  import { createApiClient, resolveConfigWithAuth } from "../../shared/config.js";
8
+ import { getStringArg } from "../../shared/parsed-args.js";
8
9
  const UploadListArgsSchema = z.object({
9
10
  projectSlug: z.string().optional(),
10
11
  projectDir: z.string().optional(),
@@ -40,14 +41,6 @@ const UploadDeleteArgsSchema = z.object({
40
41
  json: z.boolean().default(false),
41
42
  quiet: z.boolean().default(false),
42
43
  });
43
- function getStringArg(args, ...keys) {
44
- for (const key of keys) {
45
- const value = args[key];
46
- if (typeof value === "string" && value)
47
- return value;
48
- }
49
- return undefined;
50
- }
51
44
  function getBooleanArg(args, ...keys) {
52
45
  return keys.some((key) => Boolean(args[key]));
53
46
  }
@@ -0,0 +1,3 @@
1
+ import type { ParsedArgs } from "./types.js";
2
+ export declare function getStringArg(args: ParsedArgs, ...keys: string[]): string | undefined;
3
+ //# sourceMappingURL=parsed-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsed-args.d.ts","sourceRoot":"","sources":["../../../src/cli/shared/parsed-args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAMpF"}
@@ -0,0 +1,8 @@
1
+ export function getStringArg(args, ...keys) {
2
+ for (const key of keys) {
3
+ const value = args[key];
4
+ if (typeof value === "string" && value)
5
+ return value;
6
+ }
7
+ return undefined;
8
+ }
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.154",
3
+ "version": "0.1.156",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -1,6 +1,7 @@
1
1
  import * as dntShim from "../../_dnt.shims.js";
2
2
  import { z } from "zod";
3
3
  import type { Agent } from "./types.js";
4
+ import { type RunResumeSessionManager } from "./runtime/index.js";
4
5
  declare const AgUiInjectedToolSchema: z.ZodObject<{
5
6
  name: z.ZodString;
6
7
  description: z.ZodOptional<z.ZodString>;
@@ -65,8 +66,13 @@ export declare const AgUiRequestSchema: z.ZodObject<{
65
66
  export type AgUiInjectedTool = z.infer<typeof AgUiInjectedToolSchema>;
66
67
  export type AgUiContextItem = z.infer<typeof AgUiContextItemSchema>;
67
68
  export type AgUiRequest = z.infer<typeof AgUiRequestSchema>;
69
+ type AgUiResumeValue = {
70
+ result: unknown;
71
+ isError: boolean;
72
+ };
68
73
  export interface AgUiHandlerOptions {
69
74
  context?: Record<string, unknown> | ((request: dntShim.Request) => Record<string, unknown> | Promise<Record<string, unknown>>);
75
+ sessionManager?: RunResumeSessionManager<AgUiResumeValue>;
70
76
  }
71
77
  export interface AgUiHandlerConfigWithAgent extends AgUiHandlerOptions {
72
78
  agent: Agent;
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-handler.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,KAAK,EAAW,MAAM,YAAY,CAAC;AAoCjD,QAAA,MAAM,sBAAsB;;;;iBAO1B,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;2BAqBzB,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;AAoQ5D,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAChG;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,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,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":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,KAAK,EAAW,MAAM,YAAY,CAAC;AACjD,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAsC5B,QAAA,MAAM,sBAAsB;;;;iBAO1B,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;2BAqBzB,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;AAG5D,KAAK,eAAe,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AA4Y7D,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/F,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,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import * as dntShim from "../../_dnt.shims.js";
2
2
  import { z } from "zod";
3
3
  import { getAgent } from "./composition/index.js";
4
+ import { AgentRuntime, RunAlreadyExistsError, } from "./runtime/index.js";
4
5
  import { INVALID_ARGUMENT } from "../errors/index.js";
6
+ import { SKILL_TOOL_IDS } from "../skill/types.js";
7
+ import { toolRegistry } from "../tool/index.js";
5
8
  import { createStreamTransformState, finalizeRunEvents, formatAgUiEvent, mapRuntimeEventToAgUi, parseSseJsonEvents, } from "../internal-agents/ag-ui-sse.js";
6
9
  const AGENT_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
7
10
  const MAX_TOOL_PARAMETERS_BYTES = 16_384;
@@ -194,25 +197,15 @@ function enqueueEvent(controller, event, payload) {
194
197
  return false;
195
198
  }
196
199
  }
197
- async function createAgUiStreamResponse(agent, request, baseContext) {
198
- const threadId = request.threadId ?? dntShim.crypto.randomUUID();
199
- const runId = request.runId ?? generateRunId();
200
- await agent.clearMemory();
201
- const result = await agent.stream({
202
- messages: normalizeMessages(request.messages),
203
- context: buildStreamContext(request, baseContext, threadId, runId),
204
- ...(request.model ? { model: request.model } : {}),
205
- ...(request.maxOutputTokens ? { maxOutputTokens: request.maxOutputTokens } : {}),
206
- });
207
- const upstream = result.toDataStreamResponse();
208
- const upstreamBody = upstream.body;
200
+ async function createAgUiStreamResponse(options) {
201
+ const { agentId, request, runId, threadId, upstreamBody, upstreamStatus, upstreamStatusText, onFinish, onError, } = options;
209
202
  const stream = new ReadableStream({
210
203
  start: async (controller) => {
211
204
  const state = createStreamTransformState();
212
205
  let reader = null;
213
206
  let remainder = "";
214
207
  const decoder = new TextDecoder();
215
- if (!enqueueEvent(controller, "RunStarted", { runId, threadId, agentId: agent.id })) {
208
+ if (!enqueueEvent(controller, "RunStarted", { runId, threadId, agentId })) {
216
209
  return;
217
210
  }
218
211
  if (!enqueueEvent(controller, "StateSnapshot", { snapshot: {} })) {
@@ -228,6 +221,7 @@ async function createAgUiStreamResponse(agent, request, baseContext) {
228
221
  return;
229
222
  }
230
223
  }
224
+ onFinish?.();
231
225
  closeController(controller);
232
226
  return;
233
227
  }
@@ -261,8 +255,10 @@ async function createAgUiStreamResponse(agent, request, baseContext) {
261
255
  return;
262
256
  }
263
257
  }
258
+ onFinish?.();
264
259
  }
265
260
  catch (error) {
261
+ onError?.(error);
266
262
  enqueueEvent(controller, "RunError", {
267
263
  message: error instanceof Error ? error.message : "Agent run failed",
268
264
  });
@@ -274,11 +270,105 @@ async function createAgUiStreamResponse(agent, request, baseContext) {
274
270
  },
275
271
  });
276
272
  return new dntShim.Response(stream, {
277
- status: upstream.status,
278
- statusText: upstream.statusText,
273
+ status: upstreamStatus,
274
+ statusText: upstreamStatusText,
279
275
  headers: { ...AG_UI_HEADERS },
280
276
  });
281
277
  }
278
+ async function createAgUiDirectStreamResponse(agent, request, baseContext) {
279
+ const threadId = request.threadId ?? dntShim.crypto.randomUUID();
280
+ const runId = request.runId ?? generateRunId();
281
+ await agent.clearMemory();
282
+ const result = await agent.stream({
283
+ messages: normalizeMessages(request.messages),
284
+ context: buildStreamContext(request, baseContext, threadId, runId),
285
+ ...(request.model ? { model: request.model } : {}),
286
+ ...(request.maxOutputTokens ? { maxOutputTokens: request.maxOutputTokens } : {}),
287
+ });
288
+ const upstream = result.toDataStreamResponse();
289
+ return await createAgUiStreamResponse({
290
+ agentId: agent.id,
291
+ request,
292
+ runId,
293
+ threadId,
294
+ upstreamBody: upstream.body,
295
+ upstreamStatus: upstream.status,
296
+ upstreamStatusText: upstream.statusText,
297
+ });
298
+ }
299
+ function createInjectedAgUiTool(runId, tool, sessionManager) {
300
+ return {
301
+ id: tool.name,
302
+ type: "function",
303
+ description: tool.description ?? tool.name,
304
+ inputSchema: z.record(z.string(), z.unknown()),
305
+ inputSchemaJson: (tool.parameters ??
306
+ { type: "object", properties: {}, additionalProperties: true }),
307
+ execute: async (_input, context) => {
308
+ const toolCallId = typeof context?.toolCallId === "string" ? context.toolCallId : null;
309
+ if (!toolCallId) {
310
+ throw new Error(`Missing toolCallId for injected tool "${tool.name}"`);
311
+ }
312
+ const submitted = await sessionManager.waitForSignal(runId, toolCallId);
313
+ if (submitted.isError) {
314
+ throw new Error(typeof submitted.result === "string"
315
+ ? submitted.result
316
+ : JSON.stringify(submitted.result));
317
+ }
318
+ return submitted.result;
319
+ },
320
+ };
321
+ }
322
+ async function createAgUiInjectedToolsStreamResponse(agent, request, baseContext, sessionManager) {
323
+ const threadId = request.threadId ?? dntShim.crypto.randomUUID();
324
+ const runId = request.runId ?? generateRunId();
325
+ try {
326
+ sessionManager.startRun({ runId, threadId });
327
+ }
328
+ catch (error) {
329
+ if (error instanceof RunAlreadyExistsError) {
330
+ return dntShim.Response.json({ error: "Run already active" }, { status: 409 });
331
+ }
332
+ throw error;
333
+ }
334
+ const injectedTools = Object.fromEntries(request.tools.map((tool) => [tool.name, createInjectedAgUiTool(runId, tool, sessionManager)]));
335
+ const mergedTools = !agent.config.tools
336
+ ? injectedTools
337
+ : agent.config.tools === true
338
+ ? {
339
+ ...Object.fromEntries([...toolRegistry.getAll()]
340
+ .filter(([toolId]) => agent.config.skills || !SKILL_TOOL_IDS.has(toolId))
341
+ .map(([toolId]) => [toolId, true])),
342
+ ...injectedTools,
343
+ }
344
+ : { ...agent.config.tools, ...injectedTools };
345
+ const runtime = new AgentRuntime(agent.id, {
346
+ ...agent.config,
347
+ tools: mergedTools,
348
+ });
349
+ let upstreamBody;
350
+ try {
351
+ upstreamBody = await runtime.stream(normalizeMessages(request.messages), buildStreamContext(request, baseContext, threadId, runId), undefined, request.model, request.maxOutputTokens);
352
+ }
353
+ catch (error) {
354
+ sessionManager.failRun(runId);
355
+ throw error;
356
+ }
357
+ return await createAgUiStreamResponse({
358
+ agentId: agent.id,
359
+ request,
360
+ runId,
361
+ threadId,
362
+ upstreamBody,
363
+ upstreamStatus: 200,
364
+ onFinish: () => {
365
+ sessionManager.completeRun(runId);
366
+ },
367
+ onError: () => {
368
+ sessionManager.failRun(runId);
369
+ },
370
+ });
371
+ }
282
372
  function mergeConfig(config, options) {
283
373
  if (!options)
284
374
  return config;
@@ -310,14 +400,20 @@ export function createAgUiHandler(agentIdOrConfig, options) {
310
400
  try {
311
401
  const parsed = AgUiRequestSchema.parse(await request.json());
312
402
  if (parsed.tools.length > 0) {
313
- return dntShim.Response.json({
314
- error: "Injected AG-UI tools are not supported by createAgUiHandler yet. Use package-level wait/resume runtime primitives instead.",
315
- }, { status: 501 });
403
+ if (!options?.sessionManager) {
404
+ return dntShim.Response.json({
405
+ error: "Injected AG-UI tools require a public RunResumeSessionManager on createAgUiHandler().",
406
+ }, { status: 501 });
407
+ }
408
+ const context = typeof options?.context === "function"
409
+ ? await options.context(request)
410
+ : options?.context ?? {};
411
+ return await createAgUiInjectedToolsStreamResponse(agent, parsed, context, options.sessionManager);
316
412
  }
317
413
  const context = typeof options?.context === "function"
318
414
  ? await options.context(request)
319
415
  : options?.context ?? {};
320
- return await createAgUiStreamResponse(agent, parsed, context);
416
+ return await createAgUiDirectStreamResponse(agent, parsed, context);
321
417
  }
322
418
  catch (error) {
323
419
  if (error instanceof z.ZodError) {
@@ -69,6 +69,7 @@ export declare class ErrorCollector {
69
69
  * @param slug Error slug from registry (optional)
70
70
  */
71
71
  addRuntimeError(message: string, stack?: string, context?: Record<string, unknown>, slug?: string): DevError;
72
+ private addFileContextError;
72
73
  /**
73
74
  * Add a bundle error
74
75
  * @param message Error message
@@ -1 +1 @@
1
- {"version":3,"file":"error-collector.d.ts","sourceRoot":"","sources":["../../../src/src/observability/error-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-collector.d.ts","sourceRoot":"","sources":["../../../src/src/observability/error-collector.ts"],"names":[],"mappings":"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"}
@@ -79,6 +79,9 @@ export class ErrorCollector {
79
79
  addRuntimeError(message, stack, context, slug) {
80
80
  return this.addTypedError("runtime", message, { stack, context, slug });
81
81
  }
82
+ addFileContextError(type, message, file, context, slug) {
83
+ return this.addTypedError(type, message, { file, context, slug });
84
+ }
82
85
  /**
83
86
  * Add a bundle error
84
87
  * @param message Error message
@@ -87,7 +90,7 @@ export class ErrorCollector {
87
90
  * @param slug Error slug from registry (optional)
88
91
  */
89
92
  addBundleError(message, file, context, slug) {
90
- return this.addTypedError("bundle", message, { file, context, slug });
93
+ return this.addFileContextError("bundle", message, file, context, slug);
91
94
  }
92
95
  /**
93
96
  * Add an HMR error
@@ -97,7 +100,7 @@ export class ErrorCollector {
97
100
  * @param slug Error slug from registry (optional)
98
101
  */
99
102
  addHMRError(message, file, context, slug) {
100
- return this.addTypedError("hmr", message, { file, context, slug });
103
+ return this.addFileContextError("hmr", message, file, context, slug);
101
104
  }
102
105
  /**
103
106
  * Add a module error
@@ -107,7 +110,7 @@ export class ErrorCollector {
107
110
  * @param slug Error slug from registry (optional)
108
111
  */
109
112
  addModuleError(message, file, context, slug) {
110
- return this.addTypedError("module", message, { file, context, slug });
113
+ return this.addFileContextError("module", message, file, context, slug);
111
114
  }
112
115
  getAll(filter) {
113
116
  const errors = Array.from(this.errors.values());
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.154";
1
+ export declare const VERSION = "0.1.156";
2
2
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
- export const VERSION = "0.1.154";
3
+ export const VERSION = "0.1.156";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.154",
3
+ "version": "0.1.156",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",
@@ -6,6 +6,7 @@ import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
6
6
  import { cliLogger } from "../../utils/index.js";
7
7
  import { type ApiClient, createApiClient, resolveConfigWithAuth } from "../../shared/config.js";
8
8
  import type { ParsedArgs } from "../../shared/types.js";
9
+ import { getStringArg } from "../../shared/parsed-args.js";
9
10
  import { getFileContent, listAllFiles } from "../pull/command.js";
10
11
 
11
12
  const MAIN_SOURCE = { type: "main" } as const;
@@ -51,14 +52,6 @@ export type FilesGetOptions = z.infer<typeof FilesGetArgsSchema>;
51
52
  export type FilesPutOptions = z.infer<typeof FilesPutArgsSchema>;
52
53
  export type FilesDeleteOptions = z.infer<typeof FilesDeleteArgsSchema>;
53
54
 
54
- function getStringArg(args: ParsedArgs, ...keys: string[]): string | undefined {
55
- for (const key of keys) {
56
- const value = args[key];
57
- if (typeof value === "string" && value) return value;
58
- }
59
- return undefined;
60
- }
61
-
62
55
  function getBooleanArg(args: ParsedArgs, ...keys: string[]): boolean {
63
56
  return keys.some((key) => Boolean(args[key]));
64
57
  }
@@ -10,15 +10,7 @@ import { createIssuesManager, type Issue, type IssuePrefix, parseState } from ".
10
10
  import { bold, muted, success } from "../../ui/index.js";
11
11
 
12
12
  import type { ParsedArgs } from "../../shared/types.js";
13
-
14
- /** Extract a string value from parsed args by checking multiple keys */
15
- function str(args: ParsedArgs, ...keys: string[]): string | undefined {
16
- for (const k of keys) {
17
- const v = args[k];
18
- if (typeof v === "string" && v) return v;
19
- }
20
- return undefined;
21
- }
13
+ import { getStringArg } from "../../shared/parsed-args.js";
22
14
 
23
15
  /** Extract a boolean value from parsed args by checking multiple keys */
24
16
  function bool(args: ParsedArgs, ...keys: string[]): boolean {
@@ -123,18 +115,18 @@ export async function issuesCommand(args: ParsedArgs): Promise<void> {
123
115
 
124
116
  switch (subcommand) {
125
117
  case "create": {
126
- const title = str(args, "title", "t") || getId(args, 2);
118
+ const title = getStringArg(args, "title", "t") || getId(args, 2);
127
119
  if (!title) {
128
120
  throw new Error("Title is required. Usage: veryfront issues create --title 'My issue'");
129
121
  }
130
122
 
131
123
  const issue = await manager.create({
132
124
  title,
133
- body: str(args, "body", "b"),
134
- labels: parseLabels(str(args, "labels", "l")),
135
- milestone: str(args, "milestone", "m"),
136
- assignees: parseLabels(str(args, "assignees", "a")),
137
- prefix: getPrefix(str(args, "prefix"), "ISSUE")!,
125
+ body: getStringArg(args, "body", "b"),
126
+ labels: parseLabels(getStringArg(args, "labels", "l")),
127
+ milestone: getStringArg(args, "milestone", "m"),
128
+ assignees: parseLabels(getStringArg(args, "assignees", "a")),
129
+ prefix: getPrefix(getStringArg(args, "prefix"), "ISSUE")!,
138
130
  });
139
131
 
140
132
  if (json) {
@@ -149,15 +141,16 @@ export async function issuesCommand(args: ParsedArgs): Promise<void> {
149
141
 
150
142
  case "list":
151
143
  case "ls": {
152
- const stateArg = str(args, "state");
144
+ const stateArg = getStringArg(args, "state");
153
145
  const result = await manager.list({
154
146
  state: stateArg ? parseState(stateArg) ?? undefined : undefined,
155
- labels: parseLabels(str(args, "labels", "l")),
156
- milestone: str(args, "milestone", "m"),
157
- assignee: str(args, "assignee"),
158
- prefix: getPrefix(str(args, "prefix")),
159
- sortBy: (str(args, "sort") as "created_at" | "updated_at" | "id") || "created_at",
160
- sortDirection: (str(args, "dir") as "asc" | "desc") || "desc",
147
+ labels: parseLabels(getStringArg(args, "labels", "l")),
148
+ milestone: getStringArg(args, "milestone", "m"),
149
+ assignee: getStringArg(args, "assignee"),
150
+ prefix: getPrefix(getStringArg(args, "prefix")),
151
+ sortBy: (getStringArg(args, "sort") as "created_at" | "updated_at" | "id") ||
152
+ "created_at",
153
+ sortDirection: (getStringArg(args, "dir") as "asc" | "desc") || "desc",
161
154
  limit: num(args, "limit"),
162
155
  });
163
156
 
@@ -221,25 +214,25 @@ export async function issuesCommand(args: ParsedArgs): Promise<void> {
221
214
 
222
215
  const updates: Parameters<typeof manager.update>[1] = {};
223
216
 
224
- const title = str(args, "title", "t");
217
+ const title = getStringArg(args, "title", "t");
225
218
  if (title) updates.title = title;
226
219
 
227
- const body = str(args, "body", "b");
220
+ const body = getStringArg(args, "body", "b");
228
221
  if (body) updates.body = body;
229
222
 
230
- const stateArg = str(args, "state");
223
+ const stateArg = getStringArg(args, "state");
231
224
  if (stateArg) {
232
225
  const state = parseState(stateArg);
233
226
  if (state) updates.state = state;
234
227
  }
235
228
 
236
- const labels = parseLabels(str(args, "labels", "l"));
229
+ const labels = parseLabels(getStringArg(args, "labels", "l"));
237
230
  if (labels) updates.labels = labels;
238
231
 
239
- const assignees = parseLabels(str(args, "assignees", "a"));
232
+ const assignees = parseLabels(getStringArg(args, "assignees", "a"));
240
233
  if (assignees) updates.assignees = assignees;
241
234
 
242
- const milestone = str(args, "milestone", "m");
235
+ const milestone = getStringArg(args, "milestone", "m");
243
236
  if (milestone) updates.milestone = milestone;
244
237
 
245
238
  if (!Object.keys(updates).length) {
@@ -7,6 +7,7 @@ import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
7
7
  import { cliLogger } from "../../utils/index.js";
8
8
  import { type ApiClient, createApiClient, resolveConfigWithAuth } from "../../shared/config.js";
9
9
  import type { ParsedArgs } from "../../shared/types.js";
10
+ import { getStringArg } from "../../shared/parsed-args.js";
10
11
  import { downloadUploadToFile, listAllUploads, type UploadItem } from "../uploads/command.js";
11
12
  import { putRemoteFileFromLocal } from "../files/command.js";
12
13
  import { knowledgeIngestPythonSource } from "./parser-source.js";
@@ -110,14 +111,6 @@ const KnowledgeIngestArgsSchema = z.object({
110
111
 
111
112
  export type KnowledgeIngestOptions = z.infer<typeof KnowledgeIngestArgsSchema>;
112
113
 
113
- function getStringArg(args: ParsedArgs, ...keys: string[]): string | undefined {
114
- for (const key of keys) {
115
- const value = args[key];
116
- if (typeof value === "string" && value) return value;
117
- }
118
- return undefined;
119
- }
120
-
121
114
  function getBooleanArg(args: ParsedArgs, ...keys: string[]): boolean {
122
115
  return keys.some((key) => Boolean(args[key]));
123
116
  }
@@ -8,6 +8,7 @@ import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
8
8
  import { cliLogger } from "../../utils/index.js";
9
9
  import { type ApiClient, createApiClient, resolveConfigWithAuth } from "../../shared/config.js";
10
10
  import type { ParsedArgs } from "../../shared/types.js";
11
+ import { getStringArg } from "../../shared/parsed-args.js";
11
12
 
12
13
  export interface UploadItem {
13
14
  type: "file" | "folder";
@@ -88,14 +89,6 @@ const UploadDeleteArgsSchema = z.object({
88
89
 
89
90
  export type UploadDeleteOptions = z.infer<typeof UploadDeleteArgsSchema>;
90
91
 
91
- function getStringArg(args: ParsedArgs, ...keys: string[]): string | undefined {
92
- for (const key of keys) {
93
- const value = args[key];
94
- if (typeof value === "string" && value) return value;
95
- }
96
- return undefined;
97
- }
98
-
99
92
  function getBooleanArg(args: ParsedArgs, ...keys: string[]): boolean {
100
93
  return keys.some((key) => Boolean(args[key]));
101
94
  }
@@ -0,0 +1,9 @@
1
+ import type { ParsedArgs } from "./types.js";
2
+
3
+ export function getStringArg(args: ParsedArgs, ...keys: string[]): string | undefined {
4
+ for (const key of keys) {
5
+ const value = args[key];
6
+ if (typeof value === "string" && value) return value;
7
+ }
8
+ return undefined;
9
+ }
package/src/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.154",
3
+ "version": "0.1.156",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -2,7 +2,14 @@ import * as dntShim from "../../_dnt.shims.js";
2
2
  import { z } from "zod";
3
3
  import { getAgent } from "./composition/index.js";
4
4
  import type { Agent, Message } from "./types.js";
5
+ import {
6
+ AgentRuntime,
7
+ RunAlreadyExistsError,
8
+ type RunResumeSessionManager,
9
+ } from "./runtime/index.js";
5
10
  import { INVALID_ARGUMENT } from "../errors/index.js";
11
+ import { SKILL_TOOL_IDS } from "../skill/types.js";
12
+ import { type Tool, toolRegistry } from "../tool/index.js";
6
13
  import {
7
14
  createStreamTransformState,
8
15
  finalizeRunEvents,
@@ -101,6 +108,7 @@ export type AgUiContextItem = z.infer<typeof AgUiContextItemSchema>;
101
108
  export type AgUiRequest = z.infer<typeof AgUiRequestSchema>;
102
109
 
103
110
  type AgUiRuntimePart = Record<string, unknown> & { type: string };
111
+ type AgUiResumeValue = { result: unknown; isError: boolean };
104
112
 
105
113
  function isRecord(value: unknown): value is Record<string, unknown> {
106
114
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -259,24 +267,29 @@ function enqueueEvent(
259
267
  }
260
268
 
261
269
  async function createAgUiStreamResponse(
262
- agent: Agent,
263
- request: AgUiRequest,
264
- baseContext: Record<string, unknown>,
270
+ options: {
271
+ agentId: string;
272
+ request: AgUiRequest;
273
+ runId: string;
274
+ threadId: string;
275
+ upstreamBody: ReadableStream<Uint8Array> | null;
276
+ upstreamStatus: number;
277
+ upstreamStatusText?: string;
278
+ onFinish?: () => void;
279
+ onError?: (error: unknown) => void;
280
+ },
265
281
  ): Promise<dntShim.Response> {
266
- const threadId = request.threadId ?? dntShim.crypto.randomUUID();
267
- const runId = request.runId ?? generateRunId();
268
-
269
- await agent.clearMemory();
270
-
271
- const result = await agent.stream({
272
- messages: normalizeMessages(request.messages),
273
- context: buildStreamContext(request, baseContext, threadId, runId),
274
- ...(request.model ? { model: request.model } : {}),
275
- ...(request.maxOutputTokens ? { maxOutputTokens: request.maxOutputTokens } : {}),
276
- });
277
-
278
- const upstream = result.toDataStreamResponse();
279
- const upstreamBody = upstream.body;
282
+ const {
283
+ agentId,
284
+ request,
285
+ runId,
286
+ threadId,
287
+ upstreamBody,
288
+ upstreamStatus,
289
+ upstreamStatusText,
290
+ onFinish,
291
+ onError,
292
+ } = options;
280
293
 
281
294
  const stream = new ReadableStream<Uint8Array>({
282
295
  start: async (controller) => {
@@ -285,7 +298,7 @@ async function createAgUiStreamResponse(
285
298
  let remainder = "";
286
299
  const decoder = new TextDecoder();
287
300
 
288
- if (!enqueueEvent(controller, "RunStarted", { runId, threadId, agentId: agent.id })) {
301
+ if (!enqueueEvent(controller, "RunStarted", { runId, threadId, agentId })) {
289
302
  return;
290
303
  }
291
304
  if (!enqueueEvent(controller, "StateSnapshot", { snapshot: {} })) {
@@ -302,6 +315,7 @@ async function createAgUiStreamResponse(
302
315
  return;
303
316
  }
304
317
  }
318
+ onFinish?.();
305
319
  closeController(controller);
306
320
  return;
307
321
  }
@@ -340,7 +354,9 @@ async function createAgUiStreamResponse(
340
354
  return;
341
355
  }
342
356
  }
357
+ onFinish?.();
343
358
  } catch (error) {
359
+ onError?.(error);
344
360
  enqueueEvent(controller, "RunError", {
345
361
  message: error instanceof Error ? error.message : "Agent run failed",
346
362
  });
@@ -352,16 +368,147 @@ async function createAgUiStreamResponse(
352
368
  });
353
369
 
354
370
  return new dntShim.Response(stream, {
355
- status: upstream.status,
356
- statusText: upstream.statusText,
371
+ status: upstreamStatus,
372
+ statusText: upstreamStatusText,
357
373
  headers: { ...AG_UI_HEADERS },
358
374
  });
359
375
  }
360
376
 
377
+ async function createAgUiDirectStreamResponse(
378
+ agent: Agent,
379
+ request: AgUiRequest,
380
+ baseContext: Record<string, unknown>,
381
+ ): Promise<dntShim.Response> {
382
+ const threadId = request.threadId ?? dntShim.crypto.randomUUID();
383
+ const runId = request.runId ?? generateRunId();
384
+
385
+ await agent.clearMemory();
386
+
387
+ const result = await agent.stream({
388
+ messages: normalizeMessages(request.messages),
389
+ context: buildStreamContext(request, baseContext, threadId, runId),
390
+ ...(request.model ? { model: request.model } : {}),
391
+ ...(request.maxOutputTokens ? { maxOutputTokens: request.maxOutputTokens } : {}),
392
+ });
393
+
394
+ const upstream = result.toDataStreamResponse();
395
+ return await createAgUiStreamResponse({
396
+ agentId: agent.id,
397
+ request,
398
+ runId,
399
+ threadId,
400
+ upstreamBody: upstream.body,
401
+ upstreamStatus: upstream.status,
402
+ upstreamStatusText: upstream.statusText,
403
+ });
404
+ }
405
+
406
+ function createInjectedAgUiTool(
407
+ runId: string,
408
+ tool: AgUiInjectedTool,
409
+ sessionManager: RunResumeSessionManager<AgUiResumeValue>,
410
+ ): Tool {
411
+ return {
412
+ id: tool.name,
413
+ type: "function",
414
+ description: tool.description ?? tool.name,
415
+ inputSchema: z.record(z.string(), z.unknown()),
416
+ inputSchemaJson: (tool.parameters ??
417
+ { type: "object", properties: {}, additionalProperties: true }) as Tool["inputSchemaJson"],
418
+ execute: async (_input, context) => {
419
+ const toolCallId = typeof context?.toolCallId === "string" ? context.toolCallId : null;
420
+ if (!toolCallId) {
421
+ throw new Error(`Missing toolCallId for injected tool "${tool.name}"`);
422
+ }
423
+
424
+ const submitted = await sessionManager.waitForSignal(runId, toolCallId);
425
+ if (submitted.isError) {
426
+ throw new Error(
427
+ typeof submitted.result === "string"
428
+ ? submitted.result
429
+ : JSON.stringify(submitted.result),
430
+ );
431
+ }
432
+ return submitted.result;
433
+ },
434
+ };
435
+ }
436
+
437
+ async function createAgUiInjectedToolsStreamResponse(
438
+ agent: Agent,
439
+ request: AgUiRequest,
440
+ baseContext: Record<string, unknown>,
441
+ sessionManager: RunResumeSessionManager<AgUiResumeValue>,
442
+ ): Promise<dntShim.Response> {
443
+ const threadId = request.threadId ?? dntShim.crypto.randomUUID();
444
+ const runId = request.runId ?? generateRunId();
445
+
446
+ try {
447
+ sessionManager.startRun({ runId, threadId });
448
+ } catch (error) {
449
+ if (error instanceof RunAlreadyExistsError) {
450
+ return dntShim.Response.json({ error: "Run already active" }, { status: 409 });
451
+ }
452
+ throw error;
453
+ }
454
+
455
+ const injectedTools = Object.fromEntries(
456
+ request.tools.map((tool) => [tool.name, createInjectedAgUiTool(runId, tool, sessionManager)]),
457
+ );
458
+
459
+ const mergedTools: Agent["config"]["tools"] = !agent.config.tools
460
+ ? injectedTools
461
+ : agent.config.tools === true
462
+ ? {
463
+ ...Object.fromEntries(
464
+ [...toolRegistry.getAll()]
465
+ .filter(([toolId]) => agent.config.skills || !SKILL_TOOL_IDS.has(toolId))
466
+ .map(([toolId]) => [toolId, true]),
467
+ ),
468
+ ...injectedTools,
469
+ }
470
+ : { ...agent.config.tools, ...injectedTools };
471
+
472
+ const runtime = new AgentRuntime(agent.id, {
473
+ ...agent.config,
474
+ tools: mergedTools,
475
+ });
476
+
477
+ let upstreamBody: ReadableStream<Uint8Array>;
478
+ try {
479
+ upstreamBody = await runtime.stream(
480
+ normalizeMessages(request.messages),
481
+ buildStreamContext(request, baseContext, threadId, runId),
482
+ undefined,
483
+ request.model,
484
+ request.maxOutputTokens,
485
+ );
486
+ } catch (error) {
487
+ sessionManager.failRun(runId);
488
+ throw error;
489
+ }
490
+
491
+ return await createAgUiStreamResponse({
492
+ agentId: agent.id,
493
+ request,
494
+ runId,
495
+ threadId,
496
+ upstreamBody,
497
+ upstreamStatus: 200,
498
+ onFinish: () => {
499
+ sessionManager.completeRun(runId);
500
+ },
501
+ onError: () => {
502
+ sessionManager.failRun(runId);
503
+ },
504
+ });
505
+ }
506
+
361
507
  export interface AgUiHandlerOptions {
362
508
  context?:
363
509
  | Record<string, unknown>
364
510
  | ((request: dntShim.Request) => Record<string, unknown> | Promise<Record<string, unknown>>);
511
+ sessionManager?: RunResumeSessionManager<AgUiResumeValue>;
365
512
  }
366
513
 
367
514
  export interface AgUiHandlerConfigWithAgent extends AgUiHandlerOptions {
@@ -418,12 +565,25 @@ export function createAgUiHandler(
418
565
  const parsed = AgUiRequestSchema.parse(await request.json());
419
566
 
420
567
  if (parsed.tools.length > 0) {
421
- return dntShim.Response.json(
422
- {
423
- error:
424
- "Injected AG-UI tools are not supported by createAgUiHandler yet. Use package-level wait/resume runtime primitives instead.",
425
- },
426
- { status: 501 },
568
+ if (!options?.sessionManager) {
569
+ return dntShim.Response.json(
570
+ {
571
+ error:
572
+ "Injected AG-UI tools require a public RunResumeSessionManager on createAgUiHandler().",
573
+ },
574
+ { status: 501 },
575
+ );
576
+ }
577
+
578
+ const context = typeof options?.context === "function"
579
+ ? await options.context(request)
580
+ : options?.context ?? {};
581
+
582
+ return await createAgUiInjectedToolsStreamResponse(
583
+ agent,
584
+ parsed,
585
+ context,
586
+ options.sessionManager,
427
587
  );
428
588
  }
429
589
 
@@ -431,7 +591,7 @@ export function createAgUiHandler(
431
591
  ? await options.context(request)
432
592
  : options?.context ?? {};
433
593
 
434
- return await createAgUiStreamResponse(agent, parsed, context);
594
+ return await createAgUiDirectStreamResponse(agent, parsed, context);
435
595
  } catch (error) {
436
596
  if (error instanceof z.ZodError) {
437
597
  return dntShim.Response.json(
@@ -150,6 +150,16 @@ export class ErrorCollector {
150
150
  return this.addTypedError("runtime", message, { stack, context, slug });
151
151
  }
152
152
 
153
+ private addFileContextError(
154
+ type: "bundle" | "hmr" | "module",
155
+ message: string,
156
+ file?: string,
157
+ context?: Record<string, unknown>,
158
+ slug?: string,
159
+ ): DevError {
160
+ return this.addTypedError(type, message, { file, context, slug });
161
+ }
162
+
153
163
  /**
154
164
  * Add a bundle error
155
165
  * @param message Error message
@@ -163,7 +173,7 @@ export class ErrorCollector {
163
173
  context?: Record<string, unknown>,
164
174
  slug?: string,
165
175
  ): DevError {
166
- return this.addTypedError("bundle", message, { file, context, slug });
176
+ return this.addFileContextError("bundle", message, file, context, slug);
167
177
  }
168
178
 
169
179
  /**
@@ -179,7 +189,7 @@ export class ErrorCollector {
179
189
  context?: Record<string, unknown>,
180
190
  slug?: string,
181
191
  ): DevError {
182
- return this.addTypedError("hmr", message, { file, context, slug });
192
+ return this.addFileContextError("hmr", message, file, context, slug);
183
193
  }
184
194
 
185
195
  /**
@@ -195,7 +205,7 @@ export class ErrorCollector {
195
205
  context?: Record<string, unknown>,
196
206
  slug?: string,
197
207
  ): DevError {
198
- return this.addTypedError("module", message, { file, context, slug });
208
+ return this.addFileContextError("module", message, file, context, slug);
199
209
  }
200
210
 
201
211
  getAll(filter?: ErrorFilter): DevError[] {
@@ -1,3 +1,3 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
- export const VERSION = "0.1.154";
3
+ export const VERSION = "0.1.156";