primitive-admin 1.1.0-alpha.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +523 -109
- package/assets/skill/skills/primitive-platform/SKILL.md +289 -0
- package/dist/bin/primitive.d.ts +2 -0
- package/dist/bin/primitive.js +372 -21
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/admins.d.ts +2 -0
- package/dist/src/commands/admins.js +136 -30
- package/dist/src/commands/admins.js.map +1 -1
- package/dist/src/commands/analytics.d.ts +2 -0
- package/dist/src/commands/analytics.js +713 -55
- package/dist/src/commands/analytics.js.map +1 -1
- package/dist/src/commands/apps.d.ts +2 -0
- package/dist/src/commands/apps.js +65 -100
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth-sessions.d.ts +7 -0
- package/dist/src/commands/auth-sessions.js +144 -0
- package/dist/src/commands/auth-sessions.js.map +1 -0
- package/dist/src/commands/auth.d.ts +2 -0
- package/dist/src/commands/auth.js +238 -108
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/blob-buckets.d.ts +2 -0
- package/dist/src/commands/blob-buckets.js +331 -0
- package/dist/src/commands/blob-buckets.js.map +1 -0
- package/dist/src/commands/catalog.d.ts +2 -0
- package/dist/src/commands/catalog.js +63 -48
- package/dist/src/commands/catalog.js.map +1 -1
- package/dist/src/commands/collection-type-configs.d.ts +2 -0
- package/dist/src/commands/collection-type-configs.js +85 -0
- package/dist/src/commands/collection-type-configs.js.map +1 -0
- package/dist/src/commands/collections.d.ts +2 -0
- package/dist/src/commands/collections.js +1282 -0
- package/dist/src/commands/collections.js.map +1 -0
- package/dist/src/commands/comparisons.d.ts +2 -0
- package/dist/src/commands/comparisons.js +6 -6
- package/dist/src/commands/comparisons.js.map +1 -1
- package/dist/src/commands/config.d.ts +46 -0
- package/dist/src/commands/config.js +465 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/connections.d.ts +2 -0
- package/dist/src/commands/connections.js +99 -0
- package/dist/src/commands/connections.js.map +1 -0
- package/dist/src/commands/cron-triggers.d.ts +2 -0
- package/dist/src/commands/cron-triggers.js +266 -0
- package/dist/src/commands/cron-triggers.js.map +1 -0
- package/dist/src/commands/database-type-configs.d.ts +2 -0
- package/dist/src/commands/database-type-configs.js +164 -0
- package/dist/src/commands/database-type-configs.js.map +1 -0
- package/dist/src/commands/database-types.d.ts +2 -0
- package/dist/src/commands/database-types.js +471 -0
- package/dist/src/commands/database-types.js.map +1 -0
- package/dist/src/commands/databases.d.ts +65 -0
- package/dist/src/commands/databases.js +1887 -243
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +60 -0
- package/dist/src/commands/documents.js +2888 -22
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/email-templates.d.ts +2 -0
- package/dist/src/commands/email-templates.js +175 -0
- package/dist/src/commands/email-templates.js.map +1 -0
- package/dist/src/commands/env.d.ts +23 -0
- package/dist/src/commands/env.js +395 -0
- package/dist/src/commands/env.js.map +1 -0
- package/dist/src/commands/feature-flags.d.ts +14 -0
- package/dist/src/commands/feature-flags.js +117 -0
- package/dist/src/commands/feature-flags.js.map +1 -0
- package/dist/src/commands/functions.d.ts +20 -0
- package/dist/src/commands/functions.js +1630 -0
- package/dist/src/commands/functions.js.map +1 -0
- package/dist/src/commands/group-type-configs.d.ts +2 -0
- package/dist/src/commands/group-type-configs.js +87 -0
- package/dist/src/commands/group-type-configs.js.map +1 -0
- package/dist/src/commands/groups.d.ts +2 -0
- package/dist/src/commands/groups.js +65 -113
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.d.ts +223 -0
- package/dist/src/commands/guides.js +627 -69
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/init.d.ts +37 -0
- package/dist/src/commands/init.js +1693 -208
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.d.ts +2 -0
- package/dist/src/commands/integrations.js +428 -187
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/llm.d.ts +2 -0
- package/dist/src/commands/llm.js +4 -2
- package/dist/src/commands/llm.js.map +1 -1
- package/dist/src/commands/locks.d.ts +8 -0
- package/dist/src/commands/locks.js +175 -0
- package/dist/src/commands/locks.js.map +1 -0
- package/dist/src/commands/metadata-category-configs.d.ts +12 -0
- package/dist/src/commands/metadata-category-configs.js +113 -0
- package/dist/src/commands/metadata-category-configs.js.map +1 -0
- package/dist/src/commands/metadata.d.ts +2 -0
- package/dist/src/commands/metadata.js +288 -0
- package/dist/src/commands/metadata.js.map +1 -0
- package/dist/src/commands/prompts.d.ts +2 -0
- package/dist/src/commands/prompts.js +322 -634
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/rule-sets.d.ts +3 -0
- package/dist/src/commands/rule-sets.js +139 -148
- package/dist/src/commands/rule-sets.js.map +1 -1
- package/dist/src/commands/scripts.d.ts +30 -0
- package/dist/src/commands/scripts.js +688 -0
- package/dist/src/commands/scripts.js.map +1 -0
- package/dist/src/commands/secrets.d.ts +2 -0
- package/dist/src/commands/secrets.js +109 -0
- package/dist/src/commands/secrets.js.map +1 -0
- package/dist/src/commands/sessions.d.ts +2 -0
- package/dist/src/commands/sessions.js +76 -0
- package/dist/src/commands/sessions.js.map +1 -0
- package/dist/src/commands/skill.d.ts +2 -0
- package/dist/src/commands/skill.js +29 -0
- package/dist/src/commands/skill.js.map +1 -0
- package/dist/src/commands/sync-app-settings.d.ts +158 -0
- package/dist/src/commands/sync-app-settings.js +328 -0
- package/dist/src/commands/sync-app-settings.js.map +1 -0
- package/dist/src/commands/sync.d.ts +2670 -0
- package/dist/src/commands/sync.js +17144 -834
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.d.ts +2 -0
- package/dist/src/commands/tokens.js +132 -22
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.d.ts +2 -0
- package/dist/src/commands/users.js +542 -24
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/vars.d.ts +8 -0
- package/dist/src/commands/vars.js +97 -0
- package/dist/src/commands/vars.js.map +1 -0
- package/dist/src/commands/waitlist.d.ts +2 -0
- package/dist/src/commands/waitlist.js +12 -11
- package/dist/src/commands/waitlist.js.map +1 -1
- package/dist/src/commands/webhooks.d.ts +31 -0
- package/dist/src/commands/webhooks.js +633 -0
- package/dist/src/commands/webhooks.js.map +1 -0
- package/dist/src/commands/workflows.d.ts +88 -0
- package/dist/src/commands/workflows.js +1568 -742
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/access-rule-display.d.ts +21 -0
- package/dist/src/lib/access-rule-display.js +34 -0
- package/dist/src/lib/access-rule-display.js.map +1 -0
- package/dist/src/lib/api-client.d.ts +2550 -0
- package/dist/src/lib/api-client.js +2503 -160
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +263 -0
- package/dist/src/lib/app-settings-descriptor.js +583 -0
- package/dist/src/lib/app-settings-descriptor.js.map +1 -0
- package/dist/src/lib/auth-flow.d.ts +8 -0
- package/dist/src/lib/batch.d.ts +26 -0
- package/dist/src/lib/batch.js +32 -0
- package/dist/src/lib/batch.js.map +1 -0
- package/dist/src/lib/block-layout.d.ts +160 -0
- package/dist/src/lib/block-layout.js +451 -0
- package/dist/src/lib/block-layout.js.map +1 -0
- package/dist/src/lib/block-selector.d.ts +58 -0
- package/dist/src/lib/block-selector.js +92 -0
- package/dist/src/lib/block-selector.js.map +1 -0
- package/dist/src/lib/canonical-json.d.ts +12 -0
- package/dist/src/lib/canonical-json.js +35 -0
- package/dist/src/lib/canonical-json.js.map +1 -0
- package/dist/src/lib/channel.d.ts +30 -0
- package/dist/src/lib/channel.js +68 -0
- package/dist/src/lib/channel.js.map +1 -0
- package/dist/src/lib/cli-manifest.d.ts +68 -0
- package/dist/src/lib/cli-manifest.js +71 -0
- package/dist/src/lib/cli-manifest.js.map +1 -0
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +101 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js +191 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
- package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
- package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
- package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +38 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +46 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
- package/dist/src/lib/collection-export.d.ts +184 -0
- package/dist/src/lib/collection-export.js +252 -0
- package/dist/src/lib/collection-export.js.map +1 -0
- package/dist/src/lib/config-json-field.d.ts +28 -0
- package/dist/src/lib/config-json-field.js +56 -0
- package/dist/src/lib/config-json-field.js.map +1 -0
- package/dist/src/lib/config-object-descriptor.d.ts +127 -0
- package/dist/src/lib/config-object-descriptor.js +740 -0
- package/dist/src/lib/config-object-descriptor.js.map +1 -0
- package/dist/src/lib/config-payload.d.ts +92 -0
- package/dist/src/lib/config-payload.js +161 -0
- package/dist/src/lib/config-payload.js.map +1 -0
- package/dist/src/lib/config-surface.d.ts +141 -0
- package/dist/src/lib/config-surface.js +368 -0
- package/dist/src/lib/config-surface.js.map +1 -0
- package/dist/src/lib/config-toml.d.ts +10 -0
- package/dist/src/lib/config-toml.js +42 -0
- package/dist/src/lib/config-toml.js.map +1 -0
- package/dist/src/lib/config.d.ts +71 -0
- package/dist/src/lib/config.js +71 -68
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/confirm-prompt.d.ts +83 -0
- package/dist/src/lib/confirm-prompt.js +110 -0
- package/dist/src/lib/confirm-prompt.js.map +1 -0
- package/dist/src/lib/constants.d.ts +11 -0
- package/dist/src/lib/constants.js +12 -0
- package/dist/src/lib/constants.js.map +1 -0
- package/dist/src/lib/crash-handlers.d.ts +20 -0
- package/dist/src/lib/crash-handlers.js +49 -0
- package/dist/src/lib/crash-handlers.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +104 -0
- package/dist/src/lib/credentials-store.js +336 -0
- package/dist/src/lib/credentials-store.js.map +1 -0
- package/dist/src/lib/csv.d.ts +47 -0
- package/dist/src/lib/csv.js +172 -0
- package/dist/src/lib/csv.js.map +1 -0
- package/dist/src/lib/data-input.d.ts +23 -0
- package/dist/src/lib/data-input.js +50 -0
- package/dist/src/lib/data-input.js.map +1 -0
- package/dist/src/lib/db-codegen/dbFingerprint.d.ts +10 -0
- package/dist/src/lib/db-codegen/dbFingerprint.js +17 -0
- package/dist/src/lib/db-codegen/dbFingerprint.js.map +1 -0
- package/dist/src/lib/db-codegen/dbGenerator.d.ts +67 -0
- package/dist/src/lib/db-codegen/dbGenerator.js +170 -0
- package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -0
- package/dist/src/lib/db-codegen/dbNaming.d.ts +87 -0
- package/dist/src/lib/db-codegen/dbNaming.js +180 -0
- package/dist/src/lib/db-codegen/dbNaming.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTemplates.d.ts +272 -0
- package/dist/src/lib/db-codegen/dbTemplates.js +480 -0
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTsTypes.d.ts +73 -0
- package/dist/src/lib/db-codegen/dbTsTypes.js +139 -0
- package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
- package/dist/src/lib/db-codegen/dbTypeIR.js +525 -0
- package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +112 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +211 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
- package/dist/src/lib/deprecation.d.ts +22 -0
- package/dist/src/lib/deprecation.js +43 -0
- package/dist/src/lib/deprecation.js.map +1 -0
- package/dist/src/lib/document-export-permissions.d.ts +30 -0
- package/dist/src/lib/document-export-permissions.js +54 -0
- package/dist/src/lib/document-export-permissions.js.map +1 -0
- package/dist/src/lib/document-ingest-artifact.d.ts +120 -0
- package/dist/src/lib/document-ingest-artifact.js +505 -0
- package/dist/src/lib/document-ingest-artifact.js.map +1 -0
- package/dist/src/lib/document-ingest-input.d.ts +51 -0
- package/dist/src/lib/document-ingest-input.js +132 -0
- package/dist/src/lib/document-ingest-input.js.map +1 -0
- package/dist/src/lib/document-ingest-rows.d.ts +137 -0
- package/dist/src/lib/document-ingest-rows.js +181 -0
- package/dist/src/lib/document-ingest-rows.js.map +1 -0
- package/dist/src/lib/document-ingest.d.ts +101 -0
- package/dist/src/lib/document-ingest.js +384 -0
- package/dist/src/lib/document-ingest.js.map +1 -0
- package/dist/src/lib/env-resolver-core.d.ts +258 -0
- package/dist/src/lib/env-resolver-core.js +447 -0
- package/dist/src/lib/env-resolver-core.js.map +1 -0
- package/dist/src/lib/env-resolver.d.ts +99 -0
- package/dist/src/lib/env-resolver.js +153 -0
- package/dist/src/lib/env-resolver.js.map +1 -0
- package/dist/src/lib/fetch.d.ts +5 -0
- package/dist/src/lib/function-bundle.d.ts +147 -0
- package/dist/src/lib/function-bundle.js +341 -0
- package/dist/src/lib/function-bundle.js.map +1 -0
- package/dist/src/lib/function-collect.d.ts +123 -0
- package/dist/src/lib/function-collect.js +610 -0
- package/dist/src/lib/function-collect.js.map +1 -0
- package/dist/src/lib/function-db-types.d.ts +202 -0
- package/dist/src/lib/function-db-types.js +870 -0
- package/dist/src/lib/function-db-types.js.map +1 -0
- package/dist/src/lib/function-document-types.d.ts +144 -0
- package/dist/src/lib/function-document-types.js +370 -0
- package/dist/src/lib/function-document-types.js.map +1 -0
- package/dist/src/lib/function-grants-preflight.d.ts +64 -0
- package/dist/src/lib/function-grants-preflight.js +105 -0
- package/dist/src/lib/function-grants-preflight.js.map +1 -0
- package/dist/src/lib/function-log-lines.d.ts +76 -0
- package/dist/src/lib/function-log-lines.js +160 -0
- package/dist/src/lib/function-log-lines.js.map +1 -0
- package/dist/src/lib/function-log-row.d.ts +29 -0
- package/dist/src/lib/function-log-row.js +73 -0
- package/dist/src/lib/function-log-row.js.map +1 -0
- package/dist/src/lib/function-log-tail.d.ts +132 -0
- package/dist/src/lib/function-log-tail.js +262 -0
- package/dist/src/lib/function-log-tail.js.map +1 -0
- package/dist/src/lib/function-run.d.ts +289 -0
- package/dist/src/lib/function-run.js +389 -0
- package/dist/src/lib/function-run.js.map +1 -0
- package/dist/src/lib/function-schema-codegen.d.ts +143 -0
- package/dist/src/lib/function-schema-codegen.js +420 -0
- package/dist/src/lib/function-schema-codegen.js.map +1 -0
- package/dist/src/lib/function-sync.d.ts +459 -0
- package/dist/src/lib/function-sync.js +1258 -0
- package/dist/src/lib/function-sync.js.map +1 -0
- package/dist/src/lib/function-trigger-listing.d.ts +27 -0
- package/dist/src/lib/function-trigger-listing.js +70 -0
- package/dist/src/lib/function-trigger-listing.js.map +1 -0
- package/dist/src/lib/function-typecheck.d.ts +86 -0
- package/dist/src/lib/function-typecheck.js +370 -0
- package/dist/src/lib/function-typecheck.js.map +1 -0
- package/dist/src/lib/function-versions.d.ts +122 -0
- package/dist/src/lib/function-versions.js +182 -0
- package/dist/src/lib/function-versions.js.map +1 -0
- package/dist/src/lib/generated-allowlist.d.ts +28 -0
- package/dist/src/lib/generated-allowlist.js +281 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -0
- package/dist/src/lib/generated-config-surfaces.d.ts +2936 -0
- package/dist/src/lib/generated-config-surfaces.js +10569 -0
- package/dist/src/lib/generated-config-surfaces.js.map +1 -0
- package/dist/src/lib/generated-sdk-types.d.ts +12 -0
- package/dist/src/lib/generated-sdk-types.js +13 -0
- package/dist/src/lib/generated-sdk-types.js.map +1 -0
- package/dist/src/lib/generated-template-lint.d.ts +212 -0
- package/dist/src/lib/generated-template-lint.js +624 -0
- package/dist/src/lib/generated-template-lint.js.map +1 -0
- package/dist/src/lib/init-adopt.d.ts +16 -0
- package/dist/src/lib/init-adopt.js +34 -0
- package/dist/src/lib/init-adopt.js.map +1 -0
- package/dist/src/lib/init-assets.d.ts +39 -0
- package/dist/src/lib/init-assets.js +97 -0
- package/dist/src/lib/init-assets.js.map +1 -0
- package/dist/src/lib/init-client-platforms.d.ts +14 -0
- package/dist/src/lib/init-client-platforms.js +71 -0
- package/dist/src/lib/init-client-platforms.js.map +1 -0
- package/dist/src/lib/init-config.d.ts +98 -0
- package/dist/src/lib/init-config.js +186 -0
- package/dist/src/lib/init-config.js.map +1 -0
- package/dist/src/lib/init-email-redirect-uris.d.ts +37 -0
- package/dist/src/lib/init-email-redirect-uris.js +46 -0
- package/dist/src/lib/init-email-redirect-uris.js.map +1 -0
- package/dist/src/lib/init-ios-links.d.ts +91 -0
- package/dist/src/lib/init-ios-links.js +219 -0
- package/dist/src/lib/init-ios-links.js.map +1 -0
- package/dist/src/lib/init-plan.d.ts +80 -0
- package/dist/src/lib/init-plan.js +95 -0
- package/dist/src/lib/init-plan.js.map +1 -0
- package/dist/src/lib/init-production-env.d.ts +48 -0
- package/dist/src/lib/init-production-env.js +59 -0
- package/dist/src/lib/init-production-env.js.map +1 -0
- package/dist/src/lib/init-schema.d.ts +74 -0
- package/dist/src/lib/init-schema.js +358 -0
- package/dist/src/lib/init-schema.js.map +1 -0
- package/dist/src/lib/init-xcode.d.ts +34 -0
- package/dist/src/lib/init-xcode.js +138 -0
- package/dist/src/lib/init-xcode.js.map +1 -0
- package/dist/src/lib/integration-request-config.d.ts +30 -0
- package/dist/src/lib/integration-request-config.js +145 -0
- package/dist/src/lib/integration-request-config.js.map +1 -0
- package/dist/src/lib/integration-selector.d.ts +42 -0
- package/dist/src/lib/integration-selector.js +46 -0
- package/dist/src/lib/integration-selector.js.map +1 -0
- package/dist/src/lib/ios-app-id.d.ts +34 -0
- package/dist/src/lib/ios-app-id.js +69 -0
- package/dist/src/lib/ios-app-id.js.map +1 -0
- package/dist/src/lib/list-options.d.ts +68 -0
- package/dist/src/lib/list-options.js +89 -0
- package/dist/src/lib/list-options.js.map +1 -0
- package/dist/src/lib/local-state.d.ts +55 -0
- package/dist/src/lib/local-state.js +167 -0
- package/dist/src/lib/local-state.js.map +1 -0
- package/dist/src/lib/local-test-cases.d.ts +63 -0
- package/dist/src/lib/local-test-cases.js +136 -0
- package/dist/src/lib/local-test-cases.js.map +1 -0
- package/dist/src/lib/log-inspection.d.ts +715 -0
- package/dist/src/lib/log-inspection.js +816 -0
- package/dist/src/lib/log-inspection.js.map +1 -0
- package/dist/src/lib/logout-admin-session.d.ts +33 -0
- package/dist/src/lib/logout-admin-session.js +70 -0
- package/dist/src/lib/logout-admin-session.js.map +1 -0
- package/dist/src/lib/migration-nag.d.ts +49 -0
- package/dist/src/lib/migration-nag.js +163 -0
- package/dist/src/lib/migration-nag.js.map +1 -0
- package/dist/src/lib/object-status-filter.d.ts +22 -0
- package/dist/src/lib/object-status-filter.js +45 -0
- package/dist/src/lib/object-status-filter.js.map +1 -0
- package/dist/src/lib/output.d.ts +124 -0
- package/dist/src/lib/output.js +219 -8
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/package-manager.d.ts +140 -0
- package/dist/src/lib/package-manager.js +305 -0
- package/dist/src/lib/package-manager.js.map +1 -0
- package/dist/src/lib/paginate.d.ts +98 -0
- package/dist/src/lib/paginate.js +112 -0
- package/dist/src/lib/paginate.js.map +1 -0
- package/dist/src/lib/platform-owned.d.ts +63 -0
- package/dist/src/lib/platform-owned.js +85 -0
- package/dist/src/lib/platform-owned.js.map +1 -0
- package/dist/src/lib/project-config.d.ts +122 -0
- package/dist/src/lib/project-config.js +244 -0
- package/dist/src/lib/project-config.js.map +1 -0
- package/dist/src/lib/prompt-cost-format.d.ts +11 -0
- package/dist/src/lib/prompt-cost-format.js +41 -0
- package/dist/src/lib/prompt-cost-format.js.map +1 -0
- package/dist/src/lib/prompt-schema-codegen.d.ts +147 -0
- package/dist/src/lib/prompt-schema-codegen.js +462 -0
- package/dist/src/lib/prompt-schema-codegen.js.map +1 -0
- package/dist/src/lib/query-operators.d.ts +43 -0
- package/dist/src/lib/query-operators.js +80 -0
- package/dist/src/lib/query-operators.js.map +1 -0
- package/dist/src/lib/record-filter.d.ts +18 -0
- package/dist/src/lib/record-filter.js +55 -0
- package/dist/src/lib/record-filter.js.map +1 -0
- package/dist/src/lib/refresh-admin-credentials.d.ts +73 -0
- package/dist/src/lib/refresh-admin-credentials.js +123 -0
- package/dist/src/lib/refresh-admin-credentials.js.map +1 -0
- package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
- package/dist/src/lib/resolve-init-dev-port.js +55 -0
- package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
- package/dist/src/lib/resolve-init-server.d.ts +64 -0
- package/dist/src/lib/resolve-init-server.js +77 -0
- package/dist/src/lib/resolve-init-server.js.map +1 -0
- package/dist/src/lib/resolve-owner.d.ts +19 -0
- package/dist/src/lib/resolve-owner.js +20 -0
- package/dist/src/lib/resolve-owner.js.map +1 -0
- package/dist/src/lib/resolve-platform.d.ts +74 -0
- package/dist/src/lib/resolve-platform.js +105 -0
- package/dist/src/lib/resolve-platform.js.map +1 -0
- package/dist/src/lib/run-status.d.ts +19 -0
- package/dist/src/lib/run-status.generated.d.ts +39 -0
- package/dist/src/lib/run-status.generated.js +66 -0
- package/dist/src/lib/run-status.generated.js.map +1 -0
- package/dist/src/lib/run-status.js +19 -0
- package/dist/src/lib/run-status.js.map +1 -0
- package/dist/src/lib/server-text-normalization.d.ts +51 -0
- package/dist/src/lib/server-text-normalization.js +90 -0
- package/dist/src/lib/server-text-normalization.js.map +1 -0
- package/dist/src/lib/server-url.d.ts +22 -0
- package/dist/src/lib/server-url.js +33 -0
- package/dist/src/lib/server-url.js.map +1 -0
- package/dist/src/lib/signing-secret-status.d.ts +81 -0
- package/dist/src/lib/signing-secret-status.js +116 -0
- package/dist/src/lib/signing-secret-status.js.map +1 -0
- package/dist/src/lib/skill-installer.d.ts +71 -0
- package/dist/src/lib/skill-installer.js +441 -0
- package/dist/src/lib/skill-installer.js.map +1 -0
- package/dist/src/lib/snapshot-audit-source.d.ts +45 -0
- package/dist/src/lib/snapshot-audit-source.js +58 -0
- package/dist/src/lib/snapshot-audit-source.js.map +1 -0
- package/dist/src/lib/snapshot-audit-store.d.ts +52 -0
- package/dist/src/lib/snapshot-audit-store.js +196 -0
- package/dist/src/lib/snapshot-audit-store.js.map +1 -0
- package/dist/src/lib/snapshot-audit.d.ts +207 -0
- package/dist/src/lib/snapshot-audit.js +431 -0
- package/dist/src/lib/snapshot-audit.js.map +1 -0
- package/dist/src/lib/snapshot-build-rows.d.ts +60 -0
- package/dist/src/lib/snapshot-build-rows.js +87 -0
- package/dist/src/lib/snapshot-build-rows.js.map +1 -0
- package/dist/src/lib/snapshot-build.d.ts +50 -0
- package/dist/src/lib/snapshot-build.js +111 -0
- package/dist/src/lib/snapshot-build.js.map +1 -0
- package/dist/src/lib/snapshot-manifest-layout.d.ts +61 -0
- package/dist/src/lib/snapshot-manifest-layout.js +70 -0
- package/dist/src/lib/snapshot-manifest-layout.js.map +1 -0
- package/dist/src/lib/snapshots.d.ts +98 -0
- package/dist/src/lib/snapshots.js +294 -0
- package/dist/src/lib/snapshots.js.map +1 -0
- package/dist/src/lib/step-run-table.d.ts +43 -0
- package/dist/src/lib/step-run-table.js +129 -0
- package/dist/src/lib/step-run-table.js.map +1 -0
- package/dist/src/lib/storage-pending-retry.d.ts +26 -0
- package/dist/src/lib/storage-pending-retry.js +42 -0
- package/dist/src/lib/storage-pending-retry.js.map +1 -0
- package/dist/src/lib/swift-codegen/agentGenerator.d.ts +42 -0
- package/dist/src/lib/swift-codegen/agentGenerator.js +118 -0
- package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/banners.d.ts +24 -0
- package/dist/src/lib/swift-codegen/banners.js +25 -0
- package/dist/src/lib/swift-codegen/banners.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js +926 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
- package/dist/src/lib/swift-codegen/functionGenerator.d.ts +139 -0
- package/dist/src/lib/swift-codegen/functionGenerator.js +462 -0
- package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/generator.d.ts +100 -0
- package/dist/src/lib/swift-codegen/generator.js +457 -0
- package/dist/src/lib/swift-codegen/generator.js.map +1 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +87 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js +661 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +94 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.js +155 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
- package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
- package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
- package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
- package/dist/src/lib/sync-dir-selector.d.ts +21 -0
- package/dist/src/lib/sync-dir-selector.js +30 -0
- package/dist/src/lib/sync-dir-selector.js.map +1 -0
- package/dist/src/lib/sync-paths.d.ts +128 -0
- package/dist/src/lib/sync-paths.js +195 -0
- package/dist/src/lib/sync-paths.js.map +1 -0
- package/dist/src/lib/sync-resource-types.d.ts +563 -0
- package/dist/src/lib/sync-resource-types.js +1073 -0
- package/dist/src/lib/sync-resource-types.js.map +1 -0
- package/dist/src/lib/sync-selectors.d.ts +138 -0
- package/dist/src/lib/sync-selectors.js +289 -0
- package/dist/src/lib/sync-selectors.js.map +1 -0
- package/dist/src/lib/template.d.ts +170 -0
- package/dist/src/lib/template.js +484 -68
- package/dist/src/lib/template.js.map +1 -1
- package/dist/src/lib/test-case-file-names.d.ts +40 -0
- package/dist/src/lib/test-case-file-names.js +91 -0
- package/dist/src/lib/test-case-file-names.js.map +1 -0
- package/dist/src/lib/test-case-keys.d.ts +29 -0
- package/dist/src/lib/test-case-keys.js +55 -0
- package/dist/src/lib/test-case-keys.js.map +1 -0
- package/dist/src/lib/test-case-variables.d.ts +29 -0
- package/dist/src/lib/test-case-variables.js +71 -0
- package/dist/src/lib/test-case-variables.js.map +1 -0
- package/dist/src/lib/token-inject.d.ts +56 -0
- package/dist/src/lib/token-inject.js +204 -0
- package/dist/src/lib/token-inject.js.map +1 -0
- package/dist/src/lib/toml-database-config.d.ts +123 -0
- package/dist/src/lib/toml-database-config.js +544 -0
- package/dist/src/lib/toml-database-config.js.map +1 -0
- package/dist/src/lib/toml-metadata-config.d.ts +151 -0
- package/dist/src/lib/toml-metadata-config.js +476 -0
- package/dist/src/lib/toml-metadata-config.js.map +1 -0
- package/dist/src/lib/toml-native-form.d.ts +46 -0
- package/dist/src/lib/toml-native-form.js +78 -0
- package/dist/src/lib/toml-native-form.js.map +1 -0
- package/dist/src/lib/toml-params-validator.d.ts +129 -0
- package/dist/src/lib/toml-params-validator.js +298 -0
- package/dist/src/lib/toml-params-validator.js.map +1 -0
- package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
- package/dist/src/lib/toml-scalar-edit.js +283 -0
- package/dist/src/lib/toml-scalar-edit.js.map +1 -0
- package/dist/src/lib/user-selector.d.ts +24 -0
- package/dist/src/lib/user-selector.js +33 -0
- package/dist/src/lib/user-selector.js.map +1 -0
- package/dist/src/lib/version-check.d.ts +35 -0
- package/dist/src/lib/version-check.js +241 -0
- package/dist/src/lib/version-check.js.map +1 -0
- package/dist/src/lib/watch.d.ts +121 -0
- package/dist/src/lib/watch.js +169 -0
- package/dist/src/lib/watch.js.map +1 -0
- package/dist/src/lib/web-url.d.ts +40 -0
- package/dist/src/lib/web-url.js +76 -0
- package/dist/src/lib/web-url.js.map +1 -0
- package/dist/src/lib/webhook-deliver.d.ts +209 -0
- package/dist/src/lib/webhook-deliver.js +519 -0
- package/dist/src/lib/webhook-deliver.js.map +1 -0
- package/dist/src/lib/workflow-apply.d.ts +110 -0
- package/dist/src/lib/workflow-apply.js +164 -0
- package/dist/src/lib/workflow-apply.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generator.d.ts +96 -0
- package/dist/src/lib/workflow-codegen/generator.js +361 -0
- package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
- package/dist/src/lib/workflow-codegen/invokerIR.d.ts +94 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js +76 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
- package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
- package/dist/src/lib/workflow-codegen/naming.js +81 -0
- package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +80 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js +303 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
- package/dist/src/lib/workflow-config-apply.d.ts +70 -0
- package/dist/src/lib/workflow-config-apply.js +137 -0
- package/dist/src/lib/workflow-config-apply.js.map +1 -0
- package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
- package/dist/src/lib/workflow-config-sidecar.js +96 -0
- package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
- package/dist/src/lib/workflow-defaults.d.ts +29 -0
- package/dist/src/lib/workflow-defaults.js +41 -0
- package/dist/src/lib/workflow-defaults.js.map +1 -0
- package/dist/src/lib/workflow-fragments.d.ts +64 -0
- package/dist/src/lib/workflow-fragments.js +342 -0
- package/dist/src/lib/workflow-fragments.js.map +1 -0
- package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
- package/dist/src/lib/workflow-include-preserve.js +286 -0
- package/dist/src/lib/workflow-include-preserve.js.map +1 -0
- package/dist/src/lib/workflow-payload.d.ts +98 -0
- package/dist/src/lib/workflow-payload.js +178 -0
- package/dist/src/lib/workflow-payload.js.map +1 -0
- package/dist/src/lib/workflow-toml-validator.d.ts +211 -0
- package/dist/src/lib/workflow-toml-validator.js +770 -0
- package/dist/src/lib/workflow-toml-validator.js.map +1 -0
- package/dist/src/lib/workflow-usage.d.ts +196 -0
- package/dist/src/lib/workflow-usage.js +310 -0
- package/dist/src/lib/workflow-usage.js.map +1 -0
- package/dist/src/types/index.d.ts +591 -0
- package/dist/src/validators.d.ts +65 -0
- package/dist/src/validators.js +64 -0
- package/dist/src/validators.js.map +1 -0
- package/package.json +34 -9
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The audit's local reconstruction, over js-bao's own Node SQLite store
|
|
3
|
+
* (#3433, criterion 10).
|
|
4
|
+
*
|
|
5
|
+
* This is the half of the audit that must NOT be a reimplementation: the base
|
|
6
|
+
* is materialised by the checked-in loader and the overlays are folded by the
|
|
7
|
+
* client's own fold, so what the audit compares with the table is what a
|
|
8
|
+
* browser would have computed from the same artifacts. A hand-rolled fold here
|
|
9
|
+
* would make the audit agree with itself rather than with a client.
|
|
10
|
+
*
|
|
11
|
+
* Everything lives in one throwaway SQLite file, removed when the audit ends —
|
|
12
|
+
* including the `audit_seen` table, which is what keeps memory to one page
|
|
13
|
+
* plus the store: the ids the table has already shown are marked rather than
|
|
14
|
+
* held.
|
|
15
|
+
*/
|
|
16
|
+
import { createRequire } from "node:module";
|
|
17
|
+
import { mkdtempSync, rmSync } from "node:fs";
|
|
18
|
+
import { tmpdir } from "node:os";
|
|
19
|
+
import { join } from "node:path";
|
|
20
|
+
const require_ = createRequire(import.meta.url);
|
|
21
|
+
/** `yjs` as the CLI resolves it. */
|
|
22
|
+
async function loadYjs() {
|
|
23
|
+
const yModule = await import(require_.resolve("yjs"));
|
|
24
|
+
return yModule.default ?? yModule;
|
|
25
|
+
}
|
|
26
|
+
/** `js-bao` and `yjs` as the CLI resolves them, loaded only when audited. */
|
|
27
|
+
async function loadRuntime() {
|
|
28
|
+
const baoModule = await import(require_.resolve("js-bao"));
|
|
29
|
+
return {
|
|
30
|
+
bao: baoModule.default ?? baoModule,
|
|
31
|
+
Y: await loadYjs(),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function hex(bytes) {
|
|
35
|
+
let out = "";
|
|
36
|
+
for (const byte of bytes)
|
|
37
|
+
out += byte.toString(16).padStart(2, "0");
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The fence's reader: how far one overlay update has got, deletions included.
|
|
42
|
+
*
|
|
43
|
+
* A state vector alone is NOT that. It carries one clock per client and a Yjs
|
|
44
|
+
* deletion creates no struct, so removing a key leaves it exactly where it
|
|
45
|
+
* was — and a legacy nested-map record deleted between the audit's capture and
|
|
46
|
+
* its comparison would then pass the fence and be reported as a record only
|
|
47
|
+
* the recomputed chain holds, which is corruption's own signature (finding
|
|
48
|
+
* 3433-C05; the deletion shape is pinned by `large-document-snapshot-verify`'s
|
|
49
|
+
* E4 case). So the fingerprint is the state vector AND a digest of the
|
|
50
|
+
* update's delete set: every client's deleted ranges, in a fixed order.
|
|
51
|
+
*
|
|
52
|
+
* Yjs is loaded once and handed back as a synchronous function, so the audit's
|
|
53
|
+
* fence stays a plain comparison rather than an awaited one — and so the
|
|
54
|
+
* library itself never has to import Yjs.
|
|
55
|
+
*/
|
|
56
|
+
export async function createChainFingerprintReader() {
|
|
57
|
+
const Y = await loadYjs();
|
|
58
|
+
return (update) => {
|
|
59
|
+
const vector = hex(Y.encodeStateVectorFromUpdate(update));
|
|
60
|
+
const clients = Y.decodeUpdate(update).ds.clients;
|
|
61
|
+
const deletes = Array.from(clients.entries())
|
|
62
|
+
.map(([client, ranges]) => {
|
|
63
|
+
const sorted = ranges
|
|
64
|
+
.map((range) => `${range.clock}+${range.len}`)
|
|
65
|
+
.sort();
|
|
66
|
+
return `${client}:${sorted.join(",")}`;
|
|
67
|
+
})
|
|
68
|
+
.sort()
|
|
69
|
+
.join(";");
|
|
70
|
+
return `${vector}/${deletes}`;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The stringset fields a base manifest records, per model.
|
|
75
|
+
*
|
|
76
|
+
* A Map rather than an object because a model's name is data: an undeclared
|
|
77
|
+
* model is whatever `_type` the records route was handed, so `constructor` and
|
|
78
|
+
* `toString` are names this can be asked for, and on a plain object either
|
|
79
|
+
* answers a function off the prototype rather than nothing at all (3433-C11).
|
|
80
|
+
* The manifest is the only record of what a model declares for a model no
|
|
81
|
+
* later overlay touched, which is exactly where these have to come from.
|
|
82
|
+
*/
|
|
83
|
+
export function stringSetFieldsFromManifest(manifest) {
|
|
84
|
+
const out = new Map();
|
|
85
|
+
const schema = manifest.schema ?? {};
|
|
86
|
+
for (const [model, declared] of Object.entries(schema)) {
|
|
87
|
+
const fields = declared?.stringSetFields;
|
|
88
|
+
out.set(model, new Set(Array.isArray(fields) ? fields.map(String) : []));
|
|
89
|
+
}
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
const SEEN_DDL = `CREATE TABLE IF NOT EXISTS audit_seen (
|
|
93
|
+
model TEXT NOT NULL, id TEXT NOT NULL, PRIMARY KEY (model, id))`;
|
|
94
|
+
/**
|
|
95
|
+
* Build a local store for one audit attempt.
|
|
96
|
+
*
|
|
97
|
+
* A fresh database per attempt by design: an attempt the fence discards must
|
|
98
|
+
* leave nothing behind for the next one to read.
|
|
99
|
+
*/
|
|
100
|
+
export async function createAuditLocalStore(documentId) {
|
|
101
|
+
const { bao, Y } = await loadRuntime();
|
|
102
|
+
const directory = mkdtempSync(join(tmpdir(), "primitive-audit-"));
|
|
103
|
+
const doc = new Y.Doc();
|
|
104
|
+
const init = await bao.initJsBao({
|
|
105
|
+
databaseConfig: {
|
|
106
|
+
type: "node-sqlite",
|
|
107
|
+
options: { filePath: join(directory, "audit.db") },
|
|
108
|
+
},
|
|
109
|
+
models: [],
|
|
110
|
+
});
|
|
111
|
+
await init.connectDocument(documentId, doc, "read-write", {
|
|
112
|
+
documentFormat: 2,
|
|
113
|
+
});
|
|
114
|
+
const sql = init.dbEngine.createFormat2Sql();
|
|
115
|
+
const { records } = bao.format2TableNames(documentId);
|
|
116
|
+
sql.exec(SEEN_DDL);
|
|
117
|
+
const rows = (query, ...bindings) => Array.from(sql.exec(query, ...bindings));
|
|
118
|
+
let stringSets = new Map();
|
|
119
|
+
const parse = (data) => {
|
|
120
|
+
try {
|
|
121
|
+
return JSON.parse(String(data ?? "{}"));
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return {};
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
return {
|
|
128
|
+
async loadSnapshot(manifest, fetchChunk) {
|
|
129
|
+
stringSets = stringSetFieldsFromManifest(manifest);
|
|
130
|
+
await init.format2LoadSnapshot(documentId, manifest, (chunk) => fetchChunk(chunk), {});
|
|
131
|
+
},
|
|
132
|
+
async applyOverlay(update) {
|
|
133
|
+
// Each epoch's overlay is its own document, so each is folded from its
|
|
134
|
+
// own `Y.Doc` — and through the CLIENT's fold, which is the whole point:
|
|
135
|
+
// a divergence between what the room projects and what a client computes
|
|
136
|
+
// is invisible to every check that runs on one side of it.
|
|
137
|
+
const overlay = new Y.Doc();
|
|
138
|
+
Y.applyUpdate(overlay, update);
|
|
139
|
+
const store = bao.BaseModel.getFormat2Store(documentId);
|
|
140
|
+
if (!store) {
|
|
141
|
+
throw new Error(`the local record store for ${documentId} is not available, so the ` +
|
|
142
|
+
`chain cannot be recomputed`);
|
|
143
|
+
}
|
|
144
|
+
bao.foldFormat2Overlay(overlay, store);
|
|
145
|
+
// The in-process host folds inside the call above; this yields once so
|
|
146
|
+
// an async host's queued batch has settled before anything reads.
|
|
147
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
148
|
+
},
|
|
149
|
+
async models() {
|
|
150
|
+
// The scan the SERVER may not do (criterion 5) is fine here: this table
|
|
151
|
+
// is the reconstruction the audit is already holding, on the operator's
|
|
152
|
+
// own machine, not a 2GB Durable Object's storage under an alarm budget.
|
|
153
|
+
return rows(`SELECT DISTINCT _type FROM ${records} ORDER BY _type`).map((row) => String(row._type));
|
|
154
|
+
},
|
|
155
|
+
async take(model, ids) {
|
|
156
|
+
const out = new Map();
|
|
157
|
+
if (ids.length === 0)
|
|
158
|
+
return out;
|
|
159
|
+
const placeholders = ids.map(() => "?").join(",");
|
|
160
|
+
for (const row of rows(`SELECT _id, _data FROM ${records} WHERE _type = ? AND _id IN (${placeholders})`, model, ...ids)) {
|
|
161
|
+
out.set(String(row._id), parse(row._data));
|
|
162
|
+
}
|
|
163
|
+
for (const id of ids) {
|
|
164
|
+
sql.exec(`INSERT OR IGNORE INTO audit_seen (model, id) VALUES (?, ?)`, model, id);
|
|
165
|
+
}
|
|
166
|
+
return out;
|
|
167
|
+
},
|
|
168
|
+
async remaining(model, after, limit) {
|
|
169
|
+
const bounded = after === null
|
|
170
|
+
? rows(`SELECT _id, _data FROM ${records} r
|
|
171
|
+
WHERE r._type = ?
|
|
172
|
+
AND NOT EXISTS (SELECT 1 FROM audit_seen s WHERE s.model = r._type AND s.id = r._id)
|
|
173
|
+
ORDER BY r._id LIMIT ?`, model, limit)
|
|
174
|
+
: rows(`SELECT _id, _data FROM ${records} r
|
|
175
|
+
WHERE r._type = ? AND r._id > ?
|
|
176
|
+
AND NOT EXISTS (SELECT 1 FROM audit_seen s WHERE s.model = r._type AND s.id = r._id)
|
|
177
|
+
ORDER BY r._id LIMIT ?`, model, after, limit);
|
|
178
|
+
return bounded.map((row) => ({
|
|
179
|
+
id: String(row._id),
|
|
180
|
+
data: parse(row._data),
|
|
181
|
+
}));
|
|
182
|
+
},
|
|
183
|
+
stringSetFields(model) {
|
|
184
|
+
return stringSets.get(model) ?? new Set();
|
|
185
|
+
},
|
|
186
|
+
async close() {
|
|
187
|
+
try {
|
|
188
|
+
await bao.resetJsBao();
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
rmSync(directory, { recursive: true, force: true });
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=snapshot-audit-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-audit-store.js","sourceRoot":"","sources":["../../../src/lib/snapshot-audit-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `snapshot ⊕ overlays == table`, recomputed and compared (#3433, criterion 10).
|
|
3
|
+
*
|
|
4
|
+
* Per-build verification checks a base against the table it was built FROM:
|
|
5
|
+
* the chunks are read back, their digests match, their id sequences cover the
|
|
6
|
+
* ranges. What it cannot check is the other half of the contract — that
|
|
7
|
+
* folding the overlays onto that base, the way a CLIENT folds them, arrives at
|
|
8
|
+
* the document the server holds. A fold that means something slightly
|
|
9
|
+
* different on the two ends puts records into a client's authoritative table
|
|
10
|
+
* that the server never wrote, silently, because on a format-2 document there
|
|
11
|
+
* is no whole-document comparison left downstream to catch it.
|
|
12
|
+
*
|
|
13
|
+
* So this runs OUTSIDE the Durable Object, on the CLI:
|
|
14
|
+
*
|
|
15
|
+
* 0. Read the document's schema, which is the same permission the table pages
|
|
16
|
+
* need. The chain export takes the app-admin arm and the pages take the
|
|
17
|
+
* console arm or a read grant on the document, so a caller holding only the
|
|
18
|
+
* first is refused here rather than after downloading the whole chain
|
|
19
|
+
* (3433-C08).
|
|
20
|
+
* 1. Export the chain — the newest complete base, every overlay sealed after
|
|
21
|
+
* it, and the open epoch's overlay inline.
|
|
22
|
+
* 2. Load the base through the checked-in loader into a local record store,
|
|
23
|
+
* then fold each overlay in order with the client's own fold.
|
|
24
|
+
* 3. Page the authoritative table through the records API and compare it,
|
|
25
|
+
* record by record, with the recomputed view.
|
|
26
|
+
*
|
|
27
|
+
* Running it inside the room would need a scratch copy of up to 2 GB of rows
|
|
28
|
+
* and a new multi-tick state machine; running it with the SERVER's fold would
|
|
29
|
+
* make it agree with the room by construction.
|
|
30
|
+
*
|
|
31
|
+
* ## The fence, and why there is one
|
|
32
|
+
*
|
|
33
|
+
* The chain export captures the open overlay once (`Y.encodeStateAsUpdate` at
|
|
34
|
+
* one moment); each records page is an independent query of the live table
|
|
35
|
+
* later (3433-R03). An ordinary write in between would read as corruption. The
|
|
36
|
+
* export is therefore its own fence: after the last page the chain is exported
|
|
37
|
+
* AGAIN and the open epoch number and a fingerprint of the inline overlay are
|
|
38
|
+
* compared with the capture. The fingerprint is the overlay's state vector AND
|
|
39
|
+
* its delete set, because a Yjs deletion creates no struct and therefore never
|
|
40
|
+
* moves a state vector (3433-C05) — and a record deleted under the comparison
|
|
41
|
+
* is precisely what a divergence looks like. The epoch moves on every
|
|
42
|
+
* rotation, so it is checked on its own. Either moving means the document
|
|
43
|
+
* changed under the comparison: that attempt yields NO VERDICT and is retried
|
|
44
|
+
* from a fresh capture; a document that moves on every attempt is reported as
|
|
45
|
+
* `none` rather than as a divergence.
|
|
46
|
+
*/
|
|
47
|
+
import { type ManifestChunkLike, type ManifestLike } from "./snapshot-manifest-layout.js";
|
|
48
|
+
/** One artifact of the chain, as the export names it. */
|
|
49
|
+
export interface AuditChainDownload {
|
|
50
|
+
path: string;
|
|
51
|
+
}
|
|
52
|
+
/** What `GET .../export/chain` answers for a large document. */
|
|
53
|
+
export interface AuditChainDescriptor {
|
|
54
|
+
documentFormat?: number;
|
|
55
|
+
documentId?: string;
|
|
56
|
+
epoch: number;
|
|
57
|
+
base: {
|
|
58
|
+
epoch: number;
|
|
59
|
+
buildId: string;
|
|
60
|
+
rows?: number;
|
|
61
|
+
download: AuditChainDownload;
|
|
62
|
+
} | null;
|
|
63
|
+
overlays: Array<{
|
|
64
|
+
epoch: number;
|
|
65
|
+
download: AuditChainDownload;
|
|
66
|
+
}>;
|
|
67
|
+
current: {
|
|
68
|
+
epoch: number;
|
|
69
|
+
update: string;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/** One page of the authoritative table, as the records route answers it. */
|
|
73
|
+
export interface AuditTablePage {
|
|
74
|
+
items: Array<Record<string, unknown>>;
|
|
75
|
+
nextCursor?: string | null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Everything the audit reads from the SERVER.
|
|
79
|
+
*
|
|
80
|
+
* Injected rather than reached for, so the whole decision — the fence, the
|
|
81
|
+
* model union, the comparison — is gradeable against a source a test can move
|
|
82
|
+
* between calls, which is the one thing a live run cannot stage reliably.
|
|
83
|
+
*/
|
|
84
|
+
export interface AuditSource {
|
|
85
|
+
/** Export the chain. Throws the server's refusal verbatim. */
|
|
86
|
+
chain(): Promise<AuditChainDescriptor>;
|
|
87
|
+
/** One artifact, by its path within the chain's grant. */
|
|
88
|
+
download(path: string): Promise<Uint8Array>;
|
|
89
|
+
/**
|
|
90
|
+
* Every model the authoritative table holds a row of (#3433, behavior 30).
|
|
91
|
+
*
|
|
92
|
+
* Read before the chain is exported: it comes off the schema response, which
|
|
93
|
+
* takes the same permission the table pages do, so it is also the audit's
|
|
94
|
+
* check that the caller can finish (3433-C08).
|
|
95
|
+
*/
|
|
96
|
+
tableModels(): Promise<string[]>;
|
|
97
|
+
/** One page of a model's records, in the route's own order. */
|
|
98
|
+
readPage(model: string, cursor?: string): Promise<AuditTablePage>;
|
|
99
|
+
/**
|
|
100
|
+
* The stringset fields the DOCUMENT declares now, per model.
|
|
101
|
+
*
|
|
102
|
+
* The base manifest carries the declarations as they stood when it was
|
|
103
|
+
* built, which is the only record for a model no later overlay touched — but
|
|
104
|
+
* a model or a field declared AFTER the base is not in it, and a stringset
|
|
105
|
+
* compared as an ordered array is a divergence the moment the two sides
|
|
106
|
+
* added the same members in a different order (finding 3433-C06). The two
|
|
107
|
+
* sources are unioned; what a field MEANS is the schema's job either way.
|
|
108
|
+
*/
|
|
109
|
+
stringSetFields?(): Promise<Record<string, string[]>>;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The local reconstruction the audit compares against.
|
|
113
|
+
*
|
|
114
|
+
* A port rather than a concrete store: the verb builds it over js-bao's Node
|
|
115
|
+
* SQLite engine, and the hermetic tests build it over a map, so the comparison
|
|
116
|
+
* is graded without a database and the database is proven separately.
|
|
117
|
+
*/
|
|
118
|
+
export interface AuditLocalStore {
|
|
119
|
+
/** Materialise the base. `fetchChunk` is handed each manifest entry. */
|
|
120
|
+
loadSnapshot(manifest: ManifestLike, fetchChunk: (chunk: ManifestChunkLike) => Promise<Uint8Array>): Promise<void>;
|
|
121
|
+
/** Fold one overlay update — sealed or open — in chain order. */
|
|
122
|
+
applyOverlay(update: Uint8Array): Promise<void>;
|
|
123
|
+
/** Every model the reconstruction holds a row of. */
|
|
124
|
+
models(): Promise<string[]>;
|
|
125
|
+
/**
|
|
126
|
+
* The recomputed rows for these ids, and mark them compared.
|
|
127
|
+
*
|
|
128
|
+
* Reading and marking together is what keeps the audit's memory to one page
|
|
129
|
+
* plus the store: the ids the server has already shown are never held.
|
|
130
|
+
*/
|
|
131
|
+
take(model: string, ids: readonly string[]): Promise<Map<string, Record<string, unknown>>>;
|
|
132
|
+
/** Rows of a model no page asked for, in id order, after `after`. */
|
|
133
|
+
remaining(model: string, after: string | null, limit: number): Promise<Array<{
|
|
134
|
+
id: string;
|
|
135
|
+
data: Record<string, unknown>;
|
|
136
|
+
}>>;
|
|
137
|
+
/** Stringset fields per model, as the base manifest's schema declares them. */
|
|
138
|
+
stringSetFields(model: string): ReadonlySet<string>;
|
|
139
|
+
close(): Promise<void>;
|
|
140
|
+
}
|
|
141
|
+
/** What one model's comparison found. */
|
|
142
|
+
export interface AuditModelReport {
|
|
143
|
+
model: string;
|
|
144
|
+
/** Records present on both sides and compared. */
|
|
145
|
+
compared: number;
|
|
146
|
+
/** Ids the recomputed view holds and the table does not. */
|
|
147
|
+
onlyRecomputed: string[];
|
|
148
|
+
/** Ids the table holds and the recomputed view does not. */
|
|
149
|
+
onlyTable: string[];
|
|
150
|
+
/** Records both hold, with the fields that differ. */
|
|
151
|
+
differing: Array<{
|
|
152
|
+
id: string;
|
|
153
|
+
fields: string[];
|
|
154
|
+
}>;
|
|
155
|
+
/** A list above was capped at `maxDivergences`. */
|
|
156
|
+
truncated: boolean;
|
|
157
|
+
}
|
|
158
|
+
/** What the audit decided, and what it looked at. */
|
|
159
|
+
export interface AuditReport {
|
|
160
|
+
verdict: "match" | "divergence" | "none";
|
|
161
|
+
/** Attempts made, including the ones the fence discarded. */
|
|
162
|
+
attempts: number;
|
|
163
|
+
/** Why there is no verdict. Absent on `match` and `divergence`. */
|
|
164
|
+
reason?: string;
|
|
165
|
+
buildId: string | null;
|
|
166
|
+
epoch: number | null;
|
|
167
|
+
models: AuditModelReport[];
|
|
168
|
+
}
|
|
169
|
+
export interface AuditOptions {
|
|
170
|
+
/** A fresh store per attempt: an attempt the fence discards is thrown away. */
|
|
171
|
+
store: () => Promise<AuditLocalStore>;
|
|
172
|
+
/** Ids listed per model per category before the report says `truncated`. */
|
|
173
|
+
maxDivergences?: number;
|
|
174
|
+
/** Attempts before the audit gives up on a moving document. */
|
|
175
|
+
retries?: number;
|
|
176
|
+
/** Records per page asked of the table. */
|
|
177
|
+
pageSize?: number;
|
|
178
|
+
/**
|
|
179
|
+
* How far one overlay update has got — its state vector AND its delete set.
|
|
180
|
+
*
|
|
181
|
+
* Injected because it is the one thing in the fence that needs Yjs, and the
|
|
182
|
+
* library is graded without it. `createChainFingerprintReader` is what the
|
|
183
|
+
* verb passes; a reader that answered with the state vector alone would miss
|
|
184
|
+
* a deletion (3433-C05).
|
|
185
|
+
*/
|
|
186
|
+
fingerprint: (update: Uint8Array) => string;
|
|
187
|
+
}
|
|
188
|
+
/** The server refused to export a chain; there is nothing to audit. */
|
|
189
|
+
export declare const EXPORT_CHAIN_INCOMPLETE = "EXPORT_CHAIN_INCOMPLETE";
|
|
190
|
+
/**
|
|
191
|
+
* The stringset fields a schema response declares, per model.
|
|
192
|
+
*
|
|
193
|
+
* `GET documents/:id/schema` answers `{ schema: { models: { Note: { fields:
|
|
194
|
+
* { tags: { type: "stringset" } } } } } }` — the declarations the document's
|
|
195
|
+
* `_meta_` maps carry, which is where a field added after the base snapshot
|
|
196
|
+
* says what it is. A model with no stringset is left out rather than mapped to
|
|
197
|
+
* an empty list, so the union with the manifest's is a plain spread.
|
|
198
|
+
*/
|
|
199
|
+
export declare function stringSetFieldsFromSchema(schema: any): Record<string, string[]>;
|
|
200
|
+
/**
|
|
201
|
+
* Recompute a document's chain locally and compare it with its table.
|
|
202
|
+
*
|
|
203
|
+
* Returns a verdict rather than throwing: a divergence is the answer the
|
|
204
|
+
* command exists to give, and "no verdict" is a third answer the validation
|
|
205
|
+
* child scripts on, not an error to catch.
|
|
206
|
+
*/
|
|
207
|
+
export declare function auditSnapshotChain(source: AuditSource, options: AuditOptions): Promise<AuditReport>;
|