primitive-admin 1.1.0-alpha.9 → 1.1.0
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/README.md +523 -109
- package/assets/skill/skills/primitive-platform/SKILL.md +289 -0
- package/dist/bin/primitive.d.ts +2 -0
- package/dist/bin/primitive.js +372 -21
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/admins.d.ts +2 -0
- package/dist/src/commands/admins.js +136 -30
- package/dist/src/commands/admins.js.map +1 -1
- package/dist/src/commands/analytics.d.ts +2 -0
- package/dist/src/commands/analytics.js +713 -55
- package/dist/src/commands/analytics.js.map +1 -1
- package/dist/src/commands/apps.d.ts +2 -0
- package/dist/src/commands/apps.js +65 -100
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth-sessions.d.ts +7 -0
- package/dist/src/commands/auth-sessions.js +144 -0
- package/dist/src/commands/auth-sessions.js.map +1 -0
- package/dist/src/commands/auth.d.ts +2 -0
- package/dist/src/commands/auth.js +238 -108
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/blob-buckets.d.ts +2 -0
- package/dist/src/commands/blob-buckets.js +331 -0
- package/dist/src/commands/blob-buckets.js.map +1 -0
- package/dist/src/commands/catalog.d.ts +2 -0
- package/dist/src/commands/catalog.js +63 -48
- package/dist/src/commands/catalog.js.map +1 -1
- package/dist/src/commands/collection-type-configs.d.ts +2 -0
- package/dist/src/commands/collection-type-configs.js +85 -0
- package/dist/src/commands/collection-type-configs.js.map +1 -0
- package/dist/src/commands/collections.d.ts +2 -0
- package/dist/src/commands/collections.js +1282 -0
- package/dist/src/commands/collections.js.map +1 -0
- package/dist/src/commands/comparisons.d.ts +2 -0
- package/dist/src/commands/comparisons.js +6 -6
- package/dist/src/commands/comparisons.js.map +1 -1
- package/dist/src/commands/config.d.ts +46 -0
- package/dist/src/commands/config.js +465 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/connections.d.ts +2 -0
- package/dist/src/commands/connections.js +99 -0
- package/dist/src/commands/connections.js.map +1 -0
- package/dist/src/commands/cron-triggers.d.ts +2 -0
- package/dist/src/commands/cron-triggers.js +266 -0
- package/dist/src/commands/cron-triggers.js.map +1 -0
- package/dist/src/commands/database-type-configs.d.ts +2 -0
- package/dist/src/commands/database-type-configs.js +164 -0
- package/dist/src/commands/database-type-configs.js.map +1 -0
- package/dist/src/commands/database-types.d.ts +2 -0
- package/dist/src/commands/database-types.js +471 -0
- package/dist/src/commands/database-types.js.map +1 -0
- package/dist/src/commands/databases.d.ts +65 -0
- package/dist/src/commands/databases.js +1887 -243
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +60 -0
- package/dist/src/commands/documents.js +2888 -22
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/email-templates.d.ts +2 -0
- package/dist/src/commands/email-templates.js +175 -0
- package/dist/src/commands/email-templates.js.map +1 -0
- package/dist/src/commands/env.d.ts +23 -0
- package/dist/src/commands/env.js +395 -0
- package/dist/src/commands/env.js.map +1 -0
- package/dist/src/commands/feature-flags.d.ts +14 -0
- package/dist/src/commands/feature-flags.js +117 -0
- package/dist/src/commands/feature-flags.js.map +1 -0
- package/dist/src/commands/functions.d.ts +20 -0
- package/dist/src/commands/functions.js +1630 -0
- package/dist/src/commands/functions.js.map +1 -0
- package/dist/src/commands/group-type-configs.d.ts +2 -0
- package/dist/src/commands/group-type-configs.js +87 -0
- package/dist/src/commands/group-type-configs.js.map +1 -0
- package/dist/src/commands/groups.d.ts +2 -0
- package/dist/src/commands/groups.js +65 -113
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.d.ts +223 -0
- package/dist/src/commands/guides.js +627 -69
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/init.d.ts +37 -0
- package/dist/src/commands/init.js +1693 -208
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.d.ts +2 -0
- package/dist/src/commands/integrations.js +428 -187
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/llm.d.ts +2 -0
- package/dist/src/commands/llm.js +4 -2
- package/dist/src/commands/llm.js.map +1 -1
- package/dist/src/commands/locks.d.ts +8 -0
- package/dist/src/commands/locks.js +175 -0
- package/dist/src/commands/locks.js.map +1 -0
- package/dist/src/commands/metadata-category-configs.d.ts +12 -0
- package/dist/src/commands/metadata-category-configs.js +113 -0
- package/dist/src/commands/metadata-category-configs.js.map +1 -0
- package/dist/src/commands/metadata.d.ts +2 -0
- package/dist/src/commands/metadata.js +288 -0
- package/dist/src/commands/metadata.js.map +1 -0
- package/dist/src/commands/prompts.d.ts +2 -0
- package/dist/src/commands/prompts.js +322 -634
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/rule-sets.d.ts +3 -0
- package/dist/src/commands/rule-sets.js +139 -148
- package/dist/src/commands/rule-sets.js.map +1 -1
- package/dist/src/commands/scripts.d.ts +30 -0
- package/dist/src/commands/scripts.js +688 -0
- package/dist/src/commands/scripts.js.map +1 -0
- package/dist/src/commands/secrets.d.ts +2 -0
- package/dist/src/commands/secrets.js +109 -0
- package/dist/src/commands/secrets.js.map +1 -0
- package/dist/src/commands/sessions.d.ts +2 -0
- package/dist/src/commands/sessions.js +76 -0
- package/dist/src/commands/sessions.js.map +1 -0
- package/dist/src/commands/skill.d.ts +2 -0
- package/dist/src/commands/skill.js +29 -0
- package/dist/src/commands/skill.js.map +1 -0
- package/dist/src/commands/sync-app-settings.d.ts +158 -0
- package/dist/src/commands/sync-app-settings.js +328 -0
- package/dist/src/commands/sync-app-settings.js.map +1 -0
- package/dist/src/commands/sync.d.ts +2670 -0
- package/dist/src/commands/sync.js +17144 -834
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.d.ts +2 -0
- package/dist/src/commands/tokens.js +132 -22
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.d.ts +2 -0
- package/dist/src/commands/users.js +542 -24
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/vars.d.ts +8 -0
- package/dist/src/commands/vars.js +97 -0
- package/dist/src/commands/vars.js.map +1 -0
- package/dist/src/commands/waitlist.d.ts +2 -0
- package/dist/src/commands/waitlist.js +12 -11
- package/dist/src/commands/waitlist.js.map +1 -1
- package/dist/src/commands/webhooks.d.ts +31 -0
- package/dist/src/commands/webhooks.js +633 -0
- package/dist/src/commands/webhooks.js.map +1 -0
- package/dist/src/commands/workflows.d.ts +88 -0
- package/dist/src/commands/workflows.js +1568 -742
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/access-rule-display.d.ts +21 -0
- package/dist/src/lib/access-rule-display.js +34 -0
- package/dist/src/lib/access-rule-display.js.map +1 -0
- package/dist/src/lib/api-client.d.ts +2550 -0
- package/dist/src/lib/api-client.js +2503 -160
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +263 -0
- package/dist/src/lib/app-settings-descriptor.js +583 -0
- package/dist/src/lib/app-settings-descriptor.js.map +1 -0
- package/dist/src/lib/auth-flow.d.ts +8 -0
- package/dist/src/lib/batch.d.ts +26 -0
- package/dist/src/lib/batch.js +32 -0
- package/dist/src/lib/batch.js.map +1 -0
- package/dist/src/lib/block-layout.d.ts +160 -0
- package/dist/src/lib/block-layout.js +451 -0
- package/dist/src/lib/block-layout.js.map +1 -0
- package/dist/src/lib/block-selector.d.ts +58 -0
- package/dist/src/lib/block-selector.js +92 -0
- package/dist/src/lib/block-selector.js.map +1 -0
- package/dist/src/lib/canonical-json.d.ts +12 -0
- package/dist/src/lib/canonical-json.js +35 -0
- package/dist/src/lib/canonical-json.js.map +1 -0
- package/dist/src/lib/channel.d.ts +30 -0
- package/dist/src/lib/channel.js +68 -0
- package/dist/src/lib/channel.js.map +1 -0
- package/dist/src/lib/cli-manifest.d.ts +68 -0
- package/dist/src/lib/cli-manifest.js +71 -0
- package/dist/src/lib/cli-manifest.js.map +1 -0
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +101 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js +191 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
- package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
- package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
- package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +38 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +46 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
- package/dist/src/lib/collection-export.d.ts +184 -0
- package/dist/src/lib/collection-export.js +252 -0
- package/dist/src/lib/collection-export.js.map +1 -0
- package/dist/src/lib/config-json-field.d.ts +28 -0
- package/dist/src/lib/config-json-field.js +56 -0
- package/dist/src/lib/config-json-field.js.map +1 -0
- package/dist/src/lib/config-object-descriptor.d.ts +127 -0
- package/dist/src/lib/config-object-descriptor.js +740 -0
- package/dist/src/lib/config-object-descriptor.js.map +1 -0
- package/dist/src/lib/config-payload.d.ts +92 -0
- package/dist/src/lib/config-payload.js +161 -0
- package/dist/src/lib/config-payload.js.map +1 -0
- package/dist/src/lib/config-surface.d.ts +141 -0
- package/dist/src/lib/config-surface.js +368 -0
- package/dist/src/lib/config-surface.js.map +1 -0
- package/dist/src/lib/config-toml.d.ts +10 -0
- package/dist/src/lib/config-toml.js +42 -0
- package/dist/src/lib/config-toml.js.map +1 -0
- package/dist/src/lib/config.d.ts +71 -0
- package/dist/src/lib/config.js +71 -68
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/confirm-prompt.d.ts +83 -0
- package/dist/src/lib/confirm-prompt.js +110 -0
- package/dist/src/lib/confirm-prompt.js.map +1 -0
- package/dist/src/lib/constants.d.ts +11 -0
- package/dist/src/lib/constants.js +12 -0
- package/dist/src/lib/constants.js.map +1 -0
- package/dist/src/lib/crash-handlers.d.ts +20 -0
- package/dist/src/lib/crash-handlers.js +49 -0
- package/dist/src/lib/crash-handlers.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +104 -0
- package/dist/src/lib/credentials-store.js +336 -0
- package/dist/src/lib/credentials-store.js.map +1 -0
- package/dist/src/lib/csv.d.ts +47 -0
- package/dist/src/lib/csv.js +172 -0
- package/dist/src/lib/csv.js.map +1 -0
- package/dist/src/lib/data-input.d.ts +23 -0
- package/dist/src/lib/data-input.js +50 -0
- package/dist/src/lib/data-input.js.map +1 -0
- package/dist/src/lib/db-codegen/dbFingerprint.d.ts +10 -0
- package/dist/src/lib/db-codegen/dbFingerprint.js +17 -0
- package/dist/src/lib/db-codegen/dbFingerprint.js.map +1 -0
- package/dist/src/lib/db-codegen/dbGenerator.d.ts +67 -0
- package/dist/src/lib/db-codegen/dbGenerator.js +170 -0
- package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -0
- package/dist/src/lib/db-codegen/dbNaming.d.ts +87 -0
- package/dist/src/lib/db-codegen/dbNaming.js +180 -0
- package/dist/src/lib/db-codegen/dbNaming.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTemplates.d.ts +272 -0
- package/dist/src/lib/db-codegen/dbTemplates.js +480 -0
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTsTypes.d.ts +73 -0
- package/dist/src/lib/db-codegen/dbTsTypes.js +139 -0
- package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
- package/dist/src/lib/db-codegen/dbTypeIR.js +525 -0
- package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +112 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +211 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
- package/dist/src/lib/deprecation.d.ts +22 -0
- package/dist/src/lib/deprecation.js +43 -0
- package/dist/src/lib/deprecation.js.map +1 -0
- package/dist/src/lib/document-export-permissions.d.ts +30 -0
- package/dist/src/lib/document-export-permissions.js +54 -0
- package/dist/src/lib/document-export-permissions.js.map +1 -0
- package/dist/src/lib/document-ingest-artifact.d.ts +120 -0
- package/dist/src/lib/document-ingest-artifact.js +505 -0
- package/dist/src/lib/document-ingest-artifact.js.map +1 -0
- package/dist/src/lib/document-ingest-input.d.ts +51 -0
- package/dist/src/lib/document-ingest-input.js +132 -0
- package/dist/src/lib/document-ingest-input.js.map +1 -0
- package/dist/src/lib/document-ingest-rows.d.ts +137 -0
- package/dist/src/lib/document-ingest-rows.js +181 -0
- package/dist/src/lib/document-ingest-rows.js.map +1 -0
- package/dist/src/lib/document-ingest.d.ts +101 -0
- package/dist/src/lib/document-ingest.js +384 -0
- package/dist/src/lib/document-ingest.js.map +1 -0
- package/dist/src/lib/env-resolver-core.d.ts +258 -0
- package/dist/src/lib/env-resolver-core.js +447 -0
- package/dist/src/lib/env-resolver-core.js.map +1 -0
- package/dist/src/lib/env-resolver.d.ts +99 -0
- package/dist/src/lib/env-resolver.js +153 -0
- package/dist/src/lib/env-resolver.js.map +1 -0
- package/dist/src/lib/fetch.d.ts +5 -0
- package/dist/src/lib/function-bundle.d.ts +147 -0
- package/dist/src/lib/function-bundle.js +341 -0
- package/dist/src/lib/function-bundle.js.map +1 -0
- package/dist/src/lib/function-collect.d.ts +123 -0
- package/dist/src/lib/function-collect.js +610 -0
- package/dist/src/lib/function-collect.js.map +1 -0
- package/dist/src/lib/function-db-types.d.ts +202 -0
- package/dist/src/lib/function-db-types.js +870 -0
- package/dist/src/lib/function-db-types.js.map +1 -0
- package/dist/src/lib/function-document-types.d.ts +144 -0
- package/dist/src/lib/function-document-types.js +370 -0
- package/dist/src/lib/function-document-types.js.map +1 -0
- package/dist/src/lib/function-grants-preflight.d.ts +64 -0
- package/dist/src/lib/function-grants-preflight.js +105 -0
- package/dist/src/lib/function-grants-preflight.js.map +1 -0
- package/dist/src/lib/function-log-lines.d.ts +76 -0
- package/dist/src/lib/function-log-lines.js +160 -0
- package/dist/src/lib/function-log-lines.js.map +1 -0
- package/dist/src/lib/function-log-row.d.ts +29 -0
- package/dist/src/lib/function-log-row.js +73 -0
- package/dist/src/lib/function-log-row.js.map +1 -0
- package/dist/src/lib/function-log-tail.d.ts +132 -0
- package/dist/src/lib/function-log-tail.js +262 -0
- package/dist/src/lib/function-log-tail.js.map +1 -0
- package/dist/src/lib/function-run.d.ts +289 -0
- package/dist/src/lib/function-run.js +389 -0
- package/dist/src/lib/function-run.js.map +1 -0
- package/dist/src/lib/function-schema-codegen.d.ts +143 -0
- package/dist/src/lib/function-schema-codegen.js +420 -0
- package/dist/src/lib/function-schema-codegen.js.map +1 -0
- package/dist/src/lib/function-sync.d.ts +459 -0
- package/dist/src/lib/function-sync.js +1258 -0
- package/dist/src/lib/function-sync.js.map +1 -0
- package/dist/src/lib/function-trigger-listing.d.ts +27 -0
- package/dist/src/lib/function-trigger-listing.js +70 -0
- package/dist/src/lib/function-trigger-listing.js.map +1 -0
- package/dist/src/lib/function-typecheck.d.ts +86 -0
- package/dist/src/lib/function-typecheck.js +370 -0
- package/dist/src/lib/function-typecheck.js.map +1 -0
- package/dist/src/lib/function-versions.d.ts +122 -0
- package/dist/src/lib/function-versions.js +182 -0
- package/dist/src/lib/function-versions.js.map +1 -0
- package/dist/src/lib/generated-allowlist.d.ts +28 -0
- package/dist/src/lib/generated-allowlist.js +281 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -0
- package/dist/src/lib/generated-config-surfaces.d.ts +2936 -0
- package/dist/src/lib/generated-config-surfaces.js +10569 -0
- package/dist/src/lib/generated-config-surfaces.js.map +1 -0
- package/dist/src/lib/generated-sdk-types.d.ts +12 -0
- package/dist/src/lib/generated-sdk-types.js +13 -0
- package/dist/src/lib/generated-sdk-types.js.map +1 -0
- package/dist/src/lib/generated-template-lint.d.ts +212 -0
- package/dist/src/lib/generated-template-lint.js +624 -0
- package/dist/src/lib/generated-template-lint.js.map +1 -0
- package/dist/src/lib/init-adopt.d.ts +16 -0
- package/dist/src/lib/init-adopt.js +34 -0
- package/dist/src/lib/init-adopt.js.map +1 -0
- package/dist/src/lib/init-assets.d.ts +39 -0
- package/dist/src/lib/init-assets.js +97 -0
- package/dist/src/lib/init-assets.js.map +1 -0
- package/dist/src/lib/init-client-platforms.d.ts +14 -0
- package/dist/src/lib/init-client-platforms.js +71 -0
- package/dist/src/lib/init-client-platforms.js.map +1 -0
- package/dist/src/lib/init-config.d.ts +98 -0
- package/dist/src/lib/init-config.js +186 -0
- package/dist/src/lib/init-config.js.map +1 -0
- package/dist/src/lib/init-email-redirect-uris.d.ts +37 -0
- package/dist/src/lib/init-email-redirect-uris.js +46 -0
- package/dist/src/lib/init-email-redirect-uris.js.map +1 -0
- package/dist/src/lib/init-ios-links.d.ts +91 -0
- package/dist/src/lib/init-ios-links.js +219 -0
- package/dist/src/lib/init-ios-links.js.map +1 -0
- package/dist/src/lib/init-plan.d.ts +80 -0
- package/dist/src/lib/init-plan.js +95 -0
- package/dist/src/lib/init-plan.js.map +1 -0
- package/dist/src/lib/init-production-env.d.ts +48 -0
- package/dist/src/lib/init-production-env.js +59 -0
- package/dist/src/lib/init-production-env.js.map +1 -0
- package/dist/src/lib/init-schema.d.ts +74 -0
- package/dist/src/lib/init-schema.js +358 -0
- package/dist/src/lib/init-schema.js.map +1 -0
- package/dist/src/lib/init-xcode.d.ts +34 -0
- package/dist/src/lib/init-xcode.js +138 -0
- package/dist/src/lib/init-xcode.js.map +1 -0
- package/dist/src/lib/integration-request-config.d.ts +30 -0
- package/dist/src/lib/integration-request-config.js +145 -0
- package/dist/src/lib/integration-request-config.js.map +1 -0
- package/dist/src/lib/integration-selector.d.ts +42 -0
- package/dist/src/lib/integration-selector.js +46 -0
- package/dist/src/lib/integration-selector.js.map +1 -0
- package/dist/src/lib/ios-app-id.d.ts +34 -0
- package/dist/src/lib/ios-app-id.js +69 -0
- package/dist/src/lib/ios-app-id.js.map +1 -0
- package/dist/src/lib/list-options.d.ts +68 -0
- package/dist/src/lib/list-options.js +89 -0
- package/dist/src/lib/list-options.js.map +1 -0
- package/dist/src/lib/local-state.d.ts +55 -0
- package/dist/src/lib/local-state.js +167 -0
- package/dist/src/lib/local-state.js.map +1 -0
- package/dist/src/lib/local-test-cases.d.ts +63 -0
- package/dist/src/lib/local-test-cases.js +136 -0
- package/dist/src/lib/local-test-cases.js.map +1 -0
- package/dist/src/lib/log-inspection.d.ts +715 -0
- package/dist/src/lib/log-inspection.js +816 -0
- package/dist/src/lib/log-inspection.js.map +1 -0
- package/dist/src/lib/logout-admin-session.d.ts +33 -0
- package/dist/src/lib/logout-admin-session.js +70 -0
- package/dist/src/lib/logout-admin-session.js.map +1 -0
- package/dist/src/lib/migration-nag.d.ts +49 -0
- package/dist/src/lib/migration-nag.js +163 -0
- package/dist/src/lib/migration-nag.js.map +1 -0
- package/dist/src/lib/object-status-filter.d.ts +22 -0
- package/dist/src/lib/object-status-filter.js +45 -0
- package/dist/src/lib/object-status-filter.js.map +1 -0
- package/dist/src/lib/output.d.ts +124 -0
- package/dist/src/lib/output.js +219 -8
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/package-manager.d.ts +140 -0
- package/dist/src/lib/package-manager.js +305 -0
- package/dist/src/lib/package-manager.js.map +1 -0
- package/dist/src/lib/paginate.d.ts +98 -0
- package/dist/src/lib/paginate.js +112 -0
- package/dist/src/lib/paginate.js.map +1 -0
- package/dist/src/lib/platform-owned.d.ts +63 -0
- package/dist/src/lib/platform-owned.js +85 -0
- package/dist/src/lib/platform-owned.js.map +1 -0
- package/dist/src/lib/project-config.d.ts +122 -0
- package/dist/src/lib/project-config.js +244 -0
- package/dist/src/lib/project-config.js.map +1 -0
- package/dist/src/lib/prompt-cost-format.d.ts +11 -0
- package/dist/src/lib/prompt-cost-format.js +41 -0
- package/dist/src/lib/prompt-cost-format.js.map +1 -0
- package/dist/src/lib/prompt-schema-codegen.d.ts +147 -0
- package/dist/src/lib/prompt-schema-codegen.js +462 -0
- package/dist/src/lib/prompt-schema-codegen.js.map +1 -0
- package/dist/src/lib/query-operators.d.ts +43 -0
- package/dist/src/lib/query-operators.js +80 -0
- package/dist/src/lib/query-operators.js.map +1 -0
- package/dist/src/lib/record-filter.d.ts +18 -0
- package/dist/src/lib/record-filter.js +55 -0
- package/dist/src/lib/record-filter.js.map +1 -0
- package/dist/src/lib/refresh-admin-credentials.d.ts +73 -0
- package/dist/src/lib/refresh-admin-credentials.js +123 -0
- package/dist/src/lib/refresh-admin-credentials.js.map +1 -0
- package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
- package/dist/src/lib/resolve-init-dev-port.js +55 -0
- package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
- package/dist/src/lib/resolve-init-server.d.ts +64 -0
- package/dist/src/lib/resolve-init-server.js +77 -0
- package/dist/src/lib/resolve-init-server.js.map +1 -0
- package/dist/src/lib/resolve-owner.d.ts +19 -0
- package/dist/src/lib/resolve-owner.js +20 -0
- package/dist/src/lib/resolve-owner.js.map +1 -0
- package/dist/src/lib/resolve-platform.d.ts +74 -0
- package/dist/src/lib/resolve-platform.js +105 -0
- package/dist/src/lib/resolve-platform.js.map +1 -0
- package/dist/src/lib/run-status.d.ts +19 -0
- package/dist/src/lib/run-status.generated.d.ts +39 -0
- package/dist/src/lib/run-status.generated.js +66 -0
- package/dist/src/lib/run-status.generated.js.map +1 -0
- package/dist/src/lib/run-status.js +19 -0
- package/dist/src/lib/run-status.js.map +1 -0
- package/dist/src/lib/server-text-normalization.d.ts +51 -0
- package/dist/src/lib/server-text-normalization.js +90 -0
- package/dist/src/lib/server-text-normalization.js.map +1 -0
- package/dist/src/lib/server-url.d.ts +22 -0
- package/dist/src/lib/server-url.js +33 -0
- package/dist/src/lib/server-url.js.map +1 -0
- package/dist/src/lib/signing-secret-status.d.ts +81 -0
- package/dist/src/lib/signing-secret-status.js +116 -0
- package/dist/src/lib/signing-secret-status.js.map +1 -0
- package/dist/src/lib/skill-installer.d.ts +71 -0
- package/dist/src/lib/skill-installer.js +441 -0
- package/dist/src/lib/skill-installer.js.map +1 -0
- package/dist/src/lib/snapshot-audit-source.d.ts +45 -0
- package/dist/src/lib/snapshot-audit-source.js +58 -0
- package/dist/src/lib/snapshot-audit-source.js.map +1 -0
- package/dist/src/lib/snapshot-audit-store.d.ts +52 -0
- package/dist/src/lib/snapshot-audit-store.js +196 -0
- package/dist/src/lib/snapshot-audit-store.js.map +1 -0
- package/dist/src/lib/snapshot-audit.d.ts +207 -0
- package/dist/src/lib/snapshot-audit.js +431 -0
- package/dist/src/lib/snapshot-audit.js.map +1 -0
- package/dist/src/lib/snapshot-build-rows.d.ts +60 -0
- package/dist/src/lib/snapshot-build-rows.js +87 -0
- package/dist/src/lib/snapshot-build-rows.js.map +1 -0
- package/dist/src/lib/snapshot-build.d.ts +50 -0
- package/dist/src/lib/snapshot-build.js +111 -0
- package/dist/src/lib/snapshot-build.js.map +1 -0
- package/dist/src/lib/snapshot-manifest-layout.d.ts +61 -0
- package/dist/src/lib/snapshot-manifest-layout.js +70 -0
- package/dist/src/lib/snapshot-manifest-layout.js.map +1 -0
- package/dist/src/lib/snapshots.d.ts +98 -0
- package/dist/src/lib/snapshots.js +294 -0
- package/dist/src/lib/snapshots.js.map +1 -0
- package/dist/src/lib/step-run-table.d.ts +43 -0
- package/dist/src/lib/step-run-table.js +129 -0
- package/dist/src/lib/step-run-table.js.map +1 -0
- package/dist/src/lib/storage-pending-retry.d.ts +26 -0
- package/dist/src/lib/storage-pending-retry.js +42 -0
- package/dist/src/lib/storage-pending-retry.js.map +1 -0
- package/dist/src/lib/swift-codegen/agentGenerator.d.ts +42 -0
- package/dist/src/lib/swift-codegen/agentGenerator.js +118 -0
- package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/banners.d.ts +24 -0
- package/dist/src/lib/swift-codegen/banners.js +25 -0
- package/dist/src/lib/swift-codegen/banners.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js +926 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
- package/dist/src/lib/swift-codegen/functionGenerator.d.ts +139 -0
- package/dist/src/lib/swift-codegen/functionGenerator.js +462 -0
- package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/generator.d.ts +100 -0
- package/dist/src/lib/swift-codegen/generator.js +457 -0
- package/dist/src/lib/swift-codegen/generator.js.map +1 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +87 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js +661 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +94 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.js +155 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
- package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
- package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
- package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
- package/dist/src/lib/sync-dir-selector.d.ts +21 -0
- package/dist/src/lib/sync-dir-selector.js +30 -0
- package/dist/src/lib/sync-dir-selector.js.map +1 -0
- package/dist/src/lib/sync-paths.d.ts +128 -0
- package/dist/src/lib/sync-paths.js +195 -0
- package/dist/src/lib/sync-paths.js.map +1 -0
- package/dist/src/lib/sync-resource-types.d.ts +563 -0
- package/dist/src/lib/sync-resource-types.js +1073 -0
- package/dist/src/lib/sync-resource-types.js.map +1 -0
- package/dist/src/lib/sync-selectors.d.ts +138 -0
- package/dist/src/lib/sync-selectors.js +289 -0
- package/dist/src/lib/sync-selectors.js.map +1 -0
- package/dist/src/lib/template.d.ts +170 -0
- package/dist/src/lib/template.js +484 -68
- package/dist/src/lib/template.js.map +1 -1
- package/dist/src/lib/test-case-file-names.d.ts +40 -0
- package/dist/src/lib/test-case-file-names.js +91 -0
- package/dist/src/lib/test-case-file-names.js.map +1 -0
- package/dist/src/lib/test-case-keys.d.ts +29 -0
- package/dist/src/lib/test-case-keys.js +55 -0
- package/dist/src/lib/test-case-keys.js.map +1 -0
- package/dist/src/lib/test-case-variables.d.ts +29 -0
- package/dist/src/lib/test-case-variables.js +71 -0
- package/dist/src/lib/test-case-variables.js.map +1 -0
- package/dist/src/lib/token-inject.d.ts +56 -0
- package/dist/src/lib/token-inject.js +204 -0
- package/dist/src/lib/token-inject.js.map +1 -0
- package/dist/src/lib/toml-database-config.d.ts +123 -0
- package/dist/src/lib/toml-database-config.js +544 -0
- package/dist/src/lib/toml-database-config.js.map +1 -0
- package/dist/src/lib/toml-metadata-config.d.ts +151 -0
- package/dist/src/lib/toml-metadata-config.js +476 -0
- package/dist/src/lib/toml-metadata-config.js.map +1 -0
- package/dist/src/lib/toml-native-form.d.ts +46 -0
- package/dist/src/lib/toml-native-form.js +78 -0
- package/dist/src/lib/toml-native-form.js.map +1 -0
- package/dist/src/lib/toml-params-validator.d.ts +129 -0
- package/dist/src/lib/toml-params-validator.js +298 -0
- package/dist/src/lib/toml-params-validator.js.map +1 -0
- package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
- package/dist/src/lib/toml-scalar-edit.js +283 -0
- package/dist/src/lib/toml-scalar-edit.js.map +1 -0
- package/dist/src/lib/user-selector.d.ts +24 -0
- package/dist/src/lib/user-selector.js +33 -0
- package/dist/src/lib/user-selector.js.map +1 -0
- package/dist/src/lib/version-check.d.ts +35 -0
- package/dist/src/lib/version-check.js +241 -0
- package/dist/src/lib/version-check.js.map +1 -0
- package/dist/src/lib/watch.d.ts +121 -0
- package/dist/src/lib/watch.js +169 -0
- package/dist/src/lib/watch.js.map +1 -0
- package/dist/src/lib/web-url.d.ts +40 -0
- package/dist/src/lib/web-url.js +76 -0
- package/dist/src/lib/web-url.js.map +1 -0
- package/dist/src/lib/webhook-deliver.d.ts +209 -0
- package/dist/src/lib/webhook-deliver.js +519 -0
- package/dist/src/lib/webhook-deliver.js.map +1 -0
- package/dist/src/lib/workflow-apply.d.ts +110 -0
- package/dist/src/lib/workflow-apply.js +164 -0
- package/dist/src/lib/workflow-apply.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generator.d.ts +96 -0
- package/dist/src/lib/workflow-codegen/generator.js +361 -0
- package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
- package/dist/src/lib/workflow-codegen/invokerIR.d.ts +94 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js +76 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
- package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
- package/dist/src/lib/workflow-codegen/naming.js +81 -0
- package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +80 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js +303 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
- package/dist/src/lib/workflow-config-apply.d.ts +70 -0
- package/dist/src/lib/workflow-config-apply.js +137 -0
- package/dist/src/lib/workflow-config-apply.js.map +1 -0
- package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
- package/dist/src/lib/workflow-config-sidecar.js +96 -0
- package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
- package/dist/src/lib/workflow-defaults.d.ts +29 -0
- package/dist/src/lib/workflow-defaults.js +41 -0
- package/dist/src/lib/workflow-defaults.js.map +1 -0
- package/dist/src/lib/workflow-fragments.d.ts +64 -0
- package/dist/src/lib/workflow-fragments.js +342 -0
- package/dist/src/lib/workflow-fragments.js.map +1 -0
- package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
- package/dist/src/lib/workflow-include-preserve.js +286 -0
- package/dist/src/lib/workflow-include-preserve.js.map +1 -0
- package/dist/src/lib/workflow-payload.d.ts +98 -0
- package/dist/src/lib/workflow-payload.js +178 -0
- package/dist/src/lib/workflow-payload.js.map +1 -0
- package/dist/src/lib/workflow-toml-validator.d.ts +211 -0
- package/dist/src/lib/workflow-toml-validator.js +770 -0
- package/dist/src/lib/workflow-toml-validator.js.map +1 -0
- package/dist/src/lib/workflow-usage.d.ts +196 -0
- package/dist/src/lib/workflow-usage.js +310 -0
- package/dist/src/lib/workflow-usage.js.map +1 -0
- package/dist/src/types/index.d.ts +591 -0
- package/dist/src/validators.d.ts +65 -0
- package/dist/src/validators.js +64 -0
- package/dist/src/validators.js.map +1 -0
- package/package.json +34 -9
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure resolution of the target server for `primitive init`.
|
|
3
|
+
*
|
|
4
|
+
* Background (issue #2376): the init-config TOML documents a `server` key, but
|
|
5
|
+
* `init` only ever read the `-s/--server` flag and the current credentials. A
|
|
6
|
+
* config that named a different server was silently ignored — the app was
|
|
7
|
+
* created on the CLI's current server and the scaffolded `primitive.json` got
|
|
8
|
+
* that URL too.
|
|
9
|
+
*
|
|
10
|
+
* Precedence (highest first):
|
|
11
|
+
* (a) `-s/--server` flag
|
|
12
|
+
* (b) init-config `server` key
|
|
13
|
+
* (c) the server the CLI is currently logged into
|
|
14
|
+
* (d) `DEFAULT_SERVER_URL`
|
|
15
|
+
*
|
|
16
|
+
* Case (c) has one interactive twist: when the current server is not the
|
|
17
|
+
* default and the run is interactive (no flag, no config, TTY stdin), init
|
|
18
|
+
* asks which server to use. The prompt is TTY- and config-guarded here so a
|
|
19
|
+
* piped/CI stdin can never trigger the `@inquirer/prompts` closed-stdin crash
|
|
20
|
+
* (same hazard hardened in #972/#999).
|
|
21
|
+
*
|
|
22
|
+
* Extracting the decision into a pure function with an injectable prompt
|
|
23
|
+
* mirrors `resolve-platform.ts`, which the same command already uses, and makes
|
|
24
|
+
* the precedence contract unit-testable without a network or a terminal.
|
|
25
|
+
*/
|
|
26
|
+
import { normalizeServerUrl } from "./channel.js";
|
|
27
|
+
/**
|
|
28
|
+
* Canonical form used for both comparison and the value written into the
|
|
29
|
+
* scaffold: `channel.ts`'s `normalizeServerUrl` (shared with the
|
|
30
|
+
* branch-as-channel detection) strips trailing slashes so `https://host/` and
|
|
31
|
+
* `https://host` compare equal and `${serverUrl}${path}` never doubles up.
|
|
32
|
+
* Unparseable values are left as-is — `validateServerUrl` (now the shared
|
|
33
|
+
* validator in `server-url.ts`) rejects them before they reach here.
|
|
34
|
+
*/
|
|
35
|
+
function canonicalize(url) {
|
|
36
|
+
const trimmed = url.trim();
|
|
37
|
+
return normalizeServerUrl(trimmed) ?? trimmed;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve the server `primitive init` should target, per the precedence above.
|
|
41
|
+
*/
|
|
42
|
+
export async function resolveInitServer(options) {
|
|
43
|
+
const currentServer = options.currentServer
|
|
44
|
+
? canonicalize(options.currentServer)
|
|
45
|
+
: undefined;
|
|
46
|
+
const defaultServer = canonicalize(options.defaultServer);
|
|
47
|
+
const changedFrom = (serverUrl) => !!currentServer && currentServer !== serverUrl;
|
|
48
|
+
// (a)/(b) An explicitly requested server wins; the flag beats the config.
|
|
49
|
+
const explicit = options.flagServer ?? options.configServer;
|
|
50
|
+
if (explicit !== undefined) {
|
|
51
|
+
const serverUrl = canonicalize(explicit);
|
|
52
|
+
return {
|
|
53
|
+
serverUrl,
|
|
54
|
+
source: options.flagServer !== undefined ? "flag" : "config",
|
|
55
|
+
serverChanged: changedFrom(serverUrl),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// (c) Interactive runs on a non-default server ask where to create the app.
|
|
59
|
+
if (currentServer &&
|
|
60
|
+
currentServer !== defaultServer &&
|
|
61
|
+
!options.hasConfig &&
|
|
62
|
+
options.isTTY) {
|
|
63
|
+
const serverUrl = canonicalize(await options.promptFn());
|
|
64
|
+
return {
|
|
65
|
+
serverUrl,
|
|
66
|
+
source: "prompt",
|
|
67
|
+
serverChanged: changedFrom(serverUrl),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// (c)/(d) Stay on the current server, or fall back to the default.
|
|
71
|
+
return {
|
|
72
|
+
serverUrl: currentServer || defaultServer,
|
|
73
|
+
source: currentServer ? "current" : "default",
|
|
74
|
+
serverChanged: false,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=resolve-init-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-init-server.js","sourceRoot":"","sources":["../../../src/lib/resolve-init-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA8ClD;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAiC;IAEjC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa;QACzC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC;QACrC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAW,EAAE,CACjD,CAAC,CAAC,aAAa,IAAI,aAAa,KAAK,SAAS,CAAC;IAEjD,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO;YACL,SAAS;YACT,MAAM,EAAE,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YAC5D,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC;SACtC,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,IACE,aAAa;QACb,aAAa,KAAK,aAAa;QAC/B,CAAC,OAAO,CAAC,SAAS;QAClB,OAAO,CAAC,KAAK,EACb,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,OAAO;YACL,SAAS;YACT,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC;SACtC,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,OAAO;QACL,SAAS,EAAE,aAAa,IAAI,aAAa;QACzC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC7C,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One email → userId resolution for every `--owner` flag the CLI carries.
|
|
3
|
+
*
|
|
4
|
+
* It lived inside `commands/documents.ts` from #2763 until #3641 gave
|
|
5
|
+
* `collections create` the same flag. Two copies of a lookup would be two
|
|
6
|
+
* chances to reintroduce the failure #2763 removed — the old admin-only list
|
|
7
|
+
* wrapper flattened every error, including a 403, into "no such user" — so it
|
|
8
|
+
* moved here whole rather than being written a second time.
|
|
9
|
+
*/
|
|
10
|
+
import { ApiClient } from "./api-client.js";
|
|
11
|
+
/**
|
|
12
|
+
* Resolve a `--owner` value to a userId. A value containing "@" is looked up
|
|
13
|
+
* by exact email through the member-accessible `users/lookup` endpoint
|
|
14
|
+
* (issue #2763); anything else is already a user id and is passed through.
|
|
15
|
+
* Failures throw with the server's own message — a permission problem must
|
|
16
|
+
* not read as "no such user", which is how the old admin-only lookup
|
|
17
|
+
* reported it.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveOwnerUserId(client: ApiClient, appId: string, owner: string): Promise<string>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { info } from "./output.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a `--owner` value to a userId. A value containing "@" is looked up
|
|
4
|
+
* by exact email through the member-accessible `users/lookup` endpoint
|
|
5
|
+
* (issue #2763); anything else is already a user id and is passed through.
|
|
6
|
+
* Failures throw with the server's own message — a permission problem must
|
|
7
|
+
* not read as "no such user", which is how the old admin-only lookup
|
|
8
|
+
* reported it.
|
|
9
|
+
*/
|
|
10
|
+
export async function resolveOwnerUserId(client, appId, owner) {
|
|
11
|
+
if (!owner.includes("@"))
|
|
12
|
+
return owner;
|
|
13
|
+
const lookup = await client.lookupUserByEmail(appId, owner);
|
|
14
|
+
if (!lookup?.exists || !lookup.user) {
|
|
15
|
+
throw new Error(`No app user found with email "${owner}" in app ${appId}.`);
|
|
16
|
+
}
|
|
17
|
+
info(`Resolved owner email to userId: ${lookup.user.userId}`);
|
|
18
|
+
return lookup.user.userId;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=resolve-owner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-owner.js","sourceRoot":"","sources":["../../../src/lib/resolve-owner.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAiB,EACjB,KAAa,EACb,KAAa;IAEb,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,YAAY,KAAK,GAAG,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,mCAAmC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure resolution of the target platforms for `primitive init`.
|
|
3
|
+
*
|
|
4
|
+
* Background (issue #1009): `primitive init` must become platform-aware. The
|
|
5
|
+
* commander `-p, --platform` option no longer carries a `"web"` default, so an
|
|
6
|
+
* omitted flag is `undefined` and distinguishable from an explicit
|
|
7
|
+
* `--platform web`. Resolution follows a 4-case interactivity contract:
|
|
8
|
+
*
|
|
9
|
+
* (a) explicit `--platform` flag set -> use it (never prompt)
|
|
10
|
+
* (b) init-config TOML present (configPlatform may be set) -> use config
|
|
11
|
+
* value, else fall back to "web" (never prompt)
|
|
12
|
+
* (c) interactive TTY, no flag, no config -> prompt with `checkbox`
|
|
13
|
+
* (d) non-TTY, no flag, no config -> fall back to "web" WITHOUT
|
|
14
|
+
* hanging and WITHOUT the `ERR_USE_AFTER_CLOSE` crash that
|
|
15
|
+
* `@inquirer/prompts` throws on a closed/piped stdin (same hazard family
|
|
16
|
+
* hardened in #972/#999 — see `confirm-prompt.ts`).
|
|
17
|
+
*
|
|
18
|
+
* Issue #2890 makes the resolved value a LIST: one Primitive app can have a web
|
|
19
|
+
* client and a native client, and `primitive init my-app --platform web,ios`
|
|
20
|
+
* scaffolds both into one repository. A single platform is just a list of one,
|
|
21
|
+
* so the contract above is unchanged — and the interactive case is a
|
|
22
|
+
* multi-select rather than a single-select.
|
|
23
|
+
*
|
|
24
|
+
* Extracting the decision into a pure function (with injectable `isTTY` /
|
|
25
|
+
* `promptFn`, mirroring `confirm-prompt.ts`) makes the otherwise
|
|
26
|
+
* terminal-dependent interactivity contract unit-testable.
|
|
27
|
+
*/
|
|
28
|
+
export type Platform = "web" | "ios";
|
|
29
|
+
/**
|
|
30
|
+
* Every platform `--platform` accepts, in the order a run processes them: the
|
|
31
|
+
* web client is configured first (it owns the dev-port step). Parsing
|
|
32
|
+
* normalizes to this order, so `--platform ios,web` and `--platform web,ios`
|
|
33
|
+
* scaffold the same repository.
|
|
34
|
+
*/
|
|
35
|
+
export declare const SUPPORTED_PLATFORMS: readonly ["web", "ios"];
|
|
36
|
+
/** Prompt thunk returning the chosen platforms. Injectable for testing. */
|
|
37
|
+
export type PlatformPromptFn = () => Promise<Platform[]>;
|
|
38
|
+
export interface ParsePlatformsResult {
|
|
39
|
+
/** Whether the value named a valid, duplicate-free, non-empty platform set. */
|
|
40
|
+
ok: boolean;
|
|
41
|
+
/** The validated platforms in canonical order; empty when `ok` is false. */
|
|
42
|
+
platforms: Platform[];
|
|
43
|
+
/** A user-facing message naming the supported set; set when `ok` is false. */
|
|
44
|
+
error?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parses a `--platform` flag value (`"web"`, `"web,ios"`) or an init-config
|
|
48
|
+
* `platform` key (a string or a TOML array) into a validated platform list.
|
|
49
|
+
*
|
|
50
|
+
* Returns a result rather than throwing so `validateInitConfig` can collect the
|
|
51
|
+
* message alongside its other errors and the flag path can print it and exit.
|
|
52
|
+
*/
|
|
53
|
+
export declare function parsePlatformList(raw: string | readonly string[]): ParsePlatformsResult;
|
|
54
|
+
export interface ResolvePlatformsOptions {
|
|
55
|
+
/** Parsed `--platform` flag, or `undefined` when omitted. */
|
|
56
|
+
flag?: Platform[];
|
|
57
|
+
/** Parsed `platform` key from a loaded `.primitive-init.toml`, if any. */
|
|
58
|
+
configPlatform?: Platform[];
|
|
59
|
+
/**
|
|
60
|
+
* Whether a non-interactive init-config file is in effect. When `true`, the
|
|
61
|
+
* prompt is skipped entirely (case b) regardless of TTY.
|
|
62
|
+
*/
|
|
63
|
+
hasConfig: boolean;
|
|
64
|
+
/** Whether stdin is an interactive TTY. Inject `false` to exercise case (d). */
|
|
65
|
+
isTTY: boolean;
|
|
66
|
+
/** Prompt function used only in the interactive case (c). */
|
|
67
|
+
promptFn: PlatformPromptFn;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Resolve the target platforms per the 4-case interactivity contract above.
|
|
71
|
+
*
|
|
72
|
+
* @returns a non-empty list of platforms to scaffold.
|
|
73
|
+
*/
|
|
74
|
+
export declare function resolvePlatforms(options: ResolvePlatformsOptions): Promise<Platform[]>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure resolution of the target platforms for `primitive init`.
|
|
3
|
+
*
|
|
4
|
+
* Background (issue #1009): `primitive init` must become platform-aware. The
|
|
5
|
+
* commander `-p, --platform` option no longer carries a `"web"` default, so an
|
|
6
|
+
* omitted flag is `undefined` and distinguishable from an explicit
|
|
7
|
+
* `--platform web`. Resolution follows a 4-case interactivity contract:
|
|
8
|
+
*
|
|
9
|
+
* (a) explicit `--platform` flag set -> use it (never prompt)
|
|
10
|
+
* (b) init-config TOML present (configPlatform may be set) -> use config
|
|
11
|
+
* value, else fall back to "web" (never prompt)
|
|
12
|
+
* (c) interactive TTY, no flag, no config -> prompt with `checkbox`
|
|
13
|
+
* (d) non-TTY, no flag, no config -> fall back to "web" WITHOUT
|
|
14
|
+
* hanging and WITHOUT the `ERR_USE_AFTER_CLOSE` crash that
|
|
15
|
+
* `@inquirer/prompts` throws on a closed/piped stdin (same hazard family
|
|
16
|
+
* hardened in #972/#999 — see `confirm-prompt.ts`).
|
|
17
|
+
*
|
|
18
|
+
* Issue #2890 makes the resolved value a LIST: one Primitive app can have a web
|
|
19
|
+
* client and a native client, and `primitive init my-app --platform web,ios`
|
|
20
|
+
* scaffolds both into one repository. A single platform is just a list of one,
|
|
21
|
+
* so the contract above is unchanged — and the interactive case is a
|
|
22
|
+
* multi-select rather than a single-select.
|
|
23
|
+
*
|
|
24
|
+
* Extracting the decision into a pure function (with injectable `isTTY` /
|
|
25
|
+
* `promptFn`, mirroring `confirm-prompt.ts`) makes the otherwise
|
|
26
|
+
* terminal-dependent interactivity contract unit-testable.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Every platform `--platform` accepts, in the order a run processes them: the
|
|
30
|
+
* web client is configured first (it owns the dev-port step). Parsing
|
|
31
|
+
* normalizes to this order, so `--platform ios,web` and `--platform web,ios`
|
|
32
|
+
* scaffold the same repository.
|
|
33
|
+
*/
|
|
34
|
+
export const SUPPORTED_PLATFORMS = ["web", "ios"];
|
|
35
|
+
const SUPPORTED_LIST = SUPPORTED_PLATFORMS.join(", ");
|
|
36
|
+
/** The CLI compiles with `strict: false`, so callers read `ok` explicitly. */
|
|
37
|
+
function rejected(error) {
|
|
38
|
+
return { ok: false, platforms: [], error };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parses a `--platform` flag value (`"web"`, `"web,ios"`) or an init-config
|
|
42
|
+
* `platform` key (a string or a TOML array) into a validated platform list.
|
|
43
|
+
*
|
|
44
|
+
* Returns a result rather than throwing so `validateInitConfig` can collect the
|
|
45
|
+
* message alongside its other errors and the flag path can print it and exit.
|
|
46
|
+
*/
|
|
47
|
+
export function parsePlatformList(raw) {
|
|
48
|
+
const entries = typeof raw === "string" ? raw.split(",") : [...raw];
|
|
49
|
+
const platforms = [];
|
|
50
|
+
for (const entry of entries) {
|
|
51
|
+
if (typeof entry !== "string") {
|
|
52
|
+
return rejected(`Platform entries must be strings. Supported platforms: ${SUPPORTED_LIST}`);
|
|
53
|
+
}
|
|
54
|
+
const value = entry.trim();
|
|
55
|
+
if (value.length === 0) {
|
|
56
|
+
return rejected(`Empty platform entry. Supported platforms: ${SUPPORTED_LIST}`);
|
|
57
|
+
}
|
|
58
|
+
if (!SUPPORTED_PLATFORMS.includes(value)) {
|
|
59
|
+
return rejected(`Unknown platform "${value}". Supported platforms: ${SUPPORTED_LIST}`);
|
|
60
|
+
}
|
|
61
|
+
if (platforms.includes(value)) {
|
|
62
|
+
return rejected(`Duplicate platform "${value}". Name each platform once. Supported platforms: ${SUPPORTED_LIST}`);
|
|
63
|
+
}
|
|
64
|
+
platforms.push(value);
|
|
65
|
+
}
|
|
66
|
+
if (platforms.length === 0) {
|
|
67
|
+
return rejected(`No platform selected. Supported platforms: ${SUPPORTED_LIST}`);
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
ok: true,
|
|
71
|
+
platforms: SUPPORTED_PLATFORMS.filter((p) => platforms.includes(p)),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Resolve the target platforms per the 4-case interactivity contract above.
|
|
76
|
+
*
|
|
77
|
+
* @returns a non-empty list of platforms to scaffold.
|
|
78
|
+
*/
|
|
79
|
+
export async function resolvePlatforms(options) {
|
|
80
|
+
// A selection with nothing in it has nothing to scaffold. The prompt's own
|
|
81
|
+
// `validate` re-asks rather than returning one, and `parsePlatformList`
|
|
82
|
+
// rejects one — this is the backstop, so no caller ever plans a layout with
|
|
83
|
+
// no clients in it.
|
|
84
|
+
const required = (platforms) => {
|
|
85
|
+
if (platforms.length === 0) {
|
|
86
|
+
throw new Error(`Select at least one platform. Supported platforms: ${SUPPORTED_LIST}`);
|
|
87
|
+
}
|
|
88
|
+
return platforms;
|
|
89
|
+
};
|
|
90
|
+
// (a) explicit flag wins, no prompt.
|
|
91
|
+
if (options.flag !== undefined) {
|
|
92
|
+
return required(options.flag);
|
|
93
|
+
}
|
|
94
|
+
// (b) non-interactive config present: use its platforms or default to web.
|
|
95
|
+
if (options.hasConfig) {
|
|
96
|
+
return required(options.configPlatform ?? ["web"]);
|
|
97
|
+
}
|
|
98
|
+
// (c) interactive TTY, no flag, no config: prompt.
|
|
99
|
+
if (options.isTTY) {
|
|
100
|
+
return required(await options.promptFn());
|
|
101
|
+
}
|
|
102
|
+
// (d) non-TTY, no flag, no config: never prompt; fall back to web.
|
|
103
|
+
return ["web"];
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=resolve-platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-platform.js","sourceRoot":"","sources":["../../../src/lib/resolve-platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAC;AAE3D,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AActD,8EAA8E;AAC9E,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAA+B;IAE/B,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,QAAQ,CACb,0DAA0D,cAAc,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC,8CAA8C,cAAc,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAE,mBAAyC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,QAAQ,CACb,qBAAqB,KAAK,2BAA2B,cAAc,EAAE,CACtE,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAiB,CAAC,EAAE,CAAC;YAC1C,OAAO,QAAQ,CACb,uBAAuB,KAAK,oDAAoD,cAAc,EAAE,CACjG,CAAC;QACJ,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,KAAiB,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC,8CAA8C,cAAc,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC;AAkBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgC;IAEhC,2EAA2E;IAC3E,wEAAwE;IACxE,4EAA4E;IAC5E,oBAAoB;IACpB,MAAM,QAAQ,GAAG,CAAC,SAAqB,EAAc,EAAE;QACrD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,sDAAsD,cAAc,EAAE,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,qCAAqC;IACrC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,2EAA2E;IAC3E,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,mDAAmD;IACnD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,mEAAmE;IACnE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The canonical workflow-run status vocabulary, as the CLI sees it (#2348).
|
|
3
|
+
*
|
|
4
|
+
* The server reconciles every status surface (the app status endpoints,
|
|
5
|
+
* `listRuns`, and all three admin status handlers) onto exactly these values
|
|
6
|
+
* before they go on the wire, so the CLI never has to re-derive terminality
|
|
7
|
+
* from a raw Cloudflare spelling (`complete`, `errored`, `waiting`) again.
|
|
8
|
+
* Those spellings no longer reach a client.
|
|
9
|
+
*
|
|
10
|
+
* #2636 — the vocabulary itself is no longer copied by hand: it is GENERATED
|
|
11
|
+
* from the server's `src/workflows/run-status.ts` into
|
|
12
|
+
* `run-status.generated.ts` (`pnpm gen:run-status`) and re-exported here, so a
|
|
13
|
+
* future status is a one-site edit plus regeneration rather than four
|
|
14
|
+
* hand-edits that a lagging copy turns into a hung poll loop. This module stays
|
|
15
|
+
* the ONE place `cli/` imports the vocabulary from — every command and
|
|
16
|
+
* formatter reads it from here.
|
|
17
|
+
*/
|
|
18
|
+
export { RUN_STATUSES, RUN_STATUS_LIST, TERMINAL_RUN_STATUSES, APPLY_RUN_STATUSES, IN_FLIGHT_RUN_STATUSES, SETTLED_RUN_STATUSES, isRunStatus, } from "./run-status.generated.js";
|
|
19
|
+
export type { RunStatus } from "./run-status.generated.js";
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED FILE — do not edit by hand.
|
|
3
|
+
*
|
|
4
|
+
* The canonical workflow-run status vocabulary, as the CLI sees it.
|
|
5
|
+
* Generated from the server's `src/workflows/run-status.ts` by
|
|
6
|
+
* `scripts/gen-run-status-mirrors.mjs` (`pnpm gen:run-status`), because
|
|
7
|
+
* the CLI is a separately built package and cannot import worker
|
|
8
|
+
* source. A stale copy is worse than a missing feature: a poll loop whose
|
|
9
|
+
* terminal set predates a new status hangs until its own timeout, so the
|
|
10
|
+
* freshness check in `tests/unit/workflows/run-status-mirrors.test.ts` fails
|
|
11
|
+
* the build rather than letting the two drift.
|
|
12
|
+
*
|
|
13
|
+
* Hand-maintained values that belong to the CLI alone (labels, badge
|
|
14
|
+
* colours, help text) live in `cli/src/lib/run-status.ts`, which re-exports
|
|
15
|
+
* everything below.
|
|
16
|
+
*/
|
|
17
|
+
export declare const RUN_STATUSES: readonly ["queued", "running", "apply_pending", "apply_claimed", "completed", "failed", "terminated", "missing", "skipped"];
|
|
18
|
+
export type RunStatus = (typeof RUN_STATUSES)[number];
|
|
19
|
+
/** Comma-separated list for help text and error messages. */
|
|
20
|
+
export declare const RUN_STATUS_LIST: string;
|
|
21
|
+
/** True terminal: the run reached a known end state. */
|
|
22
|
+
export declare const TERMINAL_RUN_STATUSES: ReadonlySet<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Apply-flow states: the run finished executing but is parked waiting for a
|
|
25
|
+
* client to claim and apply its result. It will not advance on its own.
|
|
26
|
+
*/
|
|
27
|
+
export declare const APPLY_RUN_STATUSES: ReadonlySet<string>;
|
|
28
|
+
/** In-flight statuses — the run has not settled and polling should continue. */
|
|
29
|
+
export declare const IN_FLIGHT_RUN_STATUSES: ReadonlySet<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Settled statuses: terminal ∪ apply-flow ∪ `missing` — the complement of
|
|
32
|
+
* `IN_FLIGHT_RUN_STATUSES` over the canonical vocabulary.
|
|
33
|
+
*
|
|
34
|
+
* This is the set every poll loop stops on. Waiting past any of these is
|
|
35
|
+
* pointless: a terminal run is done, an apply-flow run is parked until a client
|
|
36
|
+
* acts, and a `missing` run has no live instance to observe.
|
|
37
|
+
*/
|
|
38
|
+
export declare const SETTLED_RUN_STATUSES: ReadonlySet<string>;
|
|
39
|
+
export declare function isRunStatus(value: unknown): value is RunStatus;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED FILE — do not edit by hand.
|
|
3
|
+
*
|
|
4
|
+
* The canonical workflow-run status vocabulary, as the CLI sees it.
|
|
5
|
+
* Generated from the server's `src/workflows/run-status.ts` by
|
|
6
|
+
* `scripts/gen-run-status-mirrors.mjs` (`pnpm gen:run-status`), because
|
|
7
|
+
* the CLI is a separately built package and cannot import worker
|
|
8
|
+
* source. A stale copy is worse than a missing feature: a poll loop whose
|
|
9
|
+
* terminal set predates a new status hangs until its own timeout, so the
|
|
10
|
+
* freshness check in `tests/unit/workflows/run-status-mirrors.test.ts` fails
|
|
11
|
+
* the build rather than letting the two drift.
|
|
12
|
+
*
|
|
13
|
+
* Hand-maintained values that belong to the CLI alone (labels, badge
|
|
14
|
+
* colours, help text) live in `cli/src/lib/run-status.ts`, which re-exports
|
|
15
|
+
* everything below.
|
|
16
|
+
*/
|
|
17
|
+
export const RUN_STATUSES = [
|
|
18
|
+
"queued",
|
|
19
|
+
"running",
|
|
20
|
+
"apply_pending",
|
|
21
|
+
"apply_claimed",
|
|
22
|
+
"completed",
|
|
23
|
+
"failed",
|
|
24
|
+
"terminated",
|
|
25
|
+
"missing",
|
|
26
|
+
"skipped",
|
|
27
|
+
];
|
|
28
|
+
/** Comma-separated list for help text and error messages. */
|
|
29
|
+
export const RUN_STATUS_LIST = RUN_STATUSES.join(", ");
|
|
30
|
+
/** True terminal: the run reached a known end state. */
|
|
31
|
+
export const TERMINAL_RUN_STATUSES = new Set([
|
|
32
|
+
"completed",
|
|
33
|
+
"failed",
|
|
34
|
+
"terminated",
|
|
35
|
+
"skipped",
|
|
36
|
+
]);
|
|
37
|
+
/**
|
|
38
|
+
* Apply-flow states: the run finished executing but is parked waiting for a
|
|
39
|
+
* client to claim and apply its result. It will not advance on its own.
|
|
40
|
+
*/
|
|
41
|
+
export const APPLY_RUN_STATUSES = new Set([
|
|
42
|
+
"apply_pending",
|
|
43
|
+
"apply_claimed",
|
|
44
|
+
]);
|
|
45
|
+
/** In-flight statuses — the run has not settled and polling should continue. */
|
|
46
|
+
export const IN_FLIGHT_RUN_STATUSES = new Set([
|
|
47
|
+
"queued",
|
|
48
|
+
"running",
|
|
49
|
+
]);
|
|
50
|
+
/**
|
|
51
|
+
* Settled statuses: terminal ∪ apply-flow ∪ `missing` — the complement of
|
|
52
|
+
* `IN_FLIGHT_RUN_STATUSES` over the canonical vocabulary.
|
|
53
|
+
*
|
|
54
|
+
* This is the set every poll loop stops on. Waiting past any of these is
|
|
55
|
+
* pointless: a terminal run is done, an apply-flow run is parked until a client
|
|
56
|
+
* acts, and a `missing` run has no live instance to observe.
|
|
57
|
+
*/
|
|
58
|
+
export const SETTLED_RUN_STATUSES = new Set([
|
|
59
|
+
...TERMINAL_RUN_STATUSES,
|
|
60
|
+
...APPLY_RUN_STATUSES,
|
|
61
|
+
"missing",
|
|
62
|
+
]);
|
|
63
|
+
export function isRunStatus(value) {
|
|
64
|
+
return (typeof value === "string" && RUN_STATUSES.includes(value));
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=run-status.generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-status.generated.js","sourceRoot":"","sources":["../../../src/lib/run-status.generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,SAAS;IACT,eAAe;IACf,eAAe;IACf,WAAW;IACX,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,SAAS;CACD,CAAC;AAIX,6DAA6D;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEvD,wDAAwD;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAS;IACxE,WAAW;IACX,QAAQ;IACR,YAAY;IACZ,SAAS;CACV,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAS;IACrE,eAAe;IACf,eAAe;CAChB,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAS;IACzE,QAAQ;IACR,SAAS;CACV,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAS;IACvE,GAAG,qBAAqB;IACxB,GAAG,kBAAkB;IACrB,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAK,YAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACjF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The canonical workflow-run status vocabulary, as the CLI sees it (#2348).
|
|
3
|
+
*
|
|
4
|
+
* The server reconciles every status surface (the app status endpoints,
|
|
5
|
+
* `listRuns`, and all three admin status handlers) onto exactly these values
|
|
6
|
+
* before they go on the wire, so the CLI never has to re-derive terminality
|
|
7
|
+
* from a raw Cloudflare spelling (`complete`, `errored`, `waiting`) again.
|
|
8
|
+
* Those spellings no longer reach a client.
|
|
9
|
+
*
|
|
10
|
+
* #2636 — the vocabulary itself is no longer copied by hand: it is GENERATED
|
|
11
|
+
* from the server's `src/workflows/run-status.ts` into
|
|
12
|
+
* `run-status.generated.ts` (`pnpm gen:run-status`) and re-exported here, so a
|
|
13
|
+
* future status is a one-site edit plus regeneration rather than four
|
|
14
|
+
* hand-edits that a lagging copy turns into a hung poll loop. This module stays
|
|
15
|
+
* the ONE place `cli/` imports the vocabulary from — every command and
|
|
16
|
+
* formatter reads it from here.
|
|
17
|
+
*/
|
|
18
|
+
export { RUN_STATUSES, RUN_STATUS_LIST, TERMINAL_RUN_STATUSES, APPLY_RUN_STATUSES, IN_FLIGHT_RUN_STATUSES, SETTLED_RUN_STATUSES, isRunStatus, } from "./run-status.generated.js";
|
|
19
|
+
//# sourceMappingURL=run-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-status.js","sourceRoot":"","sources":["../../../src/lib/run-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,GACZ,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's mirror of the server's normalization of accepted TEXT fields
|
|
3
|
+
* (issue #2880, DSO-003) — the scalar sibling of `integration-request-config`.
|
|
4
|
+
*
|
|
5
|
+
* Every write handler for the types this issue converted rewrites the text it
|
|
6
|
+
* accepts: display names, workflow keys and bucket names are trimmed
|
|
7
|
+
* (`src/admin-api.ts` for integrations and webhooks,
|
|
8
|
+
* `cron-triggers-controller.ts`, `blob-buckets-controller.ts`), descriptions
|
|
9
|
+
* are trimmed and a blank one is stored as `null`, and a `signingSecret` is
|
|
10
|
+
* stored as the canonical `{{secrets.KEY}}` form (`canonicalSecretReference`).
|
|
11
|
+
* So a hand-authored `displayName = " Billing "` is not the value the server
|
|
12
|
+
* returns — and compared raw it is a `Modified` row on every run, with push
|
|
13
|
+
* re-applying an update that changes nothing. Baseline restamping cannot fix
|
|
14
|
+
* it: after an apply the remote hash equals the fresh baseline while the local
|
|
15
|
+
* hash still does not.
|
|
16
|
+
*
|
|
17
|
+
* Applied to BOTH sides of a comparison (a spec's `canonicalize` hook runs on
|
|
18
|
+
* the projection, whichever side it came from), so these must be idempotent —
|
|
19
|
+
* and so a value some older write path stored untrimmed compares equal to the
|
|
20
|
+
* trimmed text a file states, rather than the two disagreeing forever.
|
|
21
|
+
*
|
|
22
|
+
* Mirrored rather than imported, for the reason the request-config mirror
|
|
23
|
+
* gives: the published CLI must not import server `src/` at runtime. Every
|
|
24
|
+
* step is total — a value the server would REJECT is left exactly as authored,
|
|
25
|
+
* so the server's own error is what the operator sees.
|
|
26
|
+
*/
|
|
27
|
+
/** `displayName`, `workflowKey`, bucket `name`: trimmed, never emptied. */
|
|
28
|
+
export declare function canonicalizeTrimmedText(value: unknown): unknown;
|
|
29
|
+
/**
|
|
30
|
+
* `description`: trimmed, and a blank one is the same state as none at all.
|
|
31
|
+
*
|
|
32
|
+
* The handlers spell this two ways — `description.trim() || null` (integrations,
|
|
33
|
+
* webhooks) and a bare `description || null` (cron triggers, blob buckets) —
|
|
34
|
+
* which differ only for a whitespace-only string. Trimming here is the
|
|
35
|
+
* stricter, idempotent reading: `" "` and `null` are one state on both sides
|
|
36
|
+
* either way, and a stored `" x "` from either path meets an authored `"x"`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function canonicalizeOptionalText(value: unknown): unknown;
|
|
39
|
+
export declare function canonicalizeSecretReference(value: unknown): unknown;
|
|
40
|
+
/**
|
|
41
|
+
* Apply the rules above to a parsed entity, in place.
|
|
42
|
+
*
|
|
43
|
+
* `undefined` stays `undefined`: a key the entity does not carry is not a
|
|
44
|
+
* cleared one, and the projection's own emission rules decide what an absent
|
|
45
|
+
* value means.
|
|
46
|
+
*/
|
|
47
|
+
export declare function canonicalizeServerTextFields(entity: any, fields: {
|
|
48
|
+
trimmed?: readonly string[];
|
|
49
|
+
optional?: readonly string[];
|
|
50
|
+
secretReference?: readonly string[];
|
|
51
|
+
}): void;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's mirror of the server's normalization of accepted TEXT fields
|
|
3
|
+
* (issue #2880, DSO-003) — the scalar sibling of `integration-request-config`.
|
|
4
|
+
*
|
|
5
|
+
* Every write handler for the types this issue converted rewrites the text it
|
|
6
|
+
* accepts: display names, workflow keys and bucket names are trimmed
|
|
7
|
+
* (`src/admin-api.ts` for integrations and webhooks,
|
|
8
|
+
* `cron-triggers-controller.ts`, `blob-buckets-controller.ts`), descriptions
|
|
9
|
+
* are trimmed and a blank one is stored as `null`, and a `signingSecret` is
|
|
10
|
+
* stored as the canonical `{{secrets.KEY}}` form (`canonicalSecretReference`).
|
|
11
|
+
* So a hand-authored `displayName = " Billing "` is not the value the server
|
|
12
|
+
* returns — and compared raw it is a `Modified` row on every run, with push
|
|
13
|
+
* re-applying an update that changes nothing. Baseline restamping cannot fix
|
|
14
|
+
* it: after an apply the remote hash equals the fresh baseline while the local
|
|
15
|
+
* hash still does not.
|
|
16
|
+
*
|
|
17
|
+
* Applied to BOTH sides of a comparison (a spec's `canonicalize` hook runs on
|
|
18
|
+
* the projection, whichever side it came from), so these must be idempotent —
|
|
19
|
+
* and so a value some older write path stored untrimmed compares equal to the
|
|
20
|
+
* trimmed text a file states, rather than the two disagreeing forever.
|
|
21
|
+
*
|
|
22
|
+
* Mirrored rather than imported, for the reason the request-config mirror
|
|
23
|
+
* gives: the published CLI must not import server `src/` at runtime. Every
|
|
24
|
+
* step is total — a value the server would REJECT is left exactly as authored,
|
|
25
|
+
* so the server's own error is what the operator sees.
|
|
26
|
+
*/
|
|
27
|
+
/** `displayName`, `workflowKey`, bucket `name`: trimmed, never emptied. */
|
|
28
|
+
export function canonicalizeTrimmedText(value) {
|
|
29
|
+
return typeof value === "string" ? value.trim() : value;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* `description`: trimmed, and a blank one is the same state as none at all.
|
|
33
|
+
*
|
|
34
|
+
* The handlers spell this two ways — `description.trim() || null` (integrations,
|
|
35
|
+
* webhooks) and a bare `description || null` (cron triggers, blob buckets) —
|
|
36
|
+
* which differ only for a whitespace-only string. Trimming here is the
|
|
37
|
+
* stricter, idempotent reading: `" "` and `null` are one state on both sides
|
|
38
|
+
* either way, and a stored `" x "` from either path meets an authored `"x"`.
|
|
39
|
+
*/
|
|
40
|
+
export function canonicalizeOptionalText(value) {
|
|
41
|
+
if (typeof value !== "string")
|
|
42
|
+
return value;
|
|
43
|
+
const trimmed = value.trim();
|
|
44
|
+
return trimmed === "" ? null : trimmed;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A whole `{{secrets.KEY}}` reference, in the canonical at-rest spelling.
|
|
48
|
+
*
|
|
49
|
+
* Mirrors `canonicalSecretReference`: interior spacing is dropped and the value
|
|
50
|
+
* is trimmed, because a stored reference has to resolve to exactly the secret's
|
|
51
|
+
* value. Anything that is not plainly one whole reference is returned as
|
|
52
|
+
* authored — including a reference spoiled by invisible text beside it, which
|
|
53
|
+
* the server refuses (`isSpoiledSecretReference`, #2297): only ORDINARY
|
|
54
|
+
* whitespace is stripped here, so a value carrying a byte-order mark does not
|
|
55
|
+
* quietly canonicalize into the reference the server will not store.
|
|
56
|
+
*/
|
|
57
|
+
const WHOLE_SECRET_REFERENCE_RE = /^\{\{[ \t]*secrets\.([A-Z][A-Z0-9_]{0,63})[ \t]*\}\}$/;
|
|
58
|
+
export function canonicalizeSecretReference(value) {
|
|
59
|
+
if (typeof value !== "string")
|
|
60
|
+
return value;
|
|
61
|
+
const match = WHOLE_SECRET_REFERENCE_RE.exec(value.replace(/^[ \t\r\n]+|[ \t\r\n]+$/g, ""));
|
|
62
|
+
return match ? `{{secrets.${match[1]}}}` : value;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Apply the rules above to a parsed entity, in place.
|
|
66
|
+
*
|
|
67
|
+
* `undefined` stays `undefined`: a key the entity does not carry is not a
|
|
68
|
+
* cleared one, and the projection's own emission rules decide what an absent
|
|
69
|
+
* value means.
|
|
70
|
+
*/
|
|
71
|
+
export function canonicalizeServerTextFields(entity, fields) {
|
|
72
|
+
if (!entity || typeof entity !== "object")
|
|
73
|
+
return;
|
|
74
|
+
for (const field of fields.trimmed ?? []) {
|
|
75
|
+
if (entity[field] === undefined)
|
|
76
|
+
continue;
|
|
77
|
+
entity[field] = canonicalizeTrimmedText(entity[field]);
|
|
78
|
+
}
|
|
79
|
+
for (const field of fields.optional ?? []) {
|
|
80
|
+
if (entity[field] === undefined)
|
|
81
|
+
continue;
|
|
82
|
+
entity[field] = canonicalizeOptionalText(entity[field]);
|
|
83
|
+
}
|
|
84
|
+
for (const field of fields.secretReference ?? []) {
|
|
85
|
+
if (entity[field] === undefined)
|
|
86
|
+
continue;
|
|
87
|
+
entity[field] = canonicalizeSecretReference(entity[field]);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=server-text-normalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-text-normalization.js","sourceRoot":"","sources":["../../../src/lib/server-text-normalization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,2EAA2E;AAC3E,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,yBAAyB,GAC7B,uDAAuD,CAAC;AAE1D,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAC1C,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAC9C,CAAC;IACF,OAAO,KAAK,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAW,EACX,MAIC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO;IAClD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS;YAAE,SAAS;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS;YAAE,SAAS;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;QACjD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS;YAAE,SAAS;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one server-URL validator the CLI shares (issue #2927).
|
|
3
|
+
*
|
|
4
|
+
* It returns the `string | true` shape `@inquirer/prompts` expects from a
|
|
5
|
+
* `validate` callback, so the same function backs the `primitive init` prompt,
|
|
6
|
+
* the `--server` flag check and init-config validation, `project-config.ts`'s
|
|
7
|
+
* `apiUrl` check, and `env add --api-url`. It used to live in the
|
|
8
|
+
* init-specific `resolve-init-server.ts` while the last two hand-rolled their
|
|
9
|
+
* own `try { new URL(x) } catch`.
|
|
10
|
+
*
|
|
11
|
+
* The parse deliberately runs on the *raw* string: JavaScript `trim()` strips
|
|
12
|
+
* Unicode whitespace (U+00A0, U+2028, U+FEFF, …) that the WHATWG URL parser
|
|
13
|
+
* does not, so trimming first would accept values like `" https://x"`
|
|
14
|
+
* that later URL construction cannot use — and `env add` would persist them.
|
|
15
|
+
* `trim()` is therefore used only to decide whether the input is empty; the
|
|
16
|
+
* URL parser already ignores the ASCII padding it is willing to strip.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Validates a server URL. Returns `true` when valid, otherwise the message to
|
|
20
|
+
* show the user.
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateServerUrl(url: string): string | true;
|