watashi-db 0.0.5 → 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 (192) hide show
  1. package/.claude-docs/CODEX_INTEGRATION.md +116 -0
  2. package/README.md +120 -62
  3. package/Usersj.miyamoto.watashi-dbdefault.db +0 -0
  4. package/cowork-plugin/.claude-plugin/plugin.json +1 -1
  5. package/cowork-plugin/.mcp.json +1 -1
  6. package/cowork-plugin/hooks/hooks.json +18 -0
  7. package/cowork-plugin/skills/recall/SKILL.md +36 -0
  8. package/dist/config/loader.d.ts +12 -0
  9. package/dist/config/loader.js +73 -0
  10. package/dist/config/loader.js.map +1 -0
  11. package/dist/config/schema.d.ts +406 -0
  12. package/dist/config/schema.js +78 -0
  13. package/dist/config/schema.js.map +1 -0
  14. package/dist/config/validator.d.ts +22 -0
  15. package/dist/config/validator.js +194 -0
  16. package/dist/config/validator.js.map +1 -0
  17. package/dist/constants.d.ts +15 -4
  18. package/dist/constants.js +67 -6
  19. package/dist/constants.js.map +1 -1
  20. package/dist/context-pack.d.ts +53 -0
  21. package/dist/context-pack.js +380 -0
  22. package/dist/context-pack.js.map +1 -0
  23. package/dist/database/archive.d.ts +39 -0
  24. package/dist/database/archive.js +180 -0
  25. package/dist/database/archive.js.map +1 -0
  26. package/dist/database/connection.d.ts +9 -1
  27. package/dist/database/connection.js +23 -2
  28. package/dist/database/connection.js.map +1 -1
  29. package/dist/database/groom.d.ts +39 -0
  30. package/dist/database/groom.js +246 -0
  31. package/dist/database/groom.js.map +1 -0
  32. package/dist/database/maintain.d.ts +39 -0
  33. package/dist/database/maintain.js +62 -0
  34. package/dist/database/maintain.js.map +1 -0
  35. package/dist/database/queries-core.d.ts +490 -0
  36. package/dist/database/queries-core.js +2707 -0
  37. package/dist/database/queries-core.js.map +1 -0
  38. package/dist/database/queries.d.ts +251 -105
  39. package/dist/database/queries.js +152 -663
  40. package/dist/database/queries.js.map +1 -1
  41. package/dist/database/schema.js +5056 -1
  42. package/dist/database/schema.js.map +1 -1
  43. package/dist/embedding/embed-on-write.d.ts +98 -0
  44. package/dist/embedding/embed-on-write.js +104 -0
  45. package/dist/embedding/embed-on-write.js.map +1 -0
  46. package/dist/embedding/ollama.d.ts +18 -0
  47. package/dist/embedding/ollama.js +67 -0
  48. package/dist/embedding/ollama.js.map +1 -0
  49. package/dist/embedding/openai.d.ts +17 -0
  50. package/dist/embedding/openai.js +77 -0
  51. package/dist/embedding/openai.js.map +1 -0
  52. package/dist/embedding/provider.d.ts +34 -0
  53. package/dist/embedding/provider.js +92 -0
  54. package/dist/embedding/provider.js.map +1 -0
  55. package/dist/embedding/search.d.ts +61 -0
  56. package/dist/embedding/search.js +165 -0
  57. package/dist/embedding/search.js.map +1 -0
  58. package/dist/embedding/similarity.d.ts +21 -0
  59. package/dist/embedding/similarity.js +48 -0
  60. package/dist/embedding/similarity.js.map +1 -0
  61. package/dist/embedding/transformers-local.d.ts +24 -0
  62. package/dist/embedding/transformers-local.js +65 -0
  63. package/dist/embedding/transformers-local.js.map +1 -0
  64. package/dist/embedding/types.d.ts +27 -0
  65. package/dist/embedding/types.js +6 -0
  66. package/dist/embedding/types.js.map +1 -0
  67. package/dist/hook.d.ts +60 -0
  68. package/dist/hook.js +594 -0
  69. package/dist/hook.js.map +1 -0
  70. package/dist/index.js +20 -53
  71. package/dist/index.js.map +1 -1
  72. package/dist/lint.d.ts +40 -0
  73. package/dist/lint.js +114 -0
  74. package/dist/lint.js.map +1 -0
  75. package/dist/policy.d.ts +54 -0
  76. package/dist/policy.js +205 -0
  77. package/dist/policy.js.map +1 -0
  78. package/dist/project-detect.d.ts +8 -0
  79. package/dist/project-detect.js +36 -0
  80. package/dist/project-detect.js.map +1 -0
  81. package/dist/prompts/bootstrap-prompts.js +39 -10
  82. package/dist/prompts/bootstrap-prompts.js.map +1 -1
  83. package/dist/provenance.js +1 -3
  84. package/dist/provenance.js.map +1 -1
  85. package/dist/resources/config-guide-content.d.ts +7 -0
  86. package/dist/resources/config-guide-content.js +180 -0
  87. package/dist/resources/config-guide-content.js.map +1 -0
  88. package/dist/resources/context-resources.js +32 -6
  89. package/dist/resources/context-resources.js.map +1 -1
  90. package/dist/scoring.d.ts +21 -0
  91. package/dist/scoring.js +35 -0
  92. package/dist/scoring.js.map +1 -0
  93. package/dist/server-instructions.d.ts +7 -0
  94. package/dist/server-instructions.js +90 -0
  95. package/dist/server-instructions.js.map +1 -0
  96. package/dist/server.d.ts +2 -0
  97. package/dist/server.js +103 -0
  98. package/dist/server.js.map +1 -0
  99. package/dist/setup.d.ts +19 -0
  100. package/dist/setup.js +279 -0
  101. package/dist/setup.js.map +1 -0
  102. package/dist/store/federation.d.ts +190 -0
  103. package/dist/store/federation.js +1008 -0
  104. package/dist/store/federation.js.map +1 -0
  105. package/dist/store/merge.d.ts +47 -0
  106. package/dist/store/merge.js +198 -0
  107. package/dist/store/merge.js.map +1 -0
  108. package/dist/store/session-state.d.ts +47 -0
  109. package/dist/store/session-state.js +95 -0
  110. package/dist/store/session-state.js.map +1 -0
  111. package/dist/store/store-manager.d.ts +46 -0
  112. package/dist/store/store-manager.js +108 -0
  113. package/dist/store/store-manager.js.map +1 -0
  114. package/dist/store/sync-manager.d.ts +79 -0
  115. package/dist/store/sync-manager.js +374 -0
  116. package/dist/store/sync-manager.js.map +1 -0
  117. package/dist/tools/claim-tools.d.ts +7 -1
  118. package/dist/tools/claim-tools.js +368 -138
  119. package/dist/tools/claim-tools.js.map +1 -1
  120. package/dist/tools/decision-tools.d.ts +3 -2
  121. package/dist/tools/decision-tools.js +60 -102
  122. package/dist/tools/decision-tools.js.map +1 -1
  123. package/dist/tools/episode-tools.d.ts +2 -3
  124. package/dist/tools/episode-tools.js +71 -112
  125. package/dist/tools/episode-tools.js.map +1 -1
  126. package/dist/tools/export-tools.d.ts +7 -1
  127. package/dist/tools/export-tools.js +89 -69
  128. package/dist/tools/export-tools.js.map +1 -1
  129. package/dist/tools/get-tools.d.ts +11 -0
  130. package/dist/tools/get-tools.js +282 -0
  131. package/dist/tools/get-tools.js.map +1 -0
  132. package/dist/tools/groom-tools.d.ts +13 -0
  133. package/dist/tools/groom-tools.js +197 -0
  134. package/dist/tools/groom-tools.js.map +1 -0
  135. package/dist/tools/helpers.d.ts +10 -0
  136. package/dist/tools/helpers.js +10 -0
  137. package/dist/tools/helpers.js.map +1 -0
  138. package/dist/tools/insight-tools.d.ts +11 -0
  139. package/dist/tools/insight-tools.js +167 -0
  140. package/dist/tools/insight-tools.js.map +1 -0
  141. package/dist/tools/knowledge-tools.d.ts +7 -0
  142. package/dist/tools/knowledge-tools.js +151 -0
  143. package/dist/tools/knowledge-tools.js.map +1 -0
  144. package/dist/tools/maintenance-tools.d.ts +11 -0
  145. package/dist/tools/maintenance-tools.js +1074 -0
  146. package/dist/tools/maintenance-tools.js.map +1 -0
  147. package/dist/tools/memo-tools.d.ts +15 -0
  148. package/dist/tools/memo-tools.js +370 -0
  149. package/dist/tools/memo-tools.js.map +1 -0
  150. package/dist/tools/model-tools.d.ts +11 -0
  151. package/dist/tools/model-tools.js +175 -0
  152. package/dist/tools/model-tools.js.map +1 -0
  153. package/dist/tools/profile-tools.d.ts +13 -1
  154. package/dist/tools/profile-tools.js +83 -85
  155. package/dist/tools/profile-tools.js.map +1 -1
  156. package/dist/tools/promote-tools.d.ts +10 -0
  157. package/dist/tools/promote-tools.js +376 -0
  158. package/dist/tools/promote-tools.js.map +1 -0
  159. package/dist/tools/query-tools.d.ts +13 -1
  160. package/dist/tools/query-tools.js +359 -72
  161. package/dist/tools/query-tools.js.map +1 -1
  162. package/dist/tools/store-tools.d.ts +12 -0
  163. package/dist/tools/store-tools.js +102 -0
  164. package/dist/tools/store-tools.js.map +1 -0
  165. package/dist/tools/sync-tools.d.ts +9 -0
  166. package/dist/tools/sync-tools.js +55 -0
  167. package/dist/tools/sync-tools.js.map +1 -0
  168. package/dist/tools/theory-tools.d.ts +7 -0
  169. package/dist/tools/theory-tools.js +179 -0
  170. package/dist/tools/theory-tools.js.map +1 -0
  171. package/dist/types.d.ts +730 -168
  172. package/dist/types.js +197 -92
  173. package/dist/types.js.map +1 -1
  174. package/misc/work-notes/main 20260224.txt +98 -0
  175. 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
  176. 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
  177. 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
  178. 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
  179. 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
  180. 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
  181. 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
  182. 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
  183. 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
  184. 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
  185. 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
  186. 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
  187. 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
  188. package/misc/work-notes/plans/20260304170153_UNKNOWN_Issue-#54-user-memoplanissue-/343/201/256-content-/342/206/222-l1-co.md +76 -0
  189. package/package.json +13 -2
  190. package/scripts/backfill-search-summary.mjs +219 -0
  191. package/scripts/migrate-theories.mjs +231 -0
  192. package/{watashi-db-cowork-plugin.zip → watashi-db-plugin.zip} +0 -0
@@ -0,0 +1,406 @@
1
+ /**
2
+ * config.json の Zod スキーマ定義
3
+ * マルチStore構成を宣言的に定義するための型とバリデーション
4
+ */
5
+ import { z } from "zod";
6
+ /** 同期設定 */
7
+ export declare const SyncConfigSchema: z.ZodObject<{
8
+ enabled: z.ZodDefault<z.ZodBoolean>;
9
+ destination: z.ZodString;
10
+ generations: z.ZodDefault<z.ZodNumber>;
11
+ }, "strict", z.ZodTypeAny, {
12
+ enabled: boolean;
13
+ destination: string;
14
+ generations: number;
15
+ }, {
16
+ destination: string;
17
+ enabled?: boolean | undefined;
18
+ generations?: number | undefined;
19
+ }>;
20
+ export type SyncConfig = z.infer<typeof SyncConfigSchema>;
21
+ /** Store discriminated union */
22
+ export declare const StoreSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
23
+ type: z.ZodLiteral<"local">;
24
+ path: z.ZodString;
25
+ sync: z.ZodOptional<z.ZodObject<{
26
+ enabled: z.ZodDefault<z.ZodBoolean>;
27
+ destination: z.ZodString;
28
+ generations: z.ZodDefault<z.ZodNumber>;
29
+ }, "strict", z.ZodTypeAny, {
30
+ enabled: boolean;
31
+ destination: string;
32
+ generations: number;
33
+ }, {
34
+ destination: string;
35
+ enabled?: boolean | undefined;
36
+ generations?: number | undefined;
37
+ }>>;
38
+ }, "strict", z.ZodTypeAny, {
39
+ path: string;
40
+ type: "local";
41
+ sync?: {
42
+ enabled: boolean;
43
+ destination: string;
44
+ generations: number;
45
+ } | undefined;
46
+ }, {
47
+ path: string;
48
+ type: "local";
49
+ sync?: {
50
+ destination: string;
51
+ enabled?: boolean | undefined;
52
+ generations?: number | undefined;
53
+ } | undefined;
54
+ }>, z.ZodObject<{
55
+ type: z.ZodLiteral<"remote-db">;
56
+ url: z.ZodString;
57
+ }, "strict", z.ZodTypeAny, {
58
+ type: "remote-db";
59
+ url: string;
60
+ }, {
61
+ type: "remote-db";
62
+ url: string;
63
+ }>, z.ZodObject<{
64
+ type: z.ZodLiteral<"remote-mcp">;
65
+ url: z.ZodString;
66
+ }, "strict", z.ZodTypeAny, {
67
+ type: "remote-mcp";
68
+ url: string;
69
+ }, {
70
+ type: "remote-mcp";
71
+ url: string;
72
+ }>]>;
73
+ export type StoreConfig = z.infer<typeof StoreSchema>;
74
+ export declare const AccessModeSchema: z.ZodEnum<["read-write", "read-only"]>;
75
+ export type AccessMode = z.infer<typeof AccessModeSchema>;
76
+ export declare const ContextSchema: z.ZodObject<{
77
+ stores: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodEnum<["read-write", "read-only"]>>, Record<string, "read-write" | "read-only">, Record<string, "read-write" | "read-only">>;
78
+ default_store: z.ZodString;
79
+ }, "strict", z.ZodTypeAny, {
80
+ stores: Record<string, "read-write" | "read-only">;
81
+ default_store: string;
82
+ }, {
83
+ stores: Record<string, "read-write" | "read-only">;
84
+ default_store: string;
85
+ }>;
86
+ export type ContextConfig = z.infer<typeof ContextSchema>;
87
+ export declare const EmbeddingConfigSchema: z.ZodObject<{
88
+ provider: z.ZodDefault<z.ZodString>;
89
+ model: z.ZodDefault<z.ZodString>;
90
+ dimensions: z.ZodDefault<z.ZodNumber>;
91
+ base_url: z.ZodOptional<z.ZodString>;
92
+ }, "strict", z.ZodTypeAny, {
93
+ model: string;
94
+ provider: string;
95
+ dimensions: number;
96
+ base_url?: string | undefined;
97
+ }, {
98
+ model?: string | undefined;
99
+ provider?: string | undefined;
100
+ dimensions?: number | undefined;
101
+ base_url?: string | undefined;
102
+ }>;
103
+ export type EmbeddingConfig = z.infer<typeof EmbeddingConfigSchema>;
104
+ export declare const LintConfigSchema: z.ZodObject<{
105
+ secret_detection: z.ZodDefault<z.ZodEnum<["block", "warn", "off"]>>;
106
+ }, "strict", z.ZodTypeAny, {
107
+ secret_detection: "block" | "warn" | "off";
108
+ }, {
109
+ secret_detection?: "block" | "warn" | "off" | undefined;
110
+ }>;
111
+ export type LintConfig = z.infer<typeof LintConfigSchema>;
112
+ /** Store名・Context名に使用可能な文字パターン */
113
+ export declare const STORE_NAME_PATTERN: RegExp;
114
+ export declare const RawConfigSchema: z.ZodObject<{
115
+ stores: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
116
+ type: z.ZodLiteral<"local">;
117
+ path: z.ZodString;
118
+ sync: z.ZodOptional<z.ZodObject<{
119
+ enabled: z.ZodDefault<z.ZodBoolean>;
120
+ destination: z.ZodString;
121
+ generations: z.ZodDefault<z.ZodNumber>;
122
+ }, "strict", z.ZodTypeAny, {
123
+ enabled: boolean;
124
+ destination: string;
125
+ generations: number;
126
+ }, {
127
+ destination: string;
128
+ enabled?: boolean | undefined;
129
+ generations?: number | undefined;
130
+ }>>;
131
+ }, "strict", z.ZodTypeAny, {
132
+ path: string;
133
+ type: "local";
134
+ sync?: {
135
+ enabled: boolean;
136
+ destination: string;
137
+ generations: number;
138
+ } | undefined;
139
+ }, {
140
+ path: string;
141
+ type: "local";
142
+ sync?: {
143
+ destination: string;
144
+ enabled?: boolean | undefined;
145
+ generations?: number | undefined;
146
+ } | undefined;
147
+ }>, z.ZodObject<{
148
+ type: z.ZodLiteral<"remote-db">;
149
+ url: z.ZodString;
150
+ }, "strict", z.ZodTypeAny, {
151
+ type: "remote-db";
152
+ url: string;
153
+ }, {
154
+ type: "remote-db";
155
+ url: string;
156
+ }>, z.ZodObject<{
157
+ type: z.ZodLiteral<"remote-mcp">;
158
+ url: z.ZodString;
159
+ }, "strict", z.ZodTypeAny, {
160
+ type: "remote-mcp";
161
+ url: string;
162
+ }, {
163
+ type: "remote-mcp";
164
+ url: string;
165
+ }>]>>, Record<string, {
166
+ path: string;
167
+ type: "local";
168
+ sync?: {
169
+ enabled: boolean;
170
+ destination: string;
171
+ generations: number;
172
+ } | undefined;
173
+ } | {
174
+ type: "remote-db";
175
+ url: string;
176
+ } | {
177
+ type: "remote-mcp";
178
+ url: string;
179
+ }>, Record<string, {
180
+ path: string;
181
+ type: "local";
182
+ sync?: {
183
+ destination: string;
184
+ enabled?: boolean | undefined;
185
+ generations?: number | undefined;
186
+ } | undefined;
187
+ } | {
188
+ type: "remote-db";
189
+ url: string;
190
+ } | {
191
+ type: "remote-mcp";
192
+ url: string;
193
+ }>>;
194
+ contexts: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodObject<{
195
+ stores: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodEnum<["read-write", "read-only"]>>, Record<string, "read-write" | "read-only">, Record<string, "read-write" | "read-only">>;
196
+ default_store: z.ZodString;
197
+ }, "strict", z.ZodTypeAny, {
198
+ stores: Record<string, "read-write" | "read-only">;
199
+ default_store: string;
200
+ }, {
201
+ stores: Record<string, "read-write" | "read-only">;
202
+ default_store: string;
203
+ }>>, Record<string, {
204
+ stores: Record<string, "read-write" | "read-only">;
205
+ default_store: string;
206
+ }>, Record<string, {
207
+ stores: Record<string, "read-write" | "read-only">;
208
+ default_store: string;
209
+ }>>;
210
+ default_context: z.ZodString;
211
+ lint: z.ZodOptional<z.ZodObject<{
212
+ secret_detection: z.ZodDefault<z.ZodEnum<["block", "warn", "off"]>>;
213
+ }, "strict", z.ZodTypeAny, {
214
+ secret_detection: "block" | "warn" | "off";
215
+ }, {
216
+ secret_detection?: "block" | "warn" | "off" | undefined;
217
+ }>>;
218
+ embedding: z.ZodOptional<z.ZodObject<{
219
+ provider: z.ZodDefault<z.ZodString>;
220
+ model: z.ZodDefault<z.ZodString>;
221
+ dimensions: z.ZodDefault<z.ZodNumber>;
222
+ base_url: z.ZodOptional<z.ZodString>;
223
+ }, "strict", z.ZodTypeAny, {
224
+ model: string;
225
+ provider: string;
226
+ dimensions: number;
227
+ base_url?: string | undefined;
228
+ }, {
229
+ model?: string | undefined;
230
+ provider?: string | undefined;
231
+ dimensions?: number | undefined;
232
+ base_url?: string | undefined;
233
+ }>>;
234
+ client_policies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
235
+ read: z.ZodDefault<z.ZodUnion<[z.ZodObject<{
236
+ categories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
237
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
238
+ }, "strict", z.ZodTypeAny, {
239
+ categories?: string[] | undefined;
240
+ scopes?: string[] | undefined;
241
+ }, {
242
+ categories?: string[] | undefined;
243
+ scopes?: string[] | undefined;
244
+ }>, z.ZodLiteral<"none">]>>;
245
+ write: z.ZodDefault<z.ZodUnion<[z.ZodObject<{
246
+ categories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
247
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
248
+ }, "strict", z.ZodTypeAny, {
249
+ categories?: string[] | undefined;
250
+ scopes?: string[] | undefined;
251
+ }, {
252
+ categories?: string[] | undefined;
253
+ scopes?: string[] | undefined;
254
+ }>, z.ZodLiteral<"none">]>>;
255
+ }, "strict", z.ZodTypeAny, {
256
+ read: {
257
+ categories?: string[] | undefined;
258
+ scopes?: string[] | undefined;
259
+ } | "none";
260
+ write: {
261
+ categories?: string[] | undefined;
262
+ scopes?: string[] | undefined;
263
+ } | "none";
264
+ }, {
265
+ read?: {
266
+ categories?: string[] | undefined;
267
+ scopes?: string[] | undefined;
268
+ } | "none" | undefined;
269
+ write?: {
270
+ categories?: string[] | undefined;
271
+ scopes?: string[] | undefined;
272
+ } | "none" | undefined;
273
+ }>>>;
274
+ }, "strict", z.ZodTypeAny, {
275
+ stores: Record<string, {
276
+ path: string;
277
+ type: "local";
278
+ sync?: {
279
+ enabled: boolean;
280
+ destination: string;
281
+ generations: number;
282
+ } | undefined;
283
+ } | {
284
+ type: "remote-db";
285
+ url: string;
286
+ } | {
287
+ type: "remote-mcp";
288
+ url: string;
289
+ }>;
290
+ contexts: Record<string, {
291
+ stores: Record<string, "read-write" | "read-only">;
292
+ default_store: string;
293
+ }>;
294
+ default_context: string;
295
+ embedding?: {
296
+ model: string;
297
+ provider: string;
298
+ dimensions: number;
299
+ base_url?: string | undefined;
300
+ } | undefined;
301
+ lint?: {
302
+ secret_detection: "block" | "warn" | "off";
303
+ } | undefined;
304
+ client_policies?: Record<string, {
305
+ read: {
306
+ categories?: string[] | undefined;
307
+ scopes?: string[] | undefined;
308
+ } | "none";
309
+ write: {
310
+ categories?: string[] | undefined;
311
+ scopes?: string[] | undefined;
312
+ } | "none";
313
+ }> | undefined;
314
+ }, {
315
+ stores: Record<string, {
316
+ path: string;
317
+ type: "local";
318
+ sync?: {
319
+ destination: string;
320
+ enabled?: boolean | undefined;
321
+ generations?: number | undefined;
322
+ } | undefined;
323
+ } | {
324
+ type: "remote-db";
325
+ url: string;
326
+ } | {
327
+ type: "remote-mcp";
328
+ url: string;
329
+ }>;
330
+ contexts: Record<string, {
331
+ stores: Record<string, "read-write" | "read-only">;
332
+ default_store: string;
333
+ }>;
334
+ default_context: string;
335
+ embedding?: {
336
+ model?: string | undefined;
337
+ provider?: string | undefined;
338
+ dimensions?: number | undefined;
339
+ base_url?: string | undefined;
340
+ } | undefined;
341
+ lint?: {
342
+ secret_detection?: "block" | "warn" | "off" | undefined;
343
+ } | undefined;
344
+ client_policies?: Record<string, {
345
+ read?: {
346
+ categories?: string[] | undefined;
347
+ scopes?: string[] | undefined;
348
+ } | "none" | undefined;
349
+ write?: {
350
+ categories?: string[] | undefined;
351
+ scopes?: string[] | undefined;
352
+ } | "none" | undefined;
353
+ }> | undefined;
354
+ }>;
355
+ export type RawConfig = z.infer<typeof RawConfigSchema>;
356
+ /** 解決済み同期設定(パス正規化後) */
357
+ export interface ResolvedSyncConfig {
358
+ enabled: boolean;
359
+ destination: string;
360
+ originalDestination: string;
361
+ generations: number;
362
+ }
363
+ /** パス正規化済みのローカルStore */
364
+ export interface ResolvedLocalStore {
365
+ type: "local";
366
+ path: string;
367
+ originalPath: string;
368
+ sync?: ResolvedSyncConfig;
369
+ }
370
+ /** 解決済みStore(現時点ではlocalのみ実装) */
371
+ export type ResolvedStore = ResolvedLocalStore;
372
+ /** 解決済みContext */
373
+ export interface ResolvedContext {
374
+ stores: Record<string, AccessMode>;
375
+ default_store: string;
376
+ }
377
+ /** 解決済みLint設定 */
378
+ export interface ResolvedLintConfig {
379
+ secret_detection: "block" | "warn" | "off";
380
+ }
381
+ /** 解決済みクライアントポリシー */
382
+ export interface ClientPolicyAccess {
383
+ categories?: string[];
384
+ scopes?: string[];
385
+ }
386
+ export interface ClientPolicyConfig {
387
+ read: ClientPolicyAccess | "none";
388
+ write: ClientPolicyAccess | "none";
389
+ }
390
+ /** 解決済みEmbedding設定 */
391
+ export interface ResolvedEmbeddingConfig {
392
+ provider: string;
393
+ model: string;
394
+ dimensions: number;
395
+ base_url?: string;
396
+ }
397
+ /** 解決済みConfig(バリデーション通過後の内部表現) */
398
+ export interface ResolvedConfig {
399
+ stores: Record<string, ResolvedStore>;
400
+ contexts: Record<string, ResolvedContext>;
401
+ default_context: string;
402
+ lint?: ResolvedLintConfig;
403
+ embedding?: ResolvedEmbeddingConfig;
404
+ client_policies?: Record<string, ClientPolicyConfig>;
405
+ }
406
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1,78 @@
1
+ /**
2
+ * config.json の Zod スキーマ定義
3
+ * マルチStore構成を宣言的に定義するための型とバリデーション
4
+ */
5
+ import { z } from "zod";
6
+ // --- Store 定義 ---
7
+ /** 同期設定 */
8
+ export const SyncConfigSchema = z.object({
9
+ enabled: z.boolean().default(true),
10
+ destination: z.string().min(1, "sync.destinationは必須です"),
11
+ generations: z.number().int().min(1).default(3),
12
+ }).strict();
13
+ /** ローカルSQLiteファイル */
14
+ const LocalStoreSchema = z.object({
15
+ type: z.literal("local"),
16
+ path: z.string().min(1, "pathは必須です"),
17
+ sync: SyncConfigSchema.optional(),
18
+ }).strict();
19
+ /** リモートDB接続(将来用・型定義のみ) */
20
+ const RemoteDbStoreSchema = z.object({
21
+ type: z.literal("remote-db"),
22
+ url: z.string().url(),
23
+ }).strict();
24
+ /** リモートMCPサーバー(将来用・型定義のみ) */
25
+ const RemoteMcpStoreSchema = z.object({
26
+ type: z.literal("remote-mcp"),
27
+ url: z.string().url(),
28
+ }).strict();
29
+ /** Store discriminated union */
30
+ export const StoreSchema = z.discriminatedUnion("type", [
31
+ LocalStoreSchema,
32
+ RemoteDbStoreSchema,
33
+ RemoteMcpStoreSchema,
34
+ ]);
35
+ // --- アクセスモード ---
36
+ export const AccessModeSchema = z.enum(["read-write", "read-only"]);
37
+ // --- Context 定義 ---
38
+ export const ContextSchema = z.object({
39
+ stores: z.record(z.string(), AccessModeSchema).refine((s) => Object.keys(s).length > 0, { message: "contextには少なくとも1つのstoreが必要です" }),
40
+ default_store: z.string().min(1, "default_storeは必須です"),
41
+ }).strict();
42
+ // --- クライアントポリシー設定 ---
43
+ /** アクセス制御(categories/scopes で許可範囲を指定) */
44
+ const PolicyAccessSchema = z.object({
45
+ categories: z.array(z.string()).optional(),
46
+ scopes: z.array(z.string()).optional(),
47
+ }).strict();
48
+ /** クライアント別ポリシー(read/write それぞれに制御) */
49
+ const ClientPolicySchema = z.object({
50
+ read: z.union([PolicyAccessSchema, z.literal("none")]).default({}),
51
+ write: z.union([PolicyAccessSchema, z.literal("none")]).default({}),
52
+ }).strict();
53
+ // --- Embedding 設定(Issue #29) ---
54
+ export const EmbeddingConfigSchema = z.object({
55
+ provider: z.string().default("openai").describe("Embeddingプロバイダー名"),
56
+ model: z.string().default("text-embedding-3-small").describe("モデル名"),
57
+ dimensions: z.number().int().min(1).default(1536).describe("ベクトル次元数"),
58
+ // 2026-02-23 追加: Ollama等ローカルサーバー用
59
+ base_url: z.string().optional().describe("ベースURL(例: http://192.168.x.x:11434)"),
60
+ }).strict();
61
+ // --- Lint 設定 ---
62
+ export const LintConfigSchema = z.object({
63
+ secret_detection: z.enum(["block", "warn", "off"]).default("warn"),
64
+ }).strict();
65
+ // --- Config 全体 ---
66
+ /** Store名・Context名に使用可能な文字パターン */
67
+ export const STORE_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;
68
+ /** Store名のキーバリデーション付き z.record */
69
+ const StoreNameKeySchema = z.string().regex(STORE_NAME_PATTERN, "Store名は英数字・アンダースコア・ハイフンのみ使用できます");
70
+ export const RawConfigSchema = z.object({
71
+ stores: z.record(StoreNameKeySchema, StoreSchema).refine((s) => Object.keys(s).length > 0, { message: "少なくとも1つのstoreが必要です" }),
72
+ contexts: z.record(z.string(), ContextSchema).refine((c) => Object.keys(c).length > 0, { message: "少なくとも1つのcontextが必要です" }),
73
+ default_context: z.string().min(1, "default_contextは必須です"),
74
+ lint: LintConfigSchema.optional(),
75
+ embedding: EmbeddingConfigSchema.optional(),
76
+ client_policies: z.record(z.string(), ClientPolicySchema).optional(),
77
+ }).strict();
78
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ResolvedConfig } from "./schema.js";
2
+ /**
3
+ * Config バリデーションエラー(全エラーを一括報告)
4
+ */
5
+ export declare class ConfigValidationError extends Error {
6
+ readonly errors: string[];
7
+ constructor(errors: string[]);
8
+ }
9
+ /**
10
+ * チルダ展開: ~/xxx → os.homedir()/xxx
11
+ */
12
+ export declare function expandTilde(p: string): string;
13
+ /**
14
+ * クライアントポリシーのスコープパターンが有効かチェック
15
+ */
16
+ export declare function isValidScopePattern(pattern: string): boolean;
17
+ /**
18
+ * RawConfig を検証し、パス展開済みの ResolvedConfig を返す
19
+ * Zodスキーマ検証 + 参照整合性チェック を一括実行
20
+ */
21
+ export declare function validateAndResolveConfig(raw: unknown): ResolvedConfig;
22
+ //# sourceMappingURL=validator.d.ts.map