workos 0.4.5 → 0.5.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 (144) hide show
  1. package/dist/bin.js +32 -3
  2. package/dist/bin.js.map +1 -1
  3. package/dist/commands/doctor.d.ts +10 -0
  4. package/dist/commands/doctor.js +30 -0
  5. package/dist/commands/doctor.js.map +1 -0
  6. package/dist/doctor/checks/connectivity.d.ts +2 -0
  7. package/dist/doctor/checks/connectivity.js +35 -0
  8. package/dist/doctor/checks/connectivity.js.map +1 -0
  9. package/dist/doctor/checks/dashboard.d.ts +3 -0
  10. package/dist/doctor/checks/dashboard.js +123 -0
  11. package/dist/doctor/checks/dashboard.js.map +1 -0
  12. package/dist/doctor/checks/environment.d.ts +2 -0
  13. package/dist/doctor/checks/environment.js +68 -0
  14. package/dist/doctor/checks/environment.js.map +1 -0
  15. package/dist/doctor/checks/framework.d.ts +2 -0
  16. package/dist/doctor/checks/framework.js +75 -0
  17. package/dist/doctor/checks/framework.js.map +1 -0
  18. package/dist/doctor/checks/runtime.d.ts +2 -0
  19. package/dist/doctor/checks/runtime.js +20 -0
  20. package/dist/doctor/checks/runtime.js.map +1 -0
  21. package/dist/doctor/checks/sdk.d.ts +2 -0
  22. package/dist/doctor/checks/sdk.js +111 -0
  23. package/dist/doctor/checks/sdk.js.map +1 -0
  24. package/dist/doctor/clipboard.d.ts +1 -0
  25. package/dist/doctor/clipboard.js +43 -0
  26. package/dist/doctor/clipboard.js.map +1 -0
  27. package/dist/doctor/index.d.ts +6 -0
  28. package/dist/doctor/index.js +94 -0
  29. package/dist/doctor/index.js.map +1 -0
  30. package/dist/doctor/issues.d.ts +58 -0
  31. package/dist/doctor/issues.js +134 -0
  32. package/dist/doctor/issues.js.map +1 -0
  33. package/dist/doctor/json-output.d.ts +2 -0
  34. package/dist/doctor/json-output.js +4 -0
  35. package/dist/doctor/json-output.js.map +1 -0
  36. package/dist/doctor/output.d.ts +5 -0
  37. package/dist/doctor/output.js +149 -0
  38. package/dist/doctor/output.js.map +1 -0
  39. package/dist/doctor/types.d.ts +105 -0
  40. package/dist/doctor/types.js +2 -0
  41. package/dist/doctor/types.js.map +1 -0
  42. package/dist/integrations/dotnet/index.d.ts +8 -0
  43. package/dist/integrations/dotnet/index.js +163 -0
  44. package/dist/integrations/dotnet/index.js.map +1 -0
  45. package/dist/integrations/elixir/index.d.ts +8 -0
  46. package/dist/integrations/elixir/index.js +152 -0
  47. package/dist/integrations/elixir/index.js.map +1 -0
  48. package/dist/integrations/go/index.d.ts +11 -0
  49. package/dist/integrations/go/index.js +220 -0
  50. package/dist/integrations/go/index.js.map +1 -0
  51. package/dist/integrations/kotlin/index.d.ts +4 -0
  52. package/dist/integrations/kotlin/index.js +53 -0
  53. package/dist/integrations/kotlin/index.js.map +1 -0
  54. package/dist/integrations/nextjs/index.d.ts +4 -0
  55. package/dist/integrations/nextjs/index.js +90 -0
  56. package/dist/integrations/nextjs/index.js.map +1 -0
  57. package/dist/integrations/nextjs/utils.d.ts +8 -0
  58. package/dist/integrations/nextjs/utils.js +53 -0
  59. package/dist/integrations/nextjs/utils.js.map +1 -0
  60. package/dist/integrations/node/index.d.ts +4 -0
  61. package/dist/integrations/node/index.js +52 -0
  62. package/dist/integrations/node/index.js.map +1 -0
  63. package/dist/integrations/php/index.d.ts +4 -0
  64. package/dist/integrations/php/index.js +51 -0
  65. package/dist/integrations/php/index.js.map +1 -0
  66. package/dist/integrations/php-laravel/index.d.ts +4 -0
  67. package/dist/integrations/php-laravel/index.js +51 -0
  68. package/dist/integrations/php-laravel/index.js.map +1 -0
  69. package/dist/integrations/python/index.d.ts +9 -0
  70. package/dist/integrations/python/index.js +254 -0
  71. package/dist/integrations/python/index.js.map +1 -0
  72. package/dist/integrations/react/index.d.ts +4 -0
  73. package/dist/integrations/react/index.js +49 -0
  74. package/dist/integrations/react/index.js.map +1 -0
  75. package/dist/integrations/react-router/index.d.ts +4 -0
  76. package/dist/integrations/react-router/index.js +94 -0
  77. package/dist/integrations/react-router/index.js.map +1 -0
  78. package/dist/integrations/react-router/utils.d.ts +10 -0
  79. package/dist/integrations/react-router/utils.js +146 -0
  80. package/dist/integrations/react-router/utils.js.map +1 -0
  81. package/dist/integrations/ruby/index.d.ts +8 -0
  82. package/dist/integrations/ruby/index.js +142 -0
  83. package/dist/integrations/ruby/index.js.map +1 -0
  84. package/dist/integrations/sveltekit/index.d.ts +4 -0
  85. package/dist/integrations/sveltekit/index.js +50 -0
  86. package/dist/integrations/sveltekit/index.js.map +1 -0
  87. package/dist/integrations/tanstack-start/index.d.ts +4 -0
  88. package/dist/integrations/tanstack-start/index.js +51 -0
  89. package/dist/integrations/tanstack-start/index.js.map +1 -0
  90. package/dist/integrations/vanilla-js/index.d.ts +4 -0
  91. package/dist/integrations/vanilla-js/index.js +49 -0
  92. package/dist/integrations/vanilla-js/index.js.map +1 -0
  93. package/dist/lib/agent-interface.js +66 -1
  94. package/dist/lib/agent-interface.js.map +1 -1
  95. package/dist/lib/config.d.ts +32 -58
  96. package/dist/lib/config.js +19 -70
  97. package/dist/lib/config.js.map +1 -1
  98. package/dist/lib/constants.d.ts +17 -14
  99. package/dist/lib/constants.js +12 -31
  100. package/dist/lib/constants.js.map +1 -1
  101. package/dist/lib/framework-config.d.ts +13 -4
  102. package/dist/lib/framework-config.js.map +1 -1
  103. package/dist/lib/language-detection.d.ts +20 -0
  104. package/dist/lib/language-detection.js +96 -0
  105. package/dist/lib/language-detection.js.map +1 -0
  106. package/dist/lib/port-detection.js +4 -2
  107. package/dist/lib/port-detection.js.map +1 -1
  108. package/dist/lib/registry.d.ts +43 -0
  109. package/dist/lib/registry.js +96 -0
  110. package/dist/lib/registry.js.map +1 -0
  111. package/dist/lib/run-with-core.js +70 -26
  112. package/dist/lib/run-with-core.js.map +1 -1
  113. package/dist/nextjs/nextjs-installer-agent.d.ts +3 -4
  114. package/dist/nextjs/nextjs-installer-agent.js +3 -94
  115. package/dist/nextjs/nextjs-installer-agent.js.map +1 -1
  116. package/dist/nextjs/utils.d.ts +4 -8
  117. package/dist/nextjs/utils.js +4 -52
  118. package/dist/nextjs/utils.js.map +1 -1
  119. package/dist/react/react-installer-agent.d.ts +4 -2
  120. package/dist/react/react-installer-agent.js +4 -46
  121. package/dist/react/react-installer-agent.js.map +1 -1
  122. package/dist/react-router/react-router-installer-agent.d.ts +2 -4
  123. package/dist/react-router/react-router-installer-agent.js +2 -100
  124. package/dist/react-router/react-router-installer-agent.js.map +1 -1
  125. package/dist/react-router/utils.d.ts +2 -17
  126. package/dist/react-router/utils.js +2 -207
  127. package/dist/react-router/utils.js.map +1 -1
  128. package/dist/tanstack-start/tanstack-start-installer-agent.d.ts +4 -2
  129. package/dist/tanstack-start/tanstack-start-installer-agent.js +4 -48
  130. package/dist/tanstack-start/tanstack-start-installer-agent.js.map +1 -1
  131. package/dist/vanilla-js/vanilla-js-installer-agent.d.ts +4 -2
  132. package/dist/vanilla-js/vanilla-js-installer-agent.js +4 -46
  133. package/dist/vanilla-js/vanilla-js-installer-agent.js.map +1 -1
  134. package/package.json +6 -5
  135. package/skills/workos-authkit-sveltekit/SKILL.md +160 -0
  136. package/skills/workos-dotnet/SKILL.md +163 -0
  137. package/skills/workos-elixir/SKILL.md +194 -0
  138. package/skills/workos-go/SKILL.md +191 -0
  139. package/skills/workos-kotlin/SKILL.md +161 -0
  140. package/skills/workos-node/SKILL.md +164 -0
  141. package/skills/workos-php/SKILL.md +127 -0
  142. package/skills/workos-php-laravel/SKILL.md +147 -0
  143. package/skills/workos-python/SKILL.md +159 -0
  144. package/skills/workos-ruby/SKILL.md +163 -0
@@ -1,210 +1,5 @@
1
- import { major } from 'semver';
2
- import fg from 'fast-glob';
3
- import { abortIfCancelled, getPackageDotJson } from '../utils/clack-utils.js';
4
- import clack from '../utils/clack.js';
5
- import { getVersionBucket } from '../utils/semver.js';
6
- import { IGNORE_PATTERNS, Integration } from '../lib/constants.js';
7
- import { getPackageVersion } from '../utils/package-json.js';
8
- import chalk from 'chalk';
9
- import * as fs from 'node:fs';
10
- import * as path from 'node:path';
11
- import * as semver from 'semver';
12
- export var ReactRouterMode;
13
- (function (ReactRouterMode) {
14
- ReactRouterMode["V6"] = "v6";
15
- ReactRouterMode["V7_FRAMEWORK"] = "v7-framework";
16
- ReactRouterMode["V7_DATA"] = "v7-data";
17
- ReactRouterMode["V7_DECLARATIVE"] = "v7-declarative";
18
- })(ReactRouterMode || (ReactRouterMode = {}));
19
1
  /**
20
- * Get React Router version bucket for analytics
2
+ * @deprecated Import from 'src/integrations/react-router/utils.js' instead.
21
3
  */
22
- export function getReactRouterVersionBucket(version) {
23
- return getVersionBucket(version, 6);
24
- }
25
- /**
26
- * Check if react-router.config.ts exists (indicates framework mode - React Router v7)
27
- */
28
- async function hasReactRouterConfig({ installDir }) {
29
- const configMatches = await fg('**/react-router.config.@(ts|js|tsx|jsx)', {
30
- dot: true,
31
- cwd: installDir,
32
- ignore: IGNORE_PATTERNS,
33
- });
34
- return configMatches.length > 0;
35
- }
36
- /**
37
- * Search for createBrowserRouter usage in source files
38
- */
39
- async function hasCreateBrowserRouter({ installDir }) {
40
- const sourceFiles = await fg('**/*.@(ts|tsx|js|jsx)', {
41
- dot: true,
42
- cwd: installDir,
43
- ignore: IGNORE_PATTERNS,
44
- });
45
- for (const file of sourceFiles) {
46
- try {
47
- const filePath = path.join(installDir, file);
48
- const content = fs.readFileSync(filePath, 'utf-8');
49
- // Check for createBrowserRouter import or usage
50
- if (content.includes('createBrowserRouter')) {
51
- return true;
52
- }
53
- }
54
- catch {
55
- // Skip files that can't be read
56
- continue;
57
- }
58
- }
59
- return false;
60
- }
61
- /**
62
- * Search for declarative BrowserRouter usage
63
- */
64
- async function hasDeclarativeRouter({ installDir }) {
65
- const sourceFiles = await fg('**/*.@(ts|tsx|js|jsx)', {
66
- dot: true,
67
- cwd: installDir,
68
- ignore: IGNORE_PATTERNS,
69
- });
70
- for (const file of sourceFiles) {
71
- try {
72
- const filePath = path.join(installDir, file);
73
- const content = fs.readFileSync(filePath, 'utf-8');
74
- // Check for BrowserRouter usage (JSX or import)
75
- if (content.includes('<BrowserRouter') ||
76
- (content.includes('BrowserRouter') &&
77
- (content.includes('from "react-router-dom"') || content.includes("from 'react-router-dom'")))) {
78
- return true;
79
- }
80
- }
81
- catch {
82
- // Skip files that can't be read
83
- continue;
84
- }
85
- }
86
- return false;
87
- }
88
- /**
89
- * Detect React Router mode
90
- */
91
- export async function getReactRouterMode(options) {
92
- const { installDir } = options;
93
- // First, get the React Router version
94
- const packageJson = await getPackageDotJson(options);
95
- const reactRouterVersion = getPackageVersion('react-router-dom', packageJson) || getPackageVersion('react-router', packageJson);
96
- if (!reactRouterVersion) {
97
- // If we can't detect version, ask the user
98
- clack.log.info(`Learn more about React Router modes: ${chalk.cyan('https://reactrouter.com/start/modes')}`);
99
- const result = await abortIfCancelled(clack.select({
100
- message: 'What React Router version and mode are you using?',
101
- options: [
102
- {
103
- label: 'React Router v6',
104
- value: ReactRouterMode.V6,
105
- },
106
- {
107
- label: 'React Router v7 - Framework mode',
108
- value: ReactRouterMode.V7_FRAMEWORK,
109
- },
110
- {
111
- label: 'React Router v7 - Data mode',
112
- value: ReactRouterMode.V7_DATA,
113
- },
114
- {
115
- label: 'React Router v7 - Declarative mode',
116
- value: ReactRouterMode.V7_DECLARATIVE,
117
- },
118
- ],
119
- }), Integration.reactRouter);
120
- return result;
121
- }
122
- const coercedVersion = semver.coerce(reactRouterVersion);
123
- const majorVersion = coercedVersion ? major(coercedVersion) : null;
124
- // If v6, return V6
125
- if (majorVersion === 6) {
126
- clack.log.info('Detected React Router v6');
127
- return ReactRouterMode.V6;
128
- }
129
- // If v7, detect the mode
130
- if (majorVersion === 7) {
131
- // First check for framework mode (react-router.config.ts)
132
- const hasConfig = await hasReactRouterConfig({ installDir });
133
- if (hasConfig) {
134
- clack.log.info('Detected React Router v7 - Framework mode');
135
- return ReactRouterMode.V7_FRAMEWORK;
136
- }
137
- // Check for data mode (createBrowserRouter)
138
- const hasDataMode = await hasCreateBrowserRouter({ installDir });
139
- if (hasDataMode) {
140
- clack.log.info('Detected React Router v7 - Data mode');
141
- return ReactRouterMode.V7_DATA;
142
- }
143
- // Check for declarative mode (BrowserRouter)
144
- const hasDeclarative = await hasDeclarativeRouter({ installDir });
145
- if (hasDeclarative) {
146
- clack.log.info('Detected React Router v7 - Declarative mode');
147
- return ReactRouterMode.V7_DECLARATIVE;
148
- }
149
- // If v7 but can't detect mode, ask the user
150
- clack.log.info(`Learn more about React Router modes: ${chalk.cyan('https://reactrouter.com/start/modes')}`);
151
- const result = await abortIfCancelled(clack.select({
152
- message: 'What React Router v7 mode are you using?',
153
- options: [
154
- {
155
- label: 'Framework mode',
156
- value: ReactRouterMode.V7_FRAMEWORK,
157
- },
158
- {
159
- label: 'Data mode',
160
- value: ReactRouterMode.V7_DATA,
161
- },
162
- {
163
- label: 'Declarative mode',
164
- value: ReactRouterMode.V7_DECLARATIVE,
165
- },
166
- ],
167
- }), Integration.reactRouter);
168
- return result;
169
- }
170
- // If version is not 6 or 7, default to asking
171
- clack.log.info(`Learn more about React Router modes: ${chalk.cyan('https://reactrouter.com/start/modes')}`);
172
- const result = await abortIfCancelled(clack.select({
173
- message: 'What React Router version and mode are you using?',
174
- options: [
175
- {
176
- label: 'React Router v6',
177
- value: ReactRouterMode.V6,
178
- },
179
- {
180
- label: 'React Router v7 - Framework mode',
181
- value: ReactRouterMode.V7_FRAMEWORK,
182
- },
183
- {
184
- label: 'React Router v7 - Data mode',
185
- value: ReactRouterMode.V7_DATA,
186
- },
187
- {
188
- label: 'React Router v7 - Declarative mode',
189
- value: ReactRouterMode.V7_DECLARATIVE,
190
- },
191
- ],
192
- }), Integration.reactRouter);
193
- return result;
194
- }
195
- /**
196
- * Get human-readable name for React Router mode
197
- */
198
- export function getReactRouterModeName(mode) {
199
- switch (mode) {
200
- case ReactRouterMode.V6:
201
- return 'v6';
202
- case ReactRouterMode.V7_FRAMEWORK:
203
- return 'v7 Framework mode';
204
- case ReactRouterMode.V7_DATA:
205
- return 'v7 Data mode';
206
- case ReactRouterMode.V7_DECLARATIVE:
207
- return 'v7 Declarative mode';
208
- }
209
- }
4
+ export { ReactRouterMode, getReactRouterVersionBucket, getReactRouterMode, getReactRouterModeName, } from '../integrations/react-router/utils.js';
210
5
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/react-router/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { major } from 'semver';\nimport fg from 'fast-glob';\nimport { abortIfCancelled, getPackageDotJson } from '../utils/clack-utils.js';\nimport clack from '../utils/clack.js';\nimport { getVersionBucket } from '../utils/semver.js';\nimport type { InstallerOptions } from '../utils/types.js';\nimport { IGNORE_PATTERNS, Integration } from '../lib/constants.js';\nimport { getPackageVersion } from '../utils/package-json.js';\nimport chalk from 'chalk';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as semver from 'semver';\n\nexport enum ReactRouterMode {\n V6 = 'v6', // React Router v6\n V7_FRAMEWORK = 'v7-framework', // React Router v7 with react-router.config.ts\n V7_DATA = 'v7-data', // React Router v7 with createBrowserRouter\n V7_DECLARATIVE = 'v7-declarative', // React Router v7 with BrowserRouter\n}\n\n/**\n * Get React Router version bucket for analytics\n */\nexport function getReactRouterVersionBucket(version: string | undefined): string {\n return getVersionBucket(version, 6);\n}\n\n/**\n * Check if react-router.config.ts exists (indicates framework mode - React Router v7)\n */\nasync function hasReactRouterConfig({ installDir }: Pick<InstallerOptions, 'installDir'>): Promise<boolean> {\n const configMatches = await fg('**/react-router.config.@(ts|js|tsx|jsx)', {\n dot: true,\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n\n return configMatches.length > 0;\n}\n\n/**\n * Search for createBrowserRouter usage in source files\n */\nasync function hasCreateBrowserRouter({ installDir }: Pick<InstallerOptions, 'installDir'>): Promise<boolean> {\n const sourceFiles = await fg('**/*.@(ts|tsx|js|jsx)', {\n dot: true,\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n\n for (const file of sourceFiles) {\n try {\n const filePath = path.join(installDir, file);\n const content = fs.readFileSync(filePath, 'utf-8');\n\n // Check for createBrowserRouter import or usage\n if (content.includes('createBrowserRouter')) {\n return true;\n }\n } catch {\n // Skip files that can't be read\n continue;\n }\n }\n\n return false;\n}\n\n/**\n * Search for declarative BrowserRouter usage\n */\nasync function hasDeclarativeRouter({ installDir }: Pick<InstallerOptions, 'installDir'>): Promise<boolean> {\n const sourceFiles = await fg('**/*.@(ts|tsx|js|jsx)', {\n dot: true,\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n\n for (const file of sourceFiles) {\n try {\n const filePath = path.join(installDir, file);\n const content = fs.readFileSync(filePath, 'utf-8');\n\n // Check for BrowserRouter usage (JSX or import)\n if (\n content.includes('<BrowserRouter') ||\n (content.includes('BrowserRouter') &&\n (content.includes('from \"react-router-dom\"') || content.includes(\"from 'react-router-dom'\")))\n ) {\n return true;\n }\n } catch {\n // Skip files that can't be read\n continue;\n }\n }\n\n return false;\n}\n\n/**\n * Detect React Router mode\n */\nexport async function getReactRouterMode(options: InstallerOptions): Promise<ReactRouterMode> {\n const { installDir } = options;\n\n // First, get the React Router version\n const packageJson = await getPackageDotJson(options);\n const reactRouterVersion =\n getPackageVersion('react-router-dom', packageJson) || getPackageVersion('react-router', packageJson);\n\n if (!reactRouterVersion) {\n // If we can't detect version, ask the user\n clack.log.info(`Learn more about React Router modes: ${chalk.cyan('https://reactrouter.com/start/modes')}`);\n const result: ReactRouterMode = await abortIfCancelled(\n clack.select({\n message: 'What React Router version and mode are you using?',\n options: [\n {\n label: 'React Router v6',\n value: ReactRouterMode.V6,\n },\n {\n label: 'React Router v7 - Framework mode',\n value: ReactRouterMode.V7_FRAMEWORK,\n },\n {\n label: 'React Router v7 - Data mode',\n value: ReactRouterMode.V7_DATA,\n },\n {\n label: 'React Router v7 - Declarative mode',\n value: ReactRouterMode.V7_DECLARATIVE,\n },\n ],\n }),\n Integration.reactRouter,\n );\n return result;\n }\n\n const coercedVersion = semver.coerce(reactRouterVersion);\n const majorVersion = coercedVersion ? major(coercedVersion) : null;\n\n // If v6, return V6\n if (majorVersion === 6) {\n clack.log.info('Detected React Router v6');\n return ReactRouterMode.V6;\n }\n\n // If v7, detect the mode\n if (majorVersion === 7) {\n // First check for framework mode (react-router.config.ts)\n const hasConfig = await hasReactRouterConfig({ installDir });\n if (hasConfig) {\n clack.log.info('Detected React Router v7 - Framework mode');\n return ReactRouterMode.V7_FRAMEWORK;\n }\n\n // Check for data mode (createBrowserRouter)\n const hasDataMode = await hasCreateBrowserRouter({ installDir });\n if (hasDataMode) {\n clack.log.info('Detected React Router v7 - Data mode');\n return ReactRouterMode.V7_DATA;\n }\n\n // Check for declarative mode (BrowserRouter)\n const hasDeclarative = await hasDeclarativeRouter({ installDir });\n if (hasDeclarative) {\n clack.log.info('Detected React Router v7 - Declarative mode');\n return ReactRouterMode.V7_DECLARATIVE;\n }\n\n // If v7 but can't detect mode, ask the user\n clack.log.info(`Learn more about React Router modes: ${chalk.cyan('https://reactrouter.com/start/modes')}`);\n const result: ReactRouterMode = await abortIfCancelled(\n clack.select({\n message: 'What React Router v7 mode are you using?',\n options: [\n {\n label: 'Framework mode',\n value: ReactRouterMode.V7_FRAMEWORK,\n },\n {\n label: 'Data mode',\n value: ReactRouterMode.V7_DATA,\n },\n {\n label: 'Declarative mode',\n value: ReactRouterMode.V7_DECLARATIVE,\n },\n ],\n }),\n Integration.reactRouter,\n );\n return result;\n }\n\n // If version is not 6 or 7, default to asking\n clack.log.info(`Learn more about React Router modes: ${chalk.cyan('https://reactrouter.com/start/modes')}`);\n const result: ReactRouterMode = await abortIfCancelled(\n clack.select({\n message: 'What React Router version and mode are you using?',\n options: [\n {\n label: 'React Router v6',\n value: ReactRouterMode.V6,\n },\n {\n label: 'React Router v7 - Framework mode',\n value: ReactRouterMode.V7_FRAMEWORK,\n },\n {\n label: 'React Router v7 - Data mode',\n value: ReactRouterMode.V7_DATA,\n },\n {\n label: 'React Router v7 - Declarative mode',\n value: ReactRouterMode.V7_DECLARATIVE,\n },\n ],\n }),\n Integration.reactRouter,\n );\n return result;\n}\n\n/**\n * Get human-readable name for React Router mode\n */\nexport function getReactRouterModeName(mode: ReactRouterMode): string {\n switch (mode) {\n case ReactRouterMode.V6:\n return 'v6';\n case ReactRouterMode.V7_FRAMEWORK:\n return 'v7 Framework mode';\n case ReactRouterMode.V7_DATA:\n return 'v7 Data mode';\n case ReactRouterMode.V7_DECLARATIVE:\n return 'v7 Declarative mode';\n }\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/react-router/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,uCAAuC,CAAC","sourcesContent":["/**\n * @deprecated Import from 'src/integrations/react-router/utils.js' instead.\n */\nexport {\n ReactRouterMode,\n getReactRouterVersionBucket,\n getReactRouterMode,\n getReactRouterModeName,\n} from '../integrations/react-router/utils.js';\n"]}
@@ -1,2 +1,4 @@
1
- import type { InstallerOptions } from '../utils/types.js';
2
- export declare function runTanstackStartInstallerAgent(options: InstallerOptions): Promise<string>;
1
+ /**
2
+ * @deprecated Import from 'src/integrations/tanstack-start/index.js' instead.
3
+ */
4
+ export { run as runTanstackStartInstallerAgent, config as TANSTACK_START_AGENT_CONFIG, } from '../integrations/tanstack-start/index.js';
@@ -1,49 +1,5 @@
1
- import { enableDebugLogs } from '../utils/debug.js';
2
- import { runAgentInstaller } from '../lib/agent-runner.js';
3
- import { Integration } from '../lib/constants.js';
4
- import { getPackageVersion } from '../utils/package-json.js';
5
- const TANSTACK_START_AGENT_CONFIG = {
6
- metadata: {
7
- name: 'TanStack Start',
8
- integration: Integration.tanstackStart,
9
- docsUrl: 'https://workos.com/docs/user-management/authkit/tanstack-start',
10
- unsupportedVersionDocsUrl: 'https://workos.com/docs/user-management/authkit/tanstack-start',
11
- skillName: 'workos-authkit-tanstack-start',
12
- },
13
- detection: {
14
- packageName: '@tanstack/react-start',
15
- packageDisplayName: 'TanStack Start',
16
- getVersion: (packageJson) => getPackageVersion('@tanstack/react-start', packageJson),
17
- },
18
- environment: {
19
- uploadToHosting: false,
20
- requiresApiKey: true, // Server-side framework
21
- getEnvVars: (apiKey, clientId) => ({
22
- WORKOS_API_KEY: apiKey,
23
- WORKOS_CLIENT_ID: clientId,
24
- }),
25
- },
26
- analytics: {
27
- getTags: () => ({}),
28
- },
29
- prompts: {},
30
- ui: {
31
- successMessage: 'WorkOS AuthKit integration complete',
32
- getOutroChanges: () => [
33
- 'Analyzed your TanStack Start project structure',
34
- 'Created and configured WorkOS AuthKit',
35
- 'Integrated authentication into your application',
36
- ],
37
- getOutroNextSteps: () => [
38
- 'Start your development server to test authentication',
39
- 'Visit the WorkOS Dashboard to manage users and settings',
40
- ],
41
- },
42
- };
43
- export async function runTanstackStartInstallerAgent(options) {
44
- if (options.debug) {
45
- enableDebugLogs();
46
- }
47
- return runAgentInstaller(TANSTACK_START_AGENT_CONFIG, options);
48
- }
1
+ /**
2
+ * @deprecated Import from 'src/integrations/tanstack-start/index.js' instead.
3
+ */
4
+ export { run as runTanstackStartInstallerAgent, config as TANSTACK_START_AGENT_CONFIG, } from '../integrations/tanstack-start/index.js';
49
5
  //# sourceMappingURL=tanstack-start-installer-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tanstack-start-installer-agent.js","sourceRoot":"","sources":["../../src/tanstack-start/tanstack-start-installer-agent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,2BAA2B,GAAoB;IACnD,QAAQ,EAAE;QACR,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,WAAW,CAAC,aAAa;QACtC,OAAO,EAAE,gEAAgE;QACzE,yBAAyB,EAAE,gEAAgE;QAC3F,SAAS,EAAE,+BAA+B;KAC3C;IAED,SAAS,EAAE;QACT,WAAW,EAAE,uBAAuB;QACpC,kBAAkB,EAAE,gBAAgB;QACpC,UAAU,EAAE,CAAC,WAAgB,EAAE,EAAE,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,WAAW,CAAC;KAC1F;IAED,WAAW,EAAE;QACX,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI,EAAE,wBAAwB;QAC9C,UAAU,EAAE,CAAC,MAAc,EAAE,QAAgB,EAAE,EAAE,CAAC,CAAC;YACjD,cAAc,EAAE,MAAM;YACtB,gBAAgB,EAAE,QAAQ;SAC3B,CAAC;KACH;IAED,SAAS,EAAE;QACT,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KACpB;IAED,OAAO,EAAE,EAAE;IAEX,EAAE,EAAE;QACF,cAAc,EAAE,qCAAqC;QACrD,eAAe,EAAE,GAAG,EAAE,CAAC;YACrB,gDAAgD;YAChD,uCAAuC;YACvC,iDAAiD;SAClD;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC;YACvB,sDAAsD;YACtD,yDAAyD;SAC1D;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAAyB;IAC5E,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,iBAAiB,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC","sourcesContent":["/* TanStack Start wizard using Claude Agent SDK */\nimport type { InstallerOptions } from '../utils/types.js';\nimport type { FrameworkConfig } from '../lib/framework-config.js';\nimport { enableDebugLogs } from '../utils/debug.js';\nimport { runAgentInstaller } from '../lib/agent-runner.js';\nimport { Integration } from '../lib/constants.js';\nimport { getPackageVersion } from '../utils/package-json.js';\n\nconst TANSTACK_START_AGENT_CONFIG: FrameworkConfig = {\n metadata: {\n name: 'TanStack Start',\n integration: Integration.tanstackStart,\n docsUrl: 'https://workos.com/docs/user-management/authkit/tanstack-start',\n unsupportedVersionDocsUrl: 'https://workos.com/docs/user-management/authkit/tanstack-start',\n skillName: 'workos-authkit-tanstack-start',\n },\n\n detection: {\n packageName: '@tanstack/react-start',\n packageDisplayName: 'TanStack Start',\n getVersion: (packageJson: any) => getPackageVersion('@tanstack/react-start', packageJson),\n },\n\n environment: {\n uploadToHosting: false,\n requiresApiKey: true, // Server-side framework\n getEnvVars: (apiKey: string, clientId: string) => ({\n WORKOS_API_KEY: apiKey,\n WORKOS_CLIENT_ID: clientId,\n }),\n },\n\n analytics: {\n getTags: () => ({}),\n },\n\n prompts: {},\n\n ui: {\n successMessage: 'WorkOS AuthKit integration complete',\n getOutroChanges: () => [\n 'Analyzed your TanStack Start project structure',\n 'Created and configured WorkOS AuthKit',\n 'Integrated authentication into your application',\n ],\n getOutroNextSteps: () => [\n 'Start your development server to test authentication',\n 'Visit the WorkOS Dashboard to manage users and settings',\n ],\n },\n};\n\nexport async function runTanstackStartInstallerAgent(options: InstallerOptions): Promise<string> {\n if (options.debug) {\n enableDebugLogs();\n }\n\n return runAgentInstaller(TANSTACK_START_AGENT_CONFIG, options);\n}\n"]}
1
+ {"version":3,"file":"tanstack-start-installer-agent.js","sourceRoot":"","sources":["../../src/tanstack-start/tanstack-start-installer-agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,GAAG,IAAI,8BAA8B,EACrC,MAAM,IAAI,2BAA2B,GACtC,MAAM,yCAAyC,CAAC","sourcesContent":["/**\n * @deprecated Import from 'src/integrations/tanstack-start/index.js' instead.\n */\nexport {\n run as runTanstackStartInstallerAgent,\n config as TANSTACK_START_AGENT_CONFIG,\n} from '../integrations/tanstack-start/index.js';\n"]}
@@ -1,2 +1,4 @@
1
- import type { InstallerOptions } from '../utils/types.js';
2
- export declare function runVanillaJsInstallerAgent(options: InstallerOptions): Promise<string>;
1
+ /**
2
+ * @deprecated Import from 'src/integrations/vanilla-js/index.js' instead.
3
+ */
4
+ export { run as runVanillaJsInstallerAgent, config as VANILLA_JS_AGENT_CONFIG, } from '../integrations/vanilla-js/index.js';
@@ -1,47 +1,5 @@
1
- import { enableDebugLogs } from '../utils/debug.js';
2
- import { runAgentInstaller } from '../lib/agent-runner.js';
3
- import { Integration } from '../lib/constants.js';
4
- const VANILLA_JS_AGENT_CONFIG = {
5
- metadata: {
6
- name: 'Vanilla JavaScript',
7
- integration: Integration.vanillaJs,
8
- docsUrl: 'https://workos.com/docs/user-management/authkit/javascript',
9
- unsupportedVersionDocsUrl: 'https://workos.com/docs/user-management/authkit/javascript',
10
- skillName: 'workos-authkit-vanilla-js',
11
- },
12
- detection: {
13
- packageName: 'workos',
14
- packageDisplayName: 'Vanilla JavaScript',
15
- getVersion: () => undefined,
16
- },
17
- environment: {
18
- uploadToHosting: false,
19
- requiresApiKey: false, // Client-only
20
- getEnvVars: (apiKey, clientId) => ({
21
- WORKOS_CLIENT_ID: clientId, // Only client ID needed
22
- }),
23
- },
24
- analytics: {
25
- getTags: () => ({}),
26
- },
27
- prompts: {},
28
- ui: {
29
- successMessage: 'WorkOS AuthKit integration complete',
30
- getOutroChanges: () => [
31
- 'Created WorkOS AuthKit integration',
32
- 'Added authentication to your JavaScript application',
33
- 'Set up login/logout functionality',
34
- ],
35
- getOutroNextSteps: () => [
36
- 'Start your development server to test authentication',
37
- 'Visit the WorkOS Dashboard to manage users and settings',
38
- ],
39
- },
40
- };
41
- export async function runVanillaJsInstallerAgent(options) {
42
- if (options.debug) {
43
- enableDebugLogs();
44
- }
45
- return runAgentInstaller(VANILLA_JS_AGENT_CONFIG, options);
46
- }
1
+ /**
2
+ * @deprecated Import from 'src/integrations/vanilla-js/index.js' instead.
3
+ */
4
+ export { run as runVanillaJsInstallerAgent, config as VANILLA_JS_AGENT_CONFIG, } from '../integrations/vanilla-js/index.js';
47
5
  //# sourceMappingURL=vanilla-js-installer-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vanilla-js-installer-agent.js","sourceRoot":"","sources":["../../src/vanilla-js/vanilla-js-installer-agent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,uBAAuB,GAAoB;IAC/C,QAAQ,EAAE;QACR,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,WAAW,CAAC,SAAS;QAClC,OAAO,EAAE,4DAA4D;QACrE,yBAAyB,EAAE,4DAA4D;QACvF,SAAS,EAAE,2BAA2B;KACvC;IAED,SAAS,EAAE;QACT,WAAW,EAAE,QAAQ;QACrB,kBAAkB,EAAE,oBAAoB;QACxC,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS;KAC5B;IAED,WAAW,EAAE;QACX,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,KAAK,EAAE,cAAc;QACrC,UAAU,EAAE,CAAC,MAAc,EAAE,QAAgB,EAAE,EAAE,CAAC,CAAC;YACjD,gBAAgB,EAAE,QAAQ,EAAE,wBAAwB;SACrD,CAAC;KACH;IAED,SAAS,EAAE;QACT,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KACpB;IAED,OAAO,EAAE,EAAE;IAEX,EAAE,EAAE;QACF,cAAc,EAAE,qCAAqC;QACrD,eAAe,EAAE,GAAG,EAAE,CAAC;YACrB,oCAAoC;YACpC,qDAAqD;YACrD,mCAAmC;SACpC;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC;YACvB,sDAAsD;YACtD,yDAAyD;SAC1D;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,OAAyB;IACxE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,iBAAiB,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC","sourcesContent":["/* Vanilla JS wizard using Claude Agent SDK */\nimport type { InstallerOptions } from '../utils/types.js';\nimport type { FrameworkConfig } from '../lib/framework-config.js';\nimport { enableDebugLogs } from '../utils/debug.js';\nimport { runAgentInstaller } from '../lib/agent-runner.js';\nimport { Integration } from '../lib/constants.js';\n\nconst VANILLA_JS_AGENT_CONFIG: FrameworkConfig = {\n metadata: {\n name: 'Vanilla JavaScript',\n integration: Integration.vanillaJs,\n docsUrl: 'https://workos.com/docs/user-management/authkit/javascript',\n unsupportedVersionDocsUrl: 'https://workos.com/docs/user-management/authkit/javascript',\n skillName: 'workos-authkit-vanilla-js',\n },\n\n detection: {\n packageName: 'workos',\n packageDisplayName: 'Vanilla JavaScript',\n getVersion: () => undefined,\n },\n\n environment: {\n uploadToHosting: false,\n requiresApiKey: false, // Client-only\n getEnvVars: (apiKey: string, clientId: string) => ({\n WORKOS_CLIENT_ID: clientId, // Only client ID needed\n }),\n },\n\n analytics: {\n getTags: () => ({}),\n },\n\n prompts: {},\n\n ui: {\n successMessage: 'WorkOS AuthKit integration complete',\n getOutroChanges: () => [\n 'Created WorkOS AuthKit integration',\n 'Added authentication to your JavaScript application',\n 'Set up login/logout functionality',\n ],\n getOutroNextSteps: () => [\n 'Start your development server to test authentication',\n 'Visit the WorkOS Dashboard to manage users and settings',\n ],\n },\n};\n\nexport async function runVanillaJsInstallerAgent(options: InstallerOptions): Promise<string> {\n if (options.debug) {\n enableDebugLogs();\n }\n\n return runAgentInstaller(VANILLA_JS_AGENT_CONFIG, options);\n}\n"]}
1
+ {"version":3,"file":"vanilla-js-installer-agent.js","sourceRoot":"","sources":["../../src/vanilla-js/vanilla-js-installer-agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,GAAG,IAAI,0BAA0B,EACjC,MAAM,IAAI,uBAAuB,GAClC,MAAM,qCAAqC,CAAC","sourcesContent":["/**\n * @deprecated Import from 'src/integrations/vanilla-js/index.js' instead.\n */\nexport {\n run as runVanillaJsInstallerAgent,\n config as VANILLA_JS_AGENT_CONFIG,\n} from '../integrations/vanilla-js/index.js';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workos",
3
- "version": "0.4.5",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "description": "The Official Workos CLI",
6
6
  "repository": {
@@ -73,8 +73,7 @@
73
73
  "engines": {
74
74
  "node": ">=20.20"
75
75
  },
76
- "author": "WorkOS",
77
- "license": "MIT",
76
+ "packageManager": "pnpm@10.28.2",
78
77
  "scripts": {
79
78
  "clean": "rm -rf ./dist",
80
79
  "prebuild": "pnpm clean",
@@ -95,5 +94,7 @@
95
94
  "eval:prune": "tsx tests/evals/index.ts prune",
96
95
  "eval:logs": "tsx tests/evals/index.ts logs",
97
96
  "eval:show": "tsx tests/evals/index.ts show"
98
- }
99
- }
97
+ },
98
+ "author": "WorkOS",
99
+ "license": "MIT"
100
+ }
@@ -0,0 +1,160 @@
1
+ ---
2
+ name: workos-authkit-sveltekit
3
+ description: Integrate WorkOS AuthKit with SvelteKit. Server-side authentication with hooks and file-based routing.
4
+ ---
5
+
6
+ # WorkOS AuthKit for SvelteKit
7
+
8
+ ## Step 1: Fetch SDK Documentation (BLOCKING)
9
+
10
+ **STOP. Do not proceed until complete.**
11
+
12
+ WebFetch: `https://github.com/workos/authkit-sveltekit/blob/main/README.md`
13
+
14
+ The README is the source of truth. If this skill conflicts with README, follow README.
15
+
16
+ ## Step 2: Pre-Flight Validation
17
+
18
+ ### Project Structure
19
+
20
+ - Confirm `svelte.config.js` (or `svelte.config.ts`) exists
21
+ - Confirm `package.json` contains `@sveltejs/kit` dependency
22
+ - Confirm `src/routes/` directory exists
23
+
24
+ ### Environment Variables
25
+
26
+ Check `.env` or `.env.local` for:
27
+
28
+ - `WORKOS_API_KEY` - starts with `sk_`
29
+ - `WORKOS_CLIENT_ID` - starts with `client_`
30
+ - `WORKOS_REDIRECT_URI` - valid callback URL
31
+ - `WORKOS_COOKIE_PASSWORD` - 32+ characters
32
+
33
+ SvelteKit uses `$env/static/private` and `$env/dynamic/private` natively. The agent should write env vars to `.env` (SvelteKit's default) or `.env.local`.
34
+
35
+ ## Step 3: Install SDK
36
+
37
+ Detect package manager, install SDK package from README.
38
+
39
+ ```
40
+ pnpm-lock.yaml? → pnpm add @workos-inc/authkit-sveltekit
41
+ yarn.lock? → yarn add @workos-inc/authkit-sveltekit
42
+ bun.lockb? → bun add @workos-inc/authkit-sveltekit
43
+ else → npm install @workos-inc/authkit-sveltekit
44
+ ```
45
+
46
+ **Verify:** SDK package exists in node_modules before continuing.
47
+
48
+ ## Step 4: Configure Server Hooks
49
+
50
+ SvelteKit uses `src/hooks.server.ts` for server-side middleware. This is where the AuthKit handler is registered.
51
+
52
+ Create or update `src/hooks.server.ts` with the authkit handle function from the README.
53
+
54
+ ### Existing Hooks (IMPORTANT)
55
+
56
+ If `src/hooks.server.ts` already exists with custom logic, use SvelteKit's `sequence()` helper to compose hooks:
57
+
58
+ ```typescript
59
+ import { sequence } from '@sveltejs/kit/hooks';
60
+ import { authkitHandle } from '@workos-inc/authkit-sveltekit'; // Check README for exact export
61
+
62
+ export const handle = sequence(authkitHandle, yourExistingHandle);
63
+ ```
64
+
65
+ Check README for the exact export name and usage pattern.
66
+
67
+ ## Step 5: Create Callback Route
68
+
69
+ Parse `WORKOS_REDIRECT_URI` to determine route path:
70
+
71
+ ```
72
+ URI path --> Route location
73
+ /callback --> src/routes/callback/+server.ts
74
+ /auth/callback --> src/routes/auth/callback/+server.ts
75
+ ```
76
+
77
+ Use the SDK's callback handler from the README. Do not write custom OAuth logic.
78
+
79
+ **Critical:** SvelteKit uses `+server.ts` for API routes, not `+page.server.ts`.
80
+
81
+ ## Step 6: Layout Setup
82
+
83
+ Update `src/routes/+layout.server.ts` to load the auth session and pass it to all pages.
84
+
85
+ Check README for the exact pattern — typically a `load` function that returns the user session from locals.
86
+
87
+ ```typescript
88
+ // src/routes/+layout.server.ts
89
+ import type { LayoutServerLoad } from './$types';
90
+
91
+ export const load: LayoutServerLoad = async (event) => {
92
+ // Check README for exact API — session is typically on event.locals
93
+ return {
94
+ user: event.locals.user, // or similar from README
95
+ };
96
+ };
97
+ ```
98
+
99
+ ## Step 7: UI Integration
100
+
101
+ Add auth UI to `src/routes/+page.svelte` using the session data from the layout.
102
+
103
+ - Show user info when authenticated
104
+ - Show sign-in link/button when not authenticated
105
+ - Add sign-out functionality
106
+
107
+ Check README for sign-in URL generation and sign-out patterns.
108
+
109
+ ## Verification Checklist (ALL MUST PASS)
110
+
111
+ Run these commands to confirm integration. **Do not mark complete until all pass:**
112
+
113
+ ```bash
114
+ # 1. Check hooks.server.ts exists and has authkit
115
+ grep -i "workos\|authkit" src/hooks.server.ts || echo "FAIL: authkit missing from hooks.server.ts"
116
+
117
+ # 2. Check callback route exists
118
+ find src/routes -name "+server.ts" -path "*/callback/*"
119
+
120
+ # 3. Check layout loads auth session
121
+ grep -i "user\|auth\|session" src/routes/+layout.server.ts || echo "FAIL: auth session missing from layout"
122
+
123
+ # 4. Build succeeds
124
+ pnpm build || npm run build
125
+ ```
126
+
127
+ ## Error Recovery
128
+
129
+ ### "Cannot find module '@workos-inc/authkit-sveltekit'"
130
+
131
+ - Check: SDK installed before writing imports
132
+ - Check: SDK package directory exists in node_modules
133
+ - Re-run install if missing
134
+
135
+ ### hooks.server.ts not taking effect
136
+
137
+ - Check: File is at `src/hooks.server.ts`, not `src/hooks.ts` or elsewhere
138
+ - Check: Named export is `handle` (SvelteKit requirement)
139
+ - Check: If using `sequence()`, all handles are properly composed
140
+
141
+ ### Callback route not found (404)
142
+
143
+ - Check: File uses `+server.ts` (not `+page.server.ts`)
144
+ - Check: Route path matches `WORKOS_REDIRECT_URI` path exactly
145
+ - Check: Exports `GET` handler (SvelteKit convention)
146
+
147
+ ### "locals" type errors
148
+
149
+ - Check: App.Locals interface is augmented in `src/app.d.ts`
150
+ - Check README for TypeScript setup instructions
151
+
152
+ ### Cookie password error
153
+
154
+ - Verify `WORKOS_COOKIE_PASSWORD` is 32+ characters
155
+ - Generate new: `openssl rand -base64 32`
156
+
157
+ ### Auth state not available in pages
158
+
159
+ - Check: `+layout.server.ts` load function returns user data
160
+ - Check: Pages access data via `export let data` (Svelte 4) or `$page.data` (Svelte 5)