nfo-cli 0.0.4-improve-prompting → 0.0.5

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 (159) hide show
  1. package/dist/claude-command.js +6 -1
  2. package/dist/claude-command.js.map +1 -1
  3. package/dist/claude-trust.js +46 -0
  4. package/dist/claude-trust.js.map +1 -0
  5. package/dist/cli.js +0 -0
  6. package/dist/mcp/handlers.js +5 -0
  7. package/dist/mcp/handlers.js.map +1 -1
  8. package/dist/mcp/tool-defs.js +10 -0
  9. package/dist/mcp/tool-defs.js.map +1 -1
  10. package/dist/musicians/dismiss.js +1 -1
  11. package/dist/musicians/dismiss.js.map +1 -1
  12. package/dist/musicians/roles.js +15 -0
  13. package/dist/musicians/roles.js.map +1 -0
  14. package/dist/musicians/spawn.js +53 -18
  15. package/dist/musicians/spawn.js.map +1 -1
  16. package/dist/permission.js +6 -0
  17. package/dist/permission.js.map +1 -1
  18. package/dist/prompts/musician-role.js +2 -1
  19. package/dist/prompts/musician-role.js.map +1 -1
  20. package/dist/prompts/orchestrator-role.js +18 -6
  21. package/dist/prompts/orchestrator-role.js.map +1 -1
  22. package/dist/prompts/tool-discipline.js +7 -3
  23. package/dist/prompts/tool-discipline.js.map +1 -1
  24. package/package.json +8 -1
  25. package/assets/agent-screen.png +0 -0
  26. package/assets/main-screen.png +0 -0
  27. package/assets/orche-clawd.png +0 -0
  28. package/dist/tui/App.js +0 -428
  29. package/dist/tui/App.js.map +0 -1
  30. package/dist/tui/AppView.js +0 -13
  31. package/dist/tui/AppView.js.map +0 -1
  32. package/dist/tui/Auditorium.js +0 -17
  33. package/dist/tui/Auditorium.js.map +0 -1
  34. package/dist/tui/ConcertHall.js +0 -11
  35. package/dist/tui/ConcertHall.js.map +0 -1
  36. package/dist/tui/Help.js +0 -49
  37. package/dist/tui/Help.js.map +0 -1
  38. package/dist/tui/OrchestratorPane.js +0 -34
  39. package/dist/tui/OrchestratorPane.js.map +0 -1
  40. package/dist/tui/SidebarHeader.js +0 -6
  41. package/dist/tui/SidebarHeader.js.map +0 -1
  42. package/dist/tui/StatusBar.js +0 -6
  43. package/dist/tui/StatusBar.js.map +0 -1
  44. package/docs/plans/2026-05-29-nfo-phase-1-bootstrap.md +0 -2152
  45. package/docs/plans/2026-05-29-nfo-phase-2-mcp-musicians.md +0 -2467
  46. package/docs/plans/2026-05-29-nfo-phase-3-ink-tui.md +0 -1611
  47. package/docs/plans/2026-05-29-nfo-phase-4-permission-prompts.md +0 -460
  48. package/docs/plans/2026-05-29-nfo-phase-5-help-and-notify.md +0 -933
  49. package/docs/specs/2026-05-29-nfo-design.md +0 -468
  50. package/plan-explorer-musician-hardening.md +0 -56
  51. package/src/claude-command.ts +0 -35
  52. package/src/claude-detect.ts +0 -42
  53. package/src/cli.ts +0 -197
  54. package/src/commands/attach.ts +0 -24
  55. package/src/commands/dashboard-window.ts +0 -33
  56. package/src/commands/kill.ts +0 -50
  57. package/src/commands/launch.ts +0 -134
  58. package/src/commands/list.ts +0 -43
  59. package/src/commands/mcp-server.ts +0 -18
  60. package/src/commands/notes.ts +0 -18
  61. package/src/commands/restore.ts +0 -153
  62. package/src/commands/tui.tsx +0 -22
  63. package/src/config.ts +0 -44
  64. package/src/dashboard.ts +0 -1
  65. package/src/mcp/config.ts +0 -39
  66. package/src/mcp/handlers.ts +0 -141
  67. package/src/mcp/server.ts +0 -50
  68. package/src/mcp/tool-defs.ts +0 -151
  69. package/src/musicians/dismiss.ts +0 -60
  70. package/src/musicians/ids.ts +0 -21
  71. package/src/musicians/lookup.ts +0 -13
  72. package/src/musicians/message-log.ts +0 -152
  73. package/src/musicians/message.ts +0 -99
  74. package/src/musicians/query.ts +0 -19
  75. package/src/musicians/spawn.ts +0 -139
  76. package/src/notes.ts +0 -39
  77. package/src/notify.ts +0 -62
  78. package/src/orchestrator/report-back.ts +0 -33
  79. package/src/permission.ts +0 -30
  80. package/src/project-key.ts +0 -12
  81. package/src/prompts/musician-role.ts +0 -22
  82. package/src/prompts/orchestrator-role.ts +0 -84
  83. package/src/prompts/tool-discipline.ts +0 -41
  84. package/src/repo.ts +0 -14
  85. package/src/shell-quote.ts +0 -7
  86. package/src/state-updaters.ts +0 -132
  87. package/src/state.ts +0 -49
  88. package/src/state.types.ts +0 -67
  89. package/src/tmux.ts +0 -226
  90. package/src/tui/activity-line.ts +0 -16
  91. package/src/tui/components/App.tsx +0 -534
  92. package/src/tui/components/AppView.tsx +0 -98
  93. package/src/tui/components/Auditorium.tsx +0 -56
  94. package/src/tui/components/ConcertHall.tsx +0 -31
  95. package/src/tui/components/Help.tsx +0 -63
  96. package/src/tui/components/OrchestratorPane.tsx +0 -98
  97. package/src/tui/components/SidebarHeader.tsx +0 -34
  98. package/src/tui/components/StatusBar.tsx +0 -42
  99. package/src/tui/detect-permission.ts +0 -93
  100. package/src/tui/embedded-session-lifecycle.ts +0 -44
  101. package/src/tui/embedded-terminal.ts +0 -325
  102. package/src/tui/format-time.ts +0 -25
  103. package/src/tui/keymap.ts +0 -104
  104. package/src/tui/poll-activity.ts +0 -25
  105. package/src/tui/poll-idle.ts +0 -149
  106. package/src/tui/poll-permission.ts +0 -50
  107. package/src/tui/status-icon.ts +0 -35
  108. package/src/tui/terminal-input.ts +0 -136
  109. package/src/tui/watch-state.ts +0 -43
  110. package/src/worktree.ts +0 -41
  111. package/tests/claude-command.test.ts +0 -30
  112. package/tests/claude-detect.test.ts +0 -14
  113. package/tests/commands/attach.test.ts +0 -60
  114. package/tests/commands/kill.test.ts +0 -66
  115. package/tests/commands/launch.test.ts +0 -75
  116. package/tests/commands/list.test.ts +0 -47
  117. package/tests/commands/notes.test.ts +0 -53
  118. package/tests/commands/restore.test.ts +0 -126
  119. package/tests/helpers/tmp-config.ts +0 -16
  120. package/tests/helpers/tmp-repo.ts +0 -29
  121. package/tests/integration/orchestrator-spawn.test.ts +0 -108
  122. package/tests/mcp/handlers.test.ts +0 -163
  123. package/tests/mcp/tool-defs.test.ts +0 -35
  124. package/tests/musicians/dismiss.test.ts +0 -102
  125. package/tests/musicians/message.test.ts +0 -159
  126. package/tests/musicians/query.test.ts +0 -65
  127. package/tests/musicians/spawn.test.ts +0 -125
  128. package/tests/notes.test.ts +0 -56
  129. package/tests/notify.test.ts +0 -80
  130. package/tests/orchestrator/report-back.test.ts +0 -18
  131. package/tests/permission.test.ts +0 -39
  132. package/tests/project-key.test.ts +0 -33
  133. package/tests/prompts/tool-discipline.test.ts +0 -25
  134. package/tests/repo.test.ts +0 -38
  135. package/tests/state-updaters.test.ts +0 -126
  136. package/tests/state.test.ts +0 -85
  137. package/tests/tmux.test.ts +0 -126
  138. package/tests/tui/AppView.test.tsx +0 -92
  139. package/tests/tui/Auditorium.test.tsx +0 -67
  140. package/tests/tui/ConcertHall.test.tsx +0 -22
  141. package/tests/tui/Help.test.tsx +0 -38
  142. package/tests/tui/OrchestratorPane.test.ts +0 -30
  143. package/tests/tui/SidebarHeader.test.tsx +0 -20
  144. package/tests/tui/StatusBar.test.tsx +0 -51
  145. package/tests/tui/activity-line.test.ts +0 -21
  146. package/tests/tui/detect-permission.test.ts +0 -92
  147. package/tests/tui/embedded-session-lifecycle.test.ts +0 -55
  148. package/tests/tui/embedded-terminal.test.ts +0 -80
  149. package/tests/tui/format-time.test.ts +0 -25
  150. package/tests/tui/keymap.test.ts +0 -93
  151. package/tests/tui/poll-activity.test.ts +0 -81
  152. package/tests/tui/poll-idle.test.ts +0 -159
  153. package/tests/tui/poll-permission.test.ts +0 -222
  154. package/tests/tui/status-icon.test.ts +0 -27
  155. package/tests/tui/terminal-input.test.ts +0 -113
  156. package/tests/tui/watch-state.test.ts +0 -54
  157. package/tests/worktree.test.ts +0 -73
  158. package/tsconfig.json +0 -19
  159. package/vitest.config.ts +0 -12
@@ -1,4 +1,5 @@
1
1
  import { shellQuote } from "./shell-quote.js";
2
+ const NFO_MCP_ALLOW = "mcp__nfo";
2
3
  export function buildClaudeCommand(opts) {
3
4
  const args = ["claude", ...opts.flags];
4
5
  if (opts.resumeSessionId) {
@@ -11,8 +12,12 @@ export function buildClaudeCommand(opts) {
11
12
  if (opts.model) {
12
13
  args.push("--model", opts.model);
13
14
  }
15
+ args.push("--allowedTools", NFO_MCP_ALLOW);
16
+ if (opts.allowedTools && opts.allowedTools.length > 0) {
17
+ args.push("--tools", opts.allowedTools.join(","));
18
+ }
14
19
  if (opts.prompt !== undefined) {
15
- args.push(opts.prompt);
20
+ args.push("--", opts.prompt);
16
21
  }
17
22
  return args.map(shellQuote).join(" ");
18
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-command.js","sourceRoot":"","sources":["../src/claude-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAY9C,MAAM,UAAU,kBAAkB,CAAC,IAA+B;IAChE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"claude-command.js","sourceRoot":"","sources":["../src/claude-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAa9C,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC,MAAM,UAAU,kBAAkB,CAAC,IAA+B;IAChE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAE3C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { homedir } from 'node:os';
2
+ import { join } from 'node:path';
3
+ import { existsSync, readFileSync, writeFileSync, renameSync } from 'node:fs';
4
+ export function ensureDirTrusted(dir, configPath) {
5
+ try {
6
+ const resolvedConfig = configPath ?? join(homedir(), '.claude.json');
7
+ let raw = '{}';
8
+ if (existsSync(resolvedConfig)) {
9
+ raw = readFileSync(resolvedConfig, 'utf8');
10
+ }
11
+ const pretty = raw.includes('\n');
12
+ let data;
13
+ try {
14
+ data = JSON.parse(raw);
15
+ }
16
+ catch {
17
+ return;
18
+ }
19
+ if (typeof data !== 'object' || data === null) {
20
+ return;
21
+ }
22
+ if (typeof data.projects !== 'object' || data.projects === null) {
23
+ data.projects = {};
24
+ }
25
+ const projects = data.projects;
26
+ const entry = typeof projects[dir] === 'object' && projects[dir] !== null
27
+ ? { ...projects[dir] }
28
+ : {};
29
+ if (entry.hasTrustDialogAccepted === true) {
30
+ return;
31
+ }
32
+ entry.hasTrustDialogAccepted = true;
33
+ if (entry.allowedTools === undefined) {
34
+ entry.allowedTools = [];
35
+ }
36
+ projects[dir] = entry;
37
+ const serialized = pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data);
38
+ const tmpPath = `${resolvedConfig}.nfo-tmp`;
39
+ writeFileSync(tmpPath, serialized, 'utf8');
40
+ renameSync(tmpPath, resolvedConfig);
41
+ }
42
+ catch {
43
+ // Must never throw — trust seeding failures are non-fatal.
44
+ }
45
+ }
46
+ //# sourceMappingURL=claude-trust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-trust.js","sourceRoot":"","sources":["../src/claude-trust.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE9E,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,UAAmB;IAC/D,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;QAErE,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,IAA6B,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACrB,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAmD,CAAC;QAE1E,MAAM,KAAK,GAA4B,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI;YAChG,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAA4B,EAAE;YACjD,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,KAAK,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACpC,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;QAC1B,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAEtB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,GAAG,cAAc,UAAU,CAAC;QAC5C,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3C,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;AACH,CAAC"}
package/dist/cli.js CHANGED
File without changes
@@ -1,4 +1,5 @@
1
1
  import { createMusician } from "../musicians/spawn.js";
2
+ import { resolveAllowedTools } from "../musicians/roles.js";
2
3
  import { drainQueuedMusicianMessages, messageMusician, } from "../musicians/message.js";
3
4
  import { queryMusician } from "../musicians/query.js";
4
5
  import { dismissMusician } from "../musicians/dismiss.js";
@@ -20,6 +21,10 @@ export async function dispatch(orchestraId, toolName, args, opts = {}) {
20
21
  ? args.model
21
22
  : "sonnet",
22
23
  dryRun: opts.dryRun,
24
+ allowedTools: resolveAllowedTools(Array.isArray(args.allowed_tools) &&
25
+ args.allowed_tools.every((t) => typeof t === "string")
26
+ ? args.allowed_tools
27
+ : undefined, typeof args.role === "string" ? args.role : undefined),
23
28
  });
24
29
  return r;
25
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,16 @@ export const NFO_TOOLS = [
26
26
  enum: ["sonnet", "haiku"],
27
27
  description: "Optional subagent model (defaults to sonnet).",
28
28
  },
29
+ role: {
30
+ type: "string",
31
+ enum: ["explorer", "coder"],
32
+ description: "Optional musician role. Derives allowed_tools from a central role->tools map unless allowed_tools is also provided (explicit allowed_tools wins). explorer = read-only built-in tools; coder = full toolset.",
33
+ },
34
+ allowed_tools: {
35
+ type: "array",
36
+ items: { type: "string" },
37
+ description: "Optional allow-list of BUILT-IN claude tools (maps to --tools). Restricts built-in tools only; MCP tools remain available. Use for read-only Explorer musicians, e.g. [\"Read\",\"Grep\",\"Glob\"].",
38
+ },
29
39
  },
30
40
  required: ["name", "task"],
31
41
  additionalProperties: false,
@@ -1 +1 @@
1
- {"version":3,"file":"tool-defs.js","sourceRoot":"","sources":["../../src/mcp/tool-defs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-defs.js","sourceRoot":"","sources":["../../src/mcp/tool-defs.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export async function dismissMusician(opts) {
16
16
  const archivedSummary = opts.summary !== undefined
17
17
  ? opts.summary
18
18
  : (musician.status === 'idle' ? musician.latest_report?.summary ?? null : null);
19
- const archive = opts.archiveWorktree !== false;
19
+ const archive = opts.archiveWorktree === true;
20
20
  // 1. Best-effort graceful shutdown of claude, then kill the window.
21
21
  const target = `${sessionName(opts.orchestraId)}:${musician.tmux_window_id}`;
22
22
  await execa('tmux', ['send-keys', '-l', '-t', target, '--', '/quit'], { reject: false });
@@ -1 +1 @@
1
- {"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../src/musicians/dismiss.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../src/musicians/dismiss.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export const ROLE_TOOLSETS = {
2
+ explorer: ["Read", "Grep", "Glob", "WebSearch", "WebFetch", "EnterWorktree", "ExitWorktree"],
3
+ coder: undefined,
4
+ };
5
+ // Resolution: explicit allowed_tools wins; else derive from role; else undefined.
6
+ export function resolveAllowedTools(explicitTools, role) {
7
+ if (explicitTools !== undefined) {
8
+ return explicitTools;
9
+ }
10
+ if (role !== undefined) {
11
+ return ROLE_TOOLSETS[role];
12
+ }
13
+ return undefined;
14
+ }
15
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/musicians/roles.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAA+C;IACvE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,CAAC;IAC5F,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CACjC,aAAmC,EACnC,IAA8B;IAE9B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -4,9 +4,10 @@ import { execa } from "execa";
4
4
  import { addMusician } from "../state-updaters.js";
5
5
  import { readState } from "../state.js";
6
6
  import { orchestraDir, worktreesDir } from "../config.js";
7
- import { addWorktree } from "../worktree.js";
8
- import { claudeFlagsForLevel } from "../permission.js";
9
- import { respawnPane, sessionName, setPaneOption } from "../tmux.js";
7
+ import { addWorktree, removeWorktree } from "../worktree.js";
8
+ import { claudeFlagsForLevel, effectiveLevelForModel } from "../permission.js";
9
+ import { ensureDirTrusted } from "../claude-trust.js";
10
+ import { sessionName, setPaneOption } from "../tmux.js";
10
11
  import { MUSICIAN_ROLE_PROMPT_V1 } from "../prompts/musician-role.js";
11
12
  import { buildMusicianInitialPrompt } from "../prompts/tool-discipline.js";
12
13
  import { nextMusicianId } from "./ids.js";
@@ -32,6 +33,23 @@ export async function createMusician(opts) {
32
33
  baseRef: opts.branchFrom,
33
34
  });
34
35
  workingDir = worktreePath;
36
+ ensureDirTrusted(worktreesDir(opts.orchestraId));
37
+ if (!opts.dryRun) {
38
+ // Fresh worktrees have no node_modules (gitignored); install before launch.
39
+ try {
40
+ await execa("npm", ["ci"], { cwd: worktreePath });
41
+ }
42
+ catch (err) {
43
+ // Roll back the half-created worktree so we don't leave an orphan, then abort.
44
+ try {
45
+ await removeWorktree({ repoRoot: state.project_path, path: worktreePath, force: true });
46
+ }
47
+ catch {
48
+ // Ignore cleanup errors to surface the original failure.
49
+ }
50
+ throw new Error(`npm ci failed in worktree ${worktreePath}: ${err.message}`);
51
+ }
52
+ }
35
53
  }
36
54
  else {
37
55
  workingDir = state.project_path;
@@ -40,34 +58,51 @@ export async function createMusician(opts) {
40
58
  await writeFile(promptFile, MUSICIAN_ROLE_PROMPT_V1, "utf8");
41
59
  const session = sessionName(opts.orchestraId);
42
60
  const winLabel = `mus-${musicianId}-${sanitiseName(opts.name)}`;
43
- const { stdout: tmuxWindowId } = await execa("tmux", [
44
- "new-window",
45
- "-t",
46
- session,
47
- "-n",
48
- winLabel,
49
- "-c",
50
- workingDir,
51
- "-d",
52
- "-P",
53
- "-F",
54
- "#{window_id}",
55
- ]);
61
+ let tmuxWindowId;
56
62
  if (!opts.dryRun) {
57
63
  const mcpConfigPath = await writeMusicianMcpConfig(opts.orchestraId, musicianId);
58
- const flags = claudeFlagsForLevel(state.permission_level);
64
+ const flags = claudeFlagsForLevel(effectiveLevelForModel(state.permission_level, opts.model));
59
65
  const cmd = buildClaudeCommand({
60
66
  flags,
61
67
  mcpConfigPath,
62
68
  promptFile,
63
69
  prompt: buildMusicianInitialPrompt(opts.task),
64
70
  model: opts.model,
71
+ allowedTools: opts.allowedTools,
65
72
  });
73
+ const { stdout } = await execa("tmux", [
74
+ "new-window",
75
+ "-t",
76
+ session,
77
+ "-n",
78
+ winLabel,
79
+ "-c",
80
+ workingDir,
81
+ "-d",
82
+ "-P",
83
+ "-F",
84
+ "#{window_id}",
85
+ cmd,
86
+ ]);
87
+ tmuxWindowId = stdout;
66
88
  await setPaneOption(`${session}:${tmuxWindowId.trim()}`, "remain-on-exit", "on");
67
- await respawnPane(`${session}:${tmuxWindowId.trim()}`, cmd);
68
89
  }
69
90
  else {
70
91
  await writeMusicianMcpConfig(opts.orchestraId, musicianId);
92
+ const { stdout } = await execa("tmux", [
93
+ "new-window",
94
+ "-t",
95
+ session,
96
+ "-n",
97
+ winLabel,
98
+ "-c",
99
+ workingDir,
100
+ "-d",
101
+ "-P",
102
+ "-F",
103
+ "#{window_id}",
104
+ ]);
105
+ tmuxWindowId = stdout;
71
106
  }
72
107
  const now = new Date().toISOString();
73
108
  await addMusician(opts.orchestraId, {
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/musicians/spawn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/musicians/spawn.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,12 @@ export function claudeFlagsForLevel(level) {
16
16
  return ['--permission-mode', 'plan'];
17
17
  }
18
18
  }
19
+ export function effectiveLevelForModel(level, model) {
20
+ if (model === 'haiku' && level === 'auto') {
21
+ return 'dangerouslySkipPermissions';
22
+ }
23
+ return level;
24
+ }
19
25
  export const DANGEROUSLY_SKIP_PERMISSIONS_CONFIRM_PHRASE = 'I understand';
20
26
  export const DANGEROUSLY_SKIP_PERMISSIONS_WARNING = `⚠ "Dangerously skip permissions" mode disables all permission checks.
21
27
  Musicians can execute arbitrary shell commands, modify files anywhere on
@@ -1 +1 @@
1
- {"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,4BAA4B,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC;AAGxH,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAsB;IACxD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,4BAA4B;YAC/B,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC5C,KAAK,MAAM;YACT,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACvC,KAAK,aAAa;YAChB,OAAO,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;QAC9C,KAAK,YAAY;YACf,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,2CAA2C,GAAG,cAAc,CAAC;AAE1E,MAAM,CAAC,MAAM,oCAAoC,GAAG;;;;;QAK5C,2CAA2C,gBAAgB,CAAC"}
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,4BAA4B,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC;AAGxH,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAsB;IACxD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,4BAA4B;YAC/B,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC5C,KAAK,MAAM;YACT,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACvC,KAAK,aAAa;YAChB,OAAO,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;QAC9C,KAAK,YAAY;YACf,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAsB,EAAE,KAAgC;IAC7F,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAAC,OAAO,4BAA4B,CAAC;IAAC,CAAC;IACnF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,2CAA2C,GAAG,cAAc,CAAC;AAE1E,MAAM,CAAC,MAAM,oCAAoC,GAAG;;;;;QAK5C,2CAA2C,gBAAgB,CAAC"}
@@ -7,7 +7,8 @@ the Orchestrator does. Treat new user messages as either Orchestrator
7
7
  hand-offs or out-of-band human guidance, and use judgment.
8
8
 
9
9
  Your workspace is a dedicated git worktree, so file edits are isolated from
10
- other Musicians. When you finish the task you were spawned with, call the
10
+ other Musicians. If \`node_modules\` is missing in your worktree (it is gitignored), run \`npm ci\` in the worktree root before any build, typecheck, or test command.
11
+ When you finish the task you were spawned with, call the
11
12
  \`report_done\` MCP tool with a concise summary and optional next steps. After
12
13
  that, stay alive while the Orchestrator reviews your report. NFO may batch
13
14
  queued follow-up messages and deliver them right after \`report_done\`; if the
@@ -1 +1 @@
1
- {"version":3,"file":"musician-role.js","sourceRoot":"","sources":["../../src/prompts/musician-role.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;EAcrC,wBAAwB;;;;;CAKzB,CAAC"}
1
+ {"version":3,"file":"musician-role.js","sourceRoot":"","sources":["../../src/prompts/musician-role.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;EAerC,wBAAwB;;;;;CAKzB,CAAC"}
@@ -26,10 +26,10 @@ Available NFO tools (in addition to your normal Claude Code tools):
26
26
  Return all currently-active Musicians with their status.
27
27
 
28
28
  dismiss_musician({ musician_id, archive_worktree? })
29
- Tear down a Musician. The worktree is archived under
30
- .../archive/<musician_id>/worktree (the branch is preserved). Pass
31
- archive_worktree=false to drop the worktree entirely. By default drop the worktree. Ask
32
- the user before archiving, as these can accumulate and consume disk space.
29
+ Tear down a Musician. By DEFAULT the worktree is CLEANED UP (dropped) and
30
+ the branch deleted. Pass archive_worktree=true to PRESERVE it — the worktree
31
+ is moved to .../archive/<musician_id>/worktree (branch kept). Honor the
32
+ session worktree preference recorded in overview.md when deciding this flag.
33
33
 
34
34
  note_write({ filename, content }) / note_read({ filename }) / note_list()
35
35
  Your private project memory under ~/.config/nfo/projects/<key>/notes/.
@@ -40,6 +40,16 @@ Available NFO tools (in addition to your normal Claude Code tools):
40
40
 
41
41
  Coordination guidance:
42
42
 
43
+ - Session start — worktree preference: At the START of each session, BEFORE
44
+ spawning any Musician, check overview.md for a saved worktree preference.
45
+ If one is found, honor it silently. If NOT found, ask the user: "Should I
46
+ PRESERVE git worktrees after a Musician is dismissed, or CLEAN THEM UP?
47
+ (Default: clean up — worktree removed, branch deleted)". Record the answer
48
+ immediately via note_write to overview.md (e.g., 'Worktree preference: preserve'
49
+ or 'Worktree preference: clean up (default)'). On every dismiss_musician call
50
+ thereafter: if the user chose preserve, pass archive_worktree=true; otherwise
51
+ omit it or pass archive_worktree=false. Do not re-ask unless the user requests
52
+ a change.
43
53
  - ${ORCHESTRATOR_TOOL_DISCIPLINE.trim().replace(/\n/g, "\n ")}
44
54
  - For agent coordination, PREFER the NFO MCP tools over Claude Code's built-in
45
55
  Task tool. The user tracks Musician work through NFO; Task spawns are invisible
@@ -64,14 +74,16 @@ Coordination guidance:
64
74
  Musicians in the end if subagent driven development is picked by the user.
65
75
  - Coding task workflow (two stages):
66
76
 
67
- Stage 1 — Explorer Musician (Sonnet, worktree=false):
77
+ Stage 1 — Explorer Musician (Sonnet, worktree=false, role="explorer"):
78
+ The role restricts built-in tools to read-only; MCP tools (report_done,
79
+ note_read, etc.) are unaffected and remain available.
68
80
  Task the Explorer to find and report back:
69
81
  • Relevant file paths and line numbers for the change.
70
82
  • The existing pattern or convention to follow.
71
83
  • Any callers / dependents that may be affected (blast radius).
72
84
  • Anything that would block or constrain the implementation.
73
85
 
74
- Stage 2 — Coder Musician (Haiku preferred or Sonnet if really needed, fresh worktree if required):
86
+ Stage 2 — Coder Musician (Haiku preferred or Sonnet if really needed, fresh worktree if required, role="coder"):
75
87
  Build the task spec from the Explorer's findings. Include:
76
88
  • Exact files and line numbers to touch.
77
89
  • The change required and why (one sentence).
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator-role.js","sourceRoot":"","sources":["../../src/prompts/orchestrator-role.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyCvC,4BAA4B,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC7D,CAAC"}
1
+ {"version":3,"file":"orchestrator-role.js","sourceRoot":"","sources":["../../src/prompts/orchestrator-role.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmDvC,4BAA4B,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0C7D,CAAC"}
@@ -8,12 +8,16 @@ export const ORCHESTRATOR_TOOL_DISCIPLINE = `Tool discipline (mandatory):
8
8
  - Never write, edit or refactor code yourself. All coding tasks must be delegated
9
9
  to a Musician via \`spawn_musician\`. Your task as an Orchestrator is to prepare
10
10
  and hand off work, not to execute it.
11
- - For any coding task, always spawn a Sonnet Explorer Musician first (worktree=false, model="sonnet"), Only
12
- after the Explorer reports back may you spawn a Coder Musician. Never read source files
13
- yourself to build a coding task spec.
11
+ - For any coding task, always spawn a Sonnet Explorer Musician first (worktree=false, model="sonnet",
12
+ role="explorer"). The role restricts built-in tools to read-only; MCP tools (report_done, note_read, etc.)
13
+ are unaffected and remain available. Only after the Explorer reports back may you spawn a Coder Musician.
14
+ Never read source files yourself to build a coding task spec.
14
15
  - When a Musician reports back, resolve it in the same turn with an NFO tool
15
16
  call (usually \`dismiss_musician\` or \`message_musician\`). A prose-only
16
17
  acknowledgement is non-compliant.
18
+ - At the start of each session, before any Musician work begins, ask the user
19
+ about worktree preservation (or honor the saved preference in overview.md)
20
+ and persist the answer immediately via \`note_write\` to overview.md.
17
21
  `;
18
22
  export const MUSICIAN_TOOL_DISCIPLINE = `Tool discipline (mandatory):
19
23
 
@@ -1 +1 @@
1
- {"version":3,"file":"tool-discipline.js","sourceRoot":"","sources":["../../src/prompts/tool-discipline.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;CAgB3C,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;CAUvC,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzD,OAAO,GAAG,IAAI;;;;;wFAKwE,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"tool-discipline.js","sourceRoot":"","sources":["../../src/prompts/tool-discipline.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;CAoB3C,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;CAUvC,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzD,OAAO,GAAG,IAAI;;;;;wFAKwE,CAAC;AACzF,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,15 @@
1
1
  {
2
2
  "name": "nfo-cli",
3
- "version": "0.0.4-improve-prompting",
3
+ "version": "0.0.5",
4
4
  "description": "No Fluff Orchestra — a simple, fluff-free CLI multi-agent orchestrator",
5
5
  "type": "module",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/javierfurus/nfo.git"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
6
13
  "bin": {
7
14
  "nfo": "./dist/cli.js"
8
15
  },
Binary file
Binary file
Binary file