@abdasis/agentdeck 2.44.2

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 (196) hide show
  1. package/README.md +122 -0
  2. package/agent/dist/config.d.ts +31 -0
  3. package/agent/dist/config.d.ts.map +1 -0
  4. package/agent/dist/config.js +81 -0
  5. package/agent/dist/config.js.map +1 -0
  6. package/agent/dist/db/commands.d.ts +25 -0
  7. package/agent/dist/db/commands.d.ts.map +1 -0
  8. package/agent/dist/db/commands.js +93 -0
  9. package/agent/dist/db/commands.js.map +1 -0
  10. package/agent/dist/db/index.d.ts +30 -0
  11. package/agent/dist/db/index.d.ts.map +1 -0
  12. package/agent/dist/db/index.js +368 -0
  13. package/agent/dist/db/index.js.map +1 -0
  14. package/agent/dist/db/schema.d.ts +74 -0
  15. package/agent/dist/db/schema.d.ts.map +1 -0
  16. package/agent/dist/db/schema.js +100 -0
  17. package/agent/dist/db/schema.js.map +1 -0
  18. package/agent/dist/db/sessions.d.ts +46 -0
  19. package/agent/dist/db/sessions.d.ts.map +1 -0
  20. package/agent/dist/db/sessions.js +198 -0
  21. package/agent/dist/db/sessions.js.map +1 -0
  22. package/agent/dist/index.d.ts +2 -0
  23. package/agent/dist/index.d.ts.map +1 -0
  24. package/agent/dist/index.js +19 -0
  25. package/agent/dist/index.js.map +1 -0
  26. package/agent/dist/lib/command-session.d.ts +20 -0
  27. package/agent/dist/lib/command-session.d.ts.map +1 -0
  28. package/agent/dist/lib/command-session.js +64 -0
  29. package/agent/dist/lib/command-session.js.map +1 -0
  30. package/agent/dist/lib/git.d.ts +8 -0
  31. package/agent/dist/lib/git.d.ts.map +1 -0
  32. package/agent/dist/lib/git.js +194 -0
  33. package/agent/dist/lib/git.js.map +1 -0
  34. package/agent/dist/lib/init-script.d.ts +33 -0
  35. package/agent/dist/lib/init-script.d.ts.map +1 -0
  36. package/agent/dist/lib/init-script.js +523 -0
  37. package/agent/dist/lib/init-script.js.map +1 -0
  38. package/agent/dist/lib/transcript.d.ts +16 -0
  39. package/agent/dist/lib/transcript.d.ts.map +1 -0
  40. package/agent/dist/lib/transcript.js +64 -0
  41. package/agent/dist/lib/transcript.js.map +1 -0
  42. package/agent/dist/logger.d.ts +12 -0
  43. package/agent/dist/logger.d.ts.map +1 -0
  44. package/agent/dist/logger.js +39 -0
  45. package/agent/dist/logger.js.map +1 -0
  46. package/agent/dist/middleware/auth.d.ts +15 -0
  47. package/agent/dist/middleware/auth.d.ts.map +1 -0
  48. package/agent/dist/middleware/auth.js +55 -0
  49. package/agent/dist/middleware/auth.js.map +1 -0
  50. package/agent/dist/routes/commands.d.ts +8 -0
  51. package/agent/dist/routes/commands.d.ts.map +1 -0
  52. package/agent/dist/routes/commands.js +229 -0
  53. package/agent/dist/routes/commands.js.map +1 -0
  54. package/agent/dist/routes/files.d.ts +7 -0
  55. package/agent/dist/routes/files.d.ts.map +1 -0
  56. package/agent/dist/routes/files.js +206 -0
  57. package/agent/dist/routes/files.js.map +1 -0
  58. package/agent/dist/routes/hooks.d.ts +7 -0
  59. package/agent/dist/routes/hooks.d.ts.map +1 -0
  60. package/agent/dist/routes/hooks.js +147 -0
  61. package/agent/dist/routes/hooks.js.map +1 -0
  62. package/agent/dist/routes/index.d.ts +10 -0
  63. package/agent/dist/routes/index.d.ts.map +1 -0
  64. package/agent/dist/routes/index.js +10 -0
  65. package/agent/dist/routes/index.js.map +1 -0
  66. package/agent/dist/routes/pair.d.ts +26 -0
  67. package/agent/dist/routes/pair.d.ts.map +1 -0
  68. package/agent/dist/routes/pair.js +384 -0
  69. package/agent/dist/routes/pair.js.map +1 -0
  70. package/agent/dist/routes/projects.d.ts +6 -0
  71. package/agent/dist/routes/projects.d.ts.map +1 -0
  72. package/agent/dist/routes/projects.js +121 -0
  73. package/agent/dist/routes/projects.js.map +1 -0
  74. package/agent/dist/routes/sessions-git.d.ts +7 -0
  75. package/agent/dist/routes/sessions-git.d.ts.map +1 -0
  76. package/agent/dist/routes/sessions-git.js +31 -0
  77. package/agent/dist/routes/sessions-git.js.map +1 -0
  78. package/agent/dist/routes/sessions-tmux.d.ts +7 -0
  79. package/agent/dist/routes/sessions-tmux.d.ts.map +1 -0
  80. package/agent/dist/routes/sessions-tmux.js +94 -0
  81. package/agent/dist/routes/sessions-tmux.js.map +1 -0
  82. package/agent/dist/routes/sessions.d.ts +7 -0
  83. package/agent/dist/routes/sessions.d.ts.map +1 -0
  84. package/agent/dist/routes/sessions.js +172 -0
  85. package/agent/dist/routes/sessions.js.map +1 -0
  86. package/agent/dist/server.d.ts +6 -0
  87. package/agent/dist/server.d.ts.map +1 -0
  88. package/agent/dist/server.js +95 -0
  89. package/agent/dist/server.js.map +1 -0
  90. package/agent/dist/terminal.d.ts +19 -0
  91. package/agent/dist/terminal.d.ts.map +1 -0
  92. package/agent/dist/terminal.js +175 -0
  93. package/agent/dist/terminal.js.map +1 -0
  94. package/agent/dist/updater.d.ts +18 -0
  95. package/agent/dist/updater.d.ts.map +1 -0
  96. package/agent/dist/updater.js +122 -0
  97. package/agent/dist/updater.js.map +1 -0
  98. package/agent/dist/version.d.ts +20 -0
  99. package/agent/dist/version.d.ts.map +1 -0
  100. package/agent/dist/version.js +66 -0
  101. package/agent/dist/version.js.map +1 -0
  102. package/agent/dist/websocket-handlers.d.ts +38 -0
  103. package/agent/dist/websocket-handlers.d.ts.map +1 -0
  104. package/agent/dist/websocket-handlers.js +389 -0
  105. package/agent/dist/websocket-handlers.js.map +1 -0
  106. package/agent/node_modules/@agentdeck/shared/dist/index.d.ts +2 -0
  107. package/agent/node_modules/@agentdeck/shared/dist/index.d.ts.map +1 -0
  108. package/agent/node_modules/@agentdeck/shared/dist/index.js +2 -0
  109. package/agent/node_modules/@agentdeck/shared/dist/index.js.map +1 -0
  110. package/agent/node_modules/@agentdeck/shared/dist/types/index.d.ts +235 -0
  111. package/agent/node_modules/@agentdeck/shared/dist/types/index.d.ts.map +1 -0
  112. package/agent/node_modules/@agentdeck/shared/dist/types/index.js +5 -0
  113. package/agent/node_modules/@agentdeck/shared/dist/types/index.js.map +1 -0
  114. package/agent/node_modules/@agentdeck/shared/package.json +29 -0
  115. package/dist/commands/doctor.d.ts +3 -0
  116. package/dist/commands/doctor.d.ts.map +1 -0
  117. package/dist/commands/doctor.js +304 -0
  118. package/dist/commands/doctor.js.map +1 -0
  119. package/dist/commands/hooks.d.ts +3 -0
  120. package/dist/commands/hooks.d.ts.map +1 -0
  121. package/dist/commands/hooks.js +187 -0
  122. package/dist/commands/hooks.js.map +1 -0
  123. package/dist/commands/init.d.ts +3 -0
  124. package/dist/commands/init.d.ts.map +1 -0
  125. package/dist/commands/init.js +109 -0
  126. package/dist/commands/init.js.map +1 -0
  127. package/dist/commands/logs.d.ts +3 -0
  128. package/dist/commands/logs.d.ts.map +1 -0
  129. package/dist/commands/logs.js +38 -0
  130. package/dist/commands/logs.js.map +1 -0
  131. package/dist/commands/profile.d.ts +3 -0
  132. package/dist/commands/profile.d.ts.map +1 -0
  133. package/dist/commands/profile.js +156 -0
  134. package/dist/commands/profile.js.map +1 -0
  135. package/dist/commands/service.d.ts +3 -0
  136. package/dist/commands/service.d.ts.map +1 -0
  137. package/dist/commands/service.js +235 -0
  138. package/dist/commands/service.js.map +1 -0
  139. package/dist/commands/start.d.ts +3 -0
  140. package/dist/commands/start.d.ts.map +1 -0
  141. package/dist/commands/start.js +122 -0
  142. package/dist/commands/start.js.map +1 -0
  143. package/dist/commands/status.d.ts +3 -0
  144. package/dist/commands/status.d.ts.map +1 -0
  145. package/dist/commands/status.js +48 -0
  146. package/dist/commands/status.js.map +1 -0
  147. package/dist/commands/stop.d.ts +3 -0
  148. package/dist/commands/stop.d.ts.map +1 -0
  149. package/dist/commands/stop.js +23 -0
  150. package/dist/commands/stop.js.map +1 -0
  151. package/dist/commands/update.d.ts +3 -0
  152. package/dist/commands/update.d.ts.map +1 -0
  153. package/dist/commands/update.js +129 -0
  154. package/dist/commands/update.js.map +1 -0
  155. package/dist/commands/version.d.ts +3 -0
  156. package/dist/commands/version.d.ts.map +1 -0
  157. package/dist/commands/version.js +39 -0
  158. package/dist/commands/version.js.map +1 -0
  159. package/dist/index.d.ts +5 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +45 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/lib/config.d.ts +68 -0
  164. package/dist/lib/config.d.ts.map +1 -0
  165. package/dist/lib/config.js +156 -0
  166. package/dist/lib/config.js.map +1 -0
  167. package/dist/lib/hooks.d.ts +67 -0
  168. package/dist/lib/hooks.d.ts.map +1 -0
  169. package/dist/lib/hooks.js +353 -0
  170. package/dist/lib/hooks.js.map +1 -0
  171. package/dist/lib/paths.d.ts +36 -0
  172. package/dist/lib/paths.d.ts.map +1 -0
  173. package/dist/lib/paths.js +77 -0
  174. package/dist/lib/paths.js.map +1 -0
  175. package/dist/lib/prerequisites.d.ts +60 -0
  176. package/dist/lib/prerequisites.d.ts.map +1 -0
  177. package/dist/lib/prerequisites.js +266 -0
  178. package/dist/lib/prerequisites.js.map +1 -0
  179. package/dist/lib/process.d.ts +40 -0
  180. package/dist/lib/process.d.ts.map +1 -0
  181. package/dist/lib/process.js +192 -0
  182. package/dist/lib/process.js.map +1 -0
  183. package/dist/service/index.d.ts +44 -0
  184. package/dist/service/index.d.ts.map +1 -0
  185. package/dist/service/index.js +18 -0
  186. package/dist/service/index.js.map +1 -0
  187. package/dist/service/launchd.d.ts +18 -0
  188. package/dist/service/launchd.d.ts.map +1 -0
  189. package/dist/service/launchd.js +208 -0
  190. package/dist/service/launchd.js.map +1 -0
  191. package/dist/service/systemd.d.ts +18 -0
  192. package/dist/service/systemd.d.ts.map +1 -0
  193. package/dist/service/systemd.js +196 -0
  194. package/dist/service/systemd.js.map +1 -0
  195. package/hooks/notify-agentdeck.sh +53 -0
  196. package/package.json +83 -0
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@agentdeck/shared",
3
+ "version": "2.44.2",
4
+ "private": true,
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ },
11
+ "./types": {
12
+ "types": "./dist/types/index.d.ts",
13
+ "import": "./dist/types/index.js"
14
+ }
15
+ },
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "dev": "tsc --watch",
19
+ "typecheck": "tsc --noEmit",
20
+ "clean": "rm -rf dist",
21
+ "test": "vitest run",
22
+ "test:watch": "vitest",
23
+ "test:coverage": "vitest run --coverage"
24
+ },
25
+ "devDependencies": {
26
+ "typescript": "^5.7.2",
27
+ "vitest": "^4.0.16"
28
+ }
29
+ }
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const doctorCommand: Command;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,eAAO,MAAM,aAAa,SAoTtB,CAAC"}
@@ -0,0 +1,304 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { existsSync } from 'fs';
4
+ import { checkNode, checkTmux, checkNativeDeps, getStoredAbiVersion, } from '../lib/prerequisites.js';
5
+ import { configExists, loadConfig } from '../lib/config.js';
6
+ import { isAgentRunning, getAgentHealth } from '../lib/process.js';
7
+ import { createServiceManager } from '../service/index.js';
8
+ import { getAgentPaths } from '../lib/paths.js';
9
+ import { getHooksStatus } from '../lib/hooks.js';
10
+ export const doctorCommand = new Command('doctor')
11
+ .description('Diagnose issues with your AgentDeck installation')
12
+ .action(async () => {
13
+ console.log(chalk.bold('\nAgentDeck Doctor\n'));
14
+ console.log(chalk.dim('Running diagnostics...\n'));
15
+ const results = [];
16
+ // 1. Check Node.js
17
+ const nodeCheck = checkNode();
18
+ results.push({
19
+ name: 'Node.js',
20
+ status: nodeCheck.status === 'ok' ? 'pass' : nodeCheck.status === 'warn' ? 'warn' : 'fail',
21
+ message: nodeCheck.message,
22
+ hint: nodeCheck.status === 'error' ? 'Install Node.js 22 or later' : undefined,
23
+ });
24
+ // 2. Check tmux
25
+ const tmuxCheck = checkTmux();
26
+ results.push({
27
+ name: 'tmux',
28
+ status: tmuxCheck.status === 'ok' ? 'pass' : tmuxCheck.status === 'warn' ? 'warn' : 'fail',
29
+ message: tmuxCheck.message,
30
+ hint: tmuxCheck.status === 'error'
31
+ ? process.platform === 'darwin'
32
+ ? 'Install with: brew install tmux'
33
+ : 'Install with: sudo apt install tmux'
34
+ : undefined,
35
+ });
36
+ // 3. Check native dependencies
37
+ const nativeCheck = await checkNativeDeps();
38
+ results.push({
39
+ name: 'Native modules',
40
+ status: nativeCheck.status === 'ok' ? 'pass' : nativeCheck.status === 'warn' ? 'warn' : 'fail',
41
+ message: nativeCheck.message,
42
+ hint: nativeCheck.status === 'error' ? 'Try reinstalling: npm install -g @agentdeck/cli' : undefined,
43
+ });
44
+ // 3b. Check Node ABI version
45
+ const storedAbi = getStoredAbiVersion();
46
+ const currentAbi = process.versions.modules;
47
+ if (storedAbi && storedAbi !== currentAbi) {
48
+ results.push({
49
+ name: 'Node ABI version',
50
+ status: 'warn',
51
+ message: `Changed (${storedAbi} → ${currentAbi}). Will rebuild on next start.`,
52
+ hint: 'Run "agentdeck start" to auto-rebuild, or "npm rebuild -g @agentdeck/cli"',
53
+ });
54
+ }
55
+ else {
56
+ results.push({
57
+ name: 'Node ABI version',
58
+ status: 'pass',
59
+ message: `${currentAbi} (Node ${process.version})`,
60
+ });
61
+ }
62
+ // 4. Check configuration
63
+ if (configExists()) {
64
+ const config = loadConfig();
65
+ if (config) {
66
+ results.push({
67
+ name: 'Configuration',
68
+ status: 'pass',
69
+ message: `Configured for "${config.machine.name}"`,
70
+ });
71
+ }
72
+ else {
73
+ results.push({
74
+ name: 'Configuration',
75
+ status: 'fail',
76
+ message: 'Config file exists but is invalid',
77
+ hint: 'Run "agentdeck init" to reconfigure',
78
+ });
79
+ }
80
+ }
81
+ else {
82
+ results.push({
83
+ name: 'Configuration',
84
+ status: 'fail',
85
+ message: 'Not configured',
86
+ hint: 'Run "agentdeck init" to configure',
87
+ });
88
+ }
89
+ // 5. Check agent process
90
+ const processStatus = isAgentRunning();
91
+ if (processStatus.running) {
92
+ results.push({
93
+ name: 'Agent process',
94
+ status: 'pass',
95
+ message: `Running (PID: ${processStatus.pid})`,
96
+ });
97
+ // 6. Check agent health (only if running)
98
+ const config = loadConfig();
99
+ if (config) {
100
+ const health = await getAgentHealth(config.agent.port);
101
+ if (health.healthy) {
102
+ results.push({
103
+ name: 'Agent health',
104
+ status: 'pass',
105
+ message: `Healthy (${health.sessions} sessions)`,
106
+ });
107
+ }
108
+ else {
109
+ results.push({
110
+ name: 'Agent health',
111
+ status: 'warn',
112
+ message: `Not responding: ${health.error}`,
113
+ hint: 'Try restarting: agentdeck restart',
114
+ });
115
+ }
116
+ }
117
+ }
118
+ else {
119
+ results.push({
120
+ name: 'Agent process',
121
+ status: 'warn',
122
+ message: 'Not running',
123
+ hint: 'Start with: agentdeck start',
124
+ });
125
+ }
126
+ // 7. Check service installation
127
+ try {
128
+ const serviceManager = createServiceManager();
129
+ const serviceStatus = await serviceManager.status();
130
+ if (serviceStatus.installed) {
131
+ if (serviceStatus.running) {
132
+ results.push({
133
+ name: `Service (${serviceManager.platform})`,
134
+ status: 'pass',
135
+ message: `Installed and running${serviceStatus.enabled ? ', enabled at boot' : ''}`,
136
+ });
137
+ }
138
+ else {
139
+ results.push({
140
+ name: `Service (${serviceManager.platform})`,
141
+ status: 'warn',
142
+ message: 'Installed but not running',
143
+ hint: 'Start with: agentdeck service start',
144
+ });
145
+ }
146
+ }
147
+ else {
148
+ results.push({
149
+ name: `Service (${serviceManager.platform})`,
150
+ status: 'warn',
151
+ message: 'Not installed',
152
+ hint: 'Install with: agentdeck service install --start',
153
+ });
154
+ }
155
+ }
156
+ catch (err) {
157
+ results.push({
158
+ name: 'Service',
159
+ status: 'fail',
160
+ message: err.message,
161
+ });
162
+ }
163
+ // 8. Check paths and directories
164
+ const paths = getAgentPaths();
165
+ // Config directory
166
+ if (existsSync(paths.configDir)) {
167
+ results.push({
168
+ name: 'Config directory',
169
+ status: 'pass',
170
+ message: paths.configDir,
171
+ });
172
+ }
173
+ else {
174
+ results.push({
175
+ name: 'Config directory',
176
+ status: 'warn',
177
+ message: `Missing: ${paths.configDir}`,
178
+ hint: 'Run "agentdeck init" to create',
179
+ });
180
+ }
181
+ // Log directory
182
+ if (existsSync(paths.logDir)) {
183
+ results.push({
184
+ name: 'Log directory',
185
+ status: 'pass',
186
+ message: paths.logDir,
187
+ });
188
+ }
189
+ else {
190
+ results.push({
191
+ name: 'Log directory',
192
+ status: 'warn',
193
+ message: `Missing: ${paths.logDir}`,
194
+ hint: 'Will be created when agent starts',
195
+ });
196
+ }
197
+ // 9. Check port availability (if agent not running)
198
+ if (!processStatus.running) {
199
+ const config = loadConfig();
200
+ if (config) {
201
+ const net = await import('net');
202
+ const portAvailable = await new Promise((resolve) => {
203
+ const server = net.createServer();
204
+ server.once('error', () => resolve(false));
205
+ server.once('listening', () => {
206
+ server.close();
207
+ resolve(true);
208
+ });
209
+ server.listen(config.agent.port, '127.0.0.1');
210
+ });
211
+ if (portAvailable) {
212
+ results.push({
213
+ name: 'Port availability',
214
+ status: 'pass',
215
+ message: `Port ${config.agent.port} is available`,
216
+ });
217
+ }
218
+ else {
219
+ results.push({
220
+ name: 'Port availability',
221
+ status: 'fail',
222
+ message: `Port ${config.agent.port} is in use`,
223
+ hint: 'Change the port in ~/.agentdeck/config.json or stop the conflicting process',
224
+ });
225
+ }
226
+ }
227
+ }
228
+ // 10. Check hooks status
229
+ const hooksStatus = getHooksStatus();
230
+ if (hooksStatus.installed) {
231
+ if (hooksStatus.needsUpdate) {
232
+ results.push({
233
+ name: 'Notification hooks',
234
+ status: 'warn',
235
+ message: `Installed (v${hooksStatus.version}) - update available`,
236
+ hint: 'Run "agentdeck hooks install" to update',
237
+ });
238
+ }
239
+ else {
240
+ results.push({
241
+ name: 'Notification hooks',
242
+ status: 'pass',
243
+ message: `Installed (v${hooksStatus.version})`,
244
+ });
245
+ }
246
+ }
247
+ else {
248
+ results.push({
249
+ name: 'Notification hooks',
250
+ status: 'warn',
251
+ message: 'Not installed',
252
+ hint: 'Run "agentdeck hooks install" for attention notifications',
253
+ });
254
+ }
255
+ // Print results
256
+ console.log(chalk.bold('Results:\n'));
257
+ let passCount = 0;
258
+ let warnCount = 0;
259
+ let failCount = 0;
260
+ for (const result of results) {
261
+ let icon;
262
+ let color;
263
+ switch (result.status) {
264
+ case 'pass':
265
+ icon = '✓';
266
+ color = chalk.green;
267
+ passCount++;
268
+ break;
269
+ case 'warn':
270
+ icon = '!';
271
+ color = chalk.yellow;
272
+ warnCount++;
273
+ break;
274
+ case 'fail':
275
+ icon = '✗';
276
+ color = chalk.red;
277
+ failCount++;
278
+ break;
279
+ }
280
+ console.log(`${color(icon)} ${result.name}: ${result.message}`);
281
+ if (result.hint) {
282
+ console.log(chalk.dim(` → ${result.hint}`));
283
+ }
284
+ }
285
+ // Summary
286
+ console.log();
287
+ console.log(chalk.bold('Summary:'));
288
+ console.log(` ${chalk.green(passCount + ' passed')}, ${chalk.yellow(warnCount + ' warnings')}, ${chalk.red(failCount + ' failures')}`);
289
+ if (failCount > 0) {
290
+ console.log();
291
+ console.log(chalk.red('Some checks failed. Please resolve the issues above.'));
292
+ process.exit(1);
293
+ }
294
+ else if (warnCount > 0) {
295
+ console.log();
296
+ console.log(chalk.yellow('Some warnings detected. Consider resolving them for best experience.'));
297
+ }
298
+ else {
299
+ console.log();
300
+ console.log(chalk.green('All checks passed! AgentDeck is ready to use.'));
301
+ }
302
+ console.log();
303
+ });
304
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const hooksCommand: Command;
3
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,YAAY,SAExB,CAAC"}
@@ -0,0 +1,187 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { getHooksStatus, installHook, uninstallHook, getCodexNotifyStatus, installCodexNotify, uninstallCodexNotify, } from '../lib/hooks.js';
5
+ export const hooksCommand = new Command('hooks').description('Manage Claude Code and Codex notification hooks');
6
+ hooksCommand
7
+ .command('install')
8
+ .description('Install Claude Code and Codex notification hooks')
9
+ .option('-f, --force', 'Force reinstall even if hooks are up to date')
10
+ .action(async (options) => {
11
+ const spinner = ora('Checking hooks status...').start();
12
+ try {
13
+ const status = getHooksStatus();
14
+ // Check if already installed and up to date
15
+ if (status.installed && !status.needsUpdate && !options.force) {
16
+ spinner.succeed('Hooks already installed and up to date');
17
+ console.log(chalk.dim(` Version: ${status.version}`));
18
+ console.log(chalk.dim(` Path: ${status.path}`));
19
+ console.log(chalk.dim('\nUse --force to reinstall.\n'));
20
+ return;
21
+ }
22
+ // Check if update needed
23
+ if (status.installed && status.needsUpdate) {
24
+ spinner.text = `Updating hooks (${status.version} -> ${status.packagedVersion})...`;
25
+ }
26
+ else {
27
+ spinner.text = 'Installing hooks...';
28
+ }
29
+ const result = installHook();
30
+ if (result.success) {
31
+ if (status.installed && status.needsUpdate) {
32
+ spinner.succeed(`Hooks updated to v${result.installedVersion}`);
33
+ }
34
+ else {
35
+ spinner.succeed(`Hooks installed (v${result.installedVersion})`);
36
+ }
37
+ console.log(chalk.dim(` Path: ${status.path}`));
38
+ console.log(chalk.dim(' Settings: ~/.claude/settings.json\n'));
39
+ console.log(chalk.green('Claude Code will now notify AgentDeck when it needs attention.'));
40
+ console.log(chalk.dim('Make sure the AgentDeck agent is running: agentdeck start\n'));
41
+ const codexResult = installCodexNotify({ force: options.force });
42
+ if (codexResult.status === 'installed' || codexResult.status === 'updated') {
43
+ console.log(chalk.green('Codex will now notify AgentDeck when it needs attention.'));
44
+ console.log(chalk.dim(' Settings: ~/.codex/config.toml\n'));
45
+ }
46
+ else if (codexResult.status === 'conflict') {
47
+ console.log(chalk.yellow('Codex notify already configured. Update ~/.codex/config.toml to use notify-agentdeck.sh.'));
48
+ console.log(chalk.dim(' Expected: notify = ["bash", "~/.agentdeck/hooks/notify-agentdeck.sh"]\n'));
49
+ }
50
+ else if (codexResult.status === 'missing-config') {
51
+ console.log(chalk.dim('Codex config not found (skipped). If you use Codex, add notify to ~/.codex/config.toml.'));
52
+ console.log(chalk.dim(' notify = ["bash", "~/.agentdeck/hooks/notify-agentdeck.sh"]\n'));
53
+ }
54
+ }
55
+ else {
56
+ spinner.fail(`Failed to install hooks: ${result.error}`);
57
+ process.exit(1);
58
+ }
59
+ }
60
+ catch (err) {
61
+ spinner.fail(`Error: ${err.message}`);
62
+ process.exit(1);
63
+ }
64
+ });
65
+ hooksCommand
66
+ .command('uninstall')
67
+ .description('Uninstall Claude Code and Codex notification hooks')
68
+ .option('--keep-script', 'Keep the script file, only remove from settings')
69
+ .action(async (options) => {
70
+ const spinner = ora('Checking hooks status...').start();
71
+ try {
72
+ const status = getHooksStatus();
73
+ if (!status.installed && !status.settingsConfigured) {
74
+ spinner.succeed('No hooks installed - nothing to uninstall');
75
+ return;
76
+ }
77
+ spinner.text = 'Uninstalling hooks...';
78
+ const codexResult = uninstallCodexNotify();
79
+ const result = uninstallHook(!options.keepScript);
80
+ if (result.success) {
81
+ spinner.succeed('Hooks uninstalled');
82
+ if (!options.keepScript) {
83
+ console.log(chalk.dim(` Removed: ${status.path}`));
84
+ }
85
+ console.log(chalk.dim(' Cleaned: ~/.claude/settings.json\n'));
86
+ if (codexResult.status === 'removed') {
87
+ console.log(chalk.dim(' Cleaned: ~/.codex/config.toml\n'));
88
+ }
89
+ else if (codexResult.status === 'conflict') {
90
+ console.log(chalk.yellow('Codex notify entry not managed by AgentDeck. No changes made to config.'));
91
+ }
92
+ }
93
+ else {
94
+ spinner.fail(`Failed to uninstall hooks: ${result.error}`);
95
+ process.exit(1);
96
+ }
97
+ }
98
+ catch (err) {
99
+ spinner.fail(`Error: ${err.message}`);
100
+ process.exit(1);
101
+ }
102
+ });
103
+ hooksCommand
104
+ .command('status')
105
+ .description('Show hooks installation status')
106
+ .action(async () => {
107
+ console.log(chalk.bold('\nAgentDeck Hooks Status\n'));
108
+ const status = getHooksStatus();
109
+ if (status.installed) {
110
+ console.log(chalk.green('✓ Hooks installed'));
111
+ console.log(chalk.dim(` Version: ${status.version || 'unknown'}`));
112
+ console.log(chalk.dim(` Path: ${status.path}`));
113
+ if (status.needsUpdate) {
114
+ console.log();
115
+ console.log(chalk.yellow(`⚠ Update available: ${status.version} -> ${status.packagedVersion}`));
116
+ console.log(chalk.dim(' Run: agentdeck hooks install'));
117
+ }
118
+ else {
119
+ console.log(chalk.green('✓ Up to date'));
120
+ }
121
+ }
122
+ else {
123
+ console.log(chalk.yellow('✗ Hooks not installed'));
124
+ if (status.settingsConfigured) {
125
+ console.log(chalk.dim(' Settings configured but script missing'));
126
+ }
127
+ console.log();
128
+ console.log('Run: agentdeck hooks install');
129
+ }
130
+ console.log();
131
+ // Show settings configuration
132
+ console.log(chalk.bold('Claude Code Settings:'));
133
+ if (status.settingsConfigured) {
134
+ console.log(chalk.green('✓ Notification hook registered'));
135
+ }
136
+ else {
137
+ console.log(chalk.yellow('✗ Notification hook not registered'));
138
+ }
139
+ console.log();
140
+ const codexStatus = getCodexNotifyStatus();
141
+ console.log(chalk.bold('Codex Settings:'));
142
+ if (!codexStatus.configExists) {
143
+ console.log(chalk.dim('Config not found: ~/.codex/config.toml'));
144
+ }
145
+ else if (codexStatus.notifyConfigured) {
146
+ console.log(chalk.green('✓ Notification hook registered'));
147
+ }
148
+ else if (codexStatus.notifyLine) {
149
+ console.log(chalk.yellow('✗ Notification hook points elsewhere'));
150
+ console.log(chalk.dim(' Expected: notify = ["bash", "~/.agentdeck/hooks/notify-agentdeck.sh"]'));
151
+ }
152
+ else {
153
+ console.log(chalk.yellow('✗ Notification hook not registered'));
154
+ }
155
+ console.log();
156
+ });
157
+ hooksCommand
158
+ .command('update')
159
+ .description('Update hooks to the latest version')
160
+ .action(async () => {
161
+ const spinner = ora('Checking for updates...').start();
162
+ try {
163
+ const status = getHooksStatus();
164
+ if (!status.installed) {
165
+ spinner.info('Hooks not installed. Run: agentdeck hooks install');
166
+ return;
167
+ }
168
+ if (!status.needsUpdate) {
169
+ spinner.succeed(`Hooks already up to date (v${status.version})`);
170
+ return;
171
+ }
172
+ spinner.text = `Updating hooks (${status.version} -> ${status.packagedVersion})...`;
173
+ const result = installHook();
174
+ if (result.success) {
175
+ spinner.succeed(`Hooks updated to v${result.installedVersion}`);
176
+ }
177
+ else {
178
+ spinner.fail(`Failed to update hooks: ${result.error}`);
179
+ process.exit(1);
180
+ }
181
+ }
182
+ catch (err) {
183
+ spinner.fail(`Error: ${err.message}`);
184
+ process.exit(1);
185
+ }
186
+ });
187
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const initCommand: Command;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,WAAW,SAoHpB,CAAC"}