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,347 +0,0 @@
|
|
|
1
|
-
import { writeNDJSON } from '../../utils/ndjson.js';
|
|
2
|
-
import { ExitCode } from '../../utils/exit-codes.js';
|
|
3
|
-
/**
|
|
4
|
-
* Non-interactive adapter for CI/CD and agent consumption.
|
|
5
|
-
*
|
|
6
|
-
* Subscribes to the same installer events as CLIAdapter but never prompts.
|
|
7
|
-
* All decisions are auto-resolved with sensible defaults (overridable via flags).
|
|
8
|
-
* Progress is streamed as NDJSON to stdout.
|
|
9
|
-
*/
|
|
10
|
-
export class HeadlessAdapter {
|
|
11
|
-
emitter;
|
|
12
|
-
sendEvent;
|
|
13
|
-
debug;
|
|
14
|
-
options;
|
|
15
|
-
isStarted = false;
|
|
16
|
-
scaffolded = false;
|
|
17
|
-
lastFileOp = null;
|
|
18
|
-
handlers = new Map();
|
|
19
|
-
constructor(config) {
|
|
20
|
-
this.emitter = config.emitter;
|
|
21
|
-
this.sendEvent = config.sendEvent;
|
|
22
|
-
this.debug = config.debug ?? false;
|
|
23
|
-
this.options = config.options;
|
|
24
|
-
}
|
|
25
|
-
async start() {
|
|
26
|
-
if (this.isStarted)
|
|
27
|
-
return;
|
|
28
|
-
this.isStarted = true;
|
|
29
|
-
// Auth events
|
|
30
|
-
this.subscribe('auth:success', this.handleAuthSuccess);
|
|
31
|
-
this.subscribe('auth:failure', this.handleAuthFailure);
|
|
32
|
-
// Scaffold events (empty-directory app scaffolding) — auto-routed, no prompt
|
|
33
|
-
this.subscribe('scaffold:checking', this.handleScaffoldChecking);
|
|
34
|
-
this.subscribe('scaffold:start', this.handleScaffoldStart);
|
|
35
|
-
this.subscribe('scaffold:progress', this.handleScaffoldProgress);
|
|
36
|
-
this.subscribe('scaffold:complete', this.handleScaffoldComplete);
|
|
37
|
-
this.subscribe('scaffold:failed', this.handleScaffoldFailed);
|
|
38
|
-
// Detection events
|
|
39
|
-
this.subscribe('detection:complete', this.handleDetectionComplete);
|
|
40
|
-
this.subscribe('detection:none', this.handleDetectionNone);
|
|
41
|
-
// Git events — auto-resolve
|
|
42
|
-
this.subscribe('git:dirty', this.handleGitDirty);
|
|
43
|
-
// Credential events — auto-resolve
|
|
44
|
-
this.subscribe('credentials:found', this.handleCredentialsFound);
|
|
45
|
-
this.subscribe('credentials:request', this.handleCredentialsRequest);
|
|
46
|
-
this.subscribe('credentials:env:prompt', this.handleEnvScanPrompt);
|
|
47
|
-
this.subscribe('credentials:env:found', this.handleEnvCredentialsFound);
|
|
48
|
-
// Device auth (should not happen in headless, but log if it does)
|
|
49
|
-
this.subscribe('device:started', this.handleDeviceStarted);
|
|
50
|
-
// Staging
|
|
51
|
-
this.subscribe('staging:fetching', this.handleStagingFetching);
|
|
52
|
-
this.subscribe('staging:success', this.handleStagingSuccess);
|
|
53
|
-
// Config
|
|
54
|
-
this.subscribe('config:complete', this.handleConfigComplete);
|
|
55
|
-
// Agent progress
|
|
56
|
-
this.subscribe('agent:start', this.handleAgentStart);
|
|
57
|
-
this.subscribe('agent:progress', this.handleAgentProgress);
|
|
58
|
-
// File operations + tool calls — path/detail only, never content
|
|
59
|
-
this.subscribe('file:write', this.handleFileWrite);
|
|
60
|
-
this.subscribe('file:edit', this.handleFileEdit);
|
|
61
|
-
this.subscribe('agent:tool', this.handleAgentTool);
|
|
62
|
-
// Validation
|
|
63
|
-
this.subscribe('validation:start', this.handleValidationStart);
|
|
64
|
-
this.subscribe('validation:issues', this.handleValidationIssues);
|
|
65
|
-
this.subscribe('validation:complete', this.handleValidationComplete);
|
|
66
|
-
// Branch — auto-resolve
|
|
67
|
-
this.subscribe('branch:prompt', this.handleBranchPrompt);
|
|
68
|
-
this.subscribe('branch:created', this.handleBranchCreated);
|
|
69
|
-
// Post-install — auto-resolve
|
|
70
|
-
this.subscribe('postinstall:changes', this.handlePostInstallChanges);
|
|
71
|
-
this.subscribe('postinstall:commit:prompt', this.handleCommitPrompt);
|
|
72
|
-
this.subscribe('postinstall:commit:success', this.handleCommitSuccess);
|
|
73
|
-
this.subscribe('postinstall:commit:failed', this.handleCommitFailed);
|
|
74
|
-
this.subscribe('postinstall:pr:prompt', this.handlePrPrompt);
|
|
75
|
-
this.subscribe('postinstall:pr:success', this.handlePrSuccess);
|
|
76
|
-
this.subscribe('postinstall:pr:failed', this.handlePrFailed);
|
|
77
|
-
this.subscribe('postinstall:push:failed', this.handlePushFailed);
|
|
78
|
-
this.subscribe('postinstall:manual', this.handleManualInstructions);
|
|
79
|
-
// Terminal events
|
|
80
|
-
this.subscribe('complete', this.handleComplete);
|
|
81
|
-
this.subscribe('error', this.handleError);
|
|
82
|
-
}
|
|
83
|
-
async stop() {
|
|
84
|
-
if (!this.isStarted)
|
|
85
|
-
return;
|
|
86
|
-
for (const [event, handler] of this.handlers) {
|
|
87
|
-
this.emitter.off(event, handler);
|
|
88
|
-
}
|
|
89
|
-
this.handlers.clear();
|
|
90
|
-
this.isStarted = false;
|
|
91
|
-
}
|
|
92
|
-
subscribe(event, handler) {
|
|
93
|
-
const boundHandler = handler.bind(this);
|
|
94
|
-
this.handlers.set(event, boundHandler);
|
|
95
|
-
this.emitter.on(event, boundHandler);
|
|
96
|
-
}
|
|
97
|
-
debugLog(message) {
|
|
98
|
-
if (this.debug) {
|
|
99
|
-
writeNDJSON({ type: 'debug', message });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// ===== Auth Handlers =====
|
|
103
|
-
handleAuthSuccess = () => {
|
|
104
|
-
writeNDJSON({ type: 'auth:success' });
|
|
105
|
-
};
|
|
106
|
-
handleAuthFailure = ({ message }) => {
|
|
107
|
-
writeNDJSON({ type: 'auth:required', message });
|
|
108
|
-
process.exit(ExitCode.AUTH_REQUIRED);
|
|
109
|
-
};
|
|
110
|
-
// ===== Scaffold Handlers (auto-routed) =====
|
|
111
|
-
handleScaffoldChecking = () => {
|
|
112
|
-
writeNDJSON({ type: 'scaffold:checking' });
|
|
113
|
-
};
|
|
114
|
-
handleScaffoldStart = ({ packageManager }) => {
|
|
115
|
-
writeNDJSON({ type: 'scaffold:start', packageManager });
|
|
116
|
-
};
|
|
117
|
-
// create-next-app output is verbose; surface it only under --debug.
|
|
118
|
-
handleScaffoldProgress = ({ text }) => {
|
|
119
|
-
this.debugLog(text);
|
|
120
|
-
};
|
|
121
|
-
handleScaffoldComplete = () => {
|
|
122
|
-
this.scaffolded = true;
|
|
123
|
-
writeNDJSON({ type: 'scaffold:complete' });
|
|
124
|
-
};
|
|
125
|
-
handleScaffoldFailed = ({ error }) => {
|
|
126
|
-
writeNDJSON({ type: 'scaffold:failed', error });
|
|
127
|
-
};
|
|
128
|
-
// ===== Detection Handlers =====
|
|
129
|
-
handleDetectionComplete = ({ integration }) => {
|
|
130
|
-
writeNDJSON({ type: 'detection:complete', integration });
|
|
131
|
-
};
|
|
132
|
-
handleDetectionNone = () => {
|
|
133
|
-
writeNDJSON({ type: 'detection:none' });
|
|
134
|
-
};
|
|
135
|
-
// ===== Git Handlers (auto-resolve) =====
|
|
136
|
-
handleGitDirty = ({ files }) => {
|
|
137
|
-
writeNDJSON({ type: 'git:status', dirty: true, files });
|
|
138
|
-
if (this.options.noGitCheck || this.options.ci) {
|
|
139
|
-
writeNDJSON({ type: 'git:decision', action: 'continue' });
|
|
140
|
-
this.sendEvent({ type: 'GIT_CONFIRMED' });
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
writeNDJSON({
|
|
144
|
-
type: 'error',
|
|
145
|
-
code: 'git_dirty',
|
|
146
|
-
message: 'Git working tree is dirty in non-interactive mode. ' +
|
|
147
|
-
'Commit or stash your changes, or rerun with --no-git-check to proceed.',
|
|
148
|
-
});
|
|
149
|
-
writeNDJSON({ type: 'git:decision', action: 'cancel' });
|
|
150
|
-
this.sendEvent({ type: 'GIT_CANCELLED' });
|
|
151
|
-
process.exit(ExitCode.GENERAL_ERROR);
|
|
152
|
-
};
|
|
153
|
-
// ===== Credential Handlers (auto-resolve) =====
|
|
154
|
-
handleCredentialsFound = () => {
|
|
155
|
-
writeNDJSON({ type: 'credentials:found', source: 'env' });
|
|
156
|
-
};
|
|
157
|
-
handleCredentialsRequest = ({ requiresApiKey }) => {
|
|
158
|
-
if (!this.options.clientId) {
|
|
159
|
-
writeNDJSON({
|
|
160
|
-
type: 'error',
|
|
161
|
-
code: 'missing_credentials',
|
|
162
|
-
message: 'Client ID required in non-interactive mode. Pass --client-id flag.',
|
|
163
|
-
});
|
|
164
|
-
process.exit(ExitCode.GENERAL_ERROR);
|
|
165
|
-
}
|
|
166
|
-
if (requiresApiKey && !this.options.apiKey) {
|
|
167
|
-
writeNDJSON({
|
|
168
|
-
type: 'error',
|
|
169
|
-
code: 'missing_credentials',
|
|
170
|
-
message: 'API key required for this framework. Pass --api-key flag.',
|
|
171
|
-
});
|
|
172
|
-
process.exit(ExitCode.GENERAL_ERROR);
|
|
173
|
-
}
|
|
174
|
-
writeNDJSON({ type: 'credentials:provided', source: 'flag' });
|
|
175
|
-
this.sendEvent({
|
|
176
|
-
type: 'CREDENTIALS_SUBMITTED',
|
|
177
|
-
apiKey: this.options.apiKey ?? '',
|
|
178
|
-
clientId: this.options.clientId,
|
|
179
|
-
});
|
|
180
|
-
};
|
|
181
|
-
handleEnvScanPrompt = () => {
|
|
182
|
-
writeNDJSON({ type: 'credentials:env:scanning' });
|
|
183
|
-
this.sendEvent({ type: 'ENV_SCAN_APPROVED' });
|
|
184
|
-
};
|
|
185
|
-
handleEnvCredentialsFound = ({ sourcePath }) => {
|
|
186
|
-
writeNDJSON({ type: 'credentials:found', source: 'env', sourcePath });
|
|
187
|
-
};
|
|
188
|
-
// ===== Device Auth (should not occur in headless) =====
|
|
189
|
-
handleDeviceStarted = ({ verificationUri, userCode }) => {
|
|
190
|
-
writeNDJSON({
|
|
191
|
-
type: 'auth:device_required',
|
|
192
|
-
verificationUri,
|
|
193
|
-
userCode,
|
|
194
|
-
message: 'Device auth cannot proceed in non-interactive mode',
|
|
195
|
-
});
|
|
196
|
-
};
|
|
197
|
-
// ===== Staging =====
|
|
198
|
-
handleStagingFetching = () => {
|
|
199
|
-
writeNDJSON({ type: 'staging:fetching' });
|
|
200
|
-
};
|
|
201
|
-
handleStagingSuccess = ({ source }) => {
|
|
202
|
-
writeNDJSON({ type: 'staging:success', source });
|
|
203
|
-
};
|
|
204
|
-
// ===== Config =====
|
|
205
|
-
handleConfigComplete = () => {
|
|
206
|
-
writeNDJSON({ type: 'config:complete' });
|
|
207
|
-
};
|
|
208
|
-
// ===== Agent Progress =====
|
|
209
|
-
handleAgentStart = () => {
|
|
210
|
-
writeNDJSON({ type: 'agent:start' });
|
|
211
|
-
};
|
|
212
|
-
handleAgentProgress = ({ step, detail }) => {
|
|
213
|
-
const message = detail ? `${step}: ${detail}` : step;
|
|
214
|
-
writeNDJSON({ type: 'agent:progress', message });
|
|
215
|
-
};
|
|
216
|
-
// ===== File Operations (path-only, no content) =====
|
|
217
|
-
writeFileOp(type, path) {
|
|
218
|
-
if (path === this.lastFileOp)
|
|
219
|
-
return; // dedupe consecutive same-path ops
|
|
220
|
-
this.lastFileOp = path;
|
|
221
|
-
writeNDJSON({ type, path });
|
|
222
|
-
}
|
|
223
|
-
handleFileWrite = ({ path }) => {
|
|
224
|
-
this.writeFileOp('file:write', path);
|
|
225
|
-
};
|
|
226
|
-
handleFileEdit = ({ path }) => {
|
|
227
|
-
this.writeFileOp('file:edit', path);
|
|
228
|
-
};
|
|
229
|
-
handleAgentTool = ({ kind, detail }) => {
|
|
230
|
-
writeNDJSON({ type: 'agent:tool', kind, detail });
|
|
231
|
-
};
|
|
232
|
-
// ===== Validation =====
|
|
233
|
-
handleValidationStart = ({ framework }) => {
|
|
234
|
-
writeNDJSON({ type: 'validation:start', framework });
|
|
235
|
-
};
|
|
236
|
-
handleValidationIssues = ({ issues }) => {
|
|
237
|
-
for (const issue of issues) {
|
|
238
|
-
writeNDJSON({ type: 'validation:issue', severity: issue.severity, message: issue.message });
|
|
239
|
-
}
|
|
240
|
-
};
|
|
241
|
-
handleValidationComplete = ({ passed, issueCount }) => {
|
|
242
|
-
writeNDJSON({ type: 'validation:complete', passed, issues: issueCount });
|
|
243
|
-
};
|
|
244
|
-
// ===== Branch (auto-resolve) =====
|
|
245
|
-
handleBranchPrompt = () => {
|
|
246
|
-
if (this.options.noBranch) {
|
|
247
|
-
writeNDJSON({ type: 'branch:skipped', reason: '--no-branch flag' });
|
|
248
|
-
this.sendEvent({ type: 'BRANCH_CONTINUE' });
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
writeNDJSON({ type: 'branch:creating' });
|
|
252
|
-
this.sendEvent({ type: 'BRANCH_CREATE' });
|
|
253
|
-
}
|
|
254
|
-
};
|
|
255
|
-
handleBranchCreated = ({ branch }) => {
|
|
256
|
-
writeNDJSON({ type: 'branch:created', name: branch });
|
|
257
|
-
};
|
|
258
|
-
// ===== Post-install (auto-resolve) =====
|
|
259
|
-
handlePostInstallChanges = ({ files }) => {
|
|
260
|
-
writeNDJSON({ type: 'postinstall:changes', files, count: files.length });
|
|
261
|
-
};
|
|
262
|
-
handleCommitPrompt = () => {
|
|
263
|
-
if (this.options.noCommit) {
|
|
264
|
-
writeNDJSON({ type: 'commit:skipped', reason: '--no-commit flag' });
|
|
265
|
-
this.sendEvent({ type: 'COMMIT_DECLINED' });
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
writeNDJSON({ type: 'commit:auto' });
|
|
269
|
-
this.sendEvent({ type: 'COMMIT_APPROVED' });
|
|
270
|
-
}
|
|
271
|
-
};
|
|
272
|
-
handleCommitSuccess = ({ message }) => {
|
|
273
|
-
writeNDJSON({ type: 'commit:created', message });
|
|
274
|
-
};
|
|
275
|
-
handleCommitFailed = ({ error }) => {
|
|
276
|
-
writeNDJSON({ type: 'commit:failed', error });
|
|
277
|
-
};
|
|
278
|
-
handlePrPrompt = () => {
|
|
279
|
-
if (this.options.createPr) {
|
|
280
|
-
writeNDJSON({ type: 'pr:creating' });
|
|
281
|
-
this.sendEvent({ type: 'PR_APPROVED' });
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
writeNDJSON({ type: 'pr:skipped', reason: '--create-pr not set' });
|
|
285
|
-
this.sendEvent({ type: 'PR_DECLINED' });
|
|
286
|
-
}
|
|
287
|
-
};
|
|
288
|
-
handlePrSuccess = ({ url }) => {
|
|
289
|
-
writeNDJSON({ type: 'pr:created', url });
|
|
290
|
-
};
|
|
291
|
-
handlePrFailed = ({ error }) => {
|
|
292
|
-
writeNDJSON({ type: 'pr:failed', error });
|
|
293
|
-
};
|
|
294
|
-
handlePushFailed = ({ error }) => {
|
|
295
|
-
writeNDJSON({ type: 'push:failed', error });
|
|
296
|
-
};
|
|
297
|
-
handleManualInstructions = ({ instructions }) => {
|
|
298
|
-
writeNDJSON({ type: 'postinstall:manual', instructions });
|
|
299
|
-
};
|
|
300
|
-
// ===== Terminal Events =====
|
|
301
|
-
handleComplete = ({ success, summary, completion }) => {
|
|
302
|
-
writeNDJSON({
|
|
303
|
-
type: 'complete',
|
|
304
|
-
success,
|
|
305
|
-
summary,
|
|
306
|
-
scaffolded: this.scaffolded,
|
|
307
|
-
// Spread structured fields only when present, so existing consumers that
|
|
308
|
-
// emit `complete` without `completion` keep their exact payload shape.
|
|
309
|
-
...(completion
|
|
310
|
-
? {
|
|
311
|
-
integration: completion.integration,
|
|
312
|
-
devCommand: completion.devCommand,
|
|
313
|
-
url: completion.url,
|
|
314
|
-
files: completion.files,
|
|
315
|
-
nextSteps: completion.nextSteps,
|
|
316
|
-
}
|
|
317
|
-
: {}),
|
|
318
|
-
});
|
|
319
|
-
};
|
|
320
|
-
handleError = ({ message, stack }) => {
|
|
321
|
-
const isServiceError = /\b50[0-9]\b/.test(message) || /server_error|internal_error|overloaded|service.*unavailable/i.test(message);
|
|
322
|
-
const isRateLimit = /\b429\b/.test(message) || /rate.limit/i.test(message);
|
|
323
|
-
const isNetworkError = /ECONNREFUSED|ETIMEDOUT|ENOTFOUND|fetch failed/i.test(message);
|
|
324
|
-
const isProcessExit = /process exited with code/i.test(message);
|
|
325
|
-
let code = 'installer_error';
|
|
326
|
-
let displayMessage = message;
|
|
327
|
-
if (isServiceError) {
|
|
328
|
-
code = 'service_unavailable';
|
|
329
|
-
displayMessage = 'The AI service is temporarily unavailable. Please try again in a few minutes.';
|
|
330
|
-
}
|
|
331
|
-
else if (isRateLimit) {
|
|
332
|
-
code = 'rate_limited';
|
|
333
|
-
displayMessage = 'The AI service is currently rate-limited. Please wait a minute and try again.';
|
|
334
|
-
}
|
|
335
|
-
else if (isNetworkError) {
|
|
336
|
-
code = 'network_error';
|
|
337
|
-
displayMessage = 'Could not connect to the AI service. Check your internet connection and try again.';
|
|
338
|
-
}
|
|
339
|
-
else if (isProcessExit) {
|
|
340
|
-
code = 'process_error';
|
|
341
|
-
displayMessage = 'The AI agent process exited unexpectedly. Try running again with --debug for details.';
|
|
342
|
-
}
|
|
343
|
-
writeNDJSON({ type: 'error', code, message: displayMessage });
|
|
344
|
-
this.debugLog(stack ?? '');
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
//# sourceMappingURL=headless-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"headless-adapter.js","sourceRoot":"","sources":["../../../src/lib/adapters/headless-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InstallerAdapter, AdapterConfig } from './types.js';\nimport type { InstallerEventEmitter, InstallerEvents } from '../events.js';\nimport { writeNDJSON } from '../../utils/ndjson.js';\nimport { ExitCode } from '../../utils/exit-codes.js';\n\n/**\n * Options controlling headless adapter behavior.\n * Corresponds to CLI flags passed in non-interactive mode.\n */\nexport interface HeadlessOptions {\n apiKey?: string;\n clientId?: string;\n noBranch?: boolean;\n noCommit?: boolean;\n createPr?: boolean;\n noGitCheck?: boolean;\n /** CI mode (WORKOS_MODE=ci, or --ci when headless): pipelines never stop for a dirty tree. */\n ci?: boolean;\n}\n\n/**\n * Non-interactive adapter for CI/CD and agent consumption.\n *\n * Subscribes to the same installer events as CLIAdapter but never prompts.\n * All decisions are auto-resolved with sensible defaults (overridable via flags).\n * Progress is streamed as NDJSON to stdout.\n */\nexport class HeadlessAdapter implements InstallerAdapter {\n readonly emitter: InstallerEventEmitter;\n private sendEvent: AdapterConfig['sendEvent'];\n private debug: boolean;\n private options: HeadlessOptions;\n private isStarted = false;\n private scaffolded = false;\n private lastFileOp: string | null = null;\n private handlers = new Map<string, (...args: unknown[]) => void>();\n\n constructor(config: AdapterConfig & { options: HeadlessOptions }) {\n this.emitter = config.emitter;\n this.sendEvent = config.sendEvent;\n this.debug = config.debug ?? false;\n this.options = config.options;\n }\n\n async start(): Promise<void> {\n if (this.isStarted) return;\n this.isStarted = true;\n\n // Auth events\n this.subscribe('auth:success', this.handleAuthSuccess);\n this.subscribe('auth:failure', this.handleAuthFailure);\n\n // Scaffold events (empty-directory app scaffolding) — auto-routed, no prompt\n this.subscribe('scaffold:checking', this.handleScaffoldChecking);\n this.subscribe('scaffold:start', this.handleScaffoldStart);\n this.subscribe('scaffold:progress', this.handleScaffoldProgress);\n this.subscribe('scaffold:complete', this.handleScaffoldComplete);\n this.subscribe('scaffold:failed', this.handleScaffoldFailed);\n\n // Detection events\n this.subscribe('detection:complete', this.handleDetectionComplete);\n this.subscribe('detection:none', this.handleDetectionNone);\n\n // Git events — auto-resolve\n this.subscribe('git:dirty', this.handleGitDirty);\n\n // Credential events — auto-resolve\n this.subscribe('credentials:found', this.handleCredentialsFound);\n this.subscribe('credentials:request', this.handleCredentialsRequest);\n this.subscribe('credentials:env:prompt', this.handleEnvScanPrompt);\n this.subscribe('credentials:env:found', this.handleEnvCredentialsFound);\n\n // Device auth (should not happen in headless, but log if it does)\n this.subscribe('device:started', this.handleDeviceStarted);\n\n // Staging\n this.subscribe('staging:fetching', this.handleStagingFetching);\n this.subscribe('staging:success', this.handleStagingSuccess);\n\n // Config\n this.subscribe('config:complete', this.handleConfigComplete);\n\n // Agent progress\n this.subscribe('agent:start', this.handleAgentStart);\n this.subscribe('agent:progress', this.handleAgentProgress);\n\n // File operations + tool calls — path/detail only, never content\n this.subscribe('file:write', this.handleFileWrite);\n this.subscribe('file:edit', this.handleFileEdit);\n this.subscribe('agent:tool', this.handleAgentTool);\n\n // Validation\n this.subscribe('validation:start', this.handleValidationStart);\n this.subscribe('validation:issues', this.handleValidationIssues);\n this.subscribe('validation:complete', this.handleValidationComplete);\n\n // Branch — auto-resolve\n this.subscribe('branch:prompt', this.handleBranchPrompt);\n this.subscribe('branch:created', this.handleBranchCreated);\n\n // Post-install — auto-resolve\n this.subscribe('postinstall:changes', this.handlePostInstallChanges);\n this.subscribe('postinstall:commit:prompt', this.handleCommitPrompt);\n this.subscribe('postinstall:commit:success', this.handleCommitSuccess);\n this.subscribe('postinstall:commit:failed', this.handleCommitFailed);\n this.subscribe('postinstall:pr:prompt', this.handlePrPrompt);\n this.subscribe('postinstall:pr:success', this.handlePrSuccess);\n this.subscribe('postinstall:pr:failed', this.handlePrFailed);\n this.subscribe('postinstall:push:failed', this.handlePushFailed);\n this.subscribe('postinstall:manual', this.handleManualInstructions);\n\n // Terminal events\n this.subscribe('complete', this.handleComplete);\n this.subscribe('error', this.handleError);\n }\n\n async stop(): Promise<void> {\n if (!this.isStarted) return;\n\n for (const [event, handler] of this.handlers) {\n this.emitter.off(event as keyof InstallerEvents, handler as never);\n }\n this.handlers.clear();\n this.isStarted = false;\n }\n\n private subscribe<K extends keyof InstallerEvents>(\n event: K,\n handler: (payload: InstallerEvents[K]) => void | Promise<void>,\n ): void {\n const boundHandler = handler.bind(this);\n this.handlers.set(event, boundHandler as (...args: unknown[]) => void);\n this.emitter.on(event, boundHandler);\n }\n\n private debugLog(message: string): void {\n if (this.debug) {\n writeNDJSON({ type: 'debug', message });\n }\n }\n\n // ===== Auth Handlers =====\n\n private handleAuthSuccess = (): void => {\n writeNDJSON({ type: 'auth:success' });\n };\n\n private handleAuthFailure = ({ message }: InstallerEvents['auth:failure']): void => {\n writeNDJSON({ type: 'auth:required', message });\n process.exit(ExitCode.AUTH_REQUIRED);\n };\n\n // ===== Scaffold Handlers (auto-routed) =====\n\n private handleScaffoldChecking = (): void => {\n writeNDJSON({ type: 'scaffold:checking' });\n };\n\n private handleScaffoldStart = ({ packageManager }: InstallerEvents['scaffold:start']): void => {\n writeNDJSON({ type: 'scaffold:start', packageManager });\n };\n\n // create-next-app output is verbose; surface it only under --debug.\n private handleScaffoldProgress = ({ text }: InstallerEvents['scaffold:progress']): void => {\n this.debugLog(text);\n };\n\n private handleScaffoldComplete = (): void => {\n this.scaffolded = true;\n writeNDJSON({ type: 'scaffold:complete' });\n };\n\n private handleScaffoldFailed = ({ error }: InstallerEvents['scaffold:failed']): void => {\n writeNDJSON({ type: 'scaffold:failed', error });\n };\n\n // ===== Detection Handlers =====\n\n private handleDetectionComplete = ({ integration }: InstallerEvents['detection:complete']): void => {\n writeNDJSON({ type: 'detection:complete', integration });\n };\n\n private handleDetectionNone = (): void => {\n writeNDJSON({ type: 'detection:none' });\n };\n\n // ===== Git Handlers (auto-resolve) =====\n\n private handleGitDirty = ({ files }: InstallerEvents['git:dirty']): void => {\n writeNDJSON({ type: 'git:status', dirty: true, files });\n\n if (this.options.noGitCheck || this.options.ci) {\n writeNDJSON({ type: 'git:decision', action: 'continue' });\n this.sendEvent({ type: 'GIT_CONFIRMED' });\n return;\n }\n\n writeNDJSON({\n type: 'error',\n code: 'git_dirty',\n message:\n 'Git working tree is dirty in non-interactive mode. ' +\n 'Commit or stash your changes, or rerun with --no-git-check to proceed.',\n });\n writeNDJSON({ type: 'git:decision', action: 'cancel' });\n this.sendEvent({ type: 'GIT_CANCELLED' });\n process.exit(ExitCode.GENERAL_ERROR);\n };\n\n // ===== Credential Handlers (auto-resolve) =====\n\n private handleCredentialsFound = (): void => {\n writeNDJSON({ type: 'credentials:found', source: 'env' });\n };\n\n private handleCredentialsRequest = ({ requiresApiKey }: InstallerEvents['credentials:request']): void => {\n if (!this.options.clientId) {\n writeNDJSON({\n type: 'error',\n code: 'missing_credentials',\n message: 'Client ID required in non-interactive mode. Pass --client-id flag.',\n });\n process.exit(ExitCode.GENERAL_ERROR);\n }\n\n if (requiresApiKey && !this.options.apiKey) {\n writeNDJSON({\n type: 'error',\n code: 'missing_credentials',\n message: 'API key required for this framework. Pass --api-key flag.',\n });\n process.exit(ExitCode.GENERAL_ERROR);\n }\n\n writeNDJSON({ type: 'credentials:provided', source: 'flag' });\n this.sendEvent({\n type: 'CREDENTIALS_SUBMITTED',\n apiKey: this.options.apiKey ?? '',\n clientId: this.options.clientId,\n });\n };\n\n private handleEnvScanPrompt = (): void => {\n writeNDJSON({ type: 'credentials:env:scanning' });\n this.sendEvent({ type: 'ENV_SCAN_APPROVED' });\n };\n\n private handleEnvCredentialsFound = ({ sourcePath }: InstallerEvents['credentials:env:found']): void => {\n writeNDJSON({ type: 'credentials:found', source: 'env', sourcePath });\n };\n\n // ===== Device Auth (should not occur in headless) =====\n\n private handleDeviceStarted = ({ verificationUri, userCode }: InstallerEvents['device:started']): void => {\n writeNDJSON({\n type: 'auth:device_required',\n verificationUri,\n userCode,\n message: 'Device auth cannot proceed in non-interactive mode',\n });\n };\n\n // ===== Staging =====\n\n private handleStagingFetching = (): void => {\n writeNDJSON({ type: 'staging:fetching' });\n };\n\n private handleStagingSuccess = ({ source }: InstallerEvents['staging:success']): void => {\n writeNDJSON({ type: 'staging:success', source });\n };\n\n // ===== Config =====\n\n private handleConfigComplete = (): void => {\n writeNDJSON({ type: 'config:complete' });\n };\n\n // ===== Agent Progress =====\n\n private handleAgentStart = (): void => {\n writeNDJSON({ type: 'agent:start' });\n };\n\n private handleAgentProgress = ({ step, detail }: InstallerEvents['agent:progress']): void => {\n const message = detail ? `${step}: ${detail}` : step;\n writeNDJSON({ type: 'agent:progress', message });\n };\n\n // ===== File Operations (path-only, no content) =====\n\n private writeFileOp(type: 'file:write' | 'file:edit', path: string): void {\n if (path === this.lastFileOp) return; // dedupe consecutive same-path ops\n this.lastFileOp = path;\n writeNDJSON({ type, path });\n }\n\n private handleFileWrite = ({ path }: InstallerEvents['file:write']): void => {\n this.writeFileOp('file:write', path);\n };\n\n private handleFileEdit = ({ path }: InstallerEvents['file:edit']): void => {\n this.writeFileOp('file:edit', path);\n };\n\n private handleAgentTool = ({ kind, detail }: InstallerEvents['agent:tool']): void => {\n writeNDJSON({ type: 'agent:tool', kind, detail });\n };\n\n // ===== Validation =====\n\n private handleValidationStart = ({ framework }: InstallerEvents['validation:start']): void => {\n writeNDJSON({ type: 'validation:start', framework });\n };\n\n private handleValidationIssues = ({ issues }: InstallerEvents['validation:issues']): void => {\n for (const issue of issues) {\n writeNDJSON({ type: 'validation:issue', severity: issue.severity, message: issue.message });\n }\n };\n\n private handleValidationComplete = ({ passed, issueCount }: InstallerEvents['validation:complete']): void => {\n writeNDJSON({ type: 'validation:complete', passed, issues: issueCount });\n };\n\n // ===== Branch (auto-resolve) =====\n\n private handleBranchPrompt = (): void => {\n if (this.options.noBranch) {\n writeNDJSON({ type: 'branch:skipped', reason: '--no-branch flag' });\n this.sendEvent({ type: 'BRANCH_CONTINUE' });\n } else {\n writeNDJSON({ type: 'branch:creating' });\n this.sendEvent({ type: 'BRANCH_CREATE' });\n }\n };\n\n private handleBranchCreated = ({ branch }: InstallerEvents['branch:created']): void => {\n writeNDJSON({ type: 'branch:created', name: branch });\n };\n\n // ===== Post-install (auto-resolve) =====\n\n private handlePostInstallChanges = ({ files }: InstallerEvents['postinstall:changes']): void => {\n writeNDJSON({ type: 'postinstall:changes', files, count: files.length });\n };\n\n private handleCommitPrompt = (): void => {\n if (this.options.noCommit) {\n writeNDJSON({ type: 'commit:skipped', reason: '--no-commit flag' });\n this.sendEvent({ type: 'COMMIT_DECLINED' });\n } else {\n writeNDJSON({ type: 'commit:auto' });\n this.sendEvent({ type: 'COMMIT_APPROVED' });\n }\n };\n\n private handleCommitSuccess = ({ message }: InstallerEvents['postinstall:commit:success']): void => {\n writeNDJSON({ type: 'commit:created', message });\n };\n\n private handleCommitFailed = ({ error }: InstallerEvents['postinstall:commit:failed']): void => {\n writeNDJSON({ type: 'commit:failed', error });\n };\n\n private handlePrPrompt = (): void => {\n if (this.options.createPr) {\n writeNDJSON({ type: 'pr:creating' });\n this.sendEvent({ type: 'PR_APPROVED' });\n } else {\n writeNDJSON({ type: 'pr:skipped', reason: '--create-pr not set' });\n this.sendEvent({ type: 'PR_DECLINED' });\n }\n };\n\n private handlePrSuccess = ({ url }: InstallerEvents['postinstall:pr:success']): void => {\n writeNDJSON({ type: 'pr:created', url });\n };\n\n private handlePrFailed = ({ error }: InstallerEvents['postinstall:pr:failed']): void => {\n writeNDJSON({ type: 'pr:failed', error });\n };\n\n private handlePushFailed = ({ error }: InstallerEvents['postinstall:push:failed']): void => {\n writeNDJSON({ type: 'push:failed', error });\n };\n\n private handleManualInstructions = ({ instructions }: InstallerEvents['postinstall:manual']): void => {\n writeNDJSON({ type: 'postinstall:manual', instructions });\n };\n\n // ===== Terminal Events =====\n\n private handleComplete = ({ success, summary, completion }: InstallerEvents['complete']): void => {\n writeNDJSON({\n type: 'complete',\n success,\n summary,\n scaffolded: this.scaffolded,\n // Spread structured fields only when present, so existing consumers that\n // emit `complete` without `completion` keep their exact payload shape.\n ...(completion\n ? {\n integration: completion.integration,\n devCommand: completion.devCommand,\n url: completion.url,\n files: completion.files,\n nextSteps: completion.nextSteps,\n }\n : {}),\n });\n };\n\n private handleError = ({ message, stack }: InstallerEvents['error']): void => {\n const isServiceError =\n /\\b50[0-9]\\b/.test(message) || /server_error|internal_error|overloaded|service.*unavailable/i.test(message);\n const isRateLimit = /\\b429\\b/.test(message) || /rate.limit/i.test(message);\n const isNetworkError = /ECONNREFUSED|ETIMEDOUT|ENOTFOUND|fetch failed/i.test(message);\n const isProcessExit = /process exited with code/i.test(message);\n\n let code = 'installer_error';\n let displayMessage = message;\n\n if (isServiceError) {\n code = 'service_unavailable';\n displayMessage = 'The AI service is temporarily unavailable. Please try again in a few minutes.';\n } else if (isRateLimit) {\n code = 'rate_limited';\n displayMessage = 'The AI service is currently rate-limited. Please wait a minute and try again.';\n } else if (isNetworkError) {\n code = 'network_error';\n displayMessage = 'Could not connect to the AI service. Check your internet connection and try again.';\n } else if (isProcessExit) {\n code = 'process_error';\n displayMessage = 'The AI agent process exited unexpectedly. Try running again with --debug for details.';\n }\n\n writeNDJSON({ type: 'error', code, message: displayMessage });\n this.debugLog(stack ?? '');\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export { CLIAdapter } from './cli-adapter.js';\nexport { DashboardAdapter } from './dashboard-adapter.js';\nexport { HeadlessAdapter } from './headless-adapter.js';\nexport type { InstallerAdapter, AdapterConfig } from './types.js';\n"]}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { InstallerEventEmitter } from '../events.js';
|
|
2
|
-
/**
|
|
3
|
-
* Configuration passed to adapter constructors.
|
|
4
|
-
*/
|
|
5
|
-
export interface AdapterConfig {
|
|
6
|
-
/** Event emitter to subscribe to */
|
|
7
|
-
emitter: InstallerEventEmitter;
|
|
8
|
-
/**
|
|
9
|
-
* Callback to send events back to the machine.
|
|
10
|
-
* Used for user responses (confirmations, credentials, etc.)
|
|
11
|
-
*/
|
|
12
|
-
sendEvent: (event: {
|
|
13
|
-
type: string;
|
|
14
|
-
[key: string]: unknown;
|
|
15
|
-
}) => void;
|
|
16
|
-
/** Enable verbose debug output (stack traces, etc.) */
|
|
17
|
-
debug?: boolean;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Interface all UI adapters must implement.
|
|
21
|
-
*
|
|
22
|
-
* Adapters are event subscribers that translate machine events
|
|
23
|
-
* into framework-specific UI rendering. They don't control flow—
|
|
24
|
-
* they react to it.
|
|
25
|
-
*/
|
|
26
|
-
export interface InstallerAdapter {
|
|
27
|
-
/**
|
|
28
|
-
* Start the adapter.
|
|
29
|
-
* - Subscribe to emitter events
|
|
30
|
-
* - Initialize UI framework (show intro, enter fullscreen, etc.)
|
|
31
|
-
*/
|
|
32
|
-
start(): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Stop the adapter.
|
|
35
|
-
* - Unsubscribe from all events
|
|
36
|
-
* - Clean up UI (exit fullscreen, restore terminal, etc.)
|
|
37
|
-
*/
|
|
38
|
-
stop(): Promise<void>;
|
|
39
|
-
/** The emitter this adapter subscribes to */
|
|
40
|
-
readonly emitter: InstallerEventEmitter;
|
|
41
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/adapters/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { InstallerEventEmitter } from '../events.js';\n\n/**\n * Configuration passed to adapter constructors.\n */\nexport interface AdapterConfig {\n /** Event emitter to subscribe to */\n emitter: InstallerEventEmitter;\n\n /**\n * Callback to send events back to the machine.\n * Used for user responses (confirmations, credentials, etc.)\n */\n sendEvent: (event: { type: string; [key: string]: unknown }) => void;\n\n /** Enable verbose debug output (stack traces, etc.) */\n debug?: boolean;\n}\n\n/**\n * Interface all UI adapters must implement.\n *\n * Adapters are event subscribers that translate machine events\n * into framework-specific UI rendering. They don't control flow—\n * they react to it.\n */\nexport interface InstallerAdapter {\n /**\n * Start the adapter.\n * - Subscribe to emitter events\n * - Initialize UI framework (show intro, enter fullscreen, etc.)\n */\n start(): Promise<void>;\n\n /**\n * Stop the adapter.\n * - Unsubscribe from all events\n * - Clean up UI (exit fullscreen, restore terminal, etc.)\n */\n stop(): Promise<void>;\n\n /** The emitter this adapter subscribes to */\n readonly emitter: InstallerEventEmitter;\n}\n"]}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared agent interface for WorkOS wizards
|
|
3
|
-
* Uses Claude Agent SDK directly with WorkOS MCP server
|
|
4
|
-
*/
|
|
5
|
-
import type { InstallerOptions } from '../utils/types.js';
|
|
6
|
-
import type { InstallerEventEmitter } from './events.js';
|
|
7
|
-
import { type CredentialProxyHandle } from './credential-proxy.js';
|
|
8
|
-
import type { SDKMessage, Options as AgentSDKOptions, PermissionResult } from '@anthropic-ai/claude-agent-sdk';
|
|
9
|
-
export declare const AgentSignals: {
|
|
10
|
-
/** Signal emitted when the agent reports progress to the user */
|
|
11
|
-
readonly STATUS: "[STATUS]";
|
|
12
|
-
/** Signal emitted when the agent cannot access the WorkOS MCP server */
|
|
13
|
-
readonly ERROR_MCP_MISSING: "[ERROR-MCP-MISSING]";
|
|
14
|
-
/** Signal emitted when the agent cannot access the setup resource */
|
|
15
|
-
readonly ERROR_RESOURCE_MISSING: "[ERROR-RESOURCE-MISSING]";
|
|
16
|
-
};
|
|
17
|
-
export type AgentSignal = (typeof AgentSignals)[keyof typeof AgentSignals];
|
|
18
|
-
/**
|
|
19
|
-
* Error types that can be returned from agent execution.
|
|
20
|
-
* These correspond to the error signals that the agent emits.
|
|
21
|
-
*/
|
|
22
|
-
export declare enum AgentErrorType {
|
|
23
|
-
/** Agent could not access the WorkOS MCP server */
|
|
24
|
-
MCP_MISSING = "INSTALLER_MCP_MISSING",
|
|
25
|
-
/** Agent could not access the setup resource */
|
|
26
|
-
RESOURCE_MISSING = "INSTALLER_RESOURCE_MISSING",
|
|
27
|
-
/** Agent execution failed (API error, auth error, etc.) */
|
|
28
|
-
EXECUTION_ERROR = "INSTALLER_EXECUTION_ERROR",
|
|
29
|
-
/** AI service is unavailable (API 500, outage, etc.) */
|
|
30
|
-
SERVICE_UNAVAILABLE = "INSTALLER_SERVICE_UNAVAILABLE"
|
|
31
|
-
}
|
|
32
|
-
export type AgentConfig = {
|
|
33
|
-
workingDirectory: string;
|
|
34
|
-
workOSApiKey: string;
|
|
35
|
-
workOSApiHost: string;
|
|
36
|
-
};
|
|
37
|
-
export interface RetryConfig {
|
|
38
|
-
/** Max correction attempts after initial run. Default: 2 */
|
|
39
|
-
maxRetries: number;
|
|
40
|
-
/** Run between agent turns. Return null if passed, or error prompt if failed. */
|
|
41
|
-
validateAndFormat: (workingDirectory: string) => Promise<string | null>;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Configuration object for running the agent.
|
|
45
|
-
* Built by initializeAgent (production) or constructed directly (evals).
|
|
46
|
-
*/
|
|
47
|
-
export type AgentRunConfig = {
|
|
48
|
-
workingDirectory: string;
|
|
49
|
-
mcpServers: AgentSDKOptions['mcpServers'];
|
|
50
|
-
model: string;
|
|
51
|
-
allowedTools: string[];
|
|
52
|
-
sdkEnv: Record<string, string | undefined>;
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* Permission hook that allows only safe commands.
|
|
56
|
-
* - Package manager install commands
|
|
57
|
-
* - Build/typecheck/lint commands for verification
|
|
58
|
-
* - Piping to tail/head for output limiting is allowed
|
|
59
|
-
* - Stderr redirection (2>&1) is allowed
|
|
60
|
-
*/
|
|
61
|
-
export declare function installerCanUseTool(toolName: string, input: Record<string, unknown>): PermissionResult;
|
|
62
|
-
/**
|
|
63
|
-
* Initialize agent configuration for the LLM gateway
|
|
64
|
-
*/
|
|
65
|
-
export declare function initializeAgent(config: AgentConfig, options: InstallerOptions): Promise<AgentRunConfig>;
|
|
66
|
-
/**
|
|
67
|
-
* Execute an agent with the provided prompt and options
|
|
68
|
-
* Handles the full lifecycle via event emissions - adapters handle UI rendering.
|
|
69
|
-
*
|
|
70
|
-
* @returns An object containing any error detected in the agent's output
|
|
71
|
-
*/
|
|
72
|
-
export declare function runAgent(agentConfig: AgentRunConfig, prompt: string, options: InstallerOptions, config?: {
|
|
73
|
-
spinnerMessage?: string;
|
|
74
|
-
successMessage?: string;
|
|
75
|
-
errorMessage?: string;
|
|
76
|
-
}, emitter?: InstallerEventEmitter, retryConfig?: RetryConfig, onMessage?: (message: SDKMessage) => void): Promise<{
|
|
77
|
-
error?: AgentErrorType;
|
|
78
|
-
errorMessage?: string;
|
|
79
|
-
retryCount?: number;
|
|
80
|
-
}>;
|
|
81
|
-
/**
|
|
82
|
-
* Get the active proxy handle (for testing/debugging).
|
|
83
|
-
*/
|
|
84
|
-
export declare function getActiveProxyHandle(): CredentialProxyHandle | null;
|