@agent-native/core 0.145.8 → 0.146.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 (155) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/turn-into-app/SKILL.md +41 -11
  3. package/corpus/templates/analytics/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  4. package/corpus/templates/analytics/actions/compose-dashboard.ts +2 -27
  5. package/corpus/templates/analytics/actions/get-sql-dashboard.ts +18 -3
  6. package/corpus/templates/analytics/actions/migrate-first-party-analytics-to-bigquery.ts +75 -24
  7. package/corpus/templates/analytics/actions/mutate-dashboard.ts +16 -24
  8. package/corpus/templates/analytics/actions/rename-dashboard.ts +2 -24
  9. package/corpus/templates/analytics/actions/reorder-dashboard-panels.ts +2 -24
  10. package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +2 -25
  11. package/corpus/templates/analytics/actions/update-dashboard.ts +4 -32
  12. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +1 -40
  13. package/corpus/templates/analytics/changelog/2026-08-07-analytics-migrations-now-use-bounded-pressure-aware-backgrou.md +6 -0
  14. package/corpus/templates/analytics/changelog/2026-08-07-language-selection-now-lives-in-settings-instead-of-the-comm.md +6 -0
  15. package/corpus/templates/analytics/changelog/2026-08-07-template-activity-charts-now-show-only-core-agent-native-app.md +6 -0
  16. package/corpus/templates/analytics/netlify.toml +7 -0
  17. package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +110 -0
  18. package/corpus/templates/analytics/server/jobs/analytics-bigquery-backfill.ts +450 -0
  19. package/corpus/templates/analytics/server/jobs/analytics-rollup-backfill.ts +2 -2
  20. package/corpus/templates/analytics/server/lib/analytics-rollup-lock.ts +4 -5
  21. package/corpus/templates/analytics/server/lib/dashboard-collab-sync.ts +77 -0
  22. package/corpus/templates/analytics/server/lib/demo-dashboards.ts +2 -23
  23. package/corpus/templates/analytics/server/lib/first-party-analytics-backend.ts +10 -4
  24. package/corpus/templates/analytics/server/lib/first-party-analytics-rollups.ts +4 -11
  25. package/corpus/templates/analytics/server/plugins/analytics-rollup-backfill-jobs.ts +2 -5
  26. package/corpus/templates/analytics/server/plugins/db.ts +42 -0
  27. package/corpus/templates/analytics/server/routes/api/analytics-bigquery/backfill.post.ts +55 -0
  28. package/corpus/templates/analytics/server/routes/api/dashboard-agent-context.json.get.ts +18 -4
  29. package/corpus/templates/assets/.agents/skills/turn-into-app/SKILL.md +41 -11
  30. package/corpus/templates/assets/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  31. package/corpus/templates/brain/.agents/skills/turn-into-app/SKILL.md +41 -11
  32. package/corpus/templates/brain/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  33. package/corpus/templates/brain/server/lib/connectors.ts +38 -14
  34. package/corpus/templates/calendar/.agents/skills/turn-into-app/SKILL.md +41 -11
  35. package/corpus/templates/calendar/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  36. package/corpus/templates/chat/.agents/skills/turn-into-app/SKILL.md +41 -11
  37. package/corpus/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  38. package/corpus/templates/clips/.agents/skills/turn-into-app/SKILL.md +41 -11
  39. package/corpus/templates/clips/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  40. package/corpus/templates/clips/app/components/player/video-player.tsx +1 -1
  41. package/corpus/templates/clips/changelog/2026-08-07-fixed-trimmed-clips-durations-so-the-main-player-display-mat.md +6 -0
  42. package/corpus/templates/clips/chrome-extension/STORE_DRAFT.md +1 -1
  43. package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
  44. package/corpus/templates/content/.agents/skills/turn-into-app/SKILL.md +41 -11
  45. package/corpus/templates/content/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  46. package/corpus/templates/crm/.agents/skills/turn-into-app/SKILL.md +41 -11
  47. package/corpus/templates/crm/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  48. package/corpus/templates/design/.agents/skills/turn-into-app/SKILL.md +41 -11
  49. package/corpus/templates/design/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  50. package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +41 -11
  51. package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  52. package/corpus/templates/dispatch/changelog/2026-08-07-language-selection-now-lives-in-settings-instead-of-the-disp.md +6 -0
  53. package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +41 -11
  54. package/corpus/templates/factory/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  55. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +59 -22
  56. package/corpus/templates/forms/.agents/skills/turn-into-app/SKILL.md +41 -11
  57. package/corpus/templates/forms/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  58. package/corpus/templates/macros/.agents/skills/turn-into-app/SKILL.md +41 -11
  59. package/corpus/templates/macros/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  60. package/corpus/templates/mail/.agents/skills/turn-into-app/SKILL.md +41 -11
  61. package/corpus/templates/mail/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  62. package/corpus/templates/plan/.agents/skills/turn-into-app/SKILL.md +41 -11
  63. package/corpus/templates/plan/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  64. package/corpus/templates/slides/.agents/skills/image-generation-via-a2a/SKILL.md +10 -1
  65. package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +10 -3
  66. package/corpus/templates/slides/.agents/skills/turn-into-app/SKILL.md +41 -11
  67. package/corpus/templates/slides/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  68. package/corpus/templates/slides/actions/generate-image-api.ts +123 -0
  69. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +10 -2
  70. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +13 -0
  71. package/corpus/templates/slides/app/components/editor/GeneratingSlidePreview.tsx +5 -0
  72. package/corpus/templates/slides/app/components/editor/ImageGenPanel.tsx +1 -1
  73. package/corpus/templates/slides/app/components/presentation/PresentationView.tsx +5 -0
  74. package/corpus/templates/slides/app/components/presentation/PresenterView.tsx +5 -0
  75. package/corpus/templates/slides/app/pages/DeckEditor.tsx +3 -0
  76. package/corpus/templates/slides/app/pages/Presentation.tsx +3 -0
  77. package/corpus/templates/slides/app/pages/SharedPresentation.tsx +5 -0
  78. package/corpus/templates/slides/app/routes/slide.tsx +10 -5
  79. package/corpus/templates/slides/changelog/2026-08-07-deleting-a-deck-no-longer-freezes-the-slides-browser.md +6 -0
  80. package/corpus/templates/slides/changelog/2026-08-07-slide-previews-and-present-now-keep-deck-colors-consistent.md +6 -0
  81. package/corpus/templates/slides/changelog/2026-08-07-slides-verify-generated-images-are-persisted-on-the-target-s.md +6 -0
  82. package/corpus/templates/slides/server/db/schema.ts +1 -0
  83. package/corpus/templates/slides/server/handlers/share.ts +51 -3
  84. package/corpus/templates/slides/server/lib/slide-image-insertion.ts +141 -0
  85. package/corpus/templates/slides/server/plugins/agent-chat.ts +2 -0
  86. package/corpus/templates/slides/server/plugins/db.ts +5 -0
  87. package/corpus/templates/slides/shared/api.ts +2 -0
  88. package/corpus/templates/tasks/.agents/skills/turn-into-app/SKILL.md +41 -11
  89. package/corpus/templates/tasks/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  90. package/dist/cli/code-agent-executor.js +8 -3
  91. package/dist/client/AgentPanel.d.ts +10 -4
  92. package/dist/client/AgentPanel.js +29 -82
  93. package/dist/client/ConnectBuilderCard.d.ts +7 -7
  94. package/dist/client/ConnectBuilderCard.js +45 -20
  95. package/dist/collab/awareness.d.ts +2 -2
  96. package/dist/config.d.ts +9 -2
  97. package/dist/config.js +38 -2
  98. package/dist/db/client.d.ts +13 -1
  99. package/dist/db/client.js +76 -2
  100. package/dist/db/create-get-db.js +2 -2
  101. package/dist/db/migrations.js +22 -4
  102. package/dist/deploy/build.d.ts +1 -0
  103. package/dist/deploy/build.js +32 -23
  104. package/dist/notifications/routes.d.ts +3 -3
  105. package/dist/progress/routes.d.ts +1 -1
  106. package/dist/provider-api/actions/custom-provider-registration.d.ts +9 -9
  107. package/dist/provider-api/actions/provider-api.d.ts +8 -8
  108. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  109. package/dist/scripts/docs/search.js +3 -2
  110. package/dist/server/agent-chat/prompt-resources.js +4 -3
  111. package/dist/server/agents-bundle.d.ts +20 -3
  112. package/dist/server/agents-bundle.js +57 -30
  113. package/dist/server/better-auth-instance.js +2 -2
  114. package/dist/server/builder-browser.d.ts +34 -0
  115. package/dist/server/builder-browser.js +179 -0
  116. package/dist/server/core-routes-plugin.d.ts +5 -0
  117. package/dist/server/core-routes-plugin.js +24 -8
  118. package/dist/server/index.d.ts +1 -1
  119. package/dist/server/index.js +1 -1
  120. package/dist/shared/cache-control.d.ts +2 -2
  121. package/dist/shared/cache-control.js +2 -2
  122. package/dist/shared/runtime-config.js +1 -1
  123. package/dist/templates/chat/.agents/skills/turn-into-app/SKILL.md +41 -11
  124. package/dist/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  125. package/dist/templates/default/.agents/skills/turn-into-app/SKILL.md +41 -11
  126. package/dist/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  127. package/dist/templates/headless/.agents/skills/turn-into-app/SKILL.md +41 -11
  128. package/dist/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  129. package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +41 -11
  130. package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  131. package/dist/vite/agent-native-config-loader.d.ts +10 -0
  132. package/dist/vite/agent-native-config-loader.js +56 -0
  133. package/dist/vite/agents-bundle-plugin.d.ts +5 -1
  134. package/dist/vite/agents-bundle-plugin.js +29 -6
  135. package/dist/vite/client.d.ts +4 -2
  136. package/dist/vite/client.js +17 -50
  137. package/dist/vite/index.d.ts +2 -2
  138. package/dist/vite/index.js +1 -1
  139. package/docs/content/agent-native-config.mdx +43 -17
  140. package/docs/content/drop-in-agent.mdx +3 -3
  141. package/docs/content/environment-variables.mdx +1 -1
  142. package/docs/content/getting-started-actions.mdx +1 -2
  143. package/docs/content/getting-started-pages.mdx +1 -2
  144. package/docs/content/getting-started.mdx +0 -4
  145. package/docs/content/what-is-agent-native.mdx +4 -4
  146. package/package.json +1 -1
  147. package/src/templates/chat/.agents/skills/turn-into-app/SKILL.md +41 -11
  148. package/src/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  149. package/src/templates/default/.agents/skills/turn-into-app/SKILL.md +41 -11
  150. package/src/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  151. package/src/templates/headless/.agents/skills/turn-into-app/SKILL.md +41 -11
  152. package/src/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  153. package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +41 -11
  154. package/src/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +21 -2
  155. package/docs/content/getting-started-database.mdx +0 -173
@@ -8,7 +8,7 @@ import { canUpdateAgentLoopSettings, readAgentLoopSettings, resetAgentLoopSettin
8
8
  import { getState, putState, deleteState, listComposeDrafts, getComposeDraft, putComposeDraft, deleteComposeDraft, deleteAllComposeDrafts, getStateMany, } from "../application-state/handlers.js";
9
9
  import { mountBrowserSessionRoutes } from "../browser-sessions/routes.js";
10
10
  import { mountDbAdminRoutes } from "../db-admin/routes.js";
11
- import { getDbExec } from "../db/client.js";
11
+ import { getDbExec, isProductionServerlessFunctionRuntime, } from "../db/client.js";
12
12
  import { getDatabaseRuntimeFingerprint, getRuntimeDebugFingerprint, runDatabaseSchemaHealthCheck, } from "../db/runtime-diagnostics.js";
13
13
  import { ssrfSafeFetch } from "../extensions/url-safety.js";
14
14
  import { uploadFile, getActiveFileUploadProviderForRequest, listFileUploadProviders, } from "../file-upload/index.js";
@@ -814,6 +814,13 @@ export async function readLegacyCoreRouteInitSettings(readSetting = getSetting)
814
814
  builderDisconnected: builderDisconnected,
815
815
  };
816
816
  }
817
+ /**
818
+ * Production release jobs own schema setup. Request functions must not spend
819
+ * their cold-start budget on legacy cleanup or best-effort table warmups.
820
+ */
821
+ export function shouldRunCoreRouteBootDatabaseWork(env = process.env) {
822
+ return !isProductionServerlessFunctionRuntime(env);
823
+ }
817
824
  /**
818
825
  * Creates a Nitro plugin that mounts all standard agent-native framework routes.
819
826
  *
@@ -913,7 +920,10 @@ export function createCoreRoutesPlugin(options = {}) {
913
920
  return EMPTY_SPECULATION_RULES;
914
921
  }));
915
922
  await awaitBootstrap(nitroApp);
916
- const { persistedEnvVars, builderDisconnected } = await readLegacyCoreRouteInitSettings();
923
+ const runBootDatabaseWork = shouldRunCoreRouteBootDatabaseWork();
924
+ const { persistedEnvVars, builderDisconnected } = runBootDatabaseWork
925
+ ? await readLegacyCoreRouteInitSettings()
926
+ : { persistedEnvVars: null, builderDisconnected: null };
917
927
  // Legacy cleanup: key saves now go to scoped app_secrets rows. Do not
918
928
  // rehydrate the old deployment-global `persisted-env-vars` row into
919
929
  // process.env; keep only the Builder scrub so stale leaked keys self-heal.
@@ -996,7 +1006,8 @@ export function createCoreRoutesPlugin(options = {}) {
996
1006
  try {
997
1007
  const { createObservabilityHandler } = await import("../observability/routes.js");
998
1008
  const { ensureObservabilityTables } = await import("../observability/store.js");
999
- ensureObservabilityTables().catch(() => { });
1009
+ if (runBootDatabaseWork)
1010
+ ensureObservabilityTables().catch(() => { });
1000
1011
  getH3App(nitroApp).use(`${FRAMEWORK_ROUTE_PREFIX}/observability`, createObservabilityHandler());
1001
1012
  }
1002
1013
  catch {
@@ -1009,8 +1020,10 @@ export function createCoreRoutesPlugin(options = {}) {
1009
1020
  try {
1010
1021
  const { ensureAuditTables } = await import("../audit/store.js");
1011
1022
  const { startAuditCleanupJob } = await import("../audit/cleanup-job.js");
1012
- ensureAuditTables().catch(() => { });
1013
- startAuditCleanupJob();
1023
+ if (runBootDatabaseWork) {
1024
+ ensureAuditTables().catch(() => { });
1025
+ startAuditCleanupJob();
1026
+ }
1014
1027
  }
1015
1028
  catch {
1016
1029
  // Audit module not available — skip
@@ -2880,7 +2893,8 @@ export function createCoreRoutesPlugin(options = {}) {
2880
2893
  try {
2881
2894
  const { ensureExtensionsTables, registerExtensionsShareable } = await import("../extensions/store.js");
2882
2895
  const { createExtensionsHandler } = await import("../extensions/routes.js");
2883
- ensureExtensionsTables().catch(() => { });
2896
+ if (runBootDatabaseWork)
2897
+ ensureExtensionsTables().catch(() => { });
2884
2898
  registerExtensionsShareable();
2885
2899
  const extensionsHandler = createExtensionsHandler({
2886
2900
  extensionTools: options.extensionTools,
@@ -2893,7 +2907,8 @@ export function createCoreRoutesPlugin(options = {}) {
2893
2907
  // Extension-point slots — sub-system of extensions.
2894
2908
  const { ensureSlotTables } = await import("../extensions/slots/store.js");
2895
2909
  const { createSlotsHandler } = await import("../extensions/slots/routes.js");
2896
- ensureSlotTables().catch(() => { });
2910
+ if (runBootDatabaseWork)
2911
+ ensureSlotTables().catch(() => { });
2897
2912
  getH3App(nitroApp).use(`${P}/slots`, createSlotsHandler());
2898
2913
  }
2899
2914
  catch {
@@ -2902,7 +2917,8 @@ export function createCoreRoutesPlugin(options = {}) {
2902
2917
  // ─── Data programs (stored server-side JS scripts + run cache) ─────
2903
2918
  try {
2904
2919
  const { ensureDataProgramTables, registerDataProgramsShareable } = await import("../data-programs/store.js");
2905
- ensureDataProgramTables().catch(() => { });
2920
+ if (runBootDatabaseWork)
2921
+ ensureDataProgramTables().catch(() => { });
2906
2922
  registerDataProgramsShareable();
2907
2923
  }
2908
2924
  catch {
@@ -70,7 +70,7 @@ export { isElectron, isMobile, getOrigin, getAppBasePath, getAppUrl, resolveOAut
70
70
  export { buildWorkspaceProviderAuthorizationUrl, createWorkspaceProviderOAuthHandler, exchangeWorkspaceProviderOAuthCode, handleWorkspaceProviderOAuthCallback, handleWorkspaceProviderOAuthStart, isWorkspaceProviderOAuthFlowValid, mergeWorkspaceOAuthValues, resolveWorkspaceProviderIdentity, workspaceProviderOAuthPath, type GenericWorkspaceOAuthProvider, type WorkspaceProviderOAuthFlow, } from "./workspace-provider-oauth.js";
71
71
  export { FeatureNotConfiguredError, hasBuilderPrivateKey, isBuilderEnvManaged, getBuilderProxyOrigin, getBuilderImageGenerationBaseUrl, getBuilderWebSearchBaseUrl, getBuilderAuthHeader, resolveBuilderPrivateKey, resolveBuilderAuthHeader, resolveHasBuilderPrivateKey, resolveHasCompleteBuilderConnection, resolveBuilderCredentials, resolveBuilderCredentialsDetailed, resolveBuilderCredentialSource, resolveBuilderCredential, readDeployCredentialEnv, writeBuilderCredentials, deleteBuilderCredentials, resolveSecret, type BuilderCredentialsDetailed, } from "./credential-provider.js";
72
72
  export { builderDesignSystemUrl, builderProjectBranchUrl, buildBuilderDesignSystemIndexFiles, createBuilderDesignSystemProxyFields, fetchBuilderDesignSystemDecodeJobStatus, fetchBuilderDesignSystemDocs, getBuilderDesignSystemsBaseUrl, hydrateBuilderDesignSystemReference, indexBuilderDesignSystem, localBuilderDesignSystemId, mimeTypeForBuilderDesignSystemFilename, parseBuilderDesignSystemProxyReference, startBuilderDesignSystemIndex, startBuilderDesignSystemUpload, type BuildBuilderDesignSystemIndexFilesOptions, type BuilderDesignSystemCodeFileInput, type BuilderDesignSystemDecodeJobStatus, type BuilderDesignSystemDocsOptions, type BuilderDesignSystemDocument, type BuilderDesignSystemHydratedReference, type BuilderDesignSystemIndexFile, type BuilderDesignSystemIndexFromSourcesOptions, type BuilderDesignSystemIndexOptions, type BuilderDesignSystemIndexResult, type BuilderDesignSystemUploadAttachment, type BuilderDesignSystemUploadSlot, type BuilderDesignSystemProxyFields, type BuilderDesignSystemProxyFieldsOptions, type BuilderDesignSystemProxyReference, type BuilderDesignSystemSourceKind, } from "./builder-design-systems.js";
73
- export { getBuilderBranchProjectId, isBuilderBranchingEnabled, requestBuilderBrowserConnection, resolveBuilderBranchProjectId, resolveIsBuilderBranchingEnabled, runBuilderAgent, type RunBuilderAgentResult, } from "./builder-browser.js";
73
+ export { createBuilderProject, ensureBuilderProject, findBuilderProjectForRepo, getBuilderBranchProjectId, isBuilderBranchingEnabled, requestBuilderBrowserConnection, resolveBuilderBranchProjectId, resolveIsBuilderBranchingEnabled, runBuilderAgent, type BuilderProjectResult, type RunBuilderAgentResult, } from "./builder-browser.js";
74
74
  export { ensureFusionContainer, sendFusionBranchMessage, pushFusionBranch, reserveFusionHostingSlug, deployFusionProject, getFusionDeploys, getFusionBranchEditorUrl, getFusionHostingUrl, type FusionBranchRef, type EnsureFusionContainerResult, type SendFusionMessageResult, } from "./fusion-app.js";
75
75
  export { sendEmail, isEmailConfigured, getEmailReadiness, getEmailProvider, type EmailAttachment, type EmailReadiness, type EmailProvider, type SendEmailArgs, } from "./email.js";
76
76
  export { defineTransactionalEmail, listTransactionalEmails, getTransactionalEmail, renderTransactionalEmailPreview, type TransactionalEmailDefinition, type RegisteredTransactionalEmail, } from "../email-catalog/registry.js";
@@ -75,7 +75,7 @@ export { isElectron, isMobile, getOrigin, getAppBasePath, getAppUrl, resolveOAut
75
75
  export { buildWorkspaceProviderAuthorizationUrl, createWorkspaceProviderOAuthHandler, exchangeWorkspaceProviderOAuthCode, handleWorkspaceProviderOAuthCallback, handleWorkspaceProviderOAuthStart, isWorkspaceProviderOAuthFlowValid, mergeWorkspaceOAuthValues, resolveWorkspaceProviderIdentity, workspaceProviderOAuthPath, } from "./workspace-provider-oauth.js";
76
76
  export { FeatureNotConfiguredError, hasBuilderPrivateKey, isBuilderEnvManaged, getBuilderProxyOrigin, getBuilderImageGenerationBaseUrl, getBuilderWebSearchBaseUrl, getBuilderAuthHeader, resolveBuilderPrivateKey, resolveBuilderAuthHeader, resolveHasBuilderPrivateKey, resolveHasCompleteBuilderConnection, resolveBuilderCredentials, resolveBuilderCredentialsDetailed, resolveBuilderCredentialSource, resolveBuilderCredential, readDeployCredentialEnv, writeBuilderCredentials, deleteBuilderCredentials, resolveSecret, } from "./credential-provider.js";
77
77
  export { builderDesignSystemUrl, builderProjectBranchUrl, buildBuilderDesignSystemIndexFiles, createBuilderDesignSystemProxyFields, fetchBuilderDesignSystemDecodeJobStatus, fetchBuilderDesignSystemDocs, getBuilderDesignSystemsBaseUrl, hydrateBuilderDesignSystemReference, indexBuilderDesignSystem, localBuilderDesignSystemId, mimeTypeForBuilderDesignSystemFilename, parseBuilderDesignSystemProxyReference, startBuilderDesignSystemIndex, startBuilderDesignSystemUpload, } from "./builder-design-systems.js";
78
- export { getBuilderBranchProjectId, isBuilderBranchingEnabled, requestBuilderBrowserConnection, resolveBuilderBranchProjectId, resolveIsBuilderBranchingEnabled, runBuilderAgent, } from "./builder-browser.js";
78
+ export { createBuilderProject, ensureBuilderProject, findBuilderProjectForRepo, getBuilderBranchProjectId, isBuilderBranchingEnabled, requestBuilderBrowserConnection, resolveBuilderBranchProjectId, resolveIsBuilderBranchingEnabled, runBuilderAgent, } from "./builder-browser.js";
79
79
  export { ensureFusionContainer, sendFusionBranchMessage, pushFusionBranch, reserveFusionHostingSlug, deployFusionProject, getFusionDeploys, getFusionBranchEditorUrl, getFusionHostingUrl, } from "./fusion-app.js";
80
80
  export { sendEmail, isEmailConfigured, getEmailReadiness, getEmailProvider, } from "./email.js";
81
81
  export { defineTransactionalEmail, listTransactionalEmails, getTransactionalEmail, renderTransactionalEmailPreview, } from "../email-catalog/registry.js";
@@ -1,11 +1,11 @@
1
1
  export declare const DEFAULT_PUBLIC_CACHE_CONTROL = "public, max-age=600, stale-while-revalidate=604800, stale-if-error=3600";
2
2
  export declare const DEFAULT_SSR_CACHE_CONTROL = "public, max-age=600, stale-while-revalidate=604800, stale-if-error=3600";
3
3
  export declare const DEFAULT_SSR_CDN_CACHE_CONTROL = "public, max-age=600, stale-while-revalidate=604800, stale-if-error=3600";
4
- export declare const DEFAULT_SSR_NETLIFY_CDN_CACHE_CONTROL = "public, durable, max-age=600, stale-while-revalidate=604800, stale-if-error=3600";
4
+ export declare const DEFAULT_SSR_NETLIFY_CDN_CACHE_CONTROL = "public, durable, s-maxage=31536000, stale-while-revalidate=604800, stale-if-error=3600";
5
5
  export declare const DEFAULT_SSR_CACHE_HEADERS: {
6
6
  readonly "cache-control": "public, max-age=600, stale-while-revalidate=604800, stale-if-error=3600";
7
7
  readonly "cdn-cache-control": "public, max-age=600, stale-while-revalidate=604800, stale-if-error=3600";
8
- readonly "netlify-cdn-cache-control": "public, durable, max-age=600, stale-while-revalidate=604800, stale-if-error=3600";
8
+ readonly "netlify-cdn-cache-control": "public, durable, s-maxage=31536000, stale-while-revalidate=604800, stale-if-error=3600";
9
9
  };
10
10
  /**
11
11
  * Deployment-wide override for the SSR shell cache policy.
@@ -1,7 +1,7 @@
1
1
  export const DEFAULT_PUBLIC_CACHE_CONTROL = "public, max-age=600, stale-while-revalidate=604800, stale-if-error=3600";
2
2
  export const DEFAULT_SSR_CACHE_CONTROL = DEFAULT_PUBLIC_CACHE_CONTROL;
3
3
  export const DEFAULT_SSR_CDN_CACHE_CONTROL = DEFAULT_SSR_CACHE_CONTROL;
4
- export const DEFAULT_SSR_NETLIFY_CDN_CACHE_CONTROL = "public, durable, max-age=600, stale-while-revalidate=604800, stale-if-error=3600";
4
+ export const DEFAULT_SSR_NETLIFY_CDN_CACHE_CONTROL = "public, durable, s-maxage=31536000, stale-while-revalidate=604800, stale-if-error=3600";
5
5
  export const DEFAULT_SSR_CACHE_HEADERS = {
6
6
  "cache-control": DEFAULT_SSR_CACHE_CONTROL,
7
7
  "cdn-cache-control": DEFAULT_SSR_CDN_CACHE_CONTROL,
@@ -85,7 +85,7 @@ export function ssrCacheHeadersForPolicy(policy) {
85
85
  // the 7-day default SWR here would hand back the staleness they opted out of.
86
86
  const control = `public, max-age=${policy.seconds}, ` +
87
87
  `stale-while-revalidate=${policy.seconds}, stale-if-error=3600`;
88
- const netlifyControl = `public, durable, max-age=${policy.seconds}, ` +
88
+ const netlifyControl = `public, durable, s-maxage=${policy.seconds}, ` +
89
89
  `stale-while-revalidate=${policy.seconds}, stale-if-error=3600`;
90
90
  return {
91
91
  "cache-control": control,
@@ -98,7 +98,7 @@ export function buildRuntimeConfigPrompt(report, appName) {
98
98
  "Detected issues:",
99
99
  issueLines || "- No issues were reported.",
100
100
  "",
101
- "Inspect the app's agent-native.json or agent-native.ts, its deployment configuration, and the framework defaults. Make the smallest safe fix. Keep secrets out of source control. Do not print secret values in your response. Tell me exactly which deploy settings still need to be set, then verify the production build and runtime health check.",
101
+ "Inspect the app's agent-native.json or agent-native.config.ts (including compatibility aliases), its deployment configuration, and the framework defaults. Make the smallest safe fix. Keep secrets out of source control. Do not print secret values in your response. Tell me exactly which deploy settings still need to be set, then verify the production build and runtime health check.",
102
102
  ].join("\n");
103
103
  }
104
104
  export function getRuntimeConfigReport(env, requirements = {}, options = {}) {
@@ -4,7 +4,7 @@ description: >-
4
4
  Turn visible project context, a proven thread, skill, or workflow into a
5
5
  runnable Agent-Native app with simple buttons, visible agent steps, preview,
6
6
  and deployment handoff. Use when a user invokes `/turn-into-app` or asks to
7
- make a workflow into an app.
7
+ make a workflow into an app, including from Claude or ChatGPT on the web.
8
8
  user-invocable: true
9
9
  scope: both
10
10
  metadata:
@@ -13,9 +13,36 @@ metadata:
13
13
 
14
14
  # Turn Into App
15
15
 
16
+ ## Host execution boundary
17
+
18
+ The build location depends on the host. Treat this as a hard routing rule:
19
+
20
+ - In Claude Web, ChatGPT Web, or a Claude/ChatGPT Project on the web, you are
21
+ the source analyst and handoff orchestrator. You must not build the app in
22
+ the host sandbox. Do not run `npm`, `pnpm`, `npx`, `agent-native create`, or
23
+ `add-app`; do not edit files, create artifacts, or start a local dev server.
24
+ After writing the bounded source brief, call the connected Dispatch action
25
+ `start-workspace-app-creation`. Pass the brief and repeatable workflow in
26
+ `prompt`, plus the inferred `appId`, `description`, `template`, and selected
27
+ `resourceIds` when available. This is the Builder handoff.
28
+ - Do not substitute the generic `create_workspace_app` MCP tool in an online
29
+ host. That tool is a local workspace scaffolder, not the Builder handoff.
30
+ - Connect the Agent-Native Dispatch MCP connector only. Dispatch uses the
31
+ authenticated Builder Projects API to reuse or provision the workspace
32
+ project before starting the Builder Cloud Agent; a separate Builder CMS MCP
33
+ connection is not required for this workflow.
34
+ - If `start-workspace-app-creation` is not available or Dispatch is not
35
+ authenticated, stop with the connector setup needed. Do not fall back to a
36
+ local build or claim that the app exists.
37
+ - In Claude Code, Codex Code, or another local code-agent runtime with a target
38
+ workspace, follow the local implementation steps below. The local agent may
39
+ scaffold, edit, run, and verify the app there.
40
+
16
41
  ## Default behavior
17
42
 
18
- This is an end-to-end build skill, not a request for an app proposal.
43
+ For a local code-agent runtime this is an end-to-end build skill, not a request
44
+ for an app proposal. For an online host, the end-to-end result is a verified
45
+ Builder handoff and the resulting workspace app, not code written in the host.
19
46
 
20
47
  - With no argument, choose the source in this order: visible project context,
21
48
  then the current thread. A fresh Claude or ChatGPT Project is a valid source
@@ -47,9 +74,12 @@ private web access, invent an importer, add fake OAuth, or scrape a logged-in
47
74
  page. If the needed context is not visible, ask for an export, transcript, or
48
75
  attachment and treat that artifact as imported source material.
49
76
 
50
- Deliver a fresh app in a new directory, implement the repeatable workflow with
51
- buttons and agent handoffs, start its dev server, verify the main path, and
52
- continue through build/deployment handoff. Do not stop at a plan.
77
+ For local code-agent runtimes, deliver a fresh app in a new directory,
78
+ implement the repeatable workflow with buttons and agent handoffs, start its dev
79
+ server, verify the main path, and continue through build/deployment handoff. Do
80
+ not stop at a plan. For online hosts, call Dispatch first after the source brief,
81
+ then report the returned Builder branch/path and verify the workspace app through
82
+ Dispatch when it becomes available.
53
83
 
54
84
  ## Fresh project context mode
55
85
 
@@ -190,12 +220,12 @@ Do not use `create` for an existing workspace; it scaffolds a new standalone
190
220
  workspace rather than adding an app to the current one.
191
221
 
192
222
  When the source came from a fresh external Project and the target is a Builder
193
- workspace, prefer the available Dispatch MCP workspace handoff after writing
194
- the source brief. Call `start-workspace-app-creation` with a concise prompt,
195
- the inferred app id, and the brief's repeatable workflow. Pass selected
196
- workspace resource IDs when they are available, rather than pasting entire
197
- knowledge files. Continue from the returned workspace path or Builder handoff
198
- and report the actual verification result.
223
+ workspace, the online host path is mandatory: after writing the source brief,
224
+ call `start-workspace-app-creation` with a concise prompt, the inferred app id,
225
+ and the brief's repeatable workflow. Pass selected workspace resource IDs when
226
+ they are available, rather than pasting entire knowledge files. Continue from
227
+ the returned workspace path or Builder branch handoff and report the actual
228
+ verification result. Do not run the local scaffold commands in this host mode.
199
229
 
200
230
  Use a first-party template only when it materially fits the workflow. Keep the
201
231
  new app independent from the source thread's working tree unless the user
@@ -50,14 +50,33 @@ skills. For a ChatGPT Project or any host that exposes only the MCP connector,
50
50
  also place the skill instructions or this reference in the Project
51
51
  instructions/knowledge files. Then add and authenticate the Dispatch MCP
52
52
  connector from the packaged `adapters/chatgpt-mcp/connector.json`.
53
+ This single connector is enough: Dispatch provisions or reuses the Builder
54
+ project through the Builder Projects API, so do not ask the user to add a
55
+ separate Builder CMS MCP for app creation.
56
+ Builder's separate Fusion MCP is available as a custom remote connector at
57
+ `https://mcp.builder.io/mcp/fusion` for direct Builder work. It can run an
58
+ existing project, but it cannot provision the repo-backed Agent-Native
59
+ workspace project, so it is optional and not a replacement for the Dispatch
60
+ handoff in this skill. Do not add Builder's CMS MCP for this workflow.
61
+
62
+ For Claude Web, ChatGPT Web, and their web Projects, the host is an
63
+ orchestrator, not the build environment. After forming the source brief, call
64
+ the Dispatch `start-workspace-app-creation` action so Builder creates the app
65
+ in the connected workspace. Do not use the host's code interpreter, shell,
66
+ artifact editor, `create_workspace_app`, or local `pnpm`/`npm` commands. If the
67
+ handoff action is unavailable, stop and ask the user to authenticate Dispatch;
68
+ do not fall back to a local sandbox build. Claude Code and Codex Code are the
69
+ local-agent exception and may follow the implementation steps in the main
70
+ skill.
53
71
 
54
72
  In a new Project chat, say:
55
73
 
56
74
  ```text
57
75
  Turn this project into an app. Use the visible Project instructions,
58
76
  knowledge files, and any selected successful runs as the source. Create the
59
- app in the connected Agent-Native workspace, keep the source brief bounded,
60
- and report the real path and verification result.
77
+ app in the connected Agent-Native workspace through Dispatch and Builder, keep
78
+ the source brief bounded, and report the real Builder branch/path and
79
+ verification result. Do not build it in this chat's sandbox.
61
80
  ```
62
81
 
63
82
  If the host does not show the Project instructions or files to the model, stop
@@ -4,7 +4,7 @@ description: >-
4
4
  Turn visible project context, a proven thread, skill, or workflow into a
5
5
  runnable Agent-Native app with simple buttons, visible agent steps, preview,
6
6
  and deployment handoff. Use when a user invokes `/turn-into-app` or asks to
7
- make a workflow into an app.
7
+ make a workflow into an app, including from Claude or ChatGPT on the web.
8
8
  user-invocable: true
9
9
  scope: both
10
10
  metadata:
@@ -13,9 +13,36 @@ metadata:
13
13
 
14
14
  # Turn Into App
15
15
 
16
+ ## Host execution boundary
17
+
18
+ The build location depends on the host. Treat this as a hard routing rule:
19
+
20
+ - In Claude Web, ChatGPT Web, or a Claude/ChatGPT Project on the web, you are
21
+ the source analyst and handoff orchestrator. You must not build the app in
22
+ the host sandbox. Do not run `npm`, `pnpm`, `npx`, `agent-native create`, or
23
+ `add-app`; do not edit files, create artifacts, or start a local dev server.
24
+ After writing the bounded source brief, call the connected Dispatch action
25
+ `start-workspace-app-creation`. Pass the brief and repeatable workflow in
26
+ `prompt`, plus the inferred `appId`, `description`, `template`, and selected
27
+ `resourceIds` when available. This is the Builder handoff.
28
+ - Do not substitute the generic `create_workspace_app` MCP tool in an online
29
+ host. That tool is a local workspace scaffolder, not the Builder handoff.
30
+ - Connect the Agent-Native Dispatch MCP connector only. Dispatch uses the
31
+ authenticated Builder Projects API to reuse or provision the workspace
32
+ project before starting the Builder Cloud Agent; a separate Builder CMS MCP
33
+ connection is not required for this workflow.
34
+ - If `start-workspace-app-creation` is not available or Dispatch is not
35
+ authenticated, stop with the connector setup needed. Do not fall back to a
36
+ local build or claim that the app exists.
37
+ - In Claude Code, Codex Code, or another local code-agent runtime with a target
38
+ workspace, follow the local implementation steps below. The local agent may
39
+ scaffold, edit, run, and verify the app there.
40
+
16
41
  ## Default behavior
17
42
 
18
- This is an end-to-end build skill, not a request for an app proposal.
43
+ For a local code-agent runtime this is an end-to-end build skill, not a request
44
+ for an app proposal. For an online host, the end-to-end result is a verified
45
+ Builder handoff and the resulting workspace app, not code written in the host.
19
46
 
20
47
  - With no argument, choose the source in this order: visible project context,
21
48
  then the current thread. A fresh Claude or ChatGPT Project is a valid source
@@ -47,9 +74,12 @@ private web access, invent an importer, add fake OAuth, or scrape a logged-in
47
74
  page. If the needed context is not visible, ask for an export, transcript, or
48
75
  attachment and treat that artifact as imported source material.
49
76
 
50
- Deliver a fresh app in a new directory, implement the repeatable workflow with
51
- buttons and agent handoffs, start its dev server, verify the main path, and
52
- continue through build/deployment handoff. Do not stop at a plan.
77
+ For local code-agent runtimes, deliver a fresh app in a new directory,
78
+ implement the repeatable workflow with buttons and agent handoffs, start its dev
79
+ server, verify the main path, and continue through build/deployment handoff. Do
80
+ not stop at a plan. For online hosts, call Dispatch first after the source brief,
81
+ then report the returned Builder branch/path and verify the workspace app through
82
+ Dispatch when it becomes available.
53
83
 
54
84
  ## Fresh project context mode
55
85
 
@@ -190,12 +220,12 @@ Do not use `create` for an existing workspace; it scaffolds a new standalone
190
220
  workspace rather than adding an app to the current one.
191
221
 
192
222
  When the source came from a fresh external Project and the target is a Builder
193
- workspace, prefer the available Dispatch MCP workspace handoff after writing
194
- the source brief. Call `start-workspace-app-creation` with a concise prompt,
195
- the inferred app id, and the brief's repeatable workflow. Pass selected
196
- workspace resource IDs when they are available, rather than pasting entire
197
- knowledge files. Continue from the returned workspace path or Builder handoff
198
- and report the actual verification result.
223
+ workspace, the online host path is mandatory: after writing the source brief,
224
+ call `start-workspace-app-creation` with a concise prompt, the inferred app id,
225
+ and the brief's repeatable workflow. Pass selected workspace resource IDs when
226
+ they are available, rather than pasting entire knowledge files. Continue from
227
+ the returned workspace path or Builder branch handoff and report the actual
228
+ verification result. Do not run the local scaffold commands in this host mode.
199
229
 
200
230
  Use a first-party template only when it materially fits the workflow. Keep the
201
231
  new app independent from the source thread's working tree unless the user
@@ -50,14 +50,33 @@ skills. For a ChatGPT Project or any host that exposes only the MCP connector,
50
50
  also place the skill instructions or this reference in the Project
51
51
  instructions/knowledge files. Then add and authenticate the Dispatch MCP
52
52
  connector from the packaged `adapters/chatgpt-mcp/connector.json`.
53
+ This single connector is enough: Dispatch provisions or reuses the Builder
54
+ project through the Builder Projects API, so do not ask the user to add a
55
+ separate Builder CMS MCP for app creation.
56
+ Builder's separate Fusion MCP is available as a custom remote connector at
57
+ `https://mcp.builder.io/mcp/fusion` for direct Builder work. It can run an
58
+ existing project, but it cannot provision the repo-backed Agent-Native
59
+ workspace project, so it is optional and not a replacement for the Dispatch
60
+ handoff in this skill. Do not add Builder's CMS MCP for this workflow.
61
+
62
+ For Claude Web, ChatGPT Web, and their web Projects, the host is an
63
+ orchestrator, not the build environment. After forming the source brief, call
64
+ the Dispatch `start-workspace-app-creation` action so Builder creates the app
65
+ in the connected workspace. Do not use the host's code interpreter, shell,
66
+ artifact editor, `create_workspace_app`, or local `pnpm`/`npm` commands. If the
67
+ handoff action is unavailable, stop and ask the user to authenticate Dispatch;
68
+ do not fall back to a local sandbox build. Claude Code and Codex Code are the
69
+ local-agent exception and may follow the implementation steps in the main
70
+ skill.
53
71
 
54
72
  In a new Project chat, say:
55
73
 
56
74
  ```text
57
75
  Turn this project into an app. Use the visible Project instructions,
58
76
  knowledge files, and any selected successful runs as the source. Create the
59
- app in the connected Agent-Native workspace, keep the source brief bounded,
60
- and report the real path and verification result.
77
+ app in the connected Agent-Native workspace through Dispatch and Builder, keep
78
+ the source brief bounded, and report the real Builder branch/path and
79
+ verification result. Do not build it in this chat's sandbox.
61
80
  ```
62
81
 
63
82
  If the host does not show the Project instructions or files to the model, stop
@@ -4,7 +4,7 @@ description: >-
4
4
  Turn visible project context, a proven thread, skill, or workflow into a
5
5
  runnable Agent-Native app with simple buttons, visible agent steps, preview,
6
6
  and deployment handoff. Use when a user invokes `/turn-into-app` or asks to
7
- make a workflow into an app.
7
+ make a workflow into an app, including from Claude or ChatGPT on the web.
8
8
  user-invocable: true
9
9
  scope: both
10
10
  metadata:
@@ -13,9 +13,36 @@ metadata:
13
13
 
14
14
  # Turn Into App
15
15
 
16
+ ## Host execution boundary
17
+
18
+ The build location depends on the host. Treat this as a hard routing rule:
19
+
20
+ - In Claude Web, ChatGPT Web, or a Claude/ChatGPT Project on the web, you are
21
+ the source analyst and handoff orchestrator. You must not build the app in
22
+ the host sandbox. Do not run `npm`, `pnpm`, `npx`, `agent-native create`, or
23
+ `add-app`; do not edit files, create artifacts, or start a local dev server.
24
+ After writing the bounded source brief, call the connected Dispatch action
25
+ `start-workspace-app-creation`. Pass the brief and repeatable workflow in
26
+ `prompt`, plus the inferred `appId`, `description`, `template`, and selected
27
+ `resourceIds` when available. This is the Builder handoff.
28
+ - Do not substitute the generic `create_workspace_app` MCP tool in an online
29
+ host. That tool is a local workspace scaffolder, not the Builder handoff.
30
+ - Connect the Agent-Native Dispatch MCP connector only. Dispatch uses the
31
+ authenticated Builder Projects API to reuse or provision the workspace
32
+ project before starting the Builder Cloud Agent; a separate Builder CMS MCP
33
+ connection is not required for this workflow.
34
+ - If `start-workspace-app-creation` is not available or Dispatch is not
35
+ authenticated, stop with the connector setup needed. Do not fall back to a
36
+ local build or claim that the app exists.
37
+ - In Claude Code, Codex Code, or another local code-agent runtime with a target
38
+ workspace, follow the local implementation steps below. The local agent may
39
+ scaffold, edit, run, and verify the app there.
40
+
16
41
  ## Default behavior
17
42
 
18
- This is an end-to-end build skill, not a request for an app proposal.
43
+ For a local code-agent runtime this is an end-to-end build skill, not a request
44
+ for an app proposal. For an online host, the end-to-end result is a verified
45
+ Builder handoff and the resulting workspace app, not code written in the host.
19
46
 
20
47
  - With no argument, choose the source in this order: visible project context,
21
48
  then the current thread. A fresh Claude or ChatGPT Project is a valid source
@@ -47,9 +74,12 @@ private web access, invent an importer, add fake OAuth, or scrape a logged-in
47
74
  page. If the needed context is not visible, ask for an export, transcript, or
48
75
  attachment and treat that artifact as imported source material.
49
76
 
50
- Deliver a fresh app in a new directory, implement the repeatable workflow with
51
- buttons and agent handoffs, start its dev server, verify the main path, and
52
- continue through build/deployment handoff. Do not stop at a plan.
77
+ For local code-agent runtimes, deliver a fresh app in a new directory,
78
+ implement the repeatable workflow with buttons and agent handoffs, start its dev
79
+ server, verify the main path, and continue through build/deployment handoff. Do
80
+ not stop at a plan. For online hosts, call Dispatch first after the source brief,
81
+ then report the returned Builder branch/path and verify the workspace app through
82
+ Dispatch when it becomes available.
53
83
 
54
84
  ## Fresh project context mode
55
85
 
@@ -190,12 +220,12 @@ Do not use `create` for an existing workspace; it scaffolds a new standalone
190
220
  workspace rather than adding an app to the current one.
191
221
 
192
222
  When the source came from a fresh external Project and the target is a Builder
193
- workspace, prefer the available Dispatch MCP workspace handoff after writing
194
- the source brief. Call `start-workspace-app-creation` with a concise prompt,
195
- the inferred app id, and the brief's repeatable workflow. Pass selected
196
- workspace resource IDs when they are available, rather than pasting entire
197
- knowledge files. Continue from the returned workspace path or Builder handoff
198
- and report the actual verification result.
223
+ workspace, the online host path is mandatory: after writing the source brief,
224
+ call `start-workspace-app-creation` with a concise prompt, the inferred app id,
225
+ and the brief's repeatable workflow. Pass selected workspace resource IDs when
226
+ they are available, rather than pasting entire knowledge files. Continue from
227
+ the returned workspace path or Builder branch handoff and report the actual
228
+ verification result. Do not run the local scaffold commands in this host mode.
199
229
 
200
230
  Use a first-party template only when it materially fits the workflow. Keep the
201
231
  new app independent from the source thread's working tree unless the user
@@ -50,14 +50,33 @@ skills. For a ChatGPT Project or any host that exposes only the MCP connector,
50
50
  also place the skill instructions or this reference in the Project
51
51
  instructions/knowledge files. Then add and authenticate the Dispatch MCP
52
52
  connector from the packaged `adapters/chatgpt-mcp/connector.json`.
53
+ This single connector is enough: Dispatch provisions or reuses the Builder
54
+ project through the Builder Projects API, so do not ask the user to add a
55
+ separate Builder CMS MCP for app creation.
56
+ Builder's separate Fusion MCP is available as a custom remote connector at
57
+ `https://mcp.builder.io/mcp/fusion` for direct Builder work. It can run an
58
+ existing project, but it cannot provision the repo-backed Agent-Native
59
+ workspace project, so it is optional and not a replacement for the Dispatch
60
+ handoff in this skill. Do not add Builder's CMS MCP for this workflow.
61
+
62
+ For Claude Web, ChatGPT Web, and their web Projects, the host is an
63
+ orchestrator, not the build environment. After forming the source brief, call
64
+ the Dispatch `start-workspace-app-creation` action so Builder creates the app
65
+ in the connected workspace. Do not use the host's code interpreter, shell,
66
+ artifact editor, `create_workspace_app`, or local `pnpm`/`npm` commands. If the
67
+ handoff action is unavailable, stop and ask the user to authenticate Dispatch;
68
+ do not fall back to a local sandbox build. Claude Code and Codex Code are the
69
+ local-agent exception and may follow the implementation steps in the main
70
+ skill.
53
71
 
54
72
  In a new Project chat, say:
55
73
 
56
74
  ```text
57
75
  Turn this project into an app. Use the visible Project instructions,
58
76
  knowledge files, and any selected successful runs as the source. Create the
59
- app in the connected Agent-Native workspace, keep the source brief bounded,
60
- and report the real path and verification result.
77
+ app in the connected Agent-Native workspace through Dispatch and Builder, keep
78
+ the source brief bounded, and report the real Builder branch/path and
79
+ verification result. Do not build it in this chat's sandbox.
61
80
  ```
62
81
 
63
82
  If the host does not show the Project instructions or files to the model, stop
@@ -4,7 +4,7 @@ description: >-
4
4
  Turn visible project context, a proven thread, skill, or workflow into a
5
5
  runnable Agent-Native app with simple buttons, visible agent steps, preview,
6
6
  and deployment handoff. Use when a user invokes `/turn-into-app` or asks to
7
- make a workflow into an app.
7
+ make a workflow into an app, including from Claude or ChatGPT on the web.
8
8
  user-invocable: true
9
9
  scope: both
10
10
  metadata:
@@ -13,9 +13,36 @@ metadata:
13
13
 
14
14
  # Turn Into App
15
15
 
16
+ ## Host execution boundary
17
+
18
+ The build location depends on the host. Treat this as a hard routing rule:
19
+
20
+ - In Claude Web, ChatGPT Web, or a Claude/ChatGPT Project on the web, you are
21
+ the source analyst and handoff orchestrator. You must not build the app in
22
+ the host sandbox. Do not run `npm`, `pnpm`, `npx`, `agent-native create`, or
23
+ `add-app`; do not edit files, create artifacts, or start a local dev server.
24
+ After writing the bounded source brief, call the connected Dispatch action
25
+ `start-workspace-app-creation`. Pass the brief and repeatable workflow in
26
+ `prompt`, plus the inferred `appId`, `description`, `template`, and selected
27
+ `resourceIds` when available. This is the Builder handoff.
28
+ - Do not substitute the generic `create_workspace_app` MCP tool in an online
29
+ host. That tool is a local workspace scaffolder, not the Builder handoff.
30
+ - Connect the Agent-Native Dispatch MCP connector only. Dispatch uses the
31
+ authenticated Builder Projects API to reuse or provision the workspace
32
+ project before starting the Builder Cloud Agent; a separate Builder CMS MCP
33
+ connection is not required for this workflow.
34
+ - If `start-workspace-app-creation` is not available or Dispatch is not
35
+ authenticated, stop with the connector setup needed. Do not fall back to a
36
+ local build or claim that the app exists.
37
+ - In Claude Code, Codex Code, or another local code-agent runtime with a target
38
+ workspace, follow the local implementation steps below. The local agent may
39
+ scaffold, edit, run, and verify the app there.
40
+
16
41
  ## Default behavior
17
42
 
18
- This is an end-to-end build skill, not a request for an app proposal.
43
+ For a local code-agent runtime this is an end-to-end build skill, not a request
44
+ for an app proposal. For an online host, the end-to-end result is a verified
45
+ Builder handoff and the resulting workspace app, not code written in the host.
19
46
 
20
47
  - With no argument, choose the source in this order: visible project context,
21
48
  then the current thread. A fresh Claude or ChatGPT Project is a valid source
@@ -47,9 +74,12 @@ private web access, invent an importer, add fake OAuth, or scrape a logged-in
47
74
  page. If the needed context is not visible, ask for an export, transcript, or
48
75
  attachment and treat that artifact as imported source material.
49
76
 
50
- Deliver a fresh app in a new directory, implement the repeatable workflow with
51
- buttons and agent handoffs, start its dev server, verify the main path, and
52
- continue through build/deployment handoff. Do not stop at a plan.
77
+ For local code-agent runtimes, deliver a fresh app in a new directory,
78
+ implement the repeatable workflow with buttons and agent handoffs, start its dev
79
+ server, verify the main path, and continue through build/deployment handoff. Do
80
+ not stop at a plan. For online hosts, call Dispatch first after the source brief,
81
+ then report the returned Builder branch/path and verify the workspace app through
82
+ Dispatch when it becomes available.
53
83
 
54
84
  ## Fresh project context mode
55
85
 
@@ -190,12 +220,12 @@ Do not use `create` for an existing workspace; it scaffolds a new standalone
190
220
  workspace rather than adding an app to the current one.
191
221
 
192
222
  When the source came from a fresh external Project and the target is a Builder
193
- workspace, prefer the available Dispatch MCP workspace handoff after writing
194
- the source brief. Call `start-workspace-app-creation` with a concise prompt,
195
- the inferred app id, and the brief's repeatable workflow. Pass selected
196
- workspace resource IDs when they are available, rather than pasting entire
197
- knowledge files. Continue from the returned workspace path or Builder handoff
198
- and report the actual verification result.
223
+ workspace, the online host path is mandatory: after writing the source brief,
224
+ call `start-workspace-app-creation` with a concise prompt, the inferred app id,
225
+ and the brief's repeatable workflow. Pass selected workspace resource IDs when
226
+ they are available, rather than pasting entire knowledge files. Continue from
227
+ the returned workspace path or Builder branch handoff and report the actual
228
+ verification result. Do not run the local scaffold commands in this host mode.
199
229
 
200
230
  Use a first-party template only when it materially fits the workflow. Keep the
201
231
  new app independent from the source thread's working tree unless the user
@@ -50,14 +50,33 @@ skills. For a ChatGPT Project or any host that exposes only the MCP connector,
50
50
  also place the skill instructions or this reference in the Project
51
51
  instructions/knowledge files. Then add and authenticate the Dispatch MCP
52
52
  connector from the packaged `adapters/chatgpt-mcp/connector.json`.
53
+ This single connector is enough: Dispatch provisions or reuses the Builder
54
+ project through the Builder Projects API, so do not ask the user to add a
55
+ separate Builder CMS MCP for app creation.
56
+ Builder's separate Fusion MCP is available as a custom remote connector at
57
+ `https://mcp.builder.io/mcp/fusion` for direct Builder work. It can run an
58
+ existing project, but it cannot provision the repo-backed Agent-Native
59
+ workspace project, so it is optional and not a replacement for the Dispatch
60
+ handoff in this skill. Do not add Builder's CMS MCP for this workflow.
61
+
62
+ For Claude Web, ChatGPT Web, and their web Projects, the host is an
63
+ orchestrator, not the build environment. After forming the source brief, call
64
+ the Dispatch `start-workspace-app-creation` action so Builder creates the app
65
+ in the connected workspace. Do not use the host's code interpreter, shell,
66
+ artifact editor, `create_workspace_app`, or local `pnpm`/`npm` commands. If the
67
+ handoff action is unavailable, stop and ask the user to authenticate Dispatch;
68
+ do not fall back to a local sandbox build. Claude Code and Codex Code are the
69
+ local-agent exception and may follow the implementation steps in the main
70
+ skill.
53
71
 
54
72
  In a new Project chat, say:
55
73
 
56
74
  ```text
57
75
  Turn this project into an app. Use the visible Project instructions,
58
76
  knowledge files, and any selected successful runs as the source. Create the
59
- app in the connected Agent-Native workspace, keep the source brief bounded,
60
- and report the real path and verification result.
77
+ app in the connected Agent-Native workspace through Dispatch and Builder, keep
78
+ the source brief bounded, and report the real Builder branch/path and
79
+ verification result. Do not build it in this chat's sandbox.
61
80
  ```
62
81
 
63
82
  If the host does not show the Project instructions or files to the model, stop