@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.
- package/brand-assets/LICENSE-Haskoy.txt +93 -0
- package/brand-assets/haskoy-latin-variable.woff2 +0 -0
- package/brand-assets/spacefast-favicon.svg +4 -4
- package/brand-assets/spacefast-sf-full-bleed.svg +3 -3
- package/brand-assets/spacefast-wordmark.svg +2 -4
- package/dist/agents/connect-targets.d.ts +6 -146
- package/dist/agents/connect-targets.js +63 -295
- package/dist/agents/private-key-oauth.d.ts +31 -2
- package/dist/agents/private-key-oauth.js +166 -92
- package/dist/agents/registry/core.d.ts +292 -0
- package/dist/agents/registry/core.js +1388 -0
- package/dist/agents/registry/deeplink-probes.d.ts +23 -0
- package/dist/agents/registry/deeplink-probes.js +18 -0
- package/dist/agents/registry/node.d.ts +56 -0
- package/dist/agents/registry/node.js +339 -0
- package/dist/brand-assets-build.js +3 -6
- package/dist/brand-assets.d.ts +5 -15
- package/dist/brand-assets.js +12 -14
- package/dist/brand.d.ts +17 -0
- package/dist/brand.js +24 -4
- package/dist/config/domains.d.ts +79 -12
- package/dist/config/domains.js +128 -29
- package/dist/config/index.js +1 -2
- package/dist/contracts/abuse.js +9 -24
- package/dist/contracts/access-profiles.d.ts +86 -0
- package/dist/contracts/access-profiles.js +89 -0
- package/dist/contracts/access.d.ts +24 -30
- package/dist/contracts/access.js +33 -64
- package/dist/contracts/activity.d.ts +18 -1
- package/dist/contracts/activity.js +72 -26
- package/dist/contracts/analytics.js +8 -10
- package/dist/contracts/api-keys.d.ts +77 -52
- package/dist/contracts/api-keys.js +44 -24
- package/dist/contracts/application-journal.d.ts +216 -0
- package/dist/contracts/application-journal.js +167 -0
- package/dist/contracts/auth.d.ts +90 -17
- package/dist/contracts/auth.js +86 -17
- package/dist/contracts/beta.d.ts +9 -4
- package/dist/contracts/beta.js +20 -16
- package/dist/contracts/billing.d.ts +2 -1
- package/dist/contracts/billing.js +37 -11
- package/dist/contracts/bootstrap.d.ts +791 -0
- package/dist/contracts/bootstrap.js +51 -0
- package/dist/contracts/builds.d.ts +209 -18
- package/dist/contracts/builds.js +93 -27
- package/dist/contracts/channels.d.ts +43 -0
- package/dist/contracts/channels.js +25 -9
- package/dist/contracts/cli.d.ts +7 -0
- package/dist/contracts/cli.js +6 -0
- package/dist/contracts/collab-public.d.ts +1 -1
- package/dist/contracts/collab-public.js +5 -8
- package/dist/contracts/comments.d.ts +44 -34
- package/dist/contracts/comments.js +107 -77
- package/dist/contracts/commerce.d.ts +165 -0
- package/dist/contracts/commerce.js +146 -0
- package/dist/contracts/common.d.ts +3 -3
- package/dist/contracts/common.js +20 -31
- package/dist/contracts/content-contract-verification.d.ts +521 -0
- package/dist/contracts/content-contract-verification.js +320 -0
- package/dist/contracts/content-platform-fixture.d.ts +1278 -0
- package/dist/contracts/content-platform-fixture.js +44 -0
- package/dist/contracts/content-program.d.ts +994 -0
- package/dist/contracts/content-program.js +658 -0
- package/dist/contracts/content-sync.d.ts +290 -0
- package/dist/contracts/content-sync.js +167 -0
- package/dist/contracts/content.d.ts +432 -0
- package/dist/contracts/content.js +303 -0
- package/dist/contracts/continuation.d.ts +17 -1
- package/dist/contracts/continuation.js +23 -23
- package/dist/contracts/countries.js +3 -4
- package/dist/contracts/crons.d.ts +52 -0
- package/dist/contracts/crons.js +60 -0
- package/dist/contracts/dashboard-prefs.d.ts +56 -0
- package/dist/contracts/dashboard-prefs.js +51 -0
- package/dist/contracts/device-auth.d.ts +234 -37
- package/dist/contracts/device-auth.js +267 -53
- package/dist/contracts/docs.d.ts +1 -5
- package/dist/contracts/docs.js +7 -15
- package/dist/contracts/domains.d.ts +501 -93
- package/dist/contracts/domains.js +193 -55
- package/dist/contracts/email-preferences.d.ts +3 -3
- package/dist/contracts/email-preferences.js +6 -7
- package/dist/contracts/enums.d.ts +27 -26
- package/dist/contracts/enums.js +68 -61
- package/dist/contracts/error-code-meta.d.ts +283 -7
- package/dist/contracts/error-code-meta.js +97 -5
- package/dist/contracts/error-codes.d.ts +5 -5
- package/dist/contracts/error-codes.js +82 -17
- package/dist/contracts/events.d.ts +100 -20
- package/dist/contracts/events.js +107 -20
- package/dist/contracts/execution.d.ts +48 -64
- package/dist/contracts/execution.js +52 -62
- package/dist/contracts/feature-lifecycle.d.ts +73 -27
- package/dist/contracts/feature-lifecycle.js +86 -26
- package/dist/contracts/features.d.ts +68 -19
- package/dist/contracts/features.js +42 -41
- package/dist/contracts/fixtures/content-platform-v1.json +1108 -0
- package/dist/contracts/frame-session.d.ts +192 -0
- package/dist/contracts/frame-session.js +164 -0
- package/dist/contracts/functions.d.ts +338 -164
- package/dist/contracts/functions.js +367 -198
- package/dist/contracts/git.d.ts +27 -33
- package/dist/contracts/git.js +10 -11
- package/dist/contracts/grant-copy.d.ts +43 -0
- package/dist/contracts/grant-copy.js +44 -0
- package/dist/contracts/grants.d.ts +62 -54
- package/dist/contracts/grants.js +124 -23
- package/dist/contracts/ids.d.ts +4 -1
- package/dist/contracts/ids.js +6 -3
- package/dist/contracts/internal.d.ts +8 -18
- package/dist/contracts/internal.js +13 -14
- package/dist/contracts/mcp.d.ts +28 -0
- package/dist/contracts/mcp.js +28 -0
- package/dist/contracts/me.d.ts +6 -1
- package/dist/contracts/me.js +12 -6
- package/dist/contracts/notifications.d.ts +27 -29
- package/dist/contracts/notifications.js +9 -4
- package/dist/contracts/oauth-resources.d.ts +112 -10
- package/dist/contracts/oauth-resources.js +116 -11
- package/dist/contracts/oauth-scope-actions.d.ts +90 -0
- package/dist/contracts/oauth-scope-actions.js +126 -0
- package/dist/contracts/operations.d.ts +27 -4
- package/dist/contracts/operations.js +12 -6
- package/dist/contracts/pages.d.ts +31 -7
- package/dist/contracts/pages.js +22 -5
- package/dist/contracts/partner-notifications.d.ts +3 -0
- package/dist/contracts/partner-notifications.js +65 -0
- package/dist/contracts/{platform.d.ts → partner.d.ts} +29 -42
- package/dist/contracts/{platform.js → partner.js} +27 -40
- package/dist/contracts/plan-policy.js +1 -1
- package/dist/contracts/principal-assertion.d.ts +43 -0
- package/dist/contracts/principal-assertion.js +67 -0
- package/dist/contracts/principals.d.ts +73 -0
- package/dist/contracts/principals.js +59 -0
- package/dist/contracts/privacy.d.ts +11 -0
- package/dist/contracts/privacy.js +17 -0
- package/dist/contracts/problem-document.js +3 -4
- package/dist/contracts/publish-archive.d.ts +269 -161
- package/dist/contracts/publish-archive.js +11 -1
- package/dist/contracts/push-new.d.ts +8 -8
- package/dist/contracts/quotas.js +5 -5
- package/dist/contracts/realtime.d.ts +52 -0
- package/dist/contracts/realtime.js +54 -0
- package/dist/contracts/repository-connections.d.ts +44 -31
- package/dist/contracts/repository-connections.js +17 -5
- package/dist/contracts/resources.d.ts +105 -14
- package/dist/contracts/resources.js +150 -26
- package/dist/contracts/route-inventory.d.ts +358 -0
- package/dist/contracts/route-inventory.js +141 -0
- package/dist/contracts/runtime-api.d.ts +206 -82
- package/dist/contracts/runtime-api.js +131 -70
- package/dist/contracts/runtime-app.d.ts +13 -23
- package/dist/contracts/runtime-app.js +39 -24
- package/dist/contracts/runtime-components.d.ts +143 -0
- package/dist/contracts/runtime-components.js +199 -0
- package/dist/contracts/runtime-db.d.ts +49 -23
- package/dist/contracts/runtime-db.js +87 -22
- package/dist/contracts/runtime-purge.d.ts +8 -0
- package/dist/contracts/runtime-purge.js +5 -0
- package/dist/contracts/runtime-services.d.ts +43 -75
- package/dist/contracts/runtime-services.js +29 -49
- package/dist/contracts/runtime-storage.d.ts +15 -14
- package/dist/contracts/runtime-storage.js +30 -14
- package/dist/contracts/sf-config-v1.d.ts +48 -14
- package/dist/contracts/slugs.js +13 -4
- package/dist/contracts/space-config.d.ts +283 -19
- package/dist/contracts/space-config.js +430 -80
- package/dist/contracts/spaces.d.ts +376 -290
- package/dist/contracts/spaces.js +200 -135
- package/dist/contracts/superadmin-activity.d.ts +3 -43
- package/dist/contracts/superadmin-activity.js +6 -30
- package/dist/contracts/superadmin-emails.d.ts +1 -0
- package/dist/contracts/superadmin-emails.js +17 -1
- package/dist/contracts/superadmin-runtime.d.ts +199 -0
- package/dist/contracts/superadmin-runtime.js +141 -0
- package/dist/contracts/superadmin-search.d.ts +22 -2
- package/dist/contracts/superadmin-search.js +14 -6
- package/dist/contracts/superadmin-spaces.d.ts +438 -189
- package/dist/contracts/superadmin-spaces.js +131 -25
- package/dist/contracts/superadmin-teams.d.ts +5 -2
- package/dist/contracts/superadmin-teams.js +1 -2
- package/dist/contracts/superadmin-tenants.d.ts +627 -12
- package/dist/contracts/superadmin-tenants.js +32 -13
- package/dist/contracts/superadmin.d.ts +232 -37
- package/dist/contracts/superadmin.js +106 -22
- package/dist/contracts/tags.d.ts +85 -58
- package/dist/contracts/tags.js +47 -37
- package/dist/contracts/teams.d.ts +86 -26
- package/dist/contracts/teams.js +90 -31
- package/dist/contracts/tenants.d.ts +135 -0
- package/dist/contracts/tenants.js +120 -0
- package/dist/contracts/test-triggers.d.ts +70 -0
- package/dist/contracts/test-triggers.js +116 -0
- package/dist/contracts/theme-json.js +3 -8
- package/dist/contracts/transfers.d.ts +1 -0
- package/dist/contracts/transfers.js +3 -2
- package/dist/contracts/usage.d.ts +209 -0
- package/dist/contracts/usage.js +124 -12
- package/dist/contracts/variables.d.ts +2 -2
- package/dist/contracts/variables.js +9 -13
- package/dist/contracts/webhooks.d.ts +13 -5
- package/dist/contracts/webhooks.js +3 -1
- package/dist/contracts/zero.d.ts +72 -81
- package/dist/contracts/zero.js +80 -78
- package/dist/dashboard-paths/index.d.ts +24 -21
- package/dist/dashboard-paths/index.js +35 -47
- package/dist/dashboard-paths/route-reservations.generated.d.ts +2 -0
- package/dist/dashboard-paths/route-reservations.generated.js +36 -0
- package/dist/docs/agent-arrival.d.ts +92 -0
- package/dist/docs/agent-arrival.js +227 -0
- package/dist/docs/agent-output-policy.d.ts +6 -0
- package/dist/docs/agent-output-policy.js +22 -0
- package/dist/docs/agent-prose.d.ts +12 -18
- package/dist/docs/agent-prose.js +73 -51
- package/dist/docs/agent-setup.d.ts +72 -41
- package/dist/docs/agent-setup.js +339 -436
- package/dist/docs/catalog.d.ts +153 -95
- package/dist/docs/catalog.js +163 -48
- package/dist/docs/error-docs.d.ts +2098 -1
- package/dist/docs/error-docs.js +421 -144
- package/dist/docs/index-build.d.ts +0 -1
- package/dist/docs/index-build.js +2 -3
- package/dist/docs/page-context-prompt.d.ts +77 -0
- package/dist/docs/page-context-prompt.js +131 -0
- package/dist/docs/reference-urls.d.ts +46 -0
- package/dist/docs/reference-urls.js +79 -0
- package/dist/docs/search.d.ts +6 -8
- package/dist/docs/search.js +10 -13
- package/dist/docs/skill-distribution.d.ts +4 -1
- package/dist/docs/skill-distribution.js +10 -5
- package/dist/docs/skills.d.ts +120 -120
- package/dist/docs/skills.js +121 -73
- package/dist/docs/start-prompts.d.ts +45 -0
- package/dist/docs/start-prompts.js +62 -0
- package/dist/domain-exploration.js +9 -13
- package/dist/og-template.d.ts +56 -0
- package/dist/og-template.js +56 -0
- package/dist/slug-policy/index.js +5 -11
- package/dist/test-helpers/fetch-stub.js +1 -0
- package/dist/utils/browser-credential.d.ts +13 -6
- package/dist/utils/browser-credential.js +14 -7
- package/dist/utils/build-settings.d.ts +21 -1
- package/dist/utils/build-settings.js +133 -15
- package/dist/utils/canonical-json.d.ts +3 -5
- package/dist/utils/canonical-json.js +4 -5
- package/dist/utils/cast-transport.d.ts +5 -17
- package/dist/utils/cast-transport.js +6 -19
- package/dist/utils/claim-token.js +1 -2
- package/dist/utils/comment-avatars.js +4 -6
- package/dist/utils/concurrency.js +3 -3
- package/dist/utils/content-type.d.ts +7 -6
- package/dist/utils/content-type.js +73 -51
- package/dist/utils/credential-policy.d.ts +50 -6
- package/dist/utils/credential-policy.js +126 -59
- package/dist/utils/dns-instructions.js +9 -9
- package/dist/utils/egress-policy.fixtures.json +1 -1
- package/dist/utils/error-code.js +1 -0
- package/dist/utils/generate-space-name.d.ts +3 -8
- package/dist/utils/generate-space-name.js +3 -8
- package/dist/utils/grant-decision.fixtures.json +2 -2
- package/dist/utils/grants.d.ts +0 -1
- package/dist/utils/grants.js +7 -8
- package/dist/utils/gravatar.d.ts +2 -4
- package/dist/utils/gravatar.js +6 -12
- package/dist/utils/id-hints.js +14 -23
- package/dist/utils/idempotency.d.ts +3 -3
- package/dist/utils/idempotency.js +6 -7
- package/dist/utils/local-space-state.d.ts +23 -26
- package/dist/utils/local-space-state.js +46 -46
- package/dist/utils/oauth-signed-query.d.ts +3 -5
- package/dist/utils/oauth-signed-query.js +6 -9
- package/dist/utils/one-shot-replay.d.ts +7 -6
- package/dist/utils/one-shot-replay.js +3 -5
- package/dist/utils/page-colors.d.ts +15 -19
- package/dist/utils/page-colors.js +23 -45
- package/dist/utils/page-fonts.d.ts +1 -1
- package/dist/utils/page-fonts.js +8 -20
- package/dist/utils/page-preview.d.ts +0 -1
- package/dist/utils/page-preview.js +0 -1
- package/dist/utils/pages.d.ts +33 -3
- package/dist/utils/pages.js +83 -30
- package/dist/utils/privacy-regions.d.ts +19 -0
- package/dist/utils/privacy-regions.js +91 -0
- package/dist/utils/publish-form-data.d.ts +4 -5
- package/dist/utils/publish-form-data.js +2 -3
- package/dist/utils/publish-policy.d.ts +11 -17
- package/dist/utils/publish-policy.fixtures.json +11 -5
- package/dist/utils/publish-policy.js +65 -110
- package/dist/utils/query-client.d.ts +2 -0
- package/dist/utils/query-client.js +10 -1
- package/dist/utils/runtime-paths.d.ts +4 -4
- package/dist/utils/runtime-paths.js +6 -8
- package/dist/utils/runtime-upload.d.ts +9 -0
- package/dist/utils/runtime-upload.js +12 -0
- package/dist/utils/secure-local-file.d.ts +3 -3
- package/dist/utils/secure-local-file.js +23 -40
- package/dist/utils/space-config.d.ts +12 -15
- package/dist/utils/space-config.js +13 -16
- package/dist/utils/static-runtime-policy.d.ts +10 -7
- package/dist/utils/static-runtime-policy.fixtures.json +38 -41
- package/dist/utils/static-runtime-policy.generated.d.ts +16 -0
- package/dist/utils/static-runtime-policy.generated.js +70 -0
- package/dist/utils/static-runtime-policy.js +31 -132
- package/dist/utils/storage-policy.js +1 -2
- package/dist/utils/upload-session.d.ts +4 -1
- package/dist/utils/upload-session.js +41 -19
- package/dist/utils/version-path.js +11 -19
- package/dist/utils/wpcom-auth-redirects.d.ts +5 -14
- package/dist/utils/wpcom-auth-redirects.js +1 -4
- package/dist/vocabulary.d.ts +13 -13
- package/dist/vocabulary.js +52 -27
- package/package.json +15 -18
- package/dist/agents/client-registry.d.ts +0 -22
- package/dist/agents/client-registry.js +0 -41
- package/dist/docs/agent-handoff-document.d.ts +0 -15
- package/dist/docs/agent-handoff-document.js +0 -180
- package/dist/docs/agent-solutions.d.ts +0 -110
- package/dist/docs/agent-solutions.js +0 -183
- package/dist/utils/query-keys.d.ts +0 -84
- package/dist/utils/query-keys.js +0 -108
package/dist/vocabulary.js
CHANGED
|
@@ -5,27 +5,31 @@
|
|
|
5
5
|
// dashboard label, or "E2B" in marketing copy).
|
|
6
6
|
//
|
|
7
7
|
// This module is intentionally pure data + types: no side effects, no imports.
|
|
8
|
-
// It is additive
|
|
8
|
+
// It is additive. Wiring consumers (CLI, MCP, dashboard, docs generators) onto
|
|
9
9
|
// it happens in later chunks. The decisions encoded here are LOCKED:
|
|
10
10
|
//
|
|
11
|
-
// - `space` is the primitive noun everywhere, user surfaces and
|
|
11
|
+
// - `space` is the primitive noun everywhere, user surfaces and the Spacefast API
|
|
12
12
|
// alike. A space IS a site: there is no second host entity to name. `site`
|
|
13
|
-
// survives only as WP
|
|
13
|
+
// survives only as WP Cloud's own word for the box, in operator surfaces
|
|
14
14
|
// and the warm-pool inventory.
|
|
15
15
|
// - `publish` is the verb. AMENDED 2026-07-02: `deploy` / `deployments` are
|
|
16
|
-
// first-class ALIASES of `publish` / `versions` (see DEPLOY_ALIASES)
|
|
16
|
+
// first-class ALIASES of `publish` / `versions` (see DEPLOY_ALIASES). They
|
|
17
17
|
// stay listed and documented, always with the sanctioned disambiguation
|
|
18
18
|
// line (DEPLOY_ALIAS_DISAMBIGUATION) and with the canonical command named
|
|
19
19
|
// first. A bare "deployment" noun in fresh prose is still discouraged (say
|
|
20
20
|
// "version"), and the `dep_*` id framing stays retired.
|
|
21
21
|
// - `version` / `channel` / `build` are the lifecycle nouns.
|
|
22
|
-
// - `API key
|
|
22
|
+
// - `API key`, never "access token".
|
|
23
23
|
// - `Collab` is the feature; `comment` is the unit.
|
|
24
24
|
// - `Superpowers` is the page-enhancement feature.
|
|
25
|
-
// - Provider names
|
|
26
|
-
// Builds" / "Spacefast CI"), never "
|
|
27
|
-
//
|
|
28
|
-
//
|
|
25
|
+
// - Provider names stay off public surfaces by default: never "E2B" (say
|
|
26
|
+
// "Spacefast Builds" / "Spacefast CI"), never "code.storage" / "Pierre".
|
|
27
|
+
// The infra brand is "WP Cloud", never "WP.Cloud"/"wp-cloud" (AMENDED
|
|
28
|
+
// 2026-08-13). Prefer "infra"; when an external reference is genuinely
|
|
29
|
+
// necessary (provider identity fields, domain conflicts), name WP Cloud
|
|
30
|
+
// outright, NEVER the euphemism "the hosting provider". Marketing may use
|
|
31
|
+
// the family line "the same infra as Automattic, WP Cloud, Pressable, and
|
|
32
|
+
// WordPress.com" (see PROVIDER_HYGIENE).
|
|
29
33
|
export const CONCEPTS = {
|
|
30
34
|
space: {
|
|
31
35
|
id: "space",
|
|
@@ -33,7 +37,7 @@ export const CONCEPTS = {
|
|
|
33
37
|
aliases: [],
|
|
34
38
|
externalTerms: [],
|
|
35
39
|
deprecated: ["project", "site"],
|
|
36
|
-
description: "The primitive noun everywhere, user surfaces and
|
|
40
|
+
description: "The primitive noun everywhere, user surfaces and the Spacefast API alike. A " +
|
|
37
41
|
"space IS a site, so 'site' names nothing of ours; 'project' is never " +
|
|
38
42
|
"the primitive.",
|
|
39
43
|
},
|
|
@@ -102,10 +106,11 @@ export const CONCEPTS = {
|
|
|
102
106
|
id: "infra",
|
|
103
107
|
canonicalNoun: "infra",
|
|
104
108
|
aliases: ["infrastructure"],
|
|
105
|
-
externalTerms: ["WP
|
|
106
|
-
deprecated: ["code.storage", "Pierre"],
|
|
107
|
-
description: "The hosting substrate.
|
|
108
|
-
"
|
|
109
|
+
externalTerms: ["WP Cloud"],
|
|
110
|
+
deprecated: ["code.storage", "Pierre", "the hosting provider"],
|
|
111
|
+
description: "The hosting substrate. Prefer 'infra'; when an external reference is " +
|
|
112
|
+
"necessary, name 'WP Cloud' (its real spelling), never the euphemism " +
|
|
113
|
+
"'the hosting provider'. Never 'code.storage'/'Pierre'.",
|
|
109
114
|
},
|
|
110
115
|
};
|
|
111
116
|
export const EXTERNAL_TERM_ALLOWLIST = [
|
|
@@ -114,7 +119,7 @@ export const EXTERNAL_TERM_ALLOWLIST = [
|
|
|
114
119
|
concept: "publish",
|
|
115
120
|
allowedContexts: ["github-integration", "platform-api"],
|
|
116
121
|
replacement: "version / publish",
|
|
117
|
-
reason: "GitHub speaks 'deployment'; the
|
|
122
|
+
reason: "GitHub speaks 'deployment'; the Spacefast API keeps it for contract " +
|
|
118
123
|
"stability. Elsewhere it is a sanctioned alias of 'version' when paired " +
|
|
119
124
|
"with DEPLOY_ALIAS_DISAMBIGUATION (see DEPLOY_ALIASES); bare fresh prose " +
|
|
120
125
|
"still says 'publish a version'.",
|
|
@@ -133,18 +138,29 @@ export const EXTERNAL_TERM_ALLOWLIST = [
|
|
|
133
138
|
concept: "space",
|
|
134
139
|
allowedContexts: ["operator"],
|
|
135
140
|
replacement: "space",
|
|
136
|
-
reason: "A space IS a site, so 'site' is no longer a Spacefast noun
|
|
137
|
-
"WP
|
|
141
|
+
reason: "A space IS a site, so 'site' is no longer a Spacefast noun. It is only " +
|
|
142
|
+
"WP Cloud's word for the box, which operator surfaces and warm-pool " +
|
|
138
143
|
"inventory may use. Every customer-facing surface says 'space'.",
|
|
139
144
|
},
|
|
140
145
|
{
|
|
141
|
-
term: "WP
|
|
146
|
+
term: "WP Cloud",
|
|
142
147
|
concept: "infra",
|
|
143
|
-
allowedContexts: ["
|
|
144
|
-
allowedPhrases: [
|
|
148
|
+
allowedContexts: ["fixed-phrase"],
|
|
149
|
+
allowedPhrases: [
|
|
150
|
+
"the same infra as Automattic, WP Cloud, Pressable, and WordPress.com",
|
|
151
|
+
// The product-positioning line every agent-facing surface leads with
|
|
152
|
+
// (`SPACEFAST_POSITIONING` in brand.ts). Same licence as the family
|
|
153
|
+
// line above: WP Cloud is named as one of several sibling platforms,
|
|
154
|
+
// never as "the hosting provider" and never on its own.
|
|
155
|
+
"the same infrastructure as WordPress.com, Tumblr, WordPress VIP and WP Cloud",
|
|
156
|
+
],
|
|
145
157
|
replacement: "infra",
|
|
146
|
-
reason: "
|
|
147
|
-
"
|
|
158
|
+
reason: "AMENDED 2026-08-13: prefer 'infra'. Same day: the platform-api " +
|
|
159
|
+
"carve-out is revoked. API values say mysql/phpmyadmin/infra, never " +
|
|
160
|
+
"wpcloud. Name WP Cloud (its real spelling, never 'WP.Cloud') only " +
|
|
161
|
+
"where the external reference is necessary: domain-conflict copy and " +
|
|
162
|
+
"the marketing family line in allowedPhrases. Never the euphemism " +
|
|
163
|
+
"'the hosting provider'.",
|
|
148
164
|
},
|
|
149
165
|
];
|
|
150
166
|
export const DEPLOY_ALIASES = [
|
|
@@ -167,12 +183,21 @@ export const PROVIDER_HYGIENE = {
|
|
|
167
183
|
reason: "The build sandbox vendor is never named; it is 'Spacefast Builds'.",
|
|
168
184
|
},
|
|
169
185
|
wpcloud: {
|
|
170
|
-
internalName: "WP
|
|
186
|
+
internalName: "WP Cloud",
|
|
171
187
|
replacement: "infra",
|
|
172
|
-
allowedContexts: ["
|
|
173
|
-
allowedPhrases: [
|
|
174
|
-
|
|
175
|
-
|
|
188
|
+
allowedContexts: ["fixed-phrase"],
|
|
189
|
+
allowedPhrases: [
|
|
190
|
+
"the same infra as Automattic, WP Cloud, Pressable, and WordPress.com",
|
|
191
|
+
// The product-positioning line every agent-facing surface leads with
|
|
192
|
+
// (`SPACEFAST_POSITIONING` in brand.ts). Same licence as the family
|
|
193
|
+
// line above: WP Cloud is named as one of several sibling platforms,
|
|
194
|
+
// never as "the hosting provider" and never on its own.
|
|
195
|
+
"the same infrastructure as WordPress.com, Tumblr, WordPress VIP and WP Cloud",
|
|
196
|
+
],
|
|
197
|
+
reason: "Hosting substrate; prefer 'infra' (AMENDED 2026-08-13, same day: the " +
|
|
198
|
+
"platform-api carve-out is revoked. API values say mysql/phpmyadmin/" +
|
|
199
|
+
"infra, never wpcloud). Necessary external references name WP Cloud " +
|
|
200
|
+
"outright, never 'the hosting provider'.",
|
|
176
201
|
},
|
|
177
202
|
codeStorage: {
|
|
178
203
|
internalName: "code.storage",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spacefast/common",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Shared TypeScript contracts and utilities for Spacefast packages.",
|
|
6
6
|
"repository": {
|
|
@@ -20,22 +20,6 @@
|
|
|
20
20
|
"brand-assets",
|
|
21
21
|
"dist"
|
|
22
22
|
],
|
|
23
|
-
"spacefastTestCache": {
|
|
24
|
-
"mode": "hermetic",
|
|
25
|
-
"inputs": [
|
|
26
|
-
"../../apps/www/dist/.well-known/agent-card.json",
|
|
27
|
-
"../../apps/www/dist/ai.txt",
|
|
28
|
-
"../../apps/www/dist/llms-full.txt",
|
|
29
|
-
"../../apps/www/dist/llms.txt",
|
|
30
|
-
"../cli/skill.template.md",
|
|
31
|
-
"../cli/skill.references.template.md",
|
|
32
|
-
"../cli/scripts/generate-skill.mjs",
|
|
33
|
-
"../../e2e-tests/fixtures/zero-all-features/api-finalize-request.json",
|
|
34
|
-
"../../e2e-tests/fixtures/zero-all-features/runtime-compiler-finalize-input.json",
|
|
35
|
-
"../../runtime/engine/shared/fonts",
|
|
36
|
-
"src/docs/agent-prose.ts"
|
|
37
|
-
]
|
|
38
|
-
},
|
|
39
23
|
"exports": {
|
|
40
24
|
"./brand": {
|
|
41
25
|
"types": "./dist/brand.d.ts",
|
|
@@ -52,6 +36,11 @@
|
|
|
52
36
|
"import": "./dist/brand-assets-build.js",
|
|
53
37
|
"default": "./dist/brand-assets-build.js"
|
|
54
38
|
},
|
|
39
|
+
"./og-template": {
|
|
40
|
+
"types": "./dist/og-template.d.ts",
|
|
41
|
+
"import": "./dist/og-template.js",
|
|
42
|
+
"default": "./dist/og-template.js"
|
|
43
|
+
},
|
|
55
44
|
"./brand-assets/spacefast-wordmark.svg": "./brand-assets/spacefast-wordmark.svg",
|
|
56
45
|
"./brand-assets/spacefast-sf-full-bleed.svg": "./brand-assets/spacefast-sf-full-bleed.svg",
|
|
57
46
|
"./brand-assets/spacefast-favicon.svg": "./brand-assets/spacefast-favicon.svg",
|
|
@@ -112,12 +101,20 @@
|
|
|
112
101
|
}
|
|
113
102
|
},
|
|
114
103
|
"dependencies": {
|
|
115
|
-
"@tanstack/react-query": "^5.101.4",
|
|
116
104
|
"culori": "^4.0.2",
|
|
117
105
|
"js-yaml": "^4.1.1",
|
|
118
106
|
"mime": "^4.1.0",
|
|
107
|
+
"oauth4webapi": "3.8.7",
|
|
119
108
|
"parse5": "^7.3.0",
|
|
120
109
|
"smol-toml": "^1.7.0",
|
|
121
110
|
"zod": "^4.4.3"
|
|
111
|
+
},
|
|
112
|
+
"peerDependencies": {
|
|
113
|
+
"@tanstack/react-query": "^5.101.4"
|
|
114
|
+
},
|
|
115
|
+
"peerDependenciesMeta": {
|
|
116
|
+
"@tanstack/react-query": {
|
|
117
|
+
"optional": true
|
|
118
|
+
}
|
|
122
119
|
}
|
|
123
120
|
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export declare const MACHINE_AGENT_CLIENT_IDS: readonly ["universal", "claude-code", "codex", "opencode", "github-copilot", "factory-droid", "cursor", "vscode", "gemini-cli", "windsurf", "cline", "continue"];
|
|
2
|
-
export declare const CONNECT_TARGET_IDS: readonly ["claude-code", "cursor", "vscode", "codex", "claude", "chatgpt"];
|
|
3
|
-
export type MachineAgentClientId = (typeof MACHINE_AGENT_CLIENT_IDS)[number];
|
|
4
|
-
export type ConnectTargetId = (typeof CONNECT_TARGET_IDS)[number];
|
|
5
|
-
export type AgentProductId = MachineAgentClientId | ConnectTargetId;
|
|
6
|
-
export declare const AGENT_PRODUCT_NAMES: {
|
|
7
|
-
readonly universal: "Universal (.agents)";
|
|
8
|
-
readonly "claude-code": "Claude Code";
|
|
9
|
-
readonly codex: "Codex";
|
|
10
|
-
readonly cursor: "Cursor";
|
|
11
|
-
readonly vscode: "VS Code";
|
|
12
|
-
readonly "github-copilot": "GitHub Copilot";
|
|
13
|
-
readonly "factory-droid": "Factory Droid";
|
|
14
|
-
readonly opencode: "OpenCode";
|
|
15
|
-
readonly "gemini-cli": "Gemini CLI";
|
|
16
|
-
readonly windsurf: "Windsurf";
|
|
17
|
-
readonly cline: "Cline";
|
|
18
|
-
readonly continue: "Continue";
|
|
19
|
-
readonly claude: "Claude";
|
|
20
|
-
readonly chatgpt: "ChatGPT";
|
|
21
|
-
};
|
|
22
|
-
export declare function agentProductName(id: AgentProductId): string;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export const MACHINE_AGENT_CLIENT_IDS = [
|
|
2
|
-
"universal",
|
|
3
|
-
"claude-code",
|
|
4
|
-
"codex",
|
|
5
|
-
"opencode",
|
|
6
|
-
"github-copilot",
|
|
7
|
-
"factory-droid",
|
|
8
|
-
"cursor",
|
|
9
|
-
"vscode",
|
|
10
|
-
"gemini-cli",
|
|
11
|
-
"windsurf",
|
|
12
|
-
"cline",
|
|
13
|
-
"continue",
|
|
14
|
-
];
|
|
15
|
-
export const CONNECT_TARGET_IDS = [
|
|
16
|
-
"claude-code",
|
|
17
|
-
"cursor",
|
|
18
|
-
"vscode",
|
|
19
|
-
"codex",
|
|
20
|
-
"claude",
|
|
21
|
-
"chatgpt",
|
|
22
|
-
];
|
|
23
|
-
export const AGENT_PRODUCT_NAMES = {
|
|
24
|
-
universal: "Universal (.agents)",
|
|
25
|
-
"claude-code": "Claude Code",
|
|
26
|
-
codex: "Codex",
|
|
27
|
-
cursor: "Cursor",
|
|
28
|
-
vscode: "VS Code",
|
|
29
|
-
"github-copilot": "GitHub Copilot",
|
|
30
|
-
"factory-droid": "Factory Droid",
|
|
31
|
-
opencode: "OpenCode",
|
|
32
|
-
"gemini-cli": "Gemini CLI",
|
|
33
|
-
windsurf: "Windsurf",
|
|
34
|
-
cline: "Cline",
|
|
35
|
-
continue: "Continue",
|
|
36
|
-
claude: "Claude",
|
|
37
|
-
chatgpt: "ChatGPT",
|
|
38
|
-
};
|
|
39
|
-
export function agentProductName(id) {
|
|
40
|
-
return AGENT_PRODUCT_NAMES[id];
|
|
41
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The exact markdown body served to agents at `/agent/<documentId>`.
|
|
3
|
-
* Deterministic and ID-free on purpose — see the module comment.
|
|
4
|
-
*/
|
|
5
|
-
export declare function renderAgentHandoffDocumentMarkdown(input: {
|
|
6
|
-
mcpEndpoint: string;
|
|
7
|
-
}): string;
|
|
8
|
-
/**
|
|
9
|
-
* The browser variant served at `/agent/<documentId>`: the full instructions in
|
|
10
|
-
* the initial response body, zero scripts (nothing may ever inspect or echo a
|
|
11
|
-
* handoff credential), same bytes for every ID.
|
|
12
|
-
*/
|
|
13
|
-
export declare function renderAgentHandoffDocumentHtml(input: {
|
|
14
|
-
mcpEndpoint: string;
|
|
15
|
-
}): string;
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* The public setup document behind agent handoff links.
|
|
3
|
-
*
|
|
4
|
-
* Private handoff links carry a one-use path token while the durable agent
|
|
5
|
-
* credential stays encrypted at the broker. The minted prompt tells the agent
|
|
6
|
-
* to fetch the reconstructed clean document URL instead. This
|
|
7
|
-
* fetch is UNAUTHENTICATED BY DESIGN — which means the response
|
|
8
|
-
* must never become an existence oracle. The contract here is
|
|
9
|
-
* indistinguishability: every well-formed document ID serves the exact same
|
|
10
|
-
* bytes, with the same status and the same timing, whether or not a handoff with
|
|
11
|
-
* that ID exists. That is why these renderers take no document ID and hit no
|
|
12
|
-
* store: the document is one static artifact, target-agnostic, published behind
|
|
13
|
-
* a `/agent/*` rewrite on the dashboard space. Per-target polish deliberately
|
|
14
|
-
* loses to indistinguishability — instead of looking up the handoff's client
|
|
15
|
-
* target (which would need a public by-ID lookup, an oracle), the document
|
|
16
|
-
* carries a named section for every connect target and the minted prompt's
|
|
17
|
-
* "follow the <client> setup instructions" resolves to the right section.
|
|
18
|
-
*
|
|
19
|
-
* Lifecycle safety stays where the secret authenticates: an expired, used, or
|
|
20
|
-
* revoked link fails at the app-private exchange, never at fetch time (see
|
|
21
|
-
* ./agent-setup.ts, `AGENT_HANDOFF_DECLINE_REASONS`).
|
|
22
|
-
*/
|
|
23
|
-
import { buildConnectTargets } from "../agents/connect-targets.js";
|
|
24
|
-
import { BRAND } from "../brand.js";
|
|
25
|
-
import { AGENT_HANDOFF_BROWSER_APPROVAL_GUIDANCE, AGENT_HANDOFF_CLI_APPROVAL_GUIDANCE, AGENT_HANDOFF_CLI_TARGET_IDS, AGENT_HANDOFF_CREDENTIAL_HYGIENE, AGENT_HANDOFF_FETCH_SAFETY, AGENT_HANDOFF_PREAMBLE, AGENT_HANDOFF_PUBLISH_PROSE, agentHandoffConnectSections, agentSetupTextUrl, } from "./agent-setup.js";
|
|
26
|
-
const DOCUMENT_TITLE = `Set up ${BRAND.productName} from an agent handoff`;
|
|
27
|
-
const DOCUMENT_SCOPE = `This is the public setup document for ${BRAND.productName} agent handoff links (\`/agent/<id>\` on the dashboard origin). Every link serves this same document — fetching it never uses a handoff and reveals nothing about one.`;
|
|
28
|
-
const CONNECT_INTRO = "Set up the client you are running in. Each section stands on its own.";
|
|
29
|
-
/**
|
|
30
|
-
* The exact markdown body served to agents at `/agent/<documentId>`.
|
|
31
|
-
* Deterministic and ID-free on purpose — see the module comment.
|
|
32
|
-
*/
|
|
33
|
-
export function renderAgentHandoffDocumentMarkdown(input) {
|
|
34
|
-
const targets = buildConnectTargets({ mcpEndpoint: input.mcpEndpoint });
|
|
35
|
-
const cliTargetNames = targets
|
|
36
|
-
.filter((target) => AGENT_HANDOFF_CLI_TARGET_IDS.includes(target.id))
|
|
37
|
-
.map((target) => target.name);
|
|
38
|
-
const connectSections = targets.flatMap((target) => {
|
|
39
|
-
const sections = agentHandoffConnectSections(target);
|
|
40
|
-
sections.unshift(`### ${target.name}`);
|
|
41
|
-
return sections;
|
|
42
|
-
});
|
|
43
|
-
const sections = [
|
|
44
|
-
`# ${DOCUMENT_TITLE}`,
|
|
45
|
-
DOCUMENT_SCOPE,
|
|
46
|
-
AGENT_HANDOFF_PREAMBLE,
|
|
47
|
-
["## Connect", CONNECT_INTRO, ...connectSections].join("\n\n"),
|
|
48
|
-
[
|
|
49
|
-
"## Continue the approved handoff",
|
|
50
|
-
AGENT_HANDOFF_FETCH_SAFETY,
|
|
51
|
-
`From ${cliTargetNames.join(" or ")} (or any client with a shell): ${AGENT_HANDOFF_CLI_APPROVAL_GUIDANCE}`,
|
|
52
|
-
`From every other client: ${AGENT_HANDOFF_BROWSER_APPROVAL_GUIDANCE}`,
|
|
53
|
-
AGENT_HANDOFF_CREDENTIAL_HYGIENE,
|
|
54
|
-
].join("\n\n"),
|
|
55
|
-
["## Publish", AGENT_HANDOFF_PUBLISH_PROSE].join("\n\n"),
|
|
56
|
-
`General agent instructions: ${agentSetupTextUrl}`,
|
|
57
|
-
];
|
|
58
|
-
return `${sections.join("\n\n")}\n`;
|
|
59
|
-
}
|
|
60
|
-
function escapeHtml(value) {
|
|
61
|
-
return value
|
|
62
|
-
.replaceAll("&", "&")
|
|
63
|
-
.replaceAll("<", "<")
|
|
64
|
-
.replaceAll(">", ">")
|
|
65
|
-
.replaceAll('"', """);
|
|
66
|
-
}
|
|
67
|
-
function linkify(escaped) {
|
|
68
|
-
return escaped.replace(/https?:\/\/[^\s<)]+/g, (url) => `<a href="${url}" rel="noopener">${url}</a>`);
|
|
69
|
-
}
|
|
70
|
-
/** Inline markdown: backtick code spans stay literal; bare URLs become links. */
|
|
71
|
-
function renderInline(text) {
|
|
72
|
-
return text
|
|
73
|
-
.split("`")
|
|
74
|
-
.map((part, index) => index % 2 === 1 ? `<code>${escapeHtml(part)}</code>` : linkify(escapeHtml(part)))
|
|
75
|
-
.join("");
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Renders the document's own markdown grammar (headings, paragraphs, fenced
|
|
79
|
-
* code, inline code, bare URLs) to HTML. Not a general markdown engine: the
|
|
80
|
-
* input is our generated document above, so anything else stays literal text.
|
|
81
|
-
*/
|
|
82
|
-
function markdownToHtmlBody(markdown) {
|
|
83
|
-
const html = [];
|
|
84
|
-
let paragraph = [];
|
|
85
|
-
let codeBlock = null;
|
|
86
|
-
const flushParagraph = () => {
|
|
87
|
-
if (paragraph.length > 0) {
|
|
88
|
-
html.push(`<p>${paragraph.map(renderInline).join("\n")}</p>`);
|
|
89
|
-
paragraph = [];
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
for (const line of markdown.split("\n")) {
|
|
93
|
-
if (codeBlock !== null) {
|
|
94
|
-
if (line.startsWith("```")) {
|
|
95
|
-
html.push(`<pre><code>${escapeHtml(codeBlock.join("\n"))}</code></pre>`);
|
|
96
|
-
codeBlock = null;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
codeBlock.push(line);
|
|
100
|
-
}
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
if (line.startsWith("```")) {
|
|
104
|
-
flushParagraph();
|
|
105
|
-
codeBlock = [];
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
const heading = /^(#{1,3}) (.*)$/.exec(line);
|
|
109
|
-
if (heading?.[1] && heading[2] !== undefined) {
|
|
110
|
-
flushParagraph();
|
|
111
|
-
const level = heading[1].length;
|
|
112
|
-
html.push(`<h${level}>${renderInline(heading[2])}</h${level}>`);
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
if (line.trim() === "") {
|
|
116
|
-
flushParagraph();
|
|
117
|
-
continue;
|
|
118
|
-
}
|
|
119
|
-
paragraph.push(line);
|
|
120
|
-
}
|
|
121
|
-
flushParagraph();
|
|
122
|
-
return html.join("\n");
|
|
123
|
-
}
|
|
124
|
-
const DOCUMENT_STYLES = `
|
|
125
|
-
:root { color-scheme: light dark; }
|
|
126
|
-
body {
|
|
127
|
-
margin: 0 auto;
|
|
128
|
-
padding: 3rem 1.25rem 5rem;
|
|
129
|
-
max-width: 42rem;
|
|
130
|
-
font: 16px/1.6 ui-sans-serif, system-ui, sans-serif;
|
|
131
|
-
background: #ffffff;
|
|
132
|
-
color: #1a1a1e;
|
|
133
|
-
}
|
|
134
|
-
h1 { font-size: 1.6rem; line-height: 1.25; margin: 0 0 1rem; }
|
|
135
|
-
h2 { font-size: 1.2rem; margin: 2.5rem 0 0.75rem; }
|
|
136
|
-
h3 { font-size: 1rem; margin: 2rem 0 0.5rem; }
|
|
137
|
-
p { margin: 0.75rem 0; }
|
|
138
|
-
a { color: inherit; text-underline-offset: 3px; word-break: break-word; }
|
|
139
|
-
code {
|
|
140
|
-
font: 0.875em ui-monospace, monospace;
|
|
141
|
-
background: rgba(125, 125, 135, 0.14);
|
|
142
|
-
border-radius: 4px;
|
|
143
|
-
padding: 0.1em 0.35em;
|
|
144
|
-
}
|
|
145
|
-
pre {
|
|
146
|
-
background: rgba(125, 125, 135, 0.1);
|
|
147
|
-
border: 1px solid rgba(125, 125, 135, 0.25);
|
|
148
|
-
border-radius: 8px;
|
|
149
|
-
padding: 0.875rem 1rem;
|
|
150
|
-
overflow-x: auto;
|
|
151
|
-
}
|
|
152
|
-
pre code { background: none; padding: 0; font-size: 0.8125rem; }
|
|
153
|
-
@media (prefers-color-scheme: dark) {
|
|
154
|
-
body { background: #0e0e10; color: #ececf1; }
|
|
155
|
-
}
|
|
156
|
-
`.trim();
|
|
157
|
-
/**
|
|
158
|
-
* The browser variant served at `/agent/<documentId>`: the full instructions in
|
|
159
|
-
* the initial response body, zero scripts (nothing may ever inspect or echo a
|
|
160
|
-
* handoff credential), same bytes for every ID.
|
|
161
|
-
*/
|
|
162
|
-
export function renderAgentHandoffDocumentHtml(input) {
|
|
163
|
-
const markdown = renderAgentHandoffDocumentMarkdown(input);
|
|
164
|
-
return [
|
|
165
|
-
"<!doctype html>",
|
|
166
|
-
'<html lang="en">',
|
|
167
|
-
"<head>",
|
|
168
|
-
'<meta charset="utf-8">',
|
|
169
|
-
'<meta name="viewport" content="width=device-width, initial-scale=1">',
|
|
170
|
-
'<meta name="robots" content="noindex">',
|
|
171
|
-
`<title>${escapeHtml(DOCUMENT_TITLE)}</title>`,
|
|
172
|
-
`<style>${DOCUMENT_STYLES}</style>`,
|
|
173
|
-
"</head>",
|
|
174
|
-
"<body>",
|
|
175
|
-
markdownToHtmlBody(markdown),
|
|
176
|
-
"</body>",
|
|
177
|
-
"</html>",
|
|
178
|
-
"",
|
|
179
|
-
].join("\n");
|
|
180
|
-
}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
export declare const hostedMcpEndpointUrl = "https://mcp.spacefast.com";
|
|
2
|
-
export type AgentSolutionLane = "plugin" | "hosted-mcp" | "local-mcp" | "cli" | "prompt";
|
|
3
|
-
export type AgentSolutionId = "codex" | "claude-code" | "claude-cowork" | "chatgpt" | "claude-ai" | "raycast" | "cursor" | "terminal" | "generic";
|
|
4
|
-
export type AgentSolution = {
|
|
5
|
-
aliases: readonly string[];
|
|
6
|
-
commands?: readonly string[];
|
|
7
|
-
description: string;
|
|
8
|
-
detailGuideUrl?: string;
|
|
9
|
-
guideUrl: string;
|
|
10
|
-
id: AgentSolutionId;
|
|
11
|
-
label: string;
|
|
12
|
-
lane: AgentSolutionLane;
|
|
13
|
-
setupText: string;
|
|
14
|
-
summary: string;
|
|
15
|
-
};
|
|
16
|
-
export declare const agentSolutions: readonly [{
|
|
17
|
-
readonly id: "codex";
|
|
18
|
-
readonly label: "Codex";
|
|
19
|
-
readonly aliases: readonly ["codex cli", "codex plugin", "openai codex"];
|
|
20
|
-
readonly lane: "plugin";
|
|
21
|
-
readonly summary: "Recommended: Codex plugin.";
|
|
22
|
-
readonly description: "Install the Spacefast skill/plugin so Codex can publish, update, and inspect spaces from the same setup path.";
|
|
23
|
-
readonly commands: readonly ["npx -y skills add spacefast/plugins --skill spacefast -g -a codex -y"];
|
|
24
|
-
readonly guideUrl: `${string}/for-codex`;
|
|
25
|
-
readonly detailGuideUrl: `${string}/guides/how-to-use-with-codex`;
|
|
26
|
-
readonly setupText: string;
|
|
27
|
-
}, {
|
|
28
|
-
readonly id: "claude-code";
|
|
29
|
-
readonly label: "Claude Code";
|
|
30
|
-
readonly aliases: readonly ["claude code", "claude cli"];
|
|
31
|
-
readonly lane: "plugin";
|
|
32
|
-
readonly summary: "Recommended: Claude plugin.";
|
|
33
|
-
readonly description: "Install the Spacefast Claude plugin once, then Claude Code can publish and operate spaces from the terminal.";
|
|
34
|
-
readonly commands: readonly ["claude plugin marketplace add spacefast/plugins", "claude plugin install spacefast@spacefast"];
|
|
35
|
-
readonly guideUrl: `${string}/for-claude`;
|
|
36
|
-
readonly detailGuideUrl: `${string}/guides/how-to-use-with-claude-code`;
|
|
37
|
-
readonly setupText: string;
|
|
38
|
-
}, {
|
|
39
|
-
readonly id: "claude-cowork";
|
|
40
|
-
readonly label: "Claude Cowork";
|
|
41
|
-
readonly aliases: readonly ["cowork", "claude cowork"];
|
|
42
|
-
readonly lane: "plugin";
|
|
43
|
-
readonly summary: "Recommended: Claude plugin.";
|
|
44
|
-
readonly description: "Use the Spacefast Claude plugin path so Cowork gets the same publish instructions and MCP-aware setup as Claude Code.";
|
|
45
|
-
readonly commands: readonly ["claude plugin marketplace add spacefast/plugins", "claude plugin install spacefast@spacefast"];
|
|
46
|
-
readonly guideUrl: `${string}/for-claude`;
|
|
47
|
-
readonly detailGuideUrl: `${string}/guides/how-to-use-with-claude-cowork`;
|
|
48
|
-
readonly setupText: string;
|
|
49
|
-
}, {
|
|
50
|
-
readonly id: "chatgpt";
|
|
51
|
-
readonly label: "ChatGPT";
|
|
52
|
-
readonly aliases: readonly ["chatgpt", "custom gpt", "openai apps"];
|
|
53
|
-
readonly lane: "hosted-mcp";
|
|
54
|
-
readonly summary: "Recommended: direct hosted MCP.";
|
|
55
|
-
readonly description: "Connect ChatGPT-style cloud agents to Spacefast through hosted MCP; use inline files or signed uploads instead of local paths.";
|
|
56
|
-
readonly commands: readonly ["https://mcp.spacefast.com"];
|
|
57
|
-
readonly guideUrl: `${string}/agents`;
|
|
58
|
-
readonly setupText: string;
|
|
59
|
-
}, {
|
|
60
|
-
readonly id: "claude-ai";
|
|
61
|
-
readonly label: "Claude.ai";
|
|
62
|
-
readonly aliases: readonly ["claude.ai", "claude app", "claude web"];
|
|
63
|
-
readonly lane: "hosted-mcp";
|
|
64
|
-
readonly summary: "Recommended: direct hosted MCP.";
|
|
65
|
-
readonly description: "Connect the web Claude app to Spacefast through hosted MCP when it cannot read your local checkout.";
|
|
66
|
-
readonly commands: readonly ["https://mcp.spacefast.com"];
|
|
67
|
-
readonly guideUrl: `${string}/agents`;
|
|
68
|
-
readonly setupText: string;
|
|
69
|
-
}, {
|
|
70
|
-
readonly id: "raycast";
|
|
71
|
-
readonly label: "Raycast";
|
|
72
|
-
readonly aliases: readonly ["raycast", "raycast ai"];
|
|
73
|
-
readonly lane: "hosted-mcp";
|
|
74
|
-
readonly summary: "Recommended: direct hosted MCP.";
|
|
75
|
-
readonly description: "Use hosted MCP for Raycast and similar clients that can connect to a remote MCP server but should not need a local Spacefast install.";
|
|
76
|
-
readonly commands: readonly ["https://mcp.spacefast.com"];
|
|
77
|
-
readonly guideUrl: `${string}/agents`;
|
|
78
|
-
readonly setupText: string;
|
|
79
|
-
}, {
|
|
80
|
-
readonly id: "cursor";
|
|
81
|
-
readonly label: "Cursor or MCP client";
|
|
82
|
-
readonly aliases: readonly ["cursor", "mcp client", "windsurf", "opencode"];
|
|
83
|
-
readonly lane: "local-mcp";
|
|
84
|
-
readonly summary: "Recommended: local MCP when it needs the checkout.";
|
|
85
|
-
readonly description: "Use On-Device MCP for editor agents that need local files; use hosted MCP instead when they only need cloud-safe tools.";
|
|
86
|
-
readonly commands: readonly ["sf setup agent --agent auto --connect", "sf mcp install --agent auto --mode local --transport stdio --connect"];
|
|
87
|
-
readonly guideUrl: `${string}/agents`;
|
|
88
|
-
readonly setupText: string;
|
|
89
|
-
}, {
|
|
90
|
-
readonly id: "terminal";
|
|
91
|
-
readonly label: "Terminal or CI";
|
|
92
|
-
readonly aliases: readonly ["terminal", "cli", "ci", "github actions"];
|
|
93
|
-
readonly lane: "cli";
|
|
94
|
-
readonly summary: "Recommended: Spacefast CLI.";
|
|
95
|
-
readonly description: "Use the CLI for repeat publishes, CI jobs, JSON output, rollback, logs, and domains.";
|
|
96
|
-
readonly commands: readonly [string, "sf login", "sf publish {file-or-dir} --json"];
|
|
97
|
-
readonly guideUrl: `${string}/cli`;
|
|
98
|
-
readonly setupText: string;
|
|
99
|
-
}, {
|
|
100
|
-
readonly id: "generic";
|
|
101
|
-
readonly label: "Generic agent prompt";
|
|
102
|
-
readonly aliases: readonly ["generic", "unknown", "gemini"];
|
|
103
|
-
readonly lane: "prompt";
|
|
104
|
-
readonly summary: "Recommended: generic prompt + setup contract.";
|
|
105
|
-
readonly description: "Use this when the client has no known plugin or MCP connector. The agent reads Spacefast's setup contract and picks the smallest working lane.";
|
|
106
|
-
readonly guideUrl: string;
|
|
107
|
-
readonly setupText: string;
|
|
108
|
-
}];
|
|
109
|
-
export declare function getAgentSolution(id: AgentSolutionId): AgentSolution;
|
|
110
|
-
export declare function renderAgentSolutionIndexText(solutions?: readonly AgentSolution[]): string;
|