@markusylisiurunen/tau 0.3.94 → 0.3.95
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/dist/code_mode/command.js +3 -1
- package/dist/code_mode/command.js.map +1 -1
- package/dist/code_mode/output.d.ts +3 -0
- package/dist/code_mode/output.js +8 -2
- package/dist/code_mode/output.js.map +1 -1
- package/dist/code_mode/runtime.d.ts +7 -1
- package/dist/code_mode/runtime.js +18 -14
- package/dist/code_mode/runtime.js.map +1 -1
- package/dist/core/code_mode/agents.js +434 -0
- package/dist/core/code_mode/agents.js.map +1 -0
- package/dist/core/code_mode/bash.js +14 -17
- package/dist/core/code_mode/bash.js.map +1 -1
- package/dist/core/code_mode/history.js +1 -0
- package/dist/core/code_mode/history.js.map +1 -1
- package/dist/core/code_mode/models.js +27 -4
- package/dist/core/code_mode/models.js.map +1 -1
- package/dist/core/code_mode/sdk.js +6 -0
- package/dist/core/code_mode/sdk.js.map +1 -1
- package/dist/core/config/content_loader.js +3 -13
- package/dist/core/config/content_loader.js.map +1 -1
- package/dist/core/debug.js +2 -2
- package/dist/core/debug.js.map +1 -1
- package/dist/core/history/history_manager.js +7 -4
- package/dist/core/history/history_manager.js.map +1 -1
- package/dist/core/index.js +0 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/mcp/manager.js +7 -0
- package/dist/core/mcp/manager.js.map +1 -1
- package/dist/core/models/openrouter.js +25 -1
- package/dist/core/models/openrouter.js.map +1 -1
- package/dist/core/personas.js +3 -11
- package/dist/core/personas.js.map +1 -1
- package/dist/core/runtime/chat_runtime.js +11 -10
- package/dist/core/runtime/chat_runtime.js.map +1 -1
- package/dist/core/runtime/session_prompt_composer.js +9 -8
- package/dist/core/runtime/session_prompt_composer.js.map +1 -1
- package/dist/core/static/code_mode/history/documentation.md +2 -1
- package/dist/core/static/code_mode/sandbox_runner.mjs +4 -0
- package/dist/core/static/index.js +18 -5
- package/dist/core/static/index.js.map +1 -1
- package/dist/core/static/prompts/subagent-prefix.md +17 -0
- package/dist/core/static/tau_docs/client-tools.md +4 -0
- package/dist/core/static/tau_docs/code-mode.md +77 -0
- package/dist/core/static/tau_docs/config-reference.md +4 -2
- package/dist/core/static/tau_docs/history.md +5 -3
- package/dist/core/static/tau_docs/index.md +2 -1
- package/dist/core/static/tau_docs/manifest.json +1 -0
- package/dist/core/static/tau_docs/node-sdk.md +2 -0
- package/dist/core/static/tau_docs/openrouter.md +2 -0
- package/dist/core/static/tau_docs/pdf-unpacking.md +1 -1
- package/dist/core/static/tau_docs/personas.md +4 -5
- package/dist/core/static/tau_docs/prompts-and-project-context.md +1 -1
- package/dist/core/static/tau_docs/security.md +1 -1
- package/dist/core/static/tau_docs/sessions.md +1 -1
- package/dist/core/static/tau_docs/subagents.md +106 -27
- package/dist/core/static/tau_docs/tools.md +32 -62
- package/dist/core/static/tau_docs/troubleshooting.md +2 -2
- package/dist/core/subagents/agent_supervisor.js +185 -339
- package/dist/core/subagents/agent_supervisor.js.map +1 -1
- package/dist/core/subagents/claude_code_protocol.js +4 -0
- package/dist/core/subagents/claude_code_protocol.js.map +1 -1
- package/dist/core/subagents/claude_code_runner.js +134 -11
- package/dist/core/subagents/claude_code_runner.js.map +1 -1
- package/dist/core/subagents/claude_code_runner.mjs +80 -77
- package/dist/core/subagents/claude_code_runtime.js +250 -9
- package/dist/core/subagents/claude_code_runtime.js.map +1 -1
- package/dist/core/subagents/errors.js +18 -0
- package/dist/core/subagents/errors.js.map +1 -0
- package/dist/core/subagents/events.js +25 -0
- package/dist/core/subagents/events.js.map +1 -0
- package/dist/core/subagents/format.js +2 -98
- package/dist/core/subagents/format.js.map +1 -1
- package/dist/core/subagents/native_subagent_runtime.js +270 -0
- package/dist/core/subagents/native_subagent_runtime.js.map +1 -0
- package/dist/core/subagents/prompt.js +3 -5
- package/dist/core/subagents/prompt.js.map +1 -1
- package/dist/core/subagents/registry.js +5 -3
- package/dist/core/subagents/registry.js.map +1 -1
- package/dist/core/subagents/runtime.js +13 -0
- package/dist/core/subagents/runtime.js.map +1 -0
- package/dist/core/subagents/trace.js +149 -0
- package/dist/core/subagents/trace.js.map +1 -0
- package/dist/core/tools/agent_jobs.js +51 -0
- package/dist/core/tools/agent_jobs.js.map +1 -0
- package/dist/core/tools/background_jobs.js +205 -0
- package/dist/core/tools/background_jobs.js.map +1 -0
- package/dist/core/tools/bash.js +11 -45
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/bash_jobs.js +44 -238
- package/dist/core/tools/bash_jobs.js.map +1 -1
- package/dist/core/tools/catalog.js +37 -72
- package/dist/core/tools/catalog.js.map +1 -1
- package/dist/core/tools/code.js +177 -54
- package/dist/core/tools/code.js.map +1 -1
- package/dist/core/tools/code_jobs.js +128 -0
- package/dist/core/tools/code_jobs.js.map +1 -0
- package/dist/core/tools/code_mode.js +88 -101
- package/dist/core/tools/code_mode.js.map +1 -1
- package/dist/core/tools/code_mode_worker.js +13 -7
- package/dist/core/tools/code_mode_worker.js.map +1 -1
- package/dist/core/tools/job_output.js +53 -0
- package/dist/core/tools/job_output.js.map +1 -0
- package/dist/core/tools/output_file.js +38 -0
- package/dist/core/tools/output_file.js.map +1 -0
- package/dist/core/tools/presentation.js +19 -9
- package/dist/core/tools/presentation.js.map +1 -1
- package/dist/core/tools/tool_names.js +8 -6
- package/dist/core/tools/tool_names.js.map +1 -1
- package/dist/core/tools/wait_for_agents.js +41 -33
- package/dist/core/tools/wait_for_agents.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/diff_tool/app/dist/assets/{core-33fyIuI3.js → core-NkxL1yZC.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{highlights-BZwSBtSw.js → highlights-Coi8xHW0.js} +1 -1
- package/dist/diff_tool/app/dist/assets/index-Jt-l2Q96.js +205 -0
- package/dist/diff_tool/app/dist/assets/langs-qJAo26KT.js +1 -0
- package/dist/diff_tool/app/dist/assets/{shiki-CC72VX9t.js → shiki-B8l9Ufae.js} +2 -2
- package/dist/diff_tool/app/dist/assets/{stream-tokenizer-C6SDg59j.js → stream-tokenizer-h1lwRQEk.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{themes-2vjCbM1J.js → themes-D3P9yN9_.js} +2 -2
- package/dist/diff_tool/app/dist/index.html +1 -1
- package/dist/host/hosted_ephemeral_agent_session.js +13 -3
- package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
- package/dist/host/local_session_host.js +5 -5
- package/dist/host/local_session_host.js.map +1 -1
- package/dist/sdk/code_mode.js +2 -2
- package/dist/sdk/code_mode.js.map +1 -1
- package/dist/store/session_snapshot_migrations.js +27 -1
- package/dist/store/session_snapshot_migrations.js.map +1 -1
- package/package.json +5 -5
- package/dist/core/static/prompts/subagent-wrapper.md +0 -20
- package/dist/core/tools/interrupt_agent.js +0 -142
- package/dist/core/tools/interrupt_agent.js.map +0 -1
- package/dist/core/tools/list_agents.js +0 -85
- package/dist/core/tools/list_agents.js.map +0 -1
- package/dist/core/tools/send_input_to_agent.js +0 -177
- package/dist/core/tools/send_input_to_agent.js.map +0 -1
- package/dist/core/tools/spawn_agent.js +0 -275
- package/dist/core/tools/spawn_agent.js.map +0 -1
- package/dist/diff_tool/app/dist/assets/index-Bv8JVYFD.js +0 -202
- package/dist/diff_tool/app/dist/assets/langs-DnGrwrZ-.js +0 -1
package/dist/core/tools/code.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
1
2
|
import { Type } from "typebox";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
import { CODE_MODE_MAX_OUTPUT_TOKENS_DESCRIPTION, TAU_CODE_MODE_DEFAULT_MAX_OUTPUT_TOKENS, TAU_CODE_MODE_MAX_OUTPUT_TOKENS, } from "../../code_mode/runtime.js";
|
|
5
|
+
import { agentsCapabilityMetadata, createAgentsCapability, } from "../code_mode/agents.js";
|
|
4
6
|
import { createBashCapability } from "../code_mode/bash.js";
|
|
5
7
|
import { createHistoryCapability } from "../code_mode/history.js";
|
|
6
8
|
import { createMcpCapability } from "../code_mode/mcp.js";
|
|
@@ -8,15 +10,49 @@ import { createModelsCapability } from "../code_mode/models.js";
|
|
|
8
10
|
import { bindCodeModeSdk } from "../code_mode/sdk.js";
|
|
9
11
|
import { createWebCapability } from "../code_mode/web.js";
|
|
10
12
|
import { formatZodError } from "../utils/zod.js";
|
|
11
|
-
import {
|
|
13
|
+
import { executeCodeModeTool, executeInternalCodeMode, } from "./code_mode.js";
|
|
14
|
+
import { buildToolRunPresentation } from "./presentation.js";
|
|
15
|
+
import { createTextToolOutcome, executeTool } from "./registry.js";
|
|
12
16
|
import { TOOL_NAME_CODE } from "./tool_names.js";
|
|
13
17
|
const CODE_DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;
|
|
14
|
-
const CODE_MAX_TIMEOUT_MS =
|
|
15
|
-
const
|
|
16
|
-
|
|
18
|
+
const CODE_MAX_TIMEOUT_MS = 60 * 60 * 1000;
|
|
19
|
+
const CODE_MAX_INPUT_BYTES = 16 * 1024;
|
|
20
|
+
const commonArgs = {
|
|
21
|
+
input: z.json().optional(),
|
|
22
|
+
background: z.boolean().optional(),
|
|
17
23
|
timeout: z.number().int().positive().max(CODE_MAX_TIMEOUT_MS).optional(),
|
|
18
24
|
maxOutputTokens: z.number().int().min(1).max(TAU_CODE_MODE_MAX_OUTPUT_TOKENS).optional(),
|
|
25
|
+
};
|
|
26
|
+
const argsSchema = z
|
|
27
|
+
.union([
|
|
28
|
+
z.strictObject({ ...commonArgs, code: z.string().trim().min(1) }),
|
|
29
|
+
z.strictObject({
|
|
30
|
+
...commonArgs,
|
|
31
|
+
file: z
|
|
32
|
+
.string()
|
|
33
|
+
.min(1)
|
|
34
|
+
.regex(/^[^\r\n]+\.js$/),
|
|
35
|
+
}),
|
|
36
|
+
])
|
|
37
|
+
.superRefine((args, context) => {
|
|
38
|
+
if (args.background && ("timeout" in args || "maxOutputTokens" in args))
|
|
39
|
+
context.addIssue({
|
|
40
|
+
code: "custom",
|
|
41
|
+
message: "Background programs do not accept timeout or maxOutputTokens. Set output budgets when inspecting jobs.",
|
|
42
|
+
});
|
|
43
|
+
if (args.input !== undefined &&
|
|
44
|
+
Buffer.byteLength(JSON.stringify(args.input)) > CODE_MAX_INPUT_BYTES)
|
|
45
|
+
context.addIssue({ code: "custom", message: "input exceeds the 16 KiB limit." });
|
|
19
46
|
});
|
|
47
|
+
function getCodeSubject(raw) {
|
|
48
|
+
if (typeof raw === "object" && raw !== null) {
|
|
49
|
+
if ("file" in raw && typeof raw.file === "string")
|
|
50
|
+
return raw.file;
|
|
51
|
+
if ("code" in raw && typeof raw.code === "string" && raw.code)
|
|
52
|
+
return raw.code;
|
|
53
|
+
}
|
|
54
|
+
return "(invalid code)";
|
|
55
|
+
}
|
|
20
56
|
export function createCodeToolDefinition(options) {
|
|
21
57
|
const allowed = new Set(options.allowedTools);
|
|
22
58
|
const capabilities = [];
|
|
@@ -33,65 +69,152 @@ export function createCodeToolDefinition(options) {
|
|
|
33
69
|
capabilities.push(createMcpCapability(options.mcp));
|
|
34
70
|
if (allowed.has("models"))
|
|
35
71
|
capabilities.push(createModelsCapability(options.backend, options.config));
|
|
36
|
-
|
|
72
|
+
const metadata = [...capabilities, ...(options.agents ? [agentsCapabilityMetadata] : [])];
|
|
73
|
+
if (!metadata.length)
|
|
37
74
|
return undefined;
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
subject,
|
|
81
|
-
}
|
|
82
|
-
: { ok: false, error: formatZodError(parsed.error), code, subject };
|
|
83
|
-
},
|
|
84
|
-
execute: async ({ code, maxOutputTokens, timeoutMs, context }) => {
|
|
75
|
+
const sdkFor = (origin) => bindCodeModeSdk([
|
|
76
|
+
...capabilities,
|
|
77
|
+
...(options.agents ? [createAgentsCapability(options.agents, origin)] : []),
|
|
78
|
+
]);
|
|
79
|
+
const schema = {
|
|
80
|
+
name: TOOL_NAME_CODE,
|
|
81
|
+
description: [
|
|
82
|
+
"Run a JavaScript program using enabled Tau capabilities, either inline or from a saved .js file. Use it to chain dependent calls, combine independent work, or process results before printing a concise answer.",
|
|
83
|
+
`Available capabilities: ${metadata.map((capability) => capability.name).join(", ")}.`,
|
|
84
|
+
...metadata.map((capability) => `tau.${capability.name}: ${capability.description}`),
|
|
85
|
+
"When this tool is useful and its runtime guide is not visible, first run only printText(docs). Read it before writing a later program. Before using each capability, printText(await tau.docs(name)) in a documentation-only call unless that reference is already visible. Do not guess API signatures.",
|
|
86
|
+
"Use printText(string) and await printImage({ data, mimeType }) for output. printText rejects objects and arrays: select relevant fields and format concise plain text to save tokens. Only use JSON.stringify on selected data when JSON structure is needed; do not dump whole responses. Return values are ignored. Programs have request and output limits, and foreground programs also have a deadline. Side effects are not rolled back and programs are not automatically retried.",
|
|
87
|
+
"Use background: true only when you can make useful independent progress while the program runs. If you would only wait for it to finish, run it in the foreground with an appropriate timeout. A background launch returns a job ID; use the code job tools to read, wait for, or stop it. Jobs keep running across turns and interruptions, but are not recovered after a session restart.",
|
|
88
|
+
].join("\n\n"),
|
|
89
|
+
parameters: Type.Object({
|
|
90
|
+
timeout: Type.Optional(Type.Integer({
|
|
91
|
+
description: "Program timeout in milliseconds for foreground programs. Defaults to 300000 (5 minutes). Extend only when the work needs it, up to 3600000 (60 minutes). The deadline covers the whole program, including API calls. Cannot be combined with background: true.",
|
|
92
|
+
minimum: 1,
|
|
93
|
+
maximum: CODE_MAX_TIMEOUT_MS,
|
|
94
|
+
})),
|
|
95
|
+
maxOutputTokens: Type.Optional(Type.Integer({
|
|
96
|
+
description: CODE_MODE_MAX_OUTPUT_TOKENS_DESCRIPTION,
|
|
97
|
+
minimum: 1,
|
|
98
|
+
maximum: TAU_CODE_MODE_MAX_OUTPUT_TOKENS,
|
|
99
|
+
})),
|
|
100
|
+
file: Type.Optional(Type.String({
|
|
101
|
+
description: "Path to a saved .js program, absolute or relative to the current working directory. The file is read once when the call starts, can be at most 1 MiB, and runs with the same capabilities and limits as inline code. Supply exactly one of code or file.",
|
|
102
|
+
})),
|
|
103
|
+
input: Type.Optional(Type.Unknown({
|
|
104
|
+
description: "JSON value available to the program as the global input. Defaults to null. At most 16 KiB when serialized as JSON.",
|
|
105
|
+
})),
|
|
106
|
+
background: Type.Optional(Type.Boolean({
|
|
107
|
+
description: "Run as a background job and return its ID immediately. The job has no overall deadline. Cannot be combined with timeout or maxOutputTokens. Set the output budget when reading or waiting for the job.",
|
|
108
|
+
})),
|
|
109
|
+
code: Type.Optional(Type.String({
|
|
110
|
+
description: "JavaScript source. Supply exactly one of code or file. Print relevant text with printText and forward images with awaited printImage.",
|
|
111
|
+
})),
|
|
112
|
+
}, { additionalProperties: false }),
|
|
113
|
+
};
|
|
114
|
+
const implementation = {
|
|
115
|
+
schema,
|
|
116
|
+
execute: async ({ code, input, maxOutputTokens, timeoutMs, context }) => {
|
|
85
117
|
return await executeInternalCodeMode({
|
|
86
118
|
name: "tau",
|
|
87
|
-
...
|
|
119
|
+
...sdkFor(context.assistantMessageId),
|
|
88
120
|
code,
|
|
121
|
+
input,
|
|
89
122
|
maxOutputTokens,
|
|
90
123
|
backend: options.backend,
|
|
91
124
|
signal: context.signal,
|
|
92
125
|
timeoutMs,
|
|
93
126
|
});
|
|
94
127
|
},
|
|
95
|
-
}
|
|
128
|
+
};
|
|
129
|
+
return {
|
|
130
|
+
schema,
|
|
131
|
+
describe: (call) => ({
|
|
132
|
+
presentation: buildToolRunPresentation({
|
|
133
|
+
toolName: TOOL_NAME_CODE,
|
|
134
|
+
operation: "code",
|
|
135
|
+
subject: getCodeSubject(call.arguments),
|
|
136
|
+
}),
|
|
137
|
+
}),
|
|
138
|
+
execute: async (call, context) => {
|
|
139
|
+
const parsed = argsSchema.safeParse(call.arguments);
|
|
140
|
+
if (!parsed.success)
|
|
141
|
+
return executeCodeModeTool(implementation, call, context, {
|
|
142
|
+
ok: false,
|
|
143
|
+
error: formatZodError(parsed.error),
|
|
144
|
+
subject: getCodeSubject(call.arguments),
|
|
145
|
+
});
|
|
146
|
+
const args = parsed.data;
|
|
147
|
+
const subject = "file" in args ? args.file : args.code;
|
|
148
|
+
const source = "file" in args ? args.file : "inline code";
|
|
149
|
+
try {
|
|
150
|
+
context.signal.throwIfAborted();
|
|
151
|
+
const code = "code" in args
|
|
152
|
+
? args.code
|
|
153
|
+
: (await options.backend.readFileBinary(resolve(options.cwd, args.file), {
|
|
154
|
+
maxBytes: 1024 * 1024,
|
|
155
|
+
})).content.toString("utf8");
|
|
156
|
+
if (!code.trim())
|
|
157
|
+
throw new Error("Program source must not be empty.");
|
|
158
|
+
context.signal.throwIfAborted();
|
|
159
|
+
if (args.background) {
|
|
160
|
+
const id = options.codeJobs.start({
|
|
161
|
+
source,
|
|
162
|
+
cwd: options.cwd,
|
|
163
|
+
backend: options.backend,
|
|
164
|
+
signal: context.signal,
|
|
165
|
+
program: {
|
|
166
|
+
name: "tau",
|
|
167
|
+
...sdkFor(context.assistantMessageId),
|
|
168
|
+
code,
|
|
169
|
+
input: args.input,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
const text = `Started background code job ${id} from ${JSON.stringify(source)} in ${JSON.stringify(options.cwd)}. Use read_code_job to check progress or wait_for_code_jobs to wait for completion.`;
|
|
173
|
+
return executeTool(context, () => ({
|
|
174
|
+
...createTextToolOutcome(text, "succeeded"),
|
|
175
|
+
uiEvent: {
|
|
176
|
+
type: "code_mode_finished",
|
|
177
|
+
toolCallId: call.id,
|
|
178
|
+
toolName: TOOL_NAME_CODE,
|
|
179
|
+
status: "success",
|
|
180
|
+
presentation: buildToolRunPresentation({
|
|
181
|
+
toolName: TOOL_NAME_CODE,
|
|
182
|
+
operation: "background",
|
|
183
|
+
subject,
|
|
184
|
+
details: [{ text }],
|
|
185
|
+
actionOverrides: { succeeded: "started" },
|
|
186
|
+
}),
|
|
187
|
+
},
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
return executeCodeModeTool(implementation, call, context, {
|
|
191
|
+
ok: true,
|
|
192
|
+
code,
|
|
193
|
+
input: args.input,
|
|
194
|
+
subject,
|
|
195
|
+
timeoutMs: args.timeout ?? CODE_DEFAULT_TIMEOUT_MS,
|
|
196
|
+
maxOutputTokens: args.maxOutputTokens ?? TAU_CODE_MODE_DEFAULT_MAX_OUTPUT_TOKENS,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
201
|
+
return executeTool(context, () => ({
|
|
202
|
+
...createTextToolOutcome(reason, context.signal.aborted ? "cancelled" : "failed"),
|
|
203
|
+
uiEvent: {
|
|
204
|
+
type: "code_mode_blocked",
|
|
205
|
+
toolCallId: call.id,
|
|
206
|
+
toolName: TOOL_NAME_CODE,
|
|
207
|
+
reason,
|
|
208
|
+
presentation: buildToolRunPresentation({
|
|
209
|
+
toolName: TOOL_NAME_CODE,
|
|
210
|
+
operation: "code",
|
|
211
|
+
subject,
|
|
212
|
+
details: [{ text: reason }],
|
|
213
|
+
}),
|
|
214
|
+
},
|
|
215
|
+
}));
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
};
|
|
96
219
|
}
|
|
97
220
|
//# sourceMappingURL=code.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../../src/core/tools/code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,uCAAuC,EACvC,uCAAuC,EACvC,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../../src/core/tools/code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { runTauCodeMode, } from "../../code_mode/runtime.js";
|
|
3
|
+
import { SESSION_PROTOCOL_MAX_CLIENT_TOOL_IMAGES } from "../../protocol/session_protocol.js";
|
|
4
|
+
import { truncateForTokens } from "../utils/truncate.js";
|
|
5
|
+
import { MAX_JOBS, waitForJobs } from "./background_jobs.js";
|
|
6
|
+
import { DEFAULT_COMMAND_CAPTURE_BYTES } from "./execution_backend.js";
|
|
7
|
+
import { JobOutput } from "./job_output.js";
|
|
8
|
+
export class CodeJobRegistry {
|
|
9
|
+
jobs = new Map();
|
|
10
|
+
closed = false;
|
|
11
|
+
start(options) {
|
|
12
|
+
options.signal.throwIfAborted();
|
|
13
|
+
if (this.closed)
|
|
14
|
+
throw new Error("Code jobs are closed.");
|
|
15
|
+
if (this.jobs.size >= MAX_JOBS) {
|
|
16
|
+
const oldest = [...this.jobs.values()].find((job) => !job.active);
|
|
17
|
+
if (!oldest)
|
|
18
|
+
throw new Error(`Code job limit reached (${MAX_JOBS}). Stop a job before starting another.`);
|
|
19
|
+
this.jobs.delete(oldest.id);
|
|
20
|
+
}
|
|
21
|
+
const job = {
|
|
22
|
+
id: randomUUID(),
|
|
23
|
+
source: truncateForTokens(options.source, { maxTokens: 128, strategy: "middle" }).content,
|
|
24
|
+
cwd: truncateForTokens(options.cwd, { maxTokens: 128, strategy: "middle" }).content,
|
|
25
|
+
status: "running",
|
|
26
|
+
controller: new AbortController(),
|
|
27
|
+
output: new JobOutput(options.backend, DEFAULT_COMMAND_CAPTURE_BYTES),
|
|
28
|
+
done: Promise.resolve(),
|
|
29
|
+
active: true,
|
|
30
|
+
};
|
|
31
|
+
this.jobs.set(job.id, job);
|
|
32
|
+
job.done = (async () => {
|
|
33
|
+
try {
|
|
34
|
+
const result = await runTauCodeMode({
|
|
35
|
+
...options.program,
|
|
36
|
+
timeoutMs: null,
|
|
37
|
+
signal: job.controller.signal,
|
|
38
|
+
output: job.output.capture,
|
|
39
|
+
});
|
|
40
|
+
job.output.capture.truncated ||= result.execution.truncated;
|
|
41
|
+
job.status =
|
|
42
|
+
result.status === "cancelled"
|
|
43
|
+
? "stopped"
|
|
44
|
+
: result.status === "succeeded"
|
|
45
|
+
? "succeeded"
|
|
46
|
+
: "failed";
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
job.output.capture.appendText(`${error instanceof Error ? error.stack || error.message : String(error)}\n`);
|
|
50
|
+
job.status = job.controller.signal.aborted ? "stopped" : "failed";
|
|
51
|
+
}
|
|
52
|
+
await job.output.finish();
|
|
53
|
+
job.active = false;
|
|
54
|
+
})();
|
|
55
|
+
return job.id;
|
|
56
|
+
}
|
|
57
|
+
get(id) {
|
|
58
|
+
const job = this.jobs.get(id);
|
|
59
|
+
if (!job)
|
|
60
|
+
throw new Error(`Unknown code job '${id}' (jobs are not recovered after restart and older completed records may be evicted).`);
|
|
61
|
+
return job;
|
|
62
|
+
}
|
|
63
|
+
async inspect(ids = [...this.jobs.keys()], includeOutput = true, maxOutputTokens = 8192) {
|
|
64
|
+
const content = [];
|
|
65
|
+
let truncated = false;
|
|
66
|
+
let images = 0;
|
|
67
|
+
const jobs = [...new Set(ids)].map((id) => this.get(id));
|
|
68
|
+
for (const job of jobs) {
|
|
69
|
+
const output = includeOutput
|
|
70
|
+
? job.output.project(Math.floor(maxOutputTokens / jobs.length))
|
|
71
|
+
: undefined;
|
|
72
|
+
const header = [
|
|
73
|
+
`id: ${job.id}`,
|
|
74
|
+
`status: ${job.status}`,
|
|
75
|
+
`source: ${JSON.stringify(job.source)}`,
|
|
76
|
+
`cwd: ${JSON.stringify(job.cwd)}`,
|
|
77
|
+
...(output ? [...output.metadata, "", "--- output ---"] : []),
|
|
78
|
+
].join("\n");
|
|
79
|
+
if (content.length)
|
|
80
|
+
content.push({ type: "text", text: "\n\n" });
|
|
81
|
+
content.push({ type: "text", text: header });
|
|
82
|
+
if (output) {
|
|
83
|
+
truncated ||= output.truncated;
|
|
84
|
+
for (const part of output.content) {
|
|
85
|
+
if (part.type === "image" && ++images > SESSION_PROTOCOL_MAX_CLIENT_TOOL_IMAGES)
|
|
86
|
+
continue;
|
|
87
|
+
content.push(part);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (images > SESSION_PROTOCOL_MAX_CLIENT_TOOL_IMAGES) {
|
|
92
|
+
truncated = true;
|
|
93
|
+
content.push({
|
|
94
|
+
type: "text",
|
|
95
|
+
text: `Images omitted: ${images - SESSION_PROTOCOL_MAX_CLIENT_TOOL_IMAGES}. Read jobs individually to retrieve their images.`,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if (!content.length)
|
|
99
|
+
content.push({ type: "text", text: "No code jobs." });
|
|
100
|
+
const text = content
|
|
101
|
+
.filter((part) => part.type === "text")
|
|
102
|
+
.map((part) => part.text)
|
|
103
|
+
.join("\n");
|
|
104
|
+
return { text, content, truncated };
|
|
105
|
+
}
|
|
106
|
+
async stopJob(id) {
|
|
107
|
+
const job = this.get(id);
|
|
108
|
+
job.controller.abort();
|
|
109
|
+
await job.done;
|
|
110
|
+
}
|
|
111
|
+
async waitJobs(ids, timeout, signal) {
|
|
112
|
+
return waitForJobs([...new Set(ids)].map((id) => this.get(id)), timeout, signal);
|
|
113
|
+
}
|
|
114
|
+
get hasRunning() {
|
|
115
|
+
return [...this.jobs.values()].some((job) => job.active);
|
|
116
|
+
}
|
|
117
|
+
async waitForIdle() {
|
|
118
|
+
while (this.hasRunning)
|
|
119
|
+
await Promise.all([...this.jobs.values()].map((job) => job.done));
|
|
120
|
+
}
|
|
121
|
+
async dispose() {
|
|
122
|
+
this.closed = true;
|
|
123
|
+
for (const job of this.jobs.values())
|
|
124
|
+
job.controller.abort();
|
|
125
|
+
await Promise.all([...this.jobs.values()].map((job) => job.done));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=code_jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code_jobs.js","sourceRoot":"","sources":["../../../src/core/tools/code_jobs.ts"],"names":[],"mappings":"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"}
|