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.
- package/esm/cli/commands/files/command.d.ts.map +1 -1
- package/esm/cli/commands/files/command.js +1 -8
- package/esm/cli/commands/issues/command.d.ts.map +1 -1
- package/esm/cli/commands/issues/command.js +21 -28
- package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
- package/esm/cli/commands/knowledge/command.js +1 -8
- package/esm/cli/commands/uploads/command.d.ts.map +1 -1
- package/esm/cli/commands/uploads/command.js +1 -8
- package/esm/cli/shared/parsed-args.d.ts +3 -0
- package/esm/cli/shared/parsed-args.d.ts.map +1 -0
- package/esm/cli/shared/parsed-args.js +8 -0
- package/esm/deno.js +1 -1
- package/esm/src/agent/ag-ui-handler.d.ts +6 -0
- package/esm/src/agent/ag-ui-handler.d.ts.map +1 -1
- package/esm/src/agent/ag-ui-handler.js +115 -19
- package/esm/src/observability/error-collector.d.ts +1 -0
- package/esm/src/observability/error-collector.d.ts.map +1 -1
- package/esm/src/observability/error-collector.js +6 -3
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
- package/src/cli/commands/files/command.ts +1 -8
- package/src/cli/commands/issues/command.ts +21 -28
- package/src/cli/commands/knowledge/command.ts +1 -8
- package/src/cli/commands/uploads/command.ts +1 -8
- package/src/cli/shared/parsed-args.ts +9 -0
- package/src/deno.js +1 -1
- package/src/src/agent/ag-ui-handler.ts +187 -27
- package/src/src/observability/error-collector.ts +13 -3
- package/src/src/utils/version-constant.ts +1 -1
|
@@ -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;
|
|
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;
|
|
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
|
-
|
|
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 =
|
|
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:
|
|
113
|
-
labels: parseLabels(
|
|
114
|
-
milestone:
|
|
115
|
-
assignees: parseLabels(
|
|
116
|
-
prefix: getPrefix(
|
|
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 =
|
|
120
|
+
const stateArg = getStringArg(args, "state");
|
|
129
121
|
const result = await manager.list({
|
|
130
122
|
state: stateArg ? parseState(stateArg) ?? undefined : undefined,
|
|
131
|
-
labels: parseLabels(
|
|
132
|
-
milestone:
|
|
133
|
-
assignee:
|
|
134
|
-
prefix: getPrefix(
|
|
135
|
-
sortBy:
|
|
136
|
-
|
|
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 =
|
|
180
|
+
const title = getStringArg(args, "title", "t");
|
|
188
181
|
if (title)
|
|
189
182
|
updates.title = title;
|
|
190
|
-
const body =
|
|
183
|
+
const body = getStringArg(args, "body", "b");
|
|
191
184
|
if (body)
|
|
192
185
|
updates.body = body;
|
|
193
|
-
const stateArg =
|
|
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(
|
|
192
|
+
const labels = parseLabels(getStringArg(args, "labels", "l"));
|
|
200
193
|
if (labels)
|
|
201
194
|
updates.labels = labels;
|
|
202
|
-
const assignees = parseLabels(
|
|
195
|
+
const assignees = parseLabels(getStringArg(args, "assignees", "a"));
|
|
203
196
|
if (assignees)
|
|
204
197
|
updates.assignees = assignees;
|
|
205
|
-
const milestone =
|
|
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":"AACA,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;
|
|
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":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,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;
|
|
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 @@
|
|
|
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"}
|
package/esm/deno.js
CHANGED
|
@@ -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;
|
|
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(
|
|
198
|
-
const
|
|
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
|
|
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:
|
|
278
|
-
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
|
-
|
|
314
|
-
|
|
315
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
1
|
+
export declare const VERSION = "0.1.156";
|
|
2
2
|
//# sourceMappingURL=version-constant.d.ts.map
|
package/package.json
CHANGED
|
@@ -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 =
|
|
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:
|
|
134
|
-
labels: parseLabels(
|
|
135
|
-
milestone:
|
|
136
|
-
assignees: parseLabels(
|
|
137
|
-
prefix: getPrefix(
|
|
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 =
|
|
144
|
+
const stateArg = getStringArg(args, "state");
|
|
153
145
|
const result = await manager.list({
|
|
154
146
|
state: stateArg ? parseState(stateArg) ?? undefined : undefined,
|
|
155
|
-
labels: parseLabels(
|
|
156
|
-
milestone:
|
|
157
|
-
assignee:
|
|
158
|
-
prefix: getPrefix(
|
|
159
|
-
sortBy: (
|
|
160
|
-
|
|
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 =
|
|
217
|
+
const title = getStringArg(args, "title", "t");
|
|
225
218
|
if (title) updates.title = title;
|
|
226
219
|
|
|
227
|
-
const body =
|
|
220
|
+
const body = getStringArg(args, "body", "b");
|
|
228
221
|
if (body) updates.body = body;
|
|
229
222
|
|
|
230
|
-
const stateArg =
|
|
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(
|
|
229
|
+
const labels = parseLabels(getStringArg(args, "labels", "l"));
|
|
237
230
|
if (labels) updates.labels = labels;
|
|
238
231
|
|
|
239
|
-
const assignees = parseLabels(
|
|
232
|
+
const assignees = parseLabels(getStringArg(args, "assignees", "a"));
|
|
240
233
|
if (assignees) updates.assignees = assignees;
|
|
241
234
|
|
|
242
|
-
const milestone =
|
|
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
|
@@ -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
|
-
|
|
263
|
-
|
|
264
|
-
|
|
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
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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
|
|
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:
|
|
356
|
-
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
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
208
|
+
return this.addFileContextError("module", message, file, context, slug);
|
|
199
209
|
}
|
|
200
210
|
|
|
201
211
|
getAll(filter?: ErrorFilter): DevError[] {
|