@soederpop/luca 0.0.2

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 (358) hide show
  1. package/CLAUDE.md +71 -0
  2. package/README.md +78 -0
  3. package/bun.lock +2928 -0
  4. package/bunfig.toml +3 -0
  5. package/commands/audit-docs.ts +740 -0
  6. package/commands/build-scaffolds.ts +154 -0
  7. package/commands/generate-api-docs.ts +114 -0
  8. package/commands/update-introspection.ts +67 -0
  9. package/docs/CLI.md +335 -0
  10. package/docs/README.md +88 -0
  11. package/docs/TABLE-OF-CONTENTS.md +157 -0
  12. package/docs/apis/clients/elevenlabs.md +84 -0
  13. package/docs/apis/clients/graph.md +56 -0
  14. package/docs/apis/clients/openai.md +69 -0
  15. package/docs/apis/clients/rest.md +41 -0
  16. package/docs/apis/clients/websocket.md +107 -0
  17. package/docs/apis/features/agi/assistant.md +471 -0
  18. package/docs/apis/features/agi/assistants-manager.md +154 -0
  19. package/docs/apis/features/agi/claude-code.md +602 -0
  20. package/docs/apis/features/agi/conversation-history.md +352 -0
  21. package/docs/apis/features/agi/conversation.md +333 -0
  22. package/docs/apis/features/agi/docs-reader.md +121 -0
  23. package/docs/apis/features/agi/openai-codex.md +318 -0
  24. package/docs/apis/features/agi/openapi.md +138 -0
  25. package/docs/apis/features/agi/semantic-search.md +387 -0
  26. package/docs/apis/features/agi/skills-library.md +216 -0
  27. package/docs/apis/features/node/container-link.md +133 -0
  28. package/docs/apis/features/node/content-db.md +313 -0
  29. package/docs/apis/features/node/disk-cache.md +379 -0
  30. package/docs/apis/features/node/dns.md +651 -0
  31. package/docs/apis/features/node/docker.md +705 -0
  32. package/docs/apis/features/node/downloader.md +81 -0
  33. package/docs/apis/features/node/esbuild.md +59 -0
  34. package/docs/apis/features/node/file-manager.md +182 -0
  35. package/docs/apis/features/node/fs.md +581 -0
  36. package/docs/apis/features/node/git.md +330 -0
  37. package/docs/apis/features/node/google-auth.md +174 -0
  38. package/docs/apis/features/node/google-calendar.md +187 -0
  39. package/docs/apis/features/node/google-docs.md +151 -0
  40. package/docs/apis/features/node/google-drive.md +225 -0
  41. package/docs/apis/features/node/google-sheets.md +179 -0
  42. package/docs/apis/features/node/grep.md +290 -0
  43. package/docs/apis/features/node/helpers.md +135 -0
  44. package/docs/apis/features/node/ink.md +334 -0
  45. package/docs/apis/features/node/ipc-socket.md +260 -0
  46. package/docs/apis/features/node/json-tree.md +86 -0
  47. package/docs/apis/features/node/launcher-app-command-listener.md +145 -0
  48. package/docs/apis/features/node/networking.md +281 -0
  49. package/docs/apis/features/node/nlp.md +133 -0
  50. package/docs/apis/features/node/opener.md +97 -0
  51. package/docs/apis/features/node/os.md +118 -0
  52. package/docs/apis/features/node/package-finder.md +402 -0
  53. package/docs/apis/features/node/postgres.md +212 -0
  54. package/docs/apis/features/node/proc.md +430 -0
  55. package/docs/apis/features/node/process-manager.md +210 -0
  56. package/docs/apis/features/node/python.md +278 -0
  57. package/docs/apis/features/node/repl.md +88 -0
  58. package/docs/apis/features/node/runpod.md +673 -0
  59. package/docs/apis/features/node/secure-shell.md +169 -0
  60. package/docs/apis/features/node/semantic-search.md +401 -0
  61. package/docs/apis/features/node/sqlite.md +211 -0
  62. package/docs/apis/features/node/telegram.md +254 -0
  63. package/docs/apis/features/node/tts.md +118 -0
  64. package/docs/apis/features/node/ui.md +703 -0
  65. package/docs/apis/features/node/vault.md +64 -0
  66. package/docs/apis/features/node/vm.md +84 -0
  67. package/docs/apis/features/node/window-manager.md +337 -0
  68. package/docs/apis/features/node/yaml-tree.md +85 -0
  69. package/docs/apis/features/node/yaml.md +176 -0
  70. package/docs/apis/features/web/asset-loader.md +47 -0
  71. package/docs/apis/features/web/container-link.md +133 -0
  72. package/docs/apis/features/web/esbuild.md +59 -0
  73. package/docs/apis/features/web/helpers.md +135 -0
  74. package/docs/apis/features/web/network.md +30 -0
  75. package/docs/apis/features/web/speech.md +55 -0
  76. package/docs/apis/features/web/vault.md +64 -0
  77. package/docs/apis/features/web/vm.md +84 -0
  78. package/docs/apis/features/web/voice.md +67 -0
  79. package/docs/apis/servers/express.md +127 -0
  80. package/docs/apis/servers/mcp.md +213 -0
  81. package/docs/apis/servers/websocket.md +99 -0
  82. package/docs/documentation-audit.md +134 -0
  83. package/docs/examples/content-db.md +77 -0
  84. package/docs/examples/disk-cache.md +83 -0
  85. package/docs/examples/docker.md +101 -0
  86. package/docs/examples/downloader.md +70 -0
  87. package/docs/examples/esbuild.md +80 -0
  88. package/docs/examples/file-manager.md +82 -0
  89. package/docs/examples/fs.md +83 -0
  90. package/docs/examples/git.md +85 -0
  91. package/docs/examples/google-auth.md +88 -0
  92. package/docs/examples/google-calendar.md +94 -0
  93. package/docs/examples/google-docs.md +82 -0
  94. package/docs/examples/google-drive.md +96 -0
  95. package/docs/examples/google-sheets.md +95 -0
  96. package/docs/examples/grep.md +85 -0
  97. package/docs/examples/ink-blocks.md +75 -0
  98. package/docs/examples/ink-renderer.md +41 -0
  99. package/docs/examples/ink.md +103 -0
  100. package/docs/examples/ipc-socket.md +103 -0
  101. package/docs/examples/json-tree.md +91 -0
  102. package/docs/examples/launcher-app-command-listener.md +120 -0
  103. package/docs/examples/networking.md +58 -0
  104. package/docs/examples/nlp.md +91 -0
  105. package/docs/examples/opener.md +78 -0
  106. package/docs/examples/os.md +72 -0
  107. package/docs/examples/package-finder.md +89 -0
  108. package/docs/examples/port-exposer.md +89 -0
  109. package/docs/examples/postgres.md +91 -0
  110. package/docs/examples/proc.md +81 -0
  111. package/docs/examples/process-manager.md +79 -0
  112. package/docs/examples/python.md +91 -0
  113. package/docs/examples/repl.md +93 -0
  114. package/docs/examples/runpod.md +119 -0
  115. package/docs/examples/secure-shell.md +92 -0
  116. package/docs/examples/sqlite.md +86 -0
  117. package/docs/examples/telegram.md +77 -0
  118. package/docs/examples/tts.md +86 -0
  119. package/docs/examples/ui.md +80 -0
  120. package/docs/examples/vault.md +70 -0
  121. package/docs/examples/vm.md +86 -0
  122. package/docs/examples/window-manager.md +125 -0
  123. package/docs/examples/yaml-tree.md +93 -0
  124. package/docs/examples/yaml.md +104 -0
  125. package/docs/ideas/class-registration-refactor-possibilities.md +197 -0
  126. package/docs/ideas/container-use-api.md +9 -0
  127. package/docs/ideas/easy-auth-for-express-servers-and-luca-serve.md +0 -0
  128. package/docs/ideas/feature-stacks.md +22 -0
  129. package/docs/ideas/luca-cli-self-sufficiency-demo.md +23 -0
  130. package/docs/ideas/mcp-design.md +9 -0
  131. package/docs/ideas/web-container-debugging-feature.md +13 -0
  132. package/docs/introspection-audit.md +49 -0
  133. package/docs/introspection.md +154 -0
  134. package/docs/mcp/readme.md +162 -0
  135. package/docs/models.ts +38 -0
  136. package/docs/philosophy.md +85 -0
  137. package/docs/principles.md +7 -0
  138. package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +34 -0
  139. package/docs/prompts/mcp-test-easy-command.md +27 -0
  140. package/docs/reports/assistant-bugs.md +38 -0
  141. package/docs/reports/attach-pattern-usage.md +18 -0
  142. package/docs/reports/code-audit-results.md +391 -0
  143. package/docs/reports/introspection-audit-tasks.md +378 -0
  144. package/docs/reports/luca-mcp-improvements.md +128 -0
  145. package/docs/scaffolds/client.md +140 -0
  146. package/docs/scaffolds/command.md +106 -0
  147. package/docs/scaffolds/endpoint.md +176 -0
  148. package/docs/scaffolds/feature.md +148 -0
  149. package/docs/scaffolds/server.md +187 -0
  150. package/docs/tasks/web-container-helper-discovery.md +71 -0
  151. package/docs/todos.md +1 -0
  152. package/docs/tutorials/01-getting-started.md +106 -0
  153. package/docs/tutorials/02-container.md +210 -0
  154. package/docs/tutorials/03-scripts.md +194 -0
  155. package/docs/tutorials/04-features-overview.md +196 -0
  156. package/docs/tutorials/05-state-and-events.md +171 -0
  157. package/docs/tutorials/06-servers.md +157 -0
  158. package/docs/tutorials/07-endpoints.md +198 -0
  159. package/docs/tutorials/08-commands.md +171 -0
  160. package/docs/tutorials/09-clients.md +162 -0
  161. package/docs/tutorials/10-creating-features.md +198 -0
  162. package/docs/tutorials/11-contentbase.md +191 -0
  163. package/docs/tutorials/12-assistants.md +215 -0
  164. package/docs/tutorials/13-introspection.md +147 -0
  165. package/docs/tutorials/14-type-system.md +174 -0
  166. package/docs/tutorials/15-project-patterns.md +222 -0
  167. package/docs/tutorials/16-google-features.md +534 -0
  168. package/docs/tutorials/17-tui-blocks.md +530 -0
  169. package/docs/tutorials/18-semantic-search.md +334 -0
  170. package/index.ts +1 -0
  171. package/luca.console.ts +9 -0
  172. package/main.py +6 -0
  173. package/package.json +154 -0
  174. package/pyproject.toml +7 -0
  175. package/scripts/animations/chrome-glitch.ts +55 -0
  176. package/scripts/animations/index.ts +16 -0
  177. package/scripts/animations/neon-pulse.ts +64 -0
  178. package/scripts/animations/types.ts +6 -0
  179. package/scripts/build-web.ts +28 -0
  180. package/scripts/examples/ask-luca-expert.ts +42 -0
  181. package/scripts/examples/assistant-questions.ts +12 -0
  182. package/scripts/examples/excalidraw-expert.ts +75 -0
  183. package/scripts/examples/expert-chat.ts +0 -0
  184. package/scripts/examples/file-manager.ts +14 -0
  185. package/scripts/examples/ideas.ts +12 -0
  186. package/scripts/examples/interactive-chat.ts +20 -0
  187. package/scripts/examples/openai-tool-calls.ts +113 -0
  188. package/scripts/examples/opening-a-web-browser.ts +5 -0
  189. package/scripts/examples/telegram-bot.ts +79 -0
  190. package/scripts/examples/telegram-ink-ui.ts +302 -0
  191. package/scripts/examples/using-assistant-with-mcp.ts +560 -0
  192. package/scripts/examples/using-claude-code.ts +10 -0
  193. package/scripts/examples/using-contentdb.ts +35 -0
  194. package/scripts/examples/using-conversations.ts +35 -0
  195. package/scripts/examples/using-disk-cache.ts +10 -0
  196. package/scripts/examples/using-docker-shell.ts +75 -0
  197. package/scripts/examples/using-elevenlabs.ts +25 -0
  198. package/scripts/examples/using-google-calendar.ts +57 -0
  199. package/scripts/examples/using-google-docs.ts +74 -0
  200. package/scripts/examples/using-google-drive.ts +74 -0
  201. package/scripts/examples/using-google-sheets.ts +89 -0
  202. package/scripts/examples/using-nlp.ts +55 -0
  203. package/scripts/examples/using-ollama.ts +10 -0
  204. package/scripts/examples/using-openai-codex.ts +23 -0
  205. package/scripts/examples/using-postgres.ts +55 -0
  206. package/scripts/examples/using-runpod.ts +32 -0
  207. package/scripts/examples/using-tts.ts +40 -0
  208. package/scripts/examples/vm-loading-esm-modules.ts +16 -0
  209. package/scripts/scaffold.ts +391 -0
  210. package/scripts/scratch.ts +15 -0
  211. package/scripts/test-command-listener.ts +123 -0
  212. package/scripts/test-window-manager-lifecycle.ts +86 -0
  213. package/scripts/test-window-manager.ts +43 -0
  214. package/scripts/update-introspection-data.ts +58 -0
  215. package/src/agi/README.md +14 -0
  216. package/src/agi/container.server.ts +114 -0
  217. package/src/agi/endpoints/ask.ts +60 -0
  218. package/src/agi/endpoints/conversations/[id].ts +45 -0
  219. package/src/agi/endpoints/conversations.ts +31 -0
  220. package/src/agi/endpoints/experts.ts +37 -0
  221. package/src/agi/features/assistant.ts +767 -0
  222. package/src/agi/features/assistants-manager.ts +260 -0
  223. package/src/agi/features/claude-code.ts +1111 -0
  224. package/src/agi/features/conversation-history.ts +497 -0
  225. package/src/agi/features/conversation.ts +799 -0
  226. package/src/agi/features/openai-codex.ts +631 -0
  227. package/src/agi/features/openapi.ts +438 -0
  228. package/src/agi/features/skills-library.ts +425 -0
  229. package/src/agi/index.ts +6 -0
  230. package/src/agi/lib/token-counter.ts +122 -0
  231. package/src/browser.ts +25 -0
  232. package/src/bus.ts +100 -0
  233. package/src/cli/cli.ts +70 -0
  234. package/src/client.ts +461 -0
  235. package/src/clients/civitai/index.ts +541 -0
  236. package/src/clients/client-template.ts +41 -0
  237. package/src/clients/comfyui/index.ts +597 -0
  238. package/src/clients/elevenlabs/index.ts +291 -0
  239. package/src/clients/openai/index.ts +451 -0
  240. package/src/clients/supabase/index.ts +366 -0
  241. package/src/command.ts +164 -0
  242. package/src/commands/chat.ts +182 -0
  243. package/src/commands/console.ts +192 -0
  244. package/src/commands/describe.ts +433 -0
  245. package/src/commands/eval.ts +116 -0
  246. package/src/commands/help.ts +214 -0
  247. package/src/commands/index.ts +14 -0
  248. package/src/commands/mcp.ts +64 -0
  249. package/src/commands/prompt.ts +807 -0
  250. package/src/commands/run.ts +257 -0
  251. package/src/commands/sandbox-mcp.ts +439 -0
  252. package/src/commands/scaffold.ts +79 -0
  253. package/src/commands/serve.ts +172 -0
  254. package/src/container.ts +781 -0
  255. package/src/endpoint.ts +340 -0
  256. package/src/feature.ts +75 -0
  257. package/src/hash-object.ts +97 -0
  258. package/src/helper.ts +543 -0
  259. package/src/introspection/generated.agi.ts +23388 -0
  260. package/src/introspection/generated.node.ts +18899 -0
  261. package/src/introspection/generated.web.ts +2021 -0
  262. package/src/introspection/index.ts +256 -0
  263. package/src/introspection/scan.ts +912 -0
  264. package/src/node/container.ts +354 -0
  265. package/src/node/feature.ts +13 -0
  266. package/src/node/features/container-link.ts +558 -0
  267. package/src/node/features/content-db.ts +475 -0
  268. package/src/node/features/disk-cache.ts +382 -0
  269. package/src/node/features/dns.ts +655 -0
  270. package/src/node/features/docker.ts +912 -0
  271. package/src/node/features/downloader.ts +92 -0
  272. package/src/node/features/esbuild.ts +68 -0
  273. package/src/node/features/file-manager.ts +357 -0
  274. package/src/node/features/fs.ts +534 -0
  275. package/src/node/features/git.ts +492 -0
  276. package/src/node/features/google-auth.ts +502 -0
  277. package/src/node/features/google-calendar.ts +300 -0
  278. package/src/node/features/google-docs.ts +404 -0
  279. package/src/node/features/google-drive.ts +339 -0
  280. package/src/node/features/google-sheets.ts +279 -0
  281. package/src/node/features/grep.ts +406 -0
  282. package/src/node/features/helpers.ts +374 -0
  283. package/src/node/features/ink.ts +490 -0
  284. package/src/node/features/ipc-socket.ts +459 -0
  285. package/src/node/features/json-tree.ts +188 -0
  286. package/src/node/features/launcher-app-command-listener.ts +388 -0
  287. package/src/node/features/networking.ts +925 -0
  288. package/src/node/features/nlp.ts +211 -0
  289. package/src/node/features/opener.ts +166 -0
  290. package/src/node/features/os.ts +157 -0
  291. package/src/node/features/package-finder.ts +539 -0
  292. package/src/node/features/port-exposer.ts +342 -0
  293. package/src/node/features/postgres.ts +273 -0
  294. package/src/node/features/proc.ts +502 -0
  295. package/src/node/features/process-manager.ts +542 -0
  296. package/src/node/features/python.ts +444 -0
  297. package/src/node/features/repl.ts +194 -0
  298. package/src/node/features/runpod.ts +802 -0
  299. package/src/node/features/secure-shell.ts +248 -0
  300. package/src/node/features/semantic-search.ts +924 -0
  301. package/src/node/features/sqlite.ts +289 -0
  302. package/src/node/features/telegram.ts +342 -0
  303. package/src/node/features/tts.ts +184 -0
  304. package/src/node/features/ui.ts +857 -0
  305. package/src/node/features/vault.ts +164 -0
  306. package/src/node/features/vm.ts +312 -0
  307. package/src/node/features/window-manager.ts +804 -0
  308. package/src/node/features/yaml-tree.ts +149 -0
  309. package/src/node/features/yaml.ts +132 -0
  310. package/src/node.ts +70 -0
  311. package/src/react/index.ts +175 -0
  312. package/src/registry.ts +199 -0
  313. package/src/scaffolds/generated.ts +1613 -0
  314. package/src/scaffolds/template.ts +37 -0
  315. package/src/schemas/base.ts +255 -0
  316. package/src/server.ts +135 -0
  317. package/src/servers/express.ts +209 -0
  318. package/src/servers/mcp.ts +805 -0
  319. package/src/servers/socket.ts +120 -0
  320. package/src/state.ts +101 -0
  321. package/src/web/clients/socket.ts +82 -0
  322. package/src/web/container.ts +74 -0
  323. package/src/web/extension.ts +30 -0
  324. package/src/web/feature.ts +12 -0
  325. package/src/web/features/asset-loader.ts +64 -0
  326. package/src/web/features/container-link.ts +385 -0
  327. package/src/web/features/esbuild.ts +79 -0
  328. package/src/web/features/helpers.ts +267 -0
  329. package/src/web/features/network.ts +61 -0
  330. package/src/web/features/speech.ts +87 -0
  331. package/src/web/features/vault.ts +189 -0
  332. package/src/web/features/vm.ts +78 -0
  333. package/src/web/features/voice-recognition.ts +129 -0
  334. package/src/web/shims/isomorphic-vm.ts +149 -0
  335. package/test/bus.test.ts +134 -0
  336. package/test/clients-servers.test.ts +216 -0
  337. package/test/container-link.test.ts +274 -0
  338. package/test/features.test.ts +160 -0
  339. package/test/integration.test.ts +787 -0
  340. package/test/node-container.test.ts +121 -0
  341. package/test/rate-limit.test.ts +272 -0
  342. package/test/semantic-search.test.ts +550 -0
  343. package/test/state.test.ts +121 -0
  344. package/test-integration/assistant.test.ts +138 -0
  345. package/test-integration/assistants-manager.test.ts +123 -0
  346. package/test-integration/claude-code.test.ts +98 -0
  347. package/test-integration/conversation-history.test.ts +205 -0
  348. package/test-integration/conversation.test.ts +137 -0
  349. package/test-integration/elevenlabs.test.ts +55 -0
  350. package/test-integration/google-services.test.ts +80 -0
  351. package/test-integration/helpers.ts +89 -0
  352. package/test-integration/openai-codex.test.ts +93 -0
  353. package/test-integration/runpod.test.ts +58 -0
  354. package/test-integration/server-endpoints.test.ts +97 -0
  355. package/test-integration/skills-library.test.ts +157 -0
  356. package/test-integration/telegram.test.ts +46 -0
  357. package/tsconfig.json +58 -0
  358. package/uv.lock +8 -0
@@ -0,0 +1,387 @@
1
+ # SemanticSearch (features.semanticSearch)
2
+
3
+ No description provided
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('semanticSearch', {
9
+ // Path to the SQLite database file
10
+ dbPath,
11
+ // GGUF model name
12
+ embeddingModel,
13
+ // Where to generate embeddings
14
+ embeddingProvider,
15
+ // How to split documents
16
+ chunkStrategy,
17
+ // Token limit per chunk for fixed strategy
18
+ chunkSize,
19
+ // Overlap ratio for fixed strategy
20
+ chunkOverlap,
21
+ })
22
+ ```
23
+
24
+ ## Options (Zod v4 schema)
25
+
26
+ | Property | Type | Description |
27
+ |----------|------|-------------|
28
+ | `dbPath` | `string` | Path to the SQLite database file |
29
+ | `embeddingModel` | `string` | GGUF model name |
30
+ | `embeddingProvider` | `string` | Where to generate embeddings |
31
+ | `chunkStrategy` | `string` | How to split documents |
32
+ | `chunkSize` | `number` | Token limit per chunk for fixed strategy |
33
+ | `chunkOverlap` | `number` | Overlap ratio for fixed strategy |
34
+
35
+ ## Methods
36
+
37
+ ### initDb
38
+
39
+ **Returns:** `Promise<void>`
40
+
41
+
42
+
43
+ ### insertDocument
44
+
45
+ **Parameters:**
46
+
47
+ | Name | Type | Required | Description |
48
+ |------|------|----------|-------------|
49
+ | `doc` | `DocumentInput` | ✓ | Parameter doc |
50
+
51
+ `DocumentInput` properties:
52
+
53
+ | Property | Type | Description |
54
+ |----------|------|-------------|
55
+ | `pathId` | `string` | |
56
+ | `model` | `string` | |
57
+ | `title` | `string` | |
58
+ | `slug` | `string` | |
59
+ | `meta` | `Record<string, any>` | |
60
+ | `content` | `string` | |
61
+ | `sections` | `Array<{ heading: string; headingPath: string; content: string; level: number }>` | |
62
+
63
+ **Returns:** `void`
64
+
65
+
66
+
67
+ ### insertChunk
68
+
69
+ **Parameters:**
70
+
71
+ | Name | Type | Required | Description |
72
+ |------|------|----------|-------------|
73
+ | `chunk` | `Chunk` | ✓ | Parameter chunk |
74
+
75
+ `Chunk` properties:
76
+
77
+ | Property | Type | Description |
78
+ |----------|------|-------------|
79
+ | `pathId` | `string` | |
80
+ | `section` | `string` | |
81
+ | `headingPath` | `string` | |
82
+ | `seq` | `number` | |
83
+ | `content` | `string` | |
84
+ | `contentHash` | `string` | |
85
+ | `embedding` | `Float32Array` | ✓ | Parameter embedding |
86
+
87
+ **Returns:** `void`
88
+
89
+
90
+
91
+ ### removeDocument
92
+
93
+ **Parameters:**
94
+
95
+ | Name | Type | Required | Description |
96
+ |------|------|----------|-------------|
97
+ | `pathId` | `string` | ✓ | Parameter pathId |
98
+
99
+ **Returns:** `void`
100
+
101
+
102
+
103
+ ### getStats
104
+
105
+ **Returns:** `IndexStatus`
106
+
107
+
108
+
109
+ ### embed
110
+
111
+ **Parameters:**
112
+
113
+ | Name | Type | Required | Description |
114
+ |------|------|----------|-------------|
115
+ | `texts` | `string[]` | ✓ | Parameter texts |
116
+
117
+ **Returns:** `Promise<number[][]>`
118
+
119
+
120
+
121
+ ### ensureModel
122
+
123
+ **Returns:** `Promise<void>`
124
+
125
+
126
+
127
+ ### disposeModel
128
+
129
+ **Returns:** `Promise<void>`
130
+
131
+
132
+
133
+ ### getDimensions
134
+
135
+ **Returns:** `number`
136
+
137
+
138
+
139
+ ### chunkDocument
140
+
141
+ **Parameters:**
142
+
143
+ | Name | Type | Required | Description |
144
+ |------|------|----------|-------------|
145
+ | `doc` | `DocumentInput` | ✓ | Parameter doc |
146
+
147
+ `DocumentInput` properties:
148
+
149
+ | Property | Type | Description |
150
+ |----------|------|-------------|
151
+ | `pathId` | `string` | |
152
+ | `model` | `string` | |
153
+ | `title` | `string` | |
154
+ | `slug` | `string` | |
155
+ | `meta` | `Record<string, any>` | |
156
+ | `content` | `string` | |
157
+ | `sections` | `Array<{ heading: string; headingPath: string; content: string; level: number }>` | |
158
+ | `strategy` | `'section' | 'fixed' | 'document'` | | Parameter strategy |
159
+
160
+ **Returns:** `Chunk[]`
161
+
162
+
163
+
164
+ ### search
165
+
166
+ **Parameters:**
167
+
168
+ | Name | Type | Required | Description |
169
+ |------|------|----------|-------------|
170
+ | `query` | `string` | ✓ | Parameter query |
171
+ | `options` | `SearchOptions` | | Parameter options |
172
+
173
+ `SearchOptions` properties:
174
+
175
+ | Property | Type | Description |
176
+ |----------|------|-------------|
177
+ | `limit` | `number` | |
178
+ | `model` | `string` | |
179
+ | `where` | `Record<string, any>` | |
180
+
181
+ **Returns:** `Promise<SearchResult[]>`
182
+
183
+
184
+
185
+ ### vectorSearch
186
+
187
+ **Parameters:**
188
+
189
+ | Name | Type | Required | Description |
190
+ |------|------|----------|-------------|
191
+ | `query` | `string` | ✓ | Parameter query |
192
+ | `options` | `SearchOptions` | | Parameter options |
193
+
194
+ `SearchOptions` properties:
195
+
196
+ | Property | Type | Description |
197
+ |----------|------|-------------|
198
+ | `limit` | `number` | |
199
+ | `model` | `string` | |
200
+ | `where` | `Record<string, any>` | |
201
+
202
+ **Returns:** `Promise<SearchResult[]>`
203
+
204
+
205
+
206
+ ### hybridSearch
207
+
208
+ **Parameters:**
209
+
210
+ | Name | Type | Required | Description |
211
+ |------|------|----------|-------------|
212
+ | `query` | `string` | ✓ | Parameter query |
213
+ | `options` | `HybridSearchOptions` | | Parameter options |
214
+
215
+ `HybridSearchOptions` properties:
216
+
217
+ | Property | Type | Description |
218
+ |----------|------|-------------|
219
+ | `ftsWeight` | `number` | |
220
+ | `vecWeight` | `number` | |
221
+
222
+ **Returns:** `Promise<SearchResult[]>`
223
+
224
+
225
+
226
+ ### deepSearch
227
+
228
+ **Parameters:**
229
+
230
+ | Name | Type | Required | Description |
231
+ |------|------|----------|-------------|
232
+ | `_query` | `string` | ✓ | Parameter _query |
233
+ | `_options` | `SearchOptions` | | Parameter _options |
234
+
235
+ `SearchOptions` properties:
236
+
237
+ | Property | Type | Description |
238
+ |----------|------|-------------|
239
+ | `limit` | `number` | |
240
+ | `model` | `string` | |
241
+ | `where` | `Record<string, any>` | |
242
+
243
+ **Returns:** `Promise<SearchResult[]>`
244
+
245
+
246
+
247
+ ### indexDocuments
248
+
249
+ **Parameters:**
250
+
251
+ | Name | Type | Required | Description |
252
+ |------|------|----------|-------------|
253
+ | `docs` | `DocumentInput[]` | ✓ | Parameter docs |
254
+
255
+ `DocumentInput[]` properties:
256
+
257
+ | Property | Type | Description |
258
+ |----------|------|-------------|
259
+ | `pathId` | `string` | |
260
+ | `model` | `string` | |
261
+ | `title` | `string` | |
262
+ | `slug` | `string` | |
263
+ | `meta` | `Record<string, any>` | |
264
+ | `content` | `string` | |
265
+ | `sections` | `Array<{ heading: string; headingPath: string; content: string; level: number }>` | |
266
+
267
+ **Returns:** `Promise<void>`
268
+
269
+
270
+
271
+ ### reindex
272
+
273
+ **Parameters:**
274
+
275
+ | Name | Type | Required | Description |
276
+ |------|------|----------|-------------|
277
+ | `pathIds` | `string[]` | | Parameter pathIds |
278
+
279
+ **Returns:** `Promise<void>`
280
+
281
+
282
+
283
+ ### removeStale
284
+
285
+ **Parameters:**
286
+
287
+ | Name | Type | Required | Description |
288
+ |------|------|----------|-------------|
289
+ | `currentPathIds` | `string[]` | ✓ | Parameter currentPathIds |
290
+
291
+ **Returns:** `void`
292
+
293
+
294
+
295
+ ### needsReindex
296
+
297
+ **Parameters:**
298
+
299
+ | Name | Type | Required | Description |
300
+ |------|------|----------|-------------|
301
+ | `doc` | `DocumentInput` | ✓ | Parameter doc |
302
+
303
+ `DocumentInput` properties:
304
+
305
+ | Property | Type | Description |
306
+ |----------|------|-------------|
307
+ | `pathId` | `string` | |
308
+ | `model` | `string` | |
309
+ | `title` | `string` | |
310
+ | `slug` | `string` | |
311
+ | `meta` | `Record<string, any>` | |
312
+ | `content` | `string` | |
313
+ | `sections` | `Array<{ heading: string; headingPath: string; content: string; level: number }>` | |
314
+
315
+ **Returns:** `boolean`
316
+
317
+
318
+
319
+ ### status
320
+
321
+ **Returns:** `IndexStatus`
322
+
323
+
324
+
325
+ ### close
326
+
327
+ **Returns:** `Promise<void>`
328
+
329
+
330
+
331
+ ## Getters
332
+
333
+ | Property | Type | Description |
334
+ |----------|------|-------------|
335
+ | `db` | `Database` | |
336
+ | `dimensions` | `number` | |
337
+
338
+ ## Events (Zod v4 schema)
339
+
340
+ ### dbReady
341
+
342
+ Event emitted by SemanticSearch
343
+
344
+
345
+
346
+ ### modelLoaded
347
+
348
+ Event emitted by SemanticSearch
349
+
350
+
351
+
352
+ ### modelDisposed
353
+
354
+ Event emitted by SemanticSearch
355
+
356
+
357
+
358
+ ### indexed
359
+
360
+ Event emitted by SemanticSearch
361
+
362
+
363
+
364
+ ## State (Zod v4 schema)
365
+
366
+ | Property | Type | Description |
367
+ |----------|------|-------------|
368
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
369
+ | `indexed` | `number` | Count of indexed documents |
370
+ | `embedded` | `number` | Count of documents with embeddings |
371
+ | `lastIndexedAt` | `any` | ISO timestamp of last indexing |
372
+ | `dbReady` | `boolean` | Whether SQLite is initialized |
373
+
374
+ ## Examples
375
+
376
+ **features.semanticSearch**
377
+
378
+ ```ts
379
+ const search = container.feature('semanticSearch', {
380
+ dbPath: '.contentbase/search.sqlite',
381
+ embeddingProvider: 'local',
382
+ })
383
+ await search.initDb()
384
+ await search.indexDocuments(docs)
385
+ const results = await search.hybridSearch('how does authentication work')
386
+ ```
387
+
@@ -0,0 +1,216 @@
1
+ # SkillsLibrary (features.skillsLibrary)
2
+
3
+ No description provided
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('skillsLibrary', {
9
+ // Path to project-level skills directory
10
+ projectSkillsPath,
11
+ // Path to user-level global skills directory
12
+ userSkillsPath,
13
+ })
14
+ ```
15
+
16
+ ## Options (Zod v4 schema)
17
+
18
+ | Property | Type | Description |
19
+ |----------|------|-------------|
20
+ | `projectSkillsPath` | `string` | Path to project-level skills directory |
21
+ | `userSkillsPath` | `string` | Path to user-level global skills directory |
22
+
23
+ ## Methods
24
+
25
+ ### load
26
+
27
+ Loads both project and user skill collections from disk. Gracefully handles missing directories.
28
+
29
+ **Returns:** `Promise<SkillsLibrary>`
30
+
31
+
32
+
33
+ ### list
34
+
35
+ Lists all skills from both collections. Project skills come first.
36
+
37
+ **Returns:** `SkillEntry[]`
38
+
39
+
40
+
41
+ ### find
42
+
43
+ Finds a skill by name. Project skills take precedence over user skills.
44
+
45
+ **Parameters:**
46
+
47
+ | Name | Type | Required | Description |
48
+ |------|------|----------|-------------|
49
+ | `name` | `string` | ✓ | The skill name to find (case-insensitive) |
50
+
51
+ **Returns:** `SkillEntry | undefined`
52
+
53
+
54
+
55
+ ### search
56
+
57
+ Searches skills by substring match against name and description.
58
+
59
+ **Parameters:**
60
+
61
+ | Name | Type | Required | Description |
62
+ |------|------|----------|-------------|
63
+ | `query` | `string` | ✓ | The search query |
64
+
65
+ **Returns:** `SkillEntry[]`
66
+
67
+
68
+
69
+ ### getSkill
70
+
71
+ Gets a skill by name. Alias for find().
72
+
73
+ **Parameters:**
74
+
75
+ | Name | Type | Required | Description |
76
+ |------|------|----------|-------------|
77
+ | `name` | `string` | ✓ | The skill name |
78
+
79
+ **Returns:** `SkillEntry | undefined`
80
+
81
+
82
+
83
+ ### create
84
+
85
+ Creates a new SKILL.md file in the specified collection. Maintains the directory-per-skill structure (skill-name/SKILL.md).
86
+
87
+ **Parameters:**
88
+
89
+ | Name | Type | Required | Description |
90
+ |------|------|----------|-------------|
91
+ | `skill` | `{
92
+ name: string
93
+ description: string
94
+ body: string
95
+ meta?: Record<string, unknown>
96
+ }` | ✓ | The skill to create |
97
+ | `target` | `'project' | 'user'` | | Which collection to write to (default: 'project') |
98
+
99
+ **Returns:** `Promise<SkillEntry>`
100
+
101
+
102
+
103
+ ### update
104
+
105
+ Updates an existing skill's content or metadata.
106
+
107
+ **Parameters:**
108
+
109
+ | Name | Type | Required | Description |
110
+ |------|------|----------|-------------|
111
+ | `name` | `string` | ✓ | The skill name to update |
112
+ | `updates` | `{
113
+ description?: string
114
+ body?: string
115
+ meta?: Record<string, unknown>
116
+ }` | ✓ | Fields to update |
117
+
118
+ **Returns:** `Promise<SkillEntry>`
119
+
120
+
121
+
122
+ ### remove
123
+
124
+ Removes a skill by name, deleting its SKILL.md and cleaning up the directory.
125
+
126
+ **Parameters:**
127
+
128
+ | Name | Type | Required | Description |
129
+ |------|------|----------|-------------|
130
+ | `name` | `string` | ✓ | The skill name to remove |
131
+
132
+ **Returns:** `Promise<boolean>`
133
+
134
+
135
+
136
+ ### toConversationTools
137
+
138
+ Converts all skills into ConversationTool format for use with Conversation. Each skill becomes a tool that returns its instruction body when invoked.
139
+
140
+ **Returns:** `Record<string, ConversationTool>`
141
+
142
+
143
+
144
+ ### toSystemPromptBlock
145
+
146
+ Generates a markdown block listing all available skills with names and descriptions. Suitable for injecting into a system prompt.
147
+
148
+ **Returns:** `string`
149
+
150
+
151
+
152
+ ## Getters
153
+
154
+ | Property | Type | Description |
155
+ |----------|------|-------------|
156
+ | `projectCollection` | `Collection` | Returns the project-level contentbase Collection, lazily initialized. |
157
+ | `userCollection` | `Collection` | Returns the user-level contentbase Collection, lazily initialized. |
158
+ | `isLoaded` | `boolean` | Whether the skills library has been loaded. |
159
+ | `skillNames` | `string[]` | Array of all skill names across both collections. |
160
+
161
+ ## Events (Zod v4 schema)
162
+
163
+ ### loaded
164
+
165
+ Event emitted by SkillsLibrary
166
+
167
+
168
+
169
+ ### skillCreated
170
+
171
+ Event emitted by SkillsLibrary
172
+
173
+
174
+
175
+ ### skillUpdated
176
+
177
+ Event emitted by SkillsLibrary
178
+
179
+
180
+
181
+ ### skillRemoved
182
+
183
+ Event emitted by SkillsLibrary
184
+
185
+
186
+
187
+ ## State (Zod v4 schema)
188
+
189
+ | Property | Type | Description |
190
+ |----------|------|-------------|
191
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
192
+ | `loaded` | `boolean` | Whether both collections have been loaded |
193
+ | `projectSkillCount` | `number` | Number of skills in the project collection |
194
+ | `userSkillCount` | `number` | Number of skills in the user-level collection |
195
+ | `totalSkillCount` | `number` | Total number of skills across both collections |
196
+
197
+ ## Examples
198
+
199
+ **features.skillsLibrary**
200
+
201
+ ```ts
202
+ const skills = container.feature('skillsLibrary')
203
+ await skills.load()
204
+
205
+ // List and search
206
+ const allSkills = skills.list()
207
+ const matches = skills.search('code review')
208
+
209
+ // Create a new skill
210
+ await skills.create({
211
+ name: 'summarize',
212
+ description: 'Summarize a document',
213
+ body: '## Instructions\nRead the document and produce a concise summary.'
214
+ })
215
+ ```
216
+
@@ -0,0 +1,133 @@
1
+ # ContainerLink (features.containerLink)
2
+
3
+ ContainerLink (Web-side) — WebSocket client that connects to a node host. Connects to a ContainerLink host over WebSocket. The host can evaluate code in this container, and the web side can emit structured events to the host. The web side can NEVER eval code in the host — trust is strictly one-way.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('containerLink', {
9
+ // Port for the WebSocket server
10
+ port,
11
+ // Interval in ms between heartbeat pings
12
+ heartbeatInterval,
13
+ // Max missed pongs before disconnecting a client
14
+ maxMissedHeartbeats,
15
+ })
16
+ ```
17
+
18
+ ## Options (Zod v4 schema)
19
+
20
+ | Property | Type | Description |
21
+ |----------|------|-------------|
22
+ | `port` | `number` | Port for the WebSocket server |
23
+ | `heartbeatInterval` | `number` | Interval in ms between heartbeat pings |
24
+ | `maxMissedHeartbeats` | `number` | Max missed pongs before disconnecting a client |
25
+
26
+ ## Methods
27
+
28
+ ### connect
29
+
30
+ Connect to the host WebSocket server and perform registration.
31
+
32
+ **Parameters:**
33
+
34
+ | Name | Type | Required | Description |
35
+ |------|------|----------|-------------|
36
+ | `hostUrl` | `string` | | Override the configured host URL |
37
+
38
+ **Returns:** `Promise<this>`
39
+
40
+
41
+
42
+ ### disconnect
43
+
44
+ Disconnect from the host.
45
+
46
+ **Parameters:**
47
+
48
+ | Name | Type | Required | Description |
49
+ |------|------|----------|-------------|
50
+ | `reason` | `string` | | Optional reason string |
51
+
52
+ **Returns:** `void`
53
+
54
+
55
+
56
+ ### emitToHost
57
+
58
+ Send a structured event to the host container.
59
+
60
+ **Parameters:**
61
+
62
+ | Name | Type | Required | Description |
63
+ |------|------|----------|-------------|
64
+ | `eventName` | `string` | ✓ | Name of the event |
65
+ | `data` | `any` | | Optional event data |
66
+
67
+ **Returns:** `void`
68
+
69
+
70
+
71
+ ## Getters
72
+
73
+ | Property | Type | Description |
74
+ |----------|------|-------------|
75
+ | `isConnected` | `boolean` | Whether currently connected to the host. |
76
+ | `token` | `string | undefined` | The auth token received from the host. |
77
+ | `hostId` | `string | undefined` | The host container's UUID. |
78
+
79
+ ## Events (Zod v4 schema)
80
+
81
+ ### connected
82
+
83
+ Event emitted by ContainerLink
84
+
85
+
86
+
87
+ ### disconnected
88
+
89
+ Event emitted by ContainerLink
90
+
91
+
92
+
93
+ ### evalRequest
94
+
95
+ Event emitted by ContainerLink
96
+
97
+
98
+
99
+ ### reconnecting
100
+
101
+ Event emitted by ContainerLink
102
+
103
+
104
+
105
+ ## State (Zod v4 schema)
106
+
107
+ | Property | Type | Description |
108
+ |----------|------|-------------|
109
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
110
+ | `connectionCount` | `number` | Number of currently connected web containers |
111
+ | `port` | `number` | Port the WebSocket server is listening on |
112
+ | `listening` | `boolean` | Whether the WebSocket server is listening |
113
+
114
+ ## Examples
115
+
116
+ **features.containerLink**
117
+
118
+ ```ts
119
+ const link = container.feature('containerLink', {
120
+ enable: true,
121
+ hostUrl: 'ws://localhost:8089',
122
+ })
123
+ await link.connect()
124
+
125
+ // Send events to the host
126
+ link.emitToHost('click', { x: 100, y: 200 })
127
+
128
+ // Listen for eval requests before they execute
129
+ link.on('evalRequest', (code, requestId) => {
130
+ console.log('Host is evaluating:', code)
131
+ })
132
+ ```
133
+