workos 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +3 -4
  2. package/dist/bin.js +54 -1
  3. package/dist/bin.js.map +1 -1
  4. package/dist/cli.config.d.ts +0 -2
  5. package/dist/cli.config.js +3 -3
  6. package/dist/cli.config.js.map +1 -1
  7. package/dist/commands/debug.d.ts +11 -0
  8. package/dist/commands/debug.js +24 -8
  9. package/dist/commands/debug.js.map +1 -1
  10. package/dist/commands/install.js +4 -0
  11. package/dist/commands/install.js.map +1 -1
  12. package/dist/commands/mcp.d.ts +14 -0
  13. package/dist/commands/mcp.js +108 -0
  14. package/dist/commands/mcp.js.map +1 -0
  15. package/dist/doctor/checks/ai-analysis.js +2 -1
  16. package/dist/doctor/checks/ai-analysis.js.map +1 -1
  17. package/dist/doctor/checks/auth-patterns.js +1 -1
  18. package/dist/doctor/checks/auth-patterns.js.map +1 -1
  19. package/dist/doctor/checks/mcp.d.ts +15 -0
  20. package/dist/doctor/checks/mcp.js +34 -0
  21. package/dist/doctor/checks/mcp.js.map +1 -0
  22. package/dist/doctor/index.js +7 -1
  23. package/dist/doctor/index.js.map +1 -1
  24. package/dist/doctor/issues.js +16 -0
  25. package/dist/doctor/issues.js.map +1 -1
  26. package/dist/doctor/output.js +16 -2
  27. package/dist/doctor/output.js.map +1 -1
  28. package/dist/doctor/types.d.ts +17 -0
  29. package/dist/doctor/types.js.map +1 -1
  30. package/dist/emulate/workos/index.js.map +1 -1
  31. package/dist/lib/agent-interface.js +4 -4
  32. package/dist/lib/agent-interface.js.map +1 -1
  33. package/dist/lib/agent-runner.js +55 -16
  34. package/dist/lib/agent-runner.js.map +1 -1
  35. package/dist/lib/ai-content.js +2 -1
  36. package/dist/lib/ai-content.js.map +1 -1
  37. package/dist/lib/constants.d.ts +9 -0
  38. package/dist/lib/constants.js +9 -0
  39. package/dist/lib/constants.js.map +1 -1
  40. package/dist/lib/installer-core.d.ts +20 -20
  41. package/dist/lib/mcp-clients.d.ts +39 -0
  42. package/dist/lib/mcp-clients.js +284 -0
  43. package/dist/lib/mcp-clients.js.map +1 -0
  44. package/dist/lib/mcp-notice.d.ts +72 -0
  45. package/dist/lib/mcp-notice.js +275 -0
  46. package/dist/lib/mcp-notice.js.map +1 -0
  47. package/dist/lib/preferences.d.ts +14 -0
  48. package/dist/lib/preferences.js +3 -0
  49. package/dist/lib/preferences.js.map +1 -1
  50. package/dist/lib/run-with-core.js +2 -1
  51. package/dist/lib/run-with-core.js.map +1 -1
  52. package/dist/lib/settings.d.ts +5 -14
  53. package/dist/lib/settings.js +5 -16
  54. package/dist/lib/settings.js.map +1 -1
  55. package/dist/lib/startup-notice-gate.d.ts +21 -0
  56. package/dist/lib/startup-notice-gate.js +29 -0
  57. package/dist/lib/startup-notice-gate.js.map +1 -0
  58. package/dist/lib/telemetry-notice.js +3 -0
  59. package/dist/lib/telemetry-notice.js.map +1 -1
  60. package/dist/lib/unclaimed-warning.js +3 -0
  61. package/dist/lib/unclaimed-warning.js.map +1 -1
  62. package/dist/lib/validation/security-checks.d.ts +35 -0
  63. package/dist/lib/validation/security-checks.js +105 -0
  64. package/dist/lib/validation/security-checks.js.map +1 -0
  65. package/dist/utils/analytics.d.ts +1 -0
  66. package/dist/utils/analytics.js +5 -1
  67. package/dist/utils/analytics.js.map +1 -1
  68. package/dist/utils/help-json.js +38 -0
  69. package/dist/utils/help-json.js.map +1 -1
  70. package/dist/utils/interaction-mode.d.ts +1 -1
  71. package/dist/utils/interaction-mode.js +0 -3
  72. package/dist/utils/interaction-mode.js.map +1 -1
  73. package/dist/utils/output.d.ts +5 -3
  74. package/dist/utils/output.js +5 -5
  75. package/dist/utils/output.js.map +1 -1
  76. package/dist/utils/telemetry-types.d.ts +1 -1
  77. package/dist/utils/telemetry-types.js.map +1 -1
  78. package/dist/utils/urls.d.ts +9 -3
  79. package/dist/utils/urls.js +10 -4
  80. package/dist/utils/urls.js.map +1 -1
  81. package/package.json +12 -11
@@ -81,7 +81,7 @@ export interface CommandEvent extends BaseTelemetryEvent {
81
81
  'api.resource'?: string;
82
82
  'cli.version': string;
83
83
  'workos.user_id'?: string;
84
- } & EnvFingerprint;
84
+ } & EnvFingerprint & Record<string, string | number | boolean | undefined>;
85
85
  }
86
86
  export interface CrashEvent extends BaseTelemetryEvent {
87
87
  type: 'crash';
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-types.js","sourceRoot":"","sources":["../../src/utils/telemetry-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Telemetry event types for installer → gateway communication.\n * The gateway converts these to OTel format.\n */\n\nexport interface BaseTelemetryEvent {\n type: 'session.start' | 'session.end' | 'step' | 'agent.tool' | 'agent.llm' | 'command' | 'crash';\n sessionId: string;\n timestamp: string;\n}\n\nexport type AuthMode = 'jwt' | 'claim_token' | 'api_key' | 'none';\n\n/**\n * Structured outcome dimension for command events. Supersedes the boolean\n * `command.success` as the primary categorization (`command.success` remains\n * for backward-compat). Populated by `analytics.emitCommandEvent()` from the\n * top-level command lifecycle.\n */\nexport type TerminationReason = 'success' | 'cancelled' | 'auth_required' | 'validation_error' | 'api_error' | 'crash';\n\nexport interface EnvFingerprint {\n 'device.id': string;\n 'auth.mode': AuthMode;\n 'env.os': string;\n 'env.os_version': string;\n 'env.node_version': string;\n 'env.shell': string;\n 'env.ci': boolean;\n 'env.ci_provider'?: string;\n}\n\nexport interface SessionStartEvent extends BaseTelemetryEvent {\n type: 'session.start';\n attributes: {\n 'installer.version': string;\n 'installer.mode': 'cli' | 'tui' | 'headless';\n 'workos.user_id'?: string;\n 'workos.org_id'?: string;\n } & EnvFingerprint;\n}\n\nexport interface SessionEndEvent extends BaseTelemetryEvent {\n type: 'session.end';\n attributes: {\n 'installer.outcome': 'success' | 'error' | 'cancelled';\n 'installer.duration_ms': number;\n } & Record<string, string | number | boolean>;\n}\n\nexport interface StepEvent extends BaseTelemetryEvent {\n type: 'step';\n name: string;\n startTimestamp: string;\n durationMs: number;\n success: boolean;\n error?: {\n type: string;\n message: string;\n };\n}\n\nexport interface AgentToolEvent extends BaseTelemetryEvent {\n type: 'agent.tool';\n toolName: string;\n startTimestamp: string;\n durationMs: number;\n success: boolean;\n}\n\nexport interface AgentLLMEvent extends BaseTelemetryEvent {\n type: 'agent.llm';\n model: string;\n inputTokens: number;\n outputTokens: number;\n}\n\nexport interface CommandEvent extends BaseTelemetryEvent {\n type: 'command';\n attributes: {\n 'command.name': string;\n 'command.duration_ms': number;\n 'command.success': boolean;\n 'command.error_type'?: string;\n 'command.error_message'?: string;\n 'command.flags'?: string;\n 'termination.reason'?: TerminationReason;\n 'error.code'?: string;\n 'api.status'?: number;\n 'api.code'?: string;\n 'api.resource'?: string;\n 'cli.version': string;\n 'workos.user_id'?: string;\n } & EnvFingerprint;\n}\n\nexport interface CrashEvent extends BaseTelemetryEvent {\n type: 'crash';\n attributes: {\n 'crash.error_type': string;\n 'crash.error_message': string;\n 'crash.stack': string;\n 'crash.command'?: string;\n 'cli.version': string;\n 'workos.user_id'?: string;\n } & EnvFingerprint;\n}\n\nexport interface TelemetryRequest {\n events: TelemetryEvent[];\n}\n\nexport type TelemetryEvent =\n | SessionStartEvent\n | SessionEndEvent\n | StepEvent\n | AgentToolEvent\n | AgentLLMEvent\n | CommandEvent\n | CrashEvent;\n"]}
1
+ {"version":3,"file":"telemetry-types.js","sourceRoot":"","sources":["../../src/utils/telemetry-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Telemetry event types for installer → gateway communication.\n * The gateway converts these to OTel format.\n */\n\nexport interface BaseTelemetryEvent {\n type: 'session.start' | 'session.end' | 'step' | 'agent.tool' | 'agent.llm' | 'command' | 'crash';\n sessionId: string;\n timestamp: string;\n}\n\nexport type AuthMode = 'jwt' | 'claim_token' | 'api_key' | 'none';\n\n/**\n * Structured outcome dimension for command events. Supersedes the boolean\n * `command.success` as the primary categorization (`command.success` remains\n * for backward-compat). Populated by `analytics.emitCommandEvent()` from the\n * top-level command lifecycle.\n */\nexport type TerminationReason = 'success' | 'cancelled' | 'auth_required' | 'validation_error' | 'api_error' | 'crash';\n\nexport interface EnvFingerprint {\n 'device.id': string;\n 'auth.mode': AuthMode;\n 'env.os': string;\n 'env.os_version': string;\n 'env.node_version': string;\n 'env.shell': string;\n 'env.ci': boolean;\n 'env.ci_provider'?: string;\n}\n\nexport interface SessionStartEvent extends BaseTelemetryEvent {\n type: 'session.start';\n attributes: {\n 'installer.version': string;\n 'installer.mode': 'cli' | 'tui' | 'headless';\n 'workos.user_id'?: string;\n 'workos.org_id'?: string;\n } & EnvFingerprint;\n}\n\nexport interface SessionEndEvent extends BaseTelemetryEvent {\n type: 'session.end';\n attributes: {\n 'installer.outcome': 'success' | 'error' | 'cancelled';\n 'installer.duration_ms': number;\n } & Record<string, string | number | boolean>;\n}\n\nexport interface StepEvent extends BaseTelemetryEvent {\n type: 'step';\n name: string;\n startTimestamp: string;\n durationMs: number;\n success: boolean;\n error?: {\n type: string;\n message: string;\n };\n}\n\nexport interface AgentToolEvent extends BaseTelemetryEvent {\n type: 'agent.tool';\n toolName: string;\n startTimestamp: string;\n durationMs: number;\n success: boolean;\n}\n\nexport interface AgentLLMEvent extends BaseTelemetryEvent {\n type: 'agent.llm';\n model: string;\n inputTokens: number;\n outputTokens: number;\n}\n\nexport interface CommandEvent extends BaseTelemetryEvent {\n type: 'command';\n attributes: {\n 'command.name': string;\n 'command.duration_ms': number;\n 'command.success': boolean;\n 'command.error_type'?: string;\n 'command.error_message'?: string;\n 'command.flags'?: string;\n 'termination.reason'?: TerminationReason;\n 'error.code'?: string;\n 'api.status'?: number;\n 'api.code'?: string;\n 'api.resource'?: string;\n 'cli.version': string;\n 'workos.user_id'?: string;\n // Open for caller-supplied dimensions (e.g. mcp.*) — the gateway schema is\n // passthrough and flattens unknown attributes onto the command span.\n } & EnvFingerprint &\n Record<string, string | number | boolean | undefined>;\n}\n\nexport interface CrashEvent extends BaseTelemetryEvent {\n type: 'crash';\n attributes: {\n 'crash.error_type': string;\n 'crash.error_message': string;\n 'crash.stack': string;\n 'crash.command'?: string;\n 'cli.version': string;\n 'workos.user_id'?: string;\n } & EnvFingerprint;\n}\n\nexport interface TelemetryRequest {\n events: TelemetryEvent[];\n}\n\nexport type TelemetryEvent =\n | SessionStartEvent\n | SessionEndEvent\n | StepEvent\n | AgentToolEvent\n | AgentLLMEvent\n | CommandEvent\n | CrashEvent;\n"]}
@@ -1,7 +1,13 @@
1
- import { getLlmGatewayUrl } from '../lib/settings.js';
2
1
  /**
3
- * Get URLs. Env vars override config defaults.
2
+ * WorkOS service endpoint resolution. Env vars override defaults.
3
+ *
4
+ * WORKOS_API_URL is the single base host; the LLM gateway and CLI telemetry
5
+ * endpoints are served under it and derived here. The trailing slash is
6
+ * normalized at the source so every derived path stays clean.
4
7
  */
5
8
  export declare const getWorkOSApiUrl: () => string;
6
9
  export declare const getWorkOSDashboardUrl: () => string;
7
- export declare const getLlmGatewayUrlFromHost: typeof getLlmGatewayUrl;
10
+ /** LLM gateway endpoint, served under the WorkOS API host. */
11
+ export declare const getLlmGatewayUrl: () => string;
12
+ /** CLI telemetry endpoint, served under the WorkOS API host. */
13
+ export declare const getTelemetryUrl: () => string;
@@ -1,8 +1,14 @@
1
- import { getLlmGatewayUrl } from '../lib/settings.js';
2
1
  /**
3
- * Get URLs. Env vars override config defaults.
2
+ * WorkOS service endpoint resolution. Env vars override defaults.
3
+ *
4
+ * WORKOS_API_URL is the single base host; the LLM gateway and CLI telemetry
5
+ * endpoints are served under it and derived here. The trailing slash is
6
+ * normalized at the source so every derived path stays clean.
4
7
  */
5
- export const getWorkOSApiUrl = () => process.env.WORKOS_API_URL || 'https://api.workos.com';
8
+ export const getWorkOSApiUrl = () => (process.env.WORKOS_API_URL || 'https://api.workos.com').replace(/\/$/, '');
6
9
  export const getWorkOSDashboardUrl = () => process.env.WORKOS_DASHBOARD_URL || 'https://dashboard.workos.com';
7
- export const getLlmGatewayUrlFromHost = getLlmGatewayUrl;
10
+ /** LLM gateway endpoint, served under the WorkOS API host. */
11
+ export const getLlmGatewayUrl = () => `${getWorkOSApiUrl()}/llm-gateway`;
12
+ /** CLI telemetry endpoint, served under the WorkOS API host. */
13
+ export const getTelemetryUrl = () => `${getWorkOSApiUrl()}/cli`;
8
14
  //# sourceMappingURL=urls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/utils/urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,wBAAwB,CAAC;AAE5F,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,8BAA8B,CAAC;AAE9G,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC","sourcesContent":["import { getLlmGatewayUrl } from '../lib/settings.js';\n\n/**\n * Get URLs. Env vars override config defaults.\n */\n\nexport const getWorkOSApiUrl = () => process.env.WORKOS_API_URL || 'https://api.workos.com';\n\nexport const getWorkOSDashboardUrl = () => process.env.WORKOS_DASHBOARD_URL || 'https://dashboard.workos.com';\n\nexport const getLlmGatewayUrlFromHost = getLlmGatewayUrl;\n"]}
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/utils/urls.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE,CAC1C,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,wBAAwB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAE9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,8BAA8B,CAAC;AAEtH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAAC,GAAG,eAAe,EAAE,cAAc,CAAC;AAEjF,gEAAgE;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE,CAAC,GAAG,eAAe,EAAE,MAAM,CAAC","sourcesContent":["/**\n * WorkOS service endpoint resolution. Env vars override defaults.\n *\n * WORKOS_API_URL is the single base host; the LLM gateway and CLI telemetry\n * endpoints are served under it and derived here. The trailing slash is\n * normalized at the source so every derived path stays clean.\n */\n\nexport const getWorkOSApiUrl = (): string =>\n (process.env.WORKOS_API_URL || 'https://api.workos.com').replace(/\\/$/, '');\n\nexport const getWorkOSDashboardUrl = (): string => process.env.WORKOS_DASHBOARD_URL || 'https://dashboard.workos.com';\n\n/** LLM gateway endpoint, served under the WorkOS API host. */\nexport const getLlmGatewayUrl = (): string => `${getWorkOSApiUrl()}/llm-gateway`;\n\n/** CLI telemetry endpoint, served under the WorkOS API host. */\nexport const getTelemetryUrl = (): string => `${getWorkOSApiUrl()}/cli`;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workos",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "type": "module",
5
5
  "description": "The Official Workos CLI",
6
6
  "repository": {
@@ -45,21 +45,22 @@
45
45
  }
46
46
  },
47
47
  "dependencies": {
48
- "@anthropic-ai/claude-agent-sdk": "~0.2.62",
49
- "@anthropic-ai/sdk": "^0.78.0",
48
+ "@anthropic-ai/claude-agent-sdk": "~0.3.0",
49
+ "@anthropic-ai/sdk": "^0.106.0",
50
50
  "@clack/core": "^1.0.1",
51
- "@clack/prompts": "1.0.1",
51
+ "@clack/prompts": "1.6.0",
52
52
  "@hono/node-server": "^1",
53
53
  "@napi-rs/keyring": "^1.2.0",
54
54
  "@workos-inc/node": "^8.7.0",
55
- "@workos/migrations": "^2.0.0",
56
- "@workos/openapi-spec": "^0.1.0",
57
- "@workos/skills": "0.6.0",
55
+ "@workos/migrations": "^2.4.0",
56
+ "@workos/openapi-spec": "^0.14.0",
57
+ "@workos/skills": "0.6.1",
58
58
  "chalk": "^5.6.2",
59
59
  "diff": "^8.0.3",
60
60
  "fast-glob": "^3.3.3",
61
61
  "hono": "^4",
62
62
  "ink": "^6.8.0",
63
+ "jsonc-parser": "^3.3.1",
63
64
  "open": "^11.0.0",
64
65
  "react": "^19.2.4",
65
66
  "semver": "^7.7.4",
@@ -70,16 +71,16 @@
70
71
  "zod": "^4.3.6"
71
72
  },
72
73
  "devDependencies": {
73
- "@statelyai/inspect": "^0.4.0",
74
- "@types/node": "~22.19.7",
75
- "@types/opn": "5.1.0",
74
+ "@statelyai/inspect": "^0.7.0",
75
+ "@types/node": "~22.20.0",
76
+ "@types/opn": "5.5.0",
76
77
  "@types/react": "^19.2.14",
77
78
  "@types/semver": "^7.7.1",
78
79
  "@types/yargs": "^17.0.35",
79
80
  "@vitest/coverage-v8": "^4.0.18",
80
81
  "@vitest/ui": "^4.0.18",
81
82
  "dotenv": "^17.3.1",
82
- "oxfmt": "^0.35.0",
83
+ "oxfmt": "^0.56.0",
83
84
  "oxlint": "^1.50.0",
84
85
  "p-limit": "^7.3.0",
85
86
  "tsx": "^4.20.3",