@superbee/core 0.2.0-pre.2 → 0.2.0-pre.21
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 +1000 -0
- package/dist/artifact-contract.d.ts +90 -0
- package/dist/artifact-contract.d.ts.map +1 -0
- package/dist/artifact-contract.js +205 -0
- package/dist/artifact-contract.js.map +1 -0
- package/dist/backend.d.ts +19 -1
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +83 -36
- package/dist/backend.js.map +1 -1
- package/dist/blob-contract.d.ts +80 -0
- package/dist/blob-contract.d.ts.map +1 -0
- package/dist/blob-contract.js +131 -0
- package/dist/blob-contract.js.map +1 -0
- package/dist/blob-journal.d.ts +302 -0
- package/dist/blob-journal.d.ts.map +1 -0
- package/dist/blob-journal.js +540 -0
- package/dist/blob-journal.js.map +1 -0
- package/dist/body-replace-guards.d.ts +50 -0
- package/dist/body-replace-guards.d.ts.map +1 -0
- package/dist/body-replace-guards.js +158 -0
- package/dist/body-replace-guards.js.map +1 -0
- package/dist/builtin-recipes/content.d.ts +93 -0
- package/dist/builtin-recipes/content.d.ts.map +1 -0
- package/dist/builtin-recipes/content.js +288 -0
- package/dist/builtin-recipes/content.js.map +1 -0
- package/dist/builtin-recipes.d.ts +10 -0
- package/dist/builtin-recipes.d.ts.map +1 -0
- package/dist/builtin-recipes.js +97 -0
- package/dist/builtin-recipes.js.map +1 -0
- package/dist/bundle-health/index.d.ts +14 -0
- package/dist/bundle-health/index.d.ts.map +1 -0
- package/dist/bundle-health/index.js +12 -0
- package/dist/bundle-health/index.js.map +1 -0
- package/dist/bundle-health/kind-findings.d.ts +44 -0
- package/dist/bundle-health/kind-findings.d.ts.map +1 -0
- package/dist/bundle-health/kind-findings.js +68 -0
- package/dist/bundle-health/kind-findings.js.map +1 -0
- package/dist/bundle-health/legacy-page.d.ts +39 -0
- package/dist/bundle-health/legacy-page.d.ts.map +1 -0
- package/dist/bundle-health/legacy-page.js +50 -0
- package/dist/bundle-health/legacy-page.js.map +1 -0
- package/dist/bundle-health/report.d.ts +202 -0
- package/dist/bundle-health/report.d.ts.map +1 -0
- package/dist/bundle-health/report.js +438 -0
- package/dist/bundle-health/report.js.map +1 -0
- package/dist/bundle-ops.d.ts +1 -1
- package/dist/bundle-ops.d.ts.map +1 -1
- package/dist/bundle-ops.js +2 -2
- package/dist/bundle-ops.js.map +1 -1
- package/dist/bundle.d.ts +2 -1
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +3 -3
- package/dist/bundle.js.map +1 -1
- package/dist/code-point-order.d.ts +8 -0
- package/dist/code-point-order.d.ts.map +1 -0
- package/dist/code-point-order.js +20 -0
- package/dist/code-point-order.js.map +1 -0
- package/dist/connectors.d.ts +230 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +1150 -0
- package/dist/connectors.js.map +1 -0
- package/dist/cross-bundle.d.ts +135 -0
- package/dist/cross-bundle.d.ts.map +1 -0
- package/dist/cross-bundle.js +186 -0
- package/dist/cross-bundle.js.map +1 -0
- package/dist/dependencies.d.ts +94 -0
- package/dist/dependencies.d.ts.map +1 -0
- package/dist/dependencies.js +180 -0
- package/dist/dependencies.js.map +1 -0
- package/dist/document-codec.d.ts +6 -1
- package/dist/document-codec.d.ts.map +1 -1
- package/dist/document-codec.js +8 -4
- package/dist/document-codec.js.map +1 -1
- package/dist/document-field-actions.d.ts +31 -1
- package/dist/document-field-actions.d.ts.map +1 -1
- package/dist/document-field-actions.js +137 -34
- package/dist/document-field-actions.js.map +1 -1
- package/dist/document-mutation.d.ts +22 -10
- package/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +58 -27
- package/dist/document-mutation.js.map +1 -1
- package/dist/document-write-policy.d.ts.map +1 -1
- package/dist/document-write-policy.js +4 -2
- package/dist/document-write-policy.js.map +1 -1
- package/dist/engine.d.ts +9 -2
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +11 -4
- package/dist/engine.js.map +1 -1
- package/dist/file-journaled-backend-internal.d.ts +21 -0
- package/dist/file-journaled-backend-internal.d.ts.map +1 -0
- package/dist/file-journaled-backend-internal.js +12 -0
- package/dist/file-journaled-backend-internal.js.map +1 -0
- package/dist/file-journaled-backend.d.ts +200 -0
- package/dist/file-journaled-backend.d.ts.map +1 -0
- package/dist/file-journaled-backend.js +1334 -0
- package/dist/file-journaled-backend.js.map +1 -0
- package/dist/filesystem-host.d.ts +15 -0
- package/dist/filesystem-host.d.ts.map +1 -0
- package/dist/filesystem-host.js +20 -0
- package/dist/filesystem-host.js.map +1 -0
- package/dist/filesystem-identity.d.ts +86 -4
- package/dist/filesystem-identity.d.ts.map +1 -1
- package/dist/filesystem-identity.js +338 -102
- package/dist/filesystem-identity.js.map +1 -1
- package/dist/filesystem-lock.d.ts +16 -3
- package/dist/filesystem-lock.d.ts.map +1 -1
- package/dist/filesystem-lock.js +323 -77
- package/dist/filesystem-lock.js.map +1 -1
- package/dist/filesystem-push-role.d.ts +77 -0
- package/dist/filesystem-push-role.d.ts.map +1 -0
- package/dist/filesystem-push-role.js +165 -0
- package/dist/filesystem-push-role.js.map +1 -0
- package/dist/filesystem.d.ts +17 -0
- package/dist/filesystem.d.ts.map +1 -0
- package/dist/filesystem.js +18 -0
- package/dist/filesystem.js.map +1 -0
- package/dist/frontmatter.d.ts +8 -0
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +14 -4
- package/dist/frontmatter.js.map +1 -1
- package/dist/governed-body-write.d.ts +106 -0
- package/dist/governed-body-write.d.ts.map +1 -0
- package/dist/governed-body-write.js +251 -0
- package/dist/governed-body-write.js.map +1 -0
- package/dist/host-policy-snapshot.d.ts +9 -0
- package/dist/host-policy-snapshot.d.ts.map +1 -0
- package/dist/host-policy-snapshot.js +33 -0
- package/dist/host-policy-snapshot.js.map +1 -0
- package/dist/host-text.d.ts +31 -0
- package/dist/host-text.d.ts.map +1 -0
- package/dist/host-text.js +77 -0
- package/dist/host-text.js.map +1 -0
- package/dist/hosted-client/binding.d.ts +7 -0
- package/dist/hosted-client/binding.d.ts.map +1 -0
- package/dist/hosted-client/binding.js +10 -0
- package/dist/hosted-client/binding.js.map +1 -0
- package/dist/hosted-client/blob-delivery.d.ts +67 -0
- package/dist/hosted-client/blob-delivery.d.ts.map +1 -0
- package/dist/hosted-client/blob-delivery.js +169 -0
- package/dist/hosted-client/blob-delivery.js.map +1 -0
- package/dist/hosted-client/blob-write.d.ts +386 -0
- package/dist/hosted-client/blob-write.d.ts.map +1 -0
- package/dist/hosted-client/blob-write.js +770 -0
- package/dist/hosted-client/blob-write.js.map +1 -0
- package/dist/hosted-client/bundle-listing.d.ts +46 -0
- package/dist/hosted-client/bundle-listing.d.ts.map +1 -0
- package/dist/hosted-client/bundle-listing.js +36 -0
- package/dist/hosted-client/bundle-listing.js.map +1 -0
- package/dist/hosted-client/client.d.ts +219 -0
- package/dist/hosted-client/client.d.ts.map +1 -0
- package/dist/hosted-client/client.js +309 -0
- package/dist/hosted-client/client.js.map +1 -0
- package/dist/hosted-client/directory.d.ts +46 -0
- package/dist/hosted-client/directory.d.ts.map +1 -0
- package/dist/hosted-client/directory.js +74 -0
- package/dist/hosted-client/directory.js.map +1 -0
- package/dist/hosted-client/errors.d.ts +26 -0
- package/dist/hosted-client/errors.d.ts.map +1 -0
- package/dist/hosted-client/errors.js +35 -0
- package/dist/hosted-client/errors.js.map +1 -0
- package/dist/hosted-client/inbox.d.ts +320 -0
- package/dist/hosted-client/inbox.d.ts.map +1 -0
- package/dist/hosted-client/inbox.js +379 -0
- package/dist/hosted-client/inbox.js.map +1 -0
- package/dist/hosted-client/index.d.ts +30 -0
- package/dist/hosted-client/index.d.ts.map +1 -0
- package/dist/hosted-client/index.js +32 -0
- package/dist/hosted-client/index.js.map +1 -0
- package/dist/hosted-client/journal.d.ts +103 -0
- package/dist/hosted-client/journal.d.ts.map +1 -0
- package/dist/hosted-client/journal.js +464 -0
- package/dist/hosted-client/journal.js.map +1 -0
- package/dist/hosted-client/node.d.ts +74 -0
- package/dist/hosted-client/node.d.ts.map +1 -0
- package/dist/hosted-client/node.js +219 -0
- package/dist/hosted-client/node.js.map +1 -0
- package/dist/hosted-client/reference.d.ts +12 -0
- package/dist/hosted-client/reference.d.ts.map +1 -0
- package/dist/hosted-client/reference.js +29 -0
- package/dist/hosted-client/reference.js.map +1 -0
- package/dist/hosted-client/write.d.ts +217 -0
- package/dist/hosted-client/write.d.ts.map +1 -0
- package/dist/hosted-client/write.js +418 -0
- package/dist/hosted-client/write.js.map +1 -0
- package/dist/hosted-transport/answer-rows.d.ts +243 -0
- package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
- package/dist/hosted-transport/answer-rows.js +454 -0
- package/dist/hosted-transport/answer-rows.js.map +1 -0
- package/dist/hosted-transport/blob-reads.d.ts +35 -0
- package/dist/hosted-transport/blob-reads.d.ts.map +1 -0
- package/dist/hosted-transport/blob-reads.js +179 -0
- package/dist/hosted-transport/blob-reads.js.map +1 -0
- package/dist/hosted-transport/blob-write.d.ts +34 -0
- package/dist/hosted-transport/blob-write.d.ts.map +1 -0
- package/dist/hosted-transport/blob-write.js +115 -0
- package/dist/hosted-transport/blob-write.js.map +1 -0
- package/dist/hosted-transport/carrier.d.ts +151 -0
- package/dist/hosted-transport/carrier.d.ts.map +1 -0
- package/dist/hosted-transport/carrier.js +260 -0
- package/dist/hosted-transport/carrier.js.map +1 -0
- package/dist/hosted-transport/history-pages.d.ts +55 -0
- package/dist/hosted-transport/history-pages.d.ts.map +1 -0
- package/dist/hosted-transport/history-pages.js +69 -0
- package/dist/hosted-transport/history-pages.js.map +1 -0
- package/dist/hosted-transport/index.d.ts +18 -0
- package/dist/hosted-transport/index.d.ts.map +1 -0
- package/dist/hosted-transport/index.js +18 -0
- package/dist/hosted-transport/index.js.map +1 -0
- package/dist/hosted-transport/operations.d.ts +85 -0
- package/dist/hosted-transport/operations.d.ts.map +1 -0
- package/dist/hosted-transport/operations.js +128 -0
- package/dist/hosted-transport/operations.js.map +1 -0
- package/dist/hosted-transport/paged-reads.d.ts +87 -0
- package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
- package/dist/hosted-transport/paged-reads.js +238 -0
- package/dist/hosted-transport/paged-reads.js.map +1 -0
- package/dist/hosted-transport/read-adapter.d.ts +256 -0
- package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
- package/dist/hosted-transport/read-adapter.js +568 -0
- package/dist/hosted-transport/read-adapter.js.map +1 -0
- package/dist/hosted-transport/root-write.d.ts +114 -0
- package/dist/hosted-transport/root-write.d.ts.map +1 -0
- package/dist/hosted-transport/root-write.js +171 -0
- package/dist/hosted-transport/root-write.js.map +1 -0
- package/dist/hosted-transport/whole-document-transport.d.ts +204 -0
- package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
- package/dist/hosted-transport/whole-document-transport.js +447 -0
- package/dist/hosted-transport/whole-document-transport.js.map +1 -0
- package/dist/index.d.ts +34 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -8
- package/dist/index.js.map +1 -1
- package/dist/indexeddb-backend.d.ts +28 -6
- package/dist/indexeddb-backend.d.ts.map +1 -1
- package/dist/indexeddb-backend.js +471 -92
- package/dist/indexeddb-backend.js.map +1 -1
- package/dist/journaled-backend.d.ts +247 -10
- package/dist/journaled-backend.d.ts.map +1 -1
- package/dist/journaled-backend.js +302 -1
- package/dist/journaled-backend.js.map +1 -1
- package/dist/kind-authoring.d.ts +170 -0
- package/dist/kind-authoring.d.ts.map +1 -0
- package/dist/kind-authoring.js +451 -0
- package/dist/kind-authoring.js.map +1 -0
- package/dist/kind-conformance-error.d.ts +15 -0
- package/dist/kind-conformance-error.d.ts.map +1 -0
- package/dist/kind-conformance-error.js +20 -0
- package/dist/kind-conformance-error.js.map +1 -0
- package/dist/kind-coverage.d.ts +99 -0
- package/dist/kind-coverage.d.ts.map +1 -0
- package/dist/kind-coverage.js +186 -0
- package/dist/kind-coverage.js.map +1 -0
- package/dist/kind-field-mutation.d.ts +4 -0
- package/dist/kind-field-mutation.d.ts.map +1 -1
- package/dist/kind-field-mutation.js +28 -3
- package/dist/kind-field-mutation.js.map +1 -1
- package/dist/kinds-load.js +4 -4
- package/dist/kinds-load.js.map +1 -1
- package/dist/kinds.d.ts +65 -2
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +341 -21
- package/dist/kinds.js.map +1 -1
- package/dist/link-types.d.ts +26 -0
- package/dist/link-types.d.ts.map +1 -0
- package/dist/link-types.js +57 -0
- package/dist/link-types.js.map +1 -0
- package/dist/links.d.ts +21 -3
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +213 -14
- package/dist/links.js.map +1 -1
- package/dist/managed-document-metadata.d.ts +2 -0
- package/dist/managed-document-metadata.d.ts.map +1 -0
- package/dist/managed-document-metadata.js +9 -0
- package/dist/managed-document-metadata.js.map +1 -0
- package/dist/memory-backend.d.ts +2 -2
- package/dist/memory-backend.d.ts.map +1 -1
- package/dist/memory-backend.js +26 -11
- package/dist/memory-backend.js.map +1 -1
- package/dist/paths.d.ts +16 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +25 -0
- package/dist/paths.js.map +1 -1
- package/dist/platform.d.ts +13 -2
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +16 -0
- package/dist/platform.js.map +1 -1
- package/dist/portable-export.d.ts +119 -0
- package/dist/portable-export.d.ts.map +1 -0
- package/dist/portable-export.js +501 -0
- package/dist/portable-export.js.map +1 -0
- package/dist/publication-filesystem.d.ts +1 -1
- package/dist/publication-filesystem.d.ts.map +1 -1
- package/dist/publication-filesystem.js +1 -1
- package/dist/publication-filesystem.js.map +1 -1
- package/dist/qualified-links.d.ts +67 -0
- package/dist/qualified-links.d.ts.map +1 -0
- package/dist/qualified-links.js +117 -0
- package/dist/qualified-links.js.map +1 -0
- package/dist/query-filter.d.ts +16 -2
- package/dist/query-filter.d.ts.map +1 -1
- package/dist/query-filter.js +40 -1
- package/dist/query-filter.js.map +1 -1
- package/dist/query-order.d.ts +22 -0
- package/dist/query-order.d.ts.map +1 -0
- package/dist/query-order.js +42 -0
- package/dist/query-order.js.map +1 -0
- package/dist/recipe-lifecycle/errors.d.ts +96 -0
- package/dist/recipe-lifecycle/errors.d.ts.map +1 -0
- package/dist/recipe-lifecycle/errors.js +122 -0
- package/dist/recipe-lifecycle/errors.js.map +1 -0
- package/dist/recipe-lifecycle/evolution.d.ts +108 -0
- package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
- package/dist/recipe-lifecycle/evolution.js +884 -0
- package/dist/recipe-lifecycle/evolution.js.map +1 -0
- package/dist/recipe-lifecycle/index.d.ts +26 -0
- package/dist/recipe-lifecycle/index.d.ts.map +1 -0
- package/dist/recipe-lifecycle/index.js +22 -0
- package/dist/recipe-lifecycle/index.js.map +1 -0
- package/dist/recipe-lifecycle/install.d.ts +127 -0
- package/dist/recipe-lifecycle/install.d.ts.map +1 -0
- package/dist/recipe-lifecycle/install.js +526 -0
- package/dist/recipe-lifecycle/install.js.map +1 -0
- package/dist/recipe-lifecycle/legacy-aliases.d.ts +16 -0
- package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -0
- package/dist/recipe-lifecycle/legacy-aliases.js +51 -0
- package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -0
- package/dist/recipe-lifecycle/stamp.d.ts +136 -0
- package/dist/recipe-lifecycle/stamp.d.ts.map +1 -0
- package/dist/recipe-lifecycle/stamp.js +326 -0
- package/dist/recipe-lifecycle/stamp.js.map +1 -0
- package/dist/recipes.d.ts +29 -1
- package/dist/recipes.d.ts.map +1 -1
- package/dist/recipes.js +137 -1
- package/dist/recipes.js.map +1 -1
- package/dist/record-overlay/apply.d.ts +43 -0
- package/dist/record-overlay/apply.d.ts.map +1 -0
- package/dist/record-overlay/apply.js +527 -0
- package/dist/record-overlay/apply.js.map +1 -0
- package/dist/record-overlay/canonical.d.ts +22 -0
- package/dist/record-overlay/canonical.d.ts.map +1 -0
- package/dist/record-overlay/canonical.js +47 -0
- package/dist/record-overlay/canonical.js.map +1 -0
- package/dist/record-overlay/digest.d.ts +4 -0
- package/dist/record-overlay/digest.d.ts.map +1 -0
- package/dist/record-overlay/digest.js +11 -0
- package/dist/record-overlay/digest.js.map +1 -0
- package/dist/record-overlay/errors.d.ts +44 -0
- package/dist/record-overlay/errors.d.ts.map +1 -0
- package/dist/record-overlay/errors.js +55 -0
- package/dist/record-overlay/errors.js.map +1 -0
- package/dist/record-overlay/findings.d.ts +5 -0
- package/dist/record-overlay/findings.d.ts.map +1 -0
- package/dist/record-overlay/findings.js +83 -0
- package/dist/record-overlay/findings.js.map +1 -0
- package/dist/record-overlay/index.d.ts +23 -0
- package/dist/record-overlay/index.d.ts.map +1 -0
- package/dist/record-overlay/index.js +21 -0
- package/dist/record-overlay/index.js.map +1 -0
- package/dist/record-overlay/plan.d.ts +12 -0
- package/dist/record-overlay/plan.d.ts.map +1 -0
- package/dist/record-overlay/plan.js +285 -0
- package/dist/record-overlay/plan.js.map +1 -0
- package/dist/record-overlay/policy.d.ts +69 -0
- package/dist/record-overlay/policy.d.ts.map +1 -0
- package/dist/record-overlay/policy.js +228 -0
- package/dist/record-overlay/policy.js.map +1 -0
- package/dist/record-overlay/redact.d.ts +3 -0
- package/dist/record-overlay/redact.d.ts.map +1 -0
- package/dist/record-overlay/redact.js +27 -0
- package/dist/record-overlay/redact.js.map +1 -0
- package/dist/record-overlay/signal-kind.d.ts +30 -0
- package/dist/record-overlay/signal-kind.d.ts.map +1 -0
- package/dist/record-overlay/signal-kind.js +38 -0
- package/dist/record-overlay/signal-kind.js.map +1 -0
- package/dist/record-overlay/signal-text.d.ts +45 -0
- package/dist/record-overlay/signal-text.d.ts.map +1 -0
- package/dist/record-overlay/signal-text.js +116 -0
- package/dist/record-overlay/signal-text.js.map +1 -0
- package/dist/record-overlay/source-index.d.ts +19 -0
- package/dist/record-overlay/source-index.d.ts.map +1 -0
- package/dist/record-overlay/source-index.js +102 -0
- package/dist/record-overlay/source-index.js.map +1 -0
- package/dist/record-overlay/types.d.ts +291 -0
- package/dist/record-overlay/types.d.ts.map +1 -0
- package/dist/record-overlay/types.js +2 -0
- package/dist/record-overlay/types.js.map +1 -0
- package/dist/remote-backend.d.ts +67 -67
- package/dist/remote-backend.d.ts.map +1 -1
- package/dist/remote-backend.js +169 -201
- package/dist/remote-backend.js.map +1 -1
- package/dist/remote-document-codec.d.ts +15 -0
- package/dist/remote-document-codec.d.ts.map +1 -0
- package/dist/remote-document-codec.js +103 -0
- package/dist/remote-document-codec.js.map +1 -0
- package/dist/remote-error.d.ts +38 -0
- package/dist/remote-error.d.ts.map +1 -0
- package/dist/remote-error.js +59 -0
- package/dist/remote-error.js.map +1 -0
- package/dist/remote-operations.d.ts +6 -3
- package/dist/remote-operations.d.ts.map +1 -1
- package/dist/remote-operations.js +23 -5
- package/dist/remote-operations.js.map +1 -1
- package/dist/remote-parsers.d.ts +86 -0
- package/dist/remote-parsers.d.ts.map +1 -0
- package/dist/remote-parsers.js +181 -0
- package/dist/remote-parsers.js.map +1 -0
- package/dist/remote.d.ts +5 -2
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +5 -1
- package/dist/remote.js.map +1 -1
- package/dist/search/backend-source.d.ts +6 -0
- package/dist/search/backend-source.d.ts.map +1 -0
- package/dist/search/backend-source.js +33 -0
- package/dist/search/backend-source.js.map +1 -0
- package/dist/search/contract.d.ts +151 -0
- package/dist/search/contract.d.ts.map +1 -0
- package/dist/search/contract.js +78 -0
- package/dist/search/contract.js.map +1 -0
- package/dist/search/errors.d.ts +30 -0
- package/dist/search/errors.d.ts.map +1 -0
- package/dist/search/errors.js +50 -0
- package/dist/search/errors.js.map +1 -0
- package/dist/search/identity.d.ts +12 -0
- package/dist/search/identity.d.ts.map +1 -0
- package/dist/search/identity.js +90 -0
- package/dist/search/identity.js.map +1 -0
- package/dist/search/index.d.ts +16 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +15 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/memory-source.d.ts +36 -0
- package/dist/search/memory-source.d.ts.map +1 -0
- package/dist/search/memory-source.js +235 -0
- package/dist/search/memory-source.js.map +1 -0
- package/dist/search/rank.d.ts +34 -0
- package/dist/search/rank.d.ts.map +1 -0
- package/dist/search/rank.js +129 -0
- package/dist/search/rank.js.map +1 -0
- package/dist/search/row-text.d.ts +38 -0
- package/dist/search/row-text.d.ts.map +1 -0
- package/dist/search/row-text.js +88 -0
- package/dist/search/row-text.js.map +1 -0
- package/dist/search/search.d.ts +28 -0
- package/dist/search/search.d.ts.map +1 -0
- package/dist/search/search.js +257 -0
- package/dist/search/search.js.map +1 -0
- package/dist/search/source.d.ts +67 -0
- package/dist/search/source.d.ts.map +1 -0
- package/dist/search/source.js +2 -0
- package/dist/search/source.js.map +1 -0
- package/dist/search/text.d.ts +47 -0
- package/dist/search/text.d.ts.map +1 -0
- package/dist/search/text.js +148 -0
- package/dist/search/text.js.map +1 -0
- package/dist/site-capabilities.d.ts +339 -0
- package/dist/site-capabilities.d.ts.map +1 -0
- package/dist/site-capabilities.js +717 -0
- package/dist/site-capabilities.js.map +1 -0
- package/dist/source-engine/guard.d.ts +82 -0
- package/dist/source-engine/guard.d.ts.map +1 -0
- package/dist/source-engine/guard.js +396 -0
- package/dist/source-engine/guard.js.map +1 -0
- package/dist/source-engine/index.d.ts +24 -0
- package/dist/source-engine/index.d.ts.map +1 -0
- package/dist/source-engine/index.js +20 -0
- package/dist/source-engine/index.js.map +1 -0
- package/dist/source-engine/machine-state.d.ts +74 -0
- package/dist/source-engine/machine-state.d.ts.map +1 -0
- package/dist/source-engine/machine-state.js +48 -0
- package/dist/source-engine/machine-state.js.map +1 -0
- package/dist/source-engine/observe.d.ts +18 -0
- package/dist/source-engine/observe.d.ts.map +1 -0
- package/dist/source-engine/observe.js +598 -0
- package/dist/source-engine/observe.js.map +1 -0
- package/dist/source-engine/robots.d.ts +53 -0
- package/dist/source-engine/robots.d.ts.map +1 -0
- package/dist/source-engine/robots.js +158 -0
- package/dist/source-engine/robots.js.map +1 -0
- package/dist/source-engine/types.d.ts +285 -0
- package/dist/source-engine/types.d.ts.map +1 -0
- package/dist/source-engine/types.js +2 -0
- package/dist/source-engine/types.js.map +1 -0
- package/dist/source-harness/conformance.d.ts +16 -0
- package/dist/source-harness/conformance.d.ts.map +1 -0
- package/dist/source-harness/conformance.js +265 -0
- package/dist/source-harness/conformance.js.map +1 -0
- package/dist/source-harness/fixture.d.ts +95 -0
- package/dist/source-harness/fixture.d.ts.map +1 -0
- package/dist/source-harness/fixture.js +261 -0
- package/dist/source-harness/fixture.js.map +1 -0
- package/dist/source-harness/index.d.ts +22 -0
- package/dist/source-harness/index.d.ts.map +1 -0
- package/dist/source-harness/index.js +19 -0
- package/dist/source-harness/index.js.map +1 -0
- package/dist/source-harness/peer.d.ts +74 -0
- package/dist/source-harness/peer.d.ts.map +1 -0
- package/dist/source-harness/peer.js +106 -0
- package/dist/source-harness/peer.js.map +1 -0
- package/dist/storage.d.ts +6 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +4 -1
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +33 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/uncertain-write.d.ts +156 -19
- package/dist/uncertain-write.d.ts.map +1 -1
- package/dist/uncertain-write.js +90 -31
- package/dist/uncertain-write.js.map +1 -1
- package/dist/versioning.d.ts +9 -4
- package/dist/versioning.d.ts.map +1 -1
- package/dist/versioning.js +9 -4
- package/dist/versioning.js.map +1 -1
- package/dist/write-identity.d.ts +5 -0
- package/dist/write-identity.d.ts.map +1 -0
- package/dist/write-identity.js +9 -0
- package/dist/write-identity.js.map +1 -0
- package/package.json +94 -2
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
import { InvalidInputError } from "./errors.js";
|
|
2
|
+
import { isManagedDocumentMetadataField } from "./managed-document-metadata.js";
|
|
3
|
+
// Storage-neutral Kind inference and guarded authoring. Pure derivations consume already-read
|
|
4
|
+
// documents; the public operations below acquire state and share mutation specifications with
|
|
5
|
+
// presentation adapters. Host-specific prose, command formatting and receipts stay with callers.
|
|
6
|
+
//
|
|
7
|
+
// The one invariant this module exists to protect: an INFERRED draft applies with zero new
|
|
8
|
+
// conformance warnings ("zero-debt by construction"). That holds only because the inference
|
|
9
|
+
// predicates below are pinned to core's OWN validation predicates — presence is core's
|
|
10
|
+
// `isPresent` (never bare key existence: a `title: ""` on one instance must not become a
|
|
11
|
+
// required field), and enum proposal is scalar-string-only (an array-valued key would fire
|
|
12
|
+
// KIND_FIELD_ARITY on every instance). The apply-then-validate property test in
|
|
13
|
+
// kind-draft.test.ts pins this predicate equality; drift there fails the suite loudly.
|
|
14
|
+
import { sha256HexOfUtf8 } from "./sha256.js";
|
|
15
|
+
import { isPresent, RESERVED_KIND_FIELD_NAMES, SUPERBEE_PROGRESS_STATUS_FIELD, splitSections, validateAgainstKind, } from "./kinds.js";
|
|
16
|
+
/** Enum inference gates: 100% presence, at least this many instances, 2-6 distinct scalar strings. */
|
|
17
|
+
export const ENUM_MIN_INSTANCES = 10;
|
|
18
|
+
export const ENUM_MIN_DISTINCT = 2;
|
|
19
|
+
export const ENUM_MAX_DISTINCT = 6;
|
|
20
|
+
/**
|
|
21
|
+
* Floor for a sub-100% H1 heading to appear as a PRICED promotion (mirrors the 60% descriptive
|
|
22
|
+
* threshold the modeling signal's status block uses). Headings below it are noise, not candidates.
|
|
23
|
+
*/
|
|
24
|
+
export const SECTION_PROMOTION_FLOOR = 0.6;
|
|
25
|
+
/** Inference omits ownership metadata and receipts, without changing field-action policy. */
|
|
26
|
+
const EXCLUDED_FIELDS = new Set([...RESERVED_KIND_FIELD_NAMES, "head_version"]);
|
|
27
|
+
function excludedInferenceField(field) {
|
|
28
|
+
return EXCLUDED_FIELDS.has(field) || isManagedDocumentMetadataField(field) ||
|
|
29
|
+
(field.startsWith("superbee_") && field !== SUPERBEE_PROGRESS_STATUS_FIELD);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* One predicate per declaring key. The `Record<DeclarationKey, ...>` type is the point: adding a
|
|
33
|
+
* key to `KindConvention` in core makes this object structurally incomplete and FAILS THE BUILD
|
|
34
|
+
* until the new key is classified. This predicate was previously a hand-written chain of `||`,
|
|
35
|
+
* and an enumeration maintained by hand goes stale silently — it omitted `path`, and then
|
|
36
|
+
* `browseCollapsed`, each found only by someone probing for it. A missing entry here is not a
|
|
37
|
+
* cosmetic gap: it makes a real convention read as a dismissal record, so a draft will overwrite
|
|
38
|
+
* the declaration it could not see.
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* The same exhaustiveness, one level down. `fields` is a structured sub-object, and the first
|
|
42
|
+
* version of this classifier enumerated four of its six keys by hand — missing `descriptions`
|
|
43
|
+
* and `valueDescriptions`, so a convention carrying only field guidance read as declaration-free
|
|
44
|
+
* and could be drafted over. Every key of `KindFields` declares something (a dismissal record has
|
|
45
|
+
* an EMPTY fields block, not a partially-filled one), so nothing is excluded here; adding a key to
|
|
46
|
+
* `KindFields` in core fails the build until it is classified.
|
|
47
|
+
*/
|
|
48
|
+
const FIELDS_DECLARES = {
|
|
49
|
+
required: (f) => f.required.length > 0,
|
|
50
|
+
optional: (f) => f.optional.length > 0,
|
|
51
|
+
values: (f) => Object.keys(f.values).length > 0,
|
|
52
|
+
valueDescriptions: (f) => f.valueDescriptions !== undefined && Object.keys(f.valueDescriptions).length > 0,
|
|
53
|
+
terminal: (f) => Object.keys(f.terminal).length > 0,
|
|
54
|
+
descriptions: (f) => Object.keys(f.descriptions).length > 0,
|
|
55
|
+
types: (f) => f.types !== undefined && Object.keys(f.types).length > 0,
|
|
56
|
+
};
|
|
57
|
+
const DECLARES = {
|
|
58
|
+
path: (kind) => kind.path !== undefined && kind.path !== "",
|
|
59
|
+
fields: (kind) => Object.values(FIELDS_DECLARES).some((declares) => declares(kind.fields)),
|
|
60
|
+
links: (kind) => kind.links !== undefined && Object.keys(kind.links).length > 0,
|
|
61
|
+
linkDescriptions: (kind) => kind.linkDescriptions !== undefined && Object.keys(kind.linkDescriptions).length > 0,
|
|
62
|
+
expectsInbound: (kind) => kind.expectsInbound !== undefined && Object.keys(kind.expectsInbound).length > 0,
|
|
63
|
+
sections: (kind) => kind.sections !== undefined && kind.sections.length > 0,
|
|
64
|
+
freshnessHorizon: (kind) => kind.freshnessHorizon !== undefined,
|
|
65
|
+
// Core parses only a strict `true` here; a declared `false` never reaches this predicate, so the
|
|
66
|
+
// `!== undefined` form is the whole check rather than a distinction between true and false.
|
|
67
|
+
browseCollapsed: (kind) => kind.browseCollapsed !== undefined,
|
|
68
|
+
// A reading-order placement is authored on purpose; a draft must never overwrite it.
|
|
69
|
+
order: (kind) => kind.order !== undefined,
|
|
70
|
+
claim: (kind) => kind.claim !== undefined,
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Whether `kind` declares ANY schema obligation or behavior. The ONE predicate shared by
|
|
74
|
+
* `kind draft`'s refusal (a declaration-bearing kind is never silently redrafted), `kind
|
|
75
|
+
* dismiss`'s idempotency check, and `new`'s registry-lookup guard (a declaration-free kind — a
|
|
76
|
+
* dismissal record — must leave `new`'s command surface exactly as it was before the dismissal).
|
|
77
|
+
*/
|
|
78
|
+
export function kindDeclaresAnything(kind) {
|
|
79
|
+
return Object.values(DECLARES).some((declares) => declares(kind));
|
|
80
|
+
}
|
|
81
|
+
/** `"Context Note"` -> `"context-note"` — the same slug shape the builtin conventions use. */
|
|
82
|
+
export function conventionSlugForType(type) {
|
|
83
|
+
const slug = type
|
|
84
|
+
.trim()
|
|
85
|
+
.toLowerCase()
|
|
86
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
87
|
+
.replace(/^-|-$/g, "");
|
|
88
|
+
return slug === "" ? "kind" : slug;
|
|
89
|
+
}
|
|
90
|
+
function sortedRecord(entries) {
|
|
91
|
+
return Object.fromEntries([...entries].sort(([a], [b]) => a.localeCompare(b)));
|
|
92
|
+
}
|
|
93
|
+
/** Fold `instances` into the presence stats. Presence is core's `isPresent`, never key existence. */
|
|
94
|
+
export function collectInstanceStats(instances) {
|
|
95
|
+
const keys = new Map();
|
|
96
|
+
const headings = new Map();
|
|
97
|
+
for (const doc of instances) {
|
|
98
|
+
for (const [key, value] of Object.entries(doc.frontmatter)) {
|
|
99
|
+
if (!isPresent(value))
|
|
100
|
+
continue;
|
|
101
|
+
keys.set(key, (keys.get(key) ?? 0) + 1);
|
|
102
|
+
}
|
|
103
|
+
for (const heading of Object.keys(splitSections(doc.body))) {
|
|
104
|
+
headings.set(heading, (headings.get(heading) ?? 0) + 1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
count: instances.length,
|
|
109
|
+
keyPresence: sortedRecord(keys),
|
|
110
|
+
headingPresence: sortedRecord(headings),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/** True when every observed value for `key` across `instances` is a scalar string. */
|
|
114
|
+
function everyValueScalarString(instances, key) {
|
|
115
|
+
for (const doc of instances) {
|
|
116
|
+
const value = doc.frontmatter[key];
|
|
117
|
+
if (value === undefined || value === null)
|
|
118
|
+
continue;
|
|
119
|
+
if (typeof value !== "string")
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
/** Distinct observed (string) values for `key`, in first-seen order. */
|
|
125
|
+
function distinctValues(instances, key) {
|
|
126
|
+
const seen = new Set();
|
|
127
|
+
for (const doc of instances) {
|
|
128
|
+
const value = doc.frontmatter[key];
|
|
129
|
+
if (typeof value === "string" && value.trim() !== "")
|
|
130
|
+
seen.add(value);
|
|
131
|
+
}
|
|
132
|
+
return [...seen];
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Infer the candidate convention for `type` from its instances:
|
|
136
|
+
* - required = keys `isPresent` on 100% of instances (minus reserved + attribution)
|
|
137
|
+
* - optional = every other key `isPresent` on >=1 instance
|
|
138
|
+
* - values = only at 100% presence, >= {@link ENUM_MIN_INSTANCES} instances, 2-6 distinct
|
|
139
|
+
* values, every observed value a scalar string
|
|
140
|
+
* - sections = H1 headings on 100% of instances (H1-only: core's ONE heading splitter)
|
|
141
|
+
* - path = the common leading id segment, only when ALL instances share exactly one — a
|
|
142
|
+
* split (`plans/` + `designs/`) is the finding; silently blessing one prefix
|
|
143
|
+
* would orphan the rest, so no `path` is proposed there
|
|
144
|
+
*/
|
|
145
|
+
export function inferKindCandidate(type, instances, stats = collectInstanceStats(instances), description = `Drafted from ${stats.count} existing instances.`) {
|
|
146
|
+
const count = stats.count;
|
|
147
|
+
const required = [];
|
|
148
|
+
const optional = [];
|
|
149
|
+
const values = {};
|
|
150
|
+
for (const [key, present] of Object.entries(stats.keyPresence)) {
|
|
151
|
+
if (excludedInferenceField(key))
|
|
152
|
+
continue;
|
|
153
|
+
if (present === count && count > 0) {
|
|
154
|
+
required.push(key);
|
|
155
|
+
if (count >= ENUM_MIN_INSTANCES && everyValueScalarString(instances, key)) {
|
|
156
|
+
const distinct = distinctValues(instances, key);
|
|
157
|
+
if (distinct.length >= ENUM_MIN_DISTINCT && distinct.length <= ENUM_MAX_DISTINCT) {
|
|
158
|
+
values[key] = distinct.sort((a, b) => a.localeCompare(b));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
optional.push(key);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
const sections = Object.entries(stats.headingPresence)
|
|
167
|
+
.filter(([, present]) => present === count && count > 0)
|
|
168
|
+
.map(([heading]) => heading);
|
|
169
|
+
const prefixes = new Set();
|
|
170
|
+
let allPrefixed = instances.length > 0;
|
|
171
|
+
for (const doc of instances) {
|
|
172
|
+
const slash = doc.id.indexOf("/");
|
|
173
|
+
if (slash <= 0) {
|
|
174
|
+
allPrefixed = false;
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
prefixes.add(doc.id.slice(0, slash));
|
|
178
|
+
}
|
|
179
|
+
const path = allPrefixed && prefixes.size === 1 ? `${[...prefixes][0]}/` : undefined;
|
|
180
|
+
return {
|
|
181
|
+
id: `conventions/${conventionSlugForType(type)}`,
|
|
182
|
+
title: type,
|
|
183
|
+
governs: type,
|
|
184
|
+
description,
|
|
185
|
+
...(path === undefined ? {} : { path }),
|
|
186
|
+
fields: { required, optional, values, terminal: {}, descriptions: {} },
|
|
187
|
+
...(sections.length > 0 ? { sections } : {}),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Price the candidate promotions: every sub-100% optional field, plus every H1 heading at or
|
|
192
|
+
* above {@link SECTION_PROMOTION_FLOOR} but below 100%. `warnings_if_added` is exactly the
|
|
193
|
+
* instances the added declaration would newly warn on.
|
|
194
|
+
*/
|
|
195
|
+
export function draftPromotions(kind, stats) {
|
|
196
|
+
const rows = [];
|
|
197
|
+
for (const key of kind.fields.optional) {
|
|
198
|
+
const present = stats.keyPresence[key] ?? 0;
|
|
199
|
+
rows.push({
|
|
200
|
+
declaration: `field ${key} (optional -> required)`,
|
|
201
|
+
present: `${present}/${stats.count}`,
|
|
202
|
+
warnings_if_added: stats.count - present,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
for (const [heading, present] of Object.entries(stats.headingPresence)) {
|
|
206
|
+
if (present === stats.count)
|
|
207
|
+
continue; // already in the draft
|
|
208
|
+
if (present / stats.count < SECTION_PROMOTION_FLOOR)
|
|
209
|
+
continue;
|
|
210
|
+
rows.push({
|
|
211
|
+
declaration: `section "# ${heading}"`,
|
|
212
|
+
present: `${present}/${stats.count}`,
|
|
213
|
+
warnings_if_added: stats.count - present,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
rows.sort((a, b) => a.warnings_if_added - b.warnings_if_added || a.declaration.localeCompare(b.declaration));
|
|
217
|
+
return rows;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* The MEASURED post-apply warning count: run core's validator over every instance against the
|
|
221
|
+
* candidate and sum the violations. Zero by construction for an inferred candidate (see module
|
|
222
|
+
* comment); the true — possibly large — number for an adopted catalog candidate. Never assumed.
|
|
223
|
+
*/
|
|
224
|
+
export function warningsAfterApply(kind, instances) {
|
|
225
|
+
let total = 0;
|
|
226
|
+
for (const doc of instances)
|
|
227
|
+
total += validateAgainstKind(doc, kind).length;
|
|
228
|
+
return total;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The state-bound plan token `--apply` must present: sha256 of the canonical JSON of everything
|
|
232
|
+
* the human inspected — the exact candidate document, the bundle edition, and the instance stats
|
|
233
|
+
* it was inferred from. Any change to WHAT THE TOKEN BINDS between draft and apply refuses:
|
|
234
|
+
* a presence-stat change (new/removed instances, a key appearing or emptying), an edition
|
|
235
|
+
* change, or a candidate difference. It ALSO binds the measured warning count, because that count
|
|
236
|
+
* is what the human accepted: an instance edit that changes the forecast (a value leaving a
|
|
237
|
+
* declared enum) must not apply under a token issued against a different number. An edit changing
|
|
238
|
+
* neither the candidate, the presence stats, nor the warning count keeps the token valid — the
|
|
239
|
+
* written bytes are identical either way.
|
|
240
|
+
*/
|
|
241
|
+
export function draftPlanToken(input) {
|
|
242
|
+
return `sha256:${sha256HexOfUtf8(JSON.stringify(input))}`;
|
|
243
|
+
}
|
|
244
|
+
import { CONVENTION_TYPE, parseConventionDoc } from "./kinds.js";
|
|
245
|
+
import { loadKinds } from "./kinds-load.js";
|
|
246
|
+
import { query, readBundleOkfVersion } from "./bundle-ops.js";
|
|
247
|
+
import { builtinNames, resolveBuiltinSync } from "./builtin-recipes.js";
|
|
248
|
+
import { materializeRecipeForEdition } from "./recipe-lifecycle/install.js";
|
|
249
|
+
import { droppedLinks } from "./body-replace-guards.js";
|
|
250
|
+
import { mutateDocument } from "./document-mutation.js";
|
|
251
|
+
/** Adapters render recovery commands from these typed facts, never from parsed prose. */
|
|
252
|
+
export class KindAuthoringError extends Error {
|
|
253
|
+
reason;
|
|
254
|
+
type;
|
|
255
|
+
details;
|
|
256
|
+
constructor(reason, type, details = {}) {
|
|
257
|
+
super(`Kind authoring for '${type}' refused: ${reason}.`);
|
|
258
|
+
this.name = "KindAuthoringError";
|
|
259
|
+
this.reason = reason;
|
|
260
|
+
this.type = type;
|
|
261
|
+
this.details = details;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/** The builtin convention governing `type`, materialized for this bundle's edition, if any. */
|
|
265
|
+
function catalogConventionForType(type, okfVersion) {
|
|
266
|
+
for (const name of builtinNames()) {
|
|
267
|
+
const recipe = resolveBuiltinSync(name);
|
|
268
|
+
if (!recipe.governs.includes(type))
|
|
269
|
+
continue;
|
|
270
|
+
const materialized = materializeRecipeForEdition(recipe, okfVersion);
|
|
271
|
+
const doc = materialized.docs.find((d) => {
|
|
272
|
+
const governs = d.frontmatter.governs;
|
|
273
|
+
return typeof governs === "string" && governs.trim() === type;
|
|
274
|
+
});
|
|
275
|
+
if (!doc)
|
|
276
|
+
continue;
|
|
277
|
+
const parsed = parseConventionDoc(doc);
|
|
278
|
+
if (!parsed.ok)
|
|
279
|
+
continue;
|
|
280
|
+
return {
|
|
281
|
+
recipeId: recipe.id,
|
|
282
|
+
doc,
|
|
283
|
+
kind: parsed.kind,
|
|
284
|
+
siblings: recipe.governs.filter((governs) => governs !== type),
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
return undefined;
|
|
288
|
+
}
|
|
289
|
+
/** Candidate frontmatter WITHOUT a timestamp — the engine stamps one at write time. */
|
|
290
|
+
function candidateDocFor(kind, body) {
|
|
291
|
+
const fields = {};
|
|
292
|
+
if (kind.fields.required.length > 0)
|
|
293
|
+
fields.required = kind.fields.required;
|
|
294
|
+
if (kind.fields.optional.length > 0)
|
|
295
|
+
fields.optional = kind.fields.optional;
|
|
296
|
+
if (Object.keys(kind.fields.values).length > 0)
|
|
297
|
+
fields.values = kind.fields.values;
|
|
298
|
+
const frontmatter = {
|
|
299
|
+
type: CONVENTION_TYPE,
|
|
300
|
+
title: kind.title,
|
|
301
|
+
governs: kind.governs,
|
|
302
|
+
};
|
|
303
|
+
if (kind.description !== undefined)
|
|
304
|
+
frontmatter.description = kind.description;
|
|
305
|
+
if (kind.path !== undefined)
|
|
306
|
+
frontmatter.path = kind.path;
|
|
307
|
+
if (Object.keys(fields).length > 0)
|
|
308
|
+
frontmatter.fields = fields;
|
|
309
|
+
if (kind.sections !== undefined && kind.sections.length > 0)
|
|
310
|
+
frontmatter.sections = kind.sections;
|
|
311
|
+
return { id: kind.id, frontmatter, body };
|
|
312
|
+
}
|
|
313
|
+
/** Match convention parsing: type names are trimmed strings with nonempty content. */
|
|
314
|
+
function normalizeKindAuthoringType(type) {
|
|
315
|
+
const normalized = typeof type === "string" ? type.trim() : "";
|
|
316
|
+
if (!isPresent(normalized))
|
|
317
|
+
throw new InvalidInputError("Kind authoring requires a nonempty type name.");
|
|
318
|
+
return normalized;
|
|
319
|
+
}
|
|
320
|
+
/** Build the whole read-only plan: registry + instances -> candidate + forecast + token. */
|
|
321
|
+
export async function prepareKindDraft(bundle, type, text = {}) {
|
|
322
|
+
type = normalizeKindAuthoringType(type);
|
|
323
|
+
const [registry, okfVersionRead] = await Promise.all([loadKinds(bundle), readBundleOkfVersion(bundle)]);
|
|
324
|
+
const okfVersion = okfVersionRead ?? "0.1";
|
|
325
|
+
const existing = registry.kinds.get(type);
|
|
326
|
+
if (existing && kindDeclaresAnything(existing)) {
|
|
327
|
+
throw new KindAuthoringError("already-governed", type, { id: existing.id });
|
|
328
|
+
}
|
|
329
|
+
const instances = (await query(bundle, { type })).sort((a, b) => a.id.localeCompare(b.id));
|
|
330
|
+
if (instances.length === 0) {
|
|
331
|
+
throw new KindAuthoringError("no-instances", type);
|
|
332
|
+
}
|
|
333
|
+
const stats = collectInstanceStats(instances);
|
|
334
|
+
const catalog = catalogConventionForType(type, okfVersion);
|
|
335
|
+
let candidateKind;
|
|
336
|
+
let candidateDoc;
|
|
337
|
+
if (catalog) {
|
|
338
|
+
// Adopt the builtin definition VERBATIM — the recipe's schema is better than an inference,
|
|
339
|
+
// and landing it at its canonical id keeps the recipes surface consistent. The forecast
|
|
340
|
+
// below then reports the REAL (possibly large) warning count against existing instances —
|
|
341
|
+
// the priced route `recipe add` cannot offer when instances already exist.
|
|
342
|
+
candidateKind = catalog.kind;
|
|
343
|
+
const { timestamp: _timestamp, ...frontmatter } = catalog.doc.frontmatter;
|
|
344
|
+
candidateDoc = { id: catalog.doc.id, frontmatter, body: catalog.doc.body };
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
candidateKind = inferKindCandidate(type, instances, stats, text.inferredDescription?.(type, stats.count));
|
|
348
|
+
candidateDoc = candidateDocFor(candidateKind, text.inferredBody?.(type, stats.count) ?? `Drafted from ${stats.count} existing '${type}' instances.\n`);
|
|
349
|
+
}
|
|
350
|
+
// A redraft upgrades the EXISTING governing record in place, wherever it lives — a
|
|
351
|
+
// hand-authored governs-only convention at a non-canonical id keeps its id (never two
|
|
352
|
+
// conventions for one kind; the slug id is only for true creates).
|
|
353
|
+
if (existing)
|
|
354
|
+
candidateDoc = { ...candidateDoc, id: existing.id };
|
|
355
|
+
const warnings = warningsAfterApply(candidateKind, instances);
|
|
356
|
+
const token = draftPlanToken({ target: candidateDoc.id, candidate: candidateDoc, okfVersion, stats, warnings });
|
|
357
|
+
return {
|
|
358
|
+
type,
|
|
359
|
+
okfVersion,
|
|
360
|
+
registry,
|
|
361
|
+
redraftOver: existing,
|
|
362
|
+
candidateDoc,
|
|
363
|
+
candidateKind,
|
|
364
|
+
catalog,
|
|
365
|
+
stats,
|
|
366
|
+
instances,
|
|
367
|
+
warnings,
|
|
368
|
+
token,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
/** The one guarded mutation specification used by public apply and presentation adapters. */
|
|
372
|
+
export function prepareKindDraftMutation(bundle, plan, expectedToken, options = {}) {
|
|
373
|
+
const expected = expectedToken.trim();
|
|
374
|
+
if (plan.token !== expected)
|
|
375
|
+
throw new KindAuthoringError("plan-changed", plan.type, { expected, current: plan.token });
|
|
376
|
+
const prepared = {
|
|
377
|
+
droppedLinks: [],
|
|
378
|
+
options: {
|
|
379
|
+
seedGenerationClock: false, bundle, id: plan.candidateDoc.id,
|
|
380
|
+
mode: plan.redraftOver ? "replace-document" : "create-only",
|
|
381
|
+
registry: plan.registry, strict: false, actor: options.actor, now: options.now,
|
|
382
|
+
// An accepted redraft replaces the decline prose; report any removed links explicitly.
|
|
383
|
+
bodyReplace: { replaceLinks: true },
|
|
384
|
+
buildCandidate: (existing, context) => {
|
|
385
|
+
if (context.okfVersion !== plan.okfVersion)
|
|
386
|
+
throw new KindAuthoringError("edition-changed", plan.type);
|
|
387
|
+
if (plan.redraftOver) {
|
|
388
|
+
const parsed = existing && parseConventionDoc(existing);
|
|
389
|
+
if (!parsed || !parsed.ok || parsed.kind.governs !== plan.type || kindDeclaresAnything(parsed.kind)) {
|
|
390
|
+
throw new KindAuthoringError("redraft-changed", plan.type, { id: plan.redraftOver.id });
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
prepared.droppedLinks = existing ? droppedLinks(bundle, existing, plan.candidateDoc.body) : [];
|
|
394
|
+
return { frontmatter: structuredClone(plan.candidateDoc.frontmatter), body: plan.candidateDoc.body };
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
};
|
|
398
|
+
return prepared;
|
|
399
|
+
}
|
|
400
|
+
export async function appliedKindDraftWarnings(bundle, plan) {
|
|
401
|
+
const applied = (await loadKinds(bundle)).kinds.get(plan.type);
|
|
402
|
+
return applied ? warningsAfterApply(applied, plan.instances) : plan.warnings;
|
|
403
|
+
}
|
|
404
|
+
/** Recompute what was inspected before applying; callers never reproduce the stale-plan checks. */
|
|
405
|
+
export async function applyKindDraft(bundle, type, expectedToken, options = {}) {
|
|
406
|
+
const plan = await prepareKindDraft(bundle, type, options);
|
|
407
|
+
const prepared = prepareKindDraftMutation(bundle, plan, expectedToken, options);
|
|
408
|
+
const result = await mutateDocument(prepared.options);
|
|
409
|
+
return { ...result, droppedLinks: prepared.droppedLinks, warningsAfterApply: await appliedKindDraftWarnings(bundle, plan) };
|
|
410
|
+
}
|
|
411
|
+
export async function prepareKindDismissal(bundle, type, options = {}) {
|
|
412
|
+
type = normalizeKindAuthoringType(type);
|
|
413
|
+
const [registry, edition] = await Promise.all([loadKinds(bundle), readBundleOkfVersion(bundle)]);
|
|
414
|
+
const existing = registry.kinds.get(type);
|
|
415
|
+
if (existing && kindDeclaresAnything(existing))
|
|
416
|
+
throw new KindAuthoringError("dismiss-governed", type, { id: existing.id });
|
|
417
|
+
if (existing)
|
|
418
|
+
return { id: existing.id };
|
|
419
|
+
const id = `conventions/${conventionSlugForType(type)}`;
|
|
420
|
+
const catalog = catalogConventionForType(type, edition ?? "0.1");
|
|
421
|
+
return {
|
|
422
|
+
id, catalog,
|
|
423
|
+
options: {
|
|
424
|
+
seedGenerationClock: false, bundle, id, mode: "create-only", registry, strict: false,
|
|
425
|
+
actor: options.actor, now: options.now,
|
|
426
|
+
buildCandidate: () => ({
|
|
427
|
+
frontmatter: { type: CONVENTION_TYPE, title: type, governs: type,
|
|
428
|
+
description: options.description ?? `Declined: '${type}' is deliberately unconstrained.` },
|
|
429
|
+
body: options.body?.(type, catalog) ?? `A Kind for '${type}' was deliberately declined.\n`,
|
|
430
|
+
}),
|
|
431
|
+
},
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
export async function dismissKind(bundle, type, options = {}) {
|
|
435
|
+
const prepared = await prepareKindDismissal(bundle, type, options);
|
|
436
|
+
if (!prepared.options)
|
|
437
|
+
return { id: prepared.id, changed: false };
|
|
438
|
+
const result = await mutateDocument(prepared.options);
|
|
439
|
+
return { id: prepared.id, changed: result.changed, result, catalog: prepared.catalog };
|
|
440
|
+
}
|
|
441
|
+
/** Typed values are already authored by the caller; existing core validation owns their meaning.
|
|
442
|
+
* Undefined body scaffolds headings, while an explicit empty body remains deliberately empty. */
|
|
443
|
+
export function kindInstanceCandidate(kind, fields, body) {
|
|
444
|
+
const frontmatter = { type: kind.governs };
|
|
445
|
+
for (const [field, value] of Object.entries(fields)) {
|
|
446
|
+
if (field !== "type")
|
|
447
|
+
Object.defineProperty(frontmatter, field, { value, writable: true, enumerable: true, configurable: true });
|
|
448
|
+
}
|
|
449
|
+
return { frontmatter, body: body ?? (kind.sections ?? []).map(heading => `# ${heading}\n`).join("\n") };
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=kind-authoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kind-authoring.js","sourceRoot":"","sources":["../src/kind-authoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InvalidInputError } from "./errors.js";
|
|
2
|
+
import type { ValidationWarning } from "./content-type.js";
|
|
3
|
+
import type { ConceptId } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Typed strict-kind rejection for trusted consumers to translate at their own boundary. Its own
|
|
6
|
+
* module so field actions can refuse with it without importing the mutation service.
|
|
7
|
+
*/
|
|
8
|
+
export declare class KindConformanceError extends InvalidInputError {
|
|
9
|
+
readonly id: ConceptId;
|
|
10
|
+
readonly governs: string;
|
|
11
|
+
readonly violations: ValidationWarning[];
|
|
12
|
+
readonly okfVersion?: "0.1" | "0.2";
|
|
13
|
+
constructor(id: ConceptId, governs: string, violations: ValidationWarning[], okfVersion?: "0.1" | "0.2");
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=kind-conformance-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kind-conformance-error.d.ts","sourceRoot":"","sources":["../src/kind-conformance-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;gBAGlC,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,iBAAiB,EAAE,EAC/B,UAAU,CAAC,EAAE,KAAK,GAAG,KAAK;CAS7B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { InvalidInputError } from "./errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Typed strict-kind rejection for trusted consumers to translate at their own boundary. Its own
|
|
4
|
+
* module so field actions can refuse with it without importing the mutation service.
|
|
5
|
+
*/
|
|
6
|
+
export class KindConformanceError extends InvalidInputError {
|
|
7
|
+
id;
|
|
8
|
+
governs;
|
|
9
|
+
violations;
|
|
10
|
+
okfVersion;
|
|
11
|
+
constructor(id, governs, violations, okfVersion) {
|
|
12
|
+
super(`'${id}' does not satisfy the '${governs}' kind: ${violations.map((warning) => warning.message).join("; ")}`);
|
|
13
|
+
this.name = "KindConformanceError";
|
|
14
|
+
this.id = id;
|
|
15
|
+
this.governs = governs;
|
|
16
|
+
this.violations = violations;
|
|
17
|
+
this.okfVersion = okfVersion;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=kind-conformance-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kind-conformance-error.js","sourceRoot":"","sources":["../src/kind-conformance-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,iBAAiB;IAChD,EAAE,CAAY;IACd,OAAO,CAAS;IAChB,UAAU,CAAsB;IAChC,UAAU,CAAiB;IAEpC,YACE,EAAa,EACb,OAAe,EACf,UAA+B,EAC/B,UAA0B;QAE1B,KAAK,CAAC,IAAI,EAAE,2BAA2B,OAAO,WAAW,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpH,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { type KindRegistry } from "./kinds.js";
|
|
2
|
+
import type { OkfDocument } from "./types.js";
|
|
3
|
+
/** All records are grouped by actual type; path prefixes never infer a Kind or hide nested records. */
|
|
4
|
+
export declare function kindCoverage(registry: KindRegistry, documents: readonly OkfDocument[], options: {
|
|
5
|
+
now: Date;
|
|
6
|
+
okfVersion?: string;
|
|
7
|
+
kind?: string;
|
|
8
|
+
}): {
|
|
9
|
+
now: string;
|
|
10
|
+
documents: number;
|
|
11
|
+
undeclared_kinds: string[];
|
|
12
|
+
kinds: {
|
|
13
|
+
governs: string;
|
|
14
|
+
records: number;
|
|
15
|
+
coverage: {
|
|
16
|
+
fields: {
|
|
17
|
+
present: number;
|
|
18
|
+
filled: number;
|
|
19
|
+
sentinel: number;
|
|
20
|
+
empty: number;
|
|
21
|
+
rate: number | null;
|
|
22
|
+
field: string;
|
|
23
|
+
required: boolean;
|
|
24
|
+
}[];
|
|
25
|
+
body_prose: {
|
|
26
|
+
filled: number;
|
|
27
|
+
rate: number | null;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
drift: {
|
|
31
|
+
undeclared: {
|
|
32
|
+
key: string;
|
|
33
|
+
records: number;
|
|
34
|
+
rate: number | null;
|
|
35
|
+
examples: string[];
|
|
36
|
+
examples_total: number;
|
|
37
|
+
}[];
|
|
38
|
+
declared_unused: string[];
|
|
39
|
+
envelope: {
|
|
40
|
+
key: string;
|
|
41
|
+
records: number;
|
|
42
|
+
}[];
|
|
43
|
+
};
|
|
44
|
+
links: {
|
|
45
|
+
with_links: number;
|
|
46
|
+
typed: {
|
|
47
|
+
relation: string;
|
|
48
|
+
target_kind: string | null;
|
|
49
|
+
target_matches: boolean | null;
|
|
50
|
+
records: number;
|
|
51
|
+
links: number;
|
|
52
|
+
rate: number | null;
|
|
53
|
+
}[];
|
|
54
|
+
untyped_citations: number;
|
|
55
|
+
declared_never_used: string[];
|
|
56
|
+
dangling: number;
|
|
57
|
+
dangling_examples: string[];
|
|
58
|
+
no_inbound: number;
|
|
59
|
+
};
|
|
60
|
+
freshness: {
|
|
61
|
+
clock: string;
|
|
62
|
+
horizon: string | null;
|
|
63
|
+
horizon_ms: number | null;
|
|
64
|
+
missing: number;
|
|
65
|
+
invalid: number;
|
|
66
|
+
buckets: {
|
|
67
|
+
future: number;
|
|
68
|
+
"0-7d": number;
|
|
69
|
+
"8-30d": number;
|
|
70
|
+
"31-90d": number;
|
|
71
|
+
"91-180d": number;
|
|
72
|
+
"181-365d": number;
|
|
73
|
+
">365d": number;
|
|
74
|
+
};
|
|
75
|
+
older_than_horizon: number | null;
|
|
76
|
+
};
|
|
77
|
+
sources: {
|
|
78
|
+
zero: number;
|
|
79
|
+
total: number;
|
|
80
|
+
invalid_entries: number;
|
|
81
|
+
non_url_resources: number;
|
|
82
|
+
per_record: {
|
|
83
|
+
"0": number;
|
|
84
|
+
"1": number;
|
|
85
|
+
"2": number;
|
|
86
|
+
"3": number;
|
|
87
|
+
"4": number;
|
|
88
|
+
"5+": number;
|
|
89
|
+
};
|
|
90
|
+
distinct_domains: number;
|
|
91
|
+
domains_shown: number;
|
|
92
|
+
top_domains: {
|
|
93
|
+
domain: string;
|
|
94
|
+
sources: number;
|
|
95
|
+
}[];
|
|
96
|
+
};
|
|
97
|
+
}[];
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=kind-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kind-coverage.d.ts","sourceRoot":"","sources":["../src/kind-coverage.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+G,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAI5J,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA4F9C,uGAAuG;AACvG,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CjJ"}
|