teamshare-bridge 0.16.1 → 0.18.0
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/bridge/daemon.js +30 -5
- package/dist/bridge/daemon.js.map +1 -1
- package/dist/bridge/spawn.d.ts +12 -2
- package/dist/bridge/spawn.js +27 -4
- package/dist/bridge/spawn.js.map +1 -1
- package/dist/cli/commands/context.js +12 -2
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/harness.js +19 -13
- package/dist/cli/commands/harness.js.map +1 -1
- package/dist/cli/commands/link.js +71 -25
- package/dist/cli/commands/link.js.map +1 -1
- package/dist/cli/commands/planner.d.ts +1 -0
- package/dist/cli/commands/planner.js +241 -0
- package/dist/cli/commands/planner.js.map +1 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/agy-pty.js +18 -12
- package/dist/lib/agy-pty.js.map +1 -1
- package/dist/lib/api.d.ts +16 -0
- package/dist/lib/api.js +10 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/config.d.ts +53 -0
- package/dist/lib/config.js +69 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/context/scan.d.ts +21 -0
- package/dist/lib/context/scan.js +45 -0
- package/dist/lib/context/scan.js.map +1 -1
- package/dist/lib/context/sync.js +18 -1
- package/dist/lib/context/sync.js.map +1 -1
- package/dist/lib/lock.d.ts +4 -0
- package/dist/lib/lock.js +5 -1
- package/dist/lib/lock.js.map +1 -1
- package/dist/lib/orchestrator/client.d.ts +6 -0
- package/dist/lib/orchestrator/client.js +196 -8
- package/dist/lib/orchestrator/client.js.map +1 -1
- package/dist/lib/orchestrator/runner.js +20 -2
- package/dist/lib/orchestrator/runner.js.map +1 -1
- package/package.json +1 -1
|
@@ -169,24 +169,28 @@ function spawnHarness(harness, prompt, log, settings = {}) {
|
|
|
169
169
|
cwd: settings.cwd,
|
|
170
170
|
windowsHide: true,
|
|
171
171
|
});
|
|
172
|
+
// Idle-reset timer: NO hard ceiling. The timer only starts on the FIRST
|
|
173
|
+
// output frame and resets on every subsequent frame. A harness producing
|
|
174
|
+
// output runs forever; only a harness that goes silent for timeoutMin is
|
|
175
|
+
// killed. This means long-running sessions (6h+) are safe as long as the
|
|
176
|
+
// process keeps producing output or heartbeating.
|
|
172
177
|
const timeoutMs = Math.max(1, settings.timeoutMin ?? 60) * 60_000;
|
|
173
|
-
let killTimer =
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
resolve(124);
|
|
178
|
-
}, timeoutMs);
|
|
179
|
-
const tee = (chunk, level) => {
|
|
180
|
-
// Reset kill timer on every output line — active sessions never get
|
|
181
|
-
// killed; only stuck/idle sessions (no output for timeoutMin) are
|
|
182
|
-
// terminated.
|
|
183
|
-
clearTimeout(killTimer);
|
|
178
|
+
let killTimer = null;
|
|
179
|
+
const startIdleTimer = () => {
|
|
180
|
+
if (killTimer)
|
|
181
|
+
clearTimeout(killTimer);
|
|
184
182
|
killTimer = setTimeout(() => {
|
|
185
183
|
log(`[harness] ${adapter.name} killed after ${settings.timeoutMin ?? 60} min of no output (idle timeout)`, 'stderr');
|
|
186
184
|
killTree(child.pid);
|
|
187
185
|
child.kill();
|
|
188
186
|
resolve(124);
|
|
189
187
|
}, timeoutMs);
|
|
188
|
+
};
|
|
189
|
+
const tee = (chunk, level) => {
|
|
190
|
+
// Reset idle timer on every output line — active sessions never get
|
|
191
|
+
// killed; only stuck/idle sessions (no output for timeoutMin) are
|
|
192
|
+
// terminated. Timer starts on first output, not on spawn.
|
|
193
|
+
startIdleTimer();
|
|
190
194
|
for (const line of chunk.toString('utf8').split(/\r?\n/)) {
|
|
191
195
|
if (!line.trim())
|
|
192
196
|
continue;
|
|
@@ -203,7 +207,8 @@ function spawnHarness(harness, prompt, log, settings = {}) {
|
|
|
203
207
|
child.stdout?.on('data', (c) => tee(c, 'stdout'));
|
|
204
208
|
child.stderr?.on('data', (c) => tee(c, 'stderr'));
|
|
205
209
|
child.on('error', (err) => {
|
|
206
|
-
|
|
210
|
+
if (killTimer)
|
|
211
|
+
clearTimeout(killTimer);
|
|
207
212
|
mcpOverride?.cleanup();
|
|
208
213
|
if (promptFile)
|
|
209
214
|
(0, prompt_file_1.cleanupPromptFile)(promptFile);
|
|
@@ -211,7 +216,8 @@ function spawnHarness(harness, prompt, log, settings = {}) {
|
|
|
211
216
|
resolve(1);
|
|
212
217
|
});
|
|
213
218
|
child.on('close', (code) => {
|
|
214
|
-
|
|
219
|
+
if (killTimer)
|
|
220
|
+
clearTimeout(killTimer);
|
|
215
221
|
mcpOverride?.cleanup();
|
|
216
222
|
if (promptFile)
|
|
217
223
|
(0, prompt_file_1.cleanupPromptFile)(promptFile);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../src/cli/commands/harness.ts"],"names":[],"mappings":";;AAsCA,4BAkCC;AAED,
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../src/cli/commands/harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,11 @@ exports.cmdUnlink = cmdUnlink;
|
|
|
5
5
|
/**
|
|
6
6
|
* `link` / `unlink` commands: project guard — bind a project to a local folder.
|
|
7
7
|
* Also owns the workspace-arbitration switches (IMP-950): --auto-worktree.
|
|
8
|
+
* Multi-repo: auto-discovers git sub-repos when linking a parent folder.
|
|
8
9
|
*/
|
|
9
10
|
const node_child_process_1 = require("node:child_process");
|
|
10
11
|
const config_1 = require("../../lib/config");
|
|
12
|
+
const api_1 = require("../../lib/api");
|
|
11
13
|
const worktree_1 = require("../../lib/orchestrator/worktree");
|
|
12
14
|
const utils_1 = require("../utils");
|
|
13
15
|
async function cmdLink(flags) {
|
|
@@ -21,8 +23,15 @@ async function cmdLink(flags) {
|
|
|
21
23
|
const flagsText = [
|
|
22
24
|
link.guard === false ? 'guard off' : '',
|
|
23
25
|
link.autoWorktree ? 'auto-worktree' : '',
|
|
26
|
+
link.multiRepo ? 'multi-repo' : '',
|
|
24
27
|
].filter(Boolean).join(', ');
|
|
25
28
|
console.log(`${projectId} -> ${link.path}${flagsText ? ` (${flagsText})` : ''}`);
|
|
29
|
+
if (link.multiRepo && link.repos?.length) {
|
|
30
|
+
for (const repo of link.repos) {
|
|
31
|
+
const remoteText = repo.remote ? ` [${repo.remote}]` : '';
|
|
32
|
+
console.log(` └─ ${repo.name}${repo.isGitRepo ? '' : ' (no git)'}${remoteText}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
26
35
|
}
|
|
27
36
|
return;
|
|
28
37
|
}
|
|
@@ -75,35 +84,72 @@ async function cmdLink(flags) {
|
|
|
75
84
|
}
|
|
76
85
|
}
|
|
77
86
|
else {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
(0, node_child_process_1.execSync)('git add -A', { cwd: canonical, encoding: 'utf-8', timeout: 30_000 });
|
|
90
|
-
(0, node_child_process_1.execSync)('git commit -m "Initial commit"', {
|
|
91
|
-
cwd: canonical,
|
|
92
|
-
encoding: 'utf-8',
|
|
93
|
-
timeout: 30_000,
|
|
94
|
-
});
|
|
95
|
-
console.log('Initial commit created on branch main.');
|
|
96
|
-
console.log(`Origin set to: ${origin}`);
|
|
87
|
+
// Multi-repo: scan for git sub-repos in the parent folder.
|
|
88
|
+
const subRepos = (0, config_1.scanSubRepos)(canonical);
|
|
89
|
+
const gitRepos = subRepos.filter((r) => r.isGitRepo);
|
|
90
|
+
if (gitRepos.length > 0) {
|
|
91
|
+
(0, config_1.updateProjectRepos)(projectId, subRepos, true);
|
|
92
|
+
console.log(`Multi-repo folder detected — found ${gitRepos.length} git repo(s):`);
|
|
93
|
+
for (const repo of gitRepos) {
|
|
94
|
+
const remoteText = repo.remote ? ` → ${repo.remote}` : ' (no remote)';
|
|
95
|
+
console.log(` ${repo.name}${remoteText}`);
|
|
97
96
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
console.log('Orchestrator will resolve per-task which sub-repo to work in.');
|
|
98
|
+
// Auto-register discovered repos on the server (best-effort).
|
|
99
|
+
const config = (0, config_1.loadConfig)();
|
|
100
|
+
const agent = config.agents[0];
|
|
101
|
+
if (agent) {
|
|
102
|
+
const apiKey = (0, config_1.getAgentKey)(agent);
|
|
103
|
+
if (apiKey) {
|
|
104
|
+
const api = new api_1.TeamshareApi(process.env.TEAMSHARE_API_URL, apiKey);
|
|
105
|
+
for (const repo of gitRepos) {
|
|
106
|
+
if (!repo.remote)
|
|
107
|
+
continue;
|
|
108
|
+
try {
|
|
109
|
+
await api.registerRepository(projectId, {
|
|
110
|
+
name: repo.name,
|
|
111
|
+
originUrl: repo.remote,
|
|
112
|
+
defaultBranch: 'main',
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// best-effort — don't fail the link if registration fails
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
102
120
|
}
|
|
103
121
|
}
|
|
104
122
|
else {
|
|
105
|
-
|
|
106
|
-
console.log(
|
|
123
|
+
const origin = flags.get('origin');
|
|
124
|
+
console.log('No git repository found in this folder.');
|
|
125
|
+
if (origin) {
|
|
126
|
+
console.log('Initializing git repository and adding the origin remote...');
|
|
127
|
+
const init = (0, worktree_1.gitInit)(canonical, 'origin', origin);
|
|
128
|
+
if (!init.success) {
|
|
129
|
+
console.error(' ' + (init.error ?? 'git init failed'));
|
|
130
|
+
process.exitCode = 1;
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
(0, node_child_process_1.execSync)('git add -A', { cwd: canonical, encoding: 'utf-8', timeout: 30_000 });
|
|
135
|
+
(0, node_child_process_1.execSync)('git commit -m "Initial commit"', {
|
|
136
|
+
cwd: canonical,
|
|
137
|
+
encoding: 'utf-8',
|
|
138
|
+
timeout: 30_000,
|
|
139
|
+
});
|
|
140
|
+
console.log('Initial commit created on branch main.');
|
|
141
|
+
console.log(`Origin set to: ${origin}`);
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
145
|
+
console.error(` Could not create the initial commit: ${message}`);
|
|
146
|
+
console.log(' Run `git add -A && git commit -m "Initial commit"` manually, then re-run link.');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
console.log(' Pass --origin <url> to initialize git and set the remote automatically:');
|
|
151
|
+
console.log(` teamshare-agent link --project ${projectId} --path <folder> --origin https://github.com/you/repo.git`);
|
|
152
|
+
}
|
|
107
153
|
}
|
|
108
154
|
}
|
|
109
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/cli/commands/link.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/cli/commands/link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function cmdPlanner(flags: Map<string, string>): Promise<void>;
|
|
@@ -0,0 +1,241 @@
|
|
|
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.cmdPlanner = cmdPlanner;
|
|
37
|
+
/**
|
|
38
|
+
* `planner` command: decompose a task into subtasks using the agent's
|
|
39
|
+
* harness. The agent receives a planning brief, uses the `submit_plan`
|
|
40
|
+
* MCP tool to return structured subtasks, and the result is written to
|
|
41
|
+
* a temp file for the bridge to read and emit back to the backend.
|
|
42
|
+
*
|
|
43
|
+
* The `submit_plan` MCP tool validates the plan (cycle detection, index
|
|
44
|
+
* checks) but does NOT persist — the backend's `createChildren()` handles
|
|
45
|
+
* all persistence after receiving the validated plan.
|
|
46
|
+
*
|
|
47
|
+
* Falls back to headless LLM (complete()) when no harness is available.
|
|
48
|
+
*/
|
|
49
|
+
const node_fs_1 = require("node:fs");
|
|
50
|
+
const node_path_1 = require("node:path");
|
|
51
|
+
const node_os_1 = require("node:os");
|
|
52
|
+
const api_1 = require("../../lib/api");
|
|
53
|
+
const llm_1 = require("../../lib/llm");
|
|
54
|
+
const lock_1 = require("../../lib/lock");
|
|
55
|
+
const daemon_reporter_1 = require("../../lib/daemon-reporter");
|
|
56
|
+
const session_stream_1 = require("../../lib/session-stream");
|
|
57
|
+
const brief_1 = require("../../lib/brief");
|
|
58
|
+
const utils_1 = require("../utils");
|
|
59
|
+
const harness_1 = require("./harness");
|
|
60
|
+
const shared_1 = require("./shared");
|
|
61
|
+
const presence_1 = require("../../lib/workspace/presence");
|
|
62
|
+
const PLANNER_PROMPT_TEMPLATE = `You are a software build planner. Break the task below into 2-5 concrete,
|
|
63
|
+
independently verifiable subtasks, in dependency order.
|
|
64
|
+
|
|
65
|
+
For each subtask, include a "verification" array with 2-4 concrete, checkable criteria
|
|
66
|
+
(e.g. "build succeeds with no errors", "all tests pass", "endpoint returns 200", "docs updated").
|
|
67
|
+
These become checklist items the agent must verify.
|
|
68
|
+
|
|
69
|
+
Use the submit_plan MCP tool to submit your decomposition. Return ONLY the tool call,
|
|
70
|
+
no prose explanation.
|
|
71
|
+
|
|
72
|
+
TASK: {description}`;
|
|
73
|
+
async function cmdPlanner(flags) {
|
|
74
|
+
const agentId = (0, utils_1.need)(flags, 'agent');
|
|
75
|
+
const projectId = (0, utils_1.need)(flags, 'project');
|
|
76
|
+
const parentTaskId = (0, utils_1.need)(flags, 'task');
|
|
77
|
+
const apiKey = (0, utils_1.resolveApiKey)(flags);
|
|
78
|
+
const selfMode = flags.get('self') === 'true';
|
|
79
|
+
const resultPath = flags.get('result-file') ?? (0, node_path_1.join)((0, node_os_1.homedir)(), '.teamshare', 'state', `planner-${parentTaskId.slice(0, 8)}.json`);
|
|
80
|
+
let exitCode = 0;
|
|
81
|
+
const sessionId = flags.get('session') ?? (0, session_stream_1.newSessionId)();
|
|
82
|
+
const reporter = new daemon_reporter_1.DaemonReporter({ sessionId, agentId, projectId, mode: 'run' });
|
|
83
|
+
reporter.connect();
|
|
84
|
+
const log = (0, utils_1.makeLog)(reporter);
|
|
85
|
+
const api = new api_1.TeamshareApi(process.env.TEAMSHARE_API_URL, apiKey);
|
|
86
|
+
const cwd = (0, shared_1.resolveWorkingDir)(flags, projectId, log);
|
|
87
|
+
if (!cwd)
|
|
88
|
+
return;
|
|
89
|
+
const settings = await (0, utils_1.fetchAgentSettings)(api, agentId, log);
|
|
90
|
+
const harness = (0, utils_1.harnessOf)(flags, settings);
|
|
91
|
+
(0, utils_1.applyOpenCodeKey)(agentId, log, settings);
|
|
92
|
+
const lock = await (0, lock_1.acquireLock)(agentId, 'orchestrator', { projectId, taskId: parentTaskId }, {
|
|
93
|
+
onWaiting: (busy) => log(`[lock] agent ${agentId} is busy (pid ${busy.pid}, since ${busy.startedAt}, ${busy.kind}) - waiting...`),
|
|
94
|
+
});
|
|
95
|
+
if (!lock) {
|
|
96
|
+
console.error(`[lock] gave up waiting for agent ${agentId} - try again later`);
|
|
97
|
+
process.exitCode = 1;
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
(0, presence_1.registerPresence)(cwd, { agentId, kind: 'orchestrator', projectId });
|
|
102
|
+
await (0, brief_1.reportStatus)(api, agentId, 'working', parentTaskId, sessionId);
|
|
103
|
+
log(`[planner] decomposing task ${parentTaskId.slice(0, 8)} in ${cwd}`);
|
|
104
|
+
// Fetch the task brief for context.
|
|
105
|
+
const brief = await (0, brief_1.fetchTaskBrief)(api, parentTaskId).catch(() => '');
|
|
106
|
+
const description = brief || `Task ${parentTaskId}`;
|
|
107
|
+
const prompt = PLANNER_PROMPT_TEMPLATE.replace('{description}', description);
|
|
108
|
+
const heartbeatTimer = setInterval(() => {
|
|
109
|
+
void (0, brief_1.reportStatus)(api, agentId, 'working', parentTaskId, sessionId);
|
|
110
|
+
}, 120_000);
|
|
111
|
+
try {
|
|
112
|
+
const endpoint = (0, utils_1.llmEndpoint)(flags, settings);
|
|
113
|
+
let plan = null;
|
|
114
|
+
if (harness && harness !== 'none') {
|
|
115
|
+
log(`[planner] spawning ${harness} harness for decomposition`);
|
|
116
|
+
// Spawn the harness. The agent will call submit_plan which writes
|
|
117
|
+
// the validated plan to a temp file. We wait for the file to appear.
|
|
118
|
+
const exit = await (0, harness_1.spawnHarness)(harness, prompt, log, {
|
|
119
|
+
model: (0, utils_1.modelOf)(flags, settings),
|
|
120
|
+
temperature: (0, utils_1.temperatureOf)(flags, settings),
|
|
121
|
+
effort: (0, utils_1.effortOf)(flags, settings) ?? (0, utils_1.defaultEffort)(harness),
|
|
122
|
+
cwd,
|
|
123
|
+
timeoutMin: (0, utils_1.sessionTimeoutMin)(flags),
|
|
124
|
+
title: `Planner decomposition for task ${parentTaskId.slice(0, 8)}`,
|
|
125
|
+
agentKey: apiKey,
|
|
126
|
+
apiBaseUrl: api.baseUrl,
|
|
127
|
+
providerKey: settings.providerKey ?? undefined,
|
|
128
|
+
sessionMode: 'run',
|
|
129
|
+
sessionId,
|
|
130
|
+
});
|
|
131
|
+
// Read the result file written by submit_plan.
|
|
132
|
+
plan = readResultFile(resultPath, log);
|
|
133
|
+
if (!plan && exit !== 0) {
|
|
134
|
+
log(`[planner] harness exited with code ${exit} and no plan file found`, 'stderr');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Fall back to headless LLM if harness didn't produce a plan.
|
|
138
|
+
if (!plan) {
|
|
139
|
+
log(`[planner] using headless LLM fallback`);
|
|
140
|
+
plan = await runHeadlessPlanner(prompt, {
|
|
141
|
+
baseUrl: endpoint.baseUrl,
|
|
142
|
+
apiKey: (0, utils_1.sessionLlmApiKey)(settings),
|
|
143
|
+
model: endpoint.model,
|
|
144
|
+
temperature: (0, utils_1.temperatureOf)(flags, settings),
|
|
145
|
+
maxTokens: (0, utils_1.maxTokensOf)(flags, settings),
|
|
146
|
+
}, log);
|
|
147
|
+
}
|
|
148
|
+
if (plan && plan.length > 0) {
|
|
149
|
+
// Write the final result for the bridge to read.
|
|
150
|
+
(0, node_fs_1.writeFileSync)(resultPath, JSON.stringify({ tasks: plan }), 'utf-8');
|
|
151
|
+
log(`[planner] plan ready: ${plan.length} subtasks -> ${resultPath}`);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// Single-node fallback.
|
|
155
|
+
const fallback = [{ title: description.slice(0, 200), description, dependencies: [], verification: [] }];
|
|
156
|
+
(0, node_fs_1.writeFileSync)(resultPath, JSON.stringify({ tasks: fallback }), 'utf-8');
|
|
157
|
+
log(`[planner] fallback: single node -> ${resultPath}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
clearInterval(heartbeatTimer);
|
|
162
|
+
void api.releaseSessionClaims(sessionId).catch(() => { });
|
|
163
|
+
await (0, brief_1.reportStatus)(api, agentId, 'online', parentTaskId, sessionId);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
const { msg } = await Promise.resolve().then(() => __importStar(require('../../lib/config')));
|
|
168
|
+
log(`[error] ${msg(err)}`, 'stderr');
|
|
169
|
+
exitCode = 1;
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
(0, presence_1.unregisterPresence)(cwd);
|
|
173
|
+
(0, lock_1.releaseLock)(agentId);
|
|
174
|
+
await reporter.end(exitCode);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/** Read the plan from the result file written by submit_plan MCP tool. */
|
|
178
|
+
function readResultFile(resultPath, log) {
|
|
179
|
+
try {
|
|
180
|
+
const raw = (0, node_fs_1.readFileSync)(resultPath, 'utf-8');
|
|
181
|
+
const parsed = JSON.parse(raw);
|
|
182
|
+
const tasks = parsed?.tasks;
|
|
183
|
+
if (!Array.isArray(tasks) || tasks.length === 0)
|
|
184
|
+
return null;
|
|
185
|
+
// Validate and normalize.
|
|
186
|
+
return tasks.map((node, i) => ({
|
|
187
|
+
title: String(node.title ?? `Step ${i + 1}`).slice(0, 200),
|
|
188
|
+
description: String(node.description ?? ''),
|
|
189
|
+
dependencies: Array.isArray(node.dependencies)
|
|
190
|
+
? node.dependencies.filter((d) => Number.isInteger(d) && d >= 0 && d < tasks.length && d !== i)
|
|
191
|
+
: [],
|
|
192
|
+
verification: Array.isArray(node.verification)
|
|
193
|
+
? node.verification.filter((v) => v.trim().length > 0)
|
|
194
|
+
: [],
|
|
195
|
+
}));
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
log(`[planner] result file not found or invalid: ${resultPath}`, 'stderr');
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Headless planner fallback: uses the complete() LLM call directly (no
|
|
204
|
+
* harness, no MCP tools). Returns the parsed plan.
|
|
205
|
+
*/
|
|
206
|
+
async function runHeadlessPlanner(prompt, llmOpts, log) {
|
|
207
|
+
try {
|
|
208
|
+
const raw = await (0, llm_1.complete)(prompt, {
|
|
209
|
+
baseUrl: llmOpts.baseUrl,
|
|
210
|
+
apiKey: llmOpts.apiKey,
|
|
211
|
+
model: llmOpts.model,
|
|
212
|
+
temperature: llmOpts.temperature ?? 0.2,
|
|
213
|
+
maxTokens: llmOpts.maxTokens ?? 2000,
|
|
214
|
+
});
|
|
215
|
+
const cleaned = raw.replace(/```json/gi, '').replace(/```/g, '').trim();
|
|
216
|
+
const start = cleaned.indexOf('[');
|
|
217
|
+
const end = cleaned.lastIndexOf(']');
|
|
218
|
+
if (start < 0 || end <= start) {
|
|
219
|
+
log('[planner] headless LLM returned unparseable response', 'stderr');
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
const parsed = JSON.parse(cleaned.slice(start, end + 1));
|
|
223
|
+
if (!Array.isArray(parsed) || parsed.length === 0)
|
|
224
|
+
return null;
|
|
225
|
+
return parsed.map((node, i) => ({
|
|
226
|
+
title: String(node.title ?? `Step ${i + 1}`).slice(0, 200),
|
|
227
|
+
description: String(node.description ?? ''),
|
|
228
|
+
dependencies: Array.isArray(node.dependencies)
|
|
229
|
+
? node.dependencies.filter((d) => Number.isInteger(d) && d >= 0 && d < parsed.length && d !== i)
|
|
230
|
+
: [],
|
|
231
|
+
verification: Array.isArray(node.verification)
|
|
232
|
+
? node.verification.filter((v) => String(v).trim().length > 0).map(String)
|
|
233
|
+
: [],
|
|
234
|
+
}));
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
log(`[planner] headless LLM failed: ${err instanceof Error ? err.message : String(err)}`, 'stderr');
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/cli/commands/planner.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -25,6 +25,7 @@ const usage_1 = require("./commands/usage");
|
|
|
25
25
|
const skills_1 = require("./commands/skills");
|
|
26
26
|
const key_1 = require("./commands/key");
|
|
27
27
|
const worker_1 = require("./commands/worker");
|
|
28
|
+
const planner_1 = require("./commands/planner");
|
|
28
29
|
const cleanup_1 = require("./commands/cleanup");
|
|
29
30
|
const audit_1 = require("./commands/audit");
|
|
30
31
|
const scaffold_1 = require("./commands/scaffold");
|
|
@@ -47,6 +48,7 @@ function usage() {
|
|
|
47
48
|
' teamshare-agent doc --document <documentId> --agent <agentId> --key <ts_...> [--mention <token>] [--comment <commentId>]',
|
|
48
49
|
' teamshare-agent build --project <projectId> --agent <agentId> --key <ts_...> [options]',
|
|
49
50
|
' teamshare-agent worker --agent <agentId> --key <ts_...> [--once] [--self]',
|
|
51
|
+
' teamshare-agent planner --project <projectId> --task <taskId> --agent <agentId> --key <ts_...>',
|
|
50
52
|
' teamshare-agent merge --task <otId> --agent <agentId> --key <ts_...>',
|
|
51
53
|
' teamshare-agent cleanup --agent <agentId> tree-kill stuck session + clear its lock',
|
|
52
54
|
' teamshare-agent usage [--day YYYY-MM-DD] [--agent <agentId>]',
|
|
@@ -121,6 +123,8 @@ async function main() {
|
|
|
121
123
|
await (0, build_1.cmdBuild)(flags);
|
|
122
124
|
else if (command === 'worker')
|
|
123
125
|
await (0, worker_1.cmdWorker)(flags);
|
|
126
|
+
else if (command === 'planner')
|
|
127
|
+
await (0, planner_1.cmdPlanner)(flags);
|
|
124
128
|
else if (command === 'merge')
|
|
125
129
|
await (0, worker_1.cmdMerge)(flags);
|
|
126
130
|
else if (command === 'cleanup')
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/agy-pty.js
CHANGED
|
@@ -76,24 +76,19 @@ function runAgyPty(opts) {
|
|
|
76
76
|
if (done)
|
|
77
77
|
return;
|
|
78
78
|
done = true;
|
|
79
|
-
|
|
79
|
+
if (killTimer)
|
|
80
|
+
clearTimeout(killTimer);
|
|
80
81
|
const tail = clean(lineBuf);
|
|
81
82
|
if (tail.trim())
|
|
82
83
|
opts.onLine?.(tail, 'stdout');
|
|
83
84
|
resolve({ code, output: clean(output) });
|
|
84
85
|
};
|
|
85
86
|
const timeoutMs = Math.max(1, opts.timeoutMin ?? 60) * 60_000;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
finish(124);
|
|
92
|
-
}, timeoutMs);
|
|
93
|
-
const dataHandler = term.onData.bind(term);
|
|
94
|
-
dataHandler((data) => {
|
|
95
|
-
// Reset kill timer on each output — active sessions never get killed.
|
|
96
|
-
clearTimeout(killTimer);
|
|
87
|
+
// Idle-reset timer: NO hard ceiling. Only starts on first output.
|
|
88
|
+
let killTimer = null;
|
|
89
|
+
const startIdleTimer = () => {
|
|
90
|
+
if (killTimer)
|
|
91
|
+
clearTimeout(killTimer);
|
|
97
92
|
killTimer = setTimeout(() => {
|
|
98
93
|
try {
|
|
99
94
|
term.kill();
|
|
@@ -101,8 +96,19 @@ function runAgyPty(opts) {
|
|
|
101
96
|
catch { /* already gone */ }
|
|
102
97
|
finish(124);
|
|
103
98
|
}, timeoutMs);
|
|
99
|
+
};
|
|
100
|
+
const dataHandler = term.onData.bind(term);
|
|
101
|
+
dataHandler((data) => {
|
|
102
|
+
// Reset idle timer on each output — active sessions never get killed.
|
|
103
|
+
startIdleTimer();
|
|
104
104
|
emit(data);
|
|
105
105
|
});
|
|
106
|
+
// Handle natural process exit — resolve with the real exit code before
|
|
107
|
+
// the idle timer can fire and report 124 (killed). node-pty fires this
|
|
108
|
+
// when the child process terminates for any reason.
|
|
109
|
+
term.onExit(({ exitCode }) => {
|
|
110
|
+
finish(exitCode ?? 1);
|
|
111
|
+
});
|
|
106
112
|
});
|
|
107
113
|
}
|
|
108
114
|
//# sourceMappingURL=agy-pty.js.map
|