@opengeni/sdk 0.48.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +147 -1
  2. package/dist/artifact-client.d.ts +20 -2
  3. package/dist/artifacts.d.ts +4 -0
  4. package/dist/artifacts.js +11 -0
  5. package/dist/artifacts.js.map +1 -0
  6. package/dist/{chunk-V5F253OG.js → chunk-GU6JF75T.js} +6 -3
  7. package/dist/chunk-GU6JF75T.js.map +1 -0
  8. package/dist/chunk-HJ3HHUT5.js +222 -0
  9. package/dist/chunk-HJ3HHUT5.js.map +1 -0
  10. package/dist/{chunk-KIHGPM7H.js → chunk-JDLDDRNE.js} +20 -14
  11. package/dist/chunk-JDLDDRNE.js.map +1 -0
  12. package/dist/chunk-JRPFWI6T.js +128 -0
  13. package/dist/chunk-JRPFWI6T.js.map +1 -0
  14. package/dist/{chunk-MBGBLVUV.js → chunk-PKQ377ED.js} +1725 -555
  15. package/dist/chunk-PKQ377ED.js.map +1 -0
  16. package/dist/chunk-ST5DDKJP.js +987 -0
  17. package/dist/chunk-ST5DDKJP.js.map +1 -0
  18. package/dist/chunk-VWE2QIVO.js +1162 -0
  19. package/dist/chunk-VWE2QIVO.js.map +1 -0
  20. package/dist/chunk-VYCTL62C.js +230 -0
  21. package/dist/chunk-VYCTL62C.js.map +1 -0
  22. package/dist/{chunk-DXDL7EEW.js → chunk-YKZME56C.js} +197 -113
  23. package/dist/chunk-YKZME56C.js.map +1 -0
  24. package/dist/client.d.ts +240 -16
  25. package/dist/codex-realtime-controller.d.ts +9 -6
  26. package/dist/codex-realtime-controller.js +2 -2
  27. package/dist/codex-realtime-lifecycle.d.ts +1 -1
  28. package/dist/codex-realtime-v3.d.ts +3 -3
  29. package/dist/codex-realtime.d.ts +1 -1
  30. package/dist/company-profile.d.ts +100 -0
  31. package/dist/core.d.ts +5 -5
  32. package/dist/core.js +10 -5
  33. package/dist/desktop.d.ts +9 -1
  34. package/dist/editable-artifact-resources.d.ts +96 -0
  35. package/dist/editable-artifacts/browser-session.d.ts +35 -0
  36. package/dist/editable-artifacts/controller.d.ts +60 -0
  37. package/dist/editable-artifacts/errors.d.ts +23 -0
  38. package/dist/editable-artifacts/http-live-transport.d.ts +46 -0
  39. package/dist/editable-artifacts/index.d.ts +19 -0
  40. package/dist/editable-artifacts/pool.d.ts +15 -0
  41. package/dist/editable-artifacts/session.d.ts +96 -0
  42. package/dist/editable-artifacts/storage.d.ts +72 -0
  43. package/dist/editable-artifacts/types.d.ts +416 -0
  44. package/dist/editable-artifacts/worker/browser-client.d.ts +80 -0
  45. package/dist/editable-artifacts/worker/browser-entry.d.ts +6 -0
  46. package/dist/editable-artifacts/worker/kernel-adapter.d.ts +45 -0
  47. package/dist/editable-artifacts/worker/rpc-protocol.d.ts +92 -0
  48. package/dist/editable-artifacts/worker/runtime.d.ts +66 -0
  49. package/dist/editable-artifacts/worker/wire-codec.d.ts +52 -0
  50. package/dist/editable-artifacts-worker.d.ts +8 -0
  51. package/dist/editable-artifacts-worker.js +1708 -0
  52. package/dist/editable-artifacts-worker.js.map +1 -0
  53. package/dist/editable-artifacts.d.ts +6 -0
  54. package/dist/editable-artifacts.js +5954 -0
  55. package/dist/editable-artifacts.js.map +1 -0
  56. package/dist/gateway-realtime-transport.d.ts +2 -1
  57. package/dist/gateway-realtime-transport.js +5 -3
  58. package/dist/index.d.ts +45 -35
  59. package/dist/index.js +134 -64
  60. package/dist/index.js.map +1 -1
  61. package/dist/interaction-revision-stream.d.ts +11 -0
  62. package/dist/interaction.d.ts +1484 -0
  63. package/dist/interaction.js +81 -0
  64. package/dist/interaction.js.map +1 -0
  65. package/dist/memory-slack-client.d.ts +13 -0
  66. package/dist/memory-slack-delivery.d.ts +99 -0
  67. package/dist/memory-slack.d.ts +4 -0
  68. package/dist/memory-slack.js +44 -0
  69. package/dist/memory-slack.js.map +1 -0
  70. package/dist/proxy.d.ts +3 -3
  71. package/dist/realtime.d.ts +14 -14
  72. package/dist/realtime.js +11 -7
  73. package/dist/realtime.js.map +1 -1
  74. package/dist/retained-artifacts.d.ts +12 -0
  75. package/dist/stream.d.ts +1 -1
  76. package/dist/terminal.d.ts +1 -1
  77. package/dist/types.d.ts +1347 -34
  78. package/dist/workspace-control-stream.d.ts +2 -2
  79. package/dist/workspace-live-stream.d.ts +14 -0
  80. package/dist/workspace-state.d.ts +1 -1
  81. package/package.json +29 -3
  82. package/src/artifact-client.ts +129 -0
  83. package/src/artifacts.ts +17 -0
  84. package/src/client.ts +3022 -910
  85. package/src/codex-realtime-controller.ts +25 -7
  86. package/src/codex-realtime-lifecycle.ts +1 -0
  87. package/src/company-profile.ts +92 -0
  88. package/src/desktop.ts +11 -1
  89. package/src/editable-artifact-resources.ts +119 -0
  90. package/src/editable-artifacts/browser-session.ts +176 -0
  91. package/src/editable-artifacts/controller.ts +2632 -0
  92. package/src/editable-artifacts/errors.ts +52 -0
  93. package/src/editable-artifacts/http-live-transport.ts +1449 -0
  94. package/src/editable-artifacts/index.ts +175 -0
  95. package/src/editable-artifacts/pool.ts +81 -0
  96. package/src/editable-artifacts/session.ts +778 -0
  97. package/src/editable-artifacts/storage.ts +1718 -0
  98. package/src/editable-artifacts/types.ts +499 -0
  99. package/src/editable-artifacts/worker/browser-client.ts +1167 -0
  100. package/src/editable-artifacts/worker/browser-entry.ts +57 -0
  101. package/src/editable-artifacts/worker/kernel-adapter.ts +1039 -0
  102. package/src/editable-artifacts/worker/rpc-protocol.ts +622 -0
  103. package/src/editable-artifacts/worker/runtime.ts +1204 -0
  104. package/src/editable-artifacts/worker/wire-codec.ts +852 -0
  105. package/src/editable-artifacts-worker.ts +8 -0
  106. package/src/editable-artifacts.ts +6 -0
  107. package/src/errors.ts +16 -2
  108. package/src/gateway-realtime-transport.ts +252 -109
  109. package/src/index.ts +215 -1
  110. package/src/interaction-revision-stream.ts +117 -0
  111. package/src/interaction.ts +2874 -0
  112. package/src/memory-slack-client.ts +71 -0
  113. package/src/memory-slack-delivery.ts +128 -0
  114. package/src/memory-slack.ts +19 -0
  115. package/src/realtime.ts +14 -4
  116. package/src/retained-artifacts.ts +326 -0
  117. package/src/types.ts +1636 -52
  118. package/src/workspace-live-stream.ts +137 -0
  119. package/dist/chunk-DXDL7EEW.js.map +0 -1
  120. package/dist/chunk-KIHGPM7H.js.map +0 -1
  121. package/dist/chunk-MBGBLVUV.js.map +0 -1
  122. package/dist/chunk-V5F253OG.js.map +0 -1
package/dist/core.js CHANGED
@@ -1,16 +1,21 @@
1
1
  import {
2
- OPENGENI_API_CONTRACT_HEADER,
3
- OPENGENI_API_CONTRACT_REVISION,
4
- OpenGeniClient,
5
2
  resolveWorkspaceVoiceInputEnabled
6
- } from "./chunk-MBGBLVUV.js";
3
+ } from "./chunk-VYCTL62C.js";
4
+ import {
5
+ OpenGeniClient
6
+ } from "./chunk-PKQ377ED.js";
7
+ import {
8
+ OPENGENI_API_CONTRACT_HEADER,
9
+ OPENGENI_API_CONTRACT_REVISION
10
+ } from "./chunk-HJ3HHUT5.js";
7
11
  import {
8
12
  OpenGeniApiContractMismatchError,
9
13
  OpenGeniApiError,
10
14
  OpenGeniSessionListCursorError,
11
15
  OpenGeniStreamError,
12
16
  isRetryableStreamError
13
- } from "./chunk-V5F253OG.js";
17
+ } from "./chunk-GU6JF75T.js";
18
+ import "./chunk-ST5DDKJP.js";
14
19
  export {
15
20
  OPENGENI_API_CONTRACT_HEADER,
16
21
  OPENGENI_API_CONTRACT_REVISION,
package/dist/desktop.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { DesktopStreamCapability, StreamUrlRotatedPayload } from "./types";
1
+ import type { DesktopStreamCapability, StreamUrlRotatedPayload } from "./types.js";
2
2
  /**
3
3
  * Translate the negotiated desktop capability into the WebSocket URL the noVNC
4
4
  * RFB client connects to. The scoped provider token is ALREADY embedded in the
@@ -30,12 +30,20 @@ export interface DesktopRfbLike {
30
30
  clipViewport: boolean;
31
31
  addEventListener(type: "connect" | "disconnect" | "securityfailure", cb: (e?: unknown) => void): void;
32
32
  removeEventListener?: (type: "connect" | "disconnect" | "securityfailure", cb: (e?: unknown) => void) => void;
33
+ /** Send clipboard text over the already-open RFB connection. */
34
+ clipboardPasteFrom?(text: string): void;
35
+ /** Send one RFB key event. A missing `down` emits a complete key press. */
36
+ sendKey?(keysym: number, code: string, down?: boolean): void;
37
+ /** Focus or release the RFB keyboard sink without reconnecting. */
38
+ focus?(options?: FocusOptions): void;
39
+ blur?(): void;
33
40
  disconnect(): void;
34
41
  }
35
42
  export type DesktopRfbFactory = (target: HTMLElement, url: string, opts: {
36
43
  credentials?: {
37
44
  password?: string | undefined;
38
45
  } | undefined;
46
+ wsProtocols?: string[] | undefined;
39
47
  }) => DesktopRfbLike;
40
48
  export type DesktopConnectionState = "idle" | "negotiating" | "connecting" | "connected" | "rotating" | "reconnecting" | "error" | "ended";
41
49
  export type DesktopStreamEvent = {
@@ -0,0 +1,96 @@
1
+ import type { OpenGeniRequestOptions } from "./client.js";
2
+ import type { EditableArtifactModality } from "./editable-artifacts/types.js";
3
+ /** Durable metadata returned by the editable-artifact product API. */
4
+ export type EditableArtifactResource = Readonly<{
5
+ id: string;
6
+ modality: EditableArtifactModality;
7
+ title: string;
8
+ lifecycle: "active" | "archived";
9
+ headSequence: number;
10
+ stateHash: string;
11
+ createdAt: string;
12
+ updatedAt: string;
13
+ }>;
14
+ export type EditableArtifactListResource = Readonly<{
15
+ artifacts: readonly EditableArtifactResource[];
16
+ }>;
17
+ export type CreateEditableArtifactResourceRequest = Readonly<{
18
+ /** Stable across transport retries; conflicting reuse is rejected. */
19
+ idempotencyKey: string;
20
+ /** Exact writer replica that will open the first live editing session. */
21
+ replicaId: string;
22
+ modality: EditableArtifactModality;
23
+ title: string;
24
+ }>;
25
+ export type ImportEditableArtifactResourceRequest = Readonly<{
26
+ idempotencyKey: string;
27
+ replicaId: string;
28
+ modality: EditableArtifactModality;
29
+ title: string;
30
+ sourceFileId: string;
31
+ }>;
32
+ export type ReadEditableArtifactResourceOptions = OpenGeniRequestOptions & Readonly<{
33
+ /** Writer/read replica used to mint artifact-scoped authority. */
34
+ replicaId: string;
35
+ }>;
36
+ export type ListSessionEditableArtifactResourcesOptions = OpenGeniRequestOptions & Readonly<{
37
+ replicaId: string;
38
+ }>;
39
+ export type EditableArtifactMaterializationFormat = "xlsx" | "pptx" | "docx" | "pdf" | "png" | "webp";
40
+ export type EditableArtifactPinnedVersionResource = Readonly<{
41
+ id: string;
42
+ artifactId: string;
43
+ modality: EditableArtifactModality;
44
+ snapshotId: string;
45
+ headSequence: number;
46
+ causalFrontier: readonly Readonly<{
47
+ replicaId: string;
48
+ counter: number;
49
+ }>[] | null;
50
+ nativeRevision: number | null;
51
+ stateHash: string;
52
+ name: string;
53
+ pinned: true;
54
+ createdAt: string;
55
+ replayed: boolean;
56
+ }>;
57
+ export type PinEditableArtifactVersionRequest = Readonly<{
58
+ replicaId: string;
59
+ idempotencyKey: string;
60
+ name: string;
61
+ }>;
62
+ export type EditableArtifactMaterializationResultResource = Readonly<{
63
+ id: string;
64
+ byteSize: number;
65
+ contentHash: string;
66
+ mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | "application/vnd.openxmlformats-officedocument.presentationml.presentation" | "application/vnd.openxmlformats-officedocument.wordprocessingml.document" | "application/pdf" | "image/png" | "image/webp";
67
+ verifiedAt: string;
68
+ createdAt: string;
69
+ }>;
70
+ export type EditableArtifactMaterializationJobResource = Readonly<{
71
+ id: string;
72
+ artifactId: string;
73
+ versionId: string;
74
+ inputSnapshotId: string;
75
+ targetHeadSequence: number;
76
+ stateHash: string;
77
+ format: EditableArtifactMaterializationFormat;
78
+ state: "pending" | "running" | "succeeded" | "failed";
79
+ attemptCount: number;
80
+ errorCode: string | null;
81
+ createdAt: string;
82
+ startedAt: string | null;
83
+ completedAt: string | null;
84
+ result: EditableArtifactMaterializationResultResource | null;
85
+ replayed?: boolean;
86
+ }>;
87
+ export type CreateEditableArtifactMaterializationRequest = Readonly<{
88
+ replicaId: string;
89
+ idempotencyKey: string;
90
+ versionId: string;
91
+ format: EditableArtifactMaterializationFormat;
92
+ options?: Readonly<Record<string, unknown>>;
93
+ }>;
94
+ export type ReadEditableArtifactMaterializationOptions = OpenGeniRequestOptions & Readonly<{
95
+ replicaId: string;
96
+ }>;
@@ -0,0 +1,35 @@
1
+ import type { EditableArtifactCacheAuthority } from "./controller.js";
2
+ import { type CreateEditableArtifactHttpLiveTransportOptions } from "./http-live-transport.js";
3
+ import { type EditableArtifactSession } from "./session.js";
4
+ import type { EditableArtifactStoragePort } from "./storage.js";
5
+ import type { EditableArtifactModality } from "./types.js";
6
+ import { type CreateBrowserEditableArtifactWorkerKernelOptions } from "./worker/browser-client.js";
7
+ export type EditableArtifactBrowserRuntime = Omit<CreateBrowserEditableArtifactWorkerKernelOptions, "modality" | "kernelVersion" | "protocolVersion" | "modelSchemaVersion" | "commandVersion"> & Readonly<{
8
+ /** Exact native/WASM build identity admitted by the API. */
9
+ kernelVersion: string;
10
+ modelSchemaVersion: number;
11
+ protocolVersion?: number;
12
+ commandVersion: number;
13
+ }>;
14
+ export type CreateBrowserEditableArtifactSessionOptions = Readonly<{
15
+ baseUrl: string | URL;
16
+ workspaceId: string;
17
+ artifact: Readonly<{
18
+ id: string;
19
+ modality: EditableArtifactModality;
20
+ }>;
21
+ /** Exact login/grant partition; rotate authorizationEpoch on authority changes. */
22
+ storageAuthority: EditableArtifactCacheAuthority;
23
+ runtime: EditableArtifactBrowserRuntime;
24
+ transport?: Omit<CreateEditableArtifactHttpLiveTransportOptions, "baseUrl" | "workspaceId" | "protocolVersion" | "kernelVersion" | "modelSchemaVersion">;
25
+ storage?: EditableArtifactStoragePort;
26
+ /** Reuse the replica used to create the artifact when opening it immediately. */
27
+ replicaId?: string;
28
+ }>;
29
+ /**
30
+ * One production browser composition point: verified WASM Worker, durable WAL,
31
+ * authenticated HTTP/WebSocket transport, replay, and modality projections.
32
+ */
33
+ export declare function createBrowserEditableArtifactSession(options: CreateBrowserEditableArtifactSessionOptions): EditableArtifactSession;
34
+ /** Generates the portable 64-bit nonzero replica identity used by create/open. */
35
+ export declare function createEditableArtifactReplicaId(): string;
@@ -0,0 +1,60 @@
1
+ import type { EditableArtifactStoragePort } from "./storage.js";
2
+ import type { EditableArtifactId, EditableArtifactModality, EditableArtifactPendingTransaction, EditableArtifactSyncListener, EditableArtifactSyncScheduler, EditableArtifactSyncTransport, EditableArtifactSyncView, EditableArtifactWorkerKernel } from "./types.js";
3
+ export type CreateEditableArtifactSyncControllerOptions = {
4
+ artifactId: EditableArtifactId;
5
+ modality: EditableArtifactModality;
6
+ /** Authenticated cache authority; every field participates in IndexedDB partitioning. */
7
+ storageAuthority: EditableArtifactCacheAuthority;
8
+ transport: EditableArtifactSyncTransport;
9
+ storage: EditableArtifactStoragePort;
10
+ kernel: EditableArtifactWorkerKernel;
11
+ kernelVersion: string;
12
+ modelSchemaVersion: number;
13
+ commandVersion: number;
14
+ protocolVersion?: number;
15
+ replayPageSize?: number;
16
+ maxQueuedMessages?: number;
17
+ maxQueuedBytes?: number;
18
+ maxStoredTailTransactions?: number;
19
+ maxSnapshotBytes?: number;
20
+ maxCommandBytes?: number;
21
+ maxCommittedTransactionBytes?: number;
22
+ maxReplayPageBytes?: number;
23
+ maxPendingTransactions?: number;
24
+ maxPendingBytes?: number;
25
+ minTicketTtlMs?: number;
26
+ reconnectDelayMs?: number;
27
+ maxReconnectDelayMs?: number;
28
+ maxReconnectAttempts?: number;
29
+ scheduler?: EditableArtifactSyncScheduler;
30
+ clientTransactionIdFactory?: () => string;
31
+ /** Tests/embedded runtimes may inject; defaults to a fresh per-controller UUID. */
32
+ writerReplicaIdFactory?: () => string;
33
+ };
34
+ export type EditableArtifactCacheAuthority = {
35
+ deploymentOrigin: string;
36
+ accountId: string;
37
+ workspaceId: string;
38
+ principalId: string;
39
+ /** Host-auth revision/session epoch; rotate on logout, grant change, or account switch. */
40
+ authorizationEpoch: string;
41
+ };
42
+ export type EditableArtifactQueueCommandsInput = {
43
+ commandBytes: Uint8Array;
44
+ selectiveUndoTargets?: readonly string[];
45
+ /** Optional deterministic ID for host-driven retries before WAL persistence. */
46
+ clientTransactionId?: string;
47
+ };
48
+ export type EditableArtifactSyncController = {
49
+ readonly artifactId: EditableArtifactId;
50
+ readonly modality: EditableArtifactModality;
51
+ start: () => void;
52
+ whenLive: () => Promise<void>;
53
+ close: () => Promise<void>;
54
+ getView: () => EditableArtifactSyncView;
55
+ subscribe: (listener: EditableArtifactSyncListener) => () => void;
56
+ /** Kernel authors/hashes the immutable envelope; SDK WAL persists before delivery. */
57
+ queueCommands: (input: EditableArtifactQueueCommandsInput) => Promise<EditableArtifactPendingTransaction>;
58
+ };
59
+ export declare function createEditableArtifactSyncController(options: CreateEditableArtifactSyncControllerOptions): EditableArtifactSyncController;
60
+ export declare function editableArtifactCacheNamespace(authority: EditableArtifactCacheAuthority): string;
@@ -0,0 +1,23 @@
1
+ export type EditableArtifactSyncErrorCode = "unsupported_protocol" | "invalid_bootstrap" | "invalid_sequence" | "kernel_diverged" | "queue_overflow" | "resync_required" | "permission_changed" | "storage_failed" | "pending_conflict" | "reconnect_exhausted";
2
+ export declare class EditableArtifactSyncError extends Error {
3
+ readonly code: EditableArtifactSyncErrorCode;
4
+ readonly retryable: boolean;
5
+ readonly requiresSnapshot: boolean;
6
+ constructor(code: EditableArtifactSyncErrorCode, message: string, options?: {
7
+ retryable?: boolean;
8
+ requiresSnapshot?: boolean;
9
+ cause?: unknown;
10
+ });
11
+ }
12
+ /** Transport adapters wrap retryable network failures in this typed error. */
13
+ export declare class EditableArtifactTransportError extends Error {
14
+ readonly code: string | undefined;
15
+ readonly retryable: boolean;
16
+ readonly outcomeUnknown: boolean;
17
+ constructor(message: string, options?: {
18
+ code?: string;
19
+ retryable?: boolean;
20
+ outcomeUnknown?: boolean;
21
+ cause?: unknown;
22
+ });
23
+ }
@@ -0,0 +1,46 @@
1
+ import type { EditableArtifactSyncTransport } from "./types.js";
2
+ export type EditableArtifactWebSocketMessageEvent = Readonly<{
3
+ data: unknown;
4
+ }>;
5
+ export type EditableArtifactWebSocketCloseEvent = Readonly<{
6
+ code?: number;
7
+ reason?: string;
8
+ }>;
9
+ export type EditableArtifactWebSocketLike = {
10
+ binaryType: string;
11
+ readonly protocol: string;
12
+ readonly readyState: number;
13
+ send(data: Uint8Array | ArrayBuffer): void;
14
+ close(code?: number, reason?: string): void;
15
+ addEventListener(type: "open", listener: () => void): void;
16
+ addEventListener(type: "message", listener: (event: EditableArtifactWebSocketMessageEvent) => void): void;
17
+ addEventListener(type: "error", listener: () => void): void;
18
+ addEventListener(type: "close", listener: (event: EditableArtifactWebSocketCloseEvent) => void): void;
19
+ removeEventListener(type: "open", listener: () => void): void;
20
+ removeEventListener(type: "message", listener: (event: EditableArtifactWebSocketMessageEvent) => void): void;
21
+ removeEventListener(type: "error", listener: () => void): void;
22
+ removeEventListener(type: "close", listener: (event: EditableArtifactWebSocketCloseEvent) => void): void;
23
+ };
24
+ export type CreateEditableArtifactHttpLiveTransportOptions = Readonly<{
25
+ baseUrl: string | URL;
26
+ workspaceId: string;
27
+ protocolVersion: number;
28
+ kernelVersion: string;
29
+ modelSchemaVersion: number;
30
+ apiKey?: string;
31
+ headers?: Readonly<Record<string, string>> | (() => Readonly<Record<string, string>>);
32
+ credentials?: RequestCredentials;
33
+ fetch?: typeof fetch;
34
+ webSocketUrl?: string | URL;
35
+ webSocketFactory?: (url: string, protocol: string) => EditableArtifactWebSocketLike;
36
+ allowInsecureDevelopmentTransport?: boolean;
37
+ maximumServerFrameBytes?: number;
38
+ maximumSnapshotBytes?: number;
39
+ handshakeTimeoutMs?: number;
40
+ submitTimeoutMs?: number;
41
+ }>;
42
+ /**
43
+ * Production HTTP + authenticated binary WebSocket transport. The one-use
44
+ * ticket is sent only inside the first OGALV frame, never in the socket URL.
45
+ */
46
+ export declare function createEditableArtifactHttpLiveTransport(options: CreateEditableArtifactHttpLiveTransportOptions): EditableArtifactSyncTransport;
@@ -0,0 +1,19 @@
1
+ export { createEditableArtifactSyncController, editableArtifactCacheNamespace, type CreateEditableArtifactSyncControllerOptions, type EditableArtifactCacheAuthority, type EditableArtifactQueueCommandsInput, type EditableArtifactSyncController, } from "./controller.js";
2
+ export { createBrowserEditableArtifactSession, createEditableArtifactReplicaId, } from "./browser-session.js";
3
+ export type { CreateBrowserEditableArtifactSessionOptions, EditableArtifactBrowserRuntime, } from "./browser-session.js";
4
+ export { EditableArtifactSyncError, EditableArtifactTransportError } from "./errors.js";
5
+ export type { EditableArtifactSyncErrorCode } from "./errors.js";
6
+ export { createEditableArtifactHttpLiveTransport } from "./http-live-transport.js";
7
+ export type { CreateEditableArtifactHttpLiveTransportOptions, EditableArtifactWebSocketCloseEvent, EditableArtifactWebSocketLike, EditableArtifactWebSocketMessageEvent, } from "./http-live-transport.js";
8
+ export { EditableArtifactStorageConflictError, IndexedDbEditableArtifactStorage, MemoryEditableArtifactStorage, } from "./storage.js";
9
+ export type { EditableArtifactAppendCommittedInput, EditableArtifactExpectedStoredHead, EditableArtifactStoragePort, EditableArtifactStorageScope, IndexedDbEditableArtifactStorageOptions, } from "./storage.js";
10
+ export { EditableArtifactSyncPool } from "./pool.js";
11
+ export type { EditableArtifactSyncControllerFactory, EditableArtifactSyncLease } from "./pool.js";
12
+ export { createEditableArtifactSession } from "./session.js";
13
+ export type { CreateEditableArtifactSessionOptions, ApplySerializedArtifactCommandsOptions, ApplySpreadsheetCommandsOptions, CreateDocumentParagraphInput, CreateDocumentParagraphResult, CreatePresentationSlideInput, CreatePresentationSlideResult, CreateSpreadsheetSheetInput, CreateSpreadsheetSheetResult, EditableArtifactSession, EditableSpreadsheetMetadataListener, EditableSpreadsheetViewportListener, EditableSpreadsheetViewportSubscriptionOptions, } from "./session.js";
14
+ export type { EditableArtifactBootstrap, EditableArtifactBlockedPending, EditableArtifactCausalEntry, EditableArtifactCausalFrontier, EditableArtifactCommittedTransaction, EditableArtifactId, EditableArtifactModality, EditableArtifactLiveClose, EditableArtifactLiveConnection, EditableArtifactLiveLimits, EditableArtifactLiveMessage, EditableArtifactPendingTransaction, EditableArtifactSerializedCommittedTransaction, EditableArtifactSerializedModality, EditableArtifactSerializedPendingTransaction, EditableArtifactSerializedSnapshot, EditableArtifactReplayPage, EditableArtifactSnapshot, EditableArtifactSpreadsheetCommittedTransaction, EditableArtifactSpreadsheetPendingTransaction, EditableArtifactSpreadsheetSnapshot, EditableArtifactStoredReplica, EditableArtifactSubmitReceipt, EditableArtifactSyncListener, EditableArtifactSyncScheduler, EditableArtifactSyncState, EditableArtifactSyncTicket, EditableArtifactSyncTransport, EditableArtifactSyncView, EditableArtifactWorkerKernel, EditableDocumentProjection, EditableDocumentQuery, EditablePresentationProjection, EditablePresentationQuery, EditablePresentationEditorSlideProjection, EditablePresentationEditorSlideQuery, EditablePresentationSlideCatalogProjection, EditablePresentationSlideCatalogQuery, EditableSpreadsheetCellValue, EditableSpreadsheetFormulaError, EditableSpreadsheetMetadataProjection, EditableSpreadsheetMetadataQuery, EditableSpreadsheetProjectedCell, EditableSpreadsheetSheetMetadata, EditableSpreadsheetUsedBounds, EditableSpreadsheetViewportProjection, EditableSpreadsheetViewportQuery, } from "./types.js";
15
+ export { ArtifactWorkerClientError, createBrowserEditableArtifactWorkerKernel, } from "./worker/browser-client.js";
16
+ export type { ArtifactWorkerClientEndpoint, ArtifactWorkerClientErrorEvent, ArtifactWorkerClientMessageEvent, BrowserEditableArtifactWorkerKernel, CreateBrowserEditableArtifactWorkerKernelOptions, } from "./worker/browser-client.js";
17
+ export { SPREADSHEET_ARTIFACT_COMMAND_VERSION, editableArtifactStableId, spreadsheetSheetId, type SpreadsheetArtifactCommandBatch, type SpreadsheetCellInput, type SpreadsheetSheetGeneration, } from "@opengeni/contracts/spreadsheet-artifact-commands";
18
+ export { DOCUMENT_ARTIFACT_COMMAND_VERSION, encodeDocumentArtifactCommandBatch, type DocumentArtifactCommand, type DocumentArtifactCommandBatch, type DocumentArtifactCommentReply, type DocumentArtifactId, type DocumentArtifactPageGeometry, type DocumentArtifactPageGeometryProjection, type DocumentArtifactParagraphStyle, type DocumentArtifactProjection, type DocumentArtifactProjectionItem, type DocumentArtifactQuery, type DocumentArtifactQueryLimits, type DocumentArtifactTableStyle, type DocumentArtifactTextRange, type DocumentArtifactTextRun, type DocumentArtifactTextStyle, type DocumentArtifactTextStylePatch, } from "@opengeni/contracts/document-artifact-commands";
19
+ export { PRESENTATION_ARTIFACT_COMMAND_VERSION, PRESENTATION_ARTIFACT_QUERY_MAX_NODES, PRESENTATION_ARTIFACT_QUERY_MAX_SLIDES, PRESENTATION_ARTIFACT_QUERY_MAX_TEXT_BYTES, PRESENTATION_ARTIFACT_QUERY_RESPONSE_MAX_BYTES, encodePresentationArtifactCommandBatch, type PresentationArtifactEditorSceneNode, type PresentationArtifactEditorSlideResponse, type PresentationArtifactFill, type PresentationArtifactLine, type PresentationArtifactNodeKind, type PresentationArtifactOwner, type PresentationArtifactRect, type PresentationArtifactRichText, type PresentationArtifactCommand, type PresentationArtifactCommandBatch, type PresentationArtifactSlideCatalogItem, type PresentationArtifactSlideCatalogResponse, type PresentationArtifactSlideLayoutFacts, type PresentationArtifactTableCell, type PresentationArtifactTextParagraph, type PresentationArtifactTextRun, type PresentationArtifactTextStyle, type PresentationArtifactTransform, } from "@opengeni/contracts/presentation-artifact-commands";
@@ -0,0 +1,15 @@
1
+ import { type CreateEditableArtifactSyncControllerOptions, type EditableArtifactSyncController } from "./controller.js";
2
+ import type { EditableArtifactId } from "./types.js";
3
+ export type EditableArtifactSyncLease = {
4
+ controller: EditableArtifactSyncController;
5
+ release: () => void;
6
+ };
7
+ export type EditableArtifactSyncControllerFactory = (artifactId: EditableArtifactId) => CreateEditableArtifactSyncControllerOptions;
8
+ /** Owns one ref-counted controller per exact auth/cache authority + artifact. */
9
+ export declare class EditableArtifactSyncPool {
10
+ private readonly optionsFor;
11
+ private readonly entries;
12
+ constructor(optionsFor: EditableArtifactSyncControllerFactory);
13
+ acquire(artifactId: EditableArtifactId): EditableArtifactSyncLease;
14
+ get size(): number;
15
+ }
@@ -0,0 +1,96 @@
1
+ import { type SpreadsheetArtifactCommandBatch, type SpreadsheetSheetPrecondition } from "@opengeni/contracts/editable-artifacts";
2
+ import { type DocumentArtifactCommandBatch, type DocumentArtifactParagraphStyle, type DocumentArtifactStoryTarget, type DocumentArtifactTextRun } from "@opengeni/contracts/document-artifact-commands";
3
+ import { type PresentationArtifactCommandBatch, type PresentationArtifactFill } from "@opengeni/contracts/presentation-artifact-commands";
4
+ import { type CreateEditableArtifactSyncControllerOptions, type EditableArtifactQueueCommandsInput } from "./controller.js";
5
+ import type { EditableArtifactPendingTransaction, EditableArtifactModality, EditableDocumentProjection, EditableDocumentQuery, EditablePresentationProjection, EditablePresentationQuery, EditablePresentationEditorSlideProjection, EditablePresentationEditorSlideQuery, EditablePresentationSlideCatalogProjection, EditablePresentationSlideCatalogQuery, EditableArtifactSyncListener, EditableArtifactSyncView, EditableArtifactWorkerKernel, EditableSpreadsheetMetadataProjection, EditableSpreadsheetMetadataQuery, EditableSpreadsheetViewportProjection, EditableSpreadsheetViewportQuery } from "./types.js";
6
+ export type CreateEditableArtifactSessionOptions = Omit<CreateEditableArtifactSyncControllerOptions, "kernel" | "storage"> & Readonly<{
7
+ /** Dedicated Worker client; canonical artifact state never enters the UI thread. */
8
+ worker: EditableArtifactWorkerKernel;
9
+ /** Defaults to the browser IndexedDB WAL/verified-replica store. */
10
+ storage?: CreateEditableArtifactSyncControllerOptions["storage"];
11
+ /** Close/dispose the Worker when this session closes. Defaults to true. */
12
+ ownsWorker?: boolean;
13
+ }>;
14
+ export type EditableSpreadsheetViewportListener = (projection: EditableSpreadsheetViewportProjection) => void;
15
+ export type EditableSpreadsheetViewportSubscriptionOptions = Readonly<{
16
+ onError?: (error: Error) => void;
17
+ }>;
18
+ export type EditableSpreadsheetMetadataListener = (projection: EditableSpreadsheetMetadataProjection) => void;
19
+ export type ApplySpreadsheetCommandsOptions = Readonly<{
20
+ selectiveUndoTargets?: readonly string[];
21
+ clientTransactionId?: string;
22
+ }>;
23
+ export type ApplySerializedArtifactCommandsOptions = Readonly<{
24
+ clientTransactionId?: string;
25
+ }>;
26
+ export type CreateSpreadsheetSheetInput = Readonly<{
27
+ name: string;
28
+ after?: SpreadsheetSheetPrecondition | null;
29
+ /** Optional stable id for a host retry; normally allocated by the SDK. */
30
+ sheetId?: string;
31
+ clientTransactionId?: string;
32
+ }>;
33
+ export type CreateSpreadsheetSheetResult = Readonly<{
34
+ sheetId: string;
35
+ pending: EditableArtifactPendingTransaction;
36
+ }>;
37
+ export type CreateDocumentParagraphInput = Readonly<{
38
+ target?: DocumentArtifactStoryTarget;
39
+ runs?: readonly DocumentArtifactTextRun[];
40
+ style?: DocumentArtifactParagraphStyle;
41
+ /** Optional stable id for a host retry; normally allocated by the SDK. */
42
+ paragraphId?: string;
43
+ clientTransactionId?: string;
44
+ }>;
45
+ export type CreateDocumentParagraphResult = Readonly<{
46
+ paragraphId: string;
47
+ pending: EditableArtifactPendingTransaction;
48
+ }>;
49
+ export type CreatePresentationSlideInput = Readonly<{
50
+ index: number;
51
+ title?: string;
52
+ layoutId?: string | null;
53
+ background?: PresentationArtifactFill;
54
+ /** Optional stable id for a host retry; normally allocated by the SDK. */
55
+ slideId?: string;
56
+ clientTransactionId?: string;
57
+ }>;
58
+ export type CreatePresentationSlideResult = Readonly<{
59
+ slideId: string;
60
+ pending: EditableArtifactPendingTransaction;
61
+ }>;
62
+ /**
63
+ * Public browser editing session. It owns sync, WAL recovery, live replay, and
64
+ * one Worker-resident speculative kernel. The main thread sees only bounded
65
+ * immutable projections and authored command receipts.
66
+ */
67
+ export interface EditableArtifactSession {
68
+ readonly artifactId: string;
69
+ readonly modality: EditableArtifactModality;
70
+ start(): void;
71
+ whenReady(): Promise<void>;
72
+ close(): Promise<void>;
73
+ getView(): EditableArtifactSyncView;
74
+ subscribe(listener: EditableArtifactSyncListener): () => void;
75
+ queueCommands(input: EditableArtifactQueueCommandsInput): Promise<EditableArtifactPendingTransaction>;
76
+ /** Pure OGASC encoding followed by the ordinary Worker/WAL authoring path. */
77
+ applySpreadsheetCommands(batch: SpreadsheetArtifactCommandBatch, options?: ApplySpreadsheetCommandsOptions): Promise<EditableArtifactPendingTransaction>;
78
+ applyDocumentCommands(batch: DocumentArtifactCommandBatch, options?: ApplySerializedArtifactCommandsOptions): Promise<EditableArtifactPendingTransaction>;
79
+ applyPresentationCommands(batch: PresentationArtifactCommandBatch, options?: ApplySerializedArtifactCommandsOptions): Promise<EditableArtifactPendingTransaction>;
80
+ /** Allocates a collision-resistant offline sheet id and submits one OGASC create. */
81
+ createSpreadsheetSheet(input: CreateSpreadsheetSheetInput): Promise<CreateSpreadsheetSheetResult>;
82
+ /** Allocates a collision-resistant id in the document namespace and appends one paragraph. */
83
+ createDocumentParagraph(input?: CreateDocumentParagraphInput): Promise<CreateDocumentParagraphResult>;
84
+ /** Allocates a collision-resistant stable id and inserts one slide. */
85
+ createPresentationSlide(input: CreatePresentationSlideInput): Promise<CreatePresentationSlideResult>;
86
+ querySpreadsheetViewport(query: EditableSpreadsheetViewportQuery): Promise<EditableSpreadsheetViewportProjection>;
87
+ subscribeSpreadsheetViewport(query: EditableSpreadsheetViewportQuery, listener: EditableSpreadsheetViewportListener, options?: EditableSpreadsheetViewportSubscriptionOptions): () => void;
88
+ querySpreadsheetMetadata(query?: EditableSpreadsheetMetadataQuery): Promise<EditableSpreadsheetMetadataProjection>;
89
+ subscribeSpreadsheetMetadata(query: EditableSpreadsheetMetadataQuery, listener: EditableSpreadsheetMetadataListener, options?: EditableSpreadsheetViewportSubscriptionOptions): () => void;
90
+ queryDocument(query: EditableDocumentQuery): Promise<EditableDocumentProjection>;
91
+ queryPresentation(query: EditablePresentationQuery): Promise<EditablePresentationProjection>;
92
+ queryPresentationSlideCatalog(query: EditablePresentationSlideCatalogQuery): Promise<EditablePresentationSlideCatalogProjection>;
93
+ queryPresentationEditorSlide(query: EditablePresentationEditorSlideQuery): Promise<EditablePresentationEditorSlideProjection>;
94
+ }
95
+ /** Creates and starts one independently durable browser editing session. */
96
+ export declare function createEditableArtifactSession(options: CreateEditableArtifactSessionOptions): EditableArtifactSession;
@@ -0,0 +1,72 @@
1
+ import type { EditableArtifactCommittedTransaction, EditableArtifactId, EditableArtifactModality, EditableArtifactPendingTransaction, EditableArtifactStoredReplica } from "./types.js";
2
+ /** Durable browser state required to resume one artifact without inventing state. */
3
+ export type EditableArtifactStoragePort = {
4
+ loadReplica: (scope: EditableArtifactStorageScope) => Promise<EditableArtifactStoredReplica | null>;
5
+ /** Rare full snapshot/resync replacement. Replaces the retained journal atomically. */
6
+ saveReplica: (scope: EditableArtifactStorageScope, replica: EditableArtifactStoredReplica, expectedHead: EditableArtifactExpectedStoredHead) => Promise<void>;
7
+ /** Hot path: exact-CAS one verified committed transaction onto the retained journal. */
8
+ appendCommitted: (scope: EditableArtifactStorageScope, input: EditableArtifactAppendCommittedInput) => Promise<void>;
9
+ /** Clears the reconstructible server state but deliberately preserves local edits. */
10
+ clearReplica: (scope: EditableArtifactStorageScope) => Promise<void>;
11
+ listPending: (scope: EditableArtifactStorageScope) => Promise<EditableArtifactPendingTransaction[]>;
12
+ putPending: (scope: EditableArtifactStorageScope, transaction: EditableArtifactPendingTransaction) => Promise<void>;
13
+ deletePending: (scope: EditableArtifactStorageScope, clientTransactionId: string) => Promise<void>;
14
+ };
15
+ /** Stable authorization/cache partition supplied by the authenticated host. */
16
+ export type EditableArtifactStorageScope = {
17
+ namespace: string;
18
+ artifactId: EditableArtifactId;
19
+ modality: EditableArtifactModality;
20
+ };
21
+ export type EditableArtifactAppendCommittedInput = {
22
+ artifactId: EditableArtifactId;
23
+ expectedCursor: number;
24
+ expectedStateHash: string;
25
+ transaction: EditableArtifactCommittedTransaction;
26
+ updatedAt: number;
27
+ };
28
+ export type EditableArtifactExpectedStoredHead = Readonly<{
29
+ cursor: number;
30
+ stateHash: string;
31
+ }> | null;
32
+ /** A stable id was reused for different content. Retrying cannot resolve this. */
33
+ export declare class EditableArtifactStorageConflictError extends Error {
34
+ readonly code: "editable_artifact_storage_conflict";
35
+ constructor(message: string);
36
+ }
37
+ /**
38
+ * Deterministic in-memory implementation for tests, SSR, and non-persistent
39
+ * hosts. All values cross the port by copy, matching IndexedDB structured-clone
40
+ * behavior and preventing callers from mutating retained authority by alias.
41
+ */
42
+ export declare class MemoryEditableArtifactStorage implements EditableArtifactStoragePort {
43
+ #private;
44
+ loadReplica(scope: EditableArtifactStorageScope): Promise<EditableArtifactStoredReplica | null>;
45
+ saveReplica(scope: EditableArtifactStorageScope, replica: EditableArtifactStoredReplica, expectedHead: EditableArtifactExpectedStoredHead): Promise<void>;
46
+ appendCommitted(scope: EditableArtifactStorageScope, input: EditableArtifactAppendCommittedInput): Promise<void>;
47
+ clearReplica(scope: EditableArtifactStorageScope): Promise<void>;
48
+ listPending(scope: EditableArtifactStorageScope): Promise<EditableArtifactPendingTransaction[]>;
49
+ putPending(scope: EditableArtifactStorageScope, transaction: EditableArtifactPendingTransaction): Promise<void>;
50
+ deletePending(scope: EditableArtifactStorageScope, clientTransactionId: string): Promise<void>;
51
+ }
52
+ export type IndexedDbEditableArtifactStorageOptions = {
53
+ databaseName?: string;
54
+ indexedDB?: IDBFactory;
55
+ };
56
+ /**
57
+ * IndexedDB-backed browser storage. Writes that depend on an existing value do
58
+ * their comparison and mutation in the same IDB transaction, so tabs cannot
59
+ * silently replace a newer cursor or reuse an idempotency key for other bytes.
60
+ */
61
+ export declare class IndexedDbEditableArtifactStorage implements EditableArtifactStoragePort {
62
+ #private;
63
+ constructor(options?: IndexedDbEditableArtifactStorageOptions);
64
+ loadReplica(scope: EditableArtifactStorageScope): Promise<EditableArtifactStoredReplica | null>;
65
+ saveReplica(scope: EditableArtifactStorageScope, replica: EditableArtifactStoredReplica, expectedHead: EditableArtifactExpectedStoredHead): Promise<void>;
66
+ appendCommitted(scope: EditableArtifactStorageScope, input: EditableArtifactAppendCommittedInput): Promise<void>;
67
+ clearReplica(scope: EditableArtifactStorageScope): Promise<void>;
68
+ listPending(scope: EditableArtifactStorageScope): Promise<EditableArtifactPendingTransaction[]>;
69
+ putPending(scope: EditableArtifactStorageScope, transaction: EditableArtifactPendingTransaction): Promise<void>;
70
+ deletePending(scope: EditableArtifactStorageScope, clientTransactionId: string): Promise<void>;
71
+ close(): Promise<void>;
72
+ }