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,395 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `primitive env` commands — manage named environments in primitive/config.json.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* env list — show all environments
|
|
6
|
+
* env add <name> — add a new environment
|
|
7
|
+
* env remove <name> — delete an environment
|
|
8
|
+
* env use <name> — select the environment THIS machine uses
|
|
9
|
+
* env show [name] — show details for an environment (default: current)
|
|
10
|
+
*
|
|
11
|
+
* Two different things live here, and #2873 stopped them sharing one field:
|
|
12
|
+
* - `defaultEnvironment` in the committed config is the TEAM default — what
|
|
13
|
+
* a fresh clone resolves.
|
|
14
|
+
* - `.primitive/local.json` is THIS machine's selection, written by
|
|
15
|
+
* `env use`. It is gitignored, so switching backends never dirties a
|
|
16
|
+
* tracked file.
|
|
17
|
+
*
|
|
18
|
+
* `list` and `show` therefore refuse to paper over a broken selection: corrupt
|
|
19
|
+
* local state, or a selection naming an environment that no longer exists, is
|
|
20
|
+
* a different situation from "nothing is selected" and has a different remedy.
|
|
21
|
+
*/
|
|
22
|
+
import { PROJECT_CONFIG_DISPLAY_NAME, ProjectConfigError, findProjectConfigPath, loadProjectConfig, saveProjectConfig, } from "../lib/project-config.js";
|
|
23
|
+
import { getCurrentEnvironment, resetEnvResolver, } from "../lib/env-resolver.js";
|
|
24
|
+
import { PrimitiveEnvError, localStatePathForConfigPath, missingConfigMessage, projectRootForConfigPath, readLocalSelection, } from "../lib/env-resolver-core.js";
|
|
25
|
+
import { clearLocalSelection, ensureLocalStateIgnored, writeLocalSelection, } from "../lib/local-state.js";
|
|
26
|
+
import { clearCredentialsForEnvInProject } from "../lib/credentials-store.js";
|
|
27
|
+
import { normalizeIosAppId, validateIosAppId } from "../lib/ios-app-id.js";
|
|
28
|
+
import { validateServerUrl } from "../lib/server-url.js";
|
|
29
|
+
import { normalizeWebUrl, validateWebUrl } from "../lib/web-url.js";
|
|
30
|
+
import { error, info, keyValue, result as printResult, success, warn, json, formatTable, divider, } from "../lib/output.js";
|
|
31
|
+
import { wholeListEnvelope } from "../lib/paginate.js";
|
|
32
|
+
/** How the per-machine selection file is named in user-facing messages. */
|
|
33
|
+
const LOCAL_STATE_LABEL = ".primitive/local.json";
|
|
34
|
+
function requireProjectConfig() {
|
|
35
|
+
const path = findProjectConfigPath();
|
|
36
|
+
if (!path) {
|
|
37
|
+
error(missingConfigMessage(process.cwd()));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const config = loadProjectConfig();
|
|
42
|
+
return { path, config };
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
if (err instanceof ProjectConfigError) {
|
|
46
|
+
error(err.message);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
error(err.message || String(err));
|
|
50
|
+
}
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function writeProjectConfig(path, config) {
|
|
55
|
+
saveProjectConfig(path, config);
|
|
56
|
+
resetEnvResolver();
|
|
57
|
+
}
|
|
58
|
+
function validateEnvName(name) {
|
|
59
|
+
if (!name.match(/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/)) {
|
|
60
|
+
return `Invalid environment name "${name}". Use alphanumeric characters, dashes, or underscores.`;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The environment display commands resolve for real rather than through the
|
|
66
|
+
* error-swallowing `getCurrentEnvNameSafe()`. A selection that cannot resolve
|
|
67
|
+
* is the whole point of these commands: hiding it behind "(none)" is how a
|
|
68
|
+
* user ends up staring at a table that disagrees with every other command.
|
|
69
|
+
*/
|
|
70
|
+
function resolveForDisplay() {
|
|
71
|
+
try {
|
|
72
|
+
const configPath = findProjectConfigPath();
|
|
73
|
+
const selected = configPath ? readLocalSelection(configPath) : null;
|
|
74
|
+
return { name: getCurrentEnvironment()?.name ?? null, selected };
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
if (err instanceof PrimitiveEnvError && err.kind === "no-selection") {
|
|
78
|
+
// Nothing selected among several environments is a legitimate state to
|
|
79
|
+
// display — the table shows them all and marks no current one.
|
|
80
|
+
return { name: null, selected: null };
|
|
81
|
+
}
|
|
82
|
+
error(err.message || String(err));
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export function registerEnvCommands(program) {
|
|
87
|
+
const env = program
|
|
88
|
+
.command("env")
|
|
89
|
+
.description("Manage named environments in primitive/config.json")
|
|
90
|
+
.addHelpText("after", `
|
|
91
|
+
Examples:
|
|
92
|
+
$ primitive env list # list environments
|
|
93
|
+
$ primitive env add prod --api-url https://... --app-id 01HXY...
|
|
94
|
+
$ primitive env use prod # select it on this machine
|
|
95
|
+
$ primitive env show dev # show env details
|
|
96
|
+
$ primitive env remove staging # remove an environment
|
|
97
|
+
|
|
98
|
+
Every environment names exactly one app, so --app-id is required. To point an
|
|
99
|
+
existing environment at a different app, edit its "appId" in
|
|
100
|
+
primitive/config.json.
|
|
101
|
+
`);
|
|
102
|
+
// env list
|
|
103
|
+
env
|
|
104
|
+
.command("list")
|
|
105
|
+
.description("List all environments")
|
|
106
|
+
.option("--json", "Output as JSON")
|
|
107
|
+
.action((options) => {
|
|
108
|
+
const { config } = requireProjectConfig();
|
|
109
|
+
const { name: current, selected } = resolveForDisplay();
|
|
110
|
+
const rows = Object.entries(config.environments).map(([name, e]) => ({
|
|
111
|
+
name,
|
|
112
|
+
apiUrl: e.apiUrl,
|
|
113
|
+
appId: e.appId,
|
|
114
|
+
current: name === current ? "*" : "",
|
|
115
|
+
default: name === config.defaultEnvironment ? "*" : "",
|
|
116
|
+
}));
|
|
117
|
+
if (options.json) {
|
|
118
|
+
// The one list envelope (#3646). The environments are the rows — each
|
|
119
|
+
// carrying the name it was keyed by — and the selection context sits
|
|
120
|
+
// beside them, so a script reads `.items` here exactly as it does for
|
|
121
|
+
// every other `list`.
|
|
122
|
+
json({
|
|
123
|
+
...wholeListEnvelope(Object.entries(config.environments).map(([name, environment]) => ({
|
|
124
|
+
name,
|
|
125
|
+
...environment,
|
|
126
|
+
current: name === current,
|
|
127
|
+
default: name === config.defaultEnvironment,
|
|
128
|
+
}))),
|
|
129
|
+
currentEnvironment: current,
|
|
130
|
+
selectedEnvironment: selected,
|
|
131
|
+
defaultEnvironment: config.defaultEnvironment || null,
|
|
132
|
+
});
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (rows.length === 0) {
|
|
136
|
+
info(`No environments defined. Run 'primitive env add <name>' to add one.`);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
console.log(formatTable(rows, [
|
|
140
|
+
{ key: "current", header: "CURRENT" },
|
|
141
|
+
{ key: "name", header: "Name" },
|
|
142
|
+
{ key: "apiUrl", header: "API URL" },
|
|
143
|
+
{ key: "appId", header: "App ID" },
|
|
144
|
+
{ key: "default", header: "TEAM DEFAULT" },
|
|
145
|
+
]));
|
|
146
|
+
if (selected) {
|
|
147
|
+
info(`"${selected}" is selected on this machine (${LOCAL_STATE_LABEL}).`);
|
|
148
|
+
}
|
|
149
|
+
else if (config.defaultEnvironment) {
|
|
150
|
+
info(`No local selection; falling back to the committed default "${config.defaultEnvironment}". Run 'primitive env use <name>' to choose one.`);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
// env add
|
|
154
|
+
env
|
|
155
|
+
.command("add")
|
|
156
|
+
.description("Add a new environment")
|
|
157
|
+
.argument("<name>", "Environment name (e.g. dev, prod, staging)")
|
|
158
|
+
.requiredOption("--api-url <url>", "API base URL for this environment")
|
|
159
|
+
.requiredOption("--app-id <id>", "App ID bound to this environment")
|
|
160
|
+
.option("--app-name <name>", "Optional app name (display only)")
|
|
161
|
+
.option("--web-url <url>", "Optional web origin for this environment (https://app.example.com) — the app's web deployment, which the emailed sign-in link points at")
|
|
162
|
+
.option("--ios-app-id <id>", "Optional Apple app identifier for this environment's iOS client (ABCDE12345.com.example.app) — the deploy generates the apple-app-site-association document from it; requires --web-url")
|
|
163
|
+
.option("--description <text>", "Optional description")
|
|
164
|
+
.option("--default", "Set this environment as the new default")
|
|
165
|
+
.action((name, options) => {
|
|
166
|
+
const validationError = validateEnvName(name);
|
|
167
|
+
if (validationError) {
|
|
168
|
+
error(validationError);
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
// Validate URLs before touching disk.
|
|
172
|
+
if (validateServerUrl(options.apiUrl) !== true) {
|
|
173
|
+
error(`Invalid --api-url: ${options.apiUrl}`);
|
|
174
|
+
process.exit(1);
|
|
175
|
+
}
|
|
176
|
+
// `requiredOption` only rejects an ABSENT --app-id: an explicitly
|
|
177
|
+
// supplied empty or whitespace-only value parses fine and would be
|
|
178
|
+
// written straight through, creating a config the CLI's own startup
|
|
179
|
+
// validation then rejects (#3152). Checked here, before any file is
|
|
180
|
+
// touched, so a refused `env add` leaves nothing behind.
|
|
181
|
+
const appId = String(options.appId).trim();
|
|
182
|
+
if (!appId) {
|
|
183
|
+
error(`--app-id must name an app. Every environment names exactly one app; pass '--app-id <app-id>' with a real id.`);
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
if (options.webUrl !== undefined) {
|
|
187
|
+
const problem = validateWebUrl(options.webUrl);
|
|
188
|
+
if (problem !== true) {
|
|
189
|
+
error(`Invalid --web-url: ${problem}`);
|
|
190
|
+
process.exit(1);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Both or neither (#3081): the association document that vouches for the
|
|
194
|
+
// iOS app is served by the web app, so an app id with no origin names an
|
|
195
|
+
// app no deploy of this environment could ever claim.
|
|
196
|
+
if (options.iosAppId !== undefined) {
|
|
197
|
+
if (options.webUrl === undefined) {
|
|
198
|
+
error(`--ios-app-id needs --web-url: the apple-app-site-association document naming that app is served by this environment's web app, so the deploy has to know its origin.`);
|
|
199
|
+
process.exit(1);
|
|
200
|
+
}
|
|
201
|
+
const problem = validateIosAppId(options.iosAppId);
|
|
202
|
+
if (problem !== true) {
|
|
203
|
+
error(`Invalid --ios-app-id: ${problem}`);
|
|
204
|
+
process.exit(1);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const { path, config } = requireExistingConfig();
|
|
208
|
+
if (config.environments[name]) {
|
|
209
|
+
error(`Environment "${name}" already exists. Use 'primitive env remove ${name}' first or edit ${PROJECT_CONFIG_DISPLAY_NAME} directly.`);
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
config.environments[name] = {
|
|
213
|
+
apiUrl: options.apiUrl.replace(/\/$/, ""),
|
|
214
|
+
appId,
|
|
215
|
+
appName: options.appName,
|
|
216
|
+
webUrl: options.webUrl === undefined ? undefined : normalizeWebUrl(options.webUrl),
|
|
217
|
+
iosAppId: options.iosAppId === undefined
|
|
218
|
+
? undefined
|
|
219
|
+
: normalizeIosAppId(options.iosAppId),
|
|
220
|
+
description: options.description,
|
|
221
|
+
};
|
|
222
|
+
// Auto-default if this is the first env, or if --default was passed.
|
|
223
|
+
if (options.default || !config.defaultEnvironment) {
|
|
224
|
+
config.defaultEnvironment = name;
|
|
225
|
+
}
|
|
226
|
+
writeProjectConfig(path, config);
|
|
227
|
+
success(`Added environment "${name}".`);
|
|
228
|
+
keyValue("API URL", config.environments[name].apiUrl);
|
|
229
|
+
keyValue("App ID", appId);
|
|
230
|
+
if (config.environments[name].webUrl) {
|
|
231
|
+
keyValue("Web URL", config.environments[name].webUrl);
|
|
232
|
+
}
|
|
233
|
+
if (config.environments[name].iosAppId) {
|
|
234
|
+
keyValue("iOS App ID", config.environments[name].iosAppId);
|
|
235
|
+
}
|
|
236
|
+
if (config.defaultEnvironment === name) {
|
|
237
|
+
info(`"${name}" is now the default environment.`);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
info(`Run 'primitive env use ${name}' to point this machine at it.`);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
// env remove
|
|
244
|
+
env
|
|
245
|
+
.command("remove")
|
|
246
|
+
.alias("rm")
|
|
247
|
+
.description("Remove an environment")
|
|
248
|
+
.argument("<name>", "Environment name")
|
|
249
|
+
.action((name) => {
|
|
250
|
+
const { path, config } = requireProjectConfig();
|
|
251
|
+
if (!config.environments[name]) {
|
|
252
|
+
error(`Environment "${name}" does not exist.`);
|
|
253
|
+
process.exit(1);
|
|
254
|
+
}
|
|
255
|
+
delete config.environments[name];
|
|
256
|
+
if (config.defaultEnvironment === name) {
|
|
257
|
+
delete config.defaultEnvironment;
|
|
258
|
+
warn(`"${name}" was the default environment. Set a new default with 'primitive env use <name>'.`);
|
|
259
|
+
}
|
|
260
|
+
writeProjectConfig(path, config);
|
|
261
|
+
// A selection naming an environment that no longer exists would make
|
|
262
|
+
// every later command fail on an unknown-environment error, so drop it
|
|
263
|
+
// with the environment it names.
|
|
264
|
+
if (clearLocalSelection(path, name)) {
|
|
265
|
+
info(`Cleared the local selection of "${name}" (${LOCAL_STATE_LABEL}).`);
|
|
266
|
+
}
|
|
267
|
+
// Also drop the credentials slot for this env so a subsequent `env add`
|
|
268
|
+
// with the same name can't silently re-use stale tokens from the old
|
|
269
|
+
// instance. The root comes from the one function that derives it: the
|
|
270
|
+
// parent of `primitive/`, or the containing directory for a bare
|
|
271
|
+
// PRIMITIVE_PROJECT_CONFIG — where a grandparent would name someone
|
|
272
|
+
// else's project and leave this one's credentials behind (#3153).
|
|
273
|
+
clearCredentialsForEnvInProject(projectRootForConfigPath(path), name);
|
|
274
|
+
success(`Removed environment "${name}".`);
|
|
275
|
+
});
|
|
276
|
+
// env use
|
|
277
|
+
env
|
|
278
|
+
.command("use")
|
|
279
|
+
.description("Select the environment this machine uses (local, not committed)")
|
|
280
|
+
.argument("<name>", "Environment name")
|
|
281
|
+
.action((name) => {
|
|
282
|
+
const { path, config } = requireProjectConfig();
|
|
283
|
+
if (!config.environments[name]) {
|
|
284
|
+
error(`Environment "${name}" does not exist. Run 'primitive env list' to see available environments.`);
|
|
285
|
+
process.exit(1);
|
|
286
|
+
}
|
|
287
|
+
// Ignore coverage BEFORE the write: a selection that shows up in
|
|
288
|
+
// `git status` is the tracked-file problem this replaced, just moved to
|
|
289
|
+
// an untracked file.
|
|
290
|
+
const localPath = localStatePathForConfigPath(path);
|
|
291
|
+
const coverage = ensureLocalStateIgnored(localPath);
|
|
292
|
+
if (coverage.status === "excluded") {
|
|
293
|
+
info(`Added "${coverage.pattern}" to ${coverage.excludePath} so the selection stays out of git.`);
|
|
294
|
+
info(`Consider committing "${LOCAL_STATE_LABEL}" to .gitignore so the whole team is covered.`);
|
|
295
|
+
}
|
|
296
|
+
else if (coverage.status === "failed") {
|
|
297
|
+
// Stop rather than write: an unignored local.json is committable state,
|
|
298
|
+
// which is the whole problem `env use` moved off the tracked config.
|
|
299
|
+
// The remedy is one line in .gitignore, after which this succeeds.
|
|
300
|
+
error(`Could not confirm ${LOCAL_STATE_LABEL} is git-ignored: ${coverage.detail}`);
|
|
301
|
+
error(`Add "${LOCAL_STATE_LABEL}" to your .gitignore and run 'primitive env use ${name}' again — ` +
|
|
302
|
+
`the selection is per-machine state and must never be committable.`);
|
|
303
|
+
process.exit(1);
|
|
304
|
+
}
|
|
305
|
+
writeLocalSelection(path, name);
|
|
306
|
+
resetEnvResolver();
|
|
307
|
+
success(`Now using environment "${name}" on this machine.`);
|
|
308
|
+
keyValue("API URL", config.environments[name].apiUrl);
|
|
309
|
+
if (config.environments[name].appId) {
|
|
310
|
+
keyValue("App ID", config.environments[name].appId);
|
|
311
|
+
}
|
|
312
|
+
if (config.environments[name].webUrl) {
|
|
313
|
+
keyValue("Web URL", config.environments[name].webUrl);
|
|
314
|
+
}
|
|
315
|
+
if (config.environments[name].iosAppId) {
|
|
316
|
+
keyValue("iOS App ID", config.environments[name].iosAppId);
|
|
317
|
+
}
|
|
318
|
+
info(`Selection stored in ${localPath} (local state — never committed).`);
|
|
319
|
+
info(config.defaultEnvironment
|
|
320
|
+
? `The committed team default ("defaultEnvironment") is still "${config.defaultEnvironment}".`
|
|
321
|
+
: `No committed team default ("defaultEnvironment") is set for a fresh clone.`);
|
|
322
|
+
});
|
|
323
|
+
// env show
|
|
324
|
+
env
|
|
325
|
+
.command("show")
|
|
326
|
+
.description("Show details for an environment")
|
|
327
|
+
.argument("[name]", "Environment name (defaults to current)")
|
|
328
|
+
.option("--json", "Output as JSON")
|
|
329
|
+
.action((name, options) => {
|
|
330
|
+
const { config } = requireProjectConfig();
|
|
331
|
+
// "Current" means the resolved env (honoring --env / PRIMITIVE_ENV / the
|
|
332
|
+
// local selection / defaultEnvironment). We intentionally read this
|
|
333
|
+
// AFTER requireProjectConfig() so errors surface in a consistent order —
|
|
334
|
+
// and we do NOT swallow a broken selection, which would show the default
|
|
335
|
+
// as though it were current.
|
|
336
|
+
const resolvedName = name ? null : resolveForDisplay().name;
|
|
337
|
+
const envName = name || resolvedName || config.defaultEnvironment;
|
|
338
|
+
if (!envName) {
|
|
339
|
+
error(`No environment specified and no defaultEnvironment set. Usage: primitive env show <name>`);
|
|
340
|
+
process.exit(1);
|
|
341
|
+
}
|
|
342
|
+
const e = config.environments[envName];
|
|
343
|
+
if (!e) {
|
|
344
|
+
error(`Environment "${envName}" does not exist.`);
|
|
345
|
+
process.exit(1);
|
|
346
|
+
}
|
|
347
|
+
if (options.json) {
|
|
348
|
+
json({ name: envName, ...e });
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
divider();
|
|
352
|
+
printResult("Name", envName);
|
|
353
|
+
printResult("API URL", e.apiUrl);
|
|
354
|
+
if (e.appId)
|
|
355
|
+
printResult("App ID", e.appId);
|
|
356
|
+
if (e.appName)
|
|
357
|
+
printResult("App Name", e.appName);
|
|
358
|
+
if (e.description)
|
|
359
|
+
printResult("Description", e.description);
|
|
360
|
+
if (config.defaultEnvironment === envName) {
|
|
361
|
+
info(`(committed team default — "defaultEnvironment")`);
|
|
362
|
+
}
|
|
363
|
+
divider();
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* The project's `primitive/config.json`, or the one refusal.
|
|
368
|
+
*
|
|
369
|
+
* `env add` used to CREATE the file when the upward walk found none, so an
|
|
370
|
+
* environment could be added before `primitive init` had ever run. That was
|
|
371
|
+
* the fourth way to bring a configuration tree into being, and #3154 leaves
|
|
372
|
+
* exactly one: `primitive init`. It is also why the missing-config message may
|
|
373
|
+
* not offer `primitive env add` as a remedy — outside a project this command
|
|
374
|
+
* now fails with that very message.
|
|
375
|
+
*/
|
|
376
|
+
function requireExistingConfig() {
|
|
377
|
+
const existingPath = findProjectConfigPath();
|
|
378
|
+
if (!existingPath) {
|
|
379
|
+
error(missingConfigMessage(process.cwd()));
|
|
380
|
+
process.exit(1);
|
|
381
|
+
}
|
|
382
|
+
try {
|
|
383
|
+
return { path: existingPath, config: loadProjectConfig() };
|
|
384
|
+
}
|
|
385
|
+
catch (err) {
|
|
386
|
+
if (err instanceof ProjectConfigError) {
|
|
387
|
+
error(err.message);
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
error(err.message || String(err));
|
|
391
|
+
}
|
|
392
|
+
process.exit(1);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* The platform's feature flags (issue #2803, phase 6).
|
|
4
|
+
*
|
|
5
|
+
* A feature flag is already what the rest of this issue is arguing for: one
|
|
6
|
+
* server-owned toggle with one writer. What it did not have was both surfaces —
|
|
7
|
+
* the console could flip a flag and the CLI could not read one, so an operator
|
|
8
|
+
* without a browser had no way to see or change platform behaviour.
|
|
9
|
+
*
|
|
10
|
+
* The model is unchanged (`enabled`, a boolean; not the five carrying types'
|
|
11
|
+
* `status`), and the routes already existed. This is the missing half of
|
|
12
|
+
* "every operational control is reachable from the CLI and from web-admin".
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerFeatureFlagsCommands(program: Command): void;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { ApiClient } from "../lib/api-client.js";
|
|
2
|
+
import { success, error, info, formatTable, formatBoolean, result as printResult, json, } from "../lib/output.js";
|
|
3
|
+
import { wholeListEnvelope } from "../lib/paginate.js";
|
|
4
|
+
/**
|
|
5
|
+
* The platform's feature flags (issue #2803, phase 6).
|
|
6
|
+
*
|
|
7
|
+
* A feature flag is already what the rest of this issue is arguing for: one
|
|
8
|
+
* server-owned toggle with one writer. What it did not have was both surfaces —
|
|
9
|
+
* the console could flip a flag and the CLI could not read one, so an operator
|
|
10
|
+
* without a browser had no way to see or change platform behaviour.
|
|
11
|
+
*
|
|
12
|
+
* The model is unchanged (`enabled`, a boolean; not the five carrying types'
|
|
13
|
+
* `status`), and the routes already existed. This is the missing half of
|
|
14
|
+
* "every operational control is reachable from the CLI and from web-admin".
|
|
15
|
+
*/
|
|
16
|
+
export function registerFeatureFlagsCommands(program) {
|
|
17
|
+
const flags = program
|
|
18
|
+
.command("feature-flags")
|
|
19
|
+
.description("Read and toggle platform feature flags (super-admin only)")
|
|
20
|
+
.addHelpText("after", `
|
|
21
|
+
Examples:
|
|
22
|
+
$ primitive feature-flags list
|
|
23
|
+
$ primitive feature-flags get unified-block-canonical-storage
|
|
24
|
+
$ primitive feature-flags enable unified-block-canonical-storage
|
|
25
|
+
$ primitive feature-flags disable unified-block-canonical-storage
|
|
26
|
+
|
|
27
|
+
A flag is platform state, not app configuration: it is not in the TOML tree and
|
|
28
|
+
'config push' neither reads nor writes it.
|
|
29
|
+
`);
|
|
30
|
+
flags
|
|
31
|
+
.command("list")
|
|
32
|
+
.description("List every feature flag and whether it is enabled")
|
|
33
|
+
.option("--json", "Output as JSON")
|
|
34
|
+
.action(async (options) => {
|
|
35
|
+
const client = new ApiClient();
|
|
36
|
+
try {
|
|
37
|
+
const result = await client.listFeatureFlags();
|
|
38
|
+
const items = result?.items ?? result?.flags ?? result ?? [];
|
|
39
|
+
if (options.json) {
|
|
40
|
+
json(wholeListEnvelope(Array.isArray(items) ? items : []));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (!Array.isArray(items) || items.length === 0) {
|
|
44
|
+
info("No feature flags found.");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
console.log(formatTable(items, [
|
|
48
|
+
{ header: "KEY", key: "flagKey" },
|
|
49
|
+
{ header: "ENABLED", key: "enabled", format: formatBoolean },
|
|
50
|
+
{ header: "DESCRIPTION", key: "description" },
|
|
51
|
+
]));
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
error(err.message);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
flags
|
|
59
|
+
.command("get")
|
|
60
|
+
.description("Show one feature flag, including its per-app overrides")
|
|
61
|
+
.argument("<flag-key>", "Feature flag key")
|
|
62
|
+
.option("--json", "Output as JSON")
|
|
63
|
+
.action(async (flagKey, options) => {
|
|
64
|
+
const client = new ApiClient();
|
|
65
|
+
try {
|
|
66
|
+
const flag = await client.getFeatureFlag(flagKey);
|
|
67
|
+
if (options.json) {
|
|
68
|
+
json(flag);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
printResult("Key", flag.flagKey);
|
|
72
|
+
printResult("Enabled", formatBoolean(flag.enabled));
|
|
73
|
+
printResult("Description", flag.description || "-");
|
|
74
|
+
// The per-app overrides are what make a flag's effective value differ
|
|
75
|
+
// from the global one, so `get` shows them rather than only the global.
|
|
76
|
+
printResult("Enabled for apps", Array.isArray(flag.enabledAppIds) && flag.enabledAppIds.length > 0
|
|
77
|
+
? flag.enabledAppIds.join(", ")
|
|
78
|
+
: "-");
|
|
79
|
+
printResult("Disabled for apps", Array.isArray(flag.disabledAppIds) && flag.disabledAppIds.length > 0
|
|
80
|
+
? flag.disabledAppIds.join(", ")
|
|
81
|
+
: "-");
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
error(err.message);
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
for (const [verb, enabled] of [
|
|
89
|
+
["enable", true],
|
|
90
|
+
["disable", false],
|
|
91
|
+
]) {
|
|
92
|
+
flags
|
|
93
|
+
.command(verb)
|
|
94
|
+
.description(enabled
|
|
95
|
+
? "Turn a feature flag on globally"
|
|
96
|
+
: "Turn a feature flag off globally")
|
|
97
|
+
.argument("<flag-key>", "Feature flag key")
|
|
98
|
+
.option("--json", "Output as JSON")
|
|
99
|
+
.action(async (flagKey, options) => {
|
|
100
|
+
const client = new ApiClient();
|
|
101
|
+
try {
|
|
102
|
+
const flag = await client.setFeatureFlagEnabled(flagKey, enabled);
|
|
103
|
+
if (options.json) {
|
|
104
|
+
json(flag);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
success(`Feature flag ${enabled ? "enabled" : "disabled"}: ${flagKey}`);
|
|
108
|
+
info("Per-app overrides still apply — `primitive feature-flags get` shows them.");
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
error(err.message);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=feature-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../../src/commands/feature-flags.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `primitive functions` — server functions' read and operational verbs
|
|
3
|
+
* (#3179, project `server-functions`).
|
|
4
|
+
*
|
|
5
|
+
* A server function is the SIXTH status-carrying type (`docs/cli-design.md`,
|
|
6
|
+
* §Object availability): it exposes a public endpoint, so it carries
|
|
7
|
+
* `active | inactive | archived`, the `enable`/`disable` pair, and the
|
|
8
|
+
* `archive` spelling of the delete flow. It carries no `create`, `update` or
|
|
9
|
+
* `delete` verb — the function is authored in `functions/<key>.toml` beside the
|
|
10
|
+
* TypeScript its `entry` names, applied with `config push`, and prune-by-push
|
|
11
|
+
* stays the only CLI hard-delete path.
|
|
12
|
+
*
|
|
13
|
+
* The rule worth stating loudly here, because a function IS code on a public
|
|
14
|
+
* endpoint: a `config push` to a DISABLED function updates the code and leaves
|
|
15
|
+
* it out of service. `status` has one writer pair and push is not one of them
|
|
16
|
+
* (#2803's resurrection guard) — otherwise shipping a fix would silently put
|
|
17
|
+
* an endpoint an operator had taken down back in service.
|
|
18
|
+
*/
|
|
19
|
+
import { Command } from "commander";
|
|
20
|
+
export declare function registerFunctionsCommands(program: Command): void;
|