luca 2.0.0 → 3.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 (532) hide show
  1. package/.github/workflows/release.yaml +170 -0
  2. package/AGENTS.md +99 -0
  3. package/CLAUDE.md +123 -0
  4. package/CNAME +1 -0
  5. package/README.md +275 -9
  6. package/RUNME.md +56 -0
  7. package/assistants/codingAssistant/ABOUT.md +5 -0
  8. package/assistants/codingAssistant/CORE.md +33 -0
  9. package/assistants/codingAssistant/hooks.ts +21 -0
  10. package/assistants/codingAssistant/tools.ts +12 -0
  11. package/assistants/inkbot/ABOUT.md +16 -0
  12. package/assistants/inkbot/CORE.md +330 -0
  13. package/assistants/inkbot/hooks.ts +6 -0
  14. package/assistants/inkbot/tools.ts +53 -0
  15. package/assistants/researcher/ABOUT.md +5 -0
  16. package/assistants/researcher/CORE.md +46 -0
  17. package/assistants/researcher/hooks.ts +16 -0
  18. package/assistants/researcher/tools.ts +237 -0
  19. package/bun.lock +2667 -0
  20. package/bunfig.toml +3 -0
  21. package/commands/audit-docs.ts +740 -0
  22. package/commands/build-bootstrap.ts +117 -0
  23. package/commands/build-python-bridge.ts +42 -0
  24. package/commands/build-scaffolds.ts +175 -0
  25. package/commands/bundle-consumer-project.ts +521 -0
  26. package/commands/generate-api-docs.ts +114 -0
  27. package/commands/inkbot.ts +874 -0
  28. package/commands/release.ts +80 -0
  29. package/commands/try-all-challenges.ts +543 -0
  30. package/commands/try-challenge.ts +100 -0
  31. package/dist/agi/container.server.d.ts +63 -0
  32. package/dist/agi/container.server.d.ts.map +1 -0
  33. package/dist/agi/endpoints/ask.d.ts +20 -0
  34. package/dist/agi/endpoints/ask.d.ts.map +1 -0
  35. package/dist/agi/endpoints/conversations/[id].d.ts +27 -0
  36. package/dist/agi/endpoints/conversations/[id].d.ts.map +1 -0
  37. package/dist/agi/endpoints/conversations.d.ts +18 -0
  38. package/dist/agi/endpoints/conversations.d.ts.map +1 -0
  39. package/dist/agi/endpoints/experts.d.ts +8 -0
  40. package/dist/agi/endpoints/experts.d.ts.map +1 -0
  41. package/dist/agi/feature.d.ts +9 -0
  42. package/dist/agi/feature.d.ts.map +1 -0
  43. package/dist/agi/features/assistant.d.ts +509 -0
  44. package/dist/agi/features/assistant.d.ts.map +1 -0
  45. package/dist/agi/features/assistants-manager.d.ts +236 -0
  46. package/dist/agi/features/assistants-manager.d.ts.map +1 -0
  47. package/dist/agi/features/autonomous-assistant.d.ts +281 -0
  48. package/dist/agi/features/autonomous-assistant.d.ts.map +1 -0
  49. package/dist/agi/features/browser-use.d.ts +479 -0
  50. package/dist/agi/features/browser-use.d.ts.map +1 -0
  51. package/dist/agi/features/claude-code.d.ts +824 -0
  52. package/dist/agi/features/claude-code.d.ts.map +1 -0
  53. package/dist/agi/features/conversation-history.d.ts +245 -0
  54. package/dist/agi/features/conversation-history.d.ts.map +1 -0
  55. package/dist/agi/features/conversation.d.ts +464 -0
  56. package/dist/agi/features/conversation.d.ts.map +1 -0
  57. package/dist/agi/features/docs-reader.d.ts +72 -0
  58. package/dist/agi/features/docs-reader.d.ts.map +1 -0
  59. package/dist/agi/features/file-tools.d.ts +110 -0
  60. package/dist/agi/features/file-tools.d.ts.map +1 -0
  61. package/dist/agi/features/luca-coder.d.ts +323 -0
  62. package/dist/agi/features/luca-coder.d.ts.map +1 -0
  63. package/dist/agi/features/openai-codex.d.ts +381 -0
  64. package/dist/agi/features/openai-codex.d.ts.map +1 -0
  65. package/dist/agi/features/openapi.d.ts +200 -0
  66. package/dist/agi/features/openapi.d.ts.map +1 -0
  67. package/dist/agi/features/skills-library.d.ts +167 -0
  68. package/dist/agi/features/skills-library.d.ts.map +1 -0
  69. package/dist/agi/index.d.ts +5 -0
  70. package/dist/agi/index.d.ts.map +1 -0
  71. package/dist/agi/lib/interceptor-chain.d.ts +44 -0
  72. package/dist/agi/lib/interceptor-chain.d.ts.map +1 -0
  73. package/dist/agi/lib/token-counter.d.ts +13 -0
  74. package/dist/agi/lib/token-counter.d.ts.map +1 -0
  75. package/dist/bootstrap/generated.d.ts +5 -0
  76. package/dist/bootstrap/generated.d.ts.map +1 -0
  77. package/dist/browser.d.ts +12 -0
  78. package/dist/browser.d.ts.map +1 -0
  79. package/dist/bus.d.ts +29 -0
  80. package/dist/bus.d.ts.map +1 -0
  81. package/dist/cli/build-info.d.ts +4 -0
  82. package/dist/cli/build-info.d.ts.map +1 -0
  83. package/dist/cli/cli.d.ts +3 -12
  84. package/dist/cli/cli.d.ts.map +1 -0
  85. package/dist/client.d.ts +60 -0
  86. package/dist/client.d.ts.map +1 -0
  87. package/dist/clients/civitai/index.d.ts +472 -0
  88. package/dist/clients/civitai/index.d.ts.map +1 -0
  89. package/dist/clients/client-template.d.ts +30 -0
  90. package/dist/clients/client-template.d.ts.map +1 -0
  91. package/dist/clients/comfyui/index.d.ts +281 -0
  92. package/dist/clients/comfyui/index.d.ts.map +1 -0
  93. package/dist/clients/elevenlabs/index.d.ts +197 -0
  94. package/dist/clients/elevenlabs/index.d.ts.map +1 -0
  95. package/dist/clients/graph.d.ts +64 -0
  96. package/dist/clients/graph.d.ts.map +1 -0
  97. package/dist/clients/openai/index.d.ts +247 -0
  98. package/dist/clients/openai/index.d.ts.map +1 -0
  99. package/dist/clients/rest.d.ts +92 -0
  100. package/dist/clients/rest.d.ts.map +1 -0
  101. package/dist/clients/supabase/index.d.ts +176 -0
  102. package/dist/clients/supabase/index.d.ts.map +1 -0
  103. package/dist/clients/websocket.d.ts +127 -0
  104. package/dist/clients/websocket.d.ts.map +1 -0
  105. package/dist/command.d.ts +163 -0
  106. package/dist/command.d.ts.map +1 -0
  107. package/dist/commands/bootstrap.d.ts +20 -0
  108. package/dist/commands/bootstrap.d.ts.map +1 -0
  109. package/dist/commands/chat.d.ts +37 -0
  110. package/dist/commands/chat.d.ts.map +1 -0
  111. package/dist/commands/code.d.ts +28 -0
  112. package/dist/commands/code.d.ts.map +1 -0
  113. package/dist/commands/console.d.ts +22 -0
  114. package/dist/commands/console.d.ts.map +1 -0
  115. package/dist/commands/describe.d.ts +50 -0
  116. package/dist/commands/describe.d.ts.map +1 -0
  117. package/dist/commands/eval.d.ts +23 -0
  118. package/dist/commands/eval.d.ts.map +1 -0
  119. package/dist/commands/help.d.ts +25 -0
  120. package/dist/commands/help.d.ts.map +1 -0
  121. package/dist/commands/index.d.ts +18 -0
  122. package/dist/commands/index.d.ts.map +1 -0
  123. package/dist/commands/introspect.d.ts +24 -0
  124. package/dist/commands/introspect.d.ts.map +1 -0
  125. package/dist/commands/mcp.d.ts +35 -0
  126. package/dist/commands/mcp.d.ts.map +1 -0
  127. package/dist/commands/prompt.d.ts +38 -0
  128. package/dist/commands/prompt.d.ts.map +1 -0
  129. package/dist/commands/run.d.ts +24 -0
  130. package/dist/commands/run.d.ts.map +1 -0
  131. package/dist/commands/sandbox-mcp.d.ts +34 -0
  132. package/dist/commands/sandbox-mcp.d.ts.map +1 -0
  133. package/dist/commands/save-api-docs.d.ts +21 -0
  134. package/dist/commands/save-api-docs.d.ts.map +1 -0
  135. package/dist/commands/scaffold.d.ts +24 -0
  136. package/dist/commands/scaffold.d.ts.map +1 -0
  137. package/dist/commands/select.d.ts +22 -0
  138. package/dist/commands/select.d.ts.map +1 -0
  139. package/dist/commands/serve.d.ts +29 -0
  140. package/dist/commands/serve.d.ts.map +1 -0
  141. package/dist/container-describer.d.ts +144 -0
  142. package/dist/container-describer.d.ts.map +1 -0
  143. package/dist/container.d.ts +451 -0
  144. package/dist/container.d.ts.map +1 -0
  145. package/dist/endpoint.d.ts +113 -0
  146. package/dist/endpoint.d.ts.map +1 -0
  147. package/dist/feature.d.ts +47 -0
  148. package/dist/feature.d.ts.map +1 -0
  149. package/dist/graft.d.ts +29 -0
  150. package/dist/graft.d.ts.map +1 -0
  151. package/dist/hash-object.d.ts +8 -0
  152. package/dist/hash-object.d.ts.map +1 -0
  153. package/dist/helper.d.ts +209 -0
  154. package/dist/helper.d.ts.map +1 -0
  155. package/dist/introspection/generated.node.d.ts +44623 -0
  156. package/dist/introspection/generated.node.d.ts.map +1 -0
  157. package/dist/introspection/generated.web.d.ts +1412 -0
  158. package/dist/introspection/generated.web.d.ts.map +1 -0
  159. package/dist/introspection/index.d.ts +156 -0
  160. package/dist/introspection/index.d.ts.map +1 -0
  161. package/dist/introspection/scan.d.ts +147 -0
  162. package/dist/introspection/scan.d.ts.map +1 -0
  163. package/dist/node/container.d.ts +256 -0
  164. package/dist/node/container.d.ts.map +1 -0
  165. package/dist/node/feature.d.ts +9 -0
  166. package/dist/node/feature.d.ts.map +1 -0
  167. package/dist/node/features/container-link.d.ts +213 -0
  168. package/dist/node/features/container-link.d.ts.map +1 -0
  169. package/dist/node/features/content-db.d.ts +354 -0
  170. package/dist/node/features/content-db.d.ts.map +1 -0
  171. package/dist/node/features/disk-cache.d.ts +236 -0
  172. package/dist/node/features/disk-cache.d.ts.map +1 -0
  173. package/dist/node/features/dns.d.ts +511 -0
  174. package/dist/node/features/dns.d.ts.map +1 -0
  175. package/dist/node/features/docker.d.ts +485 -0
  176. package/dist/node/features/docker.d.ts.map +1 -0
  177. package/dist/node/features/downloader.d.ts +73 -0
  178. package/dist/node/features/downloader.d.ts.map +1 -0
  179. package/dist/node/features/figlet-fonts.d.ts +4 -0
  180. package/dist/node/features/figlet-fonts.d.ts.map +1 -0
  181. package/dist/node/features/file-manager.d.ts +177 -0
  182. package/dist/node/features/file-manager.d.ts.map +1 -0
  183. package/dist/node/features/fs.d.ts +635 -0
  184. package/dist/node/features/fs.d.ts.map +1 -0
  185. package/dist/node/features/git.d.ts +329 -0
  186. package/dist/node/features/git.d.ts.map +1 -0
  187. package/dist/node/features/google-auth.d.ts +200 -0
  188. package/dist/node/features/google-auth.d.ts.map +1 -0
  189. package/dist/node/features/google-calendar.d.ts +194 -0
  190. package/dist/node/features/google-calendar.d.ts.map +1 -0
  191. package/dist/node/features/google-docs.d.ts +138 -0
  192. package/dist/node/features/google-docs.d.ts.map +1 -0
  193. package/dist/node/features/google-drive.d.ts +202 -0
  194. package/dist/node/features/google-drive.d.ts.map +1 -0
  195. package/dist/node/features/google-mail.d.ts +221 -0
  196. package/dist/node/features/google-mail.d.ts.map +1 -0
  197. package/dist/node/features/google-sheets.d.ts +157 -0
  198. package/dist/node/features/google-sheets.d.ts.map +1 -0
  199. package/dist/node/features/grep.d.ts +207 -0
  200. package/dist/node/features/grep.d.ts.map +1 -0
  201. package/dist/node/features/helpers.d.ts +236 -0
  202. package/dist/node/features/helpers.d.ts.map +1 -0
  203. package/dist/node/features/ink.d.ts +332 -0
  204. package/dist/node/features/ink.d.ts.map +1 -0
  205. package/dist/node/features/ipc-socket.d.ts +298 -0
  206. package/dist/node/features/ipc-socket.d.ts.map +1 -0
  207. package/dist/node/features/json-tree.d.ts +140 -0
  208. package/dist/node/features/json-tree.d.ts.map +1 -0
  209. package/dist/node/features/networking.d.ts +373 -0
  210. package/dist/node/features/networking.d.ts.map +1 -0
  211. package/dist/node/features/nlp.d.ts +125 -0
  212. package/dist/node/features/nlp.d.ts.map +1 -0
  213. package/dist/node/features/opener.d.ts +93 -0
  214. package/dist/node/features/opener.d.ts.map +1 -0
  215. package/dist/node/features/os.d.ts +168 -0
  216. package/dist/node/features/os.d.ts.map +1 -0
  217. package/dist/node/features/package-finder.d.ts +419 -0
  218. package/dist/node/features/package-finder.d.ts.map +1 -0
  219. package/dist/node/features/postgres.d.ts +173 -0
  220. package/dist/node/features/postgres.d.ts.map +1 -0
  221. package/dist/node/features/proc.d.ts +285 -0
  222. package/dist/node/features/proc.d.ts.map +1 -0
  223. package/dist/node/features/process-manager.d.ts +427 -0
  224. package/dist/node/features/process-manager.d.ts.map +1 -0
  225. package/dist/node/features/python.d.ts +477 -0
  226. package/dist/node/features/python.d.ts.map +1 -0
  227. package/dist/node/features/redis.d.ts +247 -0
  228. package/dist/node/features/redis.d.ts.map +1 -0
  229. package/dist/node/features/repl.d.ts +84 -0
  230. package/dist/node/features/repl.d.ts.map +1 -0
  231. package/dist/node/features/runpod.d.ts +527 -0
  232. package/dist/node/features/runpod.d.ts.map +1 -0
  233. package/dist/node/features/secure-shell.d.ts +145 -0
  234. package/dist/node/features/secure-shell.d.ts.map +1 -0
  235. package/dist/node/features/semantic-search.d.ts +207 -0
  236. package/dist/node/features/semantic-search.d.ts.map +1 -0
  237. package/dist/node/features/sqlite.d.ts +180 -0
  238. package/dist/node/features/sqlite.d.ts.map +1 -0
  239. package/dist/node/features/telegram.d.ts +173 -0
  240. package/dist/node/features/telegram.d.ts.map +1 -0
  241. package/dist/node/features/transpiler.d.ts +51 -0
  242. package/dist/node/features/transpiler.d.ts.map +1 -0
  243. package/dist/node/features/tts.d.ts +108 -0
  244. package/dist/node/features/tts.d.ts.map +1 -0
  245. package/dist/node/features/ui.d.ts +562 -0
  246. package/dist/node/features/ui.d.ts.map +1 -0
  247. package/dist/node/features/vault.d.ts +90 -0
  248. package/dist/node/features/vault.d.ts.map +1 -0
  249. package/dist/node/features/vm.d.ts +285 -0
  250. package/dist/node/features/vm.d.ts.map +1 -0
  251. package/dist/node/features/yaml-tree.d.ts +118 -0
  252. package/dist/node/features/yaml-tree.d.ts.map +1 -0
  253. package/dist/node/features/yaml.d.ts +127 -0
  254. package/dist/node/features/yaml.d.ts.map +1 -0
  255. package/dist/node.d.ts +67 -0
  256. package/dist/node.d.ts.map +1 -0
  257. package/dist/python/generated.d.ts +2 -0
  258. package/dist/python/generated.d.ts.map +1 -0
  259. package/dist/react/index.d.ts +36 -0
  260. package/dist/react/index.d.ts.map +1 -0
  261. package/dist/registry.d.ts +97 -0
  262. package/dist/registry.d.ts.map +1 -0
  263. package/dist/scaffolds/generated.d.ts +13 -0
  264. package/dist/scaffolds/generated.d.ts.map +1 -0
  265. package/dist/scaffolds/template.d.ts +11 -0
  266. package/dist/scaffolds/template.d.ts.map +1 -0
  267. package/dist/schemas/base.d.ts +254 -0
  268. package/dist/schemas/base.d.ts.map +1 -0
  269. package/dist/selector.d.ts +130 -0
  270. package/dist/selector.d.ts.map +1 -0
  271. package/dist/server.d.ts +89 -0
  272. package/dist/server.d.ts.map +1 -0
  273. package/dist/servers/express.d.ts +104 -0
  274. package/dist/servers/express.d.ts.map +1 -0
  275. package/dist/servers/mcp.d.ts +201 -0
  276. package/dist/servers/mcp.d.ts.map +1 -0
  277. package/dist/servers/socket.d.ts +121 -0
  278. package/dist/servers/socket.d.ts.map +1 -0
  279. package/dist/state.d.ts +24 -0
  280. package/dist/state.d.ts.map +1 -0
  281. package/dist/web/clients/socket.d.ts +37 -0
  282. package/dist/web/clients/socket.d.ts.map +1 -0
  283. package/dist/web/container.d.ts +55 -0
  284. package/dist/web/container.d.ts.map +1 -0
  285. package/dist/web/extension.d.ts +4 -0
  286. package/dist/web/extension.d.ts.map +1 -0
  287. package/dist/web/feature.d.ts +8 -0
  288. package/dist/web/feature.d.ts.map +1 -0
  289. package/dist/web/features/asset-loader.d.ts +35 -0
  290. package/dist/web/features/asset-loader.d.ts.map +1 -0
  291. package/dist/web/features/container-link.d.ts +167 -0
  292. package/dist/web/features/container-link.d.ts.map +1 -0
  293. package/dist/web/features/esbuild.d.ts +51 -0
  294. package/dist/web/features/esbuild.d.ts.map +1 -0
  295. package/dist/web/features/helpers.d.ts +140 -0
  296. package/dist/web/features/helpers.d.ts.map +1 -0
  297. package/dist/web/features/network.d.ts +69 -0
  298. package/dist/web/features/network.d.ts.map +1 -0
  299. package/dist/web/features/speech.d.ts +71 -0
  300. package/dist/web/features/speech.d.ts.map +1 -0
  301. package/dist/web/features/vault.d.ts +62 -0
  302. package/dist/web/features/vault.d.ts.map +1 -0
  303. package/dist/web/features/vm.d.ts +48 -0
  304. package/dist/web/features/vm.d.ts.map +1 -0
  305. package/dist/web/features/voice-recognition.d.ts +96 -0
  306. package/dist/web/features/voice-recognition.d.ts.map +1 -0
  307. package/dist/web/shims/isomorphic-vm.d.ts +22 -0
  308. package/dist/web/shims/isomorphic-vm.d.ts.map +1 -0
  309. package/index.html +1457 -0
  310. package/index.ts +1 -0
  311. package/install.sh +84 -0
  312. package/luca.cli.ts +16 -0
  313. package/luca.console.ts +9 -0
  314. package/main.py +6 -0
  315. package/package.json +219 -58
  316. package/public/index.html +1457 -0
  317. package/public/slides-ai-native.html +902 -0
  318. package/public/slides-intro.html +974 -0
  319. package/pyproject.toml +7 -0
  320. package/scripts/build-web.ts +28 -0
  321. package/scripts/examples/ask-luca-expert.ts +42 -0
  322. package/scripts/examples/assistant-questions.ts +12 -0
  323. package/scripts/examples/excalidraw-expert.ts +75 -0
  324. package/scripts/examples/expert-chat.ts +0 -0
  325. package/scripts/examples/file-manager.ts +14 -0
  326. package/scripts/examples/ideas.ts +12 -0
  327. package/scripts/examples/interactive-chat.ts +20 -0
  328. package/scripts/examples/openai-tool-calls.ts +113 -0
  329. package/scripts/examples/opening-a-web-browser.ts +5 -0
  330. package/scripts/examples/telegram-bot.ts +79 -0
  331. package/scripts/examples/using-assistant-with-mcp.ts +555 -0
  332. package/scripts/examples/using-claude-code.ts +10 -0
  333. package/scripts/examples/using-contentdb.ts +35 -0
  334. package/scripts/examples/using-conversations.ts +35 -0
  335. package/scripts/examples/using-disk-cache.ts +10 -0
  336. package/scripts/examples/using-docker-shell.ts +75 -0
  337. package/scripts/examples/using-elevenlabs.ts +25 -0
  338. package/scripts/examples/using-google-calendar.ts +57 -0
  339. package/scripts/examples/using-google-docs.ts +74 -0
  340. package/scripts/examples/using-google-drive.ts +74 -0
  341. package/scripts/examples/using-google-sheets.ts +89 -0
  342. package/scripts/examples/using-nlp.ts +55 -0
  343. package/scripts/examples/using-ollama.ts +11 -0
  344. package/scripts/examples/using-postgres.ts +55 -0
  345. package/scripts/examples/using-runpod.ts +32 -0
  346. package/scripts/examples/using-tts.ts +40 -0
  347. package/scripts/scaffold.ts +391 -0
  348. package/scripts/scratch.ts +15 -0
  349. package/scripts/stamp-build.sh +12 -0
  350. package/scripts/test-assistant-hooks.ts +13 -0
  351. package/scripts/test-docs-reader.ts +10 -0
  352. package/scripts/test-linux-binary.sh +80 -0
  353. package/scripts/update-introspection-data.ts +58 -0
  354. package/src/agi/README.md +14 -0
  355. package/src/agi/container.server.ts +156 -0
  356. package/src/agi/feature.ts +13 -0
  357. package/src/agi/features/agent-memory.ts +694 -0
  358. package/src/agi/features/assistant.ts +1653 -0
  359. package/src/agi/features/assistants-manager.ts +534 -0
  360. package/src/agi/features/autonomous-assistant.ts +431 -0
  361. package/src/agi/features/browser-use.ts +672 -0
  362. package/src/agi/features/claude-code.ts +1584 -0
  363. package/src/agi/features/coding-tools.ts +175 -0
  364. package/src/agi/features/conversation-history.ts +672 -0
  365. package/src/agi/features/conversation.ts +1494 -0
  366. package/src/agi/features/docs-reader.ts +167 -0
  367. package/src/agi/features/file-tools.ts +340 -0
  368. package/src/agi/features/luca-coder.ts +641 -0
  369. package/src/agi/features/mcp-bridge.ts +532 -0
  370. package/src/agi/features/openai-codex.ts +651 -0
  371. package/src/agi/features/openapi.ts +445 -0
  372. package/src/agi/features/skills-library.ts +557 -0
  373. package/src/agi/index.ts +6 -0
  374. package/src/agi/lib/interceptor-chain.ts +89 -0
  375. package/src/agi/lib/token-counter.ts +202 -0
  376. package/src/bootstrap/generated.ts +9791 -0
  377. package/src/browser.ts +25 -0
  378. package/src/bus.ts +122 -0
  379. package/src/cli/build-info.ts +4 -0
  380. package/src/cli/cli.ts +355 -0
  381. package/src/client.ts +170 -0
  382. package/src/clients/civitai/index.ts +537 -0
  383. package/src/clients/client-template.ts +41 -0
  384. package/src/clients/comfyui/index.ts +604 -0
  385. package/src/clients/elevenlabs/index.ts +317 -0
  386. package/src/clients/graph.ts +87 -0
  387. package/src/clients/openai/index.ts +456 -0
  388. package/src/clients/rest.ts +207 -0
  389. package/src/clients/supabase/index.ts +357 -0
  390. package/src/clients/voicebox/index.ts +300 -0
  391. package/src/clients/websocket.ts +251 -0
  392. package/src/command.ts +506 -0
  393. package/src/commands/bootstrap.ts +244 -0
  394. package/src/commands/chat.ts +309 -0
  395. package/src/commands/code.ts +371 -0
  396. package/src/commands/console.ts +189 -0
  397. package/src/commands/describe.ts +243 -0
  398. package/src/commands/eval.ts +67 -0
  399. package/src/commands/help.ts +240 -0
  400. package/src/commands/index.ts +19 -0
  401. package/src/commands/introspect.ts +218 -0
  402. package/src/commands/mcp.ts +64 -0
  403. package/src/commands/prompt.ts +1014 -0
  404. package/src/commands/run.ts +278 -0
  405. package/src/commands/sandbox-mcp.ts +343 -0
  406. package/src/commands/save-api-docs.ts +51 -0
  407. package/src/commands/scaffold.ts +225 -0
  408. package/src/commands/select.ts +99 -0
  409. package/src/commands/serve.ts +208 -0
  410. package/src/container-describer.ts +1091 -0
  411. package/src/container.ts +1199 -0
  412. package/src/endpoint.ts +365 -0
  413. package/src/entity.ts +173 -0
  414. package/src/feature.ts +118 -0
  415. package/src/graft.ts +181 -0
  416. package/src/hash-object.ts +97 -0
  417. package/src/helper.ts +849 -0
  418. package/src/introspection/generated.agi.ts +41200 -0
  419. package/src/introspection/generated.node.ts +28773 -0
  420. package/src/introspection/generated.web.ts +2272 -0
  421. package/src/introspection/index.ts +296 -0
  422. package/src/introspection/scan.ts +1136 -0
  423. package/src/node/container.ts +409 -0
  424. package/src/node/feature.ts +13 -0
  425. package/src/node/features/container-link.ts +559 -0
  426. package/src/node/features/content-db.ts +849 -0
  427. package/src/node/features/disk-cache.ts +388 -0
  428. package/src/node/features/display-result.ts +57 -0
  429. package/src/node/features/dns.ts +669 -0
  430. package/src/node/features/docker.ts +921 -0
  431. package/src/node/features/downloader.ts +79 -0
  432. package/src/node/features/figlet-fonts.ts +600 -0
  433. package/src/node/features/file-manager.ts +535 -0
  434. package/src/node/features/fs.ts +1050 -0
  435. package/src/node/features/git.ts +592 -0
  436. package/src/node/features/google-auth.ts +504 -0
  437. package/src/node/features/google-calendar.ts +306 -0
  438. package/src/node/features/google-docs.ts +412 -0
  439. package/src/node/features/google-drive.ts +346 -0
  440. package/src/node/features/google-mail.ts +540 -0
  441. package/src/node/features/google-sheets.ts +286 -0
  442. package/src/node/features/grep.ts +427 -0
  443. package/src/node/features/helpers.ts +762 -0
  444. package/src/node/features/ink.ts +490 -0
  445. package/src/node/features/ipc-socket.ts +649 -0
  446. package/src/node/features/json-tree.ts +170 -0
  447. package/src/node/features/networking.ts +961 -0
  448. package/src/node/features/nlp.ts +212 -0
  449. package/src/node/features/opener.ts +180 -0
  450. package/src/node/features/os.ts +403 -0
  451. package/src/node/features/package-finder.ts +540 -0
  452. package/src/node/features/postgres.ts +289 -0
  453. package/src/node/features/proc.ts +503 -0
  454. package/src/node/features/process-manager.ts +844 -0
  455. package/src/node/features/python.ts +912 -0
  456. package/src/node/features/redis.ts +446 -0
  457. package/src/node/features/repl.ts +212 -0
  458. package/src/node/features/runpod.ts +811 -0
  459. package/src/node/features/secure-shell.ts +261 -0
  460. package/src/node/features/semantic-search.ts +935 -0
  461. package/src/node/features/sqlite.ts +289 -0
  462. package/src/node/features/telegram.ts +343 -0
  463. package/src/node/features/transpiler.ts +160 -0
  464. package/src/node/features/tts.ts +185 -0
  465. package/src/node/features/ui.ts +791 -0
  466. package/src/node/features/vault.ts +153 -0
  467. package/src/node/features/vm.ts +462 -0
  468. package/src/node/features/yaml-tree.ts +148 -0
  469. package/src/node/features/yaml.ts +133 -0
  470. package/src/node.ts +76 -0
  471. package/src/python/bridge.py +220 -0
  472. package/src/python/generated.ts +226 -0
  473. package/src/react/index.ts +175 -0
  474. package/src/registry.ts +210 -0
  475. package/src/scaffolds/generated.ts +1814 -0
  476. package/src/scaffolds/template.ts +46 -0
  477. package/src/schemas/base.ts +296 -0
  478. package/src/selector.ts +352 -0
  479. package/src/server.ts +229 -0
  480. package/src/servers/express.ts +283 -0
  481. package/src/servers/mcp.ts +802 -0
  482. package/src/servers/socket.ts +258 -0
  483. package/src/state.ts +101 -0
  484. package/src/web/clients/socket.ts +99 -0
  485. package/src/web/container.ts +75 -0
  486. package/src/web/extension.ts +30 -0
  487. package/src/web/feature.ts +12 -0
  488. package/src/web/features/asset-loader.ts +72 -0
  489. package/src/web/features/container-link.ts +382 -0
  490. package/src/web/features/esbuild.ts +93 -0
  491. package/src/web/features/helpers.ts +291 -0
  492. package/src/web/features/network.ts +85 -0
  493. package/src/web/features/speech.ts +104 -0
  494. package/src/web/features/vault.ts +207 -0
  495. package/src/web/features/vm.ts +85 -0
  496. package/src/web/features/voice-recognition.ts +161 -0
  497. package/src/web/shims/isomorphic-vm.ts +149 -0
  498. package/tsconfig.build.json +12 -0
  499. package/tsconfig.json +58 -0
  500. package/uv.lock +8 -0
  501. package/LICENSE +0 -21
  502. package/dist/cli/cli.js +0 -48
  503. package/dist/cli/common.d.ts +0 -2
  504. package/dist/cli/common.js +0 -6
  505. package/dist/cli/index.d.ts +0 -2
  506. package/dist/cli/index.js +0 -5
  507. package/dist/cli/run.d.ts +0 -1
  508. package/dist/cli/run.js +0 -38
  509. package/dist/core/index.d.ts +0 -4
  510. package/dist/core/index.js +0 -32
  511. package/dist/core/read.d.ts +0 -2
  512. package/dist/core/read.js +0 -29
  513. package/dist/core/request.d.ts +0 -1
  514. package/dist/core/request.js +0 -2
  515. package/dist/core/write.d.ts +0 -2
  516. package/dist/core/write.js +0 -21
  517. package/dist/index.d.ts +0 -1
  518. package/dist/index.js +0 -5
  519. package/dist/utils/common.d.ts +0 -9
  520. package/dist/utils/common.js +0 -57
  521. package/dist/utils/consts.d.ts +0 -3
  522. package/dist/utils/consts.js +0 -11
  523. package/dist/utils/dict.d.ts +0 -1
  524. package/dist/utils/dict.js +0 -7
  525. package/dist/utils/index.d.ts +0 -5
  526. package/dist/utils/index.js +0 -21
  527. package/dist/utils/log.d.ts +0 -1
  528. package/dist/utils/log.js +0 -5
  529. package/dist/utils/types.d.ts +0 -1
  530. package/dist/utils/types.js +0 -2
  531. package/dist/utils/utils.test.d.ts +0 -1
  532. package/dist/utils/utils.test.js +0 -7
@@ -0,0 +1,85 @@
1
+ // @ts-nocheck
2
+ //
3
+ import { z } from 'zod'
4
+ import { FeatureStateSchema, FeatureOptionsSchema } from '../../schemas/base.js'
5
+ import vm from '../shims/isomorphic-vm'
6
+ import { Feature } from "../feature.js";
7
+
8
+ export const VMStateSchema = FeatureStateSchema.extend({})
9
+
10
+ export const VMOptionsSchema = FeatureOptionsSchema.extend({
11
+ context: z.any().describe('VM context object').optional(),
12
+ })
13
+
14
+ export type VMState = z.infer<typeof VMStateSchema>
15
+ export type VMOptions = z.infer<typeof VMOptionsSchema>
16
+
17
+ /**
18
+ * Sandboxed JavaScript execution environment for the browser.
19
+ *
20
+ * Automatically injects the container's context object into the global scope,
21
+ * so evaluated code can use anything provided by the container. Useful for
22
+ * live code playgrounds, plugin systems, and dynamic script evaluation.
23
+ *
24
+ * @extends Feature
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const vm = container.feature('vm')
29
+ * const result = vm.run('1 + 2 + 3') // 6
30
+ * const greeting = vm.run('container.uuid') // accesses container globals
31
+ * ```
32
+ */
33
+ export class VM<
34
+ T extends VMState = VMState,
35
+ K extends VMOptions = VMOptions
36
+ > extends Feature<T, K> {
37
+
38
+ static override stateSchema = VMStateSchema
39
+ static override optionsSchema = VMOptionsSchema
40
+ static override shortcut = "features.vm" as const
41
+
42
+ static { Feature.register(this, 'vm') }
43
+
44
+ createScript(code: string) {
45
+ return new vm.Script(code)
46
+ }
47
+
48
+ createContext(ctx: any = {}) {
49
+ return vm.createContext({
50
+ ...this.container.context,
51
+ ...ctx
52
+ })
53
+ }
54
+
55
+ async run(code: string, ctx: any = {}, options : any = {}) {
56
+ let script = this.createScript(code)
57
+
58
+ if (options.transform) {
59
+ const esbuild = this.container.feature('esbuild')
60
+ await esbuild.start()
61
+ const result = await esbuild.compile(code, options.transform)
62
+ script = this.createScript(result.code)
63
+ }
64
+
65
+ const context = this.createContext(ctx)
66
+
67
+ try {
68
+ const result = script.runInContext({
69
+ ...context,
70
+ ...(options.exports && { exports: options.exports })
71
+ })
72
+
73
+ if (options.exports) {
74
+ return { result, exports: options.exports, context }
75
+ }
76
+
77
+ return result
78
+ } catch(error) {
79
+ console.error(`Error running code`, error)
80
+ return error
81
+ }
82
+ }
83
+ }
84
+
85
+ export default VM;
@@ -0,0 +1,161 @@
1
+ import { z } from 'zod'
2
+ import { FeatureStateSchema, FeatureOptionsSchema, FeatureEventsSchema } from '../../schemas/base.js'
3
+ import { Feature } from "../../feature.js";
4
+ import { type ContainerContext } from '../container.js'
5
+
6
+ export const VoiceRecognitionOptionsSchema = FeatureOptionsSchema.extend({
7
+ language: z.string().optional().describe('BCP 47 language code for recognition (e.g. en-US)'),
8
+ continuous: z.boolean().optional().describe('Whether to continuously listen for speech'),
9
+ autoListen: z.boolean().optional().describe('Whether to automatically start listening on creation'),
10
+ })
11
+
12
+ export const VoiceRecognitionStateSchema = FeatureStateSchema.extend({
13
+ listening: z.boolean().describe('Whether the recognizer is currently listening'),
14
+ transcript: z.string().describe('Accumulated final transcript text'),
15
+ })
16
+
17
+ export type VoiceRecognitionOptions = z.infer<typeof VoiceRecognitionOptionsSchema>
18
+ export type VoiceRecognitionState = z.infer<typeof VoiceRecognitionStateSchema>
19
+
20
+ export const VoiceRecognitionEventsSchema = FeatureEventsSchema.extend({
21
+ result: z.tuple([
22
+ z.object({
23
+ finalTranscript: z.string().describe('Accumulated final transcript text'),
24
+ interimTranscript: z.string().describe('Current interim transcript text'),
25
+ }).describe('Recognition result payload'),
26
+ ]).describe('Fires when speech recognition produces a result'),
27
+ error: z.tuple([z.string().describe('Error message from the recognizer')]).describe('Fires when speech recognition encounters an error'),
28
+ end: z.tuple([]).describe('Fires when speech recognition ends'),
29
+ start: z.tuple([]).describe('Fires when speech recognition starts listening'),
30
+ stop: z.tuple([]).describe('Fires when speech recognition is manually stopped'),
31
+ abort: z.tuple([]).describe('Fires when speech recognition is aborted'),
32
+ }).describe('VoiceRecognition events')
33
+
34
+ /**
35
+ * Speech-to-text recognition using the Web Speech API (SpeechRecognition).
36
+ *
37
+ * Wraps the browser's built-in speech recognition, supporting continuous
38
+ * listening, interim results, and language selection. Recognized text is
39
+ * accumulated in state and emitted as events for real-time transcription UIs.
40
+ *
41
+ * @extends Feature
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const voice = container.feature('voice', { continuous: true, autoListen: true })
46
+ *
47
+ * voice.on('transcript', ({ text }) => {
48
+ * console.log('Heard:', text)
49
+ * })
50
+ *
51
+ * // Or start manually
52
+ * voice.start()
53
+ * ```
54
+ */
55
+ export class VoiceRecognition<T extends VoiceRecognitionState = VoiceRecognitionState, K extends VoiceRecognitionOptions = VoiceRecognitionOptions> extends Feature<T, K> {
56
+ // @ts-ignore-next-line
57
+ private recognition: SpeechRecognition | null = null;
58
+
59
+ static override stateSchema = VoiceRecognitionStateSchema
60
+ static override optionsSchema = VoiceRecognitionOptionsSchema
61
+ static override eventsSchema = VoiceRecognitionEventsSchema
62
+ static override shortcut = "features.voice" as const
63
+
64
+ static { Feature.register(this as any, 'voice') }
65
+
66
+ constructor(options: K, context: ContainerContext) {
67
+ super(options, context);
68
+
69
+ this.state.set("listening", false);
70
+ this.state.set("transcript", "");
71
+
72
+ if (!('webkitSpeechRecognition' in window)) {
73
+ throw new Error('Voice recognition is not supported in this browser.');
74
+ }
75
+
76
+ // @ts-ignore-next-line
77
+ this.recognition = new webkitSpeechRecognition();
78
+ this.recognition.lang = this.options.language || "en-US";
79
+ this.recognition.continuous = this.options.continuous || false;
80
+ this.recognition.interimResults = true;
81
+
82
+ this.recognition.onresult = (event: any) => {
83
+ let interimTranscript = "";
84
+ for (let i = event.resultIndex; i < event.results.length; i++) {
85
+ const transcript = event.results[i][0].transcript;
86
+ if (event.results[i].isFinal) {
87
+ this.state.set("transcript", this.state.get("transcript") + transcript);
88
+ } else {
89
+ interimTranscript += transcript;
90
+ }
91
+ }
92
+ this.emit("result", {
93
+ finalTranscript: this.state.get("transcript"),
94
+ interimTranscript
95
+ });
96
+ };
97
+
98
+ this.recognition.onerror = (event: any) => {
99
+ this.emit("error", event.error);
100
+ };
101
+
102
+ this.recognition.onend = () => {
103
+ this.state.set("listening", false);
104
+ this.emit("end");
105
+ };
106
+
107
+ if (options?.autoListen) {
108
+ this.start()
109
+ }
110
+ }
111
+
112
+ /** Whether the speech recognizer is currently listening for audio input. */
113
+ get listening() {
114
+ return !!this.state.get("listening");
115
+ }
116
+
117
+ /** Returns the accumulated final transcript text from recognition results. */
118
+ get transcript() {
119
+ return this.state.get("transcript") || '';
120
+ }
121
+
122
+ async whenFinished() {
123
+ if(!this.listening) {
124
+ this.start()
125
+ }
126
+
127
+ return await this.waitFor("end").then(() => this.transcript)
128
+ }
129
+
130
+ start() {
131
+ this.state.set('transcript', '')
132
+
133
+ if (!this.listening && this.recognition) {
134
+ this.recognition.start();
135
+ this.state.set("listening", true);
136
+ this.emit("start");
137
+ }
138
+ }
139
+
140
+ stop() {
141
+ if (this.listening && this.recognition) {
142
+ this.recognition.stop();
143
+ this.state.set("listening", false);
144
+ this.emit("stop");
145
+ }
146
+ }
147
+
148
+ abort() {
149
+ if (this.listening && this.recognition) {
150
+ this.recognition.abort();
151
+ this.state.set("listening", false);
152
+ this.emit("abort");
153
+ }
154
+ }
155
+
156
+ clearTranscript() {
157
+ this.state.set("transcript", "");
158
+ }
159
+ }
160
+
161
+ export default VoiceRecognition;
@@ -0,0 +1,149 @@
1
+ const globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',
2
+ 'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',
3
+ 'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',
4
+ 'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',
5
+ 'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];
6
+
7
+ class Context {
8
+ [key: string]: any;
9
+ }
10
+
11
+ function createContext(context?: any): Context {
12
+ var copy = new Context();
13
+
14
+ if (typeof context === 'object') {
15
+ Object.keys(context).forEach(key => copy[key] = context[key]);
16
+ }
17
+
18
+ return copy;
19
+ };
20
+
21
+ function isContext(context: any): context is Context {
22
+ return context instanceof Context;
23
+ }
24
+
25
+ function runInContext(code: string, context: Context): any {
26
+ const iframe = document.createElement('iframe');
27
+
28
+ if (!iframe.style) {
29
+ (iframe as any).style = {};
30
+ }
31
+
32
+ iframe.style.display = 'none';
33
+
34
+ document.body.appendChild(iframe);
35
+
36
+ const iframeWindow: any = iframe.contentWindow;
37
+ let iframeEval = iframeWindow.eval;
38
+
39
+ if (!iframeEval && iframeWindow.execScript) {
40
+ iframeWindow.execScript.call(iframeWindow, 'null');
41
+ iframeEval = iframeWindow.eval;
42
+ }
43
+
44
+ Object.keys(context).forEach(key => {
45
+ iframeWindow[key] = context[key];
46
+ });
47
+
48
+ Object.keys(globals).forEach(key => {
49
+ if (context[key]) {
50
+ iframeWindow[key] = context[key];
51
+ }
52
+ });
53
+
54
+ const result = iframeEval.call(iframeWindow, code);
55
+
56
+ Object.keys(iframeWindow).forEach(key => {
57
+ if (key in context || Object.keys(iframeWindow).indexOf(key) === -1) {
58
+ context[key] = iframeWindow[key];
59
+ }
60
+ });
61
+
62
+ globals.forEach(key => {
63
+ if (!(key in context)) {
64
+ Object.defineProperty(context, key, {
65
+ writable: true,
66
+ enumerable: false,
67
+ configurable: true,
68
+ value: iframeWindow[key],
69
+ });
70
+ }
71
+ });
72
+
73
+ document.body.removeChild(iframe);
74
+
75
+ return result;
76
+ };
77
+
78
+ function runInDebugContext(code: string): any {
79
+ return runInNewContext(code);
80
+ };
81
+
82
+ function runInNewContext(code: string, context?: any): any {
83
+ const contextInstance = createContext(context);
84
+ const result = runInContext(code, contextInstance);
85
+
86
+ if (typeof context === 'object') {
87
+ Object.keys(contextInstance).forEach(key => {
88
+ context[key] = contextInstance[key];
89
+ });
90
+ }
91
+
92
+ return result;
93
+ };
94
+
95
+ function runInThisContext(code: string): any {
96
+ return (0, eval)(code);
97
+ };
98
+
99
+ class Script {
100
+ private code: string;
101
+ constructor(code: string) {
102
+ this.code = code;
103
+ }
104
+
105
+ runInContext(context: Context) {
106
+ return runInContext(this.code, context);
107
+ }
108
+
109
+ runInNewContext(context?: any) {
110
+ return runInNewContext(this.code, context);
111
+ }
112
+
113
+ runInThisContext() {
114
+ return runInThisContext(this.code);
115
+ }
116
+ }
117
+
118
+ export interface VMContext {
119
+ [name: string]: any;
120
+ }
121
+
122
+ export interface VMScript {
123
+ new (code: string) : VMScript;
124
+ runInContext(context: VMContext) : any;
125
+ runInNewContext(context?: any) : any;
126
+ runInThisContext() : any;
127
+ }
128
+
129
+ export interface VM {
130
+ Script: VMScript;
131
+ createContext(context?: any): VMContext;
132
+ isContext(context: any): context is VMContext;
133
+ runInContext(code: string, context: VMContext): any;
134
+ runInDebugContext(code: string): any;
135
+ runInNewContext(code: string, context?: any): any;
136
+ runInThisContext(code: string): any;
137
+ }
138
+
139
+ export const shim: VM = <any>{
140
+ Script,
141
+ createContext,
142
+ isContext,
143
+ runInContext,
144
+ runInDebugContext,
145
+ runInNewContext,
146
+ runInThisContext,
147
+ };
148
+
149
+ export default shim as VM
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "noEmit": false,
5
+ "emitDeclarationOnly": true,
6
+ "declaration": true,
7
+ "declarationMap": true,
8
+ "outDir": "./dist",
9
+ "rootDir": "./src"
10
+ },
11
+ "include": ["src/**/*.ts", "src/**/*.tsx"]
12
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "compilerOptions": {
3
+ // Environment setup & latest features
4
+ "lib": ["ESNext", "dom", "dom.iterable"],
5
+ "target": "ESNext",
6
+ "module": "Preserve",
7
+ "moduleDetection": "force",
8
+ "jsx": "react-jsx",
9
+ "allowJs": true,
10
+
11
+ // Bundler mode
12
+ "moduleResolution": "bundler",
13
+ "allowImportingTsExtensions": true,
14
+ "verbatimModuleSyntax": true,
15
+ "noEmit": true,
16
+
17
+ // Path mapping for absolute imports
18
+ "baseUrl": ".",
19
+ "paths": {
20
+ "@/experts/*": ["identities/*"],
21
+ "@/*": ["src/*"],
22
+ "@/web/*": ["src/web/*"],
23
+ "@/node/*": ["src/node/*"],
24
+ "luca": ["src/node.ts"],
25
+ "luca/node": ["src/node.ts"],
26
+ "luca/node/*": ["src/node/*"],
27
+ "luca/agi": ["src/agi/index.ts"],
28
+ "luca/agi/*": ["src/agi/*"],
29
+ "luca/web": ["src/browser.ts"],
30
+ "luca/web/*": ["src/web/*"],
31
+ "luca/schemas": ["src/schemas/base.ts"],
32
+ "luca/schemas/*": ["src/schemas/*"],
33
+ "luca/container": ["src/container.ts"],
34
+ "luca/client": ["src/client.ts"],
35
+ "luca/feature": ["src/feature.ts"]
36
+ },
37
+
38
+ // Best practices
39
+ "strict": true,
40
+ "skipLibCheck": true,
41
+ "noFallthroughCasesInSwitch": true,
42
+ "noUncheckedIndexedAccess": true,
43
+ "noImplicitOverride": true,
44
+
45
+ // Some stricter flags (disabled by default)
46
+ "noUnusedLocals": false,
47
+ "noUnusedParameters": false,
48
+ "noPropertyAccessFromIndexSignature": false
49
+ },
50
+ "include": ["*.ts", "src/**/*.ts", "src/**/*.tsx", "index.ts", "scripts/**/*.ts", "assistants/**/*.ts"],
51
+ "exclude": [
52
+ "playground/**",
53
+ "docs/**",
54
+ "output/**",
55
+ "dist/**",
56
+ "../contentbase/**"
57
+ ]
58
+ }
package/uv.lock ADDED
@@ -0,0 +1,8 @@
1
+ version = 1
2
+ revision = 1
3
+ requires-python = ">=3.11"
4
+
5
+ [[package]]
6
+ name = "luca2"
7
+ version = "0.1.0"
8
+ source = { virtual = "." }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2022 Emil Zaripov
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/dist/cli/cli.js DELETED
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.start = void 0;
16
- const yargs_1 = __importDefault(require("yargs"));
17
- const helpers_1 = require("yargs/helpers");
18
- const utils_1 = require("../utils");
19
- const common_1 = require("./common");
20
- const run_1 = require("./run");
21
- /**
22
- * @docs https://yargs.js.org/docs
23
- */
24
- const start = () => __awaiter(void 0, void 0, void 0, function* () {
25
- return (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
26
- .usage("Luca's manual")
27
- // run command
28
- .command({
29
- command: 'run',
30
- describe: 'Run mass requests (see examples)',
31
- handler: (args) => {
32
- const { dict, url } = args;
33
- (0, utils_1.showErrorIf)(!(0, utils_1.isString)(dict), '--dict is required', 'example: --dict=1_char');
34
- (0, utils_1.showErrorIf)(!(0, utils_1.isString)(url), `--url is required', 'example: ${(0, common_1.getUrlMaskExample)()}`);
35
- (0, run_1.run)(dict, url);
36
- },
37
- })
38
- .example(`luca run ${(0, common_1.getUrlMaskExample)()} --dict=1_char`, `for built-in dictionaries (${utils_1.DICT_NAMES.join('|')})`)
39
- .example(`luca run ${(0, common_1.getUrlMaskExample)()} --dict=./my-dict.txt`, 'for your txt dict path')
40
- .command({
41
- command: '*',
42
- handler: () => void yargs_1.default.showHelp(),
43
- })
44
- .demandCommand()
45
- .alias('h', 'help')
46
- .alias('v', 'version').argv;
47
- });
48
- exports.start = start;
@@ -1,2 +0,0 @@
1
- export declare const WORD_PATTERN = "{0}";
2
- export declare const getUrlMaskExample: (baseUrl?: string) => string;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUrlMaskExample = exports.WORD_PATTERN = void 0;
4
- exports.WORD_PATTERN = '{0}';
5
- const getUrlMaskExample = (baseUrl = 'https://github.com') => `--url='${baseUrl}/${exports.WORD_PATTERN}'`;
6
- exports.getUrlMaskExample = getUrlMaskExample;
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
package/dist/cli/index.js DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const cli_1 = require("./cli");
5
- (0, cli_1.start)();
package/dist/cli/run.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare const run: (dict: string, urlMask: string) => void;
package/dist/cli/run.js DELETED
@@ -1,38 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.run = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const path_1 = require("path");
9
- const core_1 = require("../core");
10
- const write_1 = require("../core/write");
11
- const utils_1 = require("../utils");
12
- const common_1 = require("./common");
13
- // [x] Github username
14
- // [x] Npm package
15
- // [ ] Telegram username/botname
16
- // [ ] Whois small size domains
17
- const formatUrl = (urlMask) => {
18
- if (!['http', 'https'].includes(urlMask)) {
19
- return `https://${urlMask}`;
20
- }
21
- return urlMask;
22
- };
23
- const getUrlByMask = (urlMask) => (word) => {
24
- const formatted = formatUrl(urlMask);
25
- if (formatted.includes(common_1.WORD_PATTERN)) {
26
- return formatted.replace(common_1.WORD_PATTERN, word);
27
- }
28
- return `${formatted}/${word}`;
29
- };
30
- const run = (dict, urlMask) => {
31
- const isBuiltInDict = utils_1.DICT_NAMES.includes(dict);
32
- const dictPath = isBuiltInDict ? (0, utils_1.getDict)(dict) : (0, path_1.resolve)(dict);
33
- (0, core_1.luca)(dictPath, getUrlByMask(urlMask)).subscribe({
34
- next: ({ res }) => (0, utils_1.log)(`${(0, utils_1.ifSuccessResponse)(res.status, chalk_1.default.green, chalk_1.default.red)} ${res.config.url}`)(),
35
- complete: (0, utils_1.log)(`\n${chalk_1.default.green('Luca finished')} ${(0, path_1.resolve)(write_1.LUCA_LOG_PATH)}`),
36
- });
37
- };
38
- exports.run = run;
@@ -1,4 +0,0 @@
1
- import { AxiosResponse } from 'axios';
2
- export declare const luca: (dict: string, getUrl: (word: string) => string) => import("rxjs").Observable<{
3
- res: AxiosResponse<any, any>;
4
- }>;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.luca = void 0;
16
- const axios_1 = __importDefault(require("axios"));
17
- const rxjs_1 = require("rxjs");
18
- const read_1 = require("./read");
19
- const write_1 = require("./write");
20
- const luca = (dict, getUrl) => (0, read_1.parse)(dict).pipe((0, rxjs_1.concatMap)((arr) => arr.map((item) => (0, rxjs_1.of)(getUrl(item)).pipe((0, rxjs_1.delay)(500), (0, rxjs_1.map)((url) => axios_1.default.get(url)), (0, rxjs_1.mergeMap)((res) => __awaiter(void 0, void 0, void 0, function* () {
21
- try {
22
- return yield res;
23
- }
24
- catch (error) {
25
- return error.response;
26
- }
27
- })), (0, rxjs_1.map)((res) => {
28
- return {
29
- res: res,
30
- };
31
- }), (0, rxjs_1.tap)(({ res }) => (0, write_1.writeLog)(res.config.url, res.status))))), (0, rxjs_1.concatAll)());
32
- exports.luca = luca;
@@ -1,2 +0,0 @@
1
- export declare const read: (filepath: string) => import("rxjs").Observable<Promise<string | null>>;
2
- export declare const parse: (filepath: string) => import("rxjs").Observable<string[]>;