autodev-cli 1.4.0 → 1.4.3

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 (237) hide show
  1. package/bin/autodev.js +0 -0
  2. package/out/agentBackup/archive.d.ts +44 -0
  3. package/out/agentBackup/archive.js +131 -0
  4. package/out/agentBackup/archive.js.map +1 -0
  5. package/out/agentBackup/export.d.ts +18 -0
  6. package/out/agentBackup/export.js +92 -0
  7. package/out/agentBackup/export.js.map +1 -0
  8. package/out/agentBackup/import.d.ts +21 -0
  9. package/out/agentBackup/import.js +40 -0
  10. package/out/agentBackup/import.js.map +1 -0
  11. package/out/agentBackup/index.d.ts +6 -0
  12. package/out/agentBackup/index.js +11 -0
  13. package/out/agentBackup/index.js.map +1 -0
  14. package/out/agentBackup/layout.d.ts +30 -0
  15. package/out/agentBackup/layout.js +126 -0
  16. package/out/agentBackup/layout.js.map +1 -0
  17. package/out/agentBackup/manifest.d.ts +24 -0
  18. package/out/agentBackup/manifest.js +70 -0
  19. package/out/agentBackup/manifest.js.map +1 -0
  20. package/out/agentBackup/opencodeDb.d.ts +20 -0
  21. package/out/agentBackup/opencodeDb.js +213 -0
  22. package/out/agentBackup/opencodeDb.js.map +1 -0
  23. package/out/agentBackup/sessionProviders.d.ts +35 -0
  24. package/out/agentBackup/sessionProviders.js +263 -0
  25. package/out/agentBackup/sessionProviders.js.map +1 -0
  26. package/out/agentBackup/upload.d.ts +9 -0
  27. package/out/agentBackup/upload.js +121 -0
  28. package/out/agentBackup/upload.js.map +1 -0
  29. package/out/cli.d.ts +1 -0
  30. package/out/cli.js +8 -0
  31. package/out/cli.js.map +1 -1
  32. package/out/cliExit.d.ts +34 -0
  33. package/out/cliExit.js +159 -0
  34. package/out/cliExit.js.map +1 -0
  35. package/out/commands/config.d.ts +2 -0
  36. package/out/commands/config.js +7 -7
  37. package/out/commands/config.js.map +1 -1
  38. package/out/commands/connect.d.ts +2 -0
  39. package/out/commands/connect.js +11 -0
  40. package/out/commands/connect.js.map +1 -1
  41. package/out/commands/export.d.ts +2 -0
  42. package/out/commands/export.js +79 -0
  43. package/out/commands/export.js.map +1 -0
  44. package/out/commands/import.d.ts +2 -0
  45. package/out/commands/import.js +92 -0
  46. package/out/commands/import.js.map +1 -0
  47. package/out/commands/init.d.ts +16 -0
  48. package/out/commands/init.js +9 -5
  49. package/out/commands/init.js.map +1 -1
  50. package/out/commands/resume.d.ts +2 -0
  51. package/out/commands/resume.js +65 -0
  52. package/out/commands/resume.js.map +1 -0
  53. package/out/commands/sessions.d.ts +2 -0
  54. package/out/commands/sessions.js +64 -0
  55. package/out/commands/sessions.js.map +1 -0
  56. package/out/commands/start.d.ts +2 -0
  57. package/out/commands/start.js +40 -7
  58. package/out/commands/start.js.map +1 -1
  59. package/out/commands/status.d.ts +2 -0
  60. package/out/commands/status.js +3 -3
  61. package/out/commands/status.js.map +1 -1
  62. package/out/commands/tailOutput.d.ts +12 -0
  63. package/out/commands/up.d.ts +3 -0
  64. package/out/configManager.d.ts +42 -0
  65. package/out/configManager.js +430 -0
  66. package/out/configManager.js.map +1 -0
  67. package/out/connect.d.ts +4 -0
  68. package/out/connect.js +7 -7
  69. package/out/connect.js.map +1 -1
  70. package/out/core/adapters.d.ts +34 -0
  71. package/out/core/adapters.js +84 -0
  72. package/out/core/adapters.js.map +1 -0
  73. package/out/core/commandHelpers.d.ts +12 -0
  74. package/out/core/commandHelpers.js +96 -0
  75. package/out/core/commandHelpers.js.map +1 -0
  76. package/out/core/projectMcp.d.ts +25 -0
  77. package/out/core/projectMcp.js +144 -0
  78. package/out/core/projectMcp.js.map +1 -0
  79. package/out/core/provider/BaseProvider.d.ts +14 -0
  80. package/out/core/provider/BaseProvider.js +25 -0
  81. package/out/core/provider/BaseProvider.js.map +1 -0
  82. package/out/core/provider/ProviderRegistry.d.ts +12 -0
  83. package/out/core/provider/ProviderRegistry.js +40 -0
  84. package/out/core/provider/ProviderRegistry.js.map +1 -0
  85. package/out/core/provider/contract.d.ts +62 -0
  86. package/out/core/provider/contract.js +9 -0
  87. package/out/core/provider/contract.js.map +1 -0
  88. package/out/core/provider/implementations.d.ts +54 -0
  89. package/out/core/provider/implementations.js +147 -0
  90. package/out/core/provider/implementations.js.map +1 -0
  91. package/out/core/settingsLoader.d.ts +221 -0
  92. package/out/core/settingsLoader.js +176 -0
  93. package/out/core/settingsLoader.js.map +1 -0
  94. package/out/discordGateway.d.ts +26 -0
  95. package/out/discordGateway.js +230 -0
  96. package/out/discordGateway.js.map +1 -0
  97. package/out/discordPoller.d.ts +28 -0
  98. package/out/discordPoller.js +247 -0
  99. package/out/discordPoller.js.map +1 -0
  100. package/out/dispatcher.d.ts +12 -0
  101. package/out/dispatcher.js +214 -0
  102. package/out/dispatcher.js.map +1 -0
  103. package/out/emailPoller.d.ts +42 -0
  104. package/out/emailPoller.js +221 -0
  105. package/out/emailPoller.js.map +1 -0
  106. package/out/git/gitService.d.ts +36 -0
  107. package/out/git/gitService.js +165 -0
  108. package/out/git/gitService.js.map +1 -0
  109. package/out/hookEventNormalizer.d.ts +39 -0
  110. package/out/hookEventNormalizer.js +397 -0
  111. package/out/hookEventNormalizer.js.map +1 -0
  112. package/out/hooksManager.d.ts +25 -0
  113. package/out/hooksManager.js +471 -0
  114. package/out/hooksManager.js.map +1 -0
  115. package/out/launchIde.d.ts +14 -0
  116. package/out/logger.d.ts +12 -0
  117. package/out/mcpEmailTest.d.ts +29 -0
  118. package/out/mcpEmailTest.js +245 -0
  119. package/out/mcpEmailTest.js.map +1 -0
  120. package/out/mcpInstallCheck.d.ts +23 -0
  121. package/out/mcpInstallCheck.js +219 -0
  122. package/out/mcpInstallCheck.js.map +1 -0
  123. package/out/mcpManager.d.ts +35 -0
  124. package/out/mcpManager.js +371 -0
  125. package/out/mcpManager.js.map +1 -0
  126. package/out/messageBuilder.d.ts +54 -0
  127. package/out/messageBuilder.js +373 -0
  128. package/out/messageBuilder.js.map +1 -0
  129. package/out/openCodeHooksManager.d.ts +23 -0
  130. package/out/openCodeHooksManager.js +511 -0
  131. package/out/openCodeHooksManager.js.map +1 -0
  132. package/out/periodicActions.d.ts +63 -0
  133. package/out/periodicActions.js +237 -0
  134. package/out/periodicActions.js.map +1 -0
  135. package/out/profileBuilder.d.ts +29 -0
  136. package/out/profileBuilder.js +366 -0
  137. package/out/profileBuilder.js.map +1 -0
  138. package/out/prompt.d.ts +12 -0
  139. package/out/prompt.js +18 -0
  140. package/out/prompt.js.map +1 -0
  141. package/out/protocolSections.d.ts +26 -0
  142. package/out/protocolSections.js +209 -0
  143. package/out/protocolSections.js.map +1 -0
  144. package/out/providers/claudeCliProvider.d.ts +71 -0
  145. package/out/providers/claudeCliProvider.js +425 -0
  146. package/out/providers/claudeCliProvider.js.map +1 -0
  147. package/out/providers/claudeTuiProvider.d.ts +23 -0
  148. package/out/providers/claudeTuiProvider.js +296 -0
  149. package/out/providers/claudeTuiProvider.js.map +1 -0
  150. package/out/providers/copilotCliProvider.d.ts +16 -0
  151. package/out/providers/copilotCliProvider.js +44 -0
  152. package/out/providers/copilotCliProvider.js.map +1 -0
  153. package/out/providers/copilotSdkProvider.d.ts +12 -0
  154. package/out/providers/copilotSdkProvider.js +445 -0
  155. package/out/providers/copilotSdkProvider.js.map +1 -0
  156. package/out/providers/grokTuiProvider.d.ts +14 -0
  157. package/out/providers/grokTuiProvider.js +271 -0
  158. package/out/providers/grokTuiProvider.js.map +1 -0
  159. package/out/providers/opencodeCliProvider.d.ts +29 -0
  160. package/out/providers/opencodeCliProvider.js +199 -0
  161. package/out/providers/opencodeCliProvider.js.map +1 -0
  162. package/out/providers/opencodeSdkProvider.d.ts +22 -0
  163. package/out/providers/opencodeSdkProvider.js +557 -0
  164. package/out/providers/opencodeSdkProvider.js.map +1 -0
  165. package/out/providers.d.ts +9 -0
  166. package/out/providers.js +44 -0
  167. package/out/providers.js.map +1 -0
  168. package/out/rateLimit.d.ts +18 -0
  169. package/out/rateLimit.js +90 -0
  170. package/out/rateLimit.js.map +1 -0
  171. package/out/rdp/auth.d.ts +55 -0
  172. package/out/rdp/auth.js +197 -0
  173. package/out/rdp/auth.js.map +1 -0
  174. package/out/rdp/bridge.d.ts +86 -0
  175. package/out/rdp/bridge.js +1398 -0
  176. package/out/rdp/bridge.js.map +1 -0
  177. package/out/rdp/constants.d.ts +86 -0
  178. package/out/rdp/constants.js +182 -0
  179. package/out/rdp/constants.js.map +1 -0
  180. package/out/rdp/index.d.ts +7 -0
  181. package/out/rdp/index.js +14 -0
  182. package/out/rdp/index.js.map +1 -0
  183. package/out/rdp/session.d.ts +30 -0
  184. package/out/rdp/session.js +196 -0
  185. package/out/rdp/session.js.map +1 -0
  186. package/out/rdp/types.d.ts +27 -0
  187. package/out/rdp/types.js +6 -0
  188. package/out/rdp/types.js.map +1 -0
  189. package/out/sdk/index.d.ts +22 -0
  190. package/out/sdk/index.js +81 -0
  191. package/out/sdk/index.js.map +1 -0
  192. package/out/sessionState.d.ts +54 -0
  193. package/out/sessionState.js +284 -0
  194. package/out/sessionState.js.map +1 -0
  195. package/out/sessions.d.ts +11 -0
  196. package/out/sessions.js +32 -0
  197. package/out/sessions.js.map +1 -0
  198. package/out/taskLoop.d.ts +152 -0
  199. package/out/taskLoop.js +2505 -0
  200. package/out/taskLoop.js.map +1 -0
  201. package/out/todo.d.ts +42 -0
  202. package/out/todo.js +311 -0
  203. package/out/todo.js.map +1 -0
  204. package/out/todoWriteManager.d.ts +26 -0
  205. package/out/todoWriteManager.js +44 -0
  206. package/out/todoWriteManager.js.map +1 -0
  207. package/out/vnc/auth.d.ts +52 -0
  208. package/out/vnc/auth.js +181 -0
  209. package/out/vnc/auth.js.map +1 -0
  210. package/out/vnc/bridge.d.ts +40 -0
  211. package/out/vnc/bridge.js +540 -0
  212. package/out/vnc/bridge.js.map +1 -0
  213. package/out/vnc/constants.d.ts +8 -0
  214. package/out/vnc/constants.js +34 -0
  215. package/out/vnc/constants.js.map +1 -0
  216. package/out/vnc/des.d.ts +6 -0
  217. package/out/vnc/des.js +93 -0
  218. package/out/vnc/des.js.map +1 -0
  219. package/out/vnc/index.d.ts +7 -0
  220. package/out/vnc/index.js +13 -0
  221. package/out/vnc/index.js.map +1 -0
  222. package/out/vnc/session.d.ts +18 -0
  223. package/out/vnc/session.js +193 -0
  224. package/out/vnc/session.js.map +1 -0
  225. package/out/vnc/types.d.ts +16 -0
  226. package/out/vnc/types.js +6 -0
  227. package/out/vnc/types.js.map +1 -0
  228. package/out/webSocketPoller.d.ts +95 -0
  229. package/out/webSocketPoller.js +986 -0
  230. package/out/webSocketPoller.js.map +1 -0
  231. package/out/webhook.d.ts +37 -0
  232. package/out/webhook.js +265 -0
  233. package/out/webhook.js.map +1 -0
  234. package/out/webhookPoller.d.ts +40 -0
  235. package/out/webhookPoller.js +378 -0
  236. package/out/webhookPoller.js.map +1 -0
  237. package/package.json +54 -41
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.uploadAgentBackup = uploadAgentBackup;
37
+ exports.downloadAgentBackup = downloadAgentBackup;
38
+ const fs = __importStar(require("fs"));
39
+ const http = __importStar(require("http"));
40
+ const https = __importStar(require("https"));
41
+ const path = __importStar(require("path"));
42
+ const url = __importStar(require("url"));
43
+ /** Upload a backup zip to `POST /api/agents/{agentId}/exports`. */
44
+ async function uploadAgentBackup(zipPath, agentId, serverBaseUrl, serverApiKey) {
45
+ const fileBuffer = fs.readFileSync(zipPath);
46
+ const filename = path.basename(zipPath);
47
+ const boundary = `----AutodevBoundary${Date.now()}`;
48
+ const preamble = Buffer.from(`--${boundary}\r\n` +
49
+ `Content-Disposition: form-data; name="zip"; filename="${filename}"\r\n` +
50
+ `Content-Type: application/zip\r\n\r\n`, 'utf8');
51
+ const epilogue = Buffer.from(`\r\n--${boundary}--\r\n`, 'utf8');
52
+ const body = Buffer.concat([preamble, fileBuffer, epilogue]);
53
+ const parsed = new url.URL(`${serverBaseUrl.replace(/\/$/, '')}/api/agents/${agentId}/exports/upload`);
54
+ const transport = parsed.protocol === 'https:' ? https : http;
55
+ const port = parsed.port ? parseInt(parsed.port, 10) : (parsed.protocol === 'https:' ? 443 : 80);
56
+ return new Promise((resolve, reject) => {
57
+ const req = transport.request({
58
+ hostname: parsed.hostname,
59
+ port,
60
+ path: parsed.pathname,
61
+ method: 'POST',
62
+ headers: {
63
+ 'Authorization': `Bearer ${serverApiKey}`,
64
+ 'Content-Type': `multipart/form-data; boundary=${boundary}`,
65
+ 'Content-Length': body.length,
66
+ 'Accept': 'application/json',
67
+ },
68
+ }, (res) => {
69
+ let raw = '';
70
+ res.on('data', (chunk) => { raw += chunk.toString('utf8'); });
71
+ res.on('end', () => {
72
+ try {
73
+ const json = JSON.parse(raw);
74
+ if (!json['success']) {
75
+ reject(new Error(String(json['error'] ?? `HTTP ${res.statusCode}`)));
76
+ return;
77
+ }
78
+ const data = json['data'];
79
+ resolve({
80
+ id: String(data['id'] ?? ''),
81
+ filename: String(data['filename'] ?? filename),
82
+ downloadUrl: String(data['downloadUrl'] ?? ''),
83
+ });
84
+ }
85
+ catch {
86
+ reject(new Error(`Parse error: ${raw.slice(0, 200)}`));
87
+ }
88
+ });
89
+ });
90
+ req.on('error', reject);
91
+ req.write(body);
92
+ req.end();
93
+ });
94
+ }
95
+ /** Download a zip from a URL (authenticated) and save to destPath. */
96
+ async function downloadAgentBackup(downloadUrl, destPath, serverApiKey) {
97
+ const parsed = new url.URL(downloadUrl);
98
+ const transport = parsed.protocol === 'https:' ? https : http;
99
+ const port = parsed.port ? parseInt(parsed.port, 10) : (parsed.protocol === 'https:' ? 443 : 80);
100
+ return new Promise((resolve, reject) => {
101
+ const req = transport.request({
102
+ hostname: parsed.hostname,
103
+ port,
104
+ path: parsed.pathname + (parsed.search || ''),
105
+ method: 'GET',
106
+ headers: { 'Authorization': `Bearer ${serverApiKey}` },
107
+ }, (res) => {
108
+ if (res.statusCode && res.statusCode >= 400) {
109
+ reject(new Error(`Download failed: HTTP ${res.statusCode}`));
110
+ return;
111
+ }
112
+ const out = fs.createWriteStream(destPath);
113
+ res.pipe(out);
114
+ out.on('finish', () => out.close(() => resolve()));
115
+ out.on('error', reject);
116
+ });
117
+ req.on('error', reject);
118
+ req.end();
119
+ });
120
+ }
121
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/agentBackup/upload.ts"],"names":[],"mappings":"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"}
package/out/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/out/cli.js CHANGED
@@ -39,9 +39,13 @@ const start_1 = require("./commands/start");
39
39
  const init_1 = require("./commands/init");
40
40
  const config_1 = require("./commands/config");
41
41
  const status_1 = require("./commands/status");
42
+ const sessions_1 = require("./commands/sessions");
43
+ const resume_1 = require("./commands/resume");
42
44
  const up_1 = require("./commands/up");
43
45
  const connect_1 = require("./commands/connect");
44
46
  const tailOutput_1 = require("./commands/tailOutput");
47
+ const export_1 = require("./commands/export");
48
+ const import_1 = require("./commands/import");
45
49
  const connect_2 = require("./connect");
46
50
  const logger_1 = require("./logger");
47
51
  // eslint-disable-next-line @typescript-eslint/no-var-requires
@@ -112,6 +116,10 @@ const program = new commander_1.Command()
112
116
  (0, tailOutput_1.tailOutputCommand)(program);
113
117
  (0, config_1.configCommand)(program);
114
118
  (0, status_1.statusCommand)(program);
119
+ (0, sessions_1.sessionsCommand)(program);
120
+ (0, resume_1.resumeCommand)(program);
121
+ (0, export_1.exportCommand)(program);
122
+ (0, import_1.importCommand)(program);
115
123
  program.parseAsync(process.argv).catch((err) => {
116
124
  console.error(err.message);
117
125
  process.exit(1);
package/out/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { Task } from './todo';
2
+ import { RateLimitError } from './rateLimit';
3
+ export type CliExitDecision = {
4
+ kind: 'done';
5
+ } | {
6
+ kind: 'deferred';
7
+ } | {
8
+ kind: 'rate_limit';
9
+ error: RateLimitError;
10
+ } | {
11
+ kind: 'remind';
12
+ } | {
13
+ kind: 'give_up';
14
+ };
15
+ export declare class CliExitHandler {
16
+ private readonly workspaceRoot;
17
+ private readonly todoPath;
18
+ private readonly task;
19
+ private readonly taskStartTime;
20
+ private readonly isTaskDone;
21
+ private reminderSent;
22
+ constructor(workspaceRoot: string, todoPath: string, task: Task, taskStartTime: number, isTaskDone: () => boolean);
23
+ /** Run the decision tree. Stateless except for the one-shot reminder flag. */
24
+ decide(): CliExitDecision;
25
+ /** Has the AI moved the task to [~]? */
26
+ private taskIsInProgress;
27
+ /**
28
+ * Scan recent hook events (StopFailure / SessionEnd) for a rate-limit
29
+ * signal that arrived AFTER this task started. Returns null when none.
30
+ * Looks at both `error: "rate_limit"` and `last_assistant_message` text
31
+ * — Claude surfaces throttles through both channels at different times.
32
+ */
33
+ private findRecentRateLimit;
34
+ }
package/out/cliExit.js ADDED
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // CliExitHandler — central decision logic for "the CLI process just ended,
4
+ // what should the loop do?". Replaces the tangle of inline branches that
5
+ // used to live in taskLoop.ts onCliExit().
6
+ //
7
+ // Inputs (read each call):
8
+ // - TODO.md state for the current task line ([x] / [~] / [ ])
9
+ // - .autodev/hooks-events.jsonl tail (StopFailure + SessionEnd events)
10
+ //
11
+ // Outputs (CliExitDecision):
12
+ // - 'done' — task already marked [x], resolve and move on
13
+ // - 'deferred' — task is [~], the AI deferred it; resolve and move on
14
+ // - 'rate_limit' — Claude was throttled; raise RateLimitError to pause loop
15
+ // - 'remind' — first exit without completion; send TODO.md reminder
16
+ // - 'give_up' — CLI exited again after reminder; resolve, move on
17
+ // ---------------------------------------------------------------------------
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
31
+ }) : function(o, v) {
32
+ o["default"] = v;
33
+ });
34
+ var __importStar = (this && this.__importStar) || (function () {
35
+ var ownKeys = function(o) {
36
+ ownKeys = Object.getOwnPropertyNames || function (o) {
37
+ var ar = [];
38
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
39
+ return ar;
40
+ };
41
+ return ownKeys(o);
42
+ };
43
+ return function (mod) {
44
+ if (mod && mod.__esModule) return mod;
45
+ var result = {};
46
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
47
+ __setModuleDefault(result, mod);
48
+ return result;
49
+ };
50
+ })();
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.CliExitHandler = void 0;
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ const todo_1 = require("./todo");
56
+ const rateLimit_1 = require("./rateLimit");
57
+ class CliExitHandler {
58
+ workspaceRoot;
59
+ todoPath;
60
+ task;
61
+ taskStartTime;
62
+ isTaskDone;
63
+ reminderSent = false;
64
+ constructor(workspaceRoot, todoPath, task, taskStartTime, isTaskDone) {
65
+ this.workspaceRoot = workspaceRoot;
66
+ this.todoPath = todoPath;
67
+ this.task = task;
68
+ this.taskStartTime = taskStartTime;
69
+ this.isTaskDone = isTaskDone;
70
+ }
71
+ /** Run the decision tree. Stateless except for the one-shot reminder flag. */
72
+ decide() {
73
+ if (this.isTaskDone()) {
74
+ return { kind: 'done' };
75
+ }
76
+ // If the agent marked [~] after we already sent a reminder, treat it as
77
+ // give_up so the caller auto-marks [x] — avoids an infinite loop where
78
+ // the agent keeps marking [~] and exiting on every retry.
79
+ if (this.taskIsInProgress()) {
80
+ if (this.reminderSent) {
81
+ return { kind: 'give_up' };
82
+ }
83
+ return { kind: 'deferred' };
84
+ }
85
+ const rl = this.findRecentRateLimit();
86
+ if (rl) {
87
+ return { kind: 'rate_limit', error: rl };
88
+ }
89
+ if (this.reminderSent) {
90
+ return { kind: 'give_up' };
91
+ }
92
+ this.reminderSent = true;
93
+ return { kind: 'remind' };
94
+ }
95
+ /** Has the AI moved the task to [~]? */
96
+ taskIsInProgress() {
97
+ try {
98
+ const updated = (0, todo_1.parseTodo)(this.todoPath);
99
+ const byId = this.task.id ? updated.find(t => t.id === this.task.id) : undefined;
100
+ const byLine = updated.find(t => t.line === this.task.line);
101
+ const byLineVerified = (byLine && byLine.text === this.task.text) ? byLine : undefined;
102
+ const byText = updated.find(t => t.text === this.task.text);
103
+ const match = byId ?? byLineVerified ?? byText;
104
+ return match?.status === 'in-progress';
105
+ }
106
+ catch {
107
+ return false;
108
+ }
109
+ }
110
+ /**
111
+ * Scan recent hook events (StopFailure / SessionEnd) for a rate-limit
112
+ * signal that arrived AFTER this task started. Returns null when none.
113
+ * Looks at both `error: "rate_limit"` and `last_assistant_message` text
114
+ * — Claude surfaces throttles through both channels at different times.
115
+ */
116
+ findRecentRateLimit() {
117
+ try {
118
+ const hooksJsonl = path.join(this.workspaceRoot, '.autodev', 'hooks-events.jsonl');
119
+ if (!fs.existsSync(hooksJsonl)) {
120
+ return null;
121
+ }
122
+ const stat = fs.statSync(hooksJsonl);
123
+ const readFrom = Math.max(0, stat.size - 64 * 1024);
124
+ const fd = fs.openSync(hooksJsonl, 'r');
125
+ const buf = Buffer.alloc(stat.size - readFrom);
126
+ fs.readSync(fd, buf, 0, buf.length, readFrom);
127
+ fs.closeSync(fd);
128
+ const lines = buf.toString('utf8').split('\n').filter(l => l.trim());
129
+ for (let i = lines.length - 1; i >= 0; i--) {
130
+ let ev;
131
+ try {
132
+ ev = JSON.parse(lines[i]);
133
+ }
134
+ catch {
135
+ continue;
136
+ }
137
+ const evt = ev?.hook_event_name;
138
+ if (evt !== 'StopFailure' && evt !== 'SessionEnd') {
139
+ continue;
140
+ }
141
+ const ts = ev?.timestamp ? Date.parse(ev.timestamp) : NaN;
142
+ if (Number.isFinite(ts) && ts < this.taskStartTime) {
143
+ break;
144
+ }
145
+ const errStr = String(ev?.error ?? '').toLowerCase();
146
+ const lastMsg = String(ev?.last_assistant_message ?? '');
147
+ if (errStr === 'rate_limit' || rateLimit_1.RateLimitDetector.matches(lastMsg)) {
148
+ return rateLimit_1.RateLimitDetector.toError(lastMsg);
149
+ }
150
+ // Don't break — SessionEnd often follows StopFailure, the rate-limit
151
+ // signal is on the StopFailure record one line earlier.
152
+ }
153
+ }
154
+ catch { /* ignore */ }
155
+ return null;
156
+ }
157
+ }
158
+ exports.CliExitHandler = CliExitHandler;
159
+ //# sourceMappingURL=cliExit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliExit.js","sourceRoot":"","sources":["../src/cliExit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function configCommand(program: Command): void;
@@ -37,7 +37,7 @@ exports.configCommand = configCommand;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
39
  const logger_1 = require("../logger");
40
- const settings_1 = require("autoaidev/settings");
40
+ const settingsLoader_1 = require("../core/settingsLoader");
41
41
  function configPath(cwd) {
42
42
  // Read path: prefer the canonical .autodev/settings.json, fall back to the
43
43
  // legacy .vscode/autodev.json if the new file is absent.
@@ -70,7 +70,7 @@ function configCommand(program) {
70
70
  // autodev config [path] — print all settings
71
71
  cmd.action((workspacePath) => {
72
72
  const cwd = workspacePath ? path.resolve(workspacePath) : process.cwd();
73
- const settings = (0, settings_1.loadSettingsForRoot)(cwd);
73
+ const settings = (0, settingsLoader_1.loadSettingsForRoot)(cwd);
74
74
  logger_1.log.section('⚙ AutoDev Config');
75
75
  logger_1.log.info(`File: ${configPath(cwd)}`);
76
76
  logger_1.log.plain('');
@@ -87,12 +87,12 @@ function configCommand(program) {
87
87
  .description('Set a config value')
88
88
  .action((key, value, workspacePath) => {
89
89
  const cwd = workspacePath ? path.resolve(workspacePath) : process.cwd();
90
- const settings = (0, settings_1.loadSettingsForRoot)(cwd);
91
- if (!(key in settings_1.SETTINGS_DEFAULTS)) {
92
- logger_1.log.error(`Unknown key "${key}". Valid keys: ${Object.keys(settings_1.SETTINGS_DEFAULTS).join(', ')}`);
90
+ const settings = (0, settingsLoader_1.loadSettingsForRoot)(cwd);
91
+ if (!(key in settingsLoader_1.SETTINGS_DEFAULTS)) {
92
+ logger_1.log.error(`Unknown key "${key}". Valid keys: ${Object.keys(settingsLoader_1.SETTINGS_DEFAULTS).join(', ')}`);
93
93
  process.exit(1);
94
94
  }
95
- const defaultVal = settings_1.SETTINGS_DEFAULTS[key];
95
+ const defaultVal = settingsLoader_1.SETTINGS_DEFAULTS[key];
96
96
  let parsed;
97
97
  if (typeof defaultVal === 'number') {
98
98
  parsed = Number(value);
@@ -113,7 +113,7 @@ function configCommand(program) {
113
113
  .description('Get a config value')
114
114
  .action((key, workspacePath) => {
115
115
  const cwd = workspacePath ? path.resolve(workspacePath) : process.cwd();
116
- const settings = (0, settings_1.loadSettingsForRoot)(cwd);
116
+ const settings = (0, settingsLoader_1.loadSettingsForRoot)(cwd);
117
117
  if (!(key in settings)) {
118
118
  logger_1.log.error(`Unknown key "${key}"`);
119
119
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function connectCommand(program: Command): void;
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.connectCommand = connectCommand;
37
+ const fs = __importStar(require("fs"));
37
38
  const path = __importStar(require("path"));
38
39
  const logger_1 = require("../logger");
39
40
  const connect_1 = require("../connect");
@@ -43,6 +44,7 @@ function connectCommand(program) {
43
44
  .description('Bind this workspace to a pixel-office WebSocket endpoint')
44
45
  .option('--url <wsurl>', 'Full ws://… or wss://… URL (with ?token=&endpoint=)')
45
46
  .option('--setup-url <url>', 'Signed pixel-office setup URL — credentials are fetched from it')
47
+ .option('--session-name <name>', 'Session display name (opencode --title, copilot --name, shown in pixel-office)')
46
48
  .action(async (workspacePath, opts) => {
47
49
  const cwd = workspacePath ? path.resolve(workspacePath) : process.cwd();
48
50
  try {
@@ -56,6 +58,15 @@ function connectCommand(program) {
56
58
  logger_1.log.error('Pass either --setup-url=<url> or --url=<wsurl>.');
57
59
  process.exit(1);
58
60
  }
61
+ // Persist the session display name into the same settings file the
62
+ // bind just wrote, so providers + pixel-office pick it up.
63
+ if (opts.sessionName) {
64
+ const sp = path.join(cwd, '.autodev', 'settings.json');
65
+ const cur = fs.existsSync(sp) ? JSON.parse(fs.readFileSync(sp, 'utf8')) : {};
66
+ cur.sessionName = opts.sessionName;
67
+ fs.writeFileSync(sp, JSON.stringify(cur, null, 2) + '\n', 'utf8');
68
+ logger_1.log.gray(` session name: ${opts.sessionName}`);
69
+ }
59
70
  }
60
71
  catch (err) {
61
72
  logger_1.log.error(err.message);
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,wCAsBC;AAhCD,2CAA6B;AAE7B,sCAAgC;AAChC,wCAAuD;AAOvD,SAAgB,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,qDAAqD,CAAC;SAC9E,MAAM,CAAC,mBAAmB,EAAE,iEAAiE,CAAC;SAC9F,MAAM,CAAC,KAAK,EAAE,aAAiC,EAAE,IAAiB,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACxE,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,IAAA,uBAAa,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACpB,IAAA,oBAAU,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,YAAG,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAG,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,wCAgCC;AA5CD,uCAAyB;AACzB,2CAA6B;AAE7B,sCAAgC;AAChC,wCAAuD;AAQvD,SAAgB,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,qDAAqD,CAAC;SAC9E,MAAM,CAAC,mBAAmB,EAAE,iEAAiE,CAAC;SAC9F,MAAM,CAAC,uBAAuB,EAAE,gFAAgF,CAAC;SACjH,MAAM,CAAC,KAAK,EAAE,aAAiC,EAAE,IAAiB,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACxE,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,IAAA,uBAAa,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACpB,IAAA,oBAAU,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,YAAG,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,mEAAmE;YACnE,2DAA2D;YAC3D,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;gBACvD,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBACnC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;gBAClE,YAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAG,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function exportCommand(program: Command): void;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.exportCommand = exportCommand;
37
+ const path = __importStar(require("path"));
38
+ const logger_1 = require("../logger");
39
+ const agentBackup_1 = require("../agentBackup");
40
+ function exportCommand(program) {
41
+ program
42
+ .command('export [path]')
43
+ .description('Export an agent backup ZIP (workspace state + portable session traces)')
44
+ .option('-o, --output <file>', 'Destination ZIP path (default: <workspace>/agent.zip)')
45
+ .action(async (workspacePath, opts) => {
46
+ const cwd = workspacePath ? path.resolve(workspacePath) : process.cwd();
47
+ const destPath = opts.output
48
+ ? path.resolve(opts.output)
49
+ : path.join(cwd, 'agent.zip');
50
+ logger_1.log.section('📦 AutoAIDev — Export Agent Backup');
51
+ logger_1.log.info(`Workspace : ${cwd}`);
52
+ logger_1.log.info(`Output : ${destPath}`);
53
+ logger_1.log.plain('');
54
+ try {
55
+ const result = await (0, agentBackup_1.createAgentBackup)(cwd, destPath);
56
+ if (result.capturedProviders.length > 0) {
57
+ logger_1.log.success(`Traces captured: ${result.capturedProviders.join(', ')}`);
58
+ }
59
+ else {
60
+ logger_1.log.warn('No portable provider traces found — workspace state only.');
61
+ }
62
+ // Per-provider summary
63
+ for (const [id, entry] of Object.entries(result.providers)) {
64
+ const icon = entry.tracesCaptured ? '✓' : '–';
65
+ const ids = entry.discoveredSessionIds.length > 0
66
+ ? ` (${entry.discoveredSessionIds.length} session(s))`
67
+ : '';
68
+ logger_1.log.gray(` ${icon} ${id} [${entry.portability}]${ids}`);
69
+ }
70
+ logger_1.log.plain('');
71
+ logger_1.log.success(`Saved: ${destPath}`);
72
+ }
73
+ catch (err) {
74
+ logger_1.log.error(`Export failed: ${err.message}`);
75
+ process.exit(1);
76
+ }
77
+ });
78
+ }
79
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,sCA2CC;AApDD,2CAA6B;AAE7B,sCAAgC;AAChC,gDAAmD;AAMnD,SAAgB,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,wEAAwE,CAAC;SACrF,MAAM,CACL,qBAAqB,EACrB,uDAAuD,CACxD;SACA,MAAM,CAAC,KAAK,EAAE,aAAiC,EAAE,IAAgB,EAAE,EAAE;QACpE,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;YAC1B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAEhC,YAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QAClD,YAAG,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;QAC/B,YAAG,CAAC,IAAI,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;QACpC,YAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAiB,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,YAAG,CAAC,OAAO,CAAC,oBAAoB,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACN,YAAG,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YACxE,CAAC;YAED,uBAAuB;YACvB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;oBAC/C,CAAC,CAAC,KAAK,KAAK,CAAC,oBAAoB,CAAC,MAAM,cAAc;oBACtD,CAAC,CAAC,EAAE,CAAC;gBACP,YAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,WAAW,IAAI,GAAG,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,YAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,YAAG,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,YAAG,CAAC,KAAK,CAAC,kBAAmB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function importCommand(program: Command): void;