luca 3.0.0 → 3.1.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 (388) hide show
  1. package/.github/workflows/release.yaml +1 -0
  2. package/CLAUDE.md +10 -2
  3. package/README.md +130 -112
  4. package/assistants/codingAssistant/CORE.md +6 -1
  5. package/assistants/codingAssistant/hooks.ts +1 -1
  6. package/assistants/inkbot/hooks.ts +1 -1
  7. package/assistants/inkbot/tools.ts +1 -1
  8. package/bun.lock +264 -321
  9. package/commands/audit-docs.ts +2 -2
  10. package/commands/build-bootstrap.ts +2 -3
  11. package/commands/build-python-bridge.ts +2 -3
  12. package/commands/build-scaffolds.ts +2 -3
  13. package/commands/bundle-consumer-project.ts +521 -0
  14. package/commands/generate-api-docs.ts +2 -2
  15. package/commands/inkbot.ts +2 -2
  16. package/commands/release.ts +2 -2
  17. package/commands/social.ts +137 -0
  18. package/commands/try-all-challenges.ts +3 -3
  19. package/commands/try-challenge.ts +3 -3
  20. package/datasets/lora/agentic-loop-session-candidates.jsonl +91 -0
  21. package/datasets/lora/agentic-loop-session-curation-summary.json +123 -0
  22. package/datasets/lora/luca-session-candidates.jsonl +29 -0
  23. package/datasets/lora/luca-session-curation-summary.json +121 -0
  24. package/datasets/lora/review-batch-1.jsonl +30 -0
  25. package/datasets/lora/review-manifest.json +41 -0
  26. package/datasets/lora/review-queue.jsonl +120 -0
  27. package/datasets/lora/review-schema.json +134 -0
  28. package/datasets/lora/review-template.jsonl +2 -0
  29. package/datasets/lora/review-ui.html +725 -0
  30. package/dist/agi/container.server.d.ts +2 -2
  31. package/dist/agi/features/assistant.d.ts +2 -2
  32. package/dist/agi/features/assistants-manager.d.ts +1 -1
  33. package/dist/agi/features/autonomous-assistant.d.ts +1 -1
  34. package/dist/agi/features/browser-use.d.ts +1 -1
  35. package/dist/agi/features/claude-code.d.ts +1 -1
  36. package/dist/agi/features/conversation-history.d.ts +2 -2
  37. package/dist/agi/features/conversation.d.ts +1 -1
  38. package/dist/agi/features/docs-reader.d.ts +1 -1
  39. package/dist/agi/features/file-tools.d.ts +1 -1
  40. package/dist/agi/features/luca-coder.d.ts +1 -1
  41. package/dist/agi/features/openai-codex.d.ts +1 -1
  42. package/dist/agi/features/skills-library.d.ts +1 -1
  43. package/dist/clients/civitai/index.d.ts +4 -4
  44. package/dist/clients/client-template.d.ts +4 -4
  45. package/dist/clients/comfyui/index.d.ts +2 -2
  46. package/dist/clients/elevenlabs/index.d.ts +2 -2
  47. package/dist/clients/openai/index.d.ts +2 -2
  48. package/dist/clients/supabase/index.d.ts +3 -3
  49. package/dist/command.d.ts +1 -1
  50. package/dist/node/container.d.ts +1 -1
  51. package/dist/node/features/helpers.d.ts +3 -3
  52. package/dist/node/features/semantic-search.d.ts +1 -1
  53. package/dist/node/features/vm.d.ts +3 -3
  54. package/dist/node.d.ts +1 -1
  55. package/dist/scaffolds/generated.d.ts +1 -1
  56. package/dist/selector.d.ts +1 -1
  57. package/features/cipher-social.ts +493 -0
  58. package/index.html +217 -190
  59. package/luca.console.ts +1 -1
  60. package/package.json +7 -2
  61. package/public/index.html +217 -190
  62. package/public/slides-ai-native.html +1 -1
  63. package/public/slides-intro.html +2 -2
  64. package/scripts/curate-claude-sessions.ts +561 -0
  65. package/scripts/examples/ask-luca-expert.ts +1 -1
  66. package/scripts/examples/assistant-questions.ts +1 -1
  67. package/scripts/examples/excalidraw-expert.ts +1 -1
  68. package/scripts/examples/file-manager.ts +1 -1
  69. package/scripts/examples/ideas.ts +1 -1
  70. package/scripts/examples/interactive-chat.ts +1 -1
  71. package/scripts/examples/opening-a-web-browser.ts +1 -1
  72. package/scripts/examples/telegram-bot.ts +1 -1
  73. package/scripts/examples/using-assistant-with-mcp.ts +1 -1
  74. package/scripts/examples/using-claude-code.ts +1 -1
  75. package/scripts/examples/using-contentdb.ts +2 -2
  76. package/scripts/examples/using-conversations.ts +1 -1
  77. package/scripts/examples/using-disk-cache.ts +1 -1
  78. package/scripts/examples/using-docker-shell.ts +1 -1
  79. package/scripts/examples/using-elevenlabs.ts +1 -1
  80. package/scripts/examples/using-google-calendar.ts +1 -1
  81. package/scripts/examples/using-google-docs.ts +1 -1
  82. package/scripts/examples/using-google-drive.ts +1 -1
  83. package/scripts/examples/using-google-sheets.ts +1 -1
  84. package/scripts/examples/using-nlp.ts +1 -1
  85. package/scripts/examples/using-ollama.ts +1 -1
  86. package/scripts/examples/using-postgres.ts +1 -1
  87. package/scripts/examples/using-runpod.ts +1 -1
  88. package/scripts/examples/using-tts.ts +1 -1
  89. package/scripts/scaffold.ts +5 -5
  90. package/scripts/scratch.ts +1 -1
  91. package/scripts/test-assistant-hooks.ts +1 -1
  92. package/scripts/test-docs-reader.ts +1 -1
  93. package/src/agi/container.server.ts +6 -2
  94. package/src/agi/features/agent-memory.ts +25 -25
  95. package/src/agi/features/assistant.ts +34 -5
  96. package/src/agi/features/assistants-manager.ts +122 -6
  97. package/src/agi/features/autonomous-assistant.ts +1 -1
  98. package/src/agi/features/browser-use.ts +20 -1
  99. package/src/agi/features/claude-code.ts +51 -5
  100. package/src/agi/features/coding-tools.ts +1 -1
  101. package/src/agi/features/conversation-history.ts +181 -4
  102. package/src/agi/features/conversation.ts +186 -15
  103. package/src/agi/features/docs-reader.ts +2 -2
  104. package/src/agi/features/file-tools.ts +49 -2
  105. package/src/agi/features/luca-coder.ts +7 -5
  106. package/src/agi/features/mcp-bridge.ts +532 -0
  107. package/src/agi/features/openai-codex.ts +2 -2
  108. package/src/agi/features/skills-library.ts +131 -52
  109. package/src/agi/lib/token-counter.ts +80 -0
  110. package/src/bootstrap/generated.ts +56 -57
  111. package/src/browser.ts +1 -1
  112. package/src/cli/build-info.ts +2 -2
  113. package/src/cli/cli.ts +2 -2
  114. package/src/clients/civitai/index.ts +5 -5
  115. package/src/clients/client-template.ts +4 -4
  116. package/src/clients/comfyui/index.ts +4 -4
  117. package/src/clients/elevenlabs/index.ts +4 -4
  118. package/src/clients/openai/index.ts +7 -7
  119. package/src/clients/supabase/index.ts +4 -4
  120. package/src/clients/voicebox/index.ts +4 -4
  121. package/src/command.ts +2 -1
  122. package/src/commands/chat.ts +1 -0
  123. package/src/commands/eval.ts +2 -56
  124. package/src/commands/introspect.ts +1 -1
  125. package/src/commands/prompt.ts +41 -9
  126. package/src/container-describer.ts +8 -1
  127. package/src/container.ts +13 -0
  128. package/src/entity.ts +2 -2
  129. package/src/helper.ts +1 -1
  130. package/src/introspection/generated.agi.ts +29596 -27654
  131. package/src/introspection/generated.node.ts +20284 -19247
  132. package/src/introspection/generated.web.ts +605 -584
  133. package/src/introspection/scan.ts +11 -6
  134. package/src/node/container.ts +9 -1
  135. package/src/node/features/content-db.ts +39 -2
  136. package/src/node/features/display-result.ts +57 -0
  137. package/src/node/features/helpers.ts +46 -7
  138. package/src/node/features/python.ts +25 -19
  139. package/src/node/features/repl.ts +1 -1
  140. package/src/node/features/secure-shell.ts +11 -17
  141. package/src/node/features/semantic-search.ts +2 -2
  142. package/src/node/features/socket-repl.ts +336 -0
  143. package/src/node/features/telnyx-assistant-connector.ts +1206 -0
  144. package/src/node/features/transpiler.ts +2 -3
  145. package/src/node/features/ui.ts +5 -0
  146. package/src/node/features/vm.ts +20 -3
  147. package/src/node.ts +3 -3
  148. package/src/python/generated.ts +0 -1
  149. package/src/scaffolds/generated.ts +82 -83
  150. package/src/selector.ts +1 -1
  151. package/src/servers/express.ts +1 -1
  152. package/src/web/features/helpers.ts +22 -0
  153. package/tsconfig.json +12 -12
  154. package/docs/CLI.md +0 -335
  155. package/docs/CNAME +0 -1
  156. package/docs/README.md +0 -60
  157. package/docs/TABLE-OF-CONTENTS.md +0 -183
  158. package/docs/apis/clients/elevenlabs.md +0 -308
  159. package/docs/apis/clients/graph.md +0 -107
  160. package/docs/apis/clients/openai.md +0 -429
  161. package/docs/apis/clients/rest.md +0 -161
  162. package/docs/apis/clients/websocket.md +0 -174
  163. package/docs/apis/features/agi/assistant.md +0 -625
  164. package/docs/apis/features/agi/assistants-manager.md +0 -282
  165. package/docs/apis/features/agi/auto-assistant.md +0 -279
  166. package/docs/apis/features/agi/browser-use.md +0 -802
  167. package/docs/apis/features/agi/claude-code.md +0 -884
  168. package/docs/apis/features/agi/conversation-history.md +0 -364
  169. package/docs/apis/features/agi/conversation.md +0 -548
  170. package/docs/apis/features/agi/docs-reader.md +0 -99
  171. package/docs/apis/features/agi/file-tools.md +0 -163
  172. package/docs/apis/features/agi/luca-coder.md +0 -407
  173. package/docs/apis/features/agi/openai-codex.md +0 -396
  174. package/docs/apis/features/agi/openapi.md +0 -138
  175. package/docs/apis/features/agi/semantic-search.md +0 -387
  176. package/docs/apis/features/agi/skills-library.md +0 -239
  177. package/docs/apis/features/node/container-link.md +0 -192
  178. package/docs/apis/features/node/content-db.md +0 -450
  179. package/docs/apis/features/node/disk-cache.md +0 -379
  180. package/docs/apis/features/node/dns.md +0 -652
  181. package/docs/apis/features/node/docker.md +0 -706
  182. package/docs/apis/features/node/downloader.md +0 -81
  183. package/docs/apis/features/node/esbuild.md +0 -60
  184. package/docs/apis/features/node/file-manager.md +0 -191
  185. package/docs/apis/features/node/fs.md +0 -1217
  186. package/docs/apis/features/node/git.md +0 -371
  187. package/docs/apis/features/node/google-auth.md +0 -193
  188. package/docs/apis/features/node/google-calendar.md +0 -202
  189. package/docs/apis/features/node/google-docs.md +0 -173
  190. package/docs/apis/features/node/google-drive.md +0 -246
  191. package/docs/apis/features/node/google-mail.md +0 -214
  192. package/docs/apis/features/node/google-sheets.md +0 -194
  193. package/docs/apis/features/node/grep.md +0 -292
  194. package/docs/apis/features/node/helpers.md +0 -164
  195. package/docs/apis/features/node/ink.md +0 -334
  196. package/docs/apis/features/node/ipc-socket.md +0 -249
  197. package/docs/apis/features/node/json-tree.md +0 -86
  198. package/docs/apis/features/node/networking.md +0 -316
  199. package/docs/apis/features/node/nlp.md +0 -133
  200. package/docs/apis/features/node/opener.md +0 -97
  201. package/docs/apis/features/node/os.md +0 -146
  202. package/docs/apis/features/node/package-finder.md +0 -392
  203. package/docs/apis/features/node/postgres.md +0 -234
  204. package/docs/apis/features/node/proc.md +0 -399
  205. package/docs/apis/features/node/process-manager.md +0 -305
  206. package/docs/apis/features/node/python.md +0 -604
  207. package/docs/apis/features/node/redis.md +0 -380
  208. package/docs/apis/features/node/repl.md +0 -88
  209. package/docs/apis/features/node/runpod.md +0 -674
  210. package/docs/apis/features/node/secure-shell.md +0 -176
  211. package/docs/apis/features/node/semantic-search.md +0 -408
  212. package/docs/apis/features/node/sqlite.md +0 -233
  213. package/docs/apis/features/node/telegram.md +0 -279
  214. package/docs/apis/features/node/transpiler.md +0 -74
  215. package/docs/apis/features/node/tts.md +0 -133
  216. package/docs/apis/features/node/ui.md +0 -701
  217. package/docs/apis/features/node/vault.md +0 -59
  218. package/docs/apis/features/node/vm.md +0 -75
  219. package/docs/apis/features/node/yaml-tree.md +0 -85
  220. package/docs/apis/features/node/yaml.md +0 -176
  221. package/docs/apis/features/web/asset-loader.md +0 -59
  222. package/docs/apis/features/web/container-link.md +0 -192
  223. package/docs/apis/features/web/esbuild.md +0 -54
  224. package/docs/apis/features/web/helpers.md +0 -164
  225. package/docs/apis/features/web/network.md +0 -44
  226. package/docs/apis/features/web/speech.md +0 -69
  227. package/docs/apis/features/web/vault.md +0 -59
  228. package/docs/apis/features/web/vm.md +0 -75
  229. package/docs/apis/features/web/voice.md +0 -84
  230. package/docs/apis/servers/express.md +0 -171
  231. package/docs/apis/servers/mcp.md +0 -238
  232. package/docs/apis/servers/websocket.md +0 -170
  233. package/docs/bootstrap/CLAUDE.md +0 -101
  234. package/docs/bootstrap/SKILL.md +0 -341
  235. package/docs/bootstrap/templates/about-command.ts +0 -41
  236. package/docs/bootstrap/templates/docs-models.ts +0 -22
  237. package/docs/bootstrap/templates/docs-readme.md +0 -43
  238. package/docs/bootstrap/templates/example-feature.ts +0 -53
  239. package/docs/bootstrap/templates/health-endpoint.ts +0 -15
  240. package/docs/bootstrap/templates/luca-cli.ts +0 -30
  241. package/docs/bootstrap/templates/runme.md +0 -54
  242. package/docs/challenges/caching-proxy.md +0 -16
  243. package/docs/challenges/content-db-round-trip.md +0 -14
  244. package/docs/challenges/custom-command.md +0 -9
  245. package/docs/challenges/file-watcher-pipeline.md +0 -11
  246. package/docs/challenges/grep-audit-report.md +0 -15
  247. package/docs/challenges/multi-feature-dashboard.md +0 -14
  248. package/docs/challenges/process-orchestrator.md +0 -17
  249. package/docs/challenges/rest-api-server-with-client.md +0 -12
  250. package/docs/challenges/script-runner-with-vm.md +0 -11
  251. package/docs/challenges/simple-rest-api.md +0 -15
  252. package/docs/challenges/websocket-serve-and-client.md +0 -11
  253. package/docs/challenges/yaml-config-system.md +0 -14
  254. package/docs/command-system-overhaul.md +0 -94
  255. package/docs/documentation-audit.md +0 -134
  256. package/docs/examples/assistant/CORE.md +0 -18
  257. package/docs/examples/assistant/hooks.ts +0 -3
  258. package/docs/examples/assistant/tools.ts +0 -10
  259. package/docs/examples/assistant-hooks-reference.ts +0 -171
  260. package/docs/examples/assistant-with-process-manager.md +0 -84
  261. package/docs/examples/content-db.md +0 -77
  262. package/docs/examples/disk-cache.md +0 -83
  263. package/docs/examples/docker.md +0 -101
  264. package/docs/examples/downloader.md +0 -70
  265. package/docs/examples/entity.md +0 -124
  266. package/docs/examples/esbuild.md +0 -80
  267. package/docs/examples/feature-as-tool-provider.md +0 -143
  268. package/docs/examples/file-manager.md +0 -82
  269. package/docs/examples/fs.md +0 -83
  270. package/docs/examples/git.md +0 -85
  271. package/docs/examples/google-auth.md +0 -88
  272. package/docs/examples/google-calendar.md +0 -94
  273. package/docs/examples/google-docs.md +0 -82
  274. package/docs/examples/google-drive.md +0 -96
  275. package/docs/examples/google-sheets.md +0 -95
  276. package/docs/examples/grep.md +0 -85
  277. package/docs/examples/ink-blocks.md +0 -75
  278. package/docs/examples/ink-renderer.md +0 -41
  279. package/docs/examples/ink.md +0 -103
  280. package/docs/examples/ipc-socket.md +0 -103
  281. package/docs/examples/json-tree.md +0 -91
  282. package/docs/examples/networking.md +0 -58
  283. package/docs/examples/nlp.md +0 -91
  284. package/docs/examples/opener.md +0 -78
  285. package/docs/examples/os.md +0 -72
  286. package/docs/examples/package-finder.md +0 -89
  287. package/docs/examples/postgres.md +0 -91
  288. package/docs/examples/proc.md +0 -81
  289. package/docs/examples/process-manager.md +0 -79
  290. package/docs/examples/python.md +0 -132
  291. package/docs/examples/repl.md +0 -93
  292. package/docs/examples/runpod.md +0 -119
  293. package/docs/examples/secure-shell.md +0 -92
  294. package/docs/examples/sqlite.md +0 -86
  295. package/docs/examples/structured-output-with-assistants.md +0 -144
  296. package/docs/examples/telegram.md +0 -77
  297. package/docs/examples/tts.md +0 -86
  298. package/docs/examples/ui.md +0 -80
  299. package/docs/examples/vault.md +0 -70
  300. package/docs/examples/vm.md +0 -86
  301. package/docs/examples/websocket-ask-and-reply-example.md +0 -128
  302. package/docs/examples/yaml-tree.md +0 -93
  303. package/docs/examples/yaml.md +0 -104
  304. package/docs/ideas/assistant-factory-pattern.md +0 -142
  305. package/docs/in-memory-fs.md +0 -4
  306. package/docs/introspection-audit.md +0 -49
  307. package/docs/introspection.md +0 -164
  308. package/docs/mcp/readme.md +0 -162
  309. package/docs/models.ts +0 -41
  310. package/docs/philosophy.md +0 -86
  311. package/docs/principles.md +0 -7
  312. package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +0 -34
  313. package/docs/prompts/check-for-undocumented-features.md +0 -27
  314. package/docs/prompts/mcp-test-easy-command.md +0 -27
  315. package/docs/scaffolds/client.md +0 -149
  316. package/docs/scaffolds/command.md +0 -120
  317. package/docs/scaffolds/endpoint.md +0 -171
  318. package/docs/scaffolds/feature.md +0 -158
  319. package/docs/scaffolds/selector.md +0 -91
  320. package/docs/scaffolds/server.md +0 -196
  321. package/docs/selectors.md +0 -115
  322. package/docs/sessions/custom-command/attempt-log-2.md +0 -195
  323. package/docs/sessions/file-watcher-pipeline/attempt-log-1.md +0 -728
  324. package/docs/sessions/file-watcher-pipeline/attempt-log-2.md +0 -555
  325. package/docs/sessions/grep-audit-report/attempt-log-1.md +0 -289
  326. package/docs/sessions/multi-feature-dashboard/attempt-log-2.md +0 -679
  327. package/docs/sessions/rest-api-server-with-client/attempt-log-1.md +0 -1
  328. package/docs/sessions/rest-api-server-with-client/attempt-log-3.md +0 -920
  329. package/docs/sessions/simple-rest-api/attempt-log-1.md +0 -593
  330. package/docs/sessions/websocket-serve-and-client/attempt-log-2.md +0 -995
  331. package/docs/tutorials/00-bootstrap.md +0 -166
  332. package/docs/tutorials/01-getting-started.md +0 -106
  333. package/docs/tutorials/02-container.md +0 -210
  334. package/docs/tutorials/03-scripts.md +0 -194
  335. package/docs/tutorials/04-features-overview.md +0 -196
  336. package/docs/tutorials/05-state-and-events.md +0 -171
  337. package/docs/tutorials/06-servers.md +0 -157
  338. package/docs/tutorials/07-endpoints.md +0 -198
  339. package/docs/tutorials/08-commands.md +0 -252
  340. package/docs/tutorials/09-clients.md +0 -162
  341. package/docs/tutorials/10-creating-features.md +0 -203
  342. package/docs/tutorials/11-contentbase.md +0 -191
  343. package/docs/tutorials/12-assistants.md +0 -215
  344. package/docs/tutorials/13-introspection.md +0 -157
  345. package/docs/tutorials/14-type-system.md +0 -174
  346. package/docs/tutorials/15-project-patterns.md +0 -222
  347. package/docs/tutorials/16-google-features.md +0 -534
  348. package/docs/tutorials/17-tui-blocks.md +0 -530
  349. package/docs/tutorials/18-semantic-search.md +0 -334
  350. package/docs/tutorials/19-python-sessions.md +0 -401
  351. package/docs/tutorials/20-browser-esm.md +0 -234
  352. package/index.ts +0 -1
  353. package/src/agi/endpoints/ask.ts +0 -60
  354. package/src/agi/endpoints/conversations/[id].ts +0 -45
  355. package/src/agi/endpoints/conversations.ts +0 -31
  356. package/src/agi/endpoints/experts.ts +0 -37
  357. package/test/assistant-hooks.test.ts +0 -306
  358. package/test/assistant.test.ts +0 -81
  359. package/test/bus.test.ts +0 -134
  360. package/test/clients-servers.test.ts +0 -217
  361. package/test/command.test.ts +0 -267
  362. package/test/container-link.test.ts +0 -274
  363. package/test/conversation.test.ts +0 -220
  364. package/test/features.test.ts +0 -160
  365. package/test/fork-and-research.test.ts +0 -450
  366. package/test/integration.test.ts +0 -787
  367. package/test/interceptor-chain.test.ts +0 -61
  368. package/test/node-container.test.ts +0 -121
  369. package/test/python-session.test.ts +0 -105
  370. package/test/rate-limit.test.ts +0 -272
  371. package/test/semantic-search.test.ts +0 -550
  372. package/test/state.test.ts +0 -121
  373. package/test/vm-context.test.ts +0 -146
  374. package/test/vm-loadmodule.test.ts +0 -213
  375. package/test/websocket-ask.test.ts +0 -101
  376. package/test-integration/assistant.test.ts +0 -138
  377. package/test-integration/assistants-manager.test.ts +0 -113
  378. package/test-integration/claude-code.test.ts +0 -98
  379. package/test-integration/conversation-history.test.ts +0 -205
  380. package/test-integration/conversation.test.ts +0 -137
  381. package/test-integration/elevenlabs.test.ts +0 -55
  382. package/test-integration/google-services.test.ts +0 -80
  383. package/test-integration/helpers.ts +0 -89
  384. package/test-integration/memory.test.ts +0 -204
  385. package/test-integration/openai-codex.test.ts +0 -93
  386. package/test-integration/runpod.test.ts +0 -58
  387. package/test-integration/server-endpoints.test.ts +0 -97
  388. package/test-integration/telegram.test.ts +0 -46
@@ -1,91 +0,0 @@
1
- ---
2
- title: "Natural Language Processing"
3
- tags: [nlp, parsing, text-analysis]
4
- lastTested: null
5
- lastTestPassed: null
6
- ---
7
-
8
- # nlp
9
-
10
- Natural language processing utilities for parsing utterances into structured data, POS tagging, and entity extraction.
11
-
12
- ## Overview
13
-
14
- The `nlp` feature is an on-demand feature that combines two complementary NLP libraries: **compromise** for verb normalization and quick structural parsing, and **wink-nlp** for high-accuracy part-of-speech tagging and named entity recognition. Use it when you need to extract intent from voice commands, classify sentence structure, or identify entities in text.
15
-
16
- ## Enabling the Feature
17
-
18
- The nlp feature is on-demand, so we enable it explicitly.
19
-
20
- ```ts
21
- const nlp = container.feature('nlp', { enable: true })
22
- console.log('NLP feature enabled:', nlp.state.enabled)
23
- ```
24
-
25
- ## Parsing Voice Commands
26
-
27
- The `parse()` method uses compromise to extract structured command data: an intent (normalized verb), a target noun, an optional prepositional subject, and any modifiers.
28
-
29
- ```ts
30
- const cmd1 = nlp.parse("open the terminal")
31
- console.log('Command:', JSON.stringify(cmd1, null, 2))
32
- ```
33
-
34
- Prepositional phrases with "of" are extracted as the subject.
35
-
36
- ```ts
37
- const cmd2 = nlp.parse("draw a diagram of the auth flow")
38
- console.log('Command with subject:', JSON.stringify(cmd2, null, 2))
39
- ```
40
-
41
- Notice how `intent` is the normalized verb form ("draw"), `target` is the direct object ("diagram"), and `subject` captures the prepositional phrase ("auth flow").
42
-
43
- ## POS Tagging and Entity Recognition
44
-
45
- The `analyze()` method uses wink-nlp for high-accuracy part-of-speech tagging and named entity recognition.
46
-
47
- ```ts
48
- const analysis = nlp.analyze("meet john at 3pm about the deployment")
49
- console.log('Tokens:')
50
- for (const tok of analysis.tokens) {
51
- console.log(` ${tok.value.padEnd(15)} ${tok.pos}`)
52
- }
53
- console.log('Entities:', JSON.stringify(analysis.entities))
54
- ```
55
-
56
- Each token is tagged with its part of speech (VERB, NOUN, ADP, DET, etc.) and named entities like times and proper nouns are extracted separately.
57
-
58
- ## Full Understanding
59
-
60
- The `understand()` method combines both `parse()` and `analyze()` into a single result, giving you structured command data alongside detailed POS tags and entities.
61
-
62
- ```ts
63
- const full = nlp.understand("send an email to sarah about the quarterly report")
64
- console.log('Intent:', full.intent)
65
- console.log('Target:', full.target)
66
- console.log('Modifiers:', full.modifiers)
67
- console.log('Token count:', full.tokens.length)
68
- console.log('Entities:', JSON.stringify(full.entities))
69
- ```
70
-
71
- This is the most complete method when you need both the high-level command structure and the detailed linguistic analysis in one call.
72
-
73
- ## Comparing Multiple Commands
74
-
75
- Parse is fast and lightweight, making it suitable for batch processing of voice commands.
76
-
77
- ```ts
78
- const commands = [
79
- "deploy the app to production",
80
- "restart the database server",
81
- "show logs for the api gateway",
82
- ]
83
- for (const raw of commands) {
84
- const parsed = nlp.parse(raw)
85
- console.log(`"${raw}" => intent: ${parsed.intent}, target: ${parsed.target}`)
86
- }
87
- ```
88
-
89
- ## Summary
90
-
91
- This demo covered the three main methods of the `nlp` feature: `parse()` for quick structural extraction from voice commands, `analyze()` for detailed POS tagging and entity recognition, and `understand()` for a combined view of both. The feature is well suited for building voice command interpreters, chatbot intent classifiers, and text analysis pipelines.
@@ -1,78 +0,0 @@
1
- ---
2
- title: "Opener"
3
- tags: [opener, files, urls, apps, editor]
4
- lastTested: null
5
- lastTestPassed: null
6
- ---
7
-
8
- # opener
9
-
10
- Opens files, URLs, desktop applications, and code editors from scripts. HTTP/HTTPS URLs open in Chrome, files open with the system default handler, and VS Code / Cursor can be targeted directly.
11
-
12
- ## Overview
13
-
14
- The `opener` feature provides a simple interface for opening things on the host system. It delegates to platform-appropriate commands (`open` on macOS, `start` on Windows, direct invocation on Linux). Because every method triggers a side effect (launching an application or browser), all operational examples use skip blocks.
15
-
16
- ## Enabling the Feature
17
-
18
- ```ts
19
- const opener = container.feature('opener', { enable: true })
20
- console.log('Opener enabled:', opener.state.get('enabled'))
21
- ```
22
-
23
- ## Exploring the API
24
-
25
- ```ts
26
- const docs = container.features.describe('opener')
27
- console.log(docs)
28
- ```
29
-
30
- ## Opening a URL
31
-
32
- Open a URL in Google Chrome (the default browser for HTTP/HTTPS targets).
33
-
34
- ```ts skip
35
- await opener.open('https://github.com/soederpop/luca')
36
- console.log('URL opened in Chrome')
37
- ```
38
-
39
- Non-HTTP paths are opened with the platform default handler. For example, opening a `.png` file would launch Preview on macOS.
40
-
41
- ```ts skip
42
- await opener.open('/Users/jon/screenshots/diagram.png')
43
- ```
44
-
45
- ## Opening a Desktop App
46
-
47
- Launch any desktop application by name.
48
-
49
- ```ts skip
50
- await opener.app('Slack')
51
- console.log('Slack launched')
52
- ```
53
-
54
- ```ts skip
55
- await opener.app('Finder')
56
- ```
57
-
58
- On macOS this uses `open -a`. The application name should match what appears in `/Applications`.
59
-
60
- ## Opening in VS Code or Cursor
61
-
62
- Open a file or folder directly in VS Code or Cursor.
63
-
64
- ```ts skip
65
- await opener.code('/Users/jon/projects/my-app')
66
- console.log('VS Code opened')
67
- ```
68
-
69
- ```ts skip
70
- await opener.cursor('/Users/jon/projects/my-app/src/index.ts')
71
- console.log('Cursor opened')
72
- ```
73
-
74
- Both methods fall back to `open -a` on macOS if the CLI command is not found in PATH.
75
-
76
- ## Summary
77
-
78
- The `opener` feature provides `open`, `app`, `code`, and `cursor` methods for launching URLs, files, desktop applications, and code editors from Luca scripts. All operations produce side effects on the host system.
@@ -1,72 +0,0 @@
1
- ---
2
- title: "os"
3
- tags: [os, system, platform, core]
4
- lastTested: null
5
- lastTestPassed: null
6
- ---
7
-
8
- # os
9
-
10
- Operating system information including platform, architecture, CPU, and network details.
11
-
12
- ## Overview
13
-
14
- The `os` feature is a core feature, auto-enabled on every container. You can access it directly as a global or via `container.feature('os')`. It exposes system metadata through simple getters -- no method calls needed. Use it to detect the runtime environment, adapt behavior per platform, or gather machine info for diagnostics.
15
-
16
- ## Platform and Architecture
17
-
18
- The `platform` and `arch` getters tell you what operating system and CPU architecture the code is running on.
19
-
20
- ```ts
21
- console.log('Platform:', os.platform)
22
- console.log('Architecture:', os.arch)
23
- ```
24
-
25
- Platform returns values like `darwin`, `linux`, or `win32`. Architecture returns values like `arm64` or `x64`.
26
-
27
- ## CPU Information
28
-
29
- The `cpuCount` getter reports the number of logical CPU cores available.
30
-
31
- ```ts
32
- console.log('CPU cores:', os.cpuCount)
33
- ```
34
-
35
- Use this to size worker pools or decide how many parallel tasks to run.
36
-
37
- ## System Paths
38
-
39
- The `tmpdir` and `homedir` getters return commonly needed system directories.
40
-
41
- ```ts
42
- console.log('Temp directory:', os.tmpdir)
43
- console.log('Home directory:', os.homedir)
44
- ```
45
-
46
- These are the OS defaults -- `tmpdir` for throwaway files and `homedir` for the current user's home.
47
-
48
- ## Hostname
49
-
50
- The `hostname` getter returns the machine's network hostname.
51
-
52
- ```ts
53
- console.log('Hostname:', os.hostname)
54
- ```
55
-
56
- This can be useful for logging, multi-machine coordination, or display purposes.
57
-
58
- ## Network Interfaces
59
-
60
- The `macAddresses` getter returns MAC addresses for non-internal IPv4 network interfaces.
61
-
62
- ```ts
63
- const macs = os.macAddresses
64
- console.log('MAC addresses:', macs.length, 'found')
65
- macs.slice(0, 3).forEach(mac => console.log(' ', mac))
66
- ```
67
-
68
- MAC addresses are useful for machine fingerprinting or license management.
69
-
70
- ## Summary
71
-
72
- This demo covered querying the platform and architecture, checking CPU core count, retrieving system directory paths, reading the hostname, and listing network MAC addresses. The `os` feature gives scripts everything they need to adapt to and report on the runtime environment.
@@ -1,89 +0,0 @@
1
- ---
2
- title: "Package Finder"
3
- tags: [packageFinder, packages, dependencies, npm]
4
- lastTested: null
5
- lastTestPassed: null
6
- ---
7
-
8
- # packageFinder
9
-
10
- Scans your workspace's node_modules and builds a queryable index of every installed package. Find duplicates, inspect versions, and map dependency relationships.
11
-
12
- ## Overview
13
-
14
- The `packageFinder` feature is on-demand. After enabling and starting it, it recursively walks all node_modules directories, reads every package.json, and indexes the results. Use it for dependency auditing, duplicate detection, or understanding what is actually installed in your project.
15
-
16
- ## Starting the Finder
17
-
18
- Enable the feature and run the initial scan.
19
-
20
- ```ts
21
- const finder = container.feature('packageFinder')
22
- await finder.start()
23
- console.log('Scan complete:', finder.isStarted)
24
- console.log('Unique packages:', finder.packageNames.length)
25
- console.log('Total manifests:', finder.manifests.length)
26
- ```
27
-
28
- The difference between unique package names and total manifests reveals how many packages exist in multiple copies (different versions in different locations).
29
-
30
- ## Listing Packages
31
-
32
- Browse the discovered package names.
33
-
34
- ```ts
35
- const names = finder.packageNames
36
- console.log('First 10 packages:')
37
- names.slice(0, 10).forEach(n => console.log(' ', n))
38
- ```
39
-
40
- Package names include both scoped and unscoped packages from every node_modules tree in the workspace.
41
-
42
- ## Finding a Package by Name
43
-
44
- Look up a specific package to see its version and location.
45
-
46
- ```ts
47
- const zod = finder.findByName('zod')
48
- if (zod) {
49
- console.log('Found:', zod.name)
50
- console.log('Version:', zod.version)
51
- console.log('Description:', zod.description)
52
- }
53
- ```
54
-
55
- If multiple versions exist, `findByName` returns the first match. Use `filter()` to find all instances.
56
-
57
- ## Scoped Packages
58
-
59
- The finder tracks which npm scopes are present in your dependencies.
60
-
61
- ```ts
62
- const scopes = finder.scopes
63
- console.log('Scopes found:', scopes.length)
64
- scopes.slice(0, 8).forEach(s => {
65
- const count = finder.packageNames.filter(n => n.startsWith(s)).length
66
- console.log(` ${s}: ${count} packages`)
67
- })
68
- ```
69
-
70
- This is useful for auditing which organizations and ecosystems your project depends on.
71
-
72
- ## Detecting Duplicates
73
-
74
- Packages that appear in multiple locations (often at different versions) show up in the duplicates list.
75
-
76
- ```ts
77
- const dupes = finder.duplicates
78
- console.log('Duplicate packages:', dupes.length)
79
- dupes.slice(0, 5).forEach(name => {
80
- const count = finder.counts[name]
81
- console.log(` ${name}: ${count} copies`)
82
- })
83
- ```
84
-
85
- Duplicates increase install size and can cause subtle bugs when multiple versions of the same library coexist.
86
-
87
- ## Summary
88
-
89
- This demo covered scanning the workspace for packages, listing and looking up packages, inspecting scopes, and detecting duplicates. The `packageFinder` feature gives you a complete inventory of your installed dependencies for auditing and analysis.
@@ -1,91 +0,0 @@
1
- ---
2
- title: "PostgreSQL"
3
- tags: [postgres, database, sql, storage]
4
- lastTested: null
5
- lastTestPassed: null
6
- ---
7
-
8
- # postgres
9
-
10
- PostgreSQL feature for safe SQL execution through Bun's native SQL client. Supports parameterized queries, tagged-template literals, and write operations.
11
-
12
- ## Overview
13
-
14
- Use the `postgres` feature when you need to interact with a PostgreSQL database. It provides three query interfaces: parameterized `query()` for reads, `execute()` for writes, and the `sql` tagged template for injection-safe inline SQL.
15
-
16
- Requires a running PostgreSQL instance and a connection URL.
17
-
18
- ## Enabling the Feature
19
-
20
- ```ts
21
- const pg = container.feature('postgres', {
22
- url: 'postgres://user:pass@localhost:5432/mydb'
23
- })
24
- console.log('Postgres feature created')
25
- console.log('Connection URL configured:', !!pg.state.url)
26
- ```
27
-
28
- Pass your connection URL via the `url` option. In production, read from an environment variable.
29
-
30
- ## API Documentation
31
-
32
- ```ts
33
- const info = await container.features.describe('postgres')
34
- console.log(info)
35
- ```
36
-
37
- ## Parameterized Queries
38
-
39
- Use `query()` for SELECT statements with `$N` placeholders to prevent SQL injection.
40
-
41
- ```ts skip
42
- const users = await pg.query(
43
- 'SELECT id, email FROM users WHERE active = $1 LIMIT $2',
44
- [true, 10]
45
- )
46
- console.log(`Found ${users.length} active users`)
47
- users.forEach(u => console.log(` ${u.id}: ${u.email}`))
48
- ```
49
-
50
- With a running database, this would return an array of row objects matching the query. The `query` event fires on each execution.
51
-
52
- ## Tagged Template SQL
53
-
54
- The `sql` tagged template automatically converts interpolated values into bound parameters.
55
-
56
- ```ts skip
57
- const email = 'hello@example.com'
58
- const rows = await pg.sql`
59
- SELECT id, name FROM users WHERE email = ${email}
60
- `
61
- console.log('Found:', rows)
62
- ```
63
-
64
- This is the most ergonomic way to write queries. Each interpolated value becomes a `$N` parameter automatically, preventing SQL injection without manual placeholder numbering.
65
-
66
- ## Write Operations
67
-
68
- Use `execute()` for INSERT, UPDATE, and DELETE statements that return affected row counts.
69
-
70
- ```ts skip
71
- const { rowCount } = await pg.execute(
72
- 'UPDATE users SET active = $1 WHERE last_login < $2',
73
- [false, '2024-01-01']
74
- )
75
- console.log(`Deactivated ${rowCount} users`)
76
- ```
77
-
78
- The `execute` event fires with the row count after each write operation.
79
-
80
- ## Closing the Connection
81
-
82
- ```ts skip
83
- await pg.close()
84
- console.log('Connection closed:', !pg.state.connected)
85
- ```
86
-
87
- Always close the connection when done. The `closed` event fires after teardown.
88
-
89
- ## Summary
90
-
91
- The `postgres` feature wraps Bun's native SQL client with three query methods: `query()` for parameterized reads, `execute()` for writes, and the `sql` tagged template for ergonomic injection-safe queries. Events fire for each operation. Key methods: `query()`, `execute()`, `sql`, `close()`.
@@ -1,81 +0,0 @@
1
- ---
2
- title: "proc"
3
- tags: [proc, process, shell, core]
4
- lastTested: null
5
- lastTestPassed: null
6
- ---
7
-
8
- # proc
9
-
10
- Process execution utilities for running shell commands and capturing their output.
11
-
12
- ## Overview
13
-
14
- The `proc` feature is a core feature, auto-enabled on every container. You can access it directly as a global or via `container.feature('proc')`. It provides synchronous and asynchronous methods for executing shell commands. Use `exec()` for quick synchronous calls and `execAndCapture()` when you need structured output with exit codes.
15
-
16
- ## Simple Command Execution
17
-
18
- Use `exec()` to run a command synchronously and get its stdout as a string.
19
-
20
- ```ts
21
- const result = proc.exec('echo hello from luca')
22
- console.log('Output:', result.trim())
23
- ```
24
-
25
- The output is returned directly as a string, with no wrapper object.
26
-
27
- ## Listing Files
28
-
29
- Commands that produce multi-line output work naturally. Each line comes through as part of the string.
30
-
31
- ```ts
32
- const listing = proc.exec('ls src')
33
- const entries = listing.trim().split('\n')
34
- console.log('Entries in src/:', entries.length)
35
- entries.slice(0, 5).forEach(e => console.log(' ', e))
36
- ```
37
-
38
- You can split and process the output like any other string.
39
-
40
- ## Working Directory Option
41
-
42
- Pass a `cwd` option to run a command in a different directory without changing the container's working directory.
43
-
44
- ```ts
45
- const rootFiles = proc.exec('ls -1', { cwd: '.' })
46
- console.log('Files in project root:')
47
- rootFiles.trim().split('\n').slice(0, 5).forEach(f => console.log(' ', f))
48
- ```
49
-
50
- This is useful when you need to operate on files in a subdirectory or sibling project.
51
-
52
- ## Getting System Info
53
-
54
- Shell commands work for gathering system information that might not be available through other features.
55
-
56
- ```ts
57
- const date = proc.exec('date')
58
- console.log('Current date:', date.trim())
59
-
60
- const whoami = proc.exec('whoami')
61
- console.log('Current user:', whoami.trim())
62
- ```
63
-
64
- Any command available on the system PATH can be called through `exec()`.
65
-
66
- ## Async Execution with Capture
67
-
68
- Use `execAndCapture()` for async execution with structured output including exit code and stderr.
69
-
70
- ```ts
71
- const result = await proc.execAndCapture('ls src')
72
- console.log('Exit code:', result.exitCode)
73
- console.log('Stdout lines:', result.stdout.trim().split('\n').length)
74
- console.log('Stderr:', result.stderr || '(empty)')
75
- ```
76
-
77
- The returned object gives you `stdout`, `stderr`, `exitCode`, and `pid` for full control over the result.
78
-
79
- ## Summary
80
-
81
- This demo covered synchronous command execution, processing multi-line output, running commands in different directories, gathering system info, and async execution with structured results. The `proc` feature is the escape hatch for anything the other features do not cover directly.
@@ -1,79 +0,0 @@
1
- ---
2
- title: "Process Manager"
3
- tags: [processManager, processes, spawn, lifecycle]
4
- lastTested: null
5
- lastTestPassed: null
6
- ---
7
-
8
- # processManager
9
-
10
- Manage long-running child processes with tracking, events, and automatic cleanup.
11
-
12
- ## Overview
13
-
14
- The `processManager` feature is an on-demand feature for spawning and supervising child processes. Unlike `proc.spawn` which blocks until a process exits, processManager returns a `SpawnHandler` immediately -- a handle object with its own state, events, and lifecycle methods. The feature tracks all spawned processes and can kill them all on parent exit. Use it when you need to orchestrate multiple background services, dev servers, or worker processes.
15
-
16
- ## Enabling the Feature
17
-
18
- Enable the processManager with auto-cleanup so tracked processes are killed when the parent exits.
19
-
20
- ```ts
21
- const pm = container.feature('processManager', { enable: true, autoCleanup: true })
22
- console.log('ProcessManager enabled:', pm.state.enabled)
23
- console.log('Total spawned so far:', pm.state.totalSpawned)
24
- ```
25
-
26
- ## Spawning a Process
27
-
28
- Spawn a short-lived process and capture its output. The `spawn` method returns a `SpawnHandler` immediately.
29
-
30
- ```ts
31
- const handle = pm.spawn('echo', ['hello from process manager'], { tag: 'greeter' })
32
- console.log('Spawned process tag:', 'greeter')
33
- console.log('Handle has kill method:', typeof handle.kill === 'function')
34
- ```
35
-
36
- The handle provides methods like `kill()` and events like `stdout`, `stderr`, `exited`, and `crashed`.
37
-
38
- ## Listing Tracked Processes
39
-
40
- The processManager keeps track of every process it has spawned, whether running or finished.
41
-
42
- ```ts
43
- const all = pm.list()
44
- console.log('Tracked processes:', all.length)
45
- console.log('Total spawned:', pm.state.totalSpawned)
46
- ```
47
-
48
- You can also look up a specific process by its tag.
49
-
50
- ```ts
51
- const found = pm.getByTag('greeter')
52
- console.log('Found by tag:', found ? 'yes' : 'no')
53
- ```
54
-
55
- ## Spawning and Killing
56
-
57
- You can spawn a longer process and then kill it. Here we spawn `sleep` and immediately terminate it.
58
-
59
- ```ts
60
- const sleeper = pm.spawn('sleep', ['10'], { tag: 'sleeper' })
61
- console.log('Sleeper spawned')
62
- sleeper.kill()
63
- console.log('Sleeper killed')
64
- console.log('Total spawned now:', pm.state.totalSpawned)
65
- ```
66
-
67
- ## Cleaning Up
68
-
69
- The `killAll` method terminates every tracked process, and `stop` does a full teardown including removing exit handlers.
70
-
71
- ```ts
72
- pm.killAll()
73
- const remaining = pm.list().filter(h => h.state?.status === 'running')
74
- console.log('Running after killAll:', remaining.length)
75
- ```
76
-
77
- ## Summary
78
-
79
- This demo covered the `processManager` feature: spawning processes that return handles immediately, tracking them by ID or tag, listing all tracked processes, and killing them individually or all at once. It is the right tool for orchestrating background services, dev servers, and any scenario where you need non-blocking process management with lifecycle events.