@spacefast/common 0.0.24 → 0.2.1

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 (320) hide show
  1. package/brand-assets/LICENSE-Haskoy.txt +93 -0
  2. package/brand-assets/haskoy-latin-variable.woff2 +0 -0
  3. package/brand-assets/spacefast-favicon.svg +4 -4
  4. package/brand-assets/spacefast-sf-full-bleed.svg +3 -3
  5. package/brand-assets/spacefast-wordmark.svg +2 -4
  6. package/dist/agents/connect-targets.d.ts +6 -146
  7. package/dist/agents/connect-targets.js +63 -295
  8. package/dist/agents/private-key-oauth.d.ts +31 -2
  9. package/dist/agents/private-key-oauth.js +166 -92
  10. package/dist/agents/registry/core.d.ts +292 -0
  11. package/dist/agents/registry/core.js +1388 -0
  12. package/dist/agents/registry/deeplink-probes.d.ts +23 -0
  13. package/dist/agents/registry/deeplink-probes.js +18 -0
  14. package/dist/agents/registry/node.d.ts +56 -0
  15. package/dist/agents/registry/node.js +339 -0
  16. package/dist/brand-assets-build.js +3 -6
  17. package/dist/brand-assets.d.ts +5 -15
  18. package/dist/brand-assets.js +12 -14
  19. package/dist/brand.d.ts +17 -0
  20. package/dist/brand.js +24 -4
  21. package/dist/config/domains.d.ts +79 -12
  22. package/dist/config/domains.js +128 -29
  23. package/dist/config/index.js +1 -2
  24. package/dist/contracts/abuse.js +9 -24
  25. package/dist/contracts/access-profiles.d.ts +86 -0
  26. package/dist/contracts/access-profiles.js +89 -0
  27. package/dist/contracts/access.d.ts +24 -30
  28. package/dist/contracts/access.js +33 -64
  29. package/dist/contracts/activity.d.ts +18 -1
  30. package/dist/contracts/activity.js +72 -26
  31. package/dist/contracts/analytics.js +8 -10
  32. package/dist/contracts/api-keys.d.ts +77 -52
  33. package/dist/contracts/api-keys.js +44 -24
  34. package/dist/contracts/application-journal.d.ts +216 -0
  35. package/dist/contracts/application-journal.js +167 -0
  36. package/dist/contracts/auth.d.ts +90 -17
  37. package/dist/contracts/auth.js +86 -17
  38. package/dist/contracts/beta.d.ts +9 -4
  39. package/dist/contracts/beta.js +20 -16
  40. package/dist/contracts/billing.d.ts +2 -1
  41. package/dist/contracts/billing.js +37 -11
  42. package/dist/contracts/bootstrap.d.ts +791 -0
  43. package/dist/contracts/bootstrap.js +51 -0
  44. package/dist/contracts/builds.d.ts +209 -18
  45. package/dist/contracts/builds.js +93 -27
  46. package/dist/contracts/channels.d.ts +43 -0
  47. package/dist/contracts/channels.js +25 -9
  48. package/dist/contracts/cli.d.ts +7 -0
  49. package/dist/contracts/cli.js +6 -0
  50. package/dist/contracts/collab-public.d.ts +1 -1
  51. package/dist/contracts/collab-public.js +5 -8
  52. package/dist/contracts/comments.d.ts +44 -34
  53. package/dist/contracts/comments.js +107 -77
  54. package/dist/contracts/commerce.d.ts +165 -0
  55. package/dist/contracts/commerce.js +146 -0
  56. package/dist/contracts/common.d.ts +3 -3
  57. package/dist/contracts/common.js +20 -31
  58. package/dist/contracts/content-contract-verification.d.ts +521 -0
  59. package/dist/contracts/content-contract-verification.js +320 -0
  60. package/dist/contracts/content-platform-fixture.d.ts +1278 -0
  61. package/dist/contracts/content-platform-fixture.js +44 -0
  62. package/dist/contracts/content-program.d.ts +994 -0
  63. package/dist/contracts/content-program.js +658 -0
  64. package/dist/contracts/content-sync.d.ts +290 -0
  65. package/dist/contracts/content-sync.js +167 -0
  66. package/dist/contracts/content.d.ts +432 -0
  67. package/dist/contracts/content.js +303 -0
  68. package/dist/contracts/continuation.d.ts +17 -1
  69. package/dist/contracts/continuation.js +23 -23
  70. package/dist/contracts/countries.js +3 -4
  71. package/dist/contracts/crons.d.ts +52 -0
  72. package/dist/contracts/crons.js +60 -0
  73. package/dist/contracts/dashboard-prefs.d.ts +56 -0
  74. package/dist/contracts/dashboard-prefs.js +51 -0
  75. package/dist/contracts/device-auth.d.ts +234 -37
  76. package/dist/contracts/device-auth.js +267 -53
  77. package/dist/contracts/docs.d.ts +1 -5
  78. package/dist/contracts/docs.js +7 -15
  79. package/dist/contracts/domains.d.ts +501 -93
  80. package/dist/contracts/domains.js +193 -55
  81. package/dist/contracts/email-preferences.d.ts +3 -3
  82. package/dist/contracts/email-preferences.js +6 -7
  83. package/dist/contracts/enums.d.ts +27 -26
  84. package/dist/contracts/enums.js +68 -61
  85. package/dist/contracts/error-code-meta.d.ts +283 -7
  86. package/dist/contracts/error-code-meta.js +97 -5
  87. package/dist/contracts/error-codes.d.ts +5 -5
  88. package/dist/contracts/error-codes.js +82 -17
  89. package/dist/contracts/events.d.ts +100 -20
  90. package/dist/contracts/events.js +107 -20
  91. package/dist/contracts/execution.d.ts +48 -64
  92. package/dist/contracts/execution.js +52 -62
  93. package/dist/contracts/feature-lifecycle.d.ts +73 -27
  94. package/dist/contracts/feature-lifecycle.js +86 -26
  95. package/dist/contracts/features.d.ts +68 -19
  96. package/dist/contracts/features.js +42 -41
  97. package/dist/contracts/fixtures/content-platform-v1.json +1108 -0
  98. package/dist/contracts/frame-session.d.ts +192 -0
  99. package/dist/contracts/frame-session.js +164 -0
  100. package/dist/contracts/functions.d.ts +338 -164
  101. package/dist/contracts/functions.js +367 -198
  102. package/dist/contracts/git.d.ts +27 -33
  103. package/dist/contracts/git.js +10 -11
  104. package/dist/contracts/grant-copy.d.ts +43 -0
  105. package/dist/contracts/grant-copy.js +44 -0
  106. package/dist/contracts/grants.d.ts +62 -54
  107. package/dist/contracts/grants.js +124 -23
  108. package/dist/contracts/ids.d.ts +4 -1
  109. package/dist/contracts/ids.js +6 -3
  110. package/dist/contracts/internal.d.ts +8 -18
  111. package/dist/contracts/internal.js +13 -14
  112. package/dist/contracts/mcp.d.ts +28 -0
  113. package/dist/contracts/mcp.js +28 -0
  114. package/dist/contracts/me.d.ts +6 -1
  115. package/dist/contracts/me.js +12 -6
  116. package/dist/contracts/notifications.d.ts +27 -29
  117. package/dist/contracts/notifications.js +9 -4
  118. package/dist/contracts/oauth-resources.d.ts +112 -10
  119. package/dist/contracts/oauth-resources.js +116 -11
  120. package/dist/contracts/oauth-scope-actions.d.ts +90 -0
  121. package/dist/contracts/oauth-scope-actions.js +126 -0
  122. package/dist/contracts/operations.d.ts +27 -4
  123. package/dist/contracts/operations.js +12 -6
  124. package/dist/contracts/pages.d.ts +31 -7
  125. package/dist/contracts/pages.js +22 -5
  126. package/dist/contracts/partner-notifications.d.ts +3 -0
  127. package/dist/contracts/partner-notifications.js +65 -0
  128. package/dist/contracts/{platform.d.ts → partner.d.ts} +29 -42
  129. package/dist/contracts/{platform.js → partner.js} +27 -40
  130. package/dist/contracts/plan-policy.js +1 -1
  131. package/dist/contracts/principal-assertion.d.ts +43 -0
  132. package/dist/contracts/principal-assertion.js +67 -0
  133. package/dist/contracts/principals.d.ts +73 -0
  134. package/dist/contracts/principals.js +59 -0
  135. package/dist/contracts/privacy.d.ts +11 -0
  136. package/dist/contracts/privacy.js +17 -0
  137. package/dist/contracts/problem-document.js +3 -4
  138. package/dist/contracts/publish-archive.d.ts +269 -161
  139. package/dist/contracts/publish-archive.js +11 -1
  140. package/dist/contracts/push-new.d.ts +8 -8
  141. package/dist/contracts/quotas.js +5 -5
  142. package/dist/contracts/realtime.d.ts +52 -0
  143. package/dist/contracts/realtime.js +54 -0
  144. package/dist/contracts/repository-connections.d.ts +44 -31
  145. package/dist/contracts/repository-connections.js +17 -5
  146. package/dist/contracts/resources.d.ts +105 -14
  147. package/dist/contracts/resources.js +150 -26
  148. package/dist/contracts/route-inventory.d.ts +358 -0
  149. package/dist/contracts/route-inventory.js +141 -0
  150. package/dist/contracts/runtime-api.d.ts +206 -82
  151. package/dist/contracts/runtime-api.js +131 -70
  152. package/dist/contracts/runtime-app.d.ts +13 -23
  153. package/dist/contracts/runtime-app.js +39 -24
  154. package/dist/contracts/runtime-components.d.ts +143 -0
  155. package/dist/contracts/runtime-components.js +199 -0
  156. package/dist/contracts/runtime-db.d.ts +49 -23
  157. package/dist/contracts/runtime-db.js +87 -22
  158. package/dist/contracts/runtime-purge.d.ts +8 -0
  159. package/dist/contracts/runtime-purge.js +5 -0
  160. package/dist/contracts/runtime-services.d.ts +43 -75
  161. package/dist/contracts/runtime-services.js +29 -49
  162. package/dist/contracts/runtime-storage.d.ts +15 -14
  163. package/dist/contracts/runtime-storage.js +30 -14
  164. package/dist/contracts/sf-config-v1.d.ts +48 -14
  165. package/dist/contracts/slugs.js +13 -4
  166. package/dist/contracts/space-config.d.ts +283 -19
  167. package/dist/contracts/space-config.js +430 -80
  168. package/dist/contracts/spaces.d.ts +376 -290
  169. package/dist/contracts/spaces.js +200 -135
  170. package/dist/contracts/superadmin-activity.d.ts +3 -43
  171. package/dist/contracts/superadmin-activity.js +6 -30
  172. package/dist/contracts/superadmin-emails.d.ts +1 -0
  173. package/dist/contracts/superadmin-emails.js +17 -1
  174. package/dist/contracts/superadmin-runtime.d.ts +199 -0
  175. package/dist/contracts/superadmin-runtime.js +141 -0
  176. package/dist/contracts/superadmin-search.d.ts +22 -2
  177. package/dist/contracts/superadmin-search.js +14 -6
  178. package/dist/contracts/superadmin-spaces.d.ts +438 -189
  179. package/dist/contracts/superadmin-spaces.js +131 -25
  180. package/dist/contracts/superadmin-teams.d.ts +5 -2
  181. package/dist/contracts/superadmin-teams.js +1 -2
  182. package/dist/contracts/superadmin-tenants.d.ts +627 -12
  183. package/dist/contracts/superadmin-tenants.js +32 -13
  184. package/dist/contracts/superadmin.d.ts +232 -37
  185. package/dist/contracts/superadmin.js +106 -22
  186. package/dist/contracts/tags.d.ts +85 -58
  187. package/dist/contracts/tags.js +47 -37
  188. package/dist/contracts/teams.d.ts +86 -26
  189. package/dist/contracts/teams.js +90 -31
  190. package/dist/contracts/tenants.d.ts +135 -0
  191. package/dist/contracts/tenants.js +120 -0
  192. package/dist/contracts/test-triggers.d.ts +70 -0
  193. package/dist/contracts/test-triggers.js +116 -0
  194. package/dist/contracts/theme-json.js +3 -8
  195. package/dist/contracts/transfers.d.ts +1 -0
  196. package/dist/contracts/transfers.js +3 -2
  197. package/dist/contracts/usage.d.ts +209 -0
  198. package/dist/contracts/usage.js +124 -12
  199. package/dist/contracts/variables.d.ts +2 -2
  200. package/dist/contracts/variables.js +9 -13
  201. package/dist/contracts/webhooks.d.ts +13 -5
  202. package/dist/contracts/webhooks.js +3 -1
  203. package/dist/contracts/zero.d.ts +72 -81
  204. package/dist/contracts/zero.js +80 -78
  205. package/dist/dashboard-paths/index.d.ts +24 -21
  206. package/dist/dashboard-paths/index.js +35 -47
  207. package/dist/dashboard-paths/route-reservations.generated.d.ts +2 -0
  208. package/dist/dashboard-paths/route-reservations.generated.js +36 -0
  209. package/dist/docs/agent-arrival.d.ts +92 -0
  210. package/dist/docs/agent-arrival.js +227 -0
  211. package/dist/docs/agent-output-policy.d.ts +6 -0
  212. package/dist/docs/agent-output-policy.js +22 -0
  213. package/dist/docs/agent-prose.d.ts +12 -18
  214. package/dist/docs/agent-prose.js +73 -51
  215. package/dist/docs/agent-setup.d.ts +72 -41
  216. package/dist/docs/agent-setup.js +339 -436
  217. package/dist/docs/catalog.d.ts +153 -95
  218. package/dist/docs/catalog.js +163 -48
  219. package/dist/docs/error-docs.d.ts +2098 -1
  220. package/dist/docs/error-docs.js +421 -144
  221. package/dist/docs/index-build.d.ts +0 -1
  222. package/dist/docs/index-build.js +2 -3
  223. package/dist/docs/page-context-prompt.d.ts +77 -0
  224. package/dist/docs/page-context-prompt.js +131 -0
  225. package/dist/docs/reference-urls.d.ts +46 -0
  226. package/dist/docs/reference-urls.js +79 -0
  227. package/dist/docs/search.d.ts +6 -8
  228. package/dist/docs/search.js +10 -13
  229. package/dist/docs/skill-distribution.d.ts +4 -1
  230. package/dist/docs/skill-distribution.js +10 -5
  231. package/dist/docs/skills.d.ts +120 -120
  232. package/dist/docs/skills.js +121 -73
  233. package/dist/docs/start-prompts.d.ts +45 -0
  234. package/dist/docs/start-prompts.js +62 -0
  235. package/dist/domain-exploration.js +9 -13
  236. package/dist/og-template.d.ts +56 -0
  237. package/dist/og-template.js +56 -0
  238. package/dist/slug-policy/index.js +5 -11
  239. package/dist/test-helpers/fetch-stub.js +1 -0
  240. package/dist/utils/browser-credential.d.ts +13 -6
  241. package/dist/utils/browser-credential.js +14 -7
  242. package/dist/utils/build-settings.d.ts +21 -1
  243. package/dist/utils/build-settings.js +133 -15
  244. package/dist/utils/canonical-json.d.ts +3 -5
  245. package/dist/utils/canonical-json.js +4 -5
  246. package/dist/utils/cast-transport.d.ts +5 -17
  247. package/dist/utils/cast-transport.js +6 -19
  248. package/dist/utils/claim-token.js +1 -2
  249. package/dist/utils/comment-avatars.js +4 -6
  250. package/dist/utils/concurrency.js +3 -3
  251. package/dist/utils/content-type.d.ts +7 -6
  252. package/dist/utils/content-type.js +73 -51
  253. package/dist/utils/credential-policy.d.ts +50 -6
  254. package/dist/utils/credential-policy.js +126 -59
  255. package/dist/utils/dns-instructions.js +9 -9
  256. package/dist/utils/egress-policy.fixtures.json +1 -1
  257. package/dist/utils/error-code.js +1 -0
  258. package/dist/utils/generate-space-name.d.ts +3 -8
  259. package/dist/utils/generate-space-name.js +3 -8
  260. package/dist/utils/grant-decision.fixtures.json +2 -2
  261. package/dist/utils/grants.d.ts +0 -1
  262. package/dist/utils/grants.js +7 -8
  263. package/dist/utils/gravatar.d.ts +2 -4
  264. package/dist/utils/gravatar.js +6 -12
  265. package/dist/utils/id-hints.js +14 -23
  266. package/dist/utils/idempotency.d.ts +3 -3
  267. package/dist/utils/idempotency.js +6 -7
  268. package/dist/utils/local-space-state.d.ts +23 -26
  269. package/dist/utils/local-space-state.js +46 -46
  270. package/dist/utils/oauth-signed-query.d.ts +3 -5
  271. package/dist/utils/oauth-signed-query.js +6 -9
  272. package/dist/utils/one-shot-replay.d.ts +7 -6
  273. package/dist/utils/one-shot-replay.js +3 -5
  274. package/dist/utils/page-colors.d.ts +15 -19
  275. package/dist/utils/page-colors.js +23 -45
  276. package/dist/utils/page-fonts.d.ts +1 -1
  277. package/dist/utils/page-fonts.js +8 -20
  278. package/dist/utils/page-preview.d.ts +0 -1
  279. package/dist/utils/page-preview.js +0 -1
  280. package/dist/utils/pages.d.ts +33 -3
  281. package/dist/utils/pages.js +83 -30
  282. package/dist/utils/privacy-regions.d.ts +19 -0
  283. package/dist/utils/privacy-regions.js +91 -0
  284. package/dist/utils/publish-form-data.d.ts +4 -5
  285. package/dist/utils/publish-form-data.js +2 -3
  286. package/dist/utils/publish-policy.d.ts +11 -17
  287. package/dist/utils/publish-policy.fixtures.json +11 -5
  288. package/dist/utils/publish-policy.js +65 -110
  289. package/dist/utils/query-client.d.ts +2 -0
  290. package/dist/utils/query-client.js +10 -1
  291. package/dist/utils/runtime-paths.d.ts +4 -4
  292. package/dist/utils/runtime-paths.js +6 -8
  293. package/dist/utils/runtime-upload.d.ts +9 -0
  294. package/dist/utils/runtime-upload.js +12 -0
  295. package/dist/utils/secure-local-file.d.ts +3 -3
  296. package/dist/utils/secure-local-file.js +23 -40
  297. package/dist/utils/space-config.d.ts +12 -15
  298. package/dist/utils/space-config.js +13 -16
  299. package/dist/utils/static-runtime-policy.d.ts +10 -7
  300. package/dist/utils/static-runtime-policy.fixtures.json +38 -41
  301. package/dist/utils/static-runtime-policy.generated.d.ts +16 -0
  302. package/dist/utils/static-runtime-policy.generated.js +70 -0
  303. package/dist/utils/static-runtime-policy.js +31 -132
  304. package/dist/utils/storage-policy.js +1 -2
  305. package/dist/utils/upload-session.d.ts +4 -1
  306. package/dist/utils/upload-session.js +41 -19
  307. package/dist/utils/version-path.js +11 -19
  308. package/dist/utils/wpcom-auth-redirects.d.ts +5 -14
  309. package/dist/utils/wpcom-auth-redirects.js +1 -4
  310. package/dist/vocabulary.d.ts +13 -13
  311. package/dist/vocabulary.js +52 -27
  312. package/package.json +15 -18
  313. package/dist/agents/client-registry.d.ts +0 -22
  314. package/dist/agents/client-registry.js +0 -41
  315. package/dist/docs/agent-handoff-document.d.ts +0 -15
  316. package/dist/docs/agent-handoff-document.js +0 -180
  317. package/dist/docs/agent-solutions.d.ts +0 -110
  318. package/dist/docs/agent-solutions.js +0 -183
  319. package/dist/utils/query-keys.d.ts +0 -84
  320. package/dist/utils/query-keys.js +0 -108
@@ -1,183 +0,0 @@
1
- import { BRAND } from "../brand.js";
2
- import { DOCS_BASE_URL, serviceOrigin } from "../config/domains.js";
3
- import { agentSetupPrompt, agentSetupTextUrl, agentSetupUrl } from "./agent-setup.js";
4
- import { spacefastClaudePluginAddCommand, spacefastClaudePluginInstallCommand, spacefastCodexSkillInstallCommand, spacefastInstallCurlCommand, } from "./skill-distribution.js";
5
- export const hostedMcpEndpointUrl = "https://mcp.spacefast.com";
6
- const WEBSITE_ORIGIN = serviceOrigin("www", "prod");
7
- function pluginText(label, commands, guideUrl) {
8
- return [
9
- `Set up ${BRAND.productName} for ${label}.`,
10
- "",
11
- "Run once:",
12
- ...commands.map((command) => ` ${command}`),
13
- "",
14
- `Then ask ${label} to publish with ${BRAND.productName}.`,
15
- `Guide: ${guideUrl}`,
16
- `Generic agent contract: ${agentSetupUrl}`,
17
- ].join("\n");
18
- }
19
- function hostedMcpText(label, guideUrl) {
20
- return [
21
- `Connect ${label} to ${BRAND.productName} with hosted MCP.`,
22
- "",
23
- `MCP endpoint: ${hostedMcpEndpointUrl}`,
24
- "Transport: Streamable HTTP",
25
- "Resource: https://mcp.spacefast.com",
26
- "Minimum scope: mcp:tools",
27
- "Common scopes: teams:read teams:create spaces:read spaces:write spaces:rename publish:write domains:read domains:write",
28
- "",
29
- "Hosted MCP is for cloud/browser agents. Publish small generated files inline or use signed uploads for larger artifacts; it has no filesystem.",
30
- `Guide: ${guideUrl}`,
31
- `Plain-text setup contract: ${agentSetupTextUrl}`,
32
- ].join("\n");
33
- }
34
- function localMcpText(label, guideUrl) {
35
- return [
36
- `Set up ${BRAND.productName} for ${label} with local MCP when it needs your checkout or filesystem.`,
37
- "",
38
- `Install CLI: ${spacefastInstallCurlCommand}`,
39
- "Configure the agent: sf setup agent --agent auto --connect",
40
- "Install local stdio MCP: sf mcp install --agent auto --mode local --transport stdio --connect",
41
- "Run stdio server directly: sf mcp",
42
- "",
43
- `Guide: ${guideUrl}`,
44
- `Plain-text setup contract: ${agentSetupTextUrl}`,
45
- ].join("\n");
46
- }
47
- export const agentSolutions = [
48
- {
49
- id: "codex",
50
- label: "Codex",
51
- aliases: ["codex cli", "codex plugin", "openai codex"],
52
- lane: "plugin",
53
- summary: "Recommended: Codex plugin.",
54
- description: `Install the ${BRAND.productName} skill/plugin so Codex can publish, update, and inspect spaces from the same setup path.`,
55
- commands: [spacefastCodexSkillInstallCommand],
56
- guideUrl: `${WEBSITE_ORIGIN}/for-codex`,
57
- detailGuideUrl: `${WEBSITE_ORIGIN}/guides/how-to-use-with-codex`,
58
- setupText: pluginText("Codex", [spacefastCodexSkillInstallCommand], `${WEBSITE_ORIGIN}/for-codex`),
59
- },
60
- {
61
- id: "claude-code",
62
- label: "Claude Code",
63
- aliases: ["claude code", "claude cli"],
64
- lane: "plugin",
65
- summary: "Recommended: Claude plugin.",
66
- description: `Install the ${BRAND.productName} Claude plugin once, then Claude Code can publish and operate spaces from the terminal.`,
67
- commands: [spacefastClaudePluginAddCommand, spacefastClaudePluginInstallCommand],
68
- guideUrl: `${WEBSITE_ORIGIN}/for-claude`,
69
- detailGuideUrl: `${WEBSITE_ORIGIN}/guides/how-to-use-with-claude-code`,
70
- setupText: pluginText("Claude Code", [spacefastClaudePluginAddCommand, spacefastClaudePluginInstallCommand], `${WEBSITE_ORIGIN}/guides/how-to-use-with-claude-code`),
71
- },
72
- {
73
- id: "claude-cowork",
74
- label: "Claude Cowork",
75
- aliases: ["cowork", "claude cowork"],
76
- lane: "plugin",
77
- summary: "Recommended: Claude plugin.",
78
- description: `Use the ${BRAND.productName} Claude plugin path so Cowork gets the same publish instructions and MCP-aware setup as Claude Code.`,
79
- commands: [spacefastClaudePluginAddCommand, spacefastClaudePluginInstallCommand],
80
- guideUrl: `${WEBSITE_ORIGIN}/for-claude`,
81
- detailGuideUrl: `${WEBSITE_ORIGIN}/guides/how-to-use-with-claude-cowork`,
82
- setupText: pluginText("Claude Cowork", [spacefastClaudePluginAddCommand, spacefastClaudePluginInstallCommand, agentSetupPrompt], `${WEBSITE_ORIGIN}/guides/how-to-use-with-claude-cowork`),
83
- },
84
- {
85
- id: "chatgpt",
86
- label: "ChatGPT",
87
- aliases: ["chatgpt", "custom gpt", "openai apps"],
88
- lane: "hosted-mcp",
89
- summary: "Recommended: direct hosted MCP.",
90
- description: `Connect ChatGPT-style cloud agents to ${BRAND.productName} through hosted MCP; use inline files or signed uploads instead of local paths.`,
91
- commands: [hostedMcpEndpointUrl],
92
- guideUrl: `${DOCS_BASE_URL}/agents`,
93
- setupText: hostedMcpText("ChatGPT", `${DOCS_BASE_URL}/agents`),
94
- },
95
- {
96
- id: "claude-ai",
97
- label: "Claude.ai",
98
- aliases: ["claude.ai", "claude app", "claude web"],
99
- lane: "hosted-mcp",
100
- summary: "Recommended: direct hosted MCP.",
101
- description: `Connect the web Claude app to ${BRAND.productName} through hosted MCP when it cannot read your local checkout.`,
102
- commands: [hostedMcpEndpointUrl],
103
- guideUrl: `${DOCS_BASE_URL}/agents`,
104
- setupText: hostedMcpText("Claude.ai", `${DOCS_BASE_URL}/agents`),
105
- },
106
- {
107
- id: "raycast",
108
- label: "Raycast",
109
- aliases: ["raycast", "raycast ai"],
110
- lane: "hosted-mcp",
111
- summary: "Recommended: direct hosted MCP.",
112
- description: `Use hosted MCP for Raycast and similar clients that can connect to a remote MCP server but should not need a local ${BRAND.productName} install.`,
113
- commands: [hostedMcpEndpointUrl],
114
- guideUrl: `${DOCS_BASE_URL}/agents`,
115
- setupText: hostedMcpText("Raycast", `${DOCS_BASE_URL}/agents`),
116
- },
117
- {
118
- id: "cursor",
119
- label: "Cursor or MCP client",
120
- aliases: ["cursor", "mcp client", "windsurf", "opencode"],
121
- lane: "local-mcp",
122
- summary: "Recommended: local MCP when it needs the checkout.",
123
- description: `Use On-Device MCP for editor agents that need local files; use hosted MCP instead when they only need cloud-safe tools.`,
124
- commands: [
125
- "sf setup agent --agent auto --connect",
126
- "sf mcp install --agent auto --mode local --transport stdio --connect",
127
- ],
128
- guideUrl: `${DOCS_BASE_URL}/agents`,
129
- setupText: localMcpText("Cursor or another MCP client", `${DOCS_BASE_URL}/agents`),
130
- },
131
- {
132
- id: "terminal",
133
- label: "Terminal or CI",
134
- aliases: ["terminal", "cli", "ci", "github actions"],
135
- lane: "cli",
136
- summary: `Recommended: ${BRAND.productName} CLI.`,
137
- description: "Use the CLI for repeat publishes, CI jobs, JSON output, rollback, logs, and domains.",
138
- commands: [spacefastInstallCurlCommand, "sf login", "sf publish {file-or-dir} --json"],
139
- guideUrl: `${DOCS_BASE_URL}/cli`,
140
- setupText: [
141
- `Install CLI: ${spacefastInstallCurlCommand}`,
142
- "Login: sf login",
143
- "Publish: sf publish {file-or-dir} --json",
144
- `Guide: ${DOCS_BASE_URL}/cli`,
145
- ].join("\n"),
146
- },
147
- {
148
- id: "generic",
149
- label: "Generic agent prompt",
150
- aliases: ["generic", "unknown", "gemini"],
151
- lane: "prompt",
152
- summary: "Recommended: generic prompt + setup contract.",
153
- description: `Use this when the client has no known plugin or MCP connector. The agent reads ${BRAND.productName}'s setup contract and picks the smallest working lane.`,
154
- guideUrl: agentSetupUrl,
155
- setupText: agentSetupPrompt,
156
- },
157
- ];
158
- export function getAgentSolution(id) {
159
- const solution = agentSolutions.find((entry) => entry.id === id);
160
- if (!solution)
161
- throw new Error(`Unknown agent solution: ${id}`);
162
- return solution;
163
- }
164
- export function renderAgentSolutionIndexText(solutions = agentSolutions) {
165
- return [
166
- `# ${BRAND.productName} agent setup options`,
167
- "",
168
- ...solutions.flatMap((solution) => [
169
- `## ${solution.label}`,
170
- "",
171
- `Recommended lane: ${solution.lane}`,
172
- solution.summary,
173
- solution.description,
174
- "",
175
- `Guide: ${solution.guideUrl}`,
176
- solution.detailGuideUrl ? `Detailed guide: ${solution.detailGuideUrl}` : null,
177
- "",
178
- "Setup:",
179
- solution.setupText,
180
- "",
181
- ].filter((line) => Boolean(line))),
182
- ].join("\n");
183
- }
@@ -1,84 +0,0 @@
1
- export declare const qk: {
2
- session: () => readonly ["session"];
3
- authCapabilities: () => readonly ["auth", "capabilities"];
4
- accountSessions: () => readonly ["account", "sessions"];
5
- accountConnections: () => readonly ["account", "connections"];
6
- accountInvitations: () => readonly ["account", "invitations"];
7
- apiTokens: (teamId?: string) => readonly ["api-tokens"] | readonly ["api-tokens", string];
8
- agentAccounts: (teamId: string) => readonly ["agent-accounts", string];
9
- myShelf: () => readonly ["my-shelf"];
10
- mcpDashboard: (teamId: string) => readonly ["mcp", "dashboard", string];
11
- teams: () => readonly ["teams", "list"];
12
- team: (ref: string) => readonly ["teams", "by-ref", string];
13
- teamMembers: (id: string) => readonly ["teams", string, "members"];
14
- teamInvites: (id: string) => readonly ["teams", string, "invites"];
15
- teamBilling: (id: string) => readonly ["teams", string, "billing"];
16
- teamUsage: (id: string) => readonly ["teams", string, "usage"];
17
- teamEntitlements: (id: string) => readonly ["teams", string, "entitlements"];
18
- teamFeatures: (id: string) => readonly ["teams", string, "features"];
19
- teamSettings: (id: string) => readonly ["teams", string, "settings"];
20
- teamSpaces: (id: string) => readonly ["teams", string, "spaces"];
21
- teamDomains: (id: string) => readonly ["teams", string, "domains"];
22
- teamManagedDomains: (id: string) => readonly ["teams", string, "managed-domains"];
23
- slugAvailability: (kind: "team" | "space", slug: string, teamId?: string, currentSlug?: string) => readonly ["slugs", "availability", "space" | "team", string, string, string];
24
- teamVariables: (id: string) => readonly ["teams", string, "variables"];
25
- teamActivity: (id: string, limit: number) => readonly ["teams", string, "activity", number];
26
- space: (id: string) => readonly ["spaces", string];
27
- spaceByRef: (teamRef: string, spaceRef: string) => readonly ["spaces", "by-ref", string, string];
28
- spaceVersions: (id: string) => readonly ["spaces", string, "versions"];
29
- spaceVersionsHistory: (id: string) => readonly ["spaces", string, "versions", "history"];
30
- spaceCollaboration: (id: string) => readonly ["spaces", string, "collaboration"];
31
- spaceComments: (id: string) => readonly ["spaces", string, "comments"];
32
- spaceCommentThread: (id: string, threadId: string) => readonly ["spaces", string, "comments", string];
33
- spaceActivity: (id: string, limit: number) => readonly ["spaces", string, "activity", number];
34
- spaceTags: (id: string) => readonly ["spaces", string, "tags"];
35
- spaceTagVersion: (id: string, versionId: string) => readonly ["spaces", string, "tags", string];
36
- spaceTagDiff: (id: string, versionId: string) => readonly ["spaces", string, "tags", string, "diff"];
37
- spaceTagReleases: (id: string) => readonly ["spaces", string, "tags", "releases"];
38
- spaceTagsEffective: (id: string) => readonly ["spaces", string, "tags", "effective"];
39
- build: (spaceId: string, id: string) => readonly ["spaces", string, "builds", string];
40
- buildLogs: (spaceId: string, id: string, limit?: number) => readonly ["spaces", string, "builds", string, "logs"] | readonly ["spaces", string, "builds", string, "logs", number];
41
- spaceBuilds: (id: string) => readonly ["spaces", string, "builds"];
42
- spaceRepositoryConnection: (id: string, connectionType?: string) => readonly ["spaces", string, "repository-connection", string];
43
- repositoryInstallations: (spaceId: string) => readonly ["spaces", string, "repository-installations"];
44
- repositoryInstallationRepositories: (installationId: string) => readonly ["repository-connections", "installations", string, "repositories"];
45
- spaceRepositoryAnalyze: (id: string, connectionType?: string, ref?: string, root?: string) => readonly ["spaces", string, "repository-connection", string, "analyze", string, string];
46
- spaceRepositoryWebhookDeliveries: (id: string, connectionType?: string) => readonly ["spaces", string, "repository-webhook-deliveries", string];
47
- teamWebhooks: (teamId: string) => readonly ["teams", string, "webhooks"];
48
- webhook: (webhookId: string) => readonly ["webhooks", string];
49
- webhookDeliveries: (webhookId: string) => readonly ["webhooks", string, "deliveries"];
50
- spaceVersion: (id: string, versionId: string) => readonly ["spaces", string, "versions", string];
51
- spaceVersionComments: (id: string, versionId: string, status?: string) => readonly ["spaces", string, "versions", string, "comments"] | readonly ["spaces", string, "versions", string, "comments", string];
52
- spaceVersionFiles: (id: string, versionId: string) => readonly ["spaces", string, "versions", string, "files"];
53
- spaceVersionFile: (id: string, versionId: string, path: string) => readonly ["spaces", string, "versions", string, "files", string];
54
- spaceVersionFileUrlPreview: (id: string, versionId: string, path: string) => readonly ["spaces", string, "versions", string, "files", string, "url-preview"];
55
- spaceVersionFileDiff: (id: string, versionId: string, baseVersionId?: string) => readonly ["spaces", string, "versions", string, "files", "diff", string];
56
- spaceVersionConventionArtifacts: (id: string, versionId: string) => readonly ["spaces", string, "versions", string, "convention-artifacts"];
57
- spaceVersionConventionArtifact: (id: string, versionId: string, kind: "redirects" | "headers") => readonly ["spaces", string, "versions", string, "convention-artifacts", "redirects" | "headers"];
58
- spaceVersionRoutingSummary: (id: string, versionId: string) => readonly ["spaces", string, "versions", string, "routing-summary"];
59
- spaceDiagnostics: (id: string) => readonly ["spaces", string, "diagnostics"];
60
- spaceDomains: (id: string) => readonly ["spaces", string, "domains"];
61
- spaceRuntimeStatus: (id: string) => readonly ["spaces", string, "runtime"];
62
- spaceApplyState: (id: string) => readonly ["spaces", string, "apply-state"];
63
- spaceDatabase: (id: string) => readonly ["spaces", string, "db"];
64
- spaceDatabaseDump: (id: string, table: string | undefined, limit: number) => readonly ["spaces", string, "db", "dump", string, number];
65
- spaceStorage: (id: string) => readonly ["spaces", string, "storage"];
66
- spaceRuntimeLogs: (id: string, limit: number) => readonly ["spaces", string, "logs", "runtime", number];
67
- spaceRuntimeRealtimeEvents: (id: string, limit: number) => readonly ["spaces", string, "runtime", "realtime", "events", number];
68
- spaceVariables: (id: string) => readonly ["spaces", string, "variables"];
69
- spaceCertificates: (id: string) => readonly ["spaces", string, "runtime", "certificates"];
70
- spaceLogs: (id: string, kind: "build" | "access" | "runtime") => readonly ["spaces", string, "logs", "build" | "runtime" | "access"];
71
- spaceAnalytics: (id: string, window: string) => readonly ["spaces", string, "analytics", string];
72
- teamAgentHandoffs: (teamId: string) => readonly ["teams", string, "agent-handoffs"];
73
- teamAccessDefaults: (teamId: string) => readonly ["teams", string, "access", "defaults"];
74
- domain: (teamId: string, ref: string) => readonly ["teams", string, "domains", string];
75
- domainDiagnostics: (teamId: string, domainId: string) => readonly ["teams", string, "domains", string, "diagnostics"];
76
- domainDnsCapabilities: (domainId: string) => readonly ["domains", string, "dns", "capabilities"];
77
- domainDnsRecords: (domainId: string) => readonly ["domains", string, "dns", "records"];
78
- domainDnsOperations: (domainId: string) => readonly ["domains", string, "dns", "operations"];
79
- domainActions: (domainId: string) => readonly ["domains", string, "actions"];
80
- domainProviderConnections: (teamId: string) => readonly ["domains", "provider-connections", string];
81
- notifications: () => readonly ["notifications"];
82
- notificationsList: (unreadOnly: boolean) => readonly ["notifications", "list", boolean];
83
- notificationsUnreadCount: () => readonly ["notifications", "unread-count"];
84
- };
@@ -1,108 +0,0 @@
1
- export const qk = {
2
- session: () => ["session"],
3
- authCapabilities: () => ["auth", "capabilities"],
4
- accountSessions: () => ["account", "sessions"],
5
- accountConnections: () => ["account", "connections"],
6
- accountInvitations: () => ["account", "invitations"],
7
- // Results are team-filtered, so the team lands in the key; calling with no
8
- // teamId yields the bare prefix (personal scope, and invalidate-all sweeps).
9
- apiTokens: (teamId) => teamId === undefined ? ["api-tokens"] : ["api-tokens", teamId],
10
- agentAccounts: (teamId) => ["agent-accounts", teamId],
11
- myShelf: () => ["my-shelf"],
12
- mcpDashboard: (teamId) => ["mcp", "dashboard", teamId],
13
- // The teams LIST gets its own leaf so invalidating it never cascades into
14
- // ["teams", id, ...] resource queries (members, spaces, domains, ...).
15
- teams: () => ["teams", "list"],
16
- // Keyed by slug (the URL ref), so it lives outside the id namespace.
17
- team: (ref) => ["teams", "by-ref", ref],
18
- teamMembers: (id) => ["teams", id, "members"],
19
- teamInvites: (id) => ["teams", id, "invites"],
20
- teamBilling: (id) => ["teams", id, "billing"],
21
- teamUsage: (id) => ["teams", id, "usage"],
22
- teamEntitlements: (id) => ["teams", id, "entitlements"],
23
- teamFeatures: (id) => ["teams", id, "features"],
24
- teamSettings: (id) => ["teams", id, "settings"],
25
- teamSpaces: (id) => ["teams", id, "spaces"],
26
- teamDomains: (id) => ["teams", id, "domains"],
27
- teamManagedDomains: (id) => ["teams", id, "managed-domains"],
28
- slugAvailability: (kind, slug, teamId, currentSlug) => ["slugs", "availability", kind, slug, teamId ?? "", currentSlug ?? ""],
29
- teamVariables: (id) => ["teams", id, "variables"],
30
- teamActivity: (id, limit) => ["teams", id, "activity", limit],
31
- space: (id) => ["spaces", id],
32
- spaceByRef: (teamRef, spaceRef) => ["spaces", "by-ref", teamRef, spaceRef],
33
- spaceVersions: (id) => ["spaces", id, "versions"],
34
- // The cursor-paginated history read (distinct cache shape from the plain,
35
- // capped-at-50 `spaceVersions` list above) — nested under the same prefix so
36
- // `invalidateQueries({ queryKey: qk.spaceVersions(id) })` still reaches it.
37
- spaceVersionsHistory: (id) => [...qk.spaceVersions(id), "history"],
38
- spaceCollaboration: (id) => ["spaces", id, "collaboration"],
39
- spaceComments: (id) => ["spaces", id, "comments"],
40
- spaceCommentThread: (id, threadId) => [...qk.spaceComments(id), threadId],
41
- spaceActivity: (id, limit) => ["spaces", id, "activity", limit],
42
- spaceTags: (id) => ["spaces", id, "tags"],
43
- spaceTagVersion: (id, versionId) => ["spaces", id, "tags", versionId],
44
- spaceTagDiff: (id, versionId) => ["spaces", id, "tags", versionId, "diff"],
45
- spaceTagReleases: (id) => ["spaces", id, "tags", "releases"],
46
- // The merged (system+team+space) read-only view; never a write base — see
47
- // `fetchSpaceReleasedGraph` in apps/my/src/lib/space-queries.ts.
48
- spaceTagsEffective: (id) => ["spaces", id, "tags", "effective"],
49
- build: (spaceId, id) => [...qk.spaceBuilds(spaceId), id],
50
- // Observers with different limits must not share a cache entry; calling with
51
- // no limit yields the bare prefix for invalidating every limit at once.
52
- buildLogs: (spaceId, id, limit) => limit === undefined
53
- ? [...qk.build(spaceId, id), "logs"]
54
- : [...qk.build(spaceId, id), "logs", limit],
55
- spaceBuilds: (id) => ["spaces", id, "builds"],
56
- spaceRepositoryConnection: (id, connectionType = "connected") => ["spaces", id, "repository-connection", connectionType],
57
- repositoryInstallations: (spaceId) => [...qk.space(spaceId), "repository-installations"],
58
- repositoryInstallationRepositories: (installationId) => ["repository-connections", "installations", installationId, "repositories"],
59
- spaceRepositoryAnalyze: (id, connectionType = "connected", ref = "", root = "") => ["spaces", id, "repository-connection", connectionType, "analyze", ref, root],
60
- spaceRepositoryWebhookDeliveries: (id, connectionType = "connected") => ["spaces", id, "repository-webhook-deliveries", connectionType],
61
- teamWebhooks: (teamId) => ["teams", teamId, "webhooks"],
62
- webhook: (webhookId) => ["webhooks", webhookId],
63
- webhookDeliveries: (webhookId) => ["webhooks", webhookId, "deliveries"],
64
- spaceVersion: (id, versionId) => ["spaces", id, "versions", versionId],
65
- // Calling with no status yields the bare prefix, for invalidating every
66
- // status-scoped version comment list at once.
67
- spaceVersionComments: (id, versionId, status) => status === undefined
68
- ? ["spaces", id, "versions", versionId, "comments"]
69
- : ["spaces", id, "versions", versionId, "comments", status],
70
- spaceVersionFiles: (id, versionId) => ["spaces", id, "versions", versionId, "files"],
71
- spaceVersionFile: (id, versionId, path) => ["spaces", id, "versions", versionId, "files", path],
72
- spaceVersionFileUrlPreview: (id, versionId, path) => ["spaces", id, "versions", versionId, "files", path, "url-preview"],
73
- spaceVersionFileDiff: (id, versionId, baseVersionId) => ["spaces", id, "versions", versionId, "files", "diff", baseVersionId ?? ""],
74
- spaceVersionConventionArtifacts: (id, versionId) => ["spaces", id, "versions", versionId, "convention-artifacts"],
75
- spaceVersionConventionArtifact: (id, versionId, kind) => ["spaces", id, "versions", versionId, "convention-artifacts", kind],
76
- spaceVersionRoutingSummary: (id, versionId) => ["spaces", id, "versions", versionId, "routing-summary"],
77
- spaceDiagnostics: (id) => ["spaces", id, "diagnostics"],
78
- spaceDomains: (id) => ["spaces", id, "domains"],
79
- spaceRuntimeStatus: (id) => ["spaces", id, "runtime"],
80
- spaceApplyState: (id) => ["spaces", id, "apply-state"],
81
- // A space has one database, whichever runtime claims it — the key says `db`,
82
- // not `zero`, for the same reason the route does.
83
- spaceDatabase: (id) => ["spaces", id, "db"],
84
- // Row reads are per table and per page size; the bare prefix above sweeps
85
- // every dump alongside the schema read.
86
- spaceDatabaseDump: (id, table, limit) => [...qk.spaceDatabase(id), "dump", table ?? "", limit],
87
- spaceStorage: (id) => ["spaces", id, "storage"],
88
- spaceRuntimeLogs: (id, limit) => ["spaces", id, "logs", "runtime", limit],
89
- spaceRuntimeRealtimeEvents: (id, limit) => [...qk.spaceRuntimeStatus(id), "realtime", "events", limit],
90
- spaceVariables: (id) => ["spaces", id, "variables"],
91
- spaceCertificates: (id) => ["spaces", id, "runtime", "certificates"],
92
- spaceLogs: (id, kind) => ["spaces", id, "logs", kind],
93
- spaceAnalytics: (id, window) => ["spaces", id, "analytics", window],
94
- teamAgentHandoffs: (teamId) => ["teams", teamId, "agent-handoffs"],
95
- teamAccessDefaults: (teamId) => ["teams", teamId, "access", "defaults"],
96
- domain: (teamId, ref) => ["teams", teamId, "domains", ref],
97
- domainDiagnostics: (teamId, domainId) => ["teams", teamId, "domains", domainId, "diagnostics"],
98
- domainDnsCapabilities: (domainId) => ["domains", domainId, "dns", "capabilities"],
99
- domainDnsRecords: (domainId) => ["domains", domainId, "dns", "records"],
100
- domainDnsOperations: (domainId) => ["domains", domainId, "dns", "operations"],
101
- domainActions: (domainId) => ["domains", domainId, "actions"],
102
- domainProviderConnections: (teamId) => ["domains", "provider-connections", teamId],
103
- // The shell's notification bell. The bare prefix is the invalidate-all sweep
104
- // that a "mark read" performs across both the count and every list view.
105
- notifications: () => ["notifications"],
106
- notificationsList: (unreadOnly) => ["notifications", "list", unreadOnly],
107
- notificationsUnreadCount: () => ["notifications", "unread-count"],
108
- };