@tyvm/knowhow 0.0.138 → 0.0.141
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/autodoc/chat-guide.md +1 -0
- package/package.json +5 -2
- package/scripts/build-for-node.sh +4 -4
- package/src/agents/base/base.ts +254 -29
- package/src/agents/patcher/patcher.ts +1 -1
- package/src/agents/researcher/researcher.ts +2 -2
- package/src/agents/tools/agentCall.ts +6 -0
- package/src/agents/tools/connectAgent.ts +353 -0
- package/src/agents/tools/index.ts +6 -0
- package/src/agents/tools/list.ts +48 -0
- package/src/agents/tools/observe.ts +245 -0
- package/src/agents/tools/replyToParent.ts +122 -0
- package/src/agents/tools/runGenerate.ts +209 -0
- package/src/agents/tools/sendAgentMessage.ts +138 -0
- package/src/agents/tools/startAgentTask.ts +92 -5
- package/src/agents/tools/waitForAgentCompleted.ts +269 -0
- package/src/ai.ts +1 -0
- package/src/chat/modules/AgentModule.ts +89 -27
- package/src/chat/modules/SessionsModule.ts +6 -10
- package/src/clients/contextLimits.ts +26 -0
- package/src/clients/pricing/anthropic.ts +12 -0
- package/src/commands/agent.ts +22 -0
- package/src/commands/agents.ts +83 -0
- package/src/commands/misc.ts +6 -0
- package/src/commands/modules.ts +159 -7
- package/src/commands/services.ts +14 -0
- package/src/generate.ts +25 -3
- package/src/services/AgentService.ts +21 -3
- package/src/services/AgentSyncFs.ts +56 -0
- package/src/services/AgentSyncKnowhowWeb.ts +1 -1
- package/src/services/EventService.ts +4 -1
- package/src/services/KnowhowClient.ts +7 -0
- package/src/services/LazyToolsService.ts +7 -3
- package/src/services/MinimalToolsService.ts +15 -7
- package/src/services/SyncedAgentWatcher.ts +2 -0
- package/src/services/SyncerService.ts +35 -6
- package/src/services/Tools.ts +43 -3
- package/src/services/modules/index.ts +127 -46
- package/src/types.ts +5 -0
- package/tests/agents/interrupt.test.ts +11 -18
- package/tests/agents/observe-base.test.ts +183 -0
- package/tests/agents/tools/connectAgent.test.ts +138 -0
- package/tests/agents/tools/observe.test.ts +179 -0
- package/tests/agents/tools/replyToParent.test.ts +125 -0
- package/tests/agents/tools/sendAgentMessage.test.ts +99 -0
- package/tests/agents/tools/waitForAgentCompleted.test.ts +147 -0
- package/tests/chat/detach-attach-rendering.test.ts +315 -0
- package/tests/clients/contextLimits.test.ts +23 -1
- package/tests/clients/pricing.test.ts +20 -1
- package/tests/services/Tools.test.ts +172 -9
- package/tests/unit/modules/moduleLoading.test.ts +69 -0
- package/ts_build/package.json +5 -2
- package/ts_build/src/agents/base/base.d.ts +24 -1
- package/ts_build/src/agents/base/base.js +111 -16
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/patcher/patcher.js +1 -1
- package/ts_build/src/agents/patcher/patcher.js.map +1 -1
- package/ts_build/src/agents/researcher/researcher.js +2 -2
- package/ts_build/src/agents/researcher/researcher.js.map +1 -1
- package/ts_build/src/agents/tools/agentCall.js.map +1 -1
- package/ts_build/src/agents/tools/connectAgent.d.ts +21 -0
- package/ts_build/src/agents/tools/connectAgent.js +284 -0
- package/ts_build/src/agents/tools/connectAgent.js.map +1 -0
- package/ts_build/src/agents/tools/index.d.ts +6 -0
- package/ts_build/src/agents/tools/index.js +6 -0
- package/ts_build/src/agents/tools/index.js.map +1 -1
- package/ts_build/src/agents/tools/list.js +40 -0
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/agents/tools/observe.d.ts +20 -0
- package/ts_build/src/agents/tools/observe.js +144 -0
- package/ts_build/src/agents/tools/observe.js.map +1 -0
- package/ts_build/src/agents/tools/replyToParent.d.ts +4 -0
- package/ts_build/src/agents/tools/replyToParent.js +118 -0
- package/ts_build/src/agents/tools/replyToParent.js.map +1 -0
- package/ts_build/src/agents/tools/runGenerate.d.ts +19 -0
- package/ts_build/src/agents/tools/runGenerate.js +138 -0
- package/ts_build/src/agents/tools/runGenerate.js.map +1 -0
- package/ts_build/src/agents/tools/sendAgentMessage.d.ts +11 -0
- package/ts_build/src/agents/tools/sendAgentMessage.js +118 -0
- package/ts_build/src/agents/tools/sendAgentMessage.js.map +1 -0
- package/ts_build/src/agents/tools/startAgentTask.d.ts +7 -0
- package/ts_build/src/agents/tools/startAgentTask.js +53 -6
- package/ts_build/src/agents/tools/startAgentTask.js.map +1 -1
- package/ts_build/src/agents/tools/waitForAgentCompleted.d.ts +10 -0
- package/ts_build/src/agents/tools/waitForAgentCompleted.js +229 -0
- package/ts_build/src/agents/tools/waitForAgentCompleted.js.map +1 -0
- package/ts_build/src/ai.d.ts +1 -0
- package/ts_build/src/ai.js.map +1 -1
- package/ts_build/src/chat/modules/AgentModule.d.ts +3 -1
- package/ts_build/src/chat/modules/AgentModule.js +46 -21
- package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
- package/ts_build/src/chat/modules/SessionsModule.js +1 -6
- package/ts_build/src/chat/modules/SessionsModule.js.map +1 -1
- package/ts_build/src/clients/contextLimits.js +21 -0
- package/ts_build/src/clients/contextLimits.js.map +1 -1
- package/ts_build/src/clients/pricing/anthropic.d.ts +2 -0
- package/ts_build/src/clients/pricing/anthropic.js +9 -0
- package/ts_build/src/clients/pricing/anthropic.js.map +1 -1
- package/ts_build/src/commands/agent.js +11 -0
- package/ts_build/src/commands/agent.js.map +1 -1
- package/ts_build/src/commands/agents.js +61 -0
- package/ts_build/src/commands/agents.js.map +1 -1
- package/ts_build/src/commands/misc.js +2 -0
- package/ts_build/src/commands/misc.js.map +1 -1
- package/ts_build/src/commands/modules.js +86 -7
- package/ts_build/src/commands/modules.js.map +1 -1
- package/ts_build/src/commands/services.js +10 -0
- package/ts_build/src/commands/services.js.map +1 -1
- package/ts_build/src/generate.d.ts +2 -0
- package/ts_build/src/generate.js +11 -3
- package/ts_build/src/generate.js.map +1 -1
- package/ts_build/src/services/AgentService.d.ts +4 -1
- package/ts_build/src/services/AgentService.js +9 -2
- package/ts_build/src/services/AgentService.js.map +1 -1
- package/ts_build/src/services/AgentSyncFs.d.ts +2 -0
- package/ts_build/src/services/AgentSyncFs.js +35 -0
- package/ts_build/src/services/AgentSyncFs.js.map +1 -1
- package/ts_build/src/services/AgentSyncKnowhowWeb.d.ts +1 -1
- package/ts_build/src/services/EventService.d.ts +4 -1
- package/ts_build/src/services/EventService.js.map +1 -1
- package/ts_build/src/services/KnowhowClient.js +3 -0
- package/ts_build/src/services/KnowhowClient.js.map +1 -1
- package/ts_build/src/services/LazyToolsService.d.ts +2 -2
- package/ts_build/src/services/LazyToolsService.js +2 -2
- package/ts_build/src/services/LazyToolsService.js.map +1 -1
- package/ts_build/src/services/MinimalToolsService.d.ts +2 -2
- package/ts_build/src/services/MinimalToolsService.js +6 -6
- package/ts_build/src/services/MinimalToolsService.js.map +1 -1
- package/ts_build/src/services/SyncedAgentWatcher.d.ts +1 -0
- package/ts_build/src/services/SyncedAgentWatcher.js.map +1 -1
- package/ts_build/src/services/SyncerService.d.ts +2 -1
- package/ts_build/src/services/SyncerService.js +8 -2
- package/ts_build/src/services/SyncerService.js.map +1 -1
- package/ts_build/src/services/Tools.d.ts +6 -1
- package/ts_build/src/services/Tools.js +9 -3
- package/ts_build/src/services/Tools.js.map +1 -1
- package/ts_build/src/services/modules/index.d.ts +1 -1
- package/ts_build/src/services/modules/index.js +67 -27
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/types.d.ts +3 -0
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/tests/agents/interrupt.test.d.ts +0 -1
- package/ts_build/tests/agents/interrupt.test.js +3 -13
- package/ts_build/tests/agents/interrupt.test.js.map +1 -1
- package/ts_build/tests/agents/observe-base.test.d.ts +1 -0
- package/ts_build/tests/agents/observe-base.test.js +149 -0
- package/ts_build/tests/agents/observe-base.test.js.map +1 -0
- package/ts_build/tests/agents/tools/connectAgent.test.d.ts +1 -0
- package/ts_build/tests/agents/tools/connectAgent.test.js +142 -0
- package/ts_build/tests/agents/tools/connectAgent.test.js.map +1 -0
- package/ts_build/tests/agents/tools/observe.test.d.ts +1 -0
- package/ts_build/tests/agents/tools/observe.test.js +148 -0
- package/ts_build/tests/agents/tools/observe.test.js.map +1 -0
- package/ts_build/tests/agents/tools/replyToParent.test.d.ts +1 -0
- package/ts_build/tests/agents/tools/replyToParent.test.js +116 -0
- package/ts_build/tests/agents/tools/replyToParent.test.js.map +1 -0
- package/ts_build/tests/agents/tools/sendAgentMessage.test.d.ts +1 -0
- package/ts_build/tests/agents/tools/sendAgentMessage.test.js +112 -0
- package/ts_build/tests/agents/tools/sendAgentMessage.test.js.map +1 -0
- package/ts_build/tests/agents/tools/waitForAgentCompleted.test.d.ts +1 -0
- package/ts_build/tests/agents/tools/waitForAgentCompleted.test.js +147 -0
- package/ts_build/tests/agents/tools/waitForAgentCompleted.test.js.map +1 -0
- package/ts_build/tests/chat/detach-attach-rendering.test.d.ts +1 -0
- package/ts_build/tests/chat/detach-attach-rendering.test.js +168 -0
- package/ts_build/tests/chat/detach-attach-rendering.test.js.map +1 -0
- package/ts_build/tests/clients/contextLimits.test.js +11 -1
- package/ts_build/tests/clients/contextLimits.test.js.map +1 -1
- package/ts_build/tests/clients/pricing.test.js +10 -1
- package/ts_build/tests/clients/pricing.test.js.map +1 -1
- package/ts_build/tests/services/Tools.test.js +126 -8
- package/ts_build/tests/services/Tools.test.js.map +1 -1
- package/ts_build/tests/unit/modules/moduleLoading.test.js +84 -0
- package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendAgentMessage.js","sourceRoot":"","sources":["../../../../src/agents/tools/sendAgentMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,19 @@ export interface StartAgentTaskParams {
|
|
|
5
5
|
taskId?: string;
|
|
6
6
|
resume?: boolean;
|
|
7
7
|
prompt: string;
|
|
8
|
+
syncRemote?: boolean;
|
|
8
9
|
provider?: string;
|
|
9
10
|
model?: string;
|
|
10
11
|
agentName?: string;
|
|
11
12
|
maxTimeLimit?: number;
|
|
12
13
|
maxSpendLimit?: number;
|
|
13
14
|
waitForCompletion?: boolean;
|
|
15
|
+
parentTaskId?: string;
|
|
16
|
+
_ctx?: {
|
|
17
|
+
caller?: any;
|
|
18
|
+
taskId?: string;
|
|
19
|
+
[key: string]: any;
|
|
20
|
+
};
|
|
14
21
|
}
|
|
15
22
|
export declare function startAgentTask(params: StartAgentTaskParams): Promise<string>;
|
|
16
23
|
export declare const startAgentTaskDefinition: Tool;
|
|
@@ -52,21 +52,50 @@ function generateTaskId(prompt) {
|
|
|
52
52
|
const fullId = `${epochSeconds}-${wordPart}`;
|
|
53
53
|
return fullId.slice(0, 80);
|
|
54
54
|
}
|
|
55
|
+
function subagentCapabilitiesNote() {
|
|
56
|
+
const lines = [
|
|
57
|
+
"",
|
|
58
|
+
"---",
|
|
59
|
+
"SUBAGENT ORCHESTRATION CAPABILITIES:",
|
|
60
|
+
"You are running as a knowhow agent with a synchronized task directory. In addition to your tools,",
|
|
61
|
+
"you can shell out (via execCommand) to the `knowhow agents` CLI to coordinate and inspect other agents:",
|
|
62
|
+
" • knowhow agents list — list running/recent agent tasks (with row indexes)",
|
|
63
|
+
" • knowhow agents status <id|-i N> — status, cost, last tool/message for a task",
|
|
64
|
+
" • knowhow agents tail <id|-i N> [-f] — read recent messages (read-only; -f to follow live)",
|
|
65
|
+
" • knowhow agents answer <id|-i N> — print the final answer of a COMPLETED task",
|
|
66
|
+
" • knowhow agents attach <id|-i N> — open the interactive chat attached to a running task",
|
|
67
|
+
"You can spawn more subagents with the startAgentTask tool, or run whole pipelines with the runGenerate tool",
|
|
68
|
+
"(supports dependsOn ordering, per-source agents, and concurrency for map/reduce fan-out).",
|
|
69
|
+
"To coordinate spawned subagents from your tools: use waitForAgentCompleted (join a subagent and",
|
|
70
|
+
"get a structured { status, costUsd, finalAnswer } result) and observe (stream a tool's results",
|
|
71
|
+
"back to yourself on an interval, e.g. observe waitForAgentCompleted or `agents status`).",
|
|
72
|
+
"To communicate with running agents: use sendAgentMessage (send a message or /poke to a child/peer/parent),",
|
|
73
|
+
"replyToParent (report back to whoever spawned you), and connectAgent (wire agents together with an ARRAY",
|
|
74
|
+
"of { listener, speaker } connections — enables bidirectional, pipeline, star, and mesh topologies in one call).",
|
|
75
|
+
];
|
|
76
|
+
lines.push("---", "");
|
|
77
|
+
return lines.join("\n");
|
|
78
|
+
}
|
|
55
79
|
async function startAgentTask(params) {
|
|
56
|
-
const { messageId, prompt, taskId: providedTaskId, resume, syncFs, provider, model, agentName, maxTimeLimit, maxSpendLimit, waitForCompletion, } = params;
|
|
80
|
+
const { messageId, prompt, taskId: providedTaskId, resume, syncFs, syncRemote, provider, model, agentName, maxTimeLimit, maxSpendLimit, waitForCompletion, parentTaskId: explicitParentTaskId, _ctx, } = params;
|
|
57
81
|
if (!prompt) {
|
|
58
82
|
throw new Error("prompt is required to create a chat task");
|
|
59
83
|
}
|
|
84
|
+
const useSyncFs = syncFs !== false && !messageId;
|
|
60
85
|
const taskId = providedTaskId ?? generateTaskId(prompt);
|
|
61
86
|
const agentTaskDir = path.join(AGENTS_DIR, taskId);
|
|
87
|
+
const parentTaskId = explicitParentTaskId ?? _ctx?.taskId ?? _ctx?.caller?.currentTaskId;
|
|
62
88
|
const args = ["agent"];
|
|
63
89
|
if (messageId) {
|
|
64
90
|
args.push("--message-id", messageId);
|
|
65
91
|
}
|
|
66
|
-
else if (
|
|
92
|
+
else if (useSyncFs) {
|
|
67
93
|
args.push("--sync-fs");
|
|
68
94
|
}
|
|
69
|
-
if (
|
|
95
|
+
if (syncRemote) {
|
|
96
|
+
args.push("--sync-remote");
|
|
97
|
+
}
|
|
98
|
+
if (useSyncFs || providedTaskId) {
|
|
70
99
|
args.push("--task-id", taskId);
|
|
71
100
|
}
|
|
72
101
|
if (provider) {
|
|
@@ -84,6 +113,9 @@ async function startAgentTask(params) {
|
|
|
84
113
|
if (maxSpendLimit !== undefined) {
|
|
85
114
|
args.push("--max-spend-limit", String(maxSpendLimit));
|
|
86
115
|
}
|
|
116
|
+
if (parentTaskId) {
|
|
117
|
+
args.push("--parent-task-id", parentTaskId);
|
|
118
|
+
}
|
|
87
119
|
if (resume) {
|
|
88
120
|
args.push("--resume");
|
|
89
121
|
}
|
|
@@ -102,7 +134,10 @@ async function startAgentTask(params) {
|
|
|
102
134
|
});
|
|
103
135
|
const pid = child.pid;
|
|
104
136
|
fs.writeSync(fd, `PID: ${pid}\n`);
|
|
105
|
-
|
|
137
|
+
const promptWithCaps = resume
|
|
138
|
+
? prompt
|
|
139
|
+
: prompt + subagentCapabilitiesNote();
|
|
140
|
+
child.stdin.write(promptWithCaps, "utf8");
|
|
106
141
|
child.stdin.end();
|
|
107
142
|
return new Promise((resolve) => {
|
|
108
143
|
let settled = false;
|
|
@@ -119,7 +154,7 @@ async function startAgentTask(params) {
|
|
|
119
154
|
child.once("error", (e) => {
|
|
120
155
|
done(`Failed to start agent: ${String(e)}\nLogs: ${logPath}`);
|
|
121
156
|
});
|
|
122
|
-
const syncFsNote =
|
|
157
|
+
const syncFsNote = useSyncFs
|
|
123
158
|
? `\nTask ID: ${taskId}\nAgent dir: ${agentTaskDir}\n` +
|
|
124
159
|
`To send agent messages, write to: ${agentTaskDir}/input.txt\n` +
|
|
125
160
|
`To check status, read: ${agentTaskDir}/status.txt\n`
|
|
@@ -159,7 +194,14 @@ exports.startAgentTaskDefinition = {
|
|
|
159
194
|
},
|
|
160
195
|
syncFs: {
|
|
161
196
|
type: "boolean",
|
|
162
|
-
description: "
|
|
197
|
+
description: "Filesystem-based synchronization for the task. Defaults to true (enabled) when no messageId is given, " +
|
|
198
|
+
"so the spawned agent always appears in `knowhow agents list` and can be attached/tailed. Pass false to opt out.",
|
|
199
|
+
},
|
|
200
|
+
syncRemote: {
|
|
201
|
+
type: "boolean",
|
|
202
|
+
description: "Push this agent's work to a remote Knowhow task identified by taskId (in addition to fs sync). " +
|
|
203
|
+
"Use this to sync a spawned subagent's progress to an already-created remote task. " +
|
|
204
|
+
"If messageId is given instead, a fresh remote task is created from that message.",
|
|
163
205
|
},
|
|
164
206
|
prompt: {
|
|
165
207
|
type: "string",
|
|
@@ -193,6 +235,11 @@ exports.startAgentTaskDefinition = {
|
|
|
193
235
|
type: "boolean",
|
|
194
236
|
description: "Resume a previously started task from where it left off. Must be used together with taskId which identifies the task to resume.",
|
|
195
237
|
},
|
|
238
|
+
parentTaskId: {
|
|
239
|
+
type: "string",
|
|
240
|
+
description: "The taskId of the parent that should be notified by this child (e.g. via replyToParent). " +
|
|
241
|
+
"If omitted, it is auto-populated from the spawning agent's own taskId.",
|
|
242
|
+
},
|
|
196
243
|
},
|
|
197
244
|
required: ["prompt"],
|
|
198
245
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startAgentTask.js","sourceRoot":"","sources":["../../../../src/agents/tools/startAgentTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"startAgentTask.js","sourceRoot":"","sources":["../../../../src/agents/tools/startAgentTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Tool } from "../../clients/types";
|
|
2
|
+
import { ToolCallContext } from "../../services/Tools";
|
|
3
|
+
export interface WaitForAgentCompletedParams {
|
|
4
|
+
taskId: string;
|
|
5
|
+
timeoutMs?: number;
|
|
6
|
+
pollIntervalMs?: number;
|
|
7
|
+
_ctx?: ToolCallContext;
|
|
8
|
+
}
|
|
9
|
+
export declare function waitForAgentCompleted(params: WaitForAgentCompletedParams): Promise<string>;
|
|
10
|
+
export declare const waitForAgentCompletedDefinition: Tool;
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.waitForAgentCompletedDefinition = void 0;
|
|
37
|
+
exports.waitForAgentCompleted = waitForAgentCompleted;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
function agentsDir() {
|
|
41
|
+
return path.join(process.cwd(), ".knowhow", "processes", "agents");
|
|
42
|
+
}
|
|
43
|
+
const TERMINAL_STATUSES = new Set([
|
|
44
|
+
"completed",
|
|
45
|
+
"failed",
|
|
46
|
+
"killed",
|
|
47
|
+
"error",
|
|
48
|
+
"done",
|
|
49
|
+
]);
|
|
50
|
+
function readMeta(taskId) {
|
|
51
|
+
try {
|
|
52
|
+
const metaPath = path.join(agentsDir(), taskId, "metadata.json");
|
|
53
|
+
if (!fs.existsSync(metaPath))
|
|
54
|
+
return null;
|
|
55
|
+
return JSON.parse(fs.readFileSync(metaPath, "utf8"));
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function readStatusFile(taskId) {
|
|
62
|
+
try {
|
|
63
|
+
const statusPath = path.join(agentsDir(), taskId, "status.txt");
|
|
64
|
+
if (!fs.existsSync(statusPath))
|
|
65
|
+
return null;
|
|
66
|
+
return fs.readFileSync(statusPath, "utf8").trim();
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function resolveStatus(meta, statusFile) {
|
|
73
|
+
if (meta?.status)
|
|
74
|
+
return meta.status;
|
|
75
|
+
if (statusFile)
|
|
76
|
+
return statusFile;
|
|
77
|
+
if (meta && meta.inProgress === false)
|
|
78
|
+
return "completed";
|
|
79
|
+
return "unknown";
|
|
80
|
+
}
|
|
81
|
+
function lastAssistantText(threads) {
|
|
82
|
+
if (!threads)
|
|
83
|
+
return undefined;
|
|
84
|
+
let messages = [];
|
|
85
|
+
if (Array.isArray(threads)) {
|
|
86
|
+
if (threads.length && Array.isArray(threads[0])) {
|
|
87
|
+
messages = threads.flat();
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
messages = threads;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
94
|
+
const msg = messages[i];
|
|
95
|
+
if (msg?.role === "assistant") {
|
|
96
|
+
if (typeof msg.content === "string" && msg.content.trim()) {
|
|
97
|
+
return msg.content.trim();
|
|
98
|
+
}
|
|
99
|
+
if (Array.isArray(msg.content)) {
|
|
100
|
+
const text = msg.content
|
|
101
|
+
.filter((c) => c?.type === "text")
|
|
102
|
+
.map((c) => c.text)
|
|
103
|
+
.join("\n")
|
|
104
|
+
.trim();
|
|
105
|
+
if (text)
|
|
106
|
+
return text;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
function pidAlive(pid) {
|
|
113
|
+
try {
|
|
114
|
+
process.kill(pid, 0);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
return e?.code === "EPERM";
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function metaPid(meta) {
|
|
122
|
+
const pid = meta?.pid ?? meta?.processId;
|
|
123
|
+
return typeof pid === "number" ? pid : undefined;
|
|
124
|
+
}
|
|
125
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
126
|
+
async function waitForAgentCompleted(params) {
|
|
127
|
+
const { taskId, timeoutMs = 30 * 60 * 1000, pollIntervalMs = 2000, } = params;
|
|
128
|
+
if (!taskId) {
|
|
129
|
+
return JSON.stringify({
|
|
130
|
+
taskId,
|
|
131
|
+
status: "error",
|
|
132
|
+
costUsd: 0,
|
|
133
|
+
error: "taskId is required for waitForAgentCompleted",
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
const taskDir = path.join(agentsDir(), taskId);
|
|
137
|
+
if (!fs.existsSync(taskDir)) {
|
|
138
|
+
return JSON.stringify({
|
|
139
|
+
taskId,
|
|
140
|
+
status: "error",
|
|
141
|
+
costUsd: 0,
|
|
142
|
+
error: `No agent task directory found for taskId: ${taskId}`,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
const start = Date.now();
|
|
146
|
+
const interval = Math.max(250, pollIntervalMs);
|
|
147
|
+
let missingProcessPolls = 0;
|
|
148
|
+
while (true) {
|
|
149
|
+
const meta = readMeta(taskId);
|
|
150
|
+
const statusFile = readStatusFile(taskId);
|
|
151
|
+
const status = resolveStatus(meta, statusFile);
|
|
152
|
+
if (TERMINAL_STATUSES.has(status)) {
|
|
153
|
+
const finalAnswer = meta?.result ?? lastAssistantText(meta?.threads);
|
|
154
|
+
const result = {
|
|
155
|
+
taskId,
|
|
156
|
+
status,
|
|
157
|
+
costUsd: meta?.totalCostUsd ?? 0,
|
|
158
|
+
finalAnswer,
|
|
159
|
+
artifacts: meta?.artifacts,
|
|
160
|
+
elapsedMs: Date.now() - start,
|
|
161
|
+
};
|
|
162
|
+
return JSON.stringify(result);
|
|
163
|
+
}
|
|
164
|
+
const pid = metaPid(meta);
|
|
165
|
+
if (pid !== undefined && !pidAlive(pid)) {
|
|
166
|
+
missingProcessPolls++;
|
|
167
|
+
if (missingProcessPolls >= 2) {
|
|
168
|
+
const finalAnswer = meta?.result ?? lastAssistantText(meta?.threads);
|
|
169
|
+
return JSON.stringify({
|
|
170
|
+
taskId,
|
|
171
|
+
status: meta?.result ? "completed" : "failed",
|
|
172
|
+
costUsd: meta?.totalCostUsd ?? 0,
|
|
173
|
+
finalAnswer,
|
|
174
|
+
artifacts: meta?.artifacts,
|
|
175
|
+
elapsedMs: Date.now() - start,
|
|
176
|
+
error: meta?.result
|
|
177
|
+
? undefined
|
|
178
|
+
: "Agent process exited without writing a terminal status",
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
missingProcessPolls = 0;
|
|
184
|
+
}
|
|
185
|
+
if (Date.now() - start >= timeoutMs) {
|
|
186
|
+
return JSON.stringify({
|
|
187
|
+
taskId,
|
|
188
|
+
status,
|
|
189
|
+
costUsd: meta?.totalCostUsd ?? 0,
|
|
190
|
+
finalAnswer: meta?.result ?? lastAssistantText(meta?.threads),
|
|
191
|
+
artifacts: meta?.artifacts,
|
|
192
|
+
elapsedMs: Date.now() - start,
|
|
193
|
+
timedOut: true,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
await sleep(interval);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.waitForAgentCompletedDefinition = {
|
|
200
|
+
type: "function",
|
|
201
|
+
function: {
|
|
202
|
+
name: "waitForAgentCompleted",
|
|
203
|
+
description: "Block until a spawned agent task (started via startAgentTask or runGenerate) reaches a " +
|
|
204
|
+
"terminal status (completed/failed/killed), then return a structured JSON result with " +
|
|
205
|
+
"{ status, costUsd, finalAnswer, artifacts, elapsedMs }. This is the native way to 'join' a " +
|
|
206
|
+
"subagent — prefer it over shell polling loops with sleep. Returns immediately if the task is " +
|
|
207
|
+
"already finished, and gives up with timedOut:true after timeoutMs.",
|
|
208
|
+
parameters: {
|
|
209
|
+
type: "object",
|
|
210
|
+
positional: false,
|
|
211
|
+
properties: {
|
|
212
|
+
taskId: {
|
|
213
|
+
type: "string",
|
|
214
|
+
description: "The taskId of the agent task to wait for (as returned/used by startAgentTask).",
|
|
215
|
+
},
|
|
216
|
+
timeoutMs: {
|
|
217
|
+
type: "number",
|
|
218
|
+
description: "Maximum time to wait in milliseconds before returning with timedOut:true. Default: 1800000 (30 min).",
|
|
219
|
+
},
|
|
220
|
+
pollIntervalMs: {
|
|
221
|
+
type: "number",
|
|
222
|
+
description: "How often to poll the task status in milliseconds. Default: 2000.",
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
required: ["taskId"],
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
//# sourceMappingURL=waitForAgentCompleted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitForAgentCompleted.js","sourceRoot":"","sources":["../../../../src/agents/tools/waitForAgentCompleted.ts"],"names":[],"mappings":"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"}
|
package/ts_build/src/ai.d.ts
CHANGED
package/ts_build/src/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/ai.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ export declare class AgentModule extends BaseChatModule {
|
|
|
56
56
|
input: string;
|
|
57
57
|
messageId?: string;
|
|
58
58
|
syncFs?: boolean;
|
|
59
|
-
|
|
59
|
+
syncRemote?: boolean;
|
|
60
60
|
provider?: string;
|
|
61
61
|
model?: string;
|
|
62
62
|
maxTimeLimit?: number;
|
|
@@ -64,6 +64,7 @@ export declare class AgentModule extends BaseChatModule {
|
|
|
64
64
|
chatHistory?: ChatInteraction[];
|
|
65
65
|
run?: boolean;
|
|
66
66
|
taskId?: string;
|
|
67
|
+
parentTaskId?: string;
|
|
67
68
|
}): Promise<{
|
|
68
69
|
agent: BaseAgent;
|
|
69
70
|
taskId: string;
|
|
@@ -78,6 +79,7 @@ export declare class AgentModule extends BaseChatModule {
|
|
|
78
79
|
threads: Message[][];
|
|
79
80
|
messageId?: string;
|
|
80
81
|
taskId?: string;
|
|
82
|
+
interactive?: boolean;
|
|
81
83
|
}): Promise<{
|
|
82
84
|
taskCompleted: Promise<string>;
|
|
83
85
|
}>;
|
|
@@ -129,6 +129,23 @@ class AgentModule extends BaseChatModule_1.BaseChatModule {
|
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
131
|
},
|
|
132
|
+
{
|
|
133
|
+
name: "compact",
|
|
134
|
+
description: "Force the attached agent to compact (summarize) its conversation now, dropping back to a much cheaper context size",
|
|
135
|
+
modes: ["agent:attached"],
|
|
136
|
+
handler: async (_args) => {
|
|
137
|
+
if (!this.attachedAgent) {
|
|
138
|
+
console.log("No attached agent to compact.");
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (typeof this.attachedAgent.requestCompact !== "function") {
|
|
142
|
+
console.log("This agent does not support manual compaction (remote/watcher-backed agents compact automatically).");
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
this.attachedAgent.requestCompact();
|
|
146
|
+
console.log("🗜 Compaction requested — the agent will summarize and shrink its context on the next step.");
|
|
147
|
+
},
|
|
148
|
+
},
|
|
132
149
|
{
|
|
133
150
|
name: "reasoning_effort",
|
|
134
151
|
description: "Set the reasoning effort for the agent (none, low, medium, high). Use 'none' to disable thinking on models that support it.",
|
|
@@ -462,7 +479,6 @@ class AgentModule extends BaseChatModule_1.BaseChatModule {
|
|
|
462
479
|
agentName,
|
|
463
480
|
input: resumePrompt,
|
|
464
481
|
messageId: session.knowhowMessageId,
|
|
465
|
-
existingKnowhowTaskId: session.knowhowTaskId,
|
|
466
482
|
chatHistory: [],
|
|
467
483
|
run: false,
|
|
468
484
|
});
|
|
@@ -528,7 +544,7 @@ class AgentModule extends BaseChatModule_1.BaseChatModule {
|
|
|
528
544
|
let taskInfo = {
|
|
529
545
|
taskId,
|
|
530
546
|
knowhowMessageId: options.messageId,
|
|
531
|
-
knowhowTaskId: options.
|
|
547
|
+
knowhowTaskId: options.syncRemote ? taskId : undefined,
|
|
532
548
|
agentName,
|
|
533
549
|
agent,
|
|
534
550
|
initialInput: input,
|
|
@@ -545,8 +561,9 @@ class AgentModule extends BaseChatModule_1.BaseChatModule {
|
|
|
545
561
|
prompt: input,
|
|
546
562
|
messageId: options.messageId,
|
|
547
563
|
syncFs: options.syncFs,
|
|
548
|
-
|
|
564
|
+
syncRemote: options.syncRemote,
|
|
549
565
|
agentName,
|
|
566
|
+
parentTaskId: options.parentTaskId,
|
|
550
567
|
});
|
|
551
568
|
const webTaskId = syncer.getCreatedWebTaskId();
|
|
552
569
|
knowhowTaskId = webTaskId;
|
|
@@ -652,29 +669,20 @@ class AgentModule extends BaseChatModule_1.BaseChatModule {
|
|
|
652
669
|
role: "assistant",
|
|
653
670
|
});
|
|
654
671
|
};
|
|
655
|
-
if (
|
|
656
|
-
agent.agentEvents.on(agent.eventTypes.toolCall, toolCallHandler);
|
|
657
|
-
}
|
|
658
|
-
if (agent.eventTypes.toolUsed) {
|
|
659
|
-
agent.agentEvents.on(agent.eventTypes.toolUsed, toolResultHandler);
|
|
660
|
-
}
|
|
661
|
-
if (agent.eventTypes.agentSay) {
|
|
662
|
-
agent.agentEvents.on(agent.eventTypes.agentSay, agentSayHandler);
|
|
663
|
-
}
|
|
664
|
-
this.renderer.setActiveTaskId(taskId);
|
|
665
|
-
this.activeAgentTaskId = taskId;
|
|
666
|
-
const taskCompleted = new Promise((resolve) => {
|
|
672
|
+
if (options.run) {
|
|
667
673
|
if (agent.eventTypes.toolCall) {
|
|
668
|
-
agent.agentEvents.
|
|
674
|
+
agent.agentEvents.on(agent.eventTypes.toolCall, toolCallHandler);
|
|
669
675
|
}
|
|
670
676
|
if (agent.eventTypes.toolUsed) {
|
|
671
|
-
agent.agentEvents.
|
|
677
|
+
agent.agentEvents.on(agent.eventTypes.toolUsed, toolResultHandler);
|
|
672
678
|
}
|
|
673
679
|
if (agent.eventTypes.agentSay) {
|
|
674
|
-
agent.agentEvents.
|
|
680
|
+
agent.agentEvents.on(agent.eventTypes.agentSay, agentSayHandler);
|
|
675
681
|
}
|
|
676
|
-
|
|
677
|
-
|
|
682
|
+
}
|
|
683
|
+
this.renderer.setActiveTaskId(taskId);
|
|
684
|
+
this.activeAgentTaskId = taskId;
|
|
685
|
+
const taskCompleted = new Promise((resolve) => {
|
|
678
686
|
agent.agentEvents.once(agent.eventTypes.done, async (doneMsg) => {
|
|
679
687
|
console.log("🎯 [AgentModule] Task Completed");
|
|
680
688
|
done = true;
|
|
@@ -683,6 +691,17 @@ class AgentModule extends BaseChatModule_1.BaseChatModule {
|
|
|
683
691
|
agent.agentEvents.removeListener(agent.eventTypes.agentLog, agentLogHandler);
|
|
684
692
|
agent.agentEvents.removeListener(agent.eventTypes.agentStatus, agentStatusHandler);
|
|
685
693
|
taskInfo = this.taskRegistry.get(taskId);
|
|
694
|
+
if (agent.eventTypes.toolCall) {
|
|
695
|
+
agent.agentEvents.removeListener(agent.eventTypes.toolCall, toolCallHandler);
|
|
696
|
+
}
|
|
697
|
+
if (agent.eventTypes.toolUsed) {
|
|
698
|
+
agent.agentEvents.removeListener(agent.eventTypes.toolUsed, toolResultHandler);
|
|
699
|
+
}
|
|
700
|
+
if (agent.eventTypes.agentSay) {
|
|
701
|
+
agent.agentEvents.removeListener(agent.eventTypes.agentSay, agentSayHandler);
|
|
702
|
+
}
|
|
703
|
+
this.renderer.setActiveTaskId(undefined);
|
|
704
|
+
this.activeAgentTaskId = undefined;
|
|
686
705
|
await syncer.waitForFinalization();
|
|
687
706
|
if (taskInfo) {
|
|
688
707
|
taskInfo.status = "completed";
|
|
@@ -793,9 +812,15 @@ class AgentModule extends BaseChatModule_1.BaseChatModule {
|
|
|
793
812
|
agentName,
|
|
794
813
|
input: resumePrompt,
|
|
795
814
|
messageId,
|
|
796
|
-
|
|
815
|
+
taskId,
|
|
816
|
+
syncRemote: !messageId && !!taskId,
|
|
797
817
|
run: false,
|
|
798
818
|
});
|
|
819
|
+
if (options.interactive) {
|
|
820
|
+
await this.attachedAgentChatLoop(result.taskId, result.agent, resumePrompt, resumeMessages);
|
|
821
|
+
return { taskCompleted: result.taskCompleted };
|
|
822
|
+
}
|
|
823
|
+
this.wireAgentRendering(result.taskId, result.agent.agentEvents, result.agent.eventTypes, result.agent.name);
|
|
799
824
|
result.agent.call(resumePrompt, resumeMessages);
|
|
800
825
|
return { taskCompleted: result.taskCompleted };
|
|
801
826
|
}
|