247-cli 2.23.3 → 2.23.5
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.
- package/agent/dist/db/index.d.ts.map +1 -1
- package/agent/dist/db/index.js +25 -3
- package/agent/dist/db/index.js.map +1 -1
- package/agent/dist/db/schema.d.ts +3 -9
- package/agent/dist/db/schema.d.ts.map +1 -1
- package/agent/dist/db/schema.js +33 -7
- package/agent/dist/db/schema.js.map +1 -1
- package/agent/dist/db/sessions.d.ts +2 -19
- package/agent/dist/db/sessions.d.ts.map +1 -1
- package/agent/dist/db/sessions.js +7 -58
- package/agent/dist/db/sessions.js.map +1 -1
- package/agent/dist/routes/index.d.ts +0 -1
- package/agent/dist/routes/index.d.ts.map +1 -1
- package/agent/dist/routes/index.js +0 -1
- package/agent/dist/routes/index.js.map +1 -1
- package/agent/dist/routes/sessions.d.ts.map +1 -1
- package/agent/dist/routes/sessions.js +15 -68
- package/agent/dist/routes/sessions.js.map +1 -1
- package/agent/dist/server.d.ts.map +1 -1
- package/agent/dist/server.js +22 -17
- package/agent/dist/server.js.map +1 -1
- package/agent/dist/updater.d.ts +1 -2
- package/agent/dist/updater.d.ts.map +1 -1
- package/agent/dist/updater.js +3 -25
- package/agent/dist/updater.js.map +1 -1
- package/agent/dist/websocket-handlers.d.ts +17 -4
- package/agent/dist/websocket-handlers.d.ts.map +1 -1
- package/agent/dist/websocket-handlers.js +80 -79
- package/agent/dist/websocket-handlers.js.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.d.ts +1 -26
- package/agent/node_modules/247-shared/dist/types/index.d.ts.map +1 -1
- package/agent/node_modules/247-shared/package.json +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +5 -23
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +0 -11
- package/dist/commands/status.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/paths.d.ts +1 -3
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +1 -2
- package/dist/lib/paths.js.map +1 -1
- package/package.json +1 -1
- package/agent/dist/routes/attention.d.ts +0 -10
- package/agent/dist/routes/attention.d.ts.map +0 -1
- package/agent/dist/routes/attention.js +0 -123
- package/agent/dist/routes/attention.js.map +0 -1
- package/agent/dist/setup-hooks.d.ts +0 -10
- package/agent/dist/setup-hooks.d.ts.map +0 -1
- package/agent/dist/setup-hooks.js +0 -157
- package/agent/dist/setup-hooks.js.map +0 -1
- package/agent/dist/status.d.ts +0 -45
- package/agent/dist/status.d.ts.map +0 -1
- package/agent/dist/status.js +0 -140
- package/agent/dist/status.js.map +0 -1
- package/dist/commands/hooks.d.ts +0 -3
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js +0 -85
- package/dist/commands/hooks.js.map +0 -1
- package/dist/hooks/installer.d.ts +0 -21
- package/dist/hooks/installer.d.ts.map +0 -1
- package/dist/hooks/installer.js +0 -114
- package/dist/hooks/installer.js.map +0 -1
package/dist/commands/doctor.js
CHANGED
|
@@ -4,7 +4,6 @@ import { existsSync } from 'fs';
|
|
|
4
4
|
import { checkNode, checkTmux, checkNativeDeps } from '../lib/prerequisites.js';
|
|
5
5
|
import { configExists, loadConfig } from '../lib/config.js';
|
|
6
6
|
import { isAgentRunning, getAgentHealth } from '../lib/process.js';
|
|
7
|
-
import { getHooksStatus } from '../hooks/installer.js';
|
|
8
7
|
import { createServiceManager } from '../service/index.js';
|
|
9
8
|
import { getAgentPaths } from '../lib/paths.js';
|
|
10
9
|
export const doctorCommand = new Command('doctor')
|
|
@@ -68,24 +67,7 @@ export const doctorCommand = new Command('doctor')
|
|
|
68
67
|
hint: 'Run "247 init" to configure',
|
|
69
68
|
});
|
|
70
69
|
}
|
|
71
|
-
// 5. Check
|
|
72
|
-
const hooksStatus = getHooksStatus();
|
|
73
|
-
if (hooksStatus.installed) {
|
|
74
|
-
results.push({
|
|
75
|
-
name: 'Legacy hooks (deprecated)',
|
|
76
|
-
status: 'warn',
|
|
77
|
-
message: 'Old hooks still installed',
|
|
78
|
-
hint: 'Run "247 hooks uninstall" to clean up',
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
results.push({
|
|
83
|
-
name: 'Status tracking',
|
|
84
|
-
status: 'pass',
|
|
85
|
-
message: 'Using statusLine API (auto-configured)',
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
// 6. Check agent process
|
|
70
|
+
// 5. Check agent process
|
|
89
71
|
const processStatus = isAgentRunning();
|
|
90
72
|
if (processStatus.running) {
|
|
91
73
|
results.push({
|
|
@@ -93,7 +75,7 @@ export const doctorCommand = new Command('doctor')
|
|
|
93
75
|
status: 'pass',
|
|
94
76
|
message: `Running (PID: ${processStatus.pid})`,
|
|
95
77
|
});
|
|
96
|
-
//
|
|
78
|
+
// 6. Check agent health (only if running)
|
|
97
79
|
const config = loadConfig();
|
|
98
80
|
if (config) {
|
|
99
81
|
const health = await getAgentHealth(config.agent.port);
|
|
@@ -122,7 +104,7 @@ export const doctorCommand = new Command('doctor')
|
|
|
122
104
|
hint: 'Start with: 247 start',
|
|
123
105
|
});
|
|
124
106
|
}
|
|
125
|
-
//
|
|
107
|
+
// 7. Check service installation
|
|
126
108
|
try {
|
|
127
109
|
const serviceManager = createServiceManager();
|
|
128
110
|
const serviceStatus = await serviceManager.status();
|
|
@@ -159,7 +141,7 @@ export const doctorCommand = new Command('doctor')
|
|
|
159
141
|
message: err.message,
|
|
160
142
|
});
|
|
161
143
|
}
|
|
162
|
-
//
|
|
144
|
+
// 8. Check paths and directories
|
|
163
145
|
const paths = getAgentPaths();
|
|
164
146
|
// Config directory
|
|
165
147
|
if (existsSync(paths.configDir)) {
|
|
@@ -193,7 +175,7 @@ export const doctorCommand = new Command('doctor')
|
|
|
193
175
|
hint: 'Will be created when agent starts',
|
|
194
176
|
});
|
|
195
177
|
}
|
|
196
|
-
//
|
|
178
|
+
// 9. Check port availability (if agent not running)
|
|
197
179
|
if (!processStatus.running) {
|
|
198
180
|
const config = loadConfig();
|
|
199
181
|
if (config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAShD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,mBAAmB;IACnB,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC1F,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS;KAC/E,CAAC,CAAC;IAEH,gBAAgB;IAChB,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC1F,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,IAAI,EACF,SAAS,CAAC,MAAM,KAAK,OAAO;YAC1B,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAC7B,CAAC,CAAC,iCAAiC;gBACnC,CAAC,CAAC,qCAAqC;YACzC,CAAC,CAAC,SAAS;KAChB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,gBAAgB;QACtB,MAAM,EACJ,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACxF,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,IAAI,EAAE,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,SAAS;KAC9F,CAAC,CAAC;IAEH,yBAAyB;IACzB,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,mBAAmB,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG;aACnD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,mCAAmC;gBAC5C,IAAI,EAAE,+BAA+B;aACtC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,6BAA6B;SACpC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,MAAM,aAAa,GAAG,cAAc,EAAE,CAAC;IACvC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,iBAAiB,aAAa,CAAC,GAAG,GAAG;SAC/C,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,YAAY,MAAM,CAAC,QAAQ,YAAY;iBACjD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,mBAAmB,MAAM,CAAC,KAAK,EAAE;oBAC1C,IAAI,EAAE,6BAA6B;iBACpC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;QAC9C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;QAEpD,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;YAC5B,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,YAAY,cAAc,CAAC,QAAQ,GAAG;oBAC5C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,wBAAwB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE;iBACpF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,YAAY,cAAc,CAAC,QAAQ,GAAG;oBAC5C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,2BAA2B;oBACpC,IAAI,EAAE,+BAA+B;iBACtC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,YAAY,cAAc,CAAC,QAAQ,GAAG;gBAC5C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,eAAe;gBACxB,IAAI,EAAE,2CAA2C;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAG,GAAa,CAAC,OAAO;SAChC,CAAC,CAAC;IACL,CAAC;IAED,iCAAiC;IACjC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAE9B,mBAAmB;IACnB,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,KAAK,CAAC,SAAS;SACzB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,YAAY,KAAK,CAAC,SAAS,EAAE;YACtC,IAAI,EAAE,0BAA0B;SACjC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,KAAK,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,YAAY,KAAK,CAAC,MAAM,EAAE;YACnC,IAAI,EAAE,mCAAmC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,aAAa,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;gBAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;oBAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,mBAAmB;oBACzB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,eAAe;iBAClD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,mBAAmB;oBACzB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,YAAY;oBAC9C,IAAI,EAAE,uEAAuE;iBAC9E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEtC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAY,CAAC;QACjB,IAAI,KAA+B,CAAC;QAEpC,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,MAAM;gBACT,IAAI,GAAG,GAAG,CAAC;gBACX,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACpB,SAAS,EAAE,CAAC;gBACZ,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,GAAG,GAAG,CAAC;gBACX,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;gBACrB,SAAS,EAAE,CAAC;gBACZ,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,GAAG,GAAG,CAAC;gBACX,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;gBAClB,SAAS,EAAE,CAAC;gBACZ,MAAM;QACV,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,EAAE,CAC3H,CAAC;IAEF,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CACrF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,aAAa,SAiDtB,CAAC"}
|
package/dist/commands/status.js
CHANGED
|
@@ -3,7 +3,6 @@ import chalk from 'chalk';
|
|
|
3
3
|
import { loadConfig, configExists } from '../lib/config.js';
|
|
4
4
|
import { getAgentPaths } from '../lib/paths.js';
|
|
5
5
|
import { isAgentRunning, getAgentHealth } from '../lib/process.js';
|
|
6
|
-
import { getHooksStatus } from '../hooks/installer.js';
|
|
7
6
|
export const statusCommand = new Command('status')
|
|
8
7
|
.description('Show agent status')
|
|
9
8
|
.action(async () => {
|
|
@@ -45,15 +44,5 @@ export const statusCommand = new Command('status')
|
|
|
45
44
|
console.log(` Projects: ${config.projects.basePath}`);
|
|
46
45
|
console.log(` Config: ${paths.configPath}`);
|
|
47
46
|
console.log();
|
|
48
|
-
// Status tracking
|
|
49
|
-
console.log(chalk.dim('Status Tracking:'));
|
|
50
|
-
console.log(` ${chalk.green('✓')} Using statusLine API (auto-configured by agent)`);
|
|
51
|
-
// Check for legacy hooks
|
|
52
|
-
const hooks = getHooksStatus();
|
|
53
|
-
if (hooks.installed) {
|
|
54
|
-
console.log(` ${chalk.yellow('!')} Legacy hooks still installed at ${hooks.path}`);
|
|
55
|
-
console.log(chalk.dim(' Run "247 hooks uninstall" to clean up'));
|
|
56
|
-
}
|
|
57
|
-
console.log();
|
|
58
47
|
});
|
|
59
48
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEhD,gBAAgB;IAChB,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAE9B,iBAAiB;IACjB,MAAM,aAAa,GAAG,cAAc,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEzF,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,aAAa,UAAU,EAAE,CAAC,CAAC;IACpD,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,UAAU,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,0BAA0B;IAC1B,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAE7C,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAqB9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,6 @@ import { stopCommand } from './commands/stop.js';
|
|
|
6
6
|
import { statusCommand } from './commands/status.js';
|
|
7
7
|
import { logsCommand } from './commands/logs.js';
|
|
8
8
|
import { serviceCommand } from './commands/service.js';
|
|
9
|
-
import { hooksCommand } from './commands/hooks.js';
|
|
10
9
|
import { updateCommand } from './commands/update.js';
|
|
11
10
|
import { doctorCommand } from './commands/doctor.js';
|
|
12
11
|
import { profileCommand } from './commands/profile.js';
|
|
@@ -15,7 +14,7 @@ const program = new Command();
|
|
|
15
14
|
program
|
|
16
15
|
.name('247')
|
|
17
16
|
.description('247 - Access Claude Code from anywhere 24/7\nby The Vibe Company')
|
|
18
|
-
.version('2.23.
|
|
17
|
+
.version('2.23.5')
|
|
19
18
|
.option('-P, --profile <name>', 'Use a specific profile (dev, prod, etc.)');
|
|
20
19
|
// Add commands
|
|
21
20
|
program.addCommand(initCommand);
|
|
@@ -24,7 +23,6 @@ program.addCommand(stopCommand);
|
|
|
24
23
|
program.addCommand(statusCommand);
|
|
25
24
|
program.addCommand(logsCommand);
|
|
26
25
|
program.addCommand(serviceCommand);
|
|
27
|
-
program.addCommand(hooksCommand);
|
|
28
26
|
program.addCommand(updateCommand);
|
|
29
27
|
program.addCommand(doctorCommand);
|
|
30
28
|
program.addCommand(profileCommand);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,kEAAkE,CAAC;KAC/E,OAAO,CAAC,QAAQ,CAAC;KACjB,MAAM,CAAC,sBAAsB,EAAE,0CAA0C,CAAC,CAAC;AAE9E,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,mEAAmE;AACnE,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,8BAA8B;AAC9B,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC;;;;;CAKb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/lib/paths.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Get the home directory, allowing override via AGENT_247_HOME for E2E testing.
|
|
3
3
|
* This enables running tests in isolated temporary directories without affecting
|
|
4
|
-
* the real user's configuration
|
|
4
|
+
* the real user's configuration or system services.
|
|
5
5
|
*/
|
|
6
6
|
export declare function getTestableHomedir(): string;
|
|
7
7
|
export interface AgentPaths {
|
|
@@ -9,8 +9,6 @@ export interface AgentPaths {
|
|
|
9
9
|
cliRoot: string;
|
|
10
10
|
/** Where the agent server code is located */
|
|
11
11
|
agentRoot: string;
|
|
12
|
-
/** Where old hooks were installed (for cleanup) */
|
|
13
|
-
hooksDestination: string;
|
|
14
12
|
/** Configuration directory (~/.247/) */
|
|
15
13
|
configDir: string;
|
|
16
14
|
/** Configuration file path */
|
package/dist/lib/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAEhB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAElB,
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAEhB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAElB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAElB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IAEnB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAEhB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;CAChB;AAID,wBAAgB,aAAa,IAAI,UAAU,CAiD1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAUxC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
package/dist/lib/paths.js
CHANGED
|
@@ -6,7 +6,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
6
6
|
/**
|
|
7
7
|
* Get the home directory, allowing override via AGENT_247_HOME for E2E testing.
|
|
8
8
|
* This enables running tests in isolated temporary directories without affecting
|
|
9
|
-
* the real user's configuration
|
|
9
|
+
* the real user's configuration or system services.
|
|
10
10
|
*/
|
|
11
11
|
export function getTestableHomedir() {
|
|
12
12
|
return process.env.AGENT_247_HOME || homedir();
|
|
@@ -46,7 +46,6 @@ export function getAgentPaths() {
|
|
|
46
46
|
cachedPaths = {
|
|
47
47
|
cliRoot,
|
|
48
48
|
agentRoot,
|
|
49
|
-
hooksDestination: join(home, '.claude-plugins', '247-hooks'),
|
|
50
49
|
configDir,
|
|
51
50
|
configPath: join(configDir, 'config.json'),
|
|
52
51
|
dataDir: join(configDir, 'data'),
|
package/dist/lib/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,EAAE,CAAC;AACjD,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,EAAE,CAAC;AACjD,CAAC;AA+BD,IAAI,WAAW,GAAsB,IAAI,CAAC;AAE1C,MAAM,UAAU,aAAa;IAC3B,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,mEAAmE;IACnE,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE/C,oEAAoE;IACpE,uEAAuE;IACvE,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEpE,IAAI,SAAiB,CAAC;IAEtB,IAAI,KAAK,EAAE,CAAC;QACV,wCAAwC;QACxC,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,6CAA6C;QAC7C,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,mEAAmE;IACnE,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAElC,0BAA0B;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAErC,mCAAmC;IACnC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,IAAI,MAAc,CAAC;IACnB,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,WAAW,GAAG;QACZ,OAAO;QACP,SAAS;QACT,SAAS;QACT,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;QAC1C,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;QAChC,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK;KACN,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAE9B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Attention API route: receives attention notifications from Claude Code hooks.
|
|
3
|
-
* Simplified replacement for the notification/heartbeat system.
|
|
4
|
-
* Forwards attention events to Next.js dashboard webhook.
|
|
5
|
-
*/
|
|
6
|
-
import { type Router as RouterType } from 'express';
|
|
7
|
-
declare const router: RouterType;
|
|
8
|
-
export declare function createAttentionRoutes(): RouterType;
|
|
9
|
-
export default router;
|
|
10
|
-
//# sourceMappingURL=attention.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attention.d.ts","sourceRoot":"","sources":["../../src/routes/attention.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAU,KAAK,MAAM,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAO5D,QAAA,MAAM,MAAM,EAAE,UAAqB,CAAC;AAoJpC,wBAAgB,qBAAqB,IAAI,UAAU,CAElD;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Attention API route: receives attention notifications from Claude Code hooks.
|
|
3
|
-
* Simplified replacement for the notification/heartbeat system.
|
|
4
|
-
* Forwards attention events to Next.js dashboard webhook.
|
|
5
|
-
*/
|
|
6
|
-
import { Router } from 'express';
|
|
7
|
-
import path from 'path';
|
|
8
|
-
import { execSync } from 'child_process';
|
|
9
|
-
import * as sessionsDb from '../db/sessions.js';
|
|
10
|
-
import { config } from '../config.js';
|
|
11
|
-
const router = Router();
|
|
12
|
-
// Dashboard webhook configuration
|
|
13
|
-
const DASHBOARD_WEBHOOK_URL = process.env.DASHBOARD_WEBHOOK_URL;
|
|
14
|
-
const DASHBOARD_API_KEY = process.env.DASHBOARD_API_KEY;
|
|
15
|
-
/**
|
|
16
|
-
* Check if a tmux session exists.
|
|
17
|
-
*/
|
|
18
|
-
function tmuxSessionExists(sessionName) {
|
|
19
|
-
try {
|
|
20
|
-
execSync(`tmux has-session -t "${sessionName}" 2>/dev/null`);
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Determine attention reason from payload.
|
|
29
|
-
*/
|
|
30
|
-
function getAttentionReason(payload) {
|
|
31
|
-
if (payload.permission_mode === 'plan') {
|
|
32
|
-
return 'plan_approval';
|
|
33
|
-
}
|
|
34
|
-
switch (payload.notification_type) {
|
|
35
|
-
case 'permission_prompt':
|
|
36
|
-
return 'permission';
|
|
37
|
-
case 'idle_prompt':
|
|
38
|
-
return 'input';
|
|
39
|
-
case 'elicitation_dialog':
|
|
40
|
-
return 'permission';
|
|
41
|
-
case 'auth_success':
|
|
42
|
-
return 'input';
|
|
43
|
-
default:
|
|
44
|
-
if (payload.tool_name) {
|
|
45
|
-
return 'permission';
|
|
46
|
-
}
|
|
47
|
-
return 'input';
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Forward attention event to dashboard webhook
|
|
52
|
-
*/
|
|
53
|
-
async function forwardToWebhook(sessionName, project, reason) {
|
|
54
|
-
if (!DASHBOARD_WEBHOOK_URL || !DASHBOARD_API_KEY) {
|
|
55
|
-
console.log('[Attention] Dashboard webhook not configured, skipping forward');
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
try {
|
|
59
|
-
const response = await fetch(DASHBOARD_WEBHOOK_URL, {
|
|
60
|
-
method: 'POST',
|
|
61
|
-
headers: {
|
|
62
|
-
'Content-Type': 'application/json',
|
|
63
|
-
'X-API-Key': DASHBOARD_API_KEY,
|
|
64
|
-
},
|
|
65
|
-
body: JSON.stringify({
|
|
66
|
-
sessionName,
|
|
67
|
-
project,
|
|
68
|
-
reason,
|
|
69
|
-
machineId: config.machine.id,
|
|
70
|
-
machineName: config.machine.name,
|
|
71
|
-
}),
|
|
72
|
-
});
|
|
73
|
-
if (!response.ok) {
|
|
74
|
-
console.error(`[Attention] Webhook failed: ${response.status} ${response.statusText}`);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
console.log(`[Attention] Forwarded to webhook: ${sessionName} (${reason})`);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
console.error('[Attention] Failed to forward to webhook:', error);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Receive attention notification from Claude Code hook.
|
|
86
|
-
* Persists to database and forwards to dashboard webhook.
|
|
87
|
-
*/
|
|
88
|
-
router.post('/', async (req, res) => {
|
|
89
|
-
const payload = req.body;
|
|
90
|
-
const { tmux_session } = payload;
|
|
91
|
-
if (!tmux_session) {
|
|
92
|
-
return res.status(400).json({ error: 'Missing tmux_session' });
|
|
93
|
-
}
|
|
94
|
-
// Validate that the tmux session actually exists
|
|
95
|
-
if (!tmuxSessionExists(tmux_session)) {
|
|
96
|
-
return res.status(404).json({ error: 'Session not found' });
|
|
97
|
-
}
|
|
98
|
-
const now = Date.now();
|
|
99
|
-
// Extract project from cwd or session name
|
|
100
|
-
const project = payload.cwd
|
|
101
|
-
? path.basename(payload.cwd)
|
|
102
|
-
: tmux_session.split('--')[0] || 'unknown';
|
|
103
|
-
const attentionReason = getAttentionReason(payload);
|
|
104
|
-
// Persist to database
|
|
105
|
-
sessionsDb.upsertSession(tmux_session, {
|
|
106
|
-
project,
|
|
107
|
-
status: 'needs_attention',
|
|
108
|
-
attentionReason,
|
|
109
|
-
lastActivity: now,
|
|
110
|
-
lastStatusChange: now,
|
|
111
|
-
});
|
|
112
|
-
console.log(`[Attention] ${tmux_session}: needs_attention (${attentionReason})`);
|
|
113
|
-
// Forward to dashboard webhook (async, don't wait)
|
|
114
|
-
forwardToWebhook(tmux_session, project, attentionReason).catch(() => {
|
|
115
|
-
// Error already logged in forwardToWebhook
|
|
116
|
-
});
|
|
117
|
-
res.json({ ok: true });
|
|
118
|
-
});
|
|
119
|
-
export function createAttentionRoutes() {
|
|
120
|
-
return router;
|
|
121
|
-
}
|
|
122
|
-
export default router;
|
|
123
|
-
//# sourceMappingURL=attention.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attention.js","sourceRoot":"","sources":["../../src/routes/attention.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-configuration for Claude Code attention hook integration.
|
|
3
|
-
* Creates the attention script and configures Claude settings at agent startup.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Ensure attention hook is configured for 247 integration.
|
|
7
|
-
* Called at agent startup.
|
|
8
|
-
*/
|
|
9
|
-
export declare function ensureHooksConfigured(): void;
|
|
10
|
-
//# sourceMappingURL=setup-hooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-hooks.d.ts","sourceRoot":"","sources":["../src/setup-hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAQ5C"}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-configuration for Claude Code attention hook integration.
|
|
3
|
-
* Creates the attention 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 HOOK_DIR = join(homedir(), '.247');
|
|
10
|
-
const ATTENTION_SCRIPT_PATH = join(HOOK_DIR, 'attention.sh');
|
|
11
|
-
// Patterns to detect old hooks that need cleanup
|
|
12
|
-
const OLD_HOOK_PATTERNS = [
|
|
13
|
-
/statusline\.sh/,
|
|
14
|
-
/notification\.sh/,
|
|
15
|
-
/stop\.sh/,
|
|
16
|
-
/notify-status\.sh/,
|
|
17
|
-
/packages\/hooks/,
|
|
18
|
-
];
|
|
19
|
-
/**
|
|
20
|
-
* Ensure attention hook is configured for 247 integration.
|
|
21
|
-
* Called at agent startup.
|
|
22
|
-
*/
|
|
23
|
-
export function ensureHooksConfigured() {
|
|
24
|
-
try {
|
|
25
|
-
ensureAttentionScript();
|
|
26
|
-
ensureClaudeSettings();
|
|
27
|
-
console.log('[Setup] Attention hook configured successfully');
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
console.error('[Setup] Failed to configure hooks:', err);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Create the attention.sh script that forwards Claude Code notifications to the agent.
|
|
35
|
-
* This is called when Claude needs user attention (permission, input, etc.)
|
|
36
|
-
*/
|
|
37
|
-
function ensureAttentionScript() {
|
|
38
|
-
if (!existsSync(HOOK_DIR)) {
|
|
39
|
-
mkdirSync(HOOK_DIR, { recursive: true });
|
|
40
|
-
}
|
|
41
|
-
const script = `#!/bin/bash
|
|
42
|
-
# 247 Attention Hook - forwards Claude Code attention events to agent
|
|
43
|
-
# Auto-generated by 247 agent - do not edit manually
|
|
44
|
-
|
|
45
|
-
INPUT=$(cat)
|
|
46
|
-
TMUX_SESSION="\${CLAUDE_TMUX_SESSION:-}"
|
|
47
|
-
|
|
48
|
-
# Only forward if we're in a tmux session managed by 247
|
|
49
|
-
[ -z "$TMUX_SESSION" ] && exit 0
|
|
50
|
-
|
|
51
|
-
# Forward JSON to agent (add tmux_session field)
|
|
52
|
-
echo "$INPUT" | jq --arg ts "$TMUX_SESSION" '. + {tmux_session: $ts}' | \\
|
|
53
|
-
curl -s -X POST "http://localhost:4678/api/attention" \\
|
|
54
|
-
-H "Content-Type: application/json" \\
|
|
55
|
-
-d @- > /dev/null 2>&1 &
|
|
56
|
-
|
|
57
|
-
exit 0
|
|
58
|
-
`;
|
|
59
|
-
writeFileSync(ATTENTION_SCRIPT_PATH, script);
|
|
60
|
-
chmodSync(ATTENTION_SCRIPT_PATH, 0o755);
|
|
61
|
-
console.log(`[Setup] Created attention script at ${ATTENTION_SCRIPT_PATH}`);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Remove old 247 hooks from settings.json.
|
|
65
|
-
*/
|
|
66
|
-
function cleanupOldHooks(settings) {
|
|
67
|
-
let cleaned = false;
|
|
68
|
-
// Clean statusLine if it's one of ours
|
|
69
|
-
const statusLine = settings.statusLine;
|
|
70
|
-
if (statusLine?.command && OLD_HOOK_PATTERNS.some((p) => p.test(statusLine.command || ''))) {
|
|
71
|
-
delete settings.statusLine;
|
|
72
|
-
console.log('[Setup] Removed old statusLine from settings.json');
|
|
73
|
-
cleaned = true;
|
|
74
|
-
}
|
|
75
|
-
// Clean old hooks
|
|
76
|
-
const hooks = settings.hooks;
|
|
77
|
-
if (hooks) {
|
|
78
|
-
for (const hookType of ['Notification', 'Stop', 'PreToolUse', 'PostToolUse']) {
|
|
79
|
-
const hookList = hooks[hookType];
|
|
80
|
-
if (hookList) {
|
|
81
|
-
const filtered = hookList.filter((h) => !h.hooks?.some((hook) => OLD_HOOK_PATTERNS.some((p) => p.test(hook.command || ''))));
|
|
82
|
-
if (filtered.length !== hookList.length) {
|
|
83
|
-
if (filtered.length === 0) {
|
|
84
|
-
delete hooks[hookType];
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
hooks[hookType] = filtered;
|
|
88
|
-
}
|
|
89
|
-
console.log(`[Setup] Cleaned old ${hookType} hooks from settings.json`);
|
|
90
|
-
cleaned = true;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// Remove hooks object if empty
|
|
95
|
-
if (Object.keys(hooks).length === 0) {
|
|
96
|
-
delete settings.hooks;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return cleaned;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Configure Claude settings.json to use our attention hook.
|
|
103
|
-
*/
|
|
104
|
-
function ensureClaudeSettings() {
|
|
105
|
-
const claudeDir = join(homedir(), '.claude');
|
|
106
|
-
// Ensure .claude directory exists
|
|
107
|
-
if (!existsSync(claudeDir)) {
|
|
108
|
-
mkdirSync(claudeDir, { recursive: true });
|
|
109
|
-
}
|
|
110
|
-
// Read existing settings or start fresh
|
|
111
|
-
let settings = {};
|
|
112
|
-
if (existsSync(CLAUDE_SETTINGS_PATH)) {
|
|
113
|
-
try {
|
|
114
|
-
settings = JSON.parse(readFileSync(CLAUDE_SETTINGS_PATH, 'utf-8'));
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
console.warn('[Setup] Could not parse existing settings.json, will create new');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// Clean up old hooks if present
|
|
121
|
-
const cleaned = cleanupOldHooks(settings);
|
|
122
|
-
const expectedAttentionCommand = `bash ${ATTENTION_SCRIPT_PATH}`;
|
|
123
|
-
// Check if Notification hook is already configured correctly
|
|
124
|
-
const currentHooks = settings.hooks;
|
|
125
|
-
const notificationHooks = currentHooks?.Notification;
|
|
126
|
-
const attentionConfigured = notificationHooks?.some((h) => h.hooks?.some((hook) => hook.command === expectedAttentionCommand));
|
|
127
|
-
if (attentionConfigured && !cleaned) {
|
|
128
|
-
console.log('[Setup] Attention hook already configured');
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
// Configure hooks
|
|
132
|
-
const hooks = (settings.hooks || {});
|
|
133
|
-
// Add our Notification hook (this fires when Claude needs attention)
|
|
134
|
-
if (!attentionConfigured) {
|
|
135
|
-
// Get existing user hooks (preserve them)
|
|
136
|
-
const existingHooks = (hooks.Notification || []);
|
|
137
|
-
// Filter out any old 247 hooks
|
|
138
|
-
const userHooks = existingHooks.filter((h) => !h.hooks?.some((hook) => hook.command?.includes('.247/')));
|
|
139
|
-
hooks.Notification = [
|
|
140
|
-
...userHooks,
|
|
141
|
-
{
|
|
142
|
-
matcher: '*',
|
|
143
|
-
hooks: [
|
|
144
|
-
{
|
|
145
|
-
type: 'command',
|
|
146
|
-
command: expectedAttentionCommand,
|
|
147
|
-
},
|
|
148
|
-
],
|
|
149
|
-
},
|
|
150
|
-
];
|
|
151
|
-
console.log('[Setup] Configured Notification hook');
|
|
152
|
-
}
|
|
153
|
-
settings.hooks = hooks;
|
|
154
|
-
writeFileSync(CLAUDE_SETTINGS_PATH, JSON.stringify(settings, null, 2));
|
|
155
|
-
console.log(`[Setup] Configured Claude settings in ${CLAUDE_SETTINGS_PATH}`);
|
|
156
|
-
}
|
|
157
|
-
//# sourceMappingURL=setup-hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-hooks.js","sourceRoot":"","sources":["../src/setup-hooks.ts"],"names":[],"mappings":"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"}
|
package/agent/dist/status.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session status management and WebSocket broadcast utilities.
|
|
3
|
-
* Handles real-time status updates between Claude Code hooks and the dashboard.
|
|
4
|
-
*/
|
|
5
|
-
import { WebSocket } from 'ws';
|
|
6
|
-
import type { SessionStatus, AttentionReason, WSSessionInfo } from '247-shared';
|
|
7
|
-
export interface HookStatus {
|
|
8
|
-
status: SessionStatus;
|
|
9
|
-
hasBeenWorking?: boolean;
|
|
10
|
-
attentionReason?: AttentionReason;
|
|
11
|
-
lastEvent: string;
|
|
12
|
-
lastActivity: number;
|
|
13
|
-
lastStatusChange: number;
|
|
14
|
-
project?: string;
|
|
15
|
-
}
|
|
16
|
-
export declare const tmuxSessionStatus: Map<string, HookStatus>;
|
|
17
|
-
export declare const activeConnections: Map<string, Set<WebSocket>>;
|
|
18
|
-
export declare const statusSubscribers: Set<WebSocket>;
|
|
19
|
-
/**
|
|
20
|
-
* Broadcast status update to all subscribers
|
|
21
|
-
*/
|
|
22
|
-
export declare function broadcastStatusUpdate(session: WSSessionInfo): void;
|
|
23
|
-
/**
|
|
24
|
-
* Broadcast session removed to all subscribers
|
|
25
|
-
*/
|
|
26
|
-
export declare function broadcastSessionRemoved(sessionName: string): void;
|
|
27
|
-
/**
|
|
28
|
-
* Broadcast session archived to all subscribers
|
|
29
|
-
*/
|
|
30
|
-
export declare function broadcastSessionArchived(sessionName: string, session: WSSessionInfo): void;
|
|
31
|
-
/**
|
|
32
|
-
* Generate human-readable session names with project prefix
|
|
33
|
-
* @param project - Project name
|
|
34
|
-
* @param prefix - Optional prefix to add after project (e.g., 'spawn' -> project--spawn-adj-noun-num)
|
|
35
|
-
*/
|
|
36
|
-
export declare function generateSessionName(project: string, prefix?: string): string;
|
|
37
|
-
/**
|
|
38
|
-
* Clean up stale status entries (called periodically)
|
|
39
|
-
*/
|
|
40
|
-
export declare function cleanupStatusMaps(): void;
|
|
41
|
-
/**
|
|
42
|
-
* Get active tmux sessions from the system
|
|
43
|
-
*/
|
|
44
|
-
export declare function getActiveTmuxSessions(): Set<string>;
|
|
45
|
-
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,aAAa,EAEd,MAAM,YAAY,CAAC;AAKpB,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,eAAO,MAAM,iBAAiB,yBAAgC,CAAC;AAG/D,eAAO,MAAM,iBAAiB,6BAAoC,CAAC;AAGnE,eAAO,MAAM,iBAAiB,gBAAuB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAelE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAYjE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAY1F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAyB5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAyCxC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,GAAG,CAAC,MAAM,CAAC,CASnD"}
|