@spacefast/common 0.0.26 → 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 (302) hide show
  1. package/dist/agents/connect-targets.d.ts +6 -146
  2. package/dist/agents/connect-targets.js +63 -295
  3. package/dist/agents/private-key-oauth.d.ts +31 -1
  4. package/dist/agents/private-key-oauth.js +124 -33
  5. package/dist/agents/registry/core.d.ts +292 -0
  6. package/dist/agents/registry/core.js +1388 -0
  7. package/dist/agents/registry/deeplink-probes.d.ts +23 -0
  8. package/dist/agents/registry/deeplink-probes.js +18 -0
  9. package/dist/agents/registry/node.d.ts +56 -0
  10. package/dist/agents/registry/node.js +339 -0
  11. package/dist/brand-assets-build.js +1 -2
  12. package/dist/brand-assets.js +4 -7
  13. package/dist/brand.d.ts +17 -0
  14. package/dist/brand.js +24 -4
  15. package/dist/config/domains.d.ts +55 -28
  16. package/dist/config/domains.js +85 -41
  17. package/dist/config/index.js +1 -2
  18. package/dist/contracts/abuse.js +9 -24
  19. package/dist/contracts/access-profiles.d.ts +86 -0
  20. package/dist/contracts/access-profiles.js +89 -0
  21. package/dist/contracts/access.d.ts +21 -27
  22. package/dist/contracts/access.js +33 -64
  23. package/dist/contracts/activity.d.ts +18 -1
  24. package/dist/contracts/activity.js +70 -26
  25. package/dist/contracts/analytics.js +8 -10
  26. package/dist/contracts/api-keys.d.ts +77 -52
  27. package/dist/contracts/api-keys.js +44 -24
  28. package/dist/contracts/application-journal.d.ts +216 -0
  29. package/dist/contracts/application-journal.js +167 -0
  30. package/dist/contracts/auth.d.ts +90 -17
  31. package/dist/contracts/auth.js +86 -17
  32. package/dist/contracts/beta.d.ts +9 -4
  33. package/dist/contracts/beta.js +20 -16
  34. package/dist/contracts/billing.js +7 -11
  35. package/dist/contracts/bootstrap.d.ts +791 -0
  36. package/dist/contracts/bootstrap.js +51 -0
  37. package/dist/contracts/builds.d.ts +186 -7
  38. package/dist/contracts/builds.js +75 -21
  39. package/dist/contracts/channels.d.ts +43 -0
  40. package/dist/contracts/channels.js +25 -9
  41. package/dist/contracts/cli.d.ts +7 -0
  42. package/dist/contracts/cli.js +6 -0
  43. package/dist/contracts/collab-public.d.ts +1 -1
  44. package/dist/contracts/collab-public.js +5 -8
  45. package/dist/contracts/comments.d.ts +45 -35
  46. package/dist/contracts/comments.js +107 -77
  47. package/dist/contracts/commerce.d.ts +165 -0
  48. package/dist/contracts/commerce.js +146 -0
  49. package/dist/contracts/common.d.ts +3 -3
  50. package/dist/contracts/common.js +18 -29
  51. package/dist/contracts/content-contract-verification.d.ts +521 -0
  52. package/dist/contracts/content-contract-verification.js +320 -0
  53. package/dist/contracts/content-platform-fixture.d.ts +1278 -0
  54. package/dist/contracts/content-platform-fixture.js +44 -0
  55. package/dist/contracts/content-program.d.ts +994 -0
  56. package/dist/contracts/content-program.js +658 -0
  57. package/dist/contracts/content-sync.d.ts +290 -0
  58. package/dist/contracts/content-sync.js +167 -0
  59. package/dist/contracts/content.d.ts +432 -0
  60. package/dist/contracts/content.js +303 -0
  61. package/dist/contracts/continuation.d.ts +17 -1
  62. package/dist/contracts/continuation.js +23 -23
  63. package/dist/contracts/countries.js +3 -4
  64. package/dist/contracts/crons.d.ts +17 -0
  65. package/dist/contracts/crons.js +33 -15
  66. package/dist/contracts/dashboard-prefs.d.ts +56 -0
  67. package/dist/contracts/dashboard-prefs.js +51 -0
  68. package/dist/contracts/device-auth.d.ts +234 -37
  69. package/dist/contracts/device-auth.js +267 -53
  70. package/dist/contracts/docs.d.ts +6 -10
  71. package/dist/contracts/docs.js +5 -13
  72. package/dist/contracts/domains.d.ts +499 -102
  73. package/dist/contracts/domains.js +169 -58
  74. package/dist/contracts/email-preferences.d.ts +3 -3
  75. package/dist/contracts/email-preferences.js +6 -7
  76. package/dist/contracts/enums.d.ts +26 -26
  77. package/dist/contracts/enums.js +61 -54
  78. package/dist/contracts/error-code-meta.d.ts +269 -7
  79. package/dist/contracts/error-code-meta.js +80 -5
  80. package/dist/contracts/error-codes.d.ts +5 -5
  81. package/dist/contracts/error-codes.js +78 -16
  82. package/dist/contracts/events.d.ts +100 -20
  83. package/dist/contracts/events.js +107 -20
  84. package/dist/contracts/execution.d.ts +47 -66
  85. package/dist/contracts/execution.js +51 -64
  86. package/dist/contracts/feature-lifecycle.d.ts +70 -14
  87. package/dist/contracts/feature-lifecycle.js +86 -15
  88. package/dist/contracts/features.d.ts +100 -37
  89. package/dist/contracts/features.js +21 -27
  90. package/dist/contracts/fixtures/content-platform-v1.json +1108 -0
  91. package/dist/contracts/frame-session.d.ts +192 -0
  92. package/dist/contracts/frame-session.js +164 -0
  93. package/dist/contracts/functions.d.ts +218 -211
  94. package/dist/contracts/functions.js +273 -260
  95. package/dist/contracts/grant-copy.d.ts +43 -0
  96. package/dist/contracts/grant-copy.js +44 -0
  97. package/dist/contracts/grants.d.ts +64 -56
  98. package/dist/contracts/grants.js +124 -23
  99. package/dist/contracts/ids.d.ts +4 -1
  100. package/dist/contracts/ids.js +4 -1
  101. package/dist/contracts/internal.d.ts +5 -4
  102. package/dist/contracts/internal.js +12 -3
  103. package/dist/contracts/mcp.d.ts +17 -0
  104. package/dist/contracts/mcp.js +23 -0
  105. package/dist/contracts/me.d.ts +6 -1
  106. package/dist/contracts/me.js +12 -6
  107. package/dist/contracts/notifications.d.ts +27 -29
  108. package/dist/contracts/notifications.js +9 -4
  109. package/dist/contracts/oauth-resources.d.ts +112 -10
  110. package/dist/contracts/oauth-resources.js +116 -11
  111. package/dist/contracts/oauth-scope-actions.d.ts +90 -0
  112. package/dist/contracts/oauth-scope-actions.js +126 -0
  113. package/dist/contracts/operations.d.ts +27 -4
  114. package/dist/contracts/operations.js +11 -5
  115. package/dist/contracts/pages.d.ts +29 -5
  116. package/dist/contracts/pages.js +22 -5
  117. package/dist/contracts/partner-notifications.d.ts +3 -0
  118. package/dist/contracts/partner-notifications.js +65 -0
  119. package/dist/contracts/{platform.d.ts → partner.d.ts} +29 -42
  120. package/dist/contracts/{platform.js → partner.js} +27 -40
  121. package/dist/contracts/plan-policy.d.ts +1 -1
  122. package/dist/contracts/principal-assertion.d.ts +43 -0
  123. package/dist/contracts/principal-assertion.js +67 -0
  124. package/dist/contracts/principals.d.ts +73 -0
  125. package/dist/contracts/principals.js +59 -0
  126. package/dist/contracts/privacy.d.ts +11 -0
  127. package/dist/contracts/privacy.js +17 -0
  128. package/dist/contracts/problem-document.js +3 -4
  129. package/dist/contracts/publish-archive.d.ts +116 -18
  130. package/dist/contracts/publish-archive.js +6 -3
  131. package/dist/contracts/push-new.d.ts +4 -4
  132. package/dist/contracts/quotas.js +3 -3
  133. package/dist/contracts/realtime.d.ts +52 -0
  134. package/dist/contracts/realtime.js +54 -0
  135. package/dist/contracts/repository-connections.d.ts +1 -1
  136. package/dist/contracts/repository-connections.js +6 -2
  137. package/dist/contracts/resources.d.ts +105 -14
  138. package/dist/contracts/resources.js +145 -21
  139. package/dist/contracts/route-inventory.d.ts +358 -0
  140. package/dist/contracts/route-inventory.js +141 -0
  141. package/dist/contracts/runtime-api.d.ts +112 -35
  142. package/dist/contracts/runtime-api.js +86 -66
  143. package/dist/contracts/runtime-app.d.ts +11 -21
  144. package/dist/contracts/runtime-app.js +39 -24
  145. package/dist/contracts/runtime-components.d.ts +143 -0
  146. package/dist/contracts/runtime-components.js +199 -0
  147. package/dist/contracts/runtime-db.d.ts +45 -19
  148. package/dist/contracts/runtime-db.js +85 -20
  149. package/dist/contracts/runtime-purge.js +3 -5
  150. package/dist/contracts/runtime-services.d.ts +43 -75
  151. package/dist/contracts/runtime-services.js +29 -49
  152. package/dist/contracts/runtime-storage.d.ts +14 -14
  153. package/dist/contracts/runtime-storage.js +28 -13
  154. package/dist/contracts/sf-config-v1.d.ts +14 -18
  155. package/dist/contracts/slugs.js +13 -4
  156. package/dist/contracts/space-config.d.ts +235 -28
  157. package/dist/contracts/space-config.js +246 -91
  158. package/dist/contracts/spaces.d.ts +360 -255
  159. package/dist/contracts/spaces.js +190 -122
  160. package/dist/contracts/superadmin-activity.d.ts +3 -43
  161. package/dist/contracts/superadmin-activity.js +6 -30
  162. package/dist/contracts/superadmin-emails.d.ts +1 -0
  163. package/dist/contracts/superadmin-emails.js +17 -1
  164. package/dist/contracts/superadmin-runtime.d.ts +199 -0
  165. package/dist/contracts/superadmin-runtime.js +141 -0
  166. package/dist/contracts/superadmin-search.d.ts +22 -2
  167. package/dist/contracts/superadmin-search.js +14 -6
  168. package/dist/contracts/superadmin-spaces.d.ts +435 -186
  169. package/dist/contracts/superadmin-spaces.js +131 -25
  170. package/dist/contracts/superadmin-teams.d.ts +3 -0
  171. package/dist/contracts/superadmin-teams.js +1 -2
  172. package/dist/contracts/superadmin-tenants.d.ts +627 -6
  173. package/dist/contracts/superadmin-tenants.js +32 -7
  174. package/dist/contracts/superadmin.d.ts +98 -16
  175. package/dist/contracts/superadmin.js +63 -10
  176. package/dist/contracts/tags.d.ts +85 -58
  177. package/dist/contracts/tags.js +44 -34
  178. package/dist/contracts/teams.d.ts +72 -9
  179. package/dist/contracts/teams.js +84 -25
  180. package/dist/contracts/tenants.d.ts +135 -0
  181. package/dist/contracts/tenants.js +120 -0
  182. package/dist/contracts/test-triggers.d.ts +70 -0
  183. package/dist/contracts/test-triggers.js +116 -0
  184. package/dist/contracts/theme-json.js +3 -8
  185. package/dist/contracts/transfers.d.ts +1 -0
  186. package/dist/contracts/transfers.js +1 -0
  187. package/dist/contracts/usage.d.ts +209 -0
  188. package/dist/contracts/usage.js +124 -12
  189. package/dist/contracts/variables.d.ts +2 -2
  190. package/dist/contracts/variables.js +9 -13
  191. package/dist/contracts/webhooks.d.ts +13 -5
  192. package/dist/contracts/webhooks.js +3 -1
  193. package/dist/contracts/zero.d.ts +57 -64
  194. package/dist/contracts/zero.js +68 -66
  195. package/dist/dashboard-paths/index.d.ts +24 -21
  196. package/dist/dashboard-paths/index.js +35 -47
  197. package/dist/dashboard-paths/route-reservations.generated.d.ts +2 -0
  198. package/dist/dashboard-paths/route-reservations.generated.js +36 -0
  199. package/dist/docs/agent-arrival.d.ts +92 -0
  200. package/dist/docs/agent-arrival.js +227 -0
  201. package/dist/docs/agent-output-policy.d.ts +6 -0
  202. package/dist/docs/agent-output-policy.js +22 -0
  203. package/dist/docs/agent-prose.d.ts +11 -17
  204. package/dist/docs/agent-prose.js +62 -37
  205. package/dist/docs/agent-setup.d.ts +72 -41
  206. package/dist/docs/agent-setup.js +336 -436
  207. package/dist/docs/catalog.d.ts +147 -89
  208. package/dist/docs/catalog.js +157 -42
  209. package/dist/docs/error-docs.d.ts +2098 -1
  210. package/dist/docs/error-docs.js +281 -16
  211. package/dist/docs/index-build.d.ts +0 -1
  212. package/dist/docs/index-build.js +2 -3
  213. package/dist/docs/page-context-prompt.d.ts +77 -0
  214. package/dist/docs/page-context-prompt.js +131 -0
  215. package/dist/docs/reference-urls.d.ts +46 -0
  216. package/dist/docs/reference-urls.js +79 -0
  217. package/dist/docs/search.d.ts +6 -8
  218. package/dist/docs/search.js +10 -13
  219. package/dist/docs/skill-distribution.d.ts +4 -1
  220. package/dist/docs/skill-distribution.js +10 -5
  221. package/dist/docs/skills.d.ts +117 -117
  222. package/dist/docs/skills.js +120 -72
  223. package/dist/docs/start-prompts.d.ts +45 -0
  224. package/dist/docs/start-prompts.js +62 -0
  225. package/dist/domain-exploration.js +9 -13
  226. package/dist/og-template.d.ts +56 -0
  227. package/dist/og-template.js +56 -0
  228. package/dist/slug-policy/index.js +5 -11
  229. package/dist/utils/browser-credential.d.ts +13 -6
  230. package/dist/utils/browser-credential.js +14 -7
  231. package/dist/utils/build-settings.d.ts +16 -0
  232. package/dist/utils/build-settings.js +63 -17
  233. package/dist/utils/canonical-json.d.ts +3 -5
  234. package/dist/utils/canonical-json.js +3 -5
  235. package/dist/utils/cast-transport.d.ts +5 -17
  236. package/dist/utils/cast-transport.js +6 -19
  237. package/dist/utils/claim-token.js +1 -2
  238. package/dist/utils/comment-avatars.js +4 -6
  239. package/dist/utils/concurrency.js +2 -3
  240. package/dist/utils/content-type.d.ts +7 -6
  241. package/dist/utils/content-type.js +73 -51
  242. package/dist/utils/credential-policy.d.ts +50 -6
  243. package/dist/utils/credential-policy.js +123 -57
  244. package/dist/utils/egress-policy.fixtures.json +1 -1
  245. package/dist/utils/generate-space-name.d.ts +3 -8
  246. package/dist/utils/generate-space-name.js +3 -8
  247. package/dist/utils/grants.d.ts +0 -1
  248. package/dist/utils/grants.js +4 -7
  249. package/dist/utils/gravatar.d.ts +2 -4
  250. package/dist/utils/gravatar.js +6 -12
  251. package/dist/utils/id-hints.js +14 -23
  252. package/dist/utils/idempotency.d.ts +3 -3
  253. package/dist/utils/idempotency.js +6 -7
  254. package/dist/utils/local-space-state.d.ts +15 -15
  255. package/dist/utils/local-space-state.js +34 -23
  256. package/dist/utils/oauth-signed-query.d.ts +3 -5
  257. package/dist/utils/oauth-signed-query.js +6 -9
  258. package/dist/utils/one-shot-replay.d.ts +3 -5
  259. package/dist/utils/one-shot-replay.js +3 -5
  260. package/dist/utils/page-colors.d.ts +4 -10
  261. package/dist/utils/page-colors.js +11 -35
  262. package/dist/utils/page-fonts.js +6 -11
  263. package/dist/utils/page-preview.d.ts +0 -1
  264. package/dist/utils/page-preview.js +0 -1
  265. package/dist/utils/pages.d.ts +22 -11
  266. package/dist/utils/pages.js +70 -30
  267. package/dist/utils/privacy-regions.d.ts +19 -0
  268. package/dist/utils/privacy-regions.js +91 -0
  269. package/dist/utils/publish-form-data.d.ts +4 -5
  270. package/dist/utils/publish-form-data.js +2 -3
  271. package/dist/utils/publish-policy.d.ts +10 -23
  272. package/dist/utils/publish-policy.js +63 -116
  273. package/dist/utils/query-client.d.ts +2 -0
  274. package/dist/utils/query-client.js +10 -1
  275. package/dist/utils/runtime-paths.d.ts +4 -4
  276. package/dist/utils/runtime-paths.js +6 -8
  277. package/dist/utils/runtime-upload.d.ts +4 -0
  278. package/dist/utils/runtime-upload.js +5 -0
  279. package/dist/utils/secure-local-file.d.ts +3 -3
  280. package/dist/utils/secure-local-file.js +18 -24
  281. package/dist/utils/space-config.d.ts +11 -14
  282. package/dist/utils/space-config.js +10 -16
  283. package/dist/utils/static-runtime-policy.d.ts +5 -8
  284. package/dist/utils/static-runtime-policy.generated.d.ts +16 -0
  285. package/dist/utils/static-runtime-policy.generated.js +70 -0
  286. package/dist/utils/static-runtime-policy.js +17 -84
  287. package/dist/utils/storage-policy.js +1 -2
  288. package/dist/utils/upload-session.js +8 -14
  289. package/dist/utils/version-path.js +11 -19
  290. package/dist/utils/wpcom-auth-redirects.d.ts +5 -14
  291. package/dist/utils/wpcom-auth-redirects.js +1 -4
  292. package/dist/vocabulary.d.ts +7 -7
  293. package/dist/vocabulary.js +30 -16
  294. package/package.json +14 -2
  295. package/dist/agents/client-registry.d.ts +0 -22
  296. package/dist/agents/client-registry.js +0 -41
  297. package/dist/docs/agent-handoff-document.d.ts +0 -15
  298. package/dist/docs/agent-handoff-document.js +0 -180
  299. package/dist/docs/agent-solutions.d.ts +0 -110
  300. package/dist/docs/agent-solutions.js +0 -183
  301. package/dist/utils/query-keys.d.ts +0 -84
  302. package/dist/utils/query-keys.js +0 -108
@@ -1,7 +1,7 @@
1
+ import { DOCS_BASE_URL } from "../config/domains.js";
1
2
  import type { CliDisclosureTier } from "../vocabulary.js";
2
3
  /** Which part of the docs a page belongs to (runtime list + derived type). */
3
4
  export declare const DOC_KINDS: readonly ["guide", "cli", "api", "recipe", "workflow", "error"];
4
- /** Which part of the docs a page belongs to. */
5
5
  export type DocKind = (typeof DOC_KINDS)[number];
6
6
  /** One searchable documentation page. */
7
7
  export interface DocEntry {
@@ -22,8 +22,12 @@ export interface DocEntry {
22
22
  /** Short printable body shown by `sf docs <topic>`. */
23
23
  readonly body: string;
24
24
  }
25
- /** Base URL all bundled docs links resolve against. */
26
- export declare const DOCS_BASE_URL = "https://spacefast.com/docs";
25
+ /**
26
+ * Base URL all bundled docs links resolve against. Owned by the domain registry
27
+ * (`../config/domains.ts`) and re-exported here, where every docs caller
28
+ * already looks for it.
29
+ */
30
+ export { DOCS_BASE_URL };
27
31
  export declare const DOCS_CATALOG: readonly [{
28
32
  readonly slug: "quickstart";
29
33
  readonly title: "Quickstart";
@@ -31,7 +35,7 @@ export declare const DOCS_CATALOG: readonly [{
31
35
  readonly tier: "essential";
32
36
  readonly summary: "Publish your first space in under two minutes.";
33
37
  readonly keywords: readonly ["start", "getting started", "first", "new", "setup", "hello world"];
34
- readonly url: "https://spacefast.com/docs/quickstart";
38
+ readonly url: `${string}/quickstart`;
35
39
  readonly body: "Install the CLI, run `sf init` in your working directory, then `sf publish` to take the current build live on a new space.";
36
40
  }, {
37
41
  readonly slug: "publishing";
@@ -40,7 +44,7 @@ export declare const DOCS_CATALOG: readonly [{
40
44
  readonly tier: "essential";
41
45
  readonly summary: "How `sf publish` builds, uploads, and goes live.";
42
46
  readonly keywords: readonly ["publish", "go live", "upload", "release", "artifact"];
43
- readonly url: "https://spacefast.com/docs/publishing";
47
+ readonly url: `${string}/publish`;
44
48
  readonly body: "`sf publish` snapshots your output directory into an immutable version and promotes it to the production channel. Use `--no-wait` to return before serving finishes.";
45
49
  }, {
46
50
  readonly slug: "spaces/rename";
@@ -49,7 +53,7 @@ export declare const DOCS_CATALOG: readonly [{
49
53
  readonly tier: "full";
50
54
  readonly summary: "Change a space slug and its managed view.fast address without breaking old links.";
51
55
  readonly keywords: readonly ["space", "rename", "slug", "view.fast", "redirect", "managed hostname"];
52
- readonly url: "https://spacefast.com/docs/spaces/rename";
56
+ readonly url: `${string}/operate/spaces`;
53
57
  readonly body: "Run `sf spaces update --space <space> --slug <new-slug> --wait`, or PATCH `/v1/spaces/{spaceId}` with `{ \"slug\": \"<new-slug>\" }`. The managed view.fast hostname changes with the slug. Former managed addresses and branch aliases redirect directly to their current counterparts with a temporary, path- and query-preserving 307 for the life of the space unless an operator explicitly releases them. Custom domains stay attached, and immutable version URLs do not change.";
54
58
  }, {
55
59
  readonly slug: "versions-and-rollback";
@@ -58,7 +62,7 @@ export declare const DOCS_CATALOG: readonly [{
58
62
  readonly tier: "essential";
59
63
  readonly summary: "Every publish is an immutable version you can roll back to.";
60
64
  readonly keywords: readonly ["version", "rollback", "history", "revert", "channel", "promote"];
61
- readonly url: "https://spacefast.com/docs/rollback";
65
+ readonly url: `${string}/rollback`;
62
66
  readonly body: "List versions with `sf versions`, promote one to a channel, and undo a bad publish instantly with `sf rollback`.";
63
67
  }, {
64
68
  readonly slug: "anonymous-publish";
@@ -67,7 +71,7 @@ export declare const DOCS_CATALOG: readonly [{
67
71
  readonly tier: "essential";
68
72
  readonly summary: "Publish without an account, then claim the space with its key.";
69
73
  readonly keywords: readonly ["anonymous", "claim", "unclaimed", "agent", "token", "adopt"];
70
- readonly url: "https://spacefast.com/docs/anonymous-publish";
74
+ readonly url: `${string}/anonymous-publish`;
71
75
  readonly body: "Publish without logging in to get an instant URL and a space key; run `sf spaces claim` with that key to bind the space to your account.";
72
76
  }, {
73
77
  readonly slug: "agents";
@@ -76,7 +80,7 @@ export declare const DOCS_CATALOG: readonly [{
76
80
  readonly tier: "essential";
77
81
  readonly summary: "Let an AI agent publish and operate spaces via the CLI, API, or MCP.";
78
82
  readonly keywords: readonly ["agent", "ai", "mcp", "model context protocol", "automation", "assistant"];
79
- readonly url: "https://spacefast.com/docs/agents";
83
+ readonly url: `${string}/agents`;
80
84
  readonly body: "Agents use the same REST API and CLI as humans. Install the MCP server with `sf mcp install` so an assistant can publish, inspect, and manage spaces with structured tools.";
81
85
  }, {
82
86
  readonly slug: "workflow/publish-curl";
@@ -85,17 +89,17 @@ export declare const DOCS_CATALOG: readonly [{
85
89
  readonly tier: "full";
86
90
  readonly summary: "Publish a file or zipped output folder directly to /v1/publish. No account, CLI install, or MCP setup is required for anonymous publishes.";
87
91
  readonly keywords: readonly ["publish", "curl", "anonymous", "no install", "claim"];
88
- readonly url: "https://spacefast.com/docs/agents#publish-with-curl";
92
+ readonly url: `${string}/agents#publish-with-curl`;
89
93
  readonly body: "curl publish file folder archive zip anonymous no account no install live URL immutable version claim link /v1/publish";
90
94
  }, {
91
95
  readonly slug: "workflow/publish-receipt";
92
96
  readonly title: "Publish receipt fields";
93
97
  readonly kind: "workflow";
94
98
  readonly tier: "full";
95
- readonly summary: "Use the receipt as the source of truth. For anonymous publishes, claim.url is the private-site door and claim.claimUrl is the browser claim link; liveUrl and immutableUrl identify resources for automation.";
99
+ readonly summary: "Use the receipt as the source of truth. For anonymous publishes, claim.url is the private-site door and claim.claimUrl is the browser claim link; space.liveUrl and version.immutableUrl identify resources for automation.";
96
100
  readonly keywords: readonly ["receipt", "share", "claim", "diagnostics"];
97
- readonly url: "https://spacefast.com/docs/api#publish";
98
- readonly body: "receipt liveUrl open url immutableUrl claim expiresAt diagnostics links finalize promote upload errors docsUrl";
101
+ readonly url: `${string}/api#publish`;
102
+ readonly body: "receipt space.liveUrl open url version.immutableUrl claim expiresAt diagnostics links finalize promote upload errors docsUrl";
99
103
  }, {
100
104
  readonly slug: "workflow/continue-after-claim";
101
105
  readonly title: "Keep publishing after the user claims";
@@ -103,7 +107,7 @@ export declare const DOCS_CATALOG: readonly [{
103
107
  readonly tier: "full";
104
108
  readonly summary: "After the owner claims an anonymous space with continuation enabled, exchange the saved space key once for a durable space-scoped access token, save it over the key, and keep publishing.";
105
109
  readonly keywords: readonly ["continue", "exchange", "claim token", "space_claimed_credential_available", "continuation"];
106
- readonly url: "https://spacefast.com/docs/agents#continue-after-claim";
110
+ readonly url: `${string}/agents#continue-after-claim`;
107
111
  readonly body: "continue continuation space key claim token exchange voucher publish execute POST /v1/claim/exchange space_claimed_credential_available continuation_used continuation_unavailable durable access token state.json update after claim";
108
112
  }, {
109
113
  readonly slug: "workflow/secret-handling";
@@ -112,7 +116,7 @@ export declare const DOCS_CATALOG: readonly [{
112
116
  readonly tier: "full";
113
117
  readonly summary: "Treat space keys, upload tokens, device codes, API keys, auth files, and .spacefast state as credentials. Do not print, commit, archive, or log them.";
114
118
  readonly keywords: readonly ["secret", "token", "claim token", "redact"];
115
- readonly url: "https://spacefast.com/docs/agents#secret-handling";
119
+ readonly url: `${string}/agents#secret-handling`;
116
120
  readonly body: "secret handling claim token upload token device code API key auth file .spacefast state redact logs transcripts archive";
117
121
  }, {
118
122
  readonly slug: "workflow/cli-surface";
@@ -121,17 +125,17 @@ export declare const DOCS_CATALOG: readonly [{
121
125
  readonly tier: "full";
122
126
  readonly summary: "Use sf for repeat work: publish, versions, rollback, logs, domains, sharing, teams, API calls, and On-Device MCP serving.";
123
127
  readonly keywords: readonly ["sf", "cli", "spacefast", "mcp", "json"];
124
- readonly url: "https://spacefast.com/docs/cli";
128
+ readonly url: `${string}/cli`;
125
129
  readonly body: "sf spacefast CLI publish versions rollback logs domains share teams api mcp setup profile login --json";
126
130
  }, {
127
131
  readonly slug: "workflow/mcp-local";
128
132
  readonly title: "On-Device MCP through the CLI";
129
133
  readonly kind: "workflow";
130
134
  readonly tier: "full";
131
- readonly summary: "Run sf mcp for stdio or sf mcp http --host 127.0.0.1 --port 3945 --path /mcp for On-Device Streamable HTTP.";
132
- readonly keywords: readonly ["mcp", "stdio", "streamable http", "on-device", "local"];
133
- readonly url: "https://spacefast.com/docs/agents#mcp";
134
- readonly body: "MCP on-device local CLI stdio streamable HTTP sf mcp roots files workspace tool calls structuredContent apps";
135
+ readonly summary: "Run sf mcp for the stdio On-Device MCP server in the local checkout.";
136
+ readonly keywords: readonly ["mcp", "stdio", "on-device", "local"];
137
+ readonly url: `${string}/agents#mcp`;
138
+ readonly body: "MCP on-device local CLI stdio sf mcp roots files workspace tool calls structuredContent apps";
135
139
  }, {
136
140
  readonly slug: "workflow/space-files";
137
141
  readonly title: "Space file conventions";
@@ -139,7 +143,7 @@ export declare const DOCS_CATALOG: readonly [{
139
143
  readonly tier: "full";
140
144
  readonly summary: "Spacefast recognizes _redirects, _headers, nearest 404.html, and sf.jsonc. Published artifacts are served as files; server code is not executed.";
141
145
  readonly keywords: readonly ["_redirects", "_headers", "sf.jsonc", "spacefast.jsonc", "404"];
142
- readonly url: "https://spacefast.com/docs/configuration";
146
+ readonly url: `${string}/configuration`;
143
147
  readonly body: "_redirects _headers 404.html sf.jsonc artifact server code not executed proxy rewrite headers";
144
148
  }, {
145
149
  readonly slug: "workflow/domains-diagnostics";
@@ -148,7 +152,7 @@ export declare const DOCS_CATALOG: readonly [{
148
152
  readonly tier: "full";
149
153
  readonly summary: "Use domain diagnostics for attach, verification, DNS, nameserver, and rollback-safe recovery steps.";
150
154
  readonly keywords: readonly ["domain", "dns", "verification"];
151
- readonly url: "https://spacefast.com/docs/domains";
155
+ readonly url: `${string}/domains`;
152
156
  readonly body: "domains DNS diagnostics attach verification nameservers custom domain certificate recovery instructions";
153
157
  }, {
154
158
  readonly slug: "workflow/logs-diagnostics";
@@ -157,17 +161,17 @@ export declare const DOCS_CATALOG: readonly [{
157
161
  readonly tier: "full";
158
162
  readonly summary: "Use access logs for traffic questions, runtime logs for serving diagnostics, and build logs for publish/finalize failures.";
159
163
  readonly keywords: readonly ["logs", "diagnostics", "build logs"];
160
- readonly url: "https://spacefast.com/docs/builds#watch-and-manage-builds";
164
+ readonly url: `${string}/builds#watch-and-manage-builds`;
161
165
  readonly body: "logs access runtime build diagnostics publish finalize failures request id docsUrl suggestions recovery";
162
166
  }, {
163
167
  readonly slug: "workflow/agent-auth";
164
- readonly title: "Agent accounts and OAuth";
168
+ readonly title: "Machine OAuth clients";
165
169
  readonly kind: "workflow";
166
170
  readonly tier: "full";
167
- readonly summary: "Prefer OAuth agent accounts with private_key_jwt and SPACEFAST_AGENT_CONFIG for On-Device MCP and automation instead of broad shared API keys.";
168
- readonly keywords: readonly ["oauth", "agent account", "private_key_jwt", "SPACEFAST_AGENT_CONFIG"];
169
- readonly url: "https://spacefast.com/docs/agents#agent-accounts";
170
- readonly body: "OAuth agent account private_key_jwt SPACEFAST_AGENT_CONFIG client credentials scoped token mcp automation teams";
171
+ readonly summary: "Use team-owned OAuth clients with private_key_jwt and SPACEFAST_AGENT_CONFIG for On-Device MCP and automation. Do not use broad shared API keys.";
172
+ readonly keywords: readonly ["oauth", "client credentials", "private_key_jwt", "SPACEFAST_AGENT_CONFIG"];
173
+ readonly url: `${string}/agents#agent-accounts`;
174
+ readonly body: "OAuth client private_key_jwt SPACEFAST_AGENT_CONFIG client credentials scoped token mcp automation teams";
171
175
  }, {
172
176
  readonly slug: "custom-domains";
173
177
  readonly title: "Custom domains";
@@ -175,7 +179,7 @@ export declare const DOCS_CATALOG: readonly [{
175
179
  readonly tier: "full";
176
180
  readonly summary: "Attach your own domain and let Spacefast manage TLS.";
177
181
  readonly keywords: readonly ["domain", "dns", "https", "tls", "certificate", "cname", "nameserver"];
178
- readonly url: "https://spacefast.com/docs/domains";
182
+ readonly url: `${string}/domains`;
179
183
  readonly body: "Add a domain with `sf domains add`, point DNS at Spacefast, and a certificate is issued automatically. Inspect status with `sf domains check`.";
180
184
  }, {
181
185
  readonly slug: "configuration";
@@ -184,7 +188,7 @@ export declare const DOCS_CATALOG: readonly [{
184
188
  readonly tier: "full";
185
189
  readonly summary: "Ship space metadata and SPA settings alongside your files.";
186
190
  readonly keywords: readonly ["config", "sf.jsonc", "spacefast.jsonc", "metadata", "spa", "schema", "settings"];
187
- readonly url: "https://spacefast.com/docs/configuration";
191
+ readonly url: `${string}/configuration`;
188
192
  readonly body: "Add `sf.jsonc` at your publish root so configuration travels with each version and rolls back with it. `sf init` scaffolds it with a `$schema` pointer for autocomplete.";
189
193
  }, {
190
194
  readonly slug: "environment-variables";
@@ -193,7 +197,7 @@ export declare const DOCS_CATALOG: readonly [{
193
197
  readonly tier: "full";
194
198
  readonly summary: "Set build-time configuration and secrets per space.";
195
199
  readonly keywords: readonly ["env", "environment", "secrets", "config", "variables", "dotenv"];
196
- readonly url: "https://spacefast.com/docs/configuration";
200
+ readonly url: `${string}/configuration`;
197
201
  readonly body: "Manage a space's variables with `sf env set` / `sf env ls`, or import a dotenv file with `sf env import`. Secret values are masked in `--json` output.";
198
202
  }, {
199
203
  readonly slug: "access-control";
@@ -202,7 +206,7 @@ export declare const DOCS_CATALOG: readonly [{
202
206
  readonly tier: "full";
203
207
  readonly summary: "Create scoped Grants, invite People, and manage Links or credentials.";
204
208
  readonly keywords: readonly ["access", "share", "people", "links", "private", "team", "public"];
205
- readonly url: "https://spacefast.com/docs/access";
209
+ readonly url: `${string}/access`;
206
210
  readonly body: "Use `sf share grant`, `sf share people`, `sf share link`, `sf share password`, or `sf share token`. Inspect one route with `sf share check`; every audience uses the same path, capability, target, and constraint evaluator.";
207
211
  }, {
208
212
  readonly slug: "redirects";
@@ -211,7 +215,7 @@ export declare const DOCS_CATALOG: readonly [{
211
215
  readonly tier: "full";
212
216
  readonly summary: "Declare redirect rules that travel with each version.";
213
217
  readonly keywords: readonly ["redirect", "rewrite", "routing", "301", "302", "_redirects"];
214
- readonly url: "https://spacefast.com/docs/redirects";
218
+ readonly url: `${string}/redirects`;
215
219
  readonly body: "Add a `_redirects` file at your publish root to redirect, rewrite, or proxy; it compiles at finalize and rolls back with the version. Inspect resolution with `sf routing inspect`.";
216
220
  }, {
217
221
  readonly slug: "headers";
@@ -220,7 +224,7 @@ export declare const DOCS_CATALOG: readonly [{
220
224
  readonly tier: "full";
221
225
  readonly summary: "Attach supported response headers by path.";
222
226
  readonly keywords: readonly ["headers", "cache", "security", "_headers", "cors"];
223
- readonly url: "https://spacefast.com/docs/headers";
227
+ readonly url: `${string}/headers`;
224
228
  readonly body: "Add a `_headers` file at your publish root to set or remove supported response headers per path.";
225
229
  }, {
226
230
  readonly slug: "builds";
@@ -229,7 +233,7 @@ export declare const DOCS_CATALOG: readonly [{
229
233
  readonly tier: "full";
230
234
  readonly summary: "Connect a repository so pushes build and publish automatically.";
231
235
  readonly keywords: readonly ["build", "git", "github", "ci", "push", "connect", "preview"];
232
- readonly url: "https://spacefast.com/docs/builds";
236
+ readonly url: `${string}/builds`;
233
237
  readonly body: "Connect a repository with `sf git connect`; each push runs your build on Spacefast and publishes a version. Branch and pull-request previews are private by default; use Open for yourself or create a scoped Link for reviewers.";
234
238
  }, {
235
239
  readonly slug: "runtimes";
@@ -238,7 +242,7 @@ export declare const DOCS_CATALOG: readonly [{
238
242
  readonly tier: "full";
239
243
  readonly summary: "Run code on a space with Zero or Functions.";
240
244
  readonly keywords: readonly ["runtime", "zero", "functions", "server", "dynamic", "code", "backend", "sf.jsonc"];
241
- readonly url: "https://spacefast.com/docs/runtimes";
245
+ readonly url: `${string}/runtimes`;
242
246
  readonly body: "A space serves published files until you declare a `runtime` block in sf.jsonc. Every space has its own runtime site. Zero is a capsule with its own database and transactions; Functions is a Cloudflare worker with one `fetch` handler and any npm package. Both are available on every plan and compile during `sf publish`.";
243
247
  }, {
244
248
  readonly slug: "runtimes/zero";
@@ -247,7 +251,7 @@ export declare const DOCS_CATALOG: readonly [{
247
251
  readonly tier: "full";
248
252
  readonly summary: "A capsule with a database: schema, queries, mutations, endpoints.";
249
253
  readonly keywords: readonly ["zero", "capsule", "database", "schema", "query", "mutation", "endpoint", "transaction", "sql", "sf dev"];
250
- readonly url: "https://spacefast.com/docs/runtimes/zero";
254
+ readonly url: `${string}/zero-runtime`;
251
255
  readonly body: "Zero is for apps where the data is the point. Write one capsule — schema, queries, mutations, endpoints — start it locally with `sf dev`, and `sf publish` puts it live with its own database and dedicated runtime site on every plan.";
252
256
  }, {
253
257
  readonly slug: "runtimes/functions";
@@ -256,7 +260,7 @@ export declare const DOCS_CATALOG: readonly [{
256
260
  readonly tier: "full";
257
261
  readonly summary: "A worker for your space: one `fetch` handler, any npm package.";
258
262
  readonly keywords: readonly ["functions", "worker", "fetch", "ssr", "cloudflare", "npm", "handler", "server", "api"];
259
- readonly url: "https://spacefast.com/docs/runtimes/functions";
263
+ readonly url: `${string}/runtimes/functions`;
260
264
  readonly body: "Functions runs a Cloudflare worker for your space: a default export with a `fetch` method, served from your space's own origin, so requests no file answers reach your code. It is available on every plan. Opt into a database with `\"database\": true`. Automatic Next.js builds use a private, version-scoped origin cache for the Data Cache, `revalidateTag()`, `revalidatePath()`, and ISR regeneration leases; no cache credential enters the worker.";
261
265
  }, {
262
266
  readonly slug: "collab";
@@ -265,7 +269,7 @@ export declare const DOCS_CATALOG: readonly [{
265
269
  readonly tier: "full";
266
270
  readonly summary: "Leave comments directly on a space.";
267
271
  readonly keywords: readonly ["comments", "collaboration", "feedback"];
268
- readonly url: "https://spacefast.com/docs/collab";
272
+ readonly url: `${string}/collab`;
269
273
  readonly body: "Leave comments directly on a live space and archive them from the dashboard or with `sf comments`.";
270
274
  }, {
271
275
  readonly slug: "analytics";
@@ -274,7 +278,7 @@ export declare const DOCS_CATALOG: readonly [{
274
278
  readonly tier: "full";
275
279
  readonly summary: "See traffic and visitor counts for a space.";
276
280
  readonly keywords: readonly ["analytics", "traffic", "visitors", "stats", "metrics", "pageviews"];
277
- readonly url: "https://spacefast.com/docs/cli";
281
+ readonly url: `${string}/cli`;
278
282
  readonly body: "Inspect a space's traffic with `sf analytics`; history depth and granularity depend on the team's plan.";
279
283
  }, {
280
284
  readonly slug: "proxy-routes";
@@ -283,7 +287,7 @@ export declare const DOCS_CATALOG: readonly [{
283
287
  readonly tier: "reference";
284
288
  readonly summary: "Proxy selected paths to an upstream origin.";
285
289
  readonly keywords: readonly ["proxy", "upstream", "route", "api", "backend", "rewrite"];
286
- readonly url: "https://spacefast.com/docs/proxy-routes";
290
+ readonly url: `${string}/proxy-routes`;
287
291
  readonly body: "Forward specific path prefixes to an external upstream so a space can front an external API without exposing its origin.";
288
292
  }, {
289
293
  readonly slug: "image-acceleration";
@@ -292,7 +296,7 @@ export declare const DOCS_CATALOG: readonly [{
292
296
  readonly tier: "reference";
293
297
  readonly summary: "Serve optimized, resized images from your space.";
294
298
  readonly keywords: readonly ["image", "images", "optimization", "resize", "cdn", "acceleration"];
295
- readonly url: "https://spacefast.com/docs/image-acceleration";
299
+ readonly url: `${string}/image-acceleration`;
296
300
  readonly body: "Spacefast can resize and re-encode images on the fly so you ship one source asset and serve device-appropriate variants.";
297
301
  }, {
298
302
  readonly slug: "integrations/nextjs";
@@ -301,8 +305,8 @@ export declare const DOCS_CATALOG: readonly [{
301
305
  readonly tier: "reference";
302
306
  readonly summary: "Build and publish a full Next.js app with OpenNext.";
303
307
  readonly keywords: readonly ["nextjs", "next", "react", "framework", "integration", "opennext", "isr", "data cache", "revalidateTag", "revalidatePath"];
304
- readonly url: "https://spacefast.com/docs/integrations/nextjs";
305
- readonly body: "Run `sf publish` in a Next.js project. Spacefast builds it with pinned OpenNext and publishes the browser assets plus its Functions worker. The automatic adapter keeps the Next Data Cache and tag invalidations in private origin storage scoped to the exact space and version, so cached data survives cold Worker isolates; `revalidateTag()` and `revalidatePath()` invalidate that same store. Concurrent stale ISR requests share a 30-second regeneration lease, with at most 4,096 leases active for one version. Each cached value is limited to 4 MiB; one version may retain 128 MiB, 4,096 entries, and 8,192 tags. A project with its own `open-next.config.ts` owns its adapters instead of receiving Spacefast's automatic cache config.";
308
+ readonly url: `${string}/integrations/nextjs`;
309
+ readonly body: "Run `sf publish` in a Next.js project. Spacefast reads the resolved build mode from Next itself: `output: \"export\"` ships the generated browser files directly, while server-rendered apps are bundled with pinned OpenNext and publish their browser assets plus a Functions worker. The automatic adapter keeps the Next Data Cache and tag invalidations in private origin storage scoped to the exact space and version, so cached data survives cold Worker isolates; `revalidateTag()` and `revalidatePath()` invalidate that same store. Concurrent stale ISR requests share a 30-second regeneration lease, with at most 4,096 leases active for one version. Each cached value is limited to 4 MiB; one version may retain 128 MiB, 4,096 entries, and 8,192 tags. A project with its own `open-next.config.ts` owns its adapters instead of receiving Spacefast's automatic cache config.";
306
310
  }, {
307
311
  readonly slug: "integrations/vite";
308
312
  readonly title: "Vite integration";
@@ -310,7 +314,7 @@ export declare const DOCS_CATALOG: readonly [{
310
314
  readonly tier: "reference";
311
315
  readonly summary: "Publish a Vite build to a space.";
312
316
  readonly keywords: readonly ["vite", "react", "vue", "svelte", "framework", "integration", "build"];
313
- readonly url: "https://spacefast.com/docs/integrations/vite";
317
+ readonly url: `${string}/integrations/vite`;
314
318
  readonly body: "Run your Vite build and publish `dist/` with `sf publish`; `sf init` detects Vite and preconfigures the output directory.";
315
319
  }, {
316
320
  readonly slug: "limits";
@@ -319,7 +323,7 @@ export declare const DOCS_CATALOG: readonly [{
319
323
  readonly tier: "reference";
320
324
  readonly summary: "File counts, sizes, and rate limits per plan.";
321
325
  readonly keywords: readonly ["limits", "quota", "size", "rate limit", "plan", "storage"];
322
- readonly url: "https://spacefast.com/docs/limits";
326
+ readonly url: `${string}/account/plans`;
323
327
  readonly body: "Reference for per-space file counts, archive and file size ceilings, and rate limits, which vary by plan.";
324
328
  }, {
325
329
  readonly slug: "troubleshooting";
@@ -328,7 +332,7 @@ export declare const DOCS_CATALOG: readonly [{
328
332
  readonly tier: "reference";
329
333
  readonly summary: "Diagnose failed publishes, builds, and domains.";
330
334
  readonly keywords: readonly ["troubleshoot", "debug", "error", "doctor", "diagnose", "fix"];
331
- readonly url: "https://spacefast.com/docs/troubleshooting";
335
+ readonly url: `${string}/troubleshooting`;
332
336
  readonly body: "Common publish, build, and domain failures and how to resolve them. Run `sf doctor` to check your local setup and auth state.";
333
337
  }, {
334
338
  readonly slug: "migrate-from";
@@ -337,7 +341,7 @@ export declare const DOCS_CATALOG: readonly [{
337
341
  readonly tier: "reference";
338
342
  readonly summary: "Move from Netlify, Vercel, and other hosts.";
339
343
  readonly keywords: readonly ["migrate", "netlify", "vercel", "cloudflare", "github pages", "here.now", "import"];
340
- readonly url: "https://spacefast.com/docs/migrate-from";
344
+ readonly url: `${string}/migrate-from`;
341
345
  readonly body: "Step-by-step migrations that map another host's build output, redirects, and headers onto a Spacefast space.";
342
346
  }, {
343
347
  readonly slug: "cli";
@@ -346,7 +350,7 @@ export declare const DOCS_CATALOG: readonly [{
346
350
  readonly tier: "essential";
347
351
  readonly summary: "Install, authenticate, and the first-publish command path.";
348
352
  readonly keywords: readonly ["cli", "sf", "command", "install", "overview", "help"];
349
- readonly url: "https://spacefast.com/docs/cli";
353
+ readonly url: `${string}/cli`;
350
354
  readonly body: "Run `sf help` for the essential commands, `sf help --full` for everything. The CLI emits a `{ data }` / `{ error }` JSON envelope under `--json`.";
351
355
  }, {
352
356
  readonly slug: "cli/publish";
@@ -355,7 +359,7 @@ export declare const DOCS_CATALOG: readonly [{
355
359
  readonly tier: "essential";
356
360
  readonly summary: "Build, upload, and take the current output live on a space.";
357
361
  readonly keywords: readonly ["publish", "sf publish", "go live", "upload", "release"];
358
- readonly url: "https://spacefast.com/docs/cli";
362
+ readonly url: `${string}/cli`;
359
363
  readonly body: "`sf publish [DIR]` snapshots a directory into an immutable version and promotes it to the production channel. Add `--no-wait` to return before serving finishes.";
360
364
  }, {
361
365
  readonly slug: "login";
@@ -364,7 +368,7 @@ export declare const DOCS_CATALOG: readonly [{
364
368
  readonly tier: "essential";
365
369
  readonly summary: "Authenticate the CLI with your Spacefast account.";
366
370
  readonly keywords: readonly ["login", "auth", "authenticate", "token", "device", "signin"];
367
- readonly url: "https://spacefast.com/docs/cli";
371
+ readonly url: `${string}/cli`;
368
372
  readonly body: "`sf login` starts the device-authorization flow; for non-interactive use pass `--token` or set `SPACEFAST_TOKEN`.";
369
373
  }, {
370
374
  readonly slug: "init";
@@ -373,7 +377,7 @@ export declare const DOCS_CATALOG: readonly [{
373
377
  readonly tier: "essential";
374
378
  readonly summary: "Scaffold an sf.jsonc config in the current directory.";
375
379
  readonly keywords: readonly ["init", "config", "scaffold", "sf.jsonc", "setup"];
376
- readonly url: "https://spacefast.com/docs/cli";
380
+ readonly url: `${string}/cli`;
377
381
  readonly body: "`sf init` detects your framework and writes a starter `sf.jsonc` so subsequent `sf publish` runs are zero-config.";
378
382
  }, {
379
383
  readonly slug: "claim";
@@ -382,7 +386,7 @@ export declare const DOCS_CATALOG: readonly [{
382
386
  readonly tier: "essential";
383
387
  readonly summary: "Attach an anonymously-published space to your account.";
384
388
  readonly keywords: readonly ["claim", "anonymous", "attach", "token", "adopt", "spaces"];
385
- readonly url: "https://spacefast.com/docs/cli";
389
+ readonly url: `${string}/cli`;
386
390
  readonly body: "After an agent publishes anonymously, run `sf spaces claim` with the space key to bind the space to your account.";
387
391
  }, {
388
392
  readonly slug: "cli/spaces";
@@ -391,7 +395,7 @@ export declare const DOCS_CATALOG: readonly [{
391
395
  readonly tier: "full";
392
396
  readonly summary: "List, inspect, download, duplicate, transfer, and remove spaces.";
393
397
  readonly keywords: readonly ["spaces", "space", "ls", "get", "download", "duplicate", "rm", "transfer"];
394
- readonly url: "https://spacefast.com/docs/cli";
398
+ readonly url: `${string}/cli`;
395
399
  readonly body: "The `sf spaces` group manages spaces: `ls`, `get`, `claim`, `download`, `duplicate`, `transfer`, and `rm`. Use `sf spaces download --version <ref>` to retrieve one immutable version.";
396
400
  }, {
397
401
  readonly slug: "cli/versions";
@@ -400,7 +404,7 @@ export declare const DOCS_CATALOG: readonly [{
400
404
  readonly tier: "full";
401
405
  readonly summary: "List, inspect, and remove immutable versions.";
402
406
  readonly keywords: readonly ["versions", "version", "ls", "get", "rm", "rollback", "history"];
403
- readonly url: "https://spacefast.com/docs/cli";
407
+ readonly url: `${string}/cli`;
404
408
  readonly body: "`sf versions ls` shows a space's history; `sf versions get` inspects one and `sf rollback` promotes an earlier version back to live.";
405
409
  }, {
406
410
  readonly slug: "cli/channels";
@@ -409,7 +413,7 @@ export declare const DOCS_CATALOG: readonly [{
409
413
  readonly tier: "full";
410
414
  readonly summary: "List channels and see which version each points at.";
411
415
  readonly keywords: readonly ["channels", "channel", "promote", "production", "preview", "history"];
412
- readonly url: "https://spacefast.com/docs/cli";
416
+ readonly url: `${string}/cli`;
413
417
  readonly body: "`sf channels ls` lists a space's channels and their current version; `sf channels history` shows past pointer moves. Move a channel with `sf promote`.";
414
418
  }, {
415
419
  readonly slug: "cli/domains";
@@ -418,7 +422,7 @@ export declare const DOCS_CATALOG: readonly [{
418
422
  readonly tier: "full";
419
423
  readonly summary: "Add, check, and manage custom domains and DNS.";
420
424
  readonly keywords: readonly ["domains", "domain", "dns", "add", "check", "nameservers", "diagnostics"];
421
- readonly url: "https://spacefast.com/docs/cli";
425
+ readonly url: `${string}/cli`;
422
426
  readonly body: "The `sf domains` group covers `add`, `check`, `diagnostics`, `ls`, `rm`, and a full `dns` subtree for managing records and nameservers.";
423
427
  }, {
424
428
  readonly slug: "cli/env";
@@ -427,7 +431,7 @@ export declare const DOCS_CATALOG: readonly [{
427
431
  readonly tier: "full";
428
432
  readonly summary: "Set, list, import, and pull a space's variables.";
429
433
  readonly keywords: readonly ["env", "environment", "variables", "secrets", "set", "import", "pull"];
430
- readonly url: "https://spacefast.com/docs/cli";
434
+ readonly url: `${string}/cli`;
431
435
  readonly body: "`sf env set` / `sf env ls` manage a space's variables; `sf env import` loads a dotenv file and `sf env pull` writes them back out.";
432
436
  }, {
433
437
  readonly slug: "cli/builds";
@@ -436,7 +440,7 @@ export declare const DOCS_CATALOG: readonly [{
436
440
  readonly tier: "full";
437
441
  readonly summary: "List, inspect, and retry cloud builds.";
438
442
  readonly keywords: readonly ["builds", "build", "ls", "logs", "retry", "cancel", "ci"];
439
- readonly url: "https://spacefast.com/docs/cli";
443
+ readonly url: `${string}/cli`;
440
444
  readonly body: "`sf builds ls` lists cloud builds; `sf builds logs`, `sf builds retry`, and `sf builds cancel` operate on a single build.";
441
445
  }, {
442
446
  readonly slug: "cli/git";
@@ -445,7 +449,7 @@ export declare const DOCS_CATALOG: readonly [{
445
449
  readonly tier: "full";
446
450
  readonly summary: "Connect a repository for push-to-publish builds.";
447
451
  readonly keywords: readonly ["git", "github", "connect", "repository", "ci", "sync", "disconnect"];
448
- readonly url: "https://spacefast.com/docs/cli";
452
+ readonly url: `${string}/cli`;
449
453
  readonly body: "`sf git connect` links a repository so pushes build and publish automatically; `sf git ls`, `sf git sync`, and `sf git disconnect` manage the connection.";
450
454
  }, {
451
455
  readonly slug: "cli/access";
@@ -454,7 +458,7 @@ export declare const DOCS_CATALOG: readonly [{
454
458
  readonly tier: "full";
455
459
  readonly summary: "Emergency visitor-session revocation.";
456
460
  readonly keywords: readonly ["access", "sessions", "revoke", "logout"];
457
- readonly url: "https://spacefast.com/docs/cli";
461
+ readonly url: `${string}/cli`;
458
462
  readonly body: "Use `sf access logout-all` to revoke every opened visitor session. Define audience-specific network restrictions on the corresponding Grant.";
459
463
  }, {
460
464
  readonly slug: "cli/teams";
@@ -463,16 +467,16 @@ export declare const DOCS_CATALOG: readonly [{
463
467
  readonly tier: "full";
464
468
  readonly summary: "Create teams, invite members, and switch context.";
465
469
  readonly keywords: readonly ["teams", "team", "members", "invitations", "switch", "create"];
466
- readonly url: "https://spacefast.com/docs/cli";
470
+ readonly url: `${string}/cli`;
467
471
  readonly body: "`sf teams create` makes a team, `sf teams invitations add` invites people, `sf teams members ls` lists them, and `sf teams switch` sets the active team.";
468
472
  }, {
469
473
  readonly slug: "cli/api-keys";
470
474
  readonly title: "sf api-keys";
471
475
  readonly kind: "cli";
472
476
  readonly tier: "full";
473
- readonly summary: "Create and revoke API keys for the platform API.";
477
+ readonly summary: "Create and revoke API keys for the Spacefast API.";
474
478
  readonly keywords: readonly ["api-keys", "api key", "token", "create", "revoke", "list", "credential"];
475
- readonly url: "https://spacefast.com/docs/cli";
479
+ readonly url: `${string}/cli`;
476
480
  readonly body: "`sf api-keys create` mints a bearer key (shown once, masked in `--json`); `sf api-keys list` and `sf api-keys revoke` manage existing keys.";
477
481
  }, {
478
482
  readonly slug: "cli/analytics";
@@ -481,7 +485,7 @@ export declare const DOCS_CATALOG: readonly [{
481
485
  readonly tier: "full";
482
486
  readonly summary: "Print traffic and visitor counts for a space.";
483
487
  readonly keywords: readonly ["analytics", "traffic", "visitors", "stats", "metrics"];
484
- readonly url: "https://spacefast.com/docs/cli";
488
+ readonly url: `${string}/cli`;
485
489
  readonly body: "`sf analytics` reports a space's traffic; history depth and granularity depend on the team's plan.";
486
490
  }, {
487
491
  readonly slug: "cli/api";
@@ -490,7 +494,7 @@ export declare const DOCS_CATALOG: readonly [{
490
494
  readonly tier: "full";
491
495
  readonly summary: "Call the core public API through a safe escape hatch.";
492
496
  readonly keywords: readonly ["api", "sf api", "http", "raw", "request", "curl", "endpoint"];
493
- readonly url: "https://spacefast.com/docs/cli";
497
+ readonly url: `${string}/cli`;
494
498
  readonly body: "`sf api <METHOD> /v1/...` calls only the core public contract with resolved CLI credentials. JSON envelopes print verbatim; cursor lists support `--paginate`, and non-JSON bodies require `--output` or `--raw-stdout`.";
495
499
  }, {
496
500
  readonly slug: "cli/mcp";
@@ -499,7 +503,7 @@ export declare const DOCS_CATALOG: readonly [{
499
503
  readonly tier: "full";
500
504
  readonly summary: "Run and install the Spacefast MCP server.";
501
505
  readonly keywords: readonly ["mcp", "model context protocol", "agent", "install", "server", "tools"];
502
- readonly url: "https://spacefast.com/docs/cli";
506
+ readonly url: `${string}/cli`;
503
507
  readonly body: "`sf mcp` runs the MCP server so an AI assistant can call Spacefast tools; `sf mcp install` wires it into a supported client's config.";
504
508
  }, {
505
509
  readonly slug: "cli/docs";
@@ -508,7 +512,7 @@ export declare const DOCS_CATALOG: readonly [{
508
512
  readonly tier: "full";
509
513
  readonly summary: "Search the offline documentation index from the CLI.";
510
514
  readonly keywords: readonly ["docs", "search", "help", "reference", "offline", "topic"];
511
- readonly url: "https://spacefast.com/docs/cli";
515
+ readonly url: `${string}/cli`;
512
516
  readonly body: "`sf docs` lists documentation topics and `sf docs <topic>` prints a page. The index ships with the CLI and mirrors the machine-readable `GET /v1/docs` API.";
513
517
  }, {
514
518
  readonly slug: "json-output";
@@ -517,17 +521,17 @@ export declare const DOCS_CATALOG: readonly [{
517
521
  readonly tier: "full";
518
522
  readonly summary: "Machine-readable envelopes and stable exit codes for scripts.";
519
523
  readonly keywords: readonly ["json", "exit code", "scripting", "envelope", "automation", "ci", "agent"];
520
- readonly url: "https://spacefast.com/docs/cli";
524
+ readonly url: `${string}/cli`;
521
525
  readonly body: "Pass `--json` for a `{ data }` success or `{ error }` failure envelope on stdout/stderr. Exit codes are stable so scripts and agents can branch on them.";
522
526
  }, {
523
527
  readonly slug: "api";
524
- readonly title: "Platform API overview";
528
+ readonly title: "API overview";
525
529
  readonly kind: "api";
526
530
  readonly tier: "full";
527
- readonly summary: "Authenticate and call the Spacefast platform API.";
528
- readonly keywords: readonly ["api", "rest", "http", "platform", "endpoint", "openapi", "bearer"];
529
- readonly url: "https://spacefast.com/docs/api";
530
- readonly body: "The platform API uses bearer API keys and returns the same `{ data }` / `{ error }` envelope as the CLI. Create a key with `sf api-keys create`.";
531
+ readonly summary: "Authenticate and call the Spacefast API.";
532
+ readonly keywords: readonly ["api", "rest", "http", "spacefast", "endpoint", "openapi", "bearer"];
533
+ readonly url: `${string}/api`;
534
+ readonly body: "The Spacefast API uses bearer API keys and returns the same `{ data }` / `{ error }` envelope as the CLI. Create a key with `sf api-keys create`.";
531
535
  }, {
532
536
  readonly slug: "api/publish";
533
537
  readonly title: "Publish API";
@@ -535,7 +539,7 @@ export declare const DOCS_CATALOG: readonly [{
535
539
  readonly tier: "full";
536
540
  readonly summary: "Publish a version in a single authenticated request.";
537
541
  readonly keywords: readonly ["api", "publish", "upload", "version", "archive", "http"];
538
- readonly url: "https://spacefast.com/docs/api";
542
+ readonly url: `${string}/api`;
539
543
  readonly body: "Send your files in one authenticated publish request to create an immutable version and take it live; the response carries the space and live URL.";
540
544
  }, {
541
545
  readonly slug: "api/spaces";
@@ -544,7 +548,7 @@ export declare const DOCS_CATALOG: readonly [{
544
548
  readonly tier: "full";
545
549
  readonly summary: "Create, list, and update spaces over HTTP.";
546
550
  readonly keywords: readonly ["api", "spaces", "space", "create", "list", "endpoint"];
547
- readonly url: "https://spacefast.com/docs/api";
551
+ readonly url: `${string}/api`;
548
552
  readonly body: "`GET /v1/spaces` lists spaces; `POST /v1/spaces` creates one. `PATCH /v1/spaces/{spaceId}` with a slug-only body renames the space and managed hostname. Former managed addresses temporarily 307 to the current hostname while immutable version URLs stay unchanged. Responses carry the space id, slug, and live URL.";
549
553
  }, {
550
554
  readonly slug: "api/versions";
@@ -553,7 +557,7 @@ export declare const DOCS_CATALOG: readonly [{
553
557
  readonly tier: "full";
554
558
  readonly summary: "List versions and promote them to channels over HTTP.";
555
559
  readonly keywords: readonly ["api", "versions", "publish", "channel", "promote", "rollback"];
556
- readonly url: "https://spacefast.com/docs/api";
560
+ readonly url: `${string}/api`;
557
561
  readonly body: "List a space's versions, then promote one to a channel to move traffic. Rolling back is promoting an earlier version.";
558
562
  }, {
559
563
  readonly slug: "api/domains";
@@ -562,8 +566,8 @@ export declare const DOCS_CATALOG: readonly [{
562
566
  readonly tier: "reference";
563
567
  readonly summary: "Attach and inspect custom domains over HTTP.";
564
568
  readonly keywords: readonly ["api", "domains", "domain", "dns", "certificate", "endpoint"];
565
- readonly url: "https://spacefast.com/docs/api";
566
- readonly body: "Add a custom domain, read its verification and certificate status, and manage DNS records through the platform API.";
569
+ readonly url: `${string}/api`;
570
+ readonly body: "Add a custom domain, read its verification and certificate status, and manage DNS records through the Spacefast API.";
567
571
  }, {
568
572
  readonly slug: "api/teams";
569
573
  readonly title: "Teams API";
@@ -571,7 +575,7 @@ export declare const DOCS_CATALOG: readonly [{
571
575
  readonly tier: "reference";
572
576
  readonly summary: "Manage teams, members, and invitations over HTTP.";
573
577
  readonly keywords: readonly ["api", "teams", "team", "members", "invitations", "endpoint"];
574
- readonly url: "https://spacefast.com/docs/api";
578
+ readonly url: `${string}/api`;
575
579
  readonly body: "Create teams, list members, and manage invitations programmatically. Webhooks and API keys are team-scoped.";
576
580
  }, {
577
581
  readonly slug: "api/docs";
@@ -580,8 +584,8 @@ export declare const DOCS_CATALOG: readonly [{
580
584
  readonly tier: "reference";
581
585
  readonly summary: "Fetch the machine-readable documentation index.";
582
586
  readonly keywords: readonly ["api", "docs", "index", "discovery", "machine-readable", "v1/docs"];
583
- readonly url: "https://spacefast.com/docs/api";
584
- readonly body: "`GET /v1/docs` returns the tier-aware docs index (filter with `q` and `category`); `GET /v1/docs/{slug}` returns one page. It mirrors the CLI's offline `sf docs`.";
587
+ readonly url: `${string}/api`;
588
+ readonly body: "`GET /v1/docs` returns the tier-aware docs index (filter with `q` and `category`); `GET /v1/docs/pages/{slug}` returns one page. It mirrors the CLI's offline `sf docs`.";
585
589
  }, {
586
590
  readonly slug: "api/webhooks";
587
591
  readonly title: "Webhooks";
@@ -589,15 +593,69 @@ export declare const DOCS_CATALOG: readonly [{
589
593
  readonly tier: "reference";
590
594
  readonly summary: "Subscribe to version, build, and domain lifecycle events.";
591
595
  readonly keywords: readonly ["api", "webhook", "events", "callback", "notifications", "build", "signature"];
592
- readonly url: "https://spacefast.com/docs/webhooks";
596
+ readonly url: `${string}/webhooks`;
593
597
  readonly body: "Register a team-scoped, signed webhook to receive version, build, domain, and transfer events. Verify the signature header before trusting a payload.";
594
598
  }, {
595
- readonly slug: "api/platform";
596
- readonly title: "Platform (tenant) API";
599
+ readonly slug: "sdk";
600
+ readonly title: "TypeScript SDK (@spacefast/sdk)";
601
+ readonly kind: "api";
602
+ readonly tier: "essential";
603
+ readonly summary: "The typed client for the API, generated from the OpenAPI spec.";
604
+ readonly keywords: readonly ["sdk", "typescript", "javascript", "client", "npm", "library", "types", "tanstack", "react-query", "node"];
605
+ readonly url: `${string}/sdk`;
606
+ readonly body: "`npm install @spacefast/sdk`, then `createSpacefastClient({ baseUrl: 'https://api.spacefast.com', apiKey })`. Paths, parameters, and responses are all typed from the same OpenAPI spec the API serves: `client.get('/v1/spaces/{spaceId}', { path: { spaceId } })` returns the space. Failures throw `SpacefastApiError` carrying the problem document (`status`, `code`, `pointer`, `next`, `requestId`). Subpaths: `/schema` for raw types, `/query` for TanStack Query factories (browser, cookie-authenticated), `/transport` for the HTTP core, `/publish` for the publish pipeline, `/openapi.json` for your own codegen.";
607
+ }, {
608
+ readonly slug: "api/partner";
609
+ readonly title: "Partner (tenant) API";
610
+ readonly kind: "api";
611
+ readonly tier: "reference";
612
+ readonly summary: "The tenant-facing partner API for running Spacefast as infra.";
613
+ readonly keywords: readonly ["api", "partner", "tenant", "infra", "openapi", "multi-tenant", "white label"];
614
+ readonly url: `${string}/partners`;
615
+ readonly body: `There is no partner route tree. Partners call the same \`/v1\` routes as everyone else: successes carry a \`{ data }\` envelope and failures are RFC 9457 problem documents (\`application/problem+json\` with a stable \`code\`), exactly as elsewhere in the API. A tenant-rooted credential's policy scope and response projection decide what it sees. "Partner" is a spec visibility tier: those operations, plus tenants and principals, are published as a second OpenAPI document at ${string}/openapi.partner.json, rendered at ${string}. Point \`openapi-typescript\` at that document for types. Configuration is not a set of endpoints: a tenant declares its integration in one designated space's published manifest (see \`partner/system-space\`).`;
616
+ }, {
617
+ readonly slug: "partner/onboarding";
618
+ readonly title: "Partner onboarding";
619
+ readonly kind: "api";
620
+ readonly tier: "reference";
621
+ readonly summary: "Bootstrap a tenant: one key, one space, one designation, one publish.";
622
+ readonly keywords: readonly ["partner", "onboarding", "tenant", "bootstrap", "partner_admin", "api key", "setup"];
623
+ readonly url: `${string}/partners#onboarding`;
624
+ readonly body: "Tenant creation is superadmin-side and mints one bootstrap tenant-rooted API key with the `partner_admin` preset (`tenants:*`, `principals:read`, and space/domain/publish actions over the tenant). From there it is four steps you drive yourself: create a space with that key, `PATCH /v1/tenants/{tenantId}` with `systemSpaceId` to designate it, publish the manifest, then read `manifestStatus` on `GET /v1/tenants/{tenantId}` to watch each declared item converge. Mint further keys through the normal API-key routes — every one is bounded to a subset of its grantor's policy.";
625
+ }, {
626
+ readonly slug: "partner/system-space";
627
+ readonly title: "The system space";
628
+ readonly kind: "api";
629
+ readonly tier: "reference";
630
+ readonly summary: "Your integration is a published space, so config versions and rolls back.";
631
+ readonly keywords: readonly ["partner", "system space", "manifest", "sf.jsonc", "systemSpaceId", "manifestStatus", "gitops", "reconciliation", "white label"];
632
+ readonly url: `${string}/partners#system-space`;
633
+ readonly body: "A tenant designates one ordinary space as its system space, and that space's live version *is* the integration definition: a top-level `system` section in `sf.jsonc` (presentation, hostname apex, API origin, token issuers, event subscriptions) plus `_pages/` and `theme.json` as the defaults layer. One config language, one validation pipeline, one publish flow — and `sf rollback` rolls back your configuration with it. Finalize, promote, and rollback all reconcile declared state against current state. Presentation, pages, theme, and subscriptions apply immediately; hostnames, API origins, and token issuers enter `pending` until their DNS, TLS, or key-possession check passes. Dropping an item from the manifest deactivates it. Per-item state lands in `manifestStatus` (`{ key, state, detail, since }` plus the source version id) on `GET /v1/tenants/{tenantId}`. There are no imperative config routes: the fix for a failed item is a new publish. Secrets are never declared — webhook secrets and API keys are minted by their own routes.";
634
+ }, {
635
+ readonly slug: "partner/tokens";
636
+ readonly title: "Partner tokens";
637
+ readonly kind: "api";
638
+ readonly tier: "reference";
639
+ readonly summary: "Let your own auth system mint tokens Spacefast verifies directly.";
640
+ readonly keywords: readonly ["partner", "token", "jwt", "issuer", "eddsa", "ed25519", "auth", "partner_token", "audience", "revocation"];
641
+ readonly url: `${string}/partners#tokens`;
642
+ readonly body: "Your customers never need a Spacefast credential: your auth system mints standard JWT access tokens and Spacefast verifies them. Declare the issuer in the system-space manifest with its pinned Ed25519 public keys — there is no issuer CRUD. The first publish returns `state: pending` with a challenge nonce in `manifestStatus`; sign it with the declared key and republish with the `proof` field, and the issuer activates. Proof of key possession lives in your repo next to the declaration. The token profile is strict: `typ` of `at+jwt`, `alg` of `EdDSA` only, the per-issuer minted `aud` (never a shared value), all of `iss`/`sub`/`client_id`/`jti`/`iat`/`exp` required, `exp - iat` at most 30 minutes, 300s clock skew; embedded or fetched keys are rejected. A verified token becomes a `partner_token` credential bound to one external principal, carrying a fixed least-privilege policy: publish, read, versions, and variables over that principal's subtree — never tenant or principal management. Revoke by removing the issuer or rotating its keys; worst-case acceptance of a revoked token is the shorter of a 30s cache TTL and the token's own expiry.";
643
+ }, {
644
+ readonly slug: "partner/principals";
645
+ readonly title: "Principals and ownership";
646
+ readonly kind: "api";
647
+ readonly tier: "reference";
648
+ readonly summary: "External principals are your customer directory; spaces have exactly one owner.";
649
+ readonly keywords: readonly ["partner", "principals", "external", "tenant", "ownership", "iam", "policy", "scope", "variables"];
650
+ readonly url: `${string}/partners#principals`;
651
+ readonly body: "Your customers are external principals inside your tenant. `GET /v1/principals` lists them within the caller's granted scope (a tenant-rooted key sees the whole tenant) and `GET /v1/principals/external/{principalId}` reads one. There is no create route: a principal is upserted implicitly in the same transaction as its first owned resource, and its identity is the normalized id — the display casing you first sent is preserved but never authoritative. Every space has exactly one owner: a team, an external principal, or an open claim token. IAM actions stay generic nouns (`tenants:read`, `tenants:write`, `principals:read`) rather than a `partner:*` namespace, evaluated per route like every other action, so a partner credential's reach is a policy fact and not a router branch. Per-principal environment variables live under `/v1/principals/{principalType}/{principalId}/variables`.";
652
+ }, {
653
+ readonly slug: "partner/events";
654
+ readonly title: "Partner events and notifications";
597
655
  readonly kind: "api";
598
656
  readonly tier: "reference";
599
- readonly summary: "The tenant-facing platform API for running Spacefast as infra.";
600
- readonly keywords: readonly ["api", "platform", "tenant", "infra", "openapi", "multi-tenant"];
601
- readonly url: "https://spacefast.com/docs/platforms";
602
- readonly body: "The platform API is the tenant-facing surface for operating Spacefast as hosting infra. It shares the `{ data }` / `{ error }` envelope and is documented via OpenAPI.";
657
+ readonly summary: "Tenant-owned webhooks, declared in the manifest including customer email.";
658
+ readonly keywords: readonly ["partner", "events", "webhook", "subscriptions", "notifications", "email", "signature", "hmac"];
659
+ readonly url: `${string}/partners#events`;
660
+ readonly body: "Webhooks are the one event primitive, and their ownership generalizes from teams to tenants. Declare subscriptions in the system-space manifest (`url` plus an `events` selection) and reconciliation creates, updates, or disables the rows; delivery uses the same `Spacefast-Signature` HMAC and dual-secret rotation as team webhooks, so verify the signature before trusting a payload. Email white-labeling is not a separate endpoint: subscribe to `principal.notification.*` events (claim link issued, security notice, publish receipt) and send them yourself in your own voice. For a partner tenant these events replace Spacefast-sent email to your customers — no active subscription means no send, and Spacefast never falls back to sending as itself to someone else's customer.";
603
661
  }, ...DocEntry[]];