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
@@ -113,6 +113,7 @@ jobs:
113
113
  run: |
114
114
  codesign --sign "Developer ID Application: Demitra Del Fiacco (77WL45HR8M)" \
115
115
  --force --options runtime --timestamp dist/release/luca-darwin-x64
116
+ codesign --remove-signature dist/release/luca-darwin-arm64
116
117
  codesign --sign "Developer ID Application: Demitra Del Fiacco (77WL45HR8M)" \
117
118
  --force --options runtime --timestamp dist/release/luca-darwin-arm64
118
119
 
package/CLAUDE.md CHANGED
@@ -14,20 +14,28 @@ The `container` and its helpers are perfect for scripts and long running service
14
14
 
15
15
  On the frontend the browser container is perfect for highly reactive, stateful web applications, especially works well with React.
16
16
 
17
+ ## Developer Standards
18
+
19
+ - Please try not to have broken tests committed to the build and let them slide. Encourage me to fix them so they dont grow out of control.
20
+ - When working on features, clients, servers, or other helpers, the introspection system relies on good zod descriptions, and good jsdoc descriptions
21
+
22
+
17
23
  ## The `luca` CLI
18
24
 
19
25
  - in dev, `bun run src/cli/cli.ts` is the same as `luca`
20
26
 
21
27
  - in prod, or educational material, `luca` refers to the binary build. In this mode, it can work in any project, and load `commands/` and `endpoints/` through its VM and therefore allows folders of these modules which don't depend on anything from NPM to extend the CLI and be used in commands like `luca serve` to run a local express server
22
28
 
23
- - The `luca` cli is an extremely helpful tool.
24
- - it runs code `luca eval "container.features.available"`
29
+ - The `luca` cli is an extremely helpful tool.
30
+ - it runs code `luca eval "container.features.available"`
25
31
  - it generates docs:
26
32
  - `luca describe diskCache`
27
33
  - `luca describe` describe the container itself
28
34
  - `luca describe servers` describe which servers are available
29
35
  - `luca describe ui.banner` describe a specific method or getter on a helper
30
36
  - the arguments to describe are pretty forgiving and permissive
37
+ - `luca chat` — start an interactive chat session with an assistant
38
+ - `luca scaffold assistant <name>` — generate boilerplate for a new assistant
31
39
 
32
40
  **IMPORTANT NOTE** When trying to investigate features, clients, servers, etc, see if these tools can help you first instead of searching for files and reading them that way. If youw ant to understand what they do, vs how theyre actually implemented
33
41
 
package/README.md CHANGED
@@ -1,26 +1,33 @@
1
1
  # Luca
2
2
 
3
3
  **Lightweight Universal Conversational Architecture**
4
+ *(aka Le Ultimate Component Architecture)*
4
5
 
5
- A single binary CLI that ships 40+ self-documenting features, clients, and servers. No `npm install`, no setup download it and start building.
6
+ An agent-native TypeScript runtime that ships as a single binaryand builds yours too.
6
7
 
7
- Luca gives you a `container` object think of it like a Docker container for your application runtime. It's a per-process singleton, event bus, state machine, and dependency injector all in one. Layer your own features, clients, servers, commands, and endpoints on top of the base `NodeContainer` (server) or `WebContainer` (browser), then bundle it into your own single-file executable or browser build.
8
+ Luca gives humans and AI agents the same architectural map: one self-documenting `container` object with typed features, clients, servers, commands, state, events, and runtime docs. The agent doesn't guess at architecture it discovers it. No `npm install`, no `node_modules`, no supply chain exposure, no ceremony.
8
9
 
9
- The `AGIContainer` extends the node stack with features, clients, and servers for building AI assistants — wrappers around major coding models, tool orchestration, and UIs to visualize them working.
10
+ ## What Makes Luca Different
10
11
 
11
- ## Installation
12
+ AI agents today either generate sprawling ad-hoc code or fight against frameworks that weren't designed for them. They don't know what's available, what conventions to follow, or where to put things. The result is brittle, unreviewable output that drifts further from the codebase with every generation.
13
+
14
+ Luca solves this with three ideas:
15
+
16
+ **One introspectable container.** Every Luca app has a single `container` — a dependency-injected runtime that carries features, clients, servers, commands, endpoints, observable state, and an event bus. Every component describes itself: constructor options, method signatures, events emitted, state shape. The human reads the same docs the agent reads. There is one way to do things.
12
17
 
13
- ### Quick install (macOS/Linux)
18
+ **Single binary in, single binary out.** Luca ships as a standalone binary. No runtime dependencies, no package manager, no exposure to the npm supply chain. You use it to build your project, then compile your project into its own standalone binary with your custom commands, features, endpoints, and assistants baked in.
19
+
20
+ **The assistant is a first-class citizen.** Luca's `Assistant` class can `use()` any feature, client, or server in the container — inheriting its tools automatically. The assistant doesn't need hand-written tool definitions. It discovers capabilities from the runtime it's embedded in.
21
+
22
+ ## Installation
14
23
 
15
24
  ```sh
16
25
  curl -fsSL https://luca-js.soederpop.com/install.sh | bash
17
26
  ```
18
27
 
19
- This detects your platform, downloads the right binary, and puts `luca` in your path. Done.
28
+ Detects your platform, downloads the binary, puts `luca` in your path. Done.
20
29
 
21
- ### Manual download
22
-
23
- Grab the latest release for your platform from [GitHub Releases](https://github.com/soederpop/luca/releases/latest):
30
+ Or grab a release directly from [GitHub Releases](https://github.com/soederpop/luca/releases/latest):
24
31
 
25
32
  | Platform | Binary |
26
33
  |----------|--------|
@@ -30,137 +37,149 @@ Grab the latest release for your platform from [GitHub Releases](https://github.
30
37
  | Linux ARM64 | `luca-linux-arm64` |
31
38
  | Windows x64 | `luca-windows-x64.exe` |
32
39
 
33
- ### Verify
34
-
35
40
  ```sh
36
41
  luca --version
37
- # luca v0.0.34 (main@325a0ee) built 2026-03-25T06:10:28Z
38
42
  ```
39
43
 
40
44
  ## Quick Start
41
45
 
42
- ### Bootstrap a new project
43
-
44
46
  ```sh
45
47
  luca bootstrap my-app
46
48
  cd my-app
47
49
  ```
48
50
 
49
- Or just run `luca bootstrap` and it'll ask you for a project name. This scaffolds a project with `commands/`, `endpoints/`, `features/`, `docs/`, and AI assistant configuration — everything wired up and ready to extend.
51
+ This scaffolds a project with `commands/`, `endpoints/`, `features/`, `docs/`, and AI assistant configuration — everything wired up and ready to extend.
50
52
 
51
- ### Explore
53
+ Now explore what the runtime can do:
52
54
 
53
55
  ```sh
54
56
  luca # list all commands
55
- luca describe features # index of 40+ features
56
- luca describe fs # full docs for any feature
57
+ luca describe features # see every available feature
58
+ luca describe fs # full docs for a specific feature
57
59
  luca describe fs.readFile # drill into a specific method
58
- luca eval "container.features.available" # run code with the container in scope
60
+ luca eval "container.features.available" # run code against the live container
59
61
  luca console # full REPL
60
62
  ```
61
63
 
62
- ### Run scripts and markdown
64
+ This is the core loop: discover what's available, evaluate code against it, build on top of it. Your AI assistant does the same thing.
63
65
 
64
- `luca run` executes TypeScript, JavaScript, and markdown files. Markdown files have their code blocks executed in order, with `container` already in scope — no imports needed:
66
+ ## The Container
65
67
 
66
- ````md
67
- # my-script.md
68
-
69
- Grab some data and print it:
68
+ One import. One object. Everything on it.
70
69
 
71
70
  ```ts
72
- const fs = container.feature('fs')
73
- const files = await fs.readdir('.')
74
- console.log(`Found ${files.length} files`)
71
+ import container from 'luca'
72
+
73
+ container.features.available // ['fs', 'git', 'proc', 'vault', 'yaml', 'sqlite', ...]
74
+ container.clients.available // ['rest', 'websocket', ...]
75
+ container.servers.available // ['express', 'websocket', 'ipc', 'mcp', ...]
75
76
  ```
76
77
 
77
- Then do something with it:
78
+ The container is a singleton — a per-process global that acts as dependency injector, event bus, and state machine. Features, clients, and servers are lazy-loaded from registries. Every helper carries introspection metadata that powers `luca describe`, the REPL, and agent tool discovery.
78
79
 
79
80
  ```ts
80
- const yaml = container.feature('yaml')
81
- console.log(yaml.stringify({ files }))
82
- ```
83
- ````
84
-
85
- ```sh
86
- luca run my-script.md
81
+ const fs = container.feature('fs')
82
+ const rest = container.client('rest', { baseURL: 'https://api.example.com' })
83
+ const server = container.server('express')
87
84
  ```
88
85
 
89
- Each block shares state with the previous ones, so variables defined in one block are available in the next. Use `--safe` to require approval before each block, or `--console` to drop into a REPL afterward with all the accumulated context. **Note:** if your block uses top-level awaits, we can't preserve context. You can use `container.addContext({ yourVariable })` and it will be available as a global variable in future blocks.
86
+ No imports beyond the container. No `require('fs')`, no `import axios`, no `npm install anything`. The container provides file I/O, HTTP clients, databases, YAML parsing, git operations, browser automation, terminal UI, semantic search, encryption, and more all typed, all documented, all discoverable at runtime.
90
87
 
91
- ### Serve
88
+ ### In the browser
92
89
 
93
- ```sh
94
- luca serve # serves endpoints/ folder as HTTP routes
90
+ ```js
91
+ import container from 'https://esm.sh/luca/web'
95
92
  ```
96
93
 
97
- See [`docs/CLI.md`](./docs/CLI.md) for the full CLI reference.
94
+ Same singleton pattern, optimized for browser features. `window.luca` is set automatically.
98
95
 
99
- ## Importing the container into your own scripts / modules
96
+ ## Build an Assistant
100
97
 
101
- ```ts
102
- import container from '@soederpop/luca'
103
- ```
104
-
105
- That's it — you get one object with everything on it. No factory function, no setup. It's a singleton.
98
+ The assistant is the interface that ties everything together. It can `use()` any module in the container, automatically inheriting that module's tools:
106
99
 
107
- We do export the framework classes (`WebContainer`, `Feature`, `Client`, `Server`, etc.) if you want to extend them, but for using the system you only ever need the default export.
108
-
109
- ### In the browser via esm.sh
100
+ ```ts
101
+ import container from 'luca'
110
102
 
111
- **Static import:**
103
+ const browser = container.feature('browserUse', { headed: true })
104
+ const assistant = container.feature('assistant', {
105
+ systemPrompt: 'You are a web research assistant.',
106
+ model: 'gpt-4.1-mini',
107
+ })
112
108
 
113
- ```js
114
- import container from 'https://esm.sh/@soederpop/luca/web'
109
+ // browserUse injects its tools — open, click, type, screenshot, extract, etc.
110
+ assistant.use(browser)
111
+ await assistant.start()
115
112
 
116
- container.features.available // ['fetch', 'state', 'ui', ...]
113
+ await assistant.ask('Go to hacker news and tell me the top 3 stories')
117
114
  ```
118
115
 
119
- **Dynamic import:**
116
+ The assistant doesn't need hand-written tool schemas. When it calls `use(browser)`, it gets every tool that `browserUse` exposes — typed, documented, ready to invoke. Swap `browserUse` for `fs` or `git` or `sqlite` and the assistant gets a completely different toolkit from the same pattern.
120
117
 
121
- ```js
122
- const { default: container } = await import('https://esm.sh/@soederpop/luca/web')
118
+ This is what agent-native means: the runtime teaches the agent what it can do.
123
119
 
124
- container.features.available // same singleton
125
- ```
120
+ ### The Assistant as Operator
126
121
 
127
- With dynamic import you have to pick it off `default` yourself there's no top-level default binding like the static form gives you. Either way, it's the same singleton container, and `window.luca` is set automatically so you can poke at it from the console.
122
+ Most agent frameworks give you a chat loop with tool calls bolted on. Luca gives you an agent that can operate real infrastructure.
128
123
 
129
- ## How It Works
124
+ The container has servers — REST, WebSocket, IPC. It has clients for all of them. It has process management, a VM, file I/O, databases, git, docker, SSH, even GPU compute over RunPod. The assistant can `use()` any combination of these, which means you can build agents that:
130
125
 
131
- ### Self-documenting at runtime
126
+ - **Stand up and manage servers** — spin up an Express server, add routes, react to incoming requests
127
+ - **Listen to events across transports** — WebSocket messages, IPC signals, HTTP webhooks, file system changes
128
+ - **Spawn and manage processes** — launch child processes, monitor their output, kill them when done — locally, over SSH, in Docker containers, or on remote GPU instances
129
+ - **Inspect and react to state** — every helper has observable state and an event bus; the assistant can watch for changes and act on them autonomously
130
+ - **Run code in a sandboxed VM** — execute untrusted code safely, evaluate expressions, build REPL-like workflows
132
131
 
133
- Every helper (feature, client, server) carries its own introspection metadata constructor options, observable state shape, events emitted, environment variables used, method signatures. This powers `luca describe`, works in the REPL, and enables metaprogramming.
132
+ The assistant isn't answering questions in a chat window. It's running your infrastructure, reacting to events in real time, and coordinating across multiple systems all through the same `container` it already knows how to discover.
134
133
 
135
134
  ```ts
136
- import container from '@soederpop/luca'
135
+ const assistant = container.feature('assistant', {
136
+ systemPrompt: 'You manage the deployment pipeline. Monitor builds, restart failed services, report status.',
137
+ model: 'gpt-4.1-mini',
138
+ })
137
139
 
138
- container.features.available // ['fs','git','proc','vault',...]
139
- container.clients.available // ['rest','websocket']
140
- container.servers.available // ['express','websocket','ipc','mcp']
140
+ assistant.use(container.feature('proc'))
141
+ assistant.use(container.server('express'))
142
+ assistant.use(container.server('websocket'))
143
+ assistant.use(container.feature('docker'))
144
+ assistant.use(container.feature('fs'))
141
145
 
142
- container.features.describe() // markdown summary of all features
143
- container.feature('fs').introspect() // json
144
- container.feature('fs').introspectAsText() // markdown
146
+ await assistant.start()
145
147
  ```
146
148
 
147
- ### Content-aware documentation
149
+ That's an agent harness. Not a chatbot — an operator.
148
150
 
149
- The node container includes `container.docs` powered by [Contentbase](https://github.com/soederpop/contentbase) — query your project's markdown documentation like a database:
151
+ ## Build Your Own Binary
150
152
 
151
- ```ts
152
- await container.docs.load()
153
- const { Tutorial } = container.docs.models
154
- const tutorials = await container.docs.query(Tutorial).fetchAll()
153
+ Luca isn't just a tool you use — it's a tool that builds tools.
154
+
155
+ Bootstrap a project, add your own commands, features, endpoints, and assistants, then compile the whole thing into a standalone binary:
156
+
157
+ ```sh
158
+ luca bootstrap my-tool
159
+ cd my-tool
160
+
161
+ # add your own commands, features, endpoints
162
+ luca scaffold command analyze --description "Run analysis on input data"
163
+ luca scaffold feature myCache --description "Custom caching layer"
164
+ luca scaffold endpoint status --description "Health check endpoint"
165
+
166
+ # compile to a single binary
167
+ luca bundle
155
168
  ```
156
169
 
157
- ### Project extensions
170
+ The output is a self-contained executable. No node, no bun, no npm on the target machine. Your users download one file and run it. Your custom commands show up in `my-tool --help`. Your assistant ships inside.
158
171
 
159
- Drop files into convention-based folders and they're auto-discovered:
172
+ ## Project Structure
160
173
 
161
- - `commands/` custom CLI commands, run via `luca <name>`
162
- - `endpoints/` — file-based HTTP routes, served via `luca serve`
163
- - `features/` — custom container features
174
+ Convention-based folders are auto-discovered:
175
+
176
+ ```
177
+ commands/ custom CLI commands → luca <name>
178
+ endpoints/ file-based HTTP routes → luca serve
179
+ features/ custom container features → container.feature('<name>')
180
+ assistants/ AI assistants with system prompts and tools
181
+ docs/ content documents queryable via container.docs
182
+ ```
164
183
 
165
184
  Generate boilerplate with `luca scaffold`:
166
185
 
@@ -170,33 +189,40 @@ luca scaffold feature myCache --description "Custom caching layer"
170
189
  luca scaffold endpoint users --description "User management API"
171
190
  ```
172
191
 
173
- ### Building an assistant
192
+ ## Run Scripts and Markdown
174
193
 
175
- Features can inject their own tools into an assistant via `assistant.use()`. Here's an assistant that can browse the web:
194
+ `luca run` executes TypeScript, JavaScript, and markdown files with the container in scope:
176
195
 
177
- ```ts
178
- import container from '@soederpop/luca'
196
+ ````md
197
+ # my-script.md
179
198
 
180
- const browser = container.feature('browserUse', { headed: true })
181
- const assistant = container.feature('assistant', {
182
- systemPrompt: 'You are a web research assistant. Use your browser tools to find information.',
183
- model: 'gpt-4.1-mini',
184
- })
199
+ ```ts
200
+ const fs = container.feature('fs')
201
+ const files = await fs.readdir('.')
202
+ console.log(`Found ${files.length} files`)
203
+ ```
185
204
 
186
- // browserUse injects its tools — open, click, type, screenshot, extract, etc.
187
- assistant.use(browser)
188
- await assistant.start()
205
+ ```ts
206
+ const yaml = container.feature('yaml')
207
+ console.log(yaml.stringify({ files }))
208
+ ```
209
+ ````
189
210
 
190
- await assistant.ask('Go to hacker news and tell me what the top 3 stories are about')
211
+ ```sh
212
+ luca run my-script.md
191
213
  ```
192
214
 
193
- ### AI coding assistant integration
215
+ Blocks share state. Use `--safe` for approval before each block, `--console` to drop into a REPL afterward with accumulated context.
194
216
 
195
- The CLI works great alongside Claude Code, Codex, and other coding assistants:
217
+ ## AI Coding Assistant Integration
196
218
 
197
- - `luca describe` gives assistants full API docs for any helper
198
- - `luca eval` lets them test container expressions before committing code
199
- - `luca sandbox-mcp` provides a REPL and doc browser as an MCP server
219
+ Luca is designed to work alongside Claude Code, Codex, and other AI coding assistants:
220
+
221
+ - `luca describe` gives the assistant full API docs for any helper — method signatures, options, events, state shape
222
+ - `luca eval` lets the assistant test container expressions before writing code
223
+ - `luca sandbox-mcp` exposes a REPL and doc browser as an MCP server
224
+
225
+ The assistant doesn't need to read source files to understand the framework. It asks the framework directly.
200
226
 
201
227
  ## Development
202
228
 
@@ -213,15 +239,10 @@ bun install
213
239
  bun run setup
214
240
  ```
215
241
 
216
- `bun run setup` applies `git update-index --skip-worktree` to the build artifact stubs so local changes to generated files (from running `build:introspection`, `build:scaffolds`, etc.) are never accidentally committed.
217
-
218
242
  ### Running in dev
219
243
 
220
244
  ```sh
221
- # Run the CLI from source (equivalent to the luca binary)
222
- bun run src/cli/cli.ts
223
-
224
- # Examples
245
+ bun run src/cli/cli.ts # same as luca binary
225
246
  bun run src/cli/cli.ts describe features
226
247
  bun run src/cli/cli.ts eval "container.features.available"
227
248
  ```
@@ -229,11 +250,8 @@ bun run src/cli/cli.ts eval "container.features.available"
229
250
  ### Testing
230
251
 
231
252
  ```sh
232
- # Unit tests
233
- bun test
234
-
235
- # Integration tests (may require API keys / env vars)
236
- bun run test:integration
253
+ bun test # unit tests
254
+ bun run test:integration # integration tests (may require API keys)
237
255
  ```
238
256
 
239
257
  ### Building the binary
@@ -242,13 +260,13 @@ bun run test:integration
242
260
  bun run compile
243
261
  ```
244
262
 
245
- This runs the full pipeline: introspection generation, scaffold templates, bootstrap code, python bridge, build stamp, then compiles to `dist/luca` via Bun's native compiler.
263
+ Runs the full pipeline: introspection generation, scaffold templates, build stamp, then compiles to `dist/luca` via Bun's native compiler.
246
264
 
247
265
  ### Project structure
248
266
 
249
267
  ```
250
268
  src/
251
- cli/ CLI entry point and commands
269
+ cli/ CLI entry point and built-in commands
252
270
  node/ NodeContainer and server-side features
253
271
  web/ WebContainer and browser features
254
272
  agi/ AGIContainer — AI assistant layer
@@ -1,10 +1,15 @@
1
1
  ---
2
+ model: qwen/qwen-3.6-27b
3
+ clientOptions:
4
+ baseURL: http://chief:1234/v1
5
+ apiKey: sk-local
6
+ contextWindow: 64000
2
7
  skills:
3
8
  - luca-framework
4
9
  ---
5
10
  # Coding Assistant
6
11
 
7
- You are a Luca Framework coding assistant. You read, search, understand, and modify codebases that use the @soederpop/luca framework. This framework allows people to build local, secure, AI native applications with a just a single download. The luca CLI is a dependency injection container designed for students and AI Assistants and can teach them everything they need to know, as it ships with its own documentation tool designed for an Agent to be able to progressively learn what it needs when it needs it.
12
+ You are a Luca Framework coding assistant. You read, search, understand, and modify codebases that use the luca framework. This framework allows people to build local, secure, AI native applications with a just a single download. The luca CLI is a dependency injection container designed for students and AI Assistants and can teach them everything they need to know, as it ships with its own documentation tool designed for an Agent to be able to progressively learn what it needs when it needs it.
8
13
 
9
14
  ## Luca First
10
15
 
@@ -1,4 +1,4 @@
1
- import type { Assistant, AGIContainer } from '@soederpop/luca/agi'
1
+ import type { Assistant, AGIContainer } from 'luca/agi'
2
2
 
3
3
  declare global {
4
4
  var assistant: Assistant
@@ -1,4 +1,4 @@
1
- import type { AGIContainer, Assistant } from "@soederpop/luca/agi"
1
+ import type { AGIContainer, Assistant } from "luca/agi"
2
2
 
3
3
  declare global {
4
4
  var assistant: Assistant
@@ -1,4 +1,4 @@
1
- import container from '@soederpop/luca/agi'
1
+ import container from 'luca/agi'
2
2
  import { z } from 'zod'
3
3
 
4
4
  export const use = [