@context-forge/cli 0.8.5 → 0.8.6

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 (133) hide show
  1. package/dist/commands/arch.d.ts +7 -0
  2. package/dist/commands/arch.d.ts.map +1 -0
  3. package/dist/commands/arch.js +160 -0
  4. package/dist/commands/arch.js.map +1 -0
  5. package/dist/commands/backup.d.ts +3 -0
  6. package/dist/commands/backup.d.ts.map +1 -0
  7. package/dist/commands/backup.js +27 -0
  8. package/dist/commands/backup.js.map +1 -0
  9. package/dist/commands/build.d.ts +24 -0
  10. package/dist/commands/build.d.ts.map +1 -0
  11. package/dist/commands/build.js +146 -0
  12. package/dist/commands/build.js.map +1 -0
  13. package/dist/commands/check.d.ts +3 -0
  14. package/dist/commands/check.d.ts.map +1 -0
  15. package/dist/commands/check.js +211 -0
  16. package/dist/commands/check.js.map +1 -0
  17. package/dist/commands/commandInstaller.d.ts +28 -0
  18. package/dist/commands/commandInstaller.d.ts.map +1 -0
  19. package/dist/commands/commandInstaller.js +136 -0
  20. package/dist/commands/commandInstaller.js.map +1 -0
  21. package/dist/commands/config.d.ts +3 -0
  22. package/dist/commands/config.d.ts.map +1 -0
  23. package/dist/commands/config.js +69 -0
  24. package/dist/commands/config.js.map +1 -0
  25. package/dist/commands/future.d.ts +3 -0
  26. package/dist/commands/future.d.ts.map +1 -0
  27. package/dist/commands/future.js +96 -0
  28. package/dist/commands/future.js.map +1 -0
  29. package/dist/commands/guides.d.ts +9 -0
  30. package/dist/commands/guides.d.ts.map +1 -0
  31. package/dist/commands/guides.js +156 -0
  32. package/dist/commands/guides.js.map +1 -0
  33. package/dist/commands/init.d.ts +3 -0
  34. package/dist/commands/init.d.ts.map +1 -0
  35. package/dist/commands/init.js +124 -0
  36. package/dist/commands/init.js.map +1 -0
  37. package/dist/commands/list.d.ts +3 -0
  38. package/dist/commands/list.d.ts.map +1 -0
  39. package/dist/commands/list.js +93 -0
  40. package/dist/commands/list.js.map +1 -0
  41. package/dist/commands/next.d.ts +3 -0
  42. package/dist/commands/next.d.ts.map +1 -0
  43. package/dist/commands/next.js +51 -0
  44. package/dist/commands/next.js.map +1 -0
  45. package/dist/commands/plan.d.ts +7 -0
  46. package/dist/commands/plan.d.ts.map +1 -0
  47. package/dist/commands/plan.js +102 -0
  48. package/dist/commands/plan.js.map +1 -0
  49. package/dist/commands/project.d.ts +25 -0
  50. package/dist/commands/project.d.ts.map +1 -0
  51. package/dist/commands/project.js +550 -0
  52. package/dist/commands/project.js.map +1 -0
  53. package/dist/commands/prompt.d.ts +3 -0
  54. package/dist/commands/prompt.d.ts.map +1 -0
  55. package/dist/commands/prompt.js +112 -0
  56. package/dist/commands/prompt.js.map +1 -0
  57. package/dist/commands/setup-ide.d.ts +15 -0
  58. package/dist/commands/setup-ide.d.ts.map +1 -0
  59. package/dist/commands/setup-ide.js +250 -0
  60. package/dist/commands/setup-ide.js.map +1 -0
  61. package/dist/commands/slice.d.ts +6 -0
  62. package/dist/commands/slice.d.ts.map +1 -0
  63. package/dist/commands/slice.js +100 -0
  64. package/dist/commands/slice.js.map +1 -0
  65. package/dist/commands/status.d.ts +3 -0
  66. package/dist/commands/status.d.ts.map +1 -0
  67. package/dist/commands/status.js +209 -0
  68. package/dist/commands/status.js.map +1 -0
  69. package/dist/commands/task.d.ts +12 -0
  70. package/dist/commands/task.d.ts.map +1 -0
  71. package/dist/commands/task.js +185 -0
  72. package/dist/commands/task.js.map +1 -0
  73. package/dist/commands/update.d.ts +27 -0
  74. package/dist/commands/update.d.ts.map +1 -0
  75. package/dist/commands/update.js +172 -0
  76. package/dist/commands/update.js.map +1 -0
  77. package/dist/commands/workflow.d.ts +3 -0
  78. package/dist/commands/workflow.d.ts.map +1 -0
  79. package/dist/commands/workflow.js +204 -0
  80. package/dist/commands/workflow.js.map +1 -0
  81. package/dist/commands/worktree.d.ts +3 -0
  82. package/dist/commands/worktree.d.ts.map +1 -0
  83. package/dist/commands/worktree.js +371 -0
  84. package/dist/commands/worktree.js.map +1 -0
  85. package/dist/index.d.ts +3 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +167 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/options.d.ts +16 -0
  90. package/dist/options.d.ts.map +1 -0
  91. package/dist/options.js +29 -0
  92. package/dist/options.js.map +1 -0
  93. package/dist/output/formatter.d.ts +6 -0
  94. package/dist/output/formatter.d.ts.map +1 -0
  95. package/dist/output/formatter.js +9 -0
  96. package/dist/output/formatter.js.map +1 -0
  97. package/dist/output/styles.d.ts +15 -0
  98. package/dist/output/styles.d.ts.map +1 -0
  99. package/dist/output/styles.js +16 -0
  100. package/dist/output/styles.js.map +1 -0
  101. package/dist/output/tables.d.ts +6 -0
  102. package/dist/output/tables.d.ts.map +1 -0
  103. package/dist/output/tables.js +45 -0
  104. package/dist/output/tables.js.map +1 -0
  105. package/dist/utils/breaking-changes.d.ts +14 -0
  106. package/dist/utils/breaking-changes.d.ts.map +1 -0
  107. package/dist/utils/breaking-changes.js +11 -0
  108. package/dist/utils/breaking-changes.js.map +1 -0
  109. package/dist/utils/commandCatalog.d.ts +25 -0
  110. package/dist/utils/commandCatalog.d.ts.map +1 -0
  111. package/dist/utils/commandCatalog.js +32 -0
  112. package/dist/utils/commandCatalog.js.map +1 -0
  113. package/dist/utils/confirm.d.ts +3 -0
  114. package/dist/utils/confirm.d.ts.map +1 -0
  115. package/dist/utils/confirm.js +12 -0
  116. package/dist/utils/confirm.js.map +1 -0
  117. package/dist/utils/errors.d.ts +22 -0
  118. package/dist/utils/errors.d.ts.map +1 -0
  119. package/dist/utils/errors.js +63 -0
  120. package/dist/utils/errors.js.map +1 -0
  121. package/dist/utils/phaseShorthand.d.ts +23 -0
  122. package/dist/utils/phaseShorthand.d.ts.map +1 -0
  123. package/dist/utils/phaseShorthand.js +68 -0
  124. package/dist/utils/phaseShorthand.js.map +1 -0
  125. package/dist/utils/project.d.ts +60 -0
  126. package/dist/utils/project.d.ts.map +1 -0
  127. package/dist/utils/project.js +140 -0
  128. package/dist/utils/project.js.map +1 -0
  129. package/dist/utils/worktree-overlay.d.ts +31 -0
  130. package/dist/utils/worktree-overlay.d.ts.map +1 -0
  131. package/dist/utils/worktree-overlay.js +63 -0
  132. package/dist/utils/worktree-overlay.js.map +1 -0
  133. package/package.json +2 -2
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,167 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ import chalk from 'chalk';
4
+ import { Command } from 'commander';
5
+ import { registerBuildCommand } from './commands/build.js';
6
+ import { registerCheckCommand } from './commands/check.js';
7
+ import { registerFutureCommand } from './commands/future.js';
8
+ import { registerNextCommand } from './commands/next.js';
9
+ import { registerProjectCommand, projectSetAction, projectGetAction, projectUnsetAction, buildSettableFieldsHelp } from './commands/project.js';
10
+ import { registerPromptCommand } from './commands/prompt.js';
11
+ import { registerStatusCommand } from './commands/status.js';
12
+ import { registerListCommand } from './commands/list.js';
13
+ import { registerWorktreeCommand } from './commands/worktree.js';
14
+ import { registerBackupCommand } from './commands/backup.js';
15
+ import { registerConfigCommand } from './commands/config.js';
16
+ import { registerGuidesCommand } from './commands/guides.js';
17
+ import { registerInitCommand } from './commands/init.js';
18
+ import { registerInstallCommandsCommand, registerUninstallCommandsCommand } from './commands/commandInstaller.js';
19
+ import { registerSetupIdeCommand } from './commands/setup-ide.js';
20
+ import { registerUpdateCommand } from './commands/update.js';
21
+ import { handleError, setJsonMode } from './utils/errors.js';
22
+ import { buildCommandCatalog } from './utils/commandCatalog.js';
23
+ import { BREAKING_CHANGES } from './utils/breaking-changes.js';
24
+ import { withJsonOption, withProjectOption, withProjectLevelOption } from './options.js';
25
+ const require = createRequire(import.meta.url);
26
+ const { version } = require('../package.json');
27
+ const program = new Command();
28
+ program
29
+ .name('cf')
30
+ .version(version, '-v, --version', 'Output the version number')
31
+ .description('Context Forge CLI — terminal access to context assembly, project management, and workflow navigation')
32
+ .configureHelp({
33
+ styleTitle: (str) => chalk.bold(str),
34
+ styleCommandText: (str) => chalk.yellow(str),
35
+ styleSubcommandText: (str) => chalk.yellow(str),
36
+ styleOptionText: (str) => chalk.cyan(str),
37
+ styleArgumentText: (str) => chalk.magenta(str),
38
+ styleDescriptionText: (str) => str,
39
+ subcommandTerm: (cmd) => cmd.name(),
40
+ })
41
+ .addHelpText('after', `\n${chalk.bold('Common options')} (available on most commands):\n ${chalk.cyan('--project <name|id>')} Project name or ID (overrides CWD-based project detection)\n ${chalk.cyan('--json')} Output as JSON (not applicable to build/prompt get)`);
42
+ // Workflow commands
43
+ registerBuildCommand(program);
44
+ registerCheckCommand(program);
45
+ registerFutureCommand(program);
46
+ registerNextCommand(program);
47
+ registerProjectCommand(program);
48
+ registerPromptCommand(program);
49
+ registerStatusCommand(program);
50
+ // Top-level shortcuts for project get/set/unset
51
+ const getCmd = program
52
+ .command('get')
53
+ .description('Show details for the active project (shortcut for cf project get)');
54
+ withJsonOption(getCmd);
55
+ withProjectOption(getCmd);
56
+ withProjectLevelOption(getCmd);
57
+ getCmd.action(async (opts) => {
58
+ try {
59
+ await projectGetAction(opts);
60
+ }
61
+ catch (err) {
62
+ handleError(err);
63
+ }
64
+ });
65
+ const setCmd = program
66
+ .command('set [field] [value]')
67
+ .description('Set a field on the active project (shortcut for cf project set)');
68
+ withProjectOption(setCmd);
69
+ withProjectLevelOption(setCmd);
70
+ setCmd.addHelpText('after', buildSettableFieldsHelp)
71
+ .action(async (field, val, opts) => {
72
+ // Allow `cf set date` (no value) as shorthand for `cf set date now`
73
+ const resolvedVal = (!val && field && /^date/i.test(field)) ? 'now' : val;
74
+ if (!field || !resolvedVal) {
75
+ console.log(`Usage: cf set [options] <field> <value> — run cf set --help for details`);
76
+ return;
77
+ }
78
+ try {
79
+ await projectSetAction(field, resolvedVal, opts);
80
+ }
81
+ catch (err) {
82
+ handleError(err);
83
+ }
84
+ });
85
+ const unsetCmd = program
86
+ .command('unset [field]')
87
+ .description('Unset (clear) a field on the active project (shortcut for cf project unset)');
88
+ withProjectOption(unsetCmd);
89
+ withProjectLevelOption(unsetCmd);
90
+ unsetCmd.action(async (field, opts) => {
91
+ if (!field) {
92
+ console.log(`Usage: cf unset [options] <field> — run cf unset --help for details`);
93
+ return;
94
+ }
95
+ try {
96
+ await projectUnsetAction(field, opts);
97
+ }
98
+ catch (err) {
99
+ handleError(err);
100
+ }
101
+ });
102
+ // Compound workflow commands
103
+ // Artifact listing
104
+ registerListCommand(program);
105
+ // Worktree management
106
+ registerWorktreeCommand(program);
107
+ // Setup and administration
108
+ registerBackupCommand(program);
109
+ registerConfigCommand(program);
110
+ registerGuidesCommand(program);
111
+ registerInitCommand(program);
112
+ registerInstallCommandsCommand(program);
113
+ registerUninstallCommandsCommand(program);
114
+ registerSetupIdeCommand(program);
115
+ registerUpdateCommand(program);
116
+ // Version introspection
117
+ const versionCmd = program
118
+ .command('version')
119
+ .description('Show version information (use --json for machine-readable output)');
120
+ withJsonOption(versionCmd);
121
+ versionCmd.action(async (opts) => {
122
+ if (opts.json) {
123
+ let guideVersion = null;
124
+ try {
125
+ const { GuideDetector } = await import('@context-forge/core/node');
126
+ const detector = new GuideDetector();
127
+ const info = await detector.detect(process.cwd());
128
+ guideVersion = info.version;
129
+ }
130
+ catch {
131
+ // Guide detection is best-effort
132
+ }
133
+ const output = {
134
+ name: '@context-forge/cli',
135
+ version,
136
+ guideVersion,
137
+ breaking: BREAKING_CHANGES,
138
+ };
139
+ process.stdout.write(JSON.stringify(output, null, 2) + '\n');
140
+ }
141
+ else {
142
+ process.stdout.write(`@context-forge/cli v${version}\n`);
143
+ }
144
+ });
145
+ // Machine-readable help
146
+ const helpCmd = program
147
+ .command('help')
148
+ .description('Display help information (use --json for machine-readable catalog)');
149
+ withJsonOption(helpCmd);
150
+ helpCmd.action((opts) => {
151
+ if (opts.json) {
152
+ const catalog = buildCommandCatalog(program, version);
153
+ process.stdout.write(JSON.stringify(catalog, null, 2) + '\n');
154
+ }
155
+ else {
156
+ program.outputHelp();
157
+ }
158
+ });
159
+ // Catch unhandled errors at top level
160
+ process.on('uncaughtException', handleError);
161
+ process.on('unhandledRejection', handleError);
162
+ // Detect --json in argv to enable structured error output before parsing
163
+ if (process.argv.includes('--json') || process.env.CF_JSON === '1') {
164
+ setJsonMode();
165
+ }
166
+ program.parse();
167
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Command } from 'commander';
2
+ /** -j, --json — Output as JSON */
3
+ export declare function withJsonOption(cmd: Command): Command;
4
+ /** -p, --project <id> — Project ID or name (overrides default) */
5
+ export declare function withProjectOption(cmd: Command): Command;
6
+ /** -y, --yes — Skip confirmation prompt */
7
+ export declare function withYesOption(cmd: Command): Command;
8
+ /** -f, --fix — Apply non-destructive corrections (when available) */
9
+ export declare function withFixOption(cmd: Command): Command;
10
+ /** -a, --all — Show items from all worktrees */
11
+ export declare function withAllOption(cmd: Command): Command;
12
+ /** -r, --raw — Output raw content without formatting */
13
+ export declare function withRawOption(cmd: Command): Command;
14
+ /** --project-level — Force operation at project level (skip worktree routing) */
15
+ export declare function withProjectLevelOption(cmd: Command): Command;
16
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,kCAAkC;AAClC,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEvD;AAED,2CAA2C;AAC3C,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE5D"}
@@ -0,0 +1,29 @@
1
+ /** -j, --json — Output as JSON */
2
+ export function withJsonOption(cmd) {
3
+ return cmd.option('-j, --json', 'Output as JSON');
4
+ }
5
+ /** -p, --project <id> — Project ID or name (overrides default) */
6
+ export function withProjectOption(cmd) {
7
+ return cmd.option('-p, --project <id>', 'Project ID or name (overrides default)');
8
+ }
9
+ /** -y, --yes — Skip confirmation prompt */
10
+ export function withYesOption(cmd) {
11
+ return cmd.option('-y, --yes', 'Skip confirmation prompt');
12
+ }
13
+ /** -f, --fix — Apply non-destructive corrections (when available) */
14
+ export function withFixOption(cmd) {
15
+ return cmd.option('-f, --fix', 'Apply non-destructive corrections (when available)');
16
+ }
17
+ /** -a, --all — Show items from all worktrees */
18
+ export function withAllOption(cmd) {
19
+ return cmd.option('-a, --all', 'Show items from all worktrees');
20
+ }
21
+ /** -r, --raw — Output raw content without formatting */
22
+ export function withRawOption(cmd) {
23
+ return cmd.option('-r, --raw', 'Output raw content without formatting');
24
+ }
25
+ /** --project-level — Force operation at project level (skip worktree routing) */
26
+ export function withProjectLevelOption(cmd) {
27
+ return cmd.option('--project-level', 'Force operation at project level (skip worktree routing)');
28
+ }
29
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAEA,kCAAkC;AAClC,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACpD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,wCAAwC,CAAC,CAAC;AACpF,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;AAC7D,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,oDAAoD,CAAC,CAAC;AACvF,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;AAClE,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC;AAC1E,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,OAAO,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,0DAA0D,CAAC,CAAC;AACnG,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type OutputMode = 'terminal' | 'json';
2
+ /** Print structured data as formatted JSON to stdout. */
3
+ export declare function printJson(data: unknown): void;
4
+ /** Print raw text to stdout (no formatting, no trailing newline unless in text). */
5
+ export declare function printRaw(text: string): void;
6
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/output/formatter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7C,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE7C;AAED,oFAAoF;AACpF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE3C"}
@@ -0,0 +1,9 @@
1
+ /** Print structured data as formatted JSON to stdout. */
2
+ export function printJson(data) {
3
+ process.stdout.write(JSON.stringify(data, null, 2) + '\n');
4
+ }
5
+ /** Print raw text to stdout (no formatting, no trailing newline unless in text). */
6
+ export function printRaw(text) {
7
+ process.stdout.write(text);
8
+ }
9
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/output/formatter.ts"],"names":[],"mappings":"AAEA,yDAAyD;AACzD,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** Style for field labels (e.g. "Project:", "Phase:") */
2
+ export declare const label: import("chalk").ChalkInstance;
3
+ /** Style for field values */
4
+ export declare const value: import("chalk").ChalkInstance;
5
+ /** Style for section headings */
6
+ export declare const heading: import("chalk").ChalkInstance;
7
+ /** Style for secondary/subdued text */
8
+ export declare const dim: import("chalk").ChalkInstance;
9
+ /** Style for error messages */
10
+ export declare const error: import("chalk").ChalkInstance;
11
+ /** Style for success messages */
12
+ export declare const success: import("chalk").ChalkInstance;
13
+ /** Style for warning messages */
14
+ export declare const warn: import("chalk").ChalkInstance;
15
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/output/styles.ts"],"names":[],"mappings":"AAEA,yDAAyD;AACzD,eAAO,MAAM,KAAK,+BAAa,CAAC;AAEhC,6BAA6B;AAC7B,eAAO,MAAM,KAAK,+BAAa,CAAC;AAEhC,iCAAiC;AACjC,eAAO,MAAM,OAAO,+BAAuB,CAAC;AAE5C,uCAAuC;AACvC,eAAO,MAAM,GAAG,+BAAY,CAAC;AAE7B,+BAA+B;AAC/B,eAAO,MAAM,KAAK,+BAAY,CAAC;AAE/B,iCAAiC;AACjC,eAAO,MAAM,OAAO,+BAAc,CAAC;AAEnC,iCAAiC;AACjC,eAAO,MAAM,IAAI,+BAAe,CAAC"}
@@ -0,0 +1,16 @@
1
+ import chalk from 'chalk';
2
+ /** Style for field labels (e.g. "Project:", "Phase:") */
3
+ export const label = chalk.bold;
4
+ /** Style for field values */
5
+ export const value = chalk.cyan;
6
+ /** Style for section headings */
7
+ export const heading = chalk.bold.underline;
8
+ /** Style for secondary/subdued text */
9
+ export const dim = chalk.dim;
10
+ /** Style for error messages */
11
+ export const error = chalk.red;
12
+ /** Style for success messages */
13
+ export const success = chalk.green;
14
+ /** Style for warning messages */
15
+ export const warn = chalk.yellow;
16
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/output/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,yDAAyD;AACzD,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AAEhC,6BAA6B;AAC7B,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AAEhC,iCAAiC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAE5C,uCAAuC;AACvC,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAE7B,+BAA+B;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;AAE/B,iCAAiC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AAEnC,iCAAiC;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Render a borderless table with bold/cyan headers and an underline separator.
3
+ * Matches orchestration CLI style: no cell borders, column-aligned with padding.
4
+ */
5
+ export declare function renderTable(headers: string[], rows: string[][], rowPrefixes?: string[]): string;
6
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/output/tables.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,MAAM,CAsCR"}
@@ -0,0 +1,45 @@
1
+ import chalk from 'chalk';
2
+ /**
3
+ * Render a borderless table with bold/cyan headers and an underline separator.
4
+ * Matches orchestration CLI style: no cell borders, column-aligned with padding.
5
+ */
6
+ export function renderTable(headers, rows, rowPrefixes) {
7
+ // Calculate column widths from headers and data
8
+ const colWidths = headers.map((h, i) => {
9
+ const dataMax = rows.reduce((max, row) => Math.max(max, stripAnsi(row[i] ?? '').length), 0);
10
+ return Math.max(stripAnsi(h).length, dataMax);
11
+ });
12
+ const pad = 2; // spacing between columns
13
+ const indent = ' ';
14
+ const lines = [];
15
+ // Header row — bold cyan
16
+ const headerLine = headers
17
+ .map((h, i) => chalk.bold.cyan(h.padEnd(colWidths[i])))
18
+ .join(' '.repeat(pad));
19
+ lines.push(indent + headerLine);
20
+ // Underline — thin dash under each column
21
+ const underline = colWidths
22
+ .map((w) => '─'.repeat(w))
23
+ .join(' '.repeat(pad));
24
+ lines.push(indent + chalk.dim(underline));
25
+ // Data rows
26
+ for (let r = 0; r < rows.length; r++) {
27
+ const row = rows[r];
28
+ const prefix = rowPrefixes ? rowPrefixes[r] : indent;
29
+ const rowLine = row
30
+ .map((cell, i) => {
31
+ const visible = stripAnsi(cell ?? '');
32
+ const padding = colWidths[i] - visible.length;
33
+ return (cell ?? '') + ' '.repeat(Math.max(0, padding));
34
+ })
35
+ .join(' '.repeat(pad));
36
+ lines.push(prefix + rowLine);
37
+ }
38
+ return lines.join('\n');
39
+ }
40
+ /** Strip ANSI escape codes to get visible character length. */
41
+ function stripAnsi(str) {
42
+ // eslint-disable-next-line no-control-regex
43
+ return str.replace(/\x1B\[[0-9;]*m/g, '');
44
+ }
45
+ //# sourceMappingURL=tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/output/tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,OAAiB,EACjB,IAAgB,EAChB,WAAsB;IAEtB,gDAAgD;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,0BAA0B;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,yBAAyB;IACzB,MAAM,UAAU,GAAG,OAAO;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IAEhC,0CAA0C;IAC1C,MAAM,SAAS,GAAG,SAAS;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACzB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1C,YAAY;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACrD,MAAM,OAAO,GAAG,GAAG;aAChB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACf,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9C,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+DAA+D;AAC/D,SAAS,SAAS,CAAC,GAAW;IAC5B,4CAA4C;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,14 @@
1
+ /** A breaking CLI change that agents should be aware of. */
2
+ export interface BreakingChange {
3
+ /** Version that introduced the breaking change. */
4
+ since: string;
5
+ /** Human-readable description of what changed. */
6
+ change: string;
7
+ }
8
+ /**
9
+ * Breaking changes since the last minor version bump.
10
+ * Manually maintained — add entries when making breaking CLI changes.
11
+ * Clear this array when bumping the minor version.
12
+ */
13
+ export declare const BREAKING_CHANGES: BreakingChange[];
14
+ //# sourceMappingURL=breaking-changes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breaking-changes.d.ts","sourceRoot":"","sources":["../../src/utils/breaking-changes.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAI5C,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Breaking changes since the last minor version bump.
3
+ * Manually maintained — add entries when making breaking CLI changes.
4
+ * Clear this array when bumping the minor version.
5
+ */
6
+ export const BREAKING_CHANGES = [
7
+ { since: '0.6.20', change: 'cf slice list → cf list slices (and other artifact list commands)' },
8
+ { since: '0.6.23', change: 'Bare cf build no longer outputs raw prompt — use cf build --json or /cf:build slash command' },
9
+ { since: '0.6.26', change: 'Compound commands (cf concept, cf arch, cf slice, cf tasks, cf implement, cf plan, cf initiatives) removed — use cf set + cf build, or Squadron (sq) equivalents' },
10
+ ];
11
+ //# sourceMappingURL=breaking-changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breaking-changes.js","sourceRoot":"","sources":["../../src/utils/breaking-changes.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,mEAAmE,EAAE;IAChG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,6FAA6F,EAAE;IAC1H,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,kKAAkK,EAAE;CAChM,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { Command } from 'commander';
2
+ interface CatalogArg {
3
+ name: string;
4
+ required: boolean;
5
+ description: string;
6
+ }
7
+ interface CatalogOption {
8
+ flag: string;
9
+ description: string;
10
+ }
11
+ interface CatalogCommand {
12
+ name: string;
13
+ description: string;
14
+ args: CatalogArg[];
15
+ options: CatalogOption[];
16
+ subcommands: CatalogCommand[];
17
+ }
18
+ export interface CommandCatalog {
19
+ version: string;
20
+ commands: CatalogCommand[];
21
+ }
22
+ /** Walk the Commander tree and produce a machine-readable command catalog. */
23
+ export declare function buildCommandCatalog(program: Command, version: string): CommandCatalog;
24
+ export {};
25
+ //# sourceMappingURL=commandCatalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandCatalog.d.ts","sourceRoot":"","sources":["../../src/utils/commandCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAgCD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAMrF"}
@@ -0,0 +1,32 @@
1
+ function buildCommandEntry(cmd) {
2
+ // Filter out default help option and version option
3
+ const options = cmd.options
4
+ .filter((o) => !o.flags.includes('--help') && !o.flags.includes('--version'))
5
+ .map((o) => ({
6
+ flag: o.flags,
7
+ description: o.description,
8
+ }));
9
+ const args = (cmd.registeredArguments ?? []).map((a) => ({
10
+ name: a.name(),
11
+ required: a.required,
12
+ description: a.description,
13
+ }));
14
+ const subcommands = cmd.commands
15
+ .filter((sub) => sub.name() !== 'help')
16
+ .map((sub) => buildCommandEntry(sub));
17
+ return {
18
+ name: cmd.name(),
19
+ description: cmd.description(),
20
+ args,
21
+ options,
22
+ subcommands,
23
+ };
24
+ }
25
+ /** Walk the Commander tree and produce a machine-readable command catalog. */
26
+ export function buildCommandCatalog(program, version) {
27
+ const commands = program.commands
28
+ .filter((cmd) => cmd.name() !== 'help')
29
+ .map((cmd) => buildCommandEntry(cmd));
30
+ return { version, commands };
31
+ }
32
+ //# sourceMappingURL=commandCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandCatalog.js","sourceRoot":"","sources":["../../src/utils/commandCatalog.ts"],"names":[],"mappings":"AA0BA,SAAS,iBAAiB,CAAC,GAAY;IACrC,oDAAoD;IACpD,MAAM,OAAO,GAAoB,GAAG,CAAC,OAAO;SACzC,MAAM,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;SAC/F,GAAG,CAAC,CAAC,CAAyC,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,CAAC,KAAK;QACb,WAAW,EAAE,CAAC,CAAC,WAAW;KAC3B,CAAC,CAAC,CAAC;IAEN,MAAM,IAAI,GAAiB,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAC5D,CAAC,CAAiE,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,WAAW,EAAE,CAAC,CAAC,WAAW;KAC3B,CAAC,CACH,CAAC;IAEF,MAAM,WAAW,GAAqB,GAAG,CAAC,QAAQ;SAC/C,MAAM,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;SAC/C,GAAG,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjD,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE;QAC9B,IAAI;QACJ,OAAO;QACP,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,OAAe;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;SAC9B,MAAM,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;SAC/C,GAAG,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Prompt user for y/N confirmation via stdin. Returns true if confirmed. */
2
+ export declare function askConfirmation(prompt: string): Promise<boolean>;
3
+ //# sourceMappingURL=confirm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/utils/confirm.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhE"}
@@ -0,0 +1,12 @@
1
+ import * as readline from 'node:readline';
2
+ /** Prompt user for y/N confirmation via stdin. Returns true if confirmed. */
3
+ export function askConfirmation(prompt) {
4
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
5
+ return new Promise((resolve) => {
6
+ rl.question(prompt, (answer) => {
7
+ rl.close();
8
+ resolve(answer.trim().toLowerCase() === 'y');
9
+ });
10
+ });
11
+ }
12
+ //# sourceMappingURL=confirm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/utils/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** Standard error codes for machine-readable error responses. */
2
+ export type ErrorCode = 'PROJECT_NOT_FOUND' | 'FIELD_NOT_FOUND' | 'INVALID_ARGUMENT' | 'INVALID_VALUE' | 'MISSING_CONFIG' | 'ARTIFACT_NOT_FOUND' | 'READ_ONLY' | 'ALREADY_EXISTS';
3
+ /**
4
+ * User-facing error — printed without stack trace.
5
+ * Use for expected failure conditions (missing config, invalid arguments, etc).
6
+ */
7
+ export declare class UserError extends Error {
8
+ code?: ErrorCode;
9
+ suggestion?: string;
10
+ constructor(message: string, code?: ErrorCode, suggestion?: string);
11
+ }
12
+ /** Enable JSON-structured error output. Called when --json is parsed. */
13
+ export declare function setJsonMode(): void;
14
+ /** Check if JSON mode is active (flag or CF_JSON env var). */
15
+ export declare function isJsonMode(): boolean;
16
+ /**
17
+ * Top-level error handler. Prints the message and exits with code 1.
18
+ * In JSON mode, outputs structured JSON to stderr.
19
+ * Otherwise, UserErrors get a clean message; unexpected errors get a brief summary.
20
+ */
21
+ export declare function handleError(err: unknown): never;
22
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,MAAM,SAAS,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,eAAe,GACf,gBAAgB,GAChB,oBAAoB,GACpB,WAAW,GACX,gBAAgB,CAAC;AAErB;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAER,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM;CAMnE;AAKD,yEAAyE;AACzE,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CA0B/C"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * User-facing error — printed without stack trace.
3
+ * Use for expected failure conditions (missing config, invalid arguments, etc).
4
+ */
5
+ export class UserError extends Error {
6
+ code;
7
+ suggestion;
8
+ constructor(message, code, suggestion) {
9
+ super(message);
10
+ this.name = 'UserError';
11
+ this.code = code;
12
+ this.suggestion = suggestion;
13
+ }
14
+ }
15
+ /** Module-level JSON mode flag — set during option parsing. */
16
+ let jsonMode = false;
17
+ /** Enable JSON-structured error output. Called when --json is parsed. */
18
+ export function setJsonMode() {
19
+ jsonMode = true;
20
+ }
21
+ /** Check if JSON mode is active (flag or CF_JSON env var). */
22
+ export function isJsonMode() {
23
+ return jsonMode || process.env.CF_JSON === '1';
24
+ }
25
+ /**
26
+ * Top-level error handler. Prints the message and exits with code 1.
27
+ * In JSON mode, outputs structured JSON to stderr.
28
+ * Otherwise, UserErrors get a clean message; unexpected errors get a brief summary.
29
+ */
30
+ export function handleError(err) {
31
+ if (isJsonMode()) {
32
+ const jsonError = { error: true };
33
+ if (err instanceof UserError) {
34
+ jsonError.code = err.code ?? 'UNKNOWN';
35
+ jsonError.message = err.message;
36
+ if (err.suggestion)
37
+ jsonError.suggestion = err.suggestion;
38
+ }
39
+ else if (err instanceof Error) {
40
+ jsonError.code = 'UNKNOWN';
41
+ jsonError.message = err.message;
42
+ }
43
+ else {
44
+ jsonError.code = 'UNKNOWN';
45
+ jsonError.message = String(err);
46
+ }
47
+ process.stderr.write(JSON.stringify(jsonError) + '\n');
48
+ }
49
+ else {
50
+ if (err instanceof UserError) {
51
+ const msg = err.suggestion ? `${err.message}\n ${err.suggestion}` : err.message;
52
+ console.error(msg);
53
+ }
54
+ else if (err instanceof Error) {
55
+ console.error(`Error: ${err.message}`);
56
+ }
57
+ else {
58
+ console.error(`Error: ${String(err)}`);
59
+ }
60
+ }
61
+ process.exit(1);
62
+ }
63
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,IAAI,CAAa;IACjB,UAAU,CAAU;IAEpB,YAAY,OAAe,EAAE,IAAgB,EAAE,UAAmB;QAChE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED,+DAA+D;AAC/D,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,yEAAyE;AACzE,MAAM,UAAU,WAAW;IACzB,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,UAAU,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC3D,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;YACvC,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAChC,IAAI,GAAG,CAAC,UAAU;gBAAE,SAAS,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAC5D,CAAC;aAAM,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC;YAC3B,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC;YAC3B,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Parse phase shorthands from the system prompt file.
3
+ *
4
+ * Extracts headings matching `(Phase n)` or `(Phase n.m)` and builds
5
+ * a map: { P1: 'Concept', P2: 'Architecture', ... }
6
+ *
7
+ * The prompt file is resolved from the project path.
8
+ */
9
+ export declare function getPhaseShorthands(projectPath: string): Promise<Map<string, string>>;
10
+ /** Clear the cached shorthands (for testing). */
11
+ export declare function clearPhaseShorthandCache(): void;
12
+ /**
13
+ * Resolve a phase input (name, shorthand, or key) to a prompt key suitable
14
+ * for SystemPromptParser.getPromptForInstruction().
15
+ *
16
+ * Resolution order:
17
+ * 1. Phase shorthand (P1–P7) → resolved name
18
+ * 2. Otherwise: return as-is (case-insensitive matching handled by parser)
19
+ *
20
+ * Hyphens and spaces are interchangeable.
21
+ */
22
+ export declare function resolvePhaseInput(input: string, projectPath: string): Promise<string>;
23
+ //# sourceMappingURL=phaseShorthand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phaseShorthand.d.ts","sourceRoot":"","sources":["../../src/utils/phaseShorthand.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAyB1F;AAED,iDAAiD;AACjD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAajB"}