@winspan/claude-forge 8.34.0 → 8.35.0
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/README.md +10 -30
- package/dist/capability/index.d.ts +6 -5
- package/dist/capability/index.d.ts.map +1 -1
- package/dist/capability/index.js +6 -5
- package/dist/capability/index.js.map +1 -1
- package/dist/capability/types.d.ts +5 -74
- package/dist/capability/types.d.ts.map +1 -1
- package/dist/capability/types.js +4 -1
- package/dist/capability/types.js.map +1 -1
- package/dist/core/storage/rows.d.ts +0 -36
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +1 -45
- package/dist/core/storage/sqlite.d.ts +2 -79
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +3 -362
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/utils/token-tracker.d.ts +0 -1
- package/dist/core/utils/token-tracker.d.ts.map +1 -1
- package/dist/core/utils/token-tracker.js +0 -1
- package/dist/core/utils/token-tracker.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use.d.ts +1 -9
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +2 -99
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/stop.d.ts +1 -15
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +1 -95
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +1 -5
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +4 -96
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +3 -54
- package/dist/daemon/index.js.map +1 -1
- package/dist/skills/official-skills.d.ts.map +1 -1
- package/dist/skills/official-skills.js +218 -20
- package/dist/skills/official-skills.js.map +1 -1
- package/dist/web/routes/status.d.ts.map +1 -1
- package/dist/web/routes/status.js +8 -10
- package/dist/web/routes/status.js.map +1 -1
- package/dist/web/routes/token-usage.d.ts +1 -1
- package/dist/web/routes/token-usage.d.ts.map +1 -1
- package/dist/web/routes/token-usage.js +1 -16
- package/dist/web/routes/token-usage.js.map +1 -1
- package/dist/web/routes/types.d.ts +0 -6
- package/dist/web/routes/types.d.ts.map +1 -1
- package/dist/web/routes/types.js.map +1 -1
- package/dist/web/server.d.ts +0 -6
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +0 -5
- package/dist/web/server.js.map +1 -1
- package/package.json +2 -2
- package/dist/capability/execution-manager.d.ts +0 -96
- package/dist/capability/execution-manager.d.ts.map +0 -1
- package/dist/capability/execution-manager.js +0 -260
- package/dist/capability/execution-manager.js.map +0 -1
- package/dist/capability/executor/background-executor.d.ts +0 -58
- package/dist/capability/executor/background-executor.d.ts.map +0 -1
- package/dist/capability/executor/background-executor.js +0 -322
- package/dist/capability/executor/background-executor.js.map +0 -1
- package/dist/capability/executor/foreground-executor.d.ts +0 -26
- package/dist/capability/executor/foreground-executor.d.ts.map +0 -1
- package/dist/capability/executor/foreground-executor.js +0 -82
- package/dist/capability/executor/foreground-executor.js.map +0 -1
- package/dist/capability/executor/orchestrator.d.ts +0 -38
- package/dist/capability/executor/orchestrator.d.ts.map +0 -1
- package/dist/capability/executor/orchestrator.js +0 -158
- package/dist/capability/executor/orchestrator.js.map +0 -1
- package/dist/capability/executor/stream-parser.d.ts +0 -73
- package/dist/capability/executor/stream-parser.d.ts.map +0 -1
- package/dist/capability/executor/stream-parser.js +0 -56
- package/dist/capability/executor/stream-parser.js.map +0 -1
- package/dist/capability/executor/types.d.ts +0 -44
- package/dist/capability/executor/types.d.ts.map +0 -1
- package/dist/capability/executor/types.js +0 -9
- package/dist/capability/executor/types.js.map +0 -1
- package/dist/capability/executor/worker-auth-probe.d.ts +0 -30
- package/dist/capability/executor/worker-auth-probe.d.ts.map +0 -1
- package/dist/capability/executor/worker-auth-probe.js +0 -108
- package/dist/capability/executor/worker-auth-probe.js.map +0 -1
- package/dist/capability/methodologies/bmad.yaml +0 -81
- package/dist/capability/methodologies/code-quality-audit.yaml +0 -26
- package/dist/capability/methodologies/harness-engineering.yaml +0 -75
- package/dist/capability/methodologies/test-coverage-scan.yaml +0 -26
- package/dist/capability/methodology-planner.d.ts +0 -49
- package/dist/capability/methodology-planner.d.ts.map +0 -1
- package/dist/capability/methodology-planner.js +0 -306
- package/dist/capability/methodology-planner.js.map +0 -1
- package/dist/capability/methodology-registry.d.ts +0 -32
- package/dist/capability/methodology-registry.d.ts.map +0 -1
- package/dist/capability/methodology-registry.js +0 -113
- package/dist/capability/methodology-registry.js.map +0 -1
- package/dist/daemon/handlers/methodology-formatter.d.ts +0 -16
- package/dist/daemon/handlers/methodology-formatter.d.ts.map +0 -1
- package/dist/daemon/handlers/methodology-formatter.js +0 -119
- package/dist/daemon/handlers/methodology-formatter.js.map +0 -1
- package/dist/daemon/idle-detector.d.ts +0 -35
- package/dist/daemon/idle-detector.d.ts.map +0 -1
- package/dist/daemon/idle-detector.js +0 -56
- package/dist/daemon/idle-detector.js.map +0 -1
- package/dist/daemon/idle-trigger.d.ts +0 -53
- package/dist/daemon/idle-trigger.d.ts.map +0 -1
- package/dist/daemon/idle-trigger.js +0 -153
- package/dist/daemon/idle-trigger.js.map +0 -1
- package/dist/daemon/methodology-pending-queue.d.ts +0 -33
- package/dist/daemon/methodology-pending-queue.d.ts.map +0 -1
- package/dist/daemon/methodology-pending-queue.js +0 -120
- package/dist/daemon/methodology-pending-queue.js.map +0 -1
- package/dist/web/routes/methodology.d.ts +0 -12
- package/dist/web/routes/methodology.d.ts.map +0 -1
- package/dist/web/routes/methodology.js +0 -228
- package/dist/web/routes/methodology.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"idle-detector.d.ts","sourceRoot":"","sources":["../../src/daemon/idle-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,OAAO,GAAE,mBAAwB;IAK7C;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAa3B;;;OAGG;IACH,OAAO,CAAC,QAAQ,GAAE,MAA4B,GAAG,MAAM;CAiBxD"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IdleDetector — 检测 session 空闲状态
|
|
3
|
-
*
|
|
4
|
-
* 职责:
|
|
5
|
-
* 1. 跟踪每个 session 的最后活动时间
|
|
6
|
-
* 2. 提供查询接口,返回超过阈值的空闲 session 列表
|
|
7
|
-
*
|
|
8
|
-
* 活动定义:UserPromptSubmit / PostToolUse / Stop 等 hook 事件
|
|
9
|
-
*/
|
|
10
|
-
import { logger } from '../core/utils/logger.js';
|
|
11
|
-
export class IdleDetector {
|
|
12
|
-
lastActivityTime = new Map();
|
|
13
|
-
idleThresholdMs;
|
|
14
|
-
constructor(options = {}) {
|
|
15
|
-
this.idleThresholdMs = options.idleThresholdMs ?? 5 * 60 * 1000;
|
|
16
|
-
logger.debug(`[IdleDetector] initialized with threshold=${this.idleThresholdMs}ms`);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* 记录 session 活动
|
|
20
|
-
*/
|
|
21
|
-
recordActivity(session_id) {
|
|
22
|
-
this.lastActivityTime.set(session_id, Date.now());
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 获取空闲的 session 列表
|
|
26
|
-
*/
|
|
27
|
-
getIdleSessions() {
|
|
28
|
-
const now = Date.now();
|
|
29
|
-
const idle = [];
|
|
30
|
-
for (const [session_id, lastTime] of this.lastActivityTime) {
|
|
31
|
-
if (now - lastTime > this.idleThresholdMs) {
|
|
32
|
-
idle.push(session_id);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return idle;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 清理过期的 session 记录(可选,避免内存泄漏)
|
|
39
|
-
* @param maxAgeMs 超过此时长的记录会被清理,默认 24 小时
|
|
40
|
-
*/
|
|
41
|
-
cleanup(maxAgeMs = 24 * 60 * 60 * 1000) {
|
|
42
|
-
const now = Date.now();
|
|
43
|
-
let cleaned = 0;
|
|
44
|
-
for (const [session_id, lastTime] of this.lastActivityTime) {
|
|
45
|
-
if (now - lastTime > maxAgeMs) {
|
|
46
|
-
this.lastActivityTime.delete(session_id);
|
|
47
|
-
cleaned++;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
if (cleaned > 0) {
|
|
51
|
-
logger.debug(`[IdleDetector] cleaned ${cleaned} expired session(s)`);
|
|
52
|
-
}
|
|
53
|
-
return cleaned;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=idle-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"idle-detector.js","sourceRoot":"","sources":["../../src/daemon/idle-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAUjD,MAAM,OAAO,YAAY;IACf,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,eAAe,CAAS;IAEzC,YAAY,UAA+B,EAAE;QAC3C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,UAAkB;QAC/B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,eAAe;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3D,IAAI,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,WAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3D,IAAI,GAAG,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,0BAA0B,OAAO,qBAAqB,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IdleTrigger — 在 session 空闲时自动触发低优方法论
|
|
3
|
-
*
|
|
4
|
-
* 职责:
|
|
5
|
-
* 1. 检测空闲 session(通过 IdleDetector)
|
|
6
|
-
* 2. 读取 idle 方法论配置
|
|
7
|
-
* 3. 检查触发条件(无 running methodology、未超频触发)
|
|
8
|
-
* 4. 创建 background execution
|
|
9
|
-
*
|
|
10
|
-
* 借鉴 ruflo 的 12 个后台 worker 设计,在主会话空闲时自动跑低优任务。
|
|
11
|
-
*/
|
|
12
|
-
import type { SQLiteStorage } from '../core/storage/sqlite.js';
|
|
13
|
-
import type { MethodologyRegistry } from '../capability/methodology-registry.js';
|
|
14
|
-
import type { ExecutionManager } from '../capability/execution-manager.js';
|
|
15
|
-
import type { IdleDetector } from './idle-detector.js';
|
|
16
|
-
export interface IdleMethodologyConfig {
|
|
17
|
-
id: string;
|
|
18
|
-
trigger_interval: number;
|
|
19
|
-
priority: 'low' | 'medium' | 'high';
|
|
20
|
-
}
|
|
21
|
-
export interface IdleTriggerOptions {
|
|
22
|
-
/**
|
|
23
|
-
* 是否启用 idle 触发器
|
|
24
|
-
*/
|
|
25
|
-
enabled?: boolean;
|
|
26
|
-
}
|
|
27
|
-
export declare class IdleTrigger {
|
|
28
|
-
private storage;
|
|
29
|
-
private registry;
|
|
30
|
-
private executionManager;
|
|
31
|
-
private idleDetector;
|
|
32
|
-
private lastTriggerTime;
|
|
33
|
-
private readonly enabled;
|
|
34
|
-
constructor(storage: SQLiteStorage, registry: MethodologyRegistry, executionManager: ExecutionManager, idleDetector: IdleDetector, options?: IdleTriggerOptions);
|
|
35
|
-
/**
|
|
36
|
-
* 从方法论 YAML 中提取 idle 配置
|
|
37
|
-
*/
|
|
38
|
-
private getIdleMethodologies;
|
|
39
|
-
/**
|
|
40
|
-
* 触发空闲方法论
|
|
41
|
-
* 在 daemon reconcile loop 里定期调用
|
|
42
|
-
*/
|
|
43
|
-
trigger(): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* 为单个 session 触发 idle 方法论
|
|
46
|
-
*/
|
|
47
|
-
private triggerForSession;
|
|
48
|
-
/**
|
|
49
|
-
* 清理过期的触发记录
|
|
50
|
-
*/
|
|
51
|
-
cleanup(maxAgeMs?: number): number;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=idle-trigger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"idle-trigger.d.ts","sourceRoot":"","sources":["../../src/daemon/idle-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,WAAW;IAKpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IAPtB,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGxB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,mBAAmB,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAClC,OAAO,GAAE,kBAAuB;IAMlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B;;OAEG;YACW,iBAAiB;IAkF/B;;OAEG;IACH,OAAO,CAAC,QAAQ,GAAE,MAA4B,GAAG,MAAM;CAiBxD"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IdleTrigger — 在 session 空闲时自动触发低优方法论
|
|
3
|
-
*
|
|
4
|
-
* 职责:
|
|
5
|
-
* 1. 检测空闲 session(通过 IdleDetector)
|
|
6
|
-
* 2. 读取 idle 方法论配置
|
|
7
|
-
* 3. 检查触发条件(无 running methodology、未超频触发)
|
|
8
|
-
* 4. 创建 background execution
|
|
9
|
-
*
|
|
10
|
-
* 借鉴 ruflo 的 12 个后台 worker 设计,在主会话空闲时自动跑低优任务。
|
|
11
|
-
*/
|
|
12
|
-
import { logger } from '../core/utils/logger.js';
|
|
13
|
-
export class IdleTrigger {
|
|
14
|
-
storage;
|
|
15
|
-
registry;
|
|
16
|
-
executionManager;
|
|
17
|
-
idleDetector;
|
|
18
|
-
lastTriggerTime = new Map(); // `${session_id}:${methodology_id}` → timestamp
|
|
19
|
-
enabled;
|
|
20
|
-
constructor(storage, registry, executionManager, idleDetector, options = {}) {
|
|
21
|
-
this.storage = storage;
|
|
22
|
-
this.registry = registry;
|
|
23
|
-
this.executionManager = executionManager;
|
|
24
|
-
this.idleDetector = idleDetector;
|
|
25
|
-
this.enabled = options.enabled ?? (process.env.ENABLE_IDLE_TRIGGER !== 'false');
|
|
26
|
-
logger.info(`[IdleTrigger] ${this.enabled ? 'enabled' : 'disabled'}`);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* 从方法论 YAML 中提取 idle 配置
|
|
30
|
-
*/
|
|
31
|
-
getIdleMethodologies() {
|
|
32
|
-
const configs = [];
|
|
33
|
-
for (const methodology of this.registry.getAll()) {
|
|
34
|
-
const idleTrigger = methodology.idle_trigger;
|
|
35
|
-
if (!idleTrigger?.enabled)
|
|
36
|
-
continue;
|
|
37
|
-
configs.push({
|
|
38
|
-
id: methodology.id,
|
|
39
|
-
trigger_interval: idleTrigger.interval ?? 3600000, // 默认 1 小时
|
|
40
|
-
priority: idleTrigger.priority ?? 'low',
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
return configs;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* 触发空闲方法论
|
|
47
|
-
* 在 daemon reconcile loop 里定期调用
|
|
48
|
-
*/
|
|
49
|
-
async trigger() {
|
|
50
|
-
if (!this.enabled)
|
|
51
|
-
return;
|
|
52
|
-
const idleSessions = this.idleDetector.getIdleSessions();
|
|
53
|
-
if (idleSessions.length === 0)
|
|
54
|
-
return;
|
|
55
|
-
const idleMethodologies = this.getIdleMethodologies();
|
|
56
|
-
if (idleMethodologies.length === 0)
|
|
57
|
-
return;
|
|
58
|
-
for (const session_id of idleSessions) {
|
|
59
|
-
try {
|
|
60
|
-
await this.triggerForSession(session_id, idleMethodologies);
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
logger.warn(`[IdleTrigger] failed for session ${session_id}: ${err}`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* 为单个 session 触发 idle 方法论
|
|
69
|
-
*/
|
|
70
|
-
async triggerForSession(session_id, idleMethodologies) {
|
|
71
|
-
// 检查是否已有 running methodology
|
|
72
|
-
const activeExecution = this.storage.getActiveMethodologyExecution(session_id);
|
|
73
|
-
if (activeExecution) {
|
|
74
|
-
logger.debug(`[IdleTrigger] session ${session_id} has active execution, skip`);
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
// 按优先级排序(high > medium > low)
|
|
78
|
-
const sorted = [...idleMethodologies].sort((a, b) => {
|
|
79
|
-
const priority = { high: 3, medium: 2, low: 1 };
|
|
80
|
-
return priority[b.priority] - priority[a.priority];
|
|
81
|
-
});
|
|
82
|
-
for (const config of sorted) {
|
|
83
|
-
// 检查上次触发时间
|
|
84
|
-
const key = `${session_id}:${config.id}`;
|
|
85
|
-
const lastTrigger = this.lastTriggerTime.get(key) ?? 0;
|
|
86
|
-
const now = Date.now();
|
|
87
|
-
if (now - lastTrigger < config.trigger_interval) {
|
|
88
|
-
logger.debug(`[IdleTrigger] ${config.id} for session ${session_id} triggered too recently, skip`);
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
// 触发 background execution
|
|
92
|
-
try {
|
|
93
|
-
const methodology = this.registry.get(config.id);
|
|
94
|
-
if (!methodology) {
|
|
95
|
-
logger.warn(`[IdleTrigger] methodology ${config.id} not found`);
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
// 获取 project_path(从最近的 event 推断)
|
|
99
|
-
const recentEvents = this.storage.queryEvents({ session_id, limit: 1 });
|
|
100
|
-
if (recentEvents.length === 0) {
|
|
101
|
-
logger.debug(`[IdleTrigger] no events for session ${session_id}, skip`);
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
const project_path = recentEvents[0].project_path;
|
|
105
|
-
// 创建简单的执行计划(idle 方法论通常是单阶段扫描任务)
|
|
106
|
-
const plan = {
|
|
107
|
-
methodology_id: config.id,
|
|
108
|
-
phases: [
|
|
109
|
-
{
|
|
110
|
-
id: 'scan',
|
|
111
|
-
agent: 'researcher',
|
|
112
|
-
prompt: `[Idle trigger] Run ${methodology.name}`,
|
|
113
|
-
rationale: 'Automated background scan during idle time',
|
|
114
|
-
},
|
|
115
|
-
],
|
|
116
|
-
rationale: `Idle trigger: ${methodology.description}`,
|
|
117
|
-
};
|
|
118
|
-
const executionId = this.executionManager.start({
|
|
119
|
-
session_id,
|
|
120
|
-
methodology_id: config.id,
|
|
121
|
-
plan,
|
|
122
|
-
mode: 'background',
|
|
123
|
-
trigger_type: 'idle',
|
|
124
|
-
});
|
|
125
|
-
this.lastTriggerTime.set(key, now);
|
|
126
|
-
logger.info(`[IdleTrigger] triggered ${config.id} for session ${session_id} (execution=${executionId})`);
|
|
127
|
-
// 一次只触发一个,避免资源争抢
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
catch (err) {
|
|
131
|
-
logger.warn(`[IdleTrigger] failed to start ${config.id}: ${err}`);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* 清理过期的触发记录
|
|
137
|
-
*/
|
|
138
|
-
cleanup(maxAgeMs = 24 * 60 * 60 * 1000) {
|
|
139
|
-
const now = Date.now();
|
|
140
|
-
let cleaned = 0;
|
|
141
|
-
for (const [key, lastTime] of this.lastTriggerTime) {
|
|
142
|
-
if (now - lastTime > maxAgeMs) {
|
|
143
|
-
this.lastTriggerTime.delete(key);
|
|
144
|
-
cleaned++;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
if (cleaned > 0) {
|
|
148
|
-
logger.debug(`[IdleTrigger] cleaned ${cleaned} expired trigger record(s)`);
|
|
149
|
-
}
|
|
150
|
-
return cleaned;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=idle-trigger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"idle-trigger.js","sourceRoot":"","sources":["../../src/daemon/idle-trigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Methodology Pending Inject Queue
|
|
3
|
-
*
|
|
4
|
-
* 前台模式下,Claude 主对话有时会忽略 UserPromptSubmit 注入的阶段指令
|
|
5
|
-
* (3 小时进度 0% 就是这种情况)。Stop hook 检测到这种情况时,把"下
|
|
6
|
-
* 一次要注入的指令"写入队列;UserPromptSubmit 在下一轮响应前消费一次。
|
|
7
|
-
*
|
|
8
|
-
* 进程内 Map + 磁盘 JSON 双层:daemon 重启时从磁盘恢复。
|
|
9
|
-
*/
|
|
10
|
-
export interface PendingDirective {
|
|
11
|
-
session_id: string;
|
|
12
|
-
execution_id: number;
|
|
13
|
-
phase_index: number;
|
|
14
|
-
directive: string;
|
|
15
|
-
enqueued_at: number;
|
|
16
|
-
reason: 'stop-fallback' | 'cold-restart' | 'idle-timeout';
|
|
17
|
-
}
|
|
18
|
-
export declare class MethodologyPendingQueue {
|
|
19
|
-
private memory;
|
|
20
|
-
private queueDir;
|
|
21
|
-
constructor(queueDir?: string);
|
|
22
|
-
private loadFromDisk;
|
|
23
|
-
private filePath;
|
|
24
|
-
enqueue(entry: PendingDirective): void;
|
|
25
|
-
consume(session_id: string): PendingDirective | null;
|
|
26
|
-
peek(session_id: string): PendingDirective | null;
|
|
27
|
-
size(): number;
|
|
28
|
-
purgeByExecutionId(execution_id: number): void;
|
|
29
|
-
}
|
|
30
|
-
export declare function getMethodologyPendingQueue(): MethodologyPendingQueue;
|
|
31
|
-
export declare function _resetMethodologyPendingQueueForTest(): void;
|
|
32
|
-
export declare function getPendingQueueDir(): string;
|
|
33
|
-
//# sourceMappingURL=methodology-pending-queue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"methodology-pending-queue.d.ts","sourceRoot":"","sources":["../../src/daemon/methodology-pending-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC;CAC3D;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,CAAC,EAAE,MAAM;IAK7B,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IActC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAiBpD,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIjD,IAAI,IAAI,MAAM;IAKd,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAW/C;AAID,wBAAgB,0BAA0B,IAAI,uBAAuB,CAGpE;AAGD,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D;AAGD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Methodology Pending Inject Queue
|
|
3
|
-
*
|
|
4
|
-
* 前台模式下,Claude 主对话有时会忽略 UserPromptSubmit 注入的阶段指令
|
|
5
|
-
* (3 小时进度 0% 就是这种情况)。Stop hook 检测到这种情况时,把"下
|
|
6
|
-
* 一次要注入的指令"写入队列;UserPromptSubmit 在下一轮响应前消费一次。
|
|
7
|
-
*
|
|
8
|
-
* 进程内 Map + 磁盘 JSON 双层:daemon 重启时从磁盘恢复。
|
|
9
|
-
*/
|
|
10
|
-
import { existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync } from 'fs';
|
|
11
|
-
import path from 'path';
|
|
12
|
-
import { homedir } from 'os';
|
|
13
|
-
import { logger } from '../core/utils/logger.js';
|
|
14
|
-
const DEFAULT_QUEUE_DIR = path.join(homedir(), '.claude-forge', 'pending-inject');
|
|
15
|
-
function resolveQueueDir() {
|
|
16
|
-
return process.env.CLAUDE_FORGE_PENDING_DIR || DEFAULT_QUEUE_DIR;
|
|
17
|
-
}
|
|
18
|
-
export class MethodologyPendingQueue {
|
|
19
|
-
memory = new Map();
|
|
20
|
-
queueDir;
|
|
21
|
-
constructor(queueDir) {
|
|
22
|
-
this.queueDir = queueDir ?? resolveQueueDir();
|
|
23
|
-
this.loadFromDisk();
|
|
24
|
-
}
|
|
25
|
-
loadFromDisk() {
|
|
26
|
-
try {
|
|
27
|
-
if (!existsSync(this.queueDir)) {
|
|
28
|
-
mkdirSync(this.queueDir, { recursive: true });
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const files = readdirSync(this.queueDir).filter(f => f.endsWith('.json'));
|
|
32
|
-
for (const file of files) {
|
|
33
|
-
try {
|
|
34
|
-
const raw = readFileSync(path.join(this.queueDir, file), 'utf-8');
|
|
35
|
-
const entry = JSON.parse(raw);
|
|
36
|
-
this.memory.set(entry.session_id, entry);
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
logger.debug(`[MethodologyPendingQueue] skip corrupt ${file}: ${err}`);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (this.memory.size > 0) {
|
|
43
|
-
logger.info(`[MethodologyPendingQueue] restored ${this.memory.size} pending directives`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
logger.warn(`[MethodologyPendingQueue] loadFromDisk failed: ${err}`);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
filePath(session_id) {
|
|
51
|
-
const safe = session_id.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
52
|
-
return path.join(this.queueDir, `${safe}.json`);
|
|
53
|
-
}
|
|
54
|
-
enqueue(entry) {
|
|
55
|
-
this.memory.set(entry.session_id, entry);
|
|
56
|
-
try {
|
|
57
|
-
if (!existsSync(this.queueDir))
|
|
58
|
-
mkdirSync(this.queueDir, { recursive: true });
|
|
59
|
-
writeFileSync(this.filePath(entry.session_id), JSON.stringify(entry, null, 2), 'utf-8');
|
|
60
|
-
logger.info(`[MethodologyPendingQueue] enqueued ${entry.reason} for session=${entry.session_id.slice(0, 8)} phase=${entry.phase_index}`);
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
logger.warn(`[MethodologyPendingQueue] persist failed: ${err}`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// 取出并移除。返回 null 如果没有待注入。
|
|
67
|
-
consume(session_id) {
|
|
68
|
-
const entry = this.memory.get(session_id);
|
|
69
|
-
if (!entry)
|
|
70
|
-
return null;
|
|
71
|
-
this.memory.delete(session_id);
|
|
72
|
-
try {
|
|
73
|
-
const fp = this.filePath(session_id);
|
|
74
|
-
if (existsSync(fp))
|
|
75
|
-
unlinkSync(fp);
|
|
76
|
-
}
|
|
77
|
-
catch (err) {
|
|
78
|
-
logger.debug(`[MethodologyPendingQueue] cleanup failed: ${err}`);
|
|
79
|
-
}
|
|
80
|
-
logger.info(`[MethodologyPendingQueue] consumed ${entry.reason} for session=${session_id.slice(0, 8)} phase=${entry.phase_index}`);
|
|
81
|
-
return entry;
|
|
82
|
-
}
|
|
83
|
-
// 对外只用于调试/可观测,不建议修改返回值
|
|
84
|
-
peek(session_id) {
|
|
85
|
-
return this.memory.get(session_id) ?? null;
|
|
86
|
-
}
|
|
87
|
-
size() {
|
|
88
|
-
return this.memory.size;
|
|
89
|
-
}
|
|
90
|
-
// 强制清理指定 execution 的所有 pending(execution 被 cancel / 完成时调用)
|
|
91
|
-
purgeByExecutionId(execution_id) {
|
|
92
|
-
for (const [sid, entry] of this.memory.entries()) {
|
|
93
|
-
if (entry.execution_id === execution_id) {
|
|
94
|
-
this.memory.delete(sid);
|
|
95
|
-
try {
|
|
96
|
-
const fp = this.filePath(sid);
|
|
97
|
-
if (existsSync(fp))
|
|
98
|
-
unlinkSync(fp);
|
|
99
|
-
}
|
|
100
|
-
catch { /* ignore */ }
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// Daemon 单例
|
|
106
|
-
let _instance = null;
|
|
107
|
-
export function getMethodologyPendingQueue() {
|
|
108
|
-
if (!_instance)
|
|
109
|
-
_instance = new MethodologyPendingQueue();
|
|
110
|
-
return _instance;
|
|
111
|
-
}
|
|
112
|
-
// 测试用 reset
|
|
113
|
-
export function _resetMethodologyPendingQueueForTest() {
|
|
114
|
-
_instance = null;
|
|
115
|
-
}
|
|
116
|
-
// 暴露给外部(用于避免测试时写真实 HOME)
|
|
117
|
-
export function getPendingQueueDir() {
|
|
118
|
-
return resolveQueueDir();
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=methodology-pending-queue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"methodology-pending-queue.js","sourceRoot":"","sources":["../../src/daemon/methodology-pending-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Application } from 'express';
|
|
2
|
-
import type { RouteContext } from './types.js';
|
|
3
|
-
/**
|
|
4
|
-
* /api/methodology-executions/* and /api/methodologies.
|
|
5
|
-
*
|
|
6
|
-
* Also owns the SSE stream for live execution updates. Note: the SSE route
|
|
7
|
-
* `/api/methodology-executions/events` must be registered before the
|
|
8
|
-
* parameterized `/:id` route on Express 4 (Express matches in definition
|
|
9
|
-
* order and `:id` would otherwise swallow the literal `events` segment).
|
|
10
|
-
*/
|
|
11
|
-
export declare function registerMethodologyRoutes(app: Application, ctx: RouteContext): void;
|
|
12
|
-
//# sourceMappingURL=methodology.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"methodology.d.ts","sourceRoot":"","sources":["../../../src/web/routes/methodology.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQ3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAkOnF"}
|