@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
package/dist/lib/colors.js
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import boxen from 'boxen';
|
|
3
3
|
import { envName } from '../brand.js';
|
|
4
|
-
/**
|
|
5
|
-
* Camada de estilo do CLI. `chalk` cuida de cor (respeita TTY / `NO_COLOR` /
|
|
6
|
-
* `FORCE_COLOR` sozinho) e `boxen` desenha caixas. Helpers extras: links
|
|
7
|
-
* clicáveis (OSC 8), régua, símbolos e realce de comandos.
|
|
8
|
-
*/
|
|
9
|
-
/** Paleta — `chalk` já é um objeto com `.bold/.dim/.cyan/...`, reexpomos como `c`. */
|
|
10
4
|
export const c = chalk;
|
|
11
|
-
/** Símbolos usados na saída (unicode). */
|
|
12
5
|
export const sym = {
|
|
13
6
|
ok: '✓',
|
|
14
7
|
err: '✗',
|
|
@@ -19,11 +12,9 @@ export const sym = {
|
|
|
19
12
|
warn: '⚠',
|
|
20
13
|
gear: '↻',
|
|
21
14
|
};
|
|
22
|
-
/** Comando destacado (ciano) — o realce padrão pra qualquer coisa executável. */
|
|
23
15
|
export function cmd(s) {
|
|
24
16
|
return chalk.cyan(s);
|
|
25
17
|
}
|
|
26
|
-
/** Selo com fundo colorido — estado bem visível ao lado de um título. */
|
|
27
18
|
export function badge(label, color = 'gray') {
|
|
28
19
|
const bg = {
|
|
29
20
|
green: chalk.bgGreen,
|
|
@@ -33,18 +24,12 @@ export function badge(label, color = 'gray') {
|
|
|
33
24
|
}[color];
|
|
34
25
|
return bg.black(` ${label} `);
|
|
35
26
|
}
|
|
36
|
-
/** Régua horizontal fina. */
|
|
37
27
|
export function rule(width = 58) {
|
|
38
28
|
return chalk.dim('─'.repeat(width));
|
|
39
29
|
}
|
|
40
|
-
/** Realça trechos `entre crases` como comandos (ciano) e remove as crases. */
|
|
41
30
|
export function highlightInlineCode(s) {
|
|
42
31
|
return s.replace(/`([^`]+)`/g, (_m, code) => chalk.cyan(code));
|
|
43
32
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Link clicável via OSC 8 (terminais modernos). Fora de TTY, cai pra
|
|
46
|
-
* `label (url)` em texto plano. Sublinhado em ciano pra parecer link.
|
|
47
|
-
*/
|
|
48
33
|
export function link(url, label = url) {
|
|
49
34
|
if (!process.stdout.isTTY)
|
|
50
35
|
return label === url ? url : `${label} (${url})`;
|
|
@@ -52,7 +37,6 @@ export function link(url, label = url) {
|
|
|
52
37
|
const BEL = '';
|
|
53
38
|
return `${OSC}${url}${BEL}${chalk.cyan.underline(label)}${OSC}${BEL}`;
|
|
54
39
|
}
|
|
55
|
-
/** Caixa (boxen) com defaults do nio; opções sobrescrevíveis. */
|
|
56
40
|
export function box(content, opts = {}) {
|
|
57
41
|
return boxen(content, {
|
|
58
42
|
padding: { top: 0, bottom: 0, left: 1, right: 1 },
|
|
@@ -62,7 +46,6 @@ export function box(content, opts = {}) {
|
|
|
62
46
|
...opts,
|
|
63
47
|
});
|
|
64
48
|
}
|
|
65
|
-
/** Indenta cada linha de um bloco multi-linha (ex.: pra alinhar uma caixa). */
|
|
66
49
|
export function indent(block, spaces = 2) {
|
|
67
50
|
const pad = ' '.repeat(spaces);
|
|
68
51
|
return block
|
|
@@ -70,22 +53,15 @@ export function indent(block, spaces = 2) {
|
|
|
70
53
|
.map((l) => (l.length ? pad + l : l))
|
|
71
54
|
.join('\n');
|
|
72
55
|
}
|
|
73
|
-
/** Título de seção proeminente: negrito + sublinhado, com subtítulo dim opcional. */
|
|
74
56
|
export function sectionTitle(title, subtitle) {
|
|
75
57
|
const head = chalk.bold.underline(title);
|
|
76
58
|
return subtitle ? `${head} ${chalk.dim(subtitle)}` : head;
|
|
77
59
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Limpa a **tela visível** e volta o cursor pro topo — sem apagar o histórico de
|
|
80
|
-
* rolagem (`\x1b[2J\x1b[H`, não `\x1b[3J`), então dá pra rolar pra cima e revisar.
|
|
81
|
-
* Só em TTY; desliga com a env `NO_CLEAR` prefixada da marca (ex.: `NIO_NO_CLEAR=1`).
|
|
82
|
-
*/
|
|
83
60
|
export function clearScreen() {
|
|
84
61
|
if (!process.stdout.isTTY || process.env[envName('NO_CLEAR')])
|
|
85
62
|
return;
|
|
86
63
|
process.stdout.write("\x1b[2J\x1b[H");
|
|
87
64
|
}
|
|
88
|
-
/** Começa uma seção "em tela nova": limpa (se TTY) e imprime o título. */
|
|
89
65
|
export function section(title, subtitle) {
|
|
90
66
|
clearScreen();
|
|
91
67
|
console.log(sectionTitle(title, subtitle));
|
package/dist/lib/colors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/lib/colors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/lib/colors.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,15 +7,10 @@ import { spawn } from "node:child_process";
|
|
|
7
7
|
import { VERSION } from "../version.js";
|
|
8
8
|
import { toolDefinitions } from "../tools/index.js";
|
|
9
9
|
import { brand, envName } from "../brand.js";
|
|
10
|
-
/**
|
|
11
|
-
* Raiz do pacote instalado (onde ficam `dist/` e `node_modules/`).
|
|
12
|
-
* Este módulo compila para dist/lib/cowork-extension.js, então sobe dois níveis.
|
|
13
|
-
*/
|
|
14
10
|
function packageRoot() {
|
|
15
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
16
12
|
return join(here, "..", "..");
|
|
17
13
|
}
|
|
18
|
-
/** Nome + descrição normalizada (espaços colapsados, até 160 chars — limite do MCPB). */
|
|
19
14
|
function mapCoworkTools(tools) {
|
|
20
15
|
return tools.map((t) => ({
|
|
21
16
|
name: t.name,
|
|
@@ -25,7 +20,6 @@ function mapCoworkTools(tools) {
|
|
|
25
20
|
.slice(0, 160),
|
|
26
21
|
}));
|
|
27
22
|
}
|
|
28
|
-
/** Bloco `server` do manifest: como o Claude Desktop sobe o servidor MCP do nio. */
|
|
29
23
|
function buildCoworkServerConfig() {
|
|
30
24
|
return {
|
|
31
25
|
type: "node",
|
|
@@ -37,14 +31,11 @@ function buildCoworkServerConfig() {
|
|
|
37
31
|
[envName('PAT')]: '${user_config.pat}',
|
|
38
32
|
[envName('PROJECT_ID')]: '${user_config.project_id}',
|
|
39
33
|
[envName('REPOSITORY_ID')]: '${user_config.repository_id}',
|
|
40
|
-
// Cowork ignora ~/.claude → o servidor pula o auto-pull e entrega as skills
|
|
41
|
-
// por resources + prompts.
|
|
42
34
|
[envName('CLIENT')]: 'cowork',
|
|
43
35
|
},
|
|
44
36
|
},
|
|
45
37
|
};
|
|
46
38
|
}
|
|
47
|
-
/** Bloco `user_config` do manifest: campos que o app pede na instalação (o PAT). */
|
|
48
39
|
function buildCoworkUserConfig() {
|
|
49
40
|
return {
|
|
50
41
|
pat: {
|
|
@@ -56,7 +47,6 @@ function buildCoworkUserConfig() {
|
|
|
56
47
|
},
|
|
57
48
|
};
|
|
58
49
|
}
|
|
59
|
-
/** Gera o objeto manifest.json (spec MCPB) para a versão atual. */
|
|
60
50
|
export function buildCoworkManifest() {
|
|
61
51
|
return {
|
|
62
52
|
manifest_version: "0.2",
|
|
@@ -65,7 +55,7 @@ export function buildCoworkManifest() {
|
|
|
65
55
|
version: VERSION,
|
|
66
56
|
description: "MCP server pra controlar o NOS — tarefas, kanban e ponto/cronometragem — a partir do Claude Desktop / Cowork.",
|
|
67
57
|
long_description: `Servidor MCP do NOS. Permite ao assistente ler o contexto do projeto, listar/criar/atualizar/mover/comentar tarefas e gerenciar alocações (bater ponto e cronometrar tempo por task). A autenticação usa um PAT do NOS, fornecido via configuração da extensão (${envName('PAT')}).`,
|
|
68
|
-
author: { name: brand.
|
|
58
|
+
author: { name: brand.productName, url: `https://github.com/${brand.githubOrg}` },
|
|
69
59
|
homepage: `https://github.com/${brand.githubOrg}/${brand.githubRepo}#readme`,
|
|
70
60
|
documentation: `https://github.com/${brand.githubOrg}/${brand.githubRepo}#readme`,
|
|
71
61
|
support: `https://github.com/${brand.githubOrg}/${brand.githubRepo}/issues`,
|
|
@@ -79,10 +69,6 @@ export function buildCoworkManifest() {
|
|
|
79
69
|
},
|
|
80
70
|
};
|
|
81
71
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Adiciona recursivamente os arquivos de `localDir` ao zip sob `zipPrefix`,
|
|
84
|
-
* usando separadores POSIX e sem criar entradas de diretório. Pula source maps.
|
|
85
|
-
*/
|
|
86
72
|
function addFilesRecursively(zip, localDir, zipPrefix) {
|
|
87
73
|
for (const entry of readdirSync(localDir, { withFileTypes: true })) {
|
|
88
74
|
const localPath = join(localDir, entry.name);
|
|
@@ -95,15 +81,10 @@ function addFilesRecursively(zip, localDir, zipPrefix) {
|
|
|
95
81
|
}
|
|
96
82
|
}
|
|
97
83
|
}
|
|
98
|
-
/** Pasta de destino do .mcpb: ~/Downloads se existir, senão o home. */
|
|
99
84
|
function defaultOutputDir() {
|
|
100
85
|
const downloads = join(homedir(), "Downloads");
|
|
101
86
|
return existsSync(downloads) ? downloads : homedir();
|
|
102
87
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Gera o pacote .mcpb (manifest + dist + node_modules) a partir da instalação atual.
|
|
105
|
-
* Source maps são omitidos pra reduzir o tamanho.
|
|
106
|
-
*/
|
|
107
88
|
export function generateCoworkExtension(outputDir = defaultOutputDir()) {
|
|
108
89
|
const root = packageRoot();
|
|
109
90
|
const distDir = join(root, "dist");
|
|
@@ -114,8 +95,6 @@ export function generateCoworkExtension(outputDir = defaultOutputDir()) {
|
|
|
114
95
|
const manifest = buildCoworkManifest();
|
|
115
96
|
const zip = new AdmZip();
|
|
116
97
|
zip.addFile("manifest.json", Buffer.from(JSON.stringify(manifest, null, 2) + "\n", "utf8"));
|
|
117
|
-
// Adiciona só arquivos (sem entradas de diretório), como o `mcpb pack` faz —
|
|
118
|
-
// entradas de pasta quebram o instalador do MCPB. Source maps são omitidos.
|
|
119
98
|
addFilesRecursively(zip, distDir, "dist");
|
|
120
99
|
if (existsSync(nodeModulesDir)) {
|
|
121
100
|
addFilesRecursively(zip, nodeModulesDir, "node_modules");
|
|
@@ -124,7 +103,6 @@ export function generateCoworkExtension(outputDir = defaultOutputDir()) {
|
|
|
124
103
|
zip.writeZip(outputPath);
|
|
125
104
|
return { outputPath };
|
|
126
105
|
}
|
|
127
|
-
/** Abre a pasta no explorador de arquivos do SO (best-effort, ignora falhas). */
|
|
128
106
|
export function revealInFileManager(target) {
|
|
129
107
|
const cmd = process.platform === "darwin"
|
|
130
108
|
? "open"
|
|
@@ -137,7 +115,6 @@ export function revealInFileManager(target) {
|
|
|
137
115
|
child.unref();
|
|
138
116
|
}
|
|
139
117
|
catch {
|
|
140
|
-
// sem file manager disponível — ignora
|
|
141
118
|
}
|
|
142
119
|
}
|
|
143
120
|
//# sourceMappingURL=cowork-extension.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cowork-extension.js","sourceRoot":"","sources":["../../src/lib/cowork-extension.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cowork-extension.js","sourceRoot":"","sources":["../../src/lib/cowork-extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/lib/debug.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAGrF,MAAM,UAAU,IAAI,CAAC,GAAG,IAAe;IACrC,IAAI,KAAK;QAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
|
-
import { homePath } from '
|
|
3
|
-
/**
|
|
4
|
-
* Resolve dependências (docs `dependency`) num plano; o IO vive em `dependency-install.ts`
|
|
5
|
-
* (reexportado abaixo). SEGURANÇA: nunca executamos `install:` (só exibição) — lemos campos
|
|
6
|
-
* allowlisted (`npm:`/`skills:`/`git:`), validados por regex, e rodamos via `spawnSync` sem shell.
|
|
7
|
-
*/
|
|
8
|
-
/** Nome de pacote npm (com escopo opcional). Sem espaços/metacaracteres de shell. */
|
|
2
|
+
import { homePath } from '../../brand.js';
|
|
9
3
|
const NPM_NAME_RE = /^(?:@[a-z0-9-][a-z0-9-._]*\/)?[a-z0-9-][a-z0-9-._]*$/i;
|
|
10
|
-
/** Só clones https do GitHub. */
|
|
11
4
|
const GIT_URL_RE = /^https:\/\/github\.com\/[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+(?:\.git)?$/;
|
|
12
|
-
/** Slug pro `npx skills add`: `owner/repo` ou `owner/repo/skill` (skill específica). */
|
|
13
5
|
const SKILLS_REPO_RE = /^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)?$/;
|
|
14
|
-
/** Id de plugin do Claude Code: `plugin@marketplace`. */
|
|
15
6
|
const PLUGIN_ID_RE = /^[A-Za-z0-9._-]+@[A-Za-z0-9._-]+$/;
|
|
16
|
-
/** Onde clonamos deps do tipo `git` (`~/.nio/deps/<id>`). */
|
|
17
7
|
function depsDir() {
|
|
18
8
|
return homePath('deps');
|
|
19
9
|
}
|
|
20
|
-
/** Plano `skills` (skills.sh) a partir de um slug validado, ou `null` se inválido. */
|
|
21
10
|
export function skillsInstallPlan(slug) {
|
|
22
11
|
const s = slug.trim();
|
|
23
12
|
if (!SKILLS_REPO_RE.test(s))
|
|
@@ -37,8 +26,6 @@ function resolveNpmPlan(npm) {
|
|
|
37
26
|
plan: { kind: 'npm', pkg: npm, program: 'npm', args: ['install', '-g', npm], command: `npm install -g ${npm}` },
|
|
38
27
|
};
|
|
39
28
|
}
|
|
40
|
-
// `owner/repo/skill` → instala o skill específico com `--skill` (senão o
|
|
41
|
-
// `skills add` clona o monorepo inteiro e não acha o SKILL.md).
|
|
42
29
|
function resolveSkillsPlan(skills) {
|
|
43
30
|
if (!SKILLS_REPO_RE.test(skills)) {
|
|
44
31
|
return { plan: null, reason: `repo de skills inválido (owner/repo[/skill]): "${skills}"` };
|
|
@@ -67,7 +54,6 @@ function resolveGitPlan(git, id) {
|
|
|
67
54
|
},
|
|
68
55
|
};
|
|
69
56
|
}
|
|
70
|
-
// Plugin do Claude Code: `claude-plugin: <owner/repo> <plugin@marketplace>`.
|
|
71
57
|
function resolveClaudePluginPlan(claudePlugin) {
|
|
72
58
|
const [marketplace, plugin] = claudePlugin.split(/\s+/);
|
|
73
59
|
if (marketplace && plugin && SKILLS_REPO_RE.test(marketplace) && PLUGIN_ID_RE.test(plugin)) {
|
|
@@ -92,13 +78,6 @@ function resolveClaudePluginPlan(claudePlugin) {
|
|
|
92
78
|
function applyPlanResult(base, r) {
|
|
93
79
|
return r.plan ? { ...base, plan: r.plan } : { ...base, reason: r.reason };
|
|
94
80
|
}
|
|
95
|
-
/**
|
|
96
|
-
* Resolve um doc `dependency` num plano de instalação a partir de campos
|
|
97
|
-
* estruturados. Precedência: `npm:` > `skills:` > `git:`. Sem campo válido → `plan: null`.
|
|
98
|
-
* Passos manuais ficam disponíveis mesmo com plano automatizável (ex.: um plugin
|
|
99
|
-
* `claude-plugin` que o Claude Code instala sozinho mas o Codex/Desktop não); sem
|
|
100
|
-
* nenhum instalador automatizável, cai pra instrução manual (plugin/marketplace/UI).
|
|
101
|
-
*/
|
|
102
81
|
export function resolveDependency(node) {
|
|
103
82
|
const fm = node.frontmatter;
|
|
104
83
|
const base = {
|
|
@@ -128,7 +107,6 @@ export function resolveDependency(node) {
|
|
|
128
107
|
return { ...base, manual, reason: 'instalação manual' };
|
|
129
108
|
return { ...base, reason: 'sem instalador estruturado (npm:/skills:/git:/manual:) — instale manualmente' };
|
|
130
109
|
}
|
|
131
|
-
/** `detect:` cru → lista de globs (separados por vírgula/quebra de linha). */
|
|
132
110
|
function parseDetect(value) {
|
|
133
111
|
if (!value)
|
|
134
112
|
return undefined;
|
|
@@ -138,8 +116,5 @@ function parseDetect(value) {
|
|
|
138
116
|
.filter(Boolean);
|
|
139
117
|
return list.length ? list : undefined;
|
|
140
118
|
}
|
|
141
|
-
// Checagem de "já instalado", execução do plano e o marcador de instalações são
|
|
142
|
-
// IO puro — vivem em `dependency-install.ts`. Reexportado daqui pra manter o
|
|
143
|
-
// import único (`from '../lib/dependencies.js'`) pro resto da CLI.
|
|
144
119
|
export { recordDependencyInstalled, isDependencyInstalled, runDependencyInstall, } from './dependency-install.js';
|
|
145
120
|
//# sourceMappingURL=dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/lib/deps/dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
function installerFor(type) {
|
|
3
|
+
switch (type) {
|
|
4
|
+
case 'npm':
|
|
5
|
+
return { program: 'npm', args: ['install'] };
|
|
6
|
+
case 'pip':
|
|
7
|
+
return { program: 'pip', args: ['install', '-r', 'requirements.txt'] };
|
|
8
|
+
case 'cargo':
|
|
9
|
+
return { program: 'cargo', args: ['fetch'] };
|
|
10
|
+
default:
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function installProjectDeps(type, projectPath) {
|
|
15
|
+
const installer = installerFor(type);
|
|
16
|
+
if (!installer) {
|
|
17
|
+
return { ok: false, code: null, error: `sem instalador automático para "${type}"` };
|
|
18
|
+
}
|
|
19
|
+
const res = spawnSync(installer.program, installer.args, {
|
|
20
|
+
cwd: projectPath,
|
|
21
|
+
stdio: 'inherit',
|
|
22
|
+
});
|
|
23
|
+
if (res.error)
|
|
24
|
+
return { ok: false, code: null, error: res.error.message };
|
|
25
|
+
return { ok: res.status === 0, code: res.status };
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=dependency-install-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-install-project.js","sourceRoot":"","sources":["../../../src/lib/deps/dependency-install-project.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,SAAS,YAAY,CAAC,IAAoB;IACxC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,KAAK,KAAK;YACR,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACzE,KAAK,OAAO;YACV,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,kBAAkB,CAAC,IAAoB,EAAE,WAAmB;IAC1E,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,mCAAmC,IAAI,GAAG,EAAE,CAAC;IACtF,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE;QACvD,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC1E,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
2
|
import { existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
|
-
import { dirname, join } from 'node:path';
|
|
5
|
-
import { homePath } from '
|
|
6
|
-
/**
|
|
7
|
-
* Decide se uma dependência já está instalada e executa o plano quando o usuário
|
|
8
|
-
* consente. Complementa `dependencies.ts` (resolução doc → plano) — este módulo é
|
|
9
|
-
* a camada de IO: checagem no disco/subprocesso e o marcador de instalações.
|
|
10
|
-
*/
|
|
11
|
-
/** Registro do que o nio instalou: `~/.nio/installed-deps.json`. */
|
|
4
|
+
import { dirname, join, isAbsolute, parse } from 'node:path';
|
|
5
|
+
import { homePath } from '../../brand.js';
|
|
12
6
|
function markerPath() {
|
|
13
7
|
return homePath('installed-deps.json');
|
|
14
8
|
}
|
|
@@ -20,7 +14,6 @@ function readMarker() {
|
|
|
20
14
|
return {};
|
|
21
15
|
}
|
|
22
16
|
}
|
|
23
|
-
/** Grava que instalamos esta dependência (idempotência p/ `skills`, que não tem local padrão). */
|
|
24
17
|
export function recordDependencyInstalled(dep) {
|
|
25
18
|
const plan = dep.plan;
|
|
26
19
|
if (!plan)
|
|
@@ -31,7 +24,7 @@ export function recordDependencyInstalled(dep) {
|
|
|
31
24
|
? plan.repo
|
|
32
25
|
: plan.kind === 'git'
|
|
33
26
|
? plan.url
|
|
34
|
-
: plan.plugin;
|
|
27
|
+
: plan.plugin;
|
|
35
28
|
const marker = readMarker();
|
|
36
29
|
marker[dep.id] = { kind: plan.kind, ref, at: new Date().toISOString() };
|
|
37
30
|
try {
|
|
@@ -39,36 +32,29 @@ export function recordDependencyInstalled(dep) {
|
|
|
39
32
|
writeFileSync(markerPath(), JSON.stringify(marker, null, 2) + '\n');
|
|
40
33
|
}
|
|
41
34
|
catch {
|
|
42
|
-
// best-effort — não bloqueia se ~/.nio não for gravável.
|
|
43
35
|
}
|
|
44
36
|
}
|
|
45
|
-
/** Existe no disco (segue symlinks; symlink pendurado conta como ausente). */
|
|
46
37
|
function pathExists(p) {
|
|
47
38
|
try {
|
|
48
39
|
lstatSync(p);
|
|
49
|
-
// lstat pega o link; confirma que o alvo resolve (não é pendurado).
|
|
50
40
|
return existsSync(p);
|
|
51
41
|
}
|
|
52
42
|
catch {
|
|
53
43
|
return false;
|
|
54
44
|
}
|
|
55
45
|
}
|
|
56
|
-
/** Expande `~` inicial pro home. */
|
|
57
46
|
function expandTilde(p) {
|
|
58
47
|
return p === '~' || p.startsWith('~/') || p.startsWith('~\\')
|
|
59
48
|
? join(homedir(), p.slice(1))
|
|
60
49
|
: p;
|
|
61
50
|
}
|
|
62
|
-
|
|
63
|
-
* Existe algo casando o glob? Suporta `*` (um segmento) e `**` (qualquer
|
|
64
|
-
* profundidade). Recursão limitada em profundidade pra não varrer demais.
|
|
65
|
-
*/
|
|
66
|
-
function globExists(pattern) {
|
|
51
|
+
export function globExists(pattern) {
|
|
67
52
|
const expanded = expandTilde(pattern.trim());
|
|
68
|
-
const abs =
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
|
|
53
|
+
const abs = isAbsolute(expanded);
|
|
54
|
+
const root = abs ? parse(expanded).root : process.cwd();
|
|
55
|
+
const rest = abs ? expanded.slice(parse(expanded).root.length) : expanded;
|
|
56
|
+
const segs = rest.split(/[/\\]+/).filter(Boolean);
|
|
57
|
+
return matchSegments(root, segs, 0, 0);
|
|
72
58
|
}
|
|
73
59
|
function matchSegments(base, segs, i, depth) {
|
|
74
60
|
if (depth > 12)
|
|
@@ -78,7 +64,7 @@ function matchSegments(base, segs, i, depth) {
|
|
|
78
64
|
const seg = segs[i];
|
|
79
65
|
if (seg === '**') {
|
|
80
66
|
if (matchSegments(base, segs, i + 1, depth))
|
|
81
|
-
return true;
|
|
67
|
+
return true;
|
|
82
68
|
for (const child of childDirs(base)) {
|
|
83
69
|
if (matchSegments(join(base, child), segs, i, depth + 1))
|
|
84
70
|
return true;
|
|
@@ -105,7 +91,6 @@ function childDirs(base) {
|
|
|
105
91
|
return [];
|
|
106
92
|
}
|
|
107
93
|
}
|
|
108
|
-
/** Probe de locais conhecidos onde `npx skills add` costuma instalar. */
|
|
109
94
|
function skillInstalledElsewhere(repo) {
|
|
110
95
|
const name = repo.split('/').pop() ?? repo;
|
|
111
96
|
return [
|
|
@@ -115,13 +100,7 @@ function skillInstalledElsewhere(repo) {
|
|
|
115
100
|
join(process.cwd(), 'skills', name),
|
|
116
101
|
].some((p) => existsSync(p));
|
|
117
102
|
}
|
|
118
|
-
/**
|
|
119
|
-
* Já instalado? `npm` → `npm ls -g <pkg>` (autoritativo); `git` → dir de destino
|
|
120
|
-
* existe; `skills` → sem local padrão, usa o marcador do nio + probe de dirs
|
|
121
|
-
* conhecidos.
|
|
122
|
-
*/
|
|
123
103
|
export function isDependencyInstalled(dep) {
|
|
124
|
-
// `detect:` vale pra qualquer tipo — inclusive `manual:` (plugins), que não têm plano.
|
|
125
104
|
if (dep.detect && dep.detect.some(globExists))
|
|
126
105
|
return true;
|
|
127
106
|
const plan = dep.plan;
|
|
@@ -136,13 +115,9 @@ export function isDependencyInstalled(dep) {
|
|
|
136
115
|
if (plan.kind === 'skills') {
|
|
137
116
|
return Boolean(readMarker()[dep.id]) || skillInstalledElsewhere(plan.repo);
|
|
138
117
|
}
|
|
139
|
-
// claude-plugin: sem local padrão universal — o `detect:` (acima) é o sinal
|
|
140
|
-
// primário; o marcador cobre o caso de já termos instalado nesta máquina.
|
|
141
118
|
return Boolean(readMarker()[dep.id]);
|
|
142
119
|
}
|
|
143
|
-
/** Executa o plano. `spawnSync` com args em array e SEM shell — zero injeção. */
|
|
144
120
|
export function runDependencyInstall(plan) {
|
|
145
|
-
// claude-plugin: vários passos sequenciais (`marketplace add` → `install`).
|
|
146
121
|
if (plan.kind === 'claude-plugin') {
|
|
147
122
|
for (const step of plan.steps) {
|
|
148
123
|
const res = spawnSync(step.program, step.args, { stdio: 'inherit' });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-install.js","sourceRoot":"","sources":["../../../src/lib/deps/dependency-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
function npmInstalled(name, projectPath) {
|
|
4
|
+
return existsSync(join(projectPath, 'node_modules', name));
|
|
5
|
+
}
|
|
6
|
+
const VENV_DIRS = ['.venv', 'venv', 'env'];
|
|
7
|
+
function pipInstalled(name, projectPath) {
|
|
8
|
+
const norm = name.toLowerCase().replace(/[-.]/g, '_');
|
|
9
|
+
for (const venv of VENV_DIRS) {
|
|
10
|
+
for (const sp of sitePackagesDirs(join(projectPath, venv))) {
|
|
11
|
+
for (const entry of safeReaddir(sp)) {
|
|
12
|
+
const e = entry.toLowerCase().replace(/[-.]/g, '_');
|
|
13
|
+
if (e === norm || e.startsWith(`${norm}_`))
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
function sitePackagesDirs(venvPath) {
|
|
21
|
+
const dirs = [join(venvPath, 'Lib', 'site-packages')];
|
|
22
|
+
const libPath = join(venvPath, 'lib');
|
|
23
|
+
for (const py of safeReaddir(libPath)) {
|
|
24
|
+
if (py.startsWith('python'))
|
|
25
|
+
dirs.push(join(libPath, py, 'site-packages'));
|
|
26
|
+
}
|
|
27
|
+
return dirs;
|
|
28
|
+
}
|
|
29
|
+
function cargoInstalled(name, projectPath) {
|
|
30
|
+
try {
|
|
31
|
+
const lock = readFileSync(join(projectPath, 'Cargo.lock'), 'utf8');
|
|
32
|
+
return new RegExp(`^name = "${escapeRegex(name)}"$`, 'm').test(lock);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function escapeRegex(s) {
|
|
39
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
40
|
+
}
|
|
41
|
+
function safeReaddir(dir) {
|
|
42
|
+
try {
|
|
43
|
+
return readdirSync(dir);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function isInstalled(dep, projectPath) {
|
|
50
|
+
switch (dep.type) {
|
|
51
|
+
case 'npm':
|
|
52
|
+
return npmInstalled(dep.name, projectPath);
|
|
53
|
+
case 'pip':
|
|
54
|
+
return pipInstalled(dep.name, projectPath);
|
|
55
|
+
case 'cargo':
|
|
56
|
+
return cargoInstalled(dep.name, projectPath);
|
|
57
|
+
default:
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function missingDependencies(scanned, projectPath, check = isInstalled) {
|
|
62
|
+
return scanned.filter((dep) => !check(dep, projectPath));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=dependency-installed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-installed.js","sourceRoot":"","sources":["../../../src/lib/deps/dependency-installed.ts"],"names":[],"mappings":"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"}
|