workos 0.19.0 → 0.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -646
- package/bin/workos.js +44 -0
- package/package.json +18 -99
- package/LICENSE +0 -47
- package/dist/bin.d.ts +0 -2
- package/dist/bin.js +0 -1790
- package/dist/bin.js.map +0 -1
- package/dist/cli.config.d.ts +0 -88
- package/dist/cli.config.js +0 -110
- package/dist/cli.config.js.map +0 -1
- package/dist/commands/api/catalog.d.ts +0 -23
- package/dist/commands/api/catalog.js +0 -97
- package/dist/commands/api/catalog.js.map +0 -1
- package/dist/commands/api/format.d.ts +0 -5
- package/dist/commands/api/format.js +0 -46
- package/dist/commands/api/format.js.map +0 -1
- package/dist/commands/api/index.d.ts +0 -15
- package/dist/commands/api/index.js +0 -213
- package/dist/commands/api/index.js.map +0 -1
- package/dist/commands/api/interactive.d.ts +0 -3
- package/dist/commands/api/interactive.js +0 -133
- package/dist/commands/api/interactive.js.map +0 -1
- package/dist/commands/api/request.d.ts +0 -14
- package/dist/commands/api/request.js +0 -38
- package/dist/commands/api/request.js.map +0 -1
- package/dist/commands/api-key-mgmt.d.ts +0 -16
- package/dist/commands/api-key-mgmt.js +0 -96
- package/dist/commands/api-key-mgmt.js.map +0 -1
- package/dist/commands/audit-log.d.ts +0 -26
- package/dist/commands/audit-log.js +0 -155
- package/dist/commands/audit-log.js.map +0 -1
- package/dist/commands/auth-status.d.ts +0 -1
- package/dist/commands/auth-status.js +0 -57
- package/dist/commands/auth-status.js.map +0 -1
- package/dist/commands/claim.d.ts +0 -11
- package/dist/commands/claim.js +0 -143
- package/dist/commands/claim.js.map +0 -1
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.js +0 -54
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/connection.d.ts +0 -13
- package/dist/commands/connection.js +0 -96
- package/dist/commands/connection.js.map +0 -1
- package/dist/commands/debug-sso.d.ts +0 -1
- package/dist/commands/debug-sso.js +0 -78
- package/dist/commands/debug-sso.js.map +0 -1
- package/dist/commands/debug-sync.d.ts +0 -1
- package/dist/commands/debug-sync.js +0 -102
- package/dist/commands/debug-sync.js.map +0 -1
- package/dist/commands/debug.d.ts +0 -28
- package/dist/commands/debug.js +0 -406
- package/dist/commands/debug.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -22
- package/dist/commands/dev.js +0 -145
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/directory.d.ts +0 -27
- package/dist/commands/directory.js +0 -176
- package/dist/commands/directory.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -12
- package/dist/commands/doctor.js +0 -41
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/emulate.d.ts +0 -7
- package/dist/commands/emulate.js +0 -69
- package/dist/commands/emulate.js.map +0 -1
- package/dist/commands/env.d.ts +0 -19
- package/dist/commands/env.js +0 -303
- package/dist/commands/env.js.map +0 -1
- package/dist/commands/event.d.ts +0 -9
- package/dist/commands/event.js +0 -43
- package/dist/commands/event.js.map +0 -1
- package/dist/commands/feature-flag.d.ts +0 -12
- package/dist/commands/feature-flag.js +0 -96
- package/dist/commands/feature-flag.js.map +0 -1
- package/dist/commands/install-skill.d.ts +0 -85
- package/dist/commands/install-skill.js +0 -332
- package/dist/commands/install-skill.js.map +0 -1
- package/dist/commands/install.d.ts +0 -6
- package/dist/commands/install.js +0 -51
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/invitation.d.ts +0 -19
- package/dist/commands/invitation.js +0 -94
- package/dist/commands/invitation.js.map +0 -1
- package/dist/commands/list-skills.d.ts +0 -4
- package/dist/commands/list-skills.js +0 -52
- package/dist/commands/list-skills.js.map +0 -1
- package/dist/commands/login.d.ts +0 -32
- package/dist/commands/login.js +0 -239
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -1
- package/dist/commands/logout.js +0 -17
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -14
- package/dist/commands/mcp.js +0 -99
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/membership.d.ts +0 -20
- package/dist/commands/membership.js +0 -129
- package/dist/commands/membership.js.map +0 -1
- package/dist/commands/migrations.d.ts +0 -2
- package/dist/commands/migrations.js +0 -50
- package/dist/commands/migrations.js.map +0 -1
- package/dist/commands/onboard-user.d.ts +0 -7
- package/dist/commands/onboard-user.js +0 -61
- package/dist/commands/onboard-user.js.map +0 -1
- package/dist/commands/org-domain.d.ts +0 -4
- package/dist/commands/org-domain.js +0 -45
- package/dist/commands/org-domain.js.map +0 -1
- package/dist/commands/organization.d.ts +0 -14
- package/dist/commands/organization.js +0 -103
- package/dist/commands/organization.js.map +0 -1
- package/dist/commands/permission.d.ts +0 -20
- package/dist/commands/permission.js +0 -93
- package/dist/commands/permission.js.map +0 -1
- package/dist/commands/portal.d.ts +0 -7
- package/dist/commands/portal.js +0 -26
- package/dist/commands/portal.js.map +0 -1
- package/dist/commands/role.d.ts +0 -17
- package/dist/commands/role.js +0 -122
- package/dist/commands/role.js.map +0 -1
- package/dist/commands/seed.d.ts +0 -6
- package/dist/commands/seed.js +0 -298
- package/dist/commands/seed.js.map +0 -1
- package/dist/commands/session.d.ts +0 -8
- package/dist/commands/session.js +0 -63
- package/dist/commands/session.js.map +0 -1
- package/dist/commands/setup-org.d.ts +0 -6
- package/dist/commands/setup-org.js +0 -99
- package/dist/commands/setup-org.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -50
- package/dist/commands/setup.js +0 -237
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/telemetry.d.ts +0 -3
- package/dist/commands/telemetry.js +0 -88
- package/dist/commands/telemetry.js.map +0 -1
- package/dist/commands/uninstall-skill.d.ts +0 -11
- package/dist/commands/uninstall-skill.js +0 -117
- package/dist/commands/uninstall-skill.js.map +0 -1
- package/dist/commands/user.d.ts +0 -19
- package/dist/commands/user.js +0 -92
- package/dist/commands/user.js.map +0 -1
- package/dist/commands/vault-run.d.ts +0 -13
- package/dist/commands/vault-run.js +0 -195
- package/dist/commands/vault-run.js.map +0 -1
- package/dist/commands/vault.d.ts +0 -25
- package/dist/commands/vault.js +0 -153
- package/dist/commands/vault.js.map +0 -1
- package/dist/commands/verify-login.d.ts +0 -25
- package/dist/commands/verify-login.js +0 -158
- package/dist/commands/verify-login.js.map +0 -1
- package/dist/commands/webhook.d.ts +0 -3
- package/dist/commands/webhook.js +0 -92
- package/dist/commands/webhook.js.map +0 -1
- package/dist/craft-pre-release.sh +0 -10
- package/dist/dashboard/components/AnimatedLogo.d.ts +0 -8
- package/dist/dashboard/components/AnimatedLogo.js +0 -16
- package/dist/dashboard/components/AnimatedLogo.js.map +0 -1
- package/dist/dashboard/components/CompletionView.d.ts +0 -13
- package/dist/dashboard/components/CompletionView.js +0 -25
- package/dist/dashboard/components/CompletionView.js.map +0 -1
- package/dist/dashboard/components/ConfirmPrompt.d.ts +0 -9
- package/dist/dashboard/components/ConfirmPrompt.js +0 -25
- package/dist/dashboard/components/ConfirmPrompt.js.map +0 -1
- package/dist/dashboard/components/CredentialsForm.d.ts +0 -10
- package/dist/dashboard/components/CredentialsForm.js +0 -47
- package/dist/dashboard/components/CredentialsForm.js.map +0 -1
- package/dist/dashboard/components/Dashboard.d.ts +0 -3
- package/dist/dashboard/components/Dashboard.js +0 -100
- package/dist/dashboard/components/Dashboard.js.map +0 -1
- package/dist/dashboard/components/DashboardLayout.d.ts +0 -24
- package/dist/dashboard/components/DashboardLayout.js +0 -25
- package/dist/dashboard/components/DashboardLayout.js.map +0 -1
- package/dist/dashboard/components/DiffPanel.d.ts +0 -9
- package/dist/dashboard/components/DiffPanel.js +0 -136
- package/dist/dashboard/components/DiffPanel.js.map +0 -1
- package/dist/dashboard/components/InlinePrompt.d.ts +0 -8
- package/dist/dashboard/components/InlinePrompt.js +0 -19
- package/dist/dashboard/components/InlinePrompt.js.map +0 -1
- package/dist/dashboard/components/OutputPanel.d.ts +0 -10
- package/dist/dashboard/components/OutputPanel.js +0 -100
- package/dist/dashboard/components/OutputPanel.js.map +0 -1
- package/dist/dashboard/components/Panel.d.ts +0 -12
- package/dist/dashboard/components/Panel.js +0 -6
- package/dist/dashboard/components/Panel.js.map +0 -1
- package/dist/dashboard/components/TextInput.d.ts +0 -13
- package/dist/dashboard/components/TextInput.js +0 -57
- package/dist/dashboard/components/TextInput.js.map +0 -1
- package/dist/dashboard/components/WelcomeArt.d.ts +0 -2
- package/dist/dashboard/components/WelcomeArt.js +0 -9
- package/dist/dashboard/components/WelcomeArt.js.map +0 -1
- package/dist/dashboard/hooks/useAnimation.d.ts +0 -7
- package/dist/dashboard/hooks/useAnimation.js +0 -24
- package/dist/dashboard/hooks/useAnimation.js.map +0 -1
- package/dist/dashboard/hooks/useKeyboard.d.ts +0 -8
- package/dist/dashboard/hooks/useKeyboard.js +0 -18
- package/dist/dashboard/hooks/useKeyboard.js.map +0 -1
- package/dist/dashboard/hooks/useTerminalSize.d.ts +0 -8
- package/dist/dashboard/hooks/useTerminalSize.js +0 -23
- package/dist/dashboard/hooks/useTerminalSize.js.map +0 -1
- package/dist/dashboard/index.d.ts +0 -6
- package/dist/dashboard/index.js +0 -36
- package/dist/dashboard/index.js.map +0 -1
- package/dist/dashboard/lib/diff-utils.d.ts +0 -21
- package/dist/dashboard/lib/diff-utils.js +0 -271
- package/dist/dashboard/lib/diff-utils.js.map +0 -1
- package/dist/dashboard/lib/logo-frames.d.ts +0 -20
- package/dist/dashboard/lib/logo-frames.js +0 -109
- package/dist/dashboard/lib/logo-frames.js.map +0 -1
- package/dist/dashboard/lib/welcome-art.d.ts +0 -1
- package/dist/dashboard/lib/welcome-art.js +0 -5
- package/dist/dashboard/lib/welcome-art.js.map +0 -1
- package/dist/dashboard/types.d.ts +0 -5
- package/dist/dashboard/types.js +0 -2
- package/dist/dashboard/types.js.map +0 -1
- package/dist/doctor/agent-prompt.d.ts +0 -10
- package/dist/doctor/agent-prompt.js +0 -190
- package/dist/doctor/agent-prompt.js.map +0 -1
- package/dist/doctor/checks/ai-analysis.d.ts +0 -9
- package/dist/doctor/checks/ai-analysis.js +0 -124
- package/dist/doctor/checks/ai-analysis.js.map +0 -1
- package/dist/doctor/checks/auth-patterns.d.ts +0 -2
- package/dist/doctor/checks/auth-patterns.js +0 -569
- package/dist/doctor/checks/auth-patterns.js.map +0 -1
- package/dist/doctor/checks/connectivity.d.ts +0 -2
- package/dist/doctor/checks/connectivity.js +0 -35
- package/dist/doctor/checks/connectivity.js.map +0 -1
- package/dist/doctor/checks/dashboard.d.ts +0 -3
- package/dist/doctor/checks/dashboard.js +0 -123
- package/dist/doctor/checks/dashboard.js.map +0 -1
- package/dist/doctor/checks/environment.d.ts +0 -2
- package/dist/doctor/checks/environment.js +0 -86
- package/dist/doctor/checks/environment.js.map +0 -1
- package/dist/doctor/checks/framework.d.ts +0 -2
- package/dist/doctor/checks/framework.js +0 -94
- package/dist/doctor/checks/framework.js.map +0 -1
- package/dist/doctor/checks/host-execution.d.ts +0 -2
- package/dist/doctor/checks/host-execution.js +0 -21
- package/dist/doctor/checks/host-execution.js.map +0 -1
- package/dist/doctor/checks/language.d.ts +0 -6
- package/dist/doctor/checks/language.js +0 -104
- package/dist/doctor/checks/language.js.map +0 -1
- package/dist/doctor/checks/mcp.d.ts +0 -15
- package/dist/doctor/checks/mcp.js +0 -34
- package/dist/doctor/checks/mcp.js.map +0 -1
- package/dist/doctor/checks/runtime.d.ts +0 -2
- package/dist/doctor/checks/runtime.js +0 -20
- package/dist/doctor/checks/runtime.js.map +0 -1
- package/dist/doctor/checks/sdk.d.ts +0 -2
- package/dist/doctor/checks/sdk.js +0 -192
- package/dist/doctor/checks/sdk.js.map +0 -1
- package/dist/doctor/checks/skills.d.ts +0 -9
- package/dist/doctor/checks/skills.js +0 -84
- package/dist/doctor/checks/skills.js.map +0 -1
- package/dist/doctor/clipboard.d.ts +0 -1
- package/dist/doctor/clipboard.js +0 -43
- package/dist/doctor/clipboard.js.map +0 -1
- package/dist/doctor/index.d.ts +0 -26
- package/dist/doctor/index.js +0 -182
- package/dist/doctor/index.js.map +0 -1
- package/dist/doctor/issues.d.ts +0 -63
- package/dist/doctor/issues.js +0 -199
- package/dist/doctor/issues.js.map +0 -1
- package/dist/doctor/json-output.d.ts +0 -2
- package/dist/doctor/json-output.js +0 -4
- package/dist/doctor/json-output.js.map +0 -1
- package/dist/doctor/output.d.ts +0 -7
- package/dist/doctor/output.js +0 -289
- package/dist/doctor/output.js.map +0 -1
- package/dist/doctor/types.d.ts +0 -203
- package/dist/doctor/types.js +0 -2
- package/dist/doctor/types.js.map +0 -1
- package/dist/integrations/dotnet/index.d.ts +0 -8
- package/dist/integrations/dotnet/index.js +0 -170
- package/dist/integrations/dotnet/index.js.map +0 -1
- package/dist/integrations/elixir/index.d.ts +0 -8
- package/dist/integrations/elixir/index.js +0 -146
- package/dist/integrations/elixir/index.js.map +0 -1
- package/dist/integrations/go/index.d.ts +0 -11
- package/dist/integrations/go/index.js +0 -212
- package/dist/integrations/go/index.js.map +0 -1
- package/dist/integrations/kotlin/index.d.ts +0 -4
- package/dist/integrations/kotlin/index.js +0 -78
- package/dist/integrations/kotlin/index.js.map +0 -1
- package/dist/integrations/nextjs/index.d.ts +0 -4
- package/dist/integrations/nextjs/index.js +0 -93
- package/dist/integrations/nextjs/index.js.map +0 -1
- package/dist/integrations/nextjs/utils.d.ts +0 -8
- package/dist/integrations/nextjs/utils.js +0 -68
- package/dist/integrations/nextjs/utils.js.map +0 -1
- package/dist/integrations/node/index.d.ts +0 -4
- package/dist/integrations/node/index.js +0 -52
- package/dist/integrations/node/index.js.map +0 -1
- package/dist/integrations/php/index.d.ts +0 -4
- package/dist/integrations/php/index.js +0 -51
- package/dist/integrations/php/index.js.map +0 -1
- package/dist/integrations/php-laravel/index.d.ts +0 -4
- package/dist/integrations/php-laravel/index.js +0 -51
- package/dist/integrations/php-laravel/index.js.map +0 -1
- package/dist/integrations/python/index.d.ts +0 -9
- package/dist/integrations/python/index.js +0 -249
- package/dist/integrations/python/index.js.map +0 -1
- package/dist/integrations/react/index.d.ts +0 -4
- package/dist/integrations/react/index.js +0 -49
- package/dist/integrations/react/index.js.map +0 -1
- package/dist/integrations/react-router/index.d.ts +0 -4
- package/dist/integrations/react-router/index.js +0 -94
- package/dist/integrations/react-router/index.js.map +0 -1
- package/dist/integrations/react-router/utils.d.ts +0 -10
- package/dist/integrations/react-router/utils.js +0 -162
- package/dist/integrations/react-router/utils.js.map +0 -1
- package/dist/integrations/ruby/index.d.ts +0 -8
- package/dist/integrations/ruby/index.js +0 -137
- package/dist/integrations/ruby/index.js.map +0 -1
- package/dist/integrations/sveltekit/index.d.ts +0 -4
- package/dist/integrations/sveltekit/index.js +0 -50
- package/dist/integrations/sveltekit/index.js.map +0 -1
- package/dist/integrations/tanstack-start/index.d.ts +0 -4
- package/dist/integrations/tanstack-start/index.js +0 -51
- package/dist/integrations/tanstack-start/index.js.map +0 -1
- package/dist/integrations/vanilla-js/index.d.ts +0 -4
- package/dist/integrations/vanilla-js/index.js +0 -49
- package/dist/integrations/vanilla-js/index.js.map +0 -1
- package/dist/lib/__test-helpers__/mock-unclaimed-env-api-error.d.ts +0 -7
- package/dist/lib/__test-helpers__/mock-unclaimed-env-api-error.js +0 -12
- package/dist/lib/__test-helpers__/mock-unclaimed-env-api-error.js.map +0 -1
- package/dist/lib/adapters/cli-adapter.d.ts +0 -113
- package/dist/lib/adapters/cli-adapter.js +0 -641
- package/dist/lib/adapters/cli-adapter.js.map +0 -1
- package/dist/lib/adapters/dashboard-adapter.d.ts +0 -34
- package/dist/lib/adapters/dashboard-adapter.js +0 -121
- package/dist/lib/adapters/dashboard-adapter.js.map +0 -1
- package/dist/lib/adapters/headless-adapter.d.ts +0 -80
- package/dist/lib/adapters/headless-adapter.js +0 -347
- package/dist/lib/adapters/headless-adapter.js.map +0 -1
- package/dist/lib/adapters/index.d.ts +0 -4
- package/dist/lib/adapters/index.js +0 -4
- package/dist/lib/adapters/index.js.map +0 -1
- package/dist/lib/adapters/types.d.ts +0 -41
- package/dist/lib/adapters/types.js +0 -2
- package/dist/lib/adapters/types.js.map +0 -1
- package/dist/lib/agent-interface.d.ts +0 -84
- package/dist/lib/agent-interface.js +0 -840
- package/dist/lib/agent-interface.js.map +0 -1
- package/dist/lib/agent-runner.d.ts +0 -9
- package/dist/lib/agent-runner.js +0 -261
- package/dist/lib/agent-runner.js.map +0 -1
- package/dist/lib/ai-content.d.ts +0 -14
- package/dist/lib/ai-content.js +0 -131
- package/dist/lib/ai-content.js.map +0 -1
- package/dist/lib/api-error-handler.d.ts +0 -18
- package/dist/lib/api-error-handler.js +0 -76
- package/dist/lib/api-error-handler.js.map +0 -1
- package/dist/lib/api-key.d.ts +0 -14
- package/dist/lib/api-key.js +0 -37
- package/dist/lib/api-key.js.map +0 -1
- package/dist/lib/api.d.ts +0 -25
- package/dist/lib/api.js +0 -120
- package/dist/lib/api.js.map +0 -1
- package/dist/lib/background-refresh.d.ts +0 -29
- package/dist/lib/background-refresh.js +0 -95
- package/dist/lib/background-refresh.js.map +0 -1
- package/dist/lib/command-aliases.d.ts +0 -8
- package/dist/lib/command-aliases.js +0 -12
- package/dist/lib/command-aliases.js.map +0 -1
- package/dist/lib/completion-data.d.ts +0 -33
- package/dist/lib/completion-data.js +0 -33
- package/dist/lib/completion-data.js.map +0 -1
- package/dist/lib/config-store.d.ts +0 -63
- package/dist/lib/config-store.js +0 -293
- package/dist/lib/config-store.js.map +0 -1
- package/dist/lib/config.d.ts +0 -34
- package/dist/lib/config.js +0 -37
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/constants.d.ts +0 -51
- package/dist/lib/constants.js +0 -50
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/credential-discovery.d.ts +0 -42
- package/dist/lib/credential-discovery.js +0 -100
- package/dist/lib/credential-discovery.js.map +0 -1
- package/dist/lib/credential-proxy.d.ts +0 -45
- package/dist/lib/credential-proxy.js +0 -364
- package/dist/lib/credential-proxy.js.map +0 -1
- package/dist/lib/credential-store.d.ts +0 -32
- package/dist/lib/credential-store.js +0 -236
- package/dist/lib/credential-store.js.map +0 -1
- package/dist/lib/credentials.d.ts +0 -13
- package/dist/lib/credentials.js +0 -34
- package/dist/lib/credentials.js.map +0 -1
- package/dist/lib/dev-command.d.ts +0 -26
- package/dist/lib/dev-command.js +0 -129
- package/dist/lib/dev-command.js.map +0 -1
- package/dist/lib/device-auth.d.ts +0 -48
- package/dist/lib/device-auth.js +0 -176
- package/dist/lib/device-auth.js.map +0 -1
- package/dist/lib/device-id.d.ts +0 -25
- package/dist/lib/device-id.js +0 -102
- package/dist/lib/device-id.js.map +0 -1
- package/dist/lib/ensure-auth.d.ts +0 -12
- package/dist/lib/ensure-auth.js +0 -111
- package/dist/lib/ensure-auth.js.map +0 -1
- package/dist/lib/env-writer.d.ts +0 -25
- package/dist/lib/env-writer.js +0 -90
- package/dist/lib/env-writer.js.map +0 -1
- package/dist/lib/events.d.ts +0 -248
- package/dist/lib/events.js +0 -19
- package/dist/lib/events.js.map +0 -1
- package/dist/lib/framework-config.d.ts +0 -133
- package/dist/lib/framework-config.js +0 -11
- package/dist/lib/framework-config.js.map +0 -1
- package/dist/lib/helper-functions.d.ts +0 -1
- package/dist/lib/helper-functions.js +0 -2
- package/dist/lib/helper-functions.js.map +0 -1
- package/dist/lib/host-probe.d.ts +0 -28
- package/dist/lib/host-probe.js +0 -154
- package/dist/lib/host-probe.js.map +0 -1
- package/dist/lib/installer-core.d.ts +0 -569
- package/dist/lib/installer-core.js +0 -1134
- package/dist/lib/installer-core.js.map +0 -1
- package/dist/lib/installer-core.types.d.ts +0 -162
- package/dist/lib/installer-core.types.js +0 -2
- package/dist/lib/installer-core.types.js.map +0 -1
- package/dist/lib/mcp-clients.d.ts +0 -45
- package/dist/lib/mcp-clients.js +0 -297
- package/dist/lib/mcp-clients.js.map +0 -1
- package/dist/lib/port-detection.d.ts +0 -7
- package/dist/lib/port-detection.js +0 -244
- package/dist/lib/port-detection.js.map +0 -1
- package/dist/lib/post-install.d.ts +0 -8
- package/dist/lib/post-install.js +0 -51
- package/dist/lib/post-install.js.map +0 -1
- package/dist/lib/preferences.d.ts +0 -143
- package/dist/lib/preferences.js +0 -227
- package/dist/lib/preferences.js.map +0 -1
- package/dist/lib/progress-tracker.d.ts +0 -22
- package/dist/lib/progress-tracker.js +0 -47
- package/dist/lib/progress-tracker.js.map +0 -1
- package/dist/lib/registry.d.ts +0 -42
- package/dist/lib/registry.js +0 -96
- package/dist/lib/registry.js.map +0 -1
- package/dist/lib/resolve-install-credentials.d.ts +0 -11
- package/dist/lib/resolve-install-credentials.js +0 -53
- package/dist/lib/resolve-install-credentials.js.map +0 -1
- package/dist/lib/run-with-core.d.ts +0 -7
- package/dist/lib/run-with-core.js +0 -559
- package/dist/lib/run-with-core.js.map +0 -1
- package/dist/lib/safe-tools.d.ts +0 -2
- package/dist/lib/safe-tools.js +0 -212
- package/dist/lib/safe-tools.js.map +0 -1
- package/dist/lib/scaffold/index.d.ts +0 -1
- package/dist/lib/scaffold/index.js +0 -2
- package/dist/lib/scaffold/index.js.map +0 -1
- package/dist/lib/scaffold/scaffold.d.ts +0 -66
- package/dist/lib/scaffold/scaffold.js +0 -156
- package/dist/lib/scaffold/scaffold.js.map +0 -1
- package/dist/lib/settings.d.ts +0 -60
- package/dist/lib/settings.js +0 -31
- package/dist/lib/settings.js.map +0 -1
- package/dist/lib/staging-api.d.ts +0 -22
- package/dist/lib/staging-api.js +0 -74
- package/dist/lib/staging-api.js.map +0 -1
- package/dist/lib/startup-notice-gate.d.ts +0 -21
- package/dist/lib/startup-notice-gate.js +0 -29
- package/dist/lib/startup-notice-gate.js.map +0 -1
- package/dist/lib/telemetry-notice.d.ts +0 -25
- package/dist/lib/telemetry-notice.js +0 -58
- package/dist/lib/telemetry-notice.js.map +0 -1
- package/dist/lib/token-refresh-client.d.ts +0 -23
- package/dist/lib/token-refresh-client.js +0 -89
- package/dist/lib/token-refresh-client.js.map +0 -1
- package/dist/lib/token-refresh.d.ts +0 -12
- package/dist/lib/token-refresh.js +0 -27
- package/dist/lib/token-refresh.js.map +0 -1
- package/dist/lib/unclaimed-env-api.d.ts +0 -42
- package/dist/lib/unclaimed-env-api.js +0 -139
- package/dist/lib/unclaimed-env-api.js.map +0 -1
- package/dist/lib/unclaimed-env-provision.d.ts +0 -24
- package/dist/lib/unclaimed-env-provision.js +0 -80
- package/dist/lib/unclaimed-env-provision.js.map +0 -1
- package/dist/lib/unclaimed-warning.d.ts +0 -15
- package/dist/lib/unclaimed-warning.js +0 -78
- package/dist/lib/unclaimed-warning.js.map +0 -1
- package/dist/lib/validation/build-validator.d.ts +0 -21
- package/dist/lib/validation/build-validator.js +0 -153
- package/dist/lib/validation/build-validator.js.map +0 -1
- package/dist/lib/validation/index.d.ts +0 -4
- package/dist/lib/validation/index.js +0 -4
- package/dist/lib/validation/index.js.map +0 -1
- package/dist/lib/validation/quick-checks.d.ts +0 -19
- package/dist/lib/validation/quick-checks.js +0 -192
- package/dist/lib/validation/quick-checks.js.map +0 -1
- package/dist/lib/validation/security-checks.d.ts +0 -35
- package/dist/lib/validation/security-checks.js +0 -106
- package/dist/lib/validation/security-checks.js.map +0 -1
- package/dist/lib/validation/types.d.ts +0 -56
- package/dist/lib/validation/types.js +0 -2
- package/dist/lib/validation/types.js.map +0 -1
- package/dist/lib/validation/validator.d.ts +0 -13
- package/dist/lib/validation/validator.js +0 -711
- package/dist/lib/validation/validator.js.map +0 -1
- package/dist/lib/version-check.d.ts +0 -6
- package/dist/lib/version-check.js +0 -46
- package/dist/lib/version-check.js.map +0 -1
- package/dist/lib/workos-api.d.ts +0 -30
- package/dist/lib/workos-api.js +0 -69
- package/dist/lib/workos-api.js.map +0 -1
- package/dist/lib/workos-client.d.ts +0 -58
- package/dist/lib/workos-client.js +0 -140
- package/dist/lib/workos-client.js.map +0 -1
- package/dist/lib/workos-management.d.ts +0 -32
- package/dist/lib/workos-management.js +0 -149
- package/dist/lib/workos-management.js.map +0 -1
- package/dist/nextjs/nextjs-installer-agent.d.ts +0 -5
- package/dist/nextjs/nextjs-installer-agent.js +0 -6
- package/dist/nextjs/nextjs-installer-agent.js.map +0 -1
- package/dist/nextjs/utils.d.ts +0 -4
- package/dist/nextjs/utils.js +0 -5
- package/dist/nextjs/utils.js.map +0 -1
- package/dist/react/react-installer-agent.d.ts +0 -4
- package/dist/react/react-installer-agent.js +0 -5
- package/dist/react/react-installer-agent.js.map +0 -1
- package/dist/react-router/react-router-installer-agent.d.ts +0 -4
- package/dist/react-router/react-router-installer-agent.js +0 -5
- package/dist/react-router/react-router-installer-agent.js.map +0 -1
- package/dist/react-router/utils.d.ts +0 -4
- package/dist/react-router/utils.js +0 -5
- package/dist/react-router/utils.js.map +0 -1
- package/dist/run.d.ts +0 -33
- package/dist/run.js +0 -58
- package/dist/run.js.map +0 -1
- package/dist/smoke-test.ts +0 -881
- package/dist/steps/add-or-update-environment-variables.d.ts +0 -10
- package/dist/steps/add-or-update-environment-variables.js +0 -155
- package/dist/steps/add-or-update-environment-variables.js.map +0 -1
- package/dist/steps/index.d.ts +0 -3
- package/dist/steps/index.js +0 -4
- package/dist/steps/index.js.map +0 -1
- package/dist/steps/run-prettier.d.ts +0 -5
- package/dist/steps/run-prettier.js +0 -50
- package/dist/steps/run-prettier.js.map +0 -1
- package/dist/steps/upload-environment-variables/EnvironmentProvider.d.ts +0 -8
- package/dist/steps/upload-environment-variables/EnvironmentProvider.js +0 -7
- package/dist/steps/upload-environment-variables/EnvironmentProvider.js.map +0 -1
- package/dist/steps/upload-environment-variables/index.d.ts +0 -6
- package/dist/steps/upload-environment-variables/index.js +0 -69
- package/dist/steps/upload-environment-variables/index.js.map +0 -1
- package/dist/steps/upload-environment-variables/providers/vercel.d.ts +0 -14
- package/dist/steps/upload-environment-variables/providers/vercel.js +0 -107
- package/dist/steps/upload-environment-variables/providers/vercel.js.map +0 -1
- package/dist/tanstack-start/tanstack-start-installer-agent.d.ts +0 -4
- package/dist/tanstack-start/tanstack-start-installer-agent.js +0 -5
- package/dist/tanstack-start/tanstack-start-installer-agent.js.map +0 -1
- package/dist/telemetry.d.ts +0 -2
- package/dist/telemetry.js +0 -29
- package/dist/telemetry.js.map +0 -1
- package/dist/test/force-insecure-storage.d.ts +0 -1
- package/dist/test/force-insecure-storage.js +0 -9
- package/dist/test/force-insecure-storage.js.map +0 -1
- package/dist/test/setup.d.ts +0 -1
- package/dist/test/setup.js +0 -38
- package/dist/test/setup.js.map +0 -1
- package/dist/utils/analytics.d.ts +0 -66
- package/dist/utils/analytics.js +0 -330
- package/dist/utils/analytics.js.map +0 -1
- package/dist/utils/bash.d.ts +0 -2
- package/dist/utils/bash.js +0 -17
- package/dist/utils/bash.js.map +0 -1
- package/dist/utils/box.d.ts +0 -9
- package/dist/utils/box.js +0 -15
- package/dist/utils/box.js.map +0 -1
- package/dist/utils/cli-exit.d.ts +0 -15
- package/dist/utils/cli-exit.js +0 -11
- package/dist/utils/cli-exit.js.map +0 -1
- package/dist/utils/cli-symbols.d.ts +0 -44
- package/dist/utils/cli-symbols.js +0 -58
- package/dist/utils/cli-symbols.js.map +0 -1
- package/dist/utils/command-invocation.d.ts +0 -10
- package/dist/utils/command-invocation.js +0 -26
- package/dist/utils/command-invocation.js.map +0 -1
- package/dist/utils/command-telemetry.d.ts +0 -17
- package/dist/utils/command-telemetry.js +0 -67
- package/dist/utils/command-telemetry.js.map +0 -1
- package/dist/utils/crash-reporter.d.ts +0 -13
- package/dist/utils/crash-reporter.js +0 -91
- package/dist/utils/crash-reporter.js.map +0 -1
- package/dist/utils/debug.d.ts +0 -9
- package/dist/utils/debug.js +0 -105
- package/dist/utils/debug.js.map +0 -1
- package/dist/utils/env-parser.d.ts +0 -5
- package/dist/utils/env-parser.js +0 -18
- package/dist/utils/env-parser.js.map +0 -1
- package/dist/utils/environment.d.ts +0 -10
- package/dist/utils/environment.js +0 -69
- package/dist/utils/environment.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -3
- package/dist/utils/errors.js +0 -7
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/exec-file.d.ts +0 -15
- package/dist/utils/exec-file.js +0 -39
- package/dist/utils/exec-file.js.map +0 -1
- package/dist/utils/exit-codes.d.ts +0 -31
- package/dist/utils/exit-codes.js +0 -69
- package/dist/utils/exit-codes.js.map +0 -1
- package/dist/utils/git-utils.d.ts +0 -23
- package/dist/utils/git-utils.js +0 -86
- package/dist/utils/git-utils.js.map +0 -1
- package/dist/utils/help-json.d.ts +0 -58
- package/dist/utils/help-json.js +0 -1577
- package/dist/utils/help-json.js.map +0 -1
- package/dist/utils/interaction-mode.d.ts +0 -25
- package/dist/utils/interaction-mode.js +0 -99
- package/dist/utils/interaction-mode.js.map +0 -1
- package/dist/utils/lock-art.d.ts +0 -4
- package/dist/utils/lock-art.js +0 -73
- package/dist/utils/lock-art.js.map +0 -1
- package/dist/utils/logging.d.ts +0 -9
- package/dist/utils/logging.js +0 -36
- package/dist/utils/logging.js.map +0 -1
- package/dist/utils/ndjson.d.ts +0 -16
- package/dist/utils/ndjson.js +0 -18
- package/dist/utils/ndjson.js.map +0 -1
- package/dist/utils/output.d.ts +0 -60
- package/dist/utils/output.js +0 -124
- package/dist/utils/output.js.map +0 -1
- package/dist/utils/package-json.d.ts +0 -26
- package/dist/utils/package-json.js +0 -32
- package/dist/utils/package-json.js.map +0 -1
- package/dist/utils/package-manager.d.ts +0 -21
- package/dist/utils/package-manager.js +0 -166
- package/dist/utils/package-manager.js.map +0 -1
- package/dist/utils/paths.d.ts +0 -5
- package/dist/utils/paths.js +0 -18
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/platform.d.ts +0 -8
- package/dist/utils/platform.js +0 -7
- package/dist/utils/platform.js.map +0 -1
- package/dist/utils/recovery-hints.d.ts +0 -42
- package/dist/utils/recovery-hints.js +0 -92
- package/dist/utils/recovery-hints.js.map +0 -1
- package/dist/utils/redact.d.ts +0 -5
- package/dist/utils/redact.js +0 -29
- package/dist/utils/redact.js.map +0 -1
- package/dist/utils/register-subcommand.d.ts +0 -10
- package/dist/utils/register-subcommand.js +0 -33
- package/dist/utils/register-subcommand.js.map +0 -1
- package/dist/utils/semver.d.ts +0 -10
- package/dist/utils/semver.js +0 -43
- package/dist/utils/semver.js.map +0 -1
- package/dist/utils/string.d.ts +0 -1
- package/dist/utils/string.js +0 -6
- package/dist/utils/string.js.map +0 -1
- package/dist/utils/summary-box.d.ts +0 -25
- package/dist/utils/summary-box.js +0 -211
- package/dist/utils/summary-box.js.map +0 -1
- package/dist/utils/table.d.ts +0 -5
- package/dist/utils/table.js +0 -18
- package/dist/utils/table.js.map +0 -1
- package/dist/utils/telemetry-client.d.ts +0 -43
- package/dist/utils/telemetry-client.js +0 -171
- package/dist/utils/telemetry-client.js.map +0 -1
- package/dist/utils/telemetry-store-forward.d.ts +0 -11
- package/dist/utils/telemetry-store-forward.js +0 -94
- package/dist/utils/telemetry-store-forward.js.map +0 -1
- package/dist/utils/telemetry-types.d.ts +0 -100
- package/dist/utils/telemetry-types.js +0 -6
- package/dist/utils/telemetry-types.js.map +0 -1
- package/dist/utils/types.d.ts +0 -123
- package/dist/utils/types.js +0 -2
- package/dist/utils/types.js.map +0 -1
- package/dist/utils/ui-utils.d.ts +0 -97
- package/dist/utils/ui-utils.js +0 -449
- package/dist/utils/ui-utils.js.map +0 -1
- package/dist/utils/ui.d.ts +0 -148
- package/dist/utils/ui.js +0 -368
- package/dist/utils/ui.js.map +0 -1
- package/dist/utils/urls.d.ts +0 -13
- package/dist/utils/urls.js +0 -14
- package/dist/utils/urls.js.map +0 -1
- package/dist/utils/vendor/is-unicorn-supported.d.ts +0 -1
- package/dist/utils/vendor/is-unicorn-supported.js +0 -21
- package/dist/utils/vendor/is-unicorn-supported.js.map +0 -1
- package/dist/vanilla-js/vanilla-js-installer-agent.d.ts +0 -4
- package/dist/vanilla-js/vanilla-js-installer-agent.js +0 -5
- package/dist/vanilla-js/vanilla-js-installer-agent.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/doctor/checks/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAA8B,EAAE;QACvD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAsB,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC5F,uEAAuE;QACvE,wEAAwE;QACxE,0DAA0D;QAC1D,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,SAAS,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,MAAM,sBAAsB,EAAE,CAAC;YAC3C,MAAM,CAAC,aAAa,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,cAAc,CAAC;QAChE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC","sourcesContent":["import { detectMcpClients, getCursorConfiguredUrl } from '../../lib/mcp-clients.js';\nimport { MCP_SERVER_URL } from '../../lib/constants.js';\nimport type { McpInfo, McpAgentMcpStatus } from '../types.js';\n\n/**\n * Report the WorkOS MCP server status across detected coding agents.\n *\n * Mirrors checkSkills: per-detected-agent loop, typed `*Info` return, null when\n * no agents are detected (so doctor renders no MCP section for users with no\n * coding agent installed). Report-only — never mutates config (`--fix` does not\n * touch MCP in this phase).\n *\n * Absent MCP is deliberately NOT an issue: the user may have declined the\n * offer. Only Cursor exposes a readable config, so URL drift (\"misconfigured\")\n * is detected for Cursor alone; issues.ts derives a warning from it. Per-agent\n * shell-outs carry the 10s timeout from the client library, keeping doctor fast.\n */\nexport async function checkMcp(): Promise<McpInfo | null> {\n const clients = await detectMcpClients();\n if (clients.length === 0) return null;\n\n const agents = await Promise.all(\n clients.map(async (client): Promise<McpAgentMcpStatus> => {\n const installed = await client.isInstalled();\n const status: McpAgentMcpStatus = { agent: client.displayName, available: true, installed };\n // Cursor is the only client whose config we can read, so it's the only\n // one we can flag for URL drift. A missing/unreadable URL (null) is not\n // \"unexpected\" — only a present-but-different URL counts.\n if (client.key === 'cursor' && installed) {\n const url = await getCursorConfiguredUrl();\n status.misconfigured = url !== null && url !== MCP_SERVER_URL;\n }\n return status;\n }),\n );\n\n return { serverUrl: MCP_SERVER_URL, agents };\n}\n"]}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { detectAllPackageManagers } from '../../utils/package-manager.js';
|
|
2
|
-
import { execFileNoThrow } from '../../utils/exec-file.js';
|
|
3
|
-
export async function checkRuntime(options) {
|
|
4
|
-
const nodeVersion = process.version;
|
|
5
|
-
const managers = detectAllPackageManagers(options);
|
|
6
|
-
const primaryManager = managers[0] ?? null;
|
|
7
|
-
let packageManagerVersion = null;
|
|
8
|
-
if (primaryManager) {
|
|
9
|
-
const result = await execFileNoThrow(primaryManager.name, ['--version']);
|
|
10
|
-
if (result.status === 0) {
|
|
11
|
-
packageManagerVersion = result.stdout.trim();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
nodeVersion,
|
|
16
|
-
packageManager: primaryManager?.label ?? null,
|
|
17
|
-
packageManagerVersion,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=runtime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/doctor/checks/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAsB;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAEpC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAE3C,IAAI,qBAAqB,GAAkB,IAAI,CAAC;IAChD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW;QACX,cAAc,EAAE,cAAc,EAAE,KAAK,IAAI,IAAI;QAC7C,qBAAqB;KACtB,CAAC;AACJ,CAAC","sourcesContent":["import { detectAllPackageManagers } from '../../utils/package-manager.js';\nimport { execFileNoThrow } from '../../utils/exec-file.js';\nimport type { DoctorOptions, RuntimeInfo } from '../types.js';\n\nexport async function checkRuntime(options: DoctorOptions): Promise<RuntimeInfo> {\n const nodeVersion = process.version;\n\n const managers = detectAllPackageManagers(options);\n const primaryManager = managers[0] ?? null;\n\n let packageManagerVersion: string | null = null;\n if (primaryManager) {\n const result = await execFileNoThrow(primaryManager.name, ['--version']);\n if (result.status === 0) {\n packageManagerVersion = result.stdout.trim();\n }\n }\n\n return {\n nodeVersion,\n packageManager: primaryManager?.label ?? null,\n packageManagerVersion,\n };\n}\n"]}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { readFile, readdir } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { readPackageJson, hasPackageInstalled, getPackageVersion } from '../../utils/package-json.js';
|
|
4
|
-
// AuthKit SDKs - check @workos/* scope first, then @workos-inc/*
|
|
5
|
-
const SDK_PACKAGES = [
|
|
6
|
-
// @workos/* scope
|
|
7
|
-
'@workos/authkit-tanstack-react-start',
|
|
8
|
-
'@workos/authkit-sveltekit',
|
|
9
|
-
// @workos-inc/* scope
|
|
10
|
-
'@workos-inc/authkit-nextjs',
|
|
11
|
-
'@workos-inc/authkit-remix',
|
|
12
|
-
'@workos-inc/authkit-react-router',
|
|
13
|
-
'@workos-inc/authkit-react',
|
|
14
|
-
'@workos-inc/authkit-js',
|
|
15
|
-
'@workos-inc/node',
|
|
16
|
-
'workos', // very old legacy
|
|
17
|
-
];
|
|
18
|
-
const AUTHKIT_PACKAGES = new Set([
|
|
19
|
-
'@workos/authkit-tanstack-react-start',
|
|
20
|
-
'@workos/authkit-sveltekit',
|
|
21
|
-
'@workos-inc/authkit-nextjs',
|
|
22
|
-
'@workos-inc/authkit-remix',
|
|
23
|
-
'@workos-inc/authkit-react-router',
|
|
24
|
-
'@workos-inc/authkit-react',
|
|
25
|
-
'@workos-inc/authkit-js',
|
|
26
|
-
]);
|
|
27
|
-
const NO_SDK = {
|
|
28
|
-
name: null,
|
|
29
|
-
version: null,
|
|
30
|
-
latest: null,
|
|
31
|
-
outdated: false,
|
|
32
|
-
isAuthKit: false,
|
|
33
|
-
language: 'javascript',
|
|
34
|
-
};
|
|
35
|
-
export async function checkSdk(options) {
|
|
36
|
-
const packageJson = readPackageJson(options.installDir);
|
|
37
|
-
if (!packageJson) {
|
|
38
|
-
return (await checkNonJsSdk(options.installDir)) ?? NO_SDK;
|
|
39
|
-
}
|
|
40
|
-
const installedSdk = SDK_PACKAGES.find((pkg) => hasPackageInstalled(pkg, packageJson));
|
|
41
|
-
if (!installedSdk) {
|
|
42
|
-
return (await checkNonJsSdk(options.installDir)) ?? NO_SDK;
|
|
43
|
-
}
|
|
44
|
-
const version = getPackageVersion(installedSdk, packageJson) ?? null;
|
|
45
|
-
const latest = await fetchLatestVersion(installedSdk);
|
|
46
|
-
return {
|
|
47
|
-
name: installedSdk,
|
|
48
|
-
version,
|
|
49
|
-
latest,
|
|
50
|
-
outdated: version && latest ? isVersionOutdated(version, latest) : false,
|
|
51
|
-
isAuthKit: AUTHKIT_PACKAGES.has(installedSdk),
|
|
52
|
-
language: 'javascript',
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
async function fetchLatestVersion(packageName) {
|
|
56
|
-
try {
|
|
57
|
-
const controller = new AbortController();
|
|
58
|
-
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
59
|
-
const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`, {
|
|
60
|
-
signal: controller.signal,
|
|
61
|
-
});
|
|
62
|
-
clearTimeout(timeoutId);
|
|
63
|
-
if (!response.ok)
|
|
64
|
-
return null;
|
|
65
|
-
const data = (await response.json());
|
|
66
|
-
return data.version ?? null;
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
const NON_JS_DETECTORS = [
|
|
73
|
-
{
|
|
74
|
-
language: 'python',
|
|
75
|
-
file: 'requirements.txt',
|
|
76
|
-
pattern: /^workos(?:-python)?(?:==|>=|~=|!=)?([\d.]*)/m,
|
|
77
|
-
nameExtract: 'workos-python',
|
|
78
|
-
versionGroup: 1,
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
language: 'python',
|
|
82
|
-
file: 'pyproject.toml',
|
|
83
|
-
pattern: /workos(?:-python)?/m,
|
|
84
|
-
nameExtract: 'workos-python',
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
language: 'ruby',
|
|
88
|
-
file: 'Gemfile',
|
|
89
|
-
pattern: /gem\s+['"]workos(?:-ruby)?['"]/m,
|
|
90
|
-
nameExtract: 'workos-ruby',
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
language: 'go',
|
|
94
|
-
file: 'go.mod',
|
|
95
|
-
pattern: /github\.com\/workos\/workos-go(?:\/v\d+)?\s+(v[\d.]+)/m,
|
|
96
|
-
nameExtract: 'workos-go',
|
|
97
|
-
versionGroup: 1,
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
language: 'java',
|
|
101
|
-
file: 'pom.xml',
|
|
102
|
-
pattern: /<groupId>com\.workos<\/groupId>/m,
|
|
103
|
-
nameExtract: 'workos-java',
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
language: 'java',
|
|
107
|
-
file: 'build.gradle',
|
|
108
|
-
pattern: /com\.workos/m,
|
|
109
|
-
nameExtract: 'workos-java',
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
language: 'php',
|
|
113
|
-
file: 'composer.json',
|
|
114
|
-
pattern: /"workos\/workos-php"/m,
|
|
115
|
-
nameExtract: 'workos-php',
|
|
116
|
-
},
|
|
117
|
-
];
|
|
118
|
-
async function readFileSafe(path) {
|
|
119
|
-
try {
|
|
120
|
-
return await readFile(path, 'utf-8');
|
|
121
|
-
}
|
|
122
|
-
catch {
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
async function checkNonJsSdk(installDir) {
|
|
127
|
-
for (const detector of NON_JS_DETECTORS) {
|
|
128
|
-
const content = await readFileSafe(join(installDir, detector.file));
|
|
129
|
-
if (!content)
|
|
130
|
-
continue;
|
|
131
|
-
const match = content.match(detector.pattern);
|
|
132
|
-
if (match) {
|
|
133
|
-
const version = detector.versionGroup ? match[detector.versionGroup] || null : null;
|
|
134
|
-
return {
|
|
135
|
-
name: detector.nameExtract ?? null,
|
|
136
|
-
version,
|
|
137
|
-
latest: null, // No registry checks for non-JS in this phase
|
|
138
|
-
outdated: false,
|
|
139
|
-
isAuthKit: false,
|
|
140
|
-
language: detector.language,
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// Check .csproj files for .NET (requires directory listing)
|
|
145
|
-
try {
|
|
146
|
-
const entries = await readdir(installDir);
|
|
147
|
-
for (const entry of entries) {
|
|
148
|
-
if (entry.endsWith('.csproj')) {
|
|
149
|
-
const content = await readFileSafe(join(installDir, entry));
|
|
150
|
-
if (content && /PackageReference.*Include="WorkOS\.net"/i.test(content)) {
|
|
151
|
-
const versionMatch = content.match(/Include="WorkOS\.net".*?Version="([\d.]+)"/i);
|
|
152
|
-
return {
|
|
153
|
-
name: 'WorkOS.net',
|
|
154
|
-
version: versionMatch?.[1] ?? null,
|
|
155
|
-
latest: null,
|
|
156
|
-
outdated: false,
|
|
157
|
-
isAuthKit: false,
|
|
158
|
-
language: 'dotnet',
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
catch {
|
|
165
|
-
// directory not readable
|
|
166
|
-
}
|
|
167
|
-
return null;
|
|
168
|
-
}
|
|
169
|
-
function isVersionOutdated(current, latest) {
|
|
170
|
-
// Strip semver range prefixes (^, ~, etc.) and workspace protocol
|
|
171
|
-
const cleanCurrent = current.replace(/^[\^~>=<]+/, '').replace(/^workspace:\*?/, '');
|
|
172
|
-
const cleanLatest = latest.replace(/^[\^~>=<]+/, '');
|
|
173
|
-
// Handle prerelease: "1.0.0-beta.1" → "1.0.0", "-beta.1"
|
|
174
|
-
const [currBase] = cleanCurrent.split('-');
|
|
175
|
-
const [latBase] = cleanLatest.split('-');
|
|
176
|
-
const currParts = currBase.split('.').map(Number);
|
|
177
|
-
const latParts = latBase.split('.').map(Number);
|
|
178
|
-
// If we got NaN values, we can't reliably compare - assume not outdated
|
|
179
|
-
if (currParts.some(isNaN) || latParts.some(isNaN)) {
|
|
180
|
-
return false;
|
|
181
|
-
}
|
|
182
|
-
const [currMajor = 0, currMinor = 0, currPatch = 0] = currParts;
|
|
183
|
-
const [latMajor = 0, latMinor = 0, latPatch = 0] = latParts;
|
|
184
|
-
if (latMajor > currMajor)
|
|
185
|
-
return true;
|
|
186
|
-
if (latMajor === currMajor && latMinor > currMinor)
|
|
187
|
-
return true;
|
|
188
|
-
if (latMajor === currMajor && latMinor === currMinor && latPatch > currPatch)
|
|
189
|
-
return true;
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
192
|
-
//# sourceMappingURL=sdk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/doctor/checks/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile, readdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { readPackageJson, hasPackageInstalled, getPackageVersion } from '../../utils/package-json.js';\nimport type { DoctorOptions, SdkInfo } from '../types.js';\n\n// AuthKit SDKs - check @workos/* scope first, then @workos-inc/*\nconst SDK_PACKAGES = [\n // @workos/* scope\n '@workos/authkit-tanstack-react-start',\n '@workos/authkit-sveltekit',\n // @workos-inc/* scope\n '@workos-inc/authkit-nextjs',\n '@workos-inc/authkit-remix',\n '@workos-inc/authkit-react-router',\n '@workos-inc/authkit-react',\n '@workos-inc/authkit-js',\n '@workos-inc/node',\n 'workos', // very old legacy\n] as const;\n\nconst AUTHKIT_PACKAGES = new Set([\n '@workos/authkit-tanstack-react-start',\n '@workos/authkit-sveltekit',\n '@workos-inc/authkit-nextjs',\n '@workos-inc/authkit-remix',\n '@workos-inc/authkit-react-router',\n '@workos-inc/authkit-react',\n '@workos-inc/authkit-js',\n]);\n\nconst NO_SDK: SdkInfo = {\n name: null,\n version: null,\n latest: null,\n outdated: false,\n isAuthKit: false,\n language: 'javascript',\n};\n\nexport async function checkSdk(options: DoctorOptions): Promise<SdkInfo> {\n const packageJson = readPackageJson(options.installDir);\n if (!packageJson) {\n return (await checkNonJsSdk(options.installDir)) ?? NO_SDK;\n }\n\n const installedSdk = SDK_PACKAGES.find((pkg) => hasPackageInstalled(pkg, packageJson));\n if (!installedSdk) {\n return (await checkNonJsSdk(options.installDir)) ?? NO_SDK;\n }\n\n const version = getPackageVersion(installedSdk, packageJson) ?? null;\n const latest = await fetchLatestVersion(installedSdk);\n\n return {\n name: installedSdk,\n version,\n latest,\n outdated: version && latest ? isVersionOutdated(version, latest) : false,\n isAuthKit: AUTHKIT_PACKAGES.has(installedSdk),\n language: 'javascript',\n };\n}\n\nasync function fetchLatestVersion(packageName: string): Promise<string | null> {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 5000);\n\n const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`, {\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) return null;\n const data = (await response.json()) as { version?: string };\n return data.version ?? null;\n } catch {\n return null;\n }\n}\n\ninterface NonJsDetector {\n language: string;\n file: string;\n pattern: RegExp;\n nameExtract?: string; // Static SDK name when pattern matches\n versionGroup?: number; // Capture group index for version\n}\n\nconst NON_JS_DETECTORS: NonJsDetector[] = [\n {\n language: 'python',\n file: 'requirements.txt',\n pattern: /^workos(?:-python)?(?:==|>=|~=|!=)?([\\d.]*)/m,\n nameExtract: 'workos-python',\n versionGroup: 1,\n },\n {\n language: 'python',\n file: 'pyproject.toml',\n pattern: /workos(?:-python)?/m,\n nameExtract: 'workos-python',\n },\n {\n language: 'ruby',\n file: 'Gemfile',\n pattern: /gem\\s+['\"]workos(?:-ruby)?['\"]/m,\n nameExtract: 'workos-ruby',\n },\n {\n language: 'go',\n file: 'go.mod',\n pattern: /github\\.com\\/workos\\/workos-go(?:\\/v\\d+)?\\s+(v[\\d.]+)/m,\n nameExtract: 'workos-go',\n versionGroup: 1,\n },\n {\n language: 'java',\n file: 'pom.xml',\n pattern: /<groupId>com\\.workos<\\/groupId>/m,\n nameExtract: 'workos-java',\n },\n {\n language: 'java',\n file: 'build.gradle',\n pattern: /com\\.workos/m,\n nameExtract: 'workos-java',\n },\n {\n language: 'php',\n file: 'composer.json',\n pattern: /\"workos\\/workos-php\"/m,\n nameExtract: 'workos-php',\n },\n];\n\nasync function readFileSafe(path: string): Promise<string | null> {\n try {\n return await readFile(path, 'utf-8');\n } catch {\n return null;\n }\n}\n\nasync function checkNonJsSdk(installDir: string): Promise<SdkInfo | null> {\n for (const detector of NON_JS_DETECTORS) {\n const content = await readFileSafe(join(installDir, detector.file));\n if (!content) continue;\n\n const match = content.match(detector.pattern);\n if (match) {\n const version = detector.versionGroup ? match[detector.versionGroup] || null : null;\n return {\n name: detector.nameExtract ?? null,\n version,\n latest: null, // No registry checks for non-JS in this phase\n outdated: false,\n isAuthKit: false,\n language: detector.language,\n };\n }\n }\n\n // Check .csproj files for .NET (requires directory listing)\n try {\n const entries = await readdir(installDir);\n for (const entry of entries) {\n if (entry.endsWith('.csproj')) {\n const content = await readFileSafe(join(installDir, entry));\n if (content && /PackageReference.*Include=\"WorkOS\\.net\"/i.test(content)) {\n const versionMatch = content.match(/Include=\"WorkOS\\.net\".*?Version=\"([\\d.]+)\"/i);\n return {\n name: 'WorkOS.net',\n version: versionMatch?.[1] ?? null,\n latest: null,\n outdated: false,\n isAuthKit: false,\n language: 'dotnet',\n };\n }\n }\n }\n } catch {\n // directory not readable\n }\n\n return null;\n}\n\nfunction isVersionOutdated(current: string, latest: string): boolean {\n // Strip semver range prefixes (^, ~, etc.) and workspace protocol\n const cleanCurrent = current.replace(/^[\\^~>=<]+/, '').replace(/^workspace:\\*?/, '');\n const cleanLatest = latest.replace(/^[\\^~>=<]+/, '');\n\n // Handle prerelease: \"1.0.0-beta.1\" → \"1.0.0\", \"-beta.1\"\n const [currBase] = cleanCurrent.split('-');\n const [latBase] = cleanLatest.split('-');\n\n const currParts = currBase.split('.').map(Number);\n const latParts = latBase.split('.').map(Number);\n\n // If we got NaN values, we can't reliably compare - assume not outdated\n if (currParts.some(isNaN) || latParts.some(isNaN)) {\n return false;\n }\n\n const [currMajor = 0, currMinor = 0, currPatch = 0] = currParts;\n const [latMajor = 0, latMinor = 0, latPatch = 0] = latParts;\n\n if (latMajor > currMajor) return true;\n if (latMajor === currMajor && latMinor > currMinor) return true;\n if (latMajor === currMajor && latMinor === currMinor && latPatch > currPatch) return true;\n return false;\n}\n"]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { SkillsInfo } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Check the freshness of auto-installed WorkOS skills across detected coding
|
|
4
|
-
* agents. Compares each agent's version marker (written by autoInstallSkills)
|
|
5
|
-
* against the bundled @workos/skills version the CLI ships with. Returns null
|
|
6
|
-
* when no agents have a WorkOS skill installed at all — no noise for users who
|
|
7
|
-
* never installed through the CLI.
|
|
8
|
-
*/
|
|
9
|
-
export declare function checkSkills(home?: string): Promise<SkillsInfo | null>;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { homedir } from 'node:os';
|
|
2
|
-
import { access, readFile } from 'node:fs/promises';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import semver from 'semver';
|
|
5
|
-
import { createAgents, getBundledSkillsVersion, SKILL_VERSION_MARKER_FILENAME } from '../../commands/install-skill.js';
|
|
6
|
-
async function pathExists(p) {
|
|
7
|
-
try {
|
|
8
|
-
await access(p);
|
|
9
|
-
return true;
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Stale = installed version is strictly older than the bundled version.
|
|
17
|
-
* String inequality would also fire when installed > bundled (user installed
|
|
18
|
-
* via a newer CLI then downgraded), and the SKILLS_OUTDATED remediation would
|
|
19
|
-
* silently downgrade their agent's skills. Use semver ordering so we only
|
|
20
|
-
* recommend an update when the bundled set is actually ahead.
|
|
21
|
-
*
|
|
22
|
-
* Falls back to string inequality when either version can't be parsed as
|
|
23
|
-
* semver — better to flag a possibly-stale skill than to ignore drift entirely.
|
|
24
|
-
*/
|
|
25
|
-
function isStale(installed, bundled) {
|
|
26
|
-
const installedValid = semver.valid(installed);
|
|
27
|
-
const bundledValid = semver.valid(bundled);
|
|
28
|
-
if (installedValid && bundledValid) {
|
|
29
|
-
return semver.lt(installedValid, bundledValid);
|
|
30
|
-
}
|
|
31
|
-
return installed !== bundled;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Check the freshness of auto-installed WorkOS skills across detected coding
|
|
35
|
-
* agents. Compares each agent's version marker (written by autoInstallSkills)
|
|
36
|
-
* against the bundled @workos/skills version the CLI ships with. Returns null
|
|
37
|
-
* when no agents have a WorkOS skill installed at all — no noise for users who
|
|
38
|
-
* never installed through the CLI.
|
|
39
|
-
*/
|
|
40
|
-
export async function checkSkills(home = homedir()) {
|
|
41
|
-
const bundledVersion = await getBundledSkillsVersion();
|
|
42
|
-
const agents = createAgents(home);
|
|
43
|
-
const statuses = [];
|
|
44
|
-
for (const [, agent] of Object.entries(agents)) {
|
|
45
|
-
// Only report on agents that actually have a WorkOS skill installed.
|
|
46
|
-
// An agent's `skills/` dir existing (e.g. for unrelated user-installed
|
|
47
|
-
// skills) doesn't mean WE installed — and `doctor --fix` would otherwise
|
|
48
|
-
// happily write `workos/` and `workos-widgets/` onto an agent that never
|
|
49
|
-
// opted in. The marker OR a workos/ / workos-widgets/ subdir is the signal
|
|
50
|
-
// (either is enough — older explicit installs of just `workos-widgets`
|
|
51
|
-
// shouldn't be invisible to doctor).
|
|
52
|
-
const markerPath = join(agent.globalSkillsDir, SKILL_VERSION_MARKER_FILENAME);
|
|
53
|
-
const workosSkillDir = join(agent.globalSkillsDir, 'workos');
|
|
54
|
-
const widgetsSkillDir = join(agent.globalSkillsDir, 'workos-widgets');
|
|
55
|
-
const [hasMarker, hasWorkos, hasWidgets] = await Promise.all([
|
|
56
|
-
pathExists(markerPath),
|
|
57
|
-
pathExists(workosSkillDir),
|
|
58
|
-
pathExists(widgetsSkillDir),
|
|
59
|
-
]);
|
|
60
|
-
if (!hasMarker && !hasWorkos && !hasWidgets)
|
|
61
|
-
continue;
|
|
62
|
-
let installedVersion = null;
|
|
63
|
-
if (hasMarker) {
|
|
64
|
-
try {
|
|
65
|
-
installedVersion = (await readFile(markerPath, 'utf8')).trim() || null;
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
installedVersion = null;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
statuses.push({
|
|
72
|
-
agent: agent.displayName,
|
|
73
|
-
installedVersion,
|
|
74
|
-
stale: Boolean(bundledVersion && installedVersion && isStale(installedVersion, bundledVersion)),
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
if (statuses.length === 0)
|
|
78
|
-
return null;
|
|
79
|
-
return {
|
|
80
|
-
bundledVersion,
|
|
81
|
-
agents: statuses,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=skills.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/doctor/checks/skills.ts"],"names":[],"mappings":"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","sourcesContent":["import { homedir } from 'node:os';\nimport { access, readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport semver from 'semver';\nimport { createAgents, getBundledSkillsVersion, SKILL_VERSION_MARKER_FILENAME } from '../../commands/install-skill.js';\nimport type { SkillsInfo, SkillAgentStatus } from '../types.js';\n\nasync function pathExists(p: string): Promise<boolean> {\n try {\n await access(p);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Stale = installed version is strictly older than the bundled version.\n * String inequality would also fire when installed > bundled (user installed\n * via a newer CLI then downgraded), and the SKILLS_OUTDATED remediation would\n * silently downgrade their agent's skills. Use semver ordering so we only\n * recommend an update when the bundled set is actually ahead.\n *\n * Falls back to string inequality when either version can't be parsed as\n * semver — better to flag a possibly-stale skill than to ignore drift entirely.\n */\nfunction isStale(installed: string, bundled: string): boolean {\n const installedValid = semver.valid(installed);\n const bundledValid = semver.valid(bundled);\n if (installedValid && bundledValid) {\n return semver.lt(installedValid, bundledValid);\n }\n return installed !== bundled;\n}\n\n/**\n * Check the freshness of auto-installed WorkOS skills across detected coding\n * agents. Compares each agent's version marker (written by autoInstallSkills)\n * against the bundled @workos/skills version the CLI ships with. Returns null\n * when no agents have a WorkOS skill installed at all — no noise for users who\n * never installed through the CLI.\n */\nexport async function checkSkills(home: string = homedir()): Promise<SkillsInfo | null> {\n const bundledVersion = await getBundledSkillsVersion();\n const agents = createAgents(home);\n\n const statuses: SkillAgentStatus[] = [];\n\n for (const [, agent] of Object.entries(agents)) {\n // Only report on agents that actually have a WorkOS skill installed.\n // An agent's `skills/` dir existing (e.g. for unrelated user-installed\n // skills) doesn't mean WE installed — and `doctor --fix` would otherwise\n // happily write `workos/` and `workos-widgets/` onto an agent that never\n // opted in. The marker OR a workos/ / workos-widgets/ subdir is the signal\n // (either is enough — older explicit installs of just `workos-widgets`\n // shouldn't be invisible to doctor).\n const markerPath = join(agent.globalSkillsDir, SKILL_VERSION_MARKER_FILENAME);\n const workosSkillDir = join(agent.globalSkillsDir, 'workos');\n const widgetsSkillDir = join(agent.globalSkillsDir, 'workos-widgets');\n const [hasMarker, hasWorkos, hasWidgets] = await Promise.all([\n pathExists(markerPath),\n pathExists(workosSkillDir),\n pathExists(widgetsSkillDir),\n ]);\n if (!hasMarker && !hasWorkos && !hasWidgets) continue;\n\n let installedVersion: string | null = null;\n if (hasMarker) {\n try {\n installedVersion = (await readFile(markerPath, 'utf8')).trim() || null;\n } catch {\n installedVersion = null;\n }\n }\n\n statuses.push({\n agent: agent.displayName,\n installedVersion,\n stale: Boolean(bundledVersion && installedVersion && isStale(installedVersion, bundledVersion)),\n });\n }\n\n if (statuses.length === 0) return null;\n\n return {\n bundledVersion,\n agents: statuses,\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function copyToClipboard(text: string): Promise<boolean>;
|
package/dist/doctor/clipboard.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { platform } from 'node:os';
|
|
3
|
-
/**
|
|
4
|
-
* Execute a command with stdin input.
|
|
5
|
-
* Returns true if the command succeeded (exit code 0).
|
|
6
|
-
*/
|
|
7
|
-
function execWithStdin(command, args, input) {
|
|
8
|
-
return new Promise((resolve) => {
|
|
9
|
-
const child = spawn(command, args, {
|
|
10
|
-
shell: false,
|
|
11
|
-
stdio: ['pipe', 'ignore', 'ignore'],
|
|
12
|
-
});
|
|
13
|
-
child.on('error', () => resolve(false));
|
|
14
|
-
child.on('close', (code) => resolve(code === 0));
|
|
15
|
-
child.stdin?.write(input);
|
|
16
|
-
child.stdin?.end();
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
export async function copyToClipboard(text) {
|
|
20
|
-
const os = platform();
|
|
21
|
-
try {
|
|
22
|
-
if (os === 'darwin') {
|
|
23
|
-
// macOS: use pbcopy
|
|
24
|
-
return await execWithStdin('pbcopy', [], text);
|
|
25
|
-
}
|
|
26
|
-
else if (os === 'linux') {
|
|
27
|
-
// Linux: try xclip first, then xsel
|
|
28
|
-
const xclipResult = await execWithStdin('xclip', ['-selection', 'clipboard'], text);
|
|
29
|
-
if (xclipResult)
|
|
30
|
-
return true;
|
|
31
|
-
return await execWithStdin('xsel', ['--clipboard', '--input'], text);
|
|
32
|
-
}
|
|
33
|
-
else if (os === 'win32') {
|
|
34
|
-
// Windows: use clip.exe
|
|
35
|
-
return await execWithStdin('clip', [], text);
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=clipboard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/doctor/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC;;;GAGG;AACH,SAAS,aAAa,CAAC,OAAe,EAAE,IAAc,EAAE,KAAa;IACnE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACjC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAEjD,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEtB,IAAI,CAAC;QACH,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,oBAAoB;YACpB,OAAO,MAAM,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,oCAAoC;YACpC,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;YACpF,IAAI,WAAW;gBAAE,OAAO,IAAI,CAAC;YAC7B,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,wBAAwB;YACxB,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import { spawn } from 'node:child_process';\nimport { platform } from 'node:os';\n\n/**\n * Execute a command with stdin input.\n * Returns true if the command succeeded (exit code 0).\n */\nfunction execWithStdin(command: string, args: string[], input: string): Promise<boolean> {\n return new Promise((resolve) => {\n const child = spawn(command, args, {\n shell: false,\n stdio: ['pipe', 'ignore', 'ignore'],\n });\n\n child.on('error', () => resolve(false));\n child.on('close', (code) => resolve(code === 0));\n\n child.stdin?.write(input);\n child.stdin?.end();\n });\n}\n\nexport async function copyToClipboard(text: string): Promise<boolean> {\n const os = platform();\n\n try {\n if (os === 'darwin') {\n // macOS: use pbcopy\n return await execWithStdin('pbcopy', [], text);\n } else if (os === 'linux') {\n // Linux: try xclip first, then xsel\n const xclipResult = await execWithStdin('xclip', ['-selection', 'clipboard'], text);\n if (xclipResult) return true;\n return await execWithStdin('xsel', ['--clipboard', '--input'], text);\n } else if (os === 'win32') {\n // Windows: use clip.exe\n return await execWithStdin('clip', [], text);\n }\n return false;\n } catch {\n return false;\n }\n}\n"]}
|
package/dist/doctor/index.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { DoctorOptions, DoctorReport, SkillsRefreshResult } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Skills `--fix` is allowed to refresh. Hardcoded — NOT derived from
|
|
4
|
-
* discoverSkills — so future bundled skills require an explicit opt-in here
|
|
5
|
-
* before doctor will write to their target directory. This is the contract's
|
|
6
|
-
* promise that `--fix` only ever touches `workos/` and `workos-widgets/`.
|
|
7
|
-
*/
|
|
8
|
-
export declare const FIXABLE_SKILLS: readonly ["workos", "workos-widgets"];
|
|
9
|
-
/**
|
|
10
|
-
* Refresh stale WorkOS skills if `--fix` is set and at least one agent is
|
|
11
|
-
* stale or has no marker. Always re-reads `checkSkills()` after a successful
|
|
12
|
-
* refresh so detectIssues sees the post-refresh state and we don't ship a
|
|
13
|
-
* doctor report that simultaneously claims "fixed" and "still stale".
|
|
14
|
-
*
|
|
15
|
-
* Extracted from runDoctor for unit testability — runDoctor itself depends on
|
|
16
|
-
* eight upstream checks that are expensive to mock.
|
|
17
|
-
*/
|
|
18
|
-
export declare function maybeRefreshSkills(options: Pick<DoctorOptions, 'fix'>, skills: DoctorReport['skills']): Promise<{
|
|
19
|
-
skillsRefresh?: SkillsRefreshResult;
|
|
20
|
-
skills: DoctorReport['skills'];
|
|
21
|
-
}>;
|
|
22
|
-
export declare function runDoctor(options: DoctorOptions): Promise<DoctorReport>;
|
|
23
|
-
export declare function outputReport(report: DoctorReport, options: DoctorOptions): Promise<void>;
|
|
24
|
-
export { formatReport } from './output.js';
|
|
25
|
-
export { formatReportAsJson } from './json-output.js';
|
|
26
|
-
export type { DoctorReport, DoctorOptions } from './types.js';
|
package/dist/doctor/index.js
DELETED
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { checkSdk } from './checks/sdk.js';
|
|
2
|
-
import { checkFramework } from './checks/framework.js';
|
|
3
|
-
import { checkRuntime } from './checks/runtime.js';
|
|
4
|
-
import { checkLanguage } from './checks/language.js';
|
|
5
|
-
import { checkEnvironment } from './checks/environment.js';
|
|
6
|
-
import { checkConnectivity } from './checks/connectivity.js';
|
|
7
|
-
import { checkHostExecution } from './checks/host-execution.js';
|
|
8
|
-
import { checkDashboardSettings, compareRedirectUris } from './checks/dashboard.js';
|
|
9
|
-
import { checkAuthPatterns } from './checks/auth-patterns.js';
|
|
10
|
-
import { checkAiAnalysis } from './checks/ai-analysis.js';
|
|
11
|
-
import { checkSkills } from './checks/skills.js';
|
|
12
|
-
import { checkMcp } from './checks/mcp.js';
|
|
13
|
-
import { refreshWorkOSSkills } from '../commands/install-skill.js';
|
|
14
|
-
import { detectIssues } from './issues.js';
|
|
15
|
-
import { formatReport } from './output.js';
|
|
16
|
-
import { formatReportAsJson } from './json-output.js';
|
|
17
|
-
import { copyToClipboard } from './clipboard.js';
|
|
18
|
-
import { getInteractionMode } from '../utils/interaction-mode.js';
|
|
19
|
-
import Chalk from 'chalk';
|
|
20
|
-
const DOCTOR_VERSION = '1.0.0';
|
|
21
|
-
/**
|
|
22
|
-
* Skills `--fix` is allowed to refresh. Hardcoded — NOT derived from
|
|
23
|
-
* discoverSkills — so future bundled skills require an explicit opt-in here
|
|
24
|
-
* before doctor will write to their target directory. This is the contract's
|
|
25
|
-
* promise that `--fix` only ever touches `workos/` and `workos-widgets/`.
|
|
26
|
-
*/
|
|
27
|
-
export const FIXABLE_SKILLS = ['workos', 'workos-widgets'];
|
|
28
|
-
/**
|
|
29
|
-
* Refresh stale WorkOS skills if `--fix` is set and at least one agent is
|
|
30
|
-
* stale or has no marker. Always re-reads `checkSkills()` after a successful
|
|
31
|
-
* refresh so detectIssues sees the post-refresh state and we don't ship a
|
|
32
|
-
* doctor report that simultaneously claims "fixed" and "still stale".
|
|
33
|
-
*
|
|
34
|
-
* Extracted from runDoctor for unit testability — runDoctor itself depends on
|
|
35
|
-
* eight upstream checks that are expensive to mock.
|
|
36
|
-
*/
|
|
37
|
-
export async function maybeRefreshSkills(options, skills) {
|
|
38
|
-
if (!options.fix || !skills)
|
|
39
|
-
return { skills };
|
|
40
|
-
const stalePresent = skills.agents.some((a) => a.stale || a.installedVersion === null);
|
|
41
|
-
if (!stalePresent)
|
|
42
|
-
return { skills };
|
|
43
|
-
const refresh = await refreshWorkOSSkills({
|
|
44
|
-
// Explicit allowlist — NOT discoverSkills — so the contract's
|
|
45
|
-
// workos/+workos-widgets-only constraint can't drift.
|
|
46
|
-
skills: [...FIXABLE_SKILLS],
|
|
47
|
-
});
|
|
48
|
-
if (!refresh)
|
|
49
|
-
return { skills };
|
|
50
|
-
return {
|
|
51
|
-
skillsRefresh: {
|
|
52
|
-
before: refresh.perAgentBefore,
|
|
53
|
-
after: refresh.perAgentAfter,
|
|
54
|
-
skillsInstalled: refresh.skills,
|
|
55
|
-
},
|
|
56
|
-
skills: (await checkSkills()) ?? undefined,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
export async function runDoctor(options) {
|
|
60
|
-
const interactionMode = getInteractionMode();
|
|
61
|
-
// Environment check first - loads project's .env/.env.local files
|
|
62
|
-
// Must run before connectivity so the resolved base URL is available
|
|
63
|
-
const { info: environment, raw: envRaw } = checkEnvironment(options);
|
|
64
|
-
// Run remaining checks concurrently
|
|
65
|
-
const [sdk, framework, runtime, connectivity, language, hostExecution, mcpResult] = await Promise.all([
|
|
66
|
-
checkSdk(options),
|
|
67
|
-
checkFramework(options),
|
|
68
|
-
checkRuntime(options),
|
|
69
|
-
checkConnectivity(options, environment.baseUrl ?? 'https://api.workos.com'),
|
|
70
|
-
checkLanguage(options.installDir),
|
|
71
|
-
checkHostExecution(),
|
|
72
|
-
checkMcp(),
|
|
73
|
-
]);
|
|
74
|
-
// Normalize the check's null (no agents detected) to undefined for the report.
|
|
75
|
-
const mcp = mcpResult ?? undefined;
|
|
76
|
-
let skills = (await checkSkills()) ?? undefined;
|
|
77
|
-
// `--fix`: refresh stale WorkOS skills BEFORE earlyIssues + AI analysis so
|
|
78
|
-
// every downstream consumer (issue detection, AI prompt context) sees the
|
|
79
|
-
// post-refresh skill state and doesn't reference a SKILLS_OUTDATED warning
|
|
80
|
-
// that was just resolved.
|
|
81
|
-
const refreshOutcome = await maybeRefreshSkills(options, skills);
|
|
82
|
-
const skillsRefresh = refreshOutcome.skillsRefresh;
|
|
83
|
-
skills = refreshOutcome.skills;
|
|
84
|
-
// Dashboard settings + auth patterns + AI analysis (parallel, all need sdk/framework results)
|
|
85
|
-
// AI analysis also receives early issues as context to avoid duplication
|
|
86
|
-
const earlyIssues = detectIssues({
|
|
87
|
-
version: DOCTOR_VERSION,
|
|
88
|
-
timestamp: '',
|
|
89
|
-
interactionMode,
|
|
90
|
-
project: { path: options.installDir, packageManager: runtime.packageManager },
|
|
91
|
-
sdk,
|
|
92
|
-
language,
|
|
93
|
-
runtime,
|
|
94
|
-
framework,
|
|
95
|
-
environment,
|
|
96
|
-
hostExecution,
|
|
97
|
-
connectivity,
|
|
98
|
-
skills,
|
|
99
|
-
mcp,
|
|
100
|
-
});
|
|
101
|
-
const [dashboardResult, authPatterns, aiAnalysis] = await Promise.all([
|
|
102
|
-
checkDashboardSettings(options, environment.apiKeyType, envRaw),
|
|
103
|
-
checkAuthPatterns(options, framework, environment, sdk),
|
|
104
|
-
checkAiAnalysis({ installDir: options.installDir, language, framework, sdk, environment, existingIssues: earlyIssues }, { skipAi: options.skipAi }),
|
|
105
|
-
]);
|
|
106
|
-
// Compute expected redirect URI from framework detection if not set in env
|
|
107
|
-
const redirectUriSource = environment.redirectUri ? 'env' : 'inferred';
|
|
108
|
-
const expectedRedirectUri = environment.redirectUri ??
|
|
109
|
-
(framework.expectedCallbackPath && framework.detectedPort
|
|
110
|
-
? `http://localhost:${framework.detectedPort}${framework.expectedCallbackPath}`
|
|
111
|
-
: null);
|
|
112
|
-
// Compare redirect URIs if we have dashboard data
|
|
113
|
-
const redirectUris = dashboardResult.settings
|
|
114
|
-
? compareRedirectUris(expectedRedirectUri, dashboardResult.settings.redirectUris, redirectUriSource)
|
|
115
|
-
: undefined;
|
|
116
|
-
// Build partial report
|
|
117
|
-
const partialReport = {
|
|
118
|
-
version: DOCTOR_VERSION,
|
|
119
|
-
timestamp: new Date().toISOString(),
|
|
120
|
-
interactionMode,
|
|
121
|
-
project: {
|
|
122
|
-
path: options.installDir,
|
|
123
|
-
packageManager: runtime.packageManager,
|
|
124
|
-
},
|
|
125
|
-
sdk,
|
|
126
|
-
language,
|
|
127
|
-
runtime,
|
|
128
|
-
framework,
|
|
129
|
-
environment,
|
|
130
|
-
hostExecution,
|
|
131
|
-
connectivity,
|
|
132
|
-
credentialValidation: dashboardResult.credentialValidation,
|
|
133
|
-
dashboardSettings: dashboardResult.settings ?? undefined,
|
|
134
|
-
dashboardError: dashboardResult.settings ? undefined : dashboardResult.error,
|
|
135
|
-
redirectUris,
|
|
136
|
-
authPatterns,
|
|
137
|
-
aiAnalysis,
|
|
138
|
-
skills,
|
|
139
|
-
skillsRefresh,
|
|
140
|
-
mcp,
|
|
141
|
-
};
|
|
142
|
-
// Detect issues based on (post-refresh) data.
|
|
143
|
-
const issues = detectIssues(partialReport);
|
|
144
|
-
// Calculate summary
|
|
145
|
-
const errors = issues.filter((i) => i.severity === 'error').length;
|
|
146
|
-
const warnings = issues.filter((i) => i.severity === 'warning').length;
|
|
147
|
-
const report = {
|
|
148
|
-
...partialReport,
|
|
149
|
-
issues,
|
|
150
|
-
summary: {
|
|
151
|
-
errors,
|
|
152
|
-
warnings,
|
|
153
|
-
healthy: errors === 0,
|
|
154
|
-
},
|
|
155
|
-
};
|
|
156
|
-
return report;
|
|
157
|
-
}
|
|
158
|
-
export async function outputReport(report, options) {
|
|
159
|
-
if (options.json) {
|
|
160
|
-
const json = formatReportAsJson(report);
|
|
161
|
-
console.log(json);
|
|
162
|
-
if (options.copy) {
|
|
163
|
-
const success = await copyToClipboard(json);
|
|
164
|
-
if (success) {
|
|
165
|
-
console.error('(Copied to clipboard)');
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
formatReport(report, { verbose: options.verbose });
|
|
171
|
-
if (options.copy) {
|
|
172
|
-
const json = formatReportAsJson(report);
|
|
173
|
-
const success = await copyToClipboard(json);
|
|
174
|
-
if (success) {
|
|
175
|
-
console.log(Chalk.dim('Report copied to clipboard'));
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
export { formatReport } from './output.js';
|
|
181
|
-
export { formatReportAsJson } from './json-output.js';
|
|
182
|
-
//# sourceMappingURL=index.js.map
|