cli-jaw 1.3.5 → 1.4.0-preview.20260307160721
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/lib/stt.js +39 -9
- package/dist/lib/stt.js.map +1 -1
- package/dist/server.js +127 -5
- package/dist/server.js.map +1 -1
- package/dist/src/agent/spawn.js +38 -2
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/acp-client.js +5 -3
- package/dist/src/cli/acp-client.js.map +1 -1
- package/dist/src/cli/command-context.js +11 -1
- package/dist/src/cli/command-context.js.map +1 -1
- package/dist/src/cli/handlers.js +72 -0
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/core/config.js +15 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/settings-merge.js +11 -2
- package/dist/src/core/settings-merge.js.map +1 -1
- package/dist/src/memory/advanced.js +1108 -0
- package/dist/src/memory/advanced.js.map +1 -0
- package/dist/src/memory/heartbeat-schedule.js +347 -0
- package/dist/src/memory/heartbeat-schedule.js.map +1 -0
- package/dist/src/memory/heartbeat.js +47 -6
- package/dist/src/memory/heartbeat.js.map +1 -1
- package/dist/src/memory/memory.js +2 -0
- package/dist/src/memory/memory.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +2 -1
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/gateway.js +0 -2
- package/dist/src/orchestrator/gateway.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +85 -7
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/research.js +149 -0
- package/dist/src/orchestrator/research.js.map +1 -0
- package/dist/src/orchestrator/state-machine.js +2 -2
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/prompt/builder.js +51 -18
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +3 -1
- package/dist/src/prompt/templates/a2-default.md +8 -0
- package/dist/src/prompt/templates/research-worker.md +37 -0
- package/dist/src/prompt/templates/worker-context.md +3 -0
- package/package.json +1 -1
- package/public/css/modals.css +46 -1
- package/public/dist/bundle.js +68 -57
- package/public/dist/bundle.js.map +4 -4
- package/public/index.html +142 -3
- package/public/js/constants.ts +1 -0
- package/public/js/features/employees.ts +2 -0
- package/public/js/features/heartbeat.ts +153 -27
- package/public/js/features/memory.ts +364 -52
- package/public/js/main.ts +72 -5
- package/public/js/state.ts +18 -1
- package/public/locales/en.json +14 -1
- package/public/locales/ko.json +14 -1
- package/scripts/release-preview.sh +48 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distribute.js","sourceRoot":"","sources":["../../../src/orchestrator/distribute.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"distribute.js","sourceRoot":"","sources":["../../../src/orchestrator/distribute.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,8 +36,6 @@ export function submitMessage(text, meta) {
|
|
|
36
36
|
}
|
|
37
37
|
// ── reset intent ──
|
|
38
38
|
if (isResetIntent(trimmed)) {
|
|
39
|
-
if (isAgentBusy())
|
|
40
|
-
return { action: 'rejected', reason: 'busy' };
|
|
41
39
|
insertMessage.run('user', display, meta.origin, '');
|
|
42
40
|
broadcast('new_message', { role: 'user', content: display, source: meta.origin });
|
|
43
41
|
if (!meta.skipOrchestrate) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/orchestrator/gateway.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,yEAAyE;AACzE,4EAA4E;AAE5E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACH,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAClD,gBAAgB,EAAE,aAAa,GAClC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAW9C,SAAS,WAAW,CAChB,IAAsB,EACtB,KAAa,EACb,IAAsE;IAEtE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACxB,MAAM,GAAG,GAAI,GAAa,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,SAAS,CAAC,kBAAkB,EAAE;YAC1B,IAAI,EAAE,uBAAuB,GAAG,EAAE;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa,CACzB,IAAY,EACZ,IAAuH;IAEvH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAE7D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC;IAE5C,yCAAyC;IACzC,IAAI,QAAQ,EAAE,KAAK,MAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,IAAI,WAAW,EAAE;YAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACjE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpD,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,WAAW,CACP,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EACpF,UAAU,EACV,IAAI,CACP,CAAC;QACN,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,qBAAqB;IACrB,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/orchestrator/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,9 @@ import { clearPromptCache } from '../prompt/builder.js';
|
|
|
7
7
|
import { spawnAgent } from '../agent/spawn.js';
|
|
8
8
|
import { readLatestWorklog, appendToWorklog, updateWorklogStatus, } from '../memory/worklog.js';
|
|
9
9
|
import { findEmployee, runSingleAgent } from './distribute.js';
|
|
10
|
-
import { getState, getPrefix, resetState, setState, getStatePrompt, } from './state-machine.js';
|
|
10
|
+
import { getState, getPrefix, resetState, setState, getStatePrompt, getCtx, } from './state-machine.js';
|
|
11
|
+
import { dispatchResearchTask, injectResearchIntoPlanningPrompt, shouldRunResearch, } from './research.js';
|
|
12
|
+
import { buildTaskSnapshotAsync, getAdvancedMemoryStatus } from '../memory/advanced.js';
|
|
11
13
|
// ─── Parser re-exports ─────────────────────────────
|
|
12
14
|
import { isContinueIntent, isResetIntent, isApproveIntent, needsOrchestration, parseSubtasks, parseDirectAnswer, stripSubtaskJSON, } from './parser.js';
|
|
13
15
|
export { isContinueIntent, isResetIntent, isApproveIntent, needsOrchestration, parseSubtasks, parseDirectAnswer, stripSubtaskJSON, };
|
|
@@ -23,6 +25,21 @@ const AUTO_APPROVE_NEXT = {
|
|
|
23
25
|
A: 'B',
|
|
24
26
|
B: 'C',
|
|
25
27
|
};
|
|
28
|
+
function isPabcdActivationPrompt(text) {
|
|
29
|
+
const t = String(text || '').trim();
|
|
30
|
+
if (!t)
|
|
31
|
+
return false;
|
|
32
|
+
return PABCD_ACTIVATE_PATTERNS.some(re => re.test(t));
|
|
33
|
+
}
|
|
34
|
+
function pickPlanningTask(userText, _prompt, ctx) {
|
|
35
|
+
const ctxPrompt = String(ctx?.originalPrompt || '').trim();
|
|
36
|
+
if (ctxPrompt && !isPabcdActivationPrompt(ctxPrompt))
|
|
37
|
+
return ctxPrompt;
|
|
38
|
+
const userPrompt = String(userText || '').trim();
|
|
39
|
+
if (userPrompt && !isPabcdActivationPrompt(userPrompt))
|
|
40
|
+
return userPrompt;
|
|
41
|
+
return '';
|
|
42
|
+
}
|
|
26
43
|
function shouldAutoActivatePABCD(prompt, meta) {
|
|
27
44
|
const t = String(prompt || '').trim();
|
|
28
45
|
if (!t)
|
|
@@ -37,6 +54,12 @@ export async function orchestrate(prompt, meta = {}) {
|
|
|
37
54
|
const origin = meta.origin || 'web';
|
|
38
55
|
const chatId = meta.chatId;
|
|
39
56
|
const userText = String(prompt || '').trim();
|
|
57
|
+
const runSpawnAgent = typeof meta._spawnAgent === 'function'
|
|
58
|
+
? meta._spawnAgent
|
|
59
|
+
: spawnAgent;
|
|
60
|
+
const runDispatchResearch = typeof meta._dispatchResearchTask === 'function'
|
|
61
|
+
? meta._dispatchResearchTask
|
|
62
|
+
: dispatchResearchTask;
|
|
40
63
|
let state = getState();
|
|
41
64
|
let skipPrefix = !!meta._skipPrefix;
|
|
42
65
|
// Skip session clear during active PABCD (preserve resume)
|
|
@@ -70,6 +93,38 @@ export async function orchestrate(prompt, meta = {}) {
|
|
|
70
93
|
}
|
|
71
94
|
}
|
|
72
95
|
clearPromptCache();
|
|
96
|
+
let ctx = getCtx();
|
|
97
|
+
const planningTask = pickPlanningTask(userText, prompt, ctx);
|
|
98
|
+
const isInitialPlanningTurn = state === 'P'
|
|
99
|
+
&& !meta._workerResult
|
|
100
|
+
&& !ctx?.plan
|
|
101
|
+
&& !!planningTask;
|
|
102
|
+
if (isInitialPlanningTurn) {
|
|
103
|
+
prompt = `${getStatePrompt('P')}\n\nUser request:\n${planningTask}`;
|
|
104
|
+
skipPrefix = true;
|
|
105
|
+
const nextCtx = {
|
|
106
|
+
...(ctx || {
|
|
107
|
+
originalPrompt: '',
|
|
108
|
+
plan: null,
|
|
109
|
+
workerResults: [],
|
|
110
|
+
origin,
|
|
111
|
+
chatId,
|
|
112
|
+
}),
|
|
113
|
+
originalPrompt: planningTask,
|
|
114
|
+
origin,
|
|
115
|
+
chatId,
|
|
116
|
+
};
|
|
117
|
+
if (shouldRunResearch(planningTask, meta) && !ctx?.researchReport) {
|
|
118
|
+
const report = await runDispatchResearch(planningTask, { ...meta, origin, _researchInjected: true });
|
|
119
|
+
if (report.rawText) {
|
|
120
|
+
prompt = injectResearchIntoPlanningPrompt(prompt, report);
|
|
121
|
+
}
|
|
122
|
+
nextCtx.researchNeeded = true;
|
|
123
|
+
nextCtx.researchReport = report.rawText || null;
|
|
124
|
+
}
|
|
125
|
+
setState('P', nextCtx);
|
|
126
|
+
ctx = nextCtx;
|
|
127
|
+
}
|
|
73
128
|
// prefix injection
|
|
74
129
|
const source = meta._workerResult ? 'worker' : 'user';
|
|
75
130
|
const prefix = getPrefix(state, source);
|
|
@@ -78,20 +133,41 @@ export async function orchestrate(prompt, meta = {}) {
|
|
|
78
133
|
}
|
|
79
134
|
// spawn/resume agent
|
|
80
135
|
console.log(`[jaw:pabcd] state=${state}, spawning/resuming agent`);
|
|
81
|
-
|
|
136
|
+
let memorySnapshot = '';
|
|
137
|
+
try {
|
|
138
|
+
const adv = getAdvancedMemoryStatus();
|
|
139
|
+
if (adv.enabled && adv.routing?.searchRead === 'advanced' && !meta._workerResult) {
|
|
140
|
+
memorySnapshot = await buildTaskSnapshotAsync(userText || prompt, 2800);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
console.warn('[jaw:memory-snapshot]', err.message);
|
|
145
|
+
}
|
|
146
|
+
const { promise } = runSpawnAgent(prompt, {
|
|
82
147
|
origin,
|
|
83
148
|
_skipInsert: !!meta._skipInsert,
|
|
149
|
+
memorySnapshot,
|
|
84
150
|
});
|
|
85
151
|
const result = await promise;
|
|
152
|
+
if (state === 'P' && !meta._workerResult) {
|
|
153
|
+
const savedCtx = getCtx();
|
|
154
|
+
if (savedCtx) {
|
|
155
|
+
setState('P', {
|
|
156
|
+
...savedCtx,
|
|
157
|
+
plan: stripSubtaskJSON(result.text) || result.text || savedCtx.plan,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
86
161
|
// Worker JSON detected → spawn workers → feed results back
|
|
87
162
|
const workerTasks = parseSubtasks(result.text);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
163
|
+
// Research subtasks use phase 1 and can run from any state (including IDLE).
|
|
164
|
+
// Non-Research subtasks only dispatch during active PABCD (P/A/B/C).
|
|
165
|
+
const isResearchOnly = workerTasks?.length && workerTasks.every((wt) => /^research$/i.test(wt.agent || ''));
|
|
166
|
+
if (workerTasks?.length && (state !== 'IDLE' || isResearchOnly)) {
|
|
167
|
+
console.log(`[jaw:pabcd] worker JSON detected (${workerTasks.length} tasks, research=${!!isResearchOnly})`);
|
|
92
168
|
// Map PABCD state → worker phase context
|
|
93
169
|
const PABCD_PHASE_MAP = { A: 2, B: 3, C: 4 };
|
|
94
|
-
const
|
|
170
|
+
const defaultPhase = PABCD_PHASE_MAP[state] || 3;
|
|
95
171
|
let anyWorkerRan = false;
|
|
96
172
|
for (const wt of workerTasks) {
|
|
97
173
|
const emp = findEmployee(getEmployees.all(), wt);
|
|
@@ -99,6 +175,8 @@ export async function orchestrate(prompt, meta = {}) {
|
|
|
99
175
|
console.warn(`[jaw:pabcd] worker not found: ${wt.agent}`);
|
|
100
176
|
continue;
|
|
101
177
|
}
|
|
178
|
+
// Research workers always use phase 1 semantics
|
|
179
|
+
const workerPhase = /^research$/i.test(wt.agent || '') ? 1 : defaultPhase;
|
|
102
180
|
// Force fresh session for PABCD workers (prevent context contamination)
|
|
103
181
|
upsertEmployeeSession.run(emp.id, null, emp.cli);
|
|
104
182
|
const wResult = await runSingleAgent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,yCAAyC;AACzC,wDAAwD;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACY,YAAY,EAC3B,wBAAwB,EACxB,qBAAqB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACH,iBAAiB,EACjB,eAAe,EAAE,mBAAmB,GACvC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EACH,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,yCAAyC;AACzC,wDAAwD;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACY,YAAY,EAC3B,wBAAwB,EACxB,qBAAqB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACH,iBAAiB,EACjB,eAAe,EAAE,mBAAmB,GACvC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EACH,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EACzD,MAAM,GAGT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,oBAAoB,EACpB,gCAAgC,EAChC,iBAAiB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAExF,sDAAsD;AACtD,OAAO,EACH,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EACpE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,GACrD,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EACpE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,GACrD,CAAC;AAEF,MAAM,uBAAuB,GAAG;IAC5B,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,sBAAsB;IACtB,8BAA8B;CACjC,CAAC;AAEF,MAAM,iBAAiB,GAAgD;IACnE,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACT,CAAC;AAIF,SAAS,uBAAuB,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,OAAe,EAAE,GAA+B;IACxF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,SAAS,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,UAAU,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAE1E,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc,EAAE,IAAyB;IACtE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACxD,iFAAiF;IACjF,OAAO,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,uDAAuD;AAEvD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,MAAc,EACd,OAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAmB,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU;QACxE,CAAC,CAAC,IAAI,CAAC,WAAW;QAClB,CAAC,CAAC,UAAU,CAAC;IACjB,MAAM,mBAAmB,GAAG,OAAO,IAAI,CAAC,qBAAqB,KAAK,UAAU;QACxE,CAAC,CAAC,IAAI,CAAC,qBAAqB;QAC5B,CAAC,CAAC,oBAAoB,CAAC;IAC3B,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;IACvB,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAEpC,2DAA2D;IAC3D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACvC,wBAAwB,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,8DAA8D;IAC9D,IAAI,KAAK,KAAK,MAAM,IAAI,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9D,QAAQ,CAAC,GAAG,EAAE;YACV,cAAc,EAAE,QAAQ,IAAI,MAAM;YAClC,IAAI,EAAE,IAAI;YACV,aAAa,EAAE,EAAE;YACjB,MAAM;YACN,MAAM;SACT,CAAC,CAAC;QACH,KAAK,GAAG,GAAG,CAAC;QACZ,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,sBAAsB,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC1E,UAAU,GAAG,IAAI,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACzD,CAAC;IAED,0EAA0E;IAC1E,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAqB,CAAC,CAAC;QACtD,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,IAAI,GAAG,KAAK,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,uBAAuB,QAAQ,EAAE,CAAC;YAClE,UAAU,GAAG,IAAI,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,OAAO,IAAI,mBAAmB,CAAC,CAAC;QACnF,CAAC;IACL,CAAC;IAED,gBAAgB,EAAE,CAAC;IAEnB,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;IACnB,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7D,MAAM,qBAAqB,GAAG,KAAK,KAAK,GAAG;WACpC,CAAC,IAAI,CAAC,aAAa;WACnB,CAAC,GAAG,EAAE,IAAI;WACV,CAAC,CAAC,YAAY,CAAC;IAEtB,IAAI,qBAAqB,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,sBAAsB,YAAY,EAAE,CAAC;QACpE,UAAU,GAAG,IAAI,CAAC;QAElB,MAAM,OAAO,GAAe;YACxB,GAAG,CAAC,GAAG,IAAI;gBACP,cAAc,EAAE,EAAE;gBAClB,IAAI,EAAE,IAAI;gBACV,aAAa,EAAE,EAAE;gBACjB,MAAM;gBACN,MAAM;aACT,CAAC;YACF,cAAc,EAAE,YAAY;YAC5B,MAAM;YACN,MAAM;SACT,CAAC;QAEF,IAAI,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;YACrG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,GAAG,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;YAC9B,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;QACpD,CAAC;QAED,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvB,GAAG,GAAG,OAAO,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,MAA2B,CAAC,CAAC;IAC7D,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IACpC,CAAC;IAED,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,2BAA2B,CAAC,CAAC;IACnE,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/E,cAAc,GAAG,MAAM,sBAAsB,CAAC,QAAQ,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE;QACtC,MAAM;QACN,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;QAC/B,cAAc;KACjB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,OAA8B,CAAC;IAEpD,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,GAAG,EAAE;gBACV,GAAG,QAAQ;gBACX,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;aACtE,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,2DAA2D;IAC3D,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,6EAA6E;IAC7E,qEAAqE;IACrE,MAAM,cAAc,GAAG,WAAW,EAAE,MAAM,IAAI,WAAW,CAAC,KAAK,CAC3D,CAAC,EAAuB,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAClE,CAAC;IACF,IAAI,WAAW,EAAE,MAAM,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,cAAc,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,qCAAqC,WAAW,CAAC,MAAM,oBAAoB,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC;QAE5G,yCAAyC;QACzC,MAAM,eAAe,GAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,YAAY,CACpB,YAAY,CAAC,GAAG,EAA2B,EAC3C,EAAE,CACL,CAAC;YACF,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1D,SAAS;YACb,CAAC;YACD,gDAAgD;YAChD,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YAE1E,wEAAwE;YACxE,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG,MAAM,cAAc,CAChC;gBACI,GAAG,EAAE;gBACL,YAAY,EAAE,CAAC,WAAW,CAAC;gBAC3B,eAAe,EAAE,CAAC;gBAClB,YAAY,EAAE,WAAW;gBACzB,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,EAAE;aACd,EACD,GAAG,EACH,EAAE,IAAI,EAAE,EAAE,EAAE,EACZ,CAAC,EACD,EAAE,MAAM,EAAE,EACV,EAAE,CACL,CAAC;YACF,YAAY,GAAG,IAAI,CAAC;YACpB,6CAA6C;YAC7C,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;gBAC5B,GAAG,IAAI;gBACP,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,IAAI;aACtB,CAAC,CAAC;QACP,CAAC;QACD,gEAAgE;QAChE,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/C,SAAS,CAAC,kBAAkB,EAAE;gBAC1B,IAAI,EAAE,qDAAqD,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;gBAC1F,MAAM;gBACN,MAAM;aACT,CAAC,CAAC;QACP,CAAC;QACD,OAAO;IACX,CAAC;IAED,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,SAAS,CAAC,kBAAkB,EAAE;QAC1B,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE;QACnC,MAAM;QACN,MAAM;KACT,CAAC,CAAC;AACP,CAAC;AAED,uDAAuD;AAEvD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,OAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,2CAA2C;IAC3C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC,0CAA0C,EAAE;YAC3D,GAAG,IAAI;YACP,UAAU,EAAE,IAAI;SACnB,CAAC,CAAC;IACP,CAAC;IAED,mDAAmD;IACnD,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IACI,CAAC,MAAM;QACP,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAC1C,CAAC;QACC,SAAS,CAAC,kBAAkB,EAAE;YAC1B,IAAI,EAAE,8BAA8B;YACpC,MAAM;YACN,MAAM;SACT,CAAC,CAAC;QACH,OAAO;IACX,CAAC;IAED,OAAO,WAAW,CACd,0EAA0E,MAAM,CAAC,IAAI,EAAE,EACvF,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAChC,CAAC;AACN,CAAC;AAED,uDAAuD;AAEvD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,OAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,wBAAwB,CAAC,GAAG,EAAE,CAAC;IAC/B,UAAU,EAAE,CAAC;IACb,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,SAAS,CAAC,kBAAkB,EAAE;YAC1B,IAAI,EAAE,iBAAiB;YACvB,MAAM;YACN,MAAM;SACT,CAAC,CAAC;QACH,OAAO;IACX,CAAC;IACD,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7C,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,wBAAwB,CAAC,CAAC;IACxE,SAAS,CAAC,kBAAkB,EAAE;QAC1B,IAAI,EAAE,iBAAiB;QACvB,MAAM;QACN,MAAM;KACT,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// ─── Research Worker Dispatch Helper ────────────────
|
|
2
|
+
// Phase-independent research dispatch for the Research worker.
|
|
3
|
+
// Callable from IDLE, P, A, B, C — always read-only, report-only.
|
|
4
|
+
import { broadcast } from '../core/bus.js';
|
|
5
|
+
import { getEmployees, upsertEmployeeSession } from '../core/db.js';
|
|
6
|
+
import { getEmployeePromptV2 } from '../prompt/builder.js';
|
|
7
|
+
import { spawnAgent } from '../agent/spawn.js';
|
|
8
|
+
import { findEmployee } from './distribute.js';
|
|
9
|
+
// ─── Ambiguity Detection ────────────────────────────
|
|
10
|
+
const AMBIGUOUS_SIGNALS = [
|
|
11
|
+
/정리해\s*줘/i, /구조\s*잡아/i, /개선해\s*줘/i,
|
|
12
|
+
/어떻게\s*(하면|해야|할까)/i, /뭐가\s*(좋|나을|맞)/i,
|
|
13
|
+
/비교해\s*줘/i, /조사해\s*줘/i, /알아봐\s*줘/i,
|
|
14
|
+
/분석해\s*줘/i, /리서치/i,
|
|
15
|
+
/investigate/i, /compare/i, /research/i,
|
|
16
|
+
/what('?s| is) the best/i, /how should/i,
|
|
17
|
+
/explore\s+(the|this)/i, /look into/i,
|
|
18
|
+
/figure out/i, /find out/i,
|
|
19
|
+
];
|
|
20
|
+
export function isAmbiguousRequest(text) {
|
|
21
|
+
const t = (text || '').trim();
|
|
22
|
+
if (!t || t.length < 3)
|
|
23
|
+
return false;
|
|
24
|
+
return AMBIGUOUS_SIGNALS.some(re => re.test(t));
|
|
25
|
+
}
|
|
26
|
+
export function shouldRunResearch(text, meta = {}) {
|
|
27
|
+
if (meta._workerResult || meta._skipResearch || meta._researchInjected)
|
|
28
|
+
return false;
|
|
29
|
+
return isAmbiguousRequest(text);
|
|
30
|
+
}
|
|
31
|
+
// ─── Research Dispatch ──────────────────────────────
|
|
32
|
+
export async function dispatchResearchTask(task, meta = {}) {
|
|
33
|
+
const emps = getEmployees.all();
|
|
34
|
+
const configuredEmp = findEmployee(emps, { agent: 'Research' });
|
|
35
|
+
const injectedEmp = meta._employee;
|
|
36
|
+
const emp = injectedEmp === undefined
|
|
37
|
+
? (configuredEmp || buildFallbackResearchEmployee())
|
|
38
|
+
: (injectedEmp || buildFallbackResearchEmployee());
|
|
39
|
+
const runSpawnAgent = typeof meta._spawnAgent === 'function'
|
|
40
|
+
? meta._spawnAgent
|
|
41
|
+
: spawnAgent;
|
|
42
|
+
if (!configuredEmp) {
|
|
43
|
+
console.warn('[jaw:research] Research employee not found, using fallback Research worker');
|
|
44
|
+
}
|
|
45
|
+
const sysPrompt = getEmployeePromptV2(emp, 'research', 1);
|
|
46
|
+
// Force fresh session to avoid context contamination
|
|
47
|
+
upsertEmployeeSession.run(emp.id, null, emp.cli);
|
|
48
|
+
broadcast('agent_status', {
|
|
49
|
+
agentId: emp.id, agentName: emp.name,
|
|
50
|
+
status: 'running', phase: 1, phaseLabel: 'Research',
|
|
51
|
+
});
|
|
52
|
+
const researchPrompt = `## Research Task
|
|
53
|
+
${task}
|
|
54
|
+
|
|
55
|
+
## Output Format (REQUIRED)
|
|
56
|
+
Respond with this exact structure:
|
|
57
|
+
|
|
58
|
+
## Research Report
|
|
59
|
+
### Context
|
|
60
|
+
(Background information gathered from codebase, memory, worklog, or external sources)
|
|
61
|
+
|
|
62
|
+
### Options
|
|
63
|
+
(Numbered list of possible approaches or answers)
|
|
64
|
+
|
|
65
|
+
### Recommendation
|
|
66
|
+
(Your recommended approach with reasoning)
|
|
67
|
+
|
|
68
|
+
### Unknowns
|
|
69
|
+
(Things you could not determine — list as bullet points)
|
|
70
|
+
|
|
71
|
+
⛔ RULES:
|
|
72
|
+
- Do NOT create, modify, or delete any files
|
|
73
|
+
- Do NOT write implementation code
|
|
74
|
+
- Only read, search, and report`;
|
|
75
|
+
const { promise } = runSpawnAgent(researchPrompt, {
|
|
76
|
+
agentId: emp.id,
|
|
77
|
+
cli: emp.cli,
|
|
78
|
+
model: emp.model,
|
|
79
|
+
forceNew: true,
|
|
80
|
+
sysPrompt,
|
|
81
|
+
origin: meta.origin || 'web',
|
|
82
|
+
});
|
|
83
|
+
const r = await promise;
|
|
84
|
+
if (r.code === 0 && r.sessionId) {
|
|
85
|
+
upsertEmployeeSession.run(emp.id, r.sessionId, emp.cli);
|
|
86
|
+
}
|
|
87
|
+
broadcast('agent_status', {
|
|
88
|
+
agentId: emp.id, agentName: emp.name,
|
|
89
|
+
status: r.code === 0 ? 'done' : 'error', phase: 1,
|
|
90
|
+
});
|
|
91
|
+
const parsed = parseResearchReport(r.text || '');
|
|
92
|
+
if (parsed.rawText)
|
|
93
|
+
return parsed;
|
|
94
|
+
const failureReason = r.code === 127
|
|
95
|
+
? 'Research worker CLI not available'
|
|
96
|
+
: `Research worker failed with code ${r.code ?? 'unknown'}`;
|
|
97
|
+
return {
|
|
98
|
+
rawText: '',
|
|
99
|
+
summary: '',
|
|
100
|
+
options: [],
|
|
101
|
+
unknowns: [...parsed.unknowns, failureReason],
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// ─── Report Parsing ─────────────────────────────────
|
|
105
|
+
export function parseResearchReport(text) {
|
|
106
|
+
const summary = extractSection(text, 'Context') || extractSection(text, 'Recommendation') || '';
|
|
107
|
+
const optionsRaw = extractSection(text, 'Options') || '';
|
|
108
|
+
const unknownsRaw = extractSection(text, 'Unknowns') || '';
|
|
109
|
+
return {
|
|
110
|
+
rawText: text,
|
|
111
|
+
summary: summary.trim(),
|
|
112
|
+
options: extractListItems(optionsRaw),
|
|
113
|
+
unknowns: extractListItems(unknownsRaw),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function buildFallbackResearchEmployee() {
|
|
117
|
+
return {
|
|
118
|
+
id: 'research-fallback',
|
|
119
|
+
name: 'Research',
|
|
120
|
+
cli: 'claude',
|
|
121
|
+
model: 'claude-haiku-4-5-20251001',
|
|
122
|
+
role: 'Search, codebase exploration, uncertainty reduction, read-only reports',
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
function extractSection(text, heading) {
|
|
126
|
+
const re = new RegExp(`###\\s*${heading}\\s*\\n([\\s\\S]*?)(?=###|$)`, 'i');
|
|
127
|
+
const m = text.match(re);
|
|
128
|
+
return m?.[1]?.trim() || '';
|
|
129
|
+
}
|
|
130
|
+
function extractListItems(text) {
|
|
131
|
+
return text
|
|
132
|
+
.split('\n')
|
|
133
|
+
.map(l => l.replace(/^[-*\d.)\s]+/, '').trim())
|
|
134
|
+
.filter(Boolean);
|
|
135
|
+
}
|
|
136
|
+
// ─── Prompt Injection ───────────────────────────────
|
|
137
|
+
export function injectResearchIntoPlanningPrompt(planPrompt, report) {
|
|
138
|
+
if (!report.rawText)
|
|
139
|
+
return planPrompt;
|
|
140
|
+
const injection = `## Pre-Planning Research Report
|
|
141
|
+
The following research was conducted before planning. Use this as context.
|
|
142
|
+
|
|
143
|
+
${report.rawText}
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
`;
|
|
147
|
+
return injection + planPrompt;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=research.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research.js","sourceRoot":"","sources":["../../../src/orchestrator/research.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,7 +116,7 @@ A worker must verify that your plan from P phase is feasible and safe before any
|
|
|
116
116
|
|
|
117
117
|
Output this worker JSON now:
|
|
118
118
|
\`\`\`json
|
|
119
|
-
{"subtasks":[{"agent":"
|
|
119
|
+
{"subtasks":[{"agent":"Research","task":"⛔ READ-ONLY: Do NOT create, modify, or delete ANY files. You are an auditor, not a builder. Audit the PLAN (not code). Verify: 1) All imports in the plan resolve to real files. 2) Function signatures match actual code. 3) No copy-paste integration risks. Report PASS or FAIL with itemized issues. ⛔ REPEAT: Do NOT touch any files.","priority":1}]}
|
|
120
120
|
\`\`\`
|
|
121
121
|
|
|
122
122
|
The system spawns the worker automatically. Wait for results.
|
|
@@ -140,7 +140,7 @@ Steps:
|
|
|
140
140
|
3. After YOU finish implementing, output a worker JSON to VERIFY (not implement) your work:
|
|
141
141
|
|
|
142
142
|
\`\`\`json
|
|
143
|
-
{"subtasks":[{"agent":"
|
|
143
|
+
{"subtasks":[{"agent":"Research","task":"⛔ READ-ONLY: Do NOT create, modify, or delete ANY files. You are a verifier, not a builder. Verify: 1) Files in plan exist with expected content. 2) No syntax errors (run tsc --noEmit if TS). 3) Imports resolve. 4) No integration conflicts. Report DONE or NEEDS_FIX. ⛔ Do NOT touch any files — READ and REPORT only.","priority":1}]}
|
|
144
144
|
\`\`\`
|
|
145
145
|
|
|
146
146
|
Wait for worker verification results.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../../../src/orchestrator/state-machine.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,mFAAmF;AACnF,6CAA6C;AAC7C,kEAAkE;AAElE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../../../src/orchestrator/state-machine.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ import { join } from 'path';
|
|
|
5
5
|
import { settings, JAW_HOME, PROMPTS_DIR, SKILLS_DIR, SKILLS_REF_DIR, loadHeartbeatFile, deriveCdpPort } from '../core/config.js';
|
|
6
6
|
import { getSession, getEmployees } from '../core/db.js';
|
|
7
7
|
import { memoryFlushCounter } from '../agent/spawn.js';
|
|
8
|
+
import { describeHeartbeatSchedule, normalizeHeartbeatSchedule } from '../memory/heartbeat-schedule.js';
|
|
9
|
+
import { buildTaskSnapshot, getAdvancedMemoryStatus, loadAdvancedProfileSummary } from '../memory/advanced.js';
|
|
8
10
|
import { loadAndRender, loadTemplate, renderTemplate, parseWorkerContexts, clearTemplateCache } from './template-loader.js';
|
|
9
11
|
const promptCache = new Map();
|
|
10
12
|
// ─── Skill Loading ───────────────────────────────────
|
|
@@ -181,23 +183,16 @@ export function loadRecentMemories() {
|
|
|
181
183
|
}
|
|
182
184
|
}
|
|
183
185
|
// ─── System Prompt Generation ────────────────────────
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
const a1 = fs.existsSync(A1_PATH) ? fs.readFileSync(A1_PATH, 'utf8') : getA1Content();
|
|
187
|
-
const a2 = fs.existsSync(A2_PATH) ? fs.readFileSync(A2_PATH, 'utf8') : '';
|
|
188
|
-
let prompt = `${a1}\n\n${a2}`;
|
|
189
|
-
// Phase 15: Telegram guidance is now part of A1_CONTENT (hardcoded)
|
|
190
|
-
// No dynamic injection needed — Bot-First policy with curl examples included
|
|
191
|
-
// Auto-flush memories (threshold-based injection)
|
|
192
|
-
// Inject every ceil(threshold/2) messages: threshold=5 → inject at 0,3,5,8,10...
|
|
186
|
+
function appendLegacyMemoryContext(prompt) {
|
|
187
|
+
let next = prompt;
|
|
193
188
|
try {
|
|
194
|
-
const threshold = settings.memory?.flushEvery ??
|
|
189
|
+
const threshold = settings.memory?.flushEvery ?? 10;
|
|
195
190
|
const injectInterval = Math.ceil(threshold / 2);
|
|
196
191
|
const shouldInject = memoryFlushCounter % injectInterval === 0;
|
|
197
192
|
if (shouldInject) {
|
|
198
193
|
const memories = loadRecentMemories();
|
|
199
194
|
if (memories) {
|
|
200
|
-
|
|
195
|
+
next += memories;
|
|
201
196
|
console.log(`[memory] injected (msg ${memoryFlushCounter}, every ${injectInterval})`);
|
|
202
197
|
}
|
|
203
198
|
}
|
|
@@ -206,12 +201,10 @@ export function getSystemPrompt() {
|
|
|
206
201
|
}
|
|
207
202
|
}
|
|
208
203
|
catch {
|
|
209
|
-
// Fallback: always inject if counter unavailable
|
|
210
204
|
const memories = loadRecentMemories();
|
|
211
205
|
if (memories)
|
|
212
|
-
|
|
206
|
+
next += memories;
|
|
213
207
|
}
|
|
214
|
-
// Core memory (MEMORY.md, system-level injection)
|
|
215
208
|
try {
|
|
216
209
|
const memPath = join(JAW_HOME, 'memory', 'MEMORY.md');
|
|
217
210
|
if (fs.existsSync(memPath)) {
|
|
@@ -220,12 +213,51 @@ export function getSystemPrompt() {
|
|
|
220
213
|
const truncated = coreMem.length > 1500
|
|
221
214
|
? coreMem.slice(0, 1500) + '\n...(use `cli-jaw memory read MEMORY.md` for full)'
|
|
222
215
|
: coreMem;
|
|
223
|
-
|
|
216
|
+
next += '\n\n---\n## Core Memory\n' + truncated;
|
|
224
217
|
console.log(`[memory] MEMORY.md loaded: ${truncated.length} chars`);
|
|
225
218
|
}
|
|
226
219
|
}
|
|
227
220
|
}
|
|
228
221
|
catch { /* memory not ready */ }
|
|
222
|
+
return next;
|
|
223
|
+
}
|
|
224
|
+
function appendAdvancedMemoryContext(prompt, currentPrompt, providedSnapshot = '') {
|
|
225
|
+
let next = prompt;
|
|
226
|
+
const profile = loadAdvancedProfileSummary(800);
|
|
227
|
+
const snapshot = providedSnapshot || buildTaskSnapshot(currentPrompt, 2800);
|
|
228
|
+
next += '\n\n---\n## Advanced Memory Mode\n';
|
|
229
|
+
next += '- search/read routed to advanced runtime\n';
|
|
230
|
+
next += '- save remains on legacy lightweight path\n';
|
|
231
|
+
if (profile) {
|
|
232
|
+
next += '\n\n## Advanced Profile\n' + profile;
|
|
233
|
+
}
|
|
234
|
+
if (snapshot) {
|
|
235
|
+
next += '\n\n' + snapshot;
|
|
236
|
+
}
|
|
237
|
+
return next;
|
|
238
|
+
}
|
|
239
|
+
export function getSystemPrompt(opts = {}) {
|
|
240
|
+
// A-1: file takes priority (user-editable), rendered template fallback
|
|
241
|
+
const a1 = fs.existsSync(A1_PATH) ? fs.readFileSync(A1_PATH, 'utf8') : getA1Content();
|
|
242
|
+
const a2 = fs.existsSync(A2_PATH) ? fs.readFileSync(A2_PATH, 'utf8') : '';
|
|
243
|
+
let prompt = `${a1}\n\n${a2}`;
|
|
244
|
+
const currentPrompt = String(opts.currentPrompt || '').trim();
|
|
245
|
+
const forDisk = opts.forDisk === true;
|
|
246
|
+
const adv = getAdvancedMemoryStatus();
|
|
247
|
+
// Phase 15: Telegram guidance is now part of A1_CONTENT (hardcoded)
|
|
248
|
+
// No dynamic injection needed — Bot-First policy with curl examples included
|
|
249
|
+
if (!adv.enabled) {
|
|
250
|
+
prompt = appendLegacyMemoryContext(prompt);
|
|
251
|
+
}
|
|
252
|
+
else if (!forDisk && adv.routing?.searchRead === 'advanced') {
|
|
253
|
+
prompt = appendAdvancedMemoryContext(prompt, currentPrompt, opts.memorySnapshot || '');
|
|
254
|
+
}
|
|
255
|
+
else if (!forDisk) {
|
|
256
|
+
prompt = appendLegacyMemoryContext(prompt);
|
|
257
|
+
prompt += '\n\n---\n## Advanced Memory Status\n';
|
|
258
|
+
prompt += '- advanced memory is enabled but index is not ready yet\n';
|
|
259
|
+
prompt += '- temporary fallback to legacy memory context is active\n';
|
|
260
|
+
}
|
|
229
261
|
try {
|
|
230
262
|
const emps = getEmployees.all();
|
|
231
263
|
if (emps.length > 0) {
|
|
@@ -250,8 +282,8 @@ export function getSystemPrompt() {
|
|
|
250
282
|
const activeJobs = hbData.jobs.filter((j) => j.enabled);
|
|
251
283
|
const jobList = hbData.jobs.map((job) => {
|
|
252
284
|
const status = job.enabled ? '✅' : '⏸️';
|
|
253
|
-
const
|
|
254
|
-
return `- ${status} "${job.name}" —
|
|
285
|
+
const schedule = normalizeHeartbeatSchedule(job.schedule);
|
|
286
|
+
return `- ${status} "${job.name}" — ${describeHeartbeatSchedule(schedule)}: ${(job.prompt || '').slice(0, 50)}`;
|
|
255
287
|
}).join('\n');
|
|
256
288
|
const vars = getTemplateVars();
|
|
257
289
|
vars.JOB_LIST = jobList;
|
|
@@ -349,6 +381,7 @@ export function getEmployeePromptV2(emp, role, currentPhase) {
|
|
|
349
381
|
const ROLE_SKILL_MAP = {
|
|
350
382
|
frontend: join(SKILLS_DIR, 'dev-frontend', 'SKILL.md'),
|
|
351
383
|
backend: join(SKILLS_DIR, 'dev-backend', 'SKILL.md'),
|
|
384
|
+
research: join(SKILLS_REF_DIR, 'research-worker', 'SKILL.md'),
|
|
352
385
|
data: join(SKILLS_DIR, 'dev-data', 'SKILL.md'),
|
|
353
386
|
docs: join(SKILLS_DIR, 'documentation', 'SKILL.md'),
|
|
354
387
|
custom: null,
|
|
@@ -386,7 +419,7 @@ export function getEmployeePromptV2(emp, role, currentPhase) {
|
|
|
386
419
|
export function clearPromptCache() { promptCache.clear(); }
|
|
387
420
|
export function regenerateB() {
|
|
388
421
|
clearTemplateCache();
|
|
389
|
-
const fullPrompt = getSystemPrompt();
|
|
422
|
+
const fullPrompt = getSystemPrompt({ forDisk: true });
|
|
390
423
|
fs.writeFileSync(join(PROMPTS_DIR, 'B.md'), fullPrompt);
|
|
391
424
|
// Generate {workDir}/AGENTS.md — read by Codex, Copilot, and OpenCode
|
|
392
425
|
try {
|