cli-jaw 1.7.10 → 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.
Files changed (41) hide show
  1. package/dist/bin/commands/dispatch.js +8 -1
  2. package/dist/bin/commands/dispatch.js.map +1 -1
  3. package/dist/bin/commands/launchd.js +6 -0
  4. package/dist/bin/commands/launchd.js.map +1 -1
  5. package/dist/bin/postinstall.js +181 -0
  6. package/dist/bin/postinstall.js.map +1 -1
  7. package/dist/lib/mcp/skills-utils.js +5 -1
  8. package/dist/lib/mcp/skills-utils.js.map +1 -1
  9. package/dist/server.js +4 -0
  10. package/dist/server.js.map +1 -1
  11. package/dist/src/agent/args.js +11 -6
  12. package/dist/src/agent/args.js.map +1 -1
  13. package/dist/src/agent/spawn.js +30 -1
  14. package/dist/src/agent/spawn.js.map +1 -1
  15. package/dist/src/cli/compact.js +32 -36
  16. package/dist/src/cli/compact.js.map +1 -1
  17. package/dist/src/core/boss-auth.js +38 -0
  18. package/dist/src/core/boss-auth.js.map +1 -0
  19. package/dist/src/core/compact.js +205 -0
  20. package/dist/src/core/compact.js.map +1 -1
  21. package/dist/src/core/employees.js +115 -0
  22. package/dist/src/core/employees.js.map +1 -1
  23. package/dist/src/core/launchd-plist.js +27 -10
  24. package/dist/src/core/launchd-plist.js.map +1 -1
  25. package/dist/src/core/main-session.js +14 -0
  26. package/dist/src/core/main-session.js.map +1 -1
  27. package/dist/src/core/runtime-path.js +29 -0
  28. package/dist/src/core/runtime-path.js.map +1 -1
  29. package/dist/src/orchestrator/distribute.js +40 -30
  30. package/dist/src/orchestrator/distribute.js.map +1 -1
  31. package/dist/src/orchestrator/worker-registry.js +17 -0
  32. package/dist/src/orchestrator/worker-registry.js.map +1 -1
  33. package/dist/src/prompt/builder.js +52 -2
  34. package/dist/src/prompt/builder.js.map +1 -1
  35. package/dist/src/prompt/templates/a1-system.md +87 -26
  36. package/dist/src/prompt/templates/control-system.md +48 -0
  37. package/dist/src/routes/orchestrate.js +86 -7
  38. package/dist/src/routes/orchestrate.js.map +1 -1
  39. package/package.json +1 -1
  40. package/scripts/darwin/spike-tcc-attribution.sh +333 -0
  41. package/scripts/darwin/test-computeruse-e2e.sh +204 -0
@@ -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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
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
- <array>
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>
@@ -28,6 +41,8 @@ export function generateLaunchdPlist(o) {
28
41
  <string>Aqua</string>
29
42
  <key>ProcessType</key>
30
43
  <string>Interactive</string>
44
+ <key>SessionCreate</key>
45
+ <true/>
31
46
  <key>WorkingDirectory</key>
32
47
  <string>${xmlEsc(o.jawHome)}</string>
33
48
  <key>StandardOutPath</key>
@@ -37,9 +52,11 @@ export function generateLaunchdPlist(o) {
37
52
  <key>EnvironmentVariables</key>
38
53
  <dict>
39
54
  <key>PATH</key>
40
- <string>${xmlEsc(o.servicePath)}</string>
55
+ <string>${xmlEsc(pathValue)}</string>
41
56
  <key>CLI_JAW_HOME</key>
42
57
  <string>${xmlEsc(o.jawHome)}</string>
58
+ <key>CLI_JAW_RUNTIME</key>
59
+ <string>launchd</string>
43
60
  </dict>
44
61
  </dict>
45
62
  </plist>`;
@@ -1 +1 @@
1
- {"version":3,"file":"launchd-plist.js","sourceRoot":"","sources":["../../../src/core/launchd-plist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,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,MAAM,UAAU,oBAAoB,CAAC,CAAe;IAChD,OAAO;;;;;cAKG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;;;kBAGX,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;;;;;;;;;;;cAWlB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;;cAEjB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;;cAEhB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;;;;kBAIZ,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;;kBAErB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;;;SAG1B,CAAC;AACV,CAAC"}
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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"}