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,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared predicate for platform-owned workflows (#1660).
|
|
3
|
+
*
|
|
4
|
+
* The platform owns workflow keys in the reserved `__internal.` namespace (see
|
|
5
|
+
* the server's `src/workflows/reserved-workflow-keys.ts`). These rows are
|
|
6
|
+
* created and managed by the platform, never authored in an app's config tree:
|
|
7
|
+
*
|
|
8
|
+
* - `config pull` must not export them (they have no local TOML),
|
|
9
|
+
* - `config diff` must not report them (they are not app config),
|
|
10
|
+
* - `config push` must not upload them (the hollow export can't round-trip),
|
|
11
|
+
* - `workflows codegen` must not generate an invoker for them.
|
|
12
|
+
*
|
|
13
|
+
* The CLI cannot import from `src/`, so this module mirrors the server's prefix
|
|
14
|
+
* policy in ONE place. The codegen skip and the sync filters both call it, so
|
|
15
|
+
* they can never drift from each other or from the server.
|
|
16
|
+
*
|
|
17
|
+
* The generic cross-resource `isPlatformOwnedEntity` abstraction is deliberately
|
|
18
|
+
* NOT here — it is deferred until a second resource type has a platform-owned
|
|
19
|
+
* contract (human decision, 2026-07-17).
|
|
20
|
+
*/
|
|
21
|
+
import { isRetiredEmailType, retiredEmailTypeGuidance, } from "./generated-config-surfaces.js";
|
|
22
|
+
/** Prefix marking a platform-owned workflow key (mirrors the server). */
|
|
23
|
+
export const INTERNAL_WORKFLOW_KEY_PREFIX = "__internal.";
|
|
24
|
+
/**
|
|
25
|
+
* True when `key` is in the platform-owned `__internal.` namespace. Trims and
|
|
26
|
+
* lowercases first (mirrors the server's `isReservedWorkflowKey`) so a padded
|
|
27
|
+
* or upper-cased value such as ` __Internal.Foo ` can't slip past the filter.
|
|
28
|
+
*/
|
|
29
|
+
export function isPlatformOwnedWorkflowKey(key) {
|
|
30
|
+
return (typeof key === "string" &&
|
|
31
|
+
key.trim().toLowerCase().startsWith(INTERNAL_WORKFLOW_KEY_PREFIX));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* True when a workflow list/detail item is platform-owned.
|
|
35
|
+
*
|
|
36
|
+
* Prefers the server's derived `platformOwned` flag (#1660) when present, then
|
|
37
|
+
* falls back to the key prefix so an older server that doesn't emit the flag is
|
|
38
|
+
* still filtered (edge case 1). `workflowKey` is the admin list-item field;
|
|
39
|
+
* `key` covers a locally-parsed `[workflow]` table.
|
|
40
|
+
*/
|
|
41
|
+
export function isPlatformOwnedWorkflow(item) {
|
|
42
|
+
if (item && item.platformOwned === true)
|
|
43
|
+
return true;
|
|
44
|
+
const key = item?.workflowKey ?? item?.key;
|
|
45
|
+
return isPlatformOwnedWorkflowKey(key);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Why the authoring surface refuses a platform-owned key (#2645).
|
|
49
|
+
*
|
|
50
|
+
* `config create`, `config set` and `config push --only` all name an object by
|
|
51
|
+
* `<type>/<key>`, and `config push` skips the reserved namespace — so scaffolding
|
|
52
|
+
* or selecting one produces a file that is never uploaded, or a push that
|
|
53
|
+
* reports success having applied nothing. With configuration authored in TOML
|
|
54
|
+
* only, those are the two failures the surface has to make impossible: a flag
|
|
55
|
+
* that was rejected was visible, a file that is silently ignored is not.
|
|
56
|
+
*
|
|
57
|
+
* Returns the operator-facing reason, or `undefined` when the key is authorable.
|
|
58
|
+
* Pure, so every caller can be unit-tested without a live server.
|
|
59
|
+
*/
|
|
60
|
+
export function platformOwnedAuthoringError(type, key) {
|
|
61
|
+
if (type !== "workflow" || !isPlatformOwnedWorkflowKey(key))
|
|
62
|
+
return undefined;
|
|
63
|
+
return `'${key}' is a platform-owned workflow — the reserved '${INTERNAL_WORKFLOW_KEY_PREFIX}' namespace is managed by the platform. 'config pull' does not export these and 'config push' skips them, so a file here would never reach the server.`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Why the authoring surface refuses `<type>/<key>` — or `undefined` when it
|
|
67
|
+
* doesn't.
|
|
68
|
+
*
|
|
69
|
+
* The same question `config create`, `config set` and `config push --only`
|
|
70
|
+
* each ask before touching a file, now with two answers: a platform-owned
|
|
71
|
+
* workflow key (#1660/#2645) and a retired email type (#2884). Both fail the
|
|
72
|
+
* same way if unchecked — a file that is written locally and then either
|
|
73
|
+
* skipped silently or refused at the far end of a push — so both are refused
|
|
74
|
+
* at the point the key is named, with the sentence that says what to do.
|
|
75
|
+
*/
|
|
76
|
+
export function configAuthoringError(type, key) {
|
|
77
|
+
const platformOwned = platformOwnedAuthoringError(type, key);
|
|
78
|
+
if (platformOwned)
|
|
79
|
+
return platformOwned;
|
|
80
|
+
if (type === "email-template" && isRetiredEmailType(key)) {
|
|
81
|
+
return retiredEmailTypeGuidance(key);
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=platform-owned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-owned.js","sourceRoot":"","sources":["../../../src/lib/platform-owned.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AAExC,yEAAyE;AACzE,MAAM,CAAC,MAAM,4BAA4B,GAAG,aAAa,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAY;IACrD,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAClE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAS;IAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,EAAE,WAAW,IAAI,IAAI,EAAE,GAAG,CAAC;IAC3C,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,GAAW;IAEX,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9E,OAAO,IAAI,GAAG,kDAAkD,4BAA4B,wJAAwJ,CAAC;AACvP,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,GAAW;IAEX,MAAM,aAAa,GAAG,2BAA2B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IACxC,IAAI,IAAI,KAAK,gBAAgB,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project-scoped configuration (primitive/config.json).
|
|
3
|
+
*
|
|
4
|
+
* This module handles loading, validating, and saving the project config file
|
|
5
|
+
* that lives inside the committed `primitive/` directory at the project root.
|
|
6
|
+
* The config defines named environments (dev, prod, staging, etc.) with their
|
|
7
|
+
* API URLs and app IDs.
|
|
8
|
+
*
|
|
9
|
+
* Design:
|
|
10
|
+
* - Config file: primitive/config.json (or any ancestor directory)
|
|
11
|
+
* - `primitive/` is committed — the config plus each environment's TOML;
|
|
12
|
+
* `.primitive/` is machine-local state and is gitignored whole (#3153).
|
|
13
|
+
* - Format: JSON
|
|
14
|
+
* - Schema is versioned (currently 1). Future versions use semver-ish
|
|
15
|
+
* caret range compatibility: we accept any config where major version
|
|
16
|
+
* matches CURRENT_CONFIG_VERSION.
|
|
17
|
+
* - Invalid configs throw — we do NOT silently ignore malformed files.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Current schema version. Increment the major version when making
|
|
21
|
+
* backward-incompatible changes. Older configs will be rejected.
|
|
22
|
+
*/
|
|
23
|
+
export declare const CURRENT_CONFIG_VERSION = 1;
|
|
24
|
+
/**
|
|
25
|
+
* The one set of layout constants, owned by the resolver core so the CLI, the
|
|
26
|
+
* Vite plugin and the Swift script cannot disagree about where the tree is
|
|
27
|
+
* (#3153). Re-exported here because most of the CLI imports its config
|
|
28
|
+
* vocabulary from this module.
|
|
29
|
+
*/
|
|
30
|
+
export { PROJECT_TREE_DIR, PROJECT_LOCAL_STATE_DIR, PROJECT_CONFIG_FILENAME, PROJECT_CONFIG_DISPLAY_NAME, } from "./env-resolver-core.js";
|
|
31
|
+
export interface ProjectEnvironment {
|
|
32
|
+
apiUrl: string;
|
|
33
|
+
/**
|
|
34
|
+
* The one app this environment names (#3152). Required: selecting an
|
|
35
|
+
* environment selects exactly one app, which is what lets the CLI drop its
|
|
36
|
+
* second, per-machine notion of "the current app".
|
|
37
|
+
*/
|
|
38
|
+
appId: string;
|
|
39
|
+
appName?: string;
|
|
40
|
+
/**
|
|
41
|
+
* The app's web counterpart for this environment, as a normalized origin
|
|
42
|
+
* (`https://app.example.com`) — the deployment whose `/oauth/callback` the
|
|
43
|
+
* emailed sign-in link points at, and the origin an incoming universal link
|
|
44
|
+
* is trusted from (#2982). Per environment, because that deployment has to
|
|
45
|
+
* talk to the same backend and app as this entry.
|
|
46
|
+
*/
|
|
47
|
+
webUrl?: string;
|
|
48
|
+
/**
|
|
49
|
+
* The iOS client's Apple app identifier for this environment —
|
|
50
|
+
* `<Application Identifier Prefix>.<bundle id>`, the prefix usually being the
|
|
51
|
+
* Team ID (#3081). Per environment, because an app with alpha and production
|
|
52
|
+
* has one bundle id each; declared beside `webUrl`, because the two halves
|
|
53
|
+
* name one cross-client link and the Vue template's deploy generates the
|
|
54
|
+
* `apple-app-site-association` document from the pair.
|
|
55
|
+
*/
|
|
56
|
+
iosAppId?: string;
|
|
57
|
+
/** Optional notes about this environment. */
|
|
58
|
+
description?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface ProjectConfig {
|
|
61
|
+
/** Schema version (currently 1). */
|
|
62
|
+
version: number;
|
|
63
|
+
/**
|
|
64
|
+
* Default environment name to use when --env is not specified and
|
|
65
|
+
* PRIMITIVE_ENV is unset.
|
|
66
|
+
*/
|
|
67
|
+
defaultEnvironment?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Named environments keyed by short name (e.g. "dev", "prod", "staging").
|
|
70
|
+
*/
|
|
71
|
+
environments: Record<string, ProjectEnvironment>;
|
|
72
|
+
}
|
|
73
|
+
export declare class ProjectConfigError extends Error {
|
|
74
|
+
readonly path?: string;
|
|
75
|
+
constructor(message: string, path?: string);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Walks upward from `startDir` looking for a `primitive/config.json` file.
|
|
79
|
+
* Returns the absolute path to the config file, or null if not found.
|
|
80
|
+
*
|
|
81
|
+
* Allows running `primitive` commands from subdirectories of a project,
|
|
82
|
+
* much like `git` walks up to find `.git`.
|
|
83
|
+
*
|
|
84
|
+
* One walk, not two: this delegates to the resolver core (#3153) so the CLI
|
|
85
|
+
* and every other reader refuse the pre-move layout identically — a second
|
|
86
|
+
* copy of the walk here is exactly how the stale-layout refusal would come to
|
|
87
|
+
* mean two different things.
|
|
88
|
+
*/
|
|
89
|
+
export declare function findProjectConfigPath(startDir?: string): string | null;
|
|
90
|
+
/**
|
|
91
|
+
* Returns the project root directory (the parent of `primitive/`, which holds
|
|
92
|
+
* `primitive/config.json`), or null if no project config is found.
|
|
93
|
+
*
|
|
94
|
+
* When the PRIMITIVE_PROJECT_CONFIG env var override is active, the config
|
|
95
|
+
* file may not live inside a `primitive/` directory (e.g. in tests), and then
|
|
96
|
+
* the root is simply the containing directory.
|
|
97
|
+
*/
|
|
98
|
+
export declare function findProjectRoot(startDir?: string): string | null;
|
|
99
|
+
/**
|
|
100
|
+
* Validates a raw parsed object against the ProjectConfig schema.
|
|
101
|
+
* Throws ProjectConfigError with a helpful message on any problem.
|
|
102
|
+
*/
|
|
103
|
+
export declare function validateProjectConfig(raw: unknown, sourcePath?: string): ProjectConfig;
|
|
104
|
+
/**
|
|
105
|
+
* Loads and validates the project config from a specific file path.
|
|
106
|
+
* Throws ProjectConfigError on I/O errors, JSON parse errors, or schema
|
|
107
|
+
* validation failures — we deliberately do NOT swallow these, because a
|
|
108
|
+
* broken config should be noisy so the user can fix it.
|
|
109
|
+
*/
|
|
110
|
+
export declare function loadProjectConfigFromPath(path: string): ProjectConfig;
|
|
111
|
+
/**
|
|
112
|
+
* Loads the project config by searching upward from the current directory.
|
|
113
|
+
* Returns null (not an error) if no primitive/config.json is found anywhere.
|
|
114
|
+
* Still throws ProjectConfigError if a config IS found but is invalid.
|
|
115
|
+
*/
|
|
116
|
+
export declare function loadProjectConfig(startDir?: string): ProjectConfig | null;
|
|
117
|
+
/**
|
|
118
|
+
* Writes a project config to disk as pretty-printed JSON. Callers are
|
|
119
|
+
* responsible for ensuring the parent directory exists — this function
|
|
120
|
+
* does not try to be clever about location.
|
|
121
|
+
*/
|
|
122
|
+
export declare function saveProjectConfig(path: string, config: ProjectConfig): void;
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project-scoped configuration (primitive/config.json).
|
|
3
|
+
*
|
|
4
|
+
* This module handles loading, validating, and saving the project config file
|
|
5
|
+
* that lives inside the committed `primitive/` directory at the project root.
|
|
6
|
+
* The config defines named environments (dev, prod, staging, etc.) with their
|
|
7
|
+
* API URLs and app IDs.
|
|
8
|
+
*
|
|
9
|
+
* Design:
|
|
10
|
+
* - Config file: primitive/config.json (or any ancestor directory)
|
|
11
|
+
* - `primitive/` is committed — the config plus each environment's TOML;
|
|
12
|
+
* `.primitive/` is machine-local state and is gitignored whole (#3153).
|
|
13
|
+
* - Format: JSON
|
|
14
|
+
* - Schema is versioned (currently 1). Future versions use semver-ish
|
|
15
|
+
* caret range compatibility: we accept any config where major version
|
|
16
|
+
* matches CURRENT_CONFIG_VERSION.
|
|
17
|
+
* - Invalid configs throw — we do NOT silently ignore malformed files.
|
|
18
|
+
*/
|
|
19
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
20
|
+
import { dirname } from "path";
|
|
21
|
+
import { detectInstall, installCommand, upgradeCommand, PRIMITIVE_CLI_PACKAGE, } from "./package-manager.js";
|
|
22
|
+
import { findPrimitiveConfigPath, missingAppIdMessage, projectRootForConfigPath, PROJECT_CONFIG_DISPLAY_NAME, } from "./env-resolver-core.js";
|
|
23
|
+
import { normalizeIosAppId, validateIosAppId } from "./ios-app-id.js";
|
|
24
|
+
import { validateServerUrl } from "./server-url.js";
|
|
25
|
+
import { normalizeWebUrl, validateWebUrl } from "./web-url.js";
|
|
26
|
+
/**
|
|
27
|
+
* The command that upgrades the running CLI. Falls back to the first-time
|
|
28
|
+
* install command when the running copy can't be upgraded by a package
|
|
29
|
+
* manager (a source checkout).
|
|
30
|
+
*/
|
|
31
|
+
function cliUpgradeCommand() {
|
|
32
|
+
return (upgradeCommand(detectInstall(), PRIMITIVE_CLI_PACKAGE, "latest") ??
|
|
33
|
+
installCommand(PRIMITIVE_CLI_PACKAGE));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Current schema version. Increment the major version when making
|
|
37
|
+
* backward-incompatible changes. Older configs will be rejected.
|
|
38
|
+
*/
|
|
39
|
+
export const CURRENT_CONFIG_VERSION = 1;
|
|
40
|
+
/**
|
|
41
|
+
* The one set of layout constants, owned by the resolver core so the CLI, the
|
|
42
|
+
* Vite plugin and the Swift script cannot disagree about where the tree is
|
|
43
|
+
* (#3153). Re-exported here because most of the CLI imports its config
|
|
44
|
+
* vocabulary from this module.
|
|
45
|
+
*/
|
|
46
|
+
export { PROJECT_TREE_DIR, PROJECT_LOCAL_STATE_DIR, PROJECT_CONFIG_FILENAME, PROJECT_CONFIG_DISPLAY_NAME, } from "./env-resolver-core.js";
|
|
47
|
+
export class ProjectConfigError extends Error {
|
|
48
|
+
path;
|
|
49
|
+
constructor(message, path) {
|
|
50
|
+
super(message);
|
|
51
|
+
this.path = path;
|
|
52
|
+
this.name = "ProjectConfigError";
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Walks upward from `startDir` looking for a `primitive/config.json` file.
|
|
57
|
+
* Returns the absolute path to the config file, or null if not found.
|
|
58
|
+
*
|
|
59
|
+
* Allows running `primitive` commands from subdirectories of a project,
|
|
60
|
+
* much like `git` walks up to find `.git`.
|
|
61
|
+
*
|
|
62
|
+
* One walk, not two: this delegates to the resolver core (#3153) so the CLI
|
|
63
|
+
* and every other reader refuse the pre-move layout identically — a second
|
|
64
|
+
* copy of the walk here is exactly how the stale-layout refusal would come to
|
|
65
|
+
* mean two different things.
|
|
66
|
+
*/
|
|
67
|
+
export function findProjectConfigPath(startDir = process.cwd()) {
|
|
68
|
+
return findPrimitiveConfigPath({ cwd: startDir });
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns the project root directory (the parent of `primitive/`, which holds
|
|
72
|
+
* `primitive/config.json`), or null if no project config is found.
|
|
73
|
+
*
|
|
74
|
+
* When the PRIMITIVE_PROJECT_CONFIG env var override is active, the config
|
|
75
|
+
* file may not live inside a `primitive/` directory (e.g. in tests), and then
|
|
76
|
+
* the root is simply the containing directory.
|
|
77
|
+
*/
|
|
78
|
+
export function findProjectRoot(startDir = process.cwd()) {
|
|
79
|
+
const path = findProjectConfigPath(startDir);
|
|
80
|
+
if (!path)
|
|
81
|
+
return null;
|
|
82
|
+
return projectRootForConfigPath(path);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Validates a raw parsed object against the ProjectConfig schema.
|
|
86
|
+
* Throws ProjectConfigError with a helpful message on any problem.
|
|
87
|
+
*/
|
|
88
|
+
export function validateProjectConfig(raw, sourcePath) {
|
|
89
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
90
|
+
throw new ProjectConfigError(`${PROJECT_CONFIG_DISPLAY_NAME} must contain a JSON object at the top level.`, sourcePath);
|
|
91
|
+
}
|
|
92
|
+
const obj = raw;
|
|
93
|
+
// Version is required.
|
|
94
|
+
if (typeof obj.version !== "number" || !Number.isInteger(obj.version)) {
|
|
95
|
+
throw new ProjectConfigError(`${PROJECT_CONFIG_DISPLAY_NAME} is missing required integer field "version".`, sourcePath);
|
|
96
|
+
}
|
|
97
|
+
const version = obj.version;
|
|
98
|
+
// Caret-range compatibility: accept any config whose major version matches.
|
|
99
|
+
// For version 1.x this is simply version === 1; when we ship v2 we'll
|
|
100
|
+
// reject v1 configs and tell the user to migrate.
|
|
101
|
+
if (version !== CURRENT_CONFIG_VERSION) {
|
|
102
|
+
if (version > CURRENT_CONFIG_VERSION) {
|
|
103
|
+
throw new ProjectConfigError(`${PROJECT_CONFIG_DISPLAY_NAME} has version ${version}, but this CLI only understands version ${CURRENT_CONFIG_VERSION}. Please upgrade the CLI: ${cliUpgradeCommand()}`, sourcePath);
|
|
104
|
+
}
|
|
105
|
+
throw new ProjectConfigError(`${PROJECT_CONFIG_DISPLAY_NAME} has unsupported version ${version}. This CLI expects version ${CURRENT_CONFIG_VERSION}.`, sourcePath);
|
|
106
|
+
}
|
|
107
|
+
// environments is required.
|
|
108
|
+
if (!obj.environments || typeof obj.environments !== "object" || Array.isArray(obj.environments)) {
|
|
109
|
+
throw new ProjectConfigError(`${PROJECT_CONFIG_DISPLAY_NAME} is missing required "environments" object.`, sourcePath);
|
|
110
|
+
}
|
|
111
|
+
const environments = {};
|
|
112
|
+
for (const [name, envRaw] of Object.entries(obj.environments)) {
|
|
113
|
+
if (!name.match(/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/)) {
|
|
114
|
+
throw new ProjectConfigError(`Invalid environment name "${name}" in ${PROJECT_CONFIG_DISPLAY_NAME}. Names must be alphanumeric with optional dashes/underscores.`, sourcePath);
|
|
115
|
+
}
|
|
116
|
+
if (!envRaw || typeof envRaw !== "object" || Array.isArray(envRaw)) {
|
|
117
|
+
throw new ProjectConfigError(`Environment "${name}" must be an object in ${PROJECT_CONFIG_DISPLAY_NAME}.`, sourcePath);
|
|
118
|
+
}
|
|
119
|
+
const envObj = envRaw;
|
|
120
|
+
if (typeof envObj.apiUrl !== "string" || !envObj.apiUrl) {
|
|
121
|
+
throw new ProjectConfigError(`Environment "${name}" must have a non-empty "apiUrl" string in ${PROJECT_CONFIG_DISPLAY_NAME}.`, sourcePath);
|
|
122
|
+
}
|
|
123
|
+
if (validateServerUrl(envObj.apiUrl) !== true) {
|
|
124
|
+
throw new ProjectConfigError(`Environment "${name}" has invalid apiUrl: ${envObj.apiUrl}`, sourcePath);
|
|
125
|
+
}
|
|
126
|
+
// Every environment names exactly one app (#3152) — for EVERY environment
|
|
127
|
+
// in the file, not just the one this invocation resolves, because the file
|
|
128
|
+
// is what the criterion is about and because the Vite plugin, cf-deploy
|
|
129
|
+
// and the Swift pre-build script may each select a different one.
|
|
130
|
+
// Non-string and blank-after-trim are the same failure as absent: an app id
|
|
131
|
+
// no consumer could use.
|
|
132
|
+
const appId = typeof envObj.appId === "string" ? envObj.appId.trim() : "";
|
|
133
|
+
if (!appId) {
|
|
134
|
+
throw new ProjectConfigError(missingAppIdMessage(name, sourcePath), sourcePath);
|
|
135
|
+
}
|
|
136
|
+
if (envObj.appName !== undefined && typeof envObj.appName !== "string") {
|
|
137
|
+
throw new ProjectConfigError(`Environment "${name}": "appName" must be a string if set.`, sourcePath);
|
|
138
|
+
}
|
|
139
|
+
if (envObj.description !== undefined && typeof envObj.description !== "string") {
|
|
140
|
+
throw new ProjectConfigError(`Environment "${name}": "description" must be a string if set.`, sourcePath);
|
|
141
|
+
}
|
|
142
|
+
// An origin, not any URL: the emailed sign-in link is built from it, so a
|
|
143
|
+
// value the server's allow-list would refuse — or one whose callback path
|
|
144
|
+
// neither the web app nor the AASA component names — is a 400 or a dead
|
|
145
|
+
// link later rather than an error here (#2982).
|
|
146
|
+
if (envObj.webUrl !== undefined) {
|
|
147
|
+
if (typeof envObj.webUrl !== "string") {
|
|
148
|
+
throw new ProjectConfigError(`Environment "${name}": "webUrl" must be a string if set.`, sourcePath);
|
|
149
|
+
}
|
|
150
|
+
const problem = validateWebUrl(envObj.webUrl);
|
|
151
|
+
if (problem !== true) {
|
|
152
|
+
throw new ProjectConfigError(`Environment "${name}" has invalid webUrl: ${problem}`, sourcePath);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// The iOS half of the same cross-client link (#3081). Both or neither for
|
|
156
|
+
// an environment with an iOS client: an app id with no origin names an app
|
|
157
|
+
// for a domain this config does not know, and no deploy could serve the
|
|
158
|
+
// association document that pairs them.
|
|
159
|
+
if (envObj.iosAppId !== undefined) {
|
|
160
|
+
if (typeof envObj.iosAppId !== "string") {
|
|
161
|
+
throw new ProjectConfigError(`Environment "${name}": "iosAppId" must be a string if set.`, sourcePath);
|
|
162
|
+
}
|
|
163
|
+
const problem = validateIosAppId(envObj.iosAppId);
|
|
164
|
+
if (problem !== true) {
|
|
165
|
+
throw new ProjectConfigError(`Environment "${name}" has invalid iosAppId: ${problem}`, sourcePath);
|
|
166
|
+
}
|
|
167
|
+
if (envObj.webUrl === undefined) {
|
|
168
|
+
throw new ProjectConfigError(`Environment "${name}" sets "iosAppId" but no "webUrl". The association document that vouches for that app is served by the web app, so set "webUrl" to its origin — or drop "iosAppId" if this environment has no iOS client.`, sourcePath);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
environments[name] = {
|
|
172
|
+
apiUrl: envObj.apiUrl.replace(/\/$/, ""),
|
|
173
|
+
appId,
|
|
174
|
+
appName: envObj.appName,
|
|
175
|
+
webUrl: envObj.webUrl === undefined
|
|
176
|
+
? undefined
|
|
177
|
+
: normalizeWebUrl(envObj.webUrl),
|
|
178
|
+
iosAppId: envObj.iosAppId === undefined
|
|
179
|
+
? undefined
|
|
180
|
+
: normalizeIosAppId(envObj.iosAppId),
|
|
181
|
+
description: envObj.description,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// defaultEnvironment is optional but must refer to a real environment.
|
|
185
|
+
let defaultEnvironment;
|
|
186
|
+
if (obj.defaultEnvironment !== undefined) {
|
|
187
|
+
if (typeof obj.defaultEnvironment !== "string") {
|
|
188
|
+
throw new ProjectConfigError(`"defaultEnvironment" must be a string if set.`, sourcePath);
|
|
189
|
+
}
|
|
190
|
+
if (obj.defaultEnvironment && !environments[obj.defaultEnvironment]) {
|
|
191
|
+
throw new ProjectConfigError(`"defaultEnvironment" is set to "${obj.defaultEnvironment}" but no such environment is defined.`, sourcePath);
|
|
192
|
+
}
|
|
193
|
+
defaultEnvironment = obj.defaultEnvironment || undefined;
|
|
194
|
+
}
|
|
195
|
+
return { version, defaultEnvironment, environments };
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Loads and validates the project config from a specific file path.
|
|
199
|
+
* Throws ProjectConfigError on I/O errors, JSON parse errors, or schema
|
|
200
|
+
* validation failures — we deliberately do NOT swallow these, because a
|
|
201
|
+
* broken config should be noisy so the user can fix it.
|
|
202
|
+
*/
|
|
203
|
+
export function loadProjectConfigFromPath(path) {
|
|
204
|
+
let raw;
|
|
205
|
+
try {
|
|
206
|
+
raw = readFileSync(path, "utf-8");
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
throw new ProjectConfigError(`Failed to read ${PROJECT_CONFIG_DISPLAY_NAME}: ${err.message}`, path);
|
|
210
|
+
}
|
|
211
|
+
let parsed;
|
|
212
|
+
try {
|
|
213
|
+
parsed = JSON.parse(raw);
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
throw new ProjectConfigError(`Failed to parse ${PROJECT_CONFIG_DISPLAY_NAME}: ${err.message}`, path);
|
|
217
|
+
}
|
|
218
|
+
return validateProjectConfig(parsed, path);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Loads the project config by searching upward from the current directory.
|
|
222
|
+
* Returns null (not an error) if no primitive/config.json is found anywhere.
|
|
223
|
+
* Still throws ProjectConfigError if a config IS found but is invalid.
|
|
224
|
+
*/
|
|
225
|
+
export function loadProjectConfig(startDir = process.cwd()) {
|
|
226
|
+
const path = findProjectConfigPath(startDir);
|
|
227
|
+
if (!path)
|
|
228
|
+
return null;
|
|
229
|
+
return loadProjectConfigFromPath(path);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Writes a project config to disk as pretty-printed JSON. Callers are
|
|
233
|
+
* responsible for ensuring the parent directory exists — this function
|
|
234
|
+
* does not try to be clever about location.
|
|
235
|
+
*/
|
|
236
|
+
export function saveProjectConfig(path, config) {
|
|
237
|
+
const dir = dirname(path);
|
|
238
|
+
if (!existsSync(dir)) {
|
|
239
|
+
mkdirSync(dir, { recursive: true });
|
|
240
|
+
}
|
|
241
|
+
const serialized = JSON.stringify(config, null, 2) + "\n";
|
|
242
|
+
writeFileSync(path, serialized);
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=project-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../../src/lib/project-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** What a row of the top-prompts response offers these cells. */
|
|
2
|
+
export type PromptCostRow = {
|
|
3
|
+
executions: number;
|
|
4
|
+
executionsWithCost?: number;
|
|
5
|
+
totalCost?: number | null;
|
|
6
|
+
avgCost?: number | null;
|
|
7
|
+
};
|
|
8
|
+
/** The same USD thresholds the Admin Console renders (`web-admin/src/lib/promptCost.ts`). */
|
|
9
|
+
export declare function formatUsd(cost: number): string;
|
|
10
|
+
export declare function formatCostCell(row: PromptCostRow): string;
|
|
11
|
+
export declare function formatAvgCostCell(row: PromptCostRow): string;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `analytics prompts` table's cost cells — #3787.
|
|
3
|
+
*
|
|
4
|
+
* `analytics/prompts/top` answers `executionsWithCost`, `totalCost` and
|
|
5
|
+
* `avgCost` per prompt, and how they render follows from what a missing cost
|
|
6
|
+
* means: `null` is UNKNOWN, not zero. Today only a decisions run reports a
|
|
7
|
+
* price, so a chat prompt has no number to show, and `$0.00` would tell an
|
|
8
|
+
* owner comparing models that it was free. The placeholder is the dim `-` the
|
|
9
|
+
* other formatters in `output.ts` already use for an absent value.
|
|
10
|
+
*
|
|
11
|
+
* A total covering part of the window carries an ` (n/m)` suffix, because five
|
|
12
|
+
* priced runs of eight are not the prompt's whole spend. The average needs no
|
|
13
|
+
* suffix: it is already an average over the priced runs alone.
|
|
14
|
+
*/
|
|
15
|
+
import chalk from "chalk";
|
|
16
|
+
/** The same USD thresholds the Admin Console renders (`web-admin/src/lib/promptCost.ts`). */
|
|
17
|
+
export function formatUsd(cost) {
|
|
18
|
+
if (cost < 0.0001)
|
|
19
|
+
return `$${cost.toExponential(2)}`;
|
|
20
|
+
if (cost < 0.01)
|
|
21
|
+
return `$${cost.toFixed(6)}`;
|
|
22
|
+
if (cost < 1)
|
|
23
|
+
return `$${cost.toFixed(4)}`;
|
|
24
|
+
return `$${cost.toFixed(2)}`;
|
|
25
|
+
}
|
|
26
|
+
const costed = (row) => row.executionsWithCost ?? 0;
|
|
27
|
+
export function formatCostCell(row) {
|
|
28
|
+
const total = row.totalCost ?? null;
|
|
29
|
+
const withCost = costed(row);
|
|
30
|
+
if (withCost <= 0 || total === null)
|
|
31
|
+
return chalk.dim("-");
|
|
32
|
+
const suffix = withCost < (row.executions ?? 0) ? ` (${withCost}/${row.executions})` : "";
|
|
33
|
+
return `${formatUsd(total)}${suffix}`;
|
|
34
|
+
}
|
|
35
|
+
export function formatAvgCostCell(row) {
|
|
36
|
+
const avg = row.avgCost ?? null;
|
|
37
|
+
if (costed(row) <= 0 || avg === null)
|
|
38
|
+
return chalk.dim("-");
|
|
39
|
+
return formatUsd(avg);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=prompt-cost-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-cost-format.js","sourceRoot":"","sources":["../../../src/lib/prompt-cost-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,6FAA6F;AAC7F,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,IAAI,GAAG,MAAM;QAAE,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,IAAI,IAAI,GAAG,IAAI;QAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAU,EAAE,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,CAAC;AAE3E,MAAM,UAAU,cAAc,CAAC,GAAkB;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3D,MAAM,MAAM,GACV,QAAQ,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAkB;IAClD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;IAChC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC"}
|