@memnexus-ai/mx-agent-cli 0.1.50 → 0.1.52

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 (47) hide show
  1. package/dist/__tests__/claude-sync.test.js +20 -136
  2. package/dist/__tests__/claude-sync.test.js.map +1 -1
  3. package/dist/commands/create.d.ts.map +1 -1
  4. package/dist/commands/create.js +18 -137
  5. package/dist/commands/create.js.map +1 -1
  6. package/dist/commands/init.d.ts +2 -12
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +21 -70
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/list.d.ts +0 -1
  11. package/dist/commands/list.d.ts.map +1 -1
  12. package/dist/commands/list.js +9 -39
  13. package/dist/commands/list.js.map +1 -1
  14. package/dist/commands/start.d.ts.map +1 -1
  15. package/dist/commands/start.js +18 -225
  16. package/dist/commands/start.js.map +1 -1
  17. package/dist/commands/update.d.ts.map +1 -1
  18. package/dist/commands/update.js +15 -28
  19. package/dist/commands/update.js.map +1 -1
  20. package/dist/index.js +1 -16
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/claude.d.ts +4 -15
  23. package/dist/lib/claude.d.ts.map +1 -1
  24. package/dist/lib/claude.js +44 -331
  25. package/dist/lib/claude.js.map +1 -1
  26. package/dist/lib/memory.d.ts +6 -1
  27. package/dist/lib/memory.d.ts.map +1 -1
  28. package/dist/lib/memory.js +11 -8
  29. package/dist/lib/memory.js.map +1 -1
  30. package/dist/lib/project-config.d.ts +7 -7
  31. package/dist/lib/project-config.d.ts.map +1 -1
  32. package/dist/lib/project-config.js +6 -3
  33. package/dist/lib/project-config.js.map +1 -1
  34. package/dist/lib/templates.d.ts +1 -39
  35. package/dist/lib/templates.d.ts.map +1 -1
  36. package/dist/lib/templates.js +25 -1239
  37. package/dist/lib/templates.js.map +1 -1
  38. package/dist/lib/worktree.d.ts +1 -19
  39. package/dist/lib/worktree.d.ts.map +1 -1
  40. package/dist/lib/worktree.js +4 -55
  41. package/dist/lib/worktree.js.map +1 -1
  42. package/package.json +2 -3
  43. package/README.md +0 -104
  44. package/dist/commands/new.d.ts +0 -30
  45. package/dist/commands/new.d.ts.map +0 -1
  46. package/dist/commands/new.js +0 -150
  47. package/dist/commands/new.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * CLAUDE.md deployment, CLAUDE.local.md generation, and session start.
3
+ * Mirrors the patterns in dev-tools/worktree-cli/src/operations.ts.
3
4
  */
4
5
  import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'fs';
5
6
  import { join } from 'path';
6
7
  import { execSync, spawnSync } from 'child_process';
7
8
  import chalk from 'chalk';
8
- import { AUTO_CHECKPOINT_SH_TEMPLATE, CLAUDE_MD_TEMPLATE, MCP_JSON_TEMPLATE, MX_GUARD_HOOK_SH_TEMPLATE, RELOAD_CHECKPOINT_SH_TEMPLATE, SET_TERMINAL_APPEARANCE_SH_TEMPLATE, SETTINGS_JSON_TEMPLATE, WORKTREE_GUARD_SH_TEMPLATE } from './templates.js';
9
9
  // ── Logging helpers ───────────────────────────────────────────────────
10
10
  export function logSuccess(msg) {
11
11
  console.log(chalk.green(' ✓ ' + msg));
@@ -23,7 +23,7 @@ export function logDim(msg) {
23
23
  * Template resolution order:
24
24
  * 1. origin/<baseBranch>:<configSource>/CLAUDE.md.template via git show
25
25
  * 2. Local <configSource>/CLAUDE.md.template — offline fallback
26
- * 3. Embedded CLAUDE_MD_TEMPLATE constant npm package fallback
26
+ * 3. Local dev-tools/worktree-cli/templates/CLAUDE.md.templatelegacy fallback
27
27
  * 4. Root CLAUDE.md
28
28
  */
29
29
  export function deployClaudeMd(projectRoot, worktreePath, opts = {}) {
@@ -60,6 +60,7 @@ export function deployClaudeMd(projectRoot, worktreePath, opts = {}) {
60
60
  if (!content) {
61
61
  const localCandidates = [
62
62
  join(projectRoot, configSource, 'CLAUDE.md.template'),
63
+ join(projectRoot, 'dev-tools/worktree-cli/templates/CLAUDE.md.template'),
63
64
  ];
64
65
  for (const templatePath of localCandidates) {
65
66
  if (existsSync(templatePath)) {
@@ -85,20 +86,13 @@ export function deployClaudeMd(projectRoot, worktreePath, opts = {}) {
85
86
  }
86
87
  }
87
88
  }
88
- // Fall back to npm package default
89
- let fromNpmDefault = false;
90
89
  if (!content) {
91
- content = CLAUDE_MD_TEMPLATE;
92
- fromNpmDefault = true;
90
+ logWarning('Could not find CLAUDE.md template — skipping deployment');
91
+ return;
93
92
  }
94
93
  try {
95
94
  writeFileSync(claudeMdPath, content);
96
- if (fromNpmDefault) {
97
- logSuccess('Deployed CLAUDE.md from npm package default (customize mx-agent-system/agent-config/CLAUDE.md.template to override)');
98
- }
99
- else {
100
- logSuccess('Deployed CLAUDE.md from template');
101
- }
95
+ logSuccess('Deployed CLAUDE.md from template');
102
96
  }
103
97
  catch {
104
98
  logWarning('Could not write CLAUDE.md');
@@ -110,10 +104,10 @@ export function deployClaudeMd(projectRoot, worktreePath, opts = {}) {
110
104
  * Matches the format produced by writeWorktreeClaudeLocal in operations.ts.
111
105
  *
112
106
  * If the project root has a CLAUDE.local.md, its content is prepended above
113
- * the worktree isolation rules.
107
+ * the worktree isolation rules (same merge behaviour as worktree-cli).
114
108
  */
115
109
  export function writeClaudeLocal(opts) {
116
- const { projectRoot, worktreePath, worktreeName, branch, slot } = opts;
110
+ const { projectRoot, worktreePath, worktreeName, branch, slot, projectSlug = '' } = opts;
117
111
  const localMdPath = join(worktreePath, 'CLAUDE.local.md');
118
112
  // Check if main workspace has a CLAUDE.local.md to merge
119
113
  let mainLocalContent = '';
@@ -147,7 +141,17 @@ You are working in an isolated worktree. Follow these rules strictly.
147
141
  4. **Do not switch branches.** Stay on \`${branch || 'your current branch'}\`. Branch switching is blocked.
148
142
  5. **Do not merge or push to main.** Create a PR instead using \`gh pr create\`.
149
143
  6. **Push to your branch** with \`git push -u origin ${branch || '<your-branch>'}\`.
144
+ ${projectSlug ? `
145
+ ## Memory Key Scope
146
+
147
+ This project uses a scoped prefix for all named memories to prevent collisions across projects sharing the same MemNexus account.
150
148
 
149
+ - **Project slug:** \`${projectSlug}\`
150
+ - **Named memory key format:** \`${projectSlug}-<team>-<type>\`
151
+ - **Example:** \`${projectSlug}-product-leader-state\` (never \`product-leader-state\`)
152
+
153
+ All \`mx memories create --name\` and \`mx memories update --name\` calls MUST use the \`${projectSlug}-\` prefix. This is enforced — keys without the prefix will collide with other projects on this account.
154
+ ` : ''}
151
155
  # currentDate
152
156
  Today's date is ${new Date().toISOString().slice(0, 10)}.
153
157
  `;
@@ -167,265 +171,59 @@ Today's date is ${new Date().toISOString().slice(0, 10)}.
167
171
  * Sync .claude/settings.json and .claude/hooks/worktree-guard.sh from the
168
172
  * platform team's canonical source: <configSource>/ on origin/<baseBranch>.
169
173
  *
170
- * Config resolution order for each file (3-step):
171
- * 1. `git show origin/<baseBranch>:<path>` — remote (tamper-resistant)
172
- * 2. Local <projectRoot>/<configSource>/<file> — offline fallback
173
- * 3. Embedded npm package template — always available, never fails
174
- *
175
174
  * Uses `git show origin/<baseBranch>:<path>` to read file content directly from
176
175
  * the remote object store — no checkout/unstage dance, no staged files left behind.
177
176
  *
178
177
  * Source of truth for all agent configuration is <configSource>/.
179
178
  * Changes to agent permissions or hooks must go through a platform team PR.
180
- *
181
- * Atomicity guarantee (PLAT-014): both files are resolved to content before
182
- * any writes occur — either both are written or neither is.
183
179
  */
184
180
  export function syncClaudeConfig(worktreePath, opts = {}) {
185
181
  const baseBranch = opts.baseBranch ?? 'main';
186
182
  const configSource = opts.configSource ?? 'mx-agent-system/agent-config';
187
- const projectRoot = opts.projectRoot;
188
183
  logDim(`Syncing agent config from ${configSource}/ (origin/${baseBranch})...`);
189
- // ── 1. Fetch (non-fatal) ──────────────────────────────────────────────
184
+ // ── 1. Fetch ──────────────────────────────────────────────────────────
190
185
  const fetchR = spawnSync('git', ['fetch', 'origin', baseBranch, '--quiet'], {
191
186
  cwd: worktreePath, stdio: 'pipe',
192
187
  });
193
- const fetchSucceeded = fetchR.status === 0;
194
- if (!fetchSucceeded) {
195
- logDim(`Could not fetch origin/${baseBranch} — will use local or npm defaults`);
196
- }
197
- // ── 2. Resolve both files (3-step per file) ───────────────────────────
198
- // settings.json
199
- let settingsContent = null;
200
- let settingsSource = 'npm';
201
- if (fetchSucceeded) {
202
- const r = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/settings.json`], {
203
- cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
204
- });
205
- if (r.status === 0 && r.stdout) {
206
- settingsContent = r.stdout;
207
- settingsSource = 'remote';
208
- }
209
- }
210
- if (!settingsContent && projectRoot) {
211
- const localPath = join(projectRoot, configSource, 'settings.json');
212
- if (existsSync(localPath)) {
213
- try {
214
- settingsContent = readFileSync(localPath, 'utf-8');
215
- settingsSource = 'local';
216
- }
217
- catch {
218
- // fall through to npm default
219
- }
220
- }
221
- }
222
- if (!settingsContent) {
223
- settingsContent = SETTINGS_JSON_TEMPLATE;
224
- settingsSource = 'npm';
225
- }
226
- // worktree-guard.sh
227
- let guardContent = null;
228
- let guardSource = 'npm';
229
- if (fetchSucceeded) {
230
- const r = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/hooks/worktree-guard.sh`], {
231
- cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
232
- });
233
- if (r.status === 0 && r.stdout) {
234
- guardContent = r.stdout;
235
- guardSource = 'remote';
236
- }
237
- }
238
- if (!guardContent && projectRoot) {
239
- const localPath = join(projectRoot, configSource, 'hooks', 'worktree-guard.sh');
240
- if (existsSync(localPath)) {
241
- try {
242
- guardContent = readFileSync(localPath, 'utf-8');
243
- guardSource = 'local';
244
- }
245
- catch {
246
- // fall through to npm default
247
- }
248
- }
249
- }
250
- if (!guardContent) {
251
- guardContent = WORKTREE_GUARD_SH_TEMPLATE;
252
- guardSource = 'npm';
253
- }
254
- // auto-checkpoint.sh (PreCompact hook)
255
- let checkpointContent = null;
256
- let checkpointSource = 'npm';
257
- if (fetchSucceeded) {
258
- const r = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/hooks/auto-checkpoint.sh`], {
259
- cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
260
- });
261
- if (r.status === 0 && r.stdout) {
262
- checkpointContent = r.stdout;
263
- checkpointSource = 'remote';
264
- }
265
- }
266
- if (!checkpointContent && projectRoot) {
267
- const localPath = join(projectRoot, configSource, 'hooks', 'auto-checkpoint.sh');
268
- if (existsSync(localPath)) {
269
- try {
270
- checkpointContent = readFileSync(localPath, 'utf-8');
271
- checkpointSource = 'local';
272
- }
273
- catch {
274
- // fall through to npm default
275
- }
276
- }
277
- }
278
- if (!checkpointContent) {
279
- checkpointContent = AUTO_CHECKPOINT_SH_TEMPLATE;
280
- checkpointSource = 'npm';
281
- }
282
- // reload-checkpoint.sh (SessionStart hook)
283
- let reloadContent = null;
284
- let reloadSource = 'npm';
285
- if (fetchSucceeded) {
286
- const r = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/hooks/reload-checkpoint.sh`], {
287
- cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
288
- });
289
- if (r.status === 0 && r.stdout) {
290
- reloadContent = r.stdout;
291
- reloadSource = 'remote';
292
- }
293
- }
294
- if (!reloadContent && projectRoot) {
295
- const localPath = join(projectRoot, configSource, 'hooks', 'reload-checkpoint.sh');
296
- if (existsSync(localPath)) {
297
- try {
298
- reloadContent = readFileSync(localPath, 'utf-8');
299
- reloadSource = 'local';
300
- }
301
- catch {
302
- // fall through to npm default
303
- }
304
- }
305
- }
306
- if (!reloadContent) {
307
- reloadContent = RELOAD_CHECKPOINT_SH_TEMPLATE;
308
- reloadSource = 'npm';
309
- }
310
- // set-terminal-appearance.sh (SessionStart hook — all sessions)
311
- let appearanceContent = null;
312
- let appearanceSource = 'npm';
313
- if (fetchSucceeded) {
314
- const r = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/hooks/set-terminal-appearance.sh`], {
315
- cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
316
- });
317
- if (r.status === 0 && r.stdout) {
318
- appearanceContent = r.stdout;
319
- appearanceSource = 'remote';
320
- }
321
- }
322
- if (!appearanceContent && projectRoot) {
323
- const localPath = join(projectRoot, configSource, 'hooks', 'set-terminal-appearance.sh');
324
- if (existsSync(localPath)) {
325
- try {
326
- appearanceContent = readFileSync(localPath, 'utf-8');
327
- appearanceSource = 'local';
328
- }
329
- catch {
330
- // fall through to npm default
331
- }
332
- }
333
- }
334
- if (!appearanceContent) {
335
- appearanceContent = SET_TERMINAL_APPEARANCE_SH_TEMPLATE;
336
- appearanceSource = 'npm';
337
- }
338
- // mx-guard-hook.sh (PreToolUse hook — pre-push enforcement)
339
- let mxGuardContent = null;
340
- let mxGuardSource = 'npm';
341
- if (fetchSucceeded) {
342
- const r = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/hooks/mx-guard-hook.sh`], {
343
- cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
344
- });
345
- if (r.status === 0 && r.stdout) {
346
- mxGuardContent = r.stdout;
347
- mxGuardSource = 'remote';
348
- }
349
- }
350
- if (!mxGuardContent && projectRoot) {
351
- const localPath = join(projectRoot, configSource, 'hooks', 'mx-guard-hook.sh');
352
- if (existsSync(localPath)) {
353
- try {
354
- mxGuardContent = readFileSync(localPath, 'utf-8');
355
- mxGuardSource = 'local';
356
- }
357
- catch {
358
- // fall through to npm default
359
- }
360
- }
188
+ if (fetchR.status !== 0) {
189
+ logWarning(`Could not fetch origin/${baseBranch} — using existing agent config`);
190
+ return;
361
191
  }
362
- if (!mxGuardContent) {
363
- mxGuardContent = MX_GUARD_HOOK_SH_TEMPLATE;
364
- mxGuardSource = 'npm';
192
+ // ── 2. Read both files into memory (fail-all-or-nothing gate) ──────────
193
+ const settingsR = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/settings.json`], {
194
+ cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
195
+ });
196
+ if (settingsR.status !== 0 || !settingsR.stdout) {
197
+ logWarning(`Could not read settings.json from ${configSource}/ — agent config unchanged`);
198
+ return;
365
199
  }
366
- // Determine log message source label
367
- const sources = [settingsSource, guardSource, checkpointSource, reloadSource, appearanceSource, mxGuardSource];
368
- const overallSource = sources.every(s => s === 'remote')
369
- ? 'remote'
370
- : sources.every(s => s === 'npm')
371
- ? 'npm'
372
- : sources.every(s => s === 'local' || s === 'npm') && sources.some(s => s === 'local')
373
- ? 'local'
374
- : 'mixed';
375
- // ── 3. Skip if all files already exist and all resolved from npm defaults ──
376
- // Avoids downgrading an existing stronger config on a transient fetch failure.
377
- const settingsPath = join(worktreePath, '.claude', 'settings.json');
378
- const guardPath = join(worktreePath, '.claude', 'hooks', 'worktree-guard.sh');
379
- const checkpointPath = join(worktreePath, '.claude', 'hooks', 'auto-checkpoint.sh');
380
- const reloadPath = join(worktreePath, '.claude', 'hooks', 'reload-checkpoint.sh');
381
- const appearancePath = join(worktreePath, '.claude', 'hooks', 'set-terminal-appearance.sh');
382
- const mxGuardPath = join(worktreePath, '.claude', 'hooks', 'mx-guard-hook.sh');
383
- const allExist = existsSync(settingsPath) && existsSync(guardPath)
384
- && existsSync(checkpointPath) && existsSync(reloadPath) && existsSync(appearancePath)
385
- && existsSync(mxGuardPath);
386
- if (allExist && sources.every(s => s === 'npm')) {
387
- logDim('Agent config already exists — skipping npm defaults (remote fetch unavailable)');
200
+ const guardR = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/hooks/worktree-guard.sh`], {
201
+ cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
202
+ });
203
+ if (guardR.status !== 0 || !guardR.stdout) {
204
+ logWarning(`Could not read worktree-guard.sh from ${configSource}/ agent config unchanged`);
388
205
  return;
389
206
  }
390
- // ── 4. Ensure target directory exists ────────────────────────────────
207
+ // Both reads succeeded now write atomically via tmp → rename
208
+ const settingsContent = settingsR.stdout;
209
+ const guardContent = guardR.stdout;
210
+ // ── 3. Ensure target directory exists ────────────────────────────────
391
211
  const claudeDir = join(worktreePath, '.claude');
392
212
  const hooksDir = join(claudeDir, 'hooks');
393
213
  mkdirSync(hooksDir, { recursive: true });
394
- // ── 5. Write to .tmp files ────────────────────────────────────────────
214
+ // ── 4. Write to .tmp files ────────────────────────────────────────────
215
+ const settingsPath = join(claudeDir, 'settings.json');
216
+ const guardPath = join(hooksDir, 'worktree-guard.sh');
395
217
  const settingsTmp = settingsPath + '.tmp';
396
218
  const guardTmp = guardPath + '.tmp';
397
- const checkpointTmp = checkpointPath + '.tmp';
398
- const reloadTmp = reloadPath + '.tmp';
399
- const appearanceTmp = appearancePath + '.tmp';
400
- const mxGuardTmp = mxGuardPath + '.tmp';
401
219
  try {
402
220
  writeFileSync(settingsTmp, settingsContent);
403
221
  writeFileSync(guardTmp, guardContent);
404
222
  chmodSync(guardTmp, 0o755);
405
- writeFileSync(checkpointTmp, checkpointContent);
406
- chmodSync(checkpointTmp, 0o755);
407
- writeFileSync(reloadTmp, reloadContent);
408
- chmodSync(reloadTmp, 0o755);
409
- writeFileSync(appearanceTmp, appearanceContent);
410
- chmodSync(appearanceTmp, 0o755);
411
- writeFileSync(mxGuardTmp, mxGuardContent);
412
- chmodSync(mxGuardTmp, 0o755);
413
- // ── 6. Atomic rename all into place ──────────────────────────────────
223
+ // ── 5. Atomic rename both into place ─────────────────────────────────
414
224
  renameSync(settingsTmp, settingsPath);
415
225
  renameSync(guardTmp, guardPath);
416
- renameSync(checkpointTmp, checkpointPath);
417
- renameSync(reloadTmp, reloadPath);
418
- renameSync(appearanceTmp, appearancePath);
419
- renameSync(mxGuardTmp, mxGuardPath);
420
- if (overallSource === 'remote') {
421
- logSuccess(`Agent config synced from ${configSource}/`);
422
- }
423
- else if (overallSource === 'local') {
424
- logSuccess(`Agent config synced from local ${configSource}/`);
425
- }
426
- else {
427
- logSuccess('Agent config synced from npm package defaults');
428
- }
226
+ logSuccess(`Agent config synced from ${configSource}/`);
429
227
  }
430
228
  catch (err) {
431
229
  // Clean up any tmp files that were written
@@ -437,33 +235,8 @@ export function syncClaudeConfig(worktreePath, opts = {}) {
437
235
  unlinkSync(guardTmp);
438
236
  }
439
237
  catch { /* already gone */ }
440
- try {
441
- unlinkSync(checkpointTmp);
442
- }
443
- catch { /* already gone */ }
444
- try {
445
- unlinkSync(reloadTmp);
446
- }
447
- catch { /* already gone */ }
448
- try {
449
- unlinkSync(appearanceTmp);
450
- }
451
- catch { /* already gone */ }
452
- try {
453
- unlinkSync(mxGuardTmp);
454
- }
455
- catch { /* already gone */ }
456
238
  logWarning(`Could not write agent config: ${err instanceof Error ? err.message : String(err)}`);
457
239
  }
458
- // ── 7. Write .mcp.json (MX MCP server) ───────────────────────────────
459
- const mcpJsonPath = join(worktreePath, '.mcp.json');
460
- try {
461
- writeFileSync(mcpJsonPath, MCP_JSON_TEMPLATE);
462
- logSuccess('Deployed .mcp.json (MX MCP server)');
463
- }
464
- catch (err) {
465
- logWarning(`Could not write .mcp.json: ${err instanceof Error ? err.message : String(err)}`);
466
- }
467
240
  }
468
241
  // ── Terminal appearance (VS Code tab title + color) ───────────────────
469
242
  /**
@@ -510,86 +283,26 @@ function resetTerminalAppearance() {
510
283
  process.stdout.write(`\x1b]0;\x07`);
511
284
  process.stdout.write(`\x1b]633;P;tabColor=\x07`);
512
285
  }
513
- // ── Tool permission bootstrapping ─────────────────────────────────────
514
- /**
515
- * Extract the permissions.allow list from SETTINGS_JSON_TEMPLATE.
516
- * Single source of truth — any change to the template automatically
517
- * flows through to --allowedTools without maintaining a duplicate list.
518
- */
519
- function getDefaultAllowedTools() {
520
- try {
521
- const parsed = JSON.parse(SETTINGS_JSON_TEMPLATE);
522
- const allow = parsed?.permissions?.allow;
523
- if (Array.isArray(allow) && allow.length > 0)
524
- return allow;
525
- }
526
- catch {
527
- // Template parse failure — should never happen but fall back to core tools
528
- }
529
- return ['Bash', 'Read', 'Edit', 'Write', 'Glob', 'Grep',
530
- 'WebFetch', 'WebSearch', 'Task', 'NotebookEdit'];
531
- }
532
- const DEFAULT_ALLOWED_TOOLS = getDefaultAllowedTools();
533
- /** Safe pattern for tool names — blocks flag injection (entries starting with -). */
534
- const SAFE_TOOL_NAME = /^[A-Za-z][A-Za-z0-9_*():./ -]*$/;
535
- /**
536
- * Read the allow list from the worktree's .claude/settings.json.
537
- * Falls back to DEFAULT_ALLOWED_TOOLS if the file is missing or invalid.
538
- *
539
- * Each entry is validated to prevent CLI flag injection (Security R1).
540
- */
541
- function getAllowedTools(worktreePath) {
542
- const settingsPath = join(worktreePath, '.claude', 'settings.json');
543
- try {
544
- const settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
545
- const allow = settings?.permissions?.allow;
546
- if (Array.isArray(allow) && allow.length > 0) {
547
- const validated = allow.filter((t) => typeof t === 'string' &&
548
- t.length > 0 &&
549
- t.length <= 200 &&
550
- !t.startsWith('-') &&
551
- SAFE_TOOL_NAME.test(t));
552
- if (validated.length > 0)
553
- return validated;
554
- }
555
- }
556
- catch {
557
- // File missing or invalid JSON — use defaults
558
- }
559
- return DEFAULT_ALLOWED_TOOLS;
560
- }
561
286
  // ── Session launch ────────────────────────────────────────────────────
562
287
  /**
563
288
  * Exec into a Claude session in the worktree with the given initial prompt.
564
289
  * Uses spawnSync so Claude replaces the current process cleanly.
565
- *
566
- * Passes --allowedTools to auto-approve standard tools without requiring
567
- * the user to trust the project's .claude/settings.json first.
568
- * Deny/ask rules in settings.json still take precedence (deny > ask > allow).
569
290
  */
570
291
  export function launchClaudeSession(opts) {
571
292
  const { worktreePath, worktreeName, branch, slot, initialPrompt, teamName } = opts;
572
- const color = AGENT_COLORS[hashTeamName(teamName) % AGENT_COLORS.length];
573
293
  const env = {
574
294
  ...process.env,
575
295
  CLAUDE_WORKTREE_PATH: worktreePath,
576
296
  CLAUDE_WORKTREE_NAME: worktreeName,
577
297
  CLAUDE_WORKTREE_SLOT: String(slot),
578
298
  CLAUDE_WORKTREE_BRANCH: branch || '',
579
- CLAUDE_TEAM_NAME: teamName,
580
- CLAUDE_TEAM_COLOR: color,
581
299
  };
582
- const allowedTools = getAllowedTools(worktreePath);
583
300
  console.log();
584
301
  console.log(chalk.bold(' Starting Claude Code...'));
585
- console.log(chalk.dim(` Auto-approved tools: ${allowedTools.length}`));
586
302
  console.log(chalk.dim(' Press Ctrl+C to exit'));
587
303
  console.log();
588
304
  setTerminalAppearance(teamName);
589
- const result = spawnSync('claude', [
590
- '--allowedTools', ...allowedTools,
591
- '--', initialPrompt,
592
- ], {
305
+ const result = spawnSync('claude', [initialPrompt], {
593
306
  cwd: worktreePath,
594
307
  env,
595
308
  stdio: 'inherit',
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"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"}
@@ -32,8 +32,13 @@ export interface TeamMemoryBootstrapResult {
32
32
  }
33
33
  /**
34
34
  * Initialise the three standard named memories for a new team.
35
+ *
36
+ * @param projectSlug - Optional project-scoped prefix (from mx-agent.config.json).
37
+ * When set, keys become `<projectSlug>-<teamSlug>-leader-state` etc., preventing
38
+ * collisions when multiple projects share the same MemNexus account.
39
+ * Defaults to '' (no prefix — backwards compatible).
35
40
  */
36
- export declare function bootstrapTeamMemories(teamSlug: string, teamDisplayName: string, roleguide: string): TeamMemoryBootstrapResult;
41
+ export declare function bootstrapTeamMemories(teamSlug: string, teamDisplayName: string, roleguide: string, projectSlug?: string): TeamMemoryBootstrapResult;
37
42
  /**
38
43
  * Log the result of a memory creation step.
39
44
  */
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAID,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwCjG;AAID,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,YAAY,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,WAAW,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,GAChB,yBAAyB,CAiB3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAY5F;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAa5E"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAID,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAsCjG;AAID,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,YAAY,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,WAAW,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,SAAK,GACf,yBAAyB,CAmB3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAY5F;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAY5E"}
@@ -5,7 +5,7 @@ import { spawnSync } from 'child_process';
5
5
  import chalk from 'chalk';
6
6
  // ── mx availability ───────────────────────────────────────────────────
7
7
  export function isMxAvailable() {
8
- const result = spawnSync('mx', ['--version'], { stdio: 'pipe', timeout: 5_000 });
8
+ const result = spawnSync('mx', ['--version'], { stdio: 'pipe' });
9
9
  return result.status === 0 && !result.error;
10
10
  }
11
11
  /**
@@ -27,7 +27,6 @@ export function createNamedMemory(opts) {
27
27
  const result = spawnSync('mx', args, {
28
28
  stdio: 'pipe',
29
29
  encoding: 'utf-8',
30
- timeout: 30_000,
31
30
  });
32
31
  const stdout = result.stdout || '';
33
32
  const stderr = result.stderr || '';
@@ -39,7 +38,6 @@ export function createNamedMemory(opts) {
39
38
  const verify = spawnSync('mx', ['memories', 'get', '--name', name], {
40
39
  stdio: 'pipe',
41
40
  encoding: 'utf-8',
42
- timeout: 15_000,
43
41
  });
44
42
  if (verify.status === 0 && !verify.error) {
45
43
  ok = true;
@@ -49,18 +47,24 @@ export function createNamedMemory(opts) {
49
47
  }
50
48
  /**
51
49
  * Initialise the three standard named memories for a new team.
50
+ *
51
+ * @param projectSlug - Optional project-scoped prefix (from mx-agent.config.json).
52
+ * When set, keys become `<projectSlug>-<teamSlug>-leader-state` etc., preventing
53
+ * collisions when multiple projects share the same MemNexus account.
54
+ * Defaults to '' (no prefix — backwards compatible).
52
55
  */
53
- export function bootstrapTeamMemories(teamSlug, teamDisplayName, roleguide) {
56
+ export function bootstrapTeamMemories(teamSlug, teamDisplayName, roleguide, projectSlug = '') {
57
+ const prefix = projectSlug ? `${projectSlug}-` : '';
54
58
  const leaderState = createNamedMemory({
55
- name: `${teamSlug}-leader-state`,
59
+ name: `${prefix}${teamSlug}-leader-state`,
56
60
  content: `${teamDisplayName} team leader state — initialized. Roleguide: ${roleguide}. First session: read roleguide, check memories, begin iteration 1.`,
57
61
  });
58
62
  const iterationLog = createNamedMemory({
59
- name: `${teamSlug}-iteration-log`,
63
+ name: `${prefix}${teamSlug}-iteration-log`,
60
64
  content: `${teamDisplayName} iteration log — initialized. No iterations completed yet.`,
61
65
  });
62
66
  const knownIssues = createNamedMemory({
63
- name: `${teamSlug}-known-issues`,
67
+ name: `${prefix}${teamSlug}-known-issues`,
64
68
  content: `${teamDisplayName} known issues — initialized. No known issues.`,
65
69
  });
66
70
  return { leaderState, iterationLog, knownIssues };
@@ -91,7 +95,6 @@ export function getNamedMemory(name) {
91
95
  const result = spawnSync('mx', ['memories', 'get', '--name', name], {
92
96
  stdio: 'pipe',
93
97
  encoding: 'utf-8',
94
- timeout: 15_000,
95
98
  });
96
99
  const stdout = result.stdout || '';
97
100
  const stderr = result.stderr || '';