neoctl 0.2.31 → 0.2.32
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/agents/agent-activity.d.ts +3 -0
- package/dist/agents/agent-activity.js +33 -6
- package/dist/agents/agent-activity.js.map +1 -1
- package/dist/agents/agent-definition.d.ts +2 -2
- package/dist/agents/agent-definition.js +6 -6
- package/dist/agents/agent-definition.js.map +1 -1
- package/dist/agents/agent-report-tool.d.ts +1 -1
- package/dist/agents/agent-report-tool.js +4 -4
- package/dist/agents/agent-report-tool.js.map +1 -1
- package/dist/agents/agent-tool.d.ts +1 -1
- package/dist/agents/agent-tool.js +97 -18
- package/dist/agents/agent-tool.js.map +1 -1
- package/dist/agents/local-agent-task.d.ts +12 -0
- package/dist/agents/local-agent-task.js +38 -1
- package/dist/agents/local-agent-task.js.map +1 -1
- package/dist/agents/smoke-agents.js +37 -26
- package/dist/agents/smoke-agents.js.map +1 -1
- package/dist/context/compaction.js +1 -1
- package/dist/context/compaction.js.map +1 -1
- package/dist/context/prompts.js +6 -6
- package/dist/context/prompts.js.map +1 -1
- package/dist/context/smoke-context.js +15 -15
- package/dist/context/smoke-context.js.map +1 -1
- package/dist/core/query-engine.js +2 -0
- package/dist/core/query-engine.js.map +1 -1
- package/dist/core/query.js +88 -6
- package/dist/core/query.js.map +1 -1
- package/dist/core/run-agent.d.ts +13 -2
- package/dist/core/run-agent.js +16 -13
- package/dist/core/run-agent.js.map +1 -1
- package/dist/core/smoke-core-loop.js +55 -2
- package/dist/core/smoke-core-loop.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugins/smoke-plugin-system.js +14 -14
- package/dist/repl/index.js +14 -14
- package/dist/repl/index.js.map +1 -1
- package/dist/secrets/secret-redaction.d.ts +5 -0
- package/dist/secrets/secret-redaction.js +43 -0
- package/dist/secrets/secret-redaction.js.map +1 -1
- package/dist/secrets/secret-types.d.ts +4 -0
- package/dist/secrets/secret-types.js.map +1 -1
- package/dist/secrets/smoke-secrets.js +7 -3
- package/dist/secrets/smoke-secrets.js.map +1 -1
- package/dist/skills/smoke-skills.js +5 -5
- package/dist/skills/smoke-skills.js.map +1 -1
- package/dist/tasks/subagent-tools.d.ts +31 -0
- package/dist/tasks/{task-tools.js → subagent-tools.js} +26 -32
- package/dist/tasks/subagent-tools.js.map +1 -0
- package/dist/tools/builtins/edit-tool.js +24 -6
- package/dist/tools/builtins/edit-tool.js.map +1 -1
- package/dist/tools/builtins/exec-process-manager.d.ts +4 -0
- package/dist/tools/builtins/exec-process-manager.js +15 -6
- package/dist/tools/builtins/exec-process-manager.js.map +1 -1
- package/dist/tools/builtins/exec-tool.js +24 -8
- package/dist/tools/builtins/exec-tool.js.map +1 -1
- package/dist/tools/builtins/filesystem-tools.js +2 -4
- package/dist/tools/builtins/filesystem-tools.js.map +1 -1
- package/dist/tools/builtins/grep-tool.js +2 -3
- package/dist/tools/builtins/grep-tool.js.map +1 -1
- package/dist/tools/builtins/image-generation-tool.js +4 -4
- package/dist/tools/builtins/image-generation-tool.js.map +1 -1
- package/dist/tools/builtins/image-loader-tool.js +2 -3
- package/dist/tools/builtins/image-loader-tool.js.map +1 -1
- package/dist/tools/builtins/image-note-tool.js +0 -1
- package/dist/tools/builtins/image-note-tool.js.map +1 -1
- package/dist/tools/builtins/plan-tool.js +1 -1
- package/dist/tools/builtins/plan-tool.js.map +1 -1
- package/dist/tools/builtins/search-tool.js +3 -3
- package/dist/tools/builtins/search-tool.js.map +1 -1
- package/dist/tools/run-tool-use.js +3 -2
- package/dist/tools/run-tool-use.js.map +1 -1
- package/dist/tools/smoke-tool-system.js +44 -25
- package/dist/tools/smoke-tool-system.js.map +1 -1
- package/dist/tools/tool-catalog.d.ts +36 -0
- package/dist/tools/tool-catalog.js +64 -0
- package/dist/tools/tool-catalog.js.map +1 -0
- package/dist/tools/tool-orchestration.d.ts +20 -3
- package/dist/tools/tool-orchestration.js +29 -4
- package/dist/tools/tool-orchestration.js.map +1 -1
- package/dist/tools/tool.d.ts +13 -0
- package/dist/tools/tool.js.map +1 -1
- package/dist/types/events.d.ts +23 -0
- package/dist/web/index.d.ts +39 -0
- package/dist/web/index.js +293 -92
- package/dist/web/index.js.map +1 -1
- package/dist/web/runtime-context-protocol.d.ts +7 -0
- package/dist/web/runtime-context-protocol.js +3 -2
- package/dist/web/runtime-context-protocol.js.map +1 -1
- package/dist/web/smoke-runtime-context-protocol.js +10 -2
- package/dist/web/smoke-runtime-context-protocol.js.map +1 -1
- package/dist/web/smoke-web-history.js +59 -1
- package/dist/web/smoke-web-history.js.map +1 -1
- package/dist/web/smoke-web-terminal-tasks.js +1 -0
- package/dist/web/smoke-web-terminal-tasks.js.map +1 -1
- package/package.json +4 -4
- package/dist/tasks/task-tools.d.ts +0 -31
- package/dist/tasks/task-tools.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export const BUILTIN_TOOL_NAMES = {
|
|
2
|
+
fileEdit: "file_edit",
|
|
3
|
+
fileWrite: "file_write",
|
|
4
|
+
fileRead: "file_read",
|
|
5
|
+
fileList: "file_list",
|
|
6
|
+
fileSearch: "file_search",
|
|
7
|
+
terminalRun: "terminal_run",
|
|
8
|
+
terminalControl: "terminal_control",
|
|
9
|
+
webSearch: "web_search",
|
|
10
|
+
imageCreate: "image_create",
|
|
11
|
+
imageInspect: "image_inspect",
|
|
12
|
+
imageNote: "image_note",
|
|
13
|
+
planUpdate: "plan_update",
|
|
14
|
+
subagentRun: "subagent_run",
|
|
15
|
+
subagentOutput: "subagent_output",
|
|
16
|
+
subagentList: "subagent_list",
|
|
17
|
+
subagentGet: "subagent_get",
|
|
18
|
+
subagentStop: "subagent_stop",
|
|
19
|
+
subagentMessage: "subagent_message",
|
|
20
|
+
subagentResume: "subagent_resume",
|
|
21
|
+
subagentReport: "subagent_report",
|
|
22
|
+
secretList: "secret_list",
|
|
23
|
+
secretInfo: "secret_info",
|
|
24
|
+
secretRequest: "secret_request",
|
|
25
|
+
};
|
|
26
|
+
const BUILTIN_PRESENTATION = {
|
|
27
|
+
file_edit: { family: "filesystem", action: "edit", label: "编辑文件", visibility: "primary" },
|
|
28
|
+
file_write: { family: "filesystem", action: "write", label: "写入文件", visibility: "primary" },
|
|
29
|
+
file_read: { family: "filesystem", action: "read", label: "读取文件", visibility: "primary" },
|
|
30
|
+
file_list: { family: "filesystem", action: "list", label: "列出文件", visibility: "primary" },
|
|
31
|
+
file_search: { family: "filesystem", action: "search", label: "搜索文本", visibility: "primary" },
|
|
32
|
+
terminal_run: { family: "terminal", action: "run", label: "执行命令", visibility: "primary" },
|
|
33
|
+
terminal_control: { family: "terminal", action: "control", label: "终端交互", visibility: "nested" },
|
|
34
|
+
web_search: { family: "web", action: "search", label: "网络搜索", visibility: "primary" },
|
|
35
|
+
image_create: { family: "image", action: "create", label: "图片生成", visibility: "primary" },
|
|
36
|
+
image_inspect: { family: "image", action: "inspect", label: "读取图片", visibility: "primary" },
|
|
37
|
+
image_note: { family: "image", action: "note", label: "记录图片", visibility: "nested" },
|
|
38
|
+
plan_update: { family: "planning", action: "update", label: "任务计划", visibility: "primary" },
|
|
39
|
+
subagent_run: { family: "subagent", action: "run", label: "子任务", visibility: "primary" },
|
|
40
|
+
subagent_output: { family: "subagent", action: "output", label: "读取子任务输出", visibility: "nested" },
|
|
41
|
+
subagent_list: { family: "subagent", action: "list", label: "子任务列表", visibility: "hidden" },
|
|
42
|
+
subagent_get: { family: "subagent", action: "get", label: "查看子任务", visibility: "hidden" },
|
|
43
|
+
subagent_stop: { family: "subagent", action: "stop", label: "停止子任务", visibility: "nested" },
|
|
44
|
+
subagent_message: { family: "subagent", action: "message", label: "发送子任务消息", visibility: "nested" },
|
|
45
|
+
subagent_resume: { family: "subagent", action: "resume", label: "恢复子任务", visibility: "nested" },
|
|
46
|
+
subagent_report: { family: "subagent", action: "report", label: "子任务报告", visibility: "hidden" },
|
|
47
|
+
secret_list: { family: "secrets", action: "list", label: "密钥列表", visibility: "primary" },
|
|
48
|
+
secret_info: { family: "secrets", action: "info", label: "查看密钥", visibility: "primary" },
|
|
49
|
+
secret_request: { family: "secrets", action: "request", label: "申请密钥", visibility: "primary" },
|
|
50
|
+
};
|
|
51
|
+
export function builtinToolPresentation(name) {
|
|
52
|
+
return BUILTIN_PRESENTATION[name];
|
|
53
|
+
}
|
|
54
|
+
export function toolPresentationForSource(name, source = "unknown") {
|
|
55
|
+
const builtin = builtinToolPresentation(name);
|
|
56
|
+
if (builtin)
|
|
57
|
+
return builtin;
|
|
58
|
+
if (source === "plugin")
|
|
59
|
+
return { family: "plugin", action: name, label: name, visibility: "primary" };
|
|
60
|
+
if (source === "external")
|
|
61
|
+
return { family: "external", action: name, label: name, visibility: "primary" };
|
|
62
|
+
return { family: "other", action: name, label: name, visibility: "primary" };
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=tool-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-catalog.js","sourceRoot":"","sources":["../../src/tools/tool-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,32 @@
|
|
|
1
1
|
import type { Message, ToolUseRequest } from "../types/messages.js";
|
|
2
|
-
import { type RunToolUseOptions } from "./run-tool-use.js";
|
|
3
|
-
import type { Tool, ToolUseContext } from "./tool.js";
|
|
2
|
+
import { type RunToolUseOptions, type ToolMessageUpdate } from "./run-tool-use.js";
|
|
3
|
+
import type { Tool, ToolProgressEvent, ToolUseContext } from "./tool.js";
|
|
4
4
|
export interface RunToolsResult {
|
|
5
5
|
messages: Message[];
|
|
6
6
|
context: ToolUseContext;
|
|
7
7
|
}
|
|
8
|
+
export type RunToolsEvent = {
|
|
9
|
+
type: "progress";
|
|
10
|
+
index: number;
|
|
11
|
+
total: number;
|
|
12
|
+
request: ToolUseRequest;
|
|
13
|
+
progress: ToolProgressEvent;
|
|
14
|
+
} | {
|
|
15
|
+
type: "settled";
|
|
16
|
+
index: number;
|
|
17
|
+
total: number;
|
|
18
|
+
request: ToolUseRequest;
|
|
19
|
+
updates: ToolMessageUpdate[];
|
|
20
|
+
ok: boolean;
|
|
21
|
+
};
|
|
22
|
+
export interface RunToolsOptions extends RunToolUseOptions {
|
|
23
|
+
onEvent?: (event: RunToolsEvent) => void;
|
|
24
|
+
}
|
|
8
25
|
interface ParsedToolCall {
|
|
9
26
|
request: ToolUseRequest;
|
|
10
27
|
tool?: Tool;
|
|
11
28
|
concurrencySafe: boolean;
|
|
12
29
|
}
|
|
13
|
-
export declare function runTools(requests: readonly ToolUseRequest[], context: ToolUseContext, options?:
|
|
30
|
+
export declare function runTools(requests: readonly ToolUseRequest[], context: ToolUseContext, options?: RunToolsOptions): Promise<RunToolsResult>;
|
|
14
31
|
export declare function partitionToolCalls(requests: readonly ToolUseRequest[], context: ToolUseContext): ParsedToolCall[][];
|
|
15
32
|
export {};
|
|
@@ -2,15 +2,18 @@ import { runToolUse } from "./run-tool-use.js";
|
|
|
2
2
|
export async function runTools(requests, context, options = {}) {
|
|
3
3
|
let currentContext = context;
|
|
4
4
|
const messages = [];
|
|
5
|
+
const indexes = new Map(requests.map((request, index) => [request.id, index]));
|
|
5
6
|
for (const batch of partitionToolCalls(requests, currentContext)) {
|
|
6
7
|
if (batch.length === 1 && !batch[0].concurrencySafe) {
|
|
7
|
-
const
|
|
8
|
+
const item = batch[0];
|
|
9
|
+
const updates = await runToolUseWithEvents(item, currentContext, options, indexes.get(item.request.id) ?? 0, requests.length);
|
|
10
|
+
options.onEvent?.({ type: "settled", index: indexes.get(item.request.id) ?? 0, total: requests.length, request: item.request, updates, ok: updatesOk(updates) });
|
|
8
11
|
const applied = applyUpdates(updates, currentContext);
|
|
9
12
|
currentContext = applied.context;
|
|
10
13
|
messages.push(...applied.messages);
|
|
11
14
|
continue;
|
|
12
15
|
}
|
|
13
|
-
const batchResults = await runToolsConcurrently(batch, currentContext, options);
|
|
16
|
+
const batchResults = await runToolsConcurrently(batch, currentContext, options, indexes, requests.length);
|
|
14
17
|
for (const item of batch) {
|
|
15
18
|
const updates = batchResults.get(item.request.id) ?? [];
|
|
16
19
|
const applied = applyUpdates(updates, currentContext);
|
|
@@ -44,7 +47,7 @@ export function partitionToolCalls(requests, context) {
|
|
|
44
47
|
batches.push(concurrentBatch);
|
|
45
48
|
return batches;
|
|
46
49
|
}
|
|
47
|
-
async function runToolsConcurrently(batch, context, options) {
|
|
50
|
+
async function runToolsConcurrently(batch, context, options, indexes, total) {
|
|
48
51
|
const maxConcurrency = maxToolConcurrency();
|
|
49
52
|
const results = new Map();
|
|
50
53
|
let cursor = 0;
|
|
@@ -52,12 +55,34 @@ async function runToolsConcurrently(batch, context, options) {
|
|
|
52
55
|
while (cursor < batch.length) {
|
|
53
56
|
const item = batch[cursor];
|
|
54
57
|
cursor += 1;
|
|
55
|
-
|
|
58
|
+
const index = indexes.get(item.request.id) ?? 0;
|
|
59
|
+
const updates = await runToolUseWithEvents(item, context, options, index, total);
|
|
60
|
+
results.set(item.request.id, updates);
|
|
61
|
+
options.onEvent?.({ type: "settled", index, total, request: item.request, updates, ok: updatesOk(updates) });
|
|
56
62
|
}
|
|
57
63
|
}
|
|
58
64
|
await Promise.all(Array.from({ length: Math.min(maxConcurrency, batch.length) }, () => worker()));
|
|
59
65
|
return results;
|
|
60
66
|
}
|
|
67
|
+
async function runToolUseWithEvents(item, context, options, index, total) {
|
|
68
|
+
let sequence = 0;
|
|
69
|
+
const contextWithEvents = {
|
|
70
|
+
...context,
|
|
71
|
+
emit(progress) {
|
|
72
|
+
if (progress.sequence !== undefined)
|
|
73
|
+
sequence = Math.max(sequence, progress.sequence);
|
|
74
|
+
else
|
|
75
|
+
sequence += 1;
|
|
76
|
+
const normalized = { ...progress, toolUseId: progress.toolUseId ?? item.request.id, sequence };
|
|
77
|
+
options.onEvent?.({ type: "progress", index, total, request: item.request, progress: normalized });
|
|
78
|
+
context.emit(normalized);
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
return runToolUse(item.request, contextWithEvents, options);
|
|
82
|
+
}
|
|
83
|
+
function updatesOk(updates) {
|
|
84
|
+
return updates.every((update) => update.message.blocks.every((block) => block.type !== "tool_result" || block.ok));
|
|
85
|
+
}
|
|
61
86
|
function applyUpdates(updates, context) {
|
|
62
87
|
let currentContext = context;
|
|
63
88
|
const messages = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-orchestration.js","sourceRoot":"","sources":["../../src/tools/tool-orchestration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAkD,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-orchestration.js","sourceRoot":"","sources":["../../src/tools/tool-orchestration.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/tool.d.ts
CHANGED
|
@@ -33,11 +33,24 @@ export interface ToolMetadata {
|
|
|
33
33
|
/** Strip unknown top-level object fields before JSON schema validation. Use only for simple, non-destructive tools. */
|
|
34
34
|
ignoreUnknownInputProperties?: boolean;
|
|
35
35
|
}
|
|
36
|
+
export type ToolStreamChannel = "state" | "item" | "stdout" | "stderr" | "patch" | "artifact" | "metric";
|
|
37
|
+
export type ToolStreamOperation = "replace" | "append" | "upsert" | "remove";
|
|
36
38
|
export interface ToolProgressEvent {
|
|
37
39
|
toolName: string;
|
|
38
40
|
toolUseId?: string;
|
|
39
41
|
message: string;
|
|
40
42
|
data?: unknown;
|
|
43
|
+
channel?: ToolStreamChannel;
|
|
44
|
+
operation?: ToolStreamOperation;
|
|
45
|
+
key?: string;
|
|
46
|
+
phase?: string;
|
|
47
|
+
sequence?: number;
|
|
48
|
+
progress?: {
|
|
49
|
+
current?: number;
|
|
50
|
+
total?: number;
|
|
51
|
+
unit?: string;
|
|
52
|
+
};
|
|
53
|
+
transient?: boolean;
|
|
41
54
|
}
|
|
42
55
|
export type ValidationResult<TInput> = {
|
|
43
56
|
ok: true;
|
package/dist/tools/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"AA6KA,MAAM,UAAU,sBAAsB,CAAC,IAAU,EAAE,OAAwB;IACzE,OAAO,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1G,CAAC"}
|
package/dist/types/events.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CompactionReport } from "../context/compaction.js";
|
|
2
2
|
import type { TerminalReason } from "../core/state.js";
|
|
3
3
|
import type { ModelUsage } from "../model/model-gateway.js";
|
|
4
|
+
import type { ToolProgressEvent } from "../tools/tool.js";
|
|
4
5
|
import type { Message, ToolUseRequest } from "./messages.js";
|
|
5
6
|
export interface PromptCacheSectionMetric {
|
|
6
7
|
name: string;
|
|
@@ -73,10 +74,32 @@ export type AgentEvent = {
|
|
|
73
74
|
} | {
|
|
74
75
|
type: "tool.started";
|
|
75
76
|
toolUse: ToolUseRequest;
|
|
77
|
+
index?: number;
|
|
78
|
+
total?: number;
|
|
79
|
+
} | {
|
|
80
|
+
type: "tool.progress";
|
|
81
|
+
toolUse: ToolUseRequest;
|
|
82
|
+
progress: ToolProgressEvent;
|
|
83
|
+
index?: number;
|
|
84
|
+
total?: number;
|
|
85
|
+
} | {
|
|
86
|
+
type: "tool.result.available";
|
|
87
|
+
toolUse: ToolUseRequest;
|
|
88
|
+
ok: boolean;
|
|
89
|
+
messages: Message[];
|
|
90
|
+
index?: number;
|
|
91
|
+
total?: number;
|
|
76
92
|
} | {
|
|
77
93
|
type: "tool.finished";
|
|
78
94
|
toolUse: ToolUseRequest;
|
|
79
95
|
ok: boolean;
|
|
96
|
+
index?: number;
|
|
97
|
+
total?: number;
|
|
98
|
+
} | {
|
|
99
|
+
type: "tool.batch.completed";
|
|
100
|
+
total: number;
|
|
101
|
+
succeeded: number;
|
|
102
|
+
failed: number;
|
|
80
103
|
} | {
|
|
81
104
|
type: "usage";
|
|
82
105
|
usage: ModelUsage;
|
package/dist/web/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { CommunicationLogger, LoggingModelGateway } from "../model/communication
|
|
|
7
7
|
import type { ModelUsage, ReasoningConfig } from "../model/model-gateway.js";
|
|
8
8
|
import { ToolRegistry } from "../tools/registry.js";
|
|
9
9
|
import type { Tool } from "../tools/tool.js";
|
|
10
|
+
import { type ToolPresentation } from "../tools/tool-catalog.js";
|
|
10
11
|
import { ExecProcessManager } from "../tools/builtins/exec-process-manager.js";
|
|
11
12
|
import { type AgentToolRuntime } from "../agents/agent-tool.js";
|
|
12
13
|
import { TaskStore } from "../tasks/task-store.js";
|
|
@@ -48,6 +49,7 @@ interface WebRuntimePluginSupport {
|
|
|
48
49
|
interface WebRuntimeToolCatalogItem {
|
|
49
50
|
name: string;
|
|
50
51
|
source: "builtin" | "external" | "plugin";
|
|
52
|
+
presentation: ToolPresentation;
|
|
51
53
|
pluginId?: string;
|
|
52
54
|
pluginName?: string;
|
|
53
55
|
}
|
|
@@ -116,12 +118,42 @@ interface UiToolDisplay {
|
|
|
116
118
|
facts: UiToolFact[];
|
|
117
119
|
previews: UiToolPreview[];
|
|
118
120
|
}
|
|
121
|
+
interface UiToolStreamStep {
|
|
122
|
+
key: string;
|
|
123
|
+
message: string;
|
|
124
|
+
toolName?: string;
|
|
125
|
+
toolLabel?: string;
|
|
126
|
+
status: "running" | "completed" | "failed";
|
|
127
|
+
phase?: string;
|
|
128
|
+
sequence?: number;
|
|
129
|
+
}
|
|
130
|
+
interface UiToolStreamChunk {
|
|
131
|
+
sequence: number;
|
|
132
|
+
stream: "stdout" | "stderr" | "output";
|
|
133
|
+
text: string;
|
|
134
|
+
}
|
|
135
|
+
interface UiToolStream {
|
|
136
|
+
message?: string;
|
|
137
|
+
phase?: string;
|
|
138
|
+
channel?: string;
|
|
139
|
+
sequence?: number;
|
|
140
|
+
current?: number;
|
|
141
|
+
total?: number;
|
|
142
|
+
unit?: string;
|
|
143
|
+
stdout?: string;
|
|
144
|
+
stderr?: string;
|
|
145
|
+
output?: string;
|
|
146
|
+
chunks?: UiToolStreamChunk[];
|
|
147
|
+
steps?: UiToolStreamStep[];
|
|
148
|
+
expanded?: boolean;
|
|
149
|
+
}
|
|
119
150
|
interface UiLine {
|
|
120
151
|
id: number;
|
|
121
152
|
kind: "system" | "user" | "assistant" | "thinking" | "tool" | "error" | "meta";
|
|
122
153
|
text: string;
|
|
123
154
|
messageId?: string;
|
|
124
155
|
toolName?: string;
|
|
156
|
+
toolPresentation?: ToolPresentation;
|
|
125
157
|
parentToolName?: string;
|
|
126
158
|
toolUseId?: string;
|
|
127
159
|
parentToolUseId?: string;
|
|
@@ -129,6 +161,7 @@ interface UiLine {
|
|
|
129
161
|
bodyTitle?: string;
|
|
130
162
|
titleStatus?: "success" | "failure";
|
|
131
163
|
toolDisplay?: UiToolDisplay;
|
|
164
|
+
toolStream?: UiToolStream;
|
|
132
165
|
format?: "markdown" | "ansi" | "plain" | "diff";
|
|
133
166
|
previewStyle?: "summary";
|
|
134
167
|
summaryMaxLines?: number;
|
|
@@ -411,6 +444,7 @@ export declare class WebRepl {
|
|
|
411
444
|
configuredEnabled: boolean;
|
|
412
445
|
name: string;
|
|
413
446
|
source: "builtin" | "external" | "plugin";
|
|
447
|
+
presentation: ToolPresentation;
|
|
414
448
|
pluginId?: string;
|
|
415
449
|
pluginName?: string;
|
|
416
450
|
}[];
|
|
@@ -425,6 +459,7 @@ export declare class WebRepl {
|
|
|
425
459
|
effectiveEnabled: boolean;
|
|
426
460
|
name: string;
|
|
427
461
|
source: "builtin" | "external" | "plugin";
|
|
462
|
+
presentation: ToolPresentation;
|
|
428
463
|
pluginId?: string;
|
|
429
464
|
pluginName?: string;
|
|
430
465
|
}[];
|
|
@@ -515,6 +550,10 @@ export declare class WebRepl {
|
|
|
515
550
|
private finalizeLiveLine;
|
|
516
551
|
private finalizeThinkingLine;
|
|
517
552
|
private finalizeLiveToolLines;
|
|
553
|
+
private cancelLiveToolLines;
|
|
554
|
+
private patchLiveToolLine;
|
|
555
|
+
private applyToolProgress;
|
|
556
|
+
private applyAvailableToolResult;
|
|
518
557
|
private handleEvent;
|
|
519
558
|
private matchesPendingUserImageEcho;
|
|
520
559
|
private handleCommandOrPrompt;
|