247-cli 2.21.1 → 2.23.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 (160) hide show
  1. package/agent/dist/config.d.ts +4 -7
  2. package/agent/dist/config.d.ts.map +1 -1
  3. package/agent/dist/config.js +1 -2
  4. package/agent/dist/config.js.map +1 -1
  5. package/agent/dist/db/index.d.ts +0 -7
  6. package/agent/dist/db/index.d.ts.map +1 -1
  7. package/agent/dist/db/index.js +68 -333
  8. package/agent/dist/db/index.js.map +1 -1
  9. package/agent/dist/db/schema.d.ts +3 -90
  10. package/agent/dist/db/schema.d.ts.map +1 -1
  11. package/agent/dist/db/schema.js +4 -105
  12. package/agent/dist/db/schema.js.map +1 -1
  13. package/agent/dist/db/sessions.d.ts +0 -53
  14. package/agent/dist/db/sessions.d.ts.map +1 -1
  15. package/agent/dist/db/sessions.js +3 -224
  16. package/agent/dist/db/sessions.js.map +1 -1
  17. package/agent/dist/index.js +1 -0
  18. package/agent/dist/index.js.map +1 -1
  19. package/agent/dist/logger.d.ts +0 -2
  20. package/agent/dist/logger.d.ts.map +1 -1
  21. package/agent/dist/logger.js +0 -4
  22. package/agent/dist/logger.js.map +1 -1
  23. package/agent/dist/routes/attention.d.ts +10 -0
  24. package/agent/dist/routes/attention.d.ts.map +1 -0
  25. package/agent/dist/routes/attention.js +123 -0
  26. package/agent/dist/routes/attention.js.map +1 -0
  27. package/agent/dist/routes/index.d.ts +3 -7
  28. package/agent/dist/routes/index.d.ts.map +1 -1
  29. package/agent/dist/routes/index.js +3 -7
  30. package/agent/dist/routes/index.js.map +1 -1
  31. package/agent/dist/routes/pair.d.ts +26 -0
  32. package/agent/dist/routes/pair.d.ts.map +1 -0
  33. package/agent/dist/routes/pair.js +381 -0
  34. package/agent/dist/routes/pair.js.map +1 -0
  35. package/agent/dist/routes/projects.d.ts +2 -1
  36. package/agent/dist/routes/projects.d.ts.map +1 -1
  37. package/agent/dist/routes/projects.js +7 -39
  38. package/agent/dist/routes/projects.js.map +1 -1
  39. package/agent/dist/routes/sessions.d.ts +1 -0
  40. package/agent/dist/routes/sessions.d.ts.map +1 -1
  41. package/agent/dist/routes/sessions.js +14 -379
  42. package/agent/dist/routes/sessions.js.map +1 -1
  43. package/agent/dist/server.d.ts.map +1 -1
  44. package/agent/dist/server.js +11 -81
  45. package/agent/dist/server.js.map +1 -1
  46. package/agent/dist/services/index.d.ts +1 -6
  47. package/agent/dist/services/index.d.ts.map +1 -1
  48. package/agent/dist/services/index.js +4 -4
  49. package/agent/dist/services/index.js.map +1 -1
  50. package/agent/dist/setup-hooks.d.ts +10 -0
  51. package/agent/dist/setup-hooks.d.ts.map +1 -0
  52. package/agent/dist/setup-hooks.js +157 -0
  53. package/agent/dist/setup-hooks.js.map +1 -0
  54. package/agent/dist/status.d.ts +0 -6
  55. package/agent/dist/status.d.ts.map +1 -1
  56. package/agent/dist/status.js +2 -12
  57. package/agent/dist/status.js.map +1 -1
  58. package/agent/dist/terminal.d.ts +0 -11
  59. package/agent/dist/terminal.d.ts.map +1 -1
  60. package/agent/dist/terminal.js +6 -60
  61. package/agent/dist/terminal.js.map +1 -1
  62. package/agent/dist/websocket-handlers.d.ts +1 -0
  63. package/agent/dist/websocket-handlers.d.ts.map +1 -1
  64. package/agent/dist/websocket-handlers.js +3 -187
  65. package/agent/dist/websocket-handlers.js.map +1 -1
  66. package/agent/node_modules/247-shared/dist/types/index.d.ts +0 -232
  67. package/agent/node_modules/247-shared/dist/types/index.d.ts.map +1 -1
  68. package/agent/node_modules/247-shared/dist/types/index.js +1 -63
  69. package/agent/node_modules/247-shared/dist/types/index.js.map +1 -1
  70. package/agent/node_modules/247-shared/package.json +1 -1
  71. package/dist/index.js +1 -1
  72. package/package.json +3 -3
  73. package/agent/dist/db/environments.d.ts +0 -60
  74. package/agent/dist/db/environments.d.ts.map +0 -1
  75. package/agent/dist/db/environments.js +0 -235
  76. package/agent/dist/db/environments.js.map +0 -1
  77. package/agent/dist/db/events.d.ts +0 -46
  78. package/agent/dist/db/events.d.ts.map +0 -1
  79. package/agent/dist/db/events.js +0 -193
  80. package/agent/dist/db/events.js.map +0 -1
  81. package/agent/dist/db/history.d.ts +0 -37
  82. package/agent/dist/db/history.d.ts.map +0 -1
  83. package/agent/dist/db/history.js +0 -98
  84. package/agent/dist/db/history.js.map +0 -1
  85. package/agent/dist/db/push-subscriptions.d.ts +0 -44
  86. package/agent/dist/db/push-subscriptions.d.ts.map +0 -1
  87. package/agent/dist/db/push-subscriptions.js +0 -98
  88. package/agent/dist/db/push-subscriptions.js.map +0 -1
  89. package/agent/dist/editor.d.ts +0 -18
  90. package/agent/dist/editor.d.ts.map +0 -1
  91. package/agent/dist/editor.js +0 -222
  92. package/agent/dist/editor.js.map +0 -1
  93. package/agent/dist/environments.d.ts +0 -59
  94. package/agent/dist/environments.d.ts.map +0 -1
  95. package/agent/dist/environments.js +0 -229
  96. package/agent/dist/environments.js.map +0 -1
  97. package/agent/dist/git.d.ts +0 -39
  98. package/agent/dist/git.d.ts.map +0 -1
  99. package/agent/dist/git.js +0 -436
  100. package/agent/dist/git.js.map +0 -1
  101. package/agent/dist/heartbeat-monitor.d.ts +0 -24
  102. package/agent/dist/heartbeat-monitor.d.ts.map +0 -1
  103. package/agent/dist/heartbeat-monitor.js +0 -105
  104. package/agent/dist/heartbeat-monitor.js.map +0 -1
  105. package/agent/dist/push/sender.d.ts +0 -26
  106. package/agent/dist/push/sender.d.ts.map +0 -1
  107. package/agent/dist/push/sender.js +0 -122
  108. package/agent/dist/push/sender.js.map +0 -1
  109. package/agent/dist/push/vapid.d.ts +0 -25
  110. package/agent/dist/push/vapid.d.ts.map +0 -1
  111. package/agent/dist/push/vapid.js +0 -81
  112. package/agent/dist/push/vapid.js.map +0 -1
  113. package/agent/dist/routes/editor.d.ts +0 -9
  114. package/agent/dist/routes/editor.d.ts.map +0 -1
  115. package/agent/dist/routes/editor.js +0 -63
  116. package/agent/dist/routes/editor.js.map +0 -1
  117. package/agent/dist/routes/environments.d.ts +0 -6
  118. package/agent/dist/routes/environments.d.ts.map +0 -1
  119. package/agent/dist/routes/environments.js +0 -94
  120. package/agent/dist/routes/environments.js.map +0 -1
  121. package/agent/dist/routes/files.d.ts +0 -6
  122. package/agent/dist/routes/files.d.ts.map +0 -1
  123. package/agent/dist/routes/files.js +0 -84
  124. package/agent/dist/routes/files.js.map +0 -1
  125. package/agent/dist/routes/heartbeat.d.ts +0 -10
  126. package/agent/dist/routes/heartbeat.d.ts.map +0 -1
  127. package/agent/dist/routes/heartbeat.js +0 -124
  128. package/agent/dist/routes/heartbeat.js.map +0 -1
  129. package/agent/dist/routes/notification.d.ts +0 -9
  130. package/agent/dist/routes/notification.d.ts.map +0 -1
  131. package/agent/dist/routes/notification.js +0 -172
  132. package/agent/dist/routes/notification.js.map +0 -1
  133. package/agent/dist/routes/push.d.ts +0 -7
  134. package/agent/dist/routes/push.d.ts.map +0 -1
  135. package/agent/dist/routes/push.js +0 -98
  136. package/agent/dist/routes/push.js.map +0 -1
  137. package/agent/dist/routes/stop.d.ts +0 -9
  138. package/agent/dist/routes/stop.d.ts.map +0 -1
  139. package/agent/dist/routes/stop.js +0 -121
  140. package/agent/dist/routes/stop.js.map +0 -1
  141. package/agent/dist/services/cleanup.d.ts +0 -45
  142. package/agent/dist/services/cleanup.d.ts.map +0 -1
  143. package/agent/dist/services/cleanup.js +0 -130
  144. package/agent/dist/services/cleanup.js.map +0 -1
  145. package/agent/dist/services/execution.d.ts +0 -53
  146. package/agent/dist/services/execution.d.ts.map +0 -1
  147. package/agent/dist/services/execution.js +0 -75
  148. package/agent/dist/services/execution.js.map +0 -1
  149. package/agent/dist/services/stream-json.d.ts +0 -109
  150. package/agent/dist/services/stream-json.d.ts.map +0 -1
  151. package/agent/dist/services/stream-json.js +0 -335
  152. package/agent/dist/services/stream-json.js.map +0 -1
  153. package/agent/dist/services/worktree.d.ts +0 -41
  154. package/agent/dist/services/worktree.d.ts.map +0 -1
  155. package/agent/dist/services/worktree.js +0 -139
  156. package/agent/dist/services/worktree.js.map +0 -1
  157. package/agent/dist/setup-statusline.d.ts +0 -10
  158. package/agent/dist/setup-statusline.d.ts.map +0 -1
  159. package/agent/dist/setup-statusline.js +0 -234
  160. package/agent/dist/setup-statusline.js.map +0 -1
@@ -1,234 +0,0 @@
1
- /**
2
- * Auto-configuration for Claude Code statusLine integration.
3
- * Creates the statusline script and configures Claude settings at agent startup.
4
- */
5
- import { readFileSync, writeFileSync, existsSync, mkdirSync, chmodSync } from 'fs';
6
- import { homedir } from 'os';
7
- import { join } from 'path';
8
- const CLAUDE_SETTINGS_PATH = join(homedir(), '.claude', 'settings.json');
9
- const STATUSLINE_DIR = join(homedir(), '.247');
10
- const STATUSLINE_SCRIPT_PATH = join(STATUSLINE_DIR, 'statusline.sh');
11
- const NOTIFICATION_SCRIPT_PATH = join(STATUSLINE_DIR, 'notification.sh');
12
- const STOP_SCRIPT_PATH = join(STATUSLINE_DIR, 'stop.sh');
13
- // Pattern to detect old 247 hooks that need cleanup
14
- const OLD_HOOK_PATTERN = /notify-status\.sh|packages\/hooks/;
15
- /**
16
- * Ensure statusLine and hooks are configured for 247 integration.
17
- * Called at agent startup.
18
- */
19
- export function ensureStatusLineConfigured() {
20
- try {
21
- ensureStatusLineScript();
22
- ensureNotificationScript();
23
- ensureStopScript();
24
- ensureClaudeSettings();
25
- console.log('[Setup] StatusLine and hooks configured successfully');
26
- }
27
- catch (err) {
28
- console.error('[Setup] Failed to configure statusLine:', err);
29
- }
30
- }
31
- /**
32
- * Create the statusline.sh script that forwards Claude Code data to the agent.
33
- */
34
- function ensureStatusLineScript() {
35
- if (!existsSync(STATUSLINE_DIR)) {
36
- mkdirSync(STATUSLINE_DIR, { recursive: true });
37
- }
38
- const script = `#!/bin/bash
39
- # 247 StatusLine - forwards Claude Code data to agent
40
- # Auto-generated by 247 agent - do not edit manually
41
-
42
- INPUT=$(cat)
43
- TMUX_SESSION="\${CLAUDE_TMUX_SESSION:-}"
44
-
45
- # Only forward if we're in a tmux session managed by 247
46
- [ -z "$TMUX_SESSION" ] && exit 0
47
-
48
- # Forward JSON to agent (add tmux_session field)
49
- echo "$INPUT" | jq --arg ts "$TMUX_SESSION" '. + {tmux_session: $ts}' | \\
50
- curl -s -X POST "http://localhost:4678/api/heartbeat" \\
51
- -H "Content-Type: application/json" \\
52
- -d @- > /dev/null 2>&1 &
53
-
54
- exit 0
55
- `;
56
- writeFileSync(STATUSLINE_SCRIPT_PATH, script);
57
- chmodSync(STATUSLINE_SCRIPT_PATH, 0o755);
58
- console.log(`[Setup] Created statusLine script at ${STATUSLINE_SCRIPT_PATH}`);
59
- }
60
- /**
61
- * Create the notification.sh script that forwards Claude Code hook notifications to the agent.
62
- * This script is called by the Notification hook when Claude needs user attention.
63
- */
64
- function ensureNotificationScript() {
65
- if (!existsSync(STATUSLINE_DIR)) {
66
- mkdirSync(STATUSLINE_DIR, { recursive: true });
67
- }
68
- const script = `#!/bin/bash
69
- # 247 Notification Hook - forwards Claude Code notifications to agent
70
- # Auto-generated by 247 agent - do not edit manually
71
-
72
- INPUT=$(cat)
73
- TMUX_SESSION="\${CLAUDE_TMUX_SESSION:-}"
74
-
75
- # Only forward if we're in a tmux session managed by 247
76
- [ -z "$TMUX_SESSION" ] && exit 0
77
-
78
- # Forward JSON to agent (add tmux_session field)
79
- echo "$INPUT" | jq --arg ts "$TMUX_SESSION" '. + {tmux_session: $ts}' | \\
80
- curl -s -X POST "http://localhost:4678/api/notification" \\
81
- -H "Content-Type: application/json" \\
82
- -d @- > /dev/null 2>&1 &
83
-
84
- exit 0
85
- `;
86
- writeFileSync(NOTIFICATION_SCRIPT_PATH, script);
87
- chmodSync(NOTIFICATION_SCRIPT_PATH, 0o755);
88
- console.log(`[Setup] Created notification script at ${NOTIFICATION_SCRIPT_PATH}`);
89
- }
90
- /**
91
- * Create the stop.sh script that forwards Claude Code stop notifications to the agent.
92
- * This script is called by the Stop hook when Claude finishes responding.
93
- */
94
- function ensureStopScript() {
95
- if (!existsSync(STATUSLINE_DIR)) {
96
- mkdirSync(STATUSLINE_DIR, { recursive: true });
97
- }
98
- const script = `#!/bin/bash
99
- # 247 Stop Hook - forwards Claude Code stop events to agent
100
- # Auto-generated by 247 agent - do not edit manually
101
-
102
- INPUT=$(cat)
103
- TMUX_SESSION="\${CLAUDE_TMUX_SESSION:-}"
104
-
105
- # Only forward if we're in a tmux session managed by 247
106
- [ -z "$TMUX_SESSION" ] && exit 0
107
-
108
- # Forward JSON to agent (add tmux_session field)
109
- echo "$INPUT" | jq --arg ts "$TMUX_SESSION" '. + {tmux_session: $ts}' | \\
110
- curl -s -X POST "http://localhost:4678/api/stop" \\
111
- -H "Content-Type: application/json" \\
112
- -d @- > /dev/null 2>&1 &
113
-
114
- exit 0
115
- `;
116
- writeFileSync(STOP_SCRIPT_PATH, script);
117
- chmodSync(STOP_SCRIPT_PATH, 0o755);
118
- console.log(`[Setup] Created stop script at ${STOP_SCRIPT_PATH}`);
119
- }
120
- /**
121
- * Remove old 247 hooks from settings.json.
122
- * These hooks used the deprecated notify-status.sh script.
123
- */
124
- function cleanupOldHooks(settings) {
125
- if (!settings.hooks)
126
- return false;
127
- const hooksJson = JSON.stringify(settings.hooks);
128
- if (!OLD_HOOK_PATTERN.test(hooksJson))
129
- return false;
130
- // Remove the old hooks
131
- delete settings.hooks;
132
- console.log('[Setup] Removed deprecated hooks from settings.json');
133
- return true;
134
- }
135
- /**
136
- * Configure Claude settings.json to use our statusLine script and hooks.
137
- * Configures: statusLine, Notification hook, Stop hook
138
- * Also cleans up deprecated hooks if found.
139
- */
140
- function ensureClaudeSettings() {
141
- const claudeDir = join(homedir(), '.claude');
142
- // Ensure .claude directory exists
143
- if (!existsSync(claudeDir)) {
144
- mkdirSync(claudeDir, { recursive: true });
145
- }
146
- // Read existing settings or start fresh
147
- let settings = {};
148
- if (existsSync(CLAUDE_SETTINGS_PATH)) {
149
- try {
150
- settings = JSON.parse(readFileSync(CLAUDE_SETTINGS_PATH, 'utf-8'));
151
- }
152
- catch {
153
- console.warn('[Setup] Could not parse existing settings.json, will create new');
154
- }
155
- }
156
- // Clean up old hooks if present
157
- const hooksRemoved = cleanupOldHooks(settings);
158
- const expectedStatusLineCommand = `bash ${STATUSLINE_SCRIPT_PATH}`;
159
- const expectedNotificationCommand = `bash ${NOTIFICATION_SCRIPT_PATH}`;
160
- const expectedStopCommand = `bash ${STOP_SCRIPT_PATH}`;
161
- // Check if statusLine is already configured correctly
162
- const currentStatusLine = settings.statusLine;
163
- const statusLineConfigured = currentStatusLine?.command === expectedStatusLineCommand;
164
- // Check if Notification hook is already configured correctly
165
- const currentHooks = settings.hooks;
166
- const notificationHooks = currentHooks?.Notification;
167
- const notificationConfigured = notificationHooks?.some((h) => h.hooks?.some((hook) => hook.command === expectedNotificationCommand));
168
- // Check if Stop hook is already configured correctly
169
- const stopHooks = currentHooks?.Stop;
170
- const stopConfigured = stopHooks?.some((h) => h.hooks?.some((hook) => hook.command === expectedStopCommand));
171
- if (statusLineConfigured && notificationConfigured && stopConfigured && !hooksRemoved) {
172
- console.log('[Setup] StatusLine and hooks already configured');
173
- return;
174
- }
175
- // Don't overwrite if user has a custom statusLine that's not ours
176
- if (currentStatusLine?.command && !currentStatusLine.command.includes('.247/statusline.sh')) {
177
- console.log('[Setup] User has custom statusLine, skipping statusLine configuration');
178
- }
179
- else {
180
- // Configure statusLine
181
- settings.statusLine = {
182
- type: 'command',
183
- command: expectedStatusLineCommand,
184
- };
185
- }
186
- // Configure hooks (merge with existing hooks)
187
- const hooks = (settings.hooks || {});
188
- // Only add our Notification hook if not already configured
189
- if (!notificationConfigured) {
190
- // Get existing Notification hooks (user-defined ones we should preserve)
191
- const existingNotificationHooks = (hooks.Notification || []);
192
- // Filter out any old 247 notification hooks that might exist
193
- const userNotificationHooks = existingNotificationHooks.filter((h) => !h.hooks?.some((hook) => hook.command?.includes('.247/notification.sh')));
194
- // Add our Notification hook
195
- hooks.Notification = [
196
- ...userNotificationHooks,
197
- {
198
- matcher: '*',
199
- hooks: [
200
- {
201
- type: 'command',
202
- command: expectedNotificationCommand,
203
- },
204
- ],
205
- },
206
- ];
207
- console.log('[Setup] Configured Notification hook');
208
- }
209
- // Only add our Stop hook if not already configured
210
- if (!stopConfigured) {
211
- // Get existing Stop hooks (user-defined ones we should preserve)
212
- const existingStopHooks = (hooks.Stop || []);
213
- // Filter out any old 247 stop hooks that might exist
214
- const userStopHooks = existingStopHooks.filter((h) => !h.hooks?.some((hook) => hook.command?.includes('.247/stop.sh')));
215
- // Add our Stop hook
216
- hooks.Stop = [
217
- ...userStopHooks,
218
- {
219
- matcher: '*',
220
- hooks: [
221
- {
222
- type: 'command',
223
- command: expectedStopCommand,
224
- },
225
- ],
226
- },
227
- ];
228
- console.log('[Setup] Configured Stop hook');
229
- }
230
- settings.hooks = hooks;
231
- writeFileSync(CLAUDE_SETTINGS_PATH, JSON.stringify(settings, null, 2));
232
- console.log(`[Setup] Configured Claude settings in ${CLAUDE_SETTINGS_PATH}`);
233
- }
234
- //# sourceMappingURL=setup-statusline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-statusline.js","sourceRoot":"","sources":["../src/setup-statusline.ts"],"names":[],"mappings":"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"}