@opengeni/core 0.21.10 → 0.24.1

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 (116) hide show
  1. package/dist/access/index.d.ts +1 -1
  2. package/dist/application/new-session-drafts.d.ts +1 -1
  3. package/dist/application/session-commands.d.ts +2 -2
  4. package/dist/billing/limits.d.ts +1 -1
  5. package/dist/chunk-6WKPWE5S.js +2380 -0
  6. package/dist/chunk-6WKPWE5S.js.map +1 -0
  7. package/dist/chunk-JJU6I5XD.js +2713 -0
  8. package/dist/chunk-JJU6I5XD.js.map +1 -0
  9. package/dist/chunk-NYPMQ7NO.js +2270 -0
  10. package/dist/chunk-NYPMQ7NO.js.map +1 -0
  11. package/dist/dependencies.d.ts +26 -6
  12. package/dist/domain/capabilities.d.ts +28 -3
  13. package/dist/domain/company-profile-durable-learning-adapter.d.ts +39 -0
  14. package/dist/domain/durable-learning-slack-publication.d.ts +72 -0
  15. package/dist/domain/editable-artifacts/agent-application.d.ts +192 -0
  16. package/dist/domain/editable-artifacts/durable-export-postgres.d.ts +4 -0
  17. package/dist/domain/editable-artifacts/durable-export.d.ts +212 -0
  18. package/dist/domain/editable-artifacts/errors.d.ts +47 -0
  19. package/dist/domain/editable-artifacts/hash.d.ts +11 -0
  20. package/dist/domain/editable-artifacts/in-memory.d.ts +99 -0
  21. package/dist/domain/editable-artifacts/index.d.ts +14 -0
  22. package/dist/domain/editable-artifacts/ports.d.ts +341 -0
  23. package/dist/domain/editable-artifacts/postgres-adapters.d.ts +13 -0
  24. package/dist/domain/editable-artifacts/service.d.ts +105 -0
  25. package/dist/domain/editable-artifacts/snapshot-compaction.d.ts +44 -0
  26. package/dist/domain/editable-artifacts/snapshot-verifier-genesis.d.ts +50 -0
  27. package/dist/domain/editable-artifacts/snapshot-verifier-materialization.d.ts +21 -0
  28. package/dist/domain/editable-artifacts/snapshot-verifier.d.ts +118 -0
  29. package/dist/domain/editable-artifacts/types.d.ts +410 -0
  30. package/dist/domain/memory-slack-delivery.d.ts +19 -0
  31. package/dist/domain/packs.d.ts +29 -1
  32. package/dist/domain/personal-connection-delegations.d.ts +9 -1
  33. package/dist/domain/scheduled-tasks.d.ts +2 -2
  34. package/dist/domain/session-tool-policy.d.ts +2 -2
  35. package/dist/domain/sessions.d.ts +14 -6
  36. package/dist/domain/skill-imports.d.ts +32 -0
  37. package/dist/domain/slack-publication-secret-safety.d.ts +8 -0
  38. package/dist/domain/timeline-annotations.d.ts +5 -0
  39. package/dist/domain/video-generation-capabilities.d.ts +9 -0
  40. package/dist/domain/video-generation.d.ts +47 -0
  41. package/dist/editable-artifact-live/application.d.ts +69 -0
  42. package/dist/editable-artifact-live/errors.d.ts +1 -0
  43. package/dist/editable-artifact-live/index.d.ts +8 -0
  44. package/dist/editable-artifact-live/outbox-dispatcher.d.ts +162 -0
  45. package/dist/editable-artifact-live/ports.d.ts +100 -0
  46. package/dist/editable-artifact-live/server.d.ts +71 -0
  47. package/dist/editable-artifact-live/ticket.d.ts +40 -0
  48. package/dist/editable-artifact-live/types.d.ts +213 -0
  49. package/dist/editable-artifact-live/wire.d.ts +34 -0
  50. package/dist/editable-artifact-live.d.ts +2 -0
  51. package/dist/editable-artifact-live.js +58 -0
  52. package/dist/editable-artifact-live.js.map +1 -0
  53. package/dist/editable-artifacts.d.ts +2 -0
  54. package/dist/editable-artifacts.js +179 -0
  55. package/dist/editable-artifacts.js.map +1 -0
  56. package/dist/index.d.ts +35 -26
  57. package/dist/index.js +2792 -609
  58. package/dist/index.js.map +1 -1
  59. package/dist/managed-session.d.ts +1 -1
  60. package/dist/rigs/index.d.ts +1 -1
  61. package/dist/rigs/provider-images.d.ts +31 -0
  62. package/dist/sandbox/routing.d.ts +1 -0
  63. package/dist/session-authorization.d.ts +1 -1
  64. package/dist/workflow-wake-contract.d.ts +7 -0
  65. package/package.json +18 -10
  66. package/src/application/new-session-drafts.ts +2 -0
  67. package/src/application/session-commands.ts +188 -107
  68. package/src/dependencies.ts +30 -2
  69. package/src/domain/capabilities.ts +604 -220
  70. package/src/domain/company-profile-durable-learning-adapter.ts +221 -0
  71. package/src/domain/durable-learning-slack-publication.ts +202 -0
  72. package/src/domain/editable-artifacts/agent-application.ts +687 -0
  73. package/src/domain/editable-artifacts/durable-export-postgres.ts +139 -0
  74. package/src/domain/editable-artifacts/durable-export.ts +734 -0
  75. package/src/domain/editable-artifacts/errors.ts +115 -0
  76. package/src/domain/editable-artifacts/hash.ts +131 -0
  77. package/src/domain/editable-artifacts/in-memory.ts +1662 -0
  78. package/src/domain/editable-artifacts/index.ts +14 -0
  79. package/src/domain/editable-artifacts/ports.ts +462 -0
  80. package/src/domain/editable-artifacts/postgres-adapters.ts +49 -0
  81. package/src/domain/editable-artifacts/service.ts +2402 -0
  82. package/src/domain/editable-artifacts/snapshot-compaction.ts +246 -0
  83. package/src/domain/editable-artifacts/snapshot-verifier-genesis.ts +235 -0
  84. package/src/domain/editable-artifacts/snapshot-verifier-materialization.ts +74 -0
  85. package/src/domain/editable-artifacts/snapshot-verifier.ts +687 -0
  86. package/src/domain/editable-artifacts/types.ts +835 -0
  87. package/src/domain/insights.ts +136 -33
  88. package/src/domain/memory-slack-delivery.ts +204 -0
  89. package/src/domain/memory-slack-publication.ts +5 -2
  90. package/src/domain/packs.ts +266 -5
  91. package/src/domain/personal-connection-delegations.ts +97 -6
  92. package/src/domain/scheduled-tasks.ts +155 -29
  93. package/src/domain/session-tool-policy.ts +8 -2
  94. package/src/domain/sessions.ts +274 -131
  95. package/src/domain/skill-imports.ts +350 -0
  96. package/src/domain/slack-publication-secret-safety.ts +42 -0
  97. package/src/domain/timeline-annotations.ts +204 -0
  98. package/src/domain/video-generation-capabilities.ts +69 -0
  99. package/src/domain/video-generation.ts +249 -0
  100. package/src/editable-artifact-live/application.ts +182 -0
  101. package/src/editable-artifact-live/errors.ts +4 -0
  102. package/src/editable-artifact-live/index.ts +8 -0
  103. package/src/editable-artifact-live/outbox-dispatcher.ts +916 -0
  104. package/src/editable-artifact-live/ports.ts +139 -0
  105. package/src/editable-artifact-live/server.ts +1707 -0
  106. package/src/editable-artifact-live/ticket.ts +217 -0
  107. package/src/editable-artifact-live/types.ts +286 -0
  108. package/src/editable-artifact-live/wire.ts +95 -0
  109. package/src/editable-artifact-live.ts +2 -0
  110. package/src/editable-artifacts.ts +2 -0
  111. package/src/index.ts +13 -0
  112. package/src/rigs/index.ts +26 -19
  113. package/src/rigs/provider-images.ts +110 -0
  114. package/src/sandbox/routing.ts +6 -3
  115. package/src/session-authorization.ts +3 -0
  116. package/src/workflow-wake-contract.ts +8 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domain/editable-artifacts/types.ts","../src/domain/editable-artifacts/errors.ts","../src/domain/editable-artifacts/hash.ts","../src/domain/editable-artifacts/snapshot-verifier.ts","../src/domain/editable-artifacts/service.ts"],"sourcesContent":["import type {\n EditableArtifactMutationIntent as ContractEditableArtifactMutationIntent,\n EDITABLE_ARTIFACT_INTENT_VERSION,\n} from \"@opengeni/contracts/editable-artifacts\";\nimport { EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES } from \"@opengeni/contracts/editable-artifacts\";\n\n/**\n * Domain vocabulary for collaborative, editable Office-like artifacts.\n *\n * This is intentionally unrelated to OpenGeni's published HTML artifacts and\n * document-ingestion records. An editable artifact is mutable canonical model\n * state plus a causally ordered operation history.\n */\n\ndeclare const editableArtifactIdBrand: unique symbol;\ndeclare const editableArtifactTransactionIdBrand: unique symbol;\ndeclare const editableArtifactReceiptIdBrand: unique symbol;\ndeclare const editableArtifactSnapshotIdBrand: unique symbol;\ndeclare const editableArtifactOutboxIdBrand: unique symbol;\ndeclare const editableArtifactOperationIdBrand: unique symbol;\ndeclare const editableArtifactReplicaIdBrand: unique symbol;\ndeclare const editableArtifactClientTransactionIdBrand: unique symbol;\ndeclare const editableArtifactRequestHashBrand: unique symbol;\ndeclare const editableArtifactStateHashBrand: unique symbol;\ndeclare const editableArtifactContentHashBrand: unique symbol;\n\nexport type EditableArtifactId = string & {\n readonly [editableArtifactIdBrand]: true;\n};\nexport type EditableArtifactTransactionId = string & {\n readonly [editableArtifactTransactionIdBrand]: true;\n};\nexport type EditableArtifactReceiptId = string & {\n readonly [editableArtifactReceiptIdBrand]: true;\n};\nexport type EditableArtifactSnapshotId = string & {\n readonly [editableArtifactSnapshotIdBrand]: true;\n};\nexport type EditableArtifactOutboxId = string & {\n readonly [editableArtifactOutboxIdBrand]: true;\n};\nexport type EditableArtifactOperationId = string & {\n readonly [editableArtifactOperationIdBrand]: true;\n};\nexport type EditableArtifactReplicaId = string & {\n readonly [editableArtifactReplicaIdBrand]: true;\n};\nexport type EditableArtifactClientTransactionId = string & {\n readonly [editableArtifactClientTransactionIdBrand]: true;\n};\nexport type EditableArtifactRequestHash = string & {\n readonly [editableArtifactRequestHashBrand]: true;\n};\nexport type EditableArtifactStateHash = string & {\n readonly [editableArtifactStateHashBrand]: true;\n};\nexport type EditableArtifactContentHash = string & {\n readonly [editableArtifactContentHashBrand]: true;\n};\n\nexport type EditableArtifactStableId =\n | EditableArtifactId\n | EditableArtifactTransactionId\n | EditableArtifactReceiptId\n | EditableArtifactSnapshotId\n | EditableArtifactOutboxId\n | EditableArtifactOperationId;\n\nconst STABLE_ID_PATTERN = /^[0-9a-f]{32}$/;\nconst REPLICA_ID_PATTERN = /^[0-9a-f]{16}$/;\nconst SHA256_PATTERN = /^sha256:[0-9a-f]{64}$/;\n\nfunction assertNonzeroHex(value: string, pattern: RegExp, label: string): void {\n if (!pattern.test(value) || /^0+$/.test(value)) {\n throw new TypeError(`${label} must be fixed-width lowercase nonzero hexadecimal text`);\n }\n}\n\nexport function editableArtifactId(value: string): EditableArtifactId {\n assertNonzeroHex(value, STABLE_ID_PATTERN, \"artifact id\");\n return value as EditableArtifactId;\n}\n\nexport function editableArtifactTransactionId(value: string): EditableArtifactTransactionId {\n assertNonzeroHex(value, STABLE_ID_PATTERN, \"server transaction id\");\n return value as EditableArtifactTransactionId;\n}\n\nexport function editableArtifactReceiptId(value: string): EditableArtifactReceiptId {\n assertNonzeroHex(value, STABLE_ID_PATTERN, \"receipt id\");\n return value as EditableArtifactReceiptId;\n}\n\nexport function editableArtifactSnapshotId(value: string): EditableArtifactSnapshotId {\n assertNonzeroHex(value, STABLE_ID_PATTERN, \"snapshot id\");\n return value as EditableArtifactSnapshotId;\n}\n\nexport function editableArtifactOutboxId(value: string): EditableArtifactOutboxId {\n assertNonzeroHex(value, STABLE_ID_PATTERN, \"outbox id\");\n return value as EditableArtifactOutboxId;\n}\n\nexport function editableArtifactOperationId(value: string): EditableArtifactOperationId {\n assertNonzeroHex(value, STABLE_ID_PATTERN, \"operation id\");\n return value as EditableArtifactOperationId;\n}\n\nexport function editableArtifactReplicaId(value: string): EditableArtifactReplicaId {\n assertNonzeroHex(value, REPLICA_ID_PATTERN, \"replica id\");\n return value as EditableArtifactReplicaId;\n}\n\nexport function editableArtifactClientTransactionId(\n value: string,\n): EditableArtifactClientTransactionId {\n if (value.length < 1 || value.length > 200 || !/^[A-Za-z0-9._:-]+$/.test(value)) {\n throw new TypeError(\"client transaction id must contain 1-200 portable identifier characters\");\n }\n return value as EditableArtifactClientTransactionId;\n}\n\nexport function editableArtifactRequestHash(value: string): EditableArtifactRequestHash {\n if (!SHA256_PATTERN.test(value)) {\n throw new TypeError(\"request hash must be sha256 followed by 64 lowercase hexadecimal digits\");\n }\n return value as EditableArtifactRequestHash;\n}\n\nexport function editableArtifactStateHash(value: string): EditableArtifactStateHash {\n if (!SHA256_PATTERN.test(value)) {\n throw new TypeError(\"state hash must be sha256 followed by 64 lowercase hexadecimal digits\");\n }\n return value as EditableArtifactStateHash;\n}\n\nexport function editableArtifactContentHash(value: string): EditableArtifactContentHash {\n if (!SHA256_PATTERN.test(value)) {\n throw new TypeError(\"content hash must be sha256 followed by 64 lowercase hexadecimal digits\");\n }\n return value as EditableArtifactContentHash;\n}\n\nexport type EditableArtifactScope = Readonly<{\n accountId: string;\n workspaceId: string;\n}>;\n\nexport function editableArtifactScope(input: EditableArtifactScope): EditableArtifactScope {\n return Object.freeze({\n accountId: boundedIdentity(input.accountId, \"account id\"),\n workspaceId: boundedIdentity(input.workspaceId, \"workspace id\"),\n });\n}\n\nfunction boundedIdentity(value: string, label: string): string {\n if (\n value.length < 1 ||\n value.length > 256 ||\n value.trim() !== value ||\n !isWellFormedPersistedText(value)\n ) {\n throw new TypeError(`${label} must contain 1-256 non-padding characters`);\n }\n return value;\n}\n\nfunction boundedActorIdentity(value: string, label: string): string {\n const byteLength = new TextEncoder().encode(value).byteLength;\n if (\n value.length < 1 ||\n value.length > 256 ||\n byteLength > 1_024 ||\n value.trim() !== value ||\n !isWellFormedPersistedText(value)\n ) {\n throw new TypeError(\n `${label} must contain 1-256 well-formed non-padding characters and at most 1024 UTF-8 bytes`,\n );\n }\n return value;\n}\n\nfunction isWellFormedPersistedText(value: string): boolean {\n if (value.includes(\"\\0\")) return false;\n for (let index = 0; index < value.length; index += 1) {\n const codeUnit = value.charCodeAt(index);\n if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {\n const next = value.charCodeAt(index + 1);\n if (!Number.isFinite(next) || next < 0xdc00 || next > 0xdfff) return false;\n index += 1;\n } else if (codeUnit >= 0xdc00 && codeUnit <= 0xdfff) {\n return false;\n }\n }\n return true;\n}\n\nexport type EditableArtifactModality = \"spreadsheet\" | \"presentation\" | \"document\";\nexport type EditableArtifactLifecycleState = \"active\" | \"archived\";\nexport type EditableArtifactPermission =\n | \"create\"\n | \"read\"\n | \"edit\"\n | \"import\"\n | \"export\"\n | \"manage\";\n\nexport type EditableArtifactHumanActor = Readonly<{\n kind: \"human\";\n subjectId: string;\n replicaId: EditableArtifactReplicaId;\n}>;\n\nexport type EditableArtifactAgentActor = Readonly<{\n kind: \"agent\";\n subjectId: string;\n replicaId: EditableArtifactReplicaId;\n sessionId: string;\n turnId: string;\n attemptId: string;\n generation: number;\n}>;\n\nexport type EditableArtifactServiceActor = Readonly<{\n kind: \"service\";\n subjectId: string;\n replicaId: EditableArtifactReplicaId;\n service: string;\n}>;\n\nexport type EditableArtifactActor =\n | EditableArtifactHumanActor\n | EditableArtifactAgentActor\n | EditableArtifactServiceActor;\n\nexport function validateEditableArtifactActor(actor: EditableArtifactActor): void {\n const record = exactPlainDataRecord(actor, \"editable artifact actor\");\n const kind = ownDataValue(record, \"kind\", \"editable artifact actor\");\n const allowed =\n kind === \"human\"\n ? [\"kind\", \"subjectId\", \"replicaId\"]\n : kind === \"agent\"\n ? [\"kind\", \"subjectId\", \"replicaId\", \"sessionId\", \"turnId\", \"attemptId\", \"generation\"]\n : kind === \"service\"\n ? [\"kind\", \"subjectId\", \"replicaId\", \"service\"]\n : null;\n if (!allowed) throw new TypeError(\"editable artifact actor kind is invalid\");\n const names = Object.getOwnPropertyNames(record);\n if (names.length !== allowed.length || names.some((name) => !allowed.includes(name))) {\n throw new TypeError(\"editable artifact actor contains missing or unknown properties\");\n }\n const subjectId = ownDataValue(record, \"subjectId\", \"editable artifact actor\");\n const replicaId = ownDataValue(record, \"replicaId\", \"editable artifact actor\");\n if (typeof subjectId !== \"string\" || typeof replicaId !== \"string\") {\n throw new TypeError(\"editable artifact actor identity is malformed\");\n }\n boundedActorIdentity(subjectId, \"actor subject id\");\n editableArtifactReplicaId(replicaId);\n if (kind === \"agent\") {\n const sessionId = ownDataValue(record, \"sessionId\", \"agent actor\");\n const turnId = ownDataValue(record, \"turnId\", \"agent actor\");\n const attemptId = ownDataValue(record, \"attemptId\", \"agent actor\");\n const generation = ownDataValue(record, \"generation\", \"agent actor\");\n if (\n typeof sessionId !== \"string\" ||\n typeof turnId !== \"string\" ||\n typeof attemptId !== \"string\" ||\n typeof generation !== \"number\"\n ) {\n throw new TypeError(\"editable artifact agent actor is malformed\");\n }\n boundedActorIdentity(sessionId, \"agent session id\");\n boundedActorIdentity(turnId, \"agent turn id\");\n boundedActorIdentity(attemptId, \"agent attempt id\");\n assertNonnegativeSafeInteger(generation, \"agent generation\");\n } else if (kind === \"service\") {\n const service = ownDataValue(record, \"service\", \"service actor\");\n if (typeof service !== \"string\") {\n throw new TypeError(\"editable artifact service actor is malformed\");\n }\n boundedActorIdentity(service, \"service name\");\n }\n}\n\nfunction exactPlainDataRecord(value: unknown, label: string): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${label} must be a plain data object`);\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new TypeError(`${label} must be a plain data object`);\n }\n if (Object.getOwnPropertySymbols(value).length > 0) {\n throw new TypeError(`${label} must not contain symbol properties`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction ownDataValue(record: Record<string, unknown>, key: string, label: string): unknown {\n const descriptor = Object.getOwnPropertyDescriptor(record, key);\n if (\n !descriptor ||\n !(\"value\" in descriptor) ||\n descriptor.enumerable !== true ||\n descriptor.value === undefined\n ) {\n throw new TypeError(`${label} property ${key} must be own data`);\n }\n return descriptor.value;\n}\n\n/** Exact authority identity used by idempotency and operation authorship. */\nexport function editableArtifactActorKey(actor: EditableArtifactActor): string {\n validateEditableArtifactActor(actor);\n let actorKey: string;\n switch (actor.kind) {\n case \"human\":\n actorKey = JSON.stringify([actor.kind, actor.subjectId]);\n break;\n case \"agent\":\n actorKey = JSON.stringify([\n actor.kind,\n actor.subjectId,\n actor.sessionId,\n actor.turnId,\n actor.attemptId,\n actor.generation,\n ]);\n break;\n case \"service\":\n actorKey = JSON.stringify([actor.kind, actor.subjectId, actor.service]);\n break;\n default:\n throw new TypeError(\"editable artifact actor kind is invalid\");\n }\n if (new TextEncoder().encode(actorKey).byteLength > 8_192) {\n throw new TypeError(\"editable artifact actor key exceeds 8192 UTF-8 bytes\");\n }\n return actorKey;\n}\n\nexport type EditableArtifactCausalEntry = Readonly<{\n replicaId: EditableArtifactReplicaId;\n counter: number;\n}>;\n\n/** Sorted, duplicate-free semantic causality. Never substitute headSequence. */\nexport type EditableArtifactCausalFrontier = readonly EditableArtifactCausalEntry[];\n\nexport function editableArtifactCausalFrontier(\n entries: Iterable<EditableArtifactCausalEntry>,\n): EditableArtifactCausalFrontier {\n const seen = new Set<string>();\n const normalized = [...entries].map((entry) => {\n const replicaId = editableArtifactReplicaId(entry.replicaId);\n assertPositiveSafeInteger(entry.counter, `causal counter for ${replicaId}`);\n if (seen.has(replicaId)) throw new TypeError(`duplicate causal replica: ${replicaId}`);\n seen.add(replicaId);\n return Object.freeze({ replicaId, counter: entry.counter });\n });\n normalized.sort((left, right) => compareCodeUnits(left.replicaId, right.replicaId));\n return Object.freeze(normalized);\n}\n\nexport function causalCounter(\n frontier: EditableArtifactCausalFrontier,\n replicaId: EditableArtifactReplicaId,\n): number {\n return frontier.find((entry) => entry.replicaId === replicaId)?.counter ?? 0;\n}\n\nexport function causalFrontierDominates(\n candidate: EditableArtifactCausalFrontier,\n required: EditableArtifactCausalFrontier,\n): boolean {\n return required.every((entry) => causalCounter(candidate, entry.replicaId) >= entry.counter);\n}\n\nexport function causalFrontiersEqual(\n left: EditableArtifactCausalFrontier,\n right: EditableArtifactCausalFrontier,\n): boolean {\n return (\n left.length === right.length &&\n left.every(\n (entry, index) =>\n entry.replicaId === right[index]?.replicaId && entry.counter === right[index]?.counter,\n )\n );\n}\n\nexport function mergeCausalFrontiers(\n ...frontiers: readonly EditableArtifactCausalFrontier[]\n): EditableArtifactCausalFrontier {\n const counters = new Map<EditableArtifactReplicaId, number>();\n for (const frontier of frontiers) {\n for (const entry of frontier) {\n counters.set(entry.replicaId, Math.max(counters.get(entry.replicaId) ?? 0, entry.counter));\n }\n }\n return editableArtifactCausalFrontier(\n [...counters].map(([replicaId, counter]) => ({ replicaId, counter })),\n );\n}\n\nexport type EditableArtifactCausalDot = EditableArtifactCausalEntry;\n\ntype EditableArtifactCommon = Readonly<{\n scope: EditableArtifactScope;\n id: EditableArtifactId;\n title: string;\n lifecycle: EditableArtifactLifecycleState;\n /** Local policy revision atomically fenced with every durable write. */\n authorizationRevision: number;\n headSequence: number;\n stateHash: EditableArtifactStateHash;\n currentSnapshotId: EditableArtifactSnapshotId | null;\n createdAt: string;\n updatedAt: string;\n}>;\n\nexport type EditableArtifactSpreadsheet = EditableArtifactCommon &\n Readonly<{\n modality: \"spreadsheet\";\n causalFrontier: EditableArtifactCausalFrontier;\n }>;\n\nexport type EditableArtifactSerialized = EditableArtifactCommon &\n Readonly<{ modality: \"document\" | \"presentation\" }>;\n\nexport type EditableArtifact = EditableArtifactSpreadsheet | EditableArtifactSerialized;\n\nexport type CreateEditableArtifactRequest = Readonly<{\n idempotencyKey: EditableArtifactClientTransactionId;\n modality: EditableArtifactModality;\n title: string;\n}>;\n\nexport type EditableArtifactOriginOperation = \"create\" | \"import\";\nexport const EDITABLE_ARTIFACT_ORIGINAL_IMPORT_MAX_BYTES = 64 * 1024 * 1024;\n\n/**\n * Immutable, already-retained Office source for one imported artifact. The\n * object reference is infrastructure-owned; the remaining facts are bound into\n * the import idempotency hash and independently checked by the snapshot\n * verifier before publication.\n */\nexport type EditableArtifactOriginalImport = Readonly<{\n fileId: string;\n blobReference: string;\n byteSize: number;\n contentHash: EditableArtifactContentHash;\n mimeType:\n | \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n | \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n | \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n}>;\n\ntype ImportedEditableArtifactSnapshotRequest =\n PublishEditableArtifactSnapshotRequest extends infer Snapshot\n ? Snapshot extends PublishEditableArtifactSnapshotRequest\n ? Omit<Snapshot, \"snapshotId\" | \"verifiedAt\">\n : never\n : never;\n\nexport type ImportEditableArtifactRequest = Readonly<{\n idempotencyKey: EditableArtifactClientTransactionId;\n modality: EditableArtifactModality;\n title: string;\n originalImport: EditableArtifactOriginalImport;\n /** Snapshot identity and verification/publication timestamps remain server-owned. */\n snapshot: ImportedEditableArtifactSnapshotRequest;\n}>;\n\nexport type EditableArtifactCreationReceipt = Readonly<{\n receiptId: EditableArtifactReceiptId;\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n operationKind: EditableArtifactOriginOperation;\n authorityKey: string;\n idempotencyKey: EditableArtifactClientTransactionId;\n /** Canonical hash of client semantics only; generated genesis facts are result data. */\n requestHash: EditableArtifactRequestHash;\n genesisSnapshotId: EditableArtifactSnapshotId;\n createdAt: string;\n}>;\n\nexport type CreateEditableArtifactResult = Readonly<{\n artifact: EditableArtifact;\n genesisSnapshot: EditableArtifactSnapshotMetadata;\n creationReceipt: EditableArtifactCreationReceipt;\n replayed: boolean;\n}>;\n\n/** Exact decoded shared OGATX001 contract; never independently recanonicalized. */\nexport type EditableArtifactMutationIntent = ContractEditableArtifactMutationIntent;\n\n/** Server-validated/branded projection of the exact decoded shared contract. */\nexport type ValidatedEditableArtifactMutationIntent = Readonly<{\n envelopeVersion: typeof EDITABLE_ARTIFACT_INTENT_VERSION;\n protocolVersion: number;\n modelSchemaVersion: number;\n commandProtocolVersion: number;\n artifactId: EditableArtifactId;\n clientTransactionId: EditableArtifactClientTransactionId;\n replicaId: EditableArtifactReplicaId;\n /** One persisted counter is reserved per atomic local transaction. */\n replicaCounter: number;\n /** Null only for the first transaction authored by this replica. */\n previousLocalTransactionId: EditableArtifactClientTransactionId | null;\n observedHeadSequence: number;\n causalBase: EditableArtifactCausalFrontier;\n selectiveUndoOperationIds: readonly EditableArtifactOperationId[];\n /** Canonical client commands; only the authoritative kernel may decode them. */\n commandBytes: Uint8Array;\n}>;\n\nexport type ApplyEditableArtifactTransactionRequest = Readonly<{\n /** Exact owned canonical OGATX001 bytes. */\n intentBytes: Uint8Array;\n requestHash: EditableArtifactRequestHash;\n /**\n * Optional exact-head fence for clients that author from a bounded read.\n * Browser replicas deliberately omit it so spreadsheet CRDT operations can\n * merge. Agent edits always provide it and must re-inspect after a conflict.\n */\n expectedHead?: Readonly<{\n sequence: number;\n stateHash: EditableArtifactStateHash;\n }>;\n}>;\n\n/** Metadata indexed for authorship/selective undo; command data stays in OGACO. */\nexport type EditableArtifactKernelOperation = Readonly<{\n operationId: EditableArtifactOperationId;\n dot: EditableArtifactCausalDot;\n}>;\n\nexport type EditableArtifactOperationRecord = EditableArtifactKernelOperation &\n Readonly<{\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n serverTransactionId: EditableArtifactTransactionId;\n sequence: number;\n actorKey: string;\n createdAt: string;\n }>;\n\n/**\n * One exact canonical OGACO transaction. The opaque bytes are the sole\n * authoritative operation payload and are replayed atomically by the native\n * or WASM kernel. Core never decodes modality commands from this envelope.\n */\ntype EditableArtifactCommittedTransactionCommon = Readonly<{\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n modality: EditableArtifactModality;\n serverTransactionId: EditableArtifactTransactionId;\n requestHash: EditableArtifactRequestHash;\n sequenceStart: number;\n sequenceEnd: number;\n priorStateHash: EditableArtifactStateHash;\n stateHash: EditableArtifactStateHash;\n modelSchemaVersion: number;\n kernelVersion: string;\n committedTransactionBytes: Uint8Array;\n committedAt: string;\n}>;\n\nexport type EditableArtifactSpreadsheetCommittedTransactionRecord =\n EditableArtifactCommittedTransactionCommon &\n Readonly<{\n modality: \"spreadsheet\";\n dot: EditableArtifactCausalDot;\n resolvedCausalBase: EditableArtifactCausalFrontier;\n resultingCausalFrontier: EditableArtifactCausalFrontier;\n operationIds: readonly EditableArtifactOperationId[];\n operationProtocolVersion: number;\n }>;\n\nexport type EditableArtifactSerializedCommittedTransactionRecord =\n EditableArtifactCommittedTransactionCommon &\n Readonly<{\n modality: \"document\" | \"presentation\";\n commitProtocolVersion: number;\n priorNativeRevision: number;\n nativeRevision: number;\n commandCount: number;\n nativeReceiptBytes: Uint8Array;\n }>;\n\nexport type EditableArtifactCommittedTransactionRecord =\n | EditableArtifactSpreadsheetCommittedTransactionRecord\n | EditableArtifactSerializedCommittedTransactionRecord;\n\ntype EditableArtifactReceiptCommon = Readonly<{\n receiptId: EditableArtifactReceiptId;\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n modality: EditableArtifactModality;\n serverTransactionId: EditableArtifactTransactionId;\n clientTransactionId: EditableArtifactClientTransactionId;\n replicaId: EditableArtifactReplicaId;\n replicaCounter: number;\n previousLocalTransactionId: EditableArtifactClientTransactionId | null;\n requestHash: EditableArtifactRequestHash;\n /** Exact canonical bytes whose SHA-256 is requestHash. */\n intentBytes: Uint8Array;\n actorKey: string;\n sequenceStart: number;\n sequenceEnd: number;\n priorStateHash: EditableArtifactStateHash;\n stateHash: EditableArtifactStateHash;\n intentEnvelopeVersion: number;\n intentProtocolVersion: number;\n commandProtocolVersion: number;\n kernelVersion: string;\n modelSchemaVersion: number;\n committedAt: string;\n}>;\n\nexport type EditableArtifactSpreadsheetReceipt = EditableArtifactReceiptCommon &\n Readonly<{\n modality: \"spreadsheet\";\n causalBase: EditableArtifactCausalFrontier;\n resolvedCausalBase: EditableArtifactCausalFrontier;\n resultingCausalFrontier: EditableArtifactCausalFrontier;\n stateHash: EditableArtifactStateHash;\n operationCount: number;\n selectiveUndoOperationIds: readonly EditableArtifactOperationId[];\n operationProtocolVersion: number;\n }>;\n\nexport type EditableArtifactSerializedReceipt = EditableArtifactReceiptCommon &\n Readonly<{\n modality: \"document\" | \"presentation\";\n commitProtocolVersion: number;\n priorNativeRevision: number;\n nativeRevision: number;\n commandCount: number;\n }>;\n\nexport type EditableArtifactReceipt =\n | EditableArtifactSpreadsheetReceipt\n | EditableArtifactSerializedReceipt;\n\nexport type ApplyEditableArtifactTransactionResult = Readonly<{\n receipt: EditableArtifactReceipt;\n replayed: boolean;\n}>;\n\ntype EditableArtifactSnapshotMetadataCommon = Readonly<{\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n modality: EditableArtifactModality;\n snapshotId: EditableArtifactSnapshotId;\n blobReference: string;\n byteSize: number;\n contentHash: EditableArtifactContentHash;\n mimeType: \"application/vnd.opengeni.editable-artifact-snapshot\";\n coveredHeadSequence: number;\n stateHash: EditableArtifactStateHash;\n modelSchemaVersion: number;\n kernelVersion: string;\n verifiedAt: string;\n publishedAt: string;\n}>;\n\nexport type EditableArtifactSpreadsheetSnapshotMetadata = EditableArtifactSnapshotMetadataCommon &\n Readonly<{\n modality: \"spreadsheet\";\n coveredCausalFrontier: EditableArtifactCausalFrontier;\n operationProtocolVersion: number;\n crdtStateVersion: number;\n }>;\n\nexport type EditableArtifactSerializedSnapshotMetadata = EditableArtifactSnapshotMetadataCommon &\n Readonly<{\n modality: \"document\" | \"presentation\";\n nativeRevision: number;\n }>;\n\nexport type EditableArtifactSnapshotMetadata =\n | EditableArtifactSpreadsheetSnapshotMetadata\n | EditableArtifactSerializedSnapshotMetadata;\n\nexport type PublishEditableArtifactSnapshotRequest =\n EditableArtifactSnapshotMetadata extends infer Snapshot\n ? Snapshot extends EditableArtifactSnapshotMetadata\n ? Omit<Snapshot, \"scope\" | \"artifactId\" | \"publishedAt\">\n : never\n : never;\n\ntype EditableArtifactTransactionCommittedEventCommon = Readonly<{\n kind: \"transaction_committed\";\n schemaVersion: 1;\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n modality: EditableArtifactModality;\n serverTransactionId: EditableArtifactTransactionId;\n sequenceStart: number;\n sequenceEnd: number;\n stateHash: EditableArtifactStateHash;\n committedAt: string;\n}>;\n\nexport type EditableArtifactTransactionCommittedEvent =\n | (EditableArtifactTransactionCommittedEventCommon &\n Readonly<{ modality: \"spreadsheet\"; operationProtocolVersion: number }>)\n | (EditableArtifactTransactionCommittedEventCommon &\n Readonly<{\n modality: \"document\" | \"presentation\";\n commitProtocolVersion: number;\n }>);\n\ntype EditableArtifactSnapshotPublishedEventCommon = Readonly<{\n kind: \"snapshot_published\";\n schemaVersion: 1;\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n modality: EditableArtifactModality;\n snapshotId: EditableArtifactSnapshotId;\n coveredHeadSequence: number;\n stateHash: EditableArtifactStateHash;\n publishedAt: string;\n}>;\n\nexport type EditableArtifactSnapshotPublishedEvent =\n | (EditableArtifactSnapshotPublishedEventCommon &\n Readonly<{ modality: \"spreadsheet\"; operationProtocolVersion: number }>)\n | (EditableArtifactSnapshotPublishedEventCommon &\n Readonly<{ modality: \"document\" | \"presentation\" }>);\n\n/** Durable live fanout hint. Consumers gap-fill canonical transactions. */\nexport type EditableArtifactLiveEvent =\n | EditableArtifactTransactionCommittedEvent\n | EditableArtifactSnapshotPublishedEvent;\n\nexport type EditableArtifactOutboxRetryFailureCode =\n | \"broker_unavailable\"\n | \"broker_backpressure\"\n | \"publish_timeout\";\n\nexport type EditableArtifactOutboxDeadLetterFailureCode = \"invalid_hint\" | \"oversized_hint\";\n\nexport type EditableArtifactOutboxErrorCode =\n | EditableArtifactOutboxRetryFailureCode\n | EditableArtifactOutboxDeadLetterFailureCode;\n\nexport type EditableArtifactLiveOutboxRecord = Readonly<{\n outboxId: EditableArtifactOutboxId;\n event: EditableArtifactLiveEvent;\n state: \"pending\" | \"publishing\" | \"published\" | \"dead_lettered\";\n attemptCount: number;\n leaseOwner: string | null;\n leaseExpiresAt: string | null;\n nextAttemptAt: string;\n lastErrorCode: EditableArtifactOutboxErrorCode | null;\n publishedAt: string | null;\n deadLetteredAt: string | null;\n createdAt: string;\n}>;\n\nexport type EditableArtifactSequenceCheckpoint =\n | Readonly<{\n modality: \"spreadsheet\";\n headSequence: number;\n causalFrontier: EditableArtifactCausalFrontier;\n stateHash: EditableArtifactStateHash;\n }>\n | Readonly<{\n modality: \"document\" | \"presentation\";\n headSequence: number;\n nativeRevision: number;\n stateHash: EditableArtifactStateHash;\n }>;\n\nexport function assertNonnegativeSafeInteger(value: number, label: string): void {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new TypeError(`${label} must be a nonnegative safe integer`);\n }\n}\n\nexport function assertPositiveSafeInteger(value: number, label: string): void {\n if (!Number.isSafeInteger(value) || value < 1) {\n throw new TypeError(`${label} must be a positive safe integer`);\n }\n}\n\nexport function assertIsoTimestamp(value: string, label: string): void {\n if (\n !/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/.test(value) ||\n !Number.isFinite(Date.parse(value)) ||\n new Date(value).toISOString() !== value\n ) {\n throw new TypeError(`${label} must be a canonical UTC ISO timestamp`);\n }\n}\n\nexport function assertBoundedArtifactTitle(value: string): void {\n const bytes = new TextEncoder().encode(value).byteLength;\n if (bytes < 1 || bytes > 512 || value.trim() !== value || !isWellFormedPersistedText(value)) {\n throw new TypeError(\"artifact title must contain 1-512 UTF-8 bytes without padding\");\n }\n}\n\nexport function assertBoundedOpaqueReference(value: string, label: string): void {\n const bytes = new TextEncoder().encode(value).byteLength;\n if (bytes < 1 || bytes > 1024 || value.trim() !== value || !isWellFormedPersistedText(value)) {\n throw new TypeError(`${label} must contain 1-1024 UTF-8 bytes without padding`);\n }\n}\n\nexport function assertBoundedKernelVersion(value: unknown): asserts value is string {\n if (typeof value !== \"string\") {\n throw new TypeError(\"kernel version must be a string\");\n }\n const bytes = new TextEncoder().encode(value).byteLength;\n if (\n bytes < 1 ||\n bytes > EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES ||\n value.trim() !== value ||\n !isWellFormedPersistedText(value)\n ) {\n throw new TypeError(\n `kernel version must contain 1-${EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES} well-formed UTF-8 bytes without padding`,\n );\n }\n}\n\n/** Locale-independent ordering used by every canonical wire/hash projection. */\nexport function compareCodeUnits(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n","export type EditableArtifactDomainErrorCode =\n | \"invalid_request\"\n | \"not_found\"\n | \"forbidden\"\n | \"not_editable\"\n | \"idempotency_conflict\"\n | \"request_hash_mismatch\"\n | \"causal_future\"\n | \"causal_chain_conflict\"\n | \"stale_base\"\n | \"kernel_contract_violation\"\n | \"retryable_conflict\"\n | \"invalid_undo_target\"\n | \"snapshot_conflict\"\n | \"outbox_lease_conflict\";\n\nexport class EditableArtifactDomainError extends Error {\n constructor(\n readonly code: EditableArtifactDomainErrorCode,\n message: string,\n ) {\n super(message);\n this.name = \"EditableArtifactDomainError\";\n }\n}\n\nexport class EditableArtifactNotFoundError extends EditableArtifactDomainError {\n constructor() {\n super(\"not_found\", \"Editable artifact was not found in the requested tenant scope\");\n }\n}\n\nexport class EditableArtifactInvalidRequestError extends EditableArtifactDomainError {\n constructor(message: string) {\n super(\"invalid_request\", message);\n }\n}\n\nexport class EditableArtifactForbiddenError extends EditableArtifactDomainError {\n constructor(permission: string) {\n super(\"forbidden\", `Editable artifact permission denied: ${permission}`);\n }\n}\n\nexport class EditableArtifactNotEditableError extends EditableArtifactDomainError {\n constructor(state: string) {\n super(\"not_editable\", `Editable artifact cannot be changed while ${state}`);\n }\n}\n\nexport class EditableArtifactIdempotencyConflictError extends EditableArtifactDomainError {\n constructor() {\n super(\n \"idempotency_conflict\",\n \"Client transaction id was already committed with a different request hash\",\n );\n }\n}\n\nexport class EditableArtifactRequestHashMismatchError extends EditableArtifactDomainError {\n constructor() {\n super(\"request_hash_mismatch\", \"Request hash does not match the canonical transaction body\");\n }\n}\n\nexport class EditableArtifactCausalFutureError extends EditableArtifactDomainError {\n constructor() {\n super(\"causal_future\", \"Causal base references state beyond the authoritative frontier\");\n }\n}\n\nexport class EditableArtifactCausalChainError extends EditableArtifactDomainError {\n constructor(message: string) {\n super(\"causal_chain_conflict\", message);\n }\n}\n\nexport class EditableArtifactStaleBaseError extends EditableArtifactDomainError {\n constructor() {\n super(\"stale_base\", \"Editable artifact changed after this transaction observed its base\");\n }\n}\n\nexport class EditableArtifactKernelContractError extends EditableArtifactDomainError {\n constructor(message: string) {\n super(\"kernel_contract_violation\", message);\n }\n}\n\nexport class EditableArtifactRetryableConflictError extends EditableArtifactDomainError {\n constructor() {\n super(\n \"retryable_conflict\",\n \"Editable artifact changed repeatedly while applying the transaction; retry the same client transaction\",\n );\n }\n}\n\nexport class EditableArtifactUndoTargetError extends EditableArtifactDomainError {\n constructor(message: string) {\n super(\"invalid_undo_target\", message);\n }\n}\n\nexport class EditableArtifactSnapshotConflictError extends EditableArtifactDomainError {\n constructor(message: string) {\n super(\"snapshot_conflict\", message);\n }\n}\n\nexport class EditableArtifactOutboxLeaseConflictError extends EditableArtifactDomainError {\n constructor() {\n super(\"outbox_lease_conflict\", \"Live outbox record is not leased by this publisher\");\n }\n}\n","import { createHash } from \"node:crypto\";\nimport {\n assertEditableArtifactRequestHash,\n decodeEditableArtifactMutationIntent,\n hashEditableArtifactMutationIntentBytes,\n} from \"@opengeni/contracts/editable-artifacts\";\n\nimport { EditableArtifactRequestHashMismatchError } from \"./errors\";\nimport type { EditableArtifactMutationIntentCodecPort } from \"./ports\";\nimport {\n assertBoundedArtifactTitle,\n editableArtifactRequestHash,\n type CreateEditableArtifactRequest,\n type ImportEditableArtifactRequest,\n type EditableArtifactRequestHash,\n} from \"./types\";\n\nconst CREATE_HASH_DOMAIN = new TextEncoder().encode(\"OpenGeni editable artifact create\\0v1\\0\");\nconst IMPORT_HASH_DOMAIN = new TextEncoder().encode(\"OpenGeni editable artifact import\\0v1\\0\");\n\n/** Canonical identity of caller-controlled create semantics only. */\nexport function hashEditableArtifactCreateRequest(\n request: Pick<CreateEditableArtifactRequest, \"modality\" | \"title\">,\n): EditableArtifactRequestHash {\n if (\n request.modality !== \"spreadsheet\" &&\n request.modality !== \"presentation\" &&\n request.modality !== \"document\"\n ) {\n throw new TypeError(\"Unknown editable artifact modality\");\n }\n assertBoundedArtifactTitle(request.title);\n const digest = createHash(\"sha256\");\n digest.update(CREATE_HASH_DOMAIN);\n updateLengthFramedUtf8(digest, request.modality);\n updateLengthFramedUtf8(digest, request.title);\n return editableArtifactRequestHash(`sha256:${digest.digest(\"hex\")}`);\n}\n\n/** Canonical identity of one retained Office import and its verified snapshot facts. */\nexport function hashEditableArtifactImportRequest(\n request: Omit<ImportEditableArtifactRequest, \"idempotencyKey\">,\n): EditableArtifactRequestHash {\n assertImportRequestShape(request);\n const digest = createHash(\"sha256\");\n digest.update(IMPORT_HASH_DOMAIN);\n updateLengthFramedUtf8(digest, request.modality);\n updateLengthFramedUtf8(digest, request.title);\n updateLengthFramedUtf8(digest, request.originalImport.fileId);\n updateLengthFramedUtf8(digest, String(request.originalImport.byteSize));\n updateLengthFramedUtf8(digest, request.originalImport.contentHash);\n updateLengthFramedUtf8(digest, request.originalImport.mimeType);\n updateLengthFramedUtf8(digest, String(request.snapshot.byteSize));\n updateLengthFramedUtf8(digest, request.snapshot.contentHash);\n updateLengthFramedUtf8(digest, request.snapshot.stateHash);\n updateLengthFramedUtf8(digest, String(request.snapshot.modelSchemaVersion));\n updateLengthFramedUtf8(digest, request.snapshot.kernelVersion);\n if (request.snapshot.modality === \"spreadsheet\") {\n updateLengthFramedUtf8(digest, String(request.snapshot.operationProtocolVersion));\n updateLengthFramedUtf8(digest, String(request.snapshot.crdtStateVersion));\n updateLengthFramedUtf8(digest, String(request.snapshot.coveredCausalFrontier.length));\n for (const entry of request.snapshot.coveredCausalFrontier) {\n updateLengthFramedUtf8(digest, entry.replicaId);\n updateLengthFramedUtf8(digest, String(entry.counter));\n }\n } else {\n updateLengthFramedUtf8(digest, String(request.snapshot.nativeRevision));\n }\n return editableArtifactRequestHash(`sha256:${digest.digest(\"hex\")}`);\n}\n\nfunction assertImportRequestShape(\n request: Omit<ImportEditableArtifactRequest, \"idempotencyKey\">,\n): void {\n if (\n request.modality !== \"spreadsheet\" &&\n request.modality !== \"presentation\" &&\n request.modality !== \"document\"\n ) {\n throw new TypeError(\"Unknown editable artifact modality\");\n }\n assertBoundedArtifactTitle(request.title);\n if (request.snapshot.modality !== request.modality) {\n throw new TypeError(\"Imported snapshot modality does not match the Office source\");\n }\n const expectedMimeType =\n request.modality === \"spreadsheet\"\n ? \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n : request.modality === \"document\"\n ? \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n : \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n if (\n request.originalImport.mimeType !== expectedMimeType ||\n !/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/u.test(\n request.originalImport.fileId,\n ) ||\n !Number.isSafeInteger(request.originalImport.byteSize) ||\n request.originalImport.byteSize <= 0\n ) {\n throw new TypeError(\"Imported Office source facts are malformed\");\n }\n}\n\nfunction updateLengthFramedUtf8(digest: ReturnType<typeof createHash>, value: string): void {\n const bytes = Buffer.from(value, \"utf8\");\n const length = Buffer.allocUnsafe(4);\n length.writeUInt32BE(bytes.byteLength);\n digest.update(length);\n digest.update(bytes);\n}\n\n/** Production adapter over the one shared OGATX001 canonical wire codec. */\nexport class OgatxEditableArtifactMutationIntentCodec implements EditableArtifactMutationIntentCodecPort {\n async decodeAndVerify(\n input: Parameters<EditableArtifactMutationIntentCodecPort[\"decodeAndVerify\"]>[0],\n ): ReturnType<EditableArtifactMutationIntentCodecPort[\"decodeAndVerify\"]> {\n const intentBytes = input.intentBytes.slice();\n const requestHash = assertEditableArtifactRequestHash(input.requestHash);\n // Shared hashing parses first, so malformed/noncanonical bytes never gain\n // an application request identity. Decode returns an independently owned\n // command block; this adapter never re-encodes or JSON-canonicalizes.\n const actualHash = hashEditableArtifactMutationIntentBytes(intentBytes);\n if (actualHash !== requestHash) {\n throw new EditableArtifactRequestHashMismatchError();\n }\n return decodeEditableArtifactMutationIntent(intentBytes);\n }\n}\n\nexport const ogatxEditableArtifactMutationIntentCodec =\n new OgatxEditableArtifactMutationIntentCodec();\n","import { createHash } from \"node:crypto\";\nimport {\n BoundedObjectReadError,\n MAX_BOUNDED_OBJECT_CHUNK_BYTES,\n type BoundedObjectRead,\n type BoundedObjectReadPort,\n} from \"@opengeni/storage\";\nimport type { EditableArtifactSnapshotVerifierPort } from \"./ports\";\nimport { decodeEditableArtifactSerializedCommit } from \"@opengeni/contracts/editable-artifact-serialized-commit\";\nimport { EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES } from \"@opengeni/contracts/editable-artifacts\";\nimport {\n causalFrontiersEqual,\n editableArtifactCausalFrontier,\n editableArtifactContentHash,\n editableArtifactId,\n editableArtifactStateHash,\n type EditableArtifactCausalFrontier,\n type EditableArtifactContentHash,\n type EditableArtifactId,\n type EditableArtifactScope,\n type EditableArtifactModality,\n type EditableArtifactStateHash,\n type PublishEditableArtifactSnapshotRequest,\n} from \"./types\";\n\nexport const MAX_EDITABLE_ARTIFACT_SNAPSHOT_BYTES = EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES;\nexport const MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_BYTES = 256 * 1024 * 1024;\nexport const MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_SEGMENTS = 100_000;\nexport const MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_SEGMENT_BYTES = 8 * 1024 * 1024;\n\nexport type EditableArtifactSnapshotVerificationErrorCode =\n | \"cancelled\"\n | \"canonical_mismatch\"\n | \"content_hash_mismatch\"\n | \"content_type_mismatch\"\n | \"coverage_mismatch\"\n | \"frontier_mismatch\"\n | \"identity_mismatch\"\n | \"kernel_rejected\"\n | \"limit_exceeded\"\n | \"object_changed\"\n | \"object_missing\"\n | \"replay_invalid\"\n | \"state_hash_mismatch\"\n | \"storage_failure\"\n | \"truncated\"\n | \"version_mismatch\";\n\n/** Intentionally contains no provider diagnostic, reference, key, or URL. */\nexport class EditableArtifactSnapshotVerificationError extends Error {\n readonly code: EditableArtifactSnapshotVerificationErrorCode;\n\n constructor(code: EditableArtifactSnapshotVerificationErrorCode) {\n super(snapshotErrorMessage(code));\n this.name = \"EditableArtifactSnapshotVerificationError\";\n this.code = code;\n }\n}\n\ntype EditableArtifactSnapshotReplaySegmentCommon = Readonly<{\n sequenceStart: number;\n sequenceEnd: number;\n contentHash: EditableArtifactContentHash;\n bytes: Uint8Array;\n}>;\n\nexport type EditableArtifactSnapshotReplaySegment =\n | (EditableArtifactSnapshotReplaySegmentCommon &\n Readonly<{ modality: \"spreadsheet\"; operationProtocolVersion: number }>)\n | (EditableArtifactSnapshotReplaySegmentCommon &\n Readonly<{ modality: \"document\" | \"presentation\" }>);\n\ntype EditableArtifactSnapshotReplayPlanCommon = Readonly<{\n modality: EditableArtifactModality;\n /** Must equal the verified snapshot's coverage boundary. */\n baseHeadSequence: number;\n targetHeadSequence: number;\n targetStateHash: EditableArtifactStateHash;\n segments: AsyncIterable<EditableArtifactSnapshotReplaySegment>;\n}>;\n\nexport type EditableArtifactSnapshotReplayPlan =\n | (EditableArtifactSnapshotReplayPlanCommon &\n Readonly<{\n modality: \"spreadsheet\";\n targetCausalFrontier: EditableArtifactCausalFrontier;\n }>)\n | (EditableArtifactSnapshotReplayPlanCommon &\n Readonly<{\n modality: \"document\" | \"presentation\";\n targetNativeRevision: number;\n }>);\n\n/** Optional authoritative tail used to prove reconstruction to a later head. */\nexport interface EditableArtifactSnapshotReplayPlanPort {\n resolve(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n snapshot: PublishEditableArtifactSnapshotRequest;\n signal?: AbortSignal;\n }): Promise<EditableArtifactSnapshotReplayPlan | null>;\n}\n\ntype IsolatedEditableArtifactSnapshotKernelResultCommon = Readonly<{\n modality: EditableArtifactModality;\n /** True only when canonical re-encoding was byte-equivalent to the input. */\n canonicalReencodeVerified: true;\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n canonicalByteSize: number;\n canonicalContentHash: EditableArtifactContentHash;\n coveredHeadSequence: number;\n stateHash: EditableArtifactStateHash;\n modelSchemaVersion: number;\n kernelVersion: string;\n}>;\n\nexport type IsolatedEditableArtifactSnapshotKernelResult =\n | (IsolatedEditableArtifactSnapshotKernelResultCommon &\n Readonly<{\n modality: \"spreadsheet\";\n /** True only after decoding dots, vectors, tombstones, and undo metadata. */\n fullCrdtStateVerified: true;\n coveredCausalFrontier: EditableArtifactCausalFrontier;\n operationProtocolVersion: number;\n crdtStateVersion: number;\n replayedTarget?: Readonly<{\n headSequence: number;\n causalFrontier: EditableArtifactCausalFrontier;\n stateHash: EditableArtifactStateHash;\n }>;\n }>)\n | (IsolatedEditableArtifactSnapshotKernelResultCommon &\n Readonly<{\n modality: \"document\" | \"presentation\";\n nativeRevision: number;\n replayedTarget?: Readonly<{\n headSequence: number;\n nativeRevision: number;\n stateHash: EditableArtifactStateHash;\n }>;\n }>);\n\n/** Adapter to the exact no-network native kernel; JavaScript models are never authority. */\nexport interface IsolatedEditableArtifactSnapshotKernelPort {\n verifyAndReconstruct(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifactId;\n modality: EditableArtifactModality;\n /** Durable coverage/version metadata stays distinct from native revision. */\n expectedSnapshot: PublishEditableArtifactSnapshotRequest;\n snapshotChunks: AsyncIterable<Uint8Array>;\n expectedSnapshotByteSize: number;\n replayPlan?: EditableArtifactSnapshotReplayPlan;\n signal?: AbortSignal;\n }): Promise<IsolatedEditableArtifactSnapshotKernelResult>;\n}\n\nexport type ProductionEditableArtifactSnapshotVerifierDependencies = Readonly<{\n objects: BoundedObjectReadPort;\n kernel: IsolatedEditableArtifactSnapshotKernelPort;\n replayPlans?: EditableArtifactSnapshotReplayPlanPort;\n maxSnapshotBytes?: number;\n maxReplayBytes?: number;\n maxReplaySegments?: number;\n snapshotChunkBytes?: number;\n}>;\n\n/**\n * Production verifier for the existing domain port. Publication remains a\n * separate, short forward-only database CAS after this method succeeds.\n */\nexport class ProductionEditableArtifactSnapshotVerifier implements EditableArtifactSnapshotVerifierPort {\n readonly #dependencies: Readonly<{\n objects: BoundedObjectReadPort;\n kernel: IsolatedEditableArtifactSnapshotKernelPort;\n replayPlans: EditableArtifactSnapshotReplayPlanPort | undefined;\n maxSnapshotBytes: number;\n maxReplayBytes: number;\n maxReplaySegments: number;\n snapshotChunkBytes: number;\n }>;\n\n constructor(dependencies: ProductionEditableArtifactSnapshotVerifierDependencies) {\n const maxSnapshotBytes = dependencies.maxSnapshotBytes ?? MAX_EDITABLE_ARTIFACT_SNAPSHOT_BYTES;\n const maxReplayBytes = dependencies.maxReplayBytes ?? MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_BYTES;\n const maxReplaySegments =\n dependencies.maxReplaySegments ?? MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_SEGMENTS;\n const snapshotChunkBytes = dependencies.snapshotChunkBytes ?? 1024 * 1024;\n for (const value of [maxSnapshotBytes, maxReplayBytes, maxReplaySegments, snapshotChunkBytes]) {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new TypeError(\"Snapshot verifier limits must be positive safe integers\");\n }\n }\n if (\n maxSnapshotBytes > MAX_EDITABLE_ARTIFACT_SNAPSHOT_BYTES ||\n maxReplayBytes > MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_BYTES ||\n maxReplaySegments > MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_SEGMENTS ||\n snapshotChunkBytes > MAX_BOUNDED_OBJECT_CHUNK_BYTES\n ) {\n throw new TypeError(\"Snapshot verifier limits exceed absolute safety bounds\");\n }\n this.#dependencies = Object.freeze({\n objects: dependencies.objects,\n kernel: dependencies.kernel,\n replayPlans: dependencies.replayPlans,\n maxSnapshotBytes,\n maxReplayBytes,\n maxReplaySegments,\n snapshotChunkBytes,\n });\n }\n\n async verify(\n input: Parameters<EditableArtifactSnapshotVerifierPort[\"verify\"]>[0] & {\n signal?: AbortSignal;\n },\n ): Promise<void> {\n throwIfCancelled(input.signal);\n const scope = validateScope(input.scope);\n const artifactId = editableArtifactId(input.artifactId);\n const snapshot = input.snapshot;\n if (snapshot.byteSize > this.#dependencies.maxSnapshotBytes) {\n throw new EditableArtifactSnapshotVerificationError(\"limit_exceeded\");\n }\n\n let object: BoundedObjectRead | undefined;\n try {\n object = await this.#dependencies.objects.open({\n opaqueReference: snapshot.blobReference,\n maxBytes: this.#dependencies.maxSnapshotBytes,\n expectedByteSize: snapshot.byteSize,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n if (object.contentType !== undefined && object.contentType !== snapshot.mimeType) {\n throw new EditableArtifactSnapshotVerificationError(\"content_type_mismatch\");\n }\n\n const sourceDigest = createHash(\"sha256\");\n let sourceBytes = 0;\n let sourceFinished = false;\n const sourceChunks = meterSnapshotChunks(\n object.chunks({\n chunkBytes: this.#dependencies.snapshotChunkBytes,\n ...(input.signal ? { signal: input.signal } : {}),\n }),\n snapshot.byteSize,\n (chunk) => {\n sourceBytes += chunk.byteLength;\n sourceDigest.update(chunk);\n },\n () => {\n sourceFinished = true;\n },\n );\n\n const replayPlan = this.#dependencies.replayPlans\n ? await this.#dependencies.replayPlans.resolve({\n scope,\n artifactId,\n snapshot,\n ...(input.signal ? { signal: input.signal } : {}),\n })\n : null;\n const normalizedReplay = replayPlan\n ? validateReplayPlan(\n replayPlan,\n snapshot,\n this.#dependencies.maxReplayBytes,\n this.#dependencies.maxReplaySegments,\n input.signal,\n )\n : undefined;\n\n const result = await this.#dependencies.kernel.verifyAndReconstruct({\n scope,\n artifactId,\n modality: snapshot.modality,\n expectedSnapshot: snapshot,\n snapshotChunks: sourceChunks,\n expectedSnapshotByteSize: snapshot.byteSize,\n ...(normalizedReplay ? { replayPlan: normalizedReplay.replayPlan } : {}),\n ...(input.signal ? { signal: input.signal } : {}),\n });\n throwIfCancelled(input.signal);\n if (!sourceFinished || sourceBytes !== snapshot.byteSize) {\n throw new EditableArtifactSnapshotVerificationError(\"truncated\");\n }\n const sourceHash = editableArtifactContentHash(`sha256:${sourceDigest.digest(\"hex\")}`);\n if (sourceHash !== snapshot.contentHash) {\n throw new EditableArtifactSnapshotVerificationError(\"content_hash_mismatch\");\n }\n normalizedReplay?.assertConsumed();\n validateKernelResult(result, scope, artifactId, snapshot, normalizedReplay?.replayPlan);\n\n // The provider version is pinned during every range read and checked\n // once more after native reconstruction. The underlying opaque reference\n // is required to be immutable beyond this point.\n await object.assertUnchanged(input.signal);\n } catch (error) {\n throw mapVerificationFailure(error, input.signal);\n } finally {\n await object?.close();\n }\n }\n}\n\nfunction meterSnapshotChunks(\n chunks: AsyncIterable<Uint8Array>,\n expectedBytes: number,\n onChunk: (chunk: Uint8Array) => void,\n onFinished: () => void,\n): AsyncIterable<Uint8Array> {\n return {\n async *[Symbol.asyncIterator](): AsyncIterator<Uint8Array> {\n let bytes = 0;\n for await (const chunk of chunks) {\n if (!(chunk instanceof Uint8Array) || chunk.byteLength === 0) {\n throw new EditableArtifactSnapshotVerificationError(\"truncated\");\n }\n bytes += chunk.byteLength;\n if (bytes > expectedBytes) {\n throw new EditableArtifactSnapshotVerificationError(\"limit_exceeded\");\n }\n onChunk(chunk);\n yield chunk;\n }\n if (bytes !== expectedBytes) {\n throw new EditableArtifactSnapshotVerificationError(\"truncated\");\n }\n onFinished();\n },\n };\n}\n\nfunction validateReplayPlan(\n plan: EditableArtifactSnapshotReplayPlan,\n snapshot: PublishEditableArtifactSnapshotRequest,\n maxBytes: number,\n maxSegments: number,\n signal: AbortSignal | undefined,\n): Readonly<{\n replayPlan: NonNullable<\n Parameters<IsolatedEditableArtifactSnapshotKernelPort[\"verifyAndReconstruct\"]>[0][\"replayPlan\"]\n >;\n assertConsumed(): void;\n}> {\n if (\n plan.modality !== snapshot.modality ||\n !Number.isSafeInteger(plan.baseHeadSequence) ||\n !Number.isSafeInteger(plan.targetHeadSequence) ||\n plan.baseHeadSequence !== snapshot.coveredHeadSequence ||\n plan.targetHeadSequence < plan.baseHeadSequence\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n const targetStateHash = editableArtifactStateHash(plan.targetStateHash);\n if (\n plan.modality !== \"spreadsheet\" &&\n (!Number.isSafeInteger(plan.targetNativeRevision) || plan.targetNativeRevision < 0)\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n let consumed = false;\n const segments = meterReplaySegments(\n plan.segments,\n snapshot,\n plan,\n maxBytes,\n maxSegments,\n signal,\n () => {\n consumed = true;\n },\n );\n const replayPlan: EditableArtifactSnapshotReplayPlan =\n plan.modality === \"spreadsheet\"\n ? Object.freeze({\n modality: \"spreadsheet\",\n baseHeadSequence: plan.baseHeadSequence,\n targetHeadSequence: plan.targetHeadSequence,\n targetCausalFrontier: editableArtifactCausalFrontier(plan.targetCausalFrontier),\n targetStateHash,\n segments,\n })\n : Object.freeze({\n modality: plan.modality,\n baseHeadSequence: plan.baseHeadSequence,\n targetHeadSequence: plan.targetHeadSequence,\n targetNativeRevision: plan.targetNativeRevision,\n targetStateHash,\n segments,\n });\n return Object.freeze({\n replayPlan,\n assertConsumed() {\n if (!consumed) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n },\n });\n}\n\nfunction meterReplaySegments(\n segments: AsyncIterable<EditableArtifactSnapshotReplaySegment>,\n snapshot: PublishEditableArtifactSnapshotRequest,\n plan: EditableArtifactSnapshotReplayPlan,\n maxBytes: number,\n maxSegments: number,\n signal: AbortSignal | undefined,\n onFinished: () => void,\n): AsyncIterable<EditableArtifactSnapshotReplaySegment> {\n return {\n async *[Symbol.asyncIterator](): AsyncIterator<EditableArtifactSnapshotReplaySegment> {\n let expectedSequence = plan.baseHeadSequence + 1;\n let nativeRevision = snapshot.modality === \"spreadsheet\" ? null : snapshot.nativeRevision;\n let priorStateHash = snapshot.stateHash;\n let totalBytes = 0;\n let count = 0;\n for await (const segment of segments) {\n throwIfCancelled(signal);\n count += 1;\n if (count > maxSegments) {\n throw new EditableArtifactSnapshotVerificationError(\"limit_exceeded\");\n }\n if (\n !Number.isSafeInteger(segment.sequenceStart) ||\n !Number.isSafeInteger(segment.sequenceEnd) ||\n segment.sequenceStart !== expectedSequence ||\n segment.sequenceEnd < segment.sequenceStart ||\n segment.sequenceEnd > plan.targetHeadSequence ||\n segment.modality !== snapshot.modality ||\n !(segment.bytes instanceof Uint8Array) ||\n segment.bytes.byteLength < 1 ||\n segment.bytes.byteLength > MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_SEGMENT_BYTES\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n totalBytes += segment.bytes.byteLength;\n if (totalBytes > maxBytes) {\n throw new EditableArtifactSnapshotVerificationError(\"limit_exceeded\");\n }\n const hash = editableArtifactContentHash(\n `sha256:${createHash(\"sha256\").update(segment.bytes).digest(\"hex\")}`,\n );\n if (hash !== segment.contentHash) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n if (snapshot.modality === \"spreadsheet\") {\n if (\n segment.modality !== \"spreadsheet\" ||\n segment.operationProtocolVersion !== snapshot.operationProtocolVersion\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n } else {\n if (\n segment.modality !== snapshot.modality ||\n segment.sequenceEnd !== segment.sequenceStart\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n try {\n const summary = decodeEditableArtifactSerializedCommit(\n segment.bytes,\n snapshot.modality,\n );\n if (\n summary.parentHeadSequence !== segment.sequenceStart - 1 ||\n summary.resultHeadSequence !== segment.sequenceEnd ||\n summary.priorNativeRevision !== nativeRevision ||\n summary.priorStateHash !== priorStateHash\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n nativeRevision = summary.nativeReceipt.revision;\n priorStateHash = editableArtifactStateHash(summary.stateHash);\n } catch (error) {\n if (error instanceof EditableArtifactSnapshotVerificationError) throw error;\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n }\n expectedSequence = segment.sequenceEnd + 1;\n yield segment.modality === \"spreadsheet\"\n ? Object.freeze({\n ...segment,\n modality: \"spreadsheet\" as const,\n bytes: segment.bytes.slice(),\n })\n : Object.freeze({\n ...segment,\n modality: segment.modality,\n bytes: segment.bytes.slice(),\n });\n }\n if (expectedSequence !== plan.targetHeadSequence + 1) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n if (\n plan.modality !== \"spreadsheet\" &&\n (nativeRevision !== plan.targetNativeRevision || priorStateHash !== plan.targetStateHash)\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n onFinished();\n },\n };\n}\n\nfunction validateKernelResult(\n result: IsolatedEditableArtifactSnapshotKernelResult,\n scope: EditableArtifactScope,\n artifactId: EditableArtifactId,\n snapshot: PublishEditableArtifactSnapshotRequest,\n replayPlan:\n | NonNullable<\n Parameters<\n IsolatedEditableArtifactSnapshotKernelPort[\"verifyAndReconstruct\"]\n >[0][\"replayPlan\"]\n >\n | undefined,\n): void {\n if (\n result.canonicalReencodeVerified !== true ||\n result.modality !== snapshot.modality ||\n result.canonicalByteSize !== snapshot.byteSize ||\n result.canonicalContentHash !== snapshot.contentHash\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"canonical_mismatch\");\n }\n if (\n result.scope.accountId !== scope.accountId ||\n result.scope.workspaceId !== scope.workspaceId ||\n result.artifactId !== artifactId\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"identity_mismatch\");\n }\n if (result.coveredHeadSequence !== snapshot.coveredHeadSequence) {\n throw new EditableArtifactSnapshotVerificationError(\"coverage_mismatch\");\n }\n if (editableArtifactStateHash(result.stateHash) !== snapshot.stateHash) {\n throw new EditableArtifactSnapshotVerificationError(\"state_hash_mismatch\");\n }\n if (\n result.modelSchemaVersion !== snapshot.modelSchemaVersion ||\n result.kernelVersion !== snapshot.kernelVersion\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"version_mismatch\");\n }\n if (snapshot.modality === \"spreadsheet\") {\n if (\n result.modality !== \"spreadsheet\" ||\n result.fullCrdtStateVerified !== true ||\n !causalFrontiersEqual(\n editableArtifactCausalFrontier(result.coveredCausalFrontier),\n snapshot.coveredCausalFrontier,\n )\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"frontier_mismatch\");\n }\n if (\n result.operationProtocolVersion !== snapshot.operationProtocolVersion ||\n result.crdtStateVersion !== snapshot.crdtStateVersion\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"version_mismatch\");\n }\n if (replayPlan) {\n if (\n replayPlan.modality !== \"spreadsheet\" ||\n !result.replayedTarget ||\n result.replayedTarget.headSequence !== replayPlan.targetHeadSequence ||\n editableArtifactStateHash(result.replayedTarget.stateHash) !== replayPlan.targetStateHash ||\n !causalFrontiersEqual(\n editableArtifactCausalFrontier(result.replayedTarget.causalFrontier),\n replayPlan.targetCausalFrontier,\n )\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n } else if (result.replayedTarget !== undefined) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n return;\n }\n if (result.modality !== snapshot.modality || result.nativeRevision !== snapshot.nativeRevision) {\n throw new EditableArtifactSnapshotVerificationError(\"version_mismatch\");\n }\n if (replayPlan) {\n if (\n replayPlan.modality !== snapshot.modality ||\n !result.replayedTarget ||\n result.replayedTarget.headSequence !== replayPlan.targetHeadSequence ||\n result.replayedTarget.nativeRevision !== replayPlan.targetNativeRevision ||\n editableArtifactStateHash(result.replayedTarget.stateHash) !== replayPlan.targetStateHash\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n } else if (result.replayedTarget !== undefined) {\n throw new EditableArtifactSnapshotVerificationError(\"replay_invalid\");\n }\n}\n\nfunction validateScope(scope: EditableArtifactScope): EditableArtifactScope {\n if (\n typeof scope.accountId !== \"string\" ||\n scope.accountId.length < 1 ||\n typeof scope.workspaceId !== \"string\" ||\n scope.workspaceId.length < 1\n ) {\n throw new EditableArtifactSnapshotVerificationError(\"identity_mismatch\");\n }\n return Object.freeze({\n accountId: scope.accountId,\n workspaceId: scope.workspaceId,\n });\n}\n\nfunction throwIfCancelled(signal: AbortSignal | undefined): void {\n if (signal?.aborted) {\n throw new EditableArtifactSnapshotVerificationError(\"cancelled\");\n }\n}\n\nfunction mapVerificationFailure(\n error: unknown,\n signal: AbortSignal | undefined,\n): EditableArtifactSnapshotVerificationError {\n if (error instanceof EditableArtifactSnapshotVerificationError) return error;\n if (signal?.aborted) {\n return new EditableArtifactSnapshotVerificationError(\"cancelled\");\n }\n if (error instanceof BoundedObjectReadError) {\n switch (error.code) {\n case \"aborted\":\n return new EditableArtifactSnapshotVerificationError(\"cancelled\");\n case \"object_changed\":\n return new EditableArtifactSnapshotVerificationError(\"object_changed\");\n case \"object_missing\":\n return new EditableArtifactSnapshotVerificationError(\"object_missing\");\n case \"size_limit\":\n return new EditableArtifactSnapshotVerificationError(\"limit_exceeded\");\n case \"truncated\":\n return new EditableArtifactSnapshotVerificationError(\"truncated\");\n case \"backend_failure\":\n case \"invalid_request\":\n return new EditableArtifactSnapshotVerificationError(\"storage_failure\");\n }\n }\n return new EditableArtifactSnapshotVerificationError(\"kernel_rejected\");\n}\n\nfunction snapshotErrorMessage(code: EditableArtifactSnapshotVerificationErrorCode): string {\n switch (code) {\n case \"cancelled\":\n return \"Snapshot verification was cancelled\";\n case \"canonical_mismatch\":\n return \"Snapshot is not the canonical kernel encoding\";\n case \"content_hash_mismatch\":\n return \"Snapshot content digest does not match immutable metadata\";\n case \"content_type_mismatch\":\n return \"Snapshot content type does not match immutable metadata\";\n case \"coverage_mismatch\":\n return \"Snapshot coverage does not match embedded state\";\n case \"frontier_mismatch\":\n return \"Snapshot causal frontier does not match embedded state\";\n case \"identity_mismatch\":\n return \"Snapshot authority identity does not match embedded state\";\n case \"kernel_rejected\":\n return \"Authoritative kernel rejected the snapshot\";\n case \"limit_exceeded\":\n return \"Snapshot exceeds a verification limit\";\n case \"object_changed\":\n return \"Snapshot object changed during verification\";\n case \"object_missing\":\n return \"Snapshot object is unavailable\";\n case \"replay_invalid\":\n return \"Snapshot operation-tail reconstruction is invalid\";\n case \"state_hash_mismatch\":\n return \"Snapshot state hash does not match reconstructed state\";\n case \"storage_failure\":\n return \"Snapshot object could not be read safely\";\n case \"truncated\":\n return \"Snapshot object is truncated\";\n case \"version_mismatch\":\n return \"Snapshot kernel or schema versions are incompatible\";\n }\n}\n","import {\n EditableArtifactCausalChainError,\n EditableArtifactCausalFutureError,\n EditableArtifactForbiddenError,\n EditableArtifactIdempotencyConflictError,\n EditableArtifactInvalidRequestError,\n EditableArtifactKernelContractError,\n EditableArtifactNotEditableError,\n EditableArtifactNotFoundError,\n EditableArtifactRetryableConflictError,\n EditableArtifactSnapshotConflictError,\n EditableArtifactStaleBaseError,\n EditableArtifactUndoTargetError,\n} from \"./errors\";\nimport type {\n AuthoritativeEditableArtifactKernelPort,\n EditableArtifactAuthorizationPort,\n EditableArtifactClockPort,\n EditableArtifactCompactionPort,\n EditableArtifactGenesisPort,\n EditableArtifactKernelState,\n EditableArtifactMutationIntentCodecPort,\n EditableArtifactSnapshotVerifierPort,\n EditableArtifactStableIdFactoryPort,\n EditableArtifactStorePort,\n} from \"./ports\";\nimport { hashEditableArtifactCreateRequest, hashEditableArtifactImportRequest } from \"./hash\";\nimport {\n EDITABLE_ARTIFACT_COMMAND_MAX_BYTES,\n EDITABLE_ARTIFACT_INTENT_MAX_BYTES,\n EDITABLE_ARTIFACT_INTENT_MAX_UNDO_TARGETS,\n EDITABLE_ARTIFACT_INTENT_VERSION,\n EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES,\n} from \"@opengeni/contracts/editable-artifacts\";\nimport {\n COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n MAX_COMMITTED_TRANSACTION_BYTES,\n MAX_COMMITTED_TRANSACTION_OPERATIONS,\n decodeCommittedTransactionSummary,\n} from \"@opengeni/contracts/editable-artifact-committed-transaction\";\nimport {\n EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION,\n decodeEditableArtifactSerializedCommit,\n encodeEditableArtifactSerializedCommit,\n} from \"@opengeni/contracts/editable-artifact-serialized-commit\";\nimport { editableArtifactCodecFor } from \"@opengeni/contracts/editable-artifact-codec-registry\";\nimport { EditableArtifactSnapshotVerificationError } from \"./snapshot-verifier\";\nimport {\n assertBoundedArtifactTitle,\n assertBoundedKernelVersion,\n assertBoundedOpaqueReference,\n assertIsoTimestamp,\n assertNonnegativeSafeInteger,\n assertPositiveSafeInteger,\n causalCounter,\n causalFrontierDominates,\n causalFrontiersEqual,\n editableArtifactActorKey,\n editableArtifactCausalFrontier,\n editableArtifactClientTransactionId,\n compareCodeUnits,\n editableArtifactContentHash,\n editableArtifactId,\n editableArtifactOperationId,\n editableArtifactOutboxId,\n editableArtifactReceiptId,\n editableArtifactReplicaId,\n editableArtifactRequestHash,\n editableArtifactSnapshotId,\n editableArtifactScope,\n editableArtifactStateHash,\n editableArtifactTransactionId,\n EDITABLE_ARTIFACT_ORIGINAL_IMPORT_MAX_BYTES,\n mergeCausalFrontiers,\n type ApplyEditableArtifactTransactionRequest,\n type ApplyEditableArtifactTransactionResult,\n type CreateEditableArtifactRequest,\n type CreateEditableArtifactResult,\n type EditableArtifactOriginalImport,\n type ImportEditableArtifactRequest,\n type EditableArtifact,\n type EditableArtifactActor,\n type EditableArtifactCausalFrontier,\n type EditableArtifactClientTransactionId,\n type EditableArtifactKernelOperation,\n type EditableArtifactLiveOutboxRecord,\n type EditableArtifactMutationIntent,\n type EditableArtifactOperationRecord,\n type EditableArtifactPermission,\n type EditableArtifactReceipt,\n type EditableArtifactScope,\n type EditableArtifactSnapshotMetadata,\n type EditableArtifactSerialized,\n type EditableArtifactSerializedCommittedTransactionRecord,\n type EditableArtifactSerializedReceipt,\n type EditableArtifactSpreadsheet,\n type EditableArtifactSpreadsheetCommittedTransactionRecord,\n type EditableArtifactSpreadsheetReceipt,\n type PublishEditableArtifactSnapshotRequest,\n type ValidatedEditableArtifactMutationIntent,\n validateEditableArtifactActor,\n} from \"./types\";\n\nexport const EDITABLE_ARTIFACT_MAX_OPERATIONS_PER_TRANSACTION =\n MAX_COMMITTED_TRANSACTION_OPERATIONS;\nexport const EDITABLE_ARTIFACT_MAX_UNDO_TARGETS_PER_TRANSACTION = Math.min(\n EDITABLE_ARTIFACT_INTENT_MAX_UNDO_TARGETS,\n MAX_COMMITTED_TRANSACTION_OPERATIONS,\n);\nexport const EDITABLE_ARTIFACT_MAX_COMMAND_BYTES_PER_TRANSACTION =\n EDITABLE_ARTIFACT_COMMAND_MAX_BYTES;\nexport const EDITABLE_ARTIFACT_MAX_INTENT_BYTES_PER_TRANSACTION =\n EDITABLE_ARTIFACT_INTENT_MAX_BYTES;\nexport const EDITABLE_ARTIFACT_INTENT_PROTOCOL_VERSION = 1;\nexport const EDITABLE_ARTIFACT_MAX_OPERATION_BYTES_PER_TRANSACTION =\n MAX_COMMITTED_TRANSACTION_BYTES;\n/** Canonical OGACO envelope bound. Kept as an alias for existing consumers. */\nexport const EDITABLE_ARTIFACT_MAX_COMMITTED_TRANSACTION_BYTES =\n EDITABLE_ARTIFACT_MAX_OPERATION_BYTES_PER_TRANSACTION;\nexport const EDITABLE_ARTIFACT_OPERATION_PROTOCOL_VERSION = COMMITTED_TRANSACTION_PROTOCOL_VERSION;\nexport const EDITABLE_ARTIFACT_MAX_COMMIT_ATTEMPTS = 4;\n/** Compact well before hard replay ceilings so one maximum transaction cannot cross them. */\nexport const EDITABLE_ARTIFACT_COMPACTION_TRANSACTION_THRESHOLD = 1_024;\nexport const EDITABLE_ARTIFACT_COMPACTION_BYTE_THRESHOLD = 16 * 1024 * 1024;\n\nexport type EditableArtifactServiceDependencies = Readonly<{\n authorization: EditableArtifactAuthorizationPort;\n kernel: AuthoritativeEditableArtifactKernelPort;\n store: EditableArtifactStorePort;\n intentCodec: EditableArtifactMutationIntentCodecPort;\n clock: EditableArtifactClockPort;\n ids: EditableArtifactStableIdFactoryPort;\n snapshotVerifier: EditableArtifactSnapshotVerifierPort;\n genesis: EditableArtifactGenesisPort;\n compaction?: EditableArtifactCompactionPort;\n}>;\n\nexport class EditableArtifactService {\n private readonly inFlightCreations = new Map<\n string,\n Readonly<{\n requestHash: EditableArtifactReceipt[\"requestHash\"];\n promise: Promise<CreateEditableArtifactResult>;\n }>\n >();\n private readonly inFlightTransactions = new Map<\n string,\n Readonly<{\n requestHash: EditableArtifactReceipt[\"requestHash\"];\n promise: Promise<ApplyEditableArtifactTransactionResult>;\n }>\n >();\n private readonly inFlightImports = new Map<\n string,\n Readonly<{\n requestHash: EditableArtifactReceipt[\"requestHash\"];\n promise: Promise<CreateEditableArtifactResult>;\n }>\n >();\n private readonly inFlightCompactions = new Map<\n string,\n Promise<EditableArtifactSnapshotMetadata>\n >();\n\n constructor(private readonly dependencies: EditableArtifactServiceDependencies) {}\n\n async createArtifact(input: {\n scope: EditableArtifactScope;\n actor: EditableArtifactActor;\n request: CreateEditableArtifactRequest;\n signal?: AbortSignal;\n }): Promise<CreateEditableArtifactResult> {\n const scope = editableArtifactScope(input.scope);\n validateEditableArtifactActor(input.actor);\n const actor: EditableArtifactActor = Object.freeze({ ...input.actor });\n const request = normalizeCreateRequest(input.request);\n const requestHash = hashEditableArtifactCreateRequest(request);\n const authorityKey = editableArtifactActorKey(actor);\n const inFlightKey = creationInFlightKey(scope, \"create\", authorityKey, request.idempotencyKey);\n for (;;) {\n const inFlight = this.inFlightCreations.get(inFlightKey);\n if (inFlight) {\n if (inFlight.requestHash === requestHash) {\n const result = await inFlight.promise;\n return copyCreateResult(result, true);\n }\n try {\n await inFlight.promise;\n } catch {\n continue;\n }\n throw new EditableArtifactIdempotencyConflictError();\n }\n const promise = this.createArtifactOptimistically({\n scope,\n actor,\n authorityKey,\n request,\n requestHash,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n this.inFlightCreations.set(inFlightKey, { requestHash, promise });\n try {\n return await promise;\n } finally {\n if (this.inFlightCreations.get(inFlightKey)?.promise === promise) {\n this.inFlightCreations.delete(inFlightKey);\n }\n }\n }\n }\n\n private async createArtifactOptimistically(input: {\n scope: EditableArtifactScope;\n actor: EditableArtifactActor;\n authorityKey: string;\n request: CreateEditableArtifactRequest;\n requestHash: EditableArtifactReceipt[\"requestHash\"];\n signal?: AbortSignal;\n }): Promise<CreateEditableArtifactResult> {\n const { scope, actor, authorityKey, request, requestHash } = input;\n const artifactId = editableArtifactId(this.dependencies.ids.next(\"artifact\"));\n let authorizationRevision = await this.requirePermission({\n scope,\n artifactId,\n actor,\n permission: \"create\",\n });\n const existing = await this.dependencies.store.findArtifactCreation(\n scope,\n \"create\",\n authorityKey,\n request.idempotencyKey,\n );\n if (existing) {\n if (existing.creationReceipt.requestHash !== requestHash) {\n throw new EditableArtifactIdempotencyConflictError();\n }\n return copyCreateResult(existing, true);\n }\n const snapshotId = editableArtifactSnapshotId(this.dependencies.ids.next(\"snapshot\"));\n const candidate = validateSnapshotRequest(\n await this.dependencies.genesis.prepare({\n scope,\n artifactId,\n snapshotId,\n modality: request.modality,\n ...(input.signal ? { signal: input.signal } : {}),\n }),\n );\n if (\n candidate.snapshotId !== snapshotId ||\n candidate.modality !== request.modality ||\n candidate.coveredHeadSequence !== 0 ||\n (candidate.modality === \"spreadsheet\" && candidate.coveredCausalFrontier.length !== 0)\n ) {\n throw new EditableArtifactKernelContractError(\n \"Genesis snapshot must use its assigned identity and empty modality boundary\",\n );\n }\n await this.dependencies.snapshotVerifier.verify({\n scope,\n artifactId,\n actor,\n snapshot: candidate,\n });\n const publishedAt = canonicalNow(this.dependencies.clock);\n if (Date.parse(candidate.verifiedAt) > Date.parse(publishedAt)) {\n throw new EditableArtifactSnapshotConflictError(\n \"Snapshot verification time cannot be after publication\",\n );\n }\n const genesisSnapshot: EditableArtifactSnapshotMetadata = Object.freeze({\n ...candidate,\n scope,\n artifactId,\n publishedAt,\n });\n const receiptId = editableArtifactReceiptId(this.dependencies.ids.next(\"receipt\"));\n const outbox = snapshotOutboxRecord(\n editableArtifactOutboxId(this.dependencies.ids.next(\"outbox\")),\n genesisSnapshot,\n );\n for (let attempt = 1; attempt <= EDITABLE_ARTIFACT_MAX_COMMIT_ATTEMPTS; attempt += 1) {\n const outcome = await this.dependencies.store.createArtifact({\n scope,\n artifactId,\n authorizationActor: actor,\n receiptId,\n authorityKey,\n idempotencyKey: request.idempotencyKey,\n requestHash,\n operationKind: \"create\",\n expectedScopeAuthorizationRevision: authorizationRevision,\n initialArtifactAuthorizationRevision: authorizationRevision,\n modality: request.modality,\n title: request.title,\n createdBySubjectId: actor.subjectId,\n genesisSnapshot,\n outbox,\n });\n if (outcome.kind === \"result\") return outcome.value;\n authorizationRevision = await this.requirePermission({\n scope,\n artifactId,\n actor,\n permission: \"create\",\n });\n }\n throw new EditableArtifactRetryableConflictError();\n }\n\n /**\n * Publishes one verified Office import as the sequence-zero durable state.\n * The caller may name immutable source/snapshot objects, but neither becomes\n * authority until the native snapshot verifier and atomic store commit pass.\n */\n async importArtifact(input: {\n scope: EditableArtifactScope;\n actor: EditableArtifactActor;\n request: ImportEditableArtifactRequest;\n signal?: AbortSignal;\n }): Promise<CreateEditableArtifactResult> {\n const scope = editableArtifactScope(input.scope);\n validateEditableArtifactActor(input.actor);\n const actor: EditableArtifactActor = Object.freeze({ ...input.actor });\n const request = normalizeImportRequest(input.request);\n const requestHash = hashEditableArtifactImportRequest(request);\n const authorityKey = editableArtifactActorKey(actor);\n const inFlightKey = creationInFlightKey(scope, \"import\", authorityKey, request.idempotencyKey);\n for (;;) {\n const inFlight = this.inFlightImports.get(inFlightKey);\n if (inFlight) {\n if (inFlight.requestHash === requestHash) {\n return copyCreateResult(await inFlight.promise, true);\n }\n try {\n await inFlight.promise;\n } catch {\n continue;\n }\n throw new EditableArtifactIdempotencyConflictError();\n }\n const promise = this.importArtifactOptimistically({\n scope,\n actor,\n authorityKey,\n request,\n requestHash,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n this.inFlightImports.set(inFlightKey, { requestHash, promise });\n try {\n return await promise;\n } finally {\n if (this.inFlightImports.get(inFlightKey)?.promise === promise) {\n this.inFlightImports.delete(inFlightKey);\n }\n }\n }\n }\n\n private async importArtifactOptimistically(input: {\n scope: EditableArtifactScope;\n actor: EditableArtifactActor;\n authorityKey: string;\n request: ImportEditableArtifactRequest;\n requestHash: EditableArtifactReceipt[\"requestHash\"];\n signal?: AbortSignal;\n }): Promise<CreateEditableArtifactResult> {\n const { scope, actor, authorityKey, request, requestHash } = input;\n const artifactId = editableArtifactId(this.dependencies.ids.next(\"artifact\"));\n let authorizationRevision = await this.requirePermission({\n scope,\n artifactId,\n actor,\n permission: \"import\",\n });\n const existing = await this.dependencies.store.findArtifactCreation(\n scope,\n \"import\",\n authorityKey,\n request.idempotencyKey,\n );\n if (existing) {\n if (existing.creationReceipt.requestHash !== requestHash) {\n throw new EditableArtifactIdempotencyConflictError();\n }\n return copyCreateResult(existing, true);\n }\n const snapshotId = editableArtifactSnapshotId(this.dependencies.ids.next(\"snapshot\"));\n const verifiedAt = canonicalNow(this.dependencies.clock);\n const candidate = validateSnapshotRequest({\n ...request.snapshot,\n snapshotId,\n verifiedAt,\n } as PublishEditableArtifactSnapshotRequest);\n if (candidate.modality !== request.modality || candidate.coveredHeadSequence !== 0) {\n throw new EditableArtifactKernelContractError(\n \"Imported snapshot must use its assigned modality and sequence-zero boundary\",\n );\n }\n await this.dependencies.snapshotVerifier.verify({\n scope,\n artifactId,\n actor,\n snapshot: candidate,\n });\n const publishedAt = canonicalNow(this.dependencies.clock);\n if (Date.parse(candidate.verifiedAt) > Date.parse(publishedAt)) {\n throw new EditableArtifactSnapshotConflictError(\n \"Snapshot verification time cannot be after publication\",\n );\n }\n const genesisSnapshot: EditableArtifactSnapshotMetadata = Object.freeze({\n ...candidate,\n scope,\n artifactId,\n publishedAt,\n });\n const receiptId = editableArtifactReceiptId(this.dependencies.ids.next(\"receipt\"));\n const originalImport = Object.freeze({\n ...request.originalImport,\n blobRefId: this.dependencies.ids.next(\"blob\"),\n });\n const outbox = snapshotOutboxRecord(\n editableArtifactOutboxId(this.dependencies.ids.next(\"outbox\")),\n genesisSnapshot,\n );\n for (let attempt = 1; attempt <= EDITABLE_ARTIFACT_MAX_COMMIT_ATTEMPTS; attempt += 1) {\n const outcome = await this.dependencies.store.createArtifact({\n scope,\n artifactId,\n authorizationActor: actor,\n receiptId,\n authorityKey,\n idempotencyKey: request.idempotencyKey,\n requestHash,\n operationKind: \"import\",\n expectedScopeAuthorizationRevision: authorizationRevision,\n initialArtifactAuthorizationRevision: authorizationRevision,\n modality: request.modality,\n title: request.title,\n createdBySubjectId: actor.subjectId,\n genesisSnapshot,\n originalImport,\n outbox,\n });\n if (outcome.kind === \"result\") return outcome.value;\n authorizationRevision = await this.requirePermission({\n scope,\n artifactId,\n actor,\n permission: \"import\",\n });\n }\n throw new EditableArtifactRetryableConflictError();\n }\n\n async getArtifact(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n }): Promise<EditableArtifact> {\n const context = normalizeBoundaryContext(input);\n let authorizationRevision = await this.requirePermission({\n ...context,\n permission: \"read\",\n });\n for (let attempt = 1; attempt <= EDITABLE_ARTIFACT_MAX_COMMIT_ATTEMPTS; attempt += 1) {\n const outcome = await this.dependencies.store.readArtifactAtAuthorizationRevision(\n context.scope,\n context.artifactId,\n authorizationRevision,\n );\n if (outcome.kind === \"result\") {\n if (!outcome.artifact) throw new EditableArtifactNotFoundError();\n return outcome.artifact;\n }\n authorizationRevision = await this.requirePermission({\n ...context,\n permission: \"read\",\n });\n }\n throw new EditableArtifactRetryableConflictError();\n }\n\n /**\n * Resolve one actor-scoped durable mutation identity after an idempotency\n * collision. Normal edits do not pay this read; agent transports use it to\n * recover a committed receipt after a lost response without process state.\n */\n async findTransactionReceipt(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n clientTransactionId: EditableArtifactClientTransactionId;\n }): Promise<EditableArtifactReceipt | null> {\n const context = normalizeBoundaryContext(input);\n await this.requirePermission({ ...context, permission: \"edit\" });\n const result = await this.dependencies.store.readTransactionBasis(\n context.scope,\n context.artifactId,\n {\n actorKey: editableArtifactActorKey(context.actor),\n clientTransactionId: editableArtifactClientTransactionId(input.clientTransactionId),\n previousLocalTransactionId: null,\n selectiveUndoOperationIds: Object.freeze([]),\n },\n );\n return result.kind === \"existing\" ? copyReceipt(result.receipt) : null;\n }\n\n /**\n * Returns one detached, internally consistent reconstruction basis for an\n * authorized current-head read. Inspection and compaction deliberately share\n * this store primitive so neither can observe a metadata/snapshot/tail mix.\n */\n async readCurrentKernelState(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n }): Promise<EditableArtifactKernelState> {\n const context = normalizeBoundaryContext(input);\n let authorizationRevision = await this.requirePermission({\n ...context,\n permission: \"read\",\n });\n for (let attempt = 1; attempt <= EDITABLE_ARTIFACT_MAX_COMMIT_ATTEMPTS; attempt += 1) {\n const outcome = await this.dependencies.store.readCurrentKernelState(\n context.scope,\n context.artifactId,\n authorizationRevision,\n );\n if (outcome.kind === \"basis\") return outcome.state;\n authorizationRevision = await this.requirePermission({\n ...context,\n permission: \"read\",\n });\n }\n throw new EditableArtifactRetryableConflictError();\n }\n\n async applyTransaction(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n request: ApplyEditableArtifactTransactionRequest;\n }): Promise<ApplyEditableArtifactTransactionResult> {\n const context = normalizeBoundaryContext(input);\n const request = normalizeTransactionEnvelope(input.request);\n const authorizationRevision = await this.requirePermission({\n ...context,\n permission: \"edit\",\n });\n const intent = normalizeMutationIntent(\n await this.dependencies.intentCodec.decodeAndVerify({\n intentBytes: request.intentBytes.slice(),\n requestHash: request.requestHash,\n }),\n );\n if (intent.artifactId !== context.artifactId) {\n throw new EditableArtifactInvalidRequestError(\"Mutation intent is bound to another artifact\");\n }\n if (intent.replicaId !== context.actor.replicaId) {\n throw new EditableArtifactInvalidRequestError(\n \"Mutation intent is bound to another actor replica\",\n );\n }\n const intentBytes = request.intentBytes.slice();\n const actorKey = editableArtifactActorKey(context.actor);\n const inFlightKey = transactionInFlightKey(\n context.scope,\n context.artifactId,\n actorKey,\n intent.clientTransactionId,\n );\n for (;;) {\n const inFlight = this.inFlightTransactions.get(inFlightKey);\n if (inFlight) {\n if (inFlight.requestHash === request.requestHash) {\n const result = await inFlight.promise;\n return Object.freeze({\n receipt: copyReceipt(result.receipt),\n replayed: true,\n });\n }\n // Serialize a conflicting reuse behind the current candidate. If the\n // first commits, the normal durable idempotency check rejects this hash;\n // if it fails, the second remains free to become authoritative. Looping\n // lets simultaneous conflicts coalesce behind their next exact hash.\n try {\n await inFlight.promise;\n } catch {\n // Deliberately continue; the conflicting request has its own outcome.\n }\n continue;\n }\n\n const promise = this.applyTransactionOptimistically({\n context,\n actorKey,\n request,\n intent,\n intentBytes,\n authorizationRevision,\n });\n this.inFlightTransactions.set(inFlightKey, {\n requestHash: request.requestHash,\n promise,\n });\n try {\n return await promise;\n } finally {\n if (this.inFlightTransactions.get(inFlightKey)?.promise === promise) {\n this.inFlightTransactions.delete(inFlightKey);\n }\n }\n }\n }\n\n private async applyTransactionOptimistically(input: {\n context: Readonly<{\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n }>;\n actorKey: string;\n request: ApplyEditableArtifactTransactionRequest;\n intent: ValidatedEditableArtifactMutationIntent;\n intentBytes: Uint8Array;\n authorizationRevision: number;\n }): Promise<ApplyEditableArtifactTransactionResult> {\n const { context, actorKey, request, intent, intentBytes } = input;\n let authorizationRevision = input.authorizationRevision;\n for (let attempt = 1; attempt <= EDITABLE_ARTIFACT_MAX_COMMIT_ATTEMPTS; attempt += 1) {\n const basisRead = await this.dependencies.store.readTransactionBasis(\n context.scope,\n context.artifactId,\n {\n actorKey,\n clientTransactionId: intent.clientTransactionId,\n previousLocalTransactionId: intent.previousLocalTransactionId,\n selectiveUndoOperationIds: intent.selectiveUndoOperationIds,\n },\n );\n if (basisRead.kind === \"existing\") {\n if (basisRead.receipt.requestHash !== request.requestHash) {\n throw new EditableArtifactIdempotencyConflictError();\n }\n return Object.freeze({\n receipt: copyReceipt(basisRead.receipt),\n replayed: true,\n });\n }\n const basis = basisRead;\n\n const artifact = basis.artifact;\n if (artifact.authorizationRevision !== authorizationRevision) {\n authorizationRevision = await this.requirePermission({\n ...context,\n permission: \"edit\",\n });\n continue;\n }\n if (\n request.expectedHead &&\n (artifact.headSequence !== request.expectedHead.sequence ||\n artifact.stateHash !== request.expectedHead.stateHash)\n ) {\n throw new EditableArtifactStaleBaseError();\n }\n if (artifact.lifecycle !== \"active\") {\n throw new EditableArtifactNotEditableError(artifact.lifecycle);\n }\n if (this.dependencies.compaction && shouldCompactKernelState(basis.kernelState)) {\n await this.compactCurrentHeadWithPermission(context, \"edit\");\n // Snapshot publication changes replay coverage but not the head. Read a\n // fresh detached basis so the kernel never replays the old long tail.\n continue;\n }\n validateIntentCommands(artifact, intent);\n\n if (artifact.modality !== \"spreadsheet\") {\n if (intent.observedHeadSequence !== artifact.headSequence) {\n throw new EditableArtifactStaleBaseError();\n }\n if (intent.causalBase.length !== 0 || intent.selectiveUndoOperationIds.length !== 0) {\n throw new EditableArtifactInvalidRequestError(\n \"Serialized artifacts do not accept CRDT causality or selective undo\",\n );\n }\n validateSerializedPredecessor(\n basis.predecessor,\n context.actor.replicaId,\n intent,\n artifact.modality,\n );\n if (\n basis.undoTargets.length !== 0 ||\n basis.kernelState.modality !== artifact.modality ||\n basis.kernelState.artifact.modality !== artifact.modality\n ) {\n throw new Error(\"Editable artifact store returned a cross-modality serialized basis\");\n }\n const priorNativeRevision = serializedBasisNativeRevision(basis.kernelState, artifact);\n const kernelResult = await this.dependencies.kernel.applyTransaction({\n modality: artifact.modality,\n state: basis.kernelState,\n actor: context.actor,\n intent,\n requestHash: request.requestHash,\n intentBytes: intentBytes.slice(),\n });\n const serverTransactionId = editableArtifactTransactionId(\n this.dependencies.ids.next(\"transaction\"),\n );\n let normalizedKernel: ReturnType<typeof validateSerializedKernelResult>;\n try {\n normalizedKernel = validateSerializedKernelResult({\n artifact,\n intent,\n intentBytes,\n requestHash: request.requestHash,\n serverTransactionId,\n priorNativeRevision,\n result: kernelResult,\n });\n } catch (error) {\n if (error instanceof EditableArtifactKernelContractError) throw error;\n throw new EditableArtifactKernelContractError(\n `Authoritative kernel returned malformed serialized data: ${\n error instanceof Error ? error.message : \"unknown contract error\"\n }`,\n );\n }\n const committedAt = canonicalNow(this.dependencies.clock);\n const sequence = artifact.headSequence + 1;\n assertPositiveSafeInteger(sequence, \"serialized resulting head sequence\");\n const committedTransaction: EditableArtifactSerializedCommittedTransactionRecord =\n Object.freeze({\n scope: artifact.scope,\n artifactId: artifact.id,\n modality: artifact.modality,\n serverTransactionId,\n requestHash: request.requestHash,\n sequenceStart: sequence,\n sequenceEnd: sequence,\n priorStateHash: artifact.stateHash,\n stateHash: normalizedKernel.stateHash,\n commitProtocolVersion: EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION,\n priorNativeRevision,\n nativeRevision: normalizedKernel.nativeRevision,\n commandCount: normalizedKernel.commandCount,\n nativeReceiptBytes: normalizedKernel.nativeReceiptBytes.slice(),\n modelSchemaVersion: normalizedKernel.modelSchemaVersion,\n kernelVersion: normalizedKernel.kernelVersion,\n committedTransactionBytes: normalizedKernel.committedTransactionBytes.slice(),\n committedAt,\n });\n const receipt: EditableArtifactSerializedReceipt = Object.freeze({\n receiptId: editableArtifactReceiptId(this.dependencies.ids.next(\"receipt\")),\n scope: artifact.scope,\n artifactId: artifact.id,\n modality: artifact.modality,\n serverTransactionId,\n clientTransactionId: intent.clientTransactionId,\n replicaId: context.actor.replicaId,\n replicaCounter: intent.replicaCounter,\n previousLocalTransactionId: intent.previousLocalTransactionId,\n requestHash: request.requestHash,\n intentBytes: intentBytes.slice(),\n actorKey,\n sequenceStart: sequence,\n sequenceEnd: sequence,\n priorStateHash: artifact.stateHash,\n stateHash: normalizedKernel.stateHash,\n intentEnvelopeVersion: intent.envelopeVersion,\n intentProtocolVersion: intent.protocolVersion,\n commandProtocolVersion: intent.commandProtocolVersion,\n kernelVersion: normalizedKernel.kernelVersion,\n modelSchemaVersion: normalizedKernel.modelSchemaVersion,\n commitProtocolVersion: EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION,\n priorNativeRevision,\n nativeRevision: normalizedKernel.nativeRevision,\n commandCount: normalizedKernel.commandCount,\n committedAt,\n });\n const outbox = transactionOutboxRecord(\n editableArtifactOutboxId(this.dependencies.ids.next(\"outbox\")),\n receipt,\n );\n const commit = await this.dependencies.store.tryCommitAppliedTransaction({\n scope: context.scope,\n artifactId: context.artifactId,\n expectedLifecycle: \"active\",\n expectedAuthorizationRevision: authorizationRevision,\n authorizationActor: context.actor,\n expectedHeadSequence: artifact.headSequence,\n actorKey,\n clientTransactionId: intent.clientTransactionId,\n requestHash: request.requestHash,\n expectedPredecessor: basis.predecessor\n ? {\n receiptId: basis.predecessor.receiptId,\n serverTransactionId: basis.predecessor.serverTransactionId,\n actorKey: basis.predecessor.actorKey,\n clientTransactionId: basis.predecessor.clientTransactionId,\n replicaId: basis.predecessor.replicaId,\n replicaCounter: basis.predecessor.replicaCounter,\n }\n : null,\n expectedUnclaimedUndoTargets: Object.freeze([]),\n serverTransactionId,\n receipt,\n committedTransaction,\n operations: Object.freeze([]),\n outbox,\n });\n if (commit.kind === \"committed\") {\n return Object.freeze({\n receipt: copyReceipt(commit.receipt),\n replayed: false,\n });\n }\n if (commit.kind === \"replayed\") {\n if (commit.receipt.requestHash !== request.requestHash) {\n throw new EditableArtifactIdempotencyConflictError();\n }\n return Object.freeze({\n receipt: copyReceipt(commit.receipt),\n replayed: true,\n });\n }\n // Re-read before any new kernel call. A changed serialized head fails\n // exact-base validation above instead of being merged or rebased.\n continue;\n }\n\n if (\n basis.kernelState.modality !== \"spreadsheet\" ||\n basis.kernelState.artifact.modality !== \"spreadsheet\"\n ) {\n throw new Error(\"Editable artifact store returned a cross-modality spreadsheet basis\");\n }\n if (intent.observedHeadSequence > artifact.headSequence) {\n throw new EditableArtifactCausalFutureError();\n }\n if (!causalFrontierDominates(artifact.causalFrontier, intent.causalBase)) {\n throw new EditableArtifactCausalFutureError();\n }\n\n let resolvedCausalBase = intent.causalBase;\n if (intent.previousLocalTransactionId === null) {\n if (intent.replicaCounter !== 1) {\n throw new EditableArtifactCausalChainError(\n \"Only a replica's first transaction may omit its local predecessor\",\n );\n }\n } else {\n const predecessor = basis.predecessor;\n if (!predecessor) {\n throw new EditableArtifactCausalChainError(\n \"Previous local transaction is not committed yet\",\n );\n }\n if (\n predecessor.modality !== \"spreadsheet\" ||\n predecessor.replicaId !== context.actor.replicaId ||\n predecessor.replicaCounter + 1 !== intent.replicaCounter\n ) {\n throw new EditableArtifactCausalChainError(\n \"Previous local transaction does not match this replica counter chain\",\n );\n }\n resolvedCausalBase = mergeCausalFrontiers(\n intent.causalBase,\n predecessor.resolvedCausalBase,\n editableArtifactCausalFrontier([\n {\n replicaId: predecessor.replicaId,\n counter: predecessor.replicaCounter,\n },\n ]),\n );\n }\n if (\n intent.replicaCounter !==\n causalCounter(artifact.causalFrontier, context.actor.replicaId) + 1\n ) {\n throw new EditableArtifactCausalChainError(\n \"Replica counter does not immediately advance the authoritative frontier\",\n );\n }\n if (!causalFrontierDominates(artifact.causalFrontier, resolvedCausalBase)) {\n throw new EditableArtifactCausalFutureError();\n }\n\n if (basis.undoTargets.length !== intent.selectiveUndoOperationIds.length) {\n throw new Error(\"Editable artifact store returned a malformed transaction undo basis\");\n }\n const resolvedUndoTargets: EditableArtifactOperationRecord[] = [];\n for (const [index, operationId] of intent.selectiveUndoOperationIds.entries()) {\n const undoBasis = basis.undoTargets[index];\n if (!undoBasis || undoBasis.operationId !== operationId) {\n throw new Error(\"Editable artifact store returned a malformed transaction undo basis\");\n }\n const operation = undoBasis.operation;\n if (!operation) {\n throw new EditableArtifactUndoTargetError(`Unknown undo target: ${operationId}`);\n }\n if (operation.actorKey !== actorKey) {\n throw new EditableArtifactUndoTargetError(\n `Selective undo may target only operations authored by the same authority: ${operationId}`,\n );\n }\n if (undoBasis.claimedBy) {\n throw new EditableArtifactUndoTargetError(\n `Operation was already selectively undone: ${operationId}`,\n );\n }\n if (causalCounter(resolvedCausalBase, operation.dot.replicaId) < operation.dot.counter) {\n throw new EditableArtifactUndoTargetError(\n `Selective undo target is not present in the transaction's causal base: ${operationId}`,\n );\n }\n resolvedUndoTargets.push(operation);\n }\n Object.freeze(resolvedUndoTargets);\n\n // This is intentionally outside the store's read and write transactions.\n const kernelResult = await this.dependencies.kernel.applyTransaction({\n modality: \"spreadsheet\",\n state: basis.kernelState,\n actor: context.actor,\n intent,\n requestHash: request.requestHash,\n intentBytes: intentBytes.slice(),\n resolvedCausalBase,\n resolvedUndoTargets,\n });\n let normalizedKernel: ReturnType<typeof validateKernelResult>;\n try {\n normalizedKernel = validateKernelResult(\n artifact,\n context.actor,\n intent,\n resolvedCausalBase,\n kernelResult,\n );\n } catch (error) {\n if (error instanceof EditableArtifactKernelContractError) throw error;\n throw new EditableArtifactKernelContractError(\n `Authoritative kernel returned malformed data: ${\n error instanceof Error ? error.message : \"unknown contract error\"\n }`,\n );\n }\n\n const committedAt = canonicalNow(this.dependencies.clock);\n const serverTransactionId = normalizedKernel.serverTransactionId;\n const sequenceStart = artifact.headSequence + 1;\n const sequenceEnd = artifact.headSequence + normalizedKernel.operationIds.length;\n assertNonnegativeSafeInteger(sequenceEnd, \"resulting head sequence\");\n const operations: EditableArtifactOperationRecord[] = normalizedKernel.operationIds.map(\n (operationId, index) =>\n Object.freeze({\n scope: artifact.scope,\n artifactId: artifact.id,\n serverTransactionId,\n sequence: sequenceStart + index,\n actorKey,\n createdAt: committedAt,\n operationId,\n dot: normalizedKernel.dot,\n }),\n );\n const committedTransaction: EditableArtifactSpreadsheetCommittedTransactionRecord =\n Object.freeze({\n scope: artifact.scope,\n artifactId: artifact.id,\n modality: \"spreadsheet\",\n serverTransactionId,\n requestHash: request.requestHash,\n sequenceStart,\n sequenceEnd,\n priorStateHash: normalizedKernel.priorStateHash,\n stateHash: normalizedKernel.stateHash,\n dot: normalizedKernel.dot,\n resolvedCausalBase,\n resultingCausalFrontier: normalizedKernel.resultingCausalFrontier,\n operationIds: normalizedKernel.operationIds,\n operationProtocolVersion: normalizedKernel.operationProtocolVersion,\n modelSchemaVersion: normalizedKernel.modelSchemaVersion,\n kernelVersion: normalizedKernel.kernelVersion,\n committedTransactionBytes: normalizedKernel.committedTransactionBytes.slice(),\n committedAt,\n });\n const receipt = Object.freeze({\n receiptId: editableArtifactReceiptId(this.dependencies.ids.next(\"receipt\")),\n scope: artifact.scope,\n artifactId: artifact.id,\n modality: \"spreadsheet\",\n serverTransactionId,\n clientTransactionId: intent.clientTransactionId,\n replicaId: context.actor.replicaId,\n replicaCounter: intent.replicaCounter,\n previousLocalTransactionId: intent.previousLocalTransactionId,\n requestHash: request.requestHash,\n intentBytes: intentBytes.slice(),\n actorKey,\n sequenceStart,\n sequenceEnd,\n priorStateHash: normalizedKernel.priorStateHash,\n causalBase: intent.causalBase,\n resolvedCausalBase,\n resultingCausalFrontier: normalizedKernel.resultingCausalFrontier,\n stateHash: normalizedKernel.stateHash,\n operationCount: operations.length,\n selectiveUndoOperationIds: intent.selectiveUndoOperationIds,\n intentEnvelopeVersion: intent.envelopeVersion,\n intentProtocolVersion: intent.protocolVersion,\n commandProtocolVersion: intent.commandProtocolVersion,\n kernelVersion: normalizedKernel.kernelVersion,\n modelSchemaVersion: normalizedKernel.modelSchemaVersion,\n operationProtocolVersion: normalizedKernel.operationProtocolVersion,\n committedAt,\n } as const satisfies EditableArtifactSpreadsheetReceipt);\n const outbox = transactionOutboxRecord(\n editableArtifactOutboxId(this.dependencies.ids.next(\"outbox\")),\n receipt,\n );\n const commit = await this.dependencies.store.tryCommitAppliedTransaction({\n scope: context.scope,\n artifactId: context.artifactId,\n expectedLifecycle: \"active\",\n expectedAuthorizationRevision: authorizationRevision,\n authorizationActor: context.actor,\n expectedHeadSequence: artifact.headSequence,\n actorKey,\n clientTransactionId: intent.clientTransactionId,\n requestHash: request.requestHash,\n expectedPredecessor: basis.predecessor\n ? {\n receiptId: basis.predecessor.receiptId,\n serverTransactionId: basis.predecessor.serverTransactionId,\n actorKey: basis.predecessor.actorKey,\n clientTransactionId: basis.predecessor.clientTransactionId,\n replicaId: basis.predecessor.replicaId,\n replicaCounter: basis.predecessor.replicaCounter,\n }\n : null,\n expectedUnclaimedUndoTargets: intent.selectiveUndoOperationIds,\n serverTransactionId,\n receipt,\n committedTransaction,\n operations,\n outbox,\n });\n if (commit.kind === \"committed\") {\n return Object.freeze({\n receipt: copyReceipt(commit.receipt),\n replayed: false,\n });\n }\n if (commit.kind === \"replayed\") {\n if (commit.receipt.requestHash !== request.requestHash) {\n throw new EditableArtifactIdempotencyConflictError();\n }\n return Object.freeze({\n receipt: copyReceipt(commit.receipt),\n replayed: true,\n });\n }\n // A newer head invalidates every derived value above. Re-read and rerun\n // from scratch; never patch or partially reuse speculative kernel output.\n }\n throw new EditableArtifactRetryableConflictError();\n }\n\n async compactCurrentHead(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n signal?: AbortSignal;\n }): Promise<EditableArtifactSnapshotMetadata> {\n return await this.compactCurrentHeadWithPermission(input, \"read\");\n }\n\n private async compactCurrentHeadWithPermission(\n input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n signal?: AbortSignal;\n },\n authorizationPermission: \"read\" | \"edit\",\n ): Promise<EditableArtifactSnapshotMetadata> {\n if (!this.dependencies.compaction) {\n throw new Error(\"Editable artifact snapshot compaction is not configured\");\n }\n const context = normalizeBoundaryContext(input);\n // Coalescing is only a compute optimization. Every caller must cross its\n // own authorization boundary before it may observe another caller's result.\n const authorizationRevision = await this.requirePermission({\n ...context,\n permission: authorizationPermission,\n });\n const key = compactionInFlightKey(\n context.scope,\n context.artifactId,\n context.actor,\n authorizationPermission,\n );\n const existing = this.inFlightCompactions.get(key);\n if (existing) return await existing;\n const promise = this.compactCurrentHeadOnce({\n ...context,\n authorizationRevision,\n authorizationPermission,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n this.inFlightCompactions.set(key, promise);\n try {\n return await promise;\n } finally {\n if (this.inFlightCompactions.get(key) === promise) this.inFlightCompactions.delete(key);\n }\n }\n\n private async compactCurrentHeadOnce(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n authorizationRevision: number;\n authorizationPermission: \"read\" | \"edit\";\n signal?: AbortSignal;\n }): Promise<EditableArtifactSnapshotMetadata> {\n const compaction = this.dependencies.compaction;\n if (!compaction) throw new Error(\"Editable artifact snapshot compaction is not configured\");\n let authorizationRevision = input.authorizationRevision;\n for (let attempt = 1; attempt <= EDITABLE_ARTIFACT_MAX_COMMIT_ATTEMPTS; attempt += 1) {\n if (input.signal?.aborted) {\n throw new EditableArtifactSnapshotVerificationError(\"cancelled\");\n }\n const basis = await this.dependencies.store.readCurrentKernelState(\n input.scope,\n input.artifactId,\n authorizationRevision,\n );\n if (basis.kind === \"authorization_stale\") {\n authorizationRevision = await this.requirePermission({\n ...input,\n permission: input.authorizationPermission,\n });\n continue;\n }\n const current = basis.state.snapshot;\n if (current && current.coveredHeadSequence === basis.state.artifact.headSequence) {\n return current;\n }\n const candidate = await compaction.prepare({\n scope: input.scope,\n artifactId: input.artifactId,\n snapshotId: editableArtifactSnapshotId(this.dependencies.ids.next(\"snapshot\")),\n state: basis.state,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n await this.dependencies.snapshotVerifier.verify({ ...input, snapshot: candidate });\n try {\n const published = await this.commitVerifiedSnapshotCandidate({\n context: input,\n candidate,\n authorizationRevision,\n authorizationPermission: input.authorizationPermission,\n requireCurrentHead: true,\n });\n return published.snapshot;\n } catch (error) {\n // The durable head advanced while this exact candidate was outside the\n // lock. Reread authority; deterministic candidate failures are not retried.\n if (error instanceof EditableArtifactCompactionRaceError) continue;\n throw error;\n }\n }\n throw new EditableArtifactRetryableConflictError();\n }\n\n async publishVerifiedSnapshot(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n snapshot: PublishEditableArtifactSnapshotRequest;\n }): Promise<{\n snapshot: EditableArtifactSnapshotMetadata;\n replayed: boolean;\n }> {\n const context = normalizeBoundaryContext(input);\n const candidate = validateSnapshotRequest(input.snapshot);\n const authorizationRevision = await this.requirePermission({\n ...context,\n permission: \"manage\",\n });\n await this.dependencies.snapshotVerifier.verify({\n ...context,\n snapshot: candidate,\n });\n return await this.commitVerifiedSnapshotCandidate({\n context,\n candidate,\n authorizationRevision,\n authorizationPermission: \"manage\",\n requireCurrentHead: false,\n });\n }\n\n private async commitVerifiedSnapshotCandidate(input: {\n context: Readonly<{\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n }>;\n candidate: PublishEditableArtifactSnapshotRequest;\n authorizationRevision: number;\n authorizationPermission: \"manage\" | \"read\" | \"edit\";\n requireCurrentHead: boolean;\n }): Promise<{\n snapshot: EditableArtifactSnapshotMetadata;\n replayed: boolean;\n }> {\n const { context, candidate, authorizationPermission } = input;\n let authorizationRevision = input.authorizationRevision;\n for (let attempt = 1; attempt <= EDITABLE_ARTIFACT_MAX_COMMIT_ATTEMPTS; attempt += 1) {\n const outcome = await this.dependencies.store.withSnapshotPublicationLock(\n context.scope,\n context.artifactId,\n async (unitOfWork) => {\n const artifact = unitOfWork.artifact();\n if (artifact.modality !== candidate.modality) {\n throw new EditableArtifactSnapshotConflictError(\n \"Snapshot modality does not match the durable artifact\",\n );\n }\n if (input.requireCurrentHead && candidate.coveredHeadSequence !== artifact.headSequence) {\n throw new EditableArtifactCompactionRaceError(\n \"Compaction candidate no longer covers the current durable head\",\n );\n }\n if (artifact.authorizationRevision !== authorizationRevision) {\n return Object.freeze({ kind: \"authorization_stale\" as const });\n }\n const existing = await unitOfWork.findSnapshot(candidate.snapshotId);\n if (existing) {\n if (!sameSnapshotRequest(existing, candidate)) {\n throw new EditableArtifactSnapshotConflictError(\n \"Snapshot id was already published with different immutable metadata\",\n );\n }\n return Object.freeze({\n kind: \"result\" as const,\n value: Object.freeze({ snapshot: existing, replayed: true }),\n });\n }\n const checkpoint = await unitOfWork.checkpoint(candidate.coveredHeadSequence);\n if (\n !checkpoint ||\n checkpoint.modality !== candidate.modality ||\n checkpoint.stateHash !== candidate.stateHash ||\n (candidate.modality === \"spreadsheet\" &&\n (checkpoint.modality !== \"spreadsheet\" ||\n !causalFrontiersEqual(\n checkpoint.causalFrontier,\n candidate.coveredCausalFrontier,\n ))) ||\n (candidate.modality !== \"spreadsheet\" &&\n (checkpoint.modality === \"spreadsheet\" ||\n checkpoint.nativeRevision !== candidate.nativeRevision))\n ) {\n throw new EditableArtifactSnapshotConflictError(\n \"Snapshot coverage does not match an authoritative transaction boundary\",\n );\n }\n if (artifact.currentSnapshotId) {\n const current = await unitOfWork.findSnapshot(artifact.currentSnapshotId);\n if (!current) {\n throw new EditableArtifactSnapshotConflictError(\n \"Current snapshot metadata is missing\",\n );\n }\n if (candidate.coveredHeadSequence <= current.coveredHeadSequence) {\n if (\n input.requireCurrentHead &&\n current.coveredHeadSequence === artifact.headSequence\n ) {\n return Object.freeze({\n kind: \"result\" as const,\n value: Object.freeze({ snapshot: current, replayed: true }),\n });\n }\n throw new EditableArtifactSnapshotConflictError(\n \"Snapshot publication must advance coverage\",\n );\n }\n }\n const publishedAt = canonicalNow(this.dependencies.clock);\n const snapshot: EditableArtifactSnapshotMetadata = Object.freeze({\n ...candidate,\n scope: artifact.scope,\n artifactId: artifact.id,\n publishedAt,\n });\n const outbox = snapshotOutboxRecord(\n editableArtifactOutboxId(this.dependencies.ids.next(\"outbox\")),\n snapshot,\n );\n const publication = await unitOfWork.commitSnapshot({\n expectedCurrentSnapshotId: artifact.currentSnapshotId,\n expectedAuthorizationRevision: authorizationRevision,\n authorizationActor: context.actor,\n authorizationPermission,\n snapshot,\n outbox,\n });\n if (publication.kind === \"authorization_stale\") {\n return Object.freeze({ kind: \"authorization_stale\" as const });\n }\n return Object.freeze({\n kind: \"result\" as const,\n value: Object.freeze({ snapshot, replayed: false }),\n });\n },\n );\n if (outcome.kind === \"result\") return outcome.value;\n authorizationRevision = await this.requirePermission({\n ...context,\n permission: authorizationPermission,\n });\n }\n throw new EditableArtifactRetryableConflictError();\n }\n\n private async requirePermission(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n permission: EditableArtifactPermission;\n }): Promise<number> {\n const decision = await this.dependencies.authorization.authorize({\n scope: input.scope,\n artifactId: input.artifactId,\n actor: input.actor,\n permission: input.permission,\n });\n if (typeof decision.allowed !== \"boolean\") {\n throw new TypeError(\"Artifact authorization decision is malformed\");\n }\n assertPositiveSafeInteger(decision.revision, \"artifact authorization revision\");\n if (!decision.allowed) {\n throw new EditableArtifactForbiddenError(input.permission);\n }\n return decision.revision;\n }\n}\n\nfunction creationInFlightKey(\n scope: EditableArtifactScope,\n operationKind: \"create\" | \"import\",\n actorKey: string,\n idempotencyKey: string,\n): string {\n return JSON.stringify([\n scope.accountId,\n scope.workspaceId,\n operationKind,\n actorKey,\n idempotencyKey,\n ]);\n}\n\nfunction transactionInFlightKey(\n scope: EditableArtifactScope,\n artifactId: EditableArtifact[\"id\"],\n actorKey: string,\n clientTransactionId: EditableArtifactReceipt[\"clientTransactionId\"],\n): string {\n return JSON.stringify([\n scope.accountId,\n scope.workspaceId,\n artifactId,\n actorKey,\n clientTransactionId,\n ]);\n}\n\nfunction compactionInFlightKey(\n scope: EditableArtifactScope,\n artifactId: EditableArtifact[\"id\"],\n actor: EditableArtifactActor,\n permission: \"read\" | \"edit\",\n): string {\n return JSON.stringify([\n scope.accountId,\n scope.workspaceId,\n artifactId,\n editableArtifactActorKey(actor),\n permission,\n ]);\n}\n\nfunction shouldCompactKernelState(state: EditableArtifactKernelState): boolean {\n return (\n state.tailTransactionCount >= EDITABLE_ARTIFACT_COMPACTION_TRANSACTION_THRESHOLD ||\n state.tailByteSize >= EDITABLE_ARTIFACT_COMPACTION_BYTE_THRESHOLD\n );\n}\n\nclass EditableArtifactCompactionRaceError extends EditableArtifactSnapshotConflictError {}\n\nfunction normalizeCreateRequest(\n input: CreateEditableArtifactRequest,\n): CreateEditableArtifactRequest {\n const record = plainDataRecord(input, \"artifact create request\");\n rejectUnknownKeys(record, [\"idempotencyKey\", \"modality\", \"title\"], \"artifact create request\");\n const rawIdempotencyKey = dataProperty(record, \"idempotencyKey\", true);\n const modality = dataProperty(record, \"modality\", true);\n const title = dataProperty(record, \"title\", true);\n if (\n typeof rawIdempotencyKey !== \"string\" ||\n typeof title !== \"string\" ||\n (modality !== \"spreadsheet\" && modality !== \"presentation\" && modality !== \"document\")\n ) {\n throw new TypeError(\"Artifact create request fields are malformed\");\n }\n assertBoundedArtifactTitle(title);\n return Object.freeze({\n idempotencyKey: editableArtifactClientTransactionId(rawIdempotencyKey),\n modality,\n title,\n });\n}\n\nfunction normalizeImportRequest(\n input: ImportEditableArtifactRequest,\n): ImportEditableArtifactRequest {\n const record = plainDataRecord(input, \"artifact import request\");\n rejectUnknownKeys(\n record,\n [\"idempotencyKey\", \"modality\", \"title\", \"originalImport\", \"snapshot\"],\n \"artifact import request\",\n );\n const rawIdempotencyKey = dataProperty(record, \"idempotencyKey\", true);\n const modality = dataProperty(record, \"modality\", true);\n const title = dataProperty(record, \"title\", true);\n const rawOriginalImport = dataProperty(record, \"originalImport\", true);\n const rawSnapshot = dataProperty(record, \"snapshot\", true);\n if (\n typeof rawIdempotencyKey !== \"string\" ||\n typeof title !== \"string\" ||\n (modality !== \"spreadsheet\" && modality !== \"presentation\" && modality !== \"document\")\n ) {\n throw new TypeError(\"Artifact import request fields are malformed\");\n }\n assertBoundedArtifactTitle(title);\n const originalImport = normalizeOriginalImport(rawOriginalImport, modality);\n const snapshotRecord = plainDataRecord(rawSnapshot, \"artifact import snapshot\");\n if (\n Reflect.ownKeys(snapshotRecord).includes(\"snapshotId\") ||\n Reflect.ownKeys(snapshotRecord).includes(\"verifiedAt\")\n ) {\n throw new TypeError(\"Artifact import snapshot identity and timestamps are server-assigned\");\n }\n const candidate = Object.fromEntries(\n Reflect.ownKeys(snapshotRecord).map((key) => {\n if (typeof key !== \"string\") throw new TypeError(\"Artifact import snapshot has symbols\");\n return [key, dataProperty(snapshotRecord, key, true)];\n }),\n );\n const normalized = validateSnapshotRequest({\n ...candidate,\n snapshotId: \"00000000000000000000000000000001\",\n verifiedAt: \"1970-01-01T00:00:00.000Z\",\n } as PublishEditableArtifactSnapshotRequest);\n if (normalized.modality !== modality || normalized.coveredHeadSequence !== 0) {\n throw new TypeError(\"Artifact import snapshot boundary is malformed\");\n }\n const {\n snapshotId: _serverAssignedSnapshotId,\n verifiedAt: _serverAssignedVerifiedAt,\n ...snapshot\n } = normalized;\n return Object.freeze({\n idempotencyKey: editableArtifactClientTransactionId(rawIdempotencyKey),\n modality,\n title,\n originalImport,\n snapshot: Object.freeze(snapshot) as ImportEditableArtifactRequest[\"snapshot\"],\n });\n}\n\nfunction normalizeOriginalImport(\n input: unknown,\n modality: ImportEditableArtifactRequest[\"modality\"],\n): EditableArtifactOriginalImport {\n const record = plainDataRecord(input, \"artifact original import\");\n rejectUnknownKeys(\n record,\n [\"fileId\", \"blobReference\", \"byteSize\", \"contentHash\", \"mimeType\"],\n \"artifact original import\",\n );\n const fileId = dataProperty(record, \"fileId\", true);\n const blobReference = dataProperty(record, \"blobReference\", true);\n const byteSize = dataProperty(record, \"byteSize\", true);\n const contentHash = dataProperty(record, \"contentHash\", true);\n const mimeType = dataProperty(record, \"mimeType\", true);\n const expectedMimeType =\n modality === \"spreadsheet\"\n ? \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n : modality === \"document\"\n ? \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n : \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n if (\n typeof fileId !== \"string\" ||\n !/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/u.test(fileId) ||\n typeof blobReference !== \"string\" ||\n typeof byteSize !== \"number\" ||\n typeof contentHash !== \"string\" ||\n mimeType !== expectedMimeType\n ) {\n throw new TypeError(\"Artifact original import fields are malformed\");\n }\n assertBoundedOpaqueReference(blobReference, \"original import blob reference\");\n assertPositiveSafeInteger(byteSize, \"original import byte size\");\n if (byteSize > EDITABLE_ARTIFACT_ORIGINAL_IMPORT_MAX_BYTES) {\n throw new TypeError(\"Artifact original import exceeds its byte limit\");\n }\n return Object.freeze({\n fileId,\n blobReference,\n byteSize,\n contentHash: editableArtifactContentHash(contentHash),\n mimeType: expectedMimeType,\n });\n}\n\nfunction copyReceipt(receipt: EditableArtifactReceipt): EditableArtifactReceipt {\n if (receipt.modality !== \"spreadsheet\") {\n return Object.freeze({\n ...receipt,\n scope: Object.freeze({ ...receipt.scope }),\n intentBytes: receipt.intentBytes.slice(),\n });\n }\n return Object.freeze({\n ...receipt,\n scope: Object.freeze({ ...receipt.scope }),\n intentBytes: receipt.intentBytes.slice(),\n causalBase: editableArtifactCausalFrontier(receipt.causalBase),\n resolvedCausalBase: editableArtifactCausalFrontier(receipt.resolvedCausalBase),\n resultingCausalFrontier: editableArtifactCausalFrontier(receipt.resultingCausalFrontier),\n selectiveUndoOperationIds: Object.freeze([...receipt.selectiveUndoOperationIds]),\n });\n}\n\nfunction copyCreateResult(\n result: CreateEditableArtifactResult,\n replayed = result.replayed,\n): CreateEditableArtifactResult {\n const artifact =\n result.artifact.modality === \"spreadsheet\"\n ? Object.freeze({\n ...result.artifact,\n scope: Object.freeze({ ...result.artifact.scope }),\n causalFrontier: editableArtifactCausalFrontier(result.artifact.causalFrontier),\n })\n : Object.freeze({\n ...result.artifact,\n scope: Object.freeze({ ...result.artifact.scope }),\n });\n const genesisSnapshot =\n result.genesisSnapshot.modality === \"spreadsheet\"\n ? Object.freeze({\n ...result.genesisSnapshot,\n scope: Object.freeze({ ...result.genesisSnapshot.scope }),\n coveredCausalFrontier: editableArtifactCausalFrontier(\n result.genesisSnapshot.coveredCausalFrontier,\n ),\n })\n : Object.freeze({\n ...result.genesisSnapshot,\n scope: Object.freeze({ ...result.genesisSnapshot.scope }),\n });\n return Object.freeze({\n artifact,\n genesisSnapshot,\n creationReceipt: Object.freeze({\n ...result.creationReceipt,\n scope: Object.freeze({ ...result.creationReceipt.scope }),\n }),\n replayed,\n });\n}\n\nfunction normalizeBoundaryContext(input: {\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n}): Readonly<{\n scope: EditableArtifactScope;\n artifactId: EditableArtifact[\"id\"];\n actor: EditableArtifactActor;\n}> {\n const scope = editableArtifactScope(input.scope);\n const artifactId = editableArtifactId(input.artifactId);\n validateEditableArtifactActor(input.actor);\n const actor: EditableArtifactActor = Object.freeze({ ...input.actor });\n return Object.freeze({ scope, artifactId, actor });\n}\n\nfunction normalizeTransactionEnvelope(\n request: ApplyEditableArtifactTransactionRequest,\n): ApplyEditableArtifactTransactionRequest {\n const record = plainDataRecord(request, \"mutation envelope\");\n rejectUnknownKeys(record, [\"intentBytes\", \"requestHash\", \"expectedHead\"], \"mutation envelope\");\n const rawIntentBytes = dataProperty(record, \"intentBytes\", true);\n const rawRequestHash = dataProperty(record, \"requestHash\", true);\n const rawExpectedHead = dataProperty(record, \"expectedHead\", false);\n if (!(rawIntentBytes instanceof Uint8Array)) {\n throw new TypeError(\"Mutation intent bytes must be a Uint8Array\");\n }\n if (\n rawIntentBytes.byteLength < 1 ||\n rawIntentBytes.byteLength > EDITABLE_ARTIFACT_MAX_INTENT_BYTES_PER_TRANSACTION\n ) {\n throw new TypeError(\"Mutation intent bytes exceed the bounded envelope size\");\n }\n if (typeof rawRequestHash !== \"string\") {\n throw new TypeError(\"Mutation request hash must be a string\");\n }\n let expectedHead: ApplyEditableArtifactTransactionRequest[\"expectedHead\"];\n if (rawExpectedHead !== undefined) {\n const expected = plainDataRecord(rawExpectedHead, \"mutation expected head\");\n rejectUnknownKeys(expected, [\"sequence\", \"stateHash\"], \"mutation expected head\");\n const sequence = dataProperty(expected, \"sequence\", true);\n const stateHash = dataProperty(expected, \"stateHash\", true);\n if (typeof sequence !== \"number\" || typeof stateHash !== \"string\") {\n throw new TypeError(\"Mutation expected head fields are malformed\");\n }\n assertNonnegativeSafeInteger(sequence, \"mutation expected head sequence\");\n expectedHead = Object.freeze({\n sequence,\n stateHash: editableArtifactStateHash(stateHash),\n });\n }\n return Object.freeze({\n intentBytes: rawIntentBytes.slice(),\n requestHash: editableArtifactRequestHash(rawRequestHash),\n ...(expectedHead ? { expectedHead } : {}),\n });\n}\n\nfunction normalizeMutationIntent(\n input: EditableArtifactMutationIntent,\n): ValidatedEditableArtifactMutationIntent {\n const record = plainDataRecord(input, \"decoded mutation intent\");\n rejectUnknownKeys(\n record,\n [\n \"envelopeVersion\",\n \"protocolVersion\",\n \"modelSchemaVersion\",\n \"commandProtocolVersion\",\n \"artifactId\",\n \"clientTransactionId\",\n \"replicaId\",\n \"replicaCounter\",\n \"previousLocalTransactionId\",\n \"observedHeadSequence\",\n \"causalBase\",\n \"selectiveUndoOperationIds\",\n \"commandBytes\",\n ],\n \"decoded mutation intent\",\n );\n const envelopeVersion = dataProperty(record, \"envelopeVersion\", true);\n const protocolVersion = dataProperty(record, \"protocolVersion\", true);\n const modelSchemaVersion = dataProperty(record, \"modelSchemaVersion\", true);\n const commandProtocolVersion = dataProperty(record, \"commandProtocolVersion\", true);\n const rawArtifactId = dataProperty(record, \"artifactId\", true);\n const rawClientTransactionId = dataProperty(record, \"clientTransactionId\", true);\n const rawReplicaId = dataProperty(record, \"replicaId\", true);\n const replicaCounter = dataProperty(record, \"replicaCounter\", true);\n const rawPreviousLocalTransactionId = dataProperty(record, \"previousLocalTransactionId\", true);\n const observedHeadSequence = dataProperty(record, \"observedHeadSequence\", true);\n const rawCausalBase = dataProperty(record, \"causalBase\", true);\n const rawUndoTargets = dataProperty(record, \"selectiveUndoOperationIds\", true);\n const rawCommandBytes = dataProperty(record, \"commandBytes\", true);\n if (\n typeof envelopeVersion !== \"number\" ||\n typeof protocolVersion !== \"number\" ||\n typeof modelSchemaVersion !== \"number\" ||\n typeof commandProtocolVersion !== \"number\" ||\n typeof rawArtifactId !== \"string\" ||\n typeof rawClientTransactionId !== \"string\" ||\n typeof rawReplicaId !== \"string\" ||\n typeof replicaCounter !== \"number\" ||\n (rawPreviousLocalTransactionId !== null && typeof rawPreviousLocalTransactionId !== \"string\") ||\n typeof observedHeadSequence !== \"number\" ||\n !Array.isArray(rawCausalBase) ||\n !Array.isArray(rawUndoTargets) ||\n !(rawCommandBytes instanceof Uint8Array)\n ) {\n throw new TypeError(\"Decoded mutation intent fields are malformed\");\n }\n if (envelopeVersion !== EDITABLE_ARTIFACT_INTENT_VERSION) {\n throw new TypeError(\"Mutation intent envelope version is unsupported\");\n }\n assertPositiveSafeInteger(protocolVersion, \"intent protocol version\");\n if (protocolVersion !== EDITABLE_ARTIFACT_INTENT_PROTOCOL_VERSION) {\n throw new TypeError(\"Mutation intent protocol version is unsupported\");\n }\n assertPositiveSafeInteger(modelSchemaVersion, \"intent model schema version\");\n assertPositiveSafeInteger(commandProtocolVersion, \"intent command protocol version\");\n const artifactId = editableArtifactId(rawArtifactId);\n const clientTransactionId = editableArtifactClientTransactionId(rawClientTransactionId);\n const replicaId = editableArtifactReplicaId(rawReplicaId);\n assertPositiveSafeInteger(replicaCounter, \"replica counter\");\n const previousLocalTransactionId =\n rawPreviousLocalTransactionId === null\n ? null\n : editableArtifactClientTransactionId(rawPreviousLocalTransactionId);\n if (previousLocalTransactionId === clientTransactionId) {\n throw new TypeError(\"A transaction cannot name itself as its local predecessor\");\n }\n assertNonnegativeSafeInteger(observedHeadSequence, \"observed head sequence\");\n const causalBase = editableArtifactCausalFrontier(\n rawCausalBase as EditableArtifactCausalFrontier,\n );\n if (rawUndoTargets.length > EDITABLE_ARTIFACT_MAX_UNDO_TARGETS_PER_TRANSACTION) {\n throw new TypeError(\"Editable artifact transaction has too many undo targets\");\n }\n const selectiveUndoOperationIds = rawUndoTargets.map((target) => {\n if (typeof target !== \"string\") {\n throw new TypeError(\"Selective undo target must be a string\");\n }\n return editableArtifactOperationId(target);\n });\n if (new Set(selectiveUndoOperationIds).size !== selectiveUndoOperationIds.length) {\n throw new TypeError(\"Selective undo targets must be unique\");\n }\n const sortedUndoTargets = [...selectiveUndoOperationIds].sort(compareCodeUnits);\n if (sortedUndoTargets.some((target, index) => target !== selectiveUndoOperationIds[index])) {\n throw new TypeError(\"Selective undo targets must be canonically sorted\");\n }\n if (\n rawCommandBytes.byteLength < 1 ||\n rawCommandBytes.byteLength > EDITABLE_ARTIFACT_MAX_COMMAND_BYTES_PER_TRANSACTION\n ) {\n throw new TypeError(\"Mutation command bytes exceed the transaction limit\");\n }\n return Object.freeze({\n envelopeVersion,\n protocolVersion,\n modelSchemaVersion,\n commandProtocolVersion,\n artifactId,\n clientTransactionId,\n replicaId,\n replicaCounter,\n previousLocalTransactionId,\n observedHeadSequence,\n causalBase,\n selectiveUndoOperationIds: Object.freeze(selectiveUndoOperationIds),\n commandBytes: rawCommandBytes.slice(),\n });\n}\n\nfunction plainDataRecord(value: unknown, label: string): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${label} must be a plain object`);\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new TypeError(`${label} must be a plain object`);\n }\n if (Object.getOwnPropertySymbols(value).length > 0) {\n throw new TypeError(`${label} must not contain symbol properties`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction rejectUnknownKeys(\n record: Record<string, unknown>,\n allowed: readonly string[],\n label: string,\n): void {\n const allowedSet = new Set(allowed);\n const unknown = Object.keys(record).find((key) => !allowedSet.has(key));\n if (unknown) throw new TypeError(`${label} contains unknown property: ${unknown}`);\n}\n\nfunction dataProperty(record: Record<string, unknown>, key: string, required: boolean): unknown {\n const descriptor = Object.getOwnPropertyDescriptor(record, key);\n if (!descriptor) {\n if (required) throw new TypeError(`Missing required property: ${key}`);\n return undefined;\n }\n if (!(\"value\" in descriptor)) throw new TypeError(`Accessor property is not allowed: ${key}`);\n if (descriptor.value === undefined) {\n throw new TypeError(`Undefined property is not allowed: ${key}`);\n }\n return descriptor.value;\n}\n\nfunction validateIntentCommands(\n artifact: EditableArtifact,\n intent: ValidatedEditableArtifactMutationIntent,\n): void {\n try {\n const descriptor = editableArtifactCodecFor({\n durableModality: artifact.modality,\n modelSchemaVersion: intent.modelSchemaVersion,\n commandProtocolVersion: intent.commandProtocolVersion,\n });\n descriptor.command.assertCanonical(intent.commandBytes);\n const decoded = descriptor.command.decode(intent.commandBytes);\n if (artifact.modality !== \"spreadsheet\" && commandCount(decoded) < 1) {\n throw new TypeError(\"serialized command batch must not be empty\");\n }\n } catch (error) {\n throw new EditableArtifactInvalidRequestError(\n `Mutation commands are incompatible with the durable ${artifact.modality} artifact: ${\n error instanceof Error ? error.message : \"invalid command envelope\"\n }`,\n );\n }\n}\n\nfunction commandCount(value: unknown): number {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(\"command decoder returned an invalid batch\");\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, \"commands\");\n if (!descriptor || !(\"value\" in descriptor) || !Array.isArray(descriptor.value)) {\n throw new TypeError(\"command decoder returned an invalid batch\");\n }\n return descriptor.value.length;\n}\n\nfunction validateSerializedPredecessor(\n predecessor: EditableArtifactReceipt | null,\n replicaId: EditableArtifactReceipt[\"replicaId\"],\n intent: ValidatedEditableArtifactMutationIntent,\n modality: \"document\" | \"presentation\",\n): void {\n if (intent.previousLocalTransactionId === null) {\n if (intent.replicaCounter !== 1) {\n throw new EditableArtifactCausalChainError(\n \"Only a replica's first transaction may omit its local predecessor\",\n );\n }\n return;\n }\n if (!predecessor) {\n throw new EditableArtifactCausalChainError(\"Previous local transaction is not committed yet\");\n }\n if (\n predecessor.modality !== modality ||\n predecessor.replicaId !== replicaId ||\n predecessor.replicaCounter + 1 !== intent.replicaCounter\n ) {\n throw new EditableArtifactCausalChainError(\n \"Previous local transaction does not match this serialized replica chain\",\n );\n }\n}\n\nfunction serializedBasisNativeRevision(\n state: Extract<\n import(\"./ports\").EditableArtifactKernelState,\n { modality: \"document\" | \"presentation\" }\n >,\n artifact: EditableArtifactSerialized,\n): number {\n if (\n state.modality !== artifact.modality ||\n state.artifact.id !== artifact.id ||\n state.artifact.stateHash !== artifact.stateHash ||\n state.artifact.headSequence !== artifact.headSequence\n ) {\n throw new Error(\"Serialized kernel basis disagrees with its artifact head\");\n }\n let headSequence = 0;\n assertNonnegativeSafeInteger(state.baseNativeRevision, \"serialized kernel base native revision\");\n let nativeRevision = state.baseNativeRevision;\n let stateHash: EditableArtifact[\"stateHash\"];\n if (state.snapshot) {\n if (\n state.snapshot.modality !== artifact.modality ||\n state.snapshot.artifactId !== artifact.id\n ) {\n throw new Error(\"Serialized snapshot basis has the wrong modality or identity\");\n }\n if (state.snapshot.nativeRevision !== state.baseNativeRevision) {\n throw new Error(\"Serialized snapshot disagrees with its native revision checkpoint\");\n }\n headSequence = state.snapshot.coveredHeadSequence;\n stateHash = state.snapshot.stateHash;\n } else {\n stateHash = state.committedTransactionTail[0]?.priorStateHash ?? artifact.stateHash;\n }\n for (const committed of state.committedTransactionTail) {\n if (\n committed.modality !== artifact.modality ||\n committed.sequenceStart !== headSequence + 1 ||\n committed.sequenceEnd !== committed.sequenceStart ||\n committed.priorNativeRevision !== nativeRevision ||\n committed.priorStateHash !== stateHash\n ) {\n throw new Error(\"Serialized transaction tail is not contiguous with its snapshot\");\n }\n headSequence = committed.sequenceEnd;\n nativeRevision = committed.nativeRevision;\n stateHash = committed.stateHash;\n }\n if (headSequence !== artifact.headSequence || stateHash !== artifact.stateHash) {\n throw new Error(\"Serialized kernel basis does not reconstruct its artifact head\");\n }\n return nativeRevision;\n}\n\nfunction validateSerializedKernelResult(input: {\n artifact: EditableArtifactSerialized;\n intent: ValidatedEditableArtifactMutationIntent;\n intentBytes: Uint8Array;\n requestHash: EditableArtifactReceipt[\"requestHash\"];\n serverTransactionId: EditableArtifactReceipt[\"serverTransactionId\"];\n priorNativeRevision: number;\n result: Awaited<ReturnType<AuthoritativeEditableArtifactKernelPort[\"applyTransaction\"]>>;\n}): {\n committedTransactionBytes: Uint8Array;\n nativeReceiptBytes: Uint8Array;\n nativeRevision: number;\n commandCount: number;\n stateHash: EditableArtifact[\"stateHash\"];\n kernelVersion: string;\n modelSchemaVersion: number;\n} {\n const { artifact, intent, result } = input;\n if (result.modality !== artifact.modality) {\n throw new EditableArtifactKernelContractError(\n \"Kernel result modality does not match the durable artifact\",\n );\n }\n if (!(result.nativeReceiptBytes instanceof Uint8Array)) {\n throw new EditableArtifactKernelContractError(\n \"Kernel returned an invalid native serialized receipt\",\n );\n }\n assertPositiveSafeInteger(result.modelSchemaVersion, \"kernel model schema version\");\n if (result.modelSchemaVersion !== intent.modelSchemaVersion) {\n throw new EditableArtifactKernelContractError(\n \"Kernel result model schema does not match the canonical intent\",\n );\n }\n try {\n assertBoundedKernelVersion(result.kernelVersion);\n } catch {\n throw new EditableArtifactKernelContractError(\n `Kernel version must contain 1-${EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES} well-formed UTF-8 bytes`,\n );\n }\n const stateHash = editableArtifactStateHash(result.resultingStateHash);\n const committedTransactionBytes = encodeEditableArtifactSerializedCommit({\n modality: artifact.modality,\n transactionId: input.serverTransactionId,\n parentHeadSequence: artifact.headSequence,\n resultHeadSequence: artifact.headSequence + 1,\n priorNativeRevision: input.priorNativeRevision,\n priorStateHash: artifact.stateHash,\n stateHash,\n intentBytes: input.intentBytes,\n nativeReceiptBytes: result.nativeReceiptBytes,\n });\n const summary = decodeEditableArtifactSerializedCommit(\n committedTransactionBytes,\n artifact.modality,\n );\n if (summary.requestHash !== input.requestHash) {\n throw new EditableArtifactKernelContractError(\n \"Serialized commit does not bind the exact verified request hash\",\n );\n }\n return Object.freeze({\n committedTransactionBytes,\n nativeReceiptBytes: summary.nativeReceiptBytes.slice(),\n nativeRevision: summary.nativeReceipt.revision,\n commandCount: summary.nativeReceipt.commandCount,\n stateHash,\n kernelVersion: result.kernelVersion,\n modelSchemaVersion: result.modelSchemaVersion,\n });\n}\n\nfunction validateKernelResult(\n artifact: EditableArtifactSpreadsheet,\n actor: EditableArtifactActor,\n intent: EditableArtifactMutationIntent,\n resolvedCausalBase: EditableArtifactSpreadsheet[\"causalFrontier\"],\n result: Awaited<ReturnType<AuthoritativeEditableArtifactKernelPort[\"applyTransaction\"]>>,\n): {\n committedTransactionBytes: Uint8Array;\n serverTransactionId: EditableArtifactReceipt[\"serverTransactionId\"];\n dot: EditableArtifactKernelOperation[\"dot\"];\n operationIds: readonly EditableArtifactKernelOperation[\"operationId\"][];\n priorStateHash: EditableArtifact[\"stateHash\"];\n resultingCausalFrontier: EditableArtifactSpreadsheet[\"causalFrontier\"];\n stateHash: EditableArtifact[\"stateHash\"];\n kernelVersion: string;\n modelSchemaVersion: number;\n operationProtocolVersion: number;\n} {\n if (result.modality !== \"spreadsheet\") {\n throw new EditableArtifactKernelContractError(\n \"Kernel result modality does not match the durable spreadsheet\",\n );\n }\n if (\n !(result.committedTransactionBytes instanceof Uint8Array) ||\n result.committedTransactionBytes.byteLength < 1 ||\n result.committedTransactionBytes.byteLength > EDITABLE_ARTIFACT_MAX_COMMITTED_TRANSACTION_BYTES\n ) {\n throw new EditableArtifactKernelContractError(\n \"Authoritative kernel returned an invalid canonical OGACO envelope\",\n );\n }\n // There is one source of truth: metadata is inspected from the exact whole\n // Rust-authored envelope. A separately supplied host summary could otherwise\n // disagree with the bytes ultimately persisted and replayed.\n const summary = decodeCommittedTransactionSummary(result.committedTransactionBytes);\n if (\n summary.operationIds.length < 1 ||\n summary.operationIds.length > EDITABLE_ARTIFACT_MAX_OPERATIONS_PER_TRANSACTION\n ) {\n throw new EditableArtifactKernelContractError(\n \"Authoritative kernel returned an invalid operation count\",\n );\n }\n if (summary.operationProtocolVersion !== EDITABLE_ARTIFACT_OPERATION_PROTOCOL_VERSION) {\n throw new EditableArtifactKernelContractError(\n \"Authoritative kernel returned an unsupported operation protocol version\",\n );\n }\n assertPositiveSafeInteger(result.modelSchemaVersion, \"kernel model schema version\");\n if (result.modelSchemaVersion !== intent.modelSchemaVersion) {\n throw new EditableArtifactKernelContractError(\n \"Kernel result model schema does not match the canonical intent\",\n );\n }\n try {\n assertBoundedKernelVersion(result.kernelVersion);\n } catch {\n throw new EditableArtifactKernelContractError(\n `Kernel version must contain 1-${EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES} well-formed UTF-8 bytes`,\n );\n }\n const serverTransactionId = editableArtifactTransactionId(summary.transactionId);\n const priorStateHash = editableArtifactStateHash(summary.priorStateHash);\n if (priorStateHash !== artifact.stateHash) {\n throw new EditableArtifactKernelContractError(\n \"Kernel committed transaction prior state does not match its authoritative basis\",\n );\n }\n const stateHash = editableArtifactStateHash(summary.stateHash);\n const normalizedResolvedBase = editableArtifactCausalFrontier(\n summary.resolvedCausalBase.map((entry) => ({\n replicaId: editableArtifactReplicaId(entry.replicaId),\n counter: entry.counter,\n })),\n );\n if (!causalFrontiersEqual(normalizedResolvedBase, resolvedCausalBase)) {\n throw new EditableArtifactKernelContractError(\n \"Kernel committed transaction resolved base does not match server authority\",\n );\n }\n const resultingCausalFrontier = editableArtifactCausalFrontier(\n summary.resultingCausalFrontier.map((entry) => ({\n replicaId: editableArtifactReplicaId(entry.replicaId),\n counter: entry.counter,\n })),\n );\n const dotFrontier = editableArtifactCausalFrontier([\n {\n replicaId: editableArtifactReplicaId(summary.dot.replicaId),\n counter: summary.dot.counter,\n },\n ]);\n const dot = dotFrontier[0]!;\n if (dot.replicaId !== actor.replicaId) {\n throw new EditableArtifactKernelContractError(\n \"Kernel transaction dot is not owned by the submitting replica\",\n );\n }\n if (dot.counter !== intent.replicaCounter) {\n throw new EditableArtifactKernelContractError(\n \"Kernel transaction dot does not match the authored replica counter\",\n );\n }\n const seenOperationIds = new Set<string>();\n const operationIds = summary.operationIds.map((rawOperationId) => {\n const operationId = editableArtifactOperationId(rawOperationId);\n if (seenOperationIds.has(operationId)) {\n throw new EditableArtifactKernelContractError(\"Kernel returned duplicate operation ids\");\n }\n seenOperationIds.add(operationId);\n return operationId;\n });\n const expectedFrontier = mergeCausalFrontiers(\n artifact.causalFrontier,\n editableArtifactCausalFrontier([\n { replicaId: actor.replicaId, counter: intent.replicaCounter },\n ]),\n );\n if (!causalFrontiersEqual(resultingCausalFrontier, expectedFrontier)) {\n throw new EditableArtifactKernelContractError(\n \"Kernel resulting frontier does not exactly match committed operation dots\",\n );\n }\n return Object.freeze({\n committedTransactionBytes: result.committedTransactionBytes.slice(),\n serverTransactionId,\n dot,\n operationIds: Object.freeze(operationIds),\n priorStateHash,\n resultingCausalFrontier,\n stateHash,\n kernelVersion: result.kernelVersion,\n modelSchemaVersion: result.modelSchemaVersion,\n operationProtocolVersion: summary.operationProtocolVersion,\n });\n}\n\nfunction transactionOutboxRecord(\n outboxId: ReturnType<typeof editableArtifactOutboxId>,\n receipt: ApplyEditableArtifactTransactionResult[\"receipt\"],\n): EditableArtifactLiveOutboxRecord {\n const event =\n receipt.modality === \"spreadsheet\"\n ? Object.freeze({\n kind: \"transaction_committed\" as const,\n schemaVersion: 1 as const,\n scope: receipt.scope,\n artifactId: receipt.artifactId,\n modality: receipt.modality,\n serverTransactionId: receipt.serverTransactionId,\n sequenceStart: receipt.sequenceStart,\n sequenceEnd: receipt.sequenceEnd,\n stateHash: receipt.stateHash,\n operationProtocolVersion: receipt.operationProtocolVersion,\n committedAt: receipt.committedAt,\n })\n : Object.freeze({\n kind: \"transaction_committed\" as const,\n schemaVersion: 1 as const,\n scope: receipt.scope,\n artifactId: receipt.artifactId,\n modality: receipt.modality,\n serverTransactionId: receipt.serverTransactionId,\n sequenceStart: receipt.sequenceStart,\n sequenceEnd: receipt.sequenceEnd,\n stateHash: receipt.stateHash,\n commitProtocolVersion: receipt.commitProtocolVersion,\n committedAt: receipt.committedAt,\n });\n return Object.freeze({\n outboxId,\n event,\n state: \"pending\",\n attemptCount: 0,\n leaseOwner: null,\n leaseExpiresAt: null,\n nextAttemptAt: receipt.committedAt,\n lastErrorCode: null,\n publishedAt: null,\n deadLetteredAt: null,\n createdAt: receipt.committedAt,\n });\n}\n\nfunction validateSnapshotRequest(\n request: PublishEditableArtifactSnapshotRequest,\n): PublishEditableArtifactSnapshotRequest {\n const record = plainDataRecord(request, \"snapshot request\");\n const rawModality = dataProperty(record, \"modality\", true);\n if (\n rawModality !== \"spreadsheet\" &&\n rawModality !== \"document\" &&\n rawModality !== \"presentation\"\n ) {\n throw new TypeError(\"Snapshot modality is invalid\");\n }\n rejectUnknownKeys(\n record,\n rawModality === \"spreadsheet\"\n ? [\n \"modality\",\n \"snapshotId\",\n \"blobReference\",\n \"byteSize\",\n \"contentHash\",\n \"mimeType\",\n \"coveredHeadSequence\",\n \"coveredCausalFrontier\",\n \"stateHash\",\n \"modelSchemaVersion\",\n \"operationProtocolVersion\",\n \"kernelVersion\",\n \"crdtStateVersion\",\n \"verifiedAt\",\n ]\n : [\n \"modality\",\n \"snapshotId\",\n \"blobReference\",\n \"byteSize\",\n \"contentHash\",\n \"mimeType\",\n \"coveredHeadSequence\",\n \"stateHash\",\n \"modelSchemaVersion\",\n \"kernelVersion\",\n \"nativeRevision\",\n \"verifiedAt\",\n ],\n \"snapshot request\",\n );\n const rawSnapshotId = dataProperty(record, \"snapshotId\", true);\n const rawBlobReference = dataProperty(record, \"blobReference\", true);\n const rawByteSize = dataProperty(record, \"byteSize\", true);\n const rawContentHash = dataProperty(record, \"contentHash\", true);\n const rawMimeType = dataProperty(record, \"mimeType\", true);\n const rawCoveredHeadSequence = dataProperty(record, \"coveredHeadSequence\", true);\n const rawStateHash = dataProperty(record, \"stateHash\", true);\n const rawModelSchemaVersion = dataProperty(record, \"modelSchemaVersion\", true);\n const rawKernelVersion = dataProperty(record, \"kernelVersion\", true);\n const rawVerifiedAt = dataProperty(record, \"verifiedAt\", true);\n if (\n typeof rawSnapshotId !== \"string\" ||\n typeof rawBlobReference !== \"string\" ||\n typeof rawByteSize !== \"number\" ||\n typeof rawContentHash !== \"string\" ||\n typeof rawCoveredHeadSequence !== \"number\" ||\n typeof rawStateHash !== \"string\" ||\n typeof rawModelSchemaVersion !== \"number\" ||\n typeof rawKernelVersion !== \"string\" ||\n typeof rawVerifiedAt !== \"string\"\n ) {\n throw new TypeError(\"Snapshot request fields are malformed\");\n }\n if (rawMimeType !== \"application/vnd.opengeni.editable-artifact-snapshot\") {\n throw new TypeError(\"Snapshot MIME type is unsupported\");\n }\n const snapshotId = editableArtifactSnapshotId(rawSnapshotId);\n assertBoundedOpaqueReference(rawBlobReference, \"snapshot blob reference\");\n assertPositiveSafeInteger(rawByteSize, \"snapshot byte size\");\n const contentHash = editableArtifactContentHash(rawContentHash);\n assertNonnegativeSafeInteger(rawCoveredHeadSequence, \"snapshot covered head sequence\");\n const stateHash = editableArtifactStateHash(rawStateHash);\n assertPositiveSafeInteger(rawModelSchemaVersion, \"snapshot model schema version\");\n assertBoundedKernelVersion(rawKernelVersion);\n assertIsoTimestamp(rawVerifiedAt, \"snapshot verified timestamp\");\n const common = {\n modality: rawModality,\n snapshotId,\n blobReference: rawBlobReference,\n byteSize: rawByteSize,\n contentHash,\n mimeType: \"application/vnd.opengeni.editable-artifact-snapshot\",\n coveredHeadSequence: rawCoveredHeadSequence,\n stateHash,\n modelSchemaVersion: rawModelSchemaVersion,\n kernelVersion: rawKernelVersion,\n verifiedAt: rawVerifiedAt,\n } as const;\n if (rawModality === \"spreadsheet\") {\n const rawCoveredCausalFrontier = dataProperty(record, \"coveredCausalFrontier\", true);\n const rawOperationProtocolVersion = dataProperty(record, \"operationProtocolVersion\", true);\n const rawCrdtStateVersion = dataProperty(record, \"crdtStateVersion\", true);\n if (\n !Array.isArray(rawCoveredCausalFrontier) ||\n typeof rawOperationProtocolVersion !== \"number\" ||\n typeof rawCrdtStateVersion !== \"number\"\n ) {\n throw new TypeError(\"Spreadsheet snapshot fields are malformed\");\n }\n assertPositiveSafeInteger(rawOperationProtocolVersion, \"snapshot operation protocol version\");\n assertPositiveSafeInteger(rawCrdtStateVersion, \"snapshot CRDT state version\");\n return Object.freeze({\n ...common,\n modality: \"spreadsheet\",\n coveredCausalFrontier: editableArtifactCausalFrontier(\n rawCoveredCausalFrontier as EditableArtifactCausalFrontier,\n ),\n operationProtocolVersion: rawOperationProtocolVersion,\n crdtStateVersion: rawCrdtStateVersion,\n });\n }\n const rawNativeRevision = dataProperty(record, \"nativeRevision\", true);\n if (typeof rawNativeRevision !== \"number\") {\n throw new TypeError(\"Serialized snapshot native revision is malformed\");\n }\n assertNonnegativeSafeInteger(rawNativeRevision, \"snapshot native revision\");\n return Object.freeze({\n ...common,\n modality: rawModality,\n nativeRevision: rawNativeRevision,\n });\n}\n\nfunction sameSnapshotRequest(\n existing: EditableArtifactSnapshotMetadata,\n candidate: PublishEditableArtifactSnapshotRequest,\n): boolean {\n if (\n existing.modality !== candidate.modality ||\n !(\n existing.snapshotId === candidate.snapshotId &&\n existing.blobReference === candidate.blobReference &&\n existing.byteSize === candidate.byteSize &&\n existing.contentHash === candidate.contentHash &&\n existing.mimeType === candidate.mimeType &&\n existing.coveredHeadSequence === candidate.coveredHeadSequence &&\n existing.stateHash === candidate.stateHash &&\n existing.modelSchemaVersion === candidate.modelSchemaVersion &&\n existing.kernelVersion === candidate.kernelVersion &&\n existing.verifiedAt === candidate.verifiedAt\n )\n ) {\n return false;\n }\n if (existing.modality === \"spreadsheet\" && candidate.modality === \"spreadsheet\") {\n return (\n causalFrontiersEqual(existing.coveredCausalFrontier, candidate.coveredCausalFrontier) &&\n existing.operationProtocolVersion === candidate.operationProtocolVersion &&\n existing.crdtStateVersion === candidate.crdtStateVersion\n );\n }\n return (\n existing.modality !== \"spreadsheet\" &&\n candidate.modality !== \"spreadsheet\" &&\n existing.nativeRevision === candidate.nativeRevision\n );\n}\n\nfunction snapshotOutboxRecord(\n outboxId: ReturnType<typeof editableArtifactOutboxId>,\n snapshot: EditableArtifactSnapshotMetadata,\n): EditableArtifactLiveOutboxRecord {\n const event =\n snapshot.modality === \"spreadsheet\"\n ? Object.freeze({\n kind: \"snapshot_published\" as const,\n schemaVersion: 1 as const,\n scope: snapshot.scope,\n artifactId: snapshot.artifactId,\n modality: snapshot.modality,\n snapshotId: snapshot.snapshotId,\n coveredHeadSequence: snapshot.coveredHeadSequence,\n stateHash: snapshot.stateHash,\n operationProtocolVersion: snapshot.operationProtocolVersion,\n publishedAt: snapshot.publishedAt,\n })\n : Object.freeze({\n kind: \"snapshot_published\" as const,\n schemaVersion: 1 as const,\n scope: snapshot.scope,\n artifactId: snapshot.artifactId,\n modality: snapshot.modality,\n snapshotId: snapshot.snapshotId,\n coveredHeadSequence: snapshot.coveredHeadSequence,\n stateHash: snapshot.stateHash,\n publishedAt: snapshot.publishedAt,\n });\n return Object.freeze({\n outboxId,\n event,\n state: \"pending\",\n attemptCount: 0,\n leaseOwner: null,\n leaseExpiresAt: null,\n nextAttemptAt: snapshot.publishedAt,\n lastErrorCode: null,\n publishedAt: null,\n deadLetteredAt: null,\n createdAt: snapshot.publishedAt,\n });\n}\n\nfunction canonicalNow(clock: EditableArtifactClockPort): string {\n const now = clock.now();\n if (Number.isNaN(now.getTime())) throw new TypeError(\"Artifact clock returned an invalid date\");\n return now.toISOString();\n}\n"],"mappings":"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","names":["createHash","createHash","EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES","decodeEditableArtifactSerializedCommit","kernelResult","serverTransactionId","normalizedKernel","committedAt","committedTransaction","receipt","outbox","commit","validateKernelResult","EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES","decodeEditableArtifactSerializedCommit"]}