@proletariat/cli 0.3.87 → 0.3.89

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 (145) hide show
  1. package/dist/commands/db/repair.d.ts +14 -0
  2. package/dist/commands/db/repair.js +186 -0
  3. package/dist/commands/db/repair.js.map +1 -0
  4. package/dist/commands/init.d.ts +6 -1
  5. package/dist/commands/init.js +44 -89
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/new.d.ts +30 -2
  8. package/dist/commands/new.js +141 -9
  9. package/dist/commands/new.js.map +1 -1
  10. package/dist/commands/session/list.js +42 -0
  11. package/dist/commands/session/list.js.map +1 -1
  12. package/dist/commands/session/poke.d.ts +6 -0
  13. package/dist/commands/session/poke.js +40 -0
  14. package/dist/commands/session/poke.js.map +1 -1
  15. package/dist/commands/work/start.d.ts +1 -0
  16. package/dist/commands/work/start.js +20 -1
  17. package/dist/commands/work/start.js.map +1 -1
  18. package/dist/hooks/init.js +3 -6
  19. package/dist/hooks/init.js.map +1 -1
  20. package/dist/lib/asana/config.d.ts +1 -1
  21. package/dist/lib/asana/config.js +18 -30
  22. package/dist/lib/asana/config.js.map +1 -1
  23. package/dist/lib/asana/mapper.d.ts +4 -3
  24. package/dist/lib/asana/mapper.js +17 -10
  25. package/dist/lib/asana/mapper.js.map +1 -1
  26. package/dist/lib/dashboard/data.js +2 -2
  27. package/dist/lib/dashboard/data.js.map +1 -1
  28. package/dist/lib/database/agents.d.ts +73 -0
  29. package/dist/lib/database/agents.js +341 -0
  30. package/dist/lib/database/agents.js.map +1 -0
  31. package/dist/lib/database/db-safety.d.ts +59 -0
  32. package/dist/lib/database/db-safety.js +295 -0
  33. package/dist/lib/database/db-safety.js.map +1 -0
  34. package/dist/lib/database/driver.d.ts +115 -0
  35. package/dist/lib/database/driver.js +110 -0
  36. package/dist/lib/database/driver.js.map +1 -0
  37. package/dist/lib/database/index.d.ts +26 -287
  38. package/dist/lib/database/index.js +37 -1067
  39. package/dist/lib/database/index.js.map +1 -1
  40. package/dist/lib/database/media.d.ts +53 -0
  41. package/dist/lib/database/media.js +118 -0
  42. package/dist/lib/database/media.js.map +1 -0
  43. package/dist/lib/database/migrations/0012_add_action_network_allowlist.d.ts +9 -0
  44. package/dist/lib/database/migrations/0012_add_action_network_allowlist.js +22 -0
  45. package/dist/lib/database/migrations/0012_add_action_network_allowlist.js.map +1 -0
  46. package/dist/lib/database/migrations/index.js +2 -0
  47. package/dist/lib/database/migrations/index.js.map +1 -1
  48. package/dist/lib/database/pmo-bootstrap.d.ts +30 -0
  49. package/dist/lib/database/pmo-bootstrap.js +105 -0
  50. package/dist/lib/database/pmo-bootstrap.js.map +1 -0
  51. package/dist/lib/database/repositories.d.ts +26 -0
  52. package/dist/lib/database/repositories.js +56 -0
  53. package/dist/lib/database/repositories.js.map +1 -0
  54. package/dist/lib/database/settings-store.d.ts +60 -0
  55. package/dist/lib/database/settings-store.js +87 -0
  56. package/dist/lib/database/settings-store.js.map +1 -0
  57. package/dist/lib/database/themes.d.ts +59 -0
  58. package/dist/lib/database/themes.js +212 -0
  59. package/dist/lib/database/themes.js.map +1 -0
  60. package/dist/lib/database/workspace.d.ts +51 -0
  61. package/dist/lib/database/workspace.js +194 -0
  62. package/dist/lib/database/workspace.js.map +1 -0
  63. package/dist/lib/database/worktrees.d.ts +33 -0
  64. package/dist/lib/database/worktrees.js +60 -0
  65. package/dist/lib/database/worktrees.js.map +1 -0
  66. package/dist/lib/execution/config.d.ts +14 -1
  67. package/dist/lib/execution/config.js +67 -17
  68. package/dist/lib/execution/config.js.map +1 -1
  69. package/dist/lib/execution/devcontainer.d.ts +2 -0
  70. package/dist/lib/execution/devcontainer.js +6 -1
  71. package/dist/lib/execution/devcontainer.js.map +1 -1
  72. package/dist/lib/execution/runners/docker-management.d.ts +6 -0
  73. package/dist/lib/execution/runners/docker-management.js +28 -12
  74. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  75. package/dist/lib/execution/runners/sandbox.js +2 -1
  76. package/dist/lib/execution/runners/sandbox.js.map +1 -1
  77. package/dist/lib/execution/spawner.d.ts +3 -1
  78. package/dist/lib/execution/spawner.js +1 -0
  79. package/dist/lib/execution/spawner.js.map +1 -1
  80. package/dist/lib/execution/storage.d.ts +47 -12
  81. package/dist/lib/execution/storage.js +69 -47
  82. package/dist/lib/execution/storage.js.map +1 -1
  83. package/dist/lib/execution/types.d.ts +1 -0
  84. package/dist/lib/execution/types.js.map +1 -1
  85. package/dist/lib/external-issues/mapping-store.d.ts +4 -3
  86. package/dist/lib/external-issues/mapping-store.js +21 -13
  87. package/dist/lib/external-issues/mapping-store.js.map +1 -1
  88. package/dist/lib/external-issues/outbound-sync.d.ts +1 -1
  89. package/dist/lib/jira/config.d.ts +1 -6
  90. package/dist/lib/jira/config.js +16 -33
  91. package/dist/lib/jira/config.js.map +1 -1
  92. package/dist/lib/linear/config.d.ts +1 -1
  93. package/dist/lib/linear/config.js +16 -38
  94. package/dist/lib/linear/config.js.map +1 -1
  95. package/dist/lib/linear/mapper.d.ts +4 -3
  96. package/dist/lib/linear/mapper.js +20 -13
  97. package/dist/lib/linear/mapper.js.map +1 -1
  98. package/dist/lib/monday/config.d.ts +1 -1
  99. package/dist/lib/monday/config.js +16 -32
  100. package/dist/lib/monday/config.js.map +1 -1
  101. package/dist/lib/monday/mapper.d.ts +4 -3
  102. package/dist/lib/monday/mapper.js +19 -12
  103. package/dist/lib/monday/mapper.js.map +1 -1
  104. package/dist/lib/onboarding/wizard.d.ts +2 -2
  105. package/dist/lib/onboarding/wizard.js +32 -24
  106. package/dist/lib/onboarding/wizard.js.map +1 -1
  107. package/dist/lib/pmo/diet.d.ts +1 -1
  108. package/dist/lib/pmo/find-pmo.js +10 -10
  109. package/dist/lib/pmo/find-pmo.js.map +1 -1
  110. package/dist/lib/pmo/schema.d.ts +1 -1
  111. package/dist/lib/pmo/schema.js +1 -0
  112. package/dist/lib/pmo/schema.js.map +1 -1
  113. package/dist/lib/pmo/storage/actions.js +9 -3
  114. package/dist/lib/pmo/storage/actions.js.map +1 -1
  115. package/dist/lib/pmo/storage/index.d.ts +8 -0
  116. package/dist/lib/pmo/storage/index.js +13 -1
  117. package/dist/lib/pmo/storage/index.js.map +1 -1
  118. package/dist/lib/pmo/storage/types.d.ts +5 -1
  119. package/dist/lib/pmo/types.d.ts +1 -0
  120. package/dist/lib/pmo/types.js.map +1 -1
  121. package/dist/lib/registry/index.d.ts +2 -2
  122. package/dist/lib/registry/index.js +5 -6
  123. package/dist/lib/registry/index.js.map +1 -1
  124. package/dist/lib/session-store.js +2 -2
  125. package/dist/lib/session-store.js.map +1 -1
  126. package/dist/lib/shortcut/config.d.ts +1 -7
  127. package/dist/lib/shortcut/config.js +13 -32
  128. package/dist/lib/shortcut/config.js.map +1 -1
  129. package/dist/lib/trello/config.d.ts +1 -26
  130. package/dist/lib/trello/config.js +23 -64
  131. package/dist/lib/trello/config.js.map +1 -1
  132. package/dist/lib/trello/mapper.d.ts +4 -3
  133. package/dist/lib/trello/mapper.js +17 -10
  134. package/dist/lib/trello/mapper.js.map +1 -1
  135. package/dist/lib/work-lifecycle/action-chaining.js +4 -0
  136. package/dist/lib/work-lifecycle/action-chaining.js.map +1 -1
  137. package/dist/lib/work-lifecycle/post-execution.d.ts +1 -1
  138. package/dist/lib/work-source/config.d.ts +1 -1
  139. package/dist/lib/work-source/config.js +14 -24
  140. package/dist/lib/work-source/config.js.map +1 -1
  141. package/dist/lib/work-source/provider-sources.d.ts +1 -1
  142. package/dist/lib/work-source/provider-sources.js +8 -20
  143. package/dist/lib/work-source/provider-sources.js.map +1 -1
  144. package/oclif.manifest.json +1111 -1001
  145. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class DbRepair extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ 'check-only': import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ workspace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ private resolveWorkspacePath;
13
+ private runCheck;
14
+ }
@@ -0,0 +1,186 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import * as fs from 'node:fs';
3
+ import Database from 'better-sqlite3';
4
+ import { styles } from '../../lib/styles.js';
5
+ import { getDatabasePath, checkIntegrity, repairDatabase, getBackupPath, } from '../../lib/database/index.js';
6
+ import { getRegisteredHeadquarters, getActiveWorkspace, } from '../../lib/machine-config.js';
7
+ import { machineOutputFlags } from '../../lib/pmo/index.js';
8
+ import { shouldOutputJson } from '../../lib/prompt-json.js';
9
+ export default class DbRepair extends Command {
10
+ static description = 'Check database integrity and repair corruption';
11
+ static examples = [
12
+ '<%= config.bin %> <%= command.id %>',
13
+ '<%= config.bin %> <%= command.id %> --check-only',
14
+ '<%= config.bin %> <%= command.id %> --workspace /path/to/hq',
15
+ ];
16
+ static flags = {
17
+ ...machineOutputFlags,
18
+ 'check-only': Flags.boolean({
19
+ description: 'Only check integrity, do not attempt repair',
20
+ default: false,
21
+ }),
22
+ workspace: Flags.string({
23
+ char: 'w',
24
+ description: 'Path to workspace (defaults to active workspace)',
25
+ }),
26
+ };
27
+ async run() {
28
+ const { flags } = await this.parse(DbRepair);
29
+ const workspacePath = this.resolveWorkspacePath(flags.workspace);
30
+ if (!workspacePath) {
31
+ this.error('No workspace found. Run "prlt new" first or specify --workspace.');
32
+ }
33
+ const dbPath = getDatabasePath(workspacePath);
34
+ if (!fs.existsSync(dbPath)) {
35
+ this.error(`Database not found: ${dbPath}`);
36
+ }
37
+ // JSON output
38
+ if (shouldOutputJson(flags)) {
39
+ const result = this.runCheck(dbPath, flags['check-only']);
40
+ this.log(JSON.stringify({
41
+ ...result,
42
+ dbPath,
43
+ workspace: workspacePath,
44
+ }, null, 2));
45
+ return;
46
+ }
47
+ this.log(`\n${styles.header('Database Repair')}`);
48
+ this.log('─'.repeat(50));
49
+ this.log(styles.muted(`Database: ${dbPath}`));
50
+ // List available backups
51
+ this.log(styles.subheader('\nBackups:'));
52
+ let backupCount = 0;
53
+ for (let i = 1; i <= 5; i++) {
54
+ const bp = getBackupPath(dbPath, i);
55
+ if (fs.existsSync(bp)) {
56
+ const stat = fs.statSync(bp);
57
+ this.log(` ${styles.code(`backup.${i}`)} — ${styles.muted(stat.mtime.toISOString())} (${formatBytes(stat.size)})`);
58
+ backupCount++;
59
+ }
60
+ }
61
+ if (backupCount === 0) {
62
+ this.log(styles.muted(' No backups found'));
63
+ }
64
+ // Run integrity check
65
+ this.log(styles.subheader('\nIntegrity check:'));
66
+ let db = null;
67
+ try {
68
+ db = new Database(dbPath, { readonly: true });
69
+ const check = checkIntegrity(db);
70
+ db.close();
71
+ db = null;
72
+ if (check.ok) {
73
+ this.log(styles.success(' Database is healthy.'));
74
+ // Show journal mode
75
+ const readDb = new Database(dbPath, { readonly: true });
76
+ const mode = readDb.pragma('journal_mode', { simple: true });
77
+ readDb.close();
78
+ this.log(styles.muted(` Journal mode: ${mode}`));
79
+ this.log('');
80
+ return;
81
+ }
82
+ this.log(styles.error(` Corruption detected (${check.errors.length} error(s)):`));
83
+ for (const err of check.errors.slice(0, 10)) {
84
+ this.log(styles.muted(` - ${err}`));
85
+ }
86
+ if (check.errors.length > 10) {
87
+ this.log(styles.muted(` ... and ${check.errors.length - 10} more`));
88
+ }
89
+ }
90
+ catch (error) {
91
+ if (db) {
92
+ try {
93
+ db.close();
94
+ }
95
+ catch { /* ignore */ }
96
+ }
97
+ this.log(styles.error(` Could not open database: ${error instanceof Error ? error.message : error}`));
98
+ }
99
+ if (flags['check-only']) {
100
+ this.log(styles.muted('\n --check-only: skipping repair'));
101
+ this.log('');
102
+ return;
103
+ }
104
+ // Attempt repair
105
+ this.log(styles.subheader('\nAttempting repair:'));
106
+ const repair = repairDatabase(dbPath);
107
+ if (repair.success) {
108
+ this.log(styles.success(` Repaired via ${repair.method}.`));
109
+ this.log(styles.muted(` ${repair.message}`));
110
+ }
111
+ else {
112
+ this.log(styles.error(' Repair failed.'));
113
+ this.log(styles.muted(` ${repair.message}`));
114
+ this.log(styles.muted(' You may need to manually restore from an external backup.'));
115
+ }
116
+ this.log('');
117
+ }
118
+ resolveWorkspacePath(explicit) {
119
+ if (explicit) {
120
+ return fs.existsSync(explicit) ? explicit : null;
121
+ }
122
+ // Try active workspace first (returns a path string or null)
123
+ const active = getActiveWorkspace();
124
+ if (active && fs.existsSync(active)) {
125
+ return active;
126
+ }
127
+ // Fall back to first registered HQ
128
+ const hqs = getRegisteredHeadquarters();
129
+ for (const hq of hqs) {
130
+ if (fs.existsSync(hq.path)) {
131
+ return hq.path;
132
+ }
133
+ }
134
+ return null;
135
+ }
136
+ runCheck(dbPath, checkOnly) {
137
+ let db = null;
138
+ try {
139
+ db = new Database(dbPath, { readonly: true });
140
+ const check = checkIntegrity(db);
141
+ db.close();
142
+ db = null;
143
+ if (check.ok) {
144
+ return { status: 'healthy', errors: [] };
145
+ }
146
+ if (checkOnly) {
147
+ return { status: 'corrupt', errors: check.errors, repaired: false };
148
+ }
149
+ const repair = repairDatabase(dbPath);
150
+ return {
151
+ status: 'corrupt',
152
+ errors: check.errors,
153
+ repaired: repair.success,
154
+ repairMethod: repair.method,
155
+ repairMessage: repair.message,
156
+ };
157
+ }
158
+ catch (error) {
159
+ if (db) {
160
+ try {
161
+ db.close();
162
+ }
163
+ catch { /* ignore */ }
164
+ }
165
+ if (checkOnly) {
166
+ return { status: 'error', errors: [error instanceof Error ? error.message : String(error)], repaired: false };
167
+ }
168
+ const repair = repairDatabase(dbPath);
169
+ return {
170
+ status: 'error',
171
+ errors: [error instanceof Error ? error.message : String(error)],
172
+ repaired: repair.success,
173
+ repairMethod: repair.method,
174
+ repairMessage: repair.message,
175
+ };
176
+ }
177
+ }
178
+ }
179
+ function formatBytes(bytes) {
180
+ if (bytes < 1024)
181
+ return `${bytes} B`;
182
+ if (bytes < 1024 * 1024)
183
+ return `${(bytes / 1024).toFixed(1)} KB`;
184
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
185
+ }
186
+ //# sourceMappingURL=repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair.js","sourceRoot":"","sources":["../../../src/commands/db/repair.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,16 @@ import { Command } from '@oclif/core';
2
2
  export default class Init extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
+ static hidden: boolean;
5
6
  static flags: {
7
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ path: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ agents: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ repos: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ pmo: import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
12
  setup: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
13
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
14
  machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
15
  };
10
16
  run(): Promise<void>;
11
- private outputJson;
12
17
  }
@@ -1,112 +1,67 @@
1
1
  import { Command, Flags } from '@oclif/core';
2
2
  import chalk from 'chalk';
3
- import * as fs from 'node:fs';
4
- import { ensureMachineConfigDir, getMachineConfigDir, getMachineConfigPath, readMachineConfig, writeMachineConfig, } from '../lib/machine-config.js';
5
- import { isValidHQ } from '../lib/workspace.js';
6
3
  import { machineOutputFlags } from '../lib/pmo/index.js';
7
- import { shouldOutputJson } from '../lib/prompt-json.js';
8
- import { isFirstTimeUser, runOnboardingWizard, runOnboardingJsonMode, detectAITools, } from '../lib/onboarding/index.js';
9
4
  export default class Init extends Command {
10
- static description = 'Initialize machine-level Proletariat configuration (~/.proletariat)';
5
+ static description = 'Initialize a new headquarters (deprecated — use `prlt new` instead)';
11
6
  static examples = [
12
- '<%= config.bin %> <%= command.id %>',
13
- '<%= config.bin %> <%= command.id %> --json',
14
- '<%= config.bin %> <%= command.id %> --json --setup claude-code',
7
+ '<%= config.bin %> new',
15
8
  ];
9
+ static hidden = true;
10
+ // Accept the same flags as `new` so forwarding works correctly
16
11
  static flags = {
17
12
  ...machineOutputFlags,
13
+ name: Flags.string({
14
+ description: 'HQ name',
15
+ char: 'n',
16
+ }),
17
+ path: Flags.string({
18
+ description: 'HQ path (defaults to ./{name}-hq)',
19
+ char: 'p',
20
+ }),
21
+ agents: Flags.string({
22
+ description: 'Comma-separated list of agent names',
23
+ char: 'a',
24
+ }),
25
+ repos: Flags.string({
26
+ description: 'Comma-separated list of repository paths to clone/move',
27
+ char: 'r',
28
+ }),
29
+ pmo: Flags.boolean({
30
+ description: 'Include PMO (Project Management Org)',
31
+ default: true,
32
+ allowNo: true,
33
+ }),
18
34
  setup: Flags.string({
19
35
  description: 'Setup method for agent-driven onboarding (claude-code, codex, or manual)',
20
36
  options: ['claude-code', 'codex', 'manual'],
21
37
  }),
22
38
  };
23
39
  async run() {
24
- const { flags } = await this.parse(Init);
25
- const jsonMode = shouldOutputJson(flags);
26
- // Step 1: Ensure machine config directory exists
27
- ensureMachineConfigDir();
28
- // Step 2: Ensure machine config file exists with valid structure
29
- const configPath = getMachineConfigPath();
30
- const config = readMachineConfig();
31
- const configExists = fs.existsSync(configPath);
32
- if (!configExists) {
33
- // Write fresh config if none exists
34
- writeMachineConfig(config);
35
- }
36
- // Step 3: Prune stale headquarters entries (paths that no longer exist)
37
- const originalCount = config.headquarters.length;
38
- config.headquarters = config.headquarters.filter(hq => {
39
- if (!fs.existsSync(hq.path))
40
- return false;
41
- if (!isValidHQ(hq.path))
42
- return false;
43
- return true;
44
- });
45
- const prunedCount = originalCount - config.headquarters.length;
46
- // Clear active HQ if it was pruned
47
- if (config.activeHeadquarters && !config.headquarters.some(hq => hq.path === config.activeHeadquarters)) {
48
- config.activeHeadquarters = null;
49
- }
50
- if (prunedCount > 0) {
51
- writeMachineConfig(config);
52
- }
53
- // Step 4: Onboarding wizard for first-time users
54
- const firstTime = isFirstTimeUser(config.headquarters.length, config.activeHeadquarters ?? null);
55
- if (firstTime) {
56
- if (jsonMode) {
57
- // JSON mode: handle --setup flag for agent-driven onboarding
58
- if (flags.setup) {
59
- runOnboardingJsonMode(flags);
60
- // If runOnboardingJsonMode returns (manual mode), fall through to normal JSON output
40
+ const { argv, flags } = await this.parse(Init);
41
+ console.log(chalk.yellow('`prlt init` is deprecated. Use `prlt new` instead.\n'));
42
+ // Build args for forwarding to `new`
43
+ const newArgs = ['new'];
44
+ for (const [key, value] of Object.entries(flags)) {
45
+ if (value === undefined)
46
+ continue;
47
+ if (typeof value === 'boolean') {
48
+ if (value) {
49
+ newArgs.push(`--${key}`);
50
+ }
51
+ else {
52
+ newArgs.push(`--no-${key}`);
61
53
  }
62
- // No --setup flag: fall through to include onboarding info in success response
63
54
  }
64
55
  else {
65
- // Interactive mode: run the onboarding wizard
66
- const result = await runOnboardingWizard();
67
- if (result.method === 'ai') {
68
- // AI tool was spawned — it will guide the user through prlt new
69
- return;
70
- }
71
- // Manual: fall through to show normal init output with prlt new guidance
56
+ newArgs.push(`--${key}`, String(value));
72
57
  }
73
58
  }
74
- // Output results
75
- if (jsonMode) {
76
- const jsonResult = {
77
- success: true,
78
- configDir: getMachineConfigDir(),
79
- configPath,
80
- headquarters: config.headquarters.length,
81
- prunedStaleEntries: prunedCount,
82
- activeHeadquarters: config.activeHeadquarters,
83
- };
84
- if (firstTime) {
85
- const detection = detectAITools();
86
- jsonResult.firstTimeUser = true;
87
- jsonResult.detectedTools = detection.tools.map(t => ({
88
- name: t.name,
89
- command: t.command,
90
- displayName: t.displayName,
91
- }));
92
- }
93
- this.outputJson(jsonResult);
59
+ // Forward positional args
60
+ for (const arg of argv) {
61
+ newArgs.push(arg);
94
62
  }
95
- else {
96
- console.log(chalk.green('Machine configuration initialized.'));
97
- console.log(chalk.gray(` Config: ${configPath}`));
98
- console.log(chalk.gray(` Registered HQs: ${config.headquarters.length}`));
99
- if (prunedCount > 0) {
100
- console.log(chalk.yellow(` Pruned ${prunedCount} stale HQ entries`));
101
- }
102
- if (config.headquarters.length === 0) {
103
- console.log(chalk.blue('\nNo headquarters found. Create one with:'));
104
- console.log(chalk.yellow(' prlt new'));
105
- }
106
- }
107
- }
108
- outputJson(data) {
109
- console.log(JSON.stringify(data, null, 2));
63
+ const { run } = await import('@oclif/core');
64
+ await run(newArgs, this.config);
110
65
  }
111
66
  }
112
67
  //# sourceMappingURL=init.js.map
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,MAAM,CAAC,WAAW,GAAG,qEAAqE,CAAC;IAE3F,MAAM,CAAC,QAAQ,GAAG;QAChB,uBAAuB;KACxB,CAAC;IAEF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAErB,+DAA+D;IAC/D,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,kBAAkB;QACrB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,GAAG;SACV,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,mCAAmC;YAChD,IAAI,EAAE,GAAG;SACV,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,qCAAqC;YAClD,IAAI,EAAE,GAAG;SACV,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,wDAAwD;YACrE,IAAI,EAAE,GAAG;SACV,CAAC;QACF,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;YACjB,WAAW,EAAE,sCAAsC;YACnD,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,0EAA0E;YACvF,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC;SAC5C,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAElF,qCAAqC;QACrC,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,0BAA0B;QAC1B,KAAK,MAAM,GAAG,IAAK,IAAiB,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC"}
@@ -8,18 +8,46 @@ export default class New extends Command {
8
8
  agents: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  repos: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  pmo: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ setup: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
12
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
13
  machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
14
  };
14
15
  run(): Promise<void>;
15
16
  /**
16
- * Human mode: interactive prompts with colored output
17
+ * Detect whether this is the user's first time (no HQ exists anywhere).
18
+ */
19
+ private detectFirstTime;
20
+ /**
21
+ * Human mode: interactive prompts with colored output.
22
+ * If first-time user, shows welcome + explainer before setup prompts.
23
+ * If returning user, goes straight to setup (power user flow).
17
24
  */
18
25
  private runHumanMode;
19
26
  /**
20
- * Agent mode: use flags, output JSON
27
+ * First-time user flow: welcome, explainer, setup method choice, then HQ creation.
28
+ */
29
+ private runFirstTimeHumanMode;
30
+ /**
31
+ * Returning user flow: straight to HQ creation (power user mode).
32
+ */
33
+ private runReturningHumanMode;
34
+ /**
35
+ * Shared HQ creation flow (used by both first-time and returning user).
36
+ */
37
+ private createHQ;
38
+ /**
39
+ * Show what to do next after HQ creation.
40
+ */
41
+ private showNextSteps;
42
+ /**
43
+ * Agent mode: use flags, output JSON.
44
+ * For first-time users without --name, includes onboarding context.
21
45
  */
22
46
  private runAgentMode;
47
+ /**
48
+ * Output first-time user JSON prompt with model-friendly context.
49
+ */
50
+ private outputFirstTimeJsonPrompt;
23
51
  /**
24
52
  * Output JSON to stdout
25
53
  */