@spacefast/common 0.0.24 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/brand-assets/LICENSE-Haskoy.txt +93 -0
  2. package/brand-assets/haskoy-latin-variable.woff2 +0 -0
  3. package/brand-assets/spacefast-favicon.svg +4 -4
  4. package/brand-assets/spacefast-sf-full-bleed.svg +3 -3
  5. package/brand-assets/spacefast-wordmark.svg +2 -4
  6. package/dist/agents/connect-targets.d.ts +6 -146
  7. package/dist/agents/connect-targets.js +63 -295
  8. package/dist/agents/private-key-oauth.d.ts +31 -2
  9. package/dist/agents/private-key-oauth.js +166 -92
  10. package/dist/agents/registry/core.d.ts +292 -0
  11. package/dist/agents/registry/core.js +1388 -0
  12. package/dist/agents/registry/deeplink-probes.d.ts +23 -0
  13. package/dist/agents/registry/deeplink-probes.js +18 -0
  14. package/dist/agents/registry/node.d.ts +56 -0
  15. package/dist/agents/registry/node.js +339 -0
  16. package/dist/brand-assets-build.js +3 -6
  17. package/dist/brand-assets.d.ts +5 -15
  18. package/dist/brand-assets.js +12 -14
  19. package/dist/brand.d.ts +17 -0
  20. package/dist/brand.js +24 -4
  21. package/dist/config/domains.d.ts +79 -12
  22. package/dist/config/domains.js +128 -29
  23. package/dist/config/index.js +1 -2
  24. package/dist/contracts/abuse.js +9 -24
  25. package/dist/contracts/access-profiles.d.ts +86 -0
  26. package/dist/contracts/access-profiles.js +89 -0
  27. package/dist/contracts/access.d.ts +24 -30
  28. package/dist/contracts/access.js +33 -64
  29. package/dist/contracts/activity.d.ts +18 -1
  30. package/dist/contracts/activity.js +72 -26
  31. package/dist/contracts/analytics.js +8 -10
  32. package/dist/contracts/api-keys.d.ts +77 -52
  33. package/dist/contracts/api-keys.js +44 -24
  34. package/dist/contracts/application-journal.d.ts +216 -0
  35. package/dist/contracts/application-journal.js +167 -0
  36. package/dist/contracts/auth.d.ts +90 -17
  37. package/dist/contracts/auth.js +86 -17
  38. package/dist/contracts/beta.d.ts +9 -4
  39. package/dist/contracts/beta.js +20 -16
  40. package/dist/contracts/billing.d.ts +2 -1
  41. package/dist/contracts/billing.js +37 -11
  42. package/dist/contracts/bootstrap.d.ts +791 -0
  43. package/dist/contracts/bootstrap.js +51 -0
  44. package/dist/contracts/builds.d.ts +209 -18
  45. package/dist/contracts/builds.js +93 -27
  46. package/dist/contracts/channels.d.ts +43 -0
  47. package/dist/contracts/channels.js +25 -9
  48. package/dist/contracts/cli.d.ts +7 -0
  49. package/dist/contracts/cli.js +6 -0
  50. package/dist/contracts/collab-public.d.ts +1 -1
  51. package/dist/contracts/collab-public.js +5 -8
  52. package/dist/contracts/comments.d.ts +44 -34
  53. package/dist/contracts/comments.js +107 -77
  54. package/dist/contracts/commerce.d.ts +165 -0
  55. package/dist/contracts/commerce.js +146 -0
  56. package/dist/contracts/common.d.ts +3 -3
  57. package/dist/contracts/common.js +20 -31
  58. package/dist/contracts/content-contract-verification.d.ts +521 -0
  59. package/dist/contracts/content-contract-verification.js +320 -0
  60. package/dist/contracts/content-platform-fixture.d.ts +1278 -0
  61. package/dist/contracts/content-platform-fixture.js +44 -0
  62. package/dist/contracts/content-program.d.ts +994 -0
  63. package/dist/contracts/content-program.js +658 -0
  64. package/dist/contracts/content-sync.d.ts +290 -0
  65. package/dist/contracts/content-sync.js +167 -0
  66. package/dist/contracts/content.d.ts +432 -0
  67. package/dist/contracts/content.js +303 -0
  68. package/dist/contracts/continuation.d.ts +17 -1
  69. package/dist/contracts/continuation.js +23 -23
  70. package/dist/contracts/countries.js +3 -4
  71. package/dist/contracts/crons.d.ts +52 -0
  72. package/dist/contracts/crons.js +60 -0
  73. package/dist/contracts/dashboard-prefs.d.ts +56 -0
  74. package/dist/contracts/dashboard-prefs.js +51 -0
  75. package/dist/contracts/device-auth.d.ts +234 -37
  76. package/dist/contracts/device-auth.js +267 -53
  77. package/dist/contracts/docs.d.ts +1 -5
  78. package/dist/contracts/docs.js +7 -15
  79. package/dist/contracts/domains.d.ts +501 -93
  80. package/dist/contracts/domains.js +193 -55
  81. package/dist/contracts/email-preferences.d.ts +3 -3
  82. package/dist/contracts/email-preferences.js +6 -7
  83. package/dist/contracts/enums.d.ts +27 -26
  84. package/dist/contracts/enums.js +68 -61
  85. package/dist/contracts/error-code-meta.d.ts +283 -7
  86. package/dist/contracts/error-code-meta.js +97 -5
  87. package/dist/contracts/error-codes.d.ts +5 -5
  88. package/dist/contracts/error-codes.js +82 -17
  89. package/dist/contracts/events.d.ts +100 -20
  90. package/dist/contracts/events.js +107 -20
  91. package/dist/contracts/execution.d.ts +48 -64
  92. package/dist/contracts/execution.js +52 -62
  93. package/dist/contracts/feature-lifecycle.d.ts +73 -27
  94. package/dist/contracts/feature-lifecycle.js +86 -26
  95. package/dist/contracts/features.d.ts +68 -19
  96. package/dist/contracts/features.js +42 -41
  97. package/dist/contracts/fixtures/content-platform-v1.json +1108 -0
  98. package/dist/contracts/frame-session.d.ts +192 -0
  99. package/dist/contracts/frame-session.js +164 -0
  100. package/dist/contracts/functions.d.ts +338 -164
  101. package/dist/contracts/functions.js +367 -198
  102. package/dist/contracts/git.d.ts +27 -33
  103. package/dist/contracts/git.js +10 -11
  104. package/dist/contracts/grant-copy.d.ts +43 -0
  105. package/dist/contracts/grant-copy.js +44 -0
  106. package/dist/contracts/grants.d.ts +62 -54
  107. package/dist/contracts/grants.js +124 -23
  108. package/dist/contracts/ids.d.ts +4 -1
  109. package/dist/contracts/ids.js +6 -3
  110. package/dist/contracts/internal.d.ts +8 -18
  111. package/dist/contracts/internal.js +13 -14
  112. package/dist/contracts/mcp.d.ts +28 -0
  113. package/dist/contracts/mcp.js +28 -0
  114. package/dist/contracts/me.d.ts +6 -1
  115. package/dist/contracts/me.js +12 -6
  116. package/dist/contracts/notifications.d.ts +27 -29
  117. package/dist/contracts/notifications.js +9 -4
  118. package/dist/contracts/oauth-resources.d.ts +112 -10
  119. package/dist/contracts/oauth-resources.js +116 -11
  120. package/dist/contracts/oauth-scope-actions.d.ts +90 -0
  121. package/dist/contracts/oauth-scope-actions.js +126 -0
  122. package/dist/contracts/operations.d.ts +27 -4
  123. package/dist/contracts/operations.js +12 -6
  124. package/dist/contracts/pages.d.ts +31 -7
  125. package/dist/contracts/pages.js +22 -5
  126. package/dist/contracts/partner-notifications.d.ts +3 -0
  127. package/dist/contracts/partner-notifications.js +65 -0
  128. package/dist/contracts/{platform.d.ts → partner.d.ts} +29 -42
  129. package/dist/contracts/{platform.js → partner.js} +27 -40
  130. package/dist/contracts/plan-policy.js +1 -1
  131. package/dist/contracts/principal-assertion.d.ts +43 -0
  132. package/dist/contracts/principal-assertion.js +67 -0
  133. package/dist/contracts/principals.d.ts +73 -0
  134. package/dist/contracts/principals.js +59 -0
  135. package/dist/contracts/privacy.d.ts +11 -0
  136. package/dist/contracts/privacy.js +17 -0
  137. package/dist/contracts/problem-document.js +3 -4
  138. package/dist/contracts/publish-archive.d.ts +269 -161
  139. package/dist/contracts/publish-archive.js +11 -1
  140. package/dist/contracts/push-new.d.ts +8 -8
  141. package/dist/contracts/quotas.js +5 -5
  142. package/dist/contracts/realtime.d.ts +52 -0
  143. package/dist/contracts/realtime.js +54 -0
  144. package/dist/contracts/repository-connections.d.ts +44 -31
  145. package/dist/contracts/repository-connections.js +17 -5
  146. package/dist/contracts/resources.d.ts +105 -14
  147. package/dist/contracts/resources.js +150 -26
  148. package/dist/contracts/route-inventory.d.ts +358 -0
  149. package/dist/contracts/route-inventory.js +141 -0
  150. package/dist/contracts/runtime-api.d.ts +206 -82
  151. package/dist/contracts/runtime-api.js +131 -70
  152. package/dist/contracts/runtime-app.d.ts +13 -23
  153. package/dist/contracts/runtime-app.js +39 -24
  154. package/dist/contracts/runtime-components.d.ts +143 -0
  155. package/dist/contracts/runtime-components.js +199 -0
  156. package/dist/contracts/runtime-db.d.ts +49 -23
  157. package/dist/contracts/runtime-db.js +87 -22
  158. package/dist/contracts/runtime-purge.d.ts +8 -0
  159. package/dist/contracts/runtime-purge.js +5 -0
  160. package/dist/contracts/runtime-services.d.ts +43 -75
  161. package/dist/contracts/runtime-services.js +29 -49
  162. package/dist/contracts/runtime-storage.d.ts +15 -14
  163. package/dist/contracts/runtime-storage.js +30 -14
  164. package/dist/contracts/sf-config-v1.d.ts +48 -14
  165. package/dist/contracts/slugs.js +13 -4
  166. package/dist/contracts/space-config.d.ts +283 -19
  167. package/dist/contracts/space-config.js +430 -80
  168. package/dist/contracts/spaces.d.ts +376 -290
  169. package/dist/contracts/spaces.js +200 -135
  170. package/dist/contracts/superadmin-activity.d.ts +3 -43
  171. package/dist/contracts/superadmin-activity.js +6 -30
  172. package/dist/contracts/superadmin-emails.d.ts +1 -0
  173. package/dist/contracts/superadmin-emails.js +17 -1
  174. package/dist/contracts/superadmin-runtime.d.ts +199 -0
  175. package/dist/contracts/superadmin-runtime.js +141 -0
  176. package/dist/contracts/superadmin-search.d.ts +22 -2
  177. package/dist/contracts/superadmin-search.js +14 -6
  178. package/dist/contracts/superadmin-spaces.d.ts +438 -189
  179. package/dist/contracts/superadmin-spaces.js +131 -25
  180. package/dist/contracts/superadmin-teams.d.ts +5 -2
  181. package/dist/contracts/superadmin-teams.js +1 -2
  182. package/dist/contracts/superadmin-tenants.d.ts +627 -12
  183. package/dist/contracts/superadmin-tenants.js +32 -13
  184. package/dist/contracts/superadmin.d.ts +232 -37
  185. package/dist/contracts/superadmin.js +106 -22
  186. package/dist/contracts/tags.d.ts +85 -58
  187. package/dist/contracts/tags.js +47 -37
  188. package/dist/contracts/teams.d.ts +86 -26
  189. package/dist/contracts/teams.js +90 -31
  190. package/dist/contracts/tenants.d.ts +135 -0
  191. package/dist/contracts/tenants.js +120 -0
  192. package/dist/contracts/test-triggers.d.ts +70 -0
  193. package/dist/contracts/test-triggers.js +116 -0
  194. package/dist/contracts/theme-json.js +3 -8
  195. package/dist/contracts/transfers.d.ts +1 -0
  196. package/dist/contracts/transfers.js +3 -2
  197. package/dist/contracts/usage.d.ts +209 -0
  198. package/dist/contracts/usage.js +124 -12
  199. package/dist/contracts/variables.d.ts +2 -2
  200. package/dist/contracts/variables.js +9 -13
  201. package/dist/contracts/webhooks.d.ts +13 -5
  202. package/dist/contracts/webhooks.js +3 -1
  203. package/dist/contracts/zero.d.ts +72 -81
  204. package/dist/contracts/zero.js +80 -78
  205. package/dist/dashboard-paths/index.d.ts +24 -21
  206. package/dist/dashboard-paths/index.js +35 -47
  207. package/dist/dashboard-paths/route-reservations.generated.d.ts +2 -0
  208. package/dist/dashboard-paths/route-reservations.generated.js +36 -0
  209. package/dist/docs/agent-arrival.d.ts +92 -0
  210. package/dist/docs/agent-arrival.js +227 -0
  211. package/dist/docs/agent-output-policy.d.ts +6 -0
  212. package/dist/docs/agent-output-policy.js +22 -0
  213. package/dist/docs/agent-prose.d.ts +12 -18
  214. package/dist/docs/agent-prose.js +73 -51
  215. package/dist/docs/agent-setup.d.ts +72 -41
  216. package/dist/docs/agent-setup.js +339 -436
  217. package/dist/docs/catalog.d.ts +153 -95
  218. package/dist/docs/catalog.js +163 -48
  219. package/dist/docs/error-docs.d.ts +2098 -1
  220. package/dist/docs/error-docs.js +421 -144
  221. package/dist/docs/index-build.d.ts +0 -1
  222. package/dist/docs/index-build.js +2 -3
  223. package/dist/docs/page-context-prompt.d.ts +77 -0
  224. package/dist/docs/page-context-prompt.js +131 -0
  225. package/dist/docs/reference-urls.d.ts +46 -0
  226. package/dist/docs/reference-urls.js +79 -0
  227. package/dist/docs/search.d.ts +6 -8
  228. package/dist/docs/search.js +10 -13
  229. package/dist/docs/skill-distribution.d.ts +4 -1
  230. package/dist/docs/skill-distribution.js +10 -5
  231. package/dist/docs/skills.d.ts +120 -120
  232. package/dist/docs/skills.js +121 -73
  233. package/dist/docs/start-prompts.d.ts +45 -0
  234. package/dist/docs/start-prompts.js +62 -0
  235. package/dist/domain-exploration.js +9 -13
  236. package/dist/og-template.d.ts +56 -0
  237. package/dist/og-template.js +56 -0
  238. package/dist/slug-policy/index.js +5 -11
  239. package/dist/test-helpers/fetch-stub.js +1 -0
  240. package/dist/utils/browser-credential.d.ts +13 -6
  241. package/dist/utils/browser-credential.js +14 -7
  242. package/dist/utils/build-settings.d.ts +21 -1
  243. package/dist/utils/build-settings.js +133 -15
  244. package/dist/utils/canonical-json.d.ts +3 -5
  245. package/dist/utils/canonical-json.js +4 -5
  246. package/dist/utils/cast-transport.d.ts +5 -17
  247. package/dist/utils/cast-transport.js +6 -19
  248. package/dist/utils/claim-token.js +1 -2
  249. package/dist/utils/comment-avatars.js +4 -6
  250. package/dist/utils/concurrency.js +3 -3
  251. package/dist/utils/content-type.d.ts +7 -6
  252. package/dist/utils/content-type.js +73 -51
  253. package/dist/utils/credential-policy.d.ts +50 -6
  254. package/dist/utils/credential-policy.js +126 -59
  255. package/dist/utils/dns-instructions.js +9 -9
  256. package/dist/utils/egress-policy.fixtures.json +1 -1
  257. package/dist/utils/error-code.js +1 -0
  258. package/dist/utils/generate-space-name.d.ts +3 -8
  259. package/dist/utils/generate-space-name.js +3 -8
  260. package/dist/utils/grant-decision.fixtures.json +2 -2
  261. package/dist/utils/grants.d.ts +0 -1
  262. package/dist/utils/grants.js +7 -8
  263. package/dist/utils/gravatar.d.ts +2 -4
  264. package/dist/utils/gravatar.js +6 -12
  265. package/dist/utils/id-hints.js +14 -23
  266. package/dist/utils/idempotency.d.ts +3 -3
  267. package/dist/utils/idempotency.js +6 -7
  268. package/dist/utils/local-space-state.d.ts +23 -26
  269. package/dist/utils/local-space-state.js +46 -46
  270. package/dist/utils/oauth-signed-query.d.ts +3 -5
  271. package/dist/utils/oauth-signed-query.js +6 -9
  272. package/dist/utils/one-shot-replay.d.ts +7 -6
  273. package/dist/utils/one-shot-replay.js +3 -5
  274. package/dist/utils/page-colors.d.ts +15 -19
  275. package/dist/utils/page-colors.js +23 -45
  276. package/dist/utils/page-fonts.d.ts +1 -1
  277. package/dist/utils/page-fonts.js +8 -20
  278. package/dist/utils/page-preview.d.ts +0 -1
  279. package/dist/utils/page-preview.js +0 -1
  280. package/dist/utils/pages.d.ts +33 -3
  281. package/dist/utils/pages.js +83 -30
  282. package/dist/utils/privacy-regions.d.ts +19 -0
  283. package/dist/utils/privacy-regions.js +91 -0
  284. package/dist/utils/publish-form-data.d.ts +4 -5
  285. package/dist/utils/publish-form-data.js +2 -3
  286. package/dist/utils/publish-policy.d.ts +11 -17
  287. package/dist/utils/publish-policy.fixtures.json +11 -5
  288. package/dist/utils/publish-policy.js +65 -110
  289. package/dist/utils/query-client.d.ts +2 -0
  290. package/dist/utils/query-client.js +10 -1
  291. package/dist/utils/runtime-paths.d.ts +4 -4
  292. package/dist/utils/runtime-paths.js +6 -8
  293. package/dist/utils/runtime-upload.d.ts +9 -0
  294. package/dist/utils/runtime-upload.js +12 -0
  295. package/dist/utils/secure-local-file.d.ts +3 -3
  296. package/dist/utils/secure-local-file.js +23 -40
  297. package/dist/utils/space-config.d.ts +12 -15
  298. package/dist/utils/space-config.js +13 -16
  299. package/dist/utils/static-runtime-policy.d.ts +10 -7
  300. package/dist/utils/static-runtime-policy.fixtures.json +38 -41
  301. package/dist/utils/static-runtime-policy.generated.d.ts +16 -0
  302. package/dist/utils/static-runtime-policy.generated.js +70 -0
  303. package/dist/utils/static-runtime-policy.js +31 -132
  304. package/dist/utils/storage-policy.js +1 -2
  305. package/dist/utils/upload-session.d.ts +4 -1
  306. package/dist/utils/upload-session.js +41 -19
  307. package/dist/utils/version-path.js +11 -19
  308. package/dist/utils/wpcom-auth-redirects.d.ts +5 -14
  309. package/dist/utils/wpcom-auth-redirects.js +1 -4
  310. package/dist/vocabulary.d.ts +13 -13
  311. package/dist/vocabulary.js +52 -27
  312. package/package.json +15 -18
  313. package/dist/agents/client-registry.d.ts +0 -22
  314. package/dist/agents/client-registry.js +0 -41
  315. package/dist/docs/agent-handoff-document.d.ts +0 -15
  316. package/dist/docs/agent-handoff-document.js +0 -180
  317. package/dist/docs/agent-solutions.d.ts +0 -110
  318. package/dist/docs/agent-solutions.js +0 -183
  319. package/dist/utils/query-keys.d.ts +0 -84
  320. package/dist/utils/query-keys.js +0 -108
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Deeplink probe results, keyed `<agentId>:<methodId>`.
3
+ *
4
+ * Deeplinks are volatile vendor behavior, so the registry never asserts they
5
+ * work — it records what a probe last observed. This module is the ONLY place a
6
+ * status stronger than `declared` may come from, and it is written by
7
+ * `scripts/marketplaces/probe-deeplinks.mjs` (scheduled weekly by
8
+ * `.github/workflows/deeplink-probe.yml`). A `failed` entry demotes its deeplink
9
+ * out of `interactive-primary` automatically, so the page falls through to the
10
+ * method's declared fallback.
11
+ *
12
+ * Browser-safe by construction: plain data, no filesystem, no network.
13
+ *
14
+ * TODO(deeplink-probe): the probe currently only writes this file by hand-run.
15
+ * Wire the scheduled workflow to open a PR with the regenerated map so a broken
16
+ * vendor deeplink demotes itself without a human in the loop.
17
+ */
18
+ export type DeeplinkProbeResult = Readonly<{
19
+ checkedAt: string;
20
+ evidence?: string;
21
+ status: "probed" | "failed";
22
+ }>;
23
+ export declare const DEEPLINK_PROBE_RESULTS: Readonly<Record<string, DeeplinkProbeResult>>;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Deeplink probe results, keyed `<agentId>:<methodId>`.
3
+ *
4
+ * Deeplinks are volatile vendor behavior, so the registry never asserts they
5
+ * work — it records what a probe last observed. This module is the ONLY place a
6
+ * status stronger than `declared` may come from, and it is written by
7
+ * `scripts/marketplaces/probe-deeplinks.mjs` (scheduled weekly by
8
+ * `.github/workflows/deeplink-probe.yml`). A `failed` entry demotes its deeplink
9
+ * out of `interactive-primary` automatically, so the page falls through to the
10
+ * method's declared fallback.
11
+ *
12
+ * Browser-safe by construction: plain data, no filesystem, no network.
13
+ *
14
+ * TODO(deeplink-probe): the probe currently only writes this file by hand-run.
15
+ * Wire the scheduled workflow to open a PR with the regenerated map so a broken
16
+ * vendor deeplink demotes itself without a human in the loop.
17
+ */
18
+ export const DEEPLINK_PROBE_RESULTS = {};
@@ -0,0 +1,56 @@
1
+ import { type AgentCapability, type AgentId } from "./core.js";
2
+ export type AgentRegistryEnvironment = Readonly<Record<string, string | undefined>>;
3
+ export type AgentMcpFormat = "codex-toml" | "flat-json" | "mcp-json" | "opencode-json" | "vscode-json" | "zed-json";
4
+ export type AgentMcpMethod = "local" | "remote-proxy" | "remote-oauth";
5
+ export type AgentMcpValue = boolean | null | number | string | readonly AgentMcpValue[] | Readonly<{
6
+ [key: string]: AgentMcpValue;
7
+ }>;
8
+ export type AgentMcpServerConfig = Readonly<{
9
+ [key: string]: AgentMcpValue;
10
+ }>;
11
+ export type AgentMcpServerConfigEncoder = Readonly<{
12
+ format: AgentMcpFormat;
13
+ rootKey: "context_servers" | "mcp" | "mcpServers" | "servers" | null;
14
+ schemaUrl?: string;
15
+ build: (input: {
16
+ command: string;
17
+ endpoint: string;
18
+ method: AgentMcpMethod;
19
+ resource: string | null;
20
+ }) => AgentMcpServerConfig;
21
+ }>;
22
+ export type AgentNodeEntry = Readonly<{
23
+ capabilities: readonly AgentCapability[];
24
+ detectionPaths: (home: string, cwd: string, env: AgentRegistryEnvironment) => readonly string[];
25
+ id: AgentId;
26
+ mcp: Readonly<{
27
+ configPath: (home: string, cwd: string, env: AgentRegistryEnvironment) => string;
28
+ format: AgentMcpFormat;
29
+ serverConfigEncoder: AgentMcpServerConfigEncoder;
30
+ }> | null;
31
+ name: string;
32
+ skillDir: Readonly<{
33
+ alternativeGlobalPaths: (home: string, cwd: string, env: AgentRegistryEnvironment) => readonly string[];
34
+ global: (home: string, cwd: string, env: AgentRegistryEnvironment) => string;
35
+ project: (home: string, cwd: string, env: AgentRegistryEnvironment) => string;
36
+ }> | null;
37
+ }>;
38
+ export declare const MACHINE_AGENT_IDS: ("amp" | "hermes" | "claude-code" | "claude-app" | "claude-desktop" | "cursor" | "codex" | "chatgpt" | "vscode" | "github-copilot" | "devin-desktop" | "devin-cloud" | "zed" | "gemini-cli" | "opencode" | "warp" | "factory-droid" | "cline" | "continue" | "raycast" | "poke" | "pi" | "indent" | "openclaw")[];
39
+ export declare function agentNodeCatalog(input: {
40
+ cwd: string;
41
+ env?: AgentRegistryEnvironment;
42
+ home: string;
43
+ }): readonly AgentNodeEntry[];
44
+ export declare function getAgentNodeEntry(id: AgentId, input: {
45
+ cwd: string;
46
+ env?: AgentRegistryEnvironment;
47
+ home: string;
48
+ }): AgentNodeEntry | null;
49
+ export declare function buildAgentMcpServerConfig(input: {
50
+ agentId: AgentId;
51
+ command: string;
52
+ endpoint: string;
53
+ method: AgentMcpMethod;
54
+ resource: string | null;
55
+ }): AgentMcpServerConfig;
56
+ export declare function agentEnvironmentHint(env: AgentRegistryEnvironment): AgentId | null;
@@ -0,0 +1,339 @@
1
+ import path from "node:path";
2
+ import { AGENT_REGISTRY, getAgentEntry, } from "./core.js";
3
+ const commonEncoder = {
4
+ format: "mcp-json",
5
+ rootKey: "mcpServers",
6
+ build: ({ command, endpoint, method, resource }) => {
7
+ if (method !== "remote-oauth") {
8
+ return { command, args: method === "remote-proxy" ? ["mcp", "proxy"] : ["mcp"] };
9
+ }
10
+ return { type: "http", url: endpoint, oauth_resource: resource };
11
+ },
12
+ };
13
+ /**
14
+ * Cursor takes the same `type: "http"` remote entry every other `mcpServers`
15
+ * client does. The bare `{ url }` this used to write is the shape nobody ships:
16
+ * it disagreed with the registry's own Cursor config and with the comparable
17
+ * vendors, and several clients read a bare url as a stdio command.
18
+ */
19
+ const cursorEncoder = commonEncoder;
20
+ /**
21
+ * Gemini CLI's own dialect: `httpUrl` plus an explicit `oauth` block, not
22
+ * `type` + `url` (spec §5.13 dialect table).
23
+ */
24
+ const geminiEncoder = {
25
+ ...commonEncoder,
26
+ build: ({ command, endpoint, method }) => method === "remote-oauth"
27
+ ? { httpUrl: endpoint, oauth: { enabled: true } }
28
+ : { command, args: method === "remote-proxy" ? ["mcp", "proxy"] : ["mcp"] },
29
+ };
30
+ const vscodeEncoder = {
31
+ format: "vscode-json",
32
+ rootKey: "servers",
33
+ build: ({ command, endpoint, method }) => method === "remote-oauth"
34
+ ? { type: "http", url: endpoint }
35
+ : {
36
+ type: "stdio",
37
+ command,
38
+ args: method === "remote-proxy" ? ["mcp", "proxy"] : ["mcp"],
39
+ },
40
+ };
41
+ const codexEncoder = {
42
+ format: "codex-toml",
43
+ rootKey: null,
44
+ build: ({ command, endpoint, method, resource }) => method === "remote-oauth"
45
+ ? { url: endpoint, oauth_resource: resource }
46
+ : { command, args: method === "remote-proxy" ? ["mcp", "proxy"] : ["mcp"] },
47
+ };
48
+ const opencodeEncoder = {
49
+ format: "opencode-json",
50
+ rootKey: "mcp",
51
+ schemaUrl: "https://opencode.ai/config.json",
52
+ build: ({ command, endpoint, method }) => method === "remote-oauth"
53
+ ? { type: "remote", url: endpoint, enabled: true }
54
+ : {
55
+ type: "local",
56
+ command: [command, ...(method === "remote-proxy" ? ["mcp", "proxy"] : ["mcp"])],
57
+ enabled: true,
58
+ },
59
+ };
60
+ const copilotEncoder = {
61
+ ...commonEncoder,
62
+ build: (input) => ({ ...commonEncoder.build(input), tools: ["*"] }),
63
+ };
64
+ const droidEncoder = {
65
+ ...commonEncoder,
66
+ build: (input) => ({
67
+ ...commonEncoder.build(input),
68
+ type: input.method === "remote-oauth" ? "http" : "stdio",
69
+ disabled: false,
70
+ }),
71
+ };
72
+ const zedEncoder = {
73
+ format: "zed-json",
74
+ rootKey: "context_servers",
75
+ build: ({ command, endpoint, method }) => method === "remote-oauth"
76
+ ? { source: "custom", url: endpoint, settings: {} }
77
+ : {
78
+ source: "custom",
79
+ command: {
80
+ path: command,
81
+ args: method === "remote-proxy" ? ["mcp", "proxy"] : ["mcp"],
82
+ },
83
+ },
84
+ };
85
+ const ampEncoder = {
86
+ format: "flat-json",
87
+ rootKey: null,
88
+ build: ({ command, endpoint, method }) => method === "remote-oauth"
89
+ ? { url: endpoint }
90
+ : { command, args: method === "remote-proxy" ? ["mcp", "proxy"] : ["mcp"] },
91
+ };
92
+ const clineEncoder = {
93
+ ...commonEncoder,
94
+ build: ({ command, endpoint, method }) => method === "remote-oauth"
95
+ ? { type: "streamableHttp", url: endpoint, disabled: false }
96
+ : {
97
+ type: "stdio",
98
+ command,
99
+ args: method === "remote-proxy" ? ["mcp", "proxy"] : ["mcp"],
100
+ disabled: false,
101
+ },
102
+ };
103
+ const universalSkill = {
104
+ global: ({ home }) => path.join(home, ".agents", "skills"),
105
+ project: ({ cwd }) => path.join(cwd, ".agents", "skills"),
106
+ };
107
+ const definitions = [
108
+ {
109
+ id: "claude-code",
110
+ detection: ({ home }) => [path.join(home, ".claude")],
111
+ skill: {
112
+ global: ({ home }) => path.join(home, ".claude", "skills"),
113
+ project: ({ cwd }) => path.join(cwd, ".claude", "skills"),
114
+ alternatives: ({ home }) => [path.join(home, ".agents", "skills")],
115
+ },
116
+ mcp: { config: ({ home }) => path.join(home, ".claude.json"), encoder: commonEncoder },
117
+ },
118
+ {
119
+ id: "cursor",
120
+ detection: ({ home }) => [path.join(home, ".cursor")],
121
+ skill: {
122
+ global: ({ home }) => path.join(home, ".cursor", "skills"),
123
+ project: universalSkill.project,
124
+ alternatives: ({ home }) => [
125
+ path.join(home, ".agents", "skills"),
126
+ path.join(home, ".claude", "skills"),
127
+ ],
128
+ },
129
+ mcp: { config: ({ home }) => path.join(home, ".cursor", "mcp.json"), encoder: cursorEncoder },
130
+ },
131
+ {
132
+ id: "codex",
133
+ detection: ({ env, home }) => [codexHome(home, env)],
134
+ skill: {
135
+ global: ({ env, home }) => path.join(codexHome(home, env), "skills"),
136
+ project: universalSkill.project,
137
+ alternatives: ({ home }) => [path.join(home, ".agents", "skills")],
138
+ },
139
+ mcp: {
140
+ config: ({ env, home }) => path.join(codexHome(home, env), "config.toml"),
141
+ encoder: codexEncoder,
142
+ },
143
+ },
144
+ {
145
+ id: "vscode",
146
+ detection: ({ home }) => [
147
+ path.join(home, ".vscode"),
148
+ path.join(home, "Library", "Application Support", "Code"),
149
+ path.join(home, ".config", "Code"),
150
+ ],
151
+ skill: universalSkill,
152
+ mcp: { config: ({ cwd }) => path.join(cwd, ".vscode", "mcp.json"), encoder: vscodeEncoder },
153
+ },
154
+ {
155
+ id: "github-copilot",
156
+ detection: ({ home }) => [path.join(home, ".copilot")],
157
+ skill: {
158
+ global: ({ home }) => path.join(home, ".copilot", "skills"),
159
+ project: universalSkill.project,
160
+ alternatives: ({ home }) => [path.join(home, ".agents", "skills")],
161
+ },
162
+ mcp: {
163
+ config: ({ home }) => path.join(home, ".copilot", "mcp-config.json"),
164
+ encoder: copilotEncoder,
165
+ },
166
+ },
167
+ {
168
+ id: "devin-desktop",
169
+ detection: ({ home }) => [path.join(home, ".devin")],
170
+ skill: universalSkill,
171
+ mcp: {
172
+ config: ({ home }) => path.join(home, ".devin", "mcp_config.json"),
173
+ encoder: commonEncoder,
174
+ },
175
+ },
176
+ {
177
+ id: "zed",
178
+ detection: ({ home }) => [path.join(home, ".config", "zed")],
179
+ skill: universalSkill,
180
+ mcp: {
181
+ config: ({ home }) => path.join(home, ".config", "zed", "settings.json"),
182
+ encoder: zedEncoder,
183
+ },
184
+ },
185
+ {
186
+ id: "gemini-cli",
187
+ detection: ({ home }) => [path.join(home, ".gemini")],
188
+ skill: {
189
+ ...universalSkill,
190
+ alternatives: ({ home }) => [path.join(home, ".gemini", "skills")],
191
+ },
192
+ mcp: {
193
+ config: ({ home }) => path.join(home, ".gemini", "settings.json"),
194
+ encoder: geminiEncoder,
195
+ },
196
+ },
197
+ {
198
+ id: "opencode",
199
+ detection: ({ home }) => [path.join(home, ".config", "opencode")],
200
+ skill: {
201
+ global: ({ home }) => path.join(home, ".config", "opencode", "skills"),
202
+ project: universalSkill.project,
203
+ alternatives: ({ home }) => [
204
+ path.join(home, ".agents", "skills"),
205
+ path.join(home, ".claude", "skills"),
206
+ ],
207
+ },
208
+ mcp: {
209
+ config: ({ home }) => path.join(home, ".config", "opencode", "opencode.json"),
210
+ encoder: opencodeEncoder,
211
+ },
212
+ },
213
+ {
214
+ id: "amp",
215
+ detection: ({ home }) => [path.join(home, ".config", "amp")],
216
+ skill: universalSkill,
217
+ mcp: {
218
+ config: ({ home }) => path.join(home, ".config", "amp", "mcp.json"),
219
+ encoder: ampEncoder,
220
+ },
221
+ },
222
+ {
223
+ id: "warp",
224
+ detection: ({ home }) => [path.join(home, ".warp")],
225
+ skill: universalSkill,
226
+ mcp: { config: ({ home }) => path.join(home, ".warp", "mcp.json"), encoder: commonEncoder },
227
+ },
228
+ {
229
+ id: "factory-droid",
230
+ detection: ({ home }) => [path.join(home, ".factory")],
231
+ skill: {
232
+ global: ({ home }) => path.join(home, ".factory", "skills"),
233
+ project: ({ cwd }) => path.join(cwd, ".factory", "skills"),
234
+ alternatives: ({ home }) => [path.join(home, ".agents", "skills")],
235
+ },
236
+ mcp: { config: ({ home }) => path.join(home, ".factory", "mcp.json"), encoder: droidEncoder },
237
+ },
238
+ {
239
+ id: "cline",
240
+ detection: ({ home }) => [path.join(home, ".cline")],
241
+ skill: {
242
+ global: ({ home }) => path.join(home, ".cline", "skills"),
243
+ project: ({ cwd }) => path.join(cwd, ".cline", "skills"),
244
+ alternatives: ({ home }) => [
245
+ path.join(home, ".agents", "skills"),
246
+ path.join(home, ".claude", "skills"),
247
+ ],
248
+ },
249
+ mcp: {
250
+ config: ({ home }) => path.join(home, ".cline", "data", "settings", "cline_mcp_settings.json"),
251
+ encoder: clineEncoder,
252
+ },
253
+ },
254
+ {
255
+ id: "continue",
256
+ detection: ({ cwd, home }) => [path.join(cwd, ".continue"), path.join(home, ".continue")],
257
+ skill: {
258
+ global: ({ home }) => path.join(home, ".continue", "skills"),
259
+ project: ({ cwd }) => path.join(cwd, ".continue", "skills"),
260
+ alternatives: ({ home }) => [path.join(home, ".claude", "skills")],
261
+ },
262
+ },
263
+ {
264
+ id: "pi",
265
+ detection: ({ home }) => [path.join(home, ".pi")],
266
+ skill: universalSkill,
267
+ },
268
+ {
269
+ id: "hermes",
270
+ detection: ({ home }) => [path.join(home, ".hermes")],
271
+ skill: universalSkill,
272
+ },
273
+ {
274
+ id: "openclaw",
275
+ detection: ({ home }) => [path.join(home, ".openclaw")],
276
+ skill: universalSkill,
277
+ },
278
+ ];
279
+ const definitionById = new Map(definitions.map((definition) => [definition.id, definition]));
280
+ export const MACHINE_AGENT_IDS = AGENT_REGISTRY.filter((entry) => entry.machineClient).map((entry) => entry.id);
281
+ export function agentNodeCatalog(input) {
282
+ const context = { cwd: input.cwd, env: input.env ?? {}, home: input.home };
283
+ return definitions.map((definition) => materializeNodeEntry(definition, context));
284
+ }
285
+ export function getAgentNodeEntry(id, input) {
286
+ const definition = definitionById.get(id);
287
+ if (!definition)
288
+ return null;
289
+ return materializeNodeEntry(definition, {
290
+ cwd: input.cwd,
291
+ env: input.env ?? {},
292
+ home: input.home,
293
+ });
294
+ }
295
+ export function buildAgentMcpServerConfig(input) {
296
+ const definition = definitionById.get(input.agentId);
297
+ if (!definition?.mcp) {
298
+ return commonEncoder.build(input);
299
+ }
300
+ return definition.mcp.encoder.build(input);
301
+ }
302
+ export function agentEnvironmentHint(env) {
303
+ const termProgram = env.TERM_PROGRAM?.toLowerCase() ?? "";
304
+ if (env.CURSOR_TRACE_ID || termProgram.includes("cursor"))
305
+ return "cursor";
306
+ if (env.CLAUDECODE || env.CLAUDE_CODE)
307
+ return "claude-code";
308
+ if (env.CODEX_HOME)
309
+ return "codex";
310
+ if (env.VSCODE_PID || termProgram.includes("vscode"))
311
+ return "vscode";
312
+ return null;
313
+ }
314
+ function materializeNodeEntry(definition, context) {
315
+ const agent = getAgentEntry(definition.id);
316
+ return {
317
+ capabilities: agent.capabilities,
318
+ detectionPaths: () => definition.detection(context),
319
+ id: definition.id,
320
+ mcp: definition.mcp
321
+ ? {
322
+ configPath: () => definition.mcp?.config(context) ?? "",
323
+ format: definition.mcp.encoder.format,
324
+ serverConfigEncoder: definition.mcp.encoder,
325
+ }
326
+ : null,
327
+ name: agent.name,
328
+ skillDir: definition.skill
329
+ ? {
330
+ alternativeGlobalPaths: () => definition.skill?.alternatives?.(context) ?? [],
331
+ global: () => definition.skill?.global(context) ?? path.join(context.home, ".agents", "skills"),
332
+ project: () => definition.skill?.project(context) ?? path.join(context.cwd, ".agents", "skills"),
333
+ }
334
+ : null,
335
+ };
336
+ }
337
+ function codexHome(home, env) {
338
+ return env.CODEX_HOME?.trim() || path.join(home, ".codex");
339
+ }
@@ -5,7 +5,7 @@
5
5
  * and render ordinary SVG markup from its constants. Only asset generators,
6
6
  * plugin packaging, and other build steps may import this module.
7
7
  */
8
- import { SPACEFAST_BRAND_COLORS, SPACEFAST_ICON_F_OFFSET_X, SPACEFAST_ICON_F_PATH, SPACEFAST_ICON_LETTER_ORIGIN, SPACEFAST_ICON_LETTER_SCALE, SPACEFAST_ICON_S_PATH, SPACEFAST_ICON_SHADOW_OFFSET, SPACEFAST_ICON_VIEW_BOX, SPACEFAST_WORDMARK_PATH, SPACEFAST_WORDMARK_PLATE, SPACEFAST_WORDMARK_SHADOW_OFFSET, SPACEFAST_WORDMARK_VIEW_BOX, } from "./brand-assets.js";
8
+ import { SPACEFAST_BRAND_COLORS, SPACEFAST_ICON_F_OFFSET_X, SPACEFAST_ICON_F_PATH, SPACEFAST_ICON_LETTER_ORIGIN, SPACEFAST_ICON_LETTER_SCALE, SPACEFAST_ICON_S_PATH, SPACEFAST_ICON_SHADOW_OFFSET, SPACEFAST_ICON_VIEW_BOX, SPACEFAST_WORDMARK_PATH, SPACEFAST_WORDMARK_VIEW_BOX, } from "./brand-assets.js";
9
9
  function resolvedColors(colors) {
10
10
  return { ...SPACEFAST_BRAND_COLORS, ...colors };
11
11
  }
@@ -26,13 +26,10 @@ function numericAttribute(name, value) {
26
26
  }
27
27
  export function spacefastWordmarkSvg(options = {}) {
28
28
  const colors = resolvedColors(options.colors);
29
- const plate = SPACEFAST_WORDMARK_PLATE;
30
- const shadow = SPACEFAST_WORDMARK_SHADOW_OFFSET;
31
29
  const label = svgAttribute(options.ariaLabel ?? "Spacefast");
30
+ // The logotype is single-color: `plate` (ink) is its fill.
32
31
  return `<svg xmlns="http://www.w3.org/2000/svg"${numericAttribute("width", options.width)}${numericAttribute("height", options.height)} viewBox="${SPACEFAST_WORDMARK_VIEW_BOX}" role="img" aria-label="${label}">
33
- <rect x="${plate.x + shadow.x}" y="${plate.y + shadow.y}" width="${plate.width}" height="${plate.height}" fill="${svgAttribute(colors.shadow)}"/>
34
- <rect x="${plate.x}" y="${plate.y}" width="${plate.width}" height="${plate.height}" fill="${svgAttribute(colors.plate)}" stroke="${svgAttribute(colors.plate)}" stroke-width="1"/>
35
- <path fill="${svgAttribute(colors.paper)}" d="${SPACEFAST_WORDMARK_PATH}"/>
32
+ <path fill="${svgAttribute(colors.plate)}" d="${SPACEFAST_WORDMARK_PATH}"/>
36
33
  </svg>
37
34
  `;
38
35
  }
@@ -6,27 +6,17 @@
6
6
  * build outputs of these constants, never independent sources of truth.
7
7
  */
8
8
  export declare const SPACEFAST_BRAND_COLORS: {
9
- readonly shadow: "#ff4217";
10
- readonly plate: "#141419";
11
- readonly paper: "#fbf8f1";
9
+ readonly shadow: "#d8f24b";
10
+ readonly plate: "#0c0c0c";
11
+ readonly paper: "#fcfcfa";
12
12
  };
13
13
  export type SpacefastBrandColors = {
14
14
  shadow: string;
15
15
  plate: string;
16
16
  paper: string;
17
17
  };
18
- export declare const SPACEFAST_WORDMARK_VIEW_BOX = "0 0 326 62";
19
- export declare const SPACEFAST_WORDMARK_PLATE: {
20
- readonly x: 10;
21
- readonly y: 8;
22
- readonly width: 306;
23
- readonly height: 48;
24
- };
25
- export declare const SPACEFAST_WORDMARK_SHADOW_OFFSET: {
26
- readonly x: 4;
27
- readonly y: 4;
28
- };
29
- export declare const SPACEFAST_WORDMARK_PATH = "M20 15h24v7H27v7h17v20H20v-7h17v-7H20V15ZM51 15h24v18H58v16h-7V15Zm7 11h10v-4H58v4ZM83 15h24l9 34h-8l-2-8H84l-2 8h-8l9-34Zm3 19h18l-4-12H90l-4 12ZM145 22h-19v20h19v7h-26V15h26v7ZM152 15h26v7h-19v6h15v7h-15v7h19v7h-26V15ZM185 15h25v7h-18v6h15v7h-15v14h-7V15ZM215 15h24l9 34h-8l-2-8h-22l-2 8h-8l9-34Zm3 19h18l-4-12h-10l-4 12ZM250 15h24v7h-17v7h17v20h-24v-7h17v-7h-17V15ZM279 15h27v7h-10v27h-7V22h-10v-7Z";
18
+ export declare const SPACEFAST_WORDMARK_VIEW_BOX = "0 0 152 28.9062";
19
+ export declare const SPACEFAST_WORDMARK_PATH = "M9.32925 6.99344H20.5187V10.257H12.5929V13.5206H20.5187V22.8452H9.32925V19.5816H17.2551V16.318H9.32925V6.99344ZM23.7824 6.99344H34.9718V15.3856H27.046V22.8452H23.7824V6.99344ZM27.046 12.122H31.7082V10.257H27.046V12.122ZM38.7017 6.99344H49.8912L54.0872 22.8452H50.3574L49.4249 19.1154H39.1679L38.2355 22.8452H34.5056L38.7017 6.99344ZM40.1004 15.8518H48.4925L46.6276 10.257H41.9653L40.1004 15.8518ZM67.6079 10.257H58.7495V19.5816H67.6079V22.8452H55.4859V6.99344H67.6079V10.257ZM70.8715 6.99344H82.9934V10.257H74.1351V13.0544H81.1285V16.318H74.1351V19.5816H82.9934V22.8452H70.8715V6.99344ZM86.257 6.99344H97.9128V10.257H89.5206V13.0544H96.5141V16.318H89.5206V22.8452H86.257V6.99344ZM100.244 6.99344H111.433L115.629 22.8452H111.9L110.967 19.1154H100.71L99.7777 22.8452H96.0479L100.244 6.99344ZM101.643 15.8518H110.035L108.17 10.257H103.508L101.643 15.8518ZM116.562 6.99344H127.751V10.257H119.826V13.5206H127.751V22.8452H116.562V19.5816H124.488V16.318H116.562V6.99344ZM130.083 6.99344H142.671V10.257H138.008V22.8452H134.745V10.257H130.083V6.99344Z";
30
20
  export declare const SPACEFAST_ICON_VIEW_BOX = "0 0 160 160";
31
21
  export declare const SPACEFAST_ICON_S_PATH = "M0 0h24v7H7v7h17v20H0v-7h17v-7H0V0Z";
32
22
  export declare const SPACEFAST_ICON_F_PATH = "M0 0h25v7H7v6h15v7H7v14H0V0Z";
@@ -5,22 +5,20 @@
5
5
  * renderers, and plugin generators all consume it. Generated SVG/PNG files are
6
6
  * build outputs of these constants, never independent sources of truth.
7
7
  */
8
+ // The 2026-08 "printed matter" palette (DESIGN.md §3). `plate`/`paper` name the
9
+ // icon serializers' layers; the wordmark takes whatever ink its surface supplies.
8
10
  export const SPACEFAST_BRAND_COLORS = {
9
- shadow: "#ff4217",
10
- plate: "#141419",
11
- paper: "#fbf8f1",
11
+ shadow: "#d8f24b",
12
+ plate: "#0c0c0c",
13
+ paper: "#fcfcfa",
12
14
  };
13
- export const SPACEFAST_WORDMARK_VIEW_BOX = "0 0 326 62";
14
- export const SPACEFAST_WORDMARK_PLATE = {
15
- x: 10,
16
- y: 8,
17
- width: 306,
18
- height: 48,
19
- };
20
- export const SPACEFAST_WORDMARK_SHADOW_OFFSET = { x: 4, y: 4 };
21
- // Re-kerned and vertically centered on the plate. This is a literal so browser
22
- // consumers render ordinary SVG markup without assembling path text at runtime.
23
- export const SPACEFAST_WORDMARK_PATH = "M20 15h24v7H27v7h17v20H20v-7h17v-7H20V15ZM51 15h24v18H58v16h-7V15Zm7 11h10v-4H58v4ZM83 15h24l9 34h-8l-2-8H84l-2 8h-8l9-34Zm3 19h18l-4-12H90l-4 12ZM145 22h-19v20h19v7h-26V15h26v7ZM152 15h26v7h-19v6h15v7h-15v7h19v7h-26V15ZM185 15h25v7h-18v6h15v7h-15v14h-7V15ZM215 15h24l9 34h-8l-2-8h-22l-2 8h-8l9-34Zm3 19h18l-4-12h-10l-4 12ZM250 15h24v7h-17v7h17v20h-24v-7h17v-7h-17V15ZM279 15h27v7h-10v27h-7V22h-10v-7Z";
15
+ // The logotype: bare "SPACEFAST" letterforms, one path, one color. Surfaces set
16
+ // the fill (ink on light grounds, paper on dark). Exported from the Spacefast
17
+ // Figma file via the `www` repo (`public/static/brand/spacefast-wordmark.svg`).
18
+ export const SPACEFAST_WORDMARK_VIEW_BOX = "0 0 152 28.9062";
19
+ // This is a literal so browser consumers render ordinary SVG markup without
20
+ // assembling path text at runtime.
21
+ export const SPACEFAST_WORDMARK_PATH = "M9.32925 6.99344H20.5187V10.257H12.5929V13.5206H20.5187V22.8452H9.32925V19.5816H17.2551V16.318H9.32925V6.99344ZM23.7824 6.99344H34.9718V15.3856H27.046V22.8452H23.7824V6.99344ZM27.046 12.122H31.7082V10.257H27.046V12.122ZM38.7017 6.99344H49.8912L54.0872 22.8452H50.3574L49.4249 19.1154H39.1679L38.2355 22.8452H34.5056L38.7017 6.99344ZM40.1004 15.8518H48.4925L46.6276 10.257H41.9653L40.1004 15.8518ZM67.6079 10.257H58.7495V19.5816H67.6079V22.8452H55.4859V6.99344H67.6079V10.257ZM70.8715 6.99344H82.9934V10.257H74.1351V13.0544H81.1285V16.318H74.1351V19.5816H82.9934V22.8452H70.8715V6.99344ZM86.257 6.99344H97.9128V10.257H89.5206V13.0544H96.5141V16.318H89.5206V22.8452H86.257V6.99344ZM100.244 6.99344H111.433L115.629 22.8452H111.9L110.967 19.1154H100.71L99.7777 22.8452H96.0479L100.244 6.99344ZM101.643 15.8518H110.035L108.17 10.257H103.508L101.643 15.8518ZM116.562 6.99344H127.751V10.257H119.826V13.5206H127.751V22.8452H116.562V19.5816H124.488V16.318H116.562V6.99344ZM130.083 6.99344H142.671V10.257H138.008V22.8452H134.745V10.257H130.083V6.99344Z";
24
22
  export const SPACEFAST_ICON_VIEW_BOX = "0 0 160 160";
25
23
  export const SPACEFAST_ICON_S_PATH = "M0 0h24v7H7v7h17v20H0v-7h17v-7H0V0Z";
26
24
  export const SPACEFAST_ICON_F_PATH = "M0 0h25v7H7v6h15v7H7v14H0V0Z";
package/dist/brand.d.ts CHANGED
@@ -2,4 +2,21 @@ export declare const BRAND: {
2
2
  /** Consumer product name shown on every user surface. */
3
3
  readonly productName: "Spacefast";
4
4
  };
5
+ /**
6
+ * What Spacefast is, in one paragraph, for a reader who has never heard of it.
7
+ *
8
+ * Every agent-facing surface leads with this: the copied page context, the
9
+ * `/v1/context` positioning fragment, the skill templates. An agent that
10
+ * only ever sees "here are three endpoints" cannot tell a user what it is
11
+ * working with, so the positioning is part of the context, not marketing.
12
+ *
13
+ * One constant, one wording. Do not paraphrase it at a call site.
14
+ */
15
+ export declare const SPACEFAST_POSITIONING: string;
16
+ /**
17
+ * The one-line positioning for lean agent prompts and handoff documents,
18
+ * where every word costs attention. The paragraph above stays for surfaces
19
+ * that can afford it. One constant, one wording — same rule as above.
20
+ */
21
+ export declare const SPACEFAST_POSITIONING_SHORT = "Spacefast (https://spacefast.com) is Automattic's platform where agents publish and host sites and apps.";
5
22
  export declare const GITHUB_CHECK_RUN_NAME: "Spacefast Builds";
package/dist/brand.js CHANGED
@@ -2,8 +2,28 @@ export const BRAND = {
2
2
  /** Consumer product name shown on every user surface. */
3
3
  productName: "Spacefast",
4
4
  };
5
- // The GitHub check-run name every build reports under. One constant because the
6
- // create and update paths live in different modules and drifted once
7
- // ("Stattic" vs "Spacefast") — GitHub keys check runs by name, so a mismatch
8
- // shows two orphaned checks per commit.
5
+ /**
6
+ * What Spacefast is, in one paragraph, for a reader who has never heard of it.
7
+ *
8
+ * Every agent-facing surface leads with this: the copied page context, the
9
+ * `/v1/context` positioning fragment, the skill templates. An agent that
10
+ * only ever sees "here are three endpoints" cannot tell a user what it is
11
+ * working with, so the positioning is part of the context, not marketing.
12
+ *
13
+ * One constant, one wording. Do not paraphrase it at a call site.
14
+ */
15
+ export const SPACEFAST_POSITIONING = "Spacefast is a batteries-included platform by Automattic to deploy any agentic artifacts, " +
16
+ "websites, generated static sites, full-stack TypeScript projects, PHP functions and Spacefast " +
17
+ "Zero capsules. Every space comes with database, storage, transactional emails, built-in auth " +
18
+ "for small or internal apps. Pages deployed to Spacefast are private by default but can be made " +
19
+ "public. Spacefast is built on the same infrastructure as WordPress.com, Tumblr, WordPress VIP " +
20
+ "and WP Cloud.";
21
+ /**
22
+ * The one-line positioning for lean agent prompts and handoff documents,
23
+ * where every word costs attention. The paragraph above stays for surfaces
24
+ * that can afford it. One constant, one wording — same rule as above.
25
+ */
26
+ export const SPACEFAST_POSITIONING_SHORT = "Spacefast (https://spacefast.com) is Automattic's platform where agents publish and host sites and apps.";
27
+ // GitHub keys check runs by name, so the create and update paths (separate
28
+ // modules) must both use this constant or a commit grows two orphaned checks.
9
29
  export const GITHUB_CHECK_RUN_NAME = `${BRAND.productName} Builds`;