watashi-db 0.0.7 → 0.0.8

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 (174) hide show
  1. package/README.md +120 -63
  2. package/Usersj.miyamoto.watashi-dbdefault.db +0 -0
  3. package/cowork-plugin/.claude-plugin/plugin.json +1 -1
  4. package/cowork-plugin/.mcp.json +1 -1
  5. package/cowork-plugin/hooks/hooks.json +7 -0
  6. package/cowork-plugin/skills/recall/SKILL.md +6 -3
  7. package/dist/config/loader.js +25 -1
  8. package/dist/config/loader.js.map +1 -1
  9. package/dist/config/schema.d.ts +53 -0
  10. package/dist/config/schema.js +9 -0
  11. package/dist/config/schema.js.map +1 -1
  12. package/dist/config/validator.js +11 -0
  13. package/dist/config/validator.js.map +1 -1
  14. package/dist/constants.d.ts +9 -1
  15. package/dist/constants.js +51 -3
  16. package/dist/constants.js.map +1 -1
  17. package/dist/context-pack.d.ts +7 -2
  18. package/dist/context-pack.js +137 -31
  19. package/dist/context-pack.js.map +1 -1
  20. package/dist/database/archive.d.ts +39 -0
  21. package/dist/database/archive.js +180 -0
  22. package/dist/database/archive.js.map +1 -0
  23. package/dist/database/groom.d.ts +39 -0
  24. package/dist/database/groom.js +246 -0
  25. package/dist/database/groom.js.map +1 -0
  26. package/dist/database/maintain.d.ts +39 -0
  27. package/dist/database/maintain.js +62 -0
  28. package/dist/database/maintain.js.map +1 -0
  29. package/dist/database/queries-core.d.ts +320 -12
  30. package/dist/database/queries-core.js +1834 -56
  31. package/dist/database/queries-core.js.map +1 -1
  32. package/dist/database/queries.d.ts +213 -12
  33. package/dist/database/queries.js +109 -0
  34. package/dist/database/queries.js.map +1 -1
  35. package/dist/database/schema.js +4199 -1
  36. package/dist/database/schema.js.map +1 -1
  37. package/dist/embedding/embed-on-write.d.ts +98 -0
  38. package/dist/embedding/embed-on-write.js +104 -0
  39. package/dist/embedding/embed-on-write.js.map +1 -0
  40. package/dist/embedding/ollama.d.ts +18 -0
  41. package/dist/embedding/ollama.js +67 -0
  42. package/dist/embedding/ollama.js.map +1 -0
  43. package/dist/embedding/openai.d.ts +17 -0
  44. package/dist/embedding/openai.js +77 -0
  45. package/dist/embedding/openai.js.map +1 -0
  46. package/dist/embedding/provider.d.ts +34 -0
  47. package/dist/embedding/provider.js +92 -0
  48. package/dist/embedding/provider.js.map +1 -0
  49. package/dist/embedding/search.d.ts +61 -0
  50. package/dist/embedding/search.js +165 -0
  51. package/dist/embedding/search.js.map +1 -0
  52. package/dist/embedding/similarity.d.ts +21 -0
  53. package/dist/embedding/similarity.js +48 -0
  54. package/dist/embedding/similarity.js.map +1 -0
  55. package/dist/embedding/transformers-local.d.ts +24 -0
  56. package/dist/embedding/transformers-local.js +65 -0
  57. package/dist/embedding/transformers-local.js.map +1 -0
  58. package/dist/embedding/types.d.ts +27 -0
  59. package/dist/embedding/types.js +6 -0
  60. package/dist/embedding/types.js.map +1 -0
  61. package/dist/hook.d.ts +54 -1
  62. package/dist/hook.js +560 -7
  63. package/dist/hook.js.map +1 -1
  64. package/dist/index.js +4 -0
  65. package/dist/index.js.map +1 -1
  66. package/dist/policy.d.ts +7 -1
  67. package/dist/policy.js +30 -0
  68. package/dist/policy.js.map +1 -1
  69. package/dist/project-detect.d.ts +8 -0
  70. package/dist/project-detect.js +36 -0
  71. package/dist/project-detect.js.map +1 -0
  72. package/dist/prompts/bootstrap-prompts.js +48 -0
  73. package/dist/prompts/bootstrap-prompts.js.map +1 -1
  74. package/dist/resources/config-guide-content.d.ts +7 -0
  75. package/dist/resources/config-guide-content.js +180 -0
  76. package/dist/resources/config-guide-content.js.map +1 -0
  77. package/dist/resources/context-resources.js +18 -1
  78. package/dist/resources/context-resources.js.map +1 -1
  79. package/dist/server-instructions.js +60 -3
  80. package/dist/server-instructions.js.map +1 -1
  81. package/dist/server.js +26 -18
  82. package/dist/server.js.map +1 -1
  83. package/dist/setup.d.ts +14 -0
  84. package/dist/setup.js +132 -10
  85. package/dist/setup.js.map +1 -1
  86. package/dist/store/federation.d.ts +126 -2
  87. package/dist/store/federation.js +719 -2
  88. package/dist/store/federation.js.map +1 -1
  89. package/dist/store/merge.d.ts +11 -0
  90. package/dist/store/merge.js +38 -8
  91. package/dist/store/merge.js.map +1 -1
  92. package/dist/store/session-state.d.ts +12 -0
  93. package/dist/store/session-state.js +27 -1
  94. package/dist/store/session-state.js.map +1 -1
  95. package/dist/store/sync-manager.d.ts +7 -5
  96. package/dist/store/sync-manager.js +134 -58
  97. package/dist/store/sync-manager.js.map +1 -1
  98. package/dist/tools/claim-tools.d.ts +7 -1
  99. package/dist/tools/claim-tools.js +328 -178
  100. package/dist/tools/claim-tools.js.map +1 -1
  101. package/dist/tools/decision-tools.d.ts +3 -2
  102. package/dist/tools/decision-tools.js +48 -131
  103. package/dist/tools/decision-tools.js.map +1 -1
  104. package/dist/tools/episode-tools.d.ts +2 -3
  105. package/dist/tools/episode-tools.js +59 -130
  106. package/dist/tools/episode-tools.js.map +1 -1
  107. package/dist/tools/export-tools.d.ts +7 -1
  108. package/dist/tools/export-tools.js +90 -68
  109. package/dist/tools/export-tools.js.map +1 -1
  110. package/dist/tools/get-tools.d.ts +11 -0
  111. package/dist/tools/get-tools.js +282 -0
  112. package/dist/tools/get-tools.js.map +1 -0
  113. package/dist/tools/groom-tools.d.ts +13 -0
  114. package/dist/tools/groom-tools.js +197 -0
  115. package/dist/tools/groom-tools.js.map +1 -0
  116. package/dist/tools/helpers.d.ts +10 -0
  117. package/dist/tools/helpers.js +10 -0
  118. package/dist/tools/helpers.js.map +1 -0
  119. package/dist/tools/insight-tools.d.ts +11 -0
  120. package/dist/tools/insight-tools.js +167 -0
  121. package/dist/tools/insight-tools.js.map +1 -0
  122. package/dist/tools/knowledge-tools.d.ts +7 -0
  123. package/dist/tools/knowledge-tools.js +151 -0
  124. package/dist/tools/knowledge-tools.js.map +1 -0
  125. package/dist/tools/maintenance-tools.d.ts +11 -0
  126. package/dist/tools/maintenance-tools.js +1074 -0
  127. package/dist/tools/maintenance-tools.js.map +1 -0
  128. package/dist/tools/memo-tools.d.ts +15 -0
  129. package/dist/tools/memo-tools.js +370 -0
  130. package/dist/tools/memo-tools.js.map +1 -0
  131. package/dist/tools/model-tools.d.ts +11 -0
  132. package/dist/tools/model-tools.js +175 -0
  133. package/dist/tools/model-tools.js.map +1 -0
  134. package/dist/tools/profile-tools.d.ts +13 -1
  135. package/dist/tools/profile-tools.js +80 -113
  136. package/dist/tools/profile-tools.js.map +1 -1
  137. package/dist/tools/promote-tools.js +91 -4
  138. package/dist/tools/promote-tools.js.map +1 -1
  139. package/dist/tools/query-tools.d.ts +13 -1
  140. package/dist/tools/query-tools.js +358 -121
  141. package/dist/tools/query-tools.js.map +1 -1
  142. package/dist/tools/store-tools.d.ts +5 -2
  143. package/dist/tools/store-tools.js +94 -74
  144. package/dist/tools/store-tools.js.map +1 -1
  145. package/dist/tools/theory-tools.js +24 -0
  146. package/dist/tools/theory-tools.js.map +1 -1
  147. package/dist/types.d.ts +641 -229
  148. package/dist/types.js +186 -134
  149. package/dist/types.js.map +1 -1
  150. package/misc/work-notes/main 20260224.txt +98 -0
  151. package/misc/work-notes/plans/20260220084456_UNKNOWN_Issue-#24-Episode/343/202/277/343/202/244/343/203/210/343/203/253/343/201/256-Qiita/346/226/271/345/274/217/343/202/254/343/202/244.md +52 -0
  152. package/misc/work-notes/plans/20260220095602_UNKNOWN_Issue-#10-/346/233/270/343/201/215/350/276/274/343/201/277/346/231/202/343/201/256/343/202/263/343/203/263/343/203/206/343/203/263/343/203/204Lint/346/251/237.md +120 -0
  153. package/misc/work-notes/plans/20260220100439_UNKNOWN_Issue-#10-/346/233/270/343/201/215/350/276/274/343/201/277/346/231/202/343/201/256/343/202/263/343/203/263/343/203/206/343/203/263/343/203/204Lint/346/251/237.md +156 -0
  154. package/misc/work-notes/plans/20260220110445_UNKNOWN_Issue-#11-/343/203/227/343/203/255/343/203/225/343/202/241/343/202/244/343/203/253/350/246/201/347/264/204/343/201/256/343/202/271/343/202/263/343/202/242/343/203/252/303/243.md +154 -0
  155. package/misc/work-notes/plans/20260220114035_UNKNOWN_Issue-#15-/343/202/263/343/203/263/343/203/206/343/202/255/343/202/271/343/203/210/344/272/210/347/256/227API/357/274/210token-budg.md +178 -0
  156. package/misc/work-notes/plans/20260220133902_UNKNOWN_Issue-#16-/343/202/257/343/203/251/343/202/244/343/202/242/343/203/263/343/203/210/345/210/245/343/203/235/343/203/252/343/202/267/343/203/274/345/261/244/357/274/210r.md +284 -0
  157. package/misc/work-notes/plans/20260220151356_UNKNOWN_Issue-#28-V9/343/203/236/343/202/244/343/202/260/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/347/265/261/345/220/210/357/274/210#23-+.md +178 -0
  158. package/misc/work-notes/plans/20260227042805_UNKNOWN_config.json-/343/202/254/343/202/244/343/203/211/346/225/264/345/202/231-+-MCP-resourceprompt-/303/250.md +90 -0
  159. package/misc/work-notes/plans/20260302113135_UNKNOWN_MCP/343/203/204/343/203/274/343/203/253/343/203/210/343/203/274/343/202/257/343/203/263/343/203/200/343/202/244/343/202/250/343/203/203/343/203/210-(~17,370-/303/242.md +152 -0
  160. package/misc/work-notes/plans/20260302151940_UNKNOWN_README.md-/347/217/276/350/241/214API/345/217/215/346/230/240/343/202/242/343/203/203/343/203/227/343/203/207/343/203/274/343/203/210.md +87 -0
  161. package/misc/work-notes/plans/20260302173113_UNKNOWN_watashi-manage-claim-/343/202/250/343/203/251/343/203/274/346/224/271/345/226/204-+-search-summ.md +70 -0
  162. package/misc/work-notes/plans/20260303091511_UNKNOWN_Issue-#60-entity-type-/347/234/201/347/225/245/345/257/276/345/277/234-/342/200/224-ID/345/206/205/351/203/250/350/247/243.md +205 -0
  163. package/misc/work-notes/plans/20260304152700_UNKNOWN_Issue-#61-setup-/343/202/263/343/203/236/343/203/263/343/203/211/343/201/247-MCP-/343/202/265/343/203/274/343/203/220/343/203/274/303/247/302/231.md +67 -0
  164. package/misc/work-notes/plans/20260304170153_UNKNOWN_Issue-#54-user-memoplanissue-/343/201/256-content-/342/206/222-l1-co.md +76 -0
  165. package/package.json +12 -2
  166. package/scripts/backfill-search-summary.mjs +219 -0
  167. package/scripts/migrate-theories.mjs +231 -0
  168. package/{watashi-db-cowork-plugin.zip → watashi-db-plugin.zip} +0 -0
  169. package/dist/config/instance.d.ts +0 -10
  170. package/dist/config/instance.js +0 -39
  171. package/dist/config/instance.js.map +0 -1
  172. package/dist/config/types.d.ts +0 -116
  173. package/dist/config/types.js +0 -37
  174. package/dist/config/types.js.map +0 -1
@@ -4,10 +4,13 @@
4
4
  * 後方互換ラッパーは queries.ts を参照。
5
5
  */
6
6
  import type Database from "better-sqlite3";
7
- import type { ClaimRow, ClaimHistoryRow, ClaimRelationRow, ClaimEvidenceRow, ClaimCheckRow, DecisionRow, AuditLogRow, EpisodeRow, TheoryRow } from "../types.js";
7
+ import type { ClaimRow, ClaimHistoryRow, ClaimRelationRow, ClaimEvidenceRow, ClaimCheckRow, DecisionRow, AuditLogRow, EpisodeRow, TheoryRow, InsightRow, ModelRow, TopicSummary, StaleClaimRow, GroomingEpisodeRow } from "../types.js";
8
8
  import type { ProvenanceData } from "../provenance.js";
9
9
  /**
10
10
  * FTS5クエリのサニタイズ
11
+ * 2026-02-22 改善 (Issue #20): trigram tokenizer 対応
12
+ * - 全トークンが3文字未満の場合は null を返し LIKE フォールバックに誘導
13
+ * - 3文字未満のトークンをフィルタアウト
11
14
  */
12
15
  export declare function sanitizeFtsQuery(input: string): string | null;
13
16
  export declare function insertClaim(db: Database.Database, params: {
@@ -19,7 +22,9 @@ export declare function insertClaim(db: Database.Database, params: {
19
22
  confidence: number;
20
23
  evidence?: string;
21
24
  falsifier?: string;
25
+ l1_content?: string;
22
26
  search_summary?: string;
27
+ l1_embedding?: Buffer | null;
23
28
  source_tool?: string;
24
29
  source_session?: string;
25
30
  client_name?: string | null;
@@ -46,16 +51,21 @@ export declare function queryContext(db: Database.Database, topic: string, scope
46
51
  episodes: EpisodeRow[];
47
52
  decisions: DecisionRow[];
48
53
  theories: TheoryRow[];
54
+ insights: InsightRow[];
55
+ models: ModelRow[];
49
56
  };
50
57
  export declare function getClaimHistory(db: Database.Database, claimId: string): ClaimHistoryRow[];
51
58
  export declare function insertDecision(db: Database.Database, params: {
52
59
  title: string;
53
60
  description: string;
54
- reasoning: string;
55
- alternatives: string[];
61
+ l1_content?: string;
62
+ l2_reasoning: string;
63
+ l2_alternatives: string[];
56
64
  related_claim_ids: string[];
57
65
  scope?: string;
58
66
  search_summary?: string;
67
+ user_input?: string;
68
+ l1_embedding?: Buffer | null;
59
69
  source_tool?: string;
60
70
  client_name?: string | null;
61
71
  client_version?: string | null;
@@ -76,6 +86,10 @@ export declare function getStats(db: Database.Database): {
76
86
  active_decisions: number;
77
87
  total_history_entries: number;
78
88
  categories: Record<string, number>;
89
+ active_episodes: number;
90
+ active_insights: number;
91
+ active_theories: number;
92
+ active_models: number;
79
93
  };
80
94
  export declare function getAllActiveClaims(db: Database.Database): ClaimRow[];
81
95
  export declare function getRecentDecisions(db: Database.Database, limit?: number): DecisionRow[];
@@ -116,6 +130,7 @@ export declare function insertAuditLog(db: Database.Database, params: {
116
130
  source_tool?: string;
117
131
  }): void;
118
132
  export declare function getAuditLog(db: Database.Database, entityType: string, entityId: string): AuditLogRow[];
133
+ export declare function getLastCreateAuditTimestamp(db: Database.Database): string | null;
119
134
  export declare function searchAuditLog(db: Database.Database, params: {
120
135
  operation?: string;
121
136
  entity_type?: string;
@@ -124,17 +139,20 @@ export declare function searchAuditLog(db: Database.Database, params: {
124
139
  }): AuditLogRow[];
125
140
  export declare function insertEpisode(db: Database.Database, params: {
126
141
  title: string;
127
- context?: string;
128
- trigger?: string;
129
- problems: string[];
130
- desires: string[];
131
- decisions: string[];
132
- outcomes: string[];
133
- principles: string[];
142
+ l1_content?: string;
143
+ l2_context?: string;
144
+ l2_trigger?: string;
145
+ l2_problems: string[];
146
+ l2_desires: string[];
147
+ l2_decisions: string[];
148
+ l2_outcomes: string[];
149
+ l2_principles: string[];
134
150
  evidence_refs: string[];
135
151
  tags: string[];
136
152
  scope?: string;
137
153
  search_summary?: string;
154
+ user_input?: string;
155
+ l1_embedding?: Buffer | null;
138
156
  source_tool?: string;
139
157
  client_name?: string | null;
140
158
  client_version?: string | null;
@@ -153,19 +171,33 @@ export declare function getEpisodeStats(db: Database.Database): {
153
171
  active_episodes: number;
154
172
  archived_episodes: number;
155
173
  };
174
+ export declare function listUngroomedEpisodes(db: Database.Database, params: {
175
+ scope?: string;
176
+ tag?: string;
177
+ include_groomed?: boolean;
178
+ limit: number;
179
+ }): GroomingEpisodeRow[];
180
+ export declare function markEpisodesGroomed(db: Database.Database, episodeIds: string[]): string[];
181
+ export declare function getTopicSummary(db: Database.Database, tagLimit?: number, decisionLimit?: number, scope?: string): TopicSummary;
156
182
  export declare function insertTheory(db: Database.Database, params: {
157
183
  title: string;
158
184
  description?: string;
159
- core_thesis?: string;
160
- principles: string[];
185
+ l1_content?: string;
186
+ l2_core_thesis?: string;
187
+ l2_principles: string[];
188
+ l2_trigger_conditions?: string[];
189
+ l2_resolution_steps?: string[];
190
+ l2_applicable_context?: string;
161
191
  non_goals: string[];
162
192
  open_questions: string[];
163
193
  supporting_episode_ids: string[];
164
194
  supporting_claim_ids: string[];
195
+ evidence_refs?: string[];
165
196
  tags: string[];
166
197
  scope?: string;
167
198
  confidence?: number;
168
199
  search_summary?: string;
200
+ l1_embedding?: Buffer | null;
169
201
  source_tool?: string;
170
202
  client_name?: string | null;
171
203
  client_version?: string | null;
@@ -179,4 +211,280 @@ export declare function listTheories(db: Database.Database, params: {
179
211
  scope?: string;
180
212
  limit: number;
181
213
  }): TheoryRow[];
214
+ export declare function searchPrinciplesForRecall(db: Database.Database, promptText: string, limit: number): Array<{
215
+ source: string;
216
+ title: string;
217
+ principles: string[];
218
+ description?: string;
219
+ core_thesis?: string;
220
+ }>;
221
+ export declare function listEpisodesWithPrinciples(db: Database.Database, limit: number, scope?: string): EpisodeRow[];
222
+ import type { EscalationCandidate } from "../types.js";
223
+ export declare function listEscalationCandidates(db: Database.Database, params: {
224
+ scope?: string;
225
+ limit: number;
226
+ }): EscalationCandidate[];
227
+ /**
228
+ * 陳腐化した Claim を検出してスコア付きで返す。
229
+ * SQL で active claim + claim_checks 集計を取得し、
230
+ * TypeScript 側で陳腐化スコアを計算してソート・フィルタする。
231
+ */
232
+ export declare function getStaleClaims(db: Database.Database, params: {
233
+ limit: number;
234
+ scope?: string;
235
+ category?: string;
236
+ }): StaleClaimRow[];
237
+ /**
238
+ * Hook用: 未統合アイテム数をカウント。
239
+ * 最新の Theory/Insight/Model 作成日時以降に作成された
240
+ * active な Claim + Decision + Episode の合計件数を返す。
241
+ * Theory/Insight/Model が1件もない場合は全アクティブアイテムの合計を返す。
242
+ */
243
+ export declare function countUnconsolidatedItems(db: Database.Database): number;
244
+ /**
245
+ * Hook用軽量版: 30日以上更新されていない active claim の件数を返す
246
+ */
247
+ export declare function countStaleClaims(db: Database.Database): number;
248
+ /**
249
+ * 検証通過時の鮮度リセット: updated_at を現在時刻に更新する
250
+ */
251
+ export declare function touchClaimUpdatedAt(db: Database.Database, id: string): void;
252
+ /** Claim の l1_embedding を更新 */
253
+ export declare function updateClaimL1Embedding(db: Database.Database, id: string, l1_embedding: Buffer): void;
254
+ /** Decision の l1_embedding を更新 */
255
+ export declare function updateDecisionL1Embedding(db: Database.Database, id: string, l1_embedding: Buffer): void;
256
+ /** Episode の l1_embedding を更新 */
257
+ export declare function updateEpisodeL1Embedding(db: Database.Database, id: string, l1_embedding: Buffer): void;
258
+ /** Theory の l1_embedding を更新 */
259
+ export declare function updateTheoryL1Embedding(db: Database.Database, id: string, l1_embedding: Buffer): void;
260
+ /** l1_embedding が NULL の active Claim を取得(バックフィル用) */
261
+ export declare function getClaimsWithoutL1Embedding(db: Database.Database, limit: number): ClaimRow[];
262
+ /** l1_embedding が NULL の active Decision を取得(バックフィル用) */
263
+ export declare function getDecisionsWithoutL1Embedding(db: Database.Database, limit: number): DecisionRow[];
264
+ /** l1_embedding が NULL の active Episode を取得(バックフィル用) */
265
+ export declare function getEpisodesWithoutL1Embedding(db: Database.Database, limit: number): EpisodeRow[];
266
+ /** l1_embedding が NULL の active Theory を取得(バックフィル用) */
267
+ export declare function getTheoriesWithoutL1Embedding(db: Database.Database, limit: number): TheoryRow[];
268
+ /** 指定テーブルで l1_embedding が存在するレコードを取得 */
269
+ export declare function getClaimsWithL1Embedding(db: Database.Database, scope?: string, limit?: number): ClaimRow[];
270
+ export declare function getDecisionsWithL1Embedding(db: Database.Database, scope?: string, limit?: number): DecisionRow[];
271
+ export declare function getEpisodesWithL1Embedding(db: Database.Database, scope?: string, limit?: number): EpisodeRow[];
272
+ export declare function getTheoriesWithL1Embedding(db: Database.Database, scope?: string, limit?: number): TheoryRow[];
273
+ export declare function insertInsight(db: Database.Database, params: {
274
+ title: string;
275
+ description?: string;
276
+ l1_content?: string;
277
+ l2_core_thesis?: string;
278
+ l2_principles: string[];
279
+ l2_trigger_conditions?: string[];
280
+ l2_resolution_steps?: string[];
281
+ l2_applicable_context?: string;
282
+ supporting_episode_ids: string[];
283
+ supporting_claim_ids: string[];
284
+ evidence_refs?: string[];
285
+ tags: string[];
286
+ scope?: string;
287
+ confidence?: number;
288
+ search_summary?: string;
289
+ l1_embedding?: Buffer | null;
290
+ source_tool?: string;
291
+ client_name?: string | null;
292
+ client_version?: string | null;
293
+ session_id?: string | null;
294
+ }): InsightRow;
295
+ export declare function getInsightById(db: Database.Database, id: string): InsightRow | undefined;
296
+ export declare function listInsights(db: Database.Database, params: {
297
+ status?: string;
298
+ query?: string;
299
+ tag?: string;
300
+ scope?: string;
301
+ limit: number;
302
+ }): InsightRow[];
303
+ /** Insight の l1_embedding を更新 */
304
+ export declare function updateInsightL1Embedding(db: Database.Database, id: string, l1_embedding: Buffer): void;
305
+ /** l1_embedding が NULL の active Insight を取得(バックフィル用) */
306
+ export declare function getInsightsWithoutL1Embedding(db: Database.Database, limit: number): InsightRow[];
307
+ export declare function getInsightsWithL1Embedding(db: Database.Database, scope?: string, limit?: number): InsightRow[];
308
+ export declare function insertModel(db: Database.Database, params: {
309
+ title: string;
310
+ description?: string;
311
+ l1_content?: string;
312
+ l2_core_thesis?: string;
313
+ l2_principles: string[];
314
+ l2_trigger_conditions?: string[];
315
+ l2_resolution_steps?: string[];
316
+ l2_applicable_context?: string;
317
+ non_goals: string[];
318
+ open_questions: string[];
319
+ supporting_episode_ids: string[];
320
+ supporting_claim_ids: string[];
321
+ evidence_refs?: string[];
322
+ tags: string[];
323
+ scope?: string;
324
+ confidence?: number;
325
+ search_summary?: string;
326
+ l1_embedding?: Buffer | null;
327
+ source_tool?: string;
328
+ client_name?: string | null;
329
+ client_version?: string | null;
330
+ session_id?: string | null;
331
+ }): ModelRow;
332
+ export declare function getModelById(db: Database.Database, id: string): ModelRow | undefined;
333
+ export declare function listModels(db: Database.Database, params: {
334
+ status?: string;
335
+ query?: string;
336
+ tag?: string;
337
+ scope?: string;
338
+ limit: number;
339
+ }): ModelRow[];
340
+ /** Model の l1_embedding を更新 */
341
+ export declare function updateModelL1Embedding(db: Database.Database, id: string, l1_embedding: Buffer): void;
342
+ /** l1_embedding が NULL の active Model を取得(バックフィル用) */
343
+ export declare function getModelsWithoutL1Embedding(db: Database.Database, limit: number): ModelRow[];
344
+ export declare function getModelsWithL1Embedding(db: Database.Database, scope?: string, limit?: number): ModelRow[];
345
+ import type { UserMemoRow } from "../types.js";
346
+ export declare function insertUserMemo(db: Database.Database, params: {
347
+ title: string;
348
+ l1_content: string;
349
+ usage_policy?: string;
350
+ tags: string[];
351
+ scope?: string;
352
+ search_summary?: string;
353
+ user_input?: string;
354
+ l1_embedding?: Buffer | null;
355
+ source_tool?: string;
356
+ client_name?: string | null;
357
+ client_version?: string | null;
358
+ }): UserMemoRow;
359
+ export declare function getUserMemoById(db: Database.Database, id: string): UserMemoRow | undefined;
360
+ export declare function updateUserMemo(db: Database.Database, id: string, updates: {
361
+ title?: string;
362
+ l1_content?: string;
363
+ usage_policy?: string;
364
+ tags?: string[];
365
+ scope?: string;
366
+ search_summary?: string;
367
+ status?: string;
368
+ }): UserMemoRow | undefined;
369
+ export declare function listUserMemos(db: Database.Database, params: {
370
+ query?: string;
371
+ tag?: string;
372
+ usage_policy?: string;
373
+ scope?: string;
374
+ status?: string;
375
+ limit?: number;
376
+ }): UserMemoRow[];
377
+ export declare function listAutoUserMemos(db: Database.Database, scope?: string, limit?: number): UserMemoRow[];
378
+ export declare function updateUserMemoL1Embedding(db: Database.Database, id: string, l1_embedding: Buffer): void;
379
+ export declare function getUserMemosWithoutL1Embedding(db: Database.Database, limit: number): UserMemoRow[];
380
+ export declare function getUserMemosWithL1Embedding(db: Database.Database, scope?: string, limit?: number): UserMemoRow[];
381
+ import type { UserPlanRow, UserIssueRow } from "../types.js";
382
+ export declare function insertUserPlan(db: Database.Database, params: {
383
+ title: string;
384
+ l1_content: string;
385
+ usage_policy?: string;
386
+ tags: string[];
387
+ scope?: string;
388
+ search_summary?: string;
389
+ user_input?: string;
390
+ l1_embedding?: Buffer | null;
391
+ source_tool?: string;
392
+ client_name?: string | null;
393
+ client_version?: string | null;
394
+ }): UserPlanRow;
395
+ export declare function getUserPlanById(db: Database.Database, id: string): UserPlanRow | undefined;
396
+ export declare function updateUserPlan(db: Database.Database, id: string, updates: {
397
+ title?: string;
398
+ l1_content?: string;
399
+ usage_policy?: string;
400
+ tags?: string[];
401
+ scope?: string;
402
+ search_summary?: string;
403
+ status?: string;
404
+ }): UserPlanRow | undefined;
405
+ export declare function listUserPlans(db: Database.Database, params: {
406
+ query?: string;
407
+ tag?: string;
408
+ usage_policy?: string;
409
+ scope?: string;
410
+ status?: string;
411
+ limit?: number;
412
+ }): UserPlanRow[];
413
+ export declare function listAutoUserPlans(db: Database.Database, scope?: string, limit?: number): UserPlanRow[];
414
+ export declare function updateUserPlanL1Embedding(db: Database.Database, id: string, l1_embedding: Buffer): void;
415
+ export declare function getUserPlansWithoutL1Embedding(db: Database.Database, limit: number): UserPlanRow[];
416
+ export declare function getUserPlansWithL1Embedding(db: Database.Database, scope?: string, limit?: number): UserPlanRow[];
417
+ export declare function insertUserIssue(db: Database.Database, params: {
418
+ title: string;
419
+ l1_content: string;
420
+ entries?: string;
421
+ priority?: string;
422
+ usage_policy?: string;
423
+ tags: string[];
424
+ scope?: string;
425
+ search_summary?: string;
426
+ user_input?: string;
427
+ l1_embedding?: Buffer | null;
428
+ source_tool?: string;
429
+ client_name?: string | null;
430
+ client_version?: string | null;
431
+ }): UserIssueRow;
432
+ export declare function getUserIssueById(db: Database.Database, id: string): UserIssueRow | undefined;
433
+ export declare function updateUserIssue(db: Database.Database, id: string, updates: {
434
+ title?: string;
435
+ l1_content?: string;
436
+ entries?: string;
437
+ priority?: string;
438
+ usage_policy?: string;
439
+ tags?: string[];
440
+ scope?: string;
441
+ search_summary?: string;
442
+ status?: string;
443
+ }): UserIssueRow | undefined;
444
+ export declare function listUserIssues(db: Database.Database, params: {
445
+ query?: string;
446
+ tag?: string;
447
+ priority?: string;
448
+ usage_policy?: string;
449
+ scope?: string;
450
+ status?: string;
451
+ limit?: number;
452
+ }): UserIssueRow[];
453
+ export declare function updateUserIssueL1Embedding(db: Database.Database, id: string, l1_embedding: Buffer): void;
454
+ export declare function getUserIssuesWithoutL1Embedding(db: Database.Database, limit: number): UserIssueRow[];
455
+ export declare function getUserIssuesWithL1Embedding(db: Database.Database, scope?: string, limit?: number): UserIssueRow[];
456
+ import type { UnifiedSearchRow } from "../types.js";
457
+ /**
458
+ * 横断検索(FTS5 + LIKEフォールバック)
459
+ * unified_search_items テーブルを使い、全6エンティティを横断してFTS5検索する。
460
+ * FTS5で結果が得られない場合はLIKEフォールバック(既存パターンと同一)。
461
+ */
462
+ export declare function unifiedSearch(db: Database.Database, query: string, scope: string | undefined, entityTypes: string[] | undefined, limit: number): UnifiedSearchRow[];
463
+ /**
464
+ * 横断検索テーブルからl1_embedding付きレコードを取得(ベクトル検索用)
465
+ */
466
+ export declare function getUnifiedSearchWithL1Embedding(db: Database.Database, scope: string | undefined, entityTypes: string[] | undefined, limit: number): UnifiedSearchRow[];
467
+ /**
468
+ * 横断検索テーブルの全件再構築
469
+ * 全ソーステーブルからアクティブレコードを取得し、unified_search_items を再構築する。
470
+ * マイグレーション後の整合性チェックや手動メンテナンスに使用。
471
+ */
472
+ export declare function rebuildUnifiedSearch(db: Database.Database): {
473
+ total: number;
474
+ };
475
+ /**
476
+ * entity_id から entity_type を解決する(unified_search_items を使用)。
477
+ * Issue #60: entity_type 省略時の自動解決に使用。
478
+ *
479
+ * 注意: unified_search_items には active 状態のエンティティのみ同期される。
480
+ * retracted/superseded/promoted 等の非 active エンティティは解決できない。
481
+ * 非 active エンティティを取得する場合は entity_type を明示指定すること。
482
+ */
483
+ export declare function resolveEntityType(db: Database.Database, entityId: string): string | undefined;
484
+ /**
485
+ * 任意エンティティの search_summary を更新する。
486
+ * UPDATE トリガーにより unified_search_items も自動同期される。
487
+ * @returns 更新された行数(0 = ID不在)
488
+ */
489
+ export declare function updateSearchSummary(db: Database.Database, entityType: string, entityId: string, searchSummary: string): number;
182
490
  //# sourceMappingURL=queries-core.d.ts.map