@nio-cli/cli 0.1.0 → 0.3.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 (425) hide show
  1. package/README.md +374 -139
  2. package/dist/adapters/docker/docker-gateway.js +100 -0
  3. package/dist/adapters/docker/docker-gateway.js.map +1 -0
  4. package/dist/adapters/ide/ide-gateway.js +50 -0
  5. package/dist/adapters/ide/ide-gateway.js.map +1 -0
  6. package/dist/adapters/lang/knowledge-store.js +97 -0
  7. package/dist/adapters/lang/knowledge-store.js.map +1 -0
  8. package/dist/adapters/lang/language-catalog.js +86 -0
  9. package/dist/adapters/lang/language-catalog.js.map +1 -0
  10. package/dist/adapters/lang/package-map.js +98 -0
  11. package/dist/adapters/lang/package-map.js.map +1 -0
  12. package/dist/adapters/lang/project-detector.js +40 -0
  13. package/dist/adapters/lang/project-detector.js.map +1 -0
  14. package/dist/adapters/lang/repos.js +8 -0
  15. package/dist/adapters/lang/repos.js.map +1 -0
  16. package/dist/adapters/lang/scaffold-gateway.js +135 -0
  17. package/dist/adapters/lang/scaffold-gateway.js.map +1 -0
  18. package/dist/adapters/lang/vendor.js +52 -0
  19. package/dist/adapters/lang/vendor.js.map +1 -0
  20. package/dist/adapters/pg/auth-session-repository.js +41 -0
  21. package/dist/adapters/pg/auth-session-repository.js.map +1 -0
  22. package/dist/adapters/pg/client.js +74 -0
  23. package/dist/adapters/pg/client.js.map +1 -0
  24. package/dist/adapters/pg/dependency-event-repository.js +40 -0
  25. package/dist/adapters/pg/dependency-event-repository.js.map +1 -0
  26. package/dist/adapters/pg/login-challenge-repository.js +54 -0
  27. package/dist/adapters/pg/login-challenge-repository.js.map +1 -0
  28. package/dist/adapters/pg/session-repository.js +70 -0
  29. package/dist/adapters/pg/session-repository.js.map +1 -0
  30. package/dist/adapters/pg/user-repository.js +71 -0
  31. package/dist/adapters/pg/user-repository.js.map +1 -0
  32. package/dist/adapters/pkg/toolchain-gateway.js +35 -0
  33. package/dist/adapters/pkg/toolchain-gateway.js.map +1 -0
  34. package/dist/adapters/skills/recipe-catalog.js +84 -0
  35. package/dist/adapters/skills/recipe-catalog.js.map +1 -0
  36. package/dist/adapters/sms/http-generic.js +50 -0
  37. package/dist/adapters/sms/http-generic.js.map +1 -0
  38. package/dist/app/ai-client.js +44 -0
  39. package/dist/app/ai-client.js.map +1 -0
  40. package/dist/app/dependency-watcher.js +87 -0
  41. package/dist/app/dependency-watcher.js.map +1 -0
  42. package/dist/app/docker-manager.js +113 -0
  43. package/dist/app/docker-manager.js.map +1 -0
  44. package/dist/app/environment-builder.js +73 -0
  45. package/dist/app/environment-builder.js.map +1 -0
  46. package/dist/app/language-configurator.js +30 -0
  47. package/dist/app/language-configurator.js.map +1 -0
  48. package/dist/app/session-manager.js +124 -0
  49. package/dist/app/session-manager.js.map +1 -0
  50. package/dist/brand.js +3 -61
  51. package/dist/brand.js.map +1 -1
  52. package/dist/cli/commands/agents.js +30 -0
  53. package/dist/cli/commands/agents.js.map +1 -0
  54. package/dist/cli/commands/ai.js +61 -0
  55. package/dist/cli/commands/ai.js.map +1 -0
  56. package/dist/cli/commands/auth.js +149 -96
  57. package/dist/cli/commands/auth.js.map +1 -1
  58. package/dist/cli/commands/clean.js +1 -13
  59. package/dist/cli/commands/clean.js.map +1 -1
  60. package/dist/cli/commands/command.js +58 -0
  61. package/dist/cli/commands/command.js.map +1 -0
  62. package/dist/cli/commands/completion.js +0 -3
  63. package/dist/cli/commands/completion.js.map +1 -1
  64. package/dist/cli/commands/config.js +43 -0
  65. package/dist/cli/commands/config.js.map +1 -0
  66. package/dist/cli/commands/debug.js +102 -0
  67. package/dist/cli/commands/debug.js.map +1 -0
  68. package/dist/cli/commands/deps.js +94 -0
  69. package/dist/cli/commands/deps.js.map +1 -0
  70. package/dist/cli/commands/docker.js +385 -0
  71. package/dist/cli/commands/docker.js.map +1 -0
  72. package/dist/cli/commands/docs/content.js +219 -0
  73. package/dist/cli/commands/docs/content.js.map +1 -0
  74. package/dist/cli/commands/docs/dynamic.js +42 -0
  75. package/dist/cli/commands/docs/dynamic.js.map +1 -0
  76. package/dist/cli/commands/docs/html.js +108 -0
  77. package/dist/cli/commands/docs/html.js.map +1 -0
  78. package/dist/cli/commands/docs/terminal.js +42 -0
  79. package/dist/cli/commands/docs/terminal.js.map +1 -0
  80. package/dist/cli/commands/docs.js +34 -0
  81. package/dist/cli/commands/docs.js.map +1 -0
  82. package/dist/cli/commands/exec.js +2 -7
  83. package/dist/cli/commands/exec.js.map +1 -1
  84. package/dist/cli/commands/init/auth-step.js +10 -45
  85. package/dist/cli/commands/init/auth-step.js.map +1 -1
  86. package/dist/cli/commands/init/clients-step.js +12 -39
  87. package/dist/cli/commands/init/clients-step.js.map +1 -1
  88. package/dist/cli/commands/init/context-step.js +7 -33
  89. package/dist/cli/commands/init/context-step.js.map +1 -1
  90. package/dist/cli/commands/init/handoff.js +20 -0
  91. package/dist/cli/commands/init/handoff.js.map +1 -0
  92. package/dist/cli/commands/init/index.js +164 -34
  93. package/dist/cli/commands/init/index.js.map +1 -1
  94. package/dist/cli/commands/init/lang-step.js +40 -0
  95. package/dist/cli/commands/init/lang-step.js.map +1 -0
  96. package/dist/cli/commands/init/profile-step.js +43 -0
  97. package/dist/cli/commands/init/profile-step.js.map +1 -0
  98. package/dist/cli/commands/init/provision-step.js +8 -23
  99. package/dist/cli/commands/init/provision-step.js.map +1 -1
  100. package/dist/cli/commands/init/recipe-step.js +18 -0
  101. package/dist/cli/commands/init/recipe-step.js.map +1 -0
  102. package/dist/cli/commands/lang.js +27 -0
  103. package/dist/cli/commands/lang.js.map +1 -0
  104. package/dist/cli/commands/open.js +59 -0
  105. package/dist/cli/commands/open.js.map +1 -0
  106. package/dist/cli/commands/plan.js +2 -6
  107. package/dist/cli/commands/plan.js.map +1 -1
  108. package/dist/cli/commands/security.js +143 -0
  109. package/dist/cli/commands/security.js.map +1 -0
  110. package/dist/cli/commands/sessions.js +92 -0
  111. package/dist/cli/commands/sessions.js.map +1 -0
  112. package/dist/cli/commands/skills.js +1 -1
  113. package/dist/cli/commands/skills.js.map +1 -1
  114. package/dist/cli/commands/start.js +8 -0
  115. package/dist/cli/commands/start.js.map +1 -0
  116. package/dist/cli/commands/sync.js +52 -58
  117. package/dist/cli/commands/sync.js.map +1 -1
  118. package/dist/cli/commands/validate-plan.js +2 -6
  119. package/dist/cli/commands/validate-plan.js.map +1 -1
  120. package/dist/cli/copy/auth.json +9 -2
  121. package/dist/cli/copy/init.json +2 -6
  122. package/dist/cli/copy.js +0 -8
  123. package/dist/cli/copy.js.map +1 -1
  124. package/dist/cli/flows/clients.js +3 -94
  125. package/dist/cli/flows/clients.js.map +1 -1
  126. package/dist/cli/flows/completion.js +1 -6
  127. package/dist/cli/flows/completion.js.map +1 -1
  128. package/dist/cli/flows/dependencies.js +1 -18
  129. package/dist/cli/flows/dependencies.js.map +1 -1
  130. package/dist/cli/flows/onboarding.js +116 -0
  131. package/dist/cli/flows/onboarding.js.map +1 -0
  132. package/dist/cli/flows/sections.js +2 -10
  133. package/dist/cli/flows/sections.js.map +1 -1
  134. package/dist/cli/flows/user-config.js +5 -10
  135. package/dist/cli/flows/user-config.js.map +1 -1
  136. package/dist/cli/program.js +58 -0
  137. package/dist/cli/program.js.map +1 -0
  138. package/dist/cli/ui/render.js +2 -53
  139. package/dist/cli/ui/render.js.map +1 -1
  140. package/dist/cli/ui/report.js +0 -13
  141. package/dist/cli/ui/report.js.map +1 -1
  142. package/dist/cli.js +27 -31
  143. package/dist/cli.js.map +1 -1
  144. package/dist/config.js +27 -56
  145. package/dist/config.js.map +1 -1
  146. package/dist/core/docker.js +2 -0
  147. package/dist/core/docker.js.map +1 -0
  148. package/dist/core/environment.js +2 -0
  149. package/dist/core/environment.js.map +1 -0
  150. package/dist/core/lang.js +11 -0
  151. package/dist/core/lang.js.map +1 -0
  152. package/dist/core/messaging.js +2 -0
  153. package/dist/core/messaging.js.map +1 -0
  154. package/dist/core/repositories.js +2 -0
  155. package/dist/core/repositories.js.map +1 -0
  156. package/dist/core/types.js +0 -5
  157. package/dist/core/types.js.map +1 -1
  158. package/dist/gateway/config.js +13 -0
  159. package/dist/gateway/config.js.map +1 -0
  160. package/dist/gateway/edge-filter.js +55 -0
  161. package/dist/gateway/edge-filter.js.map +1 -0
  162. package/dist/gateway/index.js +176 -0
  163. package/dist/gateway/index.js.map +1 -0
  164. package/dist/gateway/middleware/auth.js +34 -0
  165. package/dist/gateway/middleware/auth.js.map +1 -0
  166. package/dist/gateway/services/login.js +112 -0
  167. package/dist/gateway/services/login.js.map +1 -0
  168. package/dist/gateway/services/security.js +99 -0
  169. package/dist/gateway/services/security.js.map +1 -0
  170. package/dist/lib/auth/backup-codes.js +46 -0
  171. package/dist/lib/auth/backup-codes.js.map +1 -0
  172. package/dist/lib/auth/gateway-client.js +86 -0
  173. package/dist/lib/auth/gateway-client.js.map +1 -0
  174. package/dist/lib/auth/gateway-process.js +54 -0
  175. package/dist/lib/auth/gateway-process.js.map +1 -0
  176. package/dist/lib/auth/gateway-token.js +26 -0
  177. package/dist/lib/auth/gateway-token.js.map +1 -0
  178. package/dist/lib/auth/nio-config.js +147 -0
  179. package/dist/lib/auth/nio-config.js.map +1 -0
  180. package/dist/lib/auth/otp.js +23 -0
  181. package/dist/lib/auth/otp.js.map +1 -0
  182. package/dist/lib/auth/password.js +23 -0
  183. package/dist/lib/auth/password.js.map +1 -0
  184. package/dist/lib/auth/session-store.js +49 -0
  185. package/dist/lib/auth/session-store.js.map +1 -0
  186. package/dist/lib/clients/autopull.js +8 -0
  187. package/dist/lib/clients/autopull.js.map +1 -0
  188. package/dist/lib/{client-configs.js → clients/client-configs.js} +113 -34
  189. package/dist/lib/clients/client-configs.js.map +1 -0
  190. package/dist/lib/clients/client-install.js +20 -0
  191. package/dist/lib/clients/client-install.js.map +1 -0
  192. package/dist/lib/{harness.js → clients/harness.js} +1 -16
  193. package/dist/lib/clients/harness.js.map +1 -0
  194. package/dist/lib/{hooks.js → clients/hooks.js} +5 -31
  195. package/dist/lib/clients/hooks.js.map +1 -0
  196. package/dist/lib/{targets.js → clients/targets.js} +17 -53
  197. package/dist/lib/clients/targets.js.map +1 -0
  198. package/dist/lib/colors.js +0 -24
  199. package/dist/lib/colors.js.map +1 -1
  200. package/dist/lib/cowork-extension.js +2 -25
  201. package/dist/lib/cowork-extension.js.map +1 -1
  202. package/dist/lib/debug.js +6 -0
  203. package/dist/lib/debug.js.map +1 -0
  204. package/dist/lib/{dependencies.js → deps/dependencies.js} +1 -26
  205. package/dist/lib/deps/dependencies.js.map +1 -0
  206. package/dist/lib/deps/dependency-install-project.js +27 -0
  207. package/dist/lib/deps/dependency-install-project.js.map +1 -0
  208. package/dist/lib/{dependency-install.js → deps/dependency-install.js} +10 -35
  209. package/dist/lib/deps/dependency-install.js.map +1 -0
  210. package/dist/lib/deps/dependency-installed.js +64 -0
  211. package/dist/lib/deps/dependency-installed.js.map +1 -0
  212. package/dist/lib/deps/dependency-scan.js +100 -0
  213. package/dist/lib/deps/dependency-scan.js.map +1 -0
  214. package/dist/lib/docker.js +50 -0
  215. package/dist/lib/docker.js.map +1 -0
  216. package/dist/lib/dotfiles.js +57 -0
  217. package/dist/lib/dotfiles.js.map +1 -0
  218. package/dist/lib/{exec-delegate.js → exec/exec-delegate.js} +4 -13
  219. package/dist/lib/exec/exec-delegate.js.map +1 -0
  220. package/dist/lib/{exec-engines.js → exec/exec-engines.js} +1 -10
  221. package/dist/lib/exec/exec-engines.js.map +1 -0
  222. package/dist/lib/{plan-delegate.js → exec/plan-delegate.js} +1 -7
  223. package/dist/lib/exec/plan-delegate.js.map +1 -0
  224. package/dist/lib/{validate-plan-delegate.js → exec/validate-plan-delegate.js} +2 -7
  225. package/dist/lib/exec/validate-plan-delegate.js.map +1 -0
  226. package/dist/lib/headroom.js +44 -0
  227. package/dist/lib/headroom.js.map +1 -0
  228. package/dist/lib/ide-tasks.js +54 -0
  229. package/dist/lib/ide-tasks.js.map +1 -0
  230. package/dist/lib/load-env.js +44 -0
  231. package/dist/lib/load-env.js.map +1 -0
  232. package/dist/lib/open-url.js +9 -0
  233. package/dist/lib/open-url.js.map +1 -0
  234. package/dist/lib/prompts.js +0 -13
  235. package/dist/lib/prompts.js.map +1 -1
  236. package/dist/lib/{provision-apply.js → provision/provision-apply.js} +4 -30
  237. package/dist/lib/provision/provision-apply.js.map +1 -0
  238. package/dist/lib/{provision-collect.js → provision/provision-collect.js} +0 -9
  239. package/dist/lib/provision/provision-collect.js.map +1 -0
  240. package/dist/lib/{provision.js → provision/provision.js} +4 -17
  241. package/dist/lib/provision/provision.js.map +1 -0
  242. package/dist/lib/{patterns.js → skills/patterns.js} +0 -13
  243. package/dist/lib/skills/patterns.js.map +1 -0
  244. package/dist/lib/{rules.js → skills/rules.js} +0 -22
  245. package/dist/lib/skills/rules.js.map +1 -0
  246. package/dist/lib/skills/sections.js +58 -0
  247. package/dist/lib/skills/sections.js.map +1 -0
  248. package/dist/lib/{skill-serve.js → skills/skill-serve.js} +1 -26
  249. package/dist/lib/skills/skill-serve.js.map +1 -0
  250. package/dist/lib/{skills-cache.js → skills/skills-cache.js} +15 -21
  251. package/dist/lib/skills/skills-cache.js.map +1 -0
  252. package/dist/lib/{skills.js → skills/skills.js} +3 -49
  253. package/dist/lib/skills/skills.js.map +1 -0
  254. package/dist/lib/spinner.js.map +1 -0
  255. package/dist/lib/telemetry.js +3 -20
  256. package/dist/lib/telemetry.js.map +1 -1
  257. package/dist/lib/version-check.js +0 -20
  258. package/dist/lib/version-check.js.map +1 -1
  259. package/dist/matrix-logo.js +43 -21
  260. package/dist/matrix-logo.js.map +1 -1
  261. package/dist/mcp-server-lang.js +39 -0
  262. package/dist/mcp-server-lang.js.map +1 -0
  263. package/dist/mcp-server.js +37 -41
  264. package/dist/mcp-server.js.map +1 -1
  265. package/dist/profiles/analyst.js +10 -0
  266. package/dist/profiles/analyst.js.map +1 -0
  267. package/dist/profiles/bi.js +9 -0
  268. package/dist/profiles/bi.js.map +1 -0
  269. package/dist/profiles/dba.js +21 -0
  270. package/dist/profiles/dba.js.map +1 -0
  271. package/dist/profiles/fullstack.js +9 -0
  272. package/dist/profiles/fullstack.js.map +1 -0
  273. package/dist/profiles/index.js +39 -0
  274. package/dist/profiles/index.js.map +1 -0
  275. package/dist/profiles/mcps.js +23 -0
  276. package/dist/profiles/mcps.js.map +1 -0
  277. package/dist/profiles/qa.js +10 -0
  278. package/dist/profiles/qa.js.map +1 -0
  279. package/dist/profiles/scientist.js +9 -0
  280. package/dist/profiles/scientist.js.map +1 -0
  281. package/dist/profiles/toolchains.js +9 -0
  282. package/dist/profiles/toolchains.js.map +1 -0
  283. package/dist/tools/delegate-exec.js +2 -2
  284. package/dist/tools/delegate-exec.js.map +1 -1
  285. package/dist/tools/env-detect-deps.js +54 -0
  286. package/dist/tools/env-detect-deps.js.map +1 -0
  287. package/dist/tools/env-materialize.js +43 -0
  288. package/dist/tools/env-materialize.js.map +1 -0
  289. package/dist/tools/exec-status.js +1 -1
  290. package/dist/tools/exec-status.js.map +1 -1
  291. package/dist/tools/index.js +12 -32
  292. package/dist/tools/index.js.map +1 -1
  293. package/dist/tools/lang-recipe.js +31 -0
  294. package/dist/tools/lang-recipe.js.map +1 -0
  295. package/dist/tools/lang-reference.js +34 -0
  296. package/dist/tools/lang-reference.js.map +1 -0
  297. package/dist/tools/plan.js +2 -2
  298. package/dist/tools/plan.js.map +1 -1
  299. package/dist/tools/profile-get.js +57 -0
  300. package/dist/tools/profile-get.js.map +1 -0
  301. package/dist/tools/session-activate.js +35 -0
  302. package/dist/tools/session-activate.js.map +1 -0
  303. package/dist/tools/session-create.js +83 -0
  304. package/dist/tools/session-create.js.map +1 -0
  305. package/dist/tools/session-list.js +29 -0
  306. package/dist/tools/session-list.js.map +1 -0
  307. package/dist/tools/session-shared.js +25 -0
  308. package/dist/tools/session-shared.js.map +1 -0
  309. package/dist/tools/validate-plan.js +2 -2
  310. package/dist/tools/validate-plan.js.map +1 -1
  311. package/dist/tui/app.js +116 -0
  312. package/dist/tui/app.js.map +1 -0
  313. package/dist/tui/components.js +0 -0
  314. package/dist/tui/components.js.map +1 -0
  315. package/dist/tui/debug.js +17 -0
  316. package/dist/tui/debug.js.map +1 -0
  317. package/dist/tui/index.js +2 -0
  318. package/dist/tui/index.js.map +1 -0
  319. package/dist/tui/launch.js +64 -0
  320. package/dist/tui/launch.js.map +1 -0
  321. package/dist/tui/markdown.js +40 -0
  322. package/dist/tui/markdown.js.map +1 -0
  323. package/dist/tui/opencode.js +28 -0
  324. package/dist/tui/opencode.js.map +1 -0
  325. package/dist/tui/palette-source.js +71 -0
  326. package/dist/tui/palette-source.js.map +1 -0
  327. package/dist/tui/palette.js +100 -0
  328. package/dist/tui/palette.js.map +1 -0
  329. package/dist/tui/state.js +105 -0
  330. package/dist/tui/state.js.map +1 -0
  331. package/dist/tui/theme.js +14 -0
  332. package/dist/tui/theme.js.map +1 -0
  333. package/docker/docker-compose.yml +44 -0
  334. package/headroom/docker-compose.yml +27 -0
  335. package/package.json +40 -16
  336. package/dist/adapters/supabase/allocation-gateway.js +0 -236
  337. package/dist/adapters/supabase/allocation-gateway.js.map +0 -1
  338. package/dist/adapters/supabase/analytics-gateway.js +0 -18
  339. package/dist/adapters/supabase/analytics-gateway.js.map +0 -1
  340. package/dist/adapters/supabase/client.js +0 -96
  341. package/dist/adapters/supabase/client.js.map +0 -1
  342. package/dist/adapters/supabase/context-gateway.js +0 -23
  343. package/dist/adapters/supabase/context-gateway.js.map +0 -1
  344. package/dist/adapters/supabase/gateway.js +0 -18
  345. package/dist/adapters/supabase/gateway.js.map +0 -1
  346. package/dist/adapters/supabase/task-gateway.js +0 -450
  347. package/dist/adapters/supabase/task-gateway.js.map +0 -1
  348. package/dist/auth.js +0 -118
  349. package/dist/auth.js.map +0 -1
  350. package/dist/cli/commands/init/project-step.js +0 -105
  351. package/dist/cli/commands/init/project-step.js.map +0 -1
  352. package/dist/constants.js +0 -9
  353. package/dist/constants.js.map +0 -1
  354. package/dist/core/ports.js +0 -2
  355. package/dist/core/ports.js.map +0 -1
  356. package/dist/database.types.js +0 -11
  357. package/dist/database.types.js.map +0 -1
  358. package/dist/lib/active-project.js +0 -28
  359. package/dist/lib/active-project.js.map +0 -1
  360. package/dist/lib/autopull.js +0 -13
  361. package/dist/lib/autopull.js.map +0 -1
  362. package/dist/lib/client-configs.js.map +0 -1
  363. package/dist/lib/client-install.js +0 -40
  364. package/dist/lib/client-install.js.map +0 -1
  365. package/dist/lib/dependencies.js.map +0 -1
  366. package/dist/lib/dependency-install.js.map +0 -1
  367. package/dist/lib/exec-delegate.js.map +0 -1
  368. package/dist/lib/exec-engines.js.map +0 -1
  369. package/dist/lib/harness.js.map +0 -1
  370. package/dist/lib/hooks.js.map +0 -1
  371. package/dist/lib/patterns.js.map +0 -1
  372. package/dist/lib/plan-delegate.js.map +0 -1
  373. package/dist/lib/project-context.js +0 -151
  374. package/dist/lib/project-context.js.map +0 -1
  375. package/dist/lib/provision-apply.js.map +0 -1
  376. package/dist/lib/provision-collect.js.map +0 -1
  377. package/dist/lib/provision.js.map +0 -1
  378. package/dist/lib/require-config.js +0 -32
  379. package/dist/lib/require-config.js.map +0 -1
  380. package/dist/lib/rules.js.map +0 -1
  381. package/dist/lib/sections.js +0 -89
  382. package/dist/lib/sections.js.map +0 -1
  383. package/dist/lib/skill-serve.js.map +0 -1
  384. package/dist/lib/skills-cache.js.map +0 -1
  385. package/dist/lib/skills.js.map +0 -1
  386. package/dist/lib/targets.js.map +0 -1
  387. package/dist/lib/task-history.js +0 -15
  388. package/dist/lib/task-history.js.map +0 -1
  389. package/dist/lib/validate-plan-delegate.js.map +0 -1
  390. package/dist/session-factory.js +0 -19
  391. package/dist/session-factory.js.map +0 -1
  392. package/dist/spinner.js.map +0 -1
  393. package/dist/tools/comment-task.js +0 -72
  394. package/dist/tools/comment-task.js.map +0 -1
  395. package/dist/tools/create-task.js +0 -129
  396. package/dist/tools/create-task.js.map +0 -1
  397. package/dist/tools/end-allocation.js +0 -38
  398. package/dist/tools/end-allocation.js.map +0 -1
  399. package/dist/tools/end-task-allocation.js +0 -37
  400. package/dist/tools/end-task-allocation.js.map +0 -1
  401. package/dist/tools/get-active-allocation.js +0 -69
  402. package/dist/tools/get-active-allocation.js.map +0 -1
  403. package/dist/tools/get-context.js +0 -48
  404. package/dist/tools/get-context.js.map +0 -1
  405. package/dist/tools/get-task.js +0 -137
  406. package/dist/tools/get-task.js.map +0 -1
  407. package/dist/tools/list-my-allocations.js +0 -71
  408. package/dist/tools/list-my-allocations.js.map +0 -1
  409. package/dist/tools/list-projects.js +0 -38
  410. package/dist/tools/list-projects.js.map +0 -1
  411. package/dist/tools/list-tasks.js +0 -93
  412. package/dist/tools/list-tasks.js.map +0 -1
  413. package/dist/tools/move-task.js +0 -82
  414. package/dist/tools/move-task.js.map +0 -1
  415. package/dist/tools/record-delivery.js +0 -71
  416. package/dist/tools/record-delivery.js.map +0 -1
  417. package/dist/tools/set-project.js +0 -52
  418. package/dist/tools/set-project.js.map +0 -1
  419. package/dist/tools/start-allocation.js +0 -32
  420. package/dist/tools/start-allocation.js.map +0 -1
  421. package/dist/tools/start-task-allocation.js +0 -75
  422. package/dist/tools/start-task-allocation.js.map +0 -1
  423. package/dist/tools/update-task.js +0 -139
  424. package/dist/tools/update-task.js.map +0 -1
  425. /package/dist/{spinner.js → lib/spinner.js} +0 -0
@@ -0,0 +1,385 @@
1
+ import { existsSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { spawnSync } from "node:child_process";
4
+ import { brand } from "../../brand.js";
5
+ import { c, sym, section, link } from "../../lib/colors.js";
6
+ import { input, confirm } from "../../lib/prompts.js";
7
+ import { CLUSTER_STACK, DOCKER_MCP_URL, PORTAINER_URL, dockerAvailable, infraComposePath, mcpGatewayHealthy, portainerHealthy, unreachableDocker, } from "../../lib/docker.js";
8
+ import { upsertOpencodeMcp } from "../../lib/clients/client-configs.js";
9
+ import { isBinaryInstalled } from "../../lib/clients/client-install.js";
10
+ import { ensureHeadroomRunning, headroomCompose, headroomHealthy, HEADROOM_URL, } from "../../lib/headroom.js";
11
+ import { openUrl } from "../../lib/open-url.js";
12
+ import { loadSession } from "../../lib/auth/session-store.js";
13
+ import { createSessionRepository } from "../../adapters/pg/session-repository.js";
14
+ import { createDockerGateway } from "../../adapters/docker/docker-gateway.js";
15
+ import { buildClusterPrompt, buildDebugPrompt, buildOrquestPrompt, collectDebugContext, parseScaleArg, parseStackServices, persistClusterState, readClusterState, runOperator, } from "../../app/docker-manager.js";
16
+ import { dockerGatewayMcp } from "../../profiles/mcps.js";
17
+ function requireDocker() {
18
+ if (!dockerAvailable()) {
19
+ console.error(`${c.red(sym.err)} ${unreachableDocker().message}`);
20
+ process.exit(1);
21
+ }
22
+ }
23
+ async function requireActiveSession() {
24
+ const stored = await loadSession();
25
+ if (!stored) {
26
+ console.error(`${c.yellow(sym.warn)} Não autenticado. Rode ${c.cyan(`${brand.name} login`)}.`);
27
+ process.exit(1);
28
+ }
29
+ let session;
30
+ try {
31
+ session = await createSessionRepository().findActiveByUser(stored.userId);
32
+ }
33
+ catch (err) {
34
+ console.error(`${c.red(sym.err)} Falha no banco: ${err.message}`);
35
+ process.exit(1);
36
+ throw err;
37
+ }
38
+ if (!session) {
39
+ console.error(`${c.yellow(sym.warn)} Nenhuma sessão ativa. Rode ${c.cyan(`${brand.name} init`)} ou ` +
40
+ `${c.cyan(`${brand.name} sessions activate <id>`)}.`);
41
+ process.exit(1);
42
+ }
43
+ return session;
44
+ }
45
+ function requireOperator() {
46
+ if (!isBinaryInstalled("opencode")) {
47
+ console.error(`${c.yellow(sym.warn)} OpenCode não encontrado no PATH — \`nio docker debug/orquest/cluster\` ` +
48
+ `dependem dele. Instale com \`npm i -g opencode-ai\`.`);
49
+ process.exit(1);
50
+ }
51
+ }
52
+ function infraCompose(args) {
53
+ const res = spawnSync("docker", ["compose", "-f", infraComposePath(), ...args], {
54
+ stdio: "inherit",
55
+ });
56
+ return res.status ?? 1;
57
+ }
58
+ async function headroomUp() {
59
+ section("Headroom", "proxy de compressão de contexto");
60
+ const r = await ensureHeadroomRunning();
61
+ if (!r.ok) {
62
+ console.error(`${c.red(sym.err)} ${r.error}`);
63
+ process.exit(1);
64
+ }
65
+ console.log(` ${c.green(sym.ok)} Headroom no ar ${c.dim(HEADROOM_URL)}${r.started ? "" : " (já estava)"}`);
66
+ }
67
+ async function headroomDown() {
68
+ requireDocker();
69
+ section("Headroom", "derrubando o container");
70
+ headroomCompose(["down"]);
71
+ }
72
+ async function headroomStatus() {
73
+ const up = await headroomHealthy();
74
+ console.log(` ${up ? c.green(sym.ok) : c.red(sym.err)} Headroom ${c.dim(HEADROOM_URL)} — ${up ? "no ar" : "fora"}`);
75
+ }
76
+ async function toolkitUp() {
77
+ requireDocker();
78
+ section("Docker toolkit", "subindo MCP Gateway + Portainer");
79
+ if (infraCompose(["up", "-d"]) !== 0) {
80
+ console.error(`${c.red(sym.err)} Falha ao subir a infra (\`docker compose\` saiu != 0).`);
81
+ process.exit(1);
82
+ }
83
+ try {
84
+ const r = upsertOpencodeMcp(dockerGatewayMcp);
85
+ const msg = { created: "criado", updated: "atualizado", already_configured: "já estava" }[r.status];
86
+ console.log(` ${c.green(sym.ok)} opencode.json — MCP \`docker\` ${msg} (${c.dim(DOCKER_MCP_URL)})`);
87
+ if (r.backup)
88
+ console.log(` ${c.dim(`backup: ${r.backup}`)}`);
89
+ }
90
+ catch (err) {
91
+ console.warn(` ${c.yellow(sym.warn)} não consegui registrar o MCP no opencode.json: ${err.message}`);
92
+ }
93
+ const [gw, pt] = await Promise.all([mcpGatewayHealthy(), portainerHealthy()]);
94
+ console.log("");
95
+ console.log(` ${gw ? c.green(sym.ok) : c.yellow(sym.warn)} MCP Gateway ${c.dim(DOCKER_MCP_URL)}`);
96
+ console.log(` ${pt ? c.green(sym.ok) : c.yellow(sym.warn)} Portainer ${c.dim(PORTAINER_URL)}`);
97
+ console.log("");
98
+ console.log(c.dim(` 1º acesso ao Portainer pede setup de admin — abra ${PORTAINER_URL} e crie o usuário.`));
99
+ console.log(c.dim(` reinicie o \`opencode\` da sessão pra ele pegar as tools Docker.`));
100
+ }
101
+ async function toolkitDown() {
102
+ requireDocker();
103
+ section("Docker toolkit", "derrubando MCP Gateway + Portainer");
104
+ infraCompose(["down"]);
105
+ try {
106
+ const r = upsertOpencodeMcp(dockerGatewayMcp, { remove: true });
107
+ if (r.status !== "already_configured") {
108
+ console.log(` ${c.green(sym.ok)} MCP \`docker\` desabilitado no opencode.json`);
109
+ }
110
+ }
111
+ catch {
112
+ }
113
+ }
114
+ async function toolkitStatus() {
115
+ requireDocker();
116
+ section("Docker toolkit", "status");
117
+ infraCompose(["ps"]);
118
+ const [gw, pt] = await Promise.all([mcpGatewayHealthy(), portainerHealthy()]);
119
+ console.log("");
120
+ console.log(` ${gw ? c.green(sym.ok) : c.red(sym.err)} MCP Gateway ${c.dim(DOCKER_MCP_URL)}`);
121
+ console.log(` ${pt ? c.green(sym.ok) : c.red(sym.err)} Portainer ${c.dim(PORTAINER_URL)}`);
122
+ }
123
+ function reportResult(res, whatFailed) {
124
+ if (res.status === "unavailable") {
125
+ console.error(`${c.red(sym.err)} ${res.error}`);
126
+ process.exit(1);
127
+ }
128
+ if (res.status === "failed") {
129
+ console.error(`${c.red(sym.err)} ${whatFailed}: ${res.error}`);
130
+ process.exit(1);
131
+ }
132
+ if (res.stdout)
133
+ console.log(res.stdout);
134
+ }
135
+ const COMPOSE_ACTIONS = ["up", "down", "restart", "ps", "logs"];
136
+ async function runCompose(action, service, opts) {
137
+ requireDocker();
138
+ if (!COMPOSE_ACTIONS.includes(action)) {
139
+ console.error(`${c.red(sym.err)} ação inválida "${action}" — use: ${COMPOSE_ACTIONS.join(" | ")}`);
140
+ process.exit(1);
141
+ }
142
+ const file = opts.file ? resolve(opts.file) : undefined;
143
+ if (file && !existsSync(file)) {
144
+ console.error(`${c.red(sym.err)} compose file não encontrado: ${file}`);
145
+ process.exit(1);
146
+ }
147
+ section("docker compose", `${action}${service ? ` ${service}` : ""}${file ? ` (${file})` : ""}`);
148
+ const res = await createDockerGateway().compose(action, {
149
+ file,
150
+ detach: opts.detach,
151
+ build: opts.build,
152
+ service,
153
+ tail: opts.tail ? Number(opts.tail) : undefined,
154
+ });
155
+ reportResult(res, `docker compose ${action}`);
156
+ }
157
+ function splitList(v) {
158
+ return (v ?? "").split(",").map((s) => s.trim()).filter(Boolean);
159
+ }
160
+ async function runCreate(opts) {
161
+ requireDocker();
162
+ section("docker create", "novo container");
163
+ const image = opts.image?.trim() ||
164
+ (await input({
165
+ message: "Imagem (ex.: redis:7, node:20)",
166
+ validate: (v) => v.trim().length > 0 || "obrigatório",
167
+ })).trim();
168
+ const interactive = !opts.image && process.stdout.isTTY;
169
+ const name = opts.name?.trim() ||
170
+ (interactive ? (await input({ message: "Nome do container (opcional)", default: "" })).trim() : "");
171
+ const ports = opts.port
172
+ ? splitList(opts.port)
173
+ : interactive
174
+ ? splitList(await input({ message: "Portas host:container, separadas por vírgula (opcional)", default: "" }))
175
+ : [];
176
+ const env = Object.fromEntries((opts.env
177
+ ? splitList(opts.env)
178
+ : interactive
179
+ ? splitList(await input({ message: "Env KEY=VALUE, separadas por vírgula (opcional)", default: "" }))
180
+ : [])
181
+ .map((pair) => pair.split("="))
182
+ .filter((kv) => kv.length === 2)
183
+ .map(([k, v]) => [k.trim(), v.trim()]));
184
+ const volumes = opts.volume
185
+ ? splitList(opts.volume)
186
+ : interactive
187
+ ? splitList(await input({ message: "Volumes host:container, separados por vírgula (opcional)", default: "" }))
188
+ : [];
189
+ const spec = {
190
+ image,
191
+ name: name || undefined,
192
+ ports: ports.length ? ports : undefined,
193
+ env: Object.keys(env).length ? env : undefined,
194
+ volumes: volumes.length ? volumes : undefined,
195
+ detach: opts.detach ?? true,
196
+ };
197
+ console.log(` ${c.dim(`docker run ${spec.detach ? "-d " : ""}${name ? `--name ${name} ` : ""}${image}`)}`);
198
+ const ok = opts.yes === true ||
199
+ (interactive && (await confirm({ message: "Criar e subir o container?", default: true })));
200
+ if (!ok) {
201
+ console.log(c.dim(interactive ? "cancelado." : "sem TTY — passe `-y` pra criar sem confirmação."));
202
+ return;
203
+ }
204
+ reportResult(await createDockerGateway().run(spec), "docker run");
205
+ }
206
+ async function runDebug(container, opts) {
207
+ requireDocker();
208
+ const gateway = createDockerGateway();
209
+ if (!container) {
210
+ section("docker debug", "nenhum container informado — containers do host:");
211
+ reportResult(await gateway.ps(true), "docker ps");
212
+ console.log(c.dim(`\n rode \`${brand.name} docker debug <nome|id>\``));
213
+ return;
214
+ }
215
+ if (!opts.json)
216
+ requireOperator();
217
+ const ctx = await collectDebugContext(gateway, container);
218
+ if (opts.json) {
219
+ console.log(JSON.stringify(ctx, null, 2));
220
+ return;
221
+ }
222
+ section("docker debug", `${container} — entregando pro operador`);
223
+ const code = await runOperator(buildDebugPrompt(ctx));
224
+ if (code !== 0)
225
+ process.exitCode = code;
226
+ }
227
+ async function runOrquest(instruction, opts) {
228
+ requireDocker();
229
+ requireOperator();
230
+ const session = await requireActiveSession();
231
+ const task = instruction?.trim() ||
232
+ (await input({
233
+ message: "O que orquestrar? (linguagem natural)",
234
+ validate: (v) => v.trim().length > 0 || "descreva a tarefa",
235
+ })).trim();
236
+ section("docker orquest", opts.dryRun ? `${task} (dry-run)` : task);
237
+ const code = await runOperator(buildOrquestPrompt(task, session.projectPath, Boolean(opts.dryRun)), { cwd: session.projectPath });
238
+ if (code !== 0)
239
+ process.exitCode = code;
240
+ }
241
+ const CLUSTER_ACTIONS = ["up", "down", "status", "scale"];
242
+ async function runCluster(action, arg, opts) {
243
+ requireDocker();
244
+ if (!CLUSTER_ACTIONS.includes(action)) {
245
+ console.error(`${c.red(sym.err)} ação inválida "${action}" — use: ${CLUSTER_ACTIONS.join(" | ")}`);
246
+ process.exit(1);
247
+ }
248
+ const session = await requireActiveSession();
249
+ const gateway = createDockerGateway();
250
+ const repo = createSessionRepository();
251
+ if (action === "status") {
252
+ section("docker cluster", `stack ${CLUSTER_STACK}`);
253
+ const live = await gateway.stackServices(CLUSTER_STACK);
254
+ if (live.status !== "ok") {
255
+ console.log(c.dim(" stack não encontrada (nunca deployada, ou Swarm inativo)."));
256
+ }
257
+ else {
258
+ for (const s of parseStackServices(live.stdout ?? "")) {
259
+ console.log(` ${c.green(sym.dot)} ${s.name} ${c.dim(s.replicas)}`);
260
+ }
261
+ }
262
+ const persisted = readClusterState(session);
263
+ if (persisted) {
264
+ console.log(c.dim(`\n persistido: ${persisted.services.length} serviço(s), deploy ${persisted.deployedAt}`));
265
+ }
266
+ return;
267
+ }
268
+ if (action === "down") {
269
+ section("docker cluster", `removendo stack ${CLUSTER_STACK}`);
270
+ reportResult(await gateway.stackRm(CLUSTER_STACK), "docker stack rm");
271
+ await persistClusterState(repo, session, null).catch(() => { });
272
+ console.log(` ${c.green(sym.ok)} estado limpo em ${brand.projectConfigFile} (sessão)`);
273
+ return;
274
+ }
275
+ if (action === "scale") {
276
+ const parsed = arg ? parseScaleArg(arg) : null;
277
+ if (!parsed) {
278
+ console.error(`${c.red(sym.err)} use \`${brand.name} docker cluster scale <servico>=<n>\``);
279
+ process.exit(1);
280
+ }
281
+ section("docker cluster", `scale ${parsed.service}=${parsed.replicas}`);
282
+ reportResult(await gateway.serviceScale(`${CLUSTER_STACK}_${parsed.service}`, parsed.replicas), "docker service scale");
283
+ return;
284
+ }
285
+ requireOperator();
286
+ const instruction = arg?.trim() ||
287
+ (await input({
288
+ message: "O que subir no cluster? (ex.: api + worker + redis + postgres)",
289
+ validate: (v) => v.trim().length > 0 || "descreva os serviços",
290
+ })).trim();
291
+ section("docker cluster", `up — ${instruction}`);
292
+ const init = await gateway.swarmInit();
293
+ if (init.status === "failed") {
294
+ console.error(`${c.red(sym.err)} docker swarm init: ${init.error}`);
295
+ process.exit(1);
296
+ }
297
+ const code = await runOperator(buildClusterPrompt(instruction, session.projectPath), {
298
+ cwd: session.projectPath,
299
+ });
300
+ if (code !== 0) {
301
+ console.warn(`${c.yellow(sym.warn)} operador saiu com código ${code} — validando o estado real...`);
302
+ }
303
+ const live = await gateway.stackServices(CLUSTER_STACK);
304
+ const services = live.status === "ok" ? parseStackServices(live.stdout ?? "").map((s) => s.name) : [];
305
+ if (services.length === 0) {
306
+ console.error(`${c.red(sym.err)} nenhum serviço na stack ${CLUSTER_STACK} — o deploy não completou.`);
307
+ process.exit(1);
308
+ }
309
+ await persistClusterState(repo, session, {
310
+ stack: CLUSTER_STACK,
311
+ services,
312
+ composePath: "(gerado pelo operador)",
313
+ deployedAt: new Date().toISOString(),
314
+ }).catch((err) => console.warn(`${c.yellow(sym.warn)} não persisti o estado: ${err.message}`));
315
+ console.log(`\n ${c.green(sym.ok)} stack ${CLUSTER_STACK} — ${services.length} serviço(s): ${services.join(", ")}`);
316
+ }
317
+ async function runPortainer(opts) {
318
+ if (opts.url) {
319
+ console.log(PORTAINER_URL);
320
+ return;
321
+ }
322
+ if (!(await portainerHealthy())) {
323
+ console.error(`${c.yellow(sym.warn)} Portainer não está no ar. Rode ${c.cyan(`${brand.name} docker toolkit up`)}.`);
324
+ process.exit(1);
325
+ }
326
+ console.log(`${c.green(sym.ok)} Abrindo ${link(PORTAINER_URL)}`);
327
+ openUrl(PORTAINER_URL);
328
+ }
329
+ export function registerDockerCommand(program) {
330
+ const cmd = program
331
+ .command("docker")
332
+ .description("Camada Docker: MCP Gateway + Portainer, compose, debug e cluster (Swarm)");
333
+ const toolkit = cmd
334
+ .command("toolkit")
335
+ .description("Infra NIO: Docker MCP Gateway + Portainer (docker/docker-compose.yml)");
336
+ toolkit.command("up", { isDefault: true }).description("Sobe a infra e registra o gateway no opencode.json").action(toolkitUp);
337
+ toolkit.command("down").description("Derruba a infra e desabilita o MCP no opencode.json").action(toolkitDown);
338
+ toolkit.command("status").description("Estado dos containers + health dos endpoints").action(toolkitStatus);
339
+ const headroom = cmd
340
+ .command("headroom")
341
+ .description("Proxy de compressão de contexto — obrigatório pro `nio ai` (ADR 0007)");
342
+ headroom.command("up", { isDefault: true }).description("Sobe o container do Headroom").action(headroomUp);
343
+ headroom.command("down").description("Derruba o container do Headroom").action(headroomDown);
344
+ headroom.command("status").description("O Headroom está no ar?").action(headroomStatus);
345
+ cmd
346
+ .command("compose <action> [service]")
347
+ .description(`Wrapper sobre \`docker compose\` do projeto (${COMPOSE_ACTIONS.join("|")})`)
348
+ .option("-f, --file <path>", "compose file (default: ./docker-compose.yml)")
349
+ .option("-d, --detach", "up em background (default)")
350
+ .option("--no-detach", "up em foreground")
351
+ .option("--build", "up com rebuild das imagens")
352
+ .option("--tail <n>", "linhas de logs")
353
+ .action(runCompose);
354
+ cmd
355
+ .command("create")
356
+ .description("Cria e sobe um container (wizard ou flags)")
357
+ .option("--image <ref>", "imagem (pula o wizard)")
358
+ .option("--name <name>", "nome do container")
359
+ .option("--port <list>", "portas host:container separadas por vírgula")
360
+ .option("--env <list>", "env KEY=VALUE separadas por vírgula")
361
+ .option("--volume <list>", "volumes host:container separados por vírgula")
362
+ .option("--no-detach", "roda em foreground")
363
+ .option("-y, --yes", "não pede confirmação")
364
+ .action(runCreate);
365
+ cmd
366
+ .command("debug [container]")
367
+ .description("Coleta o contexto de um container e entrega o diagnóstico pro operador de IA")
368
+ .option("--json", "só imprime o contexto coletado (ps/logs/inspect)")
369
+ .action(runDebug);
370
+ cmd
371
+ .command("orquest [instruction]")
372
+ .description("Orquestra os serviços do projeto via compose, dirigido pelo operador (linguagem natural)")
373
+ .option("--dry-run", "gera o compose e mostra, sem aplicar")
374
+ .action(runOrquest);
375
+ cmd
376
+ .command("cluster <action> [arg]")
377
+ .description(`Docker Swarm — stack \`${CLUSTER_STACK}\` (${CLUSTER_ACTIONS.join("|")})`)
378
+ .action(runCluster);
379
+ cmd
380
+ .command("portainer")
381
+ .description("Abre o Portainer no navegador")
382
+ .option("--url", "só imprime a URL")
383
+ .action(runPortainer);
384
+ }
385
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/cli/commands/docker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ export const TAGLINE = 'Orquestrador de ambientes de desenvolvimento — perfil + wizard, e a CLI (com IA via MCP) materializa toolchains, linguagens, frameworks, dotfiles e IDE.';
2
+ export const SECTIONS = [
3
+ {
4
+ id: 'o-que-e',
5
+ title: 'O que é',
6
+ blocks: [
7
+ {
8
+ kind: 'p',
9
+ text: 'A NIO-CLI monta ambientes de desenvolvimento reproduzíveis. Você escolhe um perfil (fullstack, analyst, scientist, dba, qa, bi), responde um wizard, e a CLI garante os toolchains, resolve os MCPs, escreve dotfiles/aliases e abre a IDE.',
10
+ },
11
+ {
12
+ kind: 'p',
13
+ text: 'A entidade central é a Sessão: um ambiente isolado com UUID, persistido no Postgres. Uma sessão ativa por usuário por vez; sessões antigas ficam no banco e podem ser reativadas.',
14
+ },
15
+ {
16
+ kind: 'p',
17
+ text: 'O Postgres é a fonte da verdade. A CLI e o gateway só falam com o banco que VOCÊ configurar — não há default silencioso nem banco embutido no pacote.',
18
+ },
19
+ ],
20
+ },
21
+ {
22
+ id: 'como-funciona',
23
+ title: 'Como funciona',
24
+ blocks: [
25
+ {
26
+ kind: 'code',
27
+ text: [
28
+ 'você → nio (CLI) ──► nio-gateway ──► Postgres login: senha + JWT (2º fator opcional)',
29
+ ' │',
30
+ ' ├──► SessionManager / EnvironmentBuilder materializa toolchains, MCPs, dotfiles',
31
+ ' │',
32
+ ' └──► opencode.json ──► OpenCode (operador de IA)',
33
+ ' └── MCP nio (tools nio_*) ──► SessionManager ──► Postgres',
34
+ ].join('\n'),
35
+ },
36
+ {
37
+ kind: 'list',
38
+ items: [
39
+ 'Autenticação — `nio register` / `nio login`. O nio-gateway (serviço HTTP loopback) verifica a senha (argon2id), dispara o 2º fator se ativo, e devolve um JWT salvo em ~/.nio/session.json.',
40
+ 'Sessão — `nio init`. O wizard pergunta perfil + recipe; o EnvironmentBuilder garante os toolchains, resolve os MCPs e grava o config materializado na linha `sessions` do Postgres.',
41
+ 'Handoff — `nio ai` sobe o Headroom (proxy de compressão, container Docker, obrigatório — ADR 0007), aponta o provider pra ele, sobe o `opencode serve` headless (opencode/big-pickle, MCP nio + MCPs do perfil) e abre a interface NIO (Ink) — chat, sidebar e paleta `/`. Com IDE, roda num terminal integrado dela.',
42
+ ],
43
+ },
44
+ {
45
+ kind: 'p',
46
+ text: 'O nio-gateway só é necessário pros comandos de auth. Todo o resto (init, sessions, tools MCP) fala com o Postgres direto usando o JWT local.',
47
+ },
48
+ ],
49
+ },
50
+ {
51
+ id: 'instalacao',
52
+ title: 'Instalação e pré-requisitos',
53
+ blocks: [
54
+ { kind: 'code', text: 'npm i -g @nio-cli/cli' },
55
+ {
56
+ kind: 'p',
57
+ text: 'Precisa de Node.js 20.12+. Ficam no PATH: nio (CLI), nio-gateway (auth), nio-cli e nio-lang (servidores MCP).',
58
+ },
59
+ {
60
+ kind: 'table',
61
+ head: ['Requisito', 'Pra quê'],
62
+ rows: [
63
+ ['PostgreSQL alcançável', 'fonte da verdade — schema de db/schema.sql aplicado uma vez'],
64
+ ['JWT_SECRET (segredo do time)', 'assinar/validar as sessões — mesmo valor em toda máquina'],
65
+ ['OpenCode', 'operador de IA — o `nio init` oferece instalar'],
66
+ ['Docker', 'obrigatório pro `nio ai` — roda o Headroom (proxy de compressão) em container'],
67
+ ['provedor de SMS (opcional)', '2º fator — SMS_ENDPOINT_URL + SMS_AUTH_HEADER + SMS_BODY_TEMPLATE'],
68
+ ],
69
+ },
70
+ ],
71
+ },
72
+ {
73
+ id: 'config',
74
+ title: 'Configuração',
75
+ blurb: 'Você não precisa exportar nada no shell.',
76
+ blocks: [
77
+ {
78
+ kind: 'p',
79
+ text: '`nio config setup` — wizard que pede o `NIO_DATABASE_URL` (o time te passa) e o `JWT_SECRET`, testa a conexão e grava em ~/.nio/config.env (chmod 600). `nio init`/`register`/`login` disparam esse wizard sozinhos se a config faltar; se estiver errada, param dizendo o quê.',
80
+ },
81
+ {
82
+ kind: 'code',
83
+ text: [
84
+ 'nio config setup wizard (cola os valores, testa, salva)',
85
+ 'nio config check completa? banco responde? (--json pra CI)',
86
+ 'nio config path ~/.nio/config.env',
87
+ ].join('\n'),
88
+ },
89
+ {
90
+ kind: 'p',
91
+ text: 'Precedência ao carregar: env do shell > $NIO_ENV_FILE > ./.env > ~/.nio/config.env.',
92
+ },
93
+ {
94
+ kind: 'table',
95
+ head: ['Variável', 'Lida por'],
96
+ rows: [
97
+ ['NIO_DATABASE_URL / NIO_DATABASE_SSL', 'tudo que toca o banco'],
98
+ ['JWT_SECRET / JWT_EXPIRES_IN (sem prefixo)', 'nio-gateway + nio-cli'],
99
+ ['SMS_* (sem prefixo)', 'nio-gateway'],
100
+ ['NIO_GATEWAY_HOST (default 127.0.0.1)', 'nio-gateway — 0.0.0.0 p/ Kong em container'],
101
+ ['NIO_GATEWAY_URL (default http://127.0.0.1:3000)', 'a CLI acha o nio-gateway. Kong na frente? aponta pra :8000'],
102
+ ],
103
+ },
104
+ ],
105
+ },
106
+ {
107
+ id: 'primeiros-passos',
108
+ title: 'Primeiros passos',
109
+ blocks: [
110
+ {
111
+ kind: 'p',
112
+ text: 'Um comando só: `nio` (sem argumentos) ou `nio start`. A esteira detecta em que ponto você está e conduz — config → gateway → login → sessão → handoff pro OpenCode —, perguntando antes de cada passo. Se você sair no meio, ela imprime a linha pra retomar; nada morre no silêncio.',
113
+ },
114
+ {
115
+ kind: 'p',
116
+ text: 'Por dentro, a esteira faz (e você pode rodar cada um na mão):',
117
+ },
118
+ {
119
+ kind: 'code',
120
+ text: [
121
+ 'nio config setup # cola NIO_DATABASE_URL + JWT_SECRET, testa, salva',
122
+ 'nio-gateway # gateway de auth (a esteira sobe sozinha se faltar)',
123
+ 'nio register # cria seu usuário na base compartilhada → cai no login',
124
+ 'nio login # salva o JWT em ~/.nio/session.json',
125
+ 'nio security enable-2fa # (opcional) 2º fator',
126
+ 'nio init # monta o ambiente da sessão → abre o OpenCode',
127
+ ].join('\n'),
128
+ },
129
+ { kind: 'p', text: 'A qualquer momento, `nio debug` mostra o que está ok e o que falta.' },
130
+ ],
131
+ },
132
+ {
133
+ id: 'arquitetura',
134
+ title: 'Como é construída',
135
+ blurb: 'Hexagonal — o núcleo não conhece IO; os adapters implementam os contratos.',
136
+ blocks: [
137
+ {
138
+ kind: 'code',
139
+ text: [
140
+ 'entrypoints: src/cli.ts (nio) src/gateway/index.ts (nio-gateway)',
141
+ ' src/mcp-server.ts (nio-cli) src/mcp-server-lang.ts (nio-lang)',
142
+ 'app: SessionManager · EnvironmentBuilder · DependencyWatcher · DockerManager',
143
+ 'core/: entidades + ports (interfaces, sem IO nenhum)',
144
+ 'adapters/: pg/ (Postgres) ide/ pkg/ (npm,pip,…) docker/ sms/ skills/',
145
+ 'profiles/: catálogo dos 6 perfis (fixos no fonte)',
146
+ ].join('\n'),
147
+ },
148
+ {
149
+ kind: 'list',
150
+ items: [
151
+ 'Runtime: Node 20.12+. Bun roda em dev, mas nada depende de API exclusiva do Bun.',
152
+ 'Build: tsc puro → dist/. Sem bundler.',
153
+ 'Banco: driver pg + um Pool único. Sem Supabase, sem PostgREST, sem Bun.sql.',
154
+ 'Gateway: http.createServer nativo, loopback, atrás do Kong OSS (opcional, rate-limiting). JWT HS256, jti = id da auth_session. Trilha de auth em stderr — nunca a senha nem o OTP em texto puro.',
155
+ 'Contrato "nunca lança" nos ports de IO: falha vira { status, error? }.',
156
+ ],
157
+ },
158
+ ],
159
+ },
160
+ {
161
+ id: '2fa',
162
+ title: '2º fator (SMS)',
163
+ blocks: [
164
+ {
165
+ kind: 'p',
166
+ text: 'Opt-in por conta. Com auth_2 ativo, o `nio login` pede um código de 6 dígitos por SMS; se o SMS não chega, vale um dos 10 códigos de backup (mostrados uma vez no enable-2fa).',
167
+ },
168
+ {
169
+ kind: 'code',
170
+ text: [
171
+ 'nio security enable-2fa cadastra o celular, confirma via SMS, mostra os backups',
172
+ 'nio security status ativo? número (mascarado)? quantos backups restam?',
173
+ 'nio security disable-2fa',
174
+ 'nio security regenerate-backup-codes',
175
+ ].join('\n'),
176
+ },
177
+ {
178
+ kind: 'p',
179
+ text: 'O gateway gera/valida o OTP em processo (sem Twilio, sem broker), guarda só o HMAC do código (TTL 5 min, 3 tentativas, uso único) e manda o SMS por um adapter HTTP genérico. Sem SMS_ENDPOINT_URL, o login com auth_2 responde 503 — o de 1 fator segue normal.',
180
+ },
181
+ ],
182
+ },
183
+ {
184
+ id: 'debug',
185
+ title: 'Debug da própria CLI',
186
+ blocks: [
187
+ {
188
+ kind: 'p',
189
+ text: '`nio debug` roda uma bateria de checagens read-only e mostra ✓ / ⚠ / ✗ com uma dica acionável em cada: nio.json no diretório, login local, conexão Postgres, sessão ativa, OpenCode no PATH, cache de skills.',
190
+ },
191
+ {
192
+ kind: 'p',
193
+ text: '`NIO_DEBUG=1` liga log verboso em stderr (`[nio:debug]`): quais `.env` carregaram, config resolvida (URL mascarada, `SELECT 1`), cada request pro gateway (URL + status), e **stack trace completo** nos erros em vez de só a mensagem.',
194
+ },
195
+ { kind: 'code', text: 'NIO_DEBUG=1 nio login' },
196
+ {
197
+ kind: 'p',
198
+ text: 'O logo Matrix anima (chuva) em TTY; `NIO_NO_ANIM=1` deixa estático (fora de TTY já é).',
199
+ },
200
+ {
201
+ kind: 'list',
202
+ items: [
203
+ '"NIO_DATABASE_URL não definida" → ponha em ~/.nio/config.env, ou rode `nio config setup`.',
204
+ '"Não consegui falar com o nio-gateway" → suba `nio-gateway &`.',
205
+ '"Não autenticado" → `nio register` (1ª vez) e `nio login`.',
206
+ '"2FA não configurado no servidor" (503) → faltam as SMS_* no ambiente do nio-gateway.',
207
+ '"Headroom é obrigatório pro client de IA" → suba o Docker; `nio docker headroom up` / `status`.',
208
+ 'A IDE não abriu o terminal do NIO sozinha → permita "tarefas automáticas", ou rode a task "NIO" (Cmd/Ctrl+Shift+P → Run Task), ou só `nio ai`.',
209
+ 'Tools não aparecem no cliente → reinicie o cliente depois do `nio init`; cheque com /mcp.',
210
+ ],
211
+ },
212
+ {
213
+ kind: 'p',
214
+ text: 'Logs do gateway saem em stderr como JSON estruturado (event: gateway_request / auth_attempt) — nunca com senha ou OTP.',
215
+ },
216
+ ],
217
+ },
218
+ ];
219
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../../src/cli/commands/docs/content.ts"],"names":[],"mappings":"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"}