@staticpayload/zai-code 1.0.0

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 (100) hide show
  1. package/LICENSE +678 -0
  2. package/README.md +115 -0
  3. package/bin/zcode +3 -0
  4. package/dist/apply.d.ts +44 -0
  5. package/dist/apply.d.ts.map +1 -0
  6. package/dist/apply.js +307 -0
  7. package/dist/apply.js.map +1 -0
  8. package/dist/auth.d.ts +9 -0
  9. package/dist/auth.d.ts.map +1 -0
  10. package/dist/auth.js +170 -0
  11. package/dist/auth.js.map +1 -0
  12. package/dist/cli.d.ts +3 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +179 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/commands.d.ts +15 -0
  17. package/dist/commands.d.ts.map +1 -0
  18. package/dist/commands.js +560 -0
  19. package/dist/commands.js.map +1 -0
  20. package/dist/config.d.ts +9 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +97 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/context/context_builder.d.ts +29 -0
  25. package/dist/context/context_builder.d.ts.map +1 -0
  26. package/dist/context/context_builder.js +307 -0
  27. package/dist/context/context_builder.js.map +1 -0
  28. package/dist/context/project_memory.d.ts +14 -0
  29. package/dist/context/project_memory.d.ts.map +1 -0
  30. package/dist/context/project_memory.js +142 -0
  31. package/dist/context/project_memory.js.map +1 -0
  32. package/dist/doctor.d.ts +2 -0
  33. package/dist/doctor.d.ts.map +1 -0
  34. package/dist/doctor.js +3 -0
  35. package/dist/doctor.js.map +1 -0
  36. package/dist/git.d.ts +10 -0
  37. package/dist/git.d.ts.map +1 -0
  38. package/dist/git.js +90 -0
  39. package/dist/git.js.map +1 -0
  40. package/dist/history.d.ts +14 -0
  41. package/dist/history.d.ts.map +1 -0
  42. package/dist/history.js +103 -0
  43. package/dist/history.js.map +1 -0
  44. package/dist/interactive.d.ts +6 -0
  45. package/dist/interactive.d.ts.map +1 -0
  46. package/dist/interactive.js +83 -0
  47. package/dist/interactive.js.map +1 -0
  48. package/dist/orchestrator.d.ts +11 -0
  49. package/dist/orchestrator.d.ts.map +1 -0
  50. package/dist/orchestrator.js +135 -0
  51. package/dist/orchestrator.js.map +1 -0
  52. package/dist/planner.d.ts +22 -0
  53. package/dist/planner.d.ts.map +1 -0
  54. package/dist/planner.js +259 -0
  55. package/dist/planner.js.map +1 -0
  56. package/dist/profiles.d.ts +16 -0
  57. package/dist/profiles.d.ts.map +1 -0
  58. package/dist/profiles.js +80 -0
  59. package/dist/profiles.js.map +1 -0
  60. package/dist/rollback.d.ts +27 -0
  61. package/dist/rollback.d.ts.map +1 -0
  62. package/dist/rollback.js +154 -0
  63. package/dist/rollback.js.map +1 -0
  64. package/dist/runtime.d.ts +131 -0
  65. package/dist/runtime.d.ts.map +1 -0
  66. package/dist/runtime.js +374 -0
  67. package/dist/runtime.js.map +1 -0
  68. package/dist/session.d.ts +95 -0
  69. package/dist/session.d.ts.map +1 -0
  70. package/dist/session.js +174 -0
  71. package/dist/session.js.map +1 -0
  72. package/dist/settings.d.ts +41 -0
  73. package/dist/settings.d.ts.map +1 -0
  74. package/dist/settings.js +225 -0
  75. package/dist/settings.js.map +1 -0
  76. package/dist/settings_menu.d.ts +2 -0
  77. package/dist/settings_menu.d.ts.map +1 -0
  78. package/dist/settings_menu.js +265 -0
  79. package/dist/settings_menu.js.map +1 -0
  80. package/dist/shell.d.ts +18 -0
  81. package/dist/shell.d.ts.map +1 -0
  82. package/dist/shell.js +128 -0
  83. package/dist/shell.js.map +1 -0
  84. package/dist/task_runner.d.ts +22 -0
  85. package/dist/task_runner.d.ts.map +1 -0
  86. package/dist/task_runner.js +230 -0
  87. package/dist/task_runner.js.map +1 -0
  88. package/dist/ui.d.ts +15 -0
  89. package/dist/ui.d.ts.map +1 -0
  90. package/dist/ui.js +160 -0
  91. package/dist/ui.js.map +1 -0
  92. package/dist/workspace.d.ts +17 -0
  93. package/dist/workspace.d.ts.map +1 -0
  94. package/dist/workspace.js +134 -0
  95. package/dist/workspace.js.map +1 -0
  96. package/dist/workspace_model.d.ts +45 -0
  97. package/dist/workspace_model.d.ts.map +1 -0
  98. package/dist/workspace_model.js +253 -0
  99. package/dist/workspace_model.js.map +1 -0
  100. package/package.json +45 -0
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.openSettingsMenu = openSettingsMenu;
4
+ const settings_1 = require("./settings");
5
+ // Build menu sections
6
+ function buildSections() {
7
+ return [
8
+ {
9
+ name: 'Model',
10
+ items: [
11
+ { type: 'label', text: 'Select AI model for execution' },
12
+ {
13
+ type: 'select',
14
+ key: 'model',
15
+ label: 'Model',
16
+ options: settings_1.AVAILABLE_MODELS,
17
+ getValue: (s) => s.model.current,
18
+ setValue: (s, v) => { s.model.current = v; }
19
+ },
20
+ ],
21
+ },
22
+ {
23
+ name: 'UI',
24
+ items: [
25
+ { type: 'toggle', key: 'asciiLogo', label: 'ASCII Logo', values: ['on', 'off'], getValue: (s) => s.ui.asciiLogo, setValue: (s, v) => { s.ui.asciiLogo = v; } },
26
+ { type: 'toggle', key: 'color', label: 'Color Output', values: ['auto', 'on', 'off'], getValue: (s) => s.ui.color, setValue: (s, v) => { s.ui.color = v; } },
27
+ { type: 'toggle', key: 'promptStyle', label: 'Prompt Style', values: ['compact', 'verbose'], getValue: (s) => s.ui.promptStyle, setValue: (s, v) => { s.ui.promptStyle = v; } },
28
+ ],
29
+ },
30
+ {
31
+ name: 'Execution',
32
+ items: [
33
+ { type: 'toggle', key: 'confirmationMode', label: 'Confirmation', values: ['strict', 'normal'], getValue: (s) => s.execution.confirmationMode, setValue: (s, v) => { s.execution.confirmationMode = v; } },
34
+ { type: 'number', key: 'maxPlanIterations', label: 'Max Iterations', min: 1, max: 5, getValue: (s) => s.execution.maxPlanIterations, setValue: (s, v) => { s.execution.maxPlanIterations = v; } },
35
+ { type: 'toggle', key: 'allowShellExec', label: 'Shell Execution', values: ['off', 'on'], getValue: (s) => s.execution.allowShellExec ? 'on' : 'off', setValue: (s, v) => { s.execution.allowShellExec = v === 'on'; } },
36
+ ],
37
+ },
38
+ {
39
+ name: 'Context',
40
+ items: [
41
+ { type: 'toggle', key: 'scope', label: 'Scope', values: ['open', 'touched', 'full'], getValue: (s) => s.context.scope, setValue: (s, v) => { s.context.scope = v; } },
42
+ { type: 'number', key: 'maxTokens', label: 'Max Tokens', min: 10000, max: 100000, getValue: (s) => s.context.maxTokens, setValue: (s, v) => { s.context.maxTokens = v; } },
43
+ ],
44
+ },
45
+ {
46
+ name: 'Debug',
47
+ items: [
48
+ { type: 'toggle', key: 'logging', label: 'Debug Logging', values: ['off', 'on'], getValue: (s) => s.debug.logging ? 'on' : 'off', setValue: (s, v) => { s.debug.logging = v === 'on'; } },
49
+ { type: 'toggle', key: 'errorDetail', label: 'Error Detail', values: ['brief', 'full'], getValue: (s) => s.debug.errorDetail, setValue: (s, v) => { s.debug.errorDetail = v; } },
50
+ { type: 'toggle', key: 'dumpState', label: 'Dump State', values: ['off', 'on'], getValue: (s) => s.debug.dumpState ? 'on' : 'off', setValue: (s, v) => { s.debug.dumpState = v === 'on'; } },
51
+ ],
52
+ },
53
+ {
54
+ name: 'Exit',
55
+ items: [
56
+ { type: 'action', key: 'save', label: 'Save & Exit', action: () => true },
57
+ { type: 'action', key: 'cancel', label: 'Exit Without Saving', action: () => false },
58
+ ],
59
+ },
60
+ ];
61
+ }
62
+ // Clear screen and move cursor to top
63
+ function clearScreen() {
64
+ process.stdout.write('\x1b[2J\x1b[H');
65
+ }
66
+ // Render the menu
67
+ function render(sections, sectionIndex, itemIndex, settings, warning) {
68
+ clearScreen();
69
+ const section = sections[sectionIndex];
70
+ const width = 50;
71
+ // Header
72
+ console.log('┌' + '─'.repeat(width - 2) + '┐');
73
+ console.log('│' + ' Settings'.padEnd(width - 2) + '│');
74
+ console.log('├' + '─'.repeat(width - 2) + '┤');
75
+ // Section tabs
76
+ let tabs = '│ ';
77
+ for (let i = 0; i < sections.length; i++) {
78
+ const name = sections[i].name;
79
+ if (i === sectionIndex) {
80
+ tabs += `[${name}] `;
81
+ }
82
+ else {
83
+ tabs += `${name} `;
84
+ }
85
+ }
86
+ tabs = tabs.padEnd(width - 1) + '│';
87
+ console.log(tabs);
88
+ console.log('├' + '─'.repeat(width - 2) + '┤');
89
+ // Items
90
+ const items = section.items;
91
+ for (let i = 0; i < items.length; i++) {
92
+ const item = items[i];
93
+ const selected = i === itemIndex;
94
+ const prefix = selected ? '│ > ' : '│ ';
95
+ let line = '';
96
+ if (item.type === 'label') {
97
+ line = item.text;
98
+ }
99
+ else if (item.type === 'toggle' || item.type === 'select') {
100
+ const value = item.getValue(settings);
101
+ const values = item.type === 'toggle' ? item.values : item.options;
102
+ const valueStr = values.map(v => v === value ? `[${v}]` : v).join(' ');
103
+ line = `${item.label}: ${valueStr}`;
104
+ }
105
+ else if (item.type === 'number') {
106
+ const value = item.getValue(settings);
107
+ line = `${item.label}: < ${value} > (${item.min}-${item.max})`;
108
+ }
109
+ else if (item.type === 'action') {
110
+ line = item.label;
111
+ }
112
+ console.log(prefix + line.padEnd(width - 5) + '│');
113
+ }
114
+ // Padding
115
+ const padding = Math.max(0, 8 - items.length);
116
+ for (let i = 0; i < padding; i++) {
117
+ console.log('│' + ' '.repeat(width - 2) + '│');
118
+ }
119
+ // Warning
120
+ console.log('├' + '─'.repeat(width - 2) + '┤');
121
+ if (warning) {
122
+ console.log('│ ' + warning.substring(0, width - 4).padEnd(width - 3) + '│');
123
+ }
124
+ else {
125
+ console.log('│' + ' '.repeat(width - 2) + '│');
126
+ }
127
+ // Help
128
+ console.log('├' + '─'.repeat(width - 2) + '┤');
129
+ console.log('│ ↑↓ navigate ←→ change Tab section Esc exit │');
130
+ console.log('└' + '─'.repeat(width - 2) + '┘');
131
+ }
132
+ // Main menu loop
133
+ async function openSettingsMenu() {
134
+ const sections = buildSections();
135
+ const originalSettings = JSON.parse(JSON.stringify((0, settings_1.loadSettings)()));
136
+ let settings = (0, settings_1.loadSettings)();
137
+ let sectionIndex = 0;
138
+ let itemIndex = 0;
139
+ let warning = null;
140
+ let running = true;
141
+ let shouldSave = false;
142
+ // Setup raw mode
143
+ if (process.stdin.isTTY) {
144
+ process.stdin.setRawMode(true);
145
+ }
146
+ process.stdin.resume();
147
+ process.stdin.setEncoding('utf8');
148
+ render(sections, sectionIndex, itemIndex, settings, warning);
149
+ return new Promise((resolve) => {
150
+ const handleKey = (key) => {
151
+ warning = null;
152
+ const section = sections[sectionIndex];
153
+ const items = section.items;
154
+ const item = items[itemIndex];
155
+ // Escape - exit without saving
156
+ if (key === '\x1b' || key === '\x1b\x1b') {
157
+ running = false;
158
+ shouldSave = false;
159
+ }
160
+ // Up arrow
161
+ else if (key === '\x1b[A') {
162
+ itemIndex = Math.max(0, itemIndex - 1);
163
+ // Skip labels
164
+ while (itemIndex > 0 && items[itemIndex].type === 'label') {
165
+ itemIndex--;
166
+ }
167
+ }
168
+ // Down arrow
169
+ else if (key === '\x1b[B') {
170
+ itemIndex = Math.min(items.length - 1, itemIndex + 1);
171
+ // Skip labels
172
+ while (itemIndex < items.length - 1 && items[itemIndex].type === 'label') {
173
+ itemIndex++;
174
+ }
175
+ }
176
+ // Left arrow
177
+ else if (key === '\x1b[D') {
178
+ if (item.type === 'toggle' || item.type === 'select') {
179
+ const values = item.type === 'toggle' ? item.values : item.options;
180
+ const current = item.getValue(settings);
181
+ const idx = values.indexOf(current);
182
+ const newIdx = (idx - 1 + values.length) % values.length;
183
+ item.setValue(settings, values[newIdx]);
184
+ // Warning for full repo scope
185
+ if (item.key === 'scope' && values[newIdx] === 'full') {
186
+ warning = 'Warning: Full repo may be slow';
187
+ }
188
+ }
189
+ else if (item.type === 'number') {
190
+ const current = item.getValue(settings);
191
+ const step = item.max > 1000 ? 5000 : 1;
192
+ const newVal = Math.max(item.min, current - step);
193
+ item.setValue(settings, newVal);
194
+ }
195
+ }
196
+ // Right arrow
197
+ else if (key === '\x1b[C') {
198
+ if (item.type === 'toggle' || item.type === 'select') {
199
+ const values = item.type === 'toggle' ? item.values : item.options;
200
+ const current = item.getValue(settings);
201
+ const idx = values.indexOf(current);
202
+ const newIdx = (idx + 1) % values.length;
203
+ item.setValue(settings, values[newIdx]);
204
+ if (item.key === 'scope' && values[newIdx] === 'full') {
205
+ warning = 'Warning: Full repo may be slow';
206
+ }
207
+ }
208
+ else if (item.type === 'number') {
209
+ const current = item.getValue(settings);
210
+ const step = item.max > 1000 ? 5000 : 1;
211
+ const newVal = Math.min(item.max, current + step);
212
+ item.setValue(settings, newVal);
213
+ }
214
+ }
215
+ // Tab - next section
216
+ else if (key === '\t') {
217
+ sectionIndex = (sectionIndex + 1) % sections.length;
218
+ itemIndex = 0;
219
+ // Skip labels
220
+ while (itemIndex < sections[sectionIndex].items.length - 1 && sections[sectionIndex].items[itemIndex].type === 'label') {
221
+ itemIndex++;
222
+ }
223
+ }
224
+ // Shift+Tab - previous section (usually \x1b[Z)
225
+ else if (key === '\x1b[Z') {
226
+ sectionIndex = (sectionIndex - 1 + sections.length) % sections.length;
227
+ itemIndex = 0;
228
+ while (itemIndex < sections[sectionIndex].items.length - 1 && sections[sectionIndex].items[itemIndex].type === 'label') {
229
+ itemIndex++;
230
+ }
231
+ }
232
+ // Enter
233
+ else if (key === '\r' || key === '\n') {
234
+ if (item.type === 'action') {
235
+ shouldSave = item.action();
236
+ running = false;
237
+ }
238
+ }
239
+ if (running) {
240
+ render(sections, sectionIndex, itemIndex, settings, warning);
241
+ }
242
+ else {
243
+ // Cleanup
244
+ if (process.stdin.isTTY) {
245
+ process.stdin.setRawMode(false);
246
+ }
247
+ process.stdin.pause();
248
+ process.stdin.removeListener('data', handleKey);
249
+ clearScreen();
250
+ if (shouldSave) {
251
+ (0, settings_1.saveSettings)(settings);
252
+ console.log('Settings saved.');
253
+ }
254
+ else {
255
+ // Restore original
256
+ Object.assign(settings, originalSettings);
257
+ console.log('Settings unchanged.');
258
+ }
259
+ resolve();
260
+ }
261
+ };
262
+ process.stdin.on('data', handleKey);
263
+ });
264
+ }
265
+ //# sourceMappingURL=settings_menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings_menu.js","sourceRoot":"","sources":["../src/settings_menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ declare const ALLOWED_COMMANDS: Set<string>;
2
+ declare const DANGEROUS_PATTERNS: RegExp[];
3
+ export interface ExecResult {
4
+ success: boolean;
5
+ command: string;
6
+ stdout: string;
7
+ stderr: string;
8
+ exitCode: number;
9
+ error?: string;
10
+ }
11
+ export declare function validateCommand(command: string): {
12
+ valid: boolean;
13
+ error?: string;
14
+ };
15
+ export declare function executeCommand(command: string, cwd?: string): ExecResult;
16
+ export declare function getAllowedCommands(): string[];
17
+ export { ALLOWED_COMMANDS, DANGEROUS_PATTERNS };
18
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../src/shell.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,gBAAgB,aAwBpB,CAAC;AAGH,QAAA,MAAM,kBAAkB,UAkBvB,CAAC;AAGF,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA4BnF;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CA4CxE;AAGD,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAGD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC"}
package/dist/shell.js ADDED
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DANGEROUS_PATTERNS = exports.ALLOWED_COMMANDS = void 0;
4
+ exports.validateCommand = validateCommand;
5
+ exports.executeCommand = executeCommand;
6
+ exports.getAllowedCommands = getAllowedCommands;
7
+ const child_process_1 = require("child_process");
8
+ const session_1 = require("./session");
9
+ // Allowlist of permitted commands
10
+ const ALLOWED_COMMANDS = new Set([
11
+ 'git',
12
+ 'npm',
13
+ 'pnpm',
14
+ 'yarn',
15
+ 'node',
16
+ 'npx',
17
+ 'tsc',
18
+ 'jest',
19
+ 'vitest',
20
+ 'mocha',
21
+ 'pytest',
22
+ 'go',
23
+ 'cargo',
24
+ 'make',
25
+ 'ls',
26
+ 'cat',
27
+ 'head',
28
+ 'tail',
29
+ 'wc',
30
+ 'grep',
31
+ 'find',
32
+ 'pwd',
33
+ 'echo',
34
+ ]);
35
+ exports.ALLOWED_COMMANDS = ALLOWED_COMMANDS;
36
+ // Dangerous patterns that are never allowed
37
+ const DANGEROUS_PATTERNS = [
38
+ /\|/, // Pipes
39
+ />/, // Redirects
40
+ /</, // Input redirects
41
+ /;/, // Command chaining
42
+ /&&/, // AND chaining
43
+ /\|\|/, // OR chaining
44
+ /`/, // Backticks
45
+ /\$\(/, // Command substitution
46
+ /\$\{/, // Variable expansion
47
+ /rm\s+-rf/i, // Dangerous rm
48
+ /rm\s+--no-preserve-root/i,
49
+ /sudo/i, // Sudo
50
+ /chmod\s+777/, // Dangerous chmod
51
+ /curl.*\|.*sh/i, // Curl pipe to shell
52
+ /wget.*\|.*sh/i, // Wget pipe to shell
53
+ /eval/i, // Eval
54
+ /exec/i, // Exec (the shell builtin)
55
+ ];
56
+ exports.DANGEROUS_PATTERNS = DANGEROUS_PATTERNS;
57
+ // Validate command against allowlist
58
+ function validateCommand(command) {
59
+ const trimmed = command.trim();
60
+ if (!trimmed) {
61
+ return { valid: false, error: 'Empty command' };
62
+ }
63
+ // Check for dangerous patterns
64
+ for (const pattern of DANGEROUS_PATTERNS) {
65
+ if (pattern.test(trimmed)) {
66
+ return { valid: false, error: `Dangerous pattern detected: ${pattern.source}` };
67
+ }
68
+ }
69
+ // Extract the base command
70
+ const parts = trimmed.split(/\s+/);
71
+ const baseCommand = parts[0];
72
+ if (!baseCommand) {
73
+ return { valid: false, error: 'Could not parse command' };
74
+ }
75
+ // Check allowlist
76
+ if (!ALLOWED_COMMANDS.has(baseCommand)) {
77
+ return { valid: false, error: `Command not allowed: ${baseCommand}. Allowed: ${Array.from(ALLOWED_COMMANDS).join(', ')}` };
78
+ }
79
+ return { valid: true };
80
+ }
81
+ // Execute a command safely
82
+ function executeCommand(command, cwd) {
83
+ const validation = validateCommand(command);
84
+ if (!validation.valid) {
85
+ return {
86
+ success: false,
87
+ command,
88
+ stdout: '',
89
+ stderr: '',
90
+ exitCode: -1,
91
+ error: validation.error,
92
+ };
93
+ }
94
+ const session = (0, session_1.getSession)();
95
+ const workingDir = cwd || session.workingDirectory;
96
+ const options = {
97
+ cwd: workingDir,
98
+ encoding: 'utf-8',
99
+ timeout: 30000, // 30 second timeout
100
+ maxBuffer: 1024 * 1024 * 5, // 5MB buffer
101
+ stdio: ['pipe', 'pipe', 'pipe'],
102
+ };
103
+ try {
104
+ const stdout = (0, child_process_1.execSync)(command, options);
105
+ return {
106
+ success: true,
107
+ command,
108
+ stdout: stdout || '',
109
+ stderr: '',
110
+ exitCode: 0,
111
+ };
112
+ }
113
+ catch (err) {
114
+ return {
115
+ success: false,
116
+ command,
117
+ stdout: err.stdout?.toString() || '',
118
+ stderr: err.stderr?.toString() || '',
119
+ exitCode: err.status || 1,
120
+ error: err.message,
121
+ };
122
+ }
123
+ }
124
+ // Get list of allowed commands
125
+ function getAllowedCommands() {
126
+ return Array.from(ALLOWED_COMMANDS).sort();
127
+ }
128
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../src/shell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { TaskStep } from './session';
2
+ export declare function decomposeTask(): Promise<{
3
+ success: boolean;
4
+ steps: TaskStep[];
5
+ message: string;
6
+ }>;
7
+ export declare function planCurrentStep(): Promise<{
8
+ success: boolean;
9
+ message: string;
10
+ }>;
11
+ export declare function printProgress(): void;
12
+ export declare function completeCurrentStep(): {
13
+ success: boolean;
14
+ hasMore: boolean;
15
+ message: string;
16
+ };
17
+ export declare function skipCurrentStep(): {
18
+ success: boolean;
19
+ hasMore: boolean;
20
+ message: string;
21
+ };
22
+ //# sourceMappingURL=task_runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task_runner.d.ts","sourceRoot":"","sources":["../src/task_runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAWT,MAAM,WAAW,CAAC;AAoDnB,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwDvG;AAGD,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAsDtF;AAGD,wBAAgB,aAAa,IAAI,IAAI,CA0BpC;AAGD,wBAAgB,mBAAmB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmB7F;AAGD,wBAAgB,eAAe,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBzF"}