luca 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/.github/workflows/release.yaml +1 -0
  2. package/CLAUDE.md +10 -2
  3. package/README.md +130 -112
  4. package/assistants/codingAssistant/CORE.md +6 -1
  5. package/assistants/codingAssistant/hooks.ts +1 -1
  6. package/assistants/inkbot/hooks.ts +1 -1
  7. package/assistants/inkbot/tools.ts +1 -1
  8. package/bun.lock +264 -321
  9. package/commands/audit-docs.ts +2 -2
  10. package/commands/build-bootstrap.ts +2 -3
  11. package/commands/build-python-bridge.ts +2 -3
  12. package/commands/build-scaffolds.ts +2 -3
  13. package/commands/bundle-consumer-project.ts +521 -0
  14. package/commands/generate-api-docs.ts +2 -2
  15. package/commands/inkbot.ts +2 -2
  16. package/commands/release.ts +2 -2
  17. package/commands/social.ts +137 -0
  18. package/commands/try-all-challenges.ts +3 -3
  19. package/commands/try-challenge.ts +3 -3
  20. package/datasets/lora/agentic-loop-session-candidates.jsonl +91 -0
  21. package/datasets/lora/agentic-loop-session-curation-summary.json +123 -0
  22. package/datasets/lora/luca-session-candidates.jsonl +29 -0
  23. package/datasets/lora/luca-session-curation-summary.json +121 -0
  24. package/datasets/lora/review-batch-1.jsonl +30 -0
  25. package/datasets/lora/review-manifest.json +41 -0
  26. package/datasets/lora/review-queue.jsonl +120 -0
  27. package/datasets/lora/review-schema.json +134 -0
  28. package/datasets/lora/review-template.jsonl +2 -0
  29. package/datasets/lora/review-ui.html +725 -0
  30. package/dist/agi/container.server.d.ts +2 -2
  31. package/dist/agi/features/assistant.d.ts +2 -2
  32. package/dist/agi/features/assistants-manager.d.ts +1 -1
  33. package/dist/agi/features/autonomous-assistant.d.ts +1 -1
  34. package/dist/agi/features/browser-use.d.ts +1 -1
  35. package/dist/agi/features/claude-code.d.ts +1 -1
  36. package/dist/agi/features/conversation-history.d.ts +2 -2
  37. package/dist/agi/features/conversation.d.ts +1 -1
  38. package/dist/agi/features/docs-reader.d.ts +1 -1
  39. package/dist/agi/features/file-tools.d.ts +1 -1
  40. package/dist/agi/features/luca-coder.d.ts +1 -1
  41. package/dist/agi/features/openai-codex.d.ts +1 -1
  42. package/dist/agi/features/skills-library.d.ts +1 -1
  43. package/dist/clients/civitai/index.d.ts +4 -4
  44. package/dist/clients/client-template.d.ts +4 -4
  45. package/dist/clients/comfyui/index.d.ts +2 -2
  46. package/dist/clients/elevenlabs/index.d.ts +2 -2
  47. package/dist/clients/openai/index.d.ts +2 -2
  48. package/dist/clients/supabase/index.d.ts +3 -3
  49. package/dist/command.d.ts +1 -1
  50. package/dist/node/container.d.ts +1 -1
  51. package/dist/node/features/helpers.d.ts +3 -3
  52. package/dist/node/features/semantic-search.d.ts +1 -1
  53. package/dist/node/features/vm.d.ts +3 -3
  54. package/dist/node.d.ts +1 -1
  55. package/dist/scaffolds/generated.d.ts +1 -1
  56. package/dist/selector.d.ts +1 -1
  57. package/features/cipher-social.ts +493 -0
  58. package/index.html +217 -190
  59. package/luca.console.ts +1 -1
  60. package/package.json +7 -2
  61. package/public/index.html +217 -190
  62. package/public/slides-ai-native.html +1 -1
  63. package/public/slides-intro.html +2 -2
  64. package/scripts/curate-claude-sessions.ts +561 -0
  65. package/scripts/examples/ask-luca-expert.ts +1 -1
  66. package/scripts/examples/assistant-questions.ts +1 -1
  67. package/scripts/examples/excalidraw-expert.ts +1 -1
  68. package/scripts/examples/file-manager.ts +1 -1
  69. package/scripts/examples/ideas.ts +1 -1
  70. package/scripts/examples/interactive-chat.ts +1 -1
  71. package/scripts/examples/opening-a-web-browser.ts +1 -1
  72. package/scripts/examples/telegram-bot.ts +1 -1
  73. package/scripts/examples/using-assistant-with-mcp.ts +1 -1
  74. package/scripts/examples/using-claude-code.ts +1 -1
  75. package/scripts/examples/using-contentdb.ts +2 -2
  76. package/scripts/examples/using-conversations.ts +1 -1
  77. package/scripts/examples/using-disk-cache.ts +1 -1
  78. package/scripts/examples/using-docker-shell.ts +1 -1
  79. package/scripts/examples/using-elevenlabs.ts +1 -1
  80. package/scripts/examples/using-google-calendar.ts +1 -1
  81. package/scripts/examples/using-google-docs.ts +1 -1
  82. package/scripts/examples/using-google-drive.ts +1 -1
  83. package/scripts/examples/using-google-sheets.ts +1 -1
  84. package/scripts/examples/using-nlp.ts +1 -1
  85. package/scripts/examples/using-ollama.ts +1 -1
  86. package/scripts/examples/using-postgres.ts +1 -1
  87. package/scripts/examples/using-runpod.ts +1 -1
  88. package/scripts/examples/using-tts.ts +1 -1
  89. package/scripts/scaffold.ts +5 -5
  90. package/scripts/scratch.ts +1 -1
  91. package/scripts/test-assistant-hooks.ts +1 -1
  92. package/scripts/test-docs-reader.ts +1 -1
  93. package/src/agi/container.server.ts +6 -2
  94. package/src/agi/features/agent-memory.ts +25 -25
  95. package/src/agi/features/assistant.ts +34 -5
  96. package/src/agi/features/assistants-manager.ts +122 -6
  97. package/src/agi/features/autonomous-assistant.ts +1 -1
  98. package/src/agi/features/browser-use.ts +20 -1
  99. package/src/agi/features/claude-code.ts +51 -5
  100. package/src/agi/features/coding-tools.ts +1 -1
  101. package/src/agi/features/conversation-history.ts +181 -4
  102. package/src/agi/features/conversation.ts +186 -15
  103. package/src/agi/features/docs-reader.ts +2 -2
  104. package/src/agi/features/file-tools.ts +49 -2
  105. package/src/agi/features/luca-coder.ts +7 -5
  106. package/src/agi/features/mcp-bridge.ts +532 -0
  107. package/src/agi/features/openai-codex.ts +2 -2
  108. package/src/agi/features/skills-library.ts +131 -52
  109. package/src/agi/lib/token-counter.ts +80 -0
  110. package/src/bootstrap/generated.ts +56 -57
  111. package/src/browser.ts +1 -1
  112. package/src/cli/build-info.ts +2 -2
  113. package/src/cli/cli.ts +2 -2
  114. package/src/clients/civitai/index.ts +5 -5
  115. package/src/clients/client-template.ts +4 -4
  116. package/src/clients/comfyui/index.ts +4 -4
  117. package/src/clients/elevenlabs/index.ts +4 -4
  118. package/src/clients/openai/index.ts +7 -7
  119. package/src/clients/supabase/index.ts +4 -4
  120. package/src/clients/voicebox/index.ts +4 -4
  121. package/src/command.ts +2 -1
  122. package/src/commands/chat.ts +1 -0
  123. package/src/commands/eval.ts +2 -56
  124. package/src/commands/introspect.ts +1 -1
  125. package/src/commands/prompt.ts +41 -9
  126. package/src/container-describer.ts +8 -1
  127. package/src/container.ts +13 -0
  128. package/src/entity.ts +2 -2
  129. package/src/helper.ts +1 -1
  130. package/src/introspection/generated.agi.ts +29596 -27654
  131. package/src/introspection/generated.node.ts +20284 -19247
  132. package/src/introspection/generated.web.ts +605 -584
  133. package/src/introspection/scan.ts +11 -6
  134. package/src/node/container.ts +9 -1
  135. package/src/node/features/content-db.ts +39 -2
  136. package/src/node/features/display-result.ts +57 -0
  137. package/src/node/features/helpers.ts +46 -7
  138. package/src/node/features/python.ts +25 -19
  139. package/src/node/features/repl.ts +1 -1
  140. package/src/node/features/secure-shell.ts +11 -17
  141. package/src/node/features/semantic-search.ts +2 -2
  142. package/src/node/features/socket-repl.ts +336 -0
  143. package/src/node/features/telnyx-assistant-connector.ts +1206 -0
  144. package/src/node/features/transpiler.ts +2 -3
  145. package/src/node/features/ui.ts +5 -0
  146. package/src/node/features/vm.ts +20 -3
  147. package/src/node.ts +3 -3
  148. package/src/python/generated.ts +0 -1
  149. package/src/scaffolds/generated.ts +82 -83
  150. package/src/selector.ts +1 -1
  151. package/src/servers/express.ts +1 -1
  152. package/src/web/features/helpers.ts +22 -0
  153. package/tsconfig.json +12 -12
  154. package/docs/CLI.md +0 -335
  155. package/docs/CNAME +0 -1
  156. package/docs/README.md +0 -60
  157. package/docs/TABLE-OF-CONTENTS.md +0 -183
  158. package/docs/apis/clients/elevenlabs.md +0 -308
  159. package/docs/apis/clients/graph.md +0 -107
  160. package/docs/apis/clients/openai.md +0 -429
  161. package/docs/apis/clients/rest.md +0 -161
  162. package/docs/apis/clients/websocket.md +0 -174
  163. package/docs/apis/features/agi/assistant.md +0 -625
  164. package/docs/apis/features/agi/assistants-manager.md +0 -282
  165. package/docs/apis/features/agi/auto-assistant.md +0 -279
  166. package/docs/apis/features/agi/browser-use.md +0 -802
  167. package/docs/apis/features/agi/claude-code.md +0 -884
  168. package/docs/apis/features/agi/conversation-history.md +0 -364
  169. package/docs/apis/features/agi/conversation.md +0 -548
  170. package/docs/apis/features/agi/docs-reader.md +0 -99
  171. package/docs/apis/features/agi/file-tools.md +0 -163
  172. package/docs/apis/features/agi/luca-coder.md +0 -407
  173. package/docs/apis/features/agi/openai-codex.md +0 -396
  174. package/docs/apis/features/agi/openapi.md +0 -138
  175. package/docs/apis/features/agi/semantic-search.md +0 -387
  176. package/docs/apis/features/agi/skills-library.md +0 -239
  177. package/docs/apis/features/node/container-link.md +0 -192
  178. package/docs/apis/features/node/content-db.md +0 -450
  179. package/docs/apis/features/node/disk-cache.md +0 -379
  180. package/docs/apis/features/node/dns.md +0 -652
  181. package/docs/apis/features/node/docker.md +0 -706
  182. package/docs/apis/features/node/downloader.md +0 -81
  183. package/docs/apis/features/node/esbuild.md +0 -60
  184. package/docs/apis/features/node/file-manager.md +0 -191
  185. package/docs/apis/features/node/fs.md +0 -1217
  186. package/docs/apis/features/node/git.md +0 -371
  187. package/docs/apis/features/node/google-auth.md +0 -193
  188. package/docs/apis/features/node/google-calendar.md +0 -202
  189. package/docs/apis/features/node/google-docs.md +0 -173
  190. package/docs/apis/features/node/google-drive.md +0 -246
  191. package/docs/apis/features/node/google-mail.md +0 -214
  192. package/docs/apis/features/node/google-sheets.md +0 -194
  193. package/docs/apis/features/node/grep.md +0 -292
  194. package/docs/apis/features/node/helpers.md +0 -164
  195. package/docs/apis/features/node/ink.md +0 -334
  196. package/docs/apis/features/node/ipc-socket.md +0 -249
  197. package/docs/apis/features/node/json-tree.md +0 -86
  198. package/docs/apis/features/node/networking.md +0 -316
  199. package/docs/apis/features/node/nlp.md +0 -133
  200. package/docs/apis/features/node/opener.md +0 -97
  201. package/docs/apis/features/node/os.md +0 -146
  202. package/docs/apis/features/node/package-finder.md +0 -392
  203. package/docs/apis/features/node/postgres.md +0 -234
  204. package/docs/apis/features/node/proc.md +0 -399
  205. package/docs/apis/features/node/process-manager.md +0 -305
  206. package/docs/apis/features/node/python.md +0 -604
  207. package/docs/apis/features/node/redis.md +0 -380
  208. package/docs/apis/features/node/repl.md +0 -88
  209. package/docs/apis/features/node/runpod.md +0 -674
  210. package/docs/apis/features/node/secure-shell.md +0 -176
  211. package/docs/apis/features/node/semantic-search.md +0 -408
  212. package/docs/apis/features/node/sqlite.md +0 -233
  213. package/docs/apis/features/node/telegram.md +0 -279
  214. package/docs/apis/features/node/transpiler.md +0 -74
  215. package/docs/apis/features/node/tts.md +0 -133
  216. package/docs/apis/features/node/ui.md +0 -701
  217. package/docs/apis/features/node/vault.md +0 -59
  218. package/docs/apis/features/node/vm.md +0 -75
  219. package/docs/apis/features/node/yaml-tree.md +0 -85
  220. package/docs/apis/features/node/yaml.md +0 -176
  221. package/docs/apis/features/web/asset-loader.md +0 -59
  222. package/docs/apis/features/web/container-link.md +0 -192
  223. package/docs/apis/features/web/esbuild.md +0 -54
  224. package/docs/apis/features/web/helpers.md +0 -164
  225. package/docs/apis/features/web/network.md +0 -44
  226. package/docs/apis/features/web/speech.md +0 -69
  227. package/docs/apis/features/web/vault.md +0 -59
  228. package/docs/apis/features/web/vm.md +0 -75
  229. package/docs/apis/features/web/voice.md +0 -84
  230. package/docs/apis/servers/express.md +0 -171
  231. package/docs/apis/servers/mcp.md +0 -238
  232. package/docs/apis/servers/websocket.md +0 -170
  233. package/docs/bootstrap/CLAUDE.md +0 -101
  234. package/docs/bootstrap/SKILL.md +0 -341
  235. package/docs/bootstrap/templates/about-command.ts +0 -41
  236. package/docs/bootstrap/templates/docs-models.ts +0 -22
  237. package/docs/bootstrap/templates/docs-readme.md +0 -43
  238. package/docs/bootstrap/templates/example-feature.ts +0 -53
  239. package/docs/bootstrap/templates/health-endpoint.ts +0 -15
  240. package/docs/bootstrap/templates/luca-cli.ts +0 -30
  241. package/docs/bootstrap/templates/runme.md +0 -54
  242. package/docs/challenges/caching-proxy.md +0 -16
  243. package/docs/challenges/content-db-round-trip.md +0 -14
  244. package/docs/challenges/custom-command.md +0 -9
  245. package/docs/challenges/file-watcher-pipeline.md +0 -11
  246. package/docs/challenges/grep-audit-report.md +0 -15
  247. package/docs/challenges/multi-feature-dashboard.md +0 -14
  248. package/docs/challenges/process-orchestrator.md +0 -17
  249. package/docs/challenges/rest-api-server-with-client.md +0 -12
  250. package/docs/challenges/script-runner-with-vm.md +0 -11
  251. package/docs/challenges/simple-rest-api.md +0 -15
  252. package/docs/challenges/websocket-serve-and-client.md +0 -11
  253. package/docs/challenges/yaml-config-system.md +0 -14
  254. package/docs/command-system-overhaul.md +0 -94
  255. package/docs/documentation-audit.md +0 -134
  256. package/docs/examples/assistant/CORE.md +0 -18
  257. package/docs/examples/assistant/hooks.ts +0 -3
  258. package/docs/examples/assistant/tools.ts +0 -10
  259. package/docs/examples/assistant-hooks-reference.ts +0 -171
  260. package/docs/examples/assistant-with-process-manager.md +0 -84
  261. package/docs/examples/content-db.md +0 -77
  262. package/docs/examples/disk-cache.md +0 -83
  263. package/docs/examples/docker.md +0 -101
  264. package/docs/examples/downloader.md +0 -70
  265. package/docs/examples/entity.md +0 -124
  266. package/docs/examples/esbuild.md +0 -80
  267. package/docs/examples/feature-as-tool-provider.md +0 -143
  268. package/docs/examples/file-manager.md +0 -82
  269. package/docs/examples/fs.md +0 -83
  270. package/docs/examples/git.md +0 -85
  271. package/docs/examples/google-auth.md +0 -88
  272. package/docs/examples/google-calendar.md +0 -94
  273. package/docs/examples/google-docs.md +0 -82
  274. package/docs/examples/google-drive.md +0 -96
  275. package/docs/examples/google-sheets.md +0 -95
  276. package/docs/examples/grep.md +0 -85
  277. package/docs/examples/ink-blocks.md +0 -75
  278. package/docs/examples/ink-renderer.md +0 -41
  279. package/docs/examples/ink.md +0 -103
  280. package/docs/examples/ipc-socket.md +0 -103
  281. package/docs/examples/json-tree.md +0 -91
  282. package/docs/examples/networking.md +0 -58
  283. package/docs/examples/nlp.md +0 -91
  284. package/docs/examples/opener.md +0 -78
  285. package/docs/examples/os.md +0 -72
  286. package/docs/examples/package-finder.md +0 -89
  287. package/docs/examples/postgres.md +0 -91
  288. package/docs/examples/proc.md +0 -81
  289. package/docs/examples/process-manager.md +0 -79
  290. package/docs/examples/python.md +0 -132
  291. package/docs/examples/repl.md +0 -93
  292. package/docs/examples/runpod.md +0 -119
  293. package/docs/examples/secure-shell.md +0 -92
  294. package/docs/examples/sqlite.md +0 -86
  295. package/docs/examples/structured-output-with-assistants.md +0 -144
  296. package/docs/examples/telegram.md +0 -77
  297. package/docs/examples/tts.md +0 -86
  298. package/docs/examples/ui.md +0 -80
  299. package/docs/examples/vault.md +0 -70
  300. package/docs/examples/vm.md +0 -86
  301. package/docs/examples/websocket-ask-and-reply-example.md +0 -128
  302. package/docs/examples/yaml-tree.md +0 -93
  303. package/docs/examples/yaml.md +0 -104
  304. package/docs/ideas/assistant-factory-pattern.md +0 -142
  305. package/docs/in-memory-fs.md +0 -4
  306. package/docs/introspection-audit.md +0 -49
  307. package/docs/introspection.md +0 -164
  308. package/docs/mcp/readme.md +0 -162
  309. package/docs/models.ts +0 -41
  310. package/docs/philosophy.md +0 -86
  311. package/docs/principles.md +0 -7
  312. package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +0 -34
  313. package/docs/prompts/check-for-undocumented-features.md +0 -27
  314. package/docs/prompts/mcp-test-easy-command.md +0 -27
  315. package/docs/scaffolds/client.md +0 -149
  316. package/docs/scaffolds/command.md +0 -120
  317. package/docs/scaffolds/endpoint.md +0 -171
  318. package/docs/scaffolds/feature.md +0 -158
  319. package/docs/scaffolds/selector.md +0 -91
  320. package/docs/scaffolds/server.md +0 -196
  321. package/docs/selectors.md +0 -115
  322. package/docs/sessions/custom-command/attempt-log-2.md +0 -195
  323. package/docs/sessions/file-watcher-pipeline/attempt-log-1.md +0 -728
  324. package/docs/sessions/file-watcher-pipeline/attempt-log-2.md +0 -555
  325. package/docs/sessions/grep-audit-report/attempt-log-1.md +0 -289
  326. package/docs/sessions/multi-feature-dashboard/attempt-log-2.md +0 -679
  327. package/docs/sessions/rest-api-server-with-client/attempt-log-1.md +0 -1
  328. package/docs/sessions/rest-api-server-with-client/attempt-log-3.md +0 -920
  329. package/docs/sessions/simple-rest-api/attempt-log-1.md +0 -593
  330. package/docs/sessions/websocket-serve-and-client/attempt-log-2.md +0 -995
  331. package/docs/tutorials/00-bootstrap.md +0 -166
  332. package/docs/tutorials/01-getting-started.md +0 -106
  333. package/docs/tutorials/02-container.md +0 -210
  334. package/docs/tutorials/03-scripts.md +0 -194
  335. package/docs/tutorials/04-features-overview.md +0 -196
  336. package/docs/tutorials/05-state-and-events.md +0 -171
  337. package/docs/tutorials/06-servers.md +0 -157
  338. package/docs/tutorials/07-endpoints.md +0 -198
  339. package/docs/tutorials/08-commands.md +0 -252
  340. package/docs/tutorials/09-clients.md +0 -162
  341. package/docs/tutorials/10-creating-features.md +0 -203
  342. package/docs/tutorials/11-contentbase.md +0 -191
  343. package/docs/tutorials/12-assistants.md +0 -215
  344. package/docs/tutorials/13-introspection.md +0 -157
  345. package/docs/tutorials/14-type-system.md +0 -174
  346. package/docs/tutorials/15-project-patterns.md +0 -222
  347. package/docs/tutorials/16-google-features.md +0 -534
  348. package/docs/tutorials/17-tui-blocks.md +0 -530
  349. package/docs/tutorials/18-semantic-search.md +0 -334
  350. package/docs/tutorials/19-python-sessions.md +0 -401
  351. package/docs/tutorials/20-browser-esm.md +0 -234
  352. package/index.ts +0 -1
  353. package/src/agi/endpoints/ask.ts +0 -60
  354. package/src/agi/endpoints/conversations/[id].ts +0 -45
  355. package/src/agi/endpoints/conversations.ts +0 -31
  356. package/src/agi/endpoints/experts.ts +0 -37
  357. package/test/assistant-hooks.test.ts +0 -306
  358. package/test/assistant.test.ts +0 -81
  359. package/test/bus.test.ts +0 -134
  360. package/test/clients-servers.test.ts +0 -217
  361. package/test/command.test.ts +0 -267
  362. package/test/container-link.test.ts +0 -274
  363. package/test/conversation.test.ts +0 -220
  364. package/test/features.test.ts +0 -160
  365. package/test/fork-and-research.test.ts +0 -450
  366. package/test/integration.test.ts +0 -787
  367. package/test/interceptor-chain.test.ts +0 -61
  368. package/test/node-container.test.ts +0 -121
  369. package/test/python-session.test.ts +0 -105
  370. package/test/rate-limit.test.ts +0 -272
  371. package/test/semantic-search.test.ts +0 -550
  372. package/test/state.test.ts +0 -121
  373. package/test/vm-context.test.ts +0 -146
  374. package/test/vm-loadmodule.test.ts +0 -213
  375. package/test/websocket-ask.test.ts +0 -101
  376. package/test-integration/assistant.test.ts +0 -138
  377. package/test-integration/assistants-manager.test.ts +0 -113
  378. package/test-integration/claude-code.test.ts +0 -98
  379. package/test-integration/conversation-history.test.ts +0 -205
  380. package/test-integration/conversation.test.ts +0 -137
  381. package/test-integration/elevenlabs.test.ts +0 -55
  382. package/test-integration/google-services.test.ts +0 -80
  383. package/test-integration/helpers.ts +0 -89
  384. package/test-integration/memory.test.ts +0 -204
  385. package/test-integration/openai-codex.test.ts +0 -93
  386. package/test-integration/runpod.test.ts +0 -58
  387. package/test-integration/server-endpoints.test.ts +0 -97
  388. package/test-integration/telegram.test.ts +0 -46
@@ -1,371 +0,0 @@
1
- # Git (features.git)
2
-
3
- The Git feature provides utilities for interacting with Git repositories. This feature allows you to check repository status, list files, get branch information, and access Git metadata for projects within a Git repository.
4
-
5
- ## Usage
6
-
7
- ```ts
8
- container.feature('git')
9
- ```
10
-
11
- ## Methods
12
-
13
- ### lsFiles
14
-
15
- Lists files in the Git repository using git ls-files command. This method provides a flexible interface to the git ls-files command, allowing you to filter files by various criteria such as cached, deleted, modified, untracked, and ignored files.
16
-
17
- **Parameters:**
18
-
19
- | Name | Type | Required | Description |
20
- |------|------|----------|-------------|
21
- | `options` | `LsFilesOptions` | | Options to control which files are listed |
22
-
23
- `LsFilesOptions` properties:
24
-
25
- | Property | Type | Description |
26
- |----------|------|-------------|
27
- | `cached` | `boolean` | Show cached/staged files |
28
- | `deleted` | `boolean` | Show deleted files |
29
- | `modified` | `boolean` | Show modified files |
30
- | `others` | `boolean` | Show untracked files |
31
- | `ignored` | `boolean` | Show ignored files |
32
- | `status` | `boolean` | Show file status information |
33
- | `includeIgnored` | `boolean` | Include ignored files when showing others |
34
- | `exclude` | `string | string[]` | Patterns to exclude from results |
35
- | `baseDir` | `string` | Base directory to list files from |
36
-
37
- **Returns:** `Promise<string[]>`
38
-
39
- ```ts
40
- // Get all tracked files
41
- const allFiles = await git.lsFiles()
42
-
43
- // Get only modified files
44
- const modified = await git.lsFiles({ modified: true })
45
-
46
- // Get untracked files excluding certain patterns
47
- const untracked = await git.lsFiles({
48
- others: true,
49
- exclude: ['*.log', 'node_modules']
50
- })
51
- ```
52
-
53
-
54
-
55
- ### getLatestChanges
56
-
57
- Gets the latest commits from the repository. Returns an array of commit objects containing the title (first line of commit message), full message body, and author name for each commit.
58
-
59
- **Parameters:**
60
-
61
- | Name | Type | Required | Description |
62
- |------|------|----------|-------------|
63
- | `numberOfChanges` | `number` | | The number of recent commits to return |
64
-
65
- **Returns:** `Promise<Array<{ title: string, message: string, author: string }>>`
66
-
67
- ```ts
68
- const changes = await git.getLatestChanges(5)
69
- for (const commit of changes) {
70
- console.log(`${commit.author}: ${commit.title}`)
71
- }
72
- ```
73
-
74
-
75
-
76
- ### fileLog
77
-
78
- Gets a lightweight commit log for one or more files. Returns the SHA and message for each commit that touched the given files, without the per-commit overhead of resolving which specific files matched. For richer per-file matching, see {@link getChangeHistoryForFiles}.
79
-
80
- **Parameters:**
81
-
82
- | Name | Type | Required | Description |
83
- |------|------|----------|-------------|
84
- | `files` | `string[]` | ✓ | File paths (absolute or relative to container.cwd) |
85
-
86
- **Returns:** `Array<{ sha: string, message: string }>`
87
-
88
- ```ts
89
- const log = git.fileLog('package.json')
90
- const log = git.fileLog('src/index.ts', 'src/helper.ts')
91
- for (const entry of log) {
92
- console.log(`${entry.sha.slice(0, 8)} ${entry.message}`)
93
- }
94
- ```
95
-
96
-
97
-
98
- ### diff
99
-
100
- Gets the diff for a file between two refs. By default compares from the current HEAD to the given ref. You can supply both `compareTo` and `compareFrom` to diff between any two commits, branches, or tags.
101
-
102
- **Parameters:**
103
-
104
- | Name | Type | Required | Description |
105
- |------|------|----------|-------------|
106
- | `file` | `string` | ✓ | File path (absolute or relative to container.cwd) |
107
- | `compareTo` | `string` | ✓ | The target ref (commit SHA, branch, tag) to compare to |
108
- | `compareFrom` | `string` | | The base ref to compare from (defaults to current HEAD) |
109
-
110
- **Returns:** `string`
111
-
112
- ```ts
113
- // Diff package.json between HEAD and a specific commit
114
- const d = git.diff('package.json', 'abc1234')
115
-
116
- // Diff between two branches
117
- const d = git.diff('src/index.ts', 'feature-branch', 'main')
118
- ```
119
-
120
-
121
-
122
- ### displayDiff
123
-
124
- Pretty prints a unified diff string to the terminal using colors. Parses the diff output and applies color coding: - File headers (`diff --git`, `---`, `+++`) are rendered bold - Hunk headers (`@@ ... @@`) are rendered in cyan - Added lines (`+`) are rendered in green - Removed lines (`-`) are rendered in red - Context lines are rendered dim Can be called with a raw diff string, or with the same arguments as {@link diff} to fetch and display in one step.
125
-
126
- **Parameters:**
127
-
128
- | Name | Type | Required | Description |
129
- |------|------|----------|-------------|
130
- | `diffOrFile` | `string` | ✓ | A raw diff string, or a file path to pass to {@link diff} |
131
- | `compareTo` | `string` | | When diffOrFile is a file path, the target ref to compare to |
132
- | `compareFrom` | `string` | | When diffOrFile is a file path, the base ref to compare from |
133
-
134
- **Returns:** `string`
135
-
136
- ```ts
137
- // Display a pre-fetched diff
138
- const raw = git.diff('src/index.ts', 'main')
139
- git.displayDiff(raw)
140
-
141
- // Fetch and display in one call
142
- git.displayDiff('src/index.ts', 'abc1234')
143
- ```
144
-
145
-
146
-
147
- ### extractFolder
148
-
149
- Extracts a folder (or entire repo) from a remote GitHub repository without cloning. Downloads the repo as a tarball and extracts only the specified subfolder, similar to how degit works. No .git history is included — just the files. Supports shorthand (`user/repo/path`), branch refs (`user/repo/path#branch`), and full GitHub URLs (`https://github.com/user/repo/tree/branch/path`).
150
-
151
- **Parameters:**
152
-
153
- | Name | Type | Required | Description |
154
- |------|------|----------|-------------|
155
- | `{ source, destination, branch }` | `{ source: string, destination: string, branch?: string }` | ✓ | Parameter { source, destination, branch } |
156
-
157
- **Returns:** `Promise<{ files: string[], source: { user: string, repo: string, ref: string, subdir: string`
158
-
159
- ```ts
160
- // Extract a subfolder
161
- await git.extractFolder({ source: 'soederpop/luca/src/assistants', destination: './my-assistants' })
162
-
163
- // Specific branch
164
- await git.extractFolder({ source: 'sveltejs/template', destination: './my-app', branch: 'main' })
165
-
166
- // Full GitHub URL
167
- await git.extractFolder({ source: 'https://github.com/user/repo/tree/main/examples', destination: './examples' })
168
- ```
169
-
170
-
171
-
172
- ### getChangeHistoryForFiles
173
-
174
- Gets the commit history for a set of files or glob patterns. Accepts absolute paths, relative paths (resolved from container.cwd), or glob patterns. Returns commits that touched any of the matched files, with each entry noting which of your queried files were in that commit.
175
-
176
- **Parameters:**
177
-
178
- | Name | Type | Required | Description |
179
- |------|------|----------|-------------|
180
- | `paths` | `string[]` | ✓ | File paths or glob patterns to get history for |
181
-
182
- **Returns:** `Array<{ sha: string, message: string, longMessage: string, filesMatched: string[] }>`
183
-
184
- ```ts
185
- const history = git.getChangeHistoryForFiles('src/container.ts', 'src/helper.ts')
186
- const history = git.getChangeHistoryForFiles('src/node/features/*.ts')
187
- ```
188
-
189
-
190
-
191
- ## Getters
192
-
193
- | Property | Type | Description |
194
- |----------|------|-------------|
195
- | `gitPath` | `string` | Resolve the git binary path via `which`, caching the result. |
196
- | `branch` | `string | null` | Gets the current Git branch name. |
197
- | `sha` | `string | null` | Gets the current Git commit SHA hash. |
198
- | `isRepo` | `boolean` | Checks if the current directory is within a Git repository. |
199
- | `isRepoRoot` | `boolean` | Checks if the current working directory is the root of the Git repository. |
200
- | `repoRoot` | `string | null` | Gets the absolute path to the Git repository root directory. This method caches the repository root path for performance. It searches upward from the current directory to find the .git directory. |
201
-
202
- ## State (Zod v4 schema)
203
-
204
- | Property | Type | Description |
205
- |----------|------|-------------|
206
- | `enabled` | `boolean` | Whether this feature is currently enabled |
207
- | `repoRoot` | `string` | Absolute path to the Git repository root directory |
208
-
209
- ## Examples
210
-
211
- **features.git**
212
-
213
- ```ts
214
- const git = container.feature('git')
215
-
216
- if (git.isRepo) {
217
- console.log(`Current branch: ${git.branch}`)
218
- console.log(`Repository root: ${git.repoRoot}`)
219
-
220
- const allFiles = await git.lsFiles()
221
- const modifiedFiles = await git.lsFiles({ modified: true })
222
- }
223
- ```
224
-
225
-
226
-
227
- **lsFiles**
228
-
229
- ```ts
230
- // Get all tracked files
231
- const allFiles = await git.lsFiles()
232
-
233
- // Get only modified files
234
- const modified = await git.lsFiles({ modified: true })
235
-
236
- // Get untracked files excluding certain patterns
237
- const untracked = await git.lsFiles({
238
- others: true,
239
- exclude: ['*.log', 'node_modules']
240
- })
241
- ```
242
-
243
-
244
-
245
- **getLatestChanges**
246
-
247
- ```ts
248
- const changes = await git.getLatestChanges(5)
249
- for (const commit of changes) {
250
- console.log(`${commit.author}: ${commit.title}`)
251
- }
252
- ```
253
-
254
-
255
-
256
- **fileLog**
257
-
258
- ```ts
259
- const log = git.fileLog('package.json')
260
- const log = git.fileLog('src/index.ts', 'src/helper.ts')
261
- for (const entry of log) {
262
- console.log(`${entry.sha.slice(0, 8)} ${entry.message}`)
263
- }
264
- ```
265
-
266
-
267
-
268
- **diff**
269
-
270
- ```ts
271
- // Diff package.json between HEAD and a specific commit
272
- const d = git.diff('package.json', 'abc1234')
273
-
274
- // Diff between two branches
275
- const d = git.diff('src/index.ts', 'feature-branch', 'main')
276
- ```
277
-
278
-
279
-
280
- **displayDiff**
281
-
282
- ```ts
283
- // Display a pre-fetched diff
284
- const raw = git.diff('src/index.ts', 'main')
285
- git.displayDiff(raw)
286
-
287
- // Fetch and display in one call
288
- git.displayDiff('src/index.ts', 'abc1234')
289
- ```
290
-
291
-
292
-
293
- **extractFolder**
294
-
295
- ```ts
296
- // Extract a subfolder
297
- await git.extractFolder({ source: 'soederpop/luca/src/assistants', destination: './my-assistants' })
298
-
299
- // Specific branch
300
- await git.extractFolder({ source: 'sveltejs/template', destination: './my-app', branch: 'main' })
301
-
302
- // Full GitHub URL
303
- await git.extractFolder({ source: 'https://github.com/user/repo/tree/main/examples', destination: './examples' })
304
- ```
305
-
306
-
307
-
308
- **getChangeHistoryForFiles**
309
-
310
- ```ts
311
- const history = git.getChangeHistoryForFiles('src/container.ts', 'src/helper.ts')
312
- const history = git.getChangeHistoryForFiles('src/node/features/*.ts')
313
- ```
314
-
315
-
316
-
317
- **branch**
318
-
319
- ```ts
320
- const currentBranch = git.branch
321
- if (currentBranch) {
322
- console.log(`Currently on branch: ${currentBranch}`)
323
- }
324
- ```
325
-
326
-
327
-
328
- **sha**
329
-
330
- ```ts
331
- const commitSha = git.sha
332
- if (commitSha) {
333
- console.log(`Current commit: ${commitSha}`)
334
- }
335
- ```
336
-
337
-
338
-
339
- **isRepo**
340
-
341
- ```ts
342
- if (git.isRepo) {
343
- console.log('This is a Git repository!')
344
- } else {
345
- console.log('Not in a Git repository')
346
- }
347
- ```
348
-
349
-
350
-
351
- **isRepoRoot**
352
-
353
- ```ts
354
- if (git.isRepoRoot) {
355
- console.log('At the repository root')
356
- } else {
357
- console.log('In a subdirectory of the repository')
358
- }
359
- ```
360
-
361
-
362
-
363
- **repoRoot**
364
-
365
- ```ts
366
- const repoRoot = git.repoRoot
367
- if (repoRoot) {
368
- console.log(`Repository root: ${repoRoot}`)
369
- }
370
- ```
371
-
@@ -1,193 +0,0 @@
1
- # GoogleAuth (features.googleAuth)
2
-
3
- Google authentication feature supporting OAuth2 browser flow and service account auth. Handles the complete OAuth2 lifecycle: authorization URL generation, local callback server, token exchange, refresh token storage (via diskCache), and automatic token refresh. Also supports non-interactive service account authentication via JSON key files. Other Google features (drive, sheets, calendar, docs) depend on this feature and access it lazily via `container.feature('googleAuth')`.
4
-
5
- ## Usage
6
-
7
- ```ts
8
- container.feature('googleAuth', {
9
- // Authentication mode. Auto-detected if serviceAccountKeyPath is set
10
- mode,
11
- // OAuth2 client ID (falls back to GOOGLE_CLIENT_ID env var)
12
- clientId,
13
- // OAuth2 client secret (falls back to GOOGLE_CLIENT_SECRET env var)
14
- clientSecret,
15
- // Path to service account JSON key file (falls back to GOOGLE_SERVICE_ACCOUNT_KEY env var)
16
- serviceAccountKeyPath,
17
- // Service account key as a parsed JSON object (alternative to file path)
18
- serviceAccountKey,
19
- // OAuth2 scopes to request
20
- scopes,
21
- // Port for OAuth2 callback server (falls back to GOOGLE_OAUTH_REDIRECT_PORT env var, then 3000)
22
- redirectPort,
23
- // DiskCache key for storing OAuth2 refresh token
24
- tokenCacheKey,
25
- })
26
- ```
27
-
28
- ## Options (Zod v4 schema)
29
-
30
- | Property | Type | Description |
31
- |----------|------|-------------|
32
- | `mode` | `string` | Authentication mode. Auto-detected if serviceAccountKeyPath is set |
33
- | `clientId` | `string` | OAuth2 client ID (falls back to GOOGLE_CLIENT_ID env var) |
34
- | `clientSecret` | `string` | OAuth2 client secret (falls back to GOOGLE_CLIENT_SECRET env var) |
35
- | `serviceAccountKeyPath` | `string` | Path to service account JSON key file (falls back to GOOGLE_SERVICE_ACCOUNT_KEY env var) |
36
- | `serviceAccountKey` | `object` | Service account key as a parsed JSON object (alternative to file path) |
37
- | `scopes` | `array` | OAuth2 scopes to request |
38
- | `redirectPort` | `number` | Port for OAuth2 callback server (falls back to GOOGLE_OAUTH_REDIRECT_PORT env var, then 3000) |
39
- | `tokenCacheKey` | `string` | DiskCache key for storing OAuth2 refresh token |
40
-
41
- ## Methods
42
-
43
- ### getOAuth2Client
44
-
45
- Get the OAuth2Client instance, creating it lazily. After authentication, this client has valid credentials set.
46
-
47
- **Returns:** `OAuth2Client`
48
-
49
-
50
-
51
- ### getAuthClient
52
-
53
- Get the authenticated auth client for passing to googleapis service constructors. Handles token refresh automatically for OAuth2. For service accounts, returns the JWT auth client.
54
-
55
- **Returns:** `Promise<OAuth2Client | ReturnType<typeof google.auth.fromJSON>>`
56
-
57
-
58
-
59
- ### authorize
60
-
61
- Start the OAuth2 authorization flow. 1. Spins up a temporary Express callback server on a free port 2. Generates the Google authorization URL 3. Opens the browser to the consent page 4. Waits for the callback with the authorization code 5. Exchanges the code for access + refresh tokens 6. Stores the refresh token in diskCache 7. Shuts down the callback server
62
-
63
- **Parameters:**
64
-
65
- | Name | Type | Required | Description |
66
- |------|------|----------|-------------|
67
- | `scopes` | `string[]` | | OAuth2 scopes to request (defaults to options.scopes or defaultScopes) |
68
-
69
- **Returns:** `Promise<this>`
70
-
71
-
72
-
73
- ### authenticateServiceAccount
74
-
75
- Authenticate using a service account JSON key file. Reads the key from options.serviceAccountKeyPath, options.serviceAccountKey, or the GOOGLE_SERVICE_ACCOUNT_KEY env var.
76
-
77
- **Returns:** `Promise<this>`
78
-
79
-
80
-
81
- ### tryRestoreTokens
82
-
83
- Attempt to restore authentication from a cached refresh token. Called automatically by getAuthClient() if not yet authenticated.
84
-
85
- **Returns:** `Promise<boolean>`
86
-
87
-
88
-
89
- ### revoke
90
-
91
- Revoke the current credentials and clear cached tokens.
92
-
93
- **Returns:** `Promise<this>`
94
-
95
-
96
-
97
- ## Getters
98
-
99
- | Property | Type | Description |
100
- |----------|------|-------------|
101
- | `clientId` | `string` | OAuth2 client ID from options or GOOGLE_CLIENT_ID env var. |
102
- | `clientSecret` | `string` | OAuth2 client secret from options or GOOGLE_CLIENT_SECRET env var. |
103
- | `authMode` | `'oauth2' | 'service-account'` | Resolved authentication mode based on options. |
104
- | `isAuthenticated` | `boolean` | Whether valid credentials are currently available. |
105
- | `defaultScopes` | `string[]` | Default scopes covering Drive, Sheets, Calendar, and Docs read access. |
106
- | `redirectPort` | `number` | Resolved redirect port from options, GOOGLE_OAUTH_REDIRECT_PORT env var, or default 3000. |
107
- | `tokenCacheKey` | `string` | DiskCache key used for storing the refresh token. |
108
-
109
- ## Events (Zod v4 schema)
110
-
111
- ### tokenRefreshed
112
-
113
- Access token was refreshed
114
-
115
-
116
-
117
- ### error
118
-
119
- Authentication error occurred
120
-
121
- **Event Arguments:**
122
-
123
- | Name | Type | Description |
124
- |------|------|-------------|
125
- | `arg0` | `any` | The error |
126
-
127
-
128
-
129
- ### authorizationRequired
130
-
131
- User must visit this URL to authorize
132
-
133
- **Event Arguments:**
134
-
135
- | Name | Type | Description |
136
- |------|------|-------------|
137
- | `arg0` | `string` | Authorization URL to visit |
138
-
139
-
140
-
141
- ### authenticated
142
-
143
- Authentication successful
144
-
145
- **Event Arguments:**
146
-
147
- | Name | Type | Description |
148
- |------|------|-------------|
149
- | `mode` | `string` | Auth mode used |
150
- | `email` | `string` | User or service account email |
151
-
152
-
153
-
154
- ## State (Zod v4 schema)
155
-
156
- | Property | Type | Description |
157
- |----------|------|-------------|
158
- | `enabled` | `boolean` | Whether this feature is currently enabled |
159
- | `authMode` | `string` | Current authentication mode |
160
- | `isAuthenticated` | `boolean` | Whether valid credentials are currently available |
161
- | `email` | `string` | Authenticated user or service account email |
162
- | `scopes` | `array` | OAuth2 scopes that have been authorized |
163
- | `tokenExpiry` | `string` | ISO timestamp when the current access token expires |
164
- | `lastError` | `string` | Last authentication error message |
165
-
166
- ## Environment Variables
167
-
168
- - `GOOGLE_CLIENT_ID`
169
- - `GOOGLE_CLIENT_SECRET`
170
- - `GOOGLE_SERVICE_ACCOUNT_KEY`
171
- - `GOOGLE_OAUTH_REDIRECT_PORT`
172
-
173
- ## Examples
174
-
175
- **features.googleAuth**
176
-
177
- ```ts
178
- // OAuth2 flow — opens browser for consent
179
- const auth = container.feature('googleAuth', {
180
- clientId: 'your-client-id.apps.googleusercontent.com',
181
- clientSecret: 'your-secret',
182
- scopes: ['https://www.googleapis.com/auth/drive.readonly'],
183
- })
184
- await auth.authorize()
185
-
186
- // Service account flow — no browser needed
187
- const auth = container.feature('googleAuth', {
188
- serviceAccountKeyPath: '/path/to/key.json',
189
- scopes: ['https://www.googleapis.com/auth/spreadsheets.readonly'],
190
- })
191
- await auth.authenticateServiceAccount()
192
- ```
193
-