@proletariat/cli 0.3.55 → 0.3.56

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 (233) hide show
  1. package/README.md +5 -4
  2. package/dist/commands/agent/cleanup.d.ts +1 -0
  3. package/dist/commands/agent/cleanup.js +11 -1
  4. package/dist/commands/agent/cleanup.js.map +1 -1
  5. package/dist/commands/agent/rebuild.js +1 -1
  6. package/dist/commands/agent/rebuild.js.map +1 -1
  7. package/dist/commands/asana/import.d.ts +14 -0
  8. package/dist/commands/asana/import.js +240 -0
  9. package/dist/commands/asana/import.js.map +1 -0
  10. package/dist/commands/claude-yolo.d.ts +20 -0
  11. package/dist/commands/claude-yolo.js +86 -0
  12. package/dist/commands/claude-yolo.js.map +1 -0
  13. package/dist/commands/codex/index.d.ts +23 -0
  14. package/dist/commands/codex/index.js +168 -0
  15. package/dist/commands/codex/index.js.map +1 -0
  16. package/dist/commands/codex-yolo.d.ts +20 -0
  17. package/dist/commands/codex-yolo.js +86 -0
  18. package/dist/commands/codex-yolo.js.map +1 -0
  19. package/dist/commands/config/index.js +2 -2
  20. package/dist/commands/config/index.js.map +1 -1
  21. package/dist/commands/docker/clean.js +1 -1
  22. package/dist/commands/docker/clean.js.map +1 -1
  23. package/dist/commands/docker/list.js +1 -1
  24. package/dist/commands/docker/list.js.map +1 -1
  25. package/dist/commands/docker/logs.js +1 -1
  26. package/dist/commands/docker/logs.js.map +1 -1
  27. package/dist/commands/docker/restart.js +1 -1
  28. package/dist/commands/docker/restart.js.map +1 -1
  29. package/dist/commands/docker/shell.js +1 -1
  30. package/dist/commands/docker/shell.js.map +1 -1
  31. package/dist/commands/docker/start.js +1 -1
  32. package/dist/commands/docker/start.js.map +1 -1
  33. package/dist/commands/docker/stop.js +1 -1
  34. package/dist/commands/docker/stop.js.map +1 -1
  35. package/dist/commands/docker/sync.js +1 -1
  36. package/dist/commands/docker/sync.js.map +1 -1
  37. package/dist/commands/execution/config.js +2 -2
  38. package/dist/commands/execution/config.js.map +1 -1
  39. package/dist/commands/execution/list.js +1 -1
  40. package/dist/commands/execution/list.js.map +1 -1
  41. package/dist/commands/execution/logs.js +10 -8
  42. package/dist/commands/execution/logs.js.map +1 -1
  43. package/dist/commands/execution/stop.js +1 -1
  44. package/dist/commands/execution/stop.js.map +1 -1
  45. package/dist/commands/execution/view.js +1 -1
  46. package/dist/commands/execution/view.js.map +1 -1
  47. package/dist/commands/init.d.ts +0 -16
  48. package/dist/commands/init.js +50 -160
  49. package/dist/commands/init.js.map +1 -1
  50. package/dist/commands/logs.d.ts +20 -0
  51. package/dist/commands/logs.js +84 -0
  52. package/dist/commands/logs.js.map +1 -0
  53. package/dist/commands/mcp-server.js +1 -1
  54. package/dist/commands/mcp-server.js.map +1 -1
  55. package/dist/commands/new.d.ts +27 -0
  56. package/dist/commands/new.js +184 -0
  57. package/dist/commands/new.js.map +1 -0
  58. package/dist/commands/orchestrator/attach.d.ts +1 -0
  59. package/dist/commands/orchestrator/attach.js +159 -26
  60. package/dist/commands/orchestrator/attach.js.map +1 -1
  61. package/dist/commands/orchestrator/start.d.ts +20 -0
  62. package/dist/commands/orchestrator/start.js +122 -14
  63. package/dist/commands/orchestrator/start.js.map +1 -1
  64. package/dist/commands/orchestrator/status.d.ts +4 -0
  65. package/dist/commands/orchestrator/status.js +70 -29
  66. package/dist/commands/orchestrator/status.js.map +1 -1
  67. package/dist/commands/orchestrator/stop.js +57 -23
  68. package/dist/commands/orchestrator/stop.js.map +1 -1
  69. package/dist/commands/peek.d.ts +20 -0
  70. package/dist/commands/peek.js +84 -0
  71. package/dist/commands/peek.js.map +1 -0
  72. package/dist/commands/poke.d.ts +20 -0
  73. package/dist/commands/poke.js +89 -0
  74. package/dist/commands/poke.js.map +1 -0
  75. package/dist/commands/pr/link.js +1 -1
  76. package/dist/commands/pr/link.js.map +1 -1
  77. package/dist/commands/pr/status.js +1 -1
  78. package/dist/commands/pr/status.js.map +1 -1
  79. package/dist/commands/ps.d.ts +18 -0
  80. package/dist/commands/ps.js +123 -0
  81. package/dist/commands/ps.js.map +1 -0
  82. package/dist/commands/qa/index.js +1 -1
  83. package/dist/commands/qa/index.js.map +1 -1
  84. package/dist/commands/repo/add.js +1 -1
  85. package/dist/commands/repo/add.js.map +1 -1
  86. package/dist/commands/repo/list.js +1 -1
  87. package/dist/commands/repo/list.js.map +1 -1
  88. package/dist/commands/repo/remove.js +1 -1
  89. package/dist/commands/repo/remove.js.map +1 -1
  90. package/dist/commands/repo/view.js +1 -1
  91. package/dist/commands/repo/view.js.map +1 -1
  92. package/dist/commands/run/index.d.ts +25 -0
  93. package/dist/commands/run/index.js +212 -0
  94. package/dist/commands/run/index.js.map +1 -0
  95. package/dist/commands/session/index.js +4 -0
  96. package/dist/commands/session/index.js.map +1 -1
  97. package/dist/commands/session/prune.d.ts +18 -0
  98. package/dist/commands/session/prune.js +327 -0
  99. package/dist/commands/session/prune.js.map +1 -0
  100. package/dist/commands/shortcut/connect.d.ts +15 -0
  101. package/dist/commands/shortcut/connect.js +210 -0
  102. package/dist/commands/shortcut/connect.js.map +1 -0
  103. package/dist/commands/stop.d.ts +19 -0
  104. package/dist/commands/stop.js +83 -0
  105. package/dist/commands/stop.js.map +1 -0
  106. package/dist/commands/work/asana.d.ts +23 -0
  107. package/dist/commands/work/asana.js +213 -0
  108. package/dist/commands/work/asana.js.map +1 -0
  109. package/dist/commands/work/complete.js +1 -1
  110. package/dist/commands/work/complete.js.map +1 -1
  111. package/dist/commands/work/ready.js +1 -1
  112. package/dist/commands/work/ready.js.map +1 -1
  113. package/dist/commands/work/review.js +1 -1
  114. package/dist/commands/work/review.js.map +1 -1
  115. package/dist/commands/work/revise.js +1 -1
  116. package/dist/commands/work/revise.js.map +1 -1
  117. package/dist/commands/work/shortcut.d.ts +23 -0
  118. package/dist/commands/work/shortcut.js +212 -0
  119. package/dist/commands/work/shortcut.js.map +1 -0
  120. package/dist/commands/work/spawn.d.ts +3 -0
  121. package/dist/commands/work/spawn.js +175 -2
  122. package/dist/commands/work/spawn.js.map +1 -1
  123. package/dist/commands/work/start.js +22 -30
  124. package/dist/commands/work/start.js.map +1 -1
  125. package/dist/commands/work/watch.js +1 -1
  126. package/dist/commands/work/watch.js.map +1 -1
  127. package/dist/commands/workspace/add.js +1 -1
  128. package/dist/commands/workspace/add.js.map +1 -1
  129. package/dist/commands/workspace/list.js +1 -1
  130. package/dist/commands/workspace/list.js.map +1 -1
  131. package/dist/hooks/init.d.ts +1 -1
  132. package/dist/hooks/init.js +6 -6
  133. package/dist/hooks/init.js.map +1 -1
  134. package/dist/lib/agent-naming.d.ts +15 -0
  135. package/dist/lib/agent-naming.js +32 -0
  136. package/dist/lib/agent-naming.js.map +1 -0
  137. package/dist/lib/agents/commands.d.ts +2 -0
  138. package/dist/lib/agents/commands.js +51 -44
  139. package/dist/lib/agents/commands.js.map +1 -1
  140. package/dist/lib/agents/index.js +5 -0
  141. package/dist/lib/agents/index.js.map +1 -1
  142. package/dist/lib/asana/client.d.ts +8 -0
  143. package/dist/lib/asana/client.js +26 -7
  144. package/dist/lib/asana/client.js.map +1 -1
  145. package/dist/lib/asana/types.d.ts +20 -0
  146. package/dist/lib/branch/index.d.ts +36 -0
  147. package/dist/lib/branch/index.js +129 -0
  148. package/dist/lib/branch/index.js.map +1 -1
  149. package/dist/lib/database/index.js +1 -1
  150. package/dist/lib/database/index.js.map +1 -1
  151. package/dist/lib/events/emitting-runner.d.ts +30 -0
  152. package/dist/lib/events/emitting-runner.js +95 -0
  153. package/dist/lib/events/emitting-runner.js.map +1 -0
  154. package/dist/lib/events/event-bus.d.ts +54 -0
  155. package/dist/lib/events/event-bus.js +107 -0
  156. package/dist/lib/events/event-bus.js.map +1 -0
  157. package/dist/lib/events/events.d.ts +67 -0
  158. package/dist/lib/events/events.js +8 -0
  159. package/dist/lib/events/events.js.map +1 -0
  160. package/dist/lib/events/index.d.ts +7 -0
  161. package/dist/lib/events/index.js +6 -0
  162. package/dist/lib/events/index.js.map +1 -0
  163. package/dist/lib/execution/devcontainer.d.ts +27 -0
  164. package/dist/lib/execution/devcontainer.js +80 -0
  165. package/dist/lib/execution/devcontainer.js.map +1 -1
  166. package/dist/lib/execution/runners.d.ts +28 -0
  167. package/dist/lib/execution/runners.js +459 -31
  168. package/dist/lib/execution/runners.js.map +1 -1
  169. package/dist/lib/execution/spawner.js +35 -17
  170. package/dist/lib/execution/spawner.js.map +1 -1
  171. package/dist/lib/execution/types.d.ts +1 -0
  172. package/dist/lib/execution/types.js.map +1 -1
  173. package/dist/lib/external-issues/adapters.d.ts +34 -0
  174. package/dist/lib/external-issues/adapters.js +191 -0
  175. package/dist/lib/external-issues/adapters.js.map +1 -1
  176. package/dist/lib/external-issues/asana.d.ts +75 -0
  177. package/dist/lib/external-issues/asana.js +243 -0
  178. package/dist/lib/external-issues/asana.js.map +1 -0
  179. package/dist/lib/external-issues/index.d.ts +4 -2
  180. package/dist/lib/external-issues/index.js +6 -2
  181. package/dist/lib/external-issues/index.js.map +1 -1
  182. package/dist/lib/external-issues/linear.js.map +1 -1
  183. package/dist/lib/external-issues/mapping-store.js +1 -1
  184. package/dist/lib/external-issues/shortcut.d.ts +86 -0
  185. package/dist/lib/external-issues/shortcut.js +274 -0
  186. package/dist/lib/external-issues/shortcut.js.map +1 -0
  187. package/dist/lib/external-issues/types.d.ts +3 -3
  188. package/dist/lib/external-issues/types.js +1 -1
  189. package/dist/lib/external-issues/types.js.map +1 -1
  190. package/dist/lib/mcp/tools/cli-passthrough.js +1 -1
  191. package/dist/lib/mcp/tools/cli-passthrough.js.map +1 -1
  192. package/dist/lib/mcp/tools/work.js +1 -1
  193. package/dist/lib/mcp/tools/work.js.map +1 -1
  194. package/dist/lib/pmo/index.d.ts +2 -2
  195. package/dist/lib/pmo/index.js +3 -3
  196. package/dist/lib/pmo/index.js.map +1 -1
  197. package/dist/lib/pmo/sync-manager.js +1 -1
  198. package/dist/lib/pmo/sync-manager.js.map +1 -1
  199. package/dist/lib/pmo/watcher.js +1 -1
  200. package/dist/lib/pmo/watcher.js.map +1 -1
  201. package/dist/lib/repos/index.js +1 -1
  202. package/dist/lib/repos/index.js.map +1 -1
  203. package/dist/lib/runners/agent-runner.d.ts +92 -0
  204. package/dist/lib/runners/agent-runner.js +9 -0
  205. package/dist/lib/runners/agent-runner.js.map +1 -0
  206. package/dist/lib/runners/claude-code-runner.d.ts +53 -0
  207. package/dist/lib/runners/claude-code-runner.js +132 -0
  208. package/dist/lib/runners/claude-code-runner.js.map +1 -0
  209. package/dist/lib/runners/index.d.ts +34 -0
  210. package/dist/lib/runners/index.js +97 -0
  211. package/dist/lib/runners/index.js.map +1 -0
  212. package/dist/lib/session-store.d.ts +70 -0
  213. package/dist/lib/session-store.js +167 -0
  214. package/dist/lib/session-store.js.map +1 -0
  215. package/dist/lib/shortcut/config.d.ts +44 -0
  216. package/dist/lib/shortcut/config.js +98 -0
  217. package/dist/lib/shortcut/config.js.map +1 -0
  218. package/dist/lib/shortcut/index.d.ts +7 -0
  219. package/dist/lib/shortcut/index.js +7 -0
  220. package/dist/lib/shortcut/index.js.map +1 -0
  221. package/dist/lib/work-source/client.d.ts +10 -0
  222. package/dist/lib/work-source/client.js +74 -0
  223. package/dist/lib/work-source/client.js.map +1 -0
  224. package/dist/lib/work-source/config.d.ts +1 -1
  225. package/dist/lib/work-source/config.js +17 -1
  226. package/dist/lib/work-source/config.js.map +1 -1
  227. package/dist/lib/work-source/index.d.ts +1 -0
  228. package/dist/lib/work-source/index.js +1 -0
  229. package/dist/lib/work-source/index.js.map +1 -1
  230. package/dist/lib/workspace.js +2 -2
  231. package/dist/lib/workspace.js.map +1 -1
  232. package/oclif.manifest.json +4291 -3248
  233. package/package.json +1 -1
@@ -1,183 +1,73 @@
1
- import { Command, Flags } from '@oclif/core';
1
+ import { Command } from '@oclif/core';
2
2
  import chalk from 'chalk';
3
- import * as path from 'node:path';
4
3
  import * as fs from 'node:fs';
5
- import { promptForHQName, promptForHQLocation, initializeHQ, showNextSteps, validateHQLocation, isHQNameTaken, } from '../lib/init/index.js';
6
- import { promptForAgentsWithTheme } from '../lib/agents/index.js';
7
- import { promptForRepositories } from '../lib/repos/index.js';
8
- import { promptForPMOSetup, machineOutputFlags } from '../lib/pmo/index.js';
9
- import { shouldOutputJson, outputPromptAsJson, buildPromptConfig, createMetadata, } from '../lib/prompt-json.js';
4
+ import { ensureMachineConfigDir, getMachineConfigDir, getMachineConfigPath, readMachineConfig, writeMachineConfig, } from '../lib/machine-config.js';
5
+ import { isValidHQ } from '../lib/workspace.js';
6
+ import { machineOutputFlags } from '../lib/pmo/index.js';
7
+ import { shouldOutputJson } from '../lib/prompt-json.js';
10
8
  export default class Init extends Command {
11
- static description = 'Initialize an HQ (headquarters) for managing repositories, agents, and projects';
9
+ static description = 'Initialize machine-level Proletariat configuration (~/.proletariat)';
12
10
  static examples = [
13
- // Human mode (interactive)
14
11
  '<%= config.bin %> <%= command.id %>',
15
- // Agent mode (JSON)
16
- '<%= config.bin %> <%= command.id %> --json --name myproject',
17
- '<%= config.bin %> <%= command.id %> --json --name myproject --path /path/to/hq --agents agent1,agent2 --pmo',
12
+ '<%= config.bin %> <%= command.id %> --json',
18
13
  ];
19
14
  static flags = {
20
15
  ...machineOutputFlags,
21
- name: Flags.string({
22
- description: 'HQ name',
23
- char: 'n',
24
- }),
25
- path: Flags.string({
26
- description: 'HQ path (defaults to ./{name}-hq)',
27
- char: 'p',
28
- }),
29
- agents: Flags.string({
30
- description: 'Comma-separated list of agent names',
31
- char: 'a',
32
- }),
33
- repos: Flags.string({
34
- description: 'Comma-separated list of repository paths to clone/move',
35
- char: 'r',
36
- }),
37
- pmo: Flags.boolean({
38
- description: 'Include PMO (Project Management Org)',
39
- default: true,
40
- allowNo: true,
41
- }),
42
16
  };
43
17
  async run() {
44
18
  const { flags } = await this.parse(Init);
45
- if (shouldOutputJson(flags)) {
46
- await this.runAgentMode(flags);
19
+ const jsonMode = shouldOutputJson(flags);
20
+ // Step 1: Ensure machine config directory exists
21
+ ensureMachineConfigDir();
22
+ // Step 2: Ensure machine config file exists with valid structure
23
+ const configPath = getMachineConfigPath();
24
+ const config = readMachineConfig();
25
+ const configExists = fs.existsSync(configPath);
26
+ if (!configExists) {
27
+ // Write fresh config if none exists
28
+ writeMachineConfig(config);
47
29
  }
48
- else {
49
- await this.runHumanMode();
50
- }
51
- }
52
- /**
53
- * Human mode: interactive prompts with colored output
54
- */
55
- async runHumanMode() {
56
- console.log(chalk.blue('🚀 Welcome to Proletariat...\n'));
57
- console.log(chalk.blue('🏢 Setting up your headquarters...\n'));
58
- // Step 1: Get HQ name
59
- const hqName = await promptForHQName();
60
- // Step 2: Determine location (always adds -hq suffix)
61
- const hqPath = await promptForHQLocation(hqName);
62
- // Step 3: Add agents (with theme options)
63
- const agentResult = await promptForAgentsWithTheme();
64
- // Step 4: Add repositories
65
- const repos = await promptForRepositories(process.cwd(), []);
66
- // Step 5: PMO setup (uses shared prompt from lib/pmo)
67
- const pmoSetup = await promptForPMOSetup(hqPath, hqName);
68
- // Create the options object
69
- const options = {
70
- workspaceType: 'hq',
71
- hqName,
72
- hqPath,
73
- selectedAgents: agentResult.agents,
74
- repos,
75
- pmoSetup,
76
- themeId: agentResult.themeId,
77
- customTheme: agentResult.customTheme,
78
- };
79
- // Initialize the HQ
80
- await initializeHQ(options);
81
- // Show next steps
82
- await showNextSteps(options);
83
- }
84
- /**
85
- * Agent mode: use flags, output JSON
86
- */
87
- async runAgentMode(flags) {
88
- // If --name not provided, output a prompt so agents can supply it
89
- if (!flags.name) {
90
- outputPromptAsJson(buildPromptConfig('input', 'name', 'Enter a name for your headquarters:', undefined, undefined), createMetadata('init', flags));
30
+ // Step 3: Prune stale headquarters entries (paths that no longer exist)
31
+ const originalCount = config.headquarters.length;
32
+ config.headquarters = config.headquarters.filter(hq => {
33
+ if (!fs.existsSync(hq.path))
34
+ return false;
35
+ if (!isValidHQ(hq.path))
36
+ return false;
37
+ return true;
38
+ });
39
+ const prunedCount = originalCount - config.headquarters.length;
40
+ // Clear active HQ if it was pruned
41
+ if (config.activeHeadquarters && !config.headquarters.some(hq => hq.path === config.activeHeadquarters)) {
42
+ config.activeHeadquarters = null;
91
43
  }
92
- const hqName = flags.name;
93
- // Check if HQ name is already in use
94
- if (hqName && isHQNameTaken(hqName)) {
95
- this.outputJson({
96
- success: false,
97
- error: `HQ name "${hqName}" is already in use on this machine. Pick another name.`,
98
- });
99
- this.exit(1);
44
+ if (prunedCount > 0) {
45
+ writeMachineConfig(config);
100
46
  }
101
- const hqPath = flags.path || path.resolve(`./${hqName}-hq`);
102
- // Validate HQ path is not inside a git repo
103
- if (!validateHQLocation(hqPath)) {
104
- this.outputJson({
105
- success: false,
106
- error: 'Cannot create HQ inside a git repository',
107
- path: hqPath,
108
- });
109
- this.exit(1);
110
- }
111
- // Check if directory already exists
112
- if (fs.existsSync(hqPath)) {
113
- this.outputJson({
114
- success: false,
115
- error: 'Directory already exists',
116
- path: hqPath,
117
- });
118
- this.exit(1);
119
- }
120
- // Parse agents
121
- const selectedAgents = flags.agents
122
- ? flags.agents.split(',').map(a => a.trim()).filter(Boolean)
123
- : [];
124
- // Parse repos
125
- const repos = flags.repos
126
- ? flags.repos.split(',').map(r => ({
127
- path: r.trim(),
128
- action: 'clone',
129
- })).filter(r => r.path)
130
- : [];
131
- // Create options
132
- const options = {
133
- workspaceType: 'hq',
134
- hqName,
135
- hqPath,
136
- selectedAgents,
137
- repos,
138
- quiet: true, // Suppress console output in JSON mode
139
- pmoSetup: {
140
- includePMO: flags.pmo,
141
- location: 'separate',
142
- boardTemplate: 'default',
143
- boardName: `${hqName}-kanban`,
144
- columns: ['Backlog', 'In Progress', 'Review', 'Done'],
145
- storageType: 'sqlite',
146
- },
147
- };
148
- // Suppress console output in JSON mode
149
- const originalLog = console.log;
150
- console.log = () => { };
151
- try {
152
- // Initialize the HQ
153
- await initializeHQ(options);
154
- // Restore console.log
155
- console.log = originalLog;
156
- // Output success JSON
47
+ // Output results
48
+ if (jsonMode) {
157
49
  this.outputJson({
158
50
  success: true,
159
- hq: {
160
- name: hqName,
161
- path: hqPath,
162
- agents: selectedAgents,
163
- repos: repos.map(r => r.path),
164
- pmo: flags.pmo,
165
- },
51
+ configDir: getMachineConfigDir(),
52
+ configPath,
53
+ headquarters: config.headquarters.length,
54
+ prunedStaleEntries: prunedCount,
55
+ activeHeadquarters: config.activeHeadquarters,
166
56
  });
167
57
  }
168
- catch (error) {
169
- // Restore console.log on error
170
- console.log = originalLog;
171
- this.outputJson({
172
- success: false,
173
- error: error instanceof Error ? error.message : 'Unknown error',
174
- });
175
- this.exit(1);
58
+ else {
59
+ console.log(chalk.green('Machine configuration initialized.'));
60
+ console.log(chalk.gray(` Config: ${configPath}`));
61
+ console.log(chalk.gray(` Registered HQs: ${config.headquarters.length}`));
62
+ if (prunedCount > 0) {
63
+ console.log(chalk.yellow(` Pruned ${prunedCount} stale HQ entries`));
64
+ }
65
+ if (config.headquarters.length === 0) {
66
+ console.log(chalk.blue('\nNo headquarters found. Create one with:'));
67
+ console.log(chalk.yellow(' prlt new'));
68
+ }
176
69
  }
177
70
  }
178
- /**
179
- * Output JSON to stdout
180
- */
181
71
  outputJson(data) {
182
72
  console.log(JSON.stringify(data, null, 2));
183
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * prlt logs <agent> — view full agent logs
3
+ *
4
+ * Captures the full tmux scrollback for an agent session.
5
+ * Works without HQ / PMO.
6
+ */
7
+ import { PromptCommand } from '../lib/prompt-command.js';
8
+ export default class Logs extends PromptCommand {
9
+ static description: string;
10
+ static examples: string[];
11
+ static args: {
12
+ agent: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
13
+ };
14
+ static flags: {
15
+ lines: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
16
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * prlt logs <agent> — view full agent logs
3
+ *
4
+ * Captures the full tmux scrollback for an agent session.
5
+ * Works without HQ / PMO.
6
+ */
7
+ import { Args, Flags } from '@oclif/core';
8
+ import { PromptCommand } from '../lib/prompt-command.js';
9
+ import { machineOutputFlags } from '../lib/pmo/index.js';
10
+ import { shouldOutputJson, outputSuccessAsJson, outputErrorAsJson, createMetadata, } from '../lib/prompt-json.js';
11
+ import { SessionStore } from '../lib/session-store.js';
12
+ import { getRunner } from '../lib/runners/index.js';
13
+ export default class Logs extends PromptCommand {
14
+ static description = 'View full agent logs (full tmux scrollback)';
15
+ static examples = [
16
+ '<%= config.bin %> logs bold-fox',
17
+ '<%= config.bin %> logs SES-ABC123',
18
+ '<%= config.bin %> logs bold-fox --lines 500',
19
+ ];
20
+ static args = {
21
+ agent: Args.string({
22
+ description: 'Agent name or session ID',
23
+ required: true,
24
+ }),
25
+ };
26
+ static flags = {
27
+ ...machineOutputFlags,
28
+ lines: Flags.integer({
29
+ char: 'l',
30
+ description: 'Number of scrollback lines to capture',
31
+ default: 10000,
32
+ }),
33
+ };
34
+ async run() {
35
+ const { args, flags } = await this.parse(Logs);
36
+ const jsonMode = shouldOutputJson(flags);
37
+ const store = new SessionStore();
38
+ try {
39
+ store.reconcile();
40
+ const session = store.resolve(args.agent);
41
+ if (!session) {
42
+ if (jsonMode) {
43
+ outputErrorAsJson('SESSION_NOT_FOUND', `No session found for "${args.agent}". Run "prlt ps" to see agents.`, createMetadata('logs', flags));
44
+ return;
45
+ }
46
+ this.error(`No session found for "${args.agent}". Run "prlt ps" to see agents.`);
47
+ }
48
+ const runner = getRunner(session.runner);
49
+ if (!runner) {
50
+ if (jsonMode) {
51
+ outputErrorAsJson('RUNNER_NOT_FOUND', `Runner "${session.runner}" not available.`, createMetadata('logs', flags));
52
+ return;
53
+ }
54
+ this.error(`Runner "${session.runner}" not available.`);
55
+ }
56
+ const agentSession = {
57
+ id: session.id,
58
+ runner: session.runner,
59
+ sessionName: session.sessionName,
60
+ task: session.task,
61
+ workdir: session.workdir,
62
+ startedAt: session.startedAt,
63
+ status: session.status,
64
+ };
65
+ const output = await runner.peek(agentSession, flags.lines);
66
+ if (jsonMode) {
67
+ outputSuccessAsJson({
68
+ id: session.id,
69
+ agentName: session.agentName,
70
+ sessionName: session.sessionName,
71
+ lines: flags.lines,
72
+ content: output,
73
+ }, createMetadata('logs', flags));
74
+ return;
75
+ }
76
+ // Raw text output — pipeable
77
+ process.stdout.write(output + '\n');
78
+ }
79
+ finally {
80
+ store.close();
81
+ }
82
+ }
83
+ }
84
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,7 @@ export default class McpServerCommand extends Command {
64
64
  const ctx = {
65
65
  get storage() {
66
66
  if (!pmoContext) {
67
- throw new Error('PMO not initialized. Run "prlt init" first.');
67
+ throw new Error('PMO not initialized. Run "prlt new" first.');
68
68
  }
69
69
  return pmoContext.storage;
70
70
  },
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/commands/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/commands/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class New extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ path: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ agents: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ repos: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ pmo: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ run(): Promise<void>;
15
+ /**
16
+ * Human mode: interactive prompts with colored output
17
+ */
18
+ private runHumanMode;
19
+ /**
20
+ * Agent mode: use flags, output JSON
21
+ */
22
+ private runAgentMode;
23
+ /**
24
+ * Output JSON to stdout
25
+ */
26
+ private outputJson;
27
+ }
@@ -0,0 +1,184 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import * as path from 'node:path';
4
+ import * as fs from 'node:fs';
5
+ import { promptForHQName, promptForHQLocation, initializeHQ, showNextSteps, validateHQLocation, isHQNameTaken, } from '../lib/init/index.js';
6
+ import { promptForAgentsWithTheme } from '../lib/agents/index.js';
7
+ import { promptForRepositories } from '../lib/repos/index.js';
8
+ import { promptForPMOSetup, machineOutputFlags } from '../lib/pmo/index.js';
9
+ import { shouldOutputJson, outputPromptAsJson, buildPromptConfig, createMetadata, } from '../lib/prompt-json.js';
10
+ export default class New extends Command {
11
+ static description = 'Create a new headquarters for managing repositories, agents, and projects';
12
+ static examples = [
13
+ // Human mode (interactive)
14
+ '<%= config.bin %> <%= command.id %>',
15
+ // Agent mode (JSON)
16
+ '<%= config.bin %> <%= command.id %> --json --name myproject',
17
+ '<%= config.bin %> <%= command.id %> --json --name myproject --path /path/to/hq --agents agent1,agent2 --pmo',
18
+ ];
19
+ static flags = {
20
+ ...machineOutputFlags,
21
+ name: Flags.string({
22
+ description: 'HQ name',
23
+ char: 'n',
24
+ }),
25
+ path: Flags.string({
26
+ description: 'HQ path (defaults to ./{name}-hq)',
27
+ char: 'p',
28
+ }),
29
+ agents: Flags.string({
30
+ description: 'Comma-separated list of agent names',
31
+ char: 'a',
32
+ }),
33
+ repos: Flags.string({
34
+ description: 'Comma-separated list of repository paths to clone/move',
35
+ char: 'r',
36
+ }),
37
+ pmo: Flags.boolean({
38
+ description: 'Include PMO (Project Management Org)',
39
+ default: true,
40
+ allowNo: true,
41
+ }),
42
+ };
43
+ async run() {
44
+ const { flags } = await this.parse(New);
45
+ if (shouldOutputJson(flags)) {
46
+ await this.runAgentMode(flags);
47
+ }
48
+ else {
49
+ await this.runHumanMode();
50
+ }
51
+ }
52
+ /**
53
+ * Human mode: interactive prompts with colored output
54
+ */
55
+ async runHumanMode() {
56
+ console.log(chalk.blue('🚀 Creating a new headquarters...\n'));
57
+ // Step 1: Get HQ name
58
+ const hqName = await promptForHQName();
59
+ // Step 2: Determine location (always adds -hq suffix)
60
+ const hqPath = await promptForHQLocation(hqName);
61
+ // Step 3: Add agents (with theme options)
62
+ const agentResult = await promptForAgentsWithTheme();
63
+ // Step 4: Add repositories
64
+ const repos = await promptForRepositories(process.cwd(), []);
65
+ // Step 5: PMO setup (uses shared prompt from lib/pmo)
66
+ const pmoSetup = await promptForPMOSetup(hqPath, hqName);
67
+ // Create the options object
68
+ const options = {
69
+ workspaceType: 'hq',
70
+ hqName,
71
+ hqPath,
72
+ selectedAgents: agentResult.agents,
73
+ repos,
74
+ pmoSetup,
75
+ themeId: agentResult.themeId,
76
+ customTheme: agentResult.customTheme,
77
+ };
78
+ // Initialize the HQ
79
+ await initializeHQ(options);
80
+ // Show next steps
81
+ await showNextSteps(options);
82
+ }
83
+ /**
84
+ * Agent mode: use flags, output JSON
85
+ */
86
+ async runAgentMode(flags) {
87
+ // If --name not provided, output a prompt so agents can supply it
88
+ if (!flags.name) {
89
+ outputPromptAsJson(buildPromptConfig('input', 'name', 'Enter a name for your headquarters:', undefined, undefined), createMetadata('new', flags));
90
+ }
91
+ const hqName = flags.name;
92
+ // Check if HQ name is already in use
93
+ if (hqName && isHQNameTaken(hqName)) {
94
+ this.outputJson({
95
+ success: false,
96
+ error: `HQ name "${hqName}" is already in use on this machine. Pick another name.`,
97
+ });
98
+ this.exit(1);
99
+ }
100
+ const hqPath = flags.path || path.resolve(`./${hqName}-hq`);
101
+ // Validate HQ path is not inside a git repo
102
+ if (!validateHQLocation(hqPath)) {
103
+ this.outputJson({
104
+ success: false,
105
+ error: 'Cannot create HQ inside a git repository',
106
+ path: hqPath,
107
+ });
108
+ this.exit(1);
109
+ }
110
+ // Check if directory already exists
111
+ if (fs.existsSync(hqPath)) {
112
+ this.outputJson({
113
+ success: false,
114
+ error: 'Directory already exists',
115
+ path: hqPath,
116
+ });
117
+ this.exit(1);
118
+ }
119
+ // Parse agents
120
+ const selectedAgents = flags.agents
121
+ ? flags.agents.split(',').map(a => a.trim()).filter(Boolean)
122
+ : [];
123
+ // Parse repos
124
+ const repos = flags.repos
125
+ ? flags.repos.split(',').map(r => ({
126
+ path: r.trim(),
127
+ action: 'clone',
128
+ })).filter(r => r.path)
129
+ : [];
130
+ // Create options
131
+ const options = {
132
+ workspaceType: 'hq',
133
+ hqName,
134
+ hqPath,
135
+ selectedAgents,
136
+ repos,
137
+ quiet: true, // Suppress console output in JSON mode
138
+ pmoSetup: {
139
+ includePMO: flags.pmo,
140
+ location: 'separate',
141
+ boardTemplate: 'default',
142
+ boardName: `${hqName}-kanban`,
143
+ columns: ['Backlog', 'In Progress', 'Review', 'Done'],
144
+ storageType: 'sqlite',
145
+ },
146
+ };
147
+ // Suppress console output in JSON mode
148
+ const originalLog = console.log;
149
+ console.log = () => { };
150
+ try {
151
+ // Initialize the HQ
152
+ await initializeHQ(options);
153
+ // Restore console.log
154
+ console.log = originalLog;
155
+ // Output success JSON
156
+ this.outputJson({
157
+ success: true,
158
+ hq: {
159
+ name: hqName,
160
+ path: hqPath,
161
+ agents: selectedAgents,
162
+ repos: repos.map(r => r.path),
163
+ pmo: flags.pmo,
164
+ },
165
+ });
166
+ }
167
+ catch (error) {
168
+ // Restore console.log on error
169
+ console.log = originalLog;
170
+ this.outputJson({
171
+ success: false,
172
+ error: error instanceof Error ? error.message : 'Unknown error',
173
+ });
174
+ this.exit(1);
175
+ }
176
+ }
177
+ /**
178
+ * Output JSON to stdout
179
+ */
180
+ outputJson(data) {
181
+ console.log(JSON.stringify(data, null, 2));
182
+ }
183
+ }
184
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
@@ -19,4 +19,5 @@ export default class OrchestratorAttach extends PromptCommand {
19
19
  run(): Promise<void>;
20
20
  private attachInCurrentTerminal;
21
21
  private openInNewTab;
22
+ private openDockerInNewTab;
22
23
  }