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,147 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Concrete provider strategies. Each class owns ONLY its provider-specific
4
+ // dispatch shape; the shared command wrapping (tee → synthetic hooks →
5
+ // exit-file) is reused from the dispatcher helpers (DRY). Behaviour mirrors the
6
+ // pre-refactor switch in dispatcher.ts exactly.
7
+ // ---------------------------------------------------------------------------
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.GrokTuiProvider = exports.OpenCodeSdkProvider = exports.CopilotSdkProvider = exports.ClaudeTuiProvider = exports.OpenCodeCliProvider = exports.CopilotCliProvider = exports.ClaudeCliProvider = void 0;
43
+ const path = __importStar(require("path"));
44
+ const BaseProvider_1 = require("./BaseProvider");
45
+ const commandHelpers_1 = require("../commandHelpers");
46
+ const claudeCliProvider_1 = require("../../providers/claudeCliProvider");
47
+ const copilotCliProvider_1 = require("../../providers/copilotCliProvider");
48
+ const opencodeCliProvider_1 = require("../../providers/opencodeCliProvider");
49
+ const claudeTuiProvider_1 = require("../../providers/claudeTuiProvider");
50
+ const copilotSdkProvider_1 = require("../../providers/copilotSdkProvider");
51
+ const opencodeSdkProvider_1 = require("../../providers/opencodeSdkProvider");
52
+ const grokTuiProvider_1 = require("../../providers/grokTuiProvider");
53
+ const sessionState_1 = require("../../sessionState");
54
+ // --- CLI providers --------------------------------------------------------
55
+ class ClaudeCliProvider extends BaseProvider_1.BaseProvider {
56
+ id = 'claude-cli';
57
+ label = 'Claude CLI';
58
+ kind = 'cli';
59
+ resolveSession(root, log) { return (0, claudeCliProvider_1.probeClaudeSession)(root, log); }
60
+ async dispatch(req) {
61
+ let cmd = (0, claudeCliProvider_1.buildClaudeCliCommand)(req.agentProfileFile, req.messageFile, req.resolvedSessionId, req.includeProfile, req.settings.claudeModel || undefined);
62
+ cmd = (0, commandHelpers_1.teeCommand)(cmd, req.stdoutFile);
63
+ return { command: (0, commandHelpers_1.withExitFile)(cmd, req.exitFile) };
64
+ }
65
+ }
66
+ exports.ClaudeCliProvider = ClaudeCliProvider;
67
+ class CopilotCliProvider extends BaseProvider_1.BaseProvider {
68
+ id = 'copilot-cli';
69
+ label = 'Copilot CLI';
70
+ kind = 'cli';
71
+ resolveSession(root, log) { return (0, copilotCliProvider_1.probeCopilotSession)(root, log); }
72
+ async dispatch(req) {
73
+ let cmd = (0, copilotCliProvider_1.buildCopilotCliCommand)(req.combinedFile, req.resolvedSessionId, req.settings.copilotModel || undefined, req.settings.sessionName || undefined);
74
+ cmd = (0, commandHelpers_1.teeCommand)(cmd, req.stdoutFile);
75
+ if (req.settings.hooksEnabled) {
76
+ cmd = (0, commandHelpers_1.wrapWithSyntheticHooks)(cmd, 'copilot-cli', req.root, path.basename(req.root));
77
+ }
78
+ return { command: (0, commandHelpers_1.withExitFile)(cmd, req.exitFile) };
79
+ }
80
+ }
81
+ exports.CopilotCliProvider = CopilotCliProvider;
82
+ class OpenCodeCliProvider extends BaseProvider_1.BaseProvider {
83
+ id = 'opencode-cli';
84
+ label = 'OpenCode CLI';
85
+ kind = 'cli';
86
+ resolveSession(root, log) {
87
+ return (0, opencodeCliProvider_1.getLatestOpenCodeSessionId)(root, log, (0, sessionState_1.getSessionClearedAt)(root, 'opencode-cli'));
88
+ }
89
+ async dispatch(req) {
90
+ let cmd = (0, opencodeCliProvider_1.buildOpenCodeCliCommand)(req.combinedFile, req.resolvedSessionId, req.settings.opencodeModel || undefined, req.settings.sessionName || undefined);
91
+ cmd = (0, commandHelpers_1.teeCommand)(cmd, req.stdoutFile);
92
+ if (req.settings.hooksEnabled) {
93
+ cmd = (0, commandHelpers_1.wrapWithSyntheticHooks)(cmd, 'opencode-cli', req.root, path.basename(req.root));
94
+ }
95
+ return { command: (0, commandHelpers_1.withExitFile)(cmd, req.exitFile) };
96
+ }
97
+ }
98
+ exports.OpenCodeCliProvider = OpenCodeCliProvider;
99
+ // --- In-process providers (sdk / tui) -------------------------------------
100
+ class ClaudeTuiProvider extends BaseProvider_1.BaseProvider {
101
+ id = 'claude-tui';
102
+ label = 'Claude TUI';
103
+ kind = 'tui';
104
+ async dispatch(req, ctx) {
105
+ (0, claudeTuiProvider_1.sendClaudeTuiPrompt)(req.root, req.combinedFile, req.resolvedSessionId, req.stdoutFile, req.exitFile, ctx.log, req.settings.claudeModel || undefined, ctx.showOutput);
106
+ return {};
107
+ }
108
+ isBusy(root) { return (0, claudeTuiProvider_1.isClaudeTuiBusy)(root); }
109
+ close(root, log) { (0, claudeTuiProvider_1.closeClaudeTuiClient)(root, log); }
110
+ }
111
+ exports.ClaudeTuiProvider = ClaudeTuiProvider;
112
+ class CopilotSdkProvider extends BaseProvider_1.BaseProvider {
113
+ id = 'copilot-sdk';
114
+ label = 'Copilot SDK';
115
+ kind = 'sdk';
116
+ async dispatch(req, ctx) {
117
+ (0, copilotSdkProvider_1.setCopilotSettingsToken)(req.settings.copilotGithubToken || undefined);
118
+ (0, copilotSdkProvider_1.sendCopilotSdkPrompt)(req.root, req.combinedFile, req.resolvedSessionId, req.stdoutFile, req.exitFile, ctx.log, ctx.showOutput);
119
+ return {};
120
+ }
121
+ isBusy(root) { return (0, copilotSdkProvider_1.isCopilotSdkBusy)(root); }
122
+ close(root, log) { (0, copilotSdkProvider_1.closeCopilotSdkSession)(root, log); }
123
+ }
124
+ exports.CopilotSdkProvider = CopilotSdkProvider;
125
+ class OpenCodeSdkProvider extends BaseProvider_1.BaseProvider {
126
+ id = 'opencode-sdk';
127
+ label = 'OpenCode SDK';
128
+ kind = 'sdk';
129
+ async dispatch(req, ctx) {
130
+ (0, opencodeSdkProvider_1.sendOpencodeSdkPrompt)(req.root, req.combinedFile, req.resolvedSessionId, req.stdoutFile, req.exitFile, ctx.log, req.settings.opencodeModel || undefined, ctx.showOutput);
131
+ return {};
132
+ }
133
+ isBusy(root) { return (0, opencodeSdkProvider_1.isOpencodeSdkBusy)(root); }
134
+ close(root, log) { (0, opencodeSdkProvider_1.closeOpencodeSdkClient)(root, log); }
135
+ }
136
+ exports.OpenCodeSdkProvider = OpenCodeSdkProvider;
137
+ class GrokTuiProvider extends BaseProvider_1.BaseProvider {
138
+ id = 'grok-tui';
139
+ label = 'Grok TUI';
140
+ kind = 'tui';
141
+ async dispatch(req, ctx) {
142
+ (0, grokTuiProvider_1.sendGrokTuiPrompt)(req.root, req.combinedFile, req.stdoutFile, req.exitFile, ctx.log, req.settings.grokModel || undefined, ctx.showOutput);
143
+ return {};
144
+ }
145
+ }
146
+ exports.GrokTuiProvider = GrokTuiProvider;
147
+ //# sourceMappingURL=implementations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementations.js","sourceRoot":"","sources":["../../../src/core/provider/implementations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ import { ProviderId } from '../providers';
2
+ export interface AutodevSettings {
3
+ provider: ProviderId;
4
+ /** Full WS URL with token+endpoint encoded: wss://host/ws?token=xxx&endpoint=slug */
5
+ wsUrl: string;
6
+ /** Derived from wsUrl (or set directly for backward compat). */
7
+ serverBaseUrl: string;
8
+ serverApiKey: string;
9
+ webhookSlug: string;
10
+ discordToken: string;
11
+ discordChannelId: string;
12
+ discordOwners: string;
13
+ loopInterval: number;
14
+ taskTimeoutMinutes: number;
15
+ taskCheckInMinutes: number;
16
+ retryOnTimeout: boolean;
17
+ autoResetPendingTasks: boolean;
18
+ profilePath: string;
19
+ todoPath: string;
20
+ resumeSession: boolean;
21
+ vncEnabled: boolean;
22
+ vncHost: string;
23
+ vncPort: number;
24
+ vncPassword: string;
25
+ rdpEnabled: boolean;
26
+ rdpHost: string;
27
+ rdpPort: number;
28
+ rdpUsername: string;
29
+ rdpPassword: string;
30
+ rdpDomain: string;
31
+ /** Public WSS URL for guacamole-lite (e.g. wss://myhost.com/guac-ws). If empty, falls back to ws://<rdpHost>:4567 */
32
+ rdpGuacWsUrl: string;
33
+ enableFileBrowser: boolean;
34
+ gitEnabled: boolean;
35
+ hooksEnabled: boolean;
36
+ hooksScope: 'project' | 'global';
37
+ openCodeHooksEnabled: boolean;
38
+ /**
39
+ * If true, the VS Code extension auto-starts the task loop on activation
40
+ * (when a wsUrl is set). Useful for `autodev --setup-url=… --ide=vscode`
41
+ * where the user expects the agent to come online immediately on launch.
42
+ * Default false — opt in via .autodev/settings.json (the CLI sets it true).
43
+ */
44
+ autoStartLoop: boolean;
45
+ /**
46
+ * Optional model override for Copilot CLI. When set, passes `--model=<value>`
47
+ * to the `copilot` command. Leave empty to use the CLI default model.
48
+ * Example values: `claude-sonnet-4.6`, `gpt-5.4`, `gemini-2.5-pro`.
49
+ */
50
+ copilotModel: string;
51
+ /**
52
+ * Optional model override for Claude CLI. When set, passes `--model <value>`
53
+ * to the `claude` command. Leave empty to use the CLI default.
54
+ * Example values: `best`, `sonnet`, `opus`, `haiku`.
55
+ */
56
+ claudeModel: string;
57
+ /**
58
+ * Optional model override for OpenCode CLI. When set, passes `--model=<value>`
59
+ * to the `opencode` command. Leave empty to use the CLI default.
60
+ * Example values: `anthropic/claude-sonnet-4-5`, `openai/gpt-4o`.
61
+ */
62
+ opencodeModel: string;
63
+ /**
64
+ * Optional human-readable session display NAME (not the session id). When set
65
+ * it is shown in pixel-office for this agent and passed to providers that
66
+ * support a native session title: opencode `--title`, copilot `--name`.
67
+ */
68
+ sessionName: string;
69
+ /**
70
+ * Optional model override for Grok TUI. When set, passes `-m <value>` to
71
+ * the `grok` command. Leave empty to use the default (sxs-claude-opus-4-6).
72
+ * Run `grok models` to list available models.
73
+ */
74
+ grokModel: string;
75
+ /**
76
+ * When true, writes `setCacheKey: true` into the provider options of the
77
+ * project-level `opencode.json`, enabling prompt/model caching.
78
+ */
79
+ opencodeCacheEnabled: boolean;
80
+ /**
81
+ * Per-project MCP server definitions managed by autodev. Stored in the
82
+ * standard `mcpServers` shape (`{ <name>: { command, args, env } }`) so
83
+ * users can paste server snippets verbatim from MCP docs (e.g.
84
+ * mcp-atlassian for Jira). On save, the extension fans these out to every
85
+ * provider's project-local config (.mcp.json, .claude/settings.local.json,
86
+ * opencode.json, .vscode/mcp.json) alongside the autodev defaults.
87
+ */
88
+ mcpServers: Record<string, {
89
+ command: string;
90
+ args?: string[];
91
+ env?: Record<string, string>;
92
+ enabled?: boolean;
93
+ }>;
94
+ /**
95
+ * Names of built-in MCP servers (from DEFAULT_MCP_SERVERS) that the user
96
+ * has explicitly disabled. Built-ins default to enabled when not listed.
97
+ */
98
+ disabledBuiltinMcp: string[];
99
+ /** Fallback provider to use when the main provider hits a rate limit. Empty string = disabled. */
100
+ fallbackProvider: ProviderId;
101
+ /** Whether to automatically switch to fallbackProvider on rate limit instead of pausing. */
102
+ fallbackProviderEnabled: boolean;
103
+ /**
104
+ * Ordered list of profile section IDs to include when assembling AGENT_PROFILE.md.
105
+ * Each ID corresponds to a file in `media/profile/`. An empty array means all
106
+ * sections are included (the default). Use the ProfileBuilder sidebar tab to manage.
107
+ */
108
+ enabledProfileSections: string[];
109
+ /**
110
+ * Additional `@path` references appended to AGENT_PROFILE.md after the section index.
111
+ * Each entry is a workspace-relative (or absolute) path. The `@` prefix is added
112
+ * automatically if missing. One path per entry.
113
+ */
114
+ customProfileRefs: string[];
115
+ /**
116
+ * When true, the task loop automatically runs /compact every
117
+ * `autoCompactInterval` completed tasks to keep the context window lean.
118
+ */
119
+ autoCompact: boolean;
120
+ /** How many completed tasks to wait between automatic /compact runs. Default 5. */
121
+ autoCompactInterval: number;
122
+ /**
123
+ * OpenCode provider-level HTTP timeout in milliseconds.
124
+ * Written to opencode.json under provider.*.options.timeout.
125
+ * 0 = use OpenCode default (300000 / 5 min).
126
+ */
127
+ opencodeTimeout: number;
128
+ /**
129
+ * OpenCode provider-level chunk timeout in milliseconds (max gap between
130
+ * streaming chunks before the request is considered stalled).
131
+ * Written to opencode.json under provider.*.options.chunkTimeout.
132
+ * 0 = use OpenCode default.
133
+ */
134
+ opencodeChunkTimeout: number;
135
+ /**
136
+ * Reset the agent session every N completed tasks (0 = disabled).
137
+ * Only active when resumeSession is true.
138
+ * When triggered, the agent is asked to summarise to SUMMARY.md before the
139
+ * session ID is cleared so the next task starts a fresh session.
140
+ */
141
+ resetSessionEveryNTurns: number;
142
+ /**
143
+ * How many times the loop will dispatch the same task before giving up and
144
+ * force-marking it done. Prevents a single stuck task from blocking the queue
145
+ * indefinitely. Default: 3. Set to 0 to disable (never force-done).
146
+ */
147
+ maxTaskAttempts: number;
148
+ /**
149
+ * Move completed [x] tasks from TODO.md into DONE.md every N
150
+ * completed tasks (0 = disabled). Keeps the active TODO file short.
151
+ */
152
+ pruneTodoEveryNTasks: number;
153
+ /**
154
+ * Trigger the auto-learn / journal review cycle every N completed tasks
155
+ * (0 = disabled). The agent reads JOURNAL.md, extracts patterns, updates
156
+ * LESSONS.md, and optionally creates skill files. Default: 0.
157
+ */
158
+ journalLearnEveryNTasks: number;
159
+ /**
160
+ * Run /compact on the active session every N completed tasks (0 = disabled).
161
+ * Complements the existing autoCompact/autoCompactInterval toggle — use one
162
+ * or the other; both can be active simultaneously.
163
+ */
164
+ compactEveryNTasks: number;
165
+ /**
166
+ * Prompt the agent to create/update a SKILLS.md file every N completed tasks.
167
+ * 0 = disabled. The agent is asked to record reusable patterns, commands,
168
+ * and learnings it has discovered into SKILLS.md before continuing.
169
+ */
170
+ skillEveryNTasks: number;
171
+ /**
172
+ * Prompt the agent to update SUMMARY.md every N completed tasks.
173
+ * 0 = disabled. The agent is asked to merge new findings into SUMMARY.md
174
+ * and update LESSONS.md with any corrections or repeat failures.
175
+ */
176
+ memoryEveryNTasks: number;
177
+ /**
178
+ * Prompt the agent to write a full project state summary to SUMMARY.md
179
+ * every N completed tasks (more comprehensive than the memory update).
180
+ * 0 = disabled.
181
+ */
182
+ summaryEveryNTasks: number;
183
+ /**
184
+ * Re-send the full agent profile (includeProfile=true) every N completed tasks.
185
+ * 0 = only send on the first task of each loop start.
186
+ * Useful to keep long-running agents on protocol even in resumed sessions.
187
+ */
188
+ profileEveryNTasks: number;
189
+ /**
190
+ * GitHub personal access token used by the Copilot TUI (SDK) provider.
191
+ * Overrides the GITHUB_TOKEN / GH_TOKEN env vars and keytar lookup.
192
+ * Required on Linux/headless machines where `copilot auth login` credentials
193
+ * are not available in the system keyring.
194
+ * The token needs the `copilot` scope (or a classic token with `read:user` + `copilot`).
195
+ */
196
+ copilotGithubToken: string;
197
+ /** Upload an agent backup zip to pixel-office when the export_request WS message is received. */
198
+ exportEnabled: boolean;
199
+ /** Automatically upload a backup once per day (only active when exportEnabled is true). */
200
+ exportDailyBackup: boolean;
201
+ /** Agent database ID (set automatically when export_config is received from pixel-office). */
202
+ agentId: string;
203
+ }
204
+ export declare const SETTINGS_DEFAULTS: AutodevSettings;
205
+ /**
206
+ * Parse a full WS URL (wss://host/ws?token=xxx&endpoint=slug) into the three
207
+ * legacy fields. Returns null if the URL is empty or not a WS scheme.
208
+ */
209
+ export declare function parseWsUrl(wsUrl: string): {
210
+ serverBaseUrl: string;
211
+ serverApiKey: string;
212
+ webhookSlug: string;
213
+ } | null;
214
+ export declare const NEW_SETTINGS_REL_PATH = ".autodev/settings.json";
215
+ export declare const LEGACY_SETTINGS_REL_PATH = ".vscode/autodev.json";
216
+ /** Path that should be used for writes (always the new canonical location). */
217
+ export declare function settingsWritePath(root: string): string;
218
+ /** Path that should be used for reads — canonical if present, else legacy. */
219
+ export declare function settingsReadPath(root: string): string;
220
+ /** Load settings, preferring `.autodev/settings.json` and falling back to the legacy `.vscode/autodev.json`. */
221
+ export declare function loadSettingsForRoot(root: string): AutodevSettings;
@@ -0,0 +1,176 @@
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.LEGACY_SETTINGS_REL_PATH = exports.NEW_SETTINGS_REL_PATH = exports.SETTINGS_DEFAULTS = void 0;
37
+ exports.parseWsUrl = parseWsUrl;
38
+ exports.settingsWritePath = settingsWritePath;
39
+ exports.settingsReadPath = settingsReadPath;
40
+ exports.loadSettingsForRoot = loadSettingsForRoot;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ exports.SETTINGS_DEFAULTS = {
44
+ provider: 'claude-cli',
45
+ wsUrl: '',
46
+ serverBaseUrl: '',
47
+ serverApiKey: '',
48
+ webhookSlug: '',
49
+ discordToken: '',
50
+ discordChannelId: '',
51
+ discordOwners: '',
52
+ loopInterval: 30,
53
+ taskTimeoutMinutes: 30,
54
+ taskCheckInMinutes: 20,
55
+ retryOnTimeout: false,
56
+ autoResetPendingTasks: true,
57
+ profilePath: '',
58
+ todoPath: '',
59
+ resumeSession: false,
60
+ vncEnabled: false,
61
+ vncHost: '',
62
+ vncPort: 5900,
63
+ vncPassword: '',
64
+ rdpEnabled: false,
65
+ rdpHost: '',
66
+ rdpPort: 3389,
67
+ rdpUsername: '',
68
+ rdpPassword: '',
69
+ rdpDomain: '',
70
+ rdpGuacWsUrl: '',
71
+ enableFileBrowser: false,
72
+ gitEnabled: false,
73
+ hooksEnabled: false,
74
+ hooksScope: 'project',
75
+ openCodeHooksEnabled: false,
76
+ autoStartLoop: false,
77
+ copilotModel: '',
78
+ claudeModel: '',
79
+ opencodeModel: '',
80
+ sessionName: '',
81
+ grokModel: '',
82
+ opencodeCacheEnabled: false,
83
+ mcpServers: {},
84
+ disabledBuiltinMcp: [],
85
+ fallbackProvider: 'opencode-cli',
86
+ fallbackProviderEnabled: false,
87
+ enabledProfileSections: [],
88
+ customProfileRefs: [],
89
+ autoCompact: false,
90
+ autoCompactInterval: 5,
91
+ opencodeTimeout: 0,
92
+ opencodeChunkTimeout: 0,
93
+ resetSessionEveryNTurns: 0,
94
+ maxTaskAttempts: 3,
95
+ pruneTodoEveryNTasks: 0,
96
+ journalLearnEveryNTasks: 0,
97
+ profileEveryNTasks: 0,
98
+ compactEveryNTasks: 0,
99
+ skillEveryNTasks: 0,
100
+ memoryEveryNTasks: 0,
101
+ summaryEveryNTasks: 0,
102
+ copilotGithubToken: '',
103
+ exportEnabled: false,
104
+ exportDailyBackup: false,
105
+ agentId: '',
106
+ };
107
+ /**
108
+ * Parse a full WS URL (wss://host/ws?token=xxx&endpoint=slug) into the three
109
+ * legacy fields. Returns null if the URL is empty or not a WS scheme.
110
+ */
111
+ function parseWsUrl(wsUrl) {
112
+ if (!wsUrl || (!wsUrl.startsWith('ws://') && !wsUrl.startsWith('wss://'))) {
113
+ return null;
114
+ }
115
+ try {
116
+ const u = new URL(wsUrl);
117
+ const token = u.searchParams.get('token') ?? '';
118
+ const endpoint = u.searchParams.get('endpoint') ?? '';
119
+ u.search = '';
120
+ return { serverBaseUrl: u.toString(), serverApiKey: token, webhookSlug: endpoint };
121
+ }
122
+ catch {
123
+ return null;
124
+ }
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // Settings file location.
128
+ //
129
+ // Canonical: <root>/.autodev/settings.json
130
+ // Legacy: <root>/.vscode/autodev.json (still read for back-compat)
131
+ //
132
+ // Reads prefer the canonical file. If it is missing but the legacy file
133
+ // exists, the legacy file is read transparently. New writes always go to the
134
+ // canonical path so a workspace migrates automatically on the next save.
135
+ // ---------------------------------------------------------------------------
136
+ exports.NEW_SETTINGS_REL_PATH = '.autodev/settings.json';
137
+ exports.LEGACY_SETTINGS_REL_PATH = '.vscode/autodev.json';
138
+ /** Path that should be used for writes (always the new canonical location). */
139
+ function settingsWritePath(root) {
140
+ return path.join(root, '.autodev', 'settings.json');
141
+ }
142
+ /** Path that should be used for reads — canonical if present, else legacy. */
143
+ function settingsReadPath(root) {
144
+ const canonical = path.join(root, '.autodev', 'settings.json');
145
+ if (fs.existsSync(canonical)) {
146
+ return canonical;
147
+ }
148
+ const legacy = path.join(root, '.vscode', 'autodev.json');
149
+ if (fs.existsSync(legacy)) {
150
+ return legacy;
151
+ }
152
+ return canonical; // doesn't exist; callers handle missing-file
153
+ }
154
+ /** Load settings, preferring `.autodev/settings.json` and falling back to the legacy `.vscode/autodev.json`. */
155
+ function loadSettingsForRoot(root) {
156
+ try {
157
+ const file = settingsReadPath(root);
158
+ if (!fs.existsSync(file)) {
159
+ return { ...exports.SETTINGS_DEFAULTS };
160
+ }
161
+ const raw = JSON.parse(fs.readFileSync(file, 'utf8'));
162
+ const merged = { ...exports.SETTINGS_DEFAULTS, ...raw };
163
+ // If wsUrl is set, derive the three legacy fields from it (wsUrl takes priority).
164
+ const parsed = parseWsUrl(merged.wsUrl);
165
+ if (parsed) {
166
+ merged.serverBaseUrl = parsed.serverBaseUrl;
167
+ merged.serverApiKey = parsed.serverApiKey;
168
+ merged.webhookSlug = parsed.webhookSlug;
169
+ }
170
+ return merged;
171
+ }
172
+ catch {
173
+ return { ...exports.SETTINGS_DEFAULTS };
174
+ }
175
+ }
176
+ //# sourceMappingURL=settingsLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsLoader.js","sourceRoot":"","sources":["../../src/core/settingsLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export declare class DiscordGateway {
2
+ private readonly botToken;
3
+ private ws;
4
+ private heartbeatTimer;
5
+ private jitterTimer;
6
+ private reconnectTimer;
7
+ private ackReceived;
8
+ private sequence;
9
+ private sessionId;
10
+ private resumeGatewayUrl;
11
+ private destroyed;
12
+ private reconnectAttempts;
13
+ constructor(botToken: string);
14
+ /** Open the gateway connection. Safe to call multiple times. */
15
+ connect(): void;
16
+ /** Close the connection permanently (e.g. loop stopped). */
17
+ destroy(): void;
18
+ private _connect;
19
+ private _handle;
20
+ private _identify;
21
+ private _startHeartbeat;
22
+ private _sendHeartbeat;
23
+ private _send;
24
+ private _scheduleReconnect;
25
+ private _cleanup;
26
+ }