@jingyi0605/codingns 0.1.4 → 0.2.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.
Files changed (239) hide show
  1. package/dist/public/assets/{TerminalPage-4ulgBhv9.js → TerminalPage-BlbQuWi1.js} +1 -1
  2. package/dist/public/assets/gemini-D4G1NbrE.png +0 -0
  3. package/dist/public/assets/index-1VIm8lVL.css +1 -0
  4. package/dist/public/assets/index-Dti93O2S.js +109 -0
  5. package/dist/public/assets/kimi-BWNNSh7e.png +0 -0
  6. package/dist/public/index.html +2 -2
  7. package/dist/server/config/env.d.ts +7 -0
  8. package/dist/server/config/env.js +150 -1
  9. package/dist/server/config/env.js.map +1 -1
  10. package/dist/server/config/opencode-system-probe-helper-process.d.ts +24 -0
  11. package/dist/server/config/opencode-system-probe-helper-process.js +70 -5
  12. package/dist/server/config/opencode-system-probe-helper-process.js.map +1 -1
  13. package/dist/server/modules/butler/butler-action-context-service.d.ts +30 -0
  14. package/dist/server/modules/butler/butler-action-context-service.js +108 -0
  15. package/dist/server/modules/butler/butler-action-context-service.js.map +1 -0
  16. package/dist/server/modules/butler/butler-auth-service.d.ts +17 -0
  17. package/dist/server/modules/butler/butler-auth-service.js +91 -0
  18. package/dist/server/modules/butler/butler-auth-service.js.map +1 -0
  19. package/dist/server/modules/butler/butler-control-action-service.d.ts +65 -0
  20. package/dist/server/modules/butler/butler-control-action-service.js +296 -0
  21. package/dist/server/modules/butler/butler-control-action-service.js.map +1 -0
  22. package/dist/server/modules/butler/butler-control-session-service.d.ts +55 -0
  23. package/dist/server/modules/butler/butler-control-session-service.js +367 -0
  24. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -0
  25. package/dist/server/modules/butler/butler-controller.d.ts +367 -0
  26. package/dist/server/modules/butler/butler-controller.js +475 -0
  27. package/dist/server/modules/butler/butler-controller.js.map +1 -0
  28. package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.d.ts +34 -0
  29. package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js +77 -0
  30. package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js.map +1 -0
  31. package/dist/server/modules/butler/butler-follow-up-scheduler.d.ts +23 -0
  32. package/dist/server/modules/butler/butler-follow-up-scheduler.js +57 -0
  33. package/dist/server/modules/butler/butler-follow-up-scheduler.js.map +1 -0
  34. package/dist/server/modules/butler/butler-follow-up-service.d.ts +86 -0
  35. package/dist/server/modules/butler/butler-follow-up-service.js +948 -0
  36. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -0
  37. package/dist/server/modules/butler/butler-inbox-service.d.ts +35 -0
  38. package/dist/server/modules/butler/butler-inbox-service.js +136 -0
  39. package/dist/server/modules/butler/butler-inbox-service.js.map +1 -0
  40. package/dist/server/modules/butler/butler-notification-service.d.ts +12 -0
  41. package/dist/server/modules/butler/butler-notification-service.js +45 -0
  42. package/dist/server/modules/butler/butler-notification-service.js.map +1 -0
  43. package/dist/server/modules/butler/butler-profile-service.d.ts +26 -0
  44. package/dist/server/modules/butler/butler-profile-service.js +529 -0
  45. package/dist/server/modules/butler/butler-profile-service.js.map +1 -0
  46. package/dist/server/modules/butler/butler-project-service.d.ts +48 -0
  47. package/dist/server/modules/butler/butler-project-service.js +253 -0
  48. package/dist/server/modules/butler/butler-project-service.js.map +1 -0
  49. package/dist/server/modules/butler/butler-session-service.d.ts +79 -0
  50. package/dist/server/modules/butler/butler-session-service.js +503 -0
  51. package/dist/server/modules/butler/butler-session-service.js.map +1 -0
  52. package/dist/server/modules/butler/butler-session-summary-service.d.ts +55 -0
  53. package/dist/server/modules/butler/butler-session-summary-service.js +382 -0
  54. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -0
  55. package/dist/server/modules/butler/context-aggregator.d.ts +187 -0
  56. package/dist/server/modules/butler/context-aggregator.js +807 -0
  57. package/dist/server/modules/butler/context-aggregator.js.map +1 -0
  58. package/dist/server/modules/butler/instruction-adapter.d.ts +28 -0
  59. package/dist/server/modules/butler/instruction-adapter.js +101 -0
  60. package/dist/server/modules/butler/instruction-adapter.js.map +1 -0
  61. package/dist/server/modules/butler/patrol-execution-service.d.ts +47 -0
  62. package/dist/server/modules/butler/patrol-execution-service.js +347 -0
  63. package/dist/server/modules/butler/patrol-execution-service.js.map +1 -0
  64. package/dist/server/modules/butler/patrol-plan-service.d.ts +54 -0
  65. package/dist/server/modules/butler/patrol-plan-service.js +272 -0
  66. package/dist/server/modules/butler/patrol-plan-service.js.map +1 -0
  67. package/dist/server/modules/butler/patrol-run-service.d.ts +60 -0
  68. package/dist/server/modules/butler/patrol-run-service.js +185 -0
  69. package/dist/server/modules/butler/patrol-run-service.js.map +1 -0
  70. package/dist/server/modules/butler/patrol-scheduler.d.ts +36 -0
  71. package/dist/server/modules/butler/patrol-scheduler.js +99 -0
  72. package/dist/server/modules/butler/patrol-scheduler.js.map +1 -0
  73. package/dist/server/modules/butler/project-memory-service.d.ts +30 -0
  74. package/dist/server/modules/butler/project-memory-service.js +103 -0
  75. package/dist/server/modules/butler/project-memory-service.js.map +1 -0
  76. package/dist/server/modules/butler/provider-adapter-registry.d.ts +61 -0
  77. package/dist/server/modules/butler/provider-adapter-registry.js +430 -0
  78. package/dist/server/modules/butler/provider-adapter-registry.js.map +1 -0
  79. package/dist/server/modules/butler/session-summary-instruction-adapter.d.ts +28 -0
  80. package/dist/server/modules/butler/session-summary-instruction-adapter.js +79 -0
  81. package/dist/server/modules/butler/session-summary-instruction-adapter.js.map +1 -0
  82. package/dist/server/modules/butler/session-summary-scheduler.d.ts +23 -0
  83. package/dist/server/modules/butler/session-summary-scheduler.js +57 -0
  84. package/dist/server/modules/butler/session-summary-scheduler.js.map +1 -0
  85. package/dist/server/modules/butler/verification-run-service.d.ts +73 -0
  86. package/dist/server/modules/butler/verification-run-service.js +633 -0
  87. package/dist/server/modules/butler/verification-run-service.js.map +1 -0
  88. package/dist/server/modules/file/file-controller.d.ts +12 -1
  89. package/dist/server/modules/file/file-controller.js +72 -1
  90. package/dist/server/modules/file/file-controller.js.map +1 -1
  91. package/dist/server/modules/file/file-preview-link-service.d.ts +22 -0
  92. package/dist/server/modules/file/file-preview-link-service.js +160 -0
  93. package/dist/server/modules/file/file-preview-link-service.js.map +1 -0
  94. package/dist/server/modules/preferences/profile-service.js +8 -2
  95. package/dist/server/modules/preferences/profile-service.js.map +1 -1
  96. package/dist/server/modules/sessions/claude-runtime-helper-process.js +1 -1
  97. package/dist/server/modules/sessions/claude-runtime-helper-process.js.map +1 -1
  98. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +7 -2
  99. package/dist/server/modules/sessions/codex-app-server-helper-client.js +113 -2
  100. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  101. package/dist/server/modules/sessions/codex-app-server-helper-process.js +106 -1
  102. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  103. package/dist/server/modules/sessions/session-controller.d.ts +24 -1
  104. package/dist/server/modules/sessions/session-controller.js +34 -3
  105. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  106. package/dist/server/modules/sessions/session-history-service.d.ts +47 -2
  107. package/dist/server/modules/sessions/session-history-service.js +881 -56
  108. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  109. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +30 -2
  110. package/dist/server/modules/sessions/session-live-runtime-service.js +584 -159
  111. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  112. package/dist/server/modules/sessions/session-provider-error-mapper.js +94 -0
  113. package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
  114. package/dist/server/modules/workbench/workbench-service.d.ts +7 -1
  115. package/dist/server/modules/workbench/workbench-service.js +31 -7
  116. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  117. package/dist/server/routes/butler.d.ts +3 -0
  118. package/dist/server/routes/butler.js +54 -0
  119. package/dist/server/routes/butler.js.map +1 -0
  120. package/dist/server/routes/files.js +2 -0
  121. package/dist/server/routes/files.js.map +1 -1
  122. package/dist/server/routes/sessions.js +1 -0
  123. package/dist/server/routes/sessions.js.map +1 -1
  124. package/dist/server/server/create-server.d.ts +65 -0
  125. package/dist/server/server/create-server.js +154 -5
  126. package/dist/server/server/create-server.js.map +1 -1
  127. package/dist/server/shared/utils/command-availability.d.ts +1 -0
  128. package/dist/server/shared/utils/command-availability.js +83 -0
  129. package/dist/server/shared/utils/command-availability.js.map +1 -0
  130. package/dist/server/storage/repositories/butler-control-event-repository.d.ts +8 -0
  131. package/dist/server/storage/repositories/butler-control-event-repository.js +78 -0
  132. package/dist/server/storage/repositories/butler-control-event-repository.js.map +1 -0
  133. package/dist/server/storage/repositories/butler-control-session-repository.d.ts +11 -0
  134. package/dist/server/storage/repositories/butler-control-session-repository.js +86 -0
  135. package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -0
  136. package/dist/server/storage/repositories/butler-follow-up-task-repository.d.ts +16 -0
  137. package/dist/server/storage/repositories/butler-follow-up-task-repository.js +252 -0
  138. package/dist/server/storage/repositories/butler-follow-up-task-repository.js.map +1 -0
  139. package/dist/server/storage/repositories/butler-inbox-item-repository.d.ts +15 -0
  140. package/dist/server/storage/repositories/butler-inbox-item-repository.js +111 -0
  141. package/dist/server/storage/repositories/butler-inbox-item-repository.js.map +1 -0
  142. package/dist/server/storage/repositories/butler-notification-archive-repository.d.ts +9 -0
  143. package/dist/server/storage/repositories/butler-notification-archive-repository.js +48 -0
  144. package/dist/server/storage/repositories/butler-notification-archive-repository.js.map +1 -0
  145. package/dist/server/storage/repositories/butler-profile-repository.d.ts +9 -0
  146. package/dist/server/storage/repositories/butler-profile-repository.js +86 -0
  147. package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -0
  148. package/dist/server/storage/repositories/butler-project-repository.d.ts +14 -0
  149. package/dist/server/storage/repositories/butler-project-repository.js +140 -0
  150. package/dist/server/storage/repositories/butler-project-repository.js.map +1 -0
  151. package/dist/server/storage/repositories/butler-session-repository.d.ts +11 -0
  152. package/dist/server/storage/repositories/butler-session-repository.js +106 -0
  153. package/dist/server/storage/repositories/butler-session-repository.js.map +1 -0
  154. package/dist/server/storage/repositories/butler-session-summary-state-repository.d.ts +8 -0
  155. package/dist/server/storage/repositories/butler-session-summary-state-repository.js +62 -0
  156. package/dist/server/storage/repositories/butler-session-summary-state-repository.js.map +1 -0
  157. package/dist/server/storage/repositories/patrol-plan-repository.d.ts +27 -0
  158. package/dist/server/storage/repositories/patrol-plan-repository.js +119 -0
  159. package/dist/server/storage/repositories/patrol-plan-repository.js.map +1 -0
  160. package/dist/server/storage/repositories/patrol-run-repository.d.ts +28 -0
  161. package/dist/server/storage/repositories/patrol-run-repository.js +121 -0
  162. package/dist/server/storage/repositories/patrol-run-repository.js.map +1 -0
  163. package/dist/server/storage/repositories/project-memory-repository.d.ts +15 -0
  164. package/dist/server/storage/repositories/project-memory-repository.js +150 -0
  165. package/dist/server/storage/repositories/project-memory-repository.js.map +1 -0
  166. package/dist/server/storage/repositories/session-checkpoint-repository.d.ts +9 -0
  167. package/dist/server/storage/repositories/session-checkpoint-repository.js +72 -0
  168. package/dist/server/storage/repositories/session-checkpoint-repository.js.map +1 -0
  169. package/dist/server/storage/repositories/session-fork-repository.d.ts +8 -0
  170. package/dist/server/storage/repositories/session-fork-repository.js +69 -0
  171. package/dist/server/storage/repositories/session-fork-repository.js.map +1 -0
  172. package/dist/server/storage/repositories/session-index-repository.js +40 -2
  173. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  174. package/dist/server/storage/repositories/session-message-origin-repository.d.ts +10 -0
  175. package/dist/server/storage/repositories/session-message-origin-repository.js +93 -0
  176. package/dist/server/storage/repositories/session-message-origin-repository.js.map +1 -0
  177. package/dist/server/storage/repositories/verification-run-repository.d.ts +29 -0
  178. package/dist/server/storage/repositories/verification-run-repository.js +125 -0
  179. package/dist/server/storage/repositories/verification-run-repository.js.map +1 -0
  180. package/dist/server/storage/sqlite/client.js +146 -0
  181. package/dist/server/storage/sqlite/client.js.map +1 -1
  182. package/dist/server/storage/sqlite/schema.sql +354 -0
  183. package/dist/server/types/domain.d.ts +286 -2
  184. package/dist/server/ws/ws-server.d.ts +2 -1
  185. package/dist/server/ws/ws-server.js +2 -1
  186. package/dist/server/ws/ws-server.js.map +1 -1
  187. package/node_modules/@codingns/session-sync-core/dist/index.d.ts +4 -0
  188. package/node_modules/@codingns/session-sync-core/dist/index.js +4 -0
  189. package/node_modules/@codingns/session-sync-core/dist/index.js.map +1 -1
  190. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.d.ts +18 -0
  191. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js +659 -0
  192. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js.map +1 -0
  193. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.d.ts +11 -0
  194. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js +72 -0
  195. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js.map +1 -0
  196. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +8 -0
  197. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +89 -0
  198. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -1
  199. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +6 -1
  200. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +228 -7
  201. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  202. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +26 -1
  203. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +499 -3
  204. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  205. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +41 -0
  206. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +1175 -0
  207. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -0
  208. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +29 -0
  209. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +578 -0
  210. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +1 -0
  211. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +5 -1
  212. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +271 -4
  213. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  214. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +1 -0
  215. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +147 -19
  216. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +1 -1
  217. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +2 -0
  218. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +43 -5
  219. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
  220. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +12 -0
  221. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +442 -71
  222. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  223. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.d.ts +21 -0
  224. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js +537 -0
  225. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js.map +1 -0
  226. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.d.ts +38 -0
  227. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js +911 -0
  228. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js.map +1 -0
  229. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +2 -1
  230. package/node_modules/@codingns/session-sync-core/dist/services.js +55 -8
  231. package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
  232. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +6 -0
  233. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +9 -0
  234. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -0
  235. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +27 -0
  236. package/node_modules/@codingns/session-sync-core/package.json +8 -0
  237. package/package.json +1 -1
  238. package/dist/public/assets/index-C5lu52cQ.css +0 -1
  239. package/dist/public/assets/index-WpdUo_Vs.js +0 -108
@@ -0,0 +1,121 @@
1
+ export class PatrolRunRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ create(record) {
7
+ this.db
8
+ .prepare(`INSERT INTO patrol_runs (
9
+ id,
10
+ project_id,
11
+ plan_id,
12
+ triggered_by,
13
+ trigger_ref,
14
+ butler_session_id,
15
+ status,
16
+ summary,
17
+ risk_level,
18
+ suggestions_json,
19
+ started_at,
20
+ finished_at,
21
+ created_at
22
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
23
+ .run(record.id, record.projectId, record.planId, record.triggeredBy, record.triggerRef, record.butlerSessionId, record.status, record.summary, record.riskLevel, record.suggestionsJson, record.startedAt, record.finishedAt, record.createdAt);
24
+ return record;
25
+ }
26
+ listByProject(projectId, filters) {
27
+ const conditions = ["project_id = ?"];
28
+ const values = [projectId];
29
+ if (filters?.status) {
30
+ conditions.push("status = ?");
31
+ values.push(filters.status);
32
+ }
33
+ if (filters?.triggeredBy) {
34
+ conditions.push("triggered_by = ?");
35
+ values.push(filters.triggeredBy);
36
+ }
37
+ const where = `WHERE ${conditions.join(" AND ")}`;
38
+ return this.db
39
+ .prepare(`SELECT
40
+ id,
41
+ project_id,
42
+ plan_id,
43
+ triggered_by,
44
+ trigger_ref,
45
+ butler_session_id,
46
+ status,
47
+ summary,
48
+ risk_level,
49
+ suggestions_json,
50
+ started_at,
51
+ finished_at,
52
+ created_at
53
+ FROM patrol_runs
54
+ ${where}
55
+ ORDER BY created_at DESC`)
56
+ .all(...values)
57
+ .map((row) => row);
58
+ }
59
+ findById(id) {
60
+ const row = this.db
61
+ .prepare(`SELECT
62
+ id,
63
+ project_id,
64
+ plan_id,
65
+ triggered_by,
66
+ trigger_ref,
67
+ butler_session_id,
68
+ status,
69
+ summary,
70
+ risk_level,
71
+ suggestions_json,
72
+ started_at,
73
+ finished_at,
74
+ created_at
75
+ FROM patrol_runs
76
+ WHERE id = ?`)
77
+ .get(id);
78
+ return row ?? null;
79
+ }
80
+ listRunningByProject(projectId) {
81
+ return this.db
82
+ .prepare(`SELECT
83
+ id,
84
+ project_id,
85
+ plan_id,
86
+ triggered_by,
87
+ trigger_ref,
88
+ butler_session_id,
89
+ status,
90
+ summary,
91
+ risk_level,
92
+ suggestions_json,
93
+ started_at,
94
+ finished_at,
95
+ created_at
96
+ FROM patrol_runs
97
+ WHERE project_id = ?
98
+ AND status = 'running'
99
+ ORDER BY created_at DESC`)
100
+ .all(projectId)
101
+ .map((row) => row);
102
+ }
103
+ update(record) {
104
+ this.db
105
+ .prepare(`UPDATE patrol_runs
106
+ SET plan_id = ?,
107
+ triggered_by = ?,
108
+ trigger_ref = ?,
109
+ butler_session_id = ?,
110
+ status = ?,
111
+ summary = ?,
112
+ risk_level = ?,
113
+ suggestions_json = ?,
114
+ started_at = ?,
115
+ finished_at = ?
116
+ WHERE id = ?`)
117
+ .run(record.planId, record.triggeredBy, record.triggerRef, record.butlerSessionId, record.status, record.summary, record.riskLevel, record.suggestionsJson, record.startedAt, record.finishedAt, record.id);
118
+ return this.findById(record.id);
119
+ }
120
+ }
121
+ //# sourceMappingURL=patrol-run-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patrol-run-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/patrol-run-repository.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,MAAM,CAAC,MAAuB;QAC5B,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;0DAckD,CACnD;aACA,GAAG,CACF,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,OAAmD;QAClF,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,WAAW,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAElD,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;;;;;;;;WAeG,KAAK;kCACkB,CAC3B;aACA,GAAG,CAAC,GAAG,MAAM,CAAC;aACd,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;;;;;;;;;;;;sBAec,CACf;aACA,GAAG,CAAC,EAAE,CAAgC,CAAC;QAE1C,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAED,oBAAoB,CAAC,SAAiB;QACpC,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;;;;;;;;;;kCAiB0B,CAC3B;aACA,GAAG,CAAC,SAAS,CAAC;aACd,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,MAAuB;QAC5B,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;sBAWc,CACf;aACA,GAAG,CACF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,EACtB,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"}
@@ -0,0 +1,15 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { ProjectMemory, ProjectMemoryStatus, ProjectMemoryType } from "../../types/domain.js";
3
+ export declare class ProjectMemoryRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ create(record: ProjectMemory): ProjectMemory;
7
+ listByProject(projectId: string, filters?: {
8
+ status?: ProjectMemoryStatus;
9
+ memoryType?: ProjectMemoryType;
10
+ scopePath?: string;
11
+ query?: string;
12
+ }): ProjectMemory[];
13
+ findById(id: string): ProjectMemory | null;
14
+ update(record: ProjectMemory): ProjectMemory;
15
+ }
@@ -0,0 +1,150 @@
1
+ export class ProjectMemoryRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ create(record) {
7
+ this.db
8
+ .prepare(`INSERT INTO project_memories (
9
+ id,
10
+ project_id,
11
+ source_butler_session_id,
12
+ source_checkpoint_id,
13
+ memory_type,
14
+ title,
15
+ scope_path,
16
+ content,
17
+ tags_json,
18
+ confidence,
19
+ status,
20
+ evidence_json,
21
+ superseded_by,
22
+ created_at,
23
+ updated_at
24
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
25
+ .run(record.id, record.projectId, record.sourceButlerSessionId, record.sourceCheckpointId, record.memoryType, record.title, record.scopePath, record.content, JSON.stringify(record.tags), record.confidence, record.status, JSON.stringify(record.evidence), record.supersededBy, record.createdAt, record.updatedAt);
26
+ return record;
27
+ }
28
+ listByProject(projectId, filters) {
29
+ const conditions = ["project_id = ?"];
30
+ const values = [projectId];
31
+ if (filters?.status) {
32
+ conditions.push("status = ?");
33
+ values.push(filters.status);
34
+ }
35
+ if (filters?.memoryType) {
36
+ conditions.push("memory_type = ?");
37
+ values.push(filters.memoryType);
38
+ }
39
+ if (filters?.scopePath) {
40
+ conditions.push("scope_path LIKE ?");
41
+ values.push(`${filters.scopePath}%`);
42
+ }
43
+ if (filters?.query) {
44
+ const pattern = `%${filters.query.replace(/%/g, "\\%")}%`;
45
+ conditions.push("(title LIKE ? OR content LIKE ?)");
46
+ values.push(pattern, pattern);
47
+ }
48
+ const whereClause = `WHERE ${conditions.join(" AND ")}`;
49
+ return this.db
50
+ .prepare(`SELECT
51
+ id,
52
+ project_id,
53
+ source_butler_session_id,
54
+ source_checkpoint_id,
55
+ memory_type,
56
+ title,
57
+ scope_path,
58
+ content,
59
+ tags_json,
60
+ confidence,
61
+ status,
62
+ evidence_json,
63
+ superseded_by,
64
+ created_at,
65
+ updated_at
66
+ FROM project_memories
67
+ ${whereClause}
68
+ ORDER BY updated_at DESC, created_at DESC`)
69
+ .all(...values)
70
+ .map((row) => mapProjectMemoryRow(row));
71
+ }
72
+ findById(id) {
73
+ const row = this.db
74
+ .prepare(`SELECT
75
+ id,
76
+ project_id,
77
+ source_butler_session_id,
78
+ source_checkpoint_id,
79
+ memory_type,
80
+ title,
81
+ scope_path,
82
+ content,
83
+ tags_json,
84
+ confidence,
85
+ status,
86
+ evidence_json,
87
+ superseded_by,
88
+ created_at,
89
+ updated_at
90
+ FROM project_memories
91
+ WHERE id = ?`)
92
+ .get(id);
93
+ return row ? mapProjectMemoryRow(row) : null;
94
+ }
95
+ update(record) {
96
+ this.db
97
+ .prepare(`UPDATE project_memories
98
+ SET
99
+ title = ?,
100
+ scope_path = ?,
101
+ content = ?,
102
+ tags_json = ?,
103
+ confidence = ?,
104
+ status = ?,
105
+ evidence_json = ?,
106
+ superseded_by = ?,
107
+ updated_at = ?
108
+ WHERE id = ?`)
109
+ .run(record.title, record.scopePath, record.content, JSON.stringify(record.tags), record.confidence, record.status, JSON.stringify(record.evidence), record.supersededBy, record.updatedAt, record.id);
110
+ return record;
111
+ }
112
+ }
113
+ function mapProjectMemoryRow(row) {
114
+ return {
115
+ id: row.id,
116
+ projectId: row.project_id,
117
+ sourceButlerSessionId: row.source_butler_session_id,
118
+ sourceCheckpointId: row.source_checkpoint_id,
119
+ memoryType: row.memory_type,
120
+ title: row.title,
121
+ scopePath: row.scope_path,
122
+ content: row.content,
123
+ tags: parseJsonArray(row.tags_json),
124
+ confidence: row.confidence,
125
+ status: row.status,
126
+ evidence: parseJsonObject(row.evidence_json),
127
+ supersededBy: row.superseded_by,
128
+ createdAt: row.created_at,
129
+ updatedAt: row.updated_at
130
+ };
131
+ }
132
+ function parseJsonArray(raw) {
133
+ try {
134
+ const parsed = JSON.parse(raw);
135
+ return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
136
+ }
137
+ catch {
138
+ return [];
139
+ }
140
+ }
141
+ function parseJsonObject(raw) {
142
+ try {
143
+ const parsed = JSON.parse(raw);
144
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
145
+ }
146
+ catch {
147
+ return {};
148
+ }
149
+ }
150
+ //# sourceMappingURL=project-memory-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-memory-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/project-memory-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { SessionCheckpoint } from "../../types/domain.js";
3
+ export declare class SessionCheckpointRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ create(record: SessionCheckpoint): SessionCheckpoint;
7
+ listByButlerSessionId(butlerSessionId: string, limit?: number): SessionCheckpoint[];
8
+ getLatestSeq(butlerSessionId: string): number;
9
+ }
@@ -0,0 +1,72 @@
1
+ export class SessionCheckpointRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ create(record) {
7
+ this.db
8
+ .prepare(`INSERT INTO session_checkpoints (
9
+ id,
10
+ butler_session_id,
11
+ checkpoint_seq,
12
+ source_kind,
13
+ progress_state,
14
+ summary,
15
+ risk_flags_json,
16
+ next_action_json,
17
+ captured_at
18
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`)
19
+ .run(record.id, record.butlerSessionId, record.checkpointSeq, record.sourceKind, record.progressState, record.summary, JSON.stringify(record.riskFlags), JSON.stringify(record.nextActions), record.capturedAt);
20
+ return record;
21
+ }
22
+ listByButlerSessionId(butlerSessionId, limit = 20) {
23
+ return this.db
24
+ .prepare(`SELECT
25
+ id,
26
+ butler_session_id,
27
+ checkpoint_seq,
28
+ source_kind,
29
+ progress_state,
30
+ summary,
31
+ risk_flags_json,
32
+ next_action_json,
33
+ captured_at
34
+ FROM session_checkpoints
35
+ WHERE butler_session_id = ?
36
+ ORDER BY checkpoint_seq DESC
37
+ LIMIT ?`)
38
+ .all(butlerSessionId, limit)
39
+ .map((row) => mapSessionCheckpointRow(row));
40
+ }
41
+ getLatestSeq(butlerSessionId) {
42
+ const row = this.db
43
+ .prepare(`SELECT MAX(checkpoint_seq) AS checkpoint_seq
44
+ FROM session_checkpoints
45
+ WHERE butler_session_id = ?`)
46
+ .get(butlerSessionId);
47
+ return row?.checkpoint_seq ?? 0;
48
+ }
49
+ }
50
+ function mapSessionCheckpointRow(row) {
51
+ return {
52
+ id: row.id,
53
+ butlerSessionId: row.butler_session_id,
54
+ checkpointSeq: row.checkpoint_seq,
55
+ sourceKind: row.source_kind,
56
+ progressState: row.progress_state,
57
+ summary: row.summary,
58
+ riskFlags: parseJsonArray(row.risk_flags_json),
59
+ nextActions: parseJsonArray(row.next_action_json),
60
+ capturedAt: row.captured_at
61
+ };
62
+ }
63
+ function parseJsonArray(raw) {
64
+ try {
65
+ const parsed = JSON.parse(raw);
66
+ return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
67
+ }
68
+ catch {
69
+ return [];
70
+ }
71
+ }
72
+ //# sourceMappingURL=session-checkpoint-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-checkpoint-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/session-checkpoint-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,2BAA2B;IACT;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,MAAM,CAAC,MAAyB;QAC9B,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;8CAUsC,CACvC;aACA,GAAG,CACF,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,OAAO,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAClC,MAAM,CAAC,UAAU,CAClB,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB,CAAC,eAAuB,EAAE,KAAK,GAAG,EAAE;QACvD,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;;;;;;;iBAaS,CACV;aACA,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;aAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAA2B,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,YAAY,CAAC,eAAuB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;qCAE6B,CAC9B;aACA,GAAG,CAAC,eAAe,CAAkD,CAAC;QAEzE,OAAO,GAAG,EAAE,cAAc,IAAI,CAAC,CAAC;IAClC,CAAC;CACF;AAcD,SAAS,uBAAuB,CAAC,GAAyB;IACxD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC;QAC9C,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACjD,UAAU,EAAE,GAAG,CAAC,WAAW;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { SessionForkRecord } from "../../types/domain.js";
3
+ export declare class SessionForkRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ upsert(record: SessionForkRecord): void;
7
+ findBySessionId(sessionId: string): SessionForkRecord | null;
8
+ }
@@ -0,0 +1,69 @@
1
+ export class SessionForkRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ upsert(record) {
7
+ this.db
8
+ .prepare(`INSERT INTO session_forks (
9
+ session_id,
10
+ parent_session_id,
11
+ provider,
12
+ fork_source_type,
13
+ fork_source_session_id,
14
+ fork_source_message_id,
15
+ inherited_prefix_message_count,
16
+ provider_parent_session_id,
17
+ provider_source_message_id,
18
+ fork_method,
19
+ created_at
20
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
21
+ ON CONFLICT(session_id) DO UPDATE SET
22
+ parent_session_id = excluded.parent_session_id,
23
+ provider = excluded.provider,
24
+ fork_source_type = excluded.fork_source_type,
25
+ fork_source_session_id = excluded.fork_source_session_id,
26
+ fork_source_message_id = excluded.fork_source_message_id,
27
+ inherited_prefix_message_count = excluded.inherited_prefix_message_count,
28
+ provider_parent_session_id = excluded.provider_parent_session_id,
29
+ provider_source_message_id = excluded.provider_source_message_id,
30
+ fork_method = excluded.fork_method,
31
+ created_at = excluded.created_at`)
32
+ .run(record.sessionId, record.parentSessionId, record.provider, record.forkSourceType, record.forkSourceSessionId, record.forkSourceMessageId, record.inheritedPrefixMessageCount, record.providerParentSessionId, record.providerSourceMessageId, record.forkMethod, record.createdAt);
33
+ }
34
+ findBySessionId(sessionId) {
35
+ const row = this.db
36
+ .prepare(`SELECT
37
+ session_id AS session_id,
38
+ parent_session_id AS parent_session_id,
39
+ provider AS provider,
40
+ fork_source_type AS fork_source_type,
41
+ fork_source_session_id AS fork_source_session_id,
42
+ fork_source_message_id AS fork_source_message_id,
43
+ inherited_prefix_message_count AS inherited_prefix_message_count,
44
+ provider_parent_session_id AS provider_parent_session_id,
45
+ provider_source_message_id AS provider_source_message_id,
46
+ fork_method AS fork_method,
47
+ created_at AS created_at
48
+ FROM session_forks
49
+ WHERE session_id = ?`)
50
+ .get(sessionId);
51
+ return row ? mapSessionForkRow(row) : null;
52
+ }
53
+ }
54
+ function mapSessionForkRow(row) {
55
+ return {
56
+ sessionId: row.session_id,
57
+ parentSessionId: row.parent_session_id,
58
+ provider: row.provider,
59
+ forkSourceType: row.fork_source_type,
60
+ forkSourceSessionId: row.fork_source_session_id,
61
+ forkSourceMessageId: row.fork_source_message_id,
62
+ inheritedPrefixMessageCount: row.inherited_prefix_message_count,
63
+ providerParentSessionId: row.provider_parent_session_id,
64
+ providerSourceMessageId: row.provider_source_message_id,
65
+ forkMethod: row.fork_method,
66
+ createdAt: row.created_at
67
+ };
68
+ }
69
+ //# sourceMappingURL=session-fork-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-fork-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/session-fork-repository.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,MAAM,CAAC,MAAyB;QAC9B,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;;;;;;;;;;;;;4CAuBoC,CACrC;aACA,GAAG,CACF,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,mBAAmB,EAC1B,MAAM,CAAC,mBAAmB,EAC1B,MAAM,CAAC,2BAA2B,EAClC,MAAM,CAAC,uBAAuB,EAC9B,MAAM,CAAC,uBAAuB,EAC9B,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,CACjB,CAAC;IACN,CAAC;IAED,eAAe,CAAC,SAAiB;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;;;;;;;;;;8BAasB,CACvB;aACA,GAAG,CAAC,SAAS,CAA+B,CAAC;QAEhD,OAAO,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;CACF;AAgBD,SAAS,iBAAiB,CAAC,GAAmB;IAC5C,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,mBAAmB,EAAE,GAAG,CAAC,sBAAsB;QAC/C,mBAAmB,EAAE,GAAG,CAAC,sBAAsB;QAC/C,2BAA2B,EAAE,GAAG,CAAC,8BAA8B;QAC/D,uBAAuB,EAAE,GAAG,CAAC,0BAA0B;QACvD,uBAAuB,EAAE,GAAG,CAAC,0BAA0B;QACvD,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
@@ -10,6 +10,9 @@ export class SessionIndexRepository {
10
10
  workspace_id,
11
11
  provider,
12
12
  parent_session_id,
13
+ session_kind,
14
+ annotation_source_message_id,
15
+ annotation_source_text,
13
16
  is_subagent,
14
17
  subagent_label,
15
18
  title,
@@ -18,11 +21,14 @@ export class SessionIndexRepository {
18
21
  last_message_at,
19
22
  created_at,
20
23
  updated_at
21
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
24
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
22
25
  ON CONFLICT(session_id) DO UPDATE SET
23
26
  workspace_id = excluded.workspace_id,
24
27
  provider = excluded.provider,
25
28
  parent_session_id = excluded.parent_session_id,
29
+ session_kind = excluded.session_kind,
30
+ annotation_source_message_id = excluded.annotation_source_message_id,
31
+ annotation_source_text = excluded.annotation_source_text,
26
32
  is_subagent = excluded.is_subagent,
27
33
  subagent_label = excluded.subagent_label,
28
34
  title = excluded.title,
@@ -30,7 +36,7 @@ export class SessionIndexRepository {
30
36
  is_archived = excluded.is_archived,
31
37
  last_message_at = excluded.last_message_at,
32
38
  updated_at = excluded.updated_at`)
33
- .run(record.sessionId, record.workspaceId, record.provider, record.parentSessionId ?? null, record.isSubagent ? 1 : 0, record.subagentLabel ?? null, record.title, record.messageCount, record.isArchived ? 1 : 0, record.lastMessageAt, record.createdAt, record.updatedAt);
39
+ .run(record.sessionId, record.workspaceId, record.provider, record.parentSessionId ?? null, record.sessionKind ?? "default", record.annotationSourceMessageId ?? null, record.annotationSourceText ?? null, record.isSubagent ? 1 : 0, record.subagentLabel ?? null, record.title, record.messageCount, record.isArchived ? 1 : 0, record.lastMessageAt, record.createdAt, record.updatedAt);
34
40
  }
35
41
  listByWorkspace(workspaceId, userId) {
36
42
  return this.db
@@ -41,6 +47,14 @@ export class SessionIndexRepository {
41
47
  bindings.provider_session_id AS provider_session_id,
42
48
  bindings.raw_store_ref AS raw_store_ref,
43
49
  indices.parent_session_id AS parent_session_id,
50
+ indices.session_kind AS session_kind,
51
+ indices.annotation_source_message_id AS annotation_source_message_id,
52
+ indices.annotation_source_text AS annotation_source_text,
53
+ forks.fork_method AS fork_method,
54
+ forks.fork_source_type AS fork_source_type,
55
+ forks.fork_source_session_id AS fork_source_session_id,
56
+ forks.fork_source_message_id AS fork_source_message_id,
57
+ forks.inherited_prefix_message_count AS inherited_prefix_message_count,
44
58
  indices.is_subagent AS is_subagent,
45
59
  indices.subagent_label AS subagent_label,
46
60
  indices.title AS title,
@@ -63,6 +77,7 @@ export class SessionIndexRepository {
63
77
  states.last_seen_at AS last_seen_at
64
78
  FROM session_indices indices
65
79
  INNER JOIN session_bindings bindings ON bindings.session_id = indices.session_id
80
+ LEFT JOIN session_forks forks ON forks.session_id = indices.session_id
66
81
  LEFT JOIN session_status_snapshots snapshots ON snapshots.session_id = indices.session_id
67
82
  LEFT JOIN session_states states
68
83
  ON states.session_id = indices.session_id
@@ -81,6 +96,14 @@ export class SessionIndexRepository {
81
96
  bindings.provider_session_id AS provider_session_id,
82
97
  bindings.raw_store_ref AS raw_store_ref,
83
98
  indices.parent_session_id AS parent_session_id,
99
+ indices.session_kind AS session_kind,
100
+ indices.annotation_source_message_id AS annotation_source_message_id,
101
+ indices.annotation_source_text AS annotation_source_text,
102
+ forks.fork_method AS fork_method,
103
+ forks.fork_source_type AS fork_source_type,
104
+ forks.fork_source_session_id AS fork_source_session_id,
105
+ forks.fork_source_message_id AS fork_source_message_id,
106
+ forks.inherited_prefix_message_count AS inherited_prefix_message_count,
84
107
  indices.is_subagent AS is_subagent,
85
108
  indices.subagent_label AS subagent_label,
86
109
  indices.title AS title,
@@ -103,6 +126,7 @@ export class SessionIndexRepository {
103
126
  states.last_seen_at AS last_seen_at
104
127
  FROM session_indices indices
105
128
  INNER JOIN session_bindings bindings ON bindings.session_id = indices.session_id
129
+ LEFT JOIN session_forks forks ON forks.session_id = indices.session_id
106
130
  LEFT JOIN session_status_snapshots snapshots ON snapshots.session_id = indices.session_id
107
131
  LEFT JOIN session_states states
108
132
  ON states.session_id = indices.session_id
@@ -118,6 +142,9 @@ export class SessionIndexRepository {
118
142
  workspace_id AS workspace_id,
119
143
  provider AS provider,
120
144
  parent_session_id AS parent_session_id,
145
+ session_kind AS session_kind,
146
+ annotation_source_message_id AS annotation_source_message_id,
147
+ annotation_source_text AS annotation_source_text,
121
148
  is_subagent AS is_subagent,
122
149
  subagent_label AS subagent_label,
123
150
  title AS title,
@@ -158,6 +185,14 @@ function mapSessionListItemRow(row) {
158
185
  providerSessionId: row.provider_session_id,
159
186
  rawStoreRef: row.raw_store_ref,
160
187
  parentSessionId: row.parent_session_id,
188
+ sessionKind: row.session_kind ?? "default",
189
+ annotationSourceMessageId: row.annotation_source_message_id,
190
+ annotationSourceText: row.annotation_source_text,
191
+ forkMethod: row.fork_method ?? null,
192
+ forkSourceType: row.fork_source_type ?? null,
193
+ forkSourceSessionId: row.fork_source_session_id,
194
+ forkSourceMessageId: row.fork_source_message_id,
195
+ inheritedPrefixMessageCount: row.inherited_prefix_message_count ?? null,
161
196
  isSubagent: row.is_subagent === 1,
162
197
  subagentLabel: row.subagent_label,
163
198
  title: row.title,
@@ -187,6 +222,9 @@ function mapSessionIndexRecordRow(row) {
187
222
  workspaceId: row.workspace_id,
188
223
  provider: row.provider,
189
224
  parentSessionId: row.parent_session_id,
225
+ sessionKind: row.session_kind ?? "default",
226
+ annotationSourceMessageId: row.annotation_source_message_id,
227
+ annotationSourceText: row.annotation_source_text,
190
228
  isSubagent: row.is_subagent === 1,
191
229
  subagentLabel: row.subagent_label,
192
230
  title: row.title,
@@ -1 +1 @@
1
- {"version":3,"file":"session-index-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/session-index-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-index-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/session-index-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { SessionMessageOriginRecord } from "../../types/domain.js";
3
+ export declare class SessionMessageOriginRepository {
4
+ private readonly db;
5
+ constructor(db: Database.Database);
6
+ upsert(record: SessionMessageOriginRecord): void;
7
+ resolveMessageId(sessionId: string, clientRequestId: string, messageId: string, updatedAt: string): void;
8
+ listBySessionAndMessageIds(sessionId: string, messageIds: string[]): SessionMessageOriginRecord[];
9
+ listUnresolvedBySessionAndContents(sessionId: string, contents: string[]): SessionMessageOriginRecord[];
10
+ }