@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.
- package/README.md +374 -139
- package/dist/adapters/docker/docker-gateway.js +100 -0
- package/dist/adapters/docker/docker-gateway.js.map +1 -0
- package/dist/adapters/ide/ide-gateway.js +50 -0
- package/dist/adapters/ide/ide-gateway.js.map +1 -0
- package/dist/adapters/lang/knowledge-store.js +97 -0
- package/dist/adapters/lang/knowledge-store.js.map +1 -0
- package/dist/adapters/lang/language-catalog.js +86 -0
- package/dist/adapters/lang/language-catalog.js.map +1 -0
- package/dist/adapters/lang/package-map.js +98 -0
- package/dist/adapters/lang/package-map.js.map +1 -0
- package/dist/adapters/lang/project-detector.js +40 -0
- package/dist/adapters/lang/project-detector.js.map +1 -0
- package/dist/adapters/lang/repos.js +8 -0
- package/dist/adapters/lang/repos.js.map +1 -0
- package/dist/adapters/lang/scaffold-gateway.js +135 -0
- package/dist/adapters/lang/scaffold-gateway.js.map +1 -0
- package/dist/adapters/lang/vendor.js +52 -0
- package/dist/adapters/lang/vendor.js.map +1 -0
- package/dist/adapters/pg/auth-session-repository.js +41 -0
- package/dist/adapters/pg/auth-session-repository.js.map +1 -0
- package/dist/adapters/pg/client.js +74 -0
- package/dist/adapters/pg/client.js.map +1 -0
- package/dist/adapters/pg/dependency-event-repository.js +40 -0
- package/dist/adapters/pg/dependency-event-repository.js.map +1 -0
- package/dist/adapters/pg/login-challenge-repository.js +54 -0
- package/dist/adapters/pg/login-challenge-repository.js.map +1 -0
- package/dist/adapters/pg/session-repository.js +70 -0
- package/dist/adapters/pg/session-repository.js.map +1 -0
- package/dist/adapters/pg/user-repository.js +71 -0
- package/dist/adapters/pg/user-repository.js.map +1 -0
- package/dist/adapters/pkg/toolchain-gateway.js +35 -0
- package/dist/adapters/pkg/toolchain-gateway.js.map +1 -0
- package/dist/adapters/skills/recipe-catalog.js +84 -0
- package/dist/adapters/skills/recipe-catalog.js.map +1 -0
- package/dist/adapters/sms/http-generic.js +50 -0
- package/dist/adapters/sms/http-generic.js.map +1 -0
- package/dist/app/ai-client.js +44 -0
- package/dist/app/ai-client.js.map +1 -0
- package/dist/app/dependency-watcher.js +87 -0
- package/dist/app/dependency-watcher.js.map +1 -0
- package/dist/app/docker-manager.js +113 -0
- package/dist/app/docker-manager.js.map +1 -0
- package/dist/app/environment-builder.js +73 -0
- package/dist/app/environment-builder.js.map +1 -0
- package/dist/app/language-configurator.js +30 -0
- package/dist/app/language-configurator.js.map +1 -0
- package/dist/app/session-manager.js +124 -0
- package/dist/app/session-manager.js.map +1 -0
- package/dist/brand.js +3 -61
- package/dist/brand.js.map +1 -1
- package/dist/cli/commands/agents.js +30 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/ai.js +61 -0
- package/dist/cli/commands/ai.js.map +1 -0
- package/dist/cli/commands/auth.js +149 -96
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/clean.js +1 -13
- package/dist/cli/commands/clean.js.map +1 -1
- package/dist/cli/commands/command.js +58 -0
- package/dist/cli/commands/command.js.map +1 -0
- package/dist/cli/commands/completion.js +0 -3
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/config.js +43 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/debug.js +102 -0
- package/dist/cli/commands/debug.js.map +1 -0
- package/dist/cli/commands/deps.js +94 -0
- package/dist/cli/commands/deps.js.map +1 -0
- package/dist/cli/commands/docker.js +385 -0
- package/dist/cli/commands/docker.js.map +1 -0
- package/dist/cli/commands/docs/content.js +219 -0
- package/dist/cli/commands/docs/content.js.map +1 -0
- package/dist/cli/commands/docs/dynamic.js +42 -0
- package/dist/cli/commands/docs/dynamic.js.map +1 -0
- package/dist/cli/commands/docs/html.js +108 -0
- package/dist/cli/commands/docs/html.js.map +1 -0
- package/dist/cli/commands/docs/terminal.js +42 -0
- package/dist/cli/commands/docs/terminal.js.map +1 -0
- package/dist/cli/commands/docs.js +34 -0
- package/dist/cli/commands/docs.js.map +1 -0
- package/dist/cli/commands/exec.js +2 -7
- package/dist/cli/commands/exec.js.map +1 -1
- package/dist/cli/commands/init/auth-step.js +10 -45
- package/dist/cli/commands/init/auth-step.js.map +1 -1
- package/dist/cli/commands/init/clients-step.js +12 -39
- package/dist/cli/commands/init/clients-step.js.map +1 -1
- package/dist/cli/commands/init/context-step.js +7 -33
- package/dist/cli/commands/init/context-step.js.map +1 -1
- package/dist/cli/commands/init/handoff.js +20 -0
- package/dist/cli/commands/init/handoff.js.map +1 -0
- package/dist/cli/commands/init/index.js +164 -34
- package/dist/cli/commands/init/index.js.map +1 -1
- package/dist/cli/commands/init/lang-step.js +40 -0
- package/dist/cli/commands/init/lang-step.js.map +1 -0
- package/dist/cli/commands/init/profile-step.js +43 -0
- package/dist/cli/commands/init/profile-step.js.map +1 -0
- package/dist/cli/commands/init/provision-step.js +8 -23
- package/dist/cli/commands/init/provision-step.js.map +1 -1
- package/dist/cli/commands/init/recipe-step.js +18 -0
- package/dist/cli/commands/init/recipe-step.js.map +1 -0
- package/dist/cli/commands/lang.js +27 -0
- package/dist/cli/commands/lang.js.map +1 -0
- package/dist/cli/commands/open.js +59 -0
- package/dist/cli/commands/open.js.map +1 -0
- package/dist/cli/commands/plan.js +2 -6
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/security.js +143 -0
- package/dist/cli/commands/security.js.map +1 -0
- package/dist/cli/commands/sessions.js +92 -0
- package/dist/cli/commands/sessions.js.map +1 -0
- package/dist/cli/commands/skills.js +1 -1
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/start.js +8 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/sync.js +52 -58
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/validate-plan.js +2 -6
- package/dist/cli/commands/validate-plan.js.map +1 -1
- package/dist/cli/copy/auth.json +9 -2
- package/dist/cli/copy/init.json +2 -6
- package/dist/cli/copy.js +0 -8
- package/dist/cli/copy.js.map +1 -1
- package/dist/cli/flows/clients.js +3 -94
- package/dist/cli/flows/clients.js.map +1 -1
- package/dist/cli/flows/completion.js +1 -6
- package/dist/cli/flows/completion.js.map +1 -1
- package/dist/cli/flows/dependencies.js +1 -18
- package/dist/cli/flows/dependencies.js.map +1 -1
- package/dist/cli/flows/onboarding.js +116 -0
- package/dist/cli/flows/onboarding.js.map +1 -0
- package/dist/cli/flows/sections.js +2 -10
- package/dist/cli/flows/sections.js.map +1 -1
- package/dist/cli/flows/user-config.js +5 -10
- package/dist/cli/flows/user-config.js.map +1 -1
- package/dist/cli/program.js +58 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/ui/render.js +2 -53
- package/dist/cli/ui/render.js.map +1 -1
- package/dist/cli/ui/report.js +0 -13
- package/dist/cli/ui/report.js.map +1 -1
- package/dist/cli.js +27 -31
- package/dist/cli.js.map +1 -1
- package/dist/config.js +27 -56
- package/dist/config.js.map +1 -1
- package/dist/core/docker.js +2 -0
- package/dist/core/docker.js.map +1 -0
- package/dist/core/environment.js +2 -0
- package/dist/core/environment.js.map +1 -0
- package/dist/core/lang.js +11 -0
- package/dist/core/lang.js.map +1 -0
- package/dist/core/messaging.js +2 -0
- package/dist/core/messaging.js.map +1 -0
- package/dist/core/repositories.js +2 -0
- package/dist/core/repositories.js.map +1 -0
- package/dist/core/types.js +0 -5
- package/dist/core/types.js.map +1 -1
- package/dist/gateway/config.js +13 -0
- package/dist/gateway/config.js.map +1 -0
- package/dist/gateway/edge-filter.js +55 -0
- package/dist/gateway/edge-filter.js.map +1 -0
- package/dist/gateway/index.js +176 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/middleware/auth.js +34 -0
- package/dist/gateway/middleware/auth.js.map +1 -0
- package/dist/gateway/services/login.js +112 -0
- package/dist/gateway/services/login.js.map +1 -0
- package/dist/gateway/services/security.js +99 -0
- package/dist/gateway/services/security.js.map +1 -0
- package/dist/lib/auth/backup-codes.js +46 -0
- package/dist/lib/auth/backup-codes.js.map +1 -0
- package/dist/lib/auth/gateway-client.js +86 -0
- package/dist/lib/auth/gateway-client.js.map +1 -0
- package/dist/lib/auth/gateway-process.js +54 -0
- package/dist/lib/auth/gateway-process.js.map +1 -0
- package/dist/lib/auth/gateway-token.js +26 -0
- package/dist/lib/auth/gateway-token.js.map +1 -0
- package/dist/lib/auth/nio-config.js +147 -0
- package/dist/lib/auth/nio-config.js.map +1 -0
- package/dist/lib/auth/otp.js +23 -0
- package/dist/lib/auth/otp.js.map +1 -0
- package/dist/lib/auth/password.js +23 -0
- package/dist/lib/auth/password.js.map +1 -0
- package/dist/lib/auth/session-store.js +49 -0
- package/dist/lib/auth/session-store.js.map +1 -0
- package/dist/lib/clients/autopull.js +8 -0
- package/dist/lib/clients/autopull.js.map +1 -0
- package/dist/lib/{client-configs.js → clients/client-configs.js} +113 -34
- package/dist/lib/clients/client-configs.js.map +1 -0
- package/dist/lib/clients/client-install.js +20 -0
- package/dist/lib/clients/client-install.js.map +1 -0
- package/dist/lib/{harness.js → clients/harness.js} +1 -16
- package/dist/lib/clients/harness.js.map +1 -0
- package/dist/lib/{hooks.js → clients/hooks.js} +5 -31
- package/dist/lib/clients/hooks.js.map +1 -0
- package/dist/lib/{targets.js → clients/targets.js} +17 -53
- package/dist/lib/clients/targets.js.map +1 -0
- package/dist/lib/colors.js +0 -24
- package/dist/lib/colors.js.map +1 -1
- package/dist/lib/cowork-extension.js +2 -25
- package/dist/lib/cowork-extension.js.map +1 -1
- package/dist/lib/debug.js +6 -0
- package/dist/lib/debug.js.map +1 -0
- package/dist/lib/{dependencies.js → deps/dependencies.js} +1 -26
- package/dist/lib/deps/dependencies.js.map +1 -0
- package/dist/lib/deps/dependency-install-project.js +27 -0
- package/dist/lib/deps/dependency-install-project.js.map +1 -0
- package/dist/lib/{dependency-install.js → deps/dependency-install.js} +10 -35
- package/dist/lib/deps/dependency-install.js.map +1 -0
- package/dist/lib/deps/dependency-installed.js +64 -0
- package/dist/lib/deps/dependency-installed.js.map +1 -0
- package/dist/lib/deps/dependency-scan.js +100 -0
- package/dist/lib/deps/dependency-scan.js.map +1 -0
- package/dist/lib/docker.js +50 -0
- package/dist/lib/docker.js.map +1 -0
- package/dist/lib/dotfiles.js +57 -0
- package/dist/lib/dotfiles.js.map +1 -0
- package/dist/lib/{exec-delegate.js → exec/exec-delegate.js} +4 -13
- package/dist/lib/exec/exec-delegate.js.map +1 -0
- package/dist/lib/{exec-engines.js → exec/exec-engines.js} +1 -10
- package/dist/lib/exec/exec-engines.js.map +1 -0
- package/dist/lib/{plan-delegate.js → exec/plan-delegate.js} +1 -7
- package/dist/lib/exec/plan-delegate.js.map +1 -0
- package/dist/lib/{validate-plan-delegate.js → exec/validate-plan-delegate.js} +2 -7
- package/dist/lib/exec/validate-plan-delegate.js.map +1 -0
- package/dist/lib/headroom.js +44 -0
- package/dist/lib/headroom.js.map +1 -0
- package/dist/lib/ide-tasks.js +54 -0
- package/dist/lib/ide-tasks.js.map +1 -0
- package/dist/lib/load-env.js +44 -0
- package/dist/lib/load-env.js.map +1 -0
- package/dist/lib/open-url.js +9 -0
- package/dist/lib/open-url.js.map +1 -0
- package/dist/lib/prompts.js +0 -13
- package/dist/lib/prompts.js.map +1 -1
- package/dist/lib/{provision-apply.js → provision/provision-apply.js} +4 -30
- package/dist/lib/provision/provision-apply.js.map +1 -0
- package/dist/lib/{provision-collect.js → provision/provision-collect.js} +0 -9
- package/dist/lib/provision/provision-collect.js.map +1 -0
- package/dist/lib/{provision.js → provision/provision.js} +4 -17
- package/dist/lib/provision/provision.js.map +1 -0
- package/dist/lib/{patterns.js → skills/patterns.js} +0 -13
- package/dist/lib/skills/patterns.js.map +1 -0
- package/dist/lib/{rules.js → skills/rules.js} +0 -22
- package/dist/lib/skills/rules.js.map +1 -0
- package/dist/lib/skills/sections.js +58 -0
- package/dist/lib/skills/sections.js.map +1 -0
- package/dist/lib/{skill-serve.js → skills/skill-serve.js} +1 -26
- package/dist/lib/skills/skill-serve.js.map +1 -0
- package/dist/lib/{skills-cache.js → skills/skills-cache.js} +15 -21
- package/dist/lib/skills/skills-cache.js.map +1 -0
- package/dist/lib/{skills.js → skills/skills.js} +3 -49
- package/dist/lib/skills/skills.js.map +1 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/telemetry.js +3 -20
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/version-check.js +0 -20
- package/dist/lib/version-check.js.map +1 -1
- package/dist/matrix-logo.js +43 -21
- package/dist/matrix-logo.js.map +1 -1
- package/dist/mcp-server-lang.js +39 -0
- package/dist/mcp-server-lang.js.map +1 -0
- package/dist/mcp-server.js +37 -41
- package/dist/mcp-server.js.map +1 -1
- package/dist/profiles/analyst.js +10 -0
- package/dist/profiles/analyst.js.map +1 -0
- package/dist/profiles/bi.js +9 -0
- package/dist/profiles/bi.js.map +1 -0
- package/dist/profiles/dba.js +21 -0
- package/dist/profiles/dba.js.map +1 -0
- package/dist/profiles/fullstack.js +9 -0
- package/dist/profiles/fullstack.js.map +1 -0
- package/dist/profiles/index.js +39 -0
- package/dist/profiles/index.js.map +1 -0
- package/dist/profiles/mcps.js +23 -0
- package/dist/profiles/mcps.js.map +1 -0
- package/dist/profiles/qa.js +10 -0
- package/dist/profiles/qa.js.map +1 -0
- package/dist/profiles/scientist.js +9 -0
- package/dist/profiles/scientist.js.map +1 -0
- package/dist/profiles/toolchains.js +9 -0
- package/dist/profiles/toolchains.js.map +1 -0
- package/dist/tools/delegate-exec.js +2 -2
- package/dist/tools/delegate-exec.js.map +1 -1
- package/dist/tools/env-detect-deps.js +54 -0
- package/dist/tools/env-detect-deps.js.map +1 -0
- package/dist/tools/env-materialize.js +43 -0
- package/dist/tools/env-materialize.js.map +1 -0
- package/dist/tools/exec-status.js +1 -1
- package/dist/tools/exec-status.js.map +1 -1
- package/dist/tools/index.js +12 -32
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lang-recipe.js +31 -0
- package/dist/tools/lang-recipe.js.map +1 -0
- package/dist/tools/lang-reference.js +34 -0
- package/dist/tools/lang-reference.js.map +1 -0
- package/dist/tools/plan.js +2 -2
- package/dist/tools/plan.js.map +1 -1
- package/dist/tools/profile-get.js +57 -0
- package/dist/tools/profile-get.js.map +1 -0
- package/dist/tools/session-activate.js +35 -0
- package/dist/tools/session-activate.js.map +1 -0
- package/dist/tools/session-create.js +83 -0
- package/dist/tools/session-create.js.map +1 -0
- package/dist/tools/session-list.js +29 -0
- package/dist/tools/session-list.js.map +1 -0
- package/dist/tools/session-shared.js +25 -0
- package/dist/tools/session-shared.js.map +1 -0
- package/dist/tools/validate-plan.js +2 -2
- package/dist/tools/validate-plan.js.map +1 -1
- package/dist/tui/app.js +116 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/components.js +0 -0
- package/dist/tui/components.js.map +1 -0
- package/dist/tui/debug.js +17 -0
- package/dist/tui/debug.js.map +1 -0
- package/dist/tui/index.js +2 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/launch.js +64 -0
- package/dist/tui/launch.js.map +1 -0
- package/dist/tui/markdown.js +40 -0
- package/dist/tui/markdown.js.map +1 -0
- package/dist/tui/opencode.js +28 -0
- package/dist/tui/opencode.js.map +1 -0
- package/dist/tui/palette-source.js +71 -0
- package/dist/tui/palette-source.js.map +1 -0
- package/dist/tui/palette.js +100 -0
- package/dist/tui/palette.js.map +1 -0
- package/dist/tui/state.js +105 -0
- package/dist/tui/state.js.map +1 -0
- package/dist/tui/theme.js +14 -0
- package/dist/tui/theme.js.map +1 -0
- package/docker/docker-compose.yml +44 -0
- package/headroom/docker-compose.yml +27 -0
- package/package.json +40 -16
- package/dist/adapters/supabase/allocation-gateway.js +0 -236
- package/dist/adapters/supabase/allocation-gateway.js.map +0 -1
- package/dist/adapters/supabase/analytics-gateway.js +0 -18
- package/dist/adapters/supabase/analytics-gateway.js.map +0 -1
- package/dist/adapters/supabase/client.js +0 -96
- package/dist/adapters/supabase/client.js.map +0 -1
- package/dist/adapters/supabase/context-gateway.js +0 -23
- package/dist/adapters/supabase/context-gateway.js.map +0 -1
- package/dist/adapters/supabase/gateway.js +0 -18
- package/dist/adapters/supabase/gateway.js.map +0 -1
- package/dist/adapters/supabase/task-gateway.js +0 -450
- package/dist/adapters/supabase/task-gateway.js.map +0 -1
- package/dist/auth.js +0 -118
- package/dist/auth.js.map +0 -1
- package/dist/cli/commands/init/project-step.js +0 -105
- package/dist/cli/commands/init/project-step.js.map +0 -1
- package/dist/constants.js +0 -9
- package/dist/constants.js.map +0 -1
- package/dist/core/ports.js +0 -2
- package/dist/core/ports.js.map +0 -1
- package/dist/database.types.js +0 -11
- package/dist/database.types.js.map +0 -1
- package/dist/lib/active-project.js +0 -28
- package/dist/lib/active-project.js.map +0 -1
- package/dist/lib/autopull.js +0 -13
- package/dist/lib/autopull.js.map +0 -1
- package/dist/lib/client-configs.js.map +0 -1
- package/dist/lib/client-install.js +0 -40
- package/dist/lib/client-install.js.map +0 -1
- package/dist/lib/dependencies.js.map +0 -1
- package/dist/lib/dependency-install.js.map +0 -1
- package/dist/lib/exec-delegate.js.map +0 -1
- package/dist/lib/exec-engines.js.map +0 -1
- package/dist/lib/harness.js.map +0 -1
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/patterns.js.map +0 -1
- package/dist/lib/plan-delegate.js.map +0 -1
- package/dist/lib/project-context.js +0 -151
- package/dist/lib/project-context.js.map +0 -1
- package/dist/lib/provision-apply.js.map +0 -1
- package/dist/lib/provision-collect.js.map +0 -1
- package/dist/lib/provision.js.map +0 -1
- package/dist/lib/require-config.js +0 -32
- package/dist/lib/require-config.js.map +0 -1
- package/dist/lib/rules.js.map +0 -1
- package/dist/lib/sections.js +0 -89
- package/dist/lib/sections.js.map +0 -1
- package/dist/lib/skill-serve.js.map +0 -1
- package/dist/lib/skills-cache.js.map +0 -1
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/targets.js.map +0 -1
- package/dist/lib/task-history.js +0 -15
- package/dist/lib/task-history.js.map +0 -1
- package/dist/lib/validate-plan-delegate.js.map +0 -1
- package/dist/session-factory.js +0 -19
- package/dist/session-factory.js.map +0 -1
- package/dist/spinner.js.map +0 -1
- package/dist/tools/comment-task.js +0 -72
- package/dist/tools/comment-task.js.map +0 -1
- package/dist/tools/create-task.js +0 -129
- package/dist/tools/create-task.js.map +0 -1
- package/dist/tools/end-allocation.js +0 -38
- package/dist/tools/end-allocation.js.map +0 -1
- package/dist/tools/end-task-allocation.js +0 -37
- package/dist/tools/end-task-allocation.js.map +0 -1
- package/dist/tools/get-active-allocation.js +0 -69
- package/dist/tools/get-active-allocation.js.map +0 -1
- package/dist/tools/get-context.js +0 -48
- package/dist/tools/get-context.js.map +0 -1
- package/dist/tools/get-task.js +0 -137
- package/dist/tools/get-task.js.map +0 -1
- package/dist/tools/list-my-allocations.js +0 -71
- package/dist/tools/list-my-allocations.js.map +0 -1
- package/dist/tools/list-projects.js +0 -38
- package/dist/tools/list-projects.js.map +0 -1
- package/dist/tools/list-tasks.js +0 -93
- package/dist/tools/list-tasks.js.map +0 -1
- package/dist/tools/move-task.js +0 -82
- package/dist/tools/move-task.js.map +0 -1
- package/dist/tools/record-delivery.js +0 -71
- package/dist/tools/record-delivery.js.map +0 -1
- package/dist/tools/set-project.js +0 -52
- package/dist/tools/set-project.js.map +0 -1
- package/dist/tools/start-allocation.js +0 -32
- package/dist/tools/start-allocation.js.map +0 -1
- package/dist/tools/start-task-allocation.js +0 -75
- package/dist/tools/start-task-allocation.js.map +0 -1
- package/dist/tools/update-task.js +0 -139
- package/dist/tools/update-task.js.map +0 -1
- /package/dist/{spinner.js → lib/spinner.js} +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { toolDefinitions } from '../../../tools/index.js';
|
|
2
|
+
function firstSentence(text) {
|
|
3
|
+
const flat = text.replace(/\s+/g, ' ').trim();
|
|
4
|
+
const stop = flat.search(/\.(\s|$)/);
|
|
5
|
+
return stop > 0 ? flat.slice(0, stop + 1) : flat;
|
|
6
|
+
}
|
|
7
|
+
function walk(cmd, prefix = '') {
|
|
8
|
+
const rows = [];
|
|
9
|
+
for (const sub of cmd.commands) {
|
|
10
|
+
const nm = sub.name();
|
|
11
|
+
if (nm === 'help')
|
|
12
|
+
continue;
|
|
13
|
+
const full = prefix ? `${prefix} ${nm}` : nm;
|
|
14
|
+
const args = sub.commands.length > 0 ? '' : sub.usage().replace(/^\[options\]\s*/, '').trim();
|
|
15
|
+
const desc = sub.description();
|
|
16
|
+
if (desc)
|
|
17
|
+
rows.push([args ? `${full} ${args}` : full, firstSentence(desc)]);
|
|
18
|
+
rows.push(...walk(sub, full));
|
|
19
|
+
}
|
|
20
|
+
return rows;
|
|
21
|
+
}
|
|
22
|
+
export function commandSection(program) {
|
|
23
|
+
const rows = walk(program).sort((a, b) => a[0].localeCompare(b[0]));
|
|
24
|
+
return {
|
|
25
|
+
id: 'comandos',
|
|
26
|
+
title: 'Comandos',
|
|
27
|
+
blurb: `${rows.length} comandos. Ajuda de qualquer um: nio <cmd> --help`,
|
|
28
|
+
blocks: [{ kind: 'table', head: ['Comando', 'O que faz'], rows }],
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function toolSection() {
|
|
32
|
+
const rows = [...toolDefinitions]
|
|
33
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
34
|
+
.map((t) => [t.name, firstSentence(t.description ?? '')]);
|
|
35
|
+
return {
|
|
36
|
+
id: 'tools-mcp',
|
|
37
|
+
title: 'Tools MCP',
|
|
38
|
+
blurb: 'Expostas pelo servidor nio-cli ao operador de IA. Todas passam pelo SessionManager e exigem nio login.',
|
|
39
|
+
blocks: [{ kind: 'table', head: ['Tool', 'O que faz'], rows }],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=dynamic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../../../../src/cli/commands/docs/dynamic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
const esc = (s) => s.replace(/[&<>"]/g, (ch) => ({ '&': '&', '<': '<', '>': '>', '"': '"' })[ch]);
|
|
2
|
+
const inline = (s) => esc(s).replace(/`([^`]+)`/g, (_m, code) => `<code>${code}</code>`);
|
|
3
|
+
const STYLE = `
|
|
4
|
+
:root{
|
|
5
|
+
--bg:#f6f8f5; --surface:#fff; --ink:#16211a; --muted:#5a6b60; --line:#dde5dd;
|
|
6
|
+
--accent:#1a7f43; --accent-soft:#e3f2e6; --code-bg:#0d130f; --code-ink:#c8e6cf;
|
|
7
|
+
--font:"Inter",ui-sans-serif,-apple-system,"Segoe UI",Roboto,sans-serif;
|
|
8
|
+
--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
|
|
9
|
+
}
|
|
10
|
+
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){
|
|
11
|
+
--bg:#0a0e0b; --surface:#0f150f; --ink:#d7e5da; --muted:#7f9285; --line:#1e2a20;
|
|
12
|
+
--accent:#4ade80; --accent-soft:#122417; --code-bg:#060907; --code-ink:#bfe9c9;
|
|
13
|
+
}}
|
|
14
|
+
:root[data-theme=dark]{
|
|
15
|
+
--bg:#0a0e0b; --surface:#0f150f; --ink:#d7e5da; --muted:#7f9285; --line:#1e2a20;
|
|
16
|
+
--accent:#4ade80; --accent-soft:#122417; --code-bg:#060907; --code-ink:#bfe9c9;
|
|
17
|
+
}
|
|
18
|
+
*{box-sizing:border-box}
|
|
19
|
+
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);
|
|
20
|
+
line-height:1.65;-webkit-font-smoothing:antialiased}
|
|
21
|
+
a{color:var(--accent);text-decoration:none}
|
|
22
|
+
a:hover{text-decoration:underline}
|
|
23
|
+
code{font-family:var(--mono);font-size:.88em;background:var(--accent-soft);
|
|
24
|
+
color:var(--accent);padding:.1em .38em;border-radius:4px}
|
|
25
|
+
header.top{border-bottom:1px solid var(--line);background:var(--surface);
|
|
26
|
+
position:sticky;top:0;z-index:5}
|
|
27
|
+
.top .inner{max-width:1000px;margin:0 auto;padding:22px 24px;
|
|
28
|
+
display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap}
|
|
29
|
+
.brand{font-family:var(--mono);font-weight:700;font-size:1.35rem;letter-spacing:.02em}
|
|
30
|
+
.brand .cursor{color:var(--accent)}
|
|
31
|
+
.ver{font-family:var(--mono);font-size:.78rem;color:var(--muted);
|
|
32
|
+
border:1px solid var(--line);border-radius:999px;padding:.22em .7em;white-space:nowrap}
|
|
33
|
+
button.theme{font:inherit;font-size:.78rem;color:var(--muted);background:none;
|
|
34
|
+
border:1px solid var(--line);border-radius:999px;padding:.28em .8em;cursor:pointer;margin-left:8px}
|
|
35
|
+
.tag{max-width:1000px;margin:0 auto;padding:16px 24px 0;color:var(--muted);font-size:.95rem}
|
|
36
|
+
nav.toc{max-width:1000px;margin:0 auto;padding:14px 24px 26px;display:flex;flex-wrap:wrap;
|
|
37
|
+
gap:6px 16px;font-size:.84rem;border-bottom:1px solid var(--line)}
|
|
38
|
+
nav.toc a{color:var(--muted)}
|
|
39
|
+
nav.toc a:hover,nav.toc a.on{color:var(--accent);text-decoration:none}
|
|
40
|
+
main{max-width:1000px;margin:0 auto;padding:40px 24px 96px}
|
|
41
|
+
section{margin:0 0 48px;scroll-margin-top:80px}
|
|
42
|
+
h2{font-size:1.3rem;margin:0 0 4px;letter-spacing:-.01em}
|
|
43
|
+
.blurb{color:var(--muted);margin:0 0 18px;font-size:.95rem}
|
|
44
|
+
p{margin:0 0 14px;max-width:72ch}
|
|
45
|
+
ul{margin:0 0 16px;padding-left:20px;max-width:74ch}
|
|
46
|
+
li{margin:.4em 0}
|
|
47
|
+
pre{background:var(--code-bg);color:var(--code-ink);font-family:var(--mono);
|
|
48
|
+
font-size:.82rem;line-height:1.6;padding:16px 18px;border-radius:10px;
|
|
49
|
+
overflow-x:auto;border:1px solid var(--line);margin:0 0 18px}
|
|
50
|
+
pre code{background:none;color:inherit;padding:0;font-size:inherit}
|
|
51
|
+
.tbl{overflow-x:auto;margin:0 0 18px;border:1px solid var(--line);border-radius:10px}
|
|
52
|
+
table{border-collapse:collapse;width:100%;font-size:.9rem}
|
|
53
|
+
th,td{text-align:left;padding:9px 14px;border-bottom:1px solid var(--line);vertical-align:top}
|
|
54
|
+
tr:last-child td{border-bottom:0}
|
|
55
|
+
th{font-weight:600;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
|
|
56
|
+
td:first-child{font-family:var(--mono);font-size:.85rem;white-space:nowrap}
|
|
57
|
+
@media(max-width:640px){td:first-child{white-space:normal}}
|
|
58
|
+
`;
|
|
59
|
+
function renderBlock(b) {
|
|
60
|
+
if (b.kind === 'p')
|
|
61
|
+
return `<p>${inline(b.text)}</p>`;
|
|
62
|
+
if (b.kind === 'code')
|
|
63
|
+
return `<pre><code>${esc(b.text)}</code></pre>`;
|
|
64
|
+
if (b.kind === 'list')
|
|
65
|
+
return `<ul>${b.items.map((i) => `<li>${inline(i)}</li>`).join('')}</ul>`;
|
|
66
|
+
const head = b.head.map((h) => `<th>${esc(h)}</th>`).join('');
|
|
67
|
+
const rows = b.rows
|
|
68
|
+
.map((r) => `<tr>${r.map((cell) => `<td>${inline(cell)}</td>`).join('')}</tr>`)
|
|
69
|
+
.join('');
|
|
70
|
+
return `<div class="tbl"><table><thead><tr>${head}</tr></thead><tbody>${rows}</tbody></table></div>`;
|
|
71
|
+
}
|
|
72
|
+
const SCRIPT = `
|
|
73
|
+
const root=document.documentElement,KEY='nio-docs-theme';
|
|
74
|
+
try{const t=localStorage.getItem(KEY);if(t)root.dataset.theme=t}catch(e){}
|
|
75
|
+
document.querySelector('button.theme').onclick=()=>{
|
|
76
|
+
const sysDark=matchMedia('(prefers-color-scheme:dark)').matches;
|
|
77
|
+
const cur=root.dataset.theme||(sysDark?'dark':'light');
|
|
78
|
+
const next=cur==='dark'?'light':'dark';root.dataset.theme=next;
|
|
79
|
+
try{localStorage.setItem(KEY,next)}catch(e){}};
|
|
80
|
+
const links=[...document.querySelectorAll('nav.toc a')];
|
|
81
|
+
addEventListener('scroll',()=>{let on=links[0];
|
|
82
|
+
for(const l of links){const el=document.getElementById(l.hash.slice(1));
|
|
83
|
+
if(el&&el.getBoundingClientRect().top<140)on=l}
|
|
84
|
+
links.forEach(l=>l.classList.toggle('on',l===on))},{passive:true});
|
|
85
|
+
`;
|
|
86
|
+
export function renderHtml(sections, version, tagline) {
|
|
87
|
+
const nav = sections
|
|
88
|
+
.map((s) => `<a href="#${s.id}">${esc(s.title)}</a>`)
|
|
89
|
+
.join(' ');
|
|
90
|
+
const body = sections
|
|
91
|
+
.map((s) => `<section id="${s.id}"><h2>${esc(s.title)}</h2>` +
|
|
92
|
+
(s.blurb ? `<p class="blurb">${inline(s.blurb)}</p>` : '') +
|
|
93
|
+
s.blocks.map(renderBlock).join('') +
|
|
94
|
+
`</section>`)
|
|
95
|
+
.join('');
|
|
96
|
+
return `<!doctype html><html lang="pt-BR"><head><meta charset="utf-8">
|
|
97
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
98
|
+
<title>NIO-CLI — documentação</title><style>${STYLE}</style></head><body>
|
|
99
|
+
<header class="top"><div class="inner">
|
|
100
|
+
<div class="brand">nio<span class="cursor">_</span></div>
|
|
101
|
+
<div style="white-space:nowrap"><span class="ver">v${esc(version)}</span>
|
|
102
|
+
<button class="theme">tema</button></div></div></header>
|
|
103
|
+
<p class="tag">${esc(tagline)}</p>
|
|
104
|
+
<nav class="toc">${nav}</nav>
|
|
105
|
+
<main>${body}</main>
|
|
106
|
+
<script>${SCRIPT}</script></body></html>`;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../../src/cli/commands/docs/html.ts"],"names":[],"mappings":"AAOA,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAChC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC;AAGjG,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CACnC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,IAAY,EAAE,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;AAE7E,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDb,CAAC;AAEF,SAAS,WAAW,CAAC,CAAQ;IAC3B,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;QAAE,OAAO,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACtD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IACvE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;IACjG,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;SAC9E,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,sCAAsC,IAAI,uBAAuB,IAAI,wBAAwB,CAAC;AACvG,CAAC;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;CAad,CAAC;AAEF,MAAM,UAAU,UAAU,CACxB,QAAsB,EACtB,OAAe,EACf,OAAe;IAEf,MAAM,GAAG,GAAG,QAAQ;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;SACpD,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,IAAI,GAAG,QAAQ;SAClB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,gBAAgB,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;QAChD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,YAAY,CACf;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO;;8CAEqC,KAAK;;;qDAGE,GAAG,CAAC,OAAO,CAAC;;iBAEhD,GAAG,CAAC,OAAO,CAAC;mBACV,GAAG;QACd,IAAI;UACF,MAAM,yBAAyB,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { c, sym, rule, highlightInlineCode, indent } from '../../../lib/colors.js';
|
|
2
|
+
function codeBlock(text) {
|
|
3
|
+
return text
|
|
4
|
+
.split('\n')
|
|
5
|
+
.map((l) => `${c.dim('│')} ${c.cyan(l)}`)
|
|
6
|
+
.join('\n');
|
|
7
|
+
}
|
|
8
|
+
function defList(head, rows) {
|
|
9
|
+
return rows
|
|
10
|
+
.map((r) => {
|
|
11
|
+
const term = c.bold(r[0] ?? '');
|
|
12
|
+
const rest = r.slice(1).map((cell) => highlightInlineCode(cell)).join(' — ');
|
|
13
|
+
return rest ? `${term}\n${indent(c.dim(rest), 2)}` : term;
|
|
14
|
+
})
|
|
15
|
+
.join('\n');
|
|
16
|
+
}
|
|
17
|
+
function renderBlock(b) {
|
|
18
|
+
switch (b.kind) {
|
|
19
|
+
case 'p':
|
|
20
|
+
return highlightInlineCode(b.text);
|
|
21
|
+
case 'code':
|
|
22
|
+
return codeBlock(b.text);
|
|
23
|
+
case 'list':
|
|
24
|
+
return b.items.map((it) => `${c.dim(sym.bullet)} ${highlightInlineCode(it)}`).join('\n');
|
|
25
|
+
case 'table':
|
|
26
|
+
return defList(b.head, b.rows);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function renderTerminal(sections, version) {
|
|
30
|
+
const parts = [c.bold(`NIO-CLI ${c.dim('v' + version)}`), ''];
|
|
31
|
+
for (const s of sections) {
|
|
32
|
+
parts.push(rule(), c.bold.underline(s.title.toUpperCase()));
|
|
33
|
+
if (s.blurb)
|
|
34
|
+
parts.push(c.dim(s.blurb));
|
|
35
|
+
parts.push('');
|
|
36
|
+
for (const b of s.blocks)
|
|
37
|
+
parts.push(indent(renderBlock(b), 2), '');
|
|
38
|
+
}
|
|
39
|
+
parts.push(rule(), c.dim('Página com arte: nio docs --html --open'));
|
|
40
|
+
return parts.join('\n');
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../../src/cli/commands/docs/terminal.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAInF,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAGD,SAAS,OAAO,CAAC,IAAc,EAAE,IAAgB;IAC/C,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,CAAQ;IAC3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3F,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAsB,EAAE,OAAe;IACpE,MAAM,KAAK,GAAa,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { writeFileSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { VERSION } from "../../version.js";
|
|
4
|
+
import { c, sym } from "../../lib/colors.js";
|
|
5
|
+
import { openUrl } from "../../lib/open-url.js";
|
|
6
|
+
import { homePath } from "../../brand.js";
|
|
7
|
+
import { SECTIONS, TAGLINE } from "./docs/content.js";
|
|
8
|
+
import { commandSection, toolSection } from "./docs/dynamic.js";
|
|
9
|
+
import { renderTerminal } from "./docs/terminal.js";
|
|
10
|
+
import { renderHtml } from "./docs/html.js";
|
|
11
|
+
function allSections(program) {
|
|
12
|
+
return [...SECTIONS, commandSection(program), toolSection()];
|
|
13
|
+
}
|
|
14
|
+
export function registerDocsCommand(program) {
|
|
15
|
+
program
|
|
16
|
+
.command("docs")
|
|
17
|
+
.description("Documentação completa da CLI (terminal ou página com --html)")
|
|
18
|
+
.option("--html", "gera a página HTML em vez de imprimir no terminal")
|
|
19
|
+
.option("--open", "abre a página no navegador (implica --html)")
|
|
20
|
+
.option("-o, --out <path>", "caminho do HTML (default ~/.nio/nio-docs.html)")
|
|
21
|
+
.action((opts) => {
|
|
22
|
+
const sections = allSections(program);
|
|
23
|
+
if (!opts.html && !opts.open) {
|
|
24
|
+
console.log(renderTerminal(sections, VERSION));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const out = resolve(opts.out ?? homePath("nio-docs.html"));
|
|
28
|
+
writeFileSync(out, renderHtml(sections, VERSION, TAGLINE), "utf8");
|
|
29
|
+
console.log(`${c.green(sym.ok)} página gerada: ${c.cyan(out)}`);
|
|
30
|
+
if (opts.open)
|
|
31
|
+
openUrl(out);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/cli/commands/docs.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,SAAS,WAAW,CAAC,OAAgB;IACnC,OAAO,CAAC,GAAG,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,QAAQ,EAAE,mDAAmD,CAAC;SACrE,MAAM,CAAC,QAAQ,EAAE,6CAA6C,CAAC;SAC/D,MAAM,CAAC,kBAAkB,EAAE,gDAAgD,CAAC;SAC5E,MAAM,CAAC,CAAC,IAAsD,EAAE,EAAE;QACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAEtC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QAC3D,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { brand } from "../../brand.js";
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
|
-
import { runExec, getJob } from "../../lib/exec-delegate.js";
|
|
4
|
-
import { ENGINES, DEFAULT_ENGINE, parseEngine, } from "../../lib/exec-engines.js";
|
|
5
|
-
/**
|
|
6
|
-
* Superfície de CLI da delegação headless — o que o nio Studio (Tauri) chama.
|
|
7
|
-
* Contrato: **stdout = JSON** (parseável), **stderr = log ao vivo** (streamável).
|
|
8
|
-
*/
|
|
3
|
+
import { runExec, getJob } from "../../lib/exec/exec-delegate.js";
|
|
4
|
+
import { ENGINES, DEFAULT_ENGINE, parseEngine, } from "../../lib/exec/exec-engines.js";
|
|
9
5
|
function emit(payload) {
|
|
10
6
|
process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
|
|
11
7
|
}
|
|
@@ -42,7 +38,6 @@ export function registerExecCommand(program) {
|
|
|
42
38
|
if (job.state !== "done")
|
|
43
39
|
process.exitCode = 1;
|
|
44
40
|
});
|
|
45
|
-
// Comando separado (não subcomando): opções `required` do pai bloqueariam o parse.
|
|
46
41
|
program
|
|
47
42
|
.command("exec-status <jobId>")
|
|
48
43
|
.description(`Estado de um job de execução (\`${brand.name} exec\`), em JSON`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EACL,OAAO,EACP,cAAc,EACd,WAAW,GACZ,MAAM,gCAAgC,CAAC;AAOxC,SAAS,IAAI,CAAC,OAAgB;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,sEAAsE;QACpE,mDAAmD,CACtD;SACA,cAAc,CACb,mBAAmB,EACnB,oDAAoD,CACrD;SACA,cAAc,CACb,uBAAuB,EACvB,wCAAwC,CACzC;SACA,MAAM,CACL,mBAAmB,EACnB,uBAAuB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAC7C,cAAc,CACf;SACA,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;SAC1D,MAAM,CACL,KAAK,EAAE,IAKN,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,KAAK,EAAE,oBAAoB,IAAI,CAAC,MAAM,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC7E,CAAC,CAAC;YACH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM;YACN,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACjD,CAAC,CACF,CAAC;IAGJ,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,mCAAmC,KAAK,CAAC,IAAI,mBAAmB,CAAC;SAC7E,MAAM,CAAC,CAAC,KAAa,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,49 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { loadSession } from "../../../lib/auth/session-store.js";
|
|
2
2
|
import { brand } from "../../../brand.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Garante que há credenciais locais antes de seguir com o wizard: se já há PAT
|
|
9
|
-
* salvo, não faz nada; senão, pede o token, valida e troca por sessão.
|
|
10
|
-
*/
|
|
11
|
-
export async function ensureAuthenticated() {
|
|
12
|
-
const existingCreds = await loadCredentials();
|
|
13
|
-
if (existingCreds)
|
|
14
|
-
return;
|
|
15
|
-
console.log("Você ainda não está autenticado.");
|
|
16
|
-
if (brand.webUrl)
|
|
17
|
-
console.log(`Gere um token pessoal em: ${brand.webUrl}/profile#mcp`);
|
|
18
|
-
const newPat = (await password({
|
|
19
|
-
message: initCopy.patPrompt,
|
|
20
|
-
mask: "*",
|
|
21
|
-
validate: (value) => validatePatFormat(value.trim()) || initCopy.patInvalid,
|
|
22
|
-
})).trim();
|
|
23
|
-
const loginSpinner = startSpinner("Validando token...");
|
|
24
|
-
try {
|
|
25
|
-
const result = await exchangePatForJwt(newPat);
|
|
26
|
-
await saveCredentials({ pat: newPat });
|
|
27
|
-
loginSpinner.stop();
|
|
28
|
-
const displayName = result.user.full_name || result.user.email;
|
|
29
|
-
console.log(`[ok] Autenticado como ${displayName}`);
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
loginSpinner.fail(`Falha ao autenticar: ${err.message}`);
|
|
33
|
-
process.exit(1);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/** Cria a sessão autenticada (client Supabase + user) usada pelo resto do wizard. */
|
|
37
|
-
export async function createSessionStep() {
|
|
38
|
-
const authSpinner = startSpinner("Carregando sessão...");
|
|
39
|
-
try {
|
|
40
|
-
const session = await createAuthenticatedClient();
|
|
41
|
-
authSpinner.stop();
|
|
3
|
+
import { box, c, sym, cmd } from "../../../lib/colors.js";
|
|
4
|
+
export async function requireLocalSessionStep() {
|
|
5
|
+
const session = await loadSession();
|
|
6
|
+
if (session)
|
|
42
7
|
return session;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
8
|
+
console.log(box(`${c.yellow(sym.warn)} ${c.bold("Você ainda não está autenticado.")}\n` +
|
|
9
|
+
`${c.dim("crie um usuário:")} ${cmd(`${brand.name} register`)}\n` +
|
|
10
|
+
`${c.dim("depois entre com:")} ${cmd(`${brand.name} login`)}\n` +
|
|
11
|
+
`${c.dim("ou seja conduzido:")} ${cmd(`${brand.name} start`)}`, { borderColor: "yellow", title: "Autenticação necessária" }));
|
|
12
|
+
process.exit(1);
|
|
48
13
|
}
|
|
49
14
|
//# sourceMappingURL=auth-step.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-step.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/auth-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth-step.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/auth-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAQ1D,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,OAAO,CAAC,GAAG,CACT,GAAG,CACD,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,IAAI;QACrE,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI;QACjE,GAAG,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI;QAC/D,GAAG,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,QAAQ,CAAC,EAAE,EAChE,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAC5D,CACF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -1,66 +1,39 @@
|
|
|
1
1
|
import { checkbox } from "../../../lib/prompts.js";
|
|
2
2
|
import { section } from "../../../lib/colors.js";
|
|
3
|
-
import { CLIENTS } from "../../../lib/client-install.js";
|
|
4
|
-
import {
|
|
3
|
+
import { CLIENTS } from "../../../lib/clients/client-install.js";
|
|
4
|
+
import { installOpencodeGlobal } from "../../../lib/clients/client-configs.js";
|
|
5
5
|
import { printInstallResult } from "../../ui/render.js";
|
|
6
|
-
import { ensureClientInstalled
|
|
6
|
+
import { ensureClientInstalled } from "../../flows/clients.js";
|
|
7
7
|
import { initCopy } from "../../copy.js";
|
|
8
|
-
/** Rótulo + rotina de instalação de cada escolha do checkbox (exceto `cowork`,
|
|
9
|
-
* que tem ativação assíncrona própria — ver `activateCoworkIfChosen`). */
|
|
10
8
|
export const CLIENT_INSTALLERS = {
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
"opencode-global": {
|
|
10
|
+
label: "OpenCode (global)",
|
|
11
|
+
run: (_cwd, profileMcps) => installOpencodeGlobal(profileMcps),
|
|
12
|
+
},
|
|
15
13
|
};
|
|
16
14
|
export async function promptClientChoices() {
|
|
17
15
|
return checkbox({
|
|
18
16
|
message: initCopy.clientsPrompt,
|
|
19
17
|
all: true,
|
|
20
|
-
choices: [
|
|
21
|
-
{ name: initCopy.clientChoices.claudeGlobal, value: "claude-code-global" },
|
|
22
|
-
{ name: initCopy.clientChoices.codexGlobal, value: "codex-global" },
|
|
23
|
-
{ name: initCopy.clientChoices.cowork, value: "cowork" },
|
|
24
|
-
{ name: initCopy.clientChoices.claudeRepo, value: "claude-code-repo" },
|
|
25
|
-
{ name: initCopy.clientChoices.vscodeRepo, value: "vscode-repo" },
|
|
26
|
-
],
|
|
18
|
+
choices: [{ name: initCopy.clientChoices.opencodeGlobal, value: "opencode-global" }],
|
|
27
19
|
});
|
|
28
20
|
}
|
|
29
|
-
|
|
30
|
-
export function installClients(clientConfigs, cwd) {
|
|
21
|
+
export function installClients(clientConfigs, cwd, profileMcps = []) {
|
|
31
22
|
for (const choice of clientConfigs) {
|
|
32
|
-
if (choice === "cowork")
|
|
33
|
-
continue; // ativação async + fallback, tratada abaixo
|
|
34
23
|
const installer = CLIENT_INSTALLERS[choice];
|
|
35
24
|
try {
|
|
36
|
-
printInstallResult(installer.label, installer.run(cwd));
|
|
25
|
+
printInstallResult(installer.label, installer.run(cwd, profileMcps));
|
|
37
26
|
}
|
|
38
27
|
catch (err) {
|
|
39
28
|
console.error(`[erro] Falha ao configurar ${choice}: ${err.message}`);
|
|
40
29
|
}
|
|
41
30
|
}
|
|
42
31
|
}
|
|
43
|
-
export async function activateCoworkIfChosen(clientConfigs) {
|
|
44
|
-
if (!clientConfigs.includes("cowork"))
|
|
45
|
-
return;
|
|
46
|
-
console.log("");
|
|
47
|
-
section("Claude Desktop / Cowork");
|
|
48
|
-
await activateCowork({ interactive: true });
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Dado o resultado do checkbox de clientes, quais IDs (`CLIENTS[id]`) devem
|
|
52
|
-
* ser conferidos como instalados — várias escolhas do mesmo cliente colapsam
|
|
53
|
-
* num id só (ex.: claude-code-global e claude-code-repo → "claude-code").
|
|
54
|
-
*/
|
|
55
32
|
export function resolveChosenClientIds(clientConfigs) {
|
|
56
33
|
const ids = new Set();
|
|
57
34
|
for (const choice of clientConfigs) {
|
|
58
|
-
if (choice
|
|
59
|
-
ids.add("
|
|
60
|
-
if (choice === "codex-global")
|
|
61
|
-
ids.add("codex");
|
|
62
|
-
if (choice === "vscode-repo")
|
|
63
|
-
ids.add("vscode");
|
|
35
|
+
if (choice === "opencode-global")
|
|
36
|
+
ids.add("opencode");
|
|
64
37
|
}
|
|
65
38
|
return ids;
|
|
66
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients-step.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/clients-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"clients-step.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/clients-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAsB,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAUzC,MAAM,CAAC,MAAM,iBAAiB,GAG1B;IACF,iBAAiB,EAAE;QACjB,KAAK,EAAE,mBAAmB;QAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,qBAAqB,CAAC,WAAW,CAAC;KAC/D;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,OAAO,QAAQ,CAAe;QAC5B,OAAO,EAAE,QAAQ,CAAC,aAAa;QAC/B,GAAG,EAAE,IAAI;QACT,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;KACrF,CAAC,CAAC;AACL,CAAC;AAGD,MAAM,UAAU,cAAc,CAC5B,aAA6B,EAC7B,GAAW,EACX,cAAyB,EAAE;IAE3B,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,MAAM,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,sBAAsB,CAAC,aAA6B;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,MAAM,KAAK,iBAAiB;YAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,eAAoC;IAEpC,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,UAAU,EAAE,kCAAkC,CAAC,CAAC;IACxD,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,MAAM,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { confirm } from "../../../lib/prompts.js";
|
|
3
3
|
import { c } from "../../../lib/colors.js";
|
|
4
|
-
import { startSpinner } from "../../../spinner.js";
|
|
5
4
|
import { writeProjectConfig, writeUserConfig, fixGitignoreForSplit, USER_CONFIG_FILE, } from "../../../config.js";
|
|
6
5
|
import { brand } from "../../../brand.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { printContextSummary, printHarnessResult } from "../../ui/render.js";
|
|
6
|
+
import { concatenateRules } from "../../../lib/skills/rules.js";
|
|
7
|
+
import { writeRepoHarness } from "../../../lib/clients/harness.js";
|
|
8
|
+
import { printHarnessResult } from "../../ui/render.js";
|
|
11
9
|
import { initCopy } from "../../copy.js";
|
|
12
|
-
/** Se já existe nio.json, confirma a sobrescrita. `true` = segue com o wizard. */
|
|
13
10
|
export async function confirmOverwriteIfExists(configPath) {
|
|
14
11
|
if (!existsSync(configPath))
|
|
15
12
|
return true;
|
|
@@ -18,44 +15,21 @@ export async function confirmOverwriteIfExists(configPath) {
|
|
|
18
15
|
console.log("Operação cancelada.");
|
|
19
16
|
return overwrite;
|
|
20
17
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Grava a config: `nio.json` (repo, versionado — binding + seleção) + `nio.user.json`
|
|
23
|
-
* (usuário, gitignored — ide). Ajusta o `.gitignore` (ignora só o user file). Best-effort.
|
|
24
|
-
*/
|
|
25
18
|
export function persistConfigStep(config, projectName) {
|
|
26
19
|
writeProjectConfig(config);
|
|
27
20
|
writeUserConfig({ ide: config.ide });
|
|
28
|
-
|
|
21
|
+
const target = projectName
|
|
22
|
+
? ` apontando para ${projectName}`
|
|
23
|
+
: " (setup local — sem projeto vinculado)";
|
|
24
|
+
console.log(`[ok] Criado ${brand.projectConfigFile} (do repo)${target}.`);
|
|
29
25
|
console.log(`${c.dim(` + ${USER_CONFIG_FILE} (suas prefs, gitignored)`)}`);
|
|
30
26
|
try {
|
|
31
27
|
fixGitignoreForSplit();
|
|
32
28
|
console.log(`${c.dim(` + ${USER_CONFIG_FILE} adicionado ao .gitignore`)}`);
|
|
33
29
|
}
|
|
34
30
|
catch {
|
|
35
|
-
/* .gitignore best-effort — não bloqueia o init */
|
|
36
31
|
}
|
|
37
32
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Carrega o contexto do projeto (specs/ADRs/membros) e monta o overview pro
|
|
40
|
-
* AGENTS.md. Falha aqui é degradada: o nio.json já foi salvo, então só avisa
|
|
41
|
-
* e devolve overview vazio.
|
|
42
|
-
*/
|
|
43
|
-
export async function loadContextStep(supabase, config, user) {
|
|
44
|
-
const contextSpinner = startSpinner("Carregando contexto do projeto...");
|
|
45
|
-
try {
|
|
46
|
-
const context = await fetchProjectContext(supabase, config, user);
|
|
47
|
-
contextSpinner.stop();
|
|
48
|
-
printContextSummary(context);
|
|
49
|
-
return buildProjectOverview(context);
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
const message = err instanceof ProjectContextError ? err.message : err.message;
|
|
53
|
-
contextSpinner.fail(`Não foi possível carregar o contexto: ${message}`);
|
|
54
|
-
console.error(`O ${brand.projectConfigFile} foi salvo. Rode \`${brand.name} init\` de novo se precisar revincular.`);
|
|
55
|
-
return "";
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/** Harness no repo: rules concatenadas + AGENTS.md (overview do NOS) + CLAUDE.md. */
|
|
59
33
|
export function writeHarnessStep(config, overview) {
|
|
60
34
|
try {
|
|
61
35
|
const h = writeRepoHarness(process.cwd(), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-step.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/context-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"context-step.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/context-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,UAAkB;IAC/D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,MAAM,UAAU,iBAAiB,CAAC,MAAqB,EAAE,WAAoB;IAC3E,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,WAAW;QACxB,CAAC,CAAC,mBAAmB,WAAW,EAAE;QAClC,CAAC,CAAC,wCAAwC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,iBAAiB,aAAa,MAAM,GAAG,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,gBAAgB,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,CAAC;QACH,oBAAoB,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,gBAAgB,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;AACH,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,MAAqB,EAAE,QAAgB;IACtE,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACxC,aAAa,EAAE,gBAAgB,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC9E,QAAQ;SACT,CAAC,CAAC;QACH,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4CAA6C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { HeadroomRequiredError } from "../../../app/ai-client.js";
|
|
2
|
+
import { brand } from "../../../brand.js";
|
|
3
|
+
import { section, c, sym } from "../../../lib/colors.js";
|
|
4
|
+
export async function handoffToOperator(cwd = process.cwd()) {
|
|
5
|
+
console.log("");
|
|
6
|
+
section("Handoff", "abrindo a interface NIO (via Headroom)");
|
|
7
|
+
try {
|
|
8
|
+
const { launchNioTui } = await import("../../../tui/index.js");
|
|
9
|
+
await launchNioTui({ cwd });
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
if (err instanceof HeadroomRequiredError) {
|
|
13
|
+
console.log(` ${c.yellow(sym.warn)} ${err.message}`);
|
|
14
|
+
console.log(` ${c.dim(`suba o Docker e rode \`${brand.name} ai\` pra entrar na sessão.`)}`);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
throw err;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=handoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAMzD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,SAAS,EAAE,wCAAwC,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC/D,MAAM,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,IAAI,6BAA6B,CAAC,EAAE,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|