@jingyi0605/codingns 0.1.3 → 0.1.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/bin/codingns.mjs +47 -8
- package/dist/public/assets/{TerminalPage-Nq5sPc5c.js → TerminalPage-4p6EBqrR.js} +19 -19
- package/dist/public/assets/gemini-D4G1NbrE.png +0 -0
- package/dist/public/assets/index-CxeghocY.css +1 -0
- package/dist/public/assets/index-DXusStl0.js +108 -0
- package/dist/public/assets/kimi-BWNNSh7e.png +0 -0
- package/dist/public/index.html +2 -2
- package/dist/server/config/env.d.ts +7 -0
- package/dist/server/config/env.js +147 -1
- package/dist/server/config/env.js.map +1 -1
- package/dist/server/config/opencode-system-probe-helper-process.d.ts +24 -0
- package/dist/server/config/opencode-system-probe-helper-process.js +70 -5
- package/dist/server/config/opencode-system-probe-helper-process.js.map +1 -1
- package/dist/server/modules/auth/auth-service.d.ts +7 -1
- package/dist/server/modules/auth/auth-service.js +23 -3
- package/dist/server/modules/auth/auth-service.js.map +1 -1
- package/dist/server/modules/bootstrap/bootstrap-service.d.ts +3 -1
- package/dist/server/modules/bootstrap/bootstrap-service.js +7 -2
- package/dist/server/modules/bootstrap/bootstrap-service.js.map +1 -1
- package/dist/server/modules/butler/butler-action-context-service.d.ts +30 -0
- package/dist/server/modules/butler/butler-action-context-service.js +108 -0
- package/dist/server/modules/butler/butler-action-context-service.js.map +1 -0
- package/dist/server/modules/butler/butler-auth-service.d.ts +17 -0
- package/dist/server/modules/butler/butler-auth-service.js +91 -0
- package/dist/server/modules/butler/butler-auth-service.js.map +1 -0
- package/dist/server/modules/butler/butler-control-action-service.d.ts +65 -0
- package/dist/server/modules/butler/butler-control-action-service.js +296 -0
- package/dist/server/modules/butler/butler-control-action-service.js.map +1 -0
- package/dist/server/modules/butler/butler-control-session-service.d.ts +55 -0
- package/dist/server/modules/butler/butler-control-session-service.js +367 -0
- package/dist/server/modules/butler/butler-control-session-service.js.map +1 -0
- package/dist/server/modules/butler/butler-controller.d.ts +367 -0
- package/dist/server/modules/butler/butler-controller.js +475 -0
- package/dist/server/modules/butler/butler-controller.js.map +1 -0
- package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.d.ts +34 -0
- package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js +77 -0
- package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js.map +1 -0
- package/dist/server/modules/butler/butler-follow-up-scheduler.d.ts +23 -0
- package/dist/server/modules/butler/butler-follow-up-scheduler.js +57 -0
- package/dist/server/modules/butler/butler-follow-up-scheduler.js.map +1 -0
- package/dist/server/modules/butler/butler-follow-up-service.d.ts +86 -0
- package/dist/server/modules/butler/butler-follow-up-service.js +948 -0
- package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -0
- package/dist/server/modules/butler/butler-inbox-service.d.ts +35 -0
- package/dist/server/modules/butler/butler-inbox-service.js +136 -0
- package/dist/server/modules/butler/butler-inbox-service.js.map +1 -0
- package/dist/server/modules/butler/butler-notification-service.d.ts +12 -0
- package/dist/server/modules/butler/butler-notification-service.js +45 -0
- package/dist/server/modules/butler/butler-notification-service.js.map +1 -0
- package/dist/server/modules/butler/butler-profile-service.d.ts +26 -0
- package/dist/server/modules/butler/butler-profile-service.js +529 -0
- package/dist/server/modules/butler/butler-profile-service.js.map +1 -0
- package/dist/server/modules/butler/butler-project-service.d.ts +48 -0
- package/dist/server/modules/butler/butler-project-service.js +253 -0
- package/dist/server/modules/butler/butler-project-service.js.map +1 -0
- package/dist/server/modules/butler/butler-session-service.d.ts +79 -0
- package/dist/server/modules/butler/butler-session-service.js +503 -0
- package/dist/server/modules/butler/butler-session-service.js.map +1 -0
- package/dist/server/modules/butler/butler-session-summary-service.d.ts +55 -0
- package/dist/server/modules/butler/butler-session-summary-service.js +382 -0
- package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -0
- package/dist/server/modules/butler/context-aggregator.d.ts +187 -0
- package/dist/server/modules/butler/context-aggregator.js +807 -0
- package/dist/server/modules/butler/context-aggregator.js.map +1 -0
- package/dist/server/modules/butler/instruction-adapter.d.ts +28 -0
- package/dist/server/modules/butler/instruction-adapter.js +101 -0
- package/dist/server/modules/butler/instruction-adapter.js.map +1 -0
- package/dist/server/modules/butler/patrol-execution-service.d.ts +47 -0
- package/dist/server/modules/butler/patrol-execution-service.js +347 -0
- package/dist/server/modules/butler/patrol-execution-service.js.map +1 -0
- package/dist/server/modules/butler/patrol-plan-service.d.ts +54 -0
- package/dist/server/modules/butler/patrol-plan-service.js +272 -0
- package/dist/server/modules/butler/patrol-plan-service.js.map +1 -0
- package/dist/server/modules/butler/patrol-run-service.d.ts +60 -0
- package/dist/server/modules/butler/patrol-run-service.js +185 -0
- package/dist/server/modules/butler/patrol-run-service.js.map +1 -0
- package/dist/server/modules/butler/patrol-scheduler.d.ts +36 -0
- package/dist/server/modules/butler/patrol-scheduler.js +99 -0
- package/dist/server/modules/butler/patrol-scheduler.js.map +1 -0
- package/dist/server/modules/butler/project-memory-service.d.ts +30 -0
- package/dist/server/modules/butler/project-memory-service.js +103 -0
- package/dist/server/modules/butler/project-memory-service.js.map +1 -0
- package/dist/server/modules/butler/provider-adapter-registry.d.ts +61 -0
- package/dist/server/modules/butler/provider-adapter-registry.js +430 -0
- package/dist/server/modules/butler/provider-adapter-registry.js.map +1 -0
- package/dist/server/modules/butler/session-summary-instruction-adapter.d.ts +28 -0
- package/dist/server/modules/butler/session-summary-instruction-adapter.js +79 -0
- package/dist/server/modules/butler/session-summary-instruction-adapter.js.map +1 -0
- package/dist/server/modules/butler/session-summary-scheduler.d.ts +23 -0
- package/dist/server/modules/butler/session-summary-scheduler.js +57 -0
- package/dist/server/modules/butler/session-summary-scheduler.js.map +1 -0
- package/dist/server/modules/butler/verification-run-service.d.ts +73 -0
- package/dist/server/modules/butler/verification-run-service.js +633 -0
- package/dist/server/modules/butler/verification-run-service.js.map +1 -0
- package/dist/server/modules/demo/demo-cleanup-service.d.ts +41 -0
- package/dist/server/modules/demo/demo-cleanup-service.js +111 -0
- package/dist/server/modules/demo/demo-cleanup-service.js.map +1 -0
- package/dist/server/modules/preferences/profile-service.js +8 -2
- package/dist/server/modules/preferences/profile-service.js.map +1 -1
- package/dist/server/modules/sessions/claude-runtime-helper-process.js +1 -1
- package/dist/server/modules/sessions/claude-runtime-helper-process.js.map +1 -1
- package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +5 -1
- package/dist/server/modules/sessions/codex-app-server-helper-client.js +10 -2
- package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
- package/dist/server/modules/sessions/session-controller.d.ts +3 -1
- package/dist/server/modules/sessions/session-controller.js +11 -2
- package/dist/server/modules/sessions/session-controller.js.map +1 -1
- package/dist/server/modules/sessions/session-history-service.d.ts +14 -1
- package/dist/server/modules/sessions/session-history-service.js +291 -30
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-service.d.ts +25 -2
- package/dist/server/modules/sessions/session-live-runtime-service.js +526 -158
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/sessions/session-provider-error-mapper.js +28 -0
- package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
- package/dist/server/modules/terminal/terminal-service.js +2 -2
- package/dist/server/modules/terminal/terminal-service.js.map +1 -1
- package/dist/server/modules/workbench/workbench-service.d.ts +7 -1
- package/dist/server/modules/workbench/workbench-service.js +31 -7
- package/dist/server/modules/workbench/workbench-service.js.map +1 -1
- package/dist/server/routes/butler.d.ts +3 -0
- package/dist/server/routes/butler.js +54 -0
- package/dist/server/routes/butler.js.map +1 -0
- package/dist/server/routes/sessions.d.ts +1 -0
- package/dist/server/routes/sessions.js +12 -3
- package/dist/server/routes/sessions.js.map +1 -1
- package/dist/server/server/create-server.d.ts +61 -0
- package/dist/server/server/create-server.js +180 -10
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/storage/repositories/butler-control-event-repository.d.ts +8 -0
- package/dist/server/storage/repositories/butler-control-event-repository.js +78 -0
- package/dist/server/storage/repositories/butler-control-event-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-control-session-repository.d.ts +11 -0
- package/dist/server/storage/repositories/butler-control-session-repository.js +86 -0
- package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-follow-up-task-repository.d.ts +16 -0
- package/dist/server/storage/repositories/butler-follow-up-task-repository.js +252 -0
- package/dist/server/storage/repositories/butler-follow-up-task-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-inbox-item-repository.d.ts +15 -0
- package/dist/server/storage/repositories/butler-inbox-item-repository.js +111 -0
- package/dist/server/storage/repositories/butler-inbox-item-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-notification-archive-repository.d.ts +9 -0
- package/dist/server/storage/repositories/butler-notification-archive-repository.js +48 -0
- package/dist/server/storage/repositories/butler-notification-archive-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-profile-repository.d.ts +9 -0
- package/dist/server/storage/repositories/butler-profile-repository.js +86 -0
- package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-project-repository.d.ts +14 -0
- package/dist/server/storage/repositories/butler-project-repository.js +140 -0
- package/dist/server/storage/repositories/butler-project-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-session-repository.d.ts +11 -0
- package/dist/server/storage/repositories/butler-session-repository.js +106 -0
- package/dist/server/storage/repositories/butler-session-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-session-summary-state-repository.d.ts +8 -0
- package/dist/server/storage/repositories/butler-session-summary-state-repository.js +62 -0
- package/dist/server/storage/repositories/butler-session-summary-state-repository.js.map +1 -0
- package/dist/server/storage/repositories/patrol-plan-repository.d.ts +27 -0
- package/dist/server/storage/repositories/patrol-plan-repository.js +119 -0
- package/dist/server/storage/repositories/patrol-plan-repository.js.map +1 -0
- package/dist/server/storage/repositories/patrol-run-repository.d.ts +28 -0
- package/dist/server/storage/repositories/patrol-run-repository.js +121 -0
- package/dist/server/storage/repositories/patrol-run-repository.js.map +1 -0
- package/dist/server/storage/repositories/project-memory-repository.d.ts +15 -0
- package/dist/server/storage/repositories/project-memory-repository.js +150 -0
- package/dist/server/storage/repositories/project-memory-repository.js.map +1 -0
- package/dist/server/storage/repositories/session-checkpoint-repository.d.ts +9 -0
- package/dist/server/storage/repositories/session-checkpoint-repository.js +72 -0
- package/dist/server/storage/repositories/session-checkpoint-repository.js.map +1 -0
- package/dist/server/storage/repositories/session-message-origin-repository.d.ts +10 -0
- package/dist/server/storage/repositories/session-message-origin-repository.js +93 -0
- package/dist/server/storage/repositories/session-message-origin-repository.js.map +1 -0
- package/dist/server/storage/repositories/verification-run-repository.d.ts +29 -0
- package/dist/server/storage/repositories/verification-run-repository.js +125 -0
- package/dist/server/storage/repositories/verification-run-repository.js.map +1 -0
- package/dist/server/storage/sqlite/client.js +39 -0
- package/dist/server/storage/sqlite/client.js.map +1 -1
- package/dist/server/storage/sqlite/schema.sql +324 -0
- package/dist/server/types/domain.d.ts +261 -1
- package/dist/server/ws/ws-server.d.ts +2 -1
- package/dist/server/ws/ws-server.js +2 -1
- package/dist/server/ws/ws-server.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/index.d.ts +4 -0
- package/node_modules/@codingns/session-sync-core/dist/index.js +4 -0
- package/node_modules/@codingns/session-sync-core/dist/index.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.d.ts +18 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js +659 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-shared.d.ts +11 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js +72 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +8 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +89 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +4 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +41 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +1086 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +29 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +578 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +2 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +30 -2
- package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +2 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +43 -5
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +2 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +320 -69
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.d.ts +21 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js +537 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.d.ts +38 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js +911 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +6 -0
- package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +9 -0
- package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/package.json +8 -0
- package/package.json +1 -1
- package/dist/public/assets/index-9hnprhO7.css +0 -1
- package/dist/public/assets/index-BTpmuKhG.js +0 -108
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { nowIso } from "../../shared/utils/time.js";
|
|
2
|
+
const DEFAULT_INTERVAL_MS = 30_000;
|
|
3
|
+
const DEFAULT_STALE_TIMEOUT_MS = 20 * 60_000;
|
|
4
|
+
const MAX_PLANS_PER_TICK = 50;
|
|
5
|
+
/**
|
|
6
|
+
* 巡视计划后台调度器。
|
|
7
|
+
*
|
|
8
|
+
* 第一版只做两件事:
|
|
9
|
+
* 1. 周期扫描已到期的计划
|
|
10
|
+
* 2. 为到期计划登记一条巡视运行记录,并推进下一次触发时间
|
|
11
|
+
*/
|
|
12
|
+
export class PatrolScheduler {
|
|
13
|
+
patrolPlanService;
|
|
14
|
+
patrolRunService;
|
|
15
|
+
patrolExecutionService;
|
|
16
|
+
intervalMs;
|
|
17
|
+
staleTimeoutMs;
|
|
18
|
+
logger;
|
|
19
|
+
now;
|
|
20
|
+
timer = null;
|
|
21
|
+
ticking = false;
|
|
22
|
+
constructor(patrolPlanService, patrolRunService, patrolExecutionService, options = {}) {
|
|
23
|
+
this.patrolPlanService = patrolPlanService;
|
|
24
|
+
this.patrolRunService = patrolRunService;
|
|
25
|
+
this.patrolExecutionService = patrolExecutionService;
|
|
26
|
+
this.intervalMs = options.intervalMs ?? DEFAULT_INTERVAL_MS;
|
|
27
|
+
this.staleTimeoutMs = options.staleTimeoutMs ?? DEFAULT_STALE_TIMEOUT_MS;
|
|
28
|
+
this.logger = options.logger ?? console;
|
|
29
|
+
this.now = options.now ?? nowIso;
|
|
30
|
+
}
|
|
31
|
+
start() {
|
|
32
|
+
if (this.timer) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
void this.tick();
|
|
36
|
+
this.timer = setInterval(() => {
|
|
37
|
+
void this.tick();
|
|
38
|
+
}, this.intervalMs);
|
|
39
|
+
this.timer.unref?.();
|
|
40
|
+
}
|
|
41
|
+
async dispose() {
|
|
42
|
+
if (this.timer) {
|
|
43
|
+
clearInterval(this.timer);
|
|
44
|
+
this.timer = null;
|
|
45
|
+
}
|
|
46
|
+
while (this.ticking) {
|
|
47
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async runOnce() {
|
|
51
|
+
await this.tick();
|
|
52
|
+
}
|
|
53
|
+
async tick() {
|
|
54
|
+
if (this.ticking) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.ticking = true;
|
|
58
|
+
try {
|
|
59
|
+
const referenceAt = this.now();
|
|
60
|
+
const plans = this.patrolPlanService.listDuePlans(referenceAt, MAX_PLANS_PER_TICK);
|
|
61
|
+
for (const plan of plans) {
|
|
62
|
+
try {
|
|
63
|
+
const expiredRuns = this.patrolRunService.expireStaleRunningRuns(plan.projectId, {
|
|
64
|
+
referenceAt,
|
|
65
|
+
staleTimeoutMs: this.staleTimeoutMs,
|
|
66
|
+
summary: "巡视执行超过调度容忍时长,系统已自动终止并标记失败"
|
|
67
|
+
});
|
|
68
|
+
if (expiredRuns.length > 0) {
|
|
69
|
+
this.logger.error("[patrol-scheduler] stale runs reclaimed", {
|
|
70
|
+
projectId: plan.projectId,
|
|
71
|
+
runIds: expiredRuns.map((run) => run.id)
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (this.patrolRunService.hasRunningRun(plan.projectId)) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const run = this.patrolRunService.startRun(plan.projectId, {
|
|
78
|
+
planId: plan.id,
|
|
79
|
+
triggeredBy: "scheduler",
|
|
80
|
+
triggerRef: `patrol-scheduler:${referenceAt}`
|
|
81
|
+
});
|
|
82
|
+
await this.patrolExecutionService.executeQueuedRun(run.id);
|
|
83
|
+
this.patrolPlanService.markPlanScheduled(plan.projectId, plan.id, referenceAt);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
this.logger.error("[patrol-scheduler] tick plan failed", {
|
|
87
|
+
planId: plan.id,
|
|
88
|
+
projectId: plan.projectId,
|
|
89
|
+
error: error instanceof Error ? error.message : String(error)
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
this.ticking = false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=patrol-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patrol-scheduler.js","sourceRoot":"","sources":["../../../../src/modules/butler/patrol-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ButlerProjectRepository } from "../../storage/repositories/butler-project-repository.js";
|
|
2
|
+
import type { ProjectMemory, ProjectMemoryStatus, ProjectMemoryType } from "../../types/domain.js";
|
|
3
|
+
import type { ProjectMemoryRepository } from "../../storage/repositories/project-memory-repository.js";
|
|
4
|
+
interface InputMemory {
|
|
5
|
+
title?: string;
|
|
6
|
+
scopePath?: string | null;
|
|
7
|
+
content?: string;
|
|
8
|
+
tags?: string[];
|
|
9
|
+
confidence?: number;
|
|
10
|
+
status?: ProjectMemoryStatus;
|
|
11
|
+
memoryType?: ProjectMemoryType;
|
|
12
|
+
evidence?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
export declare class ProjectMemoryService {
|
|
15
|
+
private readonly projectRepository;
|
|
16
|
+
private readonly memoryRepository;
|
|
17
|
+
constructor(projectRepository: ButlerProjectRepository, memoryRepository: ProjectMemoryRepository);
|
|
18
|
+
listMemories(projectId: string, filters?: {
|
|
19
|
+
status?: ProjectMemoryStatus;
|
|
20
|
+
memoryType?: ProjectMemoryType;
|
|
21
|
+
scopePath?: string;
|
|
22
|
+
query?: string;
|
|
23
|
+
}): ProjectMemory[];
|
|
24
|
+
createMemory(projectId: string, input: InputMemory): ProjectMemory;
|
|
25
|
+
updateMemory(projectId: string, memoryId: string, input: InputMemory): ProjectMemory;
|
|
26
|
+
private ensureProject;
|
|
27
|
+
private requireText;
|
|
28
|
+
private normalizeConfidence;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { AppError } from "../../shared/errors/app-error.js";
|
|
2
|
+
import { createId } from "../../shared/utils/id.js";
|
|
3
|
+
import { nowIso } from "../../shared/utils/time.js";
|
|
4
|
+
export class ProjectMemoryService {
|
|
5
|
+
projectRepository;
|
|
6
|
+
memoryRepository;
|
|
7
|
+
constructor(projectRepository, memoryRepository) {
|
|
8
|
+
this.projectRepository = projectRepository;
|
|
9
|
+
this.memoryRepository = memoryRepository;
|
|
10
|
+
}
|
|
11
|
+
listMemories(projectId, filters) {
|
|
12
|
+
this.ensureProject(projectId);
|
|
13
|
+
return this.memoryRepository.listByProject(projectId, filters);
|
|
14
|
+
}
|
|
15
|
+
createMemory(projectId, input) {
|
|
16
|
+
const project = this.ensureProject(projectId);
|
|
17
|
+
const title = this.requireText(input.title, "title");
|
|
18
|
+
const content = this.requireText(input.content, "content");
|
|
19
|
+
const confidence = this.normalizeConfidence(input.confidence);
|
|
20
|
+
const record = {
|
|
21
|
+
id: createId(),
|
|
22
|
+
projectId: project.id,
|
|
23
|
+
sourceButlerSessionId: null,
|
|
24
|
+
sourceCheckpointId: null,
|
|
25
|
+
memoryType: input.memoryType ?? "note",
|
|
26
|
+
title,
|
|
27
|
+
scopePath: input.scopePath ?? null,
|
|
28
|
+
content,
|
|
29
|
+
tags: input.tags ?? [],
|
|
30
|
+
confidence,
|
|
31
|
+
status: input.status ?? "candidate",
|
|
32
|
+
evidence: input.evidence ?? {},
|
|
33
|
+
supersededBy: null,
|
|
34
|
+
createdAt: nowIso(),
|
|
35
|
+
updatedAt: nowIso()
|
|
36
|
+
};
|
|
37
|
+
return this.memoryRepository.create(record);
|
|
38
|
+
}
|
|
39
|
+
updateMemory(projectId, memoryId, input) {
|
|
40
|
+
this.ensureProject(projectId);
|
|
41
|
+
const memory = this.memoryRepository.findById(memoryId);
|
|
42
|
+
if (!memory) {
|
|
43
|
+
throw new AppError({ statusCode: 404, errorCode: "MEMORY_NOT_FOUND", detail: "记忆不存在" });
|
|
44
|
+
}
|
|
45
|
+
if (memory.projectId !== projectId) {
|
|
46
|
+
throw new AppError({
|
|
47
|
+
statusCode: 404,
|
|
48
|
+
errorCode: "MEMORY_NOT_FOUND",
|
|
49
|
+
detail: "当前项目下不存在该记忆"
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
if (input.title) {
|
|
53
|
+
memory.title = this.requireText(input.title, "title");
|
|
54
|
+
}
|
|
55
|
+
if (input.content) {
|
|
56
|
+
memory.content = this.requireText(input.content, "content");
|
|
57
|
+
}
|
|
58
|
+
if (input.scopePath !== undefined) {
|
|
59
|
+
memory.scopePath = input.scopePath;
|
|
60
|
+
}
|
|
61
|
+
memory.tags = input.tags ?? memory.tags;
|
|
62
|
+
memory.confidence = this.normalizeConfidence(input.confidence, memory.confidence);
|
|
63
|
+
memory.status = input.status ?? memory.status;
|
|
64
|
+
memory.memoryType = input.memoryType ?? memory.memoryType;
|
|
65
|
+
memory.evidence = input.evidence ?? memory.evidence;
|
|
66
|
+
memory.updatedAt = nowIso();
|
|
67
|
+
return this.memoryRepository.update(memory);
|
|
68
|
+
}
|
|
69
|
+
ensureProject(projectId) {
|
|
70
|
+
const project = this.projectRepository.findById(projectId);
|
|
71
|
+
if (!project) {
|
|
72
|
+
throw new AppError({ statusCode: 404, errorCode: "BUTLER_PROJECT_NOT_FOUND", detail: "项目不存在" });
|
|
73
|
+
}
|
|
74
|
+
return project;
|
|
75
|
+
}
|
|
76
|
+
requireText(value, field) {
|
|
77
|
+
const normalized = value?.trim();
|
|
78
|
+
if (!normalized) {
|
|
79
|
+
throw new AppError({
|
|
80
|
+
statusCode: 400,
|
|
81
|
+
errorCode: "INVALID_INPUT",
|
|
82
|
+
detail: `${field} 不能为空`,
|
|
83
|
+
field
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return normalized;
|
|
87
|
+
}
|
|
88
|
+
normalizeConfidence(value, fallback = 0.5) {
|
|
89
|
+
if (value === undefined) {
|
|
90
|
+
return fallback;
|
|
91
|
+
}
|
|
92
|
+
if (Number.isNaN(value) || value < 0 || value > 1) {
|
|
93
|
+
throw new AppError({
|
|
94
|
+
statusCode: 400,
|
|
95
|
+
errorCode: "INVALID_INPUT",
|
|
96
|
+
detail: "confidence 必须在 0 到 1 之间",
|
|
97
|
+
field: "confidence"
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return value;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=project-memory-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-memory-service.js","sourceRoot":"","sources":["../../../../src/modules/butler/project-memory-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { SessionHistoryService } from "../sessions/session-history-service.js";
|
|
2
|
+
import type { SessionLiveRuntimeService } from "../sessions/session-live-runtime-service.js";
|
|
3
|
+
export interface PatrolStructuredOutput {
|
|
4
|
+
summary: string | null;
|
|
5
|
+
riskLevel: "low" | "medium" | "high" | null;
|
|
6
|
+
suggestions: string[];
|
|
7
|
+
progressState: "unknown" | "working" | "blocked" | "done";
|
|
8
|
+
riskFlags: string[];
|
|
9
|
+
nextActions: string[];
|
|
10
|
+
rawJson: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface StartPatrolSessionInput {
|
|
13
|
+
workspaceId: string;
|
|
14
|
+
userId: string;
|
|
15
|
+
providerId: "codex" | "claude-code";
|
|
16
|
+
prompt: string;
|
|
17
|
+
model: string | null;
|
|
18
|
+
reasoningLevel: string | null;
|
|
19
|
+
permissionMode: string | null;
|
|
20
|
+
}
|
|
21
|
+
export interface PatrolSessionLaunchResult {
|
|
22
|
+
sessionId: string;
|
|
23
|
+
provider: string;
|
|
24
|
+
providerSessionId: string;
|
|
25
|
+
acceptedAt: string;
|
|
26
|
+
}
|
|
27
|
+
export interface PatrolSessionResult {
|
|
28
|
+
assistantMessages: string[];
|
|
29
|
+
latestAssistantMessage: string | null;
|
|
30
|
+
structured: PatrolStructuredOutput;
|
|
31
|
+
}
|
|
32
|
+
export interface PatrolProviderAdapter {
|
|
33
|
+
readonly providerId: "codex" | "claude-code";
|
|
34
|
+
startPatrolSession(input: StartPatrolSessionInput): Promise<PatrolSessionLaunchResult>;
|
|
35
|
+
waitForSessionTerminal(sessionId: string): Promise<void>;
|
|
36
|
+
readPatrolResult(sessionId: string): Promise<PatrolSessionResult>;
|
|
37
|
+
}
|
|
38
|
+
export declare class ProviderAdapterRegistry {
|
|
39
|
+
private readonly adapters;
|
|
40
|
+
constructor(adapters: PatrolProviderAdapter[]);
|
|
41
|
+
get(providerId: "codex" | "claude-code"): PatrolProviderAdapter;
|
|
42
|
+
}
|
|
43
|
+
interface RuntimePatrolProviderAdapterOptions {
|
|
44
|
+
waitTimeoutMs?: number;
|
|
45
|
+
waitPollIntervalMs?: number;
|
|
46
|
+
}
|
|
47
|
+
export declare class RuntimePatrolProviderAdapter implements PatrolProviderAdapter {
|
|
48
|
+
readonly providerId: "codex" | "claude-code";
|
|
49
|
+
private readonly sessionLiveRuntimeService;
|
|
50
|
+
private readonly sessionHistoryService;
|
|
51
|
+
private readonly waitTimeoutMs;
|
|
52
|
+
private readonly waitPollIntervalMs;
|
|
53
|
+
private readonly sessionOwnerBySessionId;
|
|
54
|
+
constructor(providerId: "codex" | "claude-code", sessionLiveRuntimeService: SessionLiveRuntimeService, sessionHistoryService: SessionHistoryService, options?: RuntimePatrolProviderAdapterOptions);
|
|
55
|
+
startPatrolSession(input: StartPatrolSessionInput): Promise<PatrolSessionLaunchResult>;
|
|
56
|
+
waitForSessionTerminal(sessionId: string): Promise<void>;
|
|
57
|
+
readPatrolResult(sessionId: string): Promise<PatrolSessionResult>;
|
|
58
|
+
private waitForTerminalWithSubscription;
|
|
59
|
+
private readRuntimeState;
|
|
60
|
+
}
|
|
61
|
+
export {};
|