maskweaver 0.7.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 (284) hide show
  1. package/assets/agents/dummy-human.md +31 -0
  2. package/assets/agents/dummy-template.md +57 -0
  3. package/assets/agents/mask-master.md +225 -0
  4. package/assets/masks/ai-ml/andrew-ng.yaml +207 -0
  5. package/assets/masks/architecture/jeff-dean.yaml +208 -0
  6. package/assets/masks/index.json +65 -0
  7. package/assets/masks/software-engineering/dan-abramov.yaml +188 -0
  8. package/assets/masks/software-engineering/kent-beck.yaml +191 -0
  9. package/assets/masks/software-engineering/linus-torvalds.yaml +152 -0
  10. package/assets/masks/software-engineering/martin-fowler.yaml +173 -0
  11. package/dist/cli/install.d.ts +11 -0
  12. package/dist/cli/install.d.ts.map +1 -0
  13. package/dist/cli/install.js +299 -0
  14. package/dist/cli/install.js.map +1 -0
  15. package/dist/context/config.d.ts +38 -0
  16. package/dist/context/config.d.ts.map +1 -0
  17. package/dist/context/config.js +55 -0
  18. package/dist/context/config.js.map +1 -0
  19. package/dist/context/feature.d.ts +49 -0
  20. package/dist/context/feature.d.ts.map +1 -0
  21. package/dist/context/feature.js +290 -0
  22. package/dist/context/feature.js.map +1 -0
  23. package/dist/context/files.d.ts +17 -0
  24. package/dist/context/files.d.ts.map +1 -0
  25. package/dist/context/files.js +50 -0
  26. package/dist/context/files.js.map +1 -0
  27. package/dist/context/index.d.ts +14 -0
  28. package/dist/context/index.d.ts.map +1 -0
  29. package/dist/context/index.js +18 -0
  30. package/dist/context/index.js.map +1 -0
  31. package/dist/context/project.d.ts +26 -0
  32. package/dist/context/project.d.ts.map +1 -0
  33. package/dist/context/project.js +95 -0
  34. package/dist/context/project.js.map +1 -0
  35. package/dist/context/types.d.ts +72 -0
  36. package/dist/context/types.d.ts.map +1 -0
  37. package/dist/context/types.js +14 -0
  38. package/dist/context/types.js.map +1 -0
  39. package/dist/context/utils.d.ts +22 -0
  40. package/dist/context/utils.d.ts.map +1 -0
  41. package/dist/context/utils.js +40 -0
  42. package/dist/context/utils.js.map +1 -0
  43. package/dist/core/engine/promptBuilder.d.ts +32 -0
  44. package/dist/core/engine/promptBuilder.d.ts.map +1 -0
  45. package/dist/core/engine/promptBuilder.js +117 -0
  46. package/dist/core/engine/promptBuilder.js.map +1 -0
  47. package/dist/core/index.d.ts +11 -0
  48. package/dist/core/index.d.ts.map +1 -0
  49. package/dist/core/index.js +13 -0
  50. package/dist/core/index.js.map +1 -0
  51. package/dist/core/loader/MaskLoader.d.ts +47 -0
  52. package/dist/core/loader/MaskLoader.d.ts.map +1 -0
  53. package/dist/core/loader/MaskLoader.js +132 -0
  54. package/dist/core/loader/MaskLoader.js.map +1 -0
  55. package/dist/core/schema/types.d.ts +128 -0
  56. package/dist/core/schema/types.d.ts.map +1 -0
  57. package/dist/core/schema/types.js +8 -0
  58. package/dist/core/schema/types.js.map +1 -0
  59. package/dist/core/schema/validator.d.ts +290 -0
  60. package/dist/core/schema/validator.d.ts.map +1 -0
  61. package/dist/core/schema/validator.js +105 -0
  62. package/dist/core/schema/validator.js.map +1 -0
  63. package/dist/i18n/index.d.ts +33 -0
  64. package/dist/i18n/index.d.ts.map +1 -0
  65. package/dist/i18n/index.js +57 -0
  66. package/dist/i18n/index.js.map +1 -0
  67. package/dist/i18n/locales/en.json +16 -0
  68. package/dist/index.d.ts +17 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +29 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/memory/chunking.d.ts +35 -0
  73. package/dist/memory/chunking.d.ts.map +1 -0
  74. package/dist/memory/chunking.js +168 -0
  75. package/dist/memory/chunking.js.map +1 -0
  76. package/dist/memory/core.d.ts +73 -0
  77. package/dist/memory/core.d.ts.map +1 -0
  78. package/dist/memory/core.js +186 -0
  79. package/dist/memory/core.js.map +1 -0
  80. package/dist/memory/index.d.ts +21 -0
  81. package/dist/memory/index.d.ts.map +1 -0
  82. package/dist/memory/index.js +22 -0
  83. package/dist/memory/index.js.map +1 -0
  84. package/dist/memory/indexer.d.ts +37 -0
  85. package/dist/memory/indexer.d.ts.map +1 -0
  86. package/dist/memory/indexer.js +162 -0
  87. package/dist/memory/indexer.js.map +1 -0
  88. package/dist/memory/providers/examples.d.ts +17 -0
  89. package/dist/memory/providers/examples.d.ts.map +1 -0
  90. package/dist/memory/providers/examples.js +271 -0
  91. package/dist/memory/providers/examples.js.map +1 -0
  92. package/dist/memory/providers/factory.d.ts +49 -0
  93. package/dist/memory/providers/factory.d.ts.map +1 -0
  94. package/dist/memory/providers/factory.js +111 -0
  95. package/dist/memory/providers/factory.js.map +1 -0
  96. package/dist/memory/providers/index.d.ts +34 -0
  97. package/dist/memory/providers/index.d.ts.map +1 -0
  98. package/dist/memory/providers/index.js +35 -0
  99. package/dist/memory/providers/index.js.map +1 -0
  100. package/dist/memory/providers/ollama.d.ts +18 -0
  101. package/dist/memory/providers/ollama.d.ts.map +1 -0
  102. package/dist/memory/providers/ollama.js +68 -0
  103. package/dist/memory/providers/ollama.js.map +1 -0
  104. package/dist/memory/providers/openai.d.ts +21 -0
  105. package/dist/memory/providers/openai.d.ts.map +1 -0
  106. package/dist/memory/providers/openai.js +91 -0
  107. package/dist/memory/providers/openai.js.map +1 -0
  108. package/dist/memory/providers/openrouter.d.ts +22 -0
  109. package/dist/memory/providers/openrouter.d.ts.map +1 -0
  110. package/dist/memory/providers/openrouter.js +89 -0
  111. package/dist/memory/providers/openrouter.js.map +1 -0
  112. package/dist/memory/providers/text-only.d.ts +20 -0
  113. package/dist/memory/providers/text-only.d.ts.map +1 -0
  114. package/dist/memory/providers/text-only.js +35 -0
  115. package/dist/memory/providers/text-only.js.map +1 -0
  116. package/dist/memory/providers/types.d.ts +63 -0
  117. package/dist/memory/providers/types.d.ts.map +1 -0
  118. package/dist/memory/providers/types.js +9 -0
  119. package/dist/memory/providers/types.js.map +1 -0
  120. package/dist/memory/providers/voyage.d.ts +39 -0
  121. package/dist/memory/providers/voyage.d.ts.map +1 -0
  122. package/dist/memory/providers/voyage.js +127 -0
  123. package/dist/memory/providers/voyage.js.map +1 -0
  124. package/dist/memory/search/hybrid.d.ts +12 -0
  125. package/dist/memory/search/hybrid.d.ts.map +1 -0
  126. package/dist/memory/search/hybrid.js +59 -0
  127. package/dist/memory/search/hybrid.js.map +1 -0
  128. package/dist/memory/store/sqlite.d.ts +86 -0
  129. package/dist/memory/store/sqlite.d.ts.map +1 -0
  130. package/dist/memory/store/sqlite.js +390 -0
  131. package/dist/memory/store/sqlite.js.map +1 -0
  132. package/dist/plugin/config/index.d.ts +148 -0
  133. package/dist/plugin/config/index.d.ts.map +1 -0
  134. package/dist/plugin/config/index.js +236 -0
  135. package/dist/plugin/config/index.js.map +1 -0
  136. package/dist/plugin/index.d.ts +19 -0
  137. package/dist/plugin/index.d.ts.map +1 -0
  138. package/dist/plugin/index.js +811 -0
  139. package/dist/plugin/index.js.map +1 -0
  140. package/dist/plugin/tools/context.d.ts +36 -0
  141. package/dist/plugin/tools/context.d.ts.map +1 -0
  142. package/dist/plugin/tools/context.js +332 -0
  143. package/dist/plugin/tools/context.js.map +1 -0
  144. package/dist/plugin/tools/maskSave.d.ts +6 -0
  145. package/dist/plugin/tools/maskSave.d.ts.map +1 -0
  146. package/dist/plugin/tools/maskSave.js +42 -0
  147. package/dist/plugin/tools/maskSave.js.map +1 -0
  148. package/dist/plugin/tools/memoryGet.d.ts +21 -0
  149. package/dist/plugin/tools/memoryGet.d.ts.map +1 -0
  150. package/dist/plugin/tools/memoryGet.js +40 -0
  151. package/dist/plugin/tools/memoryGet.js.map +1 -0
  152. package/dist/plugin/tools/memoryIndexer.d.ts +6 -0
  153. package/dist/plugin/tools/memoryIndexer.d.ts.map +1 -0
  154. package/dist/plugin/tools/memoryIndexer.js +75 -0
  155. package/dist/plugin/tools/memoryIndexer.js.map +1 -0
  156. package/dist/plugin/tools/memorySearch.d.ts +74 -0
  157. package/dist/plugin/tools/memorySearch.d.ts.map +1 -0
  158. package/dist/plugin/tools/memorySearch.js +172 -0
  159. package/dist/plugin/tools/memorySearch.js.map +1 -0
  160. package/dist/plugin/tools/memoryWrite.d.ts +11 -0
  161. package/dist/plugin/tools/memoryWrite.d.ts.map +1 -0
  162. package/dist/plugin/tools/memoryWrite.js +161 -0
  163. package/dist/plugin/tools/memoryWrite.js.map +1 -0
  164. package/dist/plugin/tools/retrospect.d.ts +6 -0
  165. package/dist/plugin/tools/retrospect.d.ts.map +1 -0
  166. package/dist/plugin/tools/retrospect.js +46 -0
  167. package/dist/plugin/tools/retrospect.js.map +1 -0
  168. package/dist/plugin/types.d.ts +34 -0
  169. package/dist/plugin/types.d.ts.map +1 -0
  170. package/dist/plugin/types.js +7 -0
  171. package/dist/plugin/types.js.map +1 -0
  172. package/dist/retrospect/index.d.ts +14 -0
  173. package/dist/retrospect/index.d.ts.map +1 -0
  174. package/dist/retrospect/index.js +13 -0
  175. package/dist/retrospect/index.js.map +1 -0
  176. package/dist/retrospect/mask-save.d.ts +31 -0
  177. package/dist/retrospect/mask-save.d.ts.map +1 -0
  178. package/dist/retrospect/mask-save.js +263 -0
  179. package/dist/retrospect/mask-save.js.map +1 -0
  180. package/dist/retrospect/retrospect.d.ts +24 -0
  181. package/dist/retrospect/retrospect.d.ts.map +1 -0
  182. package/dist/retrospect/retrospect.js +165 -0
  183. package/dist/retrospect/retrospect.js.map +1 -0
  184. package/dist/retrospect/strategies/base.d.ts +20 -0
  185. package/dist/retrospect/strategies/base.d.ts.map +1 -0
  186. package/dist/retrospect/strategies/base.js +9 -0
  187. package/dist/retrospect/strategies/base.js.map +1 -0
  188. package/dist/retrospect/strategies/deep.d.ts +18 -0
  189. package/dist/retrospect/strategies/deep.d.ts.map +1 -0
  190. package/dist/retrospect/strategies/deep.js +105 -0
  191. package/dist/retrospect/strategies/deep.js.map +1 -0
  192. package/dist/retrospect/strategies/index.d.ts +20 -0
  193. package/dist/retrospect/strategies/index.d.ts.map +1 -0
  194. package/dist/retrospect/strategies/index.js +27 -0
  195. package/dist/retrospect/strategies/index.js.map +1 -0
  196. package/dist/retrospect/strategies/quick.d.ts +18 -0
  197. package/dist/retrospect/strategies/quick.d.ts.map +1 -0
  198. package/dist/retrospect/strategies/quick.js +55 -0
  199. package/dist/retrospect/strategies/quick.js.map +1 -0
  200. package/dist/retrospect/strategies/standard.d.ts +18 -0
  201. package/dist/retrospect/strategies/standard.d.ts.map +1 -0
  202. package/dist/retrospect/strategies/standard.js +66 -0
  203. package/dist/retrospect/strategies/standard.js.map +1 -0
  204. package/dist/retrospect/types.d.ts +34 -0
  205. package/dist/retrospect/types.d.ts.map +1 -0
  206. package/dist/retrospect/types.js +9 -0
  207. package/dist/retrospect/types.js.map +1 -0
  208. package/dist/shared/config.d.ts +130 -0
  209. package/dist/shared/config.d.ts.map +1 -0
  210. package/dist/shared/config.js +12 -0
  211. package/dist/shared/config.js.map +1 -0
  212. package/dist/shared/errors.d.ts +36 -0
  213. package/dist/shared/errors.d.ts.map +1 -0
  214. package/dist/shared/errors.js +57 -0
  215. package/dist/shared/errors.js.map +1 -0
  216. package/dist/shared/index.d.ts +10 -0
  217. package/dist/shared/index.d.ts.map +1 -0
  218. package/dist/shared/index.js +9 -0
  219. package/dist/shared/index.js.map +1 -0
  220. package/dist/shared/types.d.ts +34 -0
  221. package/dist/shared/types.d.ts.map +1 -0
  222. package/dist/shared/types.js +5 -0
  223. package/dist/shared/types.js.map +1 -0
  224. package/dist/shared-context/index.d.ts +11 -0
  225. package/dist/shared-context/index.d.ts.map +1 -0
  226. package/dist/shared-context/index.js +16 -0
  227. package/dist/shared-context/index.js.map +1 -0
  228. package/dist/shared-context/logger.d.ts +10 -0
  229. package/dist/shared-context/logger.d.ts.map +1 -0
  230. package/dist/shared-context/logger.js +28 -0
  231. package/dist/shared-context/logger.js.map +1 -0
  232. package/dist/shared-context/session.d.ts +23 -0
  233. package/dist/shared-context/session.d.ts.map +1 -0
  234. package/dist/shared-context/session.js +34 -0
  235. package/dist/shared-context/session.js.map +1 -0
  236. package/dist/shared-context/squad.d.ts +30 -0
  237. package/dist/shared-context/squad.d.ts.map +1 -0
  238. package/dist/shared-context/squad.js +66 -0
  239. package/dist/shared-context/squad.js.map +1 -0
  240. package/dist/shared-context/storage.d.ts +25 -0
  241. package/dist/shared-context/storage.d.ts.map +1 -0
  242. package/dist/shared-context/storage.js +66 -0
  243. package/dist/shared-context/storage.js.map +1 -0
  244. package/dist/shared-context/types.d.ts +107 -0
  245. package/dist/shared-context/types.d.ts.map +1 -0
  246. package/dist/shared-context/types.js +18 -0
  247. package/dist/shared-context/types.js.map +1 -0
  248. package/dist/verify/budget.d.ts +45 -0
  249. package/dist/verify/budget.d.ts.map +1 -0
  250. package/dist/verify/budget.js +89 -0
  251. package/dist/verify/budget.js.map +1 -0
  252. package/dist/verify/critical-files.d.ts +22 -0
  253. package/dist/verify/critical-files.d.ts.map +1 -0
  254. package/dist/verify/critical-files.js +130 -0
  255. package/dist/verify/critical-files.js.map +1 -0
  256. package/dist/verify/escalation.d.ts +27 -0
  257. package/dist/verify/escalation.d.ts.map +1 -0
  258. package/dist/verify/escalation.js +68 -0
  259. package/dist/verify/escalation.js.map +1 -0
  260. package/dist/verify/index.d.ts +13 -0
  261. package/dist/verify/index.d.ts.map +1 -0
  262. package/dist/verify/index.js +18 -0
  263. package/dist/verify/index.js.map +1 -0
  264. package/dist/verify/prompts.d.ts +27 -0
  265. package/dist/verify/prompts.d.ts.map +1 -0
  266. package/dist/verify/prompts.js +158 -0
  267. package/dist/verify/prompts.js.map +1 -0
  268. package/dist/verify/types.d.ts +80 -0
  269. package/dist/verify/types.d.ts.map +1 -0
  270. package/dist/verify/types.js +22 -0
  271. package/dist/verify/types.js.map +1 -0
  272. package/dist/verify/verifier.d.ts +47 -0
  273. package/dist/verify/verifier.d.ts.map +1 -0
  274. package/dist/verify/verifier.js +180 -0
  275. package/dist/verify/verifier.js.map +1 -0
  276. package/masks/ai-ml/andrew-ng.yaml +207 -0
  277. package/masks/architecture/jeff-dean.yaml +208 -0
  278. package/masks/index.json +65 -0
  279. package/masks/orchestration/squad-operator.yaml +205 -0
  280. package/masks/software-engineering/dan-abramov.yaml +188 -0
  281. package/masks/software-engineering/kent-beck.yaml +191 -0
  282. package/masks/software-engineering/linus-torvalds.yaml +152 -0
  283. package/masks/software-engineering/martin-fowler.yaml +173 -0
  284. package/package.json +111 -0
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Maskweaver - AI Expert Persona System
3
+ *
4
+ * 가면술사: AI 코딩 어시스턴트에게 전문가 인격을 부여하는 시스템
5
+ *
6
+ * @version 0.7.0
7
+ * @author ULJI SOFT <ulgerang@gmail.com>
8
+ * @license MIT
9
+ */
10
+ export * as core from "./core/index.js";
11
+ export * as shared from "./shared/index.js";
12
+ export * as memory from "./memory/index.js";
13
+ export * as context from "./context/index.js";
14
+ export * as retrospect from "./retrospect/index.js";
15
+ export * as verify from "./verify/index.js";
16
+ export { MaskweaverPlugin, default } from "./plugin/index.js";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AAGxC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAG5C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAG5C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAG9C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AAGpD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAK5C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Maskweaver - AI Expert Persona System
3
+ *
4
+ * 가면술사: AI 코딩 어시스턴트에게 전문가 인격을 부여하는 시스템
5
+ *
6
+ * @version 0.7.0
7
+ * @author ULJI SOFT <ulgerang@gmail.com>
8
+ * @license MIT
9
+ */
10
+ // ============================================================================
11
+ // Module Exports (use subpath imports for specific modules)
12
+ // ============================================================================
13
+ // Core: Schema, validation, prompt builder
14
+ export * as core from "./core/index.js";
15
+ // Shared: Errors, types, config
16
+ export * as shared from "./shared/index.js";
17
+ // Memory: Embedding, vector search
18
+ export * as memory from "./memory/index.js";
19
+ // Context: Feature context management
20
+ export * as context from "./context/index.js";
21
+ // Retrospect: Session retrospective
22
+ export * as retrospect from "./retrospect/index.js";
23
+ // Verify: Code verification
24
+ export * as verify from "./verify/index.js";
25
+ // ============================================================================
26
+ // Plugin Exports (default export)
27
+ // ============================================================================
28
+ export { MaskweaverPlugin, default } from "./plugin/index.js";
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+EAA+E;AAC/E,4DAA4D;AAC5D,+EAA+E;AAE/E,2CAA2C;AAC3C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AAExC,gCAAgC;AAChC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,mCAAmC;AACnC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,sCAAsC;AACtC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAE9C,oCAAoC;AACpC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AAEpD,4BAA4B;AAC5B,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Text Chunking - Break text into manageable pieces
3
+ *
4
+ * Simple line-based chunking with overlap.
5
+ * Preserves context at chunk boundaries.
6
+ */
7
+ import { type Chunk } from './core.js';
8
+ /**
9
+ * Chunk text into overlapping segments.
10
+ */
11
+ export declare function chunkText(text: string, filePath: string): Chunk[];
12
+ /**
13
+ * Estimate tokens in text.
14
+ */
15
+ export declare function estimateTokens(text: string): number;
16
+ /**
17
+ * Split text into sentences.
18
+ * Handles both English and Korean.
19
+ */
20
+ export declare function splitIntoSentences(text: string): string[];
21
+ /**
22
+ * Markdown section parsing.
23
+ */
24
+ export interface MarkdownSection {
25
+ header: string;
26
+ content: string;
27
+ level: number;
28
+ startLine: number;
29
+ endLine: number;
30
+ }
31
+ /**
32
+ * Parse markdown into sections.
33
+ */
34
+ export declare function parseMarkdownSections(content: string): MarkdownSection[];
35
+ //# sourceMappingURL=chunking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunking.d.ts","sourceRoot":"","sources":["../../src/memory/chunking.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAU,KAAK,KAAK,EAA8C,MAAM,WAAW,CAAC;AAE3F;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CA6DjE;AAuCD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAenD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBzD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAoDxE"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Text Chunking - Break text into manageable pieces
3
+ *
4
+ * Simple line-based chunking with overlap.
5
+ * Preserves context at chunk boundaries.
6
+ */
7
+ import { CONFIG, hashText, determineSource } from './core.js';
8
+ /**
9
+ * Chunk text into overlapping segments.
10
+ */
11
+ export function chunkText(text, filePath) {
12
+ const { maxTokens, overlapTokens, charsPerToken } = CONFIG.chunking;
13
+ const source = determineSource(filePath);
14
+ const lines = text.split('\n');
15
+ const chunks = [];
16
+ const maxChars = maxTokens * charsPerToken;
17
+ const overlapChars = overlapTokens * charsPerToken;
18
+ let currentChunkLines = [];
19
+ let currentChunkStart = 1; // 1-based line number
20
+ let currentLength = 0;
21
+ for (let i = 0; i < lines.length; i++) {
22
+ const line = lines[i];
23
+ const lineLength = line.length + 1; // +1 for newline
24
+ if (currentLength + lineLength <= maxChars) {
25
+ currentChunkLines.push(line);
26
+ currentLength += lineLength;
27
+ }
28
+ else {
29
+ // Save current chunk
30
+ if (currentChunkLines.length > 0) {
31
+ const chunkText = currentChunkLines.join('\n');
32
+ if (chunkText.trim().length > 0) {
33
+ chunks.push(createChunk(filePath, currentChunkStart, currentChunkStart + currentChunkLines.length - 1, chunkText, source));
34
+ }
35
+ }
36
+ // Calculate overlap
37
+ const overlapLines = calculateOverlapLines(currentChunkLines, overlapChars);
38
+ // Start new chunk
39
+ currentChunkStart = i + 1 - overlapLines.length;
40
+ currentChunkLines = [...overlapLines, line];
41
+ currentLength = currentChunkLines.join('\n').length;
42
+ }
43
+ }
44
+ // Save last chunk
45
+ if (currentChunkLines.length > 0) {
46
+ const chunkText = currentChunkLines.join('\n');
47
+ if (chunkText.trim().length > 0) {
48
+ chunks.push(createChunk(filePath, currentChunkStart, currentChunkStart + currentChunkLines.length - 1, chunkText, source));
49
+ }
50
+ }
51
+ return chunks;
52
+ }
53
+ /**
54
+ * Calculate overlap lines from end of chunk.
55
+ */
56
+ function calculateOverlapLines(lines, overlapChars) {
57
+ const result = [];
58
+ let length = 0;
59
+ for (let i = lines.length - 1; i >= 0; i--) {
60
+ const lineLength = lines[i].length + 1;
61
+ if (length + lineLength > overlapChars)
62
+ break;
63
+ result.unshift(lines[i]);
64
+ length += lineLength;
65
+ }
66
+ return result;
67
+ }
68
+ /**
69
+ * Create chunk object.
70
+ */
71
+ function createChunk(path, startLine, endLine, text, source) {
72
+ return {
73
+ path,
74
+ startLine,
75
+ endLine,
76
+ text,
77
+ hash: hashText(text),
78
+ source,
79
+ };
80
+ }
81
+ /**
82
+ * Estimate tokens in text.
83
+ */
84
+ export function estimateTokens(text) {
85
+ if (!text || text.length === 0)
86
+ return 0;
87
+ // Korean characters: ~2 tokens per char
88
+ const koreanChars = (text.match(/[\uAC00-\uD7A3]/g) || []).length;
89
+ // English words: ~1.3 tokens per word
90
+ const englishWords = (text.match(/[a-zA-Z]+/g) || []).length;
91
+ // Other chars
92
+ const otherChars = text.length - koreanChars - (englishWords * 5);
93
+ const koreanTokens = koreanChars * 2;
94
+ const englishTokens = englishWords * 1.3;
95
+ const otherTokens = Math.max(0, otherChars) / 4;
96
+ return Math.ceil(koreanTokens + englishTokens + otherTokens);
97
+ }
98
+ /**
99
+ * Split text into sentences.
100
+ * Handles both English and Korean.
101
+ */
102
+ export function splitIntoSentences(text) {
103
+ const sentenceEnders = /([.!?。!?])\s+/g;
104
+ const sentences = [];
105
+ let lastIndex = 0;
106
+ let match;
107
+ while ((match = sentenceEnders.exec(text)) !== null) {
108
+ sentences.push(text.slice(lastIndex, match.index + match[1].length).trim());
109
+ lastIndex = match.index + match[0].length;
110
+ }
111
+ if (lastIndex < text.length) {
112
+ sentences.push(text.slice(lastIndex).trim());
113
+ }
114
+ return sentences.filter(s => s.length > 0);
115
+ }
116
+ const HEADER_REGEX = /^(#{1,6})\s+(.+)$/;
117
+ /**
118
+ * Parse markdown into sections.
119
+ */
120
+ export function parseMarkdownSections(content) {
121
+ const lines = content.split('\n');
122
+ const sections = [];
123
+ let currentSection = null;
124
+ let currentLines = [];
125
+ let sectionStartLine = 1;
126
+ for (let i = 0; i < lines.length; i++) {
127
+ const line = lines[i];
128
+ const lineNumber = i + 1;
129
+ const headerMatch = line.match(HEADER_REGEX);
130
+ if (headerMatch) {
131
+ // Save previous section
132
+ if (currentSection !== null || currentLines.length > 0) {
133
+ sections.push({
134
+ header: currentSection?.header || '',
135
+ content: currentLines.join('\n'),
136
+ level: currentSection?.level || 0,
137
+ startLine: sectionStartLine,
138
+ endLine: lineNumber - 1
139
+ });
140
+ }
141
+ // Start new section
142
+ currentSection = {
143
+ header: headerMatch[2],
144
+ content: '',
145
+ level: headerMatch[1].length,
146
+ startLine: lineNumber,
147
+ endLine: lineNumber
148
+ };
149
+ currentLines = [line];
150
+ sectionStartLine = lineNumber;
151
+ }
152
+ else {
153
+ currentLines.push(line);
154
+ }
155
+ }
156
+ // Save last section
157
+ if (currentLines.length > 0) {
158
+ sections.push({
159
+ header: currentSection?.header || '',
160
+ content: currentLines.join('\n'),
161
+ level: currentSection?.level || 0,
162
+ startLine: sectionStartLine,
163
+ endLine: lines.length
164
+ });
165
+ }
166
+ return sections;
167
+ }
168
+ //# sourceMappingURL=chunking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunking.js","sourceRoot":"","sources":["../../src/memory/chunking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Memory Core - Simple utilities for text processing
3
+ *
4
+ * Clear is better than clever.
5
+ */
6
+ export declare const CONFIG: {
7
+ readonly chunking: {
8
+ readonly maxTokens: 400;
9
+ readonly overlapTokens: 80;
10
+ readonly charsPerToken: 4;
11
+ };
12
+ readonly paths: {
13
+ readonly memoryDir: ".opencode/memory";
14
+ readonly dataDir: ".opencode-data";
15
+ readonly dbFile: "memory.sqlite";
16
+ };
17
+ readonly search: {
18
+ readonly defaultMaxResults: 6;
19
+ readonly defaultMinScore: 0.35;
20
+ };
21
+ };
22
+ export type SourceType = 'daily' | 'memory' | 'masks' | 'retrospect' | 'user' | 'code';
23
+ export type MemoryType = 'daily' | 'memory' | 'masks' | 'retrospect' | 'user';
24
+ export interface Chunk {
25
+ id?: number;
26
+ path: string;
27
+ startLine: number;
28
+ endLine: number;
29
+ text: string;
30
+ hash: string;
31
+ source: SourceType;
32
+ createdAt?: string;
33
+ }
34
+ export interface SearchResult {
35
+ chunk: Chunk;
36
+ score: number;
37
+ matchType: 'vector' | 'text' | 'hybrid';
38
+ }
39
+ /**
40
+ * Hash text using djb2 algorithm.
41
+ * Simple, fast, good enough for our use case.
42
+ */
43
+ export declare function hashText(text: string): string;
44
+ /**
45
+ * Estimate token count.
46
+ * Rough approximation: 4 chars ≈ 1 token
47
+ */
48
+ export declare function estimateTokens(text: string): number;
49
+ /**
50
+ * Determine source type from file path.
51
+ */
52
+ export declare function determineSource(filePath: string): SourceType;
53
+ /**
54
+ * Calculate cosine similarity between two vectors.
55
+ * Single pass for efficiency.
56
+ */
57
+ export declare function cosineSimilarity(a: number[], b: number[]): number;
58
+ /**
59
+ * Float32 version - more memory efficient.
60
+ */
61
+ export declare function cosineSimilarityFloat32(a: Float32Array, b: Float32Array): number;
62
+ export declare function toFloat32Array(embedding: number[]): Float32Array;
63
+ export declare function embeddingToBlob(embedding: number[]): Buffer;
64
+ export declare function blobToEmbedding(blob: Buffer): Float32Array;
65
+ export declare function blobToNumberArray(blob: Buffer): number[];
66
+ export declare function getTodayFileName(): string;
67
+ export declare function dateToFileName(date: Date): string;
68
+ export declare function getMemoryPath(type: MemoryType, basePath?: string): string;
69
+ export declare function getDbPath(basePath?: string): string;
70
+ export declare function getDataDir(basePath?: string): string;
71
+ export declare function sleep(ms: number): Promise<void>;
72
+ export declare function getConfig(): typeof CONFIG;
73
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/memory/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;CAeT,CAAC;AAMX,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AACvF,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,KAAK;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;CACzC;AAMD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAoB5D;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBjE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAqBhF;AAMD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,CAEhE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAG3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAGxD;AAMD,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAMjD;AAMD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,MAAsB,GAC/B,MAAM,CAiBR;AAED,wBAAgB,SAAS,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CAElE;AAED,wBAAgB,UAAU,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CAEnE;AAMD,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAgB,SAAS,IAAI,OAAO,MAAM,CAEzC"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Memory Core - Simple utilities for text processing
3
+ *
4
+ * Clear is better than clever.
5
+ */
6
+ import { join } from "path";
7
+ // ============================================================================
8
+ // Configuration
9
+ // ============================================================================
10
+ export const CONFIG = {
11
+ chunking: {
12
+ maxTokens: 400,
13
+ overlapTokens: 80,
14
+ charsPerToken: 4,
15
+ },
16
+ paths: {
17
+ memoryDir: ".opencode/memory",
18
+ dataDir: ".opencode-data",
19
+ dbFile: "memory.sqlite",
20
+ },
21
+ search: {
22
+ defaultMaxResults: 6,
23
+ defaultMinScore: 0.35,
24
+ },
25
+ };
26
+ // ============================================================================
27
+ // Text Processing
28
+ // ============================================================================
29
+ /**
30
+ * Hash text using djb2 algorithm.
31
+ * Simple, fast, good enough for our use case.
32
+ */
33
+ export function hashText(text) {
34
+ let hash = 5381;
35
+ for (let i = 0; i < text.length; i++) {
36
+ hash = ((hash << 5) + hash) + text.charCodeAt(i);
37
+ hash = hash & hash; // Convert to 32bit integer
38
+ }
39
+ return Math.abs(hash).toString(16);
40
+ }
41
+ /**
42
+ * Estimate token count.
43
+ * Rough approximation: 4 chars ≈ 1 token
44
+ */
45
+ export function estimateTokens(text) {
46
+ return Math.ceil(text.length / CONFIG.chunking.charsPerToken);
47
+ }
48
+ /**
49
+ * Determine source type from file path.
50
+ */
51
+ export function determineSource(filePath) {
52
+ const lower = filePath.toLowerCase().replace(/\\/g, '/');
53
+ if (lower.includes('/daily/') || (lower.endsWith('.md') && /\d{4}-\d{2}-\d{2}/.test(lower))) {
54
+ return 'daily';
55
+ }
56
+ if (lower.includes('masks') || lower.endsWith('masks.md')) {
57
+ return 'masks';
58
+ }
59
+ if (lower.includes('retrospect') || lower.endsWith('retrospect.md')) {
60
+ return 'retrospect';
61
+ }
62
+ if (lower.includes('user') || lower.endsWith('user.md')) {
63
+ return 'user';
64
+ }
65
+ if (lower.includes('memory') || lower.endsWith('memory.md')) {
66
+ return 'memory';
67
+ }
68
+ return 'code';
69
+ }
70
+ // ============================================================================
71
+ // Similarity
72
+ // ============================================================================
73
+ /**
74
+ * Calculate cosine similarity between two vectors.
75
+ * Single pass for efficiency.
76
+ */
77
+ export function cosineSimilarity(a, b) {
78
+ if (a.length !== b.length) {
79
+ throw new Error(`Vector dimension mismatch: ${a.length} vs ${b.length}`);
80
+ }
81
+ if (a.length === 0)
82
+ return 0;
83
+ let dotProduct = 0;
84
+ let magnitudeA = 0;
85
+ let magnitudeB = 0;
86
+ for (let i = 0; i < a.length; i++) {
87
+ const valA = a[i];
88
+ const valB = b[i];
89
+ dotProduct += valA * valB;
90
+ magnitudeA += valA * valA;
91
+ magnitudeB += valB * valB;
92
+ }
93
+ const magnitude = Math.sqrt(magnitudeA) * Math.sqrt(magnitudeB);
94
+ return magnitude === 0 ? 0 : dotProduct / magnitude;
95
+ }
96
+ /**
97
+ * Float32 version - more memory efficient.
98
+ */
99
+ export function cosineSimilarityFloat32(a, b) {
100
+ if (a.length !== b.length) {
101
+ throw new Error(`Vector dimension mismatch: ${a.length} vs ${b.length}`);
102
+ }
103
+ if (a.length === 0)
104
+ return 0;
105
+ let dotProduct = 0;
106
+ let magnitudeA = 0;
107
+ let magnitudeB = 0;
108
+ for (let i = 0; i < a.length; i++) {
109
+ const valA = a[i];
110
+ const valB = b[i];
111
+ dotProduct += valA * valB;
112
+ magnitudeA += valA * valA;
113
+ magnitudeB += valB * valB;
114
+ }
115
+ const magnitude = Math.sqrt(magnitudeA) * Math.sqrt(magnitudeB);
116
+ return magnitude === 0 ? 0 : dotProduct / magnitude;
117
+ }
118
+ // ============================================================================
119
+ // Embedding Conversion
120
+ // ============================================================================
121
+ export function toFloat32Array(embedding) {
122
+ return new Float32Array(embedding);
123
+ }
124
+ export function embeddingToBlob(embedding) {
125
+ const float32 = new Float32Array(embedding);
126
+ return Buffer.from(float32.buffer);
127
+ }
128
+ export function blobToEmbedding(blob) {
129
+ return new Float32Array(blob.buffer, blob.byteOffset, blob.byteLength / 4);
130
+ }
131
+ export function blobToNumberArray(blob) {
132
+ const float32 = new Float32Array(blob.buffer, blob.byteOffset, blob.byteLength / 4);
133
+ return Array.from(float32);
134
+ }
135
+ // ============================================================================
136
+ // Date Utilities
137
+ // ============================================================================
138
+ export function getTodayFileName() {
139
+ const now = new Date();
140
+ const year = now.getFullYear();
141
+ const month = String(now.getMonth() + 1).padStart(2, '0');
142
+ const day = String(now.getDate()).padStart(2, '0');
143
+ return `${year}-${month}-${day}.md`;
144
+ }
145
+ export function dateToFileName(date) {
146
+ const year = date.getFullYear();
147
+ const month = String(date.getMonth() + 1).padStart(2, '0');
148
+ const day = String(date.getDate()).padStart(2, '0');
149
+ return `${year}-${month}-${day}.md`;
150
+ }
151
+ // ============================================================================
152
+ // Path Utilities
153
+ // ============================================================================
154
+ export function getMemoryPath(type, basePath = process.cwd()) {
155
+ const memoryDir = join(basePath, CONFIG.paths.memoryDir);
156
+ switch (type) {
157
+ case 'daily':
158
+ return join(memoryDir, 'daily');
159
+ case 'memory':
160
+ return join(memoryDir, 'MEMORY.md');
161
+ case 'masks':
162
+ return join(memoryDir, 'MASKS.md');
163
+ case 'retrospect':
164
+ return join(memoryDir, 'RETROSPECT.md');
165
+ case 'user':
166
+ return join(memoryDir, 'USER.md');
167
+ default:
168
+ throw new Error(`Unknown memory type: ${type}`);
169
+ }
170
+ }
171
+ export function getDbPath(basePath = process.cwd()) {
172
+ return join(basePath, CONFIG.paths.dataDir, CONFIG.paths.dbFile);
173
+ }
174
+ export function getDataDir(basePath = process.cwd()) {
175
+ return join(basePath, CONFIG.paths.dataDir);
176
+ }
177
+ // ============================================================================
178
+ // Utilities
179
+ // ============================================================================
180
+ export function sleep(ms) {
181
+ return new Promise(resolve => setTimeout(resolve, ms));
182
+ }
183
+ export function getConfig() {
184
+ return CONFIG;
185
+ }
186
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/memory/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @maskweaver/memory
3
+ *
4
+ * Memory system with embeddings and vector search
5
+ */
6
+ export type { SourceType, MemoryType, Chunk, SearchResult, } from "./core.js";
7
+ export { CONFIG, hashText, estimateTokens, determineSource, cosineSimilarity, cosineSimilarityFloat32, toFloat32Array, embeddingToBlob, blobToEmbedding, blobToNumberArray, getTodayFileName, dateToFileName, getMemoryPath, getDbPath, getDataDir, sleep, getConfig, } from "./core.js";
8
+ export type { Embedding, ProviderType, HealthCheckResult, ProviderConfig, IEmbeddingProvider, } from "./providers/types.js";
9
+ export { OllamaProvider } from "./providers/ollama.js";
10
+ export { OpenAIProvider } from "./providers/openai.js";
11
+ export { VoyageProvider } from "./providers/voyage.js";
12
+ export { OpenRouterProvider } from "./providers/openrouter.js";
13
+ export { TextOnlyProvider } from "./providers/text-only.js";
14
+ export { createProvider, selectBestProvider, getDefaultConfigs, } from "./providers/factory.js";
15
+ export { chunkText, parseMarkdownSections, splitIntoSentences } from "./chunking.js";
16
+ export { MemoryDatabase, initDatabase, getDatabase, upsertChunk, searchByVector, searchByText, deleteChunksByPath, getChunksByPath, } from "./store/sqlite.js";
17
+ export type { SearchOptions } from "./store/sqlite.js";
18
+ export { hybridSearch } from "./search/hybrid.js";
19
+ export { indexFile, reindexFile, indexAllMemoryFiles, classifySource, } from "./indexer.js";
20
+ export type { MarkdownSection } from "./indexer.js";
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,UAAU,EACV,UAAU,EACV,KAAK,EACL,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,MAAM,EACN,QAAQ,EACR,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,SAAS,EACT,UAAU,EACV,KAAK,EACL,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGrF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EACL,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @maskweaver/memory
3
+ *
4
+ * Memory system with embeddings and vector search
5
+ */
6
+ export { CONFIG, hashText, estimateTokens, determineSource, cosineSimilarity, cosineSimilarityFloat32, toFloat32Array, embeddingToBlob, blobToEmbedding, blobToNumberArray, getTodayFileName, dateToFileName, getMemoryPath, getDbPath, getDataDir, sleep, getConfig, } from "./core.js";
7
+ export { OllamaProvider } from "./providers/ollama.js";
8
+ export { OpenAIProvider } from "./providers/openai.js";
9
+ export { VoyageProvider } from "./providers/voyage.js";
10
+ export { OpenRouterProvider } from "./providers/openrouter.js";
11
+ export { TextOnlyProvider } from "./providers/text-only.js";
12
+ // Provider factory
13
+ export { createProvider, selectBestProvider, getDefaultConfigs, } from "./providers/factory.js";
14
+ // Chunking
15
+ export { chunkText, parseMarkdownSections, splitIntoSentences } from "./chunking.js";
16
+ // Storage
17
+ export { MemoryDatabase, initDatabase, getDatabase, upsertChunk, searchByVector, searchByText, deleteChunksByPath, getChunksByPath, } from "./store/sqlite.js";
18
+ // Search
19
+ export { hybridSearch } from "./search/hybrid.js";
20
+ // Indexing
21
+ export { indexFile, reindexFile, indexAllMemoryFiles, classifySource, } from "./indexer.js";
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EACL,MAAM,EACN,QAAQ,EACR,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,SAAS,EACT,UAAU,EACV,KAAK,EACL,SAAS,GACV,MAAM,WAAW,CAAC;AAWnB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,WAAW;AACX,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAErF,UAAU;AACV,OAAO,EACL,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAI3B,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,WAAW;AACX,OAAO,EACL,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * File Indexer - Process markdown files into searchable chunks
3
+ *
4
+ * Read file → Parse sections → Chunk → Hash → Embed → Store
5
+ */
6
+ import { type SourceType } from './core.js';
7
+ type EmbeddingProvider = (text: string) => Promise<number[]>;
8
+ export interface MarkdownSection {
9
+ header: string;
10
+ content: string;
11
+ level: number;
12
+ startLine: number;
13
+ endLine: number;
14
+ }
15
+ /**
16
+ * Parse markdown into sections.
17
+ */
18
+ export declare function parseMarkdownSections(content: string): MarkdownSection[];
19
+ /**
20
+ * Classify source from file path.
21
+ */
22
+ export declare function classifySource(filePath: string): SourceType;
23
+ /**
24
+ * Index a single file.
25
+ * Only re-embeds chunks that changed (based on hash).
26
+ */
27
+ export declare function indexFile(filePath: string, getEmbedding: EmbeddingProvider, basePath?: string): Promise<void>;
28
+ /**
29
+ * Reindex file (delete all chunks and reindex).
30
+ */
31
+ export declare function reindexFile(filePath: string, getEmbedding: EmbeddingProvider, basePath?: string): Promise<void>;
32
+ /**
33
+ * Index all memory files in directory.
34
+ */
35
+ export declare function indexAllMemoryFiles(baseDir: string, getEmbedding: EmbeddingProvider, basePath?: string): Promise<void>;
36
+ export {};
37
+ //# sourceMappingURL=indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/memory/indexer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAGnE,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAM7D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAoDxE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAW3D;AAkBD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,iBAAiB,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,iBAAiB,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,iBAAiB,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAwBf"}