247-cli 2.23.2 → 2.23.4
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 +0 -1
- package/agent/dist/db/index.d.ts.map +1 -1
- package/agent/dist/db/index.js +85 -382
- package/agent/dist/db/index.js.map +1 -1
- package/agent/dist/db/schema.d.ts +3 -49
- package/agent/dist/db/schema.d.ts.map +1 -1
- package/agent/dist/db/schema.js +34 -44
- package/agent/dist/db/schema.js.map +1 -1
- package/agent/dist/db/sessions.d.ts +2 -52
- package/agent/dist/db/sessions.d.ts.map +1 -1
- package/agent/dist/db/sessions.js +8 -194
- 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 +1 -0
- package/agent/dist/routes/sessions.d.ts.map +1 -1
- package/agent/dist/routes/sessions.js +16 -375
- 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/services/index.d.ts +1 -6
- package/agent/dist/services/index.d.ts.map +1 -1
- package/agent/dist/services/index.js +4 -4
- package/agent/dist/services/index.js.map +1 -1
- package/agent/dist/terminal.d.ts +0 -11
- package/agent/dist/terminal.d.ts.map +1 -1
- package/agent/dist/terminal.js +6 -60
- package/agent/dist/terminal.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 -3
- package/agent/dist/websocket-handlers.d.ts.map +1 -1
- package/agent/dist/websocket-handlers.js +81 -127
- package/agent/dist/websocket-handlers.js.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.d.ts +1 -111
- package/agent/node_modules/247-shared/dist/types/index.d.ts.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.js +1 -47
- package/agent/node_modules/247-shared/dist/types/index.js.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/db/history.d.ts +0 -37
- package/agent/dist/db/history.d.ts.map +0 -1
- package/agent/dist/db/history.js +0 -98
- package/agent/dist/db/history.js.map +0 -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/services/cleanup.d.ts +0 -45
- package/agent/dist/services/cleanup.d.ts.map +0 -1
- package/agent/dist/services/cleanup.js +0 -130
- package/agent/dist/services/cleanup.js.map +0 -1
- package/agent/dist/services/execution.d.ts +0 -53
- package/agent/dist/services/execution.d.ts.map +0 -1
- package/agent/dist/services/execution.js +0 -75
- package/agent/dist/services/execution.js.map +0 -1
- package/agent/dist/services/worktree.d.ts +0 -41
- package/agent/dist/services/worktree.d.ts.map +0 -1
- package/agent/dist/services/worktree.js +0 -139
- package/agent/dist/services/worktree.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 -51
- package/agent/dist/status.d.ts.map +0 -1
- package/agent/dist/status.js +0 -142
- 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":"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"}
|
|
@@ -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.4')
|
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { DbStatusHistory } from './schema.js';
|
|
2
|
-
import type { SessionStatus, AttentionReason } from '247-shared';
|
|
3
|
-
/**
|
|
4
|
-
* Record a status change in history
|
|
5
|
-
*/
|
|
6
|
-
export declare function recordStatusChange(sessionName: string, status: SessionStatus, attentionReason: AttentionReason | null, event: string | null): void;
|
|
7
|
-
/**
|
|
8
|
-
* Get status history for a session
|
|
9
|
-
*/
|
|
10
|
-
export declare function getSessionHistory(sessionName: string, limit?: number): DbStatusHistory[];
|
|
11
|
-
/**
|
|
12
|
-
* Get recent history across all sessions
|
|
13
|
-
*/
|
|
14
|
-
export declare function getRecentHistory(limit?: number): DbStatusHistory[];
|
|
15
|
-
/**
|
|
16
|
-
* Get history within a time range
|
|
17
|
-
*/
|
|
18
|
-
export declare function getHistoryInRange(startTime: number, endTime: number): DbStatusHistory[];
|
|
19
|
-
/**
|
|
20
|
-
* Cleanup old history entries
|
|
21
|
-
* Returns number of deleted entries
|
|
22
|
-
*/
|
|
23
|
-
export declare function cleanupOldHistory(maxAge: number): number;
|
|
24
|
-
/**
|
|
25
|
-
* Get statistics about status history
|
|
26
|
-
*/
|
|
27
|
-
export declare function getHistoryStats(): {
|
|
28
|
-
totalEntries: number;
|
|
29
|
-
oldestEntry: number | null;
|
|
30
|
-
newestEntry: number | null;
|
|
31
|
-
entriesByStatus: Record<string, number>;
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Delete all history for a session
|
|
35
|
-
*/
|
|
36
|
-
export declare function deleteSessionHistory(sessionName: string): number;
|
|
37
|
-
//# sourceMappingURL=history.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/db/history.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjE;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,eAAe,EAAE,eAAe,GAAG,IAAI,EACvC,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI,CAUN;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,eAAe,EAAE,CAYrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,SAAM,GAAG,eAAe,EAAE,CAW/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAWvF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWxD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,CAkCA;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIhE"}
|
package/agent/dist/db/history.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { getDatabase } from './index.js';
|
|
2
|
-
/**
|
|
3
|
-
* Record a status change in history
|
|
4
|
-
*/
|
|
5
|
-
export function recordStatusChange(sessionName, status, attentionReason, event) {
|
|
6
|
-
const db = getDatabase();
|
|
7
|
-
const now = Date.now();
|
|
8
|
-
db.prepare(`
|
|
9
|
-
INSERT INTO status_history (session_name, status, attention_reason, event, timestamp)
|
|
10
|
-
VALUES (?, ?, ?, ?, ?)
|
|
11
|
-
`).run(sessionName, status, attentionReason, event, now);
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Get status history for a session
|
|
15
|
-
*/
|
|
16
|
-
export function getSessionHistory(sessionName, limit = 100) {
|
|
17
|
-
const db = getDatabase();
|
|
18
|
-
return db
|
|
19
|
-
.prepare(`
|
|
20
|
-
SELECT * FROM status_history
|
|
21
|
-
WHERE session_name = ?
|
|
22
|
-
ORDER BY timestamp DESC
|
|
23
|
-
LIMIT ?
|
|
24
|
-
`)
|
|
25
|
-
.all(sessionName, limit);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Get recent history across all sessions
|
|
29
|
-
*/
|
|
30
|
-
export function getRecentHistory(limit = 100) {
|
|
31
|
-
const db = getDatabase();
|
|
32
|
-
return db
|
|
33
|
-
.prepare(`
|
|
34
|
-
SELECT * FROM status_history
|
|
35
|
-
ORDER BY timestamp DESC
|
|
36
|
-
LIMIT ?
|
|
37
|
-
`)
|
|
38
|
-
.all(limit);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Get history within a time range
|
|
42
|
-
*/
|
|
43
|
-
export function getHistoryInRange(startTime, endTime) {
|
|
44
|
-
const db = getDatabase();
|
|
45
|
-
return db
|
|
46
|
-
.prepare(`
|
|
47
|
-
SELECT * FROM status_history
|
|
48
|
-
WHERE timestamp >= ? AND timestamp <= ?
|
|
49
|
-
ORDER BY timestamp DESC
|
|
50
|
-
`)
|
|
51
|
-
.all(startTime, endTime);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Cleanup old history entries
|
|
55
|
-
* Returns number of deleted entries
|
|
56
|
-
*/
|
|
57
|
-
export function cleanupOldHistory(maxAge) {
|
|
58
|
-
const db = getDatabase();
|
|
59
|
-
const cutoff = Date.now() - maxAge;
|
|
60
|
-
const result = db.prepare('DELETE FROM status_history WHERE timestamp < ?').run(cutoff);
|
|
61
|
-
if (result.changes > 0) {
|
|
62
|
-
console.log(`[DB] Cleaned up ${result.changes} old history entries`);
|
|
63
|
-
}
|
|
64
|
-
return result.changes;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Get statistics about status history
|
|
68
|
-
*/
|
|
69
|
-
export function getHistoryStats() {
|
|
70
|
-
const db = getDatabase();
|
|
71
|
-
const total = db.prepare('SELECT COUNT(*) as count FROM status_history').get();
|
|
72
|
-
const oldest = db.prepare('SELECT MIN(timestamp) as ts FROM status_history').get();
|
|
73
|
-
const newest = db.prepare('SELECT MAX(timestamp) as ts FROM status_history').get();
|
|
74
|
-
const byStatus = db
|
|
75
|
-
.prepare(`
|
|
76
|
-
SELECT status, COUNT(*) as count FROM status_history GROUP BY status
|
|
77
|
-
`)
|
|
78
|
-
.all();
|
|
79
|
-
const entriesByStatus = {};
|
|
80
|
-
for (const row of byStatus) {
|
|
81
|
-
entriesByStatus[row.status] = row.count;
|
|
82
|
-
}
|
|
83
|
-
return {
|
|
84
|
-
totalEntries: total.count,
|
|
85
|
-
oldestEntry: oldest.ts,
|
|
86
|
-
newestEntry: newest.ts,
|
|
87
|
-
entriesByStatus,
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Delete all history for a session
|
|
92
|
-
*/
|
|
93
|
-
export function deleteSessionHistory(sessionName) {
|
|
94
|
-
const db = getDatabase();
|
|
95
|
-
const result = db.prepare('DELETE FROM status_history WHERE session_name = ?').run(sessionName);
|
|
96
|
-
return result.changes;
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=history.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/db/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,45 +0,0 @@
|
|
|
1
|
-
export interface CleanupConfig {
|
|
2
|
-
maxIdleMs: number;
|
|
3
|
-
intervalMs: number;
|
|
4
|
-
}
|
|
5
|
-
export interface CleanupResult {
|
|
6
|
-
cleanedSessions: string[];
|
|
7
|
-
errors: Array<{
|
|
8
|
-
session: string;
|
|
9
|
-
error: string;
|
|
10
|
-
}>;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* CleanupService - Automatically cleans up stale worktrees.
|
|
14
|
-
* Runs periodically to remove worktrees from archived sessions.
|
|
15
|
-
*/
|
|
16
|
-
export declare class CleanupService {
|
|
17
|
-
private intervalHandle;
|
|
18
|
-
private config;
|
|
19
|
-
private projectPathResolver;
|
|
20
|
-
constructor(projectPathResolver: (project: string) => string, config?: Partial<CleanupConfig>);
|
|
21
|
-
/**
|
|
22
|
-
* Start the cleanup job.
|
|
23
|
-
*/
|
|
24
|
-
start(): void;
|
|
25
|
-
/**
|
|
26
|
-
* Stop the cleanup job.
|
|
27
|
-
*/
|
|
28
|
-
stop(): void;
|
|
29
|
-
/**
|
|
30
|
-
* Run a cleanup cycle.
|
|
31
|
-
* Returns info about what was cleaned up.
|
|
32
|
-
*/
|
|
33
|
-
runCleanup(): Promise<CleanupResult>;
|
|
34
|
-
/**
|
|
35
|
-
* Check if cleanup job is running.
|
|
36
|
-
*/
|
|
37
|
-
isRunning(): boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Update cleanup configuration.
|
|
40
|
-
*/
|
|
41
|
-
updateConfig(config: Partial<CleanupConfig>): void;
|
|
42
|
-
}
|
|
43
|
-
export declare function initCleanupService(projectPathResolver: (project: string) => string, config?: Partial<CleanupConfig>): CleanupService;
|
|
44
|
-
export declare function getCleanupService(): CleanupService | null;
|
|
45
|
-
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/services/cleanup.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,mBAAmB,CAA8B;gBAGvD,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAChD,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM;IASrC;;OAEG;IACH,KAAK,IAAI,IAAI;IAuBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAgD1C;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;CAanD;AAMD,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAChD,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC9B,cAAc,CAGhB;AAED,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD"}
|