@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 @@
|
|
|
1
|
+
{"version":3,"file":"session-message-origin-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/session-message-origin-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,8BAA8B;IACZ;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,MAAM,CAAC,MAAkC;QACvC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;4CAeoC,CACrC;aACA,GAAG,CACF,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;IACN,CAAC;IAED,gBAAgB,CACd,SAAiB,EACjB,eAAuB,EACvB,SAAiB,EACjB,SAAiB;QAEjB,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;qCAI6B,CAC9B;aACA,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED,0BAA0B,CAAC,SAAiB,EAAE,UAAoB;QAChE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;;;;;;;;;gCAWwB,YAAY;kCACV,CAC3B;aACA,GAAG,CAAC,SAAS,EAAE,GAAG,UAAU,CAA8B,CAAC;QAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,kCAAkC,CAAC,SAAiB,EAAE,QAAkB;QACtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;;;;;;;;;;6BAYqB,YAAY;iDACQ,CAC1C;aACA,GAAG,CAAC,SAAS,EAAE,GAAG,QAAQ,CAA8B,CAAC;QAE5D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF;AAaD,SAAS,MAAM,CAAC,GAA4B;IAC1C,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
export interface VerificationRunRecord {
|
|
3
|
+
id: string;
|
|
4
|
+
projectId: string;
|
|
5
|
+
butlerSessionId: string | null;
|
|
6
|
+
sourcePatrolRunId: string | null;
|
|
7
|
+
verificationType: string;
|
|
8
|
+
status: string;
|
|
9
|
+
targetRef: string | null;
|
|
10
|
+
specJson: string;
|
|
11
|
+
artifactRefsJson: string;
|
|
12
|
+
resultJson: string;
|
|
13
|
+
summary: string | null;
|
|
14
|
+
startedAt: string | null;
|
|
15
|
+
finishedAt: string | null;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class VerificationRunRepository {
|
|
19
|
+
private readonly db;
|
|
20
|
+
constructor(db: Database.Database);
|
|
21
|
+
create(record: VerificationRunRecord): VerificationRunRecord;
|
|
22
|
+
listByProject(projectId: string, filters?: {
|
|
23
|
+
status?: string;
|
|
24
|
+
verificationType?: string;
|
|
25
|
+
}): VerificationRunRecord[];
|
|
26
|
+
findById(id: string): VerificationRunRecord | null;
|
|
27
|
+
listRunningByProject(projectId: string): VerificationRunRecord[];
|
|
28
|
+
update(record: VerificationRunRecord): VerificationRunRecord | null;
|
|
29
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
export class VerificationRunRepository {
|
|
2
|
+
db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
create(record) {
|
|
7
|
+
this.db
|
|
8
|
+
.prepare(`INSERT INTO verification_runs (
|
|
9
|
+
id,
|
|
10
|
+
project_id,
|
|
11
|
+
butler_session_id,
|
|
12
|
+
source_patrol_run_id,
|
|
13
|
+
verification_type,
|
|
14
|
+
status,
|
|
15
|
+
target_ref,
|
|
16
|
+
spec_json,
|
|
17
|
+
artifact_refs_json,
|
|
18
|
+
result_json,
|
|
19
|
+
summary,
|
|
20
|
+
started_at,
|
|
21
|
+
finished_at,
|
|
22
|
+
created_at
|
|
23
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
24
|
+
.run(record.id, record.projectId, record.butlerSessionId, record.sourcePatrolRunId, record.verificationType, record.status, record.targetRef, record.specJson, record.artifactRefsJson, record.resultJson, record.summary, record.startedAt, record.finishedAt, record.createdAt);
|
|
25
|
+
return record;
|
|
26
|
+
}
|
|
27
|
+
listByProject(projectId, filters) {
|
|
28
|
+
const conditions = ["project_id = ?"];
|
|
29
|
+
const values = [projectId];
|
|
30
|
+
if (filters?.status) {
|
|
31
|
+
conditions.push("status = ?");
|
|
32
|
+
values.push(filters.status);
|
|
33
|
+
}
|
|
34
|
+
if (filters?.verificationType) {
|
|
35
|
+
conditions.push("verification_type = ?");
|
|
36
|
+
values.push(filters.verificationType);
|
|
37
|
+
}
|
|
38
|
+
return this.db
|
|
39
|
+
.prepare(`SELECT
|
|
40
|
+
id,
|
|
41
|
+
project_id,
|
|
42
|
+
butler_session_id,
|
|
43
|
+
source_patrol_run_id,
|
|
44
|
+
verification_type,
|
|
45
|
+
status,
|
|
46
|
+
target_ref,
|
|
47
|
+
spec_json,
|
|
48
|
+
artifact_refs_json,
|
|
49
|
+
result_json,
|
|
50
|
+
summary,
|
|
51
|
+
started_at,
|
|
52
|
+
finished_at,
|
|
53
|
+
created_at
|
|
54
|
+
FROM verification_runs
|
|
55
|
+
WHERE ${conditions.join(" AND ")}
|
|
56
|
+
ORDER BY created_at DESC`)
|
|
57
|
+
.all(...values)
|
|
58
|
+
.map((row) => row);
|
|
59
|
+
}
|
|
60
|
+
findById(id) {
|
|
61
|
+
const row = this.db
|
|
62
|
+
.prepare(`SELECT
|
|
63
|
+
id,
|
|
64
|
+
project_id,
|
|
65
|
+
butler_session_id,
|
|
66
|
+
source_patrol_run_id,
|
|
67
|
+
verification_type,
|
|
68
|
+
status,
|
|
69
|
+
target_ref,
|
|
70
|
+
spec_json,
|
|
71
|
+
artifact_refs_json,
|
|
72
|
+
result_json,
|
|
73
|
+
summary,
|
|
74
|
+
started_at,
|
|
75
|
+
finished_at,
|
|
76
|
+
created_at
|
|
77
|
+
FROM verification_runs
|
|
78
|
+
WHERE id = ?`)
|
|
79
|
+
.get(id);
|
|
80
|
+
return row ?? null;
|
|
81
|
+
}
|
|
82
|
+
listRunningByProject(projectId) {
|
|
83
|
+
return this.db
|
|
84
|
+
.prepare(`SELECT
|
|
85
|
+
id,
|
|
86
|
+
project_id,
|
|
87
|
+
butler_session_id,
|
|
88
|
+
source_patrol_run_id,
|
|
89
|
+
verification_type,
|
|
90
|
+
status,
|
|
91
|
+
target_ref,
|
|
92
|
+
spec_json,
|
|
93
|
+
artifact_refs_json,
|
|
94
|
+
result_json,
|
|
95
|
+
summary,
|
|
96
|
+
started_at,
|
|
97
|
+
finished_at,
|
|
98
|
+
created_at
|
|
99
|
+
FROM verification_runs
|
|
100
|
+
WHERE project_id = ?
|
|
101
|
+
AND status IN ('queued', 'running')
|
|
102
|
+
ORDER BY created_at DESC`)
|
|
103
|
+
.all(projectId)
|
|
104
|
+
.map((row) => row);
|
|
105
|
+
}
|
|
106
|
+
update(record) {
|
|
107
|
+
this.db
|
|
108
|
+
.prepare(`UPDATE verification_runs
|
|
109
|
+
SET butler_session_id = ?,
|
|
110
|
+
source_patrol_run_id = ?,
|
|
111
|
+
verification_type = ?,
|
|
112
|
+
status = ?,
|
|
113
|
+
target_ref = ?,
|
|
114
|
+
spec_json = ?,
|
|
115
|
+
artifact_refs_json = ?,
|
|
116
|
+
result_json = ?,
|
|
117
|
+
summary = ?,
|
|
118
|
+
started_at = ?,
|
|
119
|
+
finished_at = ?
|
|
120
|
+
WHERE id = ?`)
|
|
121
|
+
.run(record.butlerSessionId, record.sourcePatrolRunId, record.verificationType, record.status, record.targetRef, record.specJson, record.artifactRefsJson, record.resultJson, record.summary, record.startedAt, record.finishedAt, record.id);
|
|
122
|
+
return this.findById(record.id);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=verification-run-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-run-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/verification-run-repository.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,yBAAyB;IACP;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,MAAM,CAAC,MAA6B;QAClC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;6DAeqD,CACtD;aACA,GAAG,CACF,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CACX,SAAiB,EACjB,OAAwD;QAExD,MAAM,UAAU,GAAa,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,MAAM,GAAc,CAAC,SAAS,CAAC,CAAC;QAEtC,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAC9B,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;;;;;;;;;iBAgBS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;kCACP,CAC3B;aACA,GAAG,CAAC,GAAG,MAAM,CAAC;aACd,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAA4B,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;;;;;;;;;;;;;sBAgBc,CACf;aACA,GAAG,CAAC,EAAE,CAAsC,CAAC;QAEhD,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAED,oBAAoB,CAAC,SAAiB;QACpC,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;;;;;;;;;;;kCAkB0B,CAC3B;aACA,GAAG,CAAC,SAAS,CAAC;aACd,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAA4B,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,MAA6B;QAClC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;sBAYc,CACf;aACA,GAAG,CACF,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,EAAE,CACV,CAAC;QAEJ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -21,6 +21,9 @@ export function createDatabaseClient(databasePath) {
|
|
|
21
21
|
ensureTerminalCommandTemplatePortColumn(db);
|
|
22
22
|
ensureTerminalCommandTemplateRuntimeTypeColumn(db);
|
|
23
23
|
ensureTerminalCommandTemplateProxySchema(db);
|
|
24
|
+
ensureButlerProfileSchema(db);
|
|
25
|
+
ensureButlerFollowUpTaskSchema(db);
|
|
26
|
+
ensureButlerSessionSummarySchema(db);
|
|
24
27
|
return {
|
|
25
28
|
db,
|
|
26
29
|
close: () => db.close()
|
|
@@ -35,6 +38,42 @@ function ensureWorkspaceRemovalColumn(db) {
|
|
|
35
38
|
}
|
|
36
39
|
db.exec("ALTER TABLE workspaces ADD COLUMN removed_at TEXT");
|
|
37
40
|
}
|
|
41
|
+
function ensureButlerProfileSchema(db) {
|
|
42
|
+
const columns = db
|
|
43
|
+
.prepare("PRAGMA table_info(butler_profiles)")
|
|
44
|
+
.all();
|
|
45
|
+
if (columns.some((column) => column.name === "display_name")) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
db.exec("ALTER TABLE butler_profiles ADD COLUMN display_name TEXT NOT NULL DEFAULT '代码助手'");
|
|
49
|
+
}
|
|
50
|
+
function ensureButlerFollowUpTaskSchema(db) {
|
|
51
|
+
const columns = db
|
|
52
|
+
.prepare("PRAGMA table_info(butler_follow_up_tasks)")
|
|
53
|
+
.all();
|
|
54
|
+
const columnNames = new Set(columns.map((column) => column.name));
|
|
55
|
+
if (columns.length === 0) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (!columnNames.has("completion_criteria")) {
|
|
59
|
+
db.exec("ALTER TABLE butler_follow_up_tasks ADD COLUMN completion_criteria TEXT NOT NULL DEFAULT ''");
|
|
60
|
+
}
|
|
61
|
+
if (!columnNames.has("max_auto_continue_count")) {
|
|
62
|
+
db.exec("ALTER TABLE butler_follow_up_tasks ADD COLUMN max_auto_continue_count INTEGER NOT NULL DEFAULT 5");
|
|
63
|
+
}
|
|
64
|
+
if (!columnNames.has("rounds_json")) {
|
|
65
|
+
db.exec("ALTER TABLE butler_follow_up_tasks ADD COLUMN rounds_json TEXT NOT NULL DEFAULT '[]'");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function ensureButlerSessionSummarySchema(db) {
|
|
69
|
+
const columns = db
|
|
70
|
+
.prepare("PRAGMA table_info(butler_session_summary_states)")
|
|
71
|
+
.all();
|
|
72
|
+
if (columns.length === 0 || columns.some((column) => column.name === "last_summarized_sequence")) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
db.exec("ALTER TABLE butler_session_summary_states ADD COLUMN last_summarized_sequence INTEGER");
|
|
76
|
+
}
|
|
38
77
|
function ensureSessionProviderSchema(db) {
|
|
39
78
|
const bindingSql = readTableSql(db, "session_bindings");
|
|
40
79
|
const indexSql = readTableSql(db, "session_indices");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/storage/sqlite/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAOtC,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEnD,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChB,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACjC,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAChC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC7B,+BAA+B,CAAC,EAAE,CAAC,CAAC;IACpC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACjC,8BAA8B,CAAC,EAAE,CAAC,CAAC;IACnC,qCAAqC,CAAC,EAAE,CAAC,CAAC;IAC1C,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAChC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5B,uCAAuC,CAAC,EAAE,CAAC,CAAC;IAC5C,8CAA8C,CAAC,EAAE,CAAC,CAAC;IACnD,wCAAwC,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/storage/sqlite/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -163,6 +163,24 @@ CREATE INDEX IF NOT EXISTS idx_session_message_attachments_message
|
|
|
163
163
|
CREATE INDEX IF NOT EXISTS idx_session_message_attachments_client_request
|
|
164
164
|
ON session_message_attachments(session_id, client_request_id);
|
|
165
165
|
|
|
166
|
+
CREATE TABLE IF NOT EXISTS session_message_origins (
|
|
167
|
+
session_id TEXT NOT NULL,
|
|
168
|
+
client_request_id TEXT NOT NULL,
|
|
169
|
+
message_id TEXT,
|
|
170
|
+
origin TEXT NOT NULL CHECK (origin IN ('butler_proxy', 'system')),
|
|
171
|
+
origin_ref TEXT,
|
|
172
|
+
content TEXT NOT NULL,
|
|
173
|
+
created_at TEXT NOT NULL,
|
|
174
|
+
updated_at TEXT NOT NULL,
|
|
175
|
+
PRIMARY KEY (session_id, client_request_id),
|
|
176
|
+
FOREIGN KEY (session_id) REFERENCES session_bindings(session_id)
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
CREATE INDEX IF NOT EXISTS idx_session_message_origins_message
|
|
180
|
+
ON session_message_origins(session_id, message_id);
|
|
181
|
+
CREATE INDEX IF NOT EXISTS idx_session_message_origins_origin
|
|
182
|
+
ON session_message_origins(session_id, origin, updated_at DESC);
|
|
183
|
+
|
|
166
184
|
CREATE TABLE IF NOT EXISTS session_send_queue (
|
|
167
185
|
id TEXT PRIMARY KEY,
|
|
168
186
|
session_id TEXT NOT NULL,
|
|
@@ -367,6 +385,312 @@ CREATE TABLE IF NOT EXISTS terminal_command_templates (
|
|
|
367
385
|
CREATE INDEX IF NOT EXISTS idx_terminal_templates_workspace_id
|
|
368
386
|
ON terminal_command_templates(workspace_id);
|
|
369
387
|
|
|
388
|
+
CREATE TABLE IF NOT EXISTS butler_profiles (
|
|
389
|
+
id TEXT PRIMARY KEY CHECK (id = 'default'),
|
|
390
|
+
display_name TEXT NOT NULL,
|
|
391
|
+
provider_id TEXT NOT NULL CHECK (provider_id IN ('codex', 'claude-code')),
|
|
392
|
+
workspace_path TEXT NOT NULL,
|
|
393
|
+
agents_mode TEXT NOT NULL CHECK (agents_mode IN ('inline', 'file')),
|
|
394
|
+
agents_file_path TEXT,
|
|
395
|
+
agents_content TEXT NOT NULL,
|
|
396
|
+
persona_json TEXT NOT NULL,
|
|
397
|
+
focus_json TEXT NOT NULL,
|
|
398
|
+
initialized_at TEXT NOT NULL,
|
|
399
|
+
updated_at TEXT NOT NULL
|
|
400
|
+
);
|
|
401
|
+
|
|
402
|
+
CREATE TABLE IF NOT EXISTS butler_control_sessions (
|
|
403
|
+
id TEXT PRIMARY KEY,
|
|
404
|
+
provider_id TEXT NOT NULL CHECK (provider_id IN ('codex', 'claude-code')),
|
|
405
|
+
session_id TEXT NOT NULL UNIQUE,
|
|
406
|
+
status TEXT NOT NULL CHECK (status IN ('idle', 'running', 'failed', 'closed')),
|
|
407
|
+
last_context_version TEXT,
|
|
408
|
+
last_summary TEXT,
|
|
409
|
+
created_at TEXT NOT NULL,
|
|
410
|
+
updated_at TEXT NOT NULL,
|
|
411
|
+
FOREIGN KEY (session_id) REFERENCES session_bindings(session_id)
|
|
412
|
+
);
|
|
413
|
+
|
|
414
|
+
CREATE INDEX IF NOT EXISTS idx_butler_control_sessions_provider
|
|
415
|
+
ON butler_control_sessions(provider_id, updated_at DESC, created_at DESC);
|
|
416
|
+
|
|
417
|
+
CREATE TABLE IF NOT EXISTS butler_control_events (
|
|
418
|
+
id TEXT PRIMARY KEY,
|
|
419
|
+
control_session_id TEXT NOT NULL,
|
|
420
|
+
kind TEXT NOT NULL CHECK (kind IN ('action')),
|
|
421
|
+
action_type TEXT NOT NULL CHECK (
|
|
422
|
+
action_type IN ('open-project', 'resume-session', 'start-patrol', 'start-verification')
|
|
423
|
+
),
|
|
424
|
+
status TEXT NOT NULL CHECK (status IN ('succeeded', 'failed')),
|
|
425
|
+
title TEXT NOT NULL,
|
|
426
|
+
content TEXT NOT NULL,
|
|
427
|
+
related_refs_json TEXT NOT NULL,
|
|
428
|
+
created_at TEXT NOT NULL,
|
|
429
|
+
FOREIGN KEY (control_session_id) REFERENCES butler_control_sessions(id) ON DELETE CASCADE
|
|
430
|
+
);
|
|
431
|
+
|
|
432
|
+
CREATE INDEX IF NOT EXISTS idx_butler_control_events_session_created_at
|
|
433
|
+
ON butler_control_events(control_session_id, created_at ASC);
|
|
434
|
+
|
|
435
|
+
CREATE TABLE IF NOT EXISTS butler_inbox_items (
|
|
436
|
+
id TEXT PRIMARY KEY,
|
|
437
|
+
project_id TEXT NOT NULL,
|
|
438
|
+
item_type TEXT NOT NULL CHECK (item_type IN ('bug', 'feature', 'change', 'task')),
|
|
439
|
+
title TEXT NOT NULL,
|
|
440
|
+
content TEXT NOT NULL,
|
|
441
|
+
priority TEXT NOT NULL CHECK (priority IN ('low', 'medium', 'high')),
|
|
442
|
+
status TEXT NOT NULL CHECK (status IN ('pending', 'in_progress', 'closed')),
|
|
443
|
+
created_at TEXT NOT NULL,
|
|
444
|
+
updated_at TEXT NOT NULL,
|
|
445
|
+
closed_at TEXT,
|
|
446
|
+
FOREIGN KEY (project_id) REFERENCES butler_projects(id) ON DELETE CASCADE
|
|
447
|
+
);
|
|
448
|
+
|
|
449
|
+
CREATE INDEX IF NOT EXISTS idx_butler_inbox_items_project_updated_at
|
|
450
|
+
ON butler_inbox_items(project_id, updated_at DESC, created_at DESC);
|
|
451
|
+
CREATE INDEX IF NOT EXISTS idx_butler_inbox_items_status_updated_at
|
|
452
|
+
ON butler_inbox_items(status, updated_at DESC, created_at DESC);
|
|
453
|
+
|
|
454
|
+
CREATE TABLE IF NOT EXISTS butler_notification_archives (
|
|
455
|
+
user_id TEXT NOT NULL,
|
|
456
|
+
notification_id TEXT NOT NULL,
|
|
457
|
+
archived_at TEXT NOT NULL,
|
|
458
|
+
updated_at TEXT NOT NULL,
|
|
459
|
+
PRIMARY KEY (user_id, notification_id),
|
|
460
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id) ON DELETE CASCADE
|
|
461
|
+
);
|
|
462
|
+
|
|
463
|
+
CREATE INDEX IF NOT EXISTS idx_butler_notification_archives_user_updated_at
|
|
464
|
+
ON butler_notification_archives(user_id, updated_at DESC);
|
|
465
|
+
|
|
466
|
+
CREATE TABLE IF NOT EXISTS butler_projects (
|
|
467
|
+
id TEXT PRIMARY KEY,
|
|
468
|
+
workspace_id TEXT NOT NULL,
|
|
469
|
+
name TEXT NOT NULL,
|
|
470
|
+
repo_root TEXT NOT NULL,
|
|
471
|
+
default_provider TEXT,
|
|
472
|
+
instruction_profile_id TEXT,
|
|
473
|
+
approval_mode TEXT NOT NULL CHECK (approval_mode IN ('readonly', 'controlled', 'auto')),
|
|
474
|
+
lifecycle_status TEXT NOT NULL CHECK (lifecycle_status IN ('active', 'paused', 'archived')),
|
|
475
|
+
risk_level TEXT NOT NULL CHECK (risk_level IN ('low', 'medium', 'high')),
|
|
476
|
+
config_json TEXT NOT NULL,
|
|
477
|
+
last_patrol_at TEXT,
|
|
478
|
+
last_verification_at TEXT,
|
|
479
|
+
created_at TEXT NOT NULL,
|
|
480
|
+
updated_at TEXT NOT NULL,
|
|
481
|
+
archived_at TEXT,
|
|
482
|
+
FOREIGN KEY (workspace_id) REFERENCES workspaces(id),
|
|
483
|
+
UNIQUE (workspace_id, repo_root)
|
|
484
|
+
);
|
|
485
|
+
|
|
486
|
+
CREATE INDEX IF NOT EXISTS idx_butler_projects_workspace_id
|
|
487
|
+
ON butler_projects(workspace_id);
|
|
488
|
+
CREATE INDEX IF NOT EXISTS idx_butler_projects_status
|
|
489
|
+
ON butler_projects(lifecycle_status, updated_at DESC);
|
|
490
|
+
|
|
491
|
+
CREATE TABLE IF NOT EXISTS butler_sessions (
|
|
492
|
+
id TEXT PRIMARY KEY,
|
|
493
|
+
project_id TEXT NOT NULL,
|
|
494
|
+
session_id TEXT NOT NULL UNIQUE,
|
|
495
|
+
role TEXT NOT NULL CHECK (role IN ('patrol', 'execution', 'verification', 'adhoc')),
|
|
496
|
+
ownership_mode TEXT NOT NULL CHECK (ownership_mode IN ('managed', 'observed')),
|
|
497
|
+
status TEXT NOT NULL CHECK (status IN ('idle', 'running', 'blocked', 'failed', 'closed')),
|
|
498
|
+
last_summary TEXT,
|
|
499
|
+
last_checkpoint_at TEXT,
|
|
500
|
+
created_at TEXT NOT NULL,
|
|
501
|
+
updated_at TEXT NOT NULL,
|
|
502
|
+
FOREIGN KEY (project_id) REFERENCES butler_projects(id) ON DELETE CASCADE,
|
|
503
|
+
FOREIGN KEY (session_id) REFERENCES session_bindings(session_id)
|
|
504
|
+
);
|
|
505
|
+
|
|
506
|
+
CREATE INDEX IF NOT EXISTS idx_butler_sessions_project_id
|
|
507
|
+
ON butler_sessions(project_id, updated_at DESC);
|
|
508
|
+
CREATE INDEX IF NOT EXISTS idx_butler_sessions_status
|
|
509
|
+
ON butler_sessions(status, updated_at DESC);
|
|
510
|
+
|
|
511
|
+
CREATE TABLE IF NOT EXISTS butler_follow_up_tasks (
|
|
512
|
+
id TEXT PRIMARY KEY,
|
|
513
|
+
project_id TEXT NOT NULL,
|
|
514
|
+
butler_session_id TEXT NOT NULL,
|
|
515
|
+
session_id TEXT NOT NULL,
|
|
516
|
+
created_by_user_id TEXT NOT NULL,
|
|
517
|
+
objective TEXT NOT NULL,
|
|
518
|
+
completion_criteria TEXT NOT NULL DEFAULT '',
|
|
519
|
+
max_auto_continue_count INTEGER NOT NULL DEFAULT 5,
|
|
520
|
+
status TEXT NOT NULL CHECK (
|
|
521
|
+
status IN ('active', 'waiting_user', 'completed', 'failed', 'cancelled')
|
|
522
|
+
),
|
|
523
|
+
check_interval_seconds INTEGER NOT NULL,
|
|
524
|
+
last_checked_at TEXT,
|
|
525
|
+
next_check_at TEXT,
|
|
526
|
+
last_observed_running_state TEXT,
|
|
527
|
+
last_observed_message_at TEXT,
|
|
528
|
+
last_observed_message_count INTEGER NOT NULL DEFAULT 0,
|
|
529
|
+
last_automation_summary TEXT,
|
|
530
|
+
last_automation_at TEXT,
|
|
531
|
+
auto_continue_count INTEGER NOT NULL DEFAULT 0,
|
|
532
|
+
waiting_reason TEXT,
|
|
533
|
+
rounds_json TEXT NOT NULL DEFAULT '[]',
|
|
534
|
+
created_at TEXT NOT NULL,
|
|
535
|
+
updated_at TEXT NOT NULL,
|
|
536
|
+
completed_at TEXT,
|
|
537
|
+
FOREIGN KEY (project_id) REFERENCES butler_projects(id) ON DELETE CASCADE,
|
|
538
|
+
FOREIGN KEY (butler_session_id) REFERENCES butler_sessions(id) ON DELETE CASCADE,
|
|
539
|
+
FOREIGN KEY (session_id) REFERENCES session_bindings(session_id) ON DELETE CASCADE,
|
|
540
|
+
FOREIGN KEY (created_by_user_id) REFERENCES auth_users(id)
|
|
541
|
+
);
|
|
542
|
+
|
|
543
|
+
CREATE INDEX IF NOT EXISTS idx_butler_follow_up_tasks_status
|
|
544
|
+
ON butler_follow_up_tasks(status, next_check_at ASC, updated_at DESC);
|
|
545
|
+
CREATE INDEX IF NOT EXISTS idx_butler_follow_up_tasks_session
|
|
546
|
+
ON butler_follow_up_tasks(butler_session_id, status, updated_at DESC);
|
|
547
|
+
|
|
548
|
+
CREATE TABLE IF NOT EXISTS butler_session_summary_states (
|
|
549
|
+
butler_session_id TEXT PRIMARY KEY,
|
|
550
|
+
source_message_count INTEGER NOT NULL DEFAULT 0,
|
|
551
|
+
source_last_message_at TEXT,
|
|
552
|
+
last_summarized_at TEXT,
|
|
553
|
+
last_summarized_sequence INTEGER,
|
|
554
|
+
debounce_until TEXT,
|
|
555
|
+
status TEXT NOT NULL CHECK (status IN ('idle', 'scheduled', 'running', 'failed')),
|
|
556
|
+
error_detail TEXT,
|
|
557
|
+
updated_at TEXT NOT NULL,
|
|
558
|
+
FOREIGN KEY (butler_session_id) REFERENCES butler_sessions(id) ON DELETE CASCADE
|
|
559
|
+
);
|
|
560
|
+
|
|
561
|
+
CREATE INDEX IF NOT EXISTS idx_butler_session_summary_states_status
|
|
562
|
+
ON butler_session_summary_states(status, debounce_until ASC, updated_at ASC);
|
|
563
|
+
|
|
564
|
+
CREATE TABLE IF NOT EXISTS session_checkpoints (
|
|
565
|
+
id TEXT PRIMARY KEY,
|
|
566
|
+
butler_session_id TEXT NOT NULL,
|
|
567
|
+
checkpoint_seq INTEGER NOT NULL,
|
|
568
|
+
source_kind TEXT NOT NULL CHECK (
|
|
569
|
+
source_kind IN ('snapshot', 'summary', 'verification', 'manual')
|
|
570
|
+
),
|
|
571
|
+
progress_state TEXT NOT NULL CHECK (
|
|
572
|
+
progress_state IN ('unknown', 'working', 'blocked', 'done')
|
|
573
|
+
),
|
|
574
|
+
summary TEXT NOT NULL,
|
|
575
|
+
risk_flags_json TEXT NOT NULL,
|
|
576
|
+
next_action_json TEXT NOT NULL,
|
|
577
|
+
captured_at TEXT NOT NULL,
|
|
578
|
+
FOREIGN KEY (butler_session_id) REFERENCES butler_sessions(id) ON DELETE CASCADE,
|
|
579
|
+
UNIQUE (butler_session_id, checkpoint_seq)
|
|
580
|
+
);
|
|
581
|
+
|
|
582
|
+
CREATE INDEX IF NOT EXISTS idx_session_checkpoints_session_id
|
|
583
|
+
ON session_checkpoints(butler_session_id, checkpoint_seq DESC);
|
|
584
|
+
CREATE INDEX IF NOT EXISTS idx_session_checkpoints_captured_at
|
|
585
|
+
ON session_checkpoints(captured_at DESC);
|
|
586
|
+
|
|
587
|
+
CREATE TABLE IF NOT EXISTS project_memories (
|
|
588
|
+
id TEXT PRIMARY KEY,
|
|
589
|
+
project_id TEXT NOT NULL,
|
|
590
|
+
source_butler_session_id TEXT,
|
|
591
|
+
source_checkpoint_id TEXT,
|
|
592
|
+
memory_type TEXT NOT NULL CHECK (
|
|
593
|
+
memory_type IN ('arch', 'rule', 'decision', 'incident', 'verify', 'note')
|
|
594
|
+
),
|
|
595
|
+
title TEXT NOT NULL,
|
|
596
|
+
scope_path TEXT,
|
|
597
|
+
content TEXT NOT NULL,
|
|
598
|
+
tags_json TEXT NOT NULL,
|
|
599
|
+
confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),
|
|
600
|
+
status TEXT NOT NULL CHECK (
|
|
601
|
+
status IN ('candidate', 'active', 'superseded', 'archived')
|
|
602
|
+
),
|
|
603
|
+
evidence_json TEXT NOT NULL,
|
|
604
|
+
superseded_by TEXT,
|
|
605
|
+
created_at TEXT NOT NULL,
|
|
606
|
+
updated_at TEXT NOT NULL,
|
|
607
|
+
FOREIGN KEY (project_id) REFERENCES butler_projects(id) ON DELETE CASCADE,
|
|
608
|
+
FOREIGN KEY (source_butler_session_id) REFERENCES butler_sessions(id),
|
|
609
|
+
FOREIGN KEY (source_checkpoint_id) REFERENCES session_checkpoints(id)
|
|
610
|
+
);
|
|
611
|
+
|
|
612
|
+
CREATE INDEX IF NOT EXISTS idx_project_memories_project_id
|
|
613
|
+
ON project_memories(project_id, updated_at DESC);
|
|
614
|
+
CREATE INDEX IF NOT EXISTS idx_project_memories_project_status
|
|
615
|
+
ON project_memories(project_id, status, updated_at DESC);
|
|
616
|
+
CREATE INDEX IF NOT EXISTS idx_project_memories_project_scope
|
|
617
|
+
ON project_memories(project_id, scope_path, updated_at DESC);
|
|
618
|
+
|
|
619
|
+
CREATE TABLE IF NOT EXISTS patrol_plans (
|
|
620
|
+
id TEXT PRIMARY KEY,
|
|
621
|
+
project_id TEXT NOT NULL,
|
|
622
|
+
name TEXT NOT NULL,
|
|
623
|
+
trigger_type TEXT NOT NULL CHECK (trigger_type IN ('manual', 'interval', 'cron')),
|
|
624
|
+
trigger_config_json TEXT NOT NULL,
|
|
625
|
+
execution_mode TEXT NOT NULL CHECK (execution_mode IN ('readonly', 'controlled')),
|
|
626
|
+
patrol_scope_json TEXT NOT NULL,
|
|
627
|
+
enabled INTEGER NOT NULL CHECK (enabled IN (0, 1)),
|
|
628
|
+
last_scheduled_at TEXT,
|
|
629
|
+
next_run_at TEXT,
|
|
630
|
+
created_at TEXT NOT NULL,
|
|
631
|
+
updated_at TEXT NOT NULL,
|
|
632
|
+
FOREIGN KEY (project_id) REFERENCES butler_projects(id) ON DELETE CASCADE
|
|
633
|
+
);
|
|
634
|
+
|
|
635
|
+
CREATE INDEX IF NOT EXISTS idx_patrol_plans_project_id
|
|
636
|
+
ON patrol_plans(project_id, updated_at DESC);
|
|
637
|
+
CREATE INDEX IF NOT EXISTS idx_patrol_plans_enabled_next_run_at
|
|
638
|
+
ON patrol_plans(enabled, next_run_at);
|
|
639
|
+
|
|
640
|
+
CREATE TABLE IF NOT EXISTS patrol_runs (
|
|
641
|
+
id TEXT PRIMARY KEY,
|
|
642
|
+
project_id TEXT NOT NULL,
|
|
643
|
+
plan_id TEXT,
|
|
644
|
+
triggered_by TEXT NOT NULL CHECK (triggered_by IN ('scheduler', 'user', 'system')),
|
|
645
|
+
trigger_ref TEXT,
|
|
646
|
+
butler_session_id TEXT,
|
|
647
|
+
status TEXT NOT NULL CHECK (
|
|
648
|
+
status IN ('queued', 'running', 'succeeded', 'failed', 'cancelled')
|
|
649
|
+
),
|
|
650
|
+
summary TEXT,
|
|
651
|
+
risk_level TEXT CHECK (risk_level IS NULL OR risk_level IN ('low', 'medium', 'high')),
|
|
652
|
+
suggestions_json TEXT NOT NULL,
|
|
653
|
+
started_at TEXT,
|
|
654
|
+
finished_at TEXT,
|
|
655
|
+
created_at TEXT NOT NULL,
|
|
656
|
+
FOREIGN KEY (project_id) REFERENCES butler_projects(id) ON DELETE CASCADE,
|
|
657
|
+
FOREIGN KEY (plan_id) REFERENCES patrol_plans(id),
|
|
658
|
+
FOREIGN KEY (butler_session_id) REFERENCES butler_sessions(id)
|
|
659
|
+
);
|
|
660
|
+
|
|
661
|
+
CREATE INDEX IF NOT EXISTS idx_patrol_runs_project_started_at
|
|
662
|
+
ON patrol_runs(project_id, created_at DESC);
|
|
663
|
+
CREATE INDEX IF NOT EXISTS idx_patrol_runs_project_status
|
|
664
|
+
ON patrol_runs(project_id, status, created_at DESC);
|
|
665
|
+
|
|
666
|
+
CREATE TABLE IF NOT EXISTS verification_runs (
|
|
667
|
+
id TEXT PRIMARY KEY,
|
|
668
|
+
project_id TEXT NOT NULL,
|
|
669
|
+
butler_session_id TEXT,
|
|
670
|
+
source_patrol_run_id TEXT,
|
|
671
|
+
verification_type TEXT NOT NULL CHECK (
|
|
672
|
+
verification_type IN ('test', 'health', 'browser', 'visual', 'metric')
|
|
673
|
+
),
|
|
674
|
+
status TEXT NOT NULL CHECK (
|
|
675
|
+
status IN ('queued', 'running', 'passed', 'failed', 'skipped')
|
|
676
|
+
),
|
|
677
|
+
target_ref TEXT,
|
|
678
|
+
spec_json TEXT NOT NULL,
|
|
679
|
+
artifact_refs_json TEXT NOT NULL,
|
|
680
|
+
result_json TEXT NOT NULL,
|
|
681
|
+
summary TEXT,
|
|
682
|
+
started_at TEXT,
|
|
683
|
+
finished_at TEXT,
|
|
684
|
+
created_at TEXT NOT NULL,
|
|
685
|
+
FOREIGN KEY (project_id) REFERENCES butler_projects(id) ON DELETE CASCADE,
|
|
686
|
+
FOREIGN KEY (butler_session_id) REFERENCES butler_sessions(id)
|
|
687
|
+
);
|
|
688
|
+
|
|
689
|
+
CREATE INDEX IF NOT EXISTS idx_verification_runs_project_created_at
|
|
690
|
+
ON verification_runs(project_id, created_at DESC);
|
|
691
|
+
CREATE INDEX IF NOT EXISTS idx_verification_runs_project_status
|
|
692
|
+
ON verification_runs(project_id, status, created_at DESC);
|
|
693
|
+
|
|
370
694
|
INSERT INTO bootstrap_state (id, initialized)
|
|
371
695
|
VALUES ('default', 0)
|
|
372
696
|
ON CONFLICT(id) DO NOTHING;
|