takt 0.2.0 → 0.2.1

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 (123) hide show
  1. package/README.md +55 -15
  2. package/dist/agents/runner.d.ts +3 -1
  3. package/dist/agents/runner.d.ts.map +1 -1
  4. package/dist/agents/runner.js +15 -0
  5. package/dist/agents/runner.js.map +1 -1
  6. package/dist/claude/client.d.ts +3 -1
  7. package/dist/claude/client.d.ts.map +1 -1
  8. package/dist/claude/client.js +17 -0
  9. package/dist/claude/client.js.map +1 -1
  10. package/dist/cli.d.ts +9 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +64 -18
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/addTask.d.ts.map +1 -1
  15. package/dist/commands/addTask.js +27 -9
  16. package/dist/commands/addTask.js.map +1 -1
  17. package/dist/commands/help.d.ts.map +1 -1
  18. package/dist/commands/help.js +5 -3
  19. package/dist/commands/help.js.map +1 -1
  20. package/dist/commands/index.d.ts +1 -0
  21. package/dist/commands/index.d.ts.map +1 -1
  22. package/dist/commands/index.js +1 -0
  23. package/dist/commands/index.js.map +1 -1
  24. package/dist/commands/reviewTasks.d.ts +32 -0
  25. package/dist/commands/reviewTasks.d.ts.map +1 -0
  26. package/dist/commands/reviewTasks.js +198 -0
  27. package/dist/commands/reviewTasks.js.map +1 -0
  28. package/dist/commands/taskExecution.d.ts +16 -2
  29. package/dist/commands/taskExecution.d.ts.map +1 -1
  30. package/dist/commands/taskExecution.js +75 -39
  31. package/dist/commands/taskExecution.js.map +1 -1
  32. package/dist/commands/watchTasks.d.ts.map +1 -1
  33. package/dist/commands/watchTasks.js +6 -36
  34. package/dist/commands/watchTasks.js.map +1 -1
  35. package/dist/commands/workflowExecution.d.ts +5 -1
  36. package/dist/commands/workflowExecution.d.ts.map +1 -1
  37. package/dist/commands/workflowExecution.js +35 -12
  38. package/dist/commands/workflowExecution.js.map +1 -1
  39. package/dist/config/initialization.d.ts +2 -0
  40. package/dist/config/initialization.d.ts.map +1 -1
  41. package/dist/config/initialization.js +12 -2
  42. package/dist/config/initialization.js.map +1 -1
  43. package/dist/config/paths.d.ts +1 -1
  44. package/dist/config/paths.d.ts.map +1 -1
  45. package/dist/config/paths.js +1 -1
  46. package/dist/config/paths.js.map +1 -1
  47. package/dist/config/sessionStore.d.ts +5 -0
  48. package/dist/config/sessionStore.d.ts.map +1 -1
  49. package/dist/config/sessionStore.js +1 -1
  50. package/dist/config/sessionStore.js.map +1 -1
  51. package/dist/config/workflowLoader.d.ts.map +1 -1
  52. package/dist/config/workflowLoader.js +1 -0
  53. package/dist/config/workflowLoader.js.map +1 -1
  54. package/dist/models/schemas.d.ts +22 -0
  55. package/dist/models/schemas.d.ts.map +1 -1
  56. package/dist/models/schemas.js +8 -0
  57. package/dist/models/schemas.js.map +1 -1
  58. package/dist/models/types.d.ts +8 -2
  59. package/dist/models/types.d.ts.map +1 -1
  60. package/dist/prompt/index.d.ts +60 -11
  61. package/dist/prompt/index.d.ts.map +1 -1
  62. package/dist/prompt/index.js +246 -72
  63. package/dist/prompt/index.js.map +1 -1
  64. package/dist/providers/claude.d.ts.map +1 -1
  65. package/dist/providers/claude.js +2 -0
  66. package/dist/providers/claude.js.map +1 -1
  67. package/dist/providers/index.d.ts +3 -1
  68. package/dist/providers/index.d.ts.map +1 -1
  69. package/dist/providers/index.js.map +1 -1
  70. package/dist/task/autoCommit.d.ts +28 -0
  71. package/dist/task/autoCommit.d.ts.map +1 -0
  72. package/dist/task/autoCommit.js +68 -0
  73. package/dist/task/autoCommit.js.map +1 -0
  74. package/dist/task/index.d.ts +2 -1
  75. package/dist/task/index.d.ts.map +1 -1
  76. package/dist/task/index.js +2 -1
  77. package/dist/task/index.js.map +1 -1
  78. package/dist/task/worktree.d.ts +39 -0
  79. package/dist/task/worktree.d.ts.map +1 -1
  80. package/dist/task/worktree.js +111 -2
  81. package/dist/task/worktree.js.map +1 -1
  82. package/dist/utils/debug.d.ts +6 -1
  83. package/dist/utils/debug.d.ts.map +1 -1
  84. package/dist/utils/debug.js +30 -24
  85. package/dist/utils/debug.js.map +1 -1
  86. package/dist/utils/index.d.ts +1 -0
  87. package/dist/utils/index.d.ts.map +1 -1
  88. package/dist/utils/index.js +1 -0
  89. package/dist/utils/index.js.map +1 -1
  90. package/dist/utils/session.d.ts +20 -0
  91. package/dist/utils/session.d.ts.map +1 -1
  92. package/dist/utils/session.js +32 -3
  93. package/dist/utils/session.js.map +1 -1
  94. package/dist/utils/text.d.ts +22 -0
  95. package/dist/utils/text.d.ts.map +1 -0
  96. package/dist/utils/text.js +54 -0
  97. package/dist/utils/text.js.map +1 -0
  98. package/dist/workflow/engine.d.ts +5 -6
  99. package/dist/workflow/engine.d.ts.map +1 -1
  100. package/dist/workflow/engine.js +32 -12
  101. package/dist/workflow/engine.js.map +1 -1
  102. package/dist/workflow/index.d.ts +2 -2
  103. package/dist/workflow/index.d.ts.map +1 -1
  104. package/dist/workflow/index.js +2 -2
  105. package/dist/workflow/index.js.map +1 -1
  106. package/dist/workflow/instruction-builder.d.ts +31 -2
  107. package/dist/workflow/instruction-builder.d.ts.map +1 -1
  108. package/dist/workflow/instruction-builder.js +69 -1
  109. package/dist/workflow/instruction-builder.js.map +1 -1
  110. package/dist/workflow/transitions.d.ts.map +1 -1
  111. package/dist/workflow/transitions.js +1 -0
  112. package/dist/workflow/transitions.js.map +1 -1
  113. package/dist/workflow/types.d.ts +5 -1
  114. package/dist/workflow/types.d.ts.map +1 -1
  115. package/package.json +1 -1
  116. package/resources/global/en/workflows/default.yaml +22 -1
  117. package/resources/global/en/workflows/simple.yaml +18 -1
  118. package/resources/global/ja/agents/default/ai-reviewer.md +24 -1
  119. package/resources/global/ja/agents/default/architect.md +37 -4
  120. package/resources/global/ja/agents/default/coder.md +1 -0
  121. package/resources/global/ja/workflows/default.yaml +27 -2
  122. package/resources/global/ja/workflows/expert-review.yaml +169 -10
  123. package/resources/global/ja/workflows/simple.yaml +18 -1
@@ -1,32 +1,81 @@
1
1
  /**
2
2
  * Interactive prompts for CLI
3
3
  *
4
- * Provides simple input prompts for user interaction.
4
+ * Provides cursor-based selection menus using arrow keys.
5
+ * Users navigate with ↑/↓ keys and confirm with Enter.
5
6
  */
6
- /**
7
- * Prompt user to select from a list of options
8
- * @returns Selected option or null if cancelled
9
- */
10
- export declare function selectOption<T extends string>(message: string, options: {
7
+ /** Option type for selectOption */
8
+ export interface SelectOptionItem<T extends string> {
11
9
  label: string;
12
10
  value: T;
13
11
  description?: string;
14
12
  details?: string[];
15
- }[]): Promise<T | null>;
13
+ }
14
+ /**
15
+ * Render the menu options to the terminal.
16
+ * Writes directly to stdout using ANSI escape codes.
17
+ * Labels are truncated to fit within the terminal width.
18
+ * Exported for testing.
19
+ */
20
+ export declare function renderMenu<T extends string>(options: SelectOptionItem<T>[], selectedIndex: number, hasCancelOption: boolean): string[];
21
+ /**
22
+ * Count total rendered lines for a set of options.
23
+ * Exported for testing.
24
+ */
25
+ export declare function countRenderedLines<T extends string>(options: SelectOptionItem<T>[], hasCancelOption: boolean): number;
26
+ /** Result of handling a key input */
27
+ export type KeyInputResult = {
28
+ action: 'move';
29
+ newIndex: number;
30
+ } | {
31
+ action: 'confirm';
32
+ selectedIndex: number;
33
+ } | {
34
+ action: 'cancel';
35
+ cancelIndex: number;
36
+ } | {
37
+ action: 'exit';
38
+ } | {
39
+ action: 'none';
40
+ };
41
+ /**
42
+ * Pure function for key input state transitions.
43
+ * Maps a key string to an action and new state.
44
+ * Exported for testing.
45
+ */
46
+ export declare function handleKeyInput(key: string, currentIndex: number, totalItems: number, hasCancelOption: boolean, optionCount: number): KeyInputResult;
47
+ /**
48
+ * Prompt user to select from a list of options using cursor navigation.
49
+ * @returns Selected option or null if cancelled
50
+ */
51
+ export declare function selectOption<T extends string>(message: string, options: SelectOptionItem<T>[]): Promise<T | null>;
16
52
  /**
17
53
  * Prompt user for simple text input
18
54
  * @returns User input or null if cancelled
19
55
  */
20
56
  export declare function promptInput(message: string): Promise<string | null>;
21
57
  /**
22
- * Prompt user to select from a list of options with a default value
23
- * User can press Enter to select default, or enter a number to select specific option
24
- * @returns Selected option value
58
+ * Read multiline input from a readable stream.
59
+ * An empty line finishes input. If the first line is empty, returns null.
60
+ * Exported for testing.
61
+ */
62
+ export declare function readMultilineFromStream(input: NodeJS.ReadableStream): Promise<string | null>;
63
+ /**
64
+ * Prompt user for multiline text input.
65
+ * Each line is entered with Enter. An empty line finishes input.
66
+ * If the first line is empty, returns null (cancel).
67
+ * @returns Multiline text or null if cancelled
68
+ */
69
+ export declare function promptMultilineInput(message: string): Promise<string | null>;
70
+ /**
71
+ * Prompt user to select from a list of options with a default value.
72
+ * Uses cursor navigation. Enter immediately selects the default.
73
+ * @returns Selected option value, or null if cancelled (ESC pressed)
25
74
  */
26
75
  export declare function selectOptionWithDefault<T extends string>(message: string, options: {
27
76
  label: string;
28
77
  value: T;
29
- }[], defaultValue: T): Promise<T>;
78
+ }[], defaultValue: T): Promise<T | null>;
30
79
  /**
31
80
  * Prompt user for yes/no confirmation
32
81
  * @returns true for yes, false for no
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;GAGG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,EACjD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,GAC/E,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAiDnB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBzE;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAC5D,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,EAAE,EACtC,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,CAAC,CAgDZ;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBlF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,mCAAmC;AACnC,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAC9B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,OAAO,GACvB,MAAM,EAAE,CAuCV;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAC9B,eAAe,EAAE,OAAO,GACvB,MAAM,CASR;AAED,qCAAqC;AACrC,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,MAAM,GAClB,cAAc,CAsBhB;AAsHD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,EACjD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAC7B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAiBnB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBzE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgC5F;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIlF;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAC5D,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,EAAE,EACtC,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CA2BnB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBlF"}
@@ -1,57 +1,203 @@
1
1
  /**
2
2
  * Interactive prompts for CLI
3
3
  *
4
- * Provides simple input prompts for user interaction.
4
+ * Provides cursor-based selection menus using arrow keys.
5
+ * Users navigate with ↑/↓ keys and confirm with Enter.
5
6
  */
6
7
  import * as readline from 'node:readline';
7
8
  import chalk from 'chalk';
9
+ import { truncateText } from '../utils/text.js';
8
10
  /**
9
- * Prompt user to select from a list of options
10
- * @returns Selected option or null if cancelled
11
+ * Render the menu options to the terminal.
12
+ * Writes directly to stdout using ANSI escape codes.
13
+ * Labels are truncated to fit within the terminal width.
14
+ * Exported for testing.
11
15
  */
12
- export async function selectOption(message, options) {
13
- const rl = readline.createInterface({
14
- input: process.stdin,
15
- output: process.stdout,
16
- });
17
- console.log();
18
- console.log(chalk.cyan(message));
19
- console.log();
20
- options.forEach((opt, idx) => {
21
- console.log(chalk.yellow(` ${idx + 1}. `) + opt.label);
22
- // Display description if provided
16
+ export function renderMenu(options, selectedIndex, hasCancelOption) {
17
+ const maxWidth = process.stdout.columns || 80;
18
+ // Prefix " ❯ " = 4 visible columns (2 spaces + cursor + space)
19
+ const labelPrefix = 4;
20
+ // Description prefix " " = 5 visible columns
21
+ const descPrefix = 5;
22
+ // Detail prefix " • " = 9 visible columns
23
+ const detailPrefix = 9;
24
+ const lines = [];
25
+ for (let i = 0; i < options.length; i++) {
26
+ const opt = options[i];
27
+ const isSelected = i === selectedIndex;
28
+ const cursor = isSelected ? chalk.cyan('❯') : ' ';
29
+ const truncatedLabel = truncateText(opt.label, maxWidth - labelPrefix);
30
+ const label = isSelected ? chalk.cyan.bold(truncatedLabel) : truncatedLabel;
31
+ lines.push(` ${cursor} ${label}`);
23
32
  if (opt.description) {
24
- console.log(chalk.gray(` ${opt.description}`));
33
+ const truncatedDesc = truncateText(opt.description, maxWidth - descPrefix);
34
+ lines.push(chalk.gray(` ${truncatedDesc}`));
25
35
  }
26
- // Display additional details if provided
27
36
  if (opt.details && opt.details.length > 0) {
28
- opt.details.forEach((detail) => {
29
- console.log(chalk.dim(` • ${detail}`));
30
- });
37
+ for (const detail of opt.details) {
38
+ const truncatedDetail = truncateText(detail, maxWidth - detailPrefix);
39
+ lines.push(chalk.dim(` • ${truncatedDetail}`));
40
+ }
31
41
  }
32
- });
33
- console.log(chalk.gray(` 0. Cancel`));
42
+ }
43
+ if (hasCancelOption) {
44
+ const isCancelSelected = selectedIndex === options.length;
45
+ const cursor = isCancelSelected ? chalk.cyan('❯') : ' ';
46
+ const label = isCancelSelected ? chalk.cyan.bold('Cancel') : chalk.gray('Cancel');
47
+ lines.push(` ${cursor} ${label}`);
48
+ }
49
+ return lines;
50
+ }
51
+ /**
52
+ * Count total rendered lines for a set of options.
53
+ * Exported for testing.
54
+ */
55
+ export function countRenderedLines(options, hasCancelOption) {
56
+ let count = 0;
57
+ for (const opt of options) {
58
+ count++; // main label line
59
+ if (opt.description)
60
+ count++;
61
+ if (opt.details)
62
+ count += opt.details.length;
63
+ }
64
+ if (hasCancelOption)
65
+ count++;
66
+ return count;
67
+ }
68
+ /**
69
+ * Pure function for key input state transitions.
70
+ * Maps a key string to an action and new state.
71
+ * Exported for testing.
72
+ */
73
+ export function handleKeyInput(key, currentIndex, totalItems, hasCancelOption, optionCount) {
74
+ // Up arrow or vim 'k'
75
+ if (key === '\x1B[A' || key === 'k') {
76
+ return { action: 'move', newIndex: (currentIndex - 1 + totalItems) % totalItems };
77
+ }
78
+ // Down arrow or vim 'j'
79
+ if (key === '\x1B[B' || key === 'j') {
80
+ return { action: 'move', newIndex: (currentIndex + 1) % totalItems };
81
+ }
82
+ // Enter
83
+ if (key === '\r' || key === '\n') {
84
+ return { action: 'confirm', selectedIndex: currentIndex };
85
+ }
86
+ // Ctrl+C - exit process
87
+ if (key === '\x03') {
88
+ return { action: 'exit' };
89
+ }
90
+ // Escape - cancel
91
+ if (key === '\x1B') {
92
+ return { action: 'cancel', cancelIndex: hasCancelOption ? optionCount : -1 };
93
+ }
94
+ return { action: 'none' };
95
+ }
96
+ /**
97
+ * Print the menu header (message + hint).
98
+ */
99
+ function printHeader(message) {
100
+ console.log();
101
+ console.log(chalk.cyan(message));
102
+ console.log(chalk.gray(' (↑↓ to move, Enter to select)'));
34
103
  console.log();
104
+ }
105
+ /**
106
+ * Set up raw mode on stdin and return cleanup function.
107
+ */
108
+ function setupRawMode() {
109
+ const wasRaw = process.stdin.isRaw;
110
+ process.stdin.setRawMode(true);
111
+ process.stdin.resume();
112
+ return {
113
+ wasRaw,
114
+ cleanup(listener) {
115
+ process.stdin.removeListener('data', listener);
116
+ process.stdin.setRawMode(wasRaw ?? false);
117
+ process.stdin.pause();
118
+ },
119
+ };
120
+ }
121
+ /**
122
+ * Redraw the menu using relative cursor movement.
123
+ * Auto-wrap is disabled during menu interaction, so
124
+ * 1 logical line = 1 physical line, making line-count movement accurate.
125
+ */
126
+ function redrawMenu(options, selectedIndex, hasCancelOption, totalLines) {
127
+ process.stdout.write(`\x1B[${totalLines}A`); // Move up to menu start
128
+ process.stdout.write('\x1B[J'); // Clear from cursor to end
129
+ const newLines = renderMenu(options, selectedIndex, hasCancelOption);
130
+ process.stdout.write(newLines.join('\n') + '\n');
131
+ }
132
+ /**
133
+ * Interactive cursor-based menu selection.
134
+ * Uses raw mode to capture arrow key input for navigation.
135
+ */
136
+ function interactiveSelect(message, options, initialIndex, hasCancelOption) {
35
137
  return new Promise((resolve) => {
36
- rl.question(chalk.green('Select [0-' + options.length + ']: '), (answer) => {
37
- rl.close();
38
- const num = parseInt(answer.trim(), 10);
39
- if (isNaN(num) || num === 0) {
40
- resolve(null);
41
- return;
42
- }
43
- if (num >= 1 && num <= options.length) {
44
- const selected = options[num - 1];
45
- if (selected) {
46
- resolve(selected.value);
47
- return;
48
- }
138
+ const totalItems = hasCancelOption ? options.length + 1 : options.length;
139
+ let selectedIndex = initialIndex;
140
+ printHeader(message);
141
+ // Disable auto-wrap so 1 logical line = 1 physical line
142
+ process.stdout.write('\x1B[?7l');
143
+ const totalLines = countRenderedLines(options, hasCancelOption);
144
+ const lines = renderMenu(options, selectedIndex, hasCancelOption);
145
+ process.stdout.write(lines.join('\n') + '\n');
146
+ if (!process.stdin.isTTY) {
147
+ process.stdout.write('\x1B[?7h'); // Re-enable auto-wrap
148
+ resolve(initialIndex);
149
+ return;
150
+ }
151
+ const rawMode = setupRawMode();
152
+ const cleanup = (listener) => {
153
+ rawMode.cleanup(listener);
154
+ process.stdout.write('\x1B[?7h'); // Re-enable auto-wrap
155
+ };
156
+ const onKeypress = (data) => {
157
+ const result = handleKeyInput(data.toString(), selectedIndex, totalItems, hasCancelOption, options.length);
158
+ switch (result.action) {
159
+ case 'move':
160
+ selectedIndex = result.newIndex;
161
+ redrawMenu(options, selectedIndex, hasCancelOption, totalLines);
162
+ break;
163
+ case 'confirm':
164
+ cleanup(onKeypress);
165
+ resolve(result.selectedIndex);
166
+ break;
167
+ case 'cancel':
168
+ cleanup(onKeypress);
169
+ resolve(result.cancelIndex);
170
+ break;
171
+ case 'exit':
172
+ cleanup(onKeypress);
173
+ process.exit(130);
174
+ break;
175
+ case 'none':
176
+ break;
49
177
  }
50
- console.log(chalk.red('Invalid selection'));
51
- resolve(null);
52
- });
178
+ };
179
+ process.stdin.on('data', onKeypress);
53
180
  });
54
181
  }
182
+ /**
183
+ * Prompt user to select from a list of options using cursor navigation.
184
+ * @returns Selected option or null if cancelled
185
+ */
186
+ export async function selectOption(message, options) {
187
+ if (options.length === 0)
188
+ return null;
189
+ const selectedIndex = await interactiveSelect(message, options, 0, true);
190
+ // Cancel selected (last item or escape)
191
+ if (selectedIndex === options.length || selectedIndex === -1) {
192
+ return null;
193
+ }
194
+ const selected = options[selectedIndex];
195
+ if (selected) {
196
+ console.log(chalk.green(` ✓ ${selected.label}`));
197
+ return selected.value;
198
+ }
199
+ return null;
200
+ }
55
201
  /**
56
202
  * Prompt user for simple text input
57
203
  * @returns User input or null if cancelled
@@ -74,49 +220,77 @@ export async function promptInput(message) {
74
220
  });
75
221
  }
76
222
  /**
77
- * Prompt user to select from a list of options with a default value
78
- * User can press Enter to select default, or enter a number to select specific option
79
- * @returns Selected option value
223
+ * Read multiline input from a readable stream.
224
+ * An empty line finishes input. If the first line is empty, returns null.
225
+ * Exported for testing.
80
226
  */
81
- export async function selectOptionWithDefault(message, options, defaultValue) {
82
- const rl = readline.createInterface({
83
- input: process.stdin,
84
- output: process.stdout,
85
- });
86
- console.log();
87
- console.log(chalk.cyan(message));
88
- console.log();
89
- const defaultIndex = options.findIndex((opt) => opt.value === defaultValue);
90
- options.forEach((opt, idx) => {
91
- const isDefault = opt.value === defaultValue;
92
- const marker = isDefault ? chalk.green(' (default)') : '';
93
- console.log(chalk.yellow(` ${idx + 1}. `) + opt.label + marker);
94
- });
95
- console.log();
96
- const hint = defaultIndex >= 0 ? ` [Enter=${defaultIndex + 1}]` : '';
227
+ export function readMultilineFromStream(input) {
228
+ const lines = [];
229
+ const rl = readline.createInterface({ input });
97
230
  return new Promise((resolve) => {
98
- rl.question(chalk.green(`Select [1-${options.length}]${hint}: `), (answer) => {
99
- rl.close();
100
- const trimmed = answer.trim();
101
- // Empty input = use default
102
- if (!trimmed) {
103
- resolve(defaultValue);
231
+ let resolved = false;
232
+ rl.on('line', (line) => {
233
+ if (line === '' && lines.length > 0) {
234
+ resolved = true;
235
+ rl.close();
236
+ const result = lines.join('\n').trim();
237
+ resolve(result || null);
104
238
  return;
105
239
  }
106
- const num = parseInt(trimmed, 10);
107
- if (num >= 1 && num <= options.length) {
108
- const selected = options[num - 1];
109
- if (selected) {
110
- resolve(selected.value);
111
- return;
112
- }
240
+ if (line === '' && lines.length === 0) {
241
+ resolved = true;
242
+ rl.close();
243
+ resolve(null);
244
+ return;
245
+ }
246
+ lines.push(line);
247
+ });
248
+ rl.on('close', () => {
249
+ if (!resolved) {
250
+ resolve(lines.length > 0 ? lines.join('\n').trim() : null);
113
251
  }
114
- // Invalid input, use default
115
- console.log(chalk.gray(`Invalid selection, using default: ${defaultValue}`));
116
- resolve(defaultValue);
117
252
  });
118
253
  });
119
254
  }
255
+ /**
256
+ * Prompt user for multiline text input.
257
+ * Each line is entered with Enter. An empty line finishes input.
258
+ * If the first line is empty, returns null (cancel).
259
+ * @returns Multiline text or null if cancelled
260
+ */
261
+ export async function promptMultilineInput(message) {
262
+ console.log(chalk.green(`${message} (empty line to finish):`));
263
+ process.stdout.write(chalk.gray('> '));
264
+ return readMultilineFromStream(process.stdin);
265
+ }
266
+ /**
267
+ * Prompt user to select from a list of options with a default value.
268
+ * Uses cursor navigation. Enter immediately selects the default.
269
+ * @returns Selected option value, or null if cancelled (ESC pressed)
270
+ */
271
+ export async function selectOptionWithDefault(message, options, defaultValue) {
272
+ if (options.length === 0)
273
+ return defaultValue;
274
+ // Find default index
275
+ const defaultIndex = options.findIndex((opt) => opt.value === defaultValue);
276
+ const initialIndex = defaultIndex >= 0 ? defaultIndex : 0;
277
+ // Mark default in label
278
+ const decoratedOptions = options.map((opt) => ({
279
+ ...opt,
280
+ label: opt.value === defaultValue ? `${opt.label} ${chalk.green('(default)')}` : opt.label,
281
+ }));
282
+ const selectedIndex = await interactiveSelect(message, decoratedOptions, initialIndex, true);
283
+ // Cancel selected (last item) or Escape pressed
284
+ if (selectedIndex === options.length || selectedIndex === -1) {
285
+ return null;
286
+ }
287
+ const selected = options[selectedIndex];
288
+ if (selected) {
289
+ console.log(chalk.green(` ✓ ${selected.label}`));
290
+ return selected.value;
291
+ }
292
+ return defaultValue;
293
+ }
120
294
  /**
121
295
  * Prompt user for yes/no confirmation
122
296
  * @returns true for yes, false for no
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhE,qDAAqD;AACrD,qBAAa,cAAe,YAAW,QAAQ;IACvC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAiB7F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CAehI"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhE,qDAAqD;AACrD,qBAAa,cAAe,YAAW,QAAQ;IACvC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkB7F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CAgBhI"}
@@ -12,6 +12,7 @@ export class ClaudeProvider {
12
12
  model: options.model,
13
13
  systemPrompt: options.systemPrompt,
14
14
  statusPatterns: options.statusPatterns,
15
+ permissionMode: options.permissionMode,
15
16
  onStream: options.onStream,
16
17
  onPermissionRequest: options.onPermissionRequest,
17
18
  onAskUserQuestion: options.onAskUserQuestion,
@@ -26,6 +27,7 @@ export class ClaudeProvider {
26
27
  allowedTools: options.allowedTools,
27
28
  model: options.model,
28
29
  statusPatterns: options.statusPatterns,
30
+ permissionMode: options.permissionMode,
29
31
  onStream: options.onStream,
30
32
  onPermissionRequest: options.onPermissionRequest,
31
33
  onAskUserQuestion: options.onAskUserQuestion,
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAA0B,MAAM,qBAAqB,CAAC;AAI3F,qDAAqD;AACrD,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,MAAc,EAAE,OAA4B;QACxE,MAAM,WAAW,GAAsB;YACrC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;QAEF,OAAO,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc,EAAE,YAAoB,EAAE,OAA4B;QACpG,MAAM,WAAW,GAAsB;YACrC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;QAEF,OAAO,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;CACF"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAA0B,MAAM,qBAAqB,CAAC;AAI3F,qDAAqD;AACrD,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,MAAc,EAAE,OAA4B;QACxE,MAAM,WAAW,GAAsB;YACrC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;QAEF,OAAO,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc,EAAE,YAAoB,EAAE,OAA4B;QACpG,MAAM,WAAW,GAAsB;YACrC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;QAEF,OAAO,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;CACF"}
@@ -5,7 +5,7 @@
5
5
  * This enables adding new providers without modifying the runner logic.
6
6
  */
7
7
  import type { StreamCallback, PermissionHandler, AskUserQuestionHandler } from '../claude/process.js';
8
- import type { AgentResponse } from '../models/types.js';
8
+ import type { AgentResponse, PermissionMode } from '../models/types.js';
9
9
  /** Common options for all providers */
10
10
  export interface ProviderCallOptions {
11
11
  cwd: string;
@@ -14,6 +14,8 @@ export interface ProviderCallOptions {
14
14
  systemPrompt?: string;
15
15
  allowedTools?: string[];
16
16
  statusPatterns?: Record<string, string>;
17
+ /** Permission mode for tool execution (from workflow step) */
18
+ permissionMode?: PermissionMode;
17
19
  onStream?: StreamCallback;
18
20
  onPermissionRequest?: PermissionHandler;
19
21
  onAskUserQuestion?: AskUserQuestionHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACvB,oFAAoF;IACpF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE9F,oDAAoD;IACpD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3H;AAED,oBAAoB;AACpB,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AASvD;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAMxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKxE,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,8DAA8D;IAC9D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACvB,oFAAoF;IACpF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE9F,oDAAoD;IACpD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3H;AAED,oBAAoB;AACpB,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AASvD;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAMxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAwB;AACxB,MAAM,SAAS,GAAmC;IAChD,MAAM,EAAE,IAAI,cAAc,EAAE;IAC5B,KAAK,EAAE,IAAI,aAAa,EAAE;IAC1B,IAAI,EAAE,IAAI,YAAY,EAAE;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAkB;IAC9D,SAAsC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA8BzC,wBAAwB;AACxB,MAAM,SAAS,GAAmC;IAChD,MAAM,EAAE,IAAI,cAAc,EAAE;IAC5B,KAAK,EAAE,IAAI,aAAa,EAAE;IAC1B,IAAI,EAAE,IAAI,YAAY,EAAE;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAkB;IAC9D,SAAsC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Auto-commit for worktree tasks
3
+ *
4
+ * After a successful workflow completion in a worktree,
5
+ * automatically stages all changes and creates a commit.
6
+ * No co-author trailer is added.
7
+ */
8
+ export interface AutoCommitResult {
9
+ /** Whether the commit was created successfully */
10
+ success: boolean;
11
+ /** The short commit hash (if committed) */
12
+ commitHash?: string;
13
+ /** Human-readable message */
14
+ message: string;
15
+ }
16
+ /**
17
+ * Auto-commit all changes in a worktree directory.
18
+ *
19
+ * Steps:
20
+ * 1. Stage all changes (git add -A)
21
+ * 2. Check if there are staged changes (git status --porcelain)
22
+ * 3. If changes exist, create a commit with "takt: {taskName}"
23
+ *
24
+ * @param worktreeCwd - The worktree directory
25
+ * @param taskName - Task name used in commit message
26
+ */
27
+ export declare function autoCommitWorktree(worktreeCwd: string, taskName: string): AutoCommitResult;
28
+ //# sourceMappingURL=autoCommit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoCommit.d.ts","sourceRoot":"","sources":["../../src/task/autoCommit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAoD1F"}