cli-jaw 1.2.9 → 1.3.0-preview.1

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.
Files changed (40) hide show
  1. package/README.md +42 -19
  2. package/dist/lib/mcp-sync.js +3 -1
  3. package/dist/lib/mcp-sync.js.map +1 -1
  4. package/dist/lib/quota-copilot.js +93 -0
  5. package/dist/lib/quota-copilot.js.map +1 -1
  6. package/dist/lib/stt.js +95 -0
  7. package/dist/lib/stt.js.map +1 -0
  8. package/dist/lib/token-keepalive.js +34 -0
  9. package/dist/lib/token-keepalive.js.map +1 -0
  10. package/dist/server.js +68 -1
  11. package/dist/server.js.map +1 -1
  12. package/dist/src/prompt/builder.js +82 -264
  13. package/dist/src/prompt/builder.js.map +1 -1
  14. package/dist/src/prompt/template-loader.js +46 -0
  15. package/dist/src/prompt/template-loader.js.map +1 -0
  16. package/dist/src/prompt/templates/a1-system.md +106 -0
  17. package/dist/src/prompt/templates/a2-default.md +17 -0
  18. package/dist/src/prompt/templates/employee.md +37 -0
  19. package/dist/src/prompt/templates/heartbeat-default.md +4 -0
  20. package/dist/src/prompt/templates/heartbeat-jobs.md +4 -0
  21. package/dist/src/prompt/templates/orchestration.md +64 -0
  22. package/dist/src/prompt/templates/skills.md +18 -0
  23. package/dist/src/prompt/templates/vision-click.md +3 -0
  24. package/dist/src/prompt/templates/worker-context.md +8 -0
  25. package/dist/src/telegram/bot.js +2 -0
  26. package/dist/src/telegram/bot.js.map +1 -1
  27. package/dist/src/telegram/voice.js +25 -0
  28. package/dist/src/telegram/voice.js.map +1 -0
  29. package/package.json +2 -2
  30. package/public/css/chat.css +38 -0
  31. package/public/dist/bundle.js +59 -58
  32. package/public/dist/bundle.js.map +4 -4
  33. package/public/index.html +41 -0
  34. package/public/js/features/chat.ts +25 -0
  35. package/public/js/features/settings.ts +123 -2
  36. package/public/js/features/voice-recorder.ts +150 -0
  37. package/public/js/main.ts +13 -1
  38. package/public/js/state.ts +2 -0
  39. package/public/locales/en.json +15 -0
  40. package/public/locales/ko.json +15 -0
@@ -5,6 +5,7 @@ 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 { loadAndRender, loadTemplate, renderTemplate, parseWorkerContexts, clearTemplateCache } from './template-loader.js';
8
9
  const promptCache = new Map();
9
10
  // ─── Skill Loading ───────────────────────────────────
10
11
  /** Read all active skills from JAW_HOME/skills/ */
@@ -85,147 +86,34 @@ export function getMergedSkills() {
85
86
  return merged;
86
87
  }
87
88
  // ─── Prompt Templates ────────────────────────────────
88
- const A1_CONTENT = `# Jaw Agent
89
-
90
- You are Jaw Agent, a system-level AI assistant.
91
- Execute tasks on the user's computer via CLI tools.
92
-
93
- ## Rules
94
- - Follow the user's instructions precisely
95
- - Respond in the user's language
96
- - Report results clearly with file paths and outputs
97
- - Ask for clarification when ambiguous
98
- - Never run git commit/push/branch/reset/clean unless the user explicitly asks in the same turn
99
- - Default delivery is file changes + verification report (no commit/push)
100
- - If nothing needs attention on heartbeat, reply HEARTBEAT_OK
101
-
102
- ## Browser Control (MANDATORY)
103
- Control Chrome via \`cli-jaw browser\` — never use curl/wget for web interaction.
104
-
105
- ### Core Workflow: snapshot → act → snapshot → verify
106
- \`\`\`bash
107
- cli-jaw browser start # Start Chrome (CDP ${deriveCdpPort()})
108
- cli-jaw browser start --headless # Headless (WSL/CI/Docker)
109
- cli-jaw browser navigate "https://example.com" # Go to URL
110
- cli-jaw browser snapshot --interactive # Get ref IDs (clickable elements)
111
- cli-jaw browser click e3 # Click ref
112
- cli-jaw browser type e5 "hello" --submit # Type + Enter
113
- cli-jaw browser screenshot # Save screenshot
114
- \`\`\`
115
-
116
- ### Key Commands
117
- - \`snapshot\` / \`snapshot --interactive\` — element list with ref IDs
118
- - \`click <ref>\` / \`type <ref> "text"\` / \`press Enter\` — interact
119
- - \`navigate <url>\` / \`open <url>\` (new tab) / \`tabs\` — navigation
120
- - \`screenshot\` / \`screenshot --full-page\` / \`text\` — observe
121
- - Ref IDs **reset on navigation** → always re-snapshot after navigate
122
-
123
- ### Vision Click Fallback (Codex Only)
124
- If \`snapshot\` returns **no ref** for target (Canvas, iframe, Shadow DOM, WebGL):
125
- \`\`\`bash
126
- cli-jaw browser vision-click "Submit button" # screenshot → AI coords → click
127
- cli-jaw browser vision-click "Menu" --double # double-click variant
128
- \`\`\`
129
- - Requires **Codex CLI** — only available when active CLI is codex
130
- - Always try \`snapshot\` + ref-based click first, vision-click is fallback only
131
- - If vision-click skill is in your Active Skills list, use it
132
-
133
- ## Telegram File Delivery (Bot-First)
134
- For non-text output to Telegram, prefer direct Bot API:
135
- \`\`\`bash
136
- TOKEN=$(jq -r '.telegram.token' ${JAW_HOME}/settings.json)
137
- CHAT_ID=$(jq -r '.telegram.allowedChatIds[-1]' ${JAW_HOME}/settings.json)
138
- # photo:
139
- curl -sS -X POST "https://api.telegram.org/bot\${TOKEN}/sendPhoto" \\
140
- -F "chat_id=\${CHAT_ID}" -F "photo=@/path/to/image.png" -F "caption=desc"
141
- # voice: .../sendVoice -F voice=@file.ogg
142
- # document: .../sendDocument -F document=@file.pdf
143
- \`\`\`
144
- Fallback local endpoint: \`POST http://localhost:3457/api/telegram/send\`
145
- - Types: \`text\`, \`voice\`, \`photo\`, \`document\` (requires \`file_path\`)
146
- - Always provide normal text response alongside file delivery
147
- - Do not print token values in logs
148
-
149
- ## Long-term Memory (MANDATORY)
150
- Two memory sources:
151
- - Core memory: \`${JAW_HOME}/memory/MEMORY.md\` (structured, persistent)
152
- - Session memory: \`~/.claude/projects/.../memory/\` (auto-flush)
153
-
154
- Rules:
155
- - At conversation start: ALWAYS read MEMORY.md
156
- - Before answering about past decisions/preferences: search memory first
157
- - After important decisions or user preferences: save immediately
158
- - Commands: \`cli-jaw memory search/read/save\`
159
-
160
- ### What to Save (IMPORTANT)
161
- - ✅ User preferences, key decisions, project facts
162
- - ✅ Config changes, tool choices, architectural decisions
163
- - ✅ Short 1-2 line entries (e.g., "User prefers ES Module only")
164
- - ❌ Do NOT save development checklists or task lists
165
- - ❌ Do NOT save commit hashes, phase logs, or progress tracking
166
- - ❌ Do NOT dump raw conversation history into memory
167
-
168
- ## Heartbeat System
169
- Recurring tasks via \`${JAW_HOME}/heartbeat.json\` (auto-reloads on save):
170
- \`\`\`json
171
- { "jobs": [{ "id": "hb_<timestamp>", "name": "Job name", "enabled": true,
172
- "schedule": { "kind": "every", "minutes": 5 }, "prompt": "task description" }] }
173
- \`\`\`
174
- - Results auto-forwarded to Telegram. Nothing to report → respond [SILENT]
175
-
176
- ## Development Rules
177
- - Max 500 lines per file. Exceed → split
178
- - ES Module (\`import\`/\`export\`) only. No CommonJS
179
- - Never delete existing \`export\` (other modules may import)
180
- - Error handling: \`try/catch\` mandatory, no silent failures
181
- - Config values → \`config.js\` or \`settings.json\`, never hardcode
182
-
183
- ### Dev Skills (MANDATORY for Development Tasks)
184
- Before writing ANY code, you MUST read the relevant dev skill guides:
185
- 1. **Always read first**: \`${JAW_HOME}/skills/dev/SKILL.md\` — project-wide conventions, file structure, coding standards
186
- 2. **Role-specific** (read the one matching your task):
187
- - \`dev-frontend\` — UI components, CSS, browser compatibility
188
- - \`dev-backend\` — API design, error handling, security
189
- - \`dev-data\` — database, queries, migrations
190
- - \`dev-testing\` — test strategy, coverage, assertion patterns
191
- 3. **How to read**: \`cat ${JAW_HOME}/skills/dev/SKILL.md\` or \`cli-jaw skill read dev\`
192
- 4. Follow ALL guidelines from the skill before and during implementation
193
- 5. If a skill contradicts these rules, the skill takes priority (skills are project-specific)
194
- `;
195
- const A2_DEFAULT = `# User Configuration
196
-
197
- ## Identity
198
- - Name: Jaw
199
- - Emoji: 🦈
200
-
201
- ## User
202
- - Name: (your name)
203
- - Language: English
204
- - Timezone: UTC
205
-
206
- ## Vibe
207
- - Friendly, warm
208
- - Technically accurate
209
-
210
- ## Working Directory
211
- - ~/.cli-jaw
212
- `;
213
- const HEARTBEAT_DEFAULT = `# Heartbeat checklist
214
-
215
- <!-- Keep this empty to skip heartbeat API calls -->
216
- <!-- Add tasks below when you want periodic checks -->
217
- `;
89
+ /** Template variables shared across templates */
90
+ function getTemplateVars() {
91
+ return { JAW_HOME, CDP_PORT: String(deriveCdpPort()) };
92
+ }
93
+ /** Render A1 system prompt from template */
94
+ function getA1Content() {
95
+ return loadAndRender('a1-system.md', getTemplateVars());
96
+ }
97
+ /** A2 default content (no dynamic vars) */
98
+ function getA2Default() {
99
+ return loadTemplate('a2-default.md');
100
+ }
101
+ /** Heartbeat default content (no dynamic vars) */
102
+ function getHeartbeatDefault() {
103
+ return loadTemplate('heartbeat-default.md');
104
+ }
218
105
  // ─── Paths ───────────────────────────────────────────
219
106
  export const A1_PATH = join(PROMPTS_DIR, 'A-1.md');
220
107
  export const A2_PATH = join(PROMPTS_DIR, 'A-2.md');
221
108
  export const HEARTBEAT_PATH = join(PROMPTS_DIR, 'HEARTBEAT.md');
222
109
  // ─── Initialize prompt files ─────────────────────────
223
110
  export function initPromptFiles() {
111
+ const a1Content = getA1Content();
224
112
  const hashPath = A1_PATH + '.hash';
225
- const currentHash = createHash('md5').update(A1_CONTENT).digest('hex');
113
+ const currentHash = createHash('md5').update(a1Content).digest('hex');
226
114
  if (!fs.existsSync(A1_PATH)) {
227
115
  // First install
228
- fs.writeFileSync(A1_PATH, A1_CONTENT);
116
+ fs.writeFileSync(A1_PATH, a1Content);
229
117
  fs.writeFileSync(hashPath, currentHash);
230
118
  }
231
119
  else if (fs.existsSync(hashPath)) {
@@ -235,7 +123,7 @@ export function initPromptFiles() {
235
123
  const fileHash = createHash('md5').update(fs.readFileSync(A1_PATH, 'utf8')).digest('hex');
236
124
  if (fileHash === savedHash) {
237
125
  // User hasn't edited → safe to update
238
- fs.writeFileSync(A1_PATH, A1_CONTENT);
126
+ fs.writeFileSync(A1_PATH, a1Content);
239
127
  fs.writeFileSync(hashPath, currentHash);
240
128
  console.log('[prompt] A-1.md updated to new version');
241
129
  }
@@ -250,9 +138,9 @@ export function initPromptFiles() {
250
138
  fs.writeFileSync(hashPath, fileHash);
251
139
  }
252
140
  if (!fs.existsSync(A2_PATH))
253
- fs.writeFileSync(A2_PATH, A2_DEFAULT);
141
+ fs.writeFileSync(A2_PATH, getA2Default());
254
142
  if (!fs.existsSync(HEARTBEAT_PATH))
255
- fs.writeFileSync(HEARTBEAT_PATH, HEARTBEAT_DEFAULT);
143
+ fs.writeFileSync(HEARTBEAT_PATH, getHeartbeatDefault());
256
144
  }
257
145
  // ─── Memory ──────────────────────────────────────────
258
146
  export function getMemoryDir() {
@@ -294,8 +182,8 @@ export function loadRecentMemories() {
294
182
  }
295
183
  // ─── System Prompt Generation ────────────────────────
296
184
  export function getSystemPrompt() {
297
- // A-1: file takes priority (user-editable), hardcoded fallback
298
- const a1 = fs.existsSync(A1_PATH) ? fs.readFileSync(A1_PATH, 'utf8') : A1_CONTENT;
185
+ // A-1: file takes priority (user-editable), rendered template fallback
186
+ const a1 = fs.existsSync(A1_PATH) ? fs.readFileSync(A1_PATH, 'utf8') : getA1Content();
299
187
  const a2 = fs.existsSync(A2_PATH) ? fs.readFileSync(A2_PATH, 'utf8') : '';
300
188
  let prompt = `${a1}\n\n${a2}`;
301
189
  // Phase 15: Telegram guidance is now part of A1_CONTENT (hardcoded)
@@ -343,55 +231,16 @@ export function getSystemPrompt() {
343
231
  if (emps.length > 0) {
344
232
  const list = emps.map(e => `- "${e.name}" (CLI: ${e.cli}) — ${e.role || 'general developer'}`).join('\n');
345
233
  const example = emps[0].name;
234
+ const vars = getTemplateVars();
235
+ vars.EMPLOYEE_LIST = list;
236
+ vars.EXAMPLE_AGENT = example;
346
237
  prompt += '\n\n---\n';
347
- prompt += '\n## Orchestration System';
348
- prompt += '\nYou have external employees (separate CLI processes).';
349
- prompt += '\nThe middleware detects your JSON output and AUTOMATICALLY spawns employees.';
350
- prompt += `\n\n### Available Employees\n${list}`;
351
- prompt += '\n\n### Dispatch Format';
352
- prompt += '\nTo assign work, output EXACTLY this format (triple-backtick fenced JSON block):';
353
- prompt += `\n\n\\\`\\\`\\\`json\n{\n "subtasks": [\n {\n "agent": "${example}",\n "task": "Specific task instruction",\n "priority": 1\n }\n ]\n}\n\\\`\\\`\\\``;
354
- prompt += '\n\n### CRITICAL RULES';
355
- prompt += '\n1. JSON MUST be wrapped in ```json ... ``` code blocks (mandatory)';
356
- prompt += '\n2. Never output raw JSON without code blocks';
357
- prompt += '\n3. Agent name must exactly match the list above';
358
- prompt += '\n4. Dispatch employees ONLY when the task genuinely needs multiple specialists or parallel work';
359
- prompt += '\n5. If you can handle the task yourself, respond directly WITHOUT JSON dispatch';
360
- prompt += '\n6. When receiving a "result report", summarize it in natural language for the user';
361
- prompt += '\n7. Simple questions, single-file edits, or tasks in your expertise → handle directly';
362
- prompt += '\n8. For Tier 1-2 tasks: mark independent subtasks with `"parallel": true` for concurrent execution';
363
- prompt += '\n9. Default is `"parallel": false`. Only use `true` when affected_files have zero overlap';
364
- prompt += '\n\n### PABCD Orchestration (지휘 모드)';
365
- prompt += '\nFor complex, multi-step tasks, you have a structured orchestration system called PABCD:';
366
- prompt += '\n **P** (Plan) → **A** (Plan Audit) → **B** (Build) → **C** (Check) → **D** (Done)';
367
- prompt += '\n';
368
- prompt += '\n**How to activate**:';
369
- prompt += '\n- User says "orchestrate", "지휘 모드", or "pabcd" → system auto-enters P.';
370
- prompt += '\n- You can also run: `cli-jaw orchestrate P` to enter P manually.';
371
- prompt += '\n';
372
- prompt += '\n**How to transition phases** (Shell commands):';
373
- prompt += '\n```bash';
374
- prompt += '\ncli-jaw orchestrate P # Enter Planning';
375
- prompt += '\ncli-jaw orchestrate A # Enter Plan Audit';
376
- prompt += '\ncli-jaw orchestrate B # Enter Build';
377
- prompt += '\ncli-jaw orchestrate C # Enter Check';
378
- prompt += '\ncli-jaw orchestrate D # Enter Done';
379
- prompt += '\n```';
380
- prompt += '\nIf shell is unavailable, the system will auto-advance when the user explicitly approves.';
381
- prompt += '\n';
382
- prompt += '\n**Critical rules**:';
383
- prompt += '\n- Each phase has a SPECIFIC job. Do ONLY that phase\'s job.';
384
- prompt += '\n- ⛔ STOP at the end of each phase and WAIT for user approval.';
385
- prompt += '\n- Do NOT skip phases. Do NOT self-advance multiple phases in one turn.';
386
- prompt += '\n- Workers are spawned automatically when you output subtask JSON in A or B phases.';
387
- prompt += '\n- Worker results are fed back to you. Review them and report to the user.';
388
- prompt += '\n';
389
- prompt += '\n**Phase summary**:';
390
- prompt += '\n- P: Write a plan → present to user → STOP. Wait for approval.';
391
- prompt += '\n- A: Spawn worker to audit THE PLAN (not code) → review results → STOP. Wait for approval.';
392
- prompt += '\n- B: Implement code → spawn verify worker → STOP. Wait for approval.';
393
- prompt += '\n- C: Final check (tsc, docs) → call `cli-jaw orchestrate D`.';
394
- prompt += '\n- D: Summarize and return to IDLE.';
238
+ prompt += renderTemplate(loadTemplate('orchestration.md'), vars);
239
+ // PABCD orchestration skill (boss needs to know the workflow)
240
+ const pabcdPath = join(SKILLS_DIR, 'dev-pabcd', 'SKILL.md');
241
+ if (fs.existsSync(pabcdPath)) {
242
+ prompt += `\n\n## PABCD Orchestration Guide\n${fs.readFileSync(pabcdPath, 'utf8')}`;
243
+ }
395
244
  }
396
245
  }
397
246
  catch { /* DB not ready yet */ }
@@ -399,20 +248,19 @@ export function getSystemPrompt() {
399
248
  const hbData = loadHeartbeatFile();
400
249
  if (hbData.jobs.length > 0) {
401
250
  const activeJobs = hbData.jobs.filter((j) => j.enabled);
402
- prompt += '\n\n---\n## Current Heartbeat Jobs\n';
403
- for (const job of hbData.jobs) {
251
+ const jobList = hbData.jobs.map((job) => {
404
252
  const status = job.enabled ? '✅' : '⏸️';
405
253
  const mins = job.schedule?.minutes || '?';
406
- prompt += `- ${status} "${job.name}" — every ${mins}min: ${(job.prompt || '').slice(0, 50)}\n`;
407
- }
408
- prompt += `\nActive: ${activeJobs.length}, Total: ${hbData.jobs.length}`;
409
- prompt += `\nTo modify: edit ${JAW_HOME}/heartbeat.json (auto-reloads on save)`;
254
+ return `- ${status} "${job.name}" — every ${mins}min: ${(job.prompt || '').slice(0, 50)}`;
255
+ }).join('\n');
256
+ const vars = getTemplateVars();
257
+ vars.JOB_LIST = jobList;
258
+ vars.ACTIVE_COUNT = String(activeJobs.length);
259
+ vars.TOTAL_COUNT = String(hbData.jobs.length);
260
+ prompt += '\n\n---\n' + renderTemplate(loadTemplate('heartbeat-jobs.md'), vars);
410
261
  }
411
262
  }
412
263
  catch { /* heartbeat.json not ready */ }
413
- // ─── Skills (Phase 6) ────────────────────────────
414
- // Active skills are loaded by CLI tools natively via .agents/skills/ symlink.
415
- // We only inject: (1) active skill names, (2) ref skill list, (3) search/create instruction.
416
264
  try {
417
265
  const activeSkills = loadActiveSkills();
418
266
  const refSkills = loadSkillRegistry();
@@ -420,30 +268,28 @@ export function getSystemPrompt() {
420
268
  const availableRef = refSkills.filter(s => !activeIds.has(s.id));
421
269
  if (activeSkills.length > 0 || availableRef.length > 0) {
422
270
  prompt += '\n\n---\n## Skills System\n';
423
- // 1. Active skills — name list only (CLI handles trigger/execution)
424
- if (activeSkills.length > 0) {
425
- prompt += `\n### Active Skills (${activeSkills.length})\n`;
426
- prompt += 'These skills are installed and available for reference.\n';
427
- prompt += `**Development tasks**: Before writing code, ALWAYS read \`${JAW_HOME}/skills/dev/SKILL.md\` for project conventions.\n`;
428
- prompt += 'For role-specific tasks, also read the relevant skill (dev-frontend, dev-backend, dev-data, dev-testing).\n';
429
- for (const s of activeSkills) {
430
- prompt += `- ${s.name} (${s.id})\n`;
431
- }
271
+ const vars = getTemplateVars();
272
+ vars.ACTIVE_SKILLS_COUNT = String(activeSkills.length);
273
+ vars.ACTIVE_SKILLS_LIST = activeSkills.map(s => `- ${s.name} (${s.id})`).join('\n');
274
+ vars.REF_SKILLS_COUNT = String(availableRef.length);
275
+ vars.REF_SKILLS_LIST = availableRef.map(s => s.id).join(', ');
276
+ // Only render sections that have content
277
+ if (activeSkills.length > 0 && availableRef.length > 0) {
278
+ prompt += renderTemplate(loadTemplate('skills.md'), vars);
432
279
  }
433
- // 2. Ref skills — compact name list (full details in skills_ref/)
434
- if (availableRef.length > 0) {
435
- prompt += `\n### Available Skills (${availableRef.length})\n`;
436
- prompt += 'These are reference skills — not active yet, but ready to use on demand.\n';
437
- prompt += `**How to use**: read \`${JAW_HOME}/skills_ref/<name>/SKILL.md\` and follow its instructions.\n`;
438
- prompt += '**To activate permanently**: `cli-jaw skill install <name>`\n\n';
439
- prompt += availableRef.map(s => s.id).join(', ') + '\n';
280
+ else if (activeSkills.length > 0) {
281
+ // Only active skills — render just that portion
282
+ const tmpl = loadTemplate('skills.md');
283
+ const activeSection = tmpl.split('### Available Skills')[0];
284
+ const discoverySection = tmpl.split('### Skill Discovery')[1];
285
+ prompt += renderTemplate(activeSection + '### Skill Discovery' + (discoverySection || ''), vars);
286
+ }
287
+ else {
288
+ // Only ref skills
289
+ const tmpl = loadTemplate('skills.md');
290
+ const refSection = tmpl.substring(tmpl.indexOf('### Available Skills'));
291
+ prompt += renderTemplate(refSection, vars);
440
292
  }
441
- // 3. Search or create instruction
442
- prompt += '\n### Skill Discovery\n';
443
- prompt += 'If a requested task is not covered by any active or available skill:\n';
444
- prompt += '1. Search the system for relevant CLI tools that can accomplish the task.\n';
445
- prompt += '2. If a suitable tool exists, create a new SKILL.md and save it to the skills directory.\n';
446
- prompt += '3. Use the skill-creator reference if available for formatting guidance.\n';
447
293
  }
448
294
  }
449
295
  catch { /* skills not ready */ }
@@ -453,9 +299,7 @@ export function getSystemPrompt() {
453
299
  if (session.active_cli === 'codex') {
454
300
  const visionSkillPath = join(SKILLS_DIR, 'vision-click', 'SKILL.md');
455
301
  if (fs.existsSync(visionSkillPath)) {
456
- prompt += '\n### Vision Click (Active)\n';
457
- prompt += '- If browser snapshot shows no ref for target, use vision-click: screenshot → `codex exec -i` → `mouse-click <x> <y>`.\n';
458
- prompt += '- See vision-click skill SKILL.md for full workflow.\n';
302
+ prompt += '\n' + loadTemplate('vision-click.md');
459
303
  }
460
304
  }
461
305
  }
@@ -464,53 +308,25 @@ export function getSystemPrompt() {
464
308
  }
465
309
  // ─── Employee Prompt (orchestration-free) ────────────
466
310
  export function getEmployeePrompt(emp) {
467
- let prompt = `# ${emp.name}\nRole: ${emp.role || 'general developer'}\n`;
468
- // ─── Core rules (orchestration rules intentionally excluded → prevent recursion)
469
- prompt += `\n## Rules\n`;
470
- prompt += `- Execute the given task directly and report the results\n`;
471
- prompt += `- Do NOT output JSON subtasks (you are an executor, not a planner)\n`;
472
- prompt += `- Do NOT create, modify, or delete files unless the task EXPLICITLY says to write code\n`;
473
- prompt += `- If the task says "audit", "verify", "check", or "review" → READ ONLY. Report findings, do NOT fix them.\n`;
474
- prompt += `- Report results concisely in natural language\n`;
475
- prompt += `- Respond in the user's language\n`;
476
- prompt += `- Never run git commit/push/branch/reset/clean unless the user explicitly asks\n`;
477
- // ─── Browser commands
478
- prompt += `\n## Browser Control\n`;
479
- prompt += `For web tasks, always use \`cli-jaw browser\` commands.\n`;
480
- prompt += `Pattern: snapshot → act → snapshot → verify\n`;
481
- prompt += `Start: \`cli-jaw browser start\`, Snapshot: \`cli-jaw browser snapshot\`\n`;
482
- prompt += `Click: \`cli-jaw browser click <ref>\`, Type: \`cli-jaw browser type <ref> "text"\`\n`;
483
- // ─── Telegram file delivery
484
- prompt += `\n## Telegram File Delivery\n`;
485
- prompt += `For non-text output, use \`POST /api/telegram/send\`.\n`;
486
- prompt += `Types: \`voice|photo|document\` (optionally \`text\`)\n`;
487
- prompt += `Required for non-text: \`type\` + \`file_path\`\n`;
488
- prompt += `Specify \`chat_id\` when possible; if omitted, the latest active chat is used.\n`;
489
- prompt += `Always provide a natural language text report alongside file delivery.\n`;
490
- // ─── Active Skills (dynamic loading)
311
+ const vars = {
312
+ EMP_NAME: emp.name,
313
+ EMP_ROLE: emp.role || 'general developer',
314
+ ACTIVE_SKILLS_SECTION: '',
315
+ };
316
+ // Active Skills (dynamic loading)
491
317
  try {
492
318
  const activeSkills = loadActiveSkills();
493
319
  if (activeSkills.length > 0) {
494
- prompt += `\n## Active Skills (${activeSkills.length})\n`;
495
- prompt += `Installed skills — automatically triggered by the CLI.\n`;
320
+ let section = `\n## Active Skills (${activeSkills.length})\n`;
321
+ section += `Installed skills — automatically triggered by the CLI.\n`;
496
322
  for (const s of activeSkills) {
497
- prompt += `- ${s.name} (${s.id})\n`;
323
+ section += `- ${s.name} (${s.id})\n`;
498
324
  }
325
+ vars.ACTIVE_SKILLS_SECTION = section;
499
326
  }
500
327
  }
501
328
  catch { /* skills not ready */ }
502
- // ─── Memory commands
503
- prompt += `\n## Memory\n`;
504
- prompt += `Long-term memory: use \`cli-jaw memory search/read/save\` commands.\n`;
505
- // ─── Task Completion Protocol (PABCD)
506
- prompt += `\n## Task Completion Protocol\n`;
507
- prompt += `You are an employee agent. Complete your assigned task and report results.\n`;
508
- prompt += `Do NOT output subtask JSON — you are an executor, not a planner.\n`;
509
- prompt += `Report findings clearly in natural language. Include:\n`;
510
- prompt += `- What was checked or implemented\n`;
511
- prompt += `- PASS/FAIL verdict (for audits) or DONE/NEEDS_FIX (for reviews)\n`;
512
- prompt += `- Specific file paths and line numbers for any issues found\n`;
513
- return prompt;
329
+ return renderTemplate(loadTemplate('employee.md'), vars);
514
330
  }
515
331
  // ─── Employee Prompt v2 (orchestration phase-aware) ──
516
332
  export function getEmployeePromptV2(emp, role, currentPhase) {
@@ -524,6 +340,11 @@ export function getEmployeePromptV2(emp, role, currentPhase) {
524
340
  if (fs.existsSync(devCommonPath)) {
525
341
  prompt += `\n\n## Development Guide (Common)\n${fs.readFileSync(devCommonPath, 'utf8')}`;
526
342
  }
343
+ // ─── 1b. Scaffolding guide (always injected)
344
+ const scaffoldingPath = join(SKILLS_DIR, 'dev-scaffolding', 'SKILL.md');
345
+ if (fs.existsSync(scaffoldingPath)) {
346
+ prompt += `\n\n## Project Scaffolding Guide\n${fs.readFileSync(scaffoldingPath, 'utf8')}`;
347
+ }
527
348
  // ─── 2. Role-based dev skill injection
528
349
  const ROLE_SKILL_MAP = {
529
350
  frontend: join(SKILLS_DIR, 'dev-frontend', 'SKILL.md'),
@@ -551,12 +372,8 @@ export function getEmployeePromptV2(emp, role, currentPhase) {
551
372
  }
552
373
  }
553
374
  // ─── 4. Worker context (PABCD-aware)
554
- const WORKER_CONTEXT = {
555
- 2: 'You are a PLAN AUDIT worker. Verify THE PLAN (not code): dependency validation, API integrity, integration risks. Verdict: PASS or FAIL with itemized issues.',
556
- 3: 'You are an IMPLEMENTATION worker. Execute the assigned code task. Follow dev conventions, no TODOs, all imports must resolve.',
557
- 4: 'You are a CHECK worker. Test and verify the implementation. Report: execution evidence, bugs found, edge case results. Verdict: DONE or NEEDS_FIX.',
558
- };
559
- const ctx = WORKER_CONTEXT[phase] || WORKER_CONTEXT[3];
375
+ const workerContexts = parseWorkerContexts();
376
+ const ctx = workerContexts[phase] || workerContexts[3];
560
377
  prompt += `\n\n## Worker Role\n${ctx}`;
561
378
  prompt += `\n\n## Execution Rules`;
562
379
  prompt += `\n- Read the worklog first to understand context`;
@@ -568,6 +385,7 @@ export function getEmployeePromptV2(emp, role, currentPhase) {
568
385
  }
569
386
  export function clearPromptCache() { promptCache.clear(); }
570
387
  export function regenerateB() {
388
+ clearTemplateCache();
571
389
  const fullPrompt = getSystemPrompt();
572
390
  fs.writeFileSync(join(PROMPTS_DIR, 'B.md'), fullPrompt);
573
391
  // Generate {workDir}/AGENTS.md — read by Codex, Copilot, and OpenCode
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/prompt/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/prompt/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import fs from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ const __dirname = dirname(fileURLToPath(import.meta.url));
5
+ const TEMPLATE_DIR = join(__dirname, 'templates');
6
+ const templateCache = new Map();
7
+ /** Load a .md template from prompt/templates/ with caching */
8
+ export function loadTemplate(name) {
9
+ if (templateCache.has(name))
10
+ return templateCache.get(name);
11
+ const filePath = join(TEMPLATE_DIR, name);
12
+ const content = fs.readFileSync(filePath, 'utf8');
13
+ templateCache.set(name, content);
14
+ return content;
15
+ }
16
+ /** Replace {{VAR}} placeholders in template string */
17
+ export function renderTemplate(template, vars) {
18
+ return template.replace(/\{\{(\w+)\}\}/g, (_, key) => vars[key] ?? `{{${key}}}`);
19
+ }
20
+ /** Load + render in one call */
21
+ export function loadAndRender(name, vars) {
22
+ return renderTemplate(loadTemplate(name), vars);
23
+ }
24
+ /** Parse worker-context.md into phase → content map */
25
+ export function parseWorkerContexts() {
26
+ const content = loadTemplate('worker-context.md');
27
+ const result = {};
28
+ const sections = content.split(/^## Phase (\d+)/m);
29
+ // sections: ['', '2', ' — Plan Audit\n...', '3', ' — Implementation\n...', '4', ' — Check\n...']
30
+ for (let i = 1; i < sections.length; i += 2) {
31
+ const phaseStr = sections[i];
32
+ const bodyRaw = sections[i + 1];
33
+ if (!phaseStr || !bodyRaw)
34
+ continue;
35
+ const phase = parseInt(phaseStr, 10);
36
+ const body = bodyRaw.replace(/^ — .+\n/, '').trim();
37
+ if (body)
38
+ result[phase] = body;
39
+ }
40
+ return result;
41
+ }
42
+ /** Expose template directory path for API routes */
43
+ export function getTemplateDir() { return TEMPLATE_DIR; }
44
+ /** Clear template cache (call on regenerateB or settings change) */
45
+ export function clearTemplateCache() { templateCache.clear(); }
46
+ //# sourceMappingURL=template-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-loader.js","sourceRoot":"","sources":["../../../src/prompt/template-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAElD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEhD,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,IAA4B;IACzE,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;AACrF,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAA4B;IACpE,OAAO,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,mBAAmB;IAC/B,MAAM,OAAO,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnD,iGAAiG;IACjG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;YAAE,SAAS;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,IAAI;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,cAAc,KAAa,OAAO,YAAY,CAAC,CAAC,CAAC;AAEjE,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC"}