primitive-admin 1.1.0-alpha.6 → 1.1.0-alpha.60
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 +389 -71
- package/assets/skill/skills/primitive-platform/SKILL.md +670 -0
- package/dist/bin/primitive.d.ts +2 -0
- package/dist/bin/primitive.js +287 -17
- 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 +554 -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 +27 -80
- 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 +526 -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 +35 -0
- package/dist/src/commands/config.js +437 -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 +204 -0
- package/dist/src/commands/cron-triggers.js.map +1 -0
- package/dist/src/commands/database-types.d.ts +2 -0
- package/dist/src/commands/database-types.js +171 -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 +2153 -96
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +2 -0
- package/dist/src/commands/documents.js +1230 -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 +12 -0
- package/dist/src/commands/env.js +260 -0
- package/dist/src/commands/env.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 +17 -0
- package/dist/src/commands/init.js +964 -202
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.d.ts +2 -0
- package/dist/src/commands/integrations.js +484 -205
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/llm.d.ts +2 -0
- package/dist/src/commands/llm.js +13 -8
- 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.d.ts +2 -0
- package/dist/src/commands/metadata.js +406 -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 +135 -355
- 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 +271 -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 +739 -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/settings.d.ts +18 -0
- package/dist/src/commands/settings.js +54 -0
- package/dist/src/commands/settings.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 +125 -0
- package/dist/src/commands/sync-app-settings.js +380 -0
- package/dist/src/commands/sync-app-settings.js.map +1 -0
- package/dist/src/commands/sync.d.ts +958 -0
- package/dist/src/commands/sync.js +8954 -812
- 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 +440 -22
- 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 +442 -0
- package/dist/src/commands/webhooks.js.map +1 -0
- package/dist/src/commands/workflows.d.ts +94 -0
- package/dist/src/commands/workflows.js +1581 -448
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/api-client.d.ts +1814 -0
- package/dist/src/lib/api-client.js +1655 -103
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +130 -0
- package/dist/src/lib/app-settings-descriptor.js +262 -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 +97 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js +184 -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 +108 -0
- package/dist/src/lib/config-object-descriptor.js +607 -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 +105 -0
- package/dist/src/lib/config-payload.js.map +1 -0
- package/dist/src/lib/config-surface.d.ts +93 -0
- package/dist/src/lib/config-surface.js +178 -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.d.ts +62 -0
- package/dist/src/lib/env-resolver.js +121 -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 +266 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -0
- package/dist/src/lib/generated-config-surfaces.d.ts +578 -0
- package/dist/src/lib/generated-config-surfaces.js +3630 -0
- package/dist/src/lib/generated-config-surfaces.js.map +1 -0
- package/dist/src/lib/generated-template-lint.d.ts +206 -0
- package/dist/src/lib/generated-template-lint.js +589 -0
- package/dist/src/lib/generated-template-lint.js.map +1 -0
- package/dist/src/lib/generated-workflow-model-fields.d.ts +20 -0
- package/dist/src/lib/generated-workflow-model-fields.js +53 -0
- package/dist/src/lib/generated-workflow-model-fields.js.map +1 -0
- package/dist/src/lib/google-client-secret-status.d.ts +35 -0
- package/dist/src/lib/google-client-secret-status.js +56 -0
- package/dist/src/lib/google-client-secret-status.js.map +1 -0
- package/dist/src/lib/init-config.d.ts +81 -0
- package/dist/src/lib/init-config.js +149 -0
- package/dist/src/lib/init-config.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/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 +51 -0
- package/dist/src/lib/platform-owned.js +64 -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 +219 -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 +71 -0
- package/dist/src/lib/resolve-init-server.js +94 -0
- package/dist/src/lib/resolve-init-server.js.map +1 -0
- package/dist/src/lib/resolve-platform.d.ts +45 -0
- package/dist/src/lib/resolve-platform.js +43 -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/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 +100 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js +682 -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 +85 -0
- package/dist/src/lib/swift-codegen/generator.js +266 -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 +90 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.js +152 -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-paths.d.ts +72 -0
- package/dist/src/lib/sync-paths.js +130 -0
- package/dist/src/lib/sync-paths.js.map +1 -0
- package/dist/src/lib/sync-resource-types.d.ts +445 -0
- package/dist/src/lib/sync-resource-types.js +812 -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 +121 -0
- package/dist/src/lib/template.js +447 -67
- package/dist/src/lib/template.js.map +1 -1
- 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 +51 -0
- package/dist/src/lib/workflow-apply.js +89 -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 +83 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js +71 -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-field-descriptor.d.ts +91 -0
- package/dist/src/lib/workflow-field-descriptor.js +153 -0
- package/dist/src/lib/workflow-field-descriptor.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 +71 -0
- package/dist/src/lib/workflow-include-preserve.js +153 -0
- package/dist/src/lib/workflow-include-preserve.js.map +1 -0
- package/dist/src/lib/workflow-payload.d.ts +86 -0
- package/dist/src/lib/workflow-payload.js +168 -0
- package/dist/src/lib/workflow-payload.js.map +1 -0
- package/dist/src/lib/workflow-toml-validator.d.ts +199 -0
- package/dist/src/lib/workflow-toml-validator.js +754 -0
- package/dist/src/lib/workflow-toml-validator.js.map +1 -0
- package/dist/src/types/index.d.ts +533 -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 -6
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync v2 "unified block" layout — issue #1183, Phase 3.
|
|
3
|
+
*
|
|
4
|
+
* The current (legacy) sync layout stores each managed block type in its own
|
|
5
|
+
* flat directory:
|
|
6
|
+
*
|
|
7
|
+
* config/
|
|
8
|
+
* prompts/<key>.toml
|
|
9
|
+
* integrations/<key>.toml
|
|
10
|
+
* workflows/<key>.toml
|
|
11
|
+
* transforms/<name>.rhai # scripts
|
|
12
|
+
*
|
|
13
|
+
* The v2 layout introduced by the unified block model groups every block type
|
|
14
|
+
* under one `blocks/` tree keyed by type and block key, with a single
|
|
15
|
+
* `block.toml` envelope per block (and a sibling `source.rhai` for scripts):
|
|
16
|
+
*
|
|
17
|
+
* config/
|
|
18
|
+
* blocks/
|
|
19
|
+
* prompts/<key>/block.toml
|
|
20
|
+
* integrations/<key>/block.toml
|
|
21
|
+
* workflows/<key>/block.toml
|
|
22
|
+
* scripts/<key>/block.toml
|
|
23
|
+
* scripts/<key>/source.rhai
|
|
24
|
+
*
|
|
25
|
+
* Per the proposal (docs/proposals/unified-block-model.md, "Phase 3: Sync v2"),
|
|
26
|
+
* the CLI must:
|
|
27
|
+
* - Read both legacy and v2 layouts.
|
|
28
|
+
* - Preserve the legacy layout as the default until v2 is proven.
|
|
29
|
+
* - Provide a migration command to convert legacy sync directories.
|
|
30
|
+
*
|
|
31
|
+
* This module is the pure, side-effect-light core of that work: the v2 path
|
|
32
|
+
* builders, the `block.toml` codec, layout detection, and the legacy -> v2
|
|
33
|
+
* migration. It stores the *verbatim* legacy TOML body under
|
|
34
|
+
* `[[versions]].spec`, so the transform is loss-free and a v2 block round-trips
|
|
35
|
+
* back to a byte-for-byte-equivalent legacy object (see `reconstructLegacyBlock`).
|
|
36
|
+
* That is what lets a later pass read a v2 directory through the same push path
|
|
37
|
+
* the legacy layout uses without re-deriving every type's field mapping.
|
|
38
|
+
*/
|
|
39
|
+
import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from "fs";
|
|
40
|
+
import { createHash } from "crypto";
|
|
41
|
+
import { basename, join } from "path";
|
|
42
|
+
import { parseConfigToml, stringifyConfigToml } from "./config-toml.js";
|
|
43
|
+
export const BLOCK_TYPES = [
|
|
44
|
+
"prompt",
|
|
45
|
+
"integration",
|
|
46
|
+
"workflow",
|
|
47
|
+
"script",
|
|
48
|
+
];
|
|
49
|
+
/** The `schemaVersion` string written at the top of every v2 `block.toml`. */
|
|
50
|
+
export const BLOCK_SCHEMA_VERSION = "block/v1";
|
|
51
|
+
/** The filename of the script body written next to a v2 script `block.toml`. */
|
|
52
|
+
export const SCRIPT_SOURCE_FILENAME = "source.rhai";
|
|
53
|
+
/**
|
|
54
|
+
* The named top-level TOML table each legacy block file wraps its header in
|
|
55
|
+
* (`[prompt]`, `[integration]`, `[workflow]`). Scripts have no header table —
|
|
56
|
+
* their legacy form is a raw `.rhai` body — so they are handled separately.
|
|
57
|
+
*/
|
|
58
|
+
const LEGACY_HEADER_KEY = {
|
|
59
|
+
prompt: "prompt",
|
|
60
|
+
integration: "integration",
|
|
61
|
+
workflow: "workflow",
|
|
62
|
+
};
|
|
63
|
+
/** Legacy per-type directory names (flat layout). */
|
|
64
|
+
const LEGACY_DIR = {
|
|
65
|
+
prompt: "prompts",
|
|
66
|
+
integration: "integrations",
|
|
67
|
+
workflow: "workflows",
|
|
68
|
+
script: "transforms",
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* v2 per-type directory names under `blocks/`. Note scripts move from the
|
|
72
|
+
* legacy `transforms/` name to `scripts/` to match the block vocabulary.
|
|
73
|
+
*/
|
|
74
|
+
const V2_TYPE_DIR = {
|
|
75
|
+
prompt: "prompts",
|
|
76
|
+
integration: "integrations",
|
|
77
|
+
workflow: "workflows",
|
|
78
|
+
script: "scripts",
|
|
79
|
+
};
|
|
80
|
+
const V2_TYPE_DIR_TO_TYPE = {
|
|
81
|
+
prompts: "prompt",
|
|
82
|
+
integrations: "integration",
|
|
83
|
+
workflows: "workflow",
|
|
84
|
+
scripts: "script",
|
|
85
|
+
};
|
|
86
|
+
export function isBlockType(value) {
|
|
87
|
+
return (typeof value === "string" && BLOCK_TYPES.includes(value));
|
|
88
|
+
}
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
// Path builders
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
/** `<configDir>/blocks` — the root of the v2 tree. */
|
|
93
|
+
export function v2BlocksRoot(configDir) {
|
|
94
|
+
return join(configDir, "blocks");
|
|
95
|
+
}
|
|
96
|
+
/** `<configDir>/blocks/<typeDir>/<key>` — a single v2 block's directory. */
|
|
97
|
+
export function v2BlockDir(configDir, type, key) {
|
|
98
|
+
return join(configDir, "blocks", V2_TYPE_DIR[type], key);
|
|
99
|
+
}
|
|
100
|
+
/** `<configDir>/blocks/<typeDir>/<key>/block.toml`. */
|
|
101
|
+
export function v2BlockTomlPath(configDir, type, key) {
|
|
102
|
+
return join(v2BlockDir(configDir, type, key), "block.toml");
|
|
103
|
+
}
|
|
104
|
+
/** `<configDir>/blocks/scripts/<key>/source.rhai`. */
|
|
105
|
+
export function v2ScriptSourcePath(configDir, key) {
|
|
106
|
+
return join(v2BlockDir(configDir, "script", key), SCRIPT_SOURCE_FILENAME);
|
|
107
|
+
}
|
|
108
|
+
/** `<configDir>/<legacyDir>` for a block type (flat layout). */
|
|
109
|
+
export function legacyBlockDir(configDir, type) {
|
|
110
|
+
return join(configDir, LEGACY_DIR[type]);
|
|
111
|
+
}
|
|
112
|
+
function pruneUndefined(obj) {
|
|
113
|
+
for (const k of Object.keys(obj)) {
|
|
114
|
+
if (obj[k] === undefined)
|
|
115
|
+
delete obj[k];
|
|
116
|
+
}
|
|
117
|
+
return obj;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Serialize a v2 block into `block.toml` text. Key order is fixed
|
|
121
|
+
* (`schemaVersion`, `[block]`, `[[versions]]`) so a pull/migrate followed by a
|
|
122
|
+
* re-serialize is stable and produces no spurious diffs.
|
|
123
|
+
*/
|
|
124
|
+
export function serializeBlockToml(block) {
|
|
125
|
+
const data = {
|
|
126
|
+
schemaVersion: block.schemaVersion || BLOCK_SCHEMA_VERSION,
|
|
127
|
+
block: pruneUndefined({
|
|
128
|
+
type: block.block.type,
|
|
129
|
+
key: block.block.key,
|
|
130
|
+
displayName: block.block.displayName,
|
|
131
|
+
description: block.block.description,
|
|
132
|
+
status: block.block.status,
|
|
133
|
+
activeVersion: block.block.activeVersion,
|
|
134
|
+
}),
|
|
135
|
+
versions: block.versions.map((v) => pruneUndefined({
|
|
136
|
+
key: v.key,
|
|
137
|
+
status: v.status,
|
|
138
|
+
contentHash: v.contentHash,
|
|
139
|
+
spec: v.spec,
|
|
140
|
+
})),
|
|
141
|
+
};
|
|
142
|
+
return stringifyConfigToml(data);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Parse `block.toml` text into a `BlockToml`. Throws with a clear message when
|
|
146
|
+
* the envelope is malformed (missing/invalid `[block].type`, no versions).
|
|
147
|
+
*/
|
|
148
|
+
export function parseBlockToml(text) {
|
|
149
|
+
const parsed = parseConfigToml(text);
|
|
150
|
+
const header = parsed?.block;
|
|
151
|
+
if (!header || typeof header !== "object") {
|
|
152
|
+
throw new Error("block.toml is missing the [block] table");
|
|
153
|
+
}
|
|
154
|
+
if (!isBlockType(header.type)) {
|
|
155
|
+
throw new Error(`block.toml has an invalid [block].type: ${JSON.stringify(header.type)}`);
|
|
156
|
+
}
|
|
157
|
+
if (!header.key || typeof header.key !== "string") {
|
|
158
|
+
throw new Error("block.toml is missing a [block].key");
|
|
159
|
+
}
|
|
160
|
+
const rawVersions = Array.isArray(parsed.versions) ? parsed.versions : [];
|
|
161
|
+
const versions = rawVersions.map((v, i) => {
|
|
162
|
+
if (!v || typeof v !== "object") {
|
|
163
|
+
throw new Error(`block.toml version #${i} is not a table`);
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
key: typeof v.key === "string" ? v.key : String(i),
|
|
167
|
+
status: typeof v.status === "string" ? v.status : undefined,
|
|
168
|
+
contentHash: typeof v.contentHash === "string" ? v.contentHash : undefined,
|
|
169
|
+
spec: v.spec && typeof v.spec === "object"
|
|
170
|
+
? v.spec
|
|
171
|
+
: {},
|
|
172
|
+
};
|
|
173
|
+
});
|
|
174
|
+
if (versions.length === 0) {
|
|
175
|
+
throw new Error("block.toml has no [[versions]]");
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
schemaVersion: typeof parsed.schemaVersion === "string"
|
|
179
|
+
? parsed.schemaVersion
|
|
180
|
+
: BLOCK_SCHEMA_VERSION,
|
|
181
|
+
block: {
|
|
182
|
+
type: header.type,
|
|
183
|
+
key: header.key,
|
|
184
|
+
displayName: typeof header.displayName === "string"
|
|
185
|
+
? header.displayName
|
|
186
|
+
: undefined,
|
|
187
|
+
description: typeof header.description === "string"
|
|
188
|
+
? header.description
|
|
189
|
+
: undefined,
|
|
190
|
+
status: typeof header.status === "string" ? header.status : undefined,
|
|
191
|
+
activeVersion: typeof header.activeVersion === "string"
|
|
192
|
+
? header.activeVersion
|
|
193
|
+
: undefined,
|
|
194
|
+
},
|
|
195
|
+
versions,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/** `sha256:<hex>` content identity over the canonical JSON of a spec object. */
|
|
199
|
+
export function specContentHash(spec) {
|
|
200
|
+
return "sha256:" + createHash("sha256").update(canonicalJson(spec)).digest("hex");
|
|
201
|
+
}
|
|
202
|
+
function canonicalJson(value) {
|
|
203
|
+
if (value === null || typeof value !== "object") {
|
|
204
|
+
return JSON.stringify(value);
|
|
205
|
+
}
|
|
206
|
+
if (Array.isArray(value)) {
|
|
207
|
+
return "[" + value.map(canonicalJson).join(",") + "]";
|
|
208
|
+
}
|
|
209
|
+
const obj = value;
|
|
210
|
+
return ("{" +
|
|
211
|
+
Object.keys(obj)
|
|
212
|
+
.sort()
|
|
213
|
+
.map((k) => JSON.stringify(k) + ":" + canonicalJson(obj[k]))
|
|
214
|
+
.join(",") +
|
|
215
|
+
"}");
|
|
216
|
+
}
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
218
|
+
// Legacy <-> v2 conversion (loss-free)
|
|
219
|
+
// ---------------------------------------------------------------------------
|
|
220
|
+
/**
|
|
221
|
+
* Wrap a parsed legacy block object into a v2 `BlockToml`. The full legacy
|
|
222
|
+
* object is stored verbatim as the single version's `spec`, so the transform
|
|
223
|
+
* loses nothing. The `[block]` header is a projection derived from the legacy
|
|
224
|
+
* header table for the unified vocabulary; the spec remains the source of truth
|
|
225
|
+
* for reconstructing the legacy file.
|
|
226
|
+
*/
|
|
227
|
+
export function legacyObjectToBlock(type, legacy, fallbackKey) {
|
|
228
|
+
const headerTable = legacy[LEGACY_HEADER_KEY[type]] ||
|
|
229
|
+
{};
|
|
230
|
+
const key = typeof headerTable.key === "string" && headerTable.key
|
|
231
|
+
? headerTable.key
|
|
232
|
+
: fallbackKey;
|
|
233
|
+
const status = typeof headerTable.status === "string" ? headerTable.status : undefined;
|
|
234
|
+
const displayName = typeof headerTable.displayName === "string"
|
|
235
|
+
? headerTable.displayName
|
|
236
|
+
: typeof headerTable.name === "string"
|
|
237
|
+
? headerTable.name
|
|
238
|
+
: undefined;
|
|
239
|
+
const description = typeof headerTable.description === "string"
|
|
240
|
+
? headerTable.description
|
|
241
|
+
: undefined;
|
|
242
|
+
const versionKey = "default";
|
|
243
|
+
return {
|
|
244
|
+
schemaVersion: BLOCK_SCHEMA_VERSION,
|
|
245
|
+
block: {
|
|
246
|
+
type,
|
|
247
|
+
key,
|
|
248
|
+
displayName,
|
|
249
|
+
description,
|
|
250
|
+
status,
|
|
251
|
+
activeVersion: versionKey,
|
|
252
|
+
},
|
|
253
|
+
versions: [
|
|
254
|
+
{
|
|
255
|
+
key: versionKey,
|
|
256
|
+
status: status || "draft",
|
|
257
|
+
contentHash: specContentHash(legacy),
|
|
258
|
+
spec: legacy,
|
|
259
|
+
},
|
|
260
|
+
],
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
/** Wrap a raw Rhai script body into a v2 script `BlockToml`. */
|
|
264
|
+
export function scriptSourceToBlock(key, source) {
|
|
265
|
+
const spec = { sourceFile: SCRIPT_SOURCE_FILENAME };
|
|
266
|
+
return {
|
|
267
|
+
schemaVersion: BLOCK_SCHEMA_VERSION,
|
|
268
|
+
block: {
|
|
269
|
+
type: "script",
|
|
270
|
+
key,
|
|
271
|
+
status: "active",
|
|
272
|
+
activeVersion: "default",
|
|
273
|
+
},
|
|
274
|
+
versions: [
|
|
275
|
+
{
|
|
276
|
+
key: "default",
|
|
277
|
+
status: "active",
|
|
278
|
+
contentHash: specContentHash(source),
|
|
279
|
+
spec,
|
|
280
|
+
},
|
|
281
|
+
],
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Reverse `legacyObjectToBlock` / `scriptSourceToBlock`: rebuild the legacy
|
|
286
|
+
* on-disk content from a v2 block. This is the read half of dual-layout
|
|
287
|
+
* support — a v2 directory can be projected back to the exact legacy object a
|
|
288
|
+
* legacy consumer (e.g. the push path) expects. `sourceText` is required for
|
|
289
|
+
* scripts (the body lives in `source.rhai`, not the `block.toml`).
|
|
290
|
+
*/
|
|
291
|
+
export function reconstructLegacyBlock(block, sourceText) {
|
|
292
|
+
const version = block.versions.find((v) => v.key === block.block.activeVersion) ||
|
|
293
|
+
block.versions[0];
|
|
294
|
+
if (block.block.type === "script") {
|
|
295
|
+
return { rhai: sourceText ?? "" };
|
|
296
|
+
}
|
|
297
|
+
const spec = (version?.spec ?? {});
|
|
298
|
+
return { toml: stringifyConfigToml(spec) };
|
|
299
|
+
}
|
|
300
|
+
// ---------------------------------------------------------------------------
|
|
301
|
+
// Layout detection + enumeration
|
|
302
|
+
// ---------------------------------------------------------------------------
|
|
303
|
+
function dirHasBlockFiles(dir, ext) {
|
|
304
|
+
if (!existsSync(dir))
|
|
305
|
+
return false;
|
|
306
|
+
try {
|
|
307
|
+
return readdirSync(dir).some((name) => {
|
|
308
|
+
if (!name.endsWith(ext))
|
|
309
|
+
return false;
|
|
310
|
+
return statSync(join(dir, name)).isFile();
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Report which layouts a config directory currently holds. A directory can
|
|
319
|
+
* hold both during/after a migration (legacy preserved, v2 written).
|
|
320
|
+
*/
|
|
321
|
+
export function detectLayout(configDir) {
|
|
322
|
+
const legacy = BLOCK_TYPES.some((type) => {
|
|
323
|
+
const dir = legacyBlockDir(configDir, type);
|
|
324
|
+
const ext = type === "script" ? ".rhai" : ".toml";
|
|
325
|
+
return dirHasBlockFiles(dir, ext);
|
|
326
|
+
});
|
|
327
|
+
const v2 = listV2Blocks(configDir).length > 0;
|
|
328
|
+
return { legacy, v2 };
|
|
329
|
+
}
|
|
330
|
+
/** Enumerate every v2 block present under `<configDir>/blocks/`. */
|
|
331
|
+
export function listV2Blocks(configDir) {
|
|
332
|
+
const root = v2BlocksRoot(configDir);
|
|
333
|
+
if (!existsSync(root))
|
|
334
|
+
return [];
|
|
335
|
+
const refs = [];
|
|
336
|
+
for (const typeDir of readdirSync(root)) {
|
|
337
|
+
const type = V2_TYPE_DIR_TO_TYPE[typeDir];
|
|
338
|
+
if (!type)
|
|
339
|
+
continue;
|
|
340
|
+
const typePath = join(root, typeDir);
|
|
341
|
+
if (!statSync(typePath).isDirectory())
|
|
342
|
+
continue;
|
|
343
|
+
for (const key of readdirSync(typePath)) {
|
|
344
|
+
const blockDir = join(typePath, key);
|
|
345
|
+
const tomlPath = join(blockDir, "block.toml");
|
|
346
|
+
if (!existsSync(tomlPath) || !statSync(blockDir).isDirectory())
|
|
347
|
+
continue;
|
|
348
|
+
const sourcePath = join(blockDir, SCRIPT_SOURCE_FILENAME);
|
|
349
|
+
refs.push({
|
|
350
|
+
type,
|
|
351
|
+
key,
|
|
352
|
+
tomlPath,
|
|
353
|
+
sourcePath: existsSync(sourcePath) ? sourcePath : undefined,
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return refs;
|
|
358
|
+
}
|
|
359
|
+
function listLegacyBlockFiles(configDir) {
|
|
360
|
+
const files = [];
|
|
361
|
+
for (const type of BLOCK_TYPES) {
|
|
362
|
+
const dir = legacyBlockDir(configDir, type);
|
|
363
|
+
if (!existsSync(dir))
|
|
364
|
+
continue;
|
|
365
|
+
const ext = type === "script" ? ".rhai" : ".toml";
|
|
366
|
+
for (const name of readdirSync(dir)) {
|
|
367
|
+
if (!name.endsWith(ext))
|
|
368
|
+
continue;
|
|
369
|
+
const path = join(dir, name);
|
|
370
|
+
if (!statSync(path).isFile())
|
|
371
|
+
continue;
|
|
372
|
+
files.push({ type, key: basename(name, ext), path });
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
return files;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Convert a legacy sync directory into the v2 `blocks/<type>/<key>/block.toml`
|
|
379
|
+
* layout. Non-destructive: the legacy files are left in place (the legacy
|
|
380
|
+
* layout stays the default until v2 is proven). Test-case directories
|
|
381
|
+
* (`<key>.tests/`) are copied verbatim into `blocks/<type>/<key>/tests/` so a
|
|
382
|
+
* tested block migrates without losing its cases.
|
|
383
|
+
*/
|
|
384
|
+
export function migrateLegacyToV2(configDir, options = {}) {
|
|
385
|
+
const dryRun = !!options.dryRun;
|
|
386
|
+
const blocks = [];
|
|
387
|
+
const skipped = [];
|
|
388
|
+
for (const file of listLegacyBlockFiles(configDir)) {
|
|
389
|
+
const tomlPath = v2BlockTomlPath(configDir, file.type, file.key);
|
|
390
|
+
if (existsSync(tomlPath) && !options.force) {
|
|
391
|
+
skipped.push({
|
|
392
|
+
type: file.type,
|
|
393
|
+
key: file.key,
|
|
394
|
+
reason: "v2 block.toml already exists (use --force to overwrite)",
|
|
395
|
+
});
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
let block;
|
|
399
|
+
let sourceText;
|
|
400
|
+
if (file.type === "script") {
|
|
401
|
+
sourceText = readFileSync(file.path, "utf-8");
|
|
402
|
+
block = scriptSourceToBlock(file.key, sourceText);
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
let legacy;
|
|
406
|
+
try {
|
|
407
|
+
legacy = parseConfigToml(readFileSync(file.path, "utf-8"));
|
|
408
|
+
}
|
|
409
|
+
catch (err) {
|
|
410
|
+
skipped.push({
|
|
411
|
+
type: file.type,
|
|
412
|
+
key: file.key,
|
|
413
|
+
reason: `could not parse legacy TOML: ${err.message}`,
|
|
414
|
+
});
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
417
|
+
block = legacyObjectToBlock(file.type, legacy, file.key);
|
|
418
|
+
}
|
|
419
|
+
const blockDir = v2BlockDir(configDir, file.type, file.key);
|
|
420
|
+
const sourcePath = file.type === "script"
|
|
421
|
+
? v2ScriptSourcePath(configDir, file.key)
|
|
422
|
+
: undefined;
|
|
423
|
+
// Copy sibling test cases: legacy `<legacyDir>/<key>.tests/` ->
|
|
424
|
+
// `blocks/<type>/<key>/tests/`.
|
|
425
|
+
const legacyTestsDir = join(legacyBlockDir(configDir, file.type), `${file.key}.tests`);
|
|
426
|
+
let testsCopied = 0;
|
|
427
|
+
const v2TestsDir = join(blockDir, "tests");
|
|
428
|
+
if (existsSync(legacyTestsDir) && statSync(legacyTestsDir).isDirectory()) {
|
|
429
|
+
testsCopied = readdirSync(legacyTestsDir).filter((n) => n.endsWith(".toml")).length;
|
|
430
|
+
}
|
|
431
|
+
if (!dryRun) {
|
|
432
|
+
mkdirSync(blockDir, { recursive: true });
|
|
433
|
+
writeFileSync(tomlPath, serializeBlockToml(block));
|
|
434
|
+
if (sourcePath && sourceText !== undefined) {
|
|
435
|
+
writeFileSync(sourcePath, sourceText);
|
|
436
|
+
}
|
|
437
|
+
if (testsCopied > 0) {
|
|
438
|
+
cpSync(legacyTestsDir, v2TestsDir, { recursive: true });
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
blocks.push({
|
|
442
|
+
type: file.type,
|
|
443
|
+
key: file.key,
|
|
444
|
+
tomlPath,
|
|
445
|
+
sourcePath,
|
|
446
|
+
testsCopied,
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
return { blocks, skipped, dryRun };
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=block-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-layout.js","sourceRoot":"","sources":["../../../src/lib/block-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical JSON serialization used for content comparison and hashing.
|
|
3
|
+
*
|
|
4
|
+
* Key order is normalized (sorted) so two structurally identical objects
|
|
5
|
+
* always produce the same string, while array order is preserved (step order
|
|
6
|
+
* matters in workflows).
|
|
7
|
+
*
|
|
8
|
+
* Lives in `lib/` rather than inside `commands/sync.ts` so both the sync
|
|
9
|
+
* command and the workflow-include reconciliation helper can compare values
|
|
10
|
+
* the same way without a circular import.
|
|
11
|
+
*/
|
|
12
|
+
export declare function canonicalJsonStringify(value: any): string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical JSON serialization used for content comparison and hashing.
|
|
3
|
+
*
|
|
4
|
+
* Key order is normalized (sorted) so two structurally identical objects
|
|
5
|
+
* always produce the same string, while array order is preserved (step order
|
|
6
|
+
* matters in workflows).
|
|
7
|
+
*
|
|
8
|
+
* Lives in `lib/` rather than inside `commands/sync.ts` so both the sync
|
|
9
|
+
* command and the workflow-include reconciliation helper can compare values
|
|
10
|
+
* the same way without a circular import.
|
|
11
|
+
*/
|
|
12
|
+
export function canonicalJsonStringify(value) {
|
|
13
|
+
if (value === null || typeof value !== "object") {
|
|
14
|
+
return JSON.stringify(value);
|
|
15
|
+
}
|
|
16
|
+
if (Array.isArray(value)) {
|
|
17
|
+
return "[" + value.map((v) => canonicalJsonStringify(v)).join(",") + "]";
|
|
18
|
+
}
|
|
19
|
+
// Honor `toJSON` before the key walk. A `Date` — or smol-toml's `TomlDate`,
|
|
20
|
+
// what a TOML datetime literal parses to — has no enumerable own keys, so
|
|
21
|
+
// the `Object.keys()` walk below would collapse it to "{}" and every
|
|
22
|
+
// datetime would hash identically (issue #1919). Both implement `toJSON`,
|
|
23
|
+
// returning the ISO string; recursing on it makes date-like values (nested
|
|
24
|
+
// ones too) participate in the hash. Matches JSON.stringify's own semantics.
|
|
25
|
+
if (typeof value.toJSON === "function") {
|
|
26
|
+
return canonicalJsonStringify(value.toJSON());
|
|
27
|
+
}
|
|
28
|
+
const keys = Object.keys(value).sort();
|
|
29
|
+
return ("{" +
|
|
30
|
+
keys
|
|
31
|
+
.map((k) => JSON.stringify(k) + ":" + canonicalJsonStringify(value[k]))
|
|
32
|
+
.join(",") +
|
|
33
|
+
"}");
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=canonical-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../../src/lib/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAU;IAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3E,CAAC;IACD,4EAA4E;IAC5E,0EAA0E;IAC1E,qEAAqE;IACrE,0EAA0E;IAC1E,2EAA2E;IAC3E,6EAA6E;IAC7E,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACvC,OAAO,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,CACL,GAAG;QACH,IAAI;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACtE,IAAI,CAAC,GAAG,CAAC;QACZ,GAAG,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const DEFAULT_CHANNEL_BRANCH = "main";
|
|
2
|
+
/**
|
|
3
|
+
* Normalize a server URL for comparison: keep the scheme/host/port, strip all
|
|
4
|
+
* trailing slashes from the pathname. Returns null for an unparseable value.
|
|
5
|
+
* `http` vs `https` intentionally does NOT normalize to the same string
|
|
6
|
+
* (scheme is significant).
|
|
7
|
+
*/
|
|
8
|
+
export declare function normalizeServerUrl(raw: string): string | null;
|
|
9
|
+
/**
|
|
10
|
+
* Is `value` a plausible git branch ref that is safe to interpolate into a
|
|
11
|
+
* GitHub URL path? Deliberately strict — only ASCII letters/digits and
|
|
12
|
+
* `._/-`, no leading dash, no `..`, capped length. This guards the branch
|
|
13
|
+
* override env vars so no arbitrary string reaches a URL.
|
|
14
|
+
*/
|
|
15
|
+
export declare function isValidBranchName(value: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve which channel branch to fetch from. Precedence:
|
|
18
|
+
* 1. `override` (an undocumented, internal env var — `overrideName` is
|
|
19
|
+
* only used in the error message). An empty value is ignored; a value
|
|
20
|
+
* that is not a plausible git ref is rejected (throws).
|
|
21
|
+
* 2. Alpha detection: a normalized-URL match of the resolved server URL
|
|
22
|
+
* against `ALPHA_SERVER_URL` → `alpha`.
|
|
23
|
+
* 3. Otherwise `main` (production / local / any non-alpha target, or no
|
|
24
|
+
* target at all when the CLI is logged out).
|
|
25
|
+
*
|
|
26
|
+
* Pure and side-effect free: the caller passes the resolved server URL (or
|
|
27
|
+
* `undefined` when `getServerUrl()` threw) and the override, so this is
|
|
28
|
+
* fully unit-testable without config/credentials.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveChannelBranch(serverUrl: string | undefined, override: string | undefined, overrideName: string): string;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ALPHA_SERVER_URL } from "./constants.js";
|
|
2
|
+
// Channel resolution shared by every surface that fetches from a
|
|
3
|
+
// branch-as-channel repo (issue #1934): `primitive guides` (the
|
|
4
|
+
// primitive-docs-site repo) and `primitive init` (the template mirrors).
|
|
5
|
+
// Branches are named after the deploy environment they describe: `main` =
|
|
6
|
+
// production, `alpha` = the alpha environment.
|
|
7
|
+
export const DEFAULT_CHANNEL_BRANCH = "main";
|
|
8
|
+
/**
|
|
9
|
+
* Normalize a server URL for comparison: keep the scheme/host/port, strip all
|
|
10
|
+
* trailing slashes from the pathname. Returns null for an unparseable value.
|
|
11
|
+
* `http` vs `https` intentionally does NOT normalize to the same string
|
|
12
|
+
* (scheme is significant).
|
|
13
|
+
*/
|
|
14
|
+
export function normalizeServerUrl(raw) {
|
|
15
|
+
try {
|
|
16
|
+
const u = new URL(raw);
|
|
17
|
+
const path = u.pathname.replace(/\/+$/, "");
|
|
18
|
+
return `${u.protocol}//${u.host}${path}`;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Is `value` a plausible git branch ref that is safe to interpolate into a
|
|
26
|
+
* GitHub URL path? Deliberately strict — only ASCII letters/digits and
|
|
27
|
+
* `._/-`, no leading dash, no `..`, capped length. This guards the branch
|
|
28
|
+
* override env vars so no arbitrary string reaches a URL.
|
|
29
|
+
*/
|
|
30
|
+
export function isValidBranchName(value) {
|
|
31
|
+
if (value.length === 0 || value.length > 100)
|
|
32
|
+
return false;
|
|
33
|
+
if (value.includes(".."))
|
|
34
|
+
return false;
|
|
35
|
+
return /^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(value);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolve which channel branch to fetch from. Precedence:
|
|
39
|
+
* 1. `override` (an undocumented, internal env var — `overrideName` is
|
|
40
|
+
* only used in the error message). An empty value is ignored; a value
|
|
41
|
+
* that is not a plausible git ref is rejected (throws).
|
|
42
|
+
* 2. Alpha detection: a normalized-URL match of the resolved server URL
|
|
43
|
+
* against `ALPHA_SERVER_URL` → `alpha`.
|
|
44
|
+
* 3. Otherwise `main` (production / local / any non-alpha target, or no
|
|
45
|
+
* target at all when the CLI is logged out).
|
|
46
|
+
*
|
|
47
|
+
* Pure and side-effect free: the caller passes the resolved server URL (or
|
|
48
|
+
* `undefined` when `getServerUrl()` threw) and the override, so this is
|
|
49
|
+
* fully unit-testable without config/credentials.
|
|
50
|
+
*/
|
|
51
|
+
export function resolveChannelBranch(serverUrl, override, overrideName) {
|
|
52
|
+
const trimmedOverride = override?.trim();
|
|
53
|
+
if (trimmedOverride) {
|
|
54
|
+
if (!isValidBranchName(trimmedOverride)) {
|
|
55
|
+
throw new Error(`Invalid ${overrideName} "${override}": must be a plausible git branch name.`);
|
|
56
|
+
}
|
|
57
|
+
return trimmedOverride;
|
|
58
|
+
}
|
|
59
|
+
if (serverUrl) {
|
|
60
|
+
const target = normalizeServerUrl(serverUrl);
|
|
61
|
+
const alpha = normalizeServerUrl(ALPHA_SERVER_URL);
|
|
62
|
+
if (target !== null && alpha !== null && target === alpha) {
|
|
63
|
+
return "alpha";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return DEFAULT_CHANNEL_BRANCH;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../src/lib/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,iEAAiE;AACjE,gEAAgE;AAChE,yEAAyE;AACzE,0EAA0E;AAC1E,+CAA+C;AAE/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAC3D,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAA6B,EAC7B,QAA4B,EAC5B,YAAoB;IAEpB,MAAM,eAAe,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,WAAW,YAAY,KAAK,QAAQ,yCAAyC,CAC9E,CAAC;QACJ,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAC1D,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,sBAAsB,CAAC;AAChC,CAAC"}
|