cli-jaw 1.7.9 → 1.7.11
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/bin/commands/dispatch.js +8 -1
- package/dist/bin/commands/dispatch.js.map +1 -1
- package/dist/bin/commands/launchd.js +6 -0
- package/dist/bin/commands/launchd.js.map +1 -1
- package/dist/bin/postinstall.js +181 -0
- package/dist/bin/postinstall.js.map +1 -1
- package/dist/lib/mcp/skills-utils.js +5 -1
- package/dist/lib/mcp/skills-utils.js.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/dist/src/agent/args.js +11 -6
- package/dist/src/agent/args.js.map +1 -1
- package/dist/src/agent/spawn.js +30 -1
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/compact.js +32 -36
- package/dist/src/cli/compact.js.map +1 -1
- package/dist/src/core/boss-auth.js +38 -0
- package/dist/src/core/boss-auth.js.map +1 -0
- package/dist/src/core/compact.js +205 -0
- package/dist/src/core/compact.js.map +1 -1
- package/dist/src/core/employees.js +115 -0
- package/dist/src/core/employees.js.map +1 -1
- package/dist/src/core/launchd-plist.js +25 -10
- package/dist/src/core/launchd-plist.js.map +1 -1
- package/dist/src/core/main-session.js +14 -0
- package/dist/src/core/main-session.js.map +1 -1
- package/dist/src/core/runtime-path.js +29 -0
- package/dist/src/core/runtime-path.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +40 -30
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/worker-registry.js +17 -0
- package/dist/src/orchestrator/worker-registry.js.map +1 -1
- package/dist/src/prompt/builder.js +52 -2
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +87 -26
- package/dist/src/prompt/templates/control-system.md +48 -0
- package/dist/src/routes/orchestrate.js +86 -7
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/package.json +1 -1
- package/scripts/darwin/spike-tcc-attribution.sh +333 -0
- package/scripts/darwin/test-computeruse-e2e.sh +204 -0
package/dist/src/core/compact.js
CHANGED
|
@@ -67,4 +67,209 @@ export function buildManagedCompactSummaryForTest(rows, instructions = '') {
|
|
|
67
67
|
lines.push('discard everything else.');
|
|
68
68
|
return lines.join('\n');
|
|
69
69
|
}
|
|
70
|
+
// ─────────────────────────────────────────────────────────────
|
|
71
|
+
// Bootstrap compact (vendor-agnostic, session-reset model)
|
|
72
|
+
// ─────────────────────────────────────────────────────────────
|
|
73
|
+
import { execFileSync } from 'node:child_process';
|
|
74
|
+
import { homedir } from 'node:os';
|
|
75
|
+
import { getRecentMessages } from './db.js';
|
|
76
|
+
import { searchMemoryWithPolicy } from '../memory/injection.js';
|
|
77
|
+
import { buildTaskSnapshot } from '../memory/runtime.js';
|
|
78
|
+
export const BOOTSTRAP_TRACE_PREFIX = '[assistant] Bootstrap compact payload:';
|
|
79
|
+
export const BOOTSTRAP_BUDGET = {
|
|
80
|
+
goal: 500,
|
|
81
|
+
recent_turns: 4000,
|
|
82
|
+
memory_hits: 2000,
|
|
83
|
+
grep_hits: 1500,
|
|
84
|
+
task_snapshot: 2000,
|
|
85
|
+
total_max: 10_000,
|
|
86
|
+
};
|
|
87
|
+
const STOPWORDS = new Set([
|
|
88
|
+
'the', 'a', 'an', 'and', 'or', 'but', 'if', 'to', 'of', 'in', 'on', 'for',
|
|
89
|
+
'is', 'are', 'was', 'were', 'be', 'been', 'being', 'this', 'that', 'it',
|
|
90
|
+
'with', 'by', 'as', 'at', 'from', 'into', 'not', 'no', 'do', 'does', 'did',
|
|
91
|
+
'i', 'you', 'we', 'they', 'he', 'she', 'me', 'my', 'your', 'our', 'their',
|
|
92
|
+
]);
|
|
93
|
+
const MEMORY_SEARCH_SENTINELS = new Set(['(no results)', '(query required)']);
|
|
94
|
+
function extractKeywords(text, limit) {
|
|
95
|
+
const freq = new Map();
|
|
96
|
+
const tokens = (text || '')
|
|
97
|
+
.toLowerCase()
|
|
98
|
+
.replace(/[`*_~#>()\[\]{}'".,!?;:/\\]/g, ' ')
|
|
99
|
+
.split(/\s+/)
|
|
100
|
+
.filter(tok => tok.length >= 3 && !STOPWORDS.has(tok) && !/^\d+$/.test(tok));
|
|
101
|
+
for (const tok of tokens)
|
|
102
|
+
freq.set(tok, (freq.get(tok) || 0) + 1);
|
|
103
|
+
return [...freq.entries()]
|
|
104
|
+
.sort((a, b) => b[1] - a[1])
|
|
105
|
+
.slice(0, limit)
|
|
106
|
+
.map(([tok]) => tok);
|
|
107
|
+
}
|
|
108
|
+
function clipSlot(text, max) {
|
|
109
|
+
const trimmed = (text || '').trim();
|
|
110
|
+
if (!trimmed)
|
|
111
|
+
return '';
|
|
112
|
+
if (trimmed.length <= max)
|
|
113
|
+
return trimmed;
|
|
114
|
+
return trimmed.slice(0, max - 1).trimEnd() + '…';
|
|
115
|
+
}
|
|
116
|
+
export function normalizeWorkingDir(wd) {
|
|
117
|
+
if (!wd || wd === '~')
|
|
118
|
+
return null;
|
|
119
|
+
if (wd.startsWith('~/'))
|
|
120
|
+
return wd.replace(/^~/, homedir());
|
|
121
|
+
return wd;
|
|
122
|
+
}
|
|
123
|
+
function harvestGoal(rows, instructions) {
|
|
124
|
+
const raw = safeText(instructions);
|
|
125
|
+
if (raw)
|
|
126
|
+
return clipSlot(raw, BOOTSTRAP_BUDGET.goal);
|
|
127
|
+
const lastUser = [...rows].reverse().find(r => safeText(r.role) === 'user');
|
|
128
|
+
const fallback = lastUser ? safeText(lastUser.content) : '';
|
|
129
|
+
if (fallback)
|
|
130
|
+
return clipSlot(fallback, BOOTSTRAP_BUDGET.goal);
|
|
131
|
+
return 'Continue the task.';
|
|
132
|
+
}
|
|
133
|
+
function harvestRecentTurns(rows) {
|
|
134
|
+
const windowRows = getRowsSinceLatestCompactForTest(rows)
|
|
135
|
+
.filter(r => {
|
|
136
|
+
const role = safeText(r.role);
|
|
137
|
+
return role === 'user' || role === 'assistant';
|
|
138
|
+
})
|
|
139
|
+
.slice(-10);
|
|
140
|
+
const lines = [];
|
|
141
|
+
for (const row of windowRows) {
|
|
142
|
+
const role = safeText(row.role) || 'user';
|
|
143
|
+
const body = role === 'assistant'
|
|
144
|
+
? safeText(row.content) || safeText(row.trace)
|
|
145
|
+
: safeText(row.content);
|
|
146
|
+
const clipped = clipSlot(normalizeSummaryText(body), 380);
|
|
147
|
+
if (clipped)
|
|
148
|
+
lines.push(`- [${role}] ${clipped}`);
|
|
149
|
+
}
|
|
150
|
+
let joined = lines.join('\n');
|
|
151
|
+
while (joined.length > BOOTSTRAP_BUDGET.recent_turns && lines.length > 1) {
|
|
152
|
+
lines.shift();
|
|
153
|
+
joined = lines.join('\n');
|
|
154
|
+
}
|
|
155
|
+
return joined;
|
|
156
|
+
}
|
|
157
|
+
function harvestMemoryHits(goal, recentBody) {
|
|
158
|
+
try {
|
|
159
|
+
const keywords = extractKeywords(`${goal} ${recentBody}`, 6);
|
|
160
|
+
if (!keywords.length)
|
|
161
|
+
return '';
|
|
162
|
+
const query = keywords.join(' ');
|
|
163
|
+
const raw = searchMemoryWithPolicy({ query, role: 'boss' });
|
|
164
|
+
const text = String(raw || '').trim();
|
|
165
|
+
if (!text || MEMORY_SEARCH_SENTINELS.has(text) || text.startsWith('(search error:'))
|
|
166
|
+
return '';
|
|
167
|
+
return clipSlot(text, BOOTSTRAP_BUDGET.memory_hits);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return '';
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function harvestGrepHits(goal, workingDir) {
|
|
174
|
+
if (!workingDir)
|
|
175
|
+
return '';
|
|
176
|
+
const keywords = extractKeywords(goal, 3);
|
|
177
|
+
if (!keywords.length)
|
|
178
|
+
return '';
|
|
179
|
+
const lines = [];
|
|
180
|
+
for (const kw of keywords) {
|
|
181
|
+
try {
|
|
182
|
+
const out = execFileSync('git', [
|
|
183
|
+
'-C', workingDir,
|
|
184
|
+
'grep', '-n', '--untracked', '-I', '--max-count=5', '-e', kw,
|
|
185
|
+
], { encoding: 'utf8', timeout: 2500, stdio: ['ignore', 'pipe', 'ignore'] });
|
|
186
|
+
for (const raw of out.split('\n')) {
|
|
187
|
+
if (!raw.trim())
|
|
188
|
+
continue;
|
|
189
|
+
const m = raw.match(/^([^:]+):(\d+):(.*)$/);
|
|
190
|
+
if (!m)
|
|
191
|
+
continue;
|
|
192
|
+
const file = m[1] || '';
|
|
193
|
+
const line = m[2] || '';
|
|
194
|
+
const snippet = m[3] || '';
|
|
195
|
+
if (!file || file.includes('node_modules/') || file.startsWith('.git/'))
|
|
196
|
+
continue;
|
|
197
|
+
lines.push(`- ${file}:${line} ${snippet.trim().slice(0, 120)}`);
|
|
198
|
+
if (lines.length >= 10)
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
if (lines.length >= 10)
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
// keyword miss or git not available — skip
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
let joined = lines.join('\n');
|
|
209
|
+
while (joined.length > BOOTSTRAP_BUDGET.grep_hits && lines.length > 1) {
|
|
210
|
+
lines.pop();
|
|
211
|
+
joined = lines.join('\n');
|
|
212
|
+
}
|
|
213
|
+
return joined;
|
|
214
|
+
}
|
|
215
|
+
function harvestTaskSnapshot(goal) {
|
|
216
|
+
try {
|
|
217
|
+
const snap = buildTaskSnapshot(goal, BOOTSTRAP_BUDGET.task_snapshot);
|
|
218
|
+
return clipSlot(String(snap || ''), BOOTSTRAP_BUDGET.task_snapshot);
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return '';
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
export function harvestBootstrapSlots(input) {
|
|
225
|
+
const wd = normalizeWorkingDir(input.workingDir);
|
|
226
|
+
const rows = getRecentMessages.all(wd, 40) || [];
|
|
227
|
+
const goal = harvestGoal(rows, input.instructions);
|
|
228
|
+
const recent_turns = harvestRecentTurns(rows);
|
|
229
|
+
const memory_hits = harvestMemoryHits(goal, recent_turns);
|
|
230
|
+
const grep_hits = harvestGrepHits(goal, wd);
|
|
231
|
+
const task_snapshot = harvestTaskSnapshot(goal);
|
|
232
|
+
return { goal, recent_turns, memory_hits, grep_hits, task_snapshot };
|
|
233
|
+
}
|
|
234
|
+
export function renderBootstrapPrompt(slots) {
|
|
235
|
+
const sections = [];
|
|
236
|
+
const push = (tag, body) => {
|
|
237
|
+
const trimmed = (body || '').trim();
|
|
238
|
+
if (!trimmed)
|
|
239
|
+
return;
|
|
240
|
+
sections.push(`<${tag}>\n${trimmed}\n</${tag}>`);
|
|
241
|
+
};
|
|
242
|
+
const header = [
|
|
243
|
+
'# Compacted Session Handoff',
|
|
244
|
+
'',
|
|
245
|
+
'The conversation history has been summarized to free up context. You are continuing the task from a previous session. Treat the sections below as the authoritative state. Do not repeat completed work. If critical context is missing, ask one clarifying question before acting.',
|
|
246
|
+
].join('\n');
|
|
247
|
+
push('overall_goal', slots.goal);
|
|
248
|
+
push('recent_actions', slots.recent_turns);
|
|
249
|
+
push('key_knowledge', slots.memory_hits);
|
|
250
|
+
push('artifact_trail', slots.grep_hits);
|
|
251
|
+
push('current_state', slots.task_snapshot);
|
|
252
|
+
const footer = [
|
|
253
|
+
'## Continuation Instructions',
|
|
254
|
+
'Resume from the plan in <current_state>. Do not repeat work already listed under <recent_actions>.',
|
|
255
|
+
'',
|
|
256
|
+
'The sections above are a starting snapshot built at compact time. The live memory index has more than was harvested. Before answering:',
|
|
257
|
+
'- Run `cli-jaw memory search "<keywords>"` for any term in <overall_goal> or the user\'s next message.',
|
|
258
|
+
'- Use `cli-jaw memory read <path>` to expand any line referenced in <key_knowledge> or <current_state>.',
|
|
259
|
+
'- If a referenced file in <artifact_trail> is relevant, open it directly with the file-read tool — do not rely on the snippet alone.',
|
|
260
|
+
].join('\n');
|
|
261
|
+
let out = [header, '', sections.join('\n\n'), '', footer, ''].join('\n');
|
|
262
|
+
if (out.length > BOOTSTRAP_BUDGET.total_max) {
|
|
263
|
+
const shrunk = { ...slots };
|
|
264
|
+
const lines = shrunk.recent_turns.split('\n');
|
|
265
|
+
while (out.length > BOOTSTRAP_BUDGET.total_max && lines.length > 1) {
|
|
266
|
+
lines.shift();
|
|
267
|
+
shrunk.recent_turns = lines.join('\n');
|
|
268
|
+
out = renderBootstrapPrompt(shrunk);
|
|
269
|
+
if (lines.length <= 1)
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return out;
|
|
274
|
+
}
|
|
70
275
|
//# sourceMappingURL=compact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../src/core/compact.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;AAS7E,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACtC,OAAO,IAAI;SACN,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,gDAAgD,EAAE,EAAE,CAAC;SAC7D,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAG,GAAG,GAAG;IACrC,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAkC;IACjE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,IAAI,KAAK,WAAW;WACpB,OAAO,KAAK,sBAAsB;WAClC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,IAAkB;IAC/D,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC3B,IAAI,kBAAkB,CAAC,GAAG,CAAC;YAAE,MAAM;QACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAe;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,KAAK,WAAW;QAChC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9C,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,MAAM,IAAI,KAAK,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAAkB,EAAE,YAAY,GAAG,EAAE;IACnF,MAAM,UAAU,GAAG,gCAAgC,CAAC,IAAI,CAAC;SACpD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC;SAClF,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACf,MAAM,KAAK,GAAG;QACV,sBAAsB;QACtB,uBAAuB,QAAQ,CAAC,YAAY,CAAC,IAAI,uEAAuE,EAAE;QAC1H,wBAAwB;KAC3B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;IAC3G,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../src/core/compact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// ─── Employee Management ─────────────────────────────
|
|
2
2
|
// Shared employee seeding logic for web, telegram, discord contexts.
|
|
3
3
|
import crypto from 'node:crypto';
|
|
4
|
+
import fs from 'node:fs';
|
|
4
5
|
import { getEmployees, deleteEmployee, insertEmployee } from './db.js';
|
|
5
6
|
import { settings } from './config.js';
|
|
6
7
|
import { broadcast } from './bus.js';
|
|
@@ -12,6 +13,120 @@ export const DEFAULT_EMPLOYEES = [
|
|
|
12
13
|
{ name: 'Research', role: 'Search, codebase exploration, uncertainty reduction, read-only reports' },
|
|
13
14
|
{ name: 'Docs', role: 'Documentation, README, API docs' },
|
|
14
15
|
];
|
|
16
|
+
export const STATIC_EMPLOYEES = [
|
|
17
|
+
{
|
|
18
|
+
name: 'Control',
|
|
19
|
+
cli: 'codex',
|
|
20
|
+
description: 'Desktop + browser automation specialist (NOT exclusive — Boss-as-codex may self-serve).',
|
|
21
|
+
// vision-click is absorbed into desktop-control (reference/vision-click.md).
|
|
22
|
+
// Keep skills minimal; screen-capture stays for non-Chrome OS capture.
|
|
23
|
+
skills: ['desktop-control', 'screen-capture'],
|
|
24
|
+
systemPromptPatchFile: 'control-system.md',
|
|
25
|
+
runtimeHints: {
|
|
26
|
+
requiresDarwin: true,
|
|
27
|
+
requiresJawApp: true,
|
|
28
|
+
requiresCUApp: true,
|
|
29
|
+
requiresPathPin: true,
|
|
30
|
+
},
|
|
31
|
+
delegation: {
|
|
32
|
+
mode: 'preferred_for_long_sessions',
|
|
33
|
+
boss_may_self_serve: true,
|
|
34
|
+
},
|
|
35
|
+
defer: { when: 'not-gui-automation', back_to: 'Boss' },
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
export function findStaticEmployee(name) {
|
|
39
|
+
const needle = name.trim().toLowerCase();
|
|
40
|
+
return STATIC_EMPLOYEES.find((e) => e.name.toLowerCase() === needle) ?? null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Evaluate runtime preconditions for a static employee on the current host.
|
|
44
|
+
* Pure (besides platform + filesystem probes). Caller decides how to react:
|
|
45
|
+
* dispatch returns 4xx on fail, warn on missing-but-optional Jaw.app.
|
|
46
|
+
*/
|
|
47
|
+
export function checkRuntimeHints(spec, platform = process.platform) {
|
|
48
|
+
const out = { fail: [], warn: [] };
|
|
49
|
+
const hints = spec.runtimeHints;
|
|
50
|
+
if (!hints)
|
|
51
|
+
return out;
|
|
52
|
+
if (hints.requiresDarwin && platform !== 'darwin') {
|
|
53
|
+
out.fail.push(`${spec.name} requires macOS (current: ${platform})`);
|
|
54
|
+
}
|
|
55
|
+
if (hints.requiresCUApp && platform === 'darwin'
|
|
56
|
+
&& !fs.existsSync('/Applications/Codex Computer Use.app')) {
|
|
57
|
+
out.fail.push(`${spec.name} requires /Applications/Codex Computer Use.app — run: jaw doctor --tcc --fix`);
|
|
58
|
+
}
|
|
59
|
+
if (hints.requiresJawApp && platform === 'darwin'
|
|
60
|
+
&& !fs.existsSync('/Applications/Jaw.app')) {
|
|
61
|
+
out.warn.push(`${spec.name}: /Applications/Jaw.app missing — TCC attribution will fall back to node`);
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolve an employee name to a dispatchable row-shape used by worker-registry
|
|
67
|
+
* and runSingleAgent. DB rows win; static entries produce a synthetic id.
|
|
68
|
+
*/
|
|
69
|
+
export function resolveDispatchableEmployee(name, dbRows = getEmployees.all()) {
|
|
70
|
+
const needle = name.trim().toLowerCase();
|
|
71
|
+
for (const r of dbRows) {
|
|
72
|
+
if ((r.name || '').toLowerCase() === needle) {
|
|
73
|
+
return { row: r, source: 'db', spec: findStaticEmployee(r.name) };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const spec = findStaticEmployee(name);
|
|
77
|
+
if (!spec)
|
|
78
|
+
return null;
|
|
79
|
+
return {
|
|
80
|
+
row: {
|
|
81
|
+
id: `static:${spec.name.toLowerCase()}`,
|
|
82
|
+
name: spec.name,
|
|
83
|
+
cli: spec.cli,
|
|
84
|
+
model: spec.model ?? 'default',
|
|
85
|
+
role: spec.description,
|
|
86
|
+
status: 'idle',
|
|
87
|
+
},
|
|
88
|
+
source: 'static',
|
|
89
|
+
spec,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Return DB employees merged with STATIC_EMPLOYEES by case-insensitive name.
|
|
94
|
+
* DB rows take precedence when names collide; static entries only fill gaps.
|
|
95
|
+
*/
|
|
96
|
+
export function listEmployees() {
|
|
97
|
+
const dbRows = getEmployees.all();
|
|
98
|
+
const seen = new Set();
|
|
99
|
+
const out = [];
|
|
100
|
+
for (const r of dbRows) {
|
|
101
|
+
if (!r?.name)
|
|
102
|
+
continue;
|
|
103
|
+
out.push({
|
|
104
|
+
name: r.name,
|
|
105
|
+
cli: r.cli,
|
|
106
|
+
model: r.model,
|
|
107
|
+
role: r.role ?? '',
|
|
108
|
+
source: 'db',
|
|
109
|
+
});
|
|
110
|
+
seen.add(r.name.toLowerCase());
|
|
111
|
+
}
|
|
112
|
+
for (const s of STATIC_EMPLOYEES) {
|
|
113
|
+
if (seen.has(s.name.toLowerCase()))
|
|
114
|
+
continue;
|
|
115
|
+
out.push({
|
|
116
|
+
name: s.name,
|
|
117
|
+
cli: s.cli,
|
|
118
|
+
model: s.model,
|
|
119
|
+
role: s.description,
|
|
120
|
+
source: 'static',
|
|
121
|
+
runtimeHints: s.runtimeHints,
|
|
122
|
+
skills: s.skills,
|
|
123
|
+
systemPromptPatchFile: s.systemPromptPatchFile,
|
|
124
|
+
delegation: s.delegation,
|
|
125
|
+
defer: s.defer,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
15
130
|
export function seedDefaultEmployees({ reset = false, notify = false } = {}) {
|
|
16
131
|
const existing = getEmployees.all();
|
|
17
132
|
if (reset) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"employees.js","sourceRoot":"","sources":["../../../src/core/employees.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,qEAAqE;AAErE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,wBAAwB,EAAE;IACpD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,uBAAuB,EAAE;IAClD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,wEAAwE,EAAE;IACpG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE;CAC5D,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE;IACvE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC;IACpC,IAAI,KAAK,EAAE,CAAC;QACR,KAAK,MAAM,GAAG,IAAI,QAAQ;YAAE,cAAc,CAAC,GAAG,CAAE,GAAW,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;IACzB,MAAM,YAAY,GAAG,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAClC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,MAAM;QAAE,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC3C,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC"}
|
|
1
|
+
{"version":3,"file":"employees.js","sourceRoot":"","sources":["../../../src/core/employees.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,28 @@
|
|
|
3
3
|
* bin/commands/launchd.ts 및 테스트에서 공유.
|
|
4
4
|
*/
|
|
5
5
|
const xmlEsc = (s) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
6
|
+
function renderProgramArguments(o) {
|
|
7
|
+
if (o.jawAppPath) {
|
|
8
|
+
return ` <array>
|
|
9
|
+
<string>${xmlEsc(o.jawAppPath)}</string>
|
|
10
|
+
<string>--home</string>
|
|
11
|
+
<string>${xmlEsc(o.jawHome)}</string>
|
|
12
|
+
<string>--port</string>
|
|
13
|
+
<string>${xmlEsc(o.port)}</string>
|
|
14
|
+
</array>`;
|
|
15
|
+
}
|
|
16
|
+
return ` <array>
|
|
17
|
+
<string>${xmlEsc(o.nodePath)}</string>
|
|
18
|
+
<string>${xmlEsc(o.jawPath)}</string>
|
|
19
|
+
<string>--home</string>
|
|
20
|
+
<string>${xmlEsc(o.jawHome)}</string>
|
|
21
|
+
<string>serve</string>
|
|
22
|
+
<string>--port</string>
|
|
23
|
+
<string>${xmlEsc(o.port)}</string>
|
|
24
|
+
</array>`;
|
|
25
|
+
}
|
|
6
26
|
export function generateLaunchdPlist(o) {
|
|
27
|
+
const pathValue = o.pinnedPath && o.pinnedPath.length > 0 ? o.pinnedPath : o.servicePath;
|
|
7
28
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
8
29
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
9
30
|
<plist version="1.0">
|
|
@@ -11,15 +32,7 @@ export function generateLaunchdPlist(o) {
|
|
|
11
32
|
<key>Label</key>
|
|
12
33
|
<string>${xmlEsc(o.label)}</string>
|
|
13
34
|
<key>ProgramArguments</key>
|
|
14
|
-
|
|
15
|
-
<string>${xmlEsc(o.nodePath)}</string>
|
|
16
|
-
<string>${xmlEsc(o.jawPath)}</string>
|
|
17
|
-
<string>--home</string>
|
|
18
|
-
<string>${xmlEsc(o.jawHome)}</string>
|
|
19
|
-
<string>serve</string>
|
|
20
|
-
<string>--port</string>
|
|
21
|
-
<string>${xmlEsc(o.port)}</string>
|
|
22
|
-
</array>
|
|
35
|
+
${renderProgramArguments(o)}
|
|
23
36
|
<key>RunAtLoad</key>
|
|
24
37
|
<true/>
|
|
25
38
|
<key>KeepAlive</key>
|
|
@@ -39,9 +52,11 @@ export function generateLaunchdPlist(o) {
|
|
|
39
52
|
<key>EnvironmentVariables</key>
|
|
40
53
|
<dict>
|
|
41
54
|
<key>PATH</key>
|
|
42
|
-
<string>${xmlEsc(
|
|
55
|
+
<string>${xmlEsc(pathValue)}</string>
|
|
43
56
|
<key>CLI_JAW_HOME</key>
|
|
44
57
|
<string>${xmlEsc(o.jawHome)}</string>
|
|
58
|
+
<key>CLI_JAW_RUNTIME</key>
|
|
59
|
+
<string>launchd</string>
|
|
45
60
|
</dict>
|
|
46
61
|
</dict>
|
|
47
62
|
</plist>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launchd-plist.js","sourceRoot":"","sources":["../../../src/core/launchd-plist.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"launchd-plist.js","sourceRoot":"","sources":["../../../src/core/launchd-plist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CACzB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAEzE,SAAS,sBAAsB,CAAC,CAAe;IAC3C,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QACf,OAAO;kBACG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;;kBAEpB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;;kBAEjB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;aACnB,CAAC;IACV,CAAC;IACD,OAAO;kBACO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;kBAClB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;;kBAEjB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;;;kBAGjB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;aACnB,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAe;IAChD,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACzF,OAAO;;;;;cAKG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;;EAE3B,sBAAsB,CAAC,CAAC,CAAC;;;;;;;;;;;;cAYb,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;;cAEjB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;;cAEhB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;;;;kBAIZ,MAAM,CAAC,SAAS,CAAC;;kBAEjB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;;;;;SAK1B,CAAC;AACV,CAAC"}
|
|
@@ -84,4 +84,18 @@ export function resetSessionPreservingHistory() {
|
|
|
84
84
|
broadcast('session_reset', { cli: row.cli, model: row.model });
|
|
85
85
|
return row;
|
|
86
86
|
}
|
|
87
|
+
// ─── Pending bootstrap prompt (1-shot consumption) ───
|
|
88
|
+
// Compact handler stores here; next spawnAgent() prepends and clears.
|
|
89
|
+
let pendingBootstrapPrompt = null;
|
|
90
|
+
export function setPendingBootstrapPrompt(text) {
|
|
91
|
+
pendingBootstrapPrompt = text && text.trim() ? text : null;
|
|
92
|
+
}
|
|
93
|
+
export function consumePendingBootstrapPrompt() {
|
|
94
|
+
const out = pendingBootstrapPrompt;
|
|
95
|
+
pendingBootstrapPrompt = null;
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
98
|
+
export function peekPendingBootstrapPrompt() {
|
|
99
|
+
return pendingBootstrapPrompt;
|
|
100
|
+
}
|
|
87
101
|
//# sourceMappingURL=main-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-session.js","sourceRoot":"","sources":["../../../src/core/main-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main-session.js","sourceRoot":"","sources":["../../../src/core/main-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import os from 'node:os';
|
|
3
|
+
import { execSync } from 'node:child_process';
|
|
3
4
|
import { delimiter, dirname, join } from 'node:path';
|
|
4
5
|
function uniquePaths(paths) {
|
|
5
6
|
const seen = new Set();
|
|
@@ -66,4 +67,32 @@ export function buildServicePath(seedPath = process.env.PATH || '', extraDirs =
|
|
|
66
67
|
];
|
|
67
68
|
return uniquePaths([...seeded, ...extraDirs, ...defaults]).join(delimiter);
|
|
68
69
|
}
|
|
70
|
+
function detectNpmPrefixBin() {
|
|
71
|
+
try {
|
|
72
|
+
const prefix = execSync('npm config get prefix', {
|
|
73
|
+
encoding: 'utf8', stdio: 'pipe', timeout: 5000,
|
|
74
|
+
}).trim();
|
|
75
|
+
if (!prefix)
|
|
76
|
+
return null;
|
|
77
|
+
const binDir = join(prefix, 'bin');
|
|
78
|
+
return fs.existsSync(binDir) ? binDir : null;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Build the canonical PATH pin used by the native launcher (baked via
|
|
86
|
+
* PINNED_PATH) and the launchd plist (EnvironmentVariables.PATH).
|
|
87
|
+
*
|
|
88
|
+
* Extends buildServicePath() with npm's *actual* global prefix so copilot
|
|
89
|
+
* and other npm-installed CLIs are discoverable.
|
|
90
|
+
*/
|
|
91
|
+
export function buildPinnedPath(homeDir = os.homedir()) {
|
|
92
|
+
const extras = [];
|
|
93
|
+
const npmBin = detectNpmPrefixBin();
|
|
94
|
+
if (npmBin)
|
|
95
|
+
extras.push(npmBin);
|
|
96
|
+
return buildServicePath(process.env.PATH || '', extras, homeDir);
|
|
97
|
+
}
|
|
69
98
|
//# sourceMappingURL=runtime-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-path.js","sourceRoot":"","sources":["../../../src/core/runtime-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAErD,SAAS,WAAW,CAAC,KAAuC;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QAC5C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IACxC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI;QACf,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC;KACzC,EAAE,CAAC;QACA,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBACzD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;iBACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC7C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACzC,IAAI,EAAE;iBACN,OAAO,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EACjC,YAAsB,EAAE,EACxB,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE;IAEtB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;SAChC,KAAK,CAAC,SAAS,CAAC;SAChB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SAChC,MAAM,CAAC,OAAO,CAAC,CAAC;IAErB,MAAM,QAAQ,GAAG;QACb,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACtB,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;QAC/B,mBAAmB;QACnB,oBAAoB;QACpB,gBAAgB;QAChB,iBAAiB;QACjB,gCAAgC;QAChC,iCAAiC;QACjC,UAAU;QACV,WAAW;QACX,MAAM;QACN,OAAO;QACP,GAAG,mBAAmB,CAAC,OAAO,CAAC;KAClC,CAAC;IAEF,OAAO,WAAW,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/E,CAAC"}
|
|
1
|
+
{"version":3,"file":"runtime-path.js","sourceRoot":"","sources":["../../../src/core/runtime-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,37 +9,41 @@ import { startWorkerMonitor } from './worker-monitor.js';
|
|
|
9
9
|
import { updateWorkerPhase } from './worker-registry.js';
|
|
10
10
|
// ─── Phase Constants (shared with pipeline.ts) ───────
|
|
11
11
|
export const PHASES = { 1: 'Planning', 2: 'Plan Audit', 3: 'Development', 4: 'Debug/Check', 5: 'Integration' };
|
|
12
|
+
// Employee-scoped phase agenda. Do NOT include delegation language
|
|
13
|
+
// (dispatch, sub-agent, cross-agent coordination, "ALL risks", "thoroughly verify")
|
|
14
|
+
// — those concepts belong to the boss, not the single employee executing a task.
|
|
12
15
|
export const PHASE_INSTRUCTIONS = {
|
|
13
|
-
1: `[Planning]
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- Record
|
|
18
|
-
2: `[Plan Audit —
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
- Required: Conflict scan (does any other agent modify the same files)
|
|
24
|
-
- Required: Test strategy (define verifiable criteria)
|
|
25
|
-
- Report all findings as structured markdown with specific file paths and line numbers.
|
|
26
|
-
- Provide a final verdict: PASS (safe to implement) or FAIL (requires plan revision) with itemized issues.
|
|
16
|
+
1: `[Planning — single-employee scope] Read the files involved in the task yourself and write a planning note. No code.
|
|
17
|
+
- List the files you expect to change (based on your own reading)
|
|
18
|
+
- List imports you expect to add or remove
|
|
19
|
+
- List edge cases you can identify from the code you read
|
|
20
|
+
- Record in the worklog. Do NOT coordinate with other agents.`,
|
|
21
|
+
2: `[Plan Audit — single-employee scope] Audit the plan you were given. You are the single reviewer — do NOT dispatch other auditors.
|
|
22
|
+
- Read each target file referenced in the plan and check whether the diff applies cleanly (line anchors, surrounding context)
|
|
23
|
+
- Check imports in the diff against the file's existing imports
|
|
24
|
+
- Note any API signatures you cannot verify with the local code (mark as "unverifiable — needs boss follow-up") — do NOT web-search unless the plan explicitly names a new external library
|
|
25
|
+
- Produce a final verdict: PASS (safe to implement) or FAIL (list itemized issues with file:line refs)
|
|
27
26
|
- Record audit results in the worklog.`,
|
|
28
|
-
3: `[Development
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
- Required: Verify code runs without lint/build errors
|
|
27
|
+
3: `[Development — single-employee scope] Write the code yourself. No delegation.
|
|
28
|
+
- Apply the diff from the plan to each target file
|
|
29
|
+
- Verify your changes pass local lint/build (run once, report result)
|
|
32
30
|
- Record change log in worklog Execution Log.`,
|
|
33
|
-
4: `[Debug/Check] Run
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
4: `[Debug/Check — single-employee scope] Run the local tests yourself, fix the bugs you find.
|
|
32
|
+
- Attach execution output to the worklog
|
|
33
|
+
- If a test reveals a cross-agent issue, write "needs boss follow-up: <reason>" — do NOT try to coordinate it yourself.`,
|
|
34
|
+
5: `[Integration — single-employee scope] Verify your own output integrates with the files the plan references.
|
|
35
|
+
- Run the integration tests specified in the plan
|
|
36
|
+
- Record results. Cross-agent coordination belongs to boss.`,
|
|
37
|
+
};
|
|
38
|
+
// Boss-scoped phase agenda. This is the *orchestration* view — what the boss
|
|
39
|
+
// must confirm before advancing phases. Kept separate so it never leaks into
|
|
40
|
+
// employee task prompts. Reserved for future boss prompt wiring.
|
|
41
|
+
export const BOSS_PHASE_AGENDA = {
|
|
42
|
+
1: `[Planning] Confirm feasibility before dispatching employees. Impact scope, dependency graph, edge cases.`,
|
|
43
|
+
2: `[Plan Audit — Strict] Dispatch reviewer(s) if needed. Cross-reference findings. Use Context7 / web search when external libraries are involved. Conflict scan across agents. Final PASS/FAIL verdict drives transition to Development.`,
|
|
44
|
+
3: `[Development] Dispatch developer(s). Track progress and conflicts.`,
|
|
45
|
+
4: `[Debug/Check] Collect test/debug output from employees. Decide whether to iterate.`,
|
|
46
|
+
5: `[Integration] Verify cross-agent integration. Final docs + changelog.`,
|
|
43
47
|
};
|
|
44
48
|
// ─── Prompt Context Helpers ──────────────────────────
|
|
45
49
|
export function buildParallelContext(ap, peers) {
|
|
@@ -275,8 +279,14 @@ After completing your task, record results in the Execution Log section.`
|
|
|
275
279
|
const taskPrompt = `## Task Instruction [${phaseLabel}]
|
|
276
280
|
${ap.task}
|
|
277
281
|
|
|
278
|
-
## ⛔
|
|
279
|
-
You are an employee session.
|
|
282
|
+
## ⛔ Isolation Requirements (hard blocks)
|
|
283
|
+
You are an isolated employee session. The server will reject (HTTP 403) any of the following:
|
|
284
|
+
- \`cli-jaw dispatch ...\`
|
|
285
|
+
- \`curl\` / direct POST to \`/api/orchestrate/dispatch\`
|
|
286
|
+
Additionally you MUST NOT:
|
|
287
|
+
- Use your CLI's Task / Agent / Subagent tool — it creates a hidden sub-agent outside jaw's visibility and conflicts with phase accounting.
|
|
288
|
+
- Output subtask JSON or reference the \`dev-code-reviewer\` skill as a delegation target. You are the single reviewer for this task.
|
|
289
|
+
If the task seems to require parallel work, stop, write \`needs boss follow-up: <reason>\` in your output, and return. The boss will re-dispatch at the next phase.
|
|
280
290
|
|
|
281
291
|
## Current Phase: ${ap.currentPhase} (${phaseLabel})
|
|
282
292
|
${instruction}
|