nfo-cli 0.0.3 → 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.
- package/dist/claude-command.js +6 -1
- package/dist/claude-command.js.map +1 -1
- package/dist/claude-trust.js +46 -0
- package/dist/claude-trust.js.map +1 -0
- package/dist/cli.js +64 -54
- package/dist/cli.js.map +1 -1
- package/dist/commands/restore.js +0 -1
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/tui.js +6 -4
- package/dist/commands/tui.js.map +1 -1
- package/dist/mcp/handlers.js +5 -0
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/tool-defs.js +10 -0
- package/dist/mcp/tool-defs.js.map +1 -1
- package/dist/musicians/dismiss.js +1 -1
- package/dist/musicians/dismiss.js.map +1 -1
- package/dist/musicians/roles.js +15 -0
- package/dist/musicians/roles.js.map +1 -0
- package/dist/musicians/spawn.js +53 -18
- package/dist/musicians/spawn.js.map +1 -1
- package/dist/permission.js +14 -8
- package/dist/permission.js.map +1 -1
- package/dist/prompts/musician-role.js +2 -1
- package/dist/prompts/musician-role.js.map +1 -1
- package/dist/prompts/orchestrator-role.js +42 -8
- package/dist/prompts/orchestrator-role.js.map +1 -1
- package/dist/prompts/tool-discipline.js +10 -0
- package/dist/prompts/tool-discipline.js.map +1 -1
- package/dist/tui/{App.js → components/App.js} +20 -20
- package/dist/tui/components/App.js.map +1 -0
- package/dist/tui/components/AppView.js +13 -0
- package/dist/tui/components/AppView.js.map +1 -0
- package/dist/tui/{Auditorium.js → components/Auditorium.js} +2 -2
- package/dist/tui/components/Auditorium.js.map +1 -0
- package/dist/tui/components/ConcertHall.js.map +1 -0
- package/dist/tui/{Help.js → components/Help.js} +0 -8
- package/dist/tui/components/Help.js.map +1 -0
- package/dist/tui/components/OrchestratorPane.js.map +1 -0
- package/dist/tui/components/SidebarHeader.js +6 -0
- package/dist/tui/components/SidebarHeader.js.map +1 -0
- package/dist/tui/{StatusBar.js → components/StatusBar.js} +1 -1
- package/dist/tui/components/StatusBar.js.map +1 -0
- package/package.json +8 -1
- package/assets/agent-screen.png +0 -0
- package/assets/main-screen.png +0 -0
- package/assets/orche-clawd.png +0 -0
- package/dist/tui/App.js.map +0 -1
- package/dist/tui/AppView.js +0 -13
- package/dist/tui/AppView.js.map +0 -1
- package/dist/tui/Auditorium.js.map +0 -1
- package/dist/tui/ConcertHall.js.map +0 -1
- package/dist/tui/Help.js.map +0 -1
- package/dist/tui/OrchestratorPane.js.map +0 -1
- package/dist/tui/SidebarHeader.js +0 -6
- package/dist/tui/SidebarHeader.js.map +0 -1
- package/dist/tui/StatusBar.js.map +0 -1
- package/docs/plans/2026-05-29-nfo-phase-1-bootstrap.md +0 -2152
- package/docs/plans/2026-05-29-nfo-phase-2-mcp-musicians.md +0 -2467
- package/docs/plans/2026-05-29-nfo-phase-3-ink-tui.md +0 -1611
- package/docs/plans/2026-05-29-nfo-phase-4-permission-prompts.md +0 -460
- package/docs/plans/2026-05-29-nfo-phase-5-help-and-notify.md +0 -933
- package/docs/specs/2026-05-29-nfo-design.md +0 -468
- package/src/claude-command.ts +0 -35
- package/src/claude-detect.ts +0 -42
- package/src/cli.ts +0 -164
- package/src/commands/attach.ts +0 -24
- package/src/commands/dashboard-window.ts +0 -33
- package/src/commands/kill.ts +0 -50
- package/src/commands/launch.ts +0 -134
- package/src/commands/list.ts +0 -43
- package/src/commands/mcp-server.ts +0 -18
- package/src/commands/notes.ts +0 -18
- package/src/commands/restore.ts +0 -153
- package/src/commands/tui.tsx +0 -16
- package/src/config.ts +0 -44
- package/src/dashboard.ts +0 -1
- package/src/mcp/config.ts +0 -39
- package/src/mcp/handlers.ts +0 -141
- package/src/mcp/server.ts +0 -50
- package/src/mcp/tool-defs.ts +0 -151
- package/src/musicians/dismiss.ts +0 -60
- package/src/musicians/ids.ts +0 -21
- package/src/musicians/lookup.ts +0 -13
- package/src/musicians/message-log.ts +0 -152
- package/src/musicians/message.ts +0 -99
- package/src/musicians/query.ts +0 -19
- package/src/musicians/spawn.ts +0 -139
- package/src/notes.ts +0 -39
- package/src/notify.ts +0 -62
- package/src/orchestrator/report-back.ts +0 -33
- package/src/permission.ts +0 -30
- package/src/project-key.ts +0 -12
- package/src/prompts/musician-role.ts +0 -22
- package/src/prompts/orchestrator-role.ts +0 -60
- package/src/prompts/tool-discipline.ts +0 -35
- package/src/repo.ts +0 -14
- package/src/shell-quote.ts +0 -7
- package/src/state-updaters.ts +0 -132
- package/src/state.ts +0 -49
- package/src/state.types.ts +0 -67
- package/src/tmux.ts +0 -226
- package/src/tui/App.tsx +0 -532
- package/src/tui/AppView.tsx +0 -96
- package/src/tui/Auditorium.tsx +0 -56
- package/src/tui/ConcertHall.tsx +0 -31
- package/src/tui/Help.tsx +0 -72
- package/src/tui/OrchestratorPane.tsx +0 -98
- package/src/tui/SidebarHeader.tsx +0 -32
- package/src/tui/StatusBar.tsx +0 -44
- package/src/tui/activity-line.ts +0 -16
- package/src/tui/detect-permission.ts +0 -93
- package/src/tui/embedded-session-lifecycle.ts +0 -44
- package/src/tui/embedded-terminal.ts +0 -325
- package/src/tui/format-time.ts +0 -25
- package/src/tui/keymap.ts +0 -104
- package/src/tui/poll-activity.ts +0 -25
- package/src/tui/poll-idle.ts +0 -149
- package/src/tui/poll-permission.ts +0 -50
- package/src/tui/status-icon.ts +0 -35
- package/src/tui/terminal-input.ts +0 -136
- package/src/tui/watch-state.ts +0 -43
- package/src/worktree.ts +0 -41
- package/tests/claude-command.test.ts +0 -30
- package/tests/claude-detect.test.ts +0 -14
- package/tests/commands/attach.test.ts +0 -60
- package/tests/commands/kill.test.ts +0 -66
- package/tests/commands/launch.test.ts +0 -75
- package/tests/commands/list.test.ts +0 -47
- package/tests/commands/notes.test.ts +0 -53
- package/tests/commands/restore.test.ts +0 -126
- package/tests/helpers/tmp-config.ts +0 -16
- package/tests/helpers/tmp-repo.ts +0 -29
- package/tests/integration/orchestrator-spawn.test.ts +0 -108
- package/tests/mcp/handlers.test.ts +0 -163
- package/tests/mcp/tool-defs.test.ts +0 -35
- package/tests/musicians/dismiss.test.ts +0 -102
- package/tests/musicians/message.test.ts +0 -159
- package/tests/musicians/query.test.ts +0 -65
- package/tests/musicians/spawn.test.ts +0 -125
- package/tests/notes.test.ts +0 -56
- package/tests/notify.test.ts +0 -80
- package/tests/orchestrator/report-back.test.ts +0 -18
- package/tests/permission.test.ts +0 -29
- package/tests/project-key.test.ts +0 -33
- package/tests/prompts/tool-discipline.test.ts +0 -25
- package/tests/repo.test.ts +0 -38
- package/tests/state-updaters.test.ts +0 -126
- package/tests/state.test.ts +0 -85
- package/tests/tmux.test.ts +0 -126
- package/tests/tui/AppView.test.tsx +0 -92
- package/tests/tui/Auditorium.test.tsx +0 -67
- package/tests/tui/ConcertHall.test.tsx +0 -22
- package/tests/tui/Help.test.tsx +0 -38
- package/tests/tui/OrchestratorPane.test.ts +0 -30
- package/tests/tui/SidebarHeader.test.tsx +0 -20
- package/tests/tui/StatusBar.test.tsx +0 -51
- package/tests/tui/activity-line.test.ts +0 -21
- package/tests/tui/detect-permission.test.ts +0 -92
- package/tests/tui/embedded-session-lifecycle.test.ts +0 -55
- package/tests/tui/embedded-terminal.test.ts +0 -80
- package/tests/tui/format-time.test.ts +0 -25
- package/tests/tui/keymap.test.ts +0 -93
- package/tests/tui/poll-activity.test.ts +0 -81
- package/tests/tui/poll-idle.test.ts +0 -159
- package/tests/tui/poll-permission.test.ts +0 -222
- package/tests/tui/status-icon.test.ts +0 -27
- package/tests/tui/terminal-input.test.ts +0 -113
- package/tests/tui/watch-state.test.ts +0 -54
- package/tests/worktree.test.ts +0 -73
- package/tsconfig.json +0 -19
- package/vitest.config.ts +0 -12
- /package/dist/tui/{ConcertHall.js → components/ConcertHall.js} +0 -0
- /package/dist/tui/{OrchestratorPane.js → components/OrchestratorPane.js} +0 -0
package/dist/claude-command.js
CHANGED
|
@@ -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;
|
|
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
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command } from
|
|
3
|
-
import { decideAction, createOrchestra } from
|
|
4
|
-
import { attachOrRestore } from
|
|
5
|
-
import { listOrchestras, formatOrchestraList } from
|
|
6
|
-
import { isPermissionLevel,
|
|
7
|
-
import { detectClaude } from
|
|
8
|
-
import { createInterface } from
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { decideAction, createOrchestra } from "./commands/launch.js";
|
|
4
|
+
import { attachOrRestore } from "./commands/attach.js";
|
|
5
|
+
import { listOrchestras, formatOrchestraList, } from "./commands/list.js";
|
|
6
|
+
import { isPermissionLevel, DANGEROUSLY_SKIP_PERMISSIONS_CONFIRM_PHRASE, DANGEROUSLY_SKIP_PERMISSIONS_WARNING, } from "./permission.js";
|
|
7
|
+
import { detectClaude } from "./claude-detect.js";
|
|
8
|
+
import { createInterface } from "node:readline/promises";
|
|
9
|
+
import packageJson from "../package.json" with { type: "json" };
|
|
9
10
|
const program = new Command();
|
|
10
11
|
program
|
|
11
|
-
.name(
|
|
12
|
-
.description(
|
|
13
|
-
.version(
|
|
12
|
+
.name("nfo")
|
|
13
|
+
.description("NoFluffOrchestra — TUI multi-agent orchestrator")
|
|
14
|
+
.version(packageJson.version);
|
|
14
15
|
program
|
|
15
|
-
.argument(
|
|
16
|
-
.option(
|
|
16
|
+
.argument("[id]", "Orchestra id to attach (optional)")
|
|
17
|
+
.option("--notify-on-permission", "bell + desktop notify when a musician awaits permission")
|
|
17
18
|
.action(async (id, opts) => {
|
|
18
19
|
await detectClaude();
|
|
19
20
|
try {
|
|
@@ -23,7 +24,7 @@ program
|
|
|
23
24
|
}
|
|
24
25
|
const decision = await decideAction(process.cwd());
|
|
25
26
|
switch (decision.kind) {
|
|
26
|
-
case
|
|
27
|
+
case "create": {
|
|
27
28
|
const level = await promptPermissionLevel();
|
|
28
29
|
await createOrchestra({
|
|
29
30
|
repoRoot: decision.repoRoot,
|
|
@@ -33,15 +34,15 @@ program
|
|
|
33
34
|
});
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
|
-
case
|
|
37
|
+
case "attach_existing":
|
|
37
38
|
await attachOrRestore(decision.orchestraId);
|
|
38
39
|
return;
|
|
39
|
-
case
|
|
40
|
+
case "pick": {
|
|
40
41
|
const picked = await promptOrchestraPicker(decision.summaries);
|
|
41
42
|
await attachOrRestore(picked);
|
|
42
43
|
return;
|
|
43
44
|
}
|
|
44
|
-
case
|
|
45
|
+
case "error":
|
|
45
46
|
console.error(decision.message);
|
|
46
47
|
process.exit(1);
|
|
47
48
|
}
|
|
@@ -52,77 +53,86 @@ program
|
|
|
52
53
|
}
|
|
53
54
|
});
|
|
54
55
|
program
|
|
55
|
-
.command(
|
|
56
|
-
.description(
|
|
56
|
+
.command("list")
|
|
57
|
+
.description("List all known orchestras")
|
|
57
58
|
.action(async () => {
|
|
58
59
|
const summaries = await listOrchestras();
|
|
59
60
|
console.log(formatOrchestraList(summaries));
|
|
60
61
|
});
|
|
61
62
|
program
|
|
62
|
-
.command(
|
|
63
|
-
.description(
|
|
64
|
-
.option(
|
|
63
|
+
.command("restore <id>")
|
|
64
|
+
.description("Force-restore a stopped orchestra")
|
|
65
|
+
.option("--notify-on-permission", "bell + desktop notify when a musician awaits permission")
|
|
65
66
|
.action(async (id, opts) => {
|
|
66
|
-
const { restoreOrchestra } = await import(
|
|
67
|
+
const { restoreOrchestra } = await import("./commands/restore.js");
|
|
67
68
|
await restoreOrchestra(id, undefined, opts.notifyOnPermission);
|
|
68
69
|
});
|
|
69
70
|
program
|
|
70
|
-
.command(
|
|
71
|
-
.description(
|
|
72
|
-
.option(
|
|
71
|
+
.command("kill <id>")
|
|
72
|
+
.description("Tear down an orchestra (state archived, notes preserved)")
|
|
73
|
+
.option("-y, --yes", "Skip confirmation prompt")
|
|
73
74
|
.action(async (id, opts) => {
|
|
74
|
-
const { killOrchestra } = await import(
|
|
75
|
+
const { killOrchestra } = await import("./commands/kill.js");
|
|
75
76
|
await killOrchestra(id, opts);
|
|
76
77
|
});
|
|
77
78
|
program
|
|
78
|
-
.command(
|
|
79
|
-
.description(
|
|
79
|
+
.command("notes <id>")
|
|
80
|
+
.description("Open the orchestra's notes/ directory in $EDITOR")
|
|
80
81
|
.action(async (id) => {
|
|
81
|
-
const { openNotes } = await import(
|
|
82
|
+
const { openNotes } = await import("./commands/notes.js");
|
|
82
83
|
await openNotes(id);
|
|
83
84
|
});
|
|
84
85
|
program
|
|
85
|
-
.command(
|
|
86
|
-
.description(
|
|
87
|
-
.requiredOption(
|
|
88
|
-
.option(
|
|
86
|
+
.command("mcp-server", { hidden: true })
|
|
87
|
+
.description("(internal) Run the NFO MCP server attached to an orchestra")
|
|
88
|
+
.requiredOption("--orchestra-id <id>", "Orchestra id")
|
|
89
|
+
.option("--caller-musician-id <id>", "When the server is hosting a Musician")
|
|
89
90
|
.action(async (opts) => {
|
|
90
|
-
const { runMcpServerCli } = await import(
|
|
91
|
+
const { runMcpServerCli } = await import("./commands/mcp-server.js");
|
|
91
92
|
await runMcpServerCli({
|
|
92
93
|
orchestraId: opts.orchestraId,
|
|
93
94
|
callerMusicianId: opts.callerMusicianId,
|
|
94
95
|
});
|
|
95
96
|
});
|
|
96
97
|
program
|
|
97
|
-
.command(
|
|
98
|
-
.description(
|
|
99
|
-
.requiredOption(
|
|
98
|
+
.command("tui", { hidden: true })
|
|
99
|
+
.description("(internal) Run the NFO Ink TUI for an orchestra")
|
|
100
|
+
.requiredOption("--orchestra-id <id>", "Orchestra id")
|
|
100
101
|
.action(async (opts) => {
|
|
101
|
-
const { runTui } = await import(
|
|
102
|
-
await runTui({
|
|
102
|
+
const { runTui } = await import("./commands/tui.js");
|
|
103
|
+
await runTui({
|
|
104
|
+
orchestraId: opts.orchestraId,
|
|
105
|
+
version: packageJson.version,
|
|
106
|
+
});
|
|
103
107
|
});
|
|
104
108
|
program.parseAsync(process.argv);
|
|
105
109
|
async function promptPermissionLevel() {
|
|
106
110
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
107
111
|
try {
|
|
108
112
|
const ans = (await rl.question(`Permission level for this orchestra:
|
|
109
|
-
1)
|
|
110
|
-
2)
|
|
111
|
-
3)
|
|
112
|
-
4)
|
|
113
|
-
|
|
113
|
+
1) Dangerously skip permissions — RISKY: bypasses all permission checks
|
|
114
|
+
2) auto — Claude auto mode (prompts only on risky actions)
|
|
115
|
+
3) edits — auto-accept edits, prompt on shell/tools
|
|
116
|
+
4) supervised — claude's default prompt-on-risky behavior
|
|
117
|
+
5) strict — read-only / plan mode
|
|
118
|
+
Choose [1-5] (default 4): `)).trim();
|
|
114
119
|
const map = {
|
|
115
|
-
|
|
120
|
+
"1": "dangerouslySkipPermissions",
|
|
121
|
+
"2": "auto",
|
|
122
|
+
"3": "acceptEdits",
|
|
123
|
+
"4": "supervised",
|
|
124
|
+
"5": "strict",
|
|
125
|
+
"": "supervised",
|
|
116
126
|
};
|
|
117
127
|
const level = map[ans];
|
|
118
128
|
if (!level || !isPermissionLevel(level)) {
|
|
119
129
|
throw new Error(`Invalid choice: ${ans}`);
|
|
120
130
|
}
|
|
121
|
-
if (level ===
|
|
122
|
-
console.log(
|
|
123
|
-
const confirm = (await rl.question(
|
|
124
|
-
if (confirm !==
|
|
125
|
-
throw new Error(
|
|
131
|
+
if (level === "dangerouslySkipPermissions") {
|
|
132
|
+
console.log("\n" + DANGEROUSLY_SKIP_PERMISSIONS_WARNING + "\n");
|
|
133
|
+
const confirm = (await rl.question("> ")).trim();
|
|
134
|
+
if (confirm !== DANGEROUSLY_SKIP_PERMISSIONS_CONFIRM_PHRASE) {
|
|
135
|
+
throw new Error("Auto mode not confirmed. Aborting.");
|
|
126
136
|
}
|
|
127
137
|
}
|
|
128
138
|
return level;
|
|
@@ -134,14 +144,14 @@ Choose [1-4] (default 3): `)).trim();
|
|
|
134
144
|
async function promptOrchestraPicker(summaries) {
|
|
135
145
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
136
146
|
try {
|
|
137
|
-
console.log(
|
|
147
|
+
console.log("Multiple orchestras found:");
|
|
138
148
|
summaries.forEach((s, i) => {
|
|
139
|
-
console.log(` ${i + 1}) ${s.running ?
|
|
149
|
+
console.log(` ${i + 1}) ${s.running ? "●" : "○"} ${s.id} (${s.project_path})`);
|
|
140
150
|
});
|
|
141
|
-
const choice = (await rl.question(
|
|
151
|
+
const choice = (await rl.question("Pick one [1-N]: ")).trim();
|
|
142
152
|
const idx = Number(choice) - 1;
|
|
143
153
|
if (Number.isNaN(idx) || idx < 0 || idx >= summaries.length) {
|
|
144
|
-
throw new Error(
|
|
154
|
+
throw new Error("Invalid choice");
|
|
145
155
|
}
|
|
146
156
|
return summaries[idx].id;
|
|
147
157
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/restore.js
CHANGED
|
@@ -46,7 +46,6 @@ export async function restoreOrchestra(orchestraId, dryRun, notifyOnPermission)
|
|
|
46
46
|
}
|
|
47
47
|
return { action: "attached", orchestraId };
|
|
48
48
|
}
|
|
49
|
-
// Spec §4.3: recreate the tmux session, --resume the Orchestrator.
|
|
50
49
|
await createDetachedSession(name, state.project_path);
|
|
51
50
|
await ensureNfoSessionUi(name);
|
|
52
51
|
await ensureDashboardWindow(name, state.project_path, orchestraId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,OAAO,GAAG,IAAI;SACjB,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,MAAgB,EAChB,kBAA4B;IAE5B,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,oBAAoB,GAAG,kBAAkB,CAAC;QAChD,MAAM,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;YAChD,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;IAC7C,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/tui.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render } from
|
|
3
|
-
import { App } from
|
|
4
|
-
import { readState } from
|
|
2
|
+
import { render } from "ink";
|
|
3
|
+
import { App } from "../tui/components/App.js";
|
|
4
|
+
import { readState } from "../state.js";
|
|
5
5
|
export async function runTui(opts) {
|
|
6
6
|
const state = await readState(opts.orchestraId);
|
|
7
7
|
if (!state) {
|
|
8
8
|
throw new Error(`Unknown orchestra: ${opts.orchestraId}`);
|
|
9
9
|
}
|
|
10
|
-
const instance = render(_jsx(App, { orchestraId: opts.orchestraId
|
|
10
|
+
const instance = render(_jsx(App, { orchestraId: opts.orchestraId, version: opts.version }), {
|
|
11
|
+
exitOnCtrlC: false,
|
|
12
|
+
});
|
|
11
13
|
await instance.waitUntilExit();
|
|
12
14
|
}
|
|
13
15
|
//# sourceMappingURL=tui.js.map
|
package/dist/commands/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/commands/tui.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/commands/tui.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAmB;IAC9C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CACrB,KAAC,GAAG,IAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,EAC7D;QACE,WAAW,EAAE,KAAK;KACnB,CACF,CAAC;IACF,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;AACjC,CAAC"}
|
package/dist/mcp/handlers.js
CHANGED
|
@@ -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
|
}
|
package/dist/mcp/handlers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,2BAA2B,EAC3B,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAOhF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,WAAmB,EACnB,QAAgB,EAChB,IAA6B,EAC7B,OAAwB,EAAE;IAE1B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC;gBAC7B,WAAW;gBACX,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvB,QAAQ,EACN,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBAChE,UAAU,EACR,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBACrE,KAAK,EACH,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;oBAC5B,CAAC,CAAE,IAAI,CAAC,KAA4B;oBACpC,CAAC,CAAC,QAAQ;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tool-defs.js
CHANGED
|
@@ -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
|
|
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":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS9D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA4B;IAChE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS;QAChD,CAAC,CAAC,IAAI,CAAC,OAAO;QACd,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAElF,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,KAAK,
|
|
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"}
|
package/dist/musicians/spawn.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/musicians/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAoB1D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAA2B;IAE3B,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC;IAE5C,IAAI,UAAkB,CAAC;IACvB,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,WAAW,EAAE,CAAC;QAChB,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;QAChE,MAAM,GAAG,OAAO,UAAU,EAAE,CAAC;QAC7B,MAAM,WAAW,CAAC;YAChB,QAAQ,EAAE,KAAK,CAAC,YAAY;YAC5B,IAAI,EAAE,YAAY;YAClB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,UAAU;SACzB,CAAC,CAAC;QACH,UAAU,GAAG,YAAY,CAAC;QAC1B,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,4EAA4E;YAC5E,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,+EAA+E;gBAC/E,IAAI,CAAC;oBACH,MAAM,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1F,CAAC;gBAAC,MAAM,CAAC;oBACP,yDAAyD;gBAC3D,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,YAAY,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CACrB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAC9B,YAAY,UAAU,YAAY,CACnC,CAAC;IACF,MAAM,SAAS,CAAC,UAAU,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAEhE,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,aAAa,GAAG,MAAM,sBAAsB,CAChD,IAAI,CAAC,WAAW,EAChB,UAAU,CACX,CAAC;QACF,MAAM,KAAK,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9F,MAAM,GAAG,GAAG,kBAAkB,CAAC;YAC7B,KAAK;YACL,aAAa;YACb,UAAU;YACV,MAAM,EAAE,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACrC,YAAY;YACZ,IAAI;YACJ,OAAO;YACP,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,UAAU;YACV,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,cAAc;YACd,GAAG;SACJ,CAAC,CAAC;QACH,YAAY,GAAG,MAAM,CAAC;QACtB,MAAM,aAAa,CACjB,GAAG,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,EACnC,gBAAgB,EAChB,IAAI,CACL,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACrC,YAAY;YACZ,IAAI;YACJ,OAAO;YACP,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,UAAU;YACV,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,cAAc;SACf,CAAC,CAAC;QACH,YAAY,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE;QAClC,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QACrC,MAAM,EAAE,SAAS;QACjB,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,YAAY,CAAC,IAAI,EAAE;QACnC,iBAAiB,EAAE,IAAI;QACvB,aAAa,EAAE,YAAY;QAC3B,MAAM;QACN,UAAU,EAAE,GAAG;QACf,aAAa,EAAE,GAAG;QAClB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,YAAY;QAC3B,MAAM;QACN,cAAc,EAAE,YAAY,CAAC,IAAI,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,CACL,IAAI;SACD,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,UAAU,CAC9B,CAAC;AACJ,CAAC"}
|