primitive-admin 1.1.0-alpha.7 → 1.1.0-alpha.70
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 +404 -80
- package/assets/skill/skills/primitive-platform/SKILL.md +808 -0
- package/dist/bin/primitive.d.ts +2 -0
- package/dist/bin/primitive.js +294 -21
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/admins.d.ts +2 -0
- package/dist/src/commands/admins.js +138 -19
- package/dist/src/commands/admins.js.map +1 -1
- package/dist/src/commands/analytics.d.ts +2 -0
- package/dist/src/commands/analytics.js +544 -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 +51 -96
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth.d.ts +2 -0
- package/dist/src/commands/auth.js +177 -7
- 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 +330 -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 +37 -38
- 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 +92 -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 +565 -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 +479 -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 +100 -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 +265 -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 +171 -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 +2140 -112
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +2 -0
- package/dist/src/commands/documents.js +1357 -19
- 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 +174 -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 +333 -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 +116 -0
- package/dist/src/commands/feature-flags.js.map +1 -0
- package/dist/src/commands/group-type-configs.d.ts +2 -0
- package/dist/src/commands/group-type-configs.js +86 -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 +38 -99
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.d.ts +223 -0
- package/dist/src/commands/guides.js +617 -65
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/init.d.ts +25 -0
- package/dist/src/commands/init.js +1605 -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 +380 -178
- 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 +160 -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 +112 -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 +281 -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 +225 -584
- 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 +272 -0
- package/dist/src/commands/rule-sets.js.map +1 -0
- package/dist/src/commands/scripts.d.ts +20 -0
- package/dist/src/commands/scripts.js +554 -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 +108 -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 +75 -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 +330 -0
- package/dist/src/commands/sync-app-settings.js.map +1 -0
- package/dist/src/commands/sync.d.ts +2323 -0
- package/dist/src/commands/sync.js +15065 -843
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.d.ts +2 -0
- package/dist/src/commands/tokens.js +130 -21
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.d.ts +2 -0
- package/dist/src/commands/users.js +532 -23
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/vars.d.ts +8 -0
- package/dist/src/commands/vars.js +96 -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 +10 -10
- package/dist/src/commands/waitlist.js.map +1 -1
- package/dist/src/commands/webhooks.d.ts +2 -0
- package/dist/src/commands/webhooks.js +562 -0
- package/dist/src/commands/webhooks.js.map +1 -0
- package/dist/src/commands/workflows.d.ts +116 -0
- package/dist/src/commands/workflows.js +1583 -681
- 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 +1936 -0
- package/dist/src/lib/api-client.js +1826 -138
- 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 +575 -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/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 +68 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +168 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
- package/dist/src/lib/config-object-descriptor.d.ts +127 -0
- package/dist/src/lib/config-object-descriptor.js +658 -0
- package/dist/src/lib/config-object-descriptor.js.map +1 -0
- package/dist/src/lib/config-payload.d.ts +85 -0
- package/dist/src/lib/config-payload.js +116 -0
- package/dist/src/lib/config-payload.js.map +1 -0
- package/dist/src/lib/config-surface.d.ts +130 -0
- package/dist/src/lib/config-surface.js +300 -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 +53 -0
- package/dist/src/lib/config.js +92 -53
- 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 +89 -0
- package/dist/src/lib/credentials-store.js +330 -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 +517 -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/env-resolver-core.d.ts +147 -0
- package/dist/src/lib/env-resolver-core.js +265 -0
- package/dist/src/lib/env-resolver-core.js.map +1 -0
- package/dist/src/lib/env-resolver.d.ts +84 -0
- package/dist/src/lib/env-resolver.js +133 -0
- package/dist/src/lib/env-resolver.js.map +1 -0
- package/dist/src/lib/fetch.d.ts +5 -0
- package/dist/src/lib/generated-allowlist.d.ts +28 -0
- package/dist/src/lib/generated-allowlist.js +277 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -0
- package/dist/src/lib/generated-config-surfaces.d.ts +682 -0
- package/dist/src/lib/generated-config-surfaces.js +4058 -0
- package/dist/src/lib/generated-config-surfaces.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-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-ios-links.d.ts +50 -0
- package/dist/src/lib/init-ios-links.js +153 -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 +33 -0
- package/dist/src/lib/init-xcode.js +114 -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/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/log-inspection.d.ts +568 -0
- package/dist/src/lib/log-inspection.js +639 -0
- package/dist/src/lib/log-inspection.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 +109 -0
- package/dist/src/lib/output.js +191 -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 +83 -0
- package/dist/src/lib/paginate.js +95 -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 +97 -0
- package/dist/src/lib/project-config.js +217 -0
- package/dist/src/lib/project-config.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 +65 -0
- package/dist/src/lib/refresh-admin-credentials.js +103 -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-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 +25 -0
- package/dist/src/lib/skill-installer.js +266 -0
- package/dist/src/lib/skill-installer.js.map +1 -0
- package/dist/src/lib/snapshots.d.ts +99 -0
- package/dist/src/lib/snapshots.js +357 -0
- package/dist/src/lib/snapshots.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js +914 -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/generator.d.ts +94 -0
- package/dist/src/lib/swift-codegen/generator.js +440 -0
- package/dist/src/lib/swift-codegen/generator.js.map +1 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +72 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js +644 -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 +111 -0
- package/dist/src/lib/sync-paths.js +198 -0
- package/dist/src/lib/sync-paths.js.map +1 -0
- package/dist/src/lib/sync-resource-types.d.ts +544 -0
- package/dist/src/lib/sync-resource-types.js +975 -0
- package/dist/src/lib/sync-resource-types.js.map +1 -0
- package/dist/src/lib/sync-selectors.d.ts +95 -0
- package/dist/src/lib/sync-selectors.js +228 -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-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 +15 -0
- package/dist/src/lib/test-case-variables.js +29 -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 +527 -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/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 +202 -0
- package/dist/src/lib/workflow-toml-validator.js +757 -0
- package/dist/src/lib/workflow-toml-validator.js.map +1 -0
- package/dist/src/types/index.d.ts +581 -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 +32 -8
package/dist/bin/primitive.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import { readFileSync } from "fs";
|
|
2
|
+
import { Command, CommanderError } from "commander";
|
|
3
|
+
import { readFileSync, writeSync } from "fs";
|
|
4
4
|
import { fileURLToPath } from "url";
|
|
5
5
|
import { dirname, resolve } from "path";
|
|
6
6
|
import { registerInitCommand } from "../src/commands/init.js";
|
|
@@ -9,86 +9,359 @@ import { registerAppsCommands } from "../src/commands/apps.js";
|
|
|
9
9
|
import { registerUsersCommands } from "../src/commands/users.js";
|
|
10
10
|
import { registerWaitlistCommands } from "../src/commands/waitlist.js";
|
|
11
11
|
import { registerIntegrationsCommands } from "../src/commands/integrations.js";
|
|
12
|
+
import { registerWebhooksCommands } from "../src/commands/webhooks.js";
|
|
13
|
+
import { registerConnectionsCommands } from "../src/commands/connections.js";
|
|
14
|
+
import { registerSessionsCommands } from "../src/commands/sessions.js";
|
|
15
|
+
import { registerCronTriggersCommands } from "../src/commands/cron-triggers.js";
|
|
16
|
+
import { registerLocksCommands } from "../src/commands/locks.js";
|
|
17
|
+
import { registerMetadataCommands } from "../src/commands/metadata.js";
|
|
12
18
|
import { registerPromptsCommands } from "../src/commands/prompts.js";
|
|
19
|
+
import { registerScriptsCommands } from "../src/commands/scripts.js";
|
|
13
20
|
import { registerWorkflowsCommands } from "../src/commands/workflows.js";
|
|
14
21
|
import { registerAdminsCommands } from "../src/commands/admins.js";
|
|
22
|
+
import { registerFeatureFlagsCommands } from "../src/commands/feature-flags.js";
|
|
15
23
|
import { registerCatalogCommands } from "../src/commands/catalog.js";
|
|
16
24
|
import { registerAnalyticsCommands } from "../src/commands/analytics.js";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
25
|
+
import { registerConfigSyncCommands } from "../src/commands/sync.js";
|
|
26
|
+
import { registerConfigCommands } from "../src/commands/config.js";
|
|
19
27
|
import { registerComparisonsCommands } from "../src/commands/comparisons.js";
|
|
20
28
|
import { registerTokensCommands } from "../src/commands/tokens.js";
|
|
21
29
|
import { registerDatabasesCommands } from "../src/commands/databases.js";
|
|
22
30
|
import { registerGroupsCommands } from "../src/commands/groups.js";
|
|
31
|
+
import { registerRuleSetsCommands } from "../src/commands/rule-sets.js";
|
|
32
|
+
import { registerGroupTypeConfigsCommands } from "../src/commands/group-type-configs.js";
|
|
33
|
+
import { registerDatabaseTypeConfigsCommands } from "../src/commands/database-type-configs.js";
|
|
23
34
|
import { registerGuidesCommands } from "../src/commands/guides.js";
|
|
24
35
|
import { registerDocumentsCommands } from "../src/commands/documents.js";
|
|
36
|
+
import chalk from "chalk";
|
|
37
|
+
import { registerEmailTemplatesCommands } from "../src/commands/email-templates.js";
|
|
38
|
+
import { registerCollectionsCommands } from "../src/commands/collections.js";
|
|
39
|
+
import { registerCollectionTypeConfigsCommands } from "../src/commands/collection-type-configs.js";
|
|
40
|
+
import { registerMetadataCategoryConfigsCommands } from "../src/commands/metadata-category-configs.js";
|
|
25
41
|
import { error } from "../src/lib/output.js";
|
|
42
|
+
import { installGlobalCrashHandlers } from "../src/lib/crash-handlers.js";
|
|
43
|
+
import { buildCliManifest } from "../src/lib/cli-manifest.js";
|
|
26
44
|
import { ApiError } from "../src/lib/api-client.js";
|
|
45
|
+
import { checkForUpdate } from "../src/lib/version-check.js";
|
|
46
|
+
import { loadCredentials } from "../src/lib/config.js";
|
|
47
|
+
import { checkSkillStatus } from "../src/lib/skill-installer.js";
|
|
48
|
+
import { registerSkillCommands } from "../src/commands/skill.js";
|
|
49
|
+
import { registerSecretsCommands } from "../src/commands/secrets.js";
|
|
50
|
+
import { registerVarsCommands } from "../src/commands/vars.js";
|
|
51
|
+
import { registerBlobBucketsCommands } from "../src/commands/blob-buckets.js";
|
|
52
|
+
import { registerEnvCommands } from "../src/commands/env.js";
|
|
53
|
+
import { setCurrentEnvName, getCurrentEnvNameSafe, getProjectConfig, } from "../src/lib/env-resolver.js";
|
|
54
|
+
import { ProjectConfigError, PROJECT_CONFIG_DISPLAY_NAME, findProjectConfigPath } from "../src/lib/project-config.js";
|
|
55
|
+
import { maybeWarnLegacyMigration } from "../src/lib/migration-nag.js";
|
|
56
|
+
// Install global crash handlers first thing. Without these, an error that
|
|
57
|
+
// escapes the top-level `.catch` below — e.g. ERR_USE_AFTER_CLOSE thrown from
|
|
58
|
+
// inside an inquirer event callback when stdin isn't a usable TTY — makes Node
|
|
59
|
+
// print only its bare `Node.js vX` banner and die with no message (issue #972).
|
|
60
|
+
installGlobalCrashHandlers();
|
|
27
61
|
const __filename = fileURLToPath(import.meta.url);
|
|
28
62
|
const __dirname = dirname(__filename);
|
|
29
63
|
const pkg = JSON.parse(readFileSync(resolve(__dirname, "../../package.json"), "utf-8"));
|
|
64
|
+
/**
|
|
65
|
+
* Write a string to a file descriptor synchronously, in full, before
|
|
66
|
+
* returning. Handles two pitfalls of a single `fs.writeSync` on a pipe:
|
|
67
|
+
* - partial writes: `writeSync` may write fewer bytes than requested (e.g.
|
|
68
|
+
* only what fits in the OS pipe buffer), so we loop on the returned count;
|
|
69
|
+
* - `EAGAIN` on a non-blocking fd with a slow/full consumer: retry instead of
|
|
70
|
+
* throwing.
|
|
71
|
+
* This guarantees the whole payload reaches the kernel before the caller
|
|
72
|
+
* exits, with no dependency on the event loop draining stdout.
|
|
73
|
+
*/
|
|
74
|
+
function writeAllSync(fd, text) {
|
|
75
|
+
const buf = Buffer.from(text, "utf-8");
|
|
76
|
+
let offset = 0;
|
|
77
|
+
while (offset < buf.length) {
|
|
78
|
+
try {
|
|
79
|
+
offset += writeSync(fd, buf, offset, buf.length - offset);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
// Retry on EAGAIN (non-blocking fd, consumer not ready yet). Rethrow
|
|
83
|
+
// anything else.
|
|
84
|
+
if (err.code === "EAGAIN")
|
|
85
|
+
continue;
|
|
86
|
+
throw err;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const isVersionFlag = process.argv.includes("--version") || process.argv.includes("-V");
|
|
91
|
+
const subcommand = process.argv[2];
|
|
92
|
+
const isJsonOutput = process.argv.includes("--json");
|
|
93
|
+
const skipHeader = isVersionFlag || isJsonOutput || subcommand === "login" || subcommand === "logout" || subcommand === "token";
|
|
94
|
+
// --env <name> is a global option that must be applied BEFORE any command
|
|
95
|
+
// code runs, because loadCredentials() and getServerUrl() both consult the
|
|
96
|
+
// active environment. Commander only parses options during .parse(), so we
|
|
97
|
+
// pre-extract it here via a tiny manual scan. The actual option is still
|
|
98
|
+
// registered on the program below so it appears in --help.
|
|
99
|
+
function preParseEnvFlag() {
|
|
100
|
+
const argv = process.argv;
|
|
101
|
+
for (let i = 2; i < argv.length; i++) {
|
|
102
|
+
const a = argv[i];
|
|
103
|
+
if (a === "--env" || a === "-e") {
|
|
104
|
+
return argv[i + 1] || null;
|
|
105
|
+
}
|
|
106
|
+
if (a.startsWith("--env="))
|
|
107
|
+
return a.slice("--env=".length);
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const preParsedEnv = preParseEnvFlag();
|
|
112
|
+
if (preParsedEnv) {
|
|
113
|
+
setCurrentEnvName(preParsedEnv);
|
|
114
|
+
}
|
|
115
|
+
// Surface project-config errors loudly and early. A broken config file
|
|
116
|
+
// should fail fast with a clear message rather than producing cryptic
|
|
117
|
+
// "Not logged in" errors deeper in.
|
|
118
|
+
try {
|
|
119
|
+
getProjectConfig();
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
if (err instanceof ProjectConfigError) {
|
|
123
|
+
error(err.message);
|
|
124
|
+
if (err.path)
|
|
125
|
+
error(` at ${err.path}`);
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
throw err;
|
|
129
|
+
}
|
|
130
|
+
// If the user explicitly passed --env <name>, verify it resolves to a
|
|
131
|
+
// real environment NOW so we don't silently fall back to legacy creds.
|
|
132
|
+
if (preParsedEnv) {
|
|
133
|
+
try {
|
|
134
|
+
const project = getProjectConfig();
|
|
135
|
+
if (!project) {
|
|
136
|
+
error(`--env was given but no ${PROJECT_CONFIG_DISPLAY_NAME} was found in this directory or any parent.`);
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
if (!project.environments[preParsedEnv]) {
|
|
140
|
+
const available = Object.keys(project.environments).join(", ") || "(none)";
|
|
141
|
+
error(`Environment "${preParsedEnv}" is not defined in ${PROJECT_CONFIG_DISPLAY_NAME}. Available: ${available}`);
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
if (err instanceof ProjectConfigError) {
|
|
147
|
+
error(err.message);
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
throw err;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (!skipHeader) {
|
|
154
|
+
const creds = loadCredentials();
|
|
155
|
+
// In project mode the env may declare an appId even before login.
|
|
156
|
+
// Show that so the header is useful during `env add` / `login` flows.
|
|
157
|
+
const envNameForHeader = getCurrentEnvNameSafe();
|
|
158
|
+
let headerAppId = creds?.currentAppId;
|
|
159
|
+
let headerAppName = creds?.currentAppName;
|
|
160
|
+
if (envNameForHeader && (!headerAppId || !headerAppName)) {
|
|
161
|
+
try {
|
|
162
|
+
const envCfg = getProjectConfig()?.environments[envNameForHeader];
|
|
163
|
+
headerAppId = headerAppId || envCfg?.appId;
|
|
164
|
+
headerAppName = headerAppName || envCfg?.appName;
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// ignore
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const appInfo = headerAppName
|
|
171
|
+
? `${headerAppName} (${headerAppId})`
|
|
172
|
+
: headerAppId || "None set";
|
|
173
|
+
// Prefer the active environment's apiUrl so the header stays correct
|
|
174
|
+
// even before you've logged in. Only fall back to credentials' serverUrl
|
|
175
|
+
// in legacy mode.
|
|
176
|
+
let server = creds?.serverUrl;
|
|
177
|
+
if (envNameForHeader) {
|
|
178
|
+
try {
|
|
179
|
+
const env = getProjectConfig()?.environments[envNameForHeader];
|
|
180
|
+
if (env)
|
|
181
|
+
server = env.apiUrl;
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// fall through
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
server = server || "Not configured";
|
|
188
|
+
const projectConfigPath = findProjectConfigPath();
|
|
189
|
+
const envLabel = envNameForHeader
|
|
190
|
+
? ` | Env: ${envNameForHeader}`
|
|
191
|
+
: projectConfigPath
|
|
192
|
+
? " | Env: (none selected)"
|
|
193
|
+
: "";
|
|
194
|
+
// The banner is a diagnostic, not data, so it goes to stderr alongside
|
|
195
|
+
// `info`/`warn`/`success`/`keyValue` (the stream-routing convention in
|
|
196
|
+
// `src/lib/output.ts`, issue #695). `skipHeader` already silences it under
|
|
197
|
+
// `--json`, but always-JSON commands with no `--json` flag — `documents
|
|
198
|
+
// dump` — were still emitting it above their payload, so `primitive
|
|
199
|
+
// documents dump <doc> | jq .` failed to parse (issue #2357).
|
|
200
|
+
console.error(chalk.dim(`CLI Version: ${pkg.version}${envLabel} | App: ${appInfo} | Server: ${server}`));
|
|
201
|
+
console.error();
|
|
202
|
+
}
|
|
203
|
+
// Nudge legacy-mode users (no .primitive/config.json, but a working
|
|
204
|
+
// `~/.primitive/credentials.json` + a sync marker in CWD) to migrate.
|
|
205
|
+
// Wholly self-contained: rate-limited to once per 24h, opt-out via
|
|
206
|
+
// PRIMITIVE_NO_MIGRATE_NAG=1, silent in CI / non-TTY. See #552.
|
|
207
|
+
maybeWarnLegacyMigration({ argv: process.argv });
|
|
30
208
|
const program = new Command();
|
|
31
209
|
program
|
|
32
210
|
.name("primitive")
|
|
211
|
+
.exitOverride()
|
|
33
212
|
.description(`CLI for administering Primitive applications.
|
|
34
213
|
|
|
35
214
|
Manage apps, users, integrations, prompts, workflows, and more from the command line.
|
|
36
215
|
Supports TOML-based configuration sync for version-controlled app settings.`)
|
|
37
216
|
.version(pkg.version)
|
|
217
|
+
// Global --env flag. Parsed above in preParseEnvFlag too; declaring it
|
|
218
|
+
// here so commander shows it in help output and forwards it to
|
|
219
|
+
// subcommands.
|
|
220
|
+
.option("-e, --env <name>", "Named environment from .primitive/config.json (e.g. dev, prod)")
|
|
38
221
|
.addHelpText("after", `
|
|
39
222
|
Examples:
|
|
40
|
-
$ primitive
|
|
41
|
-
$ primitive
|
|
42
|
-
$ primitive
|
|
43
|
-
$ primitive
|
|
44
|
-
$ primitive
|
|
223
|
+
$ primitive init my-app # Scaffold a new project + .primitive/config.json
|
|
224
|
+
$ primitive env list # Show environments
|
|
225
|
+
$ primitive env add prod --api-url ... # Add a new environment
|
|
226
|
+
$ primitive --env prod users list # Run a command against a specific env
|
|
227
|
+
$ primitive login # Authenticate via browser OAuth
|
|
228
|
+
$ primitive config pull # Pull config (auto per-env path)
|
|
229
|
+
|
|
230
|
+
Project configuration (.primitive/config.json):
|
|
231
|
+
In a directory with a .primitive/config.json (or any subdirectory of one),
|
|
232
|
+
the CLI operates in project mode: credentials and sync state live under
|
|
233
|
+
<projectRoot>/.primitive/ and each named environment is isolated.
|
|
234
|
+
Without a .primitive/config.json the CLI runs in legacy mode, reading
|
|
235
|
+
credentials from ~/.primitive/credentials.json.
|
|
45
236
|
|
|
46
|
-
|
|
47
|
-
|
|
237
|
+
Primitive environment selection (project mode):
|
|
238
|
+
1. --env <name> flag
|
|
239
|
+
2. PRIMITIVE_ENV env var
|
|
240
|
+
3. This machine's selection in .primitive/local.json ('primitive env use')
|
|
241
|
+
4. "defaultEnvironment" in .primitive/config.json (the committed team default)
|
|
242
|
+
5. The only environment, if there's exactly one
|
|
48
243
|
|
|
49
244
|
App Context:
|
|
50
|
-
|
|
51
|
-
|
|
245
|
+
Bind an app to an environment via "appId" in .primitive/config.json, or
|
|
246
|
+
run 'primitive use <app>' to set one in credentials. Most commands accept
|
|
247
|
+
--app to override.
|
|
52
248
|
|
|
53
249
|
Documentation:
|
|
54
|
-
See https://primitive-labs.github.io/primitive-docs/ for full documentation.
|
|
250
|
+
See https://primitive-labs.github.io/primitive-docs-site/ for full documentation.
|
|
55
251
|
`);
|
|
56
252
|
// Register all command groups (init first, then logically grouped)
|
|
57
253
|
registerInitCommand(program);
|
|
254
|
+
registerEnvCommands(program);
|
|
58
255
|
registerAuthCommands(program);
|
|
59
256
|
registerAppsCommands(program);
|
|
60
257
|
registerUsersCommands(program);
|
|
61
258
|
registerWaitlistCommands(program);
|
|
62
259
|
registerIntegrationsCommands(program);
|
|
260
|
+
registerWebhooksCommands(program);
|
|
261
|
+
registerConnectionsCommands(program);
|
|
262
|
+
registerSessionsCommands(program);
|
|
263
|
+
registerCronTriggersCommands(program);
|
|
264
|
+
registerLocksCommands(program);
|
|
265
|
+
registerMetadataCommands(program);
|
|
63
266
|
registerPromptsCommands(program);
|
|
267
|
+
registerScriptsCommands(program);
|
|
64
268
|
registerWorkflowsCommands(program);
|
|
65
269
|
registerAdminsCommands(program);
|
|
270
|
+
registerFeatureFlagsCommands(program);
|
|
66
271
|
registerCatalogCommands(program);
|
|
67
272
|
registerAnalyticsCommands(program);
|
|
68
|
-
|
|
69
|
-
|
|
273
|
+
// One noun owns the TOML configuration tree (issue #2759): `config` carries
|
|
274
|
+
// the local authoring verbs and the server-reconciling verbs that used to be
|
|
275
|
+
// the `sync` group, so the group is created once and handed on.
|
|
276
|
+
registerConfigSyncCommands(registerConfigCommands(program));
|
|
70
277
|
registerComparisonsCommands(program);
|
|
71
278
|
registerTokensCommands(program);
|
|
72
279
|
registerDatabasesCommands(program);
|
|
73
280
|
registerGroupsCommands(program);
|
|
281
|
+
registerRuleSetsCommands(program);
|
|
282
|
+
registerGroupTypeConfigsCommands(program);
|
|
283
|
+
registerDatabaseTypeConfigsCommands(program);
|
|
74
284
|
registerGuidesCommands(program);
|
|
75
285
|
registerDocumentsCommands(program);
|
|
286
|
+
registerEmailTemplatesCommands(program);
|
|
287
|
+
registerCollectionsCommands(program);
|
|
288
|
+
registerCollectionTypeConfigsCommands(program);
|
|
289
|
+
registerMetadataCategoryConfigsCommands(program);
|
|
290
|
+
registerSkillCommands(program);
|
|
291
|
+
registerSecretsCommands(program);
|
|
292
|
+
registerVarsCommands(program);
|
|
293
|
+
registerBlobBucketsCommands(program);
|
|
294
|
+
// `primitive help --json` — machine-readable command manifest (issue #983).
|
|
295
|
+
//
|
|
296
|
+
// Mechanism: a pre-parse argv guard, NOT a registered `help` subcommand.
|
|
297
|
+
// Commander already injects its own built-in `help [command]`; registering our
|
|
298
|
+
// own would risk clobbering `primitive help <command>`. By special-casing the
|
|
299
|
+
// invocation here — after every register*Commands() call so the full tree is
|
|
300
|
+
// built — we serialize commander's public accessors and exit before parseAsync.
|
|
301
|
+
// It is auth-free, runs offline (no project config / credentials / network),
|
|
302
|
+
// and `--json` already suppresses the header, skill-status nag, and update
|
|
303
|
+
// check (see `isJsonOutput` above), so stdout carries pure JSON.
|
|
304
|
+
//
|
|
305
|
+
// Hidden/undocumented: there is no visible `help --json` entry in human help
|
|
306
|
+
// output; it's discoverable for tooling/agents that know to ask for it.
|
|
307
|
+
if (process.argv[2] === "help" && process.argv.includes("--json")) {
|
|
308
|
+
// Emit the full manifest synchronously, then exit. The naive form — the
|
|
309
|
+
// async `json()` helper (`console.log`) followed by an immediate
|
|
310
|
+
// `process.exit(0)` — races the flush on the documented `primitive help
|
|
311
|
+
// --json | jq` pipe path: the ~365KB manifest far exceeds the 64KB OS pipe
|
|
312
|
+
// buffer, so exiting before the kernel drains it truncates the JSON for
|
|
313
|
+
// piped consumers.
|
|
314
|
+
//
|
|
315
|
+
// Robust fix: write to fd 1 with `fs.writeSync` in a loop. A single
|
|
316
|
+
// `writeSync` is NOT enough — on a non-blocking pipe fd it returns after a
|
|
317
|
+
// *partial* write (only what currently fits in the pipe buffer) without
|
|
318
|
+
// looping, silently dropping the tail; and on a slow consumer it can throw
|
|
319
|
+
// `EAGAIN`. Looping over the returned byte count and retrying on `EAGAIN`
|
|
320
|
+
// guarantees every byte is handed to the kernel before `process.exit(0)`,
|
|
321
|
+
// independent of the event loop. Output is byte-identical to `json()`: the
|
|
322
|
+
// same `JSON.stringify(..., null, 2)` plus a single trailing newline.
|
|
323
|
+
writeAllSync(1, JSON.stringify(buildCliManifest(program, pkg.version), null, 2) + "\n");
|
|
324
|
+
process.exit(0);
|
|
325
|
+
}
|
|
76
326
|
// Global error handler
|
|
77
327
|
program.hook("preAction", () => {
|
|
78
328
|
// Reset API client state before each command
|
|
79
329
|
});
|
|
330
|
+
// Commands that should never show post-command messages (update check, skill status)
|
|
331
|
+
const suppressPostMessages = isJsonOutput || subcommand === "token";
|
|
332
|
+
async function runPostCommandMessages() {
|
|
333
|
+
if (suppressPostMessages)
|
|
334
|
+
return;
|
|
335
|
+
// Claude Code skill: auto-update if installed, or show hint if not.
|
|
336
|
+
// Skip for `init` (handles its own prompt), `skill` (explicit management),
|
|
337
|
+
// and non-interactive contexts (--json, --version, token, etc.).
|
|
338
|
+
if (!skipHeader && subcommand !== "skill" && subcommand !== "init") {
|
|
339
|
+
await checkSkillStatus();
|
|
340
|
+
}
|
|
341
|
+
await checkForUpdate(pkg.version);
|
|
342
|
+
}
|
|
80
343
|
// Parse and execute
|
|
81
|
-
program.parseAsync(process.argv)
|
|
344
|
+
program.parseAsync(process.argv)
|
|
345
|
+
.then(async () => {
|
|
346
|
+
await runPostCommandMessages();
|
|
347
|
+
})
|
|
348
|
+
.catch(async (err) => {
|
|
349
|
+
// Commander throws CommanderError for help display, version flag, etc.
|
|
350
|
+
// Run post-command messages then exit with the intended code.
|
|
351
|
+
if (err instanceof CommanderError) {
|
|
352
|
+
await runPostCommandMessages();
|
|
353
|
+
process.exit(err.exitCode);
|
|
354
|
+
}
|
|
82
355
|
if (err instanceof ApiError) {
|
|
83
356
|
error(err.message);
|
|
84
357
|
if (err.statusCode === 401) {
|
|
85
358
|
error("Try running 'primitive login' to authenticate.");
|
|
86
359
|
}
|
|
360
|
+
await runPostCommandMessages();
|
|
87
361
|
process.exit(err.statusCode === 401 ? 2 : 1);
|
|
88
362
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
363
|
+
error(err.message || "An unexpected error occurred");
|
|
364
|
+
await runPostCommandMessages();
|
|
365
|
+
process.exit(1);
|
|
93
366
|
});
|
|
94
367
|
//# sourceMappingURL=primitive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../bin/primitive.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../bin/primitive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ApiClient } from "../lib/api-client.js";
|
|
2
2
|
import { success, error, info, keyValue, formatTable, formatId, formatDate, json, divider, } from "../lib/output.js";
|
|
3
|
+
import { confirmPrompt } from "../lib/confirm-prompt.js";
|
|
3
4
|
export function registerAdminsCommands(program) {
|
|
4
5
|
const admins = program
|
|
5
6
|
.command("admins")
|
|
@@ -10,6 +11,7 @@ Examples:
|
|
|
10
11
|
$ primitive admins search user@example.com
|
|
11
12
|
$ primitive admins invite newadmin@example.com --limit 5
|
|
12
13
|
$ primitive admins invitations list
|
|
14
|
+
$ primitive admins deferred-grants list --email user@test.com --app <appId>
|
|
13
15
|
`);
|
|
14
16
|
// List all admins
|
|
15
17
|
admins
|
|
@@ -40,7 +42,7 @@ Examples:
|
|
|
40
42
|
{ header: "LIMIT", key: "appCreationLimit" },
|
|
41
43
|
{ header: "DISABLED", key: "disabledAt", format: (v) => v ? "yes" : "" },
|
|
42
44
|
]));
|
|
43
|
-
if (result.
|
|
45
|
+
if (result.nextCursor) {
|
|
44
46
|
info("More results available. Use --limit to see more.");
|
|
45
47
|
}
|
|
46
48
|
}
|
|
@@ -160,15 +162,14 @@ Examples:
|
|
|
160
162
|
.option("-y, --yes", "Skip confirmation prompt")
|
|
161
163
|
.action(async (adminId, options) => {
|
|
162
164
|
if (!options.yes) {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
{
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
]);
|
|
165
|
+
let confirm;
|
|
166
|
+
try {
|
|
167
|
+
confirm = await confirmPrompt(`Disable admin ${adminId}?`);
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
error(err.message);
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
172
173
|
if (!confirm) {
|
|
173
174
|
info("Cancelled.");
|
|
174
175
|
return;
|
|
@@ -240,15 +241,14 @@ Examples:
|
|
|
240
241
|
.option("-y, --yes", "Skip confirmation prompt")
|
|
241
242
|
.action(async (invitationId, options) => {
|
|
242
243
|
if (!options.yes) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
{
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
]);
|
|
244
|
+
let confirm;
|
|
245
|
+
try {
|
|
246
|
+
confirm = await confirmPrompt(`Delete invitation ${invitationId}?`);
|
|
247
|
+
}
|
|
248
|
+
catch (err) {
|
|
249
|
+
error(err.message);
|
|
250
|
+
process.exit(1);
|
|
251
|
+
}
|
|
252
252
|
if (!confirm) {
|
|
253
253
|
info("Cancelled.");
|
|
254
254
|
return;
|
|
@@ -264,5 +264,124 @@ Examples:
|
|
|
264
264
|
process.exit(1);
|
|
265
265
|
}
|
|
266
266
|
});
|
|
267
|
+
// Deferred grants subcommand
|
|
268
|
+
const deferredGrants = admins
|
|
269
|
+
.command("deferred-grants")
|
|
270
|
+
.description("Inspect deferred grants (pending document/group grants for users who haven't signed up)");
|
|
271
|
+
deferredGrants
|
|
272
|
+
.command("list")
|
|
273
|
+
.description("List pending deferred grants for an email")
|
|
274
|
+
.option("--email <email>", "Filter by email address (required for efficient lookup)")
|
|
275
|
+
.option("--type <type>", "Filter by type: document or group")
|
|
276
|
+
.option("--app <appId>", "App ID (uses current app if not specified)")
|
|
277
|
+
.option("--limit <n>", "Page size for each server request")
|
|
278
|
+
.option("--cursor <cursor>", "Continuation token from a previous page")
|
|
279
|
+
.option("--json", "Output as JSON")
|
|
280
|
+
.action(async (options) => {
|
|
281
|
+
if (!options.email) {
|
|
282
|
+
error("--email is required for deferred grant lookups.");
|
|
283
|
+
process.exit(1);
|
|
284
|
+
}
|
|
285
|
+
const { resolveAppId } = await import("../lib/config.js");
|
|
286
|
+
let appId;
|
|
287
|
+
try {
|
|
288
|
+
appId = resolveAppId(undefined, options);
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
error("No app specified. Use --app <appId> or run from an app directory.");
|
|
292
|
+
process.exit(1);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
const client = new ApiClient();
|
|
296
|
+
try {
|
|
297
|
+
// Follow `nextCursor` to exhaustion so the listing shows every
|
|
298
|
+
// pending grant. The server caps a page at 100 and returns a real
|
|
299
|
+
// position cursor (#1316); a single request would silently stop
|
|
300
|
+
// after the first page.
|
|
301
|
+
const grants = [];
|
|
302
|
+
let cursor = options.cursor;
|
|
303
|
+
do {
|
|
304
|
+
const page = await client.listDeferredGrants(appId, {
|
|
305
|
+
email: options.email,
|
|
306
|
+
type: options.type,
|
|
307
|
+
limit: options.limit ? parseInt(options.limit, 10) : undefined,
|
|
308
|
+
cursor,
|
|
309
|
+
});
|
|
310
|
+
grants.push(...(page.grants ?? []));
|
|
311
|
+
cursor = page.nextCursor ?? undefined;
|
|
312
|
+
} while (cursor);
|
|
313
|
+
if (options.json) {
|
|
314
|
+
json(grants);
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
if (grants.length === 0) {
|
|
318
|
+
info(`No pending deferred grants for ${options.email}.`);
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
info(`Pending deferred grants for ${options.email}:`);
|
|
322
|
+
const rows = grants.map((row) => ({
|
|
323
|
+
...row,
|
|
324
|
+
_target: row.type === "document"
|
|
325
|
+
? `doc:${(row.documentId || "").slice(0, 12)}...`
|
|
326
|
+
: `group:${row.groupType}/${row.groupId}`,
|
|
327
|
+
_perm: row.permission || "-",
|
|
328
|
+
}));
|
|
329
|
+
console.log(formatTable(rows, [
|
|
330
|
+
{ header: "ID", key: "deferredId", format: formatId },
|
|
331
|
+
{ header: "TYPE", key: "type" },
|
|
332
|
+
{ header: "EMAIL", key: "email" },
|
|
333
|
+
{ header: "TARGET", key: "_target" },
|
|
334
|
+
{ header: "PERMISSION", key: "_perm" },
|
|
335
|
+
{ header: "CREATED", key: "createdAt", format: formatDate },
|
|
336
|
+
{ header: "EXPIRES", key: "expiresAt", format: formatDate },
|
|
337
|
+
]));
|
|
338
|
+
}
|
|
339
|
+
catch (err) {
|
|
340
|
+
error(err.message);
|
|
341
|
+
process.exit(1);
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
deferredGrants
|
|
345
|
+
.command("revoke")
|
|
346
|
+
.description("Revoke a deferred grant")
|
|
347
|
+
.argument("<deferred-id>", "Deferred grant ID to revoke")
|
|
348
|
+
.requiredOption("--type <type>", "Type: document or group")
|
|
349
|
+
.option("--app <appId>", "App ID (uses current app if not specified)")
|
|
350
|
+
.option("-y, --yes", "Skip confirmation prompt")
|
|
351
|
+
.action(async (deferredId, options) => {
|
|
352
|
+
const { resolveAppId } = await import("../lib/config.js");
|
|
353
|
+
let appId;
|
|
354
|
+
try {
|
|
355
|
+
appId = resolveAppId(undefined, options);
|
|
356
|
+
}
|
|
357
|
+
catch {
|
|
358
|
+
error("No app specified. Use --app <appId> or run from an app directory.");
|
|
359
|
+
process.exit(1);
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
if (!options.yes) {
|
|
363
|
+
let confirm;
|
|
364
|
+
try {
|
|
365
|
+
confirm = await confirmPrompt(`Revoke deferred ${options.type} grant ${deferredId}?`);
|
|
366
|
+
}
|
|
367
|
+
catch (err) {
|
|
368
|
+
error(err.message);
|
|
369
|
+
process.exit(1);
|
|
370
|
+
}
|
|
371
|
+
if (!confirm) {
|
|
372
|
+
info("Cancelled.");
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const client = new ApiClient();
|
|
377
|
+
try {
|
|
378
|
+
await client.revokeDeferredGrant(appId, deferredId, options.type);
|
|
379
|
+
success(`Deferred grant ${deferredId} revoked.`);
|
|
380
|
+
}
|
|
381
|
+
catch (err) {
|
|
382
|
+
error(err.message);
|
|
383
|
+
process.exit(1);
|
|
384
|
+
}
|
|
385
|
+
});
|
|
267
386
|
}
|
|
268
387
|
//# sourceMappingURL=admins.js.map
|