@superbee/core 0.1.6 → 0.2.0-pre.10

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.
Files changed (248) hide show
  1. package/README.md +127 -0
  2. package/dist/artifact-contract.d.ts +90 -0
  3. package/dist/artifact-contract.d.ts.map +1 -0
  4. package/dist/artifact-contract.js +205 -0
  5. package/dist/artifact-contract.js.map +1 -0
  6. package/dist/backend.d.ts +16 -1
  7. package/dist/backend.d.ts.map +1 -1
  8. package/dist/backend.js +112 -47
  9. package/dist/backend.js.map +1 -1
  10. package/dist/bundle-ops.d.ts +42 -0
  11. package/dist/bundle-ops.d.ts.map +1 -0
  12. package/dist/bundle-ops.js +88 -0
  13. package/dist/bundle-ops.js.map +1 -0
  14. package/dist/bundle.d.ts +10 -28
  15. package/dist/bundle.d.ts.map +1 -1
  16. package/dist/bundle.js +12 -69
  17. package/dist/bundle.js.map +1 -1
  18. package/dist/document-codec.d.ts +6 -1
  19. package/dist/document-codec.d.ts.map +1 -1
  20. package/dist/document-codec.js +8 -4
  21. package/dist/document-codec.js.map +1 -1
  22. package/dist/document-field-actions.d.ts +107 -0
  23. package/dist/document-field-actions.d.ts.map +1 -0
  24. package/dist/document-field-actions.js +302 -0
  25. package/dist/document-field-actions.js.map +1 -0
  26. package/dist/document-mutation.d.ts +61 -3
  27. package/dist/document-mutation.d.ts.map +1 -1
  28. package/dist/document-mutation.js +116 -25
  29. package/dist/document-mutation.js.map +1 -1
  30. package/dist/document-write-policy.d.ts +0 -1
  31. package/dist/document-write-policy.d.ts.map +1 -1
  32. package/dist/document-write-policy.js +7 -4
  33. package/dist/document-write-policy.js.map +1 -1
  34. package/dist/engine.d.ts +3 -1
  35. package/dist/engine.d.ts.map +1 -1
  36. package/dist/engine.js +6 -4
  37. package/dist/engine.js.map +1 -1
  38. package/dist/file-journaled-backend-internal.d.ts +19 -0
  39. package/dist/file-journaled-backend-internal.d.ts.map +1 -0
  40. package/dist/file-journaled-backend-internal.js +10 -0
  41. package/dist/file-journaled-backend-internal.js.map +1 -0
  42. package/dist/file-journaled-backend.d.ts +162 -0
  43. package/dist/file-journaled-backend.d.ts.map +1 -0
  44. package/dist/file-journaled-backend.js +1113 -0
  45. package/dist/file-journaled-backend.js.map +1 -0
  46. package/dist/filesystem-host.d.ts +15 -0
  47. package/dist/filesystem-host.d.ts.map +1 -0
  48. package/dist/filesystem-host.js +20 -0
  49. package/dist/filesystem-host.js.map +1 -0
  50. package/dist/filesystem-identity.d.ts +86 -4
  51. package/dist/filesystem-identity.d.ts.map +1 -1
  52. package/dist/filesystem-identity.js +338 -102
  53. package/dist/filesystem-identity.js.map +1 -1
  54. package/dist/filesystem-lock.d.ts +16 -3
  55. package/dist/filesystem-lock.d.ts.map +1 -1
  56. package/dist/filesystem-lock.js +323 -77
  57. package/dist/filesystem-lock.js.map +1 -1
  58. package/dist/filesystem-push-role.d.ts +77 -0
  59. package/dist/filesystem-push-role.d.ts.map +1 -0
  60. package/dist/filesystem-push-role.js +165 -0
  61. package/dist/filesystem-push-role.js.map +1 -0
  62. package/dist/filesystem.d.ts +17 -0
  63. package/dist/filesystem.d.ts.map +1 -0
  64. package/dist/filesystem.js +18 -0
  65. package/dist/filesystem.js.map +1 -0
  66. package/dist/freshness.d.ts +10 -7
  67. package/dist/freshness.d.ts.map +1 -1
  68. package/dist/freshness.js +14 -11
  69. package/dist/freshness.js.map +1 -1
  70. package/dist/frontmatter-contract.d.ts +2 -2
  71. package/dist/frontmatter-contract.js +2 -2
  72. package/dist/frontmatter.d.ts +11 -1
  73. package/dist/frontmatter.d.ts.map +1 -1
  74. package/dist/frontmatter.js +20 -7
  75. package/dist/frontmatter.js.map +1 -1
  76. package/dist/governed-body-write.d.ts +106 -0
  77. package/dist/governed-body-write.d.ts.map +1 -0
  78. package/dist/governed-body-write.js +251 -0
  79. package/dist/governed-body-write.js.map +1 -0
  80. package/dist/heads-digest.d.ts +32 -0
  81. package/dist/heads-digest.d.ts.map +1 -0
  82. package/dist/heads-digest.js +37 -0
  83. package/dist/heads-digest.js.map +1 -0
  84. package/dist/host-policy-snapshot.d.ts +9 -0
  85. package/dist/host-policy-snapshot.d.ts.map +1 -0
  86. package/dist/host-policy-snapshot.js +33 -0
  87. package/dist/host-policy-snapshot.js.map +1 -0
  88. package/dist/host-text.d.ts +31 -0
  89. package/dist/host-text.d.ts.map +1 -0
  90. package/dist/host-text.js +77 -0
  91. package/dist/host-text.js.map +1 -0
  92. package/dist/hosted-transport/answer-rows.d.ts +216 -0
  93. package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
  94. package/dist/hosted-transport/answer-rows.js +396 -0
  95. package/dist/hosted-transport/answer-rows.js.map +1 -0
  96. package/dist/hosted-transport/carrier.d.ts +142 -0
  97. package/dist/hosted-transport/carrier.d.ts.map +1 -0
  98. package/dist/hosted-transport/carrier.js +241 -0
  99. package/dist/hosted-transport/carrier.js.map +1 -0
  100. package/dist/hosted-transport/history-pages.d.ts +55 -0
  101. package/dist/hosted-transport/history-pages.d.ts.map +1 -0
  102. package/dist/hosted-transport/history-pages.js +69 -0
  103. package/dist/hosted-transport/history-pages.js.map +1 -0
  104. package/dist/hosted-transport/index.d.ts +18 -0
  105. package/dist/hosted-transport/index.d.ts.map +1 -0
  106. package/dist/hosted-transport/index.js +18 -0
  107. package/dist/hosted-transport/index.js.map +1 -0
  108. package/dist/hosted-transport/operations.d.ts +85 -0
  109. package/dist/hosted-transport/operations.d.ts.map +1 -0
  110. package/dist/hosted-transport/operations.js +128 -0
  111. package/dist/hosted-transport/operations.js.map +1 -0
  112. package/dist/hosted-transport/paged-reads.d.ts +87 -0
  113. package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
  114. package/dist/hosted-transport/paged-reads.js +238 -0
  115. package/dist/hosted-transport/paged-reads.js.map +1 -0
  116. package/dist/hosted-transport/read-adapter.d.ts +250 -0
  117. package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
  118. package/dist/hosted-transport/read-adapter.js +557 -0
  119. package/dist/hosted-transport/read-adapter.js.map +1 -0
  120. package/dist/hosted-transport/root-write.d.ts +114 -0
  121. package/dist/hosted-transport/root-write.d.ts.map +1 -0
  122. package/dist/hosted-transport/root-write.js +171 -0
  123. package/dist/hosted-transport/root-write.js.map +1 -0
  124. package/dist/hosted-transport/whole-document-transport.d.ts +174 -0
  125. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
  126. package/dist/hosted-transport/whole-document-transport.js +411 -0
  127. package/dist/hosted-transport/whole-document-transport.js.map +1 -0
  128. package/dist/index.d.ts +29 -8
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +26 -6
  131. package/dist/index.js.map +1 -1
  132. package/dist/indexeddb-backend.d.ts +197 -0
  133. package/dist/indexeddb-backend.d.ts.map +1 -0
  134. package/dist/indexeddb-backend.js +1183 -0
  135. package/dist/indexeddb-backend.js.map +1 -0
  136. package/dist/journaled-backend.d.ts +467 -0
  137. package/dist/journaled-backend.d.ts.map +1 -0
  138. package/dist/journaled-backend.js +389 -0
  139. package/dist/journaled-backend.js.map +1 -0
  140. package/dist/kind-coverage.d.ts +99 -0
  141. package/dist/kind-coverage.d.ts.map +1 -0
  142. package/dist/kind-coverage.js +186 -0
  143. package/dist/kind-coverage.js.map +1 -0
  144. package/dist/kind-field-mutation.d.ts +15 -0
  145. package/dist/kind-field-mutation.d.ts.map +1 -0
  146. package/dist/kind-field-mutation.js +160 -0
  147. package/dist/kind-field-mutation.js.map +1 -0
  148. package/dist/kinds.d.ts +31 -1
  149. package/dist/kinds.d.ts.map +1 -1
  150. package/dist/kinds.js +86 -17
  151. package/dist/kinds.js.map +1 -1
  152. package/dist/links.d.ts +1 -1
  153. package/dist/links.d.ts.map +1 -1
  154. package/dist/links.js +5 -10
  155. package/dist/links.js.map +1 -1
  156. package/dist/managed-document-metadata.d.ts +2 -0
  157. package/dist/managed-document-metadata.d.ts.map +1 -0
  158. package/dist/managed-document-metadata.js +9 -0
  159. package/dist/managed-document-metadata.js.map +1 -0
  160. package/dist/meaningful-change-time.d.ts +6 -6
  161. package/dist/meaningful-change-time.d.ts.map +1 -1
  162. package/dist/meaningful-change-time.js +12 -13
  163. package/dist/meaningful-change-time.js.map +1 -1
  164. package/dist/memory-backend.d.ts +2 -2
  165. package/dist/memory-backend.d.ts.map +1 -1
  166. package/dist/memory-backend.js +32 -16
  167. package/dist/memory-backend.js.map +1 -1
  168. package/dist/mutation.d.ts.map +1 -1
  169. package/dist/mutation.js +2 -2
  170. package/dist/mutation.js.map +1 -1
  171. package/dist/page.d.ts.map +1 -1
  172. package/dist/page.js +2 -1
  173. package/dist/page.js.map +1 -1
  174. package/dist/paths.d.ts +6 -2
  175. package/dist/paths.d.ts.map +1 -1
  176. package/dist/paths.js +35 -33
  177. package/dist/paths.js.map +1 -1
  178. package/dist/platform.d.ts +239 -0
  179. package/dist/platform.d.ts.map +1 -0
  180. package/dist/platform.js +82 -0
  181. package/dist/platform.js.map +1 -0
  182. package/dist/portable-export.d.ts +119 -0
  183. package/dist/portable-export.d.ts.map +1 -0
  184. package/dist/portable-export.js +501 -0
  185. package/dist/portable-export.js.map +1 -0
  186. package/dist/publication-filesystem.d.ts +1 -1
  187. package/dist/publication-filesystem.d.ts.map +1 -1
  188. package/dist/publication-filesystem.js +1 -1
  189. package/dist/publication-filesystem.js.map +1 -1
  190. package/dist/query-filter.d.ts +7 -2
  191. package/dist/query-filter.d.ts.map +1 -1
  192. package/dist/query-filter.js +24 -1
  193. package/dist/query-filter.js.map +1 -1
  194. package/dist/query-order.d.ts +22 -0
  195. package/dist/query-order.d.ts.map +1 -0
  196. package/dist/query-order.js +42 -0
  197. package/dist/query-order.js.map +1 -0
  198. package/dist/recipes.d.ts +3 -1
  199. package/dist/recipes.d.ts.map +1 -1
  200. package/dist/recipes.js +4 -4
  201. package/dist/recipes.js.map +1 -1
  202. package/dist/remote-backend.d.ts +114 -22
  203. package/dist/remote-backend.d.ts.map +1 -1
  204. package/dist/remote-backend.js +285 -44
  205. package/dist/remote-backend.js.map +1 -1
  206. package/dist/remote-document-codec.d.ts +15 -0
  207. package/dist/remote-document-codec.d.ts.map +1 -0
  208. package/dist/remote-document-codec.js +103 -0
  209. package/dist/remote-document-codec.js.map +1 -0
  210. package/dist/remote-error.d.ts +38 -0
  211. package/dist/remote-error.d.ts.map +1 -0
  212. package/dist/remote-error.js +59 -0
  213. package/dist/remote-error.js.map +1 -0
  214. package/dist/remote-operations.d.ts +63 -0
  215. package/dist/remote-operations.d.ts.map +1 -0
  216. package/dist/remote-operations.js +125 -0
  217. package/dist/remote-operations.js.map +1 -0
  218. package/dist/remote-parsers.d.ts +86 -0
  219. package/dist/remote-parsers.d.ts.map +1 -0
  220. package/dist/remote-parsers.js +181 -0
  221. package/dist/remote-parsers.js.map +1 -0
  222. package/dist/remote.d.ts +7 -2
  223. package/dist/remote.d.ts.map +1 -1
  224. package/dist/remote.js +6 -1
  225. package/dist/remote.js.map +1 -1
  226. package/dist/sha256.d.ts +21 -0
  227. package/dist/sha256.d.ts.map +1 -0
  228. package/dist/sha256.js +114 -0
  229. package/dist/sha256.js.map +1 -0
  230. package/dist/storage.d.ts +8 -2
  231. package/dist/storage.d.ts.map +1 -1
  232. package/dist/storage.js +11 -2
  233. package/dist/storage.js.map +1 -1
  234. package/dist/types.d.ts +40 -5
  235. package/dist/types.d.ts.map +1 -1
  236. package/dist/uncertain-write.d.ts +178 -0
  237. package/dist/uncertain-write.d.ts.map +1 -0
  238. package/dist/uncertain-write.js +198 -0
  239. package/dist/uncertain-write.js.map +1 -0
  240. package/dist/version-transport.d.ts +7 -0
  241. package/dist/version-transport.d.ts.map +1 -1
  242. package/dist/version-transport.js +9 -0
  243. package/dist/version-transport.js.map +1 -1
  244. package/dist/versioning.d.ts +18 -7
  245. package/dist/versioning.d.ts.map +1 -1
  246. package/dist/versioning.js +23 -14
  247. package/dist/versioning.js.map +1 -1
  248. package/package.json +75 -4
package/README.md ADDED
@@ -0,0 +1,127 @@
1
+ # @superbee/core
2
+
3
+ The Superbee knowledge engine reads and writes Open Knowledge Format bundles, with versioned
4
+ writes, cross-links and storage backends. It is a library; installing it does not install the
5
+ `superbee` executable.
6
+
7
+ Core and `@superbee/server` are released together, independently of the `superbee` CLI. A CLI
8
+ release bundles the engine source selected at build time; it does not load `@superbee/core@latest`.
9
+
10
+ ## Document presentation values
11
+
12
+ The additive `@superbee/core/artifact-contract` subpath provides pure v1 document target,
13
+ observation, request, receipt and capability decoders. See the [contract reference](https://github.com/Holaxis-ai/superbee/blob/main/packages/core/ARTIFACT-CONTRACT.md)
14
+ for identity, provenance, lifecycle and host responsibilities.
15
+
16
+ ## Mutation attribution and local history
17
+
18
+ `mutateDocument` and `prepareDocumentMutationCandidate` persist a supplied `actor` by default:
19
+ `actor` in OKF v0.1, `superbee_updated_by` in v0.2 (plus `actor` when the Kind requires it).
20
+ Use `persistActor: false` to keep candidate attribution unchanged, or `persistActor: true` to apply
21
+ the attribution policy even without a supplied actor. Supplying the actor option alone leaves an
22
+ otherwise unchanged candidate a no-op, preserving its original attribution and bytes. In v0.1,
23
+ deliberate edits to the candidate's legacy `actor` field still count as authored changes in `patch`
24
+ and `replace-document` modes; overwrite retains its automatic attribution comparison. The pure preview
25
+ prepares patches. This default changes library writes that previously
26
+ required `persistActor: true`; callers needing the old opt-in behavior can explicitly pass false.
27
+
28
+ `producer` controls `generated.by` independently of the version mutator. Local filesystem history
29
+ returns only the current revision, including for Git-tracked bundles. It reads mutation attribution
30
+ from `superbee_updated_by`, legacy `updated_by`, or `actor`; when absent it returns the stable string
31
+ `unattributed`. It does not infer an identity from the reader's environment or the content producer.
32
+ History-keeping backends retain their existing per-write attribution.
33
+
34
+ ## Filesystem platform migration
35
+
36
+ The Windows extraction changes the default Node.js filesystem backend. Its built-in host policy
37
+ supports macOS and Linux. On native Windows or another unsupported host, filesystem construction
38
+ requires an explicit `FilesystemHostPolicy`; there is no automatic Windows fallback.
39
+
40
+ | Entry point | Default on macOS/Linux | On other hosts |
41
+ | --- | --- | --- |
42
+ | `new FilesystemBackend(root)` | Uses the built-in policy | Pass `{ hostPolicy }` as the second argument |
43
+ | `initBundle(root, options)` | Uses the built-in policy | Pass `{ hostPolicy }` as the third argument |
44
+ | `createFilesystemRuntime()` | Captures the built-in policy | Pass a host policy as its argument |
45
+ | `withFilesystemMutationLock(target, body, options)` | Uses the built-in policy | Include `hostPolicy` in `options` |
46
+ | `filesystemMutationLockPath(target, portableRoot)` | Uses the built-in policy | Pass a host policy as the third argument |
47
+
48
+ Without that policy, these filesystem entry points throw `InvalidInputError` on unsupported hosts;
49
+ backend construction and bundle initialization refuse before creating or modifying the target.
50
+ The package has no npm `os` restriction: storage contracts and non-filesystem backends remain
51
+ available independently of the default filesystem policy. Choose a backend and imports appropriate
52
+ to your runtime; installing the library alone does not establish native filesystem support.
53
+
54
+ There is no Windows adapter on npm to install. The experimental first-party adapters are built
55
+ from source in a separate repository, https://github.com/Holaxis-ai/superbee-windows-cli.
56
+ Supplying a policy is an integration contract for an adapter owner, not a promise that arbitrary
57
+ policies make Windows supported.
58
+
59
+ ## Keep the backend returned by initBundle
60
+
61
+ `initBundle` now returns `{ root, backend }`. Pass that returned bundle to engine operations so they
62
+ retain the backend and host policy selected during initialization:
63
+
64
+ ```ts
65
+ import { initBundle, readDoc, writeDoc } from '@superbee/core';
66
+
67
+ const bundle = await initBundle('./knowledge'); // Default filesystem: macOS/Linux.
68
+ await writeDoc(bundle, {
69
+ id: 'notes/example',
70
+ frontmatter: { type: 'Note', title: 'Example' },
71
+ body: 'Shared knowledge.\n',
72
+ });
73
+ const document = await readDoc(bundle, 'notes/example');
74
+ ```
75
+
76
+ Reading `bundle.root` still works. Code that assumes the return value has exactly one property,
77
+ serializes the whole return value, or uses backend presence as a synonym for a remote bundle must
78
+ be updated. A filesystem bundle now has a backend too. Serialize only the fields your application
79
+ intends to persist; do not reconstruct `{ root: bundle.root }` when continuing engine operations
80
+ that need the selected backend.
81
+
82
+ ## Integrating an explicit filesystem policy
83
+
84
+ `@superbee/core/filesystem` exports `createFilesystemRuntime`, `FilesystemBackend`, and the
85
+ `FilesystemHostPolicy` type. An application that owns its host adapter can bind it once:
86
+
87
+ ```ts
88
+ import { createFilesystemRuntime, type FilesystemHostPolicy } from '@superbee/core/filesystem';
89
+
90
+ export async function openFilesystemBundle(root: string, hostPolicy: FilesystemHostPolicy) {
91
+ const filesystem = createFilesystemRuntime(hostPolicy);
92
+ return filesystem.initBundle(root);
93
+ }
94
+ ```
95
+
96
+ The resulting runtime supplies `backend`, `initBundle`, `withMutationLock`, and `mutationLockPath`
97
+ with the same captured policy. Direct backend construction uses
98
+ `new FilesystemBackend(root, { hostPolicy })`. Lock helpers are also exported from `@superbee/core`.
99
+
100
+ A policy supplies the lock-parent directory, owner-namespace key, private-mode enforcement choice,
101
+ and host error classifications. Core still owns lock ownership, version checks, retry bounds and
102
+ cleanup. Policies are structural snapshots: public data and methods are captured, while callbacks
103
+ may continue to observe live operating-system facts. Do not use opaque private fields or methods
104
+ pre-bound to a mutable receiver.
105
+
106
+ ## Release compatibility
107
+
108
+ This migration describes the source after the Windows extraction. Previously published versions
109
+ are unchanged. Consult the release notes for the first affected version before upgrading a pinned
110
+ consumer. CLI and engine version numbers are independent; do not infer matching embedded code from
111
+ package names or version labels.
112
+
113
+ [Source and contribution guide](https://github.com/Holaxis-ai/superbee)
114
+
115
+ ### Node portable export boundary
116
+
117
+ `@superbee/core/portable-export` (also bundled as `superbee/portable-export`) exposes the same
118
+ store-only archive verifier used by the CLI: `verifyExport`, `ExportPageChain` and
119
+ `joinExportPages`. The page chain charges the sum of complete ZIP sizes, including manifests
120
+ and headers, against `MAX_EXPORT_BYTES` before retaining a page; returned `bytes` counts only
121
+ stored bundle content. It performs no acquisition, sign-in or network access. A complete accepted
122
+ handle can be passed to `materializeExport(handle, existingPrivateParent)` to create a fresh
123
+ private directory; callers own its cleanup and isolation while publishing. No target is replaced.
124
+ `exportProvenance(handle)` returns exact ordered raw-manifest SHA-256/size evidence plus a combined
125
+ inventory SHA-256. Keep that evidence outside the directory and private when it identifies a
126
+ private source. Handles cannot be reconstructed from JSON or moved between independently bundled
127
+ module instances; modified handles are refused. This surface requires Node, not a browser or Worker.
@@ -0,0 +1,90 @@
1
+ /** Portable document identity and presentation evidence. No host selection or effects. */
2
+ import type { ConceptId, Version } from "./types.js";
3
+ import type { Provenance } from "./platform.js";
4
+ export type ArtifactAuthorityV1 = {
5
+ mode: "local";
6
+ authorityKey: string;
7
+ } | {
8
+ mode: "hosted";
9
+ authorityKey: string;
10
+ workspaceKey: string;
11
+ };
12
+ export interface DocumentTargetV1 {
13
+ schemaVersion: "superbee.document-target.v1";
14
+ authority: ArtifactAuthorityV1;
15
+ bundleKey: string;
16
+ documentId: ConceptId;
17
+ }
18
+ export type ArtifactLifecycleV1 = {
19
+ state: "unverified";
20
+ } | {
21
+ state: "bound";
22
+ sourceToken: string;
23
+ documentToken: string;
24
+ };
25
+ export interface DocumentObservationV1 {
26
+ schemaVersion: "superbee.document-observation.v1";
27
+ target: DocumentTargetV1;
28
+ provenance: Provenance;
29
+ lifecycle: ArtifactLifecycleV1;
30
+ }
31
+ export interface PresentDocumentRequestV1 {
32
+ schemaVersion: "superbee.present-document.v1";
33
+ operation: "present_document";
34
+ invocationId: string;
35
+ target: DocumentTargetV1;
36
+ referenceVersion?: Version;
37
+ expectedLifecycle?: Extract<ArtifactLifecycleV1, {
38
+ state: "bound";
39
+ }>;
40
+ }
41
+ export type PresentationStateV1 = {
42
+ state: "open_requested";
43
+ observation?: DocumentObservationV1;
44
+ } | {
45
+ state: "payload_prepared";
46
+ observation: DocumentObservationV1;
47
+ } | {
48
+ state: "offered";
49
+ expiresAt: number;
50
+ observation?: DocumentObservationV1;
51
+ } | {
52
+ state: "navigated";
53
+ observation?: DocumentObservationV1;
54
+ };
55
+ export type PresentationErrorCodeV1 = "invalid_input" | "unsupported_version" | "unsupported_operation" | "unsupported_host" | "unavailable" | "unavailable_stale_target" | "context_changed" | "presentation_disabled" | "busy";
56
+ export type PresentDocumentReceiptV1 = {
57
+ schemaVersion: "superbee.present-document-receipt.v1";
58
+ operation: "present_document";
59
+ invocationId: string;
60
+ target: DocumentTargetV1;
61
+ } & ({
62
+ ok: true;
63
+ presentation: PresentationStateV1;
64
+ } | {
65
+ ok: false;
66
+ error: {
67
+ code: PresentationErrorCodeV1;
68
+ retryable: boolean;
69
+ };
70
+ });
71
+ export interface DocumentPresentationCapabilitiesV1 {
72
+ schemaVersion: "superbee.document-presentation-capabilities.v1";
73
+ states: Array<PresentationStateV1["state"]>;
74
+ }
75
+ export type ArtifactDecodeResult<T> = {
76
+ ok: true;
77
+ value: T;
78
+ } | {
79
+ ok: false;
80
+ code: "invalid_input" | "unsupported_version" | "receipt_mismatch";
81
+ };
82
+ export declare function decodeDocumentTargetV1(value: unknown): ArtifactDecodeResult<DocumentTargetV1>;
83
+ export declare function decodeDocumentObservationV1(value: unknown): ArtifactDecodeResult<DocumentObservationV1>;
84
+ export declare function decodePresentDocumentRequestV1(value: unknown): ArtifactDecodeResult<PresentDocumentRequestV1>;
85
+ /** expected is caller-owned decoded data or an equivalent trusted constructor value. */
86
+ export declare function decodePresentDocumentReceiptV1(value: unknown, expected: PresentDocumentRequestV1): ArtifactDecodeResult<PresentDocumentReceiptV1>;
87
+ export declare function decodeDocumentPresentationCapabilitiesV1(value: unknown): ArtifactDecodeResult<DocumentPresentationCapabilitiesV1>;
88
+ export declare function sameDocumentTargetV1(a: DocumentTargetV1, b: DocumentTargetV1): boolean;
89
+ export declare function compareAuthorityVersionV1(observed: DocumentObservationV1, reference: Version): "same" | "different" | "unconfirmed";
90
+ //# sourceMappingURL=artifact-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-contract.d.ts","sourceRoot":"","sources":["../src/artifact-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ import { assertSafeConceptId } from "./paths.js";
2
+ import { isContentVersion } from "./version-transport.js";
3
+ class DecodeFailure {
4
+ code;
5
+ constructor(code) { this.code = code; }
6
+ }
7
+ function requireValue(condition, code = "invalid_input") {
8
+ if (!condition)
9
+ throw new DecodeFailure(code);
10
+ }
11
+ /** Reflect first, before schema classification. Own accessors are never read. Reflection can
12
+ * invoke Proxy traps; failures are caught by the decoder, not treated as trusted data. */
13
+ function snapshot(value, ancestors = new Set()) {
14
+ if (value === null || typeof value === "string" || typeof value === "boolean")
15
+ return value;
16
+ if (typeof value === "number") {
17
+ requireValue(Number.isFinite(value));
18
+ return value;
19
+ }
20
+ requireValue(typeof value === "object");
21
+ requireValue(!ancestors.has(value));
22
+ const array = Array.isArray(value);
23
+ const prototype = Object.getPrototypeOf(value);
24
+ requireValue(array ? prototype === Array.prototype : prototype === null || prototype === Object.prototype);
25
+ ancestors.add(value);
26
+ try {
27
+ const copy = Object.create(null);
28
+ const keys = Reflect.ownKeys(value);
29
+ for (const key of keys) {
30
+ requireValue(typeof key === "string");
31
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
32
+ requireValue(descriptor && Object.hasOwn(descriptor, "value"));
33
+ copy[key] = snapshot(descriptor.value, ancestors);
34
+ }
35
+ if (!array)
36
+ return copy;
37
+ const length = copy.length;
38
+ requireValue(typeof length === "number" && Number.isSafeInteger(length) && length >= 0);
39
+ requireValue(keys.length === length + 1);
40
+ const items = [];
41
+ for (let i = 0; i < length; i++) {
42
+ requireValue(Object.hasOwn(copy, String(i)));
43
+ items.push(copy[String(i)]);
44
+ }
45
+ return items;
46
+ }
47
+ finally {
48
+ ancestors.delete(value);
49
+ }
50
+ }
51
+ function record(value) {
52
+ requireValue(value !== null && typeof value === "object" && !Array.isArray(value));
53
+ return value;
54
+ }
55
+ function fields(value, required, optional = []) {
56
+ requireValue(required.every(key => Object.hasOwn(value, key)));
57
+ requireValue(Object.keys(value).every(key => required.includes(key) || optional.includes(key)));
58
+ }
59
+ function envelope(value, schema) {
60
+ const data = record(value);
61
+ requireValue(typeof data.schemaVersion === "string");
62
+ requireValue(data.schemaVersion === schema, "unsupported_version");
63
+ return data;
64
+ }
65
+ function key(value) {
66
+ requireValue(typeof value === "string" && /^[\x21-\x7e]{1,256}$/.test(value) && !/[\\/]/.test(value));
67
+ return value;
68
+ }
69
+ function version(value) { requireValue(isContentVersion(value)); return value; }
70
+ function nullableVersion(value) { return value === null ? null : version(value); }
71
+ function target(value) {
72
+ const data = envelope(value, "superbee.document-target.v1");
73
+ fields(data, ["schemaVersion", "authority", "bundleKey", "documentId"]);
74
+ const authority = record(data.authority);
75
+ let parsedAuthority;
76
+ if (authority.mode === "local") {
77
+ fields(authority, ["mode", "authorityKey"]);
78
+ parsedAuthority = { mode: "local", authorityKey: key(authority.authorityKey) };
79
+ }
80
+ else {
81
+ requireValue(authority.mode === "hosted");
82
+ fields(authority, ["mode", "authorityKey", "workspaceKey"]);
83
+ parsedAuthority = { mode: "hosted", authorityKey: key(authority.authorityKey), workspaceKey: key(authority.workspaceKey) };
84
+ }
85
+ requireValue(typeof data.documentId === "string");
86
+ assertSafeConceptId(data.documentId);
87
+ return { schemaVersion: "superbee.document-target.v1", authority: parsedAuthority, bundleKey: key(data.bundleKey), documentId: data.documentId };
88
+ }
89
+ function lifecycle(value) {
90
+ const data = record(value);
91
+ if (data.state === "unverified") {
92
+ fields(data, ["state"]);
93
+ return { state: "unverified" };
94
+ }
95
+ requireValue(data.state === "bound");
96
+ fields(data, ["state", "sourceToken", "documentToken"]);
97
+ return { state: "bound", sourceToken: key(data.sourceToken), documentToken: key(data.documentToken) };
98
+ }
99
+ function provenance(value) {
100
+ const data = record(value);
101
+ if (data.state === "shared-confirmed") {
102
+ fields(data, ["state", "version", "acknowledged"]);
103
+ return { state: "shared-confirmed", version: version(data.version), acknowledged: version(data.acknowledged) };
104
+ }
105
+ requireValue(data.state === "local-pending" || data.state === "local-conflict");
106
+ fields(data, ["state", "version", "base", "requestId", ...(data.state === "local-conflict" ? ["remote"] : [])]);
107
+ requireValue(typeof data.requestId === "string");
108
+ const common = { version: version(data.version), base: nullableVersion(data.base), requestId: data.requestId };
109
+ return data.state === "local-pending"
110
+ ? { state: "local-pending", ...common }
111
+ : { state: "local-conflict", ...common, remote: nullableVersion(data.remote) };
112
+ }
113
+ function observation(value) {
114
+ const data = envelope(value, "superbee.document-observation.v1");
115
+ fields(data, ["schemaVersion", "target", "provenance", "lifecycle"]);
116
+ return { schemaVersion: "superbee.document-observation.v1", target: target(data.target), provenance: provenance(data.provenance), lifecycle: lifecycle(data.lifecycle) };
117
+ }
118
+ function request(value) {
119
+ const data = envelope(value, "superbee.present-document.v1");
120
+ fields(data, ["schemaVersion", "operation", "invocationId", "target"], ["referenceVersion", "expectedLifecycle"]);
121
+ requireValue(data.operation === "present_document");
122
+ const expectedLifecycle = Object.hasOwn(data, "expectedLifecycle") ? lifecycle(data.expectedLifecycle) : undefined;
123
+ requireValue(expectedLifecycle === undefined || expectedLifecycle.state === "bound");
124
+ return {
125
+ schemaVersion: "superbee.present-document.v1", operation: "present_document",
126
+ invocationId: key(data.invocationId), target: target(data.target),
127
+ ...(Object.hasOwn(data, "referenceVersion") ? { referenceVersion: version(data.referenceVersion) } : {}),
128
+ ...(expectedLifecycle?.state === "bound" ? { expectedLifecycle } : {}),
129
+ };
130
+ }
131
+ const states = ["open_requested", "payload_prepared", "offered", "navigated"];
132
+ function presentation(value) {
133
+ const data = record(value);
134
+ requireValue(states.includes(data.state));
135
+ fields(data, ["state", ...(data.state === "offered" ? ["expiresAt"] : []), ...(data.state === "payload_prepared" ? ["observation"] : [])], ["observation"]);
136
+ const observed = Object.hasOwn(data, "observation") ? { observation: observation(data.observation) } : {};
137
+ switch (data.state) {
138
+ case "offered":
139
+ requireValue(typeof data.expiresAt === "number" && Number.isSafeInteger(data.expiresAt) && data.expiresAt >= 0);
140
+ return { state: "offered", expiresAt: data.expiresAt, ...observed };
141
+ case "payload_prepared": return { state: "payload_prepared", observation: observation(data.observation) };
142
+ case "open_requested": return { state: "open_requested", ...observed };
143
+ default: return { state: "navigated", ...observed };
144
+ }
145
+ }
146
+ const errors = ["invalid_input", "unsupported_version", "unsupported_operation", "unsupported_host", "unavailable", "unavailable_stale_target", "context_changed", "presentation_disabled", "busy"];
147
+ function receipt(value, expected) {
148
+ const data = envelope(value, "superbee.present-document-receipt.v1");
149
+ requireValue(typeof data.ok === "boolean");
150
+ fields(data, ["schemaVersion", "operation", "invocationId", "target", "ok", data.ok ? "presentation" : "error"]);
151
+ requireValue(data.operation === "present_document");
152
+ const common = { schemaVersion: "superbee.present-document-receipt.v1", operation: "present_document", invocationId: key(data.invocationId), target: target(data.target) };
153
+ let parsed;
154
+ if (data.ok)
155
+ parsed = { ...common, ok: true, presentation: presentation(data.presentation) };
156
+ else {
157
+ const error = record(data.error);
158
+ fields(error, ["code", "retryable"]);
159
+ requireValue(errors.includes(error.code) && typeof error.retryable === "boolean");
160
+ requireValue(!error.retryable || error.code === "busy" || error.code === "unavailable");
161
+ parsed = { ...common, ok: false, error: { code: error.code, retryable: error.retryable } };
162
+ }
163
+ requireValue(parsed.invocationId === expected.invocationId && sameDocumentTargetV1(parsed.target, expected.target), "receipt_mismatch");
164
+ if (parsed.ok) {
165
+ const observed = parsed.presentation.observation;
166
+ requireValue(!observed || sameDocumentTargetV1(observed.target, expected.target), "receipt_mismatch");
167
+ if (expected.expectedLifecycle) {
168
+ const actual = observed?.lifecycle;
169
+ requireValue(actual?.state === "bound" && actual.sourceToken === expected.expectedLifecycle.sourceToken && actual.documentToken === expected.expectedLifecycle.documentToken, "receipt_mismatch");
170
+ }
171
+ }
172
+ return parsed;
173
+ }
174
+ function decode(value, parse) {
175
+ try {
176
+ return { ok: true, value: parse(snapshot(value)) };
177
+ }
178
+ catch (error) {
179
+ return { ok: false, code: error instanceof DecodeFailure ? error.code : "invalid_input" };
180
+ }
181
+ }
182
+ export function decodeDocumentTargetV1(value) { return decode(value, target); }
183
+ export function decodeDocumentObservationV1(value) { return decode(value, observation); }
184
+ export function decodePresentDocumentRequestV1(value) { return decode(value, request); }
185
+ /** expected is caller-owned decoded data or an equivalent trusted constructor value. */
186
+ export function decodePresentDocumentReceiptV1(value, expected) {
187
+ return decode(value, data => receipt(data, expected));
188
+ }
189
+ export function decodeDocumentPresentationCapabilitiesV1(value) {
190
+ return decode(value, value => {
191
+ const data = envelope(value, "superbee.document-presentation-capabilities.v1");
192
+ fields(data, ["schemaVersion", "states"]);
193
+ requireValue(Array.isArray(data.states) && data.states.every(state => states.includes(state)) && new Set(data.states).size === data.states.length);
194
+ return { schemaVersion: "superbee.document-presentation-capabilities.v1", states: [...data.states] };
195
+ });
196
+ }
197
+ export function sameDocumentTargetV1(a, b) {
198
+ return a.authority.mode === b.authority.mode && a.authority.authorityKey === b.authority.authorityKey
199
+ && (a.authority.mode !== "hosted" || (b.authority.mode === "hosted" && a.authority.workspaceKey === b.authority.workspaceKey))
200
+ && a.bundleKey === b.bundleKey && a.documentId === b.documentId;
201
+ }
202
+ export function compareAuthorityVersionV1(observed, reference) {
203
+ return observed.provenance.state !== "shared-confirmed" ? "unconfirmed" : observed.provenance.acknowledged === reference ? "same" : "different";
204
+ }
205
+ //# sourceMappingURL=artifact-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-contract.js","sourceRoot":"","sources":["../src/artifact-contract.ts"],"names":[],"mappings":"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"}
package/dist/backend.d.ts CHANGED
@@ -24,6 +24,7 @@
24
24
  * at all — parsing is an implementation detail of THIS adapter, not of the seam.
25
25
  */
26
26
  import type { BlobKey, ConceptId, DeleteOptions, OkfDocument, ReadBlobResult, ReadResult, ReservedFilename, ReservedReadResult, StorageBackend, Version, VersionInfo, WriteOptions } from "./types.js";
27
+ import type { FilesystemBackendOptions } from "./filesystem-host.js";
27
28
  /**
28
29
  * The default {@link StorageBackend}: a filesystem-backed OKF bundle rooted at an
29
30
  * absolute directory. Concept documents are markdown files at `<id>.md`; reserved
@@ -36,7 +37,7 @@ export declare class FilesystemBackend implements StorageBackend {
36
37
  * process's current directory on every operation, so a later `chdir` would silently move the
37
38
  * bundle and derive a different identity key.
38
39
  */
39
- constructor(root: string);
40
+ constructor(root: string, options?: FilesystemBackendOptions);
40
41
  read(id: ConceptId): Promise<ReadResult>;
41
42
  readMany(ids: ConceptId[]): Promise<ReadResult[]>;
42
43
  write(id: ConceptId, doc: OkfDocument, options?: WriteOptions): Promise<Version>;
@@ -64,6 +65,20 @@ export declare function readRawFilesystemDocument(backend: FilesystemBackend, id
64
65
  bytes: Uint8Array;
65
66
  version: Version;
66
67
  }>;
68
+ /**
69
+ * {@link readRawFilesystemDocument} for many documents in one observation pass, so a capture
70
+ * lists each directory once instead of twice per document. `read` answers exactly what
71
+ * `readRawFilesystemDocument` would, in the caller's order; `finish` ends the pass and returns
72
+ * the ids whose answers the end-of-pass check could not confirm, for the caller to read again
73
+ * with `readRawFilesystemDocument`.
74
+ */
75
+ export declare function openRawFilesystemDocumentPass(backend: FilesystemBackend): {
76
+ read(id: ConceptId): Promise<{
77
+ bytes: Uint8Array;
78
+ version: Version;
79
+ }>;
80
+ finish(): Promise<ConceptId[]>;
81
+ };
67
82
  /** Internal exact-byte authority for reserved publication objects. */
68
83
  export declare function readRawFilesystemReserved(backend: FilesystemBackend, dir: string, name: ReservedFilename): Promise<{
69
84
  bytes: Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAyBH,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAqEpB;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,cAAc;;IAGtD;;;;OAIG;gBACS,IAAI,EAAE,MAAM;IAKlB,IAAI,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAUxC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAWjD,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BpF,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBpE,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA6B/C,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAKvC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAmB3C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAUrF,aAAa,CACjB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,OAAO,CAAC;IAoBb,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAatD,SAAS,CACb,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,UAAU,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,OAAO,CAAC;IAuBb,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAcvE,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAWpD,YAAY;;;;;;;CASb;AAQD,6FAA6F;AAC7F,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,EAAE,EAAE,SAAS,GACZ,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAQlD;AAED,sEAAsE;AACtE,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAAC,CASzD;AAED,oEAAoE;AACpE,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAC,CAYzD"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AA+BH,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAoErE;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,cAAc;;IAItD;;;;OAIG;gBACS,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B;IAM1D,IAAI,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IA6BxC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAwBjD,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BpF,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBpE,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA6B/C,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAKvC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAmB3C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAWrF,aAAa,CACjB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,OAAO,CAAC;IAqBb,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAatD,SAAS,CACb,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,UAAU,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,OAAO,CAAC;IAuBb,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAcvE,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAWpD,YAAY;;;;;;;CASb;AAQD,6FAA6F;AAC7F,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,EAAE,EAAE,SAAS,GACZ,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAElD;AAiBD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACzE,IAAI,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACtE,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CAChC,CAiBA;AAED,sEAAsE;AACtE,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAAC,CAUzD;AAED,oEAAoE;AACpE,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAC,CAazD"}