@opengeni/contracts 1.0.1 → 2.3.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-authored-durable-text.d.ts +64 -0
- package/dist/atlassian.d.ts +1 -0
- package/dist/atlassian.js +14 -13
- package/dist/{chunk-Y3MLSLB4.js → chunk-3SIZGL3O.js} +42 -30
- package/dist/chunk-3SIZGL3O.js.map +1 -0
- package/dist/{chunk-JBCIY7QD.js → chunk-7RMTKFJW.js} +45 -22
- package/dist/chunk-7RMTKFJW.js.map +1 -0
- package/dist/{chunk-5UDNP7AO.js → chunk-MRWYRAS5.js} +56 -8
- package/dist/chunk-MRWYRAS5.js.map +1 -0
- package/dist/{chunk-LW7OH6CS.js → chunk-N6GRVXAJ.js} +6 -5
- package/dist/chunk-N6GRVXAJ.js.map +1 -0
- package/dist/{chunk-TZ6YEYN4.js → chunk-NVJMJWLL.js} +3 -1
- package/dist/chunk-NVJMJWLL.js.map +1 -0
- package/dist/chunk-PX3VCKAU.js +29 -0
- package/dist/chunk-PX3VCKAU.js.map +1 -0
- package/dist/{chunk-LSB7GRLG.js → chunk-TXTQIYCV.js} +15 -11
- package/dist/chunk-TXTQIYCV.js.map +1 -0
- package/dist/{chunk-NX5JNF4L.js → chunk-XW2RKNEU.js} +9410 -5799
- package/dist/chunk-XW2RKNEU.js.map +1 -0
- package/dist/{chunk-CADSX6UN.js → chunk-Y3KNXVTD.js} +2 -2
- package/dist/chunk-YBW5JSA3.js +251 -0
- package/dist/chunk-YBW5JSA3.js.map +1 -0
- package/dist/company-brain-governed-writes.d.ts +475 -0
- package/dist/company-brain.d.ts +398 -0
- package/dist/company-profile.d.ts +268 -0
- package/dist/connection-authority.d.ts +501 -0
- package/dist/connection-authority.js +364 -0
- package/dist/connection-authority.js.map +1 -0
- package/dist/connector-attachments.d.ts +95 -0
- package/dist/connector-attachments.js +51 -0
- package/dist/connector-attachments.js.map +1 -0
- package/dist/editable-artifact-codec-registry.d.ts +16 -7
- package/dist/editable-artifact-codec-registry.js +18 -8
- package/dist/editable-artifact-committed-transaction.d.ts +2 -2
- package/dist/editable-artifact-committed-transaction.js +2 -2
- package/dist/editable-artifact-live.d.ts +11 -12
- package/dist/editable-artifact-live.js +111 -46
- package/dist/editable-artifact-live.js.map +1 -1
- package/dist/editable-artifact-serialized-commit.d.ts +2 -1
- package/dist/editable-artifact-serialized-commit.js +9 -8
- package/dist/editable-artifact-versions.d.ts +20 -5
- package/dist/editable-artifact-versions.js +23 -5
- package/dist/editable-artifacts.d.ts +2 -0
- package/dist/editable-artifacts.js +51 -39
- package/dist/google-drive.d.ts +1 -0
- package/dist/google-drive.js +14 -13
- package/dist/google-drive.js.map +1 -1
- package/dist/governed-learning-activation.d.ts +154 -0
- package/dist/governed-learning-evaluator.d.ts +152 -0
- package/dist/index.d.ts +12426 -1313
- package/dist/index.js +855 -115
- package/dist/interaction.d.ts +68 -0
- package/dist/knowledge.d.ts +119 -0
- package/dist/organization-membership-lifecycle.d.ts +516 -0
- package/dist/permissions.d.ts +52 -0
- package/dist/personal-github.d.ts +319 -0
- package/dist/personal-github.js +209 -0
- package/dist/personal-github.js.map +1 -0
- package/dist/preference-registry.d.ts +17 -0
- package/dist/remember.d.ts +331 -0
- package/dist/sandbox-file-artifacts.d.ts +56 -0
- package/dist/sandbox-snapshots.d.ts +21 -0
- package/dist/slack-bot-scopes.d.ts +34 -14
- package/dist/slack-bot-scopes.js +5 -1
- package/dist/spreadsheet-artifact-commands.d.ts +2 -3
- package/dist/spreadsheet-artifact-commands.js +4 -2
- package/dist/spreadsheet-artifact-query.js +3 -2
- package/dist/task-notes.d.ts +42 -1
- package/dist/tool-result-spill.d.ts +16 -0
- package/dist/workspace-instruction-policies.d.ts +81 -0
- package/dist/workspace-learning-administration.d.ts +289 -0
- package/package.json +13 -1
- package/src/agent-authored-durable-text.ts +105 -0
- package/src/company-brain-governed-writes.ts +356 -0
- package/src/company-brain.ts +201 -0
- package/src/company-profile.ts +122 -1
- package/src/connection-authority.ts +413 -0
- package/src/connector-attachments.ts +327 -0
- package/src/editable-artifact-codec-registry.ts +55 -17
- package/src/editable-artifact-committed-transaction.ts +44 -31
- package/src/editable-artifact-live.ts +123 -57
- package/src/editable-artifact-serialized-commit.ts +2 -1
- package/src/editable-artifact-versions.ts +26 -5
- package/src/editable-artifacts.ts +2 -0
- package/src/governed-learning-activation.ts +191 -0
- package/src/governed-learning-evaluator.ts +176 -0
- package/src/index.ts +3148 -369
- package/src/interaction.ts +55 -1
- package/src/knowledge.ts +118 -6
- package/src/organization-membership-lifecycle.ts +330 -0
- package/src/permissions.ts +55 -0
- package/src/personal-github.ts +267 -0
- package/src/preference-registry.ts +17 -0
- package/src/remember.ts +242 -0
- package/src/sandbox-file-artifacts.ts +65 -0
- package/src/sandbox-snapshots.ts +78 -0
- package/src/slack-bot-scopes.ts +81 -9
- package/src/spreadsheet-artifact-commands.ts +12 -13
- package/src/task-notes.ts +14 -1
- package/src/tool-result-spill.ts +35 -0
- package/src/workspace-instruction-policies.ts +30 -0
- package/src/workspace-learning-administration.ts +88 -0
- package/dist/chunk-5UDNP7AO.js.map +0 -1
- package/dist/chunk-BVGIYW7D.js +0 -11
- package/dist/chunk-BVGIYW7D.js.map +0 -1
- package/dist/chunk-JBCIY7QD.js.map +0 -1
- package/dist/chunk-LSB7GRLG.js.map +0 -1
- package/dist/chunk-LW7OH6CS.js.map +0 -1
- package/dist/chunk-NX5JNF4L.js.map +0 -1
- package/dist/chunk-TZ6YEYN4.js.map +0 -1
- package/dist/chunk-Y3MLSLB4.js.map +0 -1
- /package/dist/{chunk-CADSX6UN.js.map → chunk-Y3KNXVTD.js.map} +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Budgets and authoring style for durable text an **agent** writes on a user's
|
|
3
|
+
* behalf.
|
|
4
|
+
*
|
|
5
|
+
* The budget follows the cost, and the cost differs per destination:
|
|
6
|
+
*
|
|
7
|
+
* - A workspace instruction policy is composed verbatim into the prompt of
|
|
8
|
+
* every session it applies to, for as long as it stays active. A global
|
|
9
|
+
* charter or global policy applies to every session in the workspace; a role
|
|
10
|
+
* policy applies to every session bound to that role. At most three entries
|
|
11
|
+
* compose at once (charter, global policy, matching role policy), so the
|
|
12
|
+
* standing ceiling this budget implies is three times the per-entry cap.
|
|
13
|
+
* - A preference is cheaper and in a different way: only its short title and
|
|
14
|
+
* description descriptors are prompt-composed, while the full content is
|
|
15
|
+
* retrieved on demand behind the exact attempt's retrieval handle. Its length
|
|
16
|
+
* is therefore retrieval cost, not standing prompt cost, which is why it gets
|
|
17
|
+
* more room rather than less.
|
|
18
|
+
* - A company profile is the largest always-on surface: every field is
|
|
19
|
+
* mandatory prompt context in every session across the whole organization.
|
|
20
|
+
* - Knowledge is retrieval evidence and never joins the always-composed prefix.
|
|
21
|
+
*
|
|
22
|
+
* These caps deliberately bind only agent-authored writes. The human-facing
|
|
23
|
+
* limits (`WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS`,
|
|
24
|
+
* `PREFERENCE_REGISTRY_CONTENT_MAX_CHARS`, `COMPANY_PROFILE_SCALAR_MAX_CHARS`,
|
|
25
|
+
* `COMPANY_PROFILE_ENTRY_MAX_CHARS`, `COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES`)
|
|
26
|
+
* are unchanged: a person editing in the UI is making a deliberate, visible
|
|
27
|
+
* choice, and lowering their limit would reject text they already typed.
|
|
28
|
+
* Existing stored revisions are never rewritten; only new agent writes are
|
|
29
|
+
* bounded.
|
|
30
|
+
*/
|
|
31
|
+
/** One imperative rule, in 1-3 sentences, fits comfortably under this. */
|
|
32
|
+
export declare const AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_MAX_CHARS = 600;
|
|
33
|
+
/** Retrieved on demand rather than always composed, so a little more room. */
|
|
34
|
+
export declare const AGENT_AUTHORED_PREFERENCE_CONTENT_MAX_CHARS = 1200;
|
|
35
|
+
/** `identity` and `mission`: a couple of sentences, not a positioning document. */
|
|
36
|
+
export declare const AGENT_AUTHORED_COMPANY_PROFILE_SCALAR_MAX_CHARS = 400;
|
|
37
|
+
/** One product, customer, goal, or constraint: a phrase or a single sentence. */
|
|
38
|
+
export declare const AGENT_AUTHORED_COMPANY_PROFILE_ENTRY_MAX_CHARS = 200;
|
|
39
|
+
/** Whole canonical profile, mandatory in every session across the organization. */
|
|
40
|
+
export declare const AGENT_AUTHORED_COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES = 4096;
|
|
41
|
+
export declare const AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_TOO_LONG_MESSAGE: string;
|
|
42
|
+
export declare const AGENT_AUTHORED_PREFERENCE_CONTENT_TOO_LONG_MESSAGE: string;
|
|
43
|
+
export declare const AGENT_AUTHORED_COMPANY_PROFILE_TOO_LONG_MESSAGE: string;
|
|
44
|
+
/**
|
|
45
|
+
* Lane-agnostic guidance for the one `remember` content field, whose schema
|
|
46
|
+
* bound has to admit the widest lane. Without it an over-long rule would be
|
|
47
|
+
* refused with a generic "expected length <= 4000" that points at the wrong
|
|
48
|
+
* number entirely.
|
|
49
|
+
*/
|
|
50
|
+
export declare const AGENT_AUTHORED_REMEMBER_CONTENT_TOO_LONG_MESSAGE: string;
|
|
51
|
+
/**
|
|
52
|
+
* The shape rule the model reads on every tool that authors a durable *rule or
|
|
53
|
+
* preference*. Deliberately not reused for the company profile, which is a
|
|
54
|
+
* descriptive profile rather than an instruction and needs its own wording.
|
|
55
|
+
*/
|
|
56
|
+
export declare const AGENT_AUTHORED_DURABLE_TEXT_STYLE: string;
|
|
57
|
+
/**
|
|
58
|
+
* Actionable over-budget message including the text the caller actually sent,
|
|
59
|
+
* so the model can see how far over it is instead of guessing.
|
|
60
|
+
*/
|
|
61
|
+
export declare function agentAuthoredDurableTextTooLongMessage(input: {
|
|
62
|
+
kind: "instruction_policy" | "preference";
|
|
63
|
+
actualChars: number;
|
|
64
|
+
}): string;
|
package/dist/atlassian.d.ts
CHANGED
|
@@ -180,6 +180,7 @@ export type AtlassianBrowseItem = z.infer<typeof AtlassianBrowseItem>;
|
|
|
180
180
|
export declare const AtlassianBrowseResponse: z.ZodObject<{
|
|
181
181
|
connection: z.ZodLazy<z.ZodObject<{
|
|
182
182
|
id: z.ZodString;
|
|
183
|
+
authorityId: z.ZodOptional<z.ZodString>;
|
|
183
184
|
accountId: z.ZodString;
|
|
184
185
|
workspaceId: z.ZodString;
|
|
185
186
|
subjectId: z.ZodNullable<z.ZodString>;
|
package/dist/atlassian.js
CHANGED
|
@@ -17,23 +17,24 @@ import {
|
|
|
17
17
|
AtlassianSyncCadence,
|
|
18
18
|
SaveAtlassianSourcesRequest,
|
|
19
19
|
atlassianScopesAllowRead
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-5UDNP7AO.js";
|
|
23
|
-
import "./chunk-Y3MLSLB4.js";
|
|
24
|
-
import "./chunk-CM6BMECR.js";
|
|
20
|
+
} from "./chunk-XW2RKNEU.js";
|
|
21
|
+
import "./chunk-MRWYRAS5.js";
|
|
25
22
|
import "./chunk-JUFK3T4Q.js";
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-WYBDERIY.js";
|
|
24
|
+
import "./chunk-N6GRVXAJ.js";
|
|
25
|
+
import "./chunk-3SIZGL3O.js";
|
|
26
|
+
import "./chunk-NVJMJWLL.js";
|
|
27
|
+
import "./chunk-7RMTKFJW.js";
|
|
28
|
+
import "./chunk-Y3KNXVTD.js";
|
|
31
29
|
import "./chunk-RIY7GYQS.js";
|
|
32
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-YRKRZ6OF.js";
|
|
31
|
+
import "./chunk-CM6BMECR.js";
|
|
33
32
|
import "./chunk-D2HKF2EF.js";
|
|
34
33
|
import "./chunk-MYBZRDTY.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-TXTQIYCV.js";
|
|
35
|
+
import "./chunk-PX3VCKAU.js";
|
|
36
|
+
import "./chunk-M5ZGRVIQ.js";
|
|
37
|
+
import "./chunk-YBW5JSA3.js";
|
|
37
38
|
export {
|
|
38
39
|
ATLASSIAN_CREDENTIAL_LABEL,
|
|
39
40
|
ATLASSIAN_CREDENTIAL_ROLE,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
COMMITTED_TRANSACTION_PROTOCOL_VERSION
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PX3VCKAU.js";
|
|
4
4
|
|
|
5
5
|
// src/editable-artifact-committed-transaction.ts
|
|
6
6
|
var MAX_COMMITTED_TRANSACTION_BYTES = 8 * 1024 * 1024;
|
|
7
7
|
var MAX_COMMITTED_TRANSACTION_OPERATIONS = 4096;
|
|
8
8
|
var MAX_COMMITTED_TRANSACTION_CAUSAL_REPLICAS = 1e5;
|
|
9
9
|
var MAX_COMMITTED_TRANSACTION_CELLS = 1e6;
|
|
10
|
-
var MAGIC = new Uint8Array([79, 71, 65, 67, 79, 48, 48,
|
|
10
|
+
var MAGIC = new Uint8Array([79, 71, 65, 67, 79, 48, 48, 50]);
|
|
11
11
|
var HEADER_BYTES = 24;
|
|
12
12
|
var CHECKSUM_BYTES = 8;
|
|
13
13
|
var HASH_BYTES = 32;
|
|
@@ -16,6 +16,7 @@ var MAX_OPERATION_STRING_BYTES = 4 * 1024 * 1024;
|
|
|
16
16
|
var MAX_SAFE_U64_HIGH = 2097151;
|
|
17
17
|
var U32_SIZE = 4294967296;
|
|
18
18
|
var U32_MAX = 4294967295;
|
|
19
|
+
var MAX_DATE_MILLISECONDS = 8640000000000000n;
|
|
19
20
|
var FNV_OFFSET_LOW = 2216829733;
|
|
20
21
|
var FNV_OFFSET_HIGH = 3421674724;
|
|
21
22
|
var FNV_PRIME_LOW = 435;
|
|
@@ -23,37 +24,37 @@ var HEX = Array.from({ length: 256 }, (_, value) => value.toString(16).padStart(
|
|
|
23
24
|
function decodeCommittedTransactionSummary(bytes) {
|
|
24
25
|
assertInput(bytes);
|
|
25
26
|
if (bytes.byteLength > MAX_COMMITTED_TRANSACTION_BYTES) {
|
|
26
|
-
throw new RangeError("
|
|
27
|
+
throw new RangeError("OGACO002 envelope exceeds its byte limit");
|
|
27
28
|
}
|
|
28
29
|
if (bytes.byteLength < HEADER_BYTES + CHECKSUM_BYTES) {
|
|
29
|
-
throw new TypeError("truncated
|
|
30
|
+
throw new TypeError("truncated OGACO002 envelope");
|
|
30
31
|
}
|
|
31
32
|
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
32
33
|
for (let index = 0; index < MAGIC.byteLength; index += 1) {
|
|
33
|
-
if (bytes[index] !== MAGIC[index]) throw new TypeError("invalid
|
|
34
|
+
if (bytes[index] !== MAGIC[index]) throw new TypeError("invalid OGACO002 magic");
|
|
34
35
|
}
|
|
35
36
|
const version = view.getUint16(8, true);
|
|
36
37
|
if (version !== COMMITTED_TRANSACTION_PROTOCOL_VERSION) {
|
|
37
|
-
throw new TypeError(`unsupported
|
|
38
|
+
throw new TypeError(`unsupported OGACO002 version: ${version}`);
|
|
38
39
|
}
|
|
39
40
|
if (view.getUint16(10, true) !== 0) {
|
|
40
|
-
throw new TypeError("reserved
|
|
41
|
+
throw new TypeError("reserved OGACO002 header bits are set");
|
|
41
42
|
}
|
|
42
43
|
const operationCount = view.getUint32(12, true);
|
|
43
44
|
if (operationCount === 0 || operationCount > MAX_COMMITTED_TRANSACTION_OPERATIONS) {
|
|
44
|
-
throw new RangeError("
|
|
45
|
+
throw new RangeError("OGACO002 operation count is outside its canonical bounds");
|
|
45
46
|
}
|
|
46
|
-
const payloadLength = safeU64At(view, 16, "
|
|
47
|
-
const payloadEnd = checkedAdd(HEADER_BYTES, payloadLength, "
|
|
48
|
-
const expectedLength = checkedAdd(payloadEnd, CHECKSUM_BYTES, "
|
|
47
|
+
const payloadLength = safeU64At(view, 16, "OGACO002 payload length", false);
|
|
48
|
+
const payloadEnd = checkedAdd(HEADER_BYTES, payloadLength, "OGACO002 payload length");
|
|
49
|
+
const expectedLength = checkedAdd(payloadEnd, CHECKSUM_BYTES, "OGACO002 envelope length");
|
|
49
50
|
if (bytes.byteLength !== expectedLength) {
|
|
50
51
|
throw new TypeError(
|
|
51
|
-
bytes.byteLength < expectedLength ? "truncated
|
|
52
|
+
bytes.byteLength < expectedLength ? "truncated OGACO002 payload" : "trailing bytes after OGACO002 envelope"
|
|
52
53
|
);
|
|
53
54
|
}
|
|
54
55
|
const [checksumLow, checksumHigh] = fnv1a64(bytes, payloadEnd);
|
|
55
56
|
if (view.getUint32(payloadEnd, true) !== checksumLow || view.getUint32(payloadEnd + 4, true) !== checksumHigh) {
|
|
56
|
-
throw new TypeError("
|
|
57
|
+
throw new TypeError("OGACO002 checksum mismatch");
|
|
57
58
|
}
|
|
58
59
|
const reader = new Reader(bytes, HEADER_BYTES, payloadEnd);
|
|
59
60
|
const transactionId = reader.stableId("transaction id");
|
|
@@ -69,7 +70,7 @@ function decodeCommittedTransactionSummary(bytes) {
|
|
|
69
70
|
for (let index = 0; index < operationCount; index += 1) {
|
|
70
71
|
const operationId = reader.stableId(`operation ${index} id`);
|
|
71
72
|
if (seenOperationIds.has(operationId)) {
|
|
72
|
-
throw new TypeError("
|
|
73
|
+
throw new TypeError("OGACO002 operation ids must be unique");
|
|
73
74
|
}
|
|
74
75
|
seenOperationIds.add(operationId);
|
|
75
76
|
operationIds.push(operationId);
|
|
@@ -209,7 +210,7 @@ var Reader = class {
|
|
|
209
210
|
const endRow = this.u32("clear range end row");
|
|
210
211
|
const endColumn = this.u32("clear range end column");
|
|
211
212
|
if (startRow > endRow || startColumn > endColumn) {
|
|
212
|
-
throw new TypeError("
|
|
213
|
+
throw new TypeError("OGACO002 clear range is not normalized");
|
|
213
214
|
}
|
|
214
215
|
return totalCells;
|
|
215
216
|
}
|
|
@@ -217,7 +218,7 @@ var Reader = class {
|
|
|
217
218
|
this.stableId("selective undo target");
|
|
218
219
|
return totalCells;
|
|
219
220
|
default:
|
|
220
|
-
throw new TypeError(`invalid
|
|
221
|
+
throw new TypeError(`invalid OGACO002 collaboration command tag: ${tag}`);
|
|
221
222
|
}
|
|
222
223
|
}
|
|
223
224
|
skipSetCells(totalCells) {
|
|
@@ -227,18 +228,18 @@ var Reader = class {
|
|
|
227
228
|
const rows = this.u32("cell block rows");
|
|
228
229
|
const columns = this.u32("cell block columns");
|
|
229
230
|
if (rows === 0 || columns === 0) {
|
|
230
|
-
throw new TypeError("
|
|
231
|
+
throw new TypeError("OGACO002 cell block dimensions must be nonzero");
|
|
231
232
|
}
|
|
232
233
|
if (anchorRow > U32_MAX - (rows - 1) || anchorColumn > U32_MAX - (columns - 1)) {
|
|
233
|
-
throw new RangeError("
|
|
234
|
+
throw new RangeError("OGACO002 cell block coordinates overflow u32");
|
|
234
235
|
}
|
|
235
236
|
if (rows > Math.floor(MAX_COMMITTED_TRANSACTION_CELLS / columns)) {
|
|
236
|
-
throw new RangeError("
|
|
237
|
+
throw new RangeError("OGACO002 cell block exceeds its cell limit");
|
|
237
238
|
}
|
|
238
239
|
const cellCount = rows * columns;
|
|
239
240
|
const nextTotal = totalCells + cellCount;
|
|
240
241
|
if (nextTotal > MAX_COMMITTED_TRANSACTION_CELLS) {
|
|
241
|
-
throw new RangeError("
|
|
242
|
+
throw new RangeError("OGACO002 transaction exceeds its cell limit");
|
|
242
243
|
}
|
|
243
244
|
for (let index = 0; index < cellCount; index += 1) this.skipCell();
|
|
244
245
|
return nextTotal;
|
|
@@ -247,10 +248,11 @@ var Reader = class {
|
|
|
247
248
|
const formulaTag = this.u8("cell formula tag");
|
|
248
249
|
if (formulaTag === 1) {
|
|
249
250
|
if (this.skipString("cell formula") === 0) {
|
|
250
|
-
throw new TypeError("
|
|
251
|
+
throw new TypeError("OGACO002 formula must not be empty");
|
|
251
252
|
}
|
|
253
|
+
return;
|
|
252
254
|
} else if (formulaTag !== 0) {
|
|
253
|
-
throw new TypeError(`invalid
|
|
255
|
+
throw new TypeError(`invalid OGACO002 cell formula tag: ${formulaTag}`);
|
|
254
256
|
}
|
|
255
257
|
const valueTag = this.u8("cell value tag");
|
|
256
258
|
switch (valueTag) {
|
|
@@ -267,8 +269,11 @@ var Reader = class {
|
|
|
267
269
|
case 5:
|
|
268
270
|
this.skipFormulaError();
|
|
269
271
|
return;
|
|
272
|
+
case 6:
|
|
273
|
+
this.skipDate();
|
|
274
|
+
return;
|
|
270
275
|
default:
|
|
271
|
-
throw new TypeError(`invalid
|
|
276
|
+
throw new TypeError(`invalid OGACO002 cell value tag: ${valueTag}`);
|
|
272
277
|
}
|
|
273
278
|
}
|
|
274
279
|
skipNumber() {
|
|
@@ -276,10 +281,17 @@ var Reader = class {
|
|
|
276
281
|
const low = this.#view.getUint32(offset, true);
|
|
277
282
|
const high = this.#view.getUint32(offset + 4, true);
|
|
278
283
|
if (low === 0 && high === 2147483648) {
|
|
279
|
-
throw new TypeError("
|
|
284
|
+
throw new TypeError("OGACO002 cell number uses negative zero");
|
|
280
285
|
}
|
|
281
286
|
if ((high & 2146435072) === 2146435072) {
|
|
282
|
-
throw new TypeError("
|
|
287
|
+
throw new TypeError("OGACO002 cell numbers must be finite");
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
skipDate() {
|
|
291
|
+
const offset = this.reserve(8, "cell date");
|
|
292
|
+
const milliseconds = this.#view.getBigInt64(offset, true);
|
|
293
|
+
if (milliseconds < -MAX_DATE_MILLISECONDS || milliseconds > MAX_DATE_MILLISECONDS) {
|
|
294
|
+
throw new TypeError("OGACO002 cell date is outside the ECMAScript range");
|
|
283
295
|
}
|
|
284
296
|
}
|
|
285
297
|
skipFormulaError() {
|
|
@@ -289,7 +301,7 @@ var Reader = class {
|
|
|
289
301
|
this.skipString("custom formula error");
|
|
290
302
|
return;
|
|
291
303
|
}
|
|
292
|
-
throw new TypeError(`invalid
|
|
304
|
+
throw new TypeError(`invalid OGACO002 formula error tag: ${tag}`);
|
|
293
305
|
}
|
|
294
306
|
skipGeneration(label) {
|
|
295
307
|
this.sheetObjectId(`${label} sheet id`);
|
|
@@ -305,15 +317,15 @@ var Reader = class {
|
|
|
305
317
|
return length;
|
|
306
318
|
}
|
|
307
319
|
done() {
|
|
308
|
-
if (this.#offset !== this.#end) throw new TypeError("trailing bytes in
|
|
320
|
+
if (this.#offset !== this.#end) throw new TypeError("trailing bytes in OGACO002 payload");
|
|
309
321
|
}
|
|
310
322
|
};
|
|
311
323
|
function assertInput(bytes) {
|
|
312
324
|
if (!(bytes instanceof Uint8Array)) {
|
|
313
|
-
throw new TypeError("
|
|
325
|
+
throw new TypeError("OGACO002 bytes must be a Uint8Array");
|
|
314
326
|
}
|
|
315
327
|
if (typeof SharedArrayBuffer !== "undefined" && bytes.buffer instanceof SharedArrayBuffer) {
|
|
316
|
-
throw new TypeError("
|
|
328
|
+
throw new TypeError("OGACO002 bytes must not use shared mutable memory");
|
|
317
329
|
}
|
|
318
330
|
}
|
|
319
331
|
function safeU64At(view, offset, label, positive) {
|
|
@@ -389,4 +401,4 @@ export {
|
|
|
389
401
|
MAX_COMMITTED_TRANSACTION_CELLS,
|
|
390
402
|
decodeCommittedTransactionSummary
|
|
391
403
|
};
|
|
392
|
-
//# sourceMappingURL=chunk-
|
|
404
|
+
//# sourceMappingURL=chunk-3SIZGL3O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/editable-artifact-committed-transaction.ts"],"sourcesContent":["/**\n * Strict, allocation-bounded inspection of canonical OGACO002 transactions.\n *\n * The Rust kernel remains the authority for applying operations. This decoder\n * validates the complete envelope and every typed operation so metadata after\n * the operation stream cannot be located by trusting attacker-controlled\n * lengths. It intentionally does not construct an editable artifact model.\n */\n\nimport { COMMITTED_TRANSACTION_PROTOCOL_VERSION } from \"./editable-artifact-versions\";\n\nexport { COMMITTED_TRANSACTION_PROTOCOL_VERSION } from \"./editable-artifact-versions\";\nexport const MAX_COMMITTED_TRANSACTION_BYTES = 8 * 1024 * 1024;\nexport const MAX_COMMITTED_TRANSACTION_OPERATIONS = 4_096;\nexport const MAX_COMMITTED_TRANSACTION_CAUSAL_REPLICAS = 100_000;\nexport const MAX_COMMITTED_TRANSACTION_CELLS = 1_000_000;\n\nconst MAGIC = new Uint8Array([0x4f, 0x47, 0x41, 0x43, 0x4f, 0x30, 0x30, 0x32]); // OGACO002\nconst HEADER_BYTES = 24;\nconst CHECKSUM_BYTES = 8;\nconst HASH_BYTES = 32;\nconst STABLE_ID_BYTES = 16;\nconst MAX_OPERATION_STRING_BYTES = 4 * 1024 * 1024;\nconst MAX_SAFE_U64_HIGH = 0x1f_ffff;\nconst U32_SIZE = 0x1_0000_0000;\nconst U32_MAX = 0xffff_ffff;\nconst MAX_DATE_MILLISECONDS = 8_640_000_000_000_000n;\nconst FNV_OFFSET_LOW = 0x8422_2325;\nconst FNV_OFFSET_HIGH = 0xcbf2_9ce4;\nconst FNV_PRIME_LOW = 0x01b3;\n\nconst HEX = Array.from({ length: 256 }, (_, value) => value.toString(16).padStart(2, \"0\"));\n\nexport type CommittedTransactionCausalEntry = Readonly<{\n replicaId: string;\n counter: number;\n}>;\n\nexport type CommittedTransactionSummary = Readonly<{\n operationProtocolVersion: typeof COMMITTED_TRANSACTION_PROTOCOL_VERSION;\n transactionId: string;\n dot: CommittedTransactionCausalEntry;\n resolvedCausalBase: readonly CommittedTransactionCausalEntry[];\n operationIds: readonly string[];\n priorStateHash: string;\n resultingCausalFrontier: readonly CommittedTransactionCausalEntry[];\n stateHash: string;\n}>;\n\n/**\n * Decodes only the metadata of one exact canonical OGACO002 byte envelope.\n *\n * This function is synchronous and never mutates or retains `bytes`. The\n * caller remains the owner of the exact canonical envelope.\n */\nexport function decodeCommittedTransactionSummary(bytes: Uint8Array): CommittedTransactionSummary {\n assertInput(bytes);\n if (bytes.byteLength > MAX_COMMITTED_TRANSACTION_BYTES) {\n throw new RangeError(\"OGACO002 envelope exceeds its byte limit\");\n }\n if (bytes.byteLength < HEADER_BYTES + CHECKSUM_BYTES) {\n throw new TypeError(\"truncated OGACO002 envelope\");\n }\n\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n for (let index = 0; index < MAGIC.byteLength; index += 1) {\n if (bytes[index] !== MAGIC[index]) throw new TypeError(\"invalid OGACO002 magic\");\n }\n\n const version = view.getUint16(8, true);\n if (version !== COMMITTED_TRANSACTION_PROTOCOL_VERSION) {\n throw new TypeError(`unsupported OGACO002 version: ${version}`);\n }\n if (view.getUint16(10, true) !== 0) {\n throw new TypeError(\"reserved OGACO002 header bits are set\");\n }\n\n const operationCount = view.getUint32(12, true);\n if (operationCount === 0 || operationCount > MAX_COMMITTED_TRANSACTION_OPERATIONS) {\n throw new RangeError(\"OGACO002 operation count is outside its canonical bounds\");\n }\n\n const payloadLength = safeU64At(view, 16, \"OGACO002 payload length\", false);\n const payloadEnd = checkedAdd(HEADER_BYTES, payloadLength, \"OGACO002 payload length\");\n const expectedLength = checkedAdd(payloadEnd, CHECKSUM_BYTES, \"OGACO002 envelope length\");\n if (bytes.byteLength !== expectedLength) {\n throw new TypeError(\n bytes.byteLength < expectedLength\n ? \"truncated OGACO002 payload\"\n : \"trailing bytes after OGACO002 envelope\",\n );\n }\n\n const [checksumLow, checksumHigh] = fnv1a64(bytes, payloadEnd);\n if (\n view.getUint32(payloadEnd, true) !== checksumLow ||\n view.getUint32(payloadEnd + 4, true) !== checksumHigh\n ) {\n throw new TypeError(\"OGACO002 checksum mismatch\");\n }\n\n const reader = new Reader(bytes, HEADER_BYTES, payloadEnd);\n const transactionId = reader.stableId(\"transaction id\");\n const dot = Object.freeze({\n replicaId: reader.replicaId(\"transaction dot replica\"),\n counter: reader.safeU64(\"transaction dot counter\", true),\n });\n const resolvedCausalBase = reader.frontier(\"resolved causal base\");\n const priorStateHash = reader.stateHash(\"prior state hash\");\n\n const operationIds: string[] = [];\n const seenOperationIds = new Set<string>();\n let totalCells = 0;\n for (let index = 0; index < operationCount; index += 1) {\n const operationId = reader.stableId(`operation ${index} id`);\n if (seenOperationIds.has(operationId)) {\n throw new TypeError(\"OGACO002 operation ids must be unique\");\n }\n seenOperationIds.add(operationId);\n operationIds.push(operationId);\n totalCells = reader.skipCommand(totalCells);\n }\n\n const resultingCausalFrontier = reader.frontier(\"resulting causal frontier\");\n const stateHash = reader.stateHash(\"resulting state hash\");\n reader.done();\n\n return Object.freeze({\n operationProtocolVersion: COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n transactionId,\n dot,\n resolvedCausalBase,\n operationIds: Object.freeze(operationIds),\n priorStateHash,\n resultingCausalFrontier,\n stateHash,\n });\n}\n\nclass Reader {\n readonly #bytes: Uint8Array;\n readonly #view: DataView;\n readonly #end: number;\n #offset: number;\n\n constructor(bytes: Uint8Array, offset: number, end: number) {\n this.#bytes = bytes;\n this.#view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n this.#offset = offset;\n this.#end = end;\n }\n\n take(length: number, label: string): Uint8Array {\n const offset = this.reserve(length, label);\n return this.#bytes.subarray(offset, offset + length);\n }\n\n reserve(length: number, label: string): number {\n if (!Number.isSafeInteger(length) || length < 0) {\n throw new RangeError(`${label} has an invalid byte length`);\n }\n const offset = this.#offset;\n const end = checkedAdd(offset, length, `${label} byte range`);\n if (end > this.#end) throw new TypeError(`truncated ${label}`);\n this.#offset = end;\n return offset;\n }\n\n u8(label: string): number {\n return this.#bytes[this.reserve(1, label)]!;\n }\n\n u32(label: string): number {\n const offset = this.reserve(4, label);\n return this.#view.getUint32(offset, true);\n }\n\n safeU64(label: string, positive: boolean): number {\n const offset = this.reserve(8, label);\n const value = safeU64At(this.#view, offset, label, positive);\n return value;\n }\n\n replicaId(label: string): string {\n const offset = this.reserve(8, label);\n const low = this.#view.getUint32(offset, true);\n const high = this.#view.getUint32(offset + 4, true);\n if (low === 0 && high === 0) throw new TypeError(`${label} must be nonzero`);\n return hexU64(high, low);\n }\n\n stableId(label: string): string {\n const offset = this.reserve(STABLE_ID_BYTES, label);\n const counterLow = this.#view.getUint32(offset, true);\n const counterHigh = this.#view.getUint32(offset + 4, true);\n const namespaceLow = this.#view.getUint32(offset + 8, true);\n const namespaceHigh = this.#view.getUint32(offset + 12, true);\n if (counterLow === 0 && counterHigh === 0 && namespaceLow === 0 && namespaceHigh === 0) {\n throw new TypeError(`${label} reserves the all-zero value`);\n }\n return `${hexU64(namespaceHigh, namespaceLow)}${hexU64(counterHigh, counterLow)}`;\n }\n\n sheetObjectId(label: string): string {\n const offset = this.#offset;\n const id = this.stableId(label);\n const counterIsZero =\n this.#view.getUint32(offset, true) === 0 && this.#view.getUint32(offset + 4, true) === 0;\n const namespaceIsZero =\n this.#view.getUint32(offset + 8, true) === 0 && this.#view.getUint32(offset + 12, true) === 0;\n if (counterIsZero || namespaceIsZero) {\n throw new TypeError(`${label} requires nonzero namespace and counter`);\n }\n return id;\n }\n\n stateHash(label: string): string {\n return `sha256:${hexBytes(this.take(HASH_BYTES, label))}`;\n }\n\n frontier(label: string): readonly CommittedTransactionCausalEntry[] {\n const count = this.u32(`${label} count`);\n if (count > MAX_COMMITTED_TRANSACTION_CAUSAL_REPLICAS) {\n throw new RangeError(`${label} exceeds its replica limit`);\n }\n const entries: CommittedTransactionCausalEntry[] = [];\n let previousLow = 0;\n let previousHigh = 0;\n let hasPrevious = false;\n for (let index = 0; index < count; index += 1) {\n const replicaOffset = this.#offset;\n const replicaId = this.replicaId(`${label} replica ${index}`);\n const replicaLow = this.#view.getUint32(replicaOffset, true);\n const replicaHigh = this.#view.getUint32(replicaOffset + 4, true);\n if (\n hasPrevious &&\n (replicaHigh < previousHigh || (replicaHigh === previousHigh && replicaLow <= previousLow))\n ) {\n throw new TypeError(`${label} replicas must be unique and strictly ordered`);\n }\n const counter = this.safeU64(`${label} counter ${index}`, true);\n entries.push(Object.freeze({ replicaId, counter }));\n previousLow = replicaLow;\n previousHigh = replicaHigh;\n hasPrevious = true;\n }\n return Object.freeze(entries);\n }\n\n skipCommand(totalCells: number): number {\n const tag = this.u8(\"collaboration command tag\");\n switch (tag) {\n case 0: {\n this.sheetObjectId(\"created sheet id\");\n this.skipString(\"created sheet name\");\n const after = this.u8(\"created sheet predecessor flag\");\n if (after === 1) this.skipGeneration(\"created sheet predecessor\");\n else if (after !== 0) throw new TypeError(\"invalid created sheet predecessor flag\");\n return totalCells;\n }\n case 1:\n this.skipGeneration(\"renamed sheet generation\");\n this.skipString(\"renamed sheet name\");\n return totalCells;\n case 2:\n this.skipGeneration(\"deleted sheet generation\");\n return totalCells;\n case 3:\n return this.skipSetCells(totalCells);\n case 4: {\n this.skipGeneration(\"cleared sheet generation\");\n const startRow = this.u32(\"clear range start row\");\n const startColumn = this.u32(\"clear range start column\");\n const endRow = this.u32(\"clear range end row\");\n const endColumn = this.u32(\"clear range end column\");\n if (startRow > endRow || startColumn > endColumn) {\n throw new TypeError(\"OGACO002 clear range is not normalized\");\n }\n return totalCells;\n }\n case 5:\n this.stableId(\"selective undo target\");\n return totalCells;\n default:\n throw new TypeError(`invalid OGACO002 collaboration command tag: ${tag}`);\n }\n }\n\n skipSetCells(totalCells: number): number {\n this.skipGeneration(\"cell block sheet generation\");\n const anchorRow = this.u32(\"cell block anchor row\");\n const anchorColumn = this.u32(\"cell block anchor column\");\n const rows = this.u32(\"cell block rows\");\n const columns = this.u32(\"cell block columns\");\n if (rows === 0 || columns === 0) {\n throw new TypeError(\"OGACO002 cell block dimensions must be nonzero\");\n }\n if (anchorRow > U32_MAX - (rows - 1) || anchorColumn > U32_MAX - (columns - 1)) {\n throw new RangeError(\"OGACO002 cell block coordinates overflow u32\");\n }\n if (rows > Math.floor(MAX_COMMITTED_TRANSACTION_CELLS / columns)) {\n throw new RangeError(\"OGACO002 cell block exceeds its cell limit\");\n }\n const cellCount = rows * columns;\n const nextTotal = totalCells + cellCount;\n if (nextTotal > MAX_COMMITTED_TRANSACTION_CELLS) {\n throw new RangeError(\"OGACO002 transaction exceeds its cell limit\");\n }\n for (let index = 0; index < cellCount; index += 1) this.skipCell();\n return nextTotal;\n }\n\n skipCell(): void {\n const formulaTag = this.u8(\"cell formula tag\");\n if (formulaTag === 1) {\n if (this.skipString(\"cell formula\") === 0) {\n throw new TypeError(\"OGACO002 formula must not be empty\");\n }\n return;\n } else if (formulaTag !== 0) {\n throw new TypeError(`invalid OGACO002 cell formula tag: ${formulaTag}`);\n }\n\n const valueTag = this.u8(\"cell value tag\");\n switch (valueTag) {\n case 0:\n case 1:\n case 2:\n return;\n case 3:\n this.skipNumber();\n return;\n case 4:\n this.skipString(\"cell text\");\n return;\n case 5:\n this.skipFormulaError();\n return;\n case 6:\n this.skipDate();\n return;\n default:\n throw new TypeError(`invalid OGACO002 cell value tag: ${valueTag}`);\n }\n }\n\n skipNumber(): void {\n const offset = this.reserve(8, \"cell number\");\n const low = this.#view.getUint32(offset, true);\n const high = this.#view.getUint32(offset + 4, true);\n if (low === 0 && high === 0x8000_0000) {\n throw new TypeError(\"OGACO002 cell number uses negative zero\");\n }\n if ((high & 0x7ff0_0000) === 0x7ff0_0000) {\n throw new TypeError(\"OGACO002 cell numbers must be finite\");\n }\n }\n\n skipDate(): void {\n const offset = this.reserve(8, \"cell date\");\n const milliseconds = this.#view.getBigInt64(offset, true);\n if (milliseconds < -MAX_DATE_MILLISECONDS || milliseconds > MAX_DATE_MILLISECONDS) {\n throw new TypeError(\"OGACO002 cell date is outside the ECMAScript range\");\n }\n }\n\n skipFormulaError(): void {\n const tag = this.u8(\"formula error tag\");\n if (tag <= 8) return;\n if (tag === 9) {\n this.skipString(\"custom formula error\");\n return;\n }\n throw new TypeError(`invalid OGACO002 formula error tag: ${tag}`);\n }\n\n skipGeneration(label: string): void {\n this.sheetObjectId(`${label} sheet id`);\n this.stableId(`${label} creation operation id`);\n }\n\n skipString(label: string): number {\n const length = this.u32(`${label} length`);\n if (length > MAX_OPERATION_STRING_BYTES) {\n throw new RangeError(`${label} exceeds its byte limit`);\n }\n const value = this.take(length, label);\n assertUtf8(value, label);\n return length;\n }\n\n done(): void {\n if (this.#offset !== this.#end) throw new TypeError(\"trailing bytes in OGACO002 payload\");\n }\n}\n\nfunction assertInput(bytes: Uint8Array): void {\n if (!(bytes instanceof Uint8Array)) {\n throw new TypeError(\"OGACO002 bytes must be a Uint8Array\");\n }\n if (typeof SharedArrayBuffer !== \"undefined\" && bytes.buffer instanceof SharedArrayBuffer) {\n throw new TypeError(\"OGACO002 bytes must not use shared mutable memory\");\n }\n}\n\nfunction safeU64At(view: DataView, offset: number, label: string, positive: boolean): number {\n const low = view.getUint32(offset, true);\n const high = view.getUint32(offset + 4, true);\n if (high > MAX_SAFE_U64_HIGH)\n throw new RangeError(`${label} exceeds JavaScript safe integer range`);\n const value = high * U32_SIZE + low;\n if (positive && value === 0) throw new TypeError(`${label} must be nonzero`);\n return value;\n}\n\nfunction checkedAdd(left: number, right: number, label: string): number {\n const result = left + right;\n if (!Number.isSafeInteger(result)) throw new RangeError(`${label} exceeds safe integer range`);\n return result;\n}\n\n/** Allocation-free UTF-8 scalar validation equivalent to Rust `str::from_utf8`. */\nfunction assertUtf8(bytes: Uint8Array, label: string): void {\n for (let index = 0; index < bytes.length;) {\n const first = bytes[index]!;\n if (first <= 0x7f) {\n index += 1;\n continue;\n }\n const second = bytes[index + 1];\n if (first >= 0xc2 && first <= 0xdf && continuation(second)) {\n index += 2;\n continue;\n }\n const third = bytes[index + 2];\n if (\n ((first === 0xe0 && between(second, 0xa0, 0xbf)) ||\n (first >= 0xe1 && first <= 0xec && continuation(second)) ||\n (first === 0xed && between(second, 0x80, 0x9f)) ||\n (first >= 0xee && first <= 0xef && continuation(second))) &&\n continuation(third)\n ) {\n index += 3;\n continue;\n }\n const fourth = bytes[index + 3];\n if (\n ((first === 0xf0 && between(second, 0x90, 0xbf)) ||\n (first >= 0xf1 && first <= 0xf3 && continuation(second)) ||\n (first === 0xf4 && between(second, 0x80, 0x8f))) &&\n continuation(third) &&\n continuation(fourth)\n ) {\n index += 4;\n continue;\n }\n throw new TypeError(`${label} is not canonical UTF-8`);\n }\n}\n\nfunction continuation(value: number | undefined): boolean {\n return value !== undefined && value >= 0x80 && value <= 0xbf;\n}\n\nfunction between(value: number | undefined, minimum: number, maximum: number): boolean {\n return value !== undefined && value >= minimum && value <= maximum;\n}\n\nfunction hexU64(high: number, low: number): string {\n return `${high.toString(16).padStart(8, \"0\")}${low.toString(16).padStart(8, \"0\")}`;\n}\n\nfunction hexBytes(bytes: Uint8Array): string {\n let result = \"\";\n for (const byte of bytes) result += HEX[byte];\n return result;\n}\n\n/** FNV-1a-64 using exact 32-bit limbs; avoids a BigInt allocation per byte. */\nfunction fnv1a64(bytes: Uint8Array, end: number): readonly [low: number, high: number] {\n let low = FNV_OFFSET_LOW;\n let high = FNV_OFFSET_HIGH;\n for (let index = 0; index < end; index += 1) {\n low = (low ^ bytes[index]!) >>> 0;\n const lowProduct = low * FNV_PRIME_LOW;\n const carry = Math.floor(lowProduct / U32_SIZE);\n high = (high * FNV_PRIME_LOW + carry + low * 0x100) >>> 0;\n low = lowProduct >>> 0;\n }\n return [low, high];\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,
|
|
3
|
+
SPREADSHEET_ARTIFACT_QUERY_MAX_BYTES,
|
|
4
|
+
SPREADSHEET_ARTIFACT_QUERY_VERSION,
|
|
5
|
+
assertCanonicalSpreadsheetArtifactKernelProjectionBytes,
|
|
6
|
+
assertCanonicalSpreadsheetArtifactKernelQueryBytes,
|
|
7
|
+
decodeSpreadsheetArtifactKernelProjection,
|
|
8
|
+
decodeSpreadsheetArtifactKernelQuery,
|
|
9
|
+
encodeSpreadsheetArtifactKernelProjection,
|
|
10
|
+
encodeSpreadsheetArtifactKernelQuery
|
|
11
|
+
} from "./chunk-Y3KNXVTD.js";
|
|
1
12
|
import {
|
|
2
13
|
DOCUMENT_ARTIFACT_COMMAND_MAX_BYTES,
|
|
3
14
|
DOCUMENT_ARTIFACT_COMMAND_MAX_COMMANDS,
|
|
@@ -16,17 +27,6 @@ import {
|
|
|
16
27
|
encodeDocumentArtifactQuery,
|
|
17
28
|
encodeDocumentArtifactQueryResponse
|
|
18
29
|
} from "./chunk-RIY7GYQS.js";
|
|
19
|
-
import {
|
|
20
|
-
SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,
|
|
21
|
-
SPREADSHEET_ARTIFACT_QUERY_MAX_BYTES,
|
|
22
|
-
SPREADSHEET_ARTIFACT_QUERY_VERSION,
|
|
23
|
-
assertCanonicalSpreadsheetArtifactKernelProjectionBytes,
|
|
24
|
-
assertCanonicalSpreadsheetArtifactKernelQueryBytes,
|
|
25
|
-
decodeSpreadsheetArtifactKernelProjection,
|
|
26
|
-
decodeSpreadsheetArtifactKernelQuery,
|
|
27
|
-
encodeSpreadsheetArtifactKernelProjection,
|
|
28
|
-
encodeSpreadsheetArtifactKernelQuery
|
|
29
|
-
} from "./chunk-CADSX6UN.js";
|
|
30
30
|
import {
|
|
31
31
|
PRESENTATION_ARTIFACT_COMMAND_MAX_BYTES,
|
|
32
32
|
PRESENTATION_ARTIFACT_COMMAND_MAX_COMMANDS,
|
|
@@ -48,19 +48,30 @@ import {
|
|
|
48
48
|
import {
|
|
49
49
|
SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES,
|
|
50
50
|
SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS,
|
|
51
|
-
SPREADSHEET_ARTIFACT_COMMAND_VERSION,
|
|
52
51
|
assertCanonicalSpreadsheetArtifactCommandBytes,
|
|
53
52
|
decodeSpreadsheetArtifactCommandBatch,
|
|
54
53
|
encodeSpreadsheetArtifactCommandBatch
|
|
55
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-TXTQIYCV.js";
|
|
55
|
+
import {
|
|
56
|
+
COMMITTED_TRANSACTION_PROTOCOL_VERSION,
|
|
57
|
+
DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
58
|
+
DOCUMENT_ARTIFACT_SNAPSHOT_VERSION,
|
|
59
|
+
EDITABLE_ARTIFACT_LIVE_WIRE_VERSION,
|
|
60
|
+
EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION,
|
|
61
|
+
PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
62
|
+
PRESENTATION_ARTIFACT_SNAPSHOT_VERSION,
|
|
63
|
+
SPREADSHEET_ARTIFACT_COMMAND_VERSION,
|
|
64
|
+
SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
65
|
+
SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION
|
|
66
|
+
} from "./chunk-PX3VCKAU.js";
|
|
56
67
|
|
|
57
68
|
// src/editable-artifact-codec-registry.ts
|
|
58
69
|
var spreadsheet = Object.freeze({
|
|
59
70
|
modality: "spreadsheet",
|
|
60
|
-
modelSchemaVersion:
|
|
61
|
-
snapshotVersion:
|
|
71
|
+
modelSchemaVersion: SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
72
|
+
snapshotVersion: SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION,
|
|
62
73
|
command: Object.freeze({
|
|
63
|
-
magic: "
|
|
74
|
+
magic: "OGASC002",
|
|
64
75
|
version: SPREADSHEET_ARTIFACT_COMMAND_VERSION,
|
|
65
76
|
maximumBytes: SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES,
|
|
66
77
|
maximumCommands: SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS,
|
|
@@ -90,14 +101,14 @@ var spreadsheet = Object.freeze({
|
|
|
90
101
|
}),
|
|
91
102
|
concurrency: Object.freeze({
|
|
92
103
|
semantics: "causal-crdt-v1",
|
|
93
|
-
collaborationEnvelope: "
|
|
104
|
+
collaborationEnvelope: "OGACO002",
|
|
94
105
|
staleBaseMustBeRejected: false
|
|
95
106
|
})
|
|
96
107
|
});
|
|
97
108
|
var document = Object.freeze({
|
|
98
109
|
modality: "document",
|
|
99
|
-
modelSchemaVersion:
|
|
100
|
-
snapshotVersion:
|
|
110
|
+
modelSchemaVersion: DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
111
|
+
snapshotVersion: DOCUMENT_ARTIFACT_SNAPSHOT_VERSION,
|
|
101
112
|
command: Object.freeze({
|
|
102
113
|
magic: "OGADC001",
|
|
103
114
|
version: DOCUMENT_ARTIFACT_COMMAND_VERSION,
|
|
@@ -133,8 +144,8 @@ var document = Object.freeze({
|
|
|
133
144
|
});
|
|
134
145
|
var presentation = Object.freeze({
|
|
135
146
|
modality: "presentation",
|
|
136
|
-
modelSchemaVersion:
|
|
137
|
-
snapshotVersion:
|
|
147
|
+
modelSchemaVersion: PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,
|
|
148
|
+
snapshotVersion: PRESENTATION_ARTIFACT_SNAPSHOT_VERSION,
|
|
138
149
|
command: Object.freeze({
|
|
139
150
|
magic: "OGAPC001",
|
|
140
151
|
version: PRESENTATION_ARTIFACT_COMMAND_VERSION,
|
|
@@ -171,6 +182,17 @@ var presentation = Object.freeze({
|
|
|
171
182
|
})
|
|
172
183
|
});
|
|
173
184
|
var EDITABLE_ARTIFACT_CODEC_REGISTRY = Object.freeze({ spreadsheet, document, presentation });
|
|
185
|
+
function currentEditableArtifactCompatibility(modality) {
|
|
186
|
+
const descriptor = EDITABLE_ARTIFACT_CODEC_REGISTRY[modality];
|
|
187
|
+
return Object.freeze({
|
|
188
|
+
modality,
|
|
189
|
+
liveProtocolVersion: EDITABLE_ARTIFACT_LIVE_WIRE_VERSION,
|
|
190
|
+
modelSchemaVersion: descriptor.modelSchemaVersion,
|
|
191
|
+
snapshotVersion: descriptor.snapshotVersion,
|
|
192
|
+
commandProtocolVersion: descriptor.command.version,
|
|
193
|
+
committedTransactionProtocolVersion: modality === "spreadsheet" ? COMMITTED_TRANSACTION_PROTOCOL_VERSION : EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION
|
|
194
|
+
});
|
|
195
|
+
}
|
|
174
196
|
function editableArtifactCodecFor(input) {
|
|
175
197
|
const descriptor = EDITABLE_ARTIFACT_CODEC_REGISTRY[input.durableModality];
|
|
176
198
|
if (!descriptor) throw new TypeError("unsupported durable editable artifact modality");
|
|
@@ -189,6 +211,7 @@ function editableArtifactCodecFor(input) {
|
|
|
189
211
|
|
|
190
212
|
export {
|
|
191
213
|
EDITABLE_ARTIFACT_CODEC_REGISTRY,
|
|
214
|
+
currentEditableArtifactCompatibility,
|
|
192
215
|
editableArtifactCodecFor
|
|
193
216
|
};
|
|
194
|
-
//# sourceMappingURL=chunk-
|
|
217
|
+
//# sourceMappingURL=chunk-7RMTKFJW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/editable-artifact-codec-registry.ts"],"sourcesContent":["import {\n DOCUMENT_ARTIFACT_COMMAND_MAX_BYTES,\n DOCUMENT_ARTIFACT_COMMAND_MAX_COMMANDS,\n DOCUMENT_ARTIFACT_COMMAND_VERSION,\n DOCUMENT_ARTIFACT_QUERY_MAX_BYTES,\n DOCUMENT_ARTIFACT_QUERY_RESPONSE_MAX_BYTES,\n DOCUMENT_ARTIFACT_QUERY_RESPONSE_VERSION,\n DOCUMENT_ARTIFACT_QUERY_VERSION,\n assertCanonicalDocumentArtifactCommandBytes,\n assertCanonicalDocumentArtifactQueryBytes,\n assertCanonicalDocumentArtifactQueryResponseBytes,\n decodeDocumentArtifactCommandBatch,\n decodeDocumentArtifactQuery,\n decodeDocumentArtifactQueryResponse,\n encodeDocumentArtifactCommandBatch,\n encodeDocumentArtifactQuery,\n encodeDocumentArtifactQueryResponse,\n} from \"./document-artifact-commands\";\nimport {\n PRESENTATION_ARTIFACT_COMMAND_MAX_BYTES,\n PRESENTATION_ARTIFACT_COMMAND_MAX_COMMANDS,\n PRESENTATION_ARTIFACT_COMMAND_VERSION,\n PRESENTATION_ARTIFACT_QUERY_MAX_BYTES,\n PRESENTATION_ARTIFACT_QUERY_RESPONSE_MAX_BYTES,\n PRESENTATION_ARTIFACT_QUERY_RESPONSE_VERSION,\n PRESENTATION_ARTIFACT_QUERY_VERSION,\n assertCanonicalPresentationArtifactCommandBytes,\n assertCanonicalPresentationArtifactQueryBytes,\n assertCanonicalPresentationArtifactQueryResponseBytes,\n decodePresentationArtifactCommandBatch,\n decodePresentationArtifactQuery,\n decodePresentationArtifactQueryResponse,\n encodePresentationArtifactCommandBatch,\n encodePresentationArtifactQuery,\n encodePresentationArtifactQueryResponse,\n} from \"./presentation-artifact-commands\";\nimport {\n SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES,\n SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS,\n SPREADSHEET_ARTIFACT_COMMAND_VERSION,\n assertCanonicalSpreadsheetArtifactCommandBytes,\n decodeSpreadsheetArtifactCommandBatch,\n encodeSpreadsheetArtifactCommandBatch,\n} from \"./spreadsheet-artifact-commands\";\nimport {\n SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n SPREADSHEET_ARTIFACT_QUERY_MAX_BYTES,\n SPREADSHEET_ARTIFACT_QUERY_VERSION,\n assertCanonicalSpreadsheetArtifactKernelProjectionBytes,\n assertCanonicalSpreadsheetArtifactKernelQueryBytes,\n decodeSpreadsheetArtifactKernelProjection,\n decodeSpreadsheetArtifactKernelQuery,\n encodeSpreadsheetArtifactKernelProjection,\n encodeSpreadsheetArtifactKernelQuery,\n} from \"./spreadsheet-artifact-query\";\nimport {\n DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,\n DOCUMENT_ARTIFACT_SNAPSHOT_VERSION,\n EDITABLE_ARTIFACT_LIVE_WIRE_VERSION,\n EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION,\n PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,\n PRESENTATION_ARTIFACT_SNAPSHOT_VERSION,\n COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION,\n SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,\n} from \"./editable-artifact-versions\";\n\nexport {\n DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,\n DOCUMENT_ARTIFACT_SNAPSHOT_VERSION,\n PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,\n PRESENTATION_ARTIFACT_SNAPSHOT_VERSION,\n SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION,\n SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,\n} from \"./editable-artifact-versions\";\n\nexport type EditableArtifactModality = \"spreadsheet\" | \"document\" | \"presentation\";\nexport type EditableArtifactConcurrencySemantics =\n | \"causal-crdt-v1\"\n | \"authoritative-serialized-stale-base-v1\";\n\nexport type CurrentEditableArtifactCompatibility = Readonly<{\n modality: EditableArtifactModality;\n liveProtocolVersion: number;\n modelSchemaVersion: number;\n snapshotVersion: number;\n commandProtocolVersion: number;\n committedTransactionProtocolVersion: number;\n}>;\n\nexport type EditableArtifactCodecDescriptor = Readonly<{\n modality: EditableArtifactModality;\n modelSchemaVersion: 1 | 2;\n snapshotVersion: 1 | 2;\n command: Readonly<{\n magic: \"OGASC002\" | \"OGADC001\" | \"OGAPC001\";\n version: 1 | 2;\n maximumBytes: number;\n maximumCommands: number;\n encode: (value: unknown) => Uint8Array;\n decode: (bytes: Uint8Array) => unknown;\n assertCanonical: (bytes: Uint8Array) => void;\n }>;\n query: Readonly<{\n magic: \"OGAKQ001\" | \"OGADQ001\" | \"OGAPQ001\";\n responseMagic: \"OGAKV001\" | \"OGADP001\" | \"OGAPV001\";\n version: 1;\n responseVersion: 1;\n maximumBytes: number;\n maximumResponseBytes: number;\n encode: (value: unknown) => Uint8Array;\n decode: (bytes: Uint8Array) => unknown;\n assertCanonical: (bytes: Uint8Array) => void;\n encodeResponse: (value: unknown) => Uint8Array;\n decodeResponse: (bytes: Uint8Array) => unknown;\n assertCanonicalResponse: (bytes: Uint8Array) => void;\n }>;\n concurrency: Readonly<{\n semantics: EditableArtifactConcurrencySemantics;\n collaborationEnvelope: \"OGACO002\" | null;\n staleBaseMustBeRejected: boolean;\n }>;\n}>;\n\nconst spreadsheet = Object.freeze({\n modality: \"spreadsheet\",\n modelSchemaVersion: SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,\n snapshotVersion: SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION,\n command: Object.freeze({\n magic: \"OGASC002\",\n version: SPREADSHEET_ARTIFACT_COMMAND_VERSION,\n maximumBytes: SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES,\n maximumCommands: SPREADSHEET_ARTIFACT_COMMAND_MAX_COMMANDS,\n encode: (value: unknown) =>\n encodeSpreadsheetArtifactCommandBatch(\n value as Parameters<typeof encodeSpreadsheetArtifactCommandBatch>[0],\n ),\n decode: decodeSpreadsheetArtifactCommandBatch,\n assertCanonical: assertCanonicalSpreadsheetArtifactCommandBytes,\n }),\n query: Object.freeze({\n magic: \"OGAKQ001\",\n responseMagic: \"OGAKV001\",\n version: SPREADSHEET_ARTIFACT_QUERY_VERSION,\n responseVersion: SPREADSHEET_ARTIFACT_QUERY_VERSION,\n maximumBytes: SPREADSHEET_ARTIFACT_QUERY_MAX_BYTES,\n maximumResponseBytes: SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,\n encode: (value: unknown) =>\n encodeSpreadsheetArtifactKernelQuery(\n value as Parameters<typeof encodeSpreadsheetArtifactKernelQuery>[0],\n ),\n decode: decodeSpreadsheetArtifactKernelQuery,\n assertCanonical: assertCanonicalSpreadsheetArtifactKernelQueryBytes,\n encodeResponse: (value: unknown) =>\n encodeSpreadsheetArtifactKernelProjection(\n value as Parameters<typeof encodeSpreadsheetArtifactKernelProjection>[0],\n ),\n decodeResponse: decodeSpreadsheetArtifactKernelProjection,\n assertCanonicalResponse: assertCanonicalSpreadsheetArtifactKernelProjectionBytes,\n }),\n concurrency: Object.freeze({\n semantics: \"causal-crdt-v1\",\n collaborationEnvelope: \"OGACO002\",\n staleBaseMustBeRejected: false,\n }),\n}) satisfies EditableArtifactCodecDescriptor;\n\nconst document = Object.freeze({\n modality: \"document\",\n modelSchemaVersion: DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,\n snapshotVersion: DOCUMENT_ARTIFACT_SNAPSHOT_VERSION,\n command: Object.freeze({\n magic: \"OGADC001\",\n version: DOCUMENT_ARTIFACT_COMMAND_VERSION,\n maximumBytes: DOCUMENT_ARTIFACT_COMMAND_MAX_BYTES,\n maximumCommands: DOCUMENT_ARTIFACT_COMMAND_MAX_COMMANDS,\n encode: (value: unknown) =>\n encodeDocumentArtifactCommandBatch(\n value as Parameters<typeof encodeDocumentArtifactCommandBatch>[0],\n ),\n decode: decodeDocumentArtifactCommandBatch,\n assertCanonical: assertCanonicalDocumentArtifactCommandBytes,\n }),\n query: Object.freeze({\n magic: \"OGADQ001\",\n responseMagic: \"OGADP001\",\n version: DOCUMENT_ARTIFACT_QUERY_VERSION,\n responseVersion: DOCUMENT_ARTIFACT_QUERY_RESPONSE_VERSION,\n maximumBytes: DOCUMENT_ARTIFACT_QUERY_MAX_BYTES,\n maximumResponseBytes: DOCUMENT_ARTIFACT_QUERY_RESPONSE_MAX_BYTES,\n encode: (value: unknown) =>\n encodeDocumentArtifactQuery(value as Parameters<typeof encodeDocumentArtifactQuery>[0]),\n decode: decodeDocumentArtifactQuery,\n assertCanonical: assertCanonicalDocumentArtifactQueryBytes,\n encodeResponse: (value: unknown) =>\n encodeDocumentArtifactQueryResponse(\n value as Parameters<typeof encodeDocumentArtifactQueryResponse>[0],\n ),\n decodeResponse: decodeDocumentArtifactQueryResponse,\n assertCanonicalResponse: assertCanonicalDocumentArtifactQueryResponseBytes,\n }),\n concurrency: Object.freeze({\n semantics: \"authoritative-serialized-stale-base-v1\",\n collaborationEnvelope: null,\n staleBaseMustBeRejected: true,\n }),\n}) satisfies EditableArtifactCodecDescriptor;\n\nconst presentation = Object.freeze({\n modality: \"presentation\",\n modelSchemaVersion: PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,\n snapshotVersion: PRESENTATION_ARTIFACT_SNAPSHOT_VERSION,\n command: Object.freeze({\n magic: \"OGAPC001\",\n version: PRESENTATION_ARTIFACT_COMMAND_VERSION,\n maximumBytes: PRESENTATION_ARTIFACT_COMMAND_MAX_BYTES,\n maximumCommands: PRESENTATION_ARTIFACT_COMMAND_MAX_COMMANDS,\n encode: (value: unknown) =>\n encodePresentationArtifactCommandBatch(\n value as Parameters<typeof encodePresentationArtifactCommandBatch>[0],\n ),\n decode: decodePresentationArtifactCommandBatch,\n assertCanonical: assertCanonicalPresentationArtifactCommandBytes,\n }),\n query: Object.freeze({\n magic: \"OGAPQ001\",\n responseMagic: \"OGAPV001\",\n version: PRESENTATION_ARTIFACT_QUERY_VERSION,\n responseVersion: PRESENTATION_ARTIFACT_QUERY_RESPONSE_VERSION,\n maximumBytes: PRESENTATION_ARTIFACT_QUERY_MAX_BYTES,\n maximumResponseBytes: PRESENTATION_ARTIFACT_QUERY_RESPONSE_MAX_BYTES,\n encode: (value: unknown) =>\n encodePresentationArtifactQuery(\n value as Parameters<typeof encodePresentationArtifactQuery>[0],\n ),\n decode: decodePresentationArtifactQuery,\n assertCanonical: assertCanonicalPresentationArtifactQueryBytes,\n encodeResponse: (value: unknown) =>\n encodePresentationArtifactQueryResponse(\n value as Parameters<typeof encodePresentationArtifactQueryResponse>[0],\n ),\n decodeResponse: decodePresentationArtifactQueryResponse,\n assertCanonicalResponse: assertCanonicalPresentationArtifactQueryResponseBytes,\n }),\n concurrency: Object.freeze({\n semantics: \"authoritative-serialized-stale-base-v1\",\n collaborationEnvelope: null,\n staleBaseMustBeRejected: true,\n }),\n}) satisfies EditableArtifactCodecDescriptor;\n\nexport const EDITABLE_ARTIFACT_CODEC_REGISTRY: Readonly<\n Record<EditableArtifactModality, EditableArtifactCodecDescriptor>\n> = Object.freeze({ spreadsheet, document, presentation });\n\n/** One exact current compatibility tuple per durable modality. */\nexport function currentEditableArtifactCompatibility(\n modality: EditableArtifactModality,\n): CurrentEditableArtifactCompatibility {\n const descriptor = EDITABLE_ARTIFACT_CODEC_REGISTRY[modality];\n return Object.freeze({\n modality,\n liveProtocolVersion: EDITABLE_ARTIFACT_LIVE_WIRE_VERSION,\n modelSchemaVersion: descriptor.modelSchemaVersion,\n snapshotVersion: descriptor.snapshotVersion,\n commandProtocolVersion: descriptor.command.version,\n committedTransactionProtocolVersion:\n modality === \"spreadsheet\"\n ? COMMITTED_TRANSACTION_PROTOCOL_VERSION\n : EDITABLE_ARTIFACT_SERIALIZED_COMMIT_VERSION,\n });\n}\n\n/**\n * Selects solely from the durable artifact modality plus persisted versions.\n * Modality intentionally never enters OGATX001: the durable artifact row is\n * authoritative and prevents client-controlled cross-modality decoding.\n */\nexport function editableArtifactCodecFor(\n input: Readonly<{\n durableModality: EditableArtifactModality;\n modelSchemaVersion: number;\n commandProtocolVersion: number;\n }>,\n): EditableArtifactCodecDescriptor {\n const descriptor = EDITABLE_ARTIFACT_CODEC_REGISTRY[input.durableModality];\n if (!descriptor) throw new TypeError(\"unsupported durable editable artifact modality\");\n if (input.modelSchemaVersion !== descriptor.modelSchemaVersion) {\n throw new TypeError(\n \"editable artifact model schema version is incompatible with its durable modality\",\n );\n }\n if (input.commandProtocolVersion !== descriptor.command.version) {\n throw new TypeError(\n \"editable artifact command protocol version is incompatible with its durable modality\",\n );\n }\n return descriptor;\n}\n"],"mappings":"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","names":[]}
|