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
@@ -0,0 +1,163 @@
1
+ ---
2
+ name: workos-ruby
3
+ description: Integrate WorkOS AuthKit with Ruby applications. Adapts to Rails, Sinatra, or vanilla Ruby. Server-side authentication with redirect-based OAuth flow.
4
+ ---
5
+
6
+ # WorkOS AuthKit for Ruby
7
+
8
+ ## Step 1: Fetch SDK Documentation (BLOCKING)
9
+
10
+ **STOP — Do not proceed until this fetch is complete.**
11
+
12
+ WebFetch: `https://raw.githubusercontent.com/workos/workos-ruby/main/README.md`
13
+
14
+ Also fetch the AuthKit quickstart for reference:
15
+ WebFetch: `https://workos.com/docs/authkit/vanilla/ruby`
16
+
17
+ The README is the **source of truth** for gem API usage. If this skill conflicts with the README, **follow the README**.
18
+
19
+ ## Step 2: Detect Framework
20
+
21
+ Examine the project to determine which Ruby web framework is in use:
22
+
23
+ ```
24
+ config/routes.rb exists? → Rails
25
+ Gemfile has 'rails' gem? → Confirmed Rails
26
+
27
+ Gemfile has 'sinatra' gem? → Sinatra
28
+ server.rb/app.rb has Sinatra routes? → Confirmed Sinatra
29
+
30
+ None of the above? → Vanilla Ruby (use Sinatra quickstart pattern)
31
+ ```
32
+
33
+ **Adapt all subsequent steps to the detected framework.** Do not force Rails on a Sinatra project or vice versa.
34
+
35
+ ## Step 3: Install WorkOS Gem
36
+
37
+ ```bash
38
+ bundle add workos
39
+ ```
40
+
41
+ If `dotenv` is not in the Gemfile:
42
+
43
+ ```bash
44
+ # Rails
45
+ bundle add dotenv-rails --group development,test
46
+
47
+ # Sinatra / other
48
+ bundle add dotenv
49
+ ```
50
+
51
+ **Verify:** `bundle show workos`
52
+
53
+ ## Step 4: Integrate Authentication
54
+
55
+ ### If Rails
56
+
57
+ 1. **Create initializer** — `config/initializers/workos.rb`:
58
+
59
+ ```ruby
60
+ WorkOS.configure do |config|
61
+ config.api_key = ENV.fetch("WORKOS_API_KEY")
62
+ config.client_id = ENV.fetch("WORKOS_CLIENT_ID")
63
+ end
64
+ ```
65
+
66
+ 2. **Create AuthController** — `app/controllers/auth_controller.rb`:
67
+ - `login` action: call `WorkOS::UserManagement.get_authorization_url(provider: "authkit", redirect_uri: ...)`, redirect
68
+ - `callback` action: call `WorkOS::UserManagement.authenticate_with_code(code: params[:code])`, store user in session
69
+ - `logout` action: clear session, redirect
70
+
71
+ 3. **Add routes** to `config/routes.rb`:
72
+
73
+ ```ruby
74
+ get "/auth/login", to: "auth#login"
75
+ get "/auth/callback", to: "auth#callback"
76
+ get "/auth/logout", to: "auth#logout"
77
+ ```
78
+
79
+ 4. **Add current_user helper** to `ApplicationController` (optional):
80
+
81
+ ```ruby
82
+ helper_method :current_user
83
+ def current_user
84
+ @current_user ||= session[:user] && JSON.parse(session[:user])
85
+ end
86
+ ```
87
+
88
+ 5. **Verify:** `bundle exec rails routes | grep auth`
89
+
90
+ ### If Sinatra
91
+
92
+ Follow the quickstart pattern exactly:
93
+
94
+ 1. **Configure WorkOS** in `server.rb`:
95
+
96
+ ```ruby
97
+ require "dotenv/load"
98
+ require "workos"
99
+ require "sinatra"
100
+
101
+ WorkOS.configure do |config|
102
+ config.key = ENV["WORKOS_API_KEY"]
103
+ end
104
+ ```
105
+
106
+ 2. **Create `/login` route** — call `WorkOS::UserManagement.authorization_url(provider: "authkit", client_id: ..., redirect_uri: ...)`, redirect
107
+
108
+ 3. **Create `/callback` route** — call `WorkOS::UserManagement.authenticate_with_code(client_id: ..., code: ...)`, store in session cookie
109
+
110
+ 4. **Create `/logout` route** — clear session cookie, redirect
111
+
112
+ 5. **Update home route** — read session, show user info if present
113
+
114
+ 6. **Verify:** `ruby -c server.rb`
115
+
116
+ ### If Vanilla Ruby (no framework detected)
117
+
118
+ Install Sinatra and follow the Sinatra pattern above. This matches the official quickstart.
119
+
120
+ ## Step 5: Environment Setup
121
+
122
+ Create/update `.env` with WorkOS credentials. Do NOT overwrite existing values.
123
+
124
+ ```
125
+ WORKOS_API_KEY=sk_...
126
+ WORKOS_CLIENT_ID=client_...
127
+ ```
128
+
129
+ ## Step 6: Verification
130
+
131
+ ### Rails
132
+
133
+ ```bash
134
+ bundle show workos
135
+ bundle exec rails routes | grep auth
136
+ grep WORKOS .env
137
+ ```
138
+
139
+ ### Sinatra
140
+
141
+ ```bash
142
+ bundle show workos
143
+ ruby -c server.rb
144
+ grep WORKOS .env
145
+ ```
146
+
147
+ ## Error Recovery
148
+
149
+ ### "uninitialized constant WorkOS"
150
+
151
+ Gem not loaded. Verify `bundle show workos` succeeds. For Rails, ensure initializer exists. For Sinatra, ensure `require "workos"` is at top of server file.
152
+
153
+ ### "NoMethodError" on WorkOS methods
154
+
155
+ SDK API may differ from this skill. Re-read the README (Step 1) and use exact method names.
156
+
157
+ ### Routes not working (Rails)
158
+
159
+ Run `bundle exec rails routes | grep auth`. Verify routes are inside `Rails.application.routes.draw` block.
160
+
161
+ ### Session not persisting (Sinatra)
162
+
163
+ Enable sessions: `enable :sessions` in server.rb, or use `rack-session` gem.