@spacefast/common 0.0.26 → 0.2.2

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 +192 -7
  38. package/dist/contracts/builds.js +84 -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 +273 -7
  79. package/dist/contracts/error-code-meta.js +81 -5
  80. package/dist/contracts/error-codes.d.ts +5 -5
  81. package/dist/contracts/error-codes.js +79 -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 +121 -10
  110. package/dist/contracts/oauth-resources.js +130 -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 +2102 -1
  210. package/dist/docs/error-docs.js +285 -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
@@ -23,14 +23,14 @@ export interface SpacefastSkillDefinition {
23
23
  export declare const SPACEFAST_SKILLS: readonly [{
24
24
  readonly name: "create-and-publish-site";
25
25
  readonly title: "Create and publish a polished website";
26
- readonly description: "Turn a brief into a responsive website, review the result, publish it to Spacefast, and verify the live version.";
27
- readonly whenToUse: "Use when the user wants an agent to design, build, improve, or launch a new website rather than only upload an existing build.";
26
+ readonly description: "Build a responsive website from a brief. Publish it and verify the live version.";
27
+ readonly whenToUse: "Use when the user wants a new website built, improved, or launched.";
28
28
  readonly keywords: readonly ["create", "website", "design", "build", "responsive", "launch", "publish"];
29
29
  readonly runtimes: readonly ["local", "hosted"];
30
- readonly tools: readonly ["publish", "execute"];
30
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments"];
31
31
  readonly docs: readonly ["quickstart", "publishing"];
32
- readonly instructions: readonly ["Clarify the audience, goal, required content, brand constraints, and desired call to action. If the visual direction is open, propose two or three distinct directions and choose one with the user.", "Inspect the existing workspace before editing. Reuse its framework, package manager, components, assets, and build conventions when they are sound.", "Build a focused, accessible experience with a clear hierarchy, real content, responsive layouts, useful interaction states, and no placeholder copy. Keep the main path simple and put secondary detail behind progressive disclosure.", "Run the real build and inspect the result at mobile and desktop widths. Fix overflow, illegible contrast, broken links, missing assets, keyboard traps, and avoidable layout shift.", "Review the workspace diff and summarize material design or content judgments before publishing. Never include API keys, claim credentials, upload credentials, or local auth state in the artifact.", "Publish the built output with `publish`. Present Open as the reusable access link and Claim as the one-time ownership link. Treat live and immutable-version URLs as receipt metadata, not extra actions."];
33
- readonly verification: readonly ["Call `status` after publishing and confirm the intended version is live; use `diagnose` if serving is stalled or failed.", "Open the live URL and verify the primary page, navigation, assets, responsive layout, and main call to action before claiming success."];
32
+ readonly instructions: readonly ["Use the user's brief. Infer optional design choices from the content and workspace.", "Ask a question only when a missing required value blocks safe work.", "Inspect the workspace. Reuse its framework, package manager, components, assets, and build commands when suitable.", "Build an accessible site with real content, responsive layouts, clear hierarchy, and useful interaction states.", "Run the real build. Check mobile and desktop layouts, links, assets, keyboard use, contrast, and layout stability.", "Review the final diff. Remove secrets and local authentication data from the artifact.", "Call `publish` once with the built output. Return useful access, live, and version URLs from the receipt. If the publish is anonymous, point the user to the claim action in the publish card and state its expiry.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
33
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the intended version is ready and current.", "If the deployment failed or stalled, report its stable error code and actionable diagnostics.", "Open the live URL. Verify the main page, navigation, assets, responsive layout, and primary call to action."];
34
34
  readonly runtimeNotes: {
35
35
  readonly local: "On-Device can work directly inside the configured local workspace root and publish a local build path.";
36
36
  readonly hosted: "Hosted has no filesystem. Generate small files in the client and publish them inline, or use catalog manifest and import operations for larger artifacts.";
@@ -48,10 +48,10 @@ export declare const SPACEFAST_SKILLS: readonly [{
48
48
  readonly whenToUse: "Use when the artifact already exists and the user wants it published or updated.";
49
49
  readonly keywords: readonly ["publish", "deploy", "live", "verify", "version", "claim"];
50
50
  readonly runtimes: readonly ["local", "hosted"];
51
- readonly tools: readonly ["publish", "status", "diagnose"];
51
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments"];
52
52
  readonly docs: readonly ["publishing", "workflow/publish-receipt", "workflow/secret-handling"];
53
- readonly instructions: readonly ["Identify the actual publish root or build output. Run the real build first when the source tree is not itself the artifact to publish.", "Publish with `publish`. For an anonymous On-Device publish, keep the claim credential in local custody and return only the claim URL and expiry; never expose or ask the user to paste the raw token.", "Report the bare Live URL, private Access URL when present, immutable Version URL when present, anonymous Claim URL and expiry when present, plus actionable diagnostics."];
54
- readonly verification: readonly ["Call `status` and confirm the intended version is live. Use `diagnose` for a failed or stalled publish.", "Open the live URL and verify representative content and assets rather than treating a successful upload or health check as serving proof."];
53
+ readonly instructions: readonly ["Identify the actual publish root or build output. Run the real build first when the source tree is not the artifact.", "Call `publish` once. Keep anonymous claim credentials in local custody.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop.", "Return the live, access, and version URLs that are present. For an anonymous publish, state the claim expiry and point the user to the claim action in the publish card.", "Never expose a raw claim credential. Never ask the user to paste one."];
54
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the intended version is ready and current.", "Report the stable error code and actionable diagnostics when the deployment failed or stalled.", "Open the live URL. Verify representative content and assets before reporting success."];
55
55
  readonly runtimeNotes: {
56
56
  readonly local: "Publish a bounded local path; locally custodied claim credentials are reused automatically.";
57
57
  readonly hosted: "Publish inline files, or use catalog manifest and import operations for larger artifacts. Hosted has no filesystem.";
@@ -60,7 +60,7 @@ export declare const SPACEFAST_SKILLS: readonly [{
60
60
  readonly recipe: {
61
61
  readonly slug: "recipes/agent-publish";
62
62
  readonly tier: "full";
63
- readonly url: `${string}/publishing/anonymous`;
63
+ readonly url: `${string}/publish/anonymous`;
64
64
  };
65
65
  }, {
66
66
  readonly name: "ci-github-actions";
@@ -69,15 +69,15 @@ export declare const SPACEFAST_SKILLS: readonly [{
69
69
  readonly whenToUse: "Use when pushes or manual workflow runs should publish automatically from GitHub.";
70
70
  readonly keywords: readonly ["github", "actions", "ci", "push", "automatic", "workflow"];
71
71
  readonly runtimes: readonly ["local", "hosted"];
72
- readonly tools: readonly ["execute"];
72
+ readonly tools: readonly [];
73
73
  readonly docs: readonly ["builds", "publishing", "workflow/secret-handling"];
74
- readonly instructions: readonly ["Inspect the repository's package manager, lockfile, build command, runtime version, output directory, and existing workflows before writing YAML.", "Create a least-privilege workflow triggered by the intended branch and `workflow_dispatch`: check out the repository, install with the locked dependency command, build, and run `npx -y spacefast@<pinned-version> publish <output> --json`.", "Store the credential as a masked `SPACEFAST_TOKEN` repository or environment secret. Never echo it or upload generated auth files, claim credentials, or upload credentials as artifacts.", "Use the repository's real package manager and output directory; do not copy a generic npm/dist example over a Bun, pnpm, yarn, or custom build."];
74
+ readonly instructions: readonly ["Inspect the package manager, lockfile, build command, runtime version, output directory, and existing workflows.", "Create one least-privilege workflow for the intended branch and `workflow_dispatch`.", "Check out the repository.", "Install dependencies with the locked command.", "Run the real build.", "Run `npx -y spacefast@<pinned-version> publish <output> --json` with the actual output directory.", "Store the credential as a masked `SPACEFAST_TOKEN` repository or environment secret.", "Never echo credentials. Never upload authentication files or credentials as artifacts.", "Use the repository's real package manager and output directory.", "Do not replace custom build steps with a generic npm/dist example."];
75
75
  readonly verification: readonly ["Validate the workflow syntax and run it on an explicit test branch or manual dispatch.", "Inspect the publish receipt and live URL; a green build step alone is not serving proof."];
76
76
  readonly prompt: true;
77
77
  readonly recipe: {
78
78
  readonly slug: "recipes/github-deploys";
79
79
  readonly tier: "full";
80
- readonly url: `${string}/publishing/git`;
80
+ readonly url: `${string}/publish/git`;
81
81
  };
82
82
  }, {
83
83
  readonly name: "preview-channels";
@@ -86,26 +86,26 @@ export declare const SPACEFAST_SKILLS: readonly [{
86
86
  readonly whenToUse: "Use when reviewers need a realistic preview before a change goes live.";
87
87
  readonly keywords: readonly ["preview", "channel", "branch", "pull request", "review", "private"];
88
88
  readonly runtimes: readonly ["local", "hosted"];
89
- readonly tools: readonly ["publish", "status", "execute"];
89
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments", "execute", "resume_execution"];
90
90
  readonly docs: readonly ["builds", "access-control"];
91
- readonly instructions: readonly ["Publish the branch through a connected repository or to an explicit non-production channel so the live production channel is unchanged.", "Keep the preview private by default. Use an Open URL for the owner's browser or create the narrowest scoped Link needed for reviewers.", "Label the preview with the branch, change, or pull request it represents and report what is intentionally out of scope."];
92
- readonly verification: readonly ["Confirm the preview serves the expected version and production still points at its previous version.", "Test the reviewer link in a signed-out context and revoke it when review is complete."];
91
+ readonly instructions: readonly ["Call `publish` once for an explicit non-production space or channel. Do not change the production target.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop.", "Keep the preview private unless the user requests sharing.", "For reviewer access, use one bounded `execute` program. Read current access, create the narrowest Link, then read it again.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Label the preview with its branch, change, or pull request. Report what is out of scope."];
92
+ readonly verification: readonly ["Call `show_space_deployments` for each affected Space. Confirm that the preview changed. Confirm that production did not change.", "Test the reviewer Link in a signed-out context. Report its scope and expiry."];
93
93
  readonly recipe: {
94
94
  readonly slug: "recipes/preview-channels";
95
95
  readonly tier: "full";
96
- readonly url: `${string}/publishing/git`;
96
+ readonly url: `${string}/publish/git`;
97
97
  };
98
98
  }, {
99
99
  readonly name: "claim-flow";
100
100
  readonly title: "Claim an anonymous space";
101
- readonly description: "Attach an anonymous space to an account or team before expiry while keeping every claim credential in server or local custody.";
102
- readonly whenToUse: "Use after an anonymous publish returns a claim URL and expiry.";
101
+ readonly description: "Attach an anonymous space to an account or team before expiry. Keep claim credentials in server or local custody.";
102
+ readonly whenToUse: "Use after an anonymous publish returns a claim action and expiry.";
103
103
  readonly keywords: readonly ["claim", "anonymous", "ownership", "team", "continuation", "credential"];
104
104
  readonly runtimes: readonly ["local", "hosted"];
105
- readonly tools: readonly ["execute", "publish"];
105
+ readonly tools: readonly ["publish", "operation_status", "execute", "resume_execution"];
106
106
  readonly docs: readonly ["anonymous-publish", "workflow/continue-after-claim", "workflow/secret-handling"];
107
- readonly instructions: readonly ["Return the claim URL and expiry to the user, never the raw claim credential. On-Device stores that credential in `.spacefast/state.json` and reuses it without returning it to the model.", "When authenticated On-Device credentials are available, use the catalog `claim` operation with only `teamId` and the expected `spaceId`; otherwise let the user open the claim URL in their browser.", "Publish again from On-Device after the browser claim. `publish` automatically exchanges the locally held claim credential once, persists the durable space-scoped credential, and retries without exposing either secret."];
108
- readonly verification: readonly ["Confirm the space no longer has a claim expiry and appears under the intended account or team.", "Publish again from the same local root or inspect the space through `execute` to verify durable access works without asking for a raw token."];
107
+ readonly instructions: readonly ["Point the user to the claim action in the publish card and state its expiry. Never copy the claim credential into model text.", "When account credentials are available, use one bounded `execute` program. Search and describe the claim operation before calling it.", "Pass only the required team ID and expected space ID.", "After the claim resumes, read the space in the same program. Return its owner and claim state.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Otherwise, ask the user to use the claim action in the publish card.", "After a browser claim, call `publish` again from On-Device. It exchanges the locally held credential without exposing it.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
108
+ readonly verification: readonly ["Confirm that the space has no claim expiry. Confirm that it belongs to the intended account or team.", "Confirm that the republish uses durable access without a raw credential."];
109
109
  readonly prompt: true;
110
110
  }, {
111
111
  readonly name: "rollback-safely";
@@ -114,10 +114,10 @@ export declare const SPACEFAST_SKILLS: readonly [{
114
114
  readonly whenToUse: "Use when the current live version is broken and a prior healthy version is known or discoverable.";
115
115
  readonly keywords: readonly ["rollback", "revert", "version", "incident", "restore"];
116
116
  readonly runtimes: readonly ["local", "hosted"];
117
- readonly tools: readonly ["status", "rollback", "execute", "diagnose"];
117
+ readonly tools: readonly ["show_space_deployments", "execute", "resume_execution"];
118
118
  readonly docs: readonly ["versions-and-rollback"];
119
- readonly instructions: readonly ["Inspect recent immutable versions and current status. Compare the current live version with the candidate using the catalog `versions` and `diff` operations.", "Call `rollback` with the selected `versionId`. Rollback is additive and keeps later immutable versions available.", "If promotion returns an operation that is still settling, poll the catalog `operation_status` operation until it is done instead of assuming success."];
120
- readonly verification: readonly ["Call `status` and confirm the live pointer references the selected version.", "Open the live URL and verify the failing path or behavior is restored; use `diagnose` if it is not."];
119
+ readonly instructions: readonly ["Call `show_space_deployments`. Select a known-good ready version that is older than the current version.", "Use one bounded `execute` program. Search and describe the version promotion operation before calling it.", "Read the live pointer, promote the selected version, then read the pointer again in the same program.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program."];
120
+ readonly verification: readonly ["Call `show_space_deployments`. Confirm that the selected version is current and ready.", "Open the live URL. Verify that the failing path or behavior works again."];
121
121
  readonly prompt: true;
122
122
  }, {
123
123
  readonly name: "set-up-custom-domain";
@@ -126,10 +126,10 @@ export declare const SPACEFAST_SKILLS: readonly [{
126
126
  readonly whenToUse: "Use when the user owns a domain they want a Spacefast space to serve.";
127
127
  readonly keywords: readonly ["domain", "dns", "tls", "https", "cname", "custom"];
128
128
  readonly runtimes: readonly ["local", "hosted"];
129
- readonly tools: readonly ["execute"];
129
+ readonly tools: readonly ["show_space_domains", "execute", "resume_execution"];
130
130
  readonly docs: readonly ["custom-domains", "recipes/migrate-dns"];
131
- readonly instructions: readonly ["Add the domain with `sf domains add <domain>` or catalog operation `domains_add`; preserve the exact record values Spacefast returns.", "Give the user those DNS records to create at their provider. Do not claim this MCP changed third-party DNS unless it actually has an authorized provider integration.", "Keep the existing production hostname available during the cutover and avoid deleting old records until the new path is proven."];
132
- readonly verification: readonly ["Run `sf domains check` or catalog operation `domains_check` until DNS and certificate state are ready.", "Open the final custom-domain HTTPS URL and verify representative content before reporting it live."];
131
+ readonly instructions: readonly ["Call `show_space_domains`. Read the current domain, DNS, and certificate state.", "If setup is required, use one bounded `execute` program. Search and describe the add or assign operation before calling it.", "Read the domain again in the same program after the mutation resumes.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Return the exact DNS records from Spacefast. Do not claim that Spacefast changed third-party DNS.", "Keep the existing production hostname until the custom domain is ready."];
132
+ readonly verification: readonly ["After the external DNS change, call `show_space_domains`. Report the current verification state.", "Open the HTTPS URL only after DNS and certificate states are ready. Verify representative content."];
133
133
  readonly prompt: true;
134
134
  readonly recipe: {
135
135
  readonly slug: "recipes/custom-domain";
@@ -143,10 +143,10 @@ export declare const SPACEFAST_SKILLS: readonly [{
143
143
  readonly whenToUse: "Use for moved pages, canonical host paths, and intentional permanent or temporary redirects.";
144
144
  readonly keywords: readonly ["redirect", "rewrite", "routing", "301", "302", "path"];
145
145
  readonly runtimes: readonly ["local", "hosted"];
146
- readonly tools: readonly ["publish", "execute"];
146
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments"];
147
147
  readonly docs: readonly ["redirects"];
148
- readonly instructions: readonly ["Inspect existing routing rules, then add the smallest non-conflicting rules to `_redirects` at the publish root.", "Choose temporary or permanent status deliberately, preserve path/query semantics where required, and avoid redirect loops or rules that shadow real assets.", "Publish the redirect file as part of the same immutable version as the related content change."];
149
- readonly verification: readonly ["Request representative old and new paths and confirm the exact status and Location header.", "Verify the final target serves successfully and unrelated assets are not redirected."];
148
+ readonly instructions: readonly ["Inspect existing routing rules, then add the smallest non-conflicting rules to `_redirects` at the publish root.", "Choose a temporary or permanent status deliberately. Preserve required path and query behavior.", "Avoid redirect loops and rules that hide real assets.", "Call `publish` once. Include the redirect file and related content in the same immutable version.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
149
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the new version is current and ready.", "Request representative old and new paths and confirm the exact status and Location header.", "Verify the final target serves successfully and unrelated assets are not redirected."];
150
150
  readonly recipe: {
151
151
  readonly slug: "recipes/redirects";
152
152
  readonly tier: "reference";
@@ -159,10 +159,10 @@ export declare const SPACEFAST_SKILLS: readonly [{
159
159
  readonly whenToUse: "Use when an existing production domain must move to Spacefast.";
160
160
  readonly keywords: readonly ["dns", "migrate", "cutover", "domain", "downtime", "certificate"];
161
161
  readonly runtimes: readonly ["local", "hosted"];
162
- readonly tools: readonly ["execute"];
162
+ readonly tools: readonly ["show_space_domains", "execute", "resume_execution"];
163
163
  readonly docs: readonly ["custom-domains"];
164
- readonly instructions: readonly ["Inventory the current authoritative DNS records and lower TTL ahead of the cutover when the provider and timing allow it.", "Add the domain to Spacefast and pre-stage every record it returns while preserving a working rollback path.", "Cut over only after the Spacefast endpoint, expected content, and TLS readiness can be validated. Keep the previous origin available until propagation is complete."];
165
- readonly verification: readonly ["Check resolution from more than one resolver and confirm the certificate matches the final hostname.", "Open the public HTTPS URL, verify representative content, and monitor for old-origin traffic before removing rollback records."];
164
+ readonly instructions: readonly ["Inventory the current authoritative DNS records. Lower the TTL before cutover when the provider and timing permit it.", "Call `show_space_domains`. Read the current DNS and certificate state.", "If setup is required, use one bounded `execute` program. Search and describe the add or assign operation before calling it.", "Read the domain again in the same program after the mutation resumes.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Create the returned DNS records at the provider. Keep the previous origin available during propagation.", "Cut over only after the expected content and TLS state are ready."];
165
+ readonly verification: readonly ["Call `show_space_domains`. Confirm that DNS and certificate states are ready.", "Check more than one resolver. Confirm that the certificate matches the final hostname.", "Open the public HTTPS URL. Verify representative content before removing rollback records."];
166
166
  readonly recipe: {
167
167
  readonly slug: "recipes/migrate-dns";
168
168
  readonly tier: "reference";
@@ -175,10 +175,10 @@ export declare const SPACEFAST_SKILLS: readonly [{
175
175
  readonly whenToUse: "Use when a build, finalize, activation, or live serving step fails or stalls.";
176
176
  readonly keywords: readonly ["debug", "failed", "build", "logs", "diagnose", "stalled"];
177
177
  readonly runtimes: readonly ["local", "hosted"];
178
- readonly tools: readonly ["execute"];
178
+ readonly tools: readonly ["show_space_deployments", "execute", "publish", "operation_status"];
179
179
  readonly docs: readonly ["troubleshooting"];
180
- readonly instructions: readonly ["Use `execute` to find and call the catalog diagnostics operation for the space and optional version. Read its ranked findings, locations, error codes, fix hints, and docs links instead of guessing from a generic status.", "Use the catalog `build_logs` operation for publish/finalize detail, runtime-log operations for serving errors, and version operations to compare with the last ready version.", "Apply the smallest fix tied to the evidence, rebuild, and publish again. Follow the problem document's `type` URL for any referenced error code."];
181
- readonly verification: readonly ["Re-run the relevant diagnostics or status operation through `execute` and confirm the new version reaches the intended live state.", "Open the affected live path and verify the concrete failure no longer reproduces."];
180
+ readonly instructions: readonly ["Call `show_space_deployments`. Read the failed version, build state, stable error code, and diagnostics.", "If more detail is required, use one bounded `execute` program. Read only the required build logs or version data.", "Apply the smallest fix supported by the evidence. Run the real build.", "Call `publish` once with the fixed output.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
181
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the new version is current and ready.", "Open the affected live path. Verify that the concrete failure does not occur."];
182
182
  readonly prompt: true;
183
183
  }, {
184
184
  readonly name: "manage-access";
@@ -187,23 +187,23 @@ export declare const SPACEFAST_SKILLS: readonly [{
187
187
  readonly whenToUse: "Use when a space or path must be made public, team-only, or shared with specific people or machines.";
188
188
  readonly keywords: readonly ["access", "private", "public", "people", "links", "grant", "share"];
189
189
  readonly runtimes: readonly ["local", "hosted"];
190
- readonly tools: readonly ["execute", "whoami"];
190
+ readonly tools: readonly ["execute", "resume_execution"];
191
191
  readonly docs: readonly ["access-control"];
192
- readonly instructions: readonly ["Inspect current Grants with `sf share` or the catalog `grants_list` operation and identify one explicit access intent. Anonymous spaces start Private.", "Apply the narrowest suitable Public or Team Grant, People invitation, scoped Link/password, or machine/external-identity Grant. Keep resource scopes explicit.", "Show newly created Link or machine secrets only to the requesting user. Never put credentials, claim credentials, or API keys in logs or committed files."];
193
- readonly verification: readonly ["Use `sf share check --as public --path /docs` or the catalog `grants_check` operation for a representative request.", "Test a new Link in the intended signed-out or recipient context and confirm unrelated resources remain inaccessible."];
192
+ readonly instructions: readonly ["Use one bounded `execute` program. Search and describe the access operations before calling them.", "Read current access. Apply the narrowest change for one explicit access intent. Read the resulting access state.", "Run the matching access check in the same program after the mutation resumes.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Show new Link or machine secrets only to the requesting user. Never store them in logs or committed files."];
193
+ readonly verification: readonly ["Confirm that the access check permits the intended actor and path.", "Test a new Link in the intended signed-out context. Confirm that unrelated resources stay inaccessible."];
194
194
  readonly prompt: true;
195
195
  }];
196
196
  export declare const SPACEFAST_PROMPT_SKILLS: ({
197
197
  readonly name: "create-and-publish-site";
198
198
  readonly title: "Create and publish a polished website";
199
- readonly description: "Turn a brief into a responsive website, review the result, publish it to Spacefast, and verify the live version.";
200
- readonly whenToUse: "Use when the user wants an agent to design, build, improve, or launch a new website rather than only upload an existing build.";
199
+ readonly description: "Build a responsive website from a brief. Publish it and verify the live version.";
200
+ readonly whenToUse: "Use when the user wants a new website built, improved, or launched.";
201
201
  readonly keywords: readonly ["create", "website", "design", "build", "responsive", "launch", "publish"];
202
202
  readonly runtimes: readonly ["local", "hosted"];
203
- readonly tools: readonly ["publish", "execute"];
203
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments"];
204
204
  readonly docs: readonly ["quickstart", "publishing"];
205
- readonly instructions: readonly ["Clarify the audience, goal, required content, brand constraints, and desired call to action. If the visual direction is open, propose two or three distinct directions and choose one with the user.", "Inspect the existing workspace before editing. Reuse its framework, package manager, components, assets, and build conventions when they are sound.", "Build a focused, accessible experience with a clear hierarchy, real content, responsive layouts, useful interaction states, and no placeholder copy. Keep the main path simple and put secondary detail behind progressive disclosure.", "Run the real build and inspect the result at mobile and desktop widths. Fix overflow, illegible contrast, broken links, missing assets, keyboard traps, and avoidable layout shift.", "Review the workspace diff and summarize material design or content judgments before publishing. Never include API keys, claim credentials, upload credentials, or local auth state in the artifact.", "Publish the built output with `publish`. Present Open as the reusable access link and Claim as the one-time ownership link. Treat live and immutable-version URLs as receipt metadata, not extra actions."];
206
- readonly verification: readonly ["Call `status` after publishing and confirm the intended version is live; use `diagnose` if serving is stalled or failed.", "Open the live URL and verify the primary page, navigation, assets, responsive layout, and main call to action before claiming success."];
205
+ readonly instructions: readonly ["Use the user's brief. Infer optional design choices from the content and workspace.", "Ask a question only when a missing required value blocks safe work.", "Inspect the workspace. Reuse its framework, package manager, components, assets, and build commands when suitable.", "Build an accessible site with real content, responsive layouts, clear hierarchy, and useful interaction states.", "Run the real build. Check mobile and desktop layouts, links, assets, keyboard use, contrast, and layout stability.", "Review the final diff. Remove secrets and local authentication data from the artifact.", "Call `publish` once with the built output. Return useful access, live, and version URLs from the receipt. If the publish is anonymous, point the user to the claim action in the publish card and state its expiry.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
206
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the intended version is ready and current.", "If the deployment failed or stalled, report its stable error code and actionable diagnostics.", "Open the live URL. Verify the main page, navigation, assets, responsive layout, and primary call to action."];
207
207
  readonly runtimeNotes: {
208
208
  readonly local: "On-Device can work directly inside the configured local workspace root and publish a local build path.";
209
209
  readonly hosted: "Hosted has no filesystem. Generate small files in the client and publish them inline, or use catalog manifest and import operations for larger artifacts.";
@@ -221,10 +221,10 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
221
221
  readonly whenToUse: "Use when the artifact already exists and the user wants it published or updated.";
222
222
  readonly keywords: readonly ["publish", "deploy", "live", "verify", "version", "claim"];
223
223
  readonly runtimes: readonly ["local", "hosted"];
224
- readonly tools: readonly ["publish", "status", "diagnose"];
224
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments"];
225
225
  readonly docs: readonly ["publishing", "workflow/publish-receipt", "workflow/secret-handling"];
226
- readonly instructions: readonly ["Identify the actual publish root or build output. Run the real build first when the source tree is not itself the artifact to publish.", "Publish with `publish`. For an anonymous On-Device publish, keep the claim credential in local custody and return only the claim URL and expiry; never expose or ask the user to paste the raw token.", "Report the bare Live URL, private Access URL when present, immutable Version URL when present, anonymous Claim URL and expiry when present, plus actionable diagnostics."];
227
- readonly verification: readonly ["Call `status` and confirm the intended version is live. Use `diagnose` for a failed or stalled publish.", "Open the live URL and verify representative content and assets rather than treating a successful upload or health check as serving proof."];
226
+ readonly instructions: readonly ["Identify the actual publish root or build output. Run the real build first when the source tree is not the artifact.", "Call `publish` once. Keep anonymous claim credentials in local custody.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop.", "Return the live, access, and version URLs that are present. For an anonymous publish, state the claim expiry and point the user to the claim action in the publish card.", "Never expose a raw claim credential. Never ask the user to paste one."];
227
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the intended version is ready and current.", "Report the stable error code and actionable diagnostics when the deployment failed or stalled.", "Open the live URL. Verify representative content and assets before reporting success."];
228
228
  readonly runtimeNotes: {
229
229
  readonly local: "Publish a bounded local path; locally custodied claim credentials are reused automatically.";
230
230
  readonly hosted: "Publish inline files, or use catalog manifest and import operations for larger artifacts. Hosted has no filesystem.";
@@ -233,7 +233,7 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
233
233
  readonly recipe: {
234
234
  readonly slug: "recipes/agent-publish";
235
235
  readonly tier: "full";
236
- readonly url: `${string}/publishing/anonymous`;
236
+ readonly url: `${string}/publish/anonymous`;
237
237
  };
238
238
  } | {
239
239
  readonly name: "ci-github-actions";
@@ -242,15 +242,15 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
242
242
  readonly whenToUse: "Use when pushes or manual workflow runs should publish automatically from GitHub.";
243
243
  readonly keywords: readonly ["github", "actions", "ci", "push", "automatic", "workflow"];
244
244
  readonly runtimes: readonly ["local", "hosted"];
245
- readonly tools: readonly ["execute"];
245
+ readonly tools: readonly [];
246
246
  readonly docs: readonly ["builds", "publishing", "workflow/secret-handling"];
247
- readonly instructions: readonly ["Inspect the repository's package manager, lockfile, build command, runtime version, output directory, and existing workflows before writing YAML.", "Create a least-privilege workflow triggered by the intended branch and `workflow_dispatch`: check out the repository, install with the locked dependency command, build, and run `npx -y spacefast@<pinned-version> publish <output> --json`.", "Store the credential as a masked `SPACEFAST_TOKEN` repository or environment secret. Never echo it or upload generated auth files, claim credentials, or upload credentials as artifacts.", "Use the repository's real package manager and output directory; do not copy a generic npm/dist example over a Bun, pnpm, yarn, or custom build."];
247
+ readonly instructions: readonly ["Inspect the package manager, lockfile, build command, runtime version, output directory, and existing workflows.", "Create one least-privilege workflow for the intended branch and `workflow_dispatch`.", "Check out the repository.", "Install dependencies with the locked command.", "Run the real build.", "Run `npx -y spacefast@<pinned-version> publish <output> --json` with the actual output directory.", "Store the credential as a masked `SPACEFAST_TOKEN` repository or environment secret.", "Never echo credentials. Never upload authentication files or credentials as artifacts.", "Use the repository's real package manager and output directory.", "Do not replace custom build steps with a generic npm/dist example."];
248
248
  readonly verification: readonly ["Validate the workflow syntax and run it on an explicit test branch or manual dispatch.", "Inspect the publish receipt and live URL; a green build step alone is not serving proof."];
249
249
  readonly prompt: true;
250
250
  readonly recipe: {
251
251
  readonly slug: "recipes/github-deploys";
252
252
  readonly tier: "full";
253
- readonly url: `${string}/publishing/git`;
253
+ readonly url: `${string}/publish/git`;
254
254
  };
255
255
  } | {
256
256
  readonly name: "preview-channels";
@@ -259,26 +259,26 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
259
259
  readonly whenToUse: "Use when reviewers need a realistic preview before a change goes live.";
260
260
  readonly keywords: readonly ["preview", "channel", "branch", "pull request", "review", "private"];
261
261
  readonly runtimes: readonly ["local", "hosted"];
262
- readonly tools: readonly ["publish", "status", "execute"];
262
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments", "execute", "resume_execution"];
263
263
  readonly docs: readonly ["builds", "access-control"];
264
- readonly instructions: readonly ["Publish the branch through a connected repository or to an explicit non-production channel so the live production channel is unchanged.", "Keep the preview private by default. Use an Open URL for the owner's browser or create the narrowest scoped Link needed for reviewers.", "Label the preview with the branch, change, or pull request it represents and report what is intentionally out of scope."];
265
- readonly verification: readonly ["Confirm the preview serves the expected version and production still points at its previous version.", "Test the reviewer link in a signed-out context and revoke it when review is complete."];
264
+ readonly instructions: readonly ["Call `publish` once for an explicit non-production space or channel. Do not change the production target.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop.", "Keep the preview private unless the user requests sharing.", "For reviewer access, use one bounded `execute` program. Read current access, create the narrowest Link, then read it again.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Label the preview with its branch, change, or pull request. Report what is out of scope."];
265
+ readonly verification: readonly ["Call `show_space_deployments` for each affected Space. Confirm that the preview changed. Confirm that production did not change.", "Test the reviewer Link in a signed-out context. Report its scope and expiry."];
266
266
  readonly recipe: {
267
267
  readonly slug: "recipes/preview-channels";
268
268
  readonly tier: "full";
269
- readonly url: `${string}/publishing/git`;
269
+ readonly url: `${string}/publish/git`;
270
270
  };
271
271
  } | {
272
272
  readonly name: "claim-flow";
273
273
  readonly title: "Claim an anonymous space";
274
- readonly description: "Attach an anonymous space to an account or team before expiry while keeping every claim credential in server or local custody.";
275
- readonly whenToUse: "Use after an anonymous publish returns a claim URL and expiry.";
274
+ readonly description: "Attach an anonymous space to an account or team before expiry. Keep claim credentials in server or local custody.";
275
+ readonly whenToUse: "Use after an anonymous publish returns a claim action and expiry.";
276
276
  readonly keywords: readonly ["claim", "anonymous", "ownership", "team", "continuation", "credential"];
277
277
  readonly runtimes: readonly ["local", "hosted"];
278
- readonly tools: readonly ["execute", "publish"];
278
+ readonly tools: readonly ["publish", "operation_status", "execute", "resume_execution"];
279
279
  readonly docs: readonly ["anonymous-publish", "workflow/continue-after-claim", "workflow/secret-handling"];
280
- readonly instructions: readonly ["Return the claim URL and expiry to the user, never the raw claim credential. On-Device stores that credential in `.spacefast/state.json` and reuses it without returning it to the model.", "When authenticated On-Device credentials are available, use the catalog `claim` operation with only `teamId` and the expected `spaceId`; otherwise let the user open the claim URL in their browser.", "Publish again from On-Device after the browser claim. `publish` automatically exchanges the locally held claim credential once, persists the durable space-scoped credential, and retries without exposing either secret."];
281
- readonly verification: readonly ["Confirm the space no longer has a claim expiry and appears under the intended account or team.", "Publish again from the same local root or inspect the space through `execute` to verify durable access works without asking for a raw token."];
280
+ readonly instructions: readonly ["Point the user to the claim action in the publish card and state its expiry. Never copy the claim credential into model text.", "When account credentials are available, use one bounded `execute` program. Search and describe the claim operation before calling it.", "Pass only the required team ID and expected space ID.", "After the claim resumes, read the space in the same program. Return its owner and claim state.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Otherwise, ask the user to use the claim action in the publish card.", "After a browser claim, call `publish` again from On-Device. It exchanges the locally held credential without exposing it.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
281
+ readonly verification: readonly ["Confirm that the space has no claim expiry. Confirm that it belongs to the intended account or team.", "Confirm that the republish uses durable access without a raw credential."];
282
282
  readonly prompt: true;
283
283
  } | {
284
284
  readonly name: "rollback-safely";
@@ -287,10 +287,10 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
287
287
  readonly whenToUse: "Use when the current live version is broken and a prior healthy version is known or discoverable.";
288
288
  readonly keywords: readonly ["rollback", "revert", "version", "incident", "restore"];
289
289
  readonly runtimes: readonly ["local", "hosted"];
290
- readonly tools: readonly ["status", "rollback", "execute", "diagnose"];
290
+ readonly tools: readonly ["show_space_deployments", "execute", "resume_execution"];
291
291
  readonly docs: readonly ["versions-and-rollback"];
292
- readonly instructions: readonly ["Inspect recent immutable versions and current status. Compare the current live version with the candidate using the catalog `versions` and `diff` operations.", "Call `rollback` with the selected `versionId`. Rollback is additive and keeps later immutable versions available.", "If promotion returns an operation that is still settling, poll the catalog `operation_status` operation until it is done instead of assuming success."];
293
- readonly verification: readonly ["Call `status` and confirm the live pointer references the selected version.", "Open the live URL and verify the failing path or behavior is restored; use `diagnose` if it is not."];
292
+ readonly instructions: readonly ["Call `show_space_deployments`. Select a known-good ready version that is older than the current version.", "Use one bounded `execute` program. Search and describe the version promotion operation before calling it.", "Read the live pointer, promote the selected version, then read the pointer again in the same program.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program."];
293
+ readonly verification: readonly ["Call `show_space_deployments`. Confirm that the selected version is current and ready.", "Open the live URL. Verify that the failing path or behavior works again."];
294
294
  readonly prompt: true;
295
295
  } | {
296
296
  readonly name: "set-up-custom-domain";
@@ -299,10 +299,10 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
299
299
  readonly whenToUse: "Use when the user owns a domain they want a Spacefast space to serve.";
300
300
  readonly keywords: readonly ["domain", "dns", "tls", "https", "cname", "custom"];
301
301
  readonly runtimes: readonly ["local", "hosted"];
302
- readonly tools: readonly ["execute"];
302
+ readonly tools: readonly ["show_space_domains", "execute", "resume_execution"];
303
303
  readonly docs: readonly ["custom-domains", "recipes/migrate-dns"];
304
- readonly instructions: readonly ["Add the domain with `sf domains add <domain>` or catalog operation `domains_add`; preserve the exact record values Spacefast returns.", "Give the user those DNS records to create at their provider. Do not claim this MCP changed third-party DNS unless it actually has an authorized provider integration.", "Keep the existing production hostname available during the cutover and avoid deleting old records until the new path is proven."];
305
- readonly verification: readonly ["Run `sf domains check` or catalog operation `domains_check` until DNS and certificate state are ready.", "Open the final custom-domain HTTPS URL and verify representative content before reporting it live."];
304
+ readonly instructions: readonly ["Call `show_space_domains`. Read the current domain, DNS, and certificate state.", "If setup is required, use one bounded `execute` program. Search and describe the add or assign operation before calling it.", "Read the domain again in the same program after the mutation resumes.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Return the exact DNS records from Spacefast. Do not claim that Spacefast changed third-party DNS.", "Keep the existing production hostname until the custom domain is ready."];
305
+ readonly verification: readonly ["After the external DNS change, call `show_space_domains`. Report the current verification state.", "Open the HTTPS URL only after DNS and certificate states are ready. Verify representative content."];
306
306
  readonly prompt: true;
307
307
  readonly recipe: {
308
308
  readonly slug: "recipes/custom-domain";
@@ -316,10 +316,10 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
316
316
  readonly whenToUse: "Use for moved pages, canonical host paths, and intentional permanent or temporary redirects.";
317
317
  readonly keywords: readonly ["redirect", "rewrite", "routing", "301", "302", "path"];
318
318
  readonly runtimes: readonly ["local", "hosted"];
319
- readonly tools: readonly ["publish", "execute"];
319
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments"];
320
320
  readonly docs: readonly ["redirects"];
321
- readonly instructions: readonly ["Inspect existing routing rules, then add the smallest non-conflicting rules to `_redirects` at the publish root.", "Choose temporary or permanent status deliberately, preserve path/query semantics where required, and avoid redirect loops or rules that shadow real assets.", "Publish the redirect file as part of the same immutable version as the related content change."];
322
- readonly verification: readonly ["Request representative old and new paths and confirm the exact status and Location header.", "Verify the final target serves successfully and unrelated assets are not redirected."];
321
+ readonly instructions: readonly ["Inspect existing routing rules, then add the smallest non-conflicting rules to `_redirects` at the publish root.", "Choose a temporary or permanent status deliberately. Preserve required path and query behavior.", "Avoid redirect loops and rules that hide real assets.", "Call `publish` once. Include the redirect file and related content in the same immutable version.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
322
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the new version is current and ready.", "Request representative old and new paths and confirm the exact status and Location header.", "Verify the final target serves successfully and unrelated assets are not redirected."];
323
323
  readonly recipe: {
324
324
  readonly slug: "recipes/redirects";
325
325
  readonly tier: "reference";
@@ -332,10 +332,10 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
332
332
  readonly whenToUse: "Use when an existing production domain must move to Spacefast.";
333
333
  readonly keywords: readonly ["dns", "migrate", "cutover", "domain", "downtime", "certificate"];
334
334
  readonly runtimes: readonly ["local", "hosted"];
335
- readonly tools: readonly ["execute"];
335
+ readonly tools: readonly ["show_space_domains", "execute", "resume_execution"];
336
336
  readonly docs: readonly ["custom-domains"];
337
- readonly instructions: readonly ["Inventory the current authoritative DNS records and lower TTL ahead of the cutover when the provider and timing allow it.", "Add the domain to Spacefast and pre-stage every record it returns while preserving a working rollback path.", "Cut over only after the Spacefast endpoint, expected content, and TLS readiness can be validated. Keep the previous origin available until propagation is complete."];
338
- readonly verification: readonly ["Check resolution from more than one resolver and confirm the certificate matches the final hostname.", "Open the public HTTPS URL, verify representative content, and monitor for old-origin traffic before removing rollback records."];
337
+ readonly instructions: readonly ["Inventory the current authoritative DNS records. Lower the TTL before cutover when the provider and timing permit it.", "Call `show_space_domains`. Read the current DNS and certificate state.", "If setup is required, use one bounded `execute` program. Search and describe the add or assign operation before calling it.", "Read the domain again in the same program after the mutation resumes.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Create the returned DNS records at the provider. Keep the previous origin available during propagation.", "Cut over only after the expected content and TLS state are ready."];
338
+ readonly verification: readonly ["Call `show_space_domains`. Confirm that DNS and certificate states are ready.", "Check more than one resolver. Confirm that the certificate matches the final hostname.", "Open the public HTTPS URL. Verify representative content before removing rollback records."];
339
339
  readonly recipe: {
340
340
  readonly slug: "recipes/migrate-dns";
341
341
  readonly tier: "reference";
@@ -348,10 +348,10 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
348
348
  readonly whenToUse: "Use when a build, finalize, activation, or live serving step fails or stalls.";
349
349
  readonly keywords: readonly ["debug", "failed", "build", "logs", "diagnose", "stalled"];
350
350
  readonly runtimes: readonly ["local", "hosted"];
351
- readonly tools: readonly ["execute"];
351
+ readonly tools: readonly ["show_space_deployments", "execute", "publish", "operation_status"];
352
352
  readonly docs: readonly ["troubleshooting"];
353
- readonly instructions: readonly ["Use `execute` to find and call the catalog diagnostics operation for the space and optional version. Read its ranked findings, locations, error codes, fix hints, and docs links instead of guessing from a generic status.", "Use the catalog `build_logs` operation for publish/finalize detail, runtime-log operations for serving errors, and version operations to compare with the last ready version.", "Apply the smallest fix tied to the evidence, rebuild, and publish again. Follow the problem document's `type` URL for any referenced error code."];
354
- readonly verification: readonly ["Re-run the relevant diagnostics or status operation through `execute` and confirm the new version reaches the intended live state.", "Open the affected live path and verify the concrete failure no longer reproduces."];
353
+ readonly instructions: readonly ["Call `show_space_deployments`. Read the failed version, build state, stable error code, and diagnostics.", "If more detail is required, use one bounded `execute` program. Read only the required build logs or version data.", "Apply the smallest fix supported by the evidence. Run the real build.", "Call `publish` once with the fixed output.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
354
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the new version is current and ready.", "Open the affected live path. Verify that the concrete failure does not occur."];
355
355
  readonly prompt: true;
356
356
  } | {
357
357
  readonly name: "manage-access";
@@ -360,23 +360,23 @@ export declare const SPACEFAST_PROMPT_SKILLS: ({
360
360
  readonly whenToUse: "Use when a space or path must be made public, team-only, or shared with specific people or machines.";
361
361
  readonly keywords: readonly ["access", "private", "public", "people", "links", "grant", "share"];
362
362
  readonly runtimes: readonly ["local", "hosted"];
363
- readonly tools: readonly ["execute", "whoami"];
363
+ readonly tools: readonly ["execute", "resume_execution"];
364
364
  readonly docs: readonly ["access-control"];
365
- readonly instructions: readonly ["Inspect current Grants with `sf share` or the catalog `grants_list` operation and identify one explicit access intent. Anonymous spaces start Private.", "Apply the narrowest suitable Public or Team Grant, People invitation, scoped Link/password, or machine/external-identity Grant. Keep resource scopes explicit.", "Show newly created Link or machine secrets only to the requesting user. Never put credentials, claim credentials, or API keys in logs or committed files."];
366
- readonly verification: readonly ["Use `sf share check --as public --path /docs` or the catalog `grants_check` operation for a representative request.", "Test a new Link in the intended signed-out or recipient context and confirm unrelated resources remain inaccessible."];
365
+ readonly instructions: readonly ["Use one bounded `execute` program. Search and describe the access operations before calling them.", "Read current access. Apply the narrowest change for one explicit access intent. Read the resulting access state.", "Run the matching access check in the same program after the mutation resumes.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Show new Link or machine secrets only to the requesting user. Never store them in logs or committed files."];
366
+ readonly verification: readonly ["Confirm that the access check permits the intended actor and path.", "Test a new Link in the intended signed-out context. Confirm that unrelated resources stay inaccessible."];
367
367
  readonly prompt: true;
368
368
  })[];
369
369
  export declare const SPACEFAST_RECIPE_SKILLS: (({
370
370
  readonly name: "create-and-publish-site";
371
371
  readonly title: "Create and publish a polished website";
372
- readonly description: "Turn a brief into a responsive website, review the result, publish it to Spacefast, and verify the live version.";
373
- readonly whenToUse: "Use when the user wants an agent to design, build, improve, or launch a new website rather than only upload an existing build.";
372
+ readonly description: "Build a responsive website from a brief. Publish it and verify the live version.";
373
+ readonly whenToUse: "Use when the user wants a new website built, improved, or launched.";
374
374
  readonly keywords: readonly ["create", "website", "design", "build", "responsive", "launch", "publish"];
375
375
  readonly runtimes: readonly ["local", "hosted"];
376
- readonly tools: readonly ["publish", "execute"];
376
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments"];
377
377
  readonly docs: readonly ["quickstart", "publishing"];
378
- readonly instructions: readonly ["Clarify the audience, goal, required content, brand constraints, and desired call to action. If the visual direction is open, propose two or three distinct directions and choose one with the user.", "Inspect the existing workspace before editing. Reuse its framework, package manager, components, assets, and build conventions when they are sound.", "Build a focused, accessible experience with a clear hierarchy, real content, responsive layouts, useful interaction states, and no placeholder copy. Keep the main path simple and put secondary detail behind progressive disclosure.", "Run the real build and inspect the result at mobile and desktop widths. Fix overflow, illegible contrast, broken links, missing assets, keyboard traps, and avoidable layout shift.", "Review the workspace diff and summarize material design or content judgments before publishing. Never include API keys, claim credentials, upload credentials, or local auth state in the artifact.", "Publish the built output with `publish`. Present Open as the reusable access link and Claim as the one-time ownership link. Treat live and immutable-version URLs as receipt metadata, not extra actions."];
379
- readonly verification: readonly ["Call `status` after publishing and confirm the intended version is live; use `diagnose` if serving is stalled or failed.", "Open the live URL and verify the primary page, navigation, assets, responsive layout, and main call to action before claiming success."];
378
+ readonly instructions: readonly ["Use the user's brief. Infer optional design choices from the content and workspace.", "Ask a question only when a missing required value blocks safe work.", "Inspect the workspace. Reuse its framework, package manager, components, assets, and build commands when suitable.", "Build an accessible site with real content, responsive layouts, clear hierarchy, and useful interaction states.", "Run the real build. Check mobile and desktop layouts, links, assets, keyboard use, contrast, and layout stability.", "Review the final diff. Remove secrets and local authentication data from the artifact.", "Call `publish` once with the built output. Return useful access, live, and version URLs from the receipt. If the publish is anonymous, point the user to the claim action in the publish card and state its expiry.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
379
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the intended version is ready and current.", "If the deployment failed or stalled, report its stable error code and actionable diagnostics.", "Open the live URL. Verify the main page, navigation, assets, responsive layout, and primary call to action."];
380
380
  readonly runtimeNotes: {
381
381
  readonly local: "On-Device can work directly inside the configured local workspace root and publish a local build path.";
382
382
  readonly hosted: "Hosted has no filesystem. Generate small files in the client and publish them inline, or use catalog manifest and import operations for larger artifacts.";
@@ -394,10 +394,10 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
394
394
  readonly whenToUse: "Use when the artifact already exists and the user wants it published or updated.";
395
395
  readonly keywords: readonly ["publish", "deploy", "live", "verify", "version", "claim"];
396
396
  readonly runtimes: readonly ["local", "hosted"];
397
- readonly tools: readonly ["publish", "status", "diagnose"];
397
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments"];
398
398
  readonly docs: readonly ["publishing", "workflow/publish-receipt", "workflow/secret-handling"];
399
- readonly instructions: readonly ["Identify the actual publish root or build output. Run the real build first when the source tree is not itself the artifact to publish.", "Publish with `publish`. For an anonymous On-Device publish, keep the claim credential in local custody and return only the claim URL and expiry; never expose or ask the user to paste the raw token.", "Report the bare Live URL, private Access URL when present, immutable Version URL when present, anonymous Claim URL and expiry when present, plus actionable diagnostics."];
400
- readonly verification: readonly ["Call `status` and confirm the intended version is live. Use `diagnose` for a failed or stalled publish.", "Open the live URL and verify representative content and assets rather than treating a successful upload or health check as serving proof."];
399
+ readonly instructions: readonly ["Identify the actual publish root or build output. Run the real build first when the source tree is not the artifact.", "Call `publish` once. Keep anonymous claim credentials in local custody.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop.", "Return the live, access, and version URLs that are present. For an anonymous publish, state the claim expiry and point the user to the claim action in the publish card.", "Never expose a raw claim credential. Never ask the user to paste one."];
400
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the intended version is ready and current.", "Report the stable error code and actionable diagnostics when the deployment failed or stalled.", "Open the live URL. Verify representative content and assets before reporting success."];
401
401
  readonly runtimeNotes: {
402
402
  readonly local: "Publish a bounded local path; locally custodied claim credentials are reused automatically.";
403
403
  readonly hosted: "Publish inline files, or use catalog manifest and import operations for larger artifacts. Hosted has no filesystem.";
@@ -406,7 +406,7 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
406
406
  readonly recipe: {
407
407
  readonly slug: "recipes/agent-publish";
408
408
  readonly tier: "full";
409
- readonly url: `${string}/publishing/anonymous`;
409
+ readonly url: `${string}/publish/anonymous`;
410
410
  };
411
411
  } | {
412
412
  readonly name: "ci-github-actions";
@@ -415,15 +415,15 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
415
415
  readonly whenToUse: "Use when pushes or manual workflow runs should publish automatically from GitHub.";
416
416
  readonly keywords: readonly ["github", "actions", "ci", "push", "automatic", "workflow"];
417
417
  readonly runtimes: readonly ["local", "hosted"];
418
- readonly tools: readonly ["execute"];
418
+ readonly tools: readonly [];
419
419
  readonly docs: readonly ["builds", "publishing", "workflow/secret-handling"];
420
- readonly instructions: readonly ["Inspect the repository's package manager, lockfile, build command, runtime version, output directory, and existing workflows before writing YAML.", "Create a least-privilege workflow triggered by the intended branch and `workflow_dispatch`: check out the repository, install with the locked dependency command, build, and run `npx -y spacefast@<pinned-version> publish <output> --json`.", "Store the credential as a masked `SPACEFAST_TOKEN` repository or environment secret. Never echo it or upload generated auth files, claim credentials, or upload credentials as artifacts.", "Use the repository's real package manager and output directory; do not copy a generic npm/dist example over a Bun, pnpm, yarn, or custom build."];
420
+ readonly instructions: readonly ["Inspect the package manager, lockfile, build command, runtime version, output directory, and existing workflows.", "Create one least-privilege workflow for the intended branch and `workflow_dispatch`.", "Check out the repository.", "Install dependencies with the locked command.", "Run the real build.", "Run `npx -y spacefast@<pinned-version> publish <output> --json` with the actual output directory.", "Store the credential as a masked `SPACEFAST_TOKEN` repository or environment secret.", "Never echo credentials. Never upload authentication files or credentials as artifacts.", "Use the repository's real package manager and output directory.", "Do not replace custom build steps with a generic npm/dist example."];
421
421
  readonly verification: readonly ["Validate the workflow syntax and run it on an explicit test branch or manual dispatch.", "Inspect the publish receipt and live URL; a green build step alone is not serving proof."];
422
422
  readonly prompt: true;
423
423
  readonly recipe: {
424
424
  readonly slug: "recipes/github-deploys";
425
425
  readonly tier: "full";
426
- readonly url: `${string}/publishing/git`;
426
+ readonly url: `${string}/publish/git`;
427
427
  };
428
428
  } | {
429
429
  readonly name: "preview-channels";
@@ -432,26 +432,26 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
432
432
  readonly whenToUse: "Use when reviewers need a realistic preview before a change goes live.";
433
433
  readonly keywords: readonly ["preview", "channel", "branch", "pull request", "review", "private"];
434
434
  readonly runtimes: readonly ["local", "hosted"];
435
- readonly tools: readonly ["publish", "status", "execute"];
435
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments", "execute", "resume_execution"];
436
436
  readonly docs: readonly ["builds", "access-control"];
437
- readonly instructions: readonly ["Publish the branch through a connected repository or to an explicit non-production channel so the live production channel is unchanged.", "Keep the preview private by default. Use an Open URL for the owner's browser or create the narrowest scoped Link needed for reviewers.", "Label the preview with the branch, change, or pull request it represents and report what is intentionally out of scope."];
438
- readonly verification: readonly ["Confirm the preview serves the expected version and production still points at its previous version.", "Test the reviewer link in a signed-out context and revoke it when review is complete."];
437
+ readonly instructions: readonly ["Call `publish` once for an explicit non-production space or channel. Do not change the production target.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop.", "Keep the preview private unless the user requests sharing.", "For reviewer access, use one bounded `execute` program. Read current access, create the narrowest Link, then read it again.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Label the preview with its branch, change, or pull request. Report what is out of scope."];
438
+ readonly verification: readonly ["Call `show_space_deployments` for each affected Space. Confirm that the preview changed. Confirm that production did not change.", "Test the reviewer Link in a signed-out context. Report its scope and expiry."];
439
439
  readonly recipe: {
440
440
  readonly slug: "recipes/preview-channels";
441
441
  readonly tier: "full";
442
- readonly url: `${string}/publishing/git`;
442
+ readonly url: `${string}/publish/git`;
443
443
  };
444
444
  } | {
445
445
  readonly name: "claim-flow";
446
446
  readonly title: "Claim an anonymous space";
447
- readonly description: "Attach an anonymous space to an account or team before expiry while keeping every claim credential in server or local custody.";
448
- readonly whenToUse: "Use after an anonymous publish returns a claim URL and expiry.";
447
+ readonly description: "Attach an anonymous space to an account or team before expiry. Keep claim credentials in server or local custody.";
448
+ readonly whenToUse: "Use after an anonymous publish returns a claim action and expiry.";
449
449
  readonly keywords: readonly ["claim", "anonymous", "ownership", "team", "continuation", "credential"];
450
450
  readonly runtimes: readonly ["local", "hosted"];
451
- readonly tools: readonly ["execute", "publish"];
451
+ readonly tools: readonly ["publish", "operation_status", "execute", "resume_execution"];
452
452
  readonly docs: readonly ["anonymous-publish", "workflow/continue-after-claim", "workflow/secret-handling"];
453
- readonly instructions: readonly ["Return the claim URL and expiry to the user, never the raw claim credential. On-Device stores that credential in `.spacefast/state.json` and reuses it without returning it to the model.", "When authenticated On-Device credentials are available, use the catalog `claim` operation with only `teamId` and the expected `spaceId`; otherwise let the user open the claim URL in their browser.", "Publish again from On-Device after the browser claim. `publish` automatically exchanges the locally held claim credential once, persists the durable space-scoped credential, and retries without exposing either secret."];
454
- readonly verification: readonly ["Confirm the space no longer has a claim expiry and appears under the intended account or team.", "Publish again from the same local root or inspect the space through `execute` to verify durable access works without asking for a raw token."];
453
+ readonly instructions: readonly ["Point the user to the claim action in the publish card and state its expiry. Never copy the claim credential into model text.", "When account credentials are available, use one bounded `execute` program. Search and describe the claim operation before calling it.", "Pass only the required team ID and expected space ID.", "After the claim resumes, read the space in the same program. Return its owner and claim state.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Otherwise, ask the user to use the claim action in the publish card.", "After a browser claim, call `publish` again from On-Device. It exchanges the locally held credential without exposing it.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
454
+ readonly verification: readonly ["Confirm that the space has no claim expiry. Confirm that it belongs to the intended account or team.", "Confirm that the republish uses durable access without a raw credential."];
455
455
  readonly prompt: true;
456
456
  } | {
457
457
  readonly name: "rollback-safely";
@@ -460,10 +460,10 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
460
460
  readonly whenToUse: "Use when the current live version is broken and a prior healthy version is known or discoverable.";
461
461
  readonly keywords: readonly ["rollback", "revert", "version", "incident", "restore"];
462
462
  readonly runtimes: readonly ["local", "hosted"];
463
- readonly tools: readonly ["status", "rollback", "execute", "diagnose"];
463
+ readonly tools: readonly ["show_space_deployments", "execute", "resume_execution"];
464
464
  readonly docs: readonly ["versions-and-rollback"];
465
- readonly instructions: readonly ["Inspect recent immutable versions and current status. Compare the current live version with the candidate using the catalog `versions` and `diff` operations.", "Call `rollback` with the selected `versionId`. Rollback is additive and keeps later immutable versions available.", "If promotion returns an operation that is still settling, poll the catalog `operation_status` operation until it is done instead of assuming success."];
466
- readonly verification: readonly ["Call `status` and confirm the live pointer references the selected version.", "Open the live URL and verify the failing path or behavior is restored; use `diagnose` if it is not."];
465
+ readonly instructions: readonly ["Call `show_space_deployments`. Select a known-good ready version that is older than the current version.", "Use one bounded `execute` program. Search and describe the version promotion operation before calling it.", "Read the live pointer, promote the selected version, then read the pointer again in the same program.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program."];
466
+ readonly verification: readonly ["Call `show_space_deployments`. Confirm that the selected version is current and ready.", "Open the live URL. Verify that the failing path or behavior works again."];
467
467
  readonly prompt: true;
468
468
  } | {
469
469
  readonly name: "set-up-custom-domain";
@@ -472,10 +472,10 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
472
472
  readonly whenToUse: "Use when the user owns a domain they want a Spacefast space to serve.";
473
473
  readonly keywords: readonly ["domain", "dns", "tls", "https", "cname", "custom"];
474
474
  readonly runtimes: readonly ["local", "hosted"];
475
- readonly tools: readonly ["execute"];
475
+ readonly tools: readonly ["show_space_domains", "execute", "resume_execution"];
476
476
  readonly docs: readonly ["custom-domains", "recipes/migrate-dns"];
477
- readonly instructions: readonly ["Add the domain with `sf domains add <domain>` or catalog operation `domains_add`; preserve the exact record values Spacefast returns.", "Give the user those DNS records to create at their provider. Do not claim this MCP changed third-party DNS unless it actually has an authorized provider integration.", "Keep the existing production hostname available during the cutover and avoid deleting old records until the new path is proven."];
478
- readonly verification: readonly ["Run `sf domains check` or catalog operation `domains_check` until DNS and certificate state are ready.", "Open the final custom-domain HTTPS URL and verify representative content before reporting it live."];
477
+ readonly instructions: readonly ["Call `show_space_domains`. Read the current domain, DNS, and certificate state.", "If setup is required, use one bounded `execute` program. Search and describe the add or assign operation before calling it.", "Read the domain again in the same program after the mutation resumes.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Return the exact DNS records from Spacefast. Do not claim that Spacefast changed third-party DNS.", "Keep the existing production hostname until the custom domain is ready."];
478
+ readonly verification: readonly ["After the external DNS change, call `show_space_domains`. Report the current verification state.", "Open the HTTPS URL only after DNS and certificate states are ready. Verify representative content."];
479
479
  readonly prompt: true;
480
480
  readonly recipe: {
481
481
  readonly slug: "recipes/custom-domain";
@@ -489,10 +489,10 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
489
489
  readonly whenToUse: "Use for moved pages, canonical host paths, and intentional permanent or temporary redirects.";
490
490
  readonly keywords: readonly ["redirect", "rewrite", "routing", "301", "302", "path"];
491
491
  readonly runtimes: readonly ["local", "hosted"];
492
- readonly tools: readonly ["publish", "execute"];
492
+ readonly tools: readonly ["publish", "operation_status", "show_space_deployments"];
493
493
  readonly docs: readonly ["redirects"];
494
- readonly instructions: readonly ["Inspect existing routing rules, then add the smallest non-conflicting rules to `_redirects` at the publish root.", "Choose temporary or permanent status deliberately, preserve path/query semantics where required, and avoid redirect loops or rules that shadow real assets.", "Publish the redirect file as part of the same immutable version as the related content change."];
495
- readonly verification: readonly ["Request representative old and new paths and confirm the exact status and Location header.", "Verify the final target serves successfully and unrelated assets are not redirected."];
494
+ readonly instructions: readonly ["Inspect existing routing rules, then add the smallest non-conflicting rules to `_redirects` at the publish root.", "Choose a temporary or permanent status deliberately. Preserve required path and query behavior.", "Avoid redirect loops and rules that hide real assets.", "Call `publish` once. Include the redirect file and related content in the same immutable version.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
495
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the new version is current and ready.", "Request representative old and new paths and confirm the exact status and Location header.", "Verify the final target serves successfully and unrelated assets are not redirected."];
496
496
  readonly recipe: {
497
497
  readonly slug: "recipes/redirects";
498
498
  readonly tier: "reference";
@@ -505,10 +505,10 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
505
505
  readonly whenToUse: "Use when an existing production domain must move to Spacefast.";
506
506
  readonly keywords: readonly ["dns", "migrate", "cutover", "domain", "downtime", "certificate"];
507
507
  readonly runtimes: readonly ["local", "hosted"];
508
- readonly tools: readonly ["execute"];
508
+ readonly tools: readonly ["show_space_domains", "execute", "resume_execution"];
509
509
  readonly docs: readonly ["custom-domains"];
510
- readonly instructions: readonly ["Inventory the current authoritative DNS records and lower TTL ahead of the cutover when the provider and timing allow it.", "Add the domain to Spacefast and pre-stage every record it returns while preserving a working rollback path.", "Cut over only after the Spacefast endpoint, expected content, and TLS readiness can be validated. Keep the previous origin available until propagation is complete."];
511
- readonly verification: readonly ["Check resolution from more than one resolver and confirm the certificate matches the final hostname.", "Open the public HTTPS URL, verify representative content, and monitor for old-origin traffic before removing rollback records."];
510
+ readonly instructions: readonly ["Inventory the current authoritative DNS records. Lower the TTL before cutover when the provider and timing permit it.", "Call `show_space_domains`. Read the current DNS and certificate state.", "If setup is required, use one bounded `execute` program. Search and describe the add or assign operation before calling it.", "Read the domain again in the same program after the mutation resumes.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Create the returned DNS records at the provider. Keep the previous origin available during propagation.", "Cut over only after the expected content and TLS state are ready."];
511
+ readonly verification: readonly ["Call `show_space_domains`. Confirm that DNS and certificate states are ready.", "Check more than one resolver. Confirm that the certificate matches the final hostname.", "Open the public HTTPS URL. Verify representative content before removing rollback records."];
512
512
  readonly recipe: {
513
513
  readonly slug: "recipes/migrate-dns";
514
514
  readonly tier: "reference";
@@ -521,10 +521,10 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
521
521
  readonly whenToUse: "Use when a build, finalize, activation, or live serving step fails or stalls.";
522
522
  readonly keywords: readonly ["debug", "failed", "build", "logs", "diagnose", "stalled"];
523
523
  readonly runtimes: readonly ["local", "hosted"];
524
- readonly tools: readonly ["execute"];
524
+ readonly tools: readonly ["show_space_deployments", "execute", "publish", "operation_status"];
525
525
  readonly docs: readonly ["troubleshooting"];
526
- readonly instructions: readonly ["Use `execute` to find and call the catalog diagnostics operation for the space and optional version. Read its ranked findings, locations, error codes, fix hints, and docs links instead of guessing from a generic status.", "Use the catalog `build_logs` operation for publish/finalize detail, runtime-log operations for serving errors, and version operations to compare with the last ready version.", "Apply the smallest fix tied to the evidence, rebuild, and publish again. Follow the problem document's `type` URL for any referenced error code."];
527
- readonly verification: readonly ["Re-run the relevant diagnostics or status operation through `execute` and confirm the new version reaches the intended live state.", "Open the affected live path and verify the concrete failure no longer reproduces."];
526
+ readonly instructions: readonly ["Call `show_space_deployments`. Read the failed version, build state, stable error code, and diagnostics.", "If more detail is required, use one bounded `execute` program. Read only the required build logs or version data.", "Apply the smallest fix supported by the evidence. Run the real build.", "Call `publish` once with the fixed output.", "If `publish.result.status` is `publishing`, call `operation_status` with `publish.result.job.poll.operationId`.", "Call `operation_status` again only while `operation_status.result.done` is false.", "Continue only when `operation_status.result.status` is `succeeded`.", "Report `failed` or `canceled` and stop."];
527
+ readonly verification: readonly ["Call `show_space_deployments` with `space: publish.result.receipt.space.id`. Confirm that the new version is current and ready.", "Open the affected live path. Verify that the concrete failure does not occur."];
528
528
  readonly prompt: true;
529
529
  } | {
530
530
  readonly name: "manage-access";
@@ -533,10 +533,10 @@ export declare const SPACEFAST_RECIPE_SKILLS: (({
533
533
  readonly whenToUse: "Use when a space or path must be made public, team-only, or shared with specific people or machines.";
534
534
  readonly keywords: readonly ["access", "private", "public", "people", "links", "grant", "share"];
535
535
  readonly runtimes: readonly ["local", "hosted"];
536
- readonly tools: readonly ["execute", "whoami"];
536
+ readonly tools: readonly ["execute", "resume_execution"];
537
537
  readonly docs: readonly ["access-control"];
538
- readonly instructions: readonly ["Inspect current Grants with `sf share` or the catalog `grants_list` operation and identify one explicit access intent. Anonymous spaces start Private.", "Apply the narrowest suitable Public or Team Grant, People invitation, scoped Link/password, or machine/external-identity Grant. Keep resource scopes explicit.", "Show newly created Link or machine secrets only to the requesting user. Never put credentials, claim credentials, or API keys in logs or committed files."];
539
- readonly verification: readonly ["Use `sf share check --as public --path /docs` or the catalog `grants_check` operation for a representative request.", "Test a new Link in the intended signed-out or recipient context and confirm unrelated resources remain inaccessible."];
538
+ readonly instructions: readonly ["Use one bounded `execute` program. Search and describe the access operations before calling them.", "Read current access. Apply the narrowest change for one explicit access intent. Read the resulting access state.", "Run the matching access check in the same program after the mutation resumes.", "If `execute` pauses, follow its `resumePrompt`. Then call `resume_execution` with the returned `executionId`.", "Do not start another `execute` program.", "Show new Link or machine secrets only to the requesting user. Never store them in logs or committed files."];
539
+ readonly verification: readonly ["Confirm that the access check permits the intended actor and path.", "Test a new Link in the intended signed-out context. Confirm that unrelated resources stay inaccessible."];
540
540
  readonly prompt: true;
541
541
  }) & {
542
542
  recipe: NonNullable<SpacefastSkillDefinition["recipe"]>;