@tyvm/knowhow 0.0.137 → 0.0.140
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/hash.ts +3 -2
- package/src/commands/misc.ts +6 -0
- 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/hash.js +1 -1
- package/ts_build/src/commands/hash.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/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,118 @@
|
|
|
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.replyToParentDefinition = void 0;
|
|
37
|
+
exports.replyToParent = replyToParent;
|
|
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
|
+
function resolveParentTaskId(ctx) {
|
|
44
|
+
if (!ctx)
|
|
45
|
+
return undefined;
|
|
46
|
+
if (ctx.parentTaskId)
|
|
47
|
+
return ctx.parentTaskId;
|
|
48
|
+
const callerParent = ctx.caller?.parentTaskId;
|
|
49
|
+
if (callerParent)
|
|
50
|
+
return callerParent;
|
|
51
|
+
const ownTaskId = ctx.taskId ?? ctx.caller?.currentTaskId;
|
|
52
|
+
if (!ownTaskId)
|
|
53
|
+
return undefined;
|
|
54
|
+
try {
|
|
55
|
+
const metaPath = path.join(agentsDir(), ownTaskId, "metadata.json");
|
|
56
|
+
if (fs.existsSync(metaPath)) {
|
|
57
|
+
const meta = JSON.parse(fs.readFileSync(metaPath, "utf8"));
|
|
58
|
+
return meta.parentTaskId;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
async function replyToParent(message, _ctx) {
|
|
66
|
+
if (!message || !message.trim()) {
|
|
67
|
+
return "No message provided to replyToParent.";
|
|
68
|
+
}
|
|
69
|
+
const parentTaskId = resolveParentTaskId(_ctx);
|
|
70
|
+
if (!parentTaskId) {
|
|
71
|
+
return ("No parent task found — this agent was not spawned with a parent taskId, " +
|
|
72
|
+
"so there is no one to reply to.");
|
|
73
|
+
}
|
|
74
|
+
const parentDir = path.join(agentsDir(), parentTaskId);
|
|
75
|
+
const parentInputPath = path.join(parentDir, "input.txt");
|
|
76
|
+
if (!fs.existsSync(parentDir)) {
|
|
77
|
+
return `Parent task directory not found: ${parentDir}`;
|
|
78
|
+
}
|
|
79
|
+
const fromTaskId = _ctx?.taskId ?? _ctx?.caller?.currentTaskId ?? "unknown";
|
|
80
|
+
const fromAgent = _ctx?.caller?.name ?? "child";
|
|
81
|
+
const envelope = `[from:${fromTaskId}] [agent:${fromAgent}] ${message}`;
|
|
82
|
+
try {
|
|
83
|
+
const existing = fs.existsSync(parentInputPath)
|
|
84
|
+
? fs.readFileSync(parentInputPath, "utf8")
|
|
85
|
+
: "";
|
|
86
|
+
const next = existing && !existing.endsWith("\n")
|
|
87
|
+
? `${existing}\n${envelope}\n`
|
|
88
|
+
: `${existing}${envelope}\n`;
|
|
89
|
+
fs.writeFileSync(parentInputPath, next, "utf8");
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
return `Failed to write to parent input.txt: ${e?.message ?? String(e)}`;
|
|
93
|
+
}
|
|
94
|
+
return `Sent message to parent task ${parentTaskId}.`;
|
|
95
|
+
}
|
|
96
|
+
exports.replyToParentDefinition = {
|
|
97
|
+
type: "function",
|
|
98
|
+
function: {
|
|
99
|
+
name: "replyToParent",
|
|
100
|
+
description: "Send a message back to the parent agent that spawned this task. Use this " +
|
|
101
|
+
"to report progress, ask a question, or alert the parent to something. The " +
|
|
102
|
+
"message is delivered to the parent's input queue and picked up on its next " +
|
|
103
|
+
"sync cycle. Only works when this agent was spawned by another agent (i.e. " +
|
|
104
|
+
"it has a parent taskId).",
|
|
105
|
+
parameters: {
|
|
106
|
+
type: "object",
|
|
107
|
+
positional: true,
|
|
108
|
+
properties: {
|
|
109
|
+
message: {
|
|
110
|
+
type: "string",
|
|
111
|
+
description: "The message to send back to the parent agent",
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
required: ["message"],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=replyToParent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replyToParent.js","sourceRoot":"","sources":["../../../../src/agents/tools/replyToParent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Tool } from "../../clients/types";
|
|
2
|
+
import { GenerationSource } from "../../types";
|
|
3
|
+
export interface RunGenerateParams {
|
|
4
|
+
sources?: GenerationSource[];
|
|
5
|
+
name?: string;
|
|
6
|
+
filter?: string;
|
|
7
|
+
force?: boolean;
|
|
8
|
+
concurrency?: number;
|
|
9
|
+
syncFs?: boolean;
|
|
10
|
+
syncRemote?: boolean;
|
|
11
|
+
planOnly?: boolean;
|
|
12
|
+
_ctx?: {
|
|
13
|
+
caller?: any;
|
|
14
|
+
taskId?: string;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function runGenerate(params: RunGenerateParams): Promise<string>;
|
|
19
|
+
export declare const runGenerateDefinition: Tool;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runGenerateDefinition = void 0;
|
|
4
|
+
exports.runGenerate = runGenerate;
|
|
5
|
+
const generate_1 = require("../../generate");
|
|
6
|
+
async function runGenerate(params) {
|
|
7
|
+
const { sources, name, filter, force, concurrency, syncFs, syncRemote, planOnly, } = params ?? {};
|
|
8
|
+
const effectiveSyncFs = syncFs !== false;
|
|
9
|
+
const options = {
|
|
10
|
+
sources,
|
|
11
|
+
name,
|
|
12
|
+
filter,
|
|
13
|
+
force,
|
|
14
|
+
concurrency,
|
|
15
|
+
syncFs: effectiveSyncFs,
|
|
16
|
+
syncRemote,
|
|
17
|
+
};
|
|
18
|
+
const effectiveSources = sources ?? [];
|
|
19
|
+
if (planOnly) {
|
|
20
|
+
if (effectiveSources.length === 0) {
|
|
21
|
+
return ("planOnly requires in-memory `sources` to build a plan. " +
|
|
22
|
+
"Provide sources to see how they'd be grouped into dependency waves.");
|
|
23
|
+
}
|
|
24
|
+
const filtered = effectiveSources.filter((s) => {
|
|
25
|
+
if (name)
|
|
26
|
+
return s.name === name;
|
|
27
|
+
if (filter) {
|
|
28
|
+
const needle = filter.toLowerCase();
|
|
29
|
+
return [s.name, s.input, s.output]
|
|
30
|
+
.filter(Boolean)
|
|
31
|
+
.some((v) => v.toLowerCase().includes(needle));
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
});
|
|
35
|
+
const waves = (0, generate_1.buildWaves)(filtered);
|
|
36
|
+
const lines = [];
|
|
37
|
+
lines.push(`📋 Generation Plan (concurrency: ${concurrency ?? 3}, ${filtered.length} sources, ${waves.length} wave${waves.length !== 1 ? "s" : ""})`);
|
|
38
|
+
waves.forEach((wave, i) => {
|
|
39
|
+
lines.push(`\n┌─ Wave ${i + 1}/${waves.length} (${wave.length} in parallel)`);
|
|
40
|
+
for (const s of wave) {
|
|
41
|
+
const label = s.name || "(unnamed)";
|
|
42
|
+
const io = `${s.input || "-"} → ${s.output || "-"}`;
|
|
43
|
+
const agentPart = s.agent ? ` [agent: ${s.agent}]` : "";
|
|
44
|
+
lines.push(`│ • ${label} ${io}${agentPart}`);
|
|
45
|
+
}
|
|
46
|
+
lines.push("└────────────────────────────────────────────────");
|
|
47
|
+
});
|
|
48
|
+
return lines.join("\n");
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
await (0, generate_1.generate)(options);
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
return `Generation failed: ${e?.message ?? String(e)}`;
|
|
55
|
+
}
|
|
56
|
+
const count = effectiveSources.length;
|
|
57
|
+
const mode = count > 0 ? `${count} in-memory source(s)` : "config sources";
|
|
58
|
+
return (`Generation complete for ${mode}` +
|
|
59
|
+
(name ? ` (name="${name}")` : filter ? ` (filter="${filter}")` : "") +
|
|
60
|
+
`. Outputs written to their configured paths. ` +
|
|
61
|
+
`If agent-driven sources used syncFs, inspect them with \`knowhow agents list\`.`);
|
|
62
|
+
}
|
|
63
|
+
exports.runGenerateDefinition = {
|
|
64
|
+
type: "function",
|
|
65
|
+
function: {
|
|
66
|
+
name: "runGenerate",
|
|
67
|
+
description: "Run the `knowhow generate` pipeline. Accepts in-memory `sources` so you can define arbitrary " +
|
|
68
|
+
"task orchestration at runtime WITHOUT editing the config file. Supports dependency ordering via " +
|
|
69
|
+
"`dependsOn`, automatic I/O overlap detection (a source reading another's output runs after it), " +
|
|
70
|
+
"per-source `agent` for agent-driven generation (map/reduce fan-out — one agent per input), " +
|
|
71
|
+
"concurrency control within each dependency wave, and plain summarization/analysis sources. " +
|
|
72
|
+
"Use `planOnly: true` to preview how sources group into concurrent dependency waves before running. " +
|
|
73
|
+
"When `sources` is omitted, it runs the sources defined in .knowhow/knowhow.json (optionally scoped by name/filter).",
|
|
74
|
+
parameters: {
|
|
75
|
+
type: "object",
|
|
76
|
+
properties: {
|
|
77
|
+
sources: {
|
|
78
|
+
type: "array",
|
|
79
|
+
description: "In-memory generation sources. Each item: { name?, input, output, prompt, agent?, model?, " +
|
|
80
|
+
"kind?, outputExt?, outputName?, dependsOn?: string[], syncFs?, maxTimeLimit?, maxSpendLimit? }. " +
|
|
81
|
+
"`input` is a glob or comma-separated file list; `output` is the target file/dir; `prompt` is the " +
|
|
82
|
+
"generation instruction; `agent` (optional) runs an agent per input instead of a summarization call; " +
|
|
83
|
+
"`dependsOn` lists names of sources that must finish first.",
|
|
84
|
+
items: {
|
|
85
|
+
type: "object",
|
|
86
|
+
properties: {
|
|
87
|
+
name: { type: "string" },
|
|
88
|
+
input: { type: "string" },
|
|
89
|
+
output: { type: "string" },
|
|
90
|
+
prompt: { type: "string" },
|
|
91
|
+
agent: { type: "string" },
|
|
92
|
+
model: { type: "string" },
|
|
93
|
+
kind: { type: "string" },
|
|
94
|
+
outputExt: { type: "string" },
|
|
95
|
+
outputName: { type: "string" },
|
|
96
|
+
dependsOn: { type: "array", items: { type: "string" } },
|
|
97
|
+
syncFs: { type: "boolean" },
|
|
98
|
+
maxTimeLimit: { type: "number" },
|
|
99
|
+
maxSpendLimit: { type: "number" },
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
name: {
|
|
104
|
+
type: "string",
|
|
105
|
+
description: "Only run sources whose `name` matches exactly (config mode).",
|
|
106
|
+
},
|
|
107
|
+
filter: {
|
|
108
|
+
type: "string",
|
|
109
|
+
description: "Only run sources whose name/input/output contains this substring.",
|
|
110
|
+
},
|
|
111
|
+
force: {
|
|
112
|
+
type: "boolean",
|
|
113
|
+
description: "Skip hash checks and regenerate all matching sources.",
|
|
114
|
+
},
|
|
115
|
+
concurrency: {
|
|
116
|
+
type: "number",
|
|
117
|
+
description: "Max sources to run in parallel within a dependency wave. Default: 3.",
|
|
118
|
+
},
|
|
119
|
+
syncFs: {
|
|
120
|
+
type: "boolean",
|
|
121
|
+
description: "For agent-driven sources, create .knowhow/processes/agents/<taskId>/ so they appear in `knowhow agents list`. " +
|
|
122
|
+
"Defaults to true (enabled). Pass false to opt out.",
|
|
123
|
+
},
|
|
124
|
+
syncRemote: {
|
|
125
|
+
type: "boolean",
|
|
126
|
+
description: "For agent-driven sources, push their work to a remote Knowhow task (identified by the source's taskId), " +
|
|
127
|
+
"in addition to fs sync.",
|
|
128
|
+
},
|
|
129
|
+
planOnly: {
|
|
130
|
+
type: "boolean",
|
|
131
|
+
description: "Return the wave execution plan without running anything (requires `sources`).",
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
required: [],
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=runGenerate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runGenerate.js","sourceRoot":"","sources":["../../../../src/agents/tools/runGenerate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tool } from "../../clients/types";
|
|
2
|
+
import { ToolCallContext } from "../../services/Tools";
|
|
3
|
+
export interface SendAgentMessageParams {
|
|
4
|
+
taskId: string;
|
|
5
|
+
message: string;
|
|
6
|
+
from?: string;
|
|
7
|
+
poke?: boolean;
|
|
8
|
+
_ctx?: ToolCallContext;
|
|
9
|
+
}
|
|
10
|
+
export declare function sendAgentMessage(params: SendAgentMessageParams): Promise<string>;
|
|
11
|
+
export declare const sendAgentMessageDefinition: Tool;
|
|
@@ -0,0 +1,118 @@
|
|
|
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.sendAgentMessageDefinition = void 0;
|
|
37
|
+
exports.sendAgentMessage = sendAgentMessage;
|
|
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
|
+
function appendToInput(inputPath, line) {
|
|
44
|
+
const existing = fs.existsSync(inputPath)
|
|
45
|
+
? fs.readFileSync(inputPath, "utf8")
|
|
46
|
+
: "";
|
|
47
|
+
const next = existing && !existing.endsWith("\n")
|
|
48
|
+
? `${existing}\n${line}\n`
|
|
49
|
+
: `${existing}${line}\n`;
|
|
50
|
+
fs.writeFileSync(inputPath, next, "utf8");
|
|
51
|
+
}
|
|
52
|
+
async function sendAgentMessage(params) {
|
|
53
|
+
const { taskId, message, from, poke = false, _ctx } = params;
|
|
54
|
+
if (!taskId) {
|
|
55
|
+
return "sendAgentMessage: taskId is required.";
|
|
56
|
+
}
|
|
57
|
+
if (!message || !message.trim()) {
|
|
58
|
+
return "sendAgentMessage: message is required.";
|
|
59
|
+
}
|
|
60
|
+
const targetDir = path.join(agentsDir(), taskId);
|
|
61
|
+
const inputPath = path.join(targetDir, "input.txt");
|
|
62
|
+
if (!fs.existsSync(targetDir)) {
|
|
63
|
+
return `sendAgentMessage: target task directory not found: ${targetDir}`;
|
|
64
|
+
}
|
|
65
|
+
const fromId = from ??
|
|
66
|
+
_ctx?.taskId ??
|
|
67
|
+
_ctx?.caller?.currentTaskId ??
|
|
68
|
+
"unknown";
|
|
69
|
+
const fromAgent = _ctx?.caller?.name;
|
|
70
|
+
const fromLabel = fromAgent ? `${fromId}/${fromAgent}` : fromId;
|
|
71
|
+
try {
|
|
72
|
+
if (poke) {
|
|
73
|
+
appendToInput(inputPath, `/poke [from:${fromLabel}] ${message}`);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
appendToInput(inputPath, `[from:${fromLabel}] ${message}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
return `sendAgentMessage: failed to write to ${inputPath}: ${e?.message ?? String(e)}`;
|
|
81
|
+
}
|
|
82
|
+
return `Sent message to task ${taskId}${poke ? " (as /poke)" : ""}.`;
|
|
83
|
+
}
|
|
84
|
+
exports.sendAgentMessageDefinition = {
|
|
85
|
+
type: "function",
|
|
86
|
+
function: {
|
|
87
|
+
name: "sendAgentMessage",
|
|
88
|
+
description: "Send a message to another running agent (a child you spawned, a peer, or your parent) by " +
|
|
89
|
+
"appending it to that agent's input queue. The recipient picks it up on its next sync cycle " +
|
|
90
|
+
"as a user message. This is the down/lateral communication edge (complement to replyToParent). " +
|
|
91
|
+
"Set poke:true to interrupt the recipient's current step (delivered as /poke). Your sender " +
|
|
92
|
+
"identity is attached automatically so the recipient can reply back to you.",
|
|
93
|
+
parameters: {
|
|
94
|
+
type: "object",
|
|
95
|
+
positional: false,
|
|
96
|
+
properties: {
|
|
97
|
+
taskId: {
|
|
98
|
+
type: "string",
|
|
99
|
+
description: "The taskId of the agent to send the message to.",
|
|
100
|
+
},
|
|
101
|
+
message: {
|
|
102
|
+
type: "string",
|
|
103
|
+
description: "The message to deliver to the recipient agent.",
|
|
104
|
+
},
|
|
105
|
+
from: {
|
|
106
|
+
type: "string",
|
|
107
|
+
description: "Optional sender id. Defaults to the calling agent's own taskId.",
|
|
108
|
+
},
|
|
109
|
+
poke: {
|
|
110
|
+
type: "boolean",
|
|
111
|
+
description: "When true, deliver as a /poke that interrupts the recipient's current step. Default false.",
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
required: ["taskId", "message"],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=sendAgentMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendAgentMessage.js","sourceRoot":"","sources":["../../../../src/agents/tools/sendAgentMessage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DA,4CAyCC;AAnGD,uCAAyB;AACzB,2CAA6B;AAK7B,SAAS,SAAS;IAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACrE,CAAC;AAQD,SAAS,aAAa,CAAC,SAAiB,EAAE,IAAY;IACpD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QACvC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,IAAI,GACR,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClC,CAAC,CAAC,GAAG,QAAQ,KAAK,IAAI,IAAI;QAC1B,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,IAAI,CAAC;IAC7B,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAiCM,KAAK,UAAU,gBAAgB,CACpC,MAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,uCAAuC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,OAAO,wCAAwC,CAAC;IAClD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,sDAAsD,SAAS,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,MAAM,GACV,IAAI;QACJ,IAAI,EAAE,MAAM;QACX,IAAI,EAAE,MAAc,EAAE,aAAa;QACpC,SAAS,CAAC;IACZ,MAAM,SAAS,GAAI,IAAI,EAAE,MAAc,EAAE,IAAI,CAAC;IAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhE,IAAI,CAAC;QACH,IAAI,IAAI,EAAE,CAAC;YAET,aAAa,CAAC,SAAS,EAAE,eAAe,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,SAAS,EAAE,SAAS,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,wCAAwC,SAAS,KACtD,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CACxB,EAAE,CAAC;IACL,CAAC;IAED,OAAO,wBAAwB,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACvE,CAAC;AAEY,QAAA,0BAA0B,GAAS;IAC9C,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,2FAA2F;YAC3F,6FAA6F;YAC7F,gGAAgG;YAChG,4FAA4F;YAC5F,4EAA4E;QAC9E,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iDAAiD;iBAC/D;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gDAAgD;iBAC9D;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,iEAAiE;iBACpE;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,SAAS;oBACf,WAAW,EACT,4FAA4F;iBAC/F;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;SAChC;KACF;CACF,CAAC"}
|
|
@@ -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;
|