trellis 2.1.7 → 2.1.9

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 (240) hide show
  1. package/README.md +100 -10
  2. package/dist/cli/index.d.ts +14 -0
  3. package/dist/cli/index.d.ts.map +1 -0
  4. package/dist/cli/index.js +199 -9
  5. package/dist/client/config.d.ts +56 -0
  6. package/dist/client/config.d.ts.map +1 -0
  7. package/dist/client/index.d.ts +15 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +32 -0
  10. package/dist/client/sdk.d.ts +152 -0
  11. package/dist/client/sdk.d.ts.map +1 -0
  12. package/dist/config-8hczw0rs.js +20 -0
  13. package/dist/core/agents/harness.d.ts +49 -0
  14. package/dist/core/agents/harness.d.ts.map +1 -0
  15. package/dist/core/agents/index.d.ts +8 -0
  16. package/dist/core/agents/index.d.ts.map +1 -0
  17. package/dist/core/agents/types.d.ts +63 -0
  18. package/dist/core/agents/types.d.ts.map +1 -0
  19. package/dist/core/index.d.ts +25 -0
  20. package/dist/core/index.d.ts.map +1 -0
  21. package/dist/core/index.js +15 -9
  22. package/dist/core/kernel/middleware.d.ts +28 -0
  23. package/dist/core/kernel/middleware.d.ts.map +1 -0
  24. package/dist/core/kernel/trellis-kernel.d.ts +162 -0
  25. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -0
  26. package/dist/core/ontology/builtins.d.ts +16 -0
  27. package/dist/core/ontology/builtins.d.ts.map +1 -0
  28. package/dist/core/ontology/index.d.ts +10 -0
  29. package/dist/core/ontology/index.d.ts.map +1 -0
  30. package/dist/core/ontology/registry.d.ts +70 -0
  31. package/dist/core/ontology/registry.d.ts.map +1 -0
  32. package/dist/core/ontology/types.d.ts +97 -0
  33. package/dist/core/ontology/types.d.ts.map +1 -0
  34. package/dist/core/ontology/validator.d.ts +34 -0
  35. package/dist/core/ontology/validator.d.ts.map +1 -0
  36. package/dist/core/persist/backend.d.ts +60 -0
  37. package/dist/core/persist/backend.d.ts.map +1 -0
  38. package/dist/core/persist/sqlite-backend.d.ts +41 -0
  39. package/dist/core/persist/sqlite-backend.d.ts.map +1 -0
  40. package/dist/core/plugins/index.d.ts +8 -0
  41. package/dist/core/plugins/index.d.ts.map +1 -0
  42. package/dist/core/plugins/registry.d.ts +69 -0
  43. package/dist/core/plugins/registry.d.ts.map +1 -0
  44. package/dist/core/plugins/types.d.ts +87 -0
  45. package/dist/core/plugins/types.d.ts.map +1 -0
  46. package/dist/core/query/datalog.d.ts +52 -0
  47. package/dist/core/query/datalog.d.ts.map +1 -0
  48. package/dist/core/query/engine.d.ts +42 -0
  49. package/dist/core/query/engine.d.ts.map +1 -0
  50. package/dist/core/query/index.d.ts +12 -0
  51. package/dist/core/query/index.d.ts.map +1 -0
  52. package/dist/core/query/parser.d.ts +37 -0
  53. package/dist/core/query/parser.d.ts.map +1 -0
  54. package/dist/core/query/types.d.ts +135 -0
  55. package/dist/core/query/types.d.ts.map +1 -0
  56. package/dist/core/store/eav-store.d.ts +107 -0
  57. package/dist/core/store/eav-store.d.ts.map +1 -0
  58. package/dist/db/index.d.ts +18 -0
  59. package/dist/db/index.d.ts.map +1 -0
  60. package/dist/db/index.js +83 -0
  61. package/dist/db/inspector.js +28 -0
  62. package/dist/db/trellis.css +1 -0
  63. package/dist/decisions/auto-capture.d.ts +31 -0
  64. package/dist/decisions/auto-capture.d.ts.map +1 -0
  65. package/dist/decisions/hooks.d.ts +48 -0
  66. package/dist/decisions/hooks.d.ts.map +1 -0
  67. package/dist/decisions/index.d.ts +36 -0
  68. package/dist/decisions/index.d.ts.map +1 -0
  69. package/dist/decisions/types.d.ts +73 -0
  70. package/dist/decisions/types.d.ts.map +1 -0
  71. package/dist/deploy-99j5dc9c.js +9 -0
  72. package/dist/embeddings/auto-embed.d.ts +52 -0
  73. package/dist/embeddings/auto-embed.d.ts.map +1 -0
  74. package/dist/embeddings/chunker.d.ts +73 -0
  75. package/dist/embeddings/chunker.d.ts.map +1 -0
  76. package/dist/embeddings/index.d.ts +18 -0
  77. package/dist/embeddings/index.d.ts.map +1 -0
  78. package/dist/embeddings/model.d.ts +30 -0
  79. package/dist/embeddings/model.d.ts.map +1 -0
  80. package/dist/embeddings/search.d.ts +87 -0
  81. package/dist/embeddings/search.d.ts.map +1 -0
  82. package/dist/embeddings/store.d.ts +66 -0
  83. package/dist/embeddings/store.d.ts.map +1 -0
  84. package/dist/embeddings/types.d.ts +54 -0
  85. package/dist/embeddings/types.d.ts.map +1 -0
  86. package/dist/engine-y0724kjq.js +8 -0
  87. package/dist/engine.d.ts +216 -0
  88. package/dist/engine.d.ts.map +1 -0
  89. package/dist/garden/cluster.d.ts +57 -0
  90. package/dist/garden/cluster.d.ts.map +1 -0
  91. package/dist/garden/garden.d.ts +104 -0
  92. package/dist/garden/garden.d.ts.map +1 -0
  93. package/dist/garden/index.d.ts +15 -0
  94. package/dist/garden/index.d.ts.map +1 -0
  95. package/dist/git/git-exporter.d.ts +37 -0
  96. package/dist/git/git-exporter.d.ts.map +1 -0
  97. package/dist/git/git-importer.d.ts +36 -0
  98. package/dist/git/git-importer.d.ts.map +1 -0
  99. package/dist/git/git-reader.d.ts +63 -0
  100. package/dist/git/git-reader.d.ts.map +1 -0
  101. package/dist/git/index.d.ts +10 -0
  102. package/dist/git/index.d.ts.map +1 -0
  103. package/dist/identity/governance.d.ts +54 -0
  104. package/dist/identity/governance.d.ts.map +1 -0
  105. package/dist/identity/identity.d.ts +63 -0
  106. package/dist/identity/identity.d.ts.map +1 -0
  107. package/dist/identity/index.d.ts +10 -0
  108. package/dist/identity/index.d.ts.map +1 -0
  109. package/dist/identity/signing-middleware.d.ts +38 -0
  110. package/dist/identity/signing-middleware.d.ts.map +1 -0
  111. package/dist/import-fyg5sgq4.js +11 -0
  112. package/dist/{index-5m0g9r0y.js → index-04sq3h27.js} +1 -496
  113. package/dist/index-2r4jxwnb.js +32 -0
  114. package/dist/index-4beszbgg.js +292 -0
  115. package/dist/index-5bhe57y9.js +326 -0
  116. package/dist/index-5p6zgspx.js +77 -0
  117. package/dist/index-7t92ej34.js +544 -0
  118. package/dist/index-8fjwnztt.js +155 -0
  119. package/dist/{index-22jx9qsz.js → index-czecrvvn.js} +4 -4
  120. package/dist/index-hgd30epa.js +149 -0
  121. package/dist/index-k5b0xskw.js +1 -0
  122. package/dist/index-kbnht9p8.js +1 -0
  123. package/dist/index-n9f2qyh5.js +495 -0
  124. package/dist/index-xr7rx360.js +814 -0
  125. package/dist/index-xzym9w0m.js +43 -0
  126. package/dist/index-yp88he8n.js +316 -0
  127. package/dist/index.d.ts +23 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +9 -7
  130. package/dist/links/index.d.ts +16 -0
  131. package/dist/links/index.d.ts.map +1 -0
  132. package/dist/links/lifecycle.d.ts +112 -0
  133. package/dist/links/lifecycle.d.ts.map +1 -0
  134. package/dist/links/parser.d.ts +56 -0
  135. package/dist/links/parser.d.ts.map +1 -0
  136. package/dist/links/ref-index.d.ts +55 -0
  137. package/dist/links/ref-index.d.ts.map +1 -0
  138. package/dist/links/resolver.d.ts +90 -0
  139. package/dist/links/resolver.d.ts.map +1 -0
  140. package/dist/links/types.d.ts +70 -0
  141. package/dist/links/types.d.ts.map +1 -0
  142. package/dist/mcp/docs.d.ts +18 -0
  143. package/dist/mcp/docs.d.ts.map +1 -0
  144. package/dist/mcp/index.d.ts +9 -0
  145. package/dist/mcp/index.d.ts.map +1 -0
  146. package/dist/mcp/server.d.ts +26 -0
  147. package/dist/mcp/server.d.ts.map +1 -0
  148. package/dist/react/index.js +189 -0
  149. package/dist/sdk-sj8rp0m7.js +15 -0
  150. package/dist/semantic/csharp-parser.d.ts +12 -0
  151. package/dist/semantic/csharp-parser.d.ts.map +1 -0
  152. package/dist/semantic/go-parser.d.ts +12 -0
  153. package/dist/semantic/go-parser.d.ts.map +1 -0
  154. package/dist/semantic/index.d.ts +22 -0
  155. package/dist/semantic/index.d.ts.map +1 -0
  156. package/dist/semantic/java-parser.d.ts +12 -0
  157. package/dist/semantic/java-parser.d.ts.map +1 -0
  158. package/dist/semantic/python-parser.d.ts +12 -0
  159. package/dist/semantic/python-parser.d.ts.map +1 -0
  160. package/dist/semantic/ruby-parser.d.ts +12 -0
  161. package/dist/semantic/ruby-parser.d.ts.map +1 -0
  162. package/dist/semantic/rust-parser.d.ts +12 -0
  163. package/dist/semantic/rust-parser.d.ts.map +1 -0
  164. package/dist/semantic/semantic-merge.d.ts +20 -0
  165. package/dist/semantic/semantic-merge.d.ts.map +1 -0
  166. package/dist/semantic/ts-parser.d.ts +13 -0
  167. package/dist/semantic/ts-parser.d.ts.map +1 -0
  168. package/dist/semantic/types.d.ts +130 -0
  169. package/dist/semantic/types.d.ts.map +1 -0
  170. package/dist/server/auth.d.ts +72 -0
  171. package/dist/server/auth.d.ts.map +1 -0
  172. package/dist/server/deploy.d.ts +44 -0
  173. package/dist/server/deploy.d.ts.map +1 -0
  174. package/dist/server/import.d.ts +40 -0
  175. package/dist/server/import.d.ts.map +1 -0
  176. package/dist/server/index.d.ts +24 -0
  177. package/dist/server/index.d.ts.map +1 -0
  178. package/dist/server/index.js +60 -0
  179. package/dist/server/permissions.d.ts +84 -0
  180. package/dist/server/permissions.d.ts.map +1 -0
  181. package/dist/server/realtime.d.ts +78 -0
  182. package/dist/server/realtime.d.ts.map +1 -0
  183. package/dist/server/server.d.ts +43 -0
  184. package/dist/server/server.d.ts.map +1 -0
  185. package/dist/server/tenancy.d.ts +53 -0
  186. package/dist/server/tenancy.d.ts.map +1 -0
  187. package/dist/server-3vkpnpbz.js +11 -0
  188. package/dist/sync/http-transport.d.ts +47 -0
  189. package/dist/sync/http-transport.d.ts.map +1 -0
  190. package/dist/sync/index.d.ts +22 -0
  191. package/dist/sync/index.d.ts.map +1 -0
  192. package/dist/sync/memory-transport.d.ts +27 -0
  193. package/dist/sync/memory-transport.d.ts.map +1 -0
  194. package/dist/sync/multi-repo.d.ts +82 -0
  195. package/dist/sync/multi-repo.d.ts.map +1 -0
  196. package/dist/sync/reconciler.d.ts +48 -0
  197. package/dist/sync/reconciler.d.ts.map +1 -0
  198. package/dist/sync/sync-engine.d.ts +65 -0
  199. package/dist/sync/sync-engine.d.ts.map +1 -0
  200. package/dist/sync/types.d.ts +71 -0
  201. package/dist/sync/types.d.ts.map +1 -0
  202. package/dist/sync/ws-transport.d.ts +41 -0
  203. package/dist/sync/ws-transport.d.ts.map +1 -0
  204. package/dist/tenancy-tjr7kk2v.js +13 -0
  205. package/dist/ui/server.d.ts +38 -0
  206. package/dist/ui/server.d.ts.map +1 -0
  207. package/dist/vcs/blob-store.d.ts +49 -0
  208. package/dist/vcs/blob-store.d.ts.map +1 -0
  209. package/dist/vcs/branch.d.ts +35 -0
  210. package/dist/vcs/branch.d.ts.map +1 -0
  211. package/dist/vcs/checkpoint.d.ts +24 -0
  212. package/dist/vcs/checkpoint.d.ts.map +1 -0
  213. package/dist/vcs/decompose.d.ts +19 -0
  214. package/dist/vcs/decompose.d.ts.map +1 -0
  215. package/dist/vcs/diff.d.ts +65 -0
  216. package/dist/vcs/diff.d.ts.map +1 -0
  217. package/dist/vcs/engine-context.d.ts +21 -0
  218. package/dist/vcs/engine-context.d.ts.map +1 -0
  219. package/dist/vcs/index.d.ts +23 -0
  220. package/dist/vcs/index.d.ts.map +1 -0
  221. package/dist/vcs/issue.d.ts +159 -0
  222. package/dist/vcs/issue.d.ts.map +1 -0
  223. package/dist/vcs/merge.d.ts +55 -0
  224. package/dist/vcs/merge.d.ts.map +1 -0
  225. package/dist/vcs/milestone.d.ts +30 -0
  226. package/dist/vcs/milestone.d.ts.map +1 -0
  227. package/dist/vcs/ops.d.ts +27 -0
  228. package/dist/vcs/ops.d.ts.map +1 -0
  229. package/dist/vcs/types.d.ts +94 -0
  230. package/dist/vcs/types.d.ts.map +1 -0
  231. package/dist/vcs/vcs-middleware.d.ts +14 -0
  232. package/dist/vcs/vcs-middleware.d.ts.map +1 -0
  233. package/dist/watcher/fs-watcher.d.ts +51 -0
  234. package/dist/watcher/fs-watcher.d.ts.map +1 -0
  235. package/dist/watcher/index.d.ts +9 -0
  236. package/dist/watcher/index.d.ts.map +1 -0
  237. package/dist/watcher/ingestion.d.ts +28 -0
  238. package/dist/watcher/ingestion.d.ts.map +1 -0
  239. package/package.json +44 -4
  240. package/dist/index-hybgxe40.js +0 -1174
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Decision Hook Registry
3
+ *
4
+ * External agent harnesses register pre/post hooks to enrich decision traces
5
+ * with rationale, alternatives, prompt context, etc.
6
+ */
7
+ import type { DecisionPreHook, DecisionPostHook, DecisionContext, DecisionEnrichment } from './types.js';
8
+ export declare class HookRegistry {
9
+ private preHooks;
10
+ private postHooks;
11
+ /**
12
+ * Register a pre-hook that runs before a tool handler.
13
+ */
14
+ registerPreHook(hook: DecisionPreHook): void;
15
+ /**
16
+ * Register a post-hook that runs after a tool handler.
17
+ */
18
+ registerPostHook(hook: DecisionPostHook): void;
19
+ /**
20
+ * Remove a pre-hook by name.
21
+ */
22
+ removePreHook(name: string): void;
23
+ /**
24
+ * Remove a post-hook by name.
25
+ */
26
+ removePostHook(name: string): void;
27
+ /**
28
+ * Get all pre-hooks matching a tool name.
29
+ */
30
+ getPreHooks(toolName: string): DecisionPreHook[];
31
+ /**
32
+ * Get all post-hooks matching a tool name.
33
+ */
34
+ getPostHooks(toolName: string): DecisionPostHook[];
35
+ /**
36
+ * Run all matching pre-hooks and merge their contexts.
37
+ */
38
+ runPreHooks(toolName: string, input: Record<string, unknown>): Promise<DecisionContext>;
39
+ /**
40
+ * Run all matching post-hooks and merge their enrichments.
41
+ */
42
+ runPostHooks(toolName: string, input: Record<string, unknown>, output: unknown, preContext: DecisionContext): Promise<DecisionEnrichment>;
43
+ /**
44
+ * Clear all hooks.
45
+ */
46
+ clear(): void;
47
+ }
48
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/decisions/hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAMpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,SAAS,CAA0B;IAE3C;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAI5C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAI9C;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE;IAIhD;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAMlD;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,eAAe,CAAC;IAmB3B;;OAEG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,kBAAkB,CAAC;IAkC9B;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Decision Traces Module
3
+ *
4
+ * Auto-captures agent decision traces from MCP tool invocations as
5
+ * first-class Decision entities in the EAV store.
6
+ *
7
+ * Public API:
8
+ * - recordDecision() — persist a decision as a vcs:decisionRecord op
9
+ * - queryDecisions() — filter/list decisions from the EAV store
10
+ * - getDecisionChain() — all decisions that affected a given entity
11
+ * - HookRegistry — pre/post hook registration for external harnesses
12
+ * - wrapToolHandler() — MCP middleware for auto-capture
13
+ */
14
+ export { HookRegistry } from './hooks.js';
15
+ export { wrapToolHandler, type ToolHandler, type DecisionRecorder, type AutoCaptureOpts, } from './auto-capture.js';
16
+ export type { Decision, DecisionInput, DecisionFilter, DecisionContext, DecisionEnrichment, DecisionPreHook, DecisionPostHook, } from './types.js';
17
+ import type { VcsOp } from '../vcs/types.js';
18
+ import type { EngineContext } from '../vcs/engine-context.js';
19
+ import type { Decision, DecisionInput, DecisionFilter } from './types.js';
20
+ /**
21
+ * Record a decision trace as a vcs:decisionRecord op.
22
+ */
23
+ export declare function recordDecision(ctx: EngineContext, rootPath: string, input: DecisionInput): Promise<VcsOp>;
24
+ /**
25
+ * Query decisions with optional filters.
26
+ */
27
+ export declare function queryDecisions(ctx: EngineContext, filter?: DecisionFilter): Decision[];
28
+ /**
29
+ * Get all decisions that affected a given entity (the decision chain).
30
+ */
31
+ export declare function getDecisionChain(ctx: EngineContext, entityId: string): Decision[];
32
+ /**
33
+ * Get a single decision by ID.
34
+ */
35
+ export declare function getDecision(ctx: EngineContext, id: string): Decision | null;
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decisions/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAMpB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA6B1E;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,KAAK,CAAC,CAkChB;AAoDD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,MAAM,CAAC,EAAE,cAAc,GACtB,QAAQ,EAAE,CAsDZ;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,GACf,QAAQ,EAAE,CAqBZ;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAO3E"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Decision Trace Types
3
+ *
4
+ * Types for auto-captured agent decision traces. Decisions are first-class
5
+ * entities in the EAV store, emitted automatically from MCP tool calls
6
+ * and enrichable via pre/post hooks.
7
+ */
8
+ export interface Decision {
9
+ id: string;
10
+ toolName: string;
11
+ input?: Record<string, unknown>;
12
+ outputSummary?: string;
13
+ context?: string;
14
+ rationale?: string;
15
+ alternatives?: string[];
16
+ confidence?: number;
17
+ createdAt?: string;
18
+ createdBy?: string;
19
+ /** IDs of related entities (issues, files, milestones) affected by this decision */
20
+ relatedEntities: string[];
21
+ custom?: Record<string, unknown>;
22
+ }
23
+ export interface DecisionInput {
24
+ toolName: string;
25
+ input?: Record<string, unknown>;
26
+ outputSummary?: string;
27
+ context?: string;
28
+ rationale?: string;
29
+ alternatives?: string[];
30
+ confidence?: number;
31
+ /** Entity IDs this decision relates to (e.g. "issue:TRL-5") */
32
+ relatedEntities?: string[];
33
+ custom?: Record<string, unknown>;
34
+ }
35
+ export interface DecisionFilter {
36
+ /** Filter by MCP tool name (glob-like, e.g. "trellis_issue_*") */
37
+ toolPattern?: string;
38
+ /** Filter by agent ID */
39
+ agentId?: string;
40
+ /** Only decisions after this ISO timestamp */
41
+ since?: string;
42
+ /** Only decisions before this ISO timestamp */
43
+ until?: string;
44
+ /** Only decisions referencing this entity */
45
+ entityId?: string;
46
+ /** Max results */
47
+ limit?: number;
48
+ }
49
+ export interface DecisionContext {
50
+ prompt?: string;
51
+ conversationId?: string;
52
+ agentModel?: string;
53
+ custom?: Record<string, unknown>;
54
+ }
55
+ export interface DecisionEnrichment {
56
+ rationale?: string;
57
+ alternatives?: string[];
58
+ confidence?: number;
59
+ relatedEntities?: string[];
60
+ custom?: Record<string, unknown>;
61
+ }
62
+ export interface DecisionPreHook {
63
+ name: string;
64
+ /** Which tools to intercept — string (glob) or RegExp */
65
+ toolPattern: string | RegExp;
66
+ handler: (toolName: string, input: Record<string, unknown>) => Promise<DecisionContext>;
67
+ }
68
+ export interface DecisionPostHook {
69
+ name: string;
70
+ toolPattern: string | RegExp;
71
+ handler: (toolName: string, input: Record<string, unknown>, output: unknown, preContext: DecisionContext) => Promise<DecisionEnrichment>;
72
+ }
73
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/decisions/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAMD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAMD,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,EAAE,CACP,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,OAAO,CAAC,eAAe,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,EAAE,CACP,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,eAAe,KACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClC"}
@@ -0,0 +1,9 @@
1
+ // @bun
2
+ import {
3
+ deploy
4
+ } from "./index-hgd30epa.js";
5
+ import"./index-xzym9w0m.js";
6
+ import"./index-a76rekgs.js";
7
+ export {
8
+ deploy
9
+ };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Auto-Embedding Middleware
3
+ *
4
+ * Kernel middleware that automatically embeds entity facts and links
5
+ * on graph mutations. Runs after successful ops to index new/changed
6
+ * content into the vector store.
7
+ *
8
+ * @module trellis/embeddings
9
+ */
10
+ import type { KernelMiddleware } from '../core/kernel/middleware.js';
11
+ import type { Embedder } from './search.js';
12
+ import { VectorStore } from './store.js';
13
+ export interface AutoEmbedOptions {
14
+ /** Path to the vector store SQLite database. */
15
+ dbPath: string;
16
+ /** Custom embedder function (default: transformers.js embed). */
17
+ embedFn?: Embedder;
18
+ /** Whether to embed facts individually (default: false — only entity summaries). */
19
+ embedIndividualFacts?: boolean;
20
+ }
21
+ /**
22
+ * Creates a kernel middleware that auto-embeds entities on mutation.
23
+ *
24
+ * On addFacts/addLinks: embeds entity summaries into the vector store.
25
+ * On deleteFacts/deleteLinks: removes stale embeddings.
26
+ */
27
+ export declare function createAutoEmbedMiddleware(options: AutoEmbedOptions): KernelMiddleware & {
28
+ close: () => void;
29
+ };
30
+ export interface RAGContext {
31
+ /** The original query. */
32
+ query: string;
33
+ /** Retrieved chunks ranked by relevance. */
34
+ chunks: Array<{
35
+ content: string;
36
+ entityId: string;
37
+ score: number;
38
+ chunkType: string;
39
+ }>;
40
+ /** Total token estimate (rough: 1 token ≈ 4 chars). */
41
+ estimatedTokens: number;
42
+ }
43
+ /**
44
+ * Build a RAG context from a natural language query.
45
+ * Searches the vector store and assembles ranked context chunks.
46
+ */
47
+ export declare function buildRAGContext(query: string, vectorStore: VectorStore, embedFn?: Embedder, options?: {
48
+ maxChunks?: number;
49
+ maxTokens?: number;
50
+ minScore?: number;
51
+ }): Promise<RAGContext>;
52
+ //# sourceMappingURL=auto-embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-embed.d.ts","sourceRoot":"","sources":["../../src/embeddings/auto-embed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAuC,MAAM,8BAA8B,CAAC;AAG1G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAwCzC,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAwB7G;AA8FD,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,MAAM,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,QAAgB,EACzB,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,UAAU,CAAC,CAgCrB"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Text Chunker
3
+ *
4
+ * Strategies for splitting different content types into embeddable chunks.
5
+ * Short text is embedded as-is; markdown is split by headings; code entities
6
+ * are chunked by declaration; large text uses sliding window.
7
+ *
8
+ * @see TRL-19
9
+ */
10
+ import type { ChunkMeta } from './types.js';
11
+ /**
12
+ * Chunk an issue into embeddable pieces.
13
+ */
14
+ export declare function chunkIssue(issue: {
15
+ id: string;
16
+ title?: string;
17
+ description?: string;
18
+ }): ChunkMeta[];
19
+ /**
20
+ * Chunk a decision trace into embeddable pieces.
21
+ * Combines tool name, rationale, context, and output summary.
22
+ */
23
+ export declare function chunkDecision(decision: {
24
+ id: string;
25
+ toolName: string;
26
+ rationale?: string;
27
+ context?: string;
28
+ outputSummary?: string;
29
+ }): ChunkMeta[];
30
+ /**
31
+ * Chunk a milestone message.
32
+ */
33
+ export declare function chunkMilestone(milestone: {
34
+ id: string;
35
+ message?: string;
36
+ }): ChunkMeta[];
37
+ /**
38
+ * Chunk a markdown file by heading sections.
39
+ * Each H1/H2/H3 section becomes a separate chunk.
40
+ * Sections that exceed MAX_CHUNK_CHARS get sliding-window split.
41
+ */
42
+ export declare function chunkMarkdown(filePath: string, content: string): ChunkMeta[];
43
+ /**
44
+ * Chunk code entities (functions, classes, interfaces) from a parsed file.
45
+ * Each declaration's signature + doc-comment becomes a chunk.
46
+ */
47
+ export declare function chunkCodeEntities(filePath: string, declarations: Array<{
48
+ id: string;
49
+ name: string;
50
+ kind: string;
51
+ signature: string;
52
+ docComment?: string;
53
+ }>): ChunkMeta[];
54
+ /**
55
+ * Chunk doc-comments extracted from source files.
56
+ */
57
+ export declare function chunkDocComments(filePath: string, comments: Array<{
58
+ line: number;
59
+ text: string;
60
+ }>): ChunkMeta[];
61
+ /**
62
+ * Chunk a summary.md or similar short-to-medium text file.
63
+ */
64
+ export declare function chunkSummary(filePath: string, content: string): ChunkMeta[];
65
+ /**
66
+ * Auto-detect file type and chunk accordingly.
67
+ */
68
+ export declare function chunkFile(filePath: string, content: string): ChunkMeta[];
69
+ /**
70
+ * Split long text into overlapping windows.
71
+ */
72
+ export declare function slidingWindow(text: string): string[];
73
+ //# sourceMappingURL=chunker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/embeddings/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,YAAY,CAAC;AAevD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,SAAS,EAAE,CAyBd;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,SAAS,EAAE,CAmBd;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,SAAS,EAAE,CAYd;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAsC5E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,KAAK,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,GACD,SAAS,EAAE,CAuBb;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,SAAS,EAAE,CAsBb;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAwB3E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAkBxE;AAsCD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAYpD"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Embeddings Module — Public API
3
+ *
4
+ * Provides semantic embedding and vector search for TrellisVCS entities.
5
+ *
6
+ * @see TRL-18
7
+ */
8
+ export type { ChunkType, ChunkMeta, EmbeddingRecord, SearchResult, SearchOptions, EmbeddingModelConfig, } from './types.js';
9
+ export { DEFAULT_MODEL_CONFIG } from './types.js';
10
+ export { embed, embedBatch, loadModel, resetModel } from './model.js';
11
+ export { VectorStore, cosineSimilarity } from './store.js';
12
+ export { EmbeddingManager } from './search.js';
13
+ export type { SearchableEngine, Embedder } from './search.js';
14
+ export { createAutoEmbedMiddleware, buildRAGContext } from './auto-embed.js';
15
+ export type { AutoEmbedOptions, RAGContext } from './auto-embed.js';
16
+ export type { GraphChunkType } from './types.js';
17
+ export { chunkIssue, chunkMilestone, chunkDecision, chunkMarkdown, chunkCodeEntities, chunkDocComments, chunkSummary, chunkFile, slidingWindow, } from './chunker.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,SAAS,EACT,SAAS,EACT,eAAe,EACf,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7E,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGpE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,GACd,MAAM,cAAc,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Embedding Model
3
+ *
4
+ * Lazy-loads @huggingface/transformers (v3+) with all-MiniLM-L6-v2 (384-dim).
5
+ * Falls back to @xenova/transformers (v2) if the new package is unavailable.
6
+ * Model is loaded once on first use and cached for subsequent calls.
7
+ *
8
+ * @see TRL-18
9
+ */
10
+ import { EmbeddingModelConfig } from './types.js';
11
+ /**
12
+ * Load the embedding model lazily. Returns the feature-extraction pipeline.
13
+ * Subsequent calls return the cached pipeline.
14
+ */
15
+ export declare function loadModel(config?: EmbeddingModelConfig): Promise<any>;
16
+ /**
17
+ * Generate an embedding vector for the given text.
18
+ * Returns a Float32Array of length `config.dimension` (default: 384).
19
+ */
20
+ export declare function embed(text: string, config?: EmbeddingModelConfig): Promise<Float32Array>;
21
+ /**
22
+ * Generate embeddings for multiple texts in a batch.
23
+ * More efficient than calling embed() individually.
24
+ */
25
+ export declare function embedBatch(texts: string[], config?: EmbeddingModelConfig): Promise<Float32Array[]>;
26
+ /**
27
+ * Reset the model singleton. Useful for testing.
28
+ */
29
+ export declare function resetModel(): void;
30
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/embeddings/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAwB,MAAM,YAAY,CAAC;AA2BxE;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,GAAE,oBAA2C,GAClD,OAAO,CAAC,GAAG,CAAC,CAoBd;AAED;;;GAGG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,oBAA2C,GAClD,OAAO,CAAC,YAAY,CAAC,CAKvB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,GAAE,oBAA2C,GAClD,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAGjC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Semantic Search Integration
3
+ *
4
+ * Connects the TrellisVcsEngine to the embedding system.
5
+ * Provides reindex (full rebuild) and search (query → ranked results).
6
+ * The embedder function is pluggable for testing with mock vectors.
7
+ *
8
+ * @see TRL-20
9
+ */
10
+ import type { SearchOptions, SearchResult } from './types.js';
11
+ /** Minimal engine interface — avoids importing the full engine for testability */
12
+ export interface SearchableEngine {
13
+ getRootPath(): string;
14
+ trackedFiles(): Array<{
15
+ path: string;
16
+ contentHash?: string;
17
+ }>;
18
+ listIssues(filters?: any): Array<{
19
+ id: string;
20
+ title?: string;
21
+ description?: string;
22
+ }>;
23
+ listMilestones(): Array<{
24
+ id: string;
25
+ message?: string;
26
+ }>;
27
+ queryDecisions?(): Array<{
28
+ id: string;
29
+ toolName: string;
30
+ rationale?: string;
31
+ context?: string;
32
+ outputSummary?: string;
33
+ }>;
34
+ parseFile?(filePath: string): any;
35
+ }
36
+ /** Embedder function type — maps text → vector. Pluggable for testing. */
37
+ export type Embedder = (text: string) => Promise<Float32Array>;
38
+ export declare class EmbeddingManager {
39
+ private store;
40
+ private embedFn;
41
+ constructor(dbPath: string, embedFn?: Embedder);
42
+ /**
43
+ * Full reindex: clear store, re-chunk all entities, embed, and insert.
44
+ */
45
+ reindex(engine: SearchableEngine): Promise<{
46
+ chunks: number;
47
+ }>;
48
+ /**
49
+ * Incrementally index a single file (on file change).
50
+ */
51
+ indexFile(filePath: string, content: string, engine?: SearchableEngine): Promise<number>;
52
+ /**
53
+ * Index an issue (on create/update).
54
+ */
55
+ indexIssue(issue: {
56
+ id: string;
57
+ title?: string;
58
+ description?: string;
59
+ }): Promise<number>;
60
+ /**
61
+ * Index a milestone (on create).
62
+ */
63
+ indexMilestone(milestone: {
64
+ id: string;
65
+ message?: string;
66
+ }): Promise<number>;
67
+ /**
68
+ * Semantic search: embed query → vector search → ranked results.
69
+ */
70
+ search(query: string, opts?: SearchOptions): Promise<SearchResult[]>;
71
+ /**
72
+ * Remove all data for a file.
73
+ */
74
+ removeFile(filePath: string): void;
75
+ /**
76
+ * Get store statistics.
77
+ */
78
+ stats(): {
79
+ total: number;
80
+ byType: Record<string, number>;
81
+ };
82
+ /**
83
+ * Close the store.
84
+ */
85
+ close(): void;
86
+ }
87
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/embeddings/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,KAAK,EAGV,aAAa,EACb,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB,kFAAkF;AAClF,MAAM,WAAW,gBAAgB;IAC/B,WAAW,IAAI,MAAM,CAAC;IACtB,YAAY,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC;QAC/B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,cAAc,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,cAAc,CAAC,IAAI,KAAK,CAAC;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;CACnC;AAED,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAM/D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAW;gBAEd,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ;IAK9C;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAuFpE;;OAEG;IACG,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,CAAC;IAsDlB;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE;QACtB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBnB;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE;QAC9B,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBnB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAK1E;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,KAAK,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAO1D;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Embedding Vector Store
3
+ *
4
+ * Persistent storage for embedding vectors using bun:sqlite.
5
+ * Vectors are stored as Float32Array blobs; cosine similarity
6
+ * is computed in JavaScript for cross-platform portability.
7
+ *
8
+ * @see TRL-18
9
+ */
10
+ import type { ChunkMeta, EmbeddingRecord, SearchOptions, SearchResult } from './types.js';
11
+ export declare class VectorStore {
12
+ private db;
13
+ constructor(dbPath: string);
14
+ /**
15
+ * Insert or update a chunk with its embedding vector.
16
+ */
17
+ upsert(record: EmbeddingRecord): void;
18
+ /**
19
+ * Batch upsert multiple records.
20
+ */
21
+ upsertBatch(records: EmbeddingRecord[]): void;
22
+ /**
23
+ * Delete a chunk and its vector by ID.
24
+ */
25
+ delete(id: string): void;
26
+ /**
27
+ * Delete all chunks for an entity.
28
+ */
29
+ deleteByEntity(entityId: string): void;
30
+ /**
31
+ * Delete all chunks associated with a file path.
32
+ */
33
+ deleteByFile(filePath: string): void;
34
+ /**
35
+ * Get a chunk by ID (without vector).
36
+ */
37
+ getChunk(id: string): ChunkMeta | null;
38
+ /**
39
+ * Search for chunks similar to the query vector.
40
+ * Uses brute-force cosine similarity scan.
41
+ */
42
+ search(queryVector: Float32Array, opts?: SearchOptions): SearchResult[];
43
+ /**
44
+ * Get total count of chunks in the store.
45
+ */
46
+ count(): number;
47
+ /**
48
+ * Get count by chunk type.
49
+ */
50
+ countByType(): Record<string, number>;
51
+ /**
52
+ * Clear all data from the store.
53
+ */
54
+ clear(): void;
55
+ /**
56
+ * Close the database connection.
57
+ */
58
+ close(): void;
59
+ }
60
+ /**
61
+ * Compute cosine similarity between two vectors.
62
+ * Both vectors should already be normalized (output of mean pooling + normalize).
63
+ * For normalized vectors, cosine similarity = dot product.
64
+ */
65
+ export declare function cosineSimilarity(a: Float32Array, b: Float32Array): number;
66
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/embeddings/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,SAAS,EAET,eAAe,EACf,aAAa,EACb,YAAY,EACb,MAAM,YAAY,CAAC;AA+BpB,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAW;gBAET,MAAM,EAAE,MAAM;IAO1B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IA4BrC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IA+B7C;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKxB;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAetC;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAepC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQtC;;;OAGG;IACH,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,EAAE;IAwD3E;;OAEG;IACH,KAAK,IAAI,MAAM;IAOf;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAarC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAiBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAYzE"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Embedding Types
3
+ *
4
+ * Types for the semantic embedding and vector search system.
5
+ *
6
+ * @see TRL-18
7
+ */
8
+ export type ChunkType = 'issue_title' | 'issue_desc' | 'milestone_msg' | 'decision_rationale' | 'summary_md' | 'code_entity' | 'doc_comment' | 'markdown';
9
+ export interface ChunkMeta {
10
+ /** Unique chunk ID, e.g. "issue:TRL-5:title", "file:src/engine.ts:chunk:0" */
11
+ id: string;
12
+ /** EAV entity ID this chunk belongs to */
13
+ entityId: string;
14
+ /** Original text content */
15
+ content: string;
16
+ /** Chunk classification */
17
+ chunkType: ChunkType;
18
+ /** Source file path (nullable for non-file entities) */
19
+ filePath?: string;
20
+ /** When this chunk was last updated */
21
+ updatedAt: string;
22
+ }
23
+ export interface EmbeddingRecord extends ChunkMeta {
24
+ /** 384-dimensional embedding vector */
25
+ embedding: Float32Array;
26
+ }
27
+ export interface SearchResult {
28
+ /** Chunk metadata */
29
+ chunk: ChunkMeta;
30
+ /** Cosine similarity score (0..1) */
31
+ score: number;
32
+ }
33
+ export interface SearchOptions {
34
+ /** Max results to return (default: 10) */
35
+ limit?: number;
36
+ /** Filter by chunk type(s) */
37
+ types?: ChunkType[];
38
+ /** Filter by file path prefix */
39
+ filePrefix?: string;
40
+ /** Minimum similarity threshold (default: 0.0) */
41
+ minScore?: number;
42
+ }
43
+ export interface EmbeddingModelConfig {
44
+ /** Model name for transformers.js (default: "Xenova/all-MiniLM-L6-v2") */
45
+ modelName: string;
46
+ /** Embedding dimension (default: 384) */
47
+ dimension: number;
48
+ /** Cache directory for model files */
49
+ cacheDir?: string;
50
+ }
51
+ export declare const DEFAULT_MODEL_CONFIG: EmbeddingModelConfig;
52
+ /** New chunk types for generic graph entities */
53
+ export type GraphChunkType = ChunkType | 'entity_summary' | 'entity_fact' | 'entity_link';
54
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/embeddings/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,YAAY,GACZ,eAAe,GACf,oBAAoB,GACpB,YAAY,GACZ,aAAa,GACb,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,uCAAuC;IACvC,SAAS,EAAE,YAAY,CAAC;CACzB;AAMD,MAAM,WAAW,YAAY;IAC3B,qBAAqB;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,oBAAoB,EAAE,oBAGlC,CAAC;AAEF,iDAAiD;AACjD,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,gBAAgB,GAChB,aAAa,GACb,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ // @bun
2
+ import {
3
+ QueryEngine
4
+ } from "./index-yp88he8n.js";
5
+ import"./index-a76rekgs.js";
6
+ export {
7
+ QueryEngine
8
+ };