@opengeni/contracts 1.0.1 → 2.2.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.
Files changed (112) hide show
  1. package/dist/agent-authored-durable-text.d.ts +64 -0
  2. package/dist/atlassian.d.ts +1 -0
  3. package/dist/atlassian.js +14 -13
  4. package/dist/{chunk-Y3MLSLB4.js → chunk-3SIZGL3O.js} +42 -30
  5. package/dist/chunk-3SIZGL3O.js.map +1 -0
  6. package/dist/{chunk-JBCIY7QD.js → chunk-7RMTKFJW.js} +45 -22
  7. package/dist/chunk-7RMTKFJW.js.map +1 -0
  8. package/dist/{chunk-NX5JNF4L.js → chunk-7ZZ3R27P.js} +9322 -5798
  9. package/dist/chunk-7ZZ3R27P.js.map +1 -0
  10. package/dist/{chunk-5UDNP7AO.js → chunk-MRWYRAS5.js} +56 -8
  11. package/dist/chunk-MRWYRAS5.js.map +1 -0
  12. package/dist/{chunk-LW7OH6CS.js → chunk-N6GRVXAJ.js} +6 -5
  13. package/dist/chunk-N6GRVXAJ.js.map +1 -0
  14. package/dist/{chunk-TZ6YEYN4.js → chunk-NVJMJWLL.js} +3 -1
  15. package/dist/chunk-NVJMJWLL.js.map +1 -0
  16. package/dist/chunk-PX3VCKAU.js +29 -0
  17. package/dist/chunk-PX3VCKAU.js.map +1 -0
  18. package/dist/{chunk-LSB7GRLG.js → chunk-TXTQIYCV.js} +15 -11
  19. package/dist/chunk-TXTQIYCV.js.map +1 -0
  20. package/dist/{chunk-CADSX6UN.js → chunk-Y3KNXVTD.js} +2 -2
  21. package/dist/chunk-YBW5JSA3.js +251 -0
  22. package/dist/chunk-YBW5JSA3.js.map +1 -0
  23. package/dist/company-brain-governed-writes.d.ts +475 -0
  24. package/dist/company-brain.d.ts +398 -0
  25. package/dist/company-profile.d.ts +268 -0
  26. package/dist/connection-authority.d.ts +501 -0
  27. package/dist/connection-authority.js +364 -0
  28. package/dist/connection-authority.js.map +1 -0
  29. package/dist/connector-attachments.d.ts +95 -0
  30. package/dist/connector-attachments.js +51 -0
  31. package/dist/connector-attachments.js.map +1 -0
  32. package/dist/editable-artifact-codec-registry.d.ts +16 -7
  33. package/dist/editable-artifact-codec-registry.js +18 -8
  34. package/dist/editable-artifact-committed-transaction.d.ts +2 -2
  35. package/dist/editable-artifact-committed-transaction.js +2 -2
  36. package/dist/editable-artifact-live.d.ts +11 -12
  37. package/dist/editable-artifact-live.js +111 -46
  38. package/dist/editable-artifact-live.js.map +1 -1
  39. package/dist/editable-artifact-serialized-commit.d.ts +2 -1
  40. package/dist/editable-artifact-serialized-commit.js +9 -8
  41. package/dist/editable-artifact-versions.d.ts +20 -5
  42. package/dist/editable-artifact-versions.js +23 -5
  43. package/dist/editable-artifacts.d.ts +2 -0
  44. package/dist/editable-artifacts.js +51 -39
  45. package/dist/google-drive.d.ts +1 -0
  46. package/dist/google-drive.js +14 -13
  47. package/dist/google-drive.js.map +1 -1
  48. package/dist/governed-learning-activation.d.ts +154 -0
  49. package/dist/governed-learning-evaluator.d.ts +152 -0
  50. package/dist/index.d.ts +12224 -1328
  51. package/dist/index.js +831 -115
  52. package/dist/interaction.d.ts +68 -0
  53. package/dist/knowledge.d.ts +119 -0
  54. package/dist/organization-membership-lifecycle.d.ts +516 -0
  55. package/dist/permissions.d.ts +52 -0
  56. package/dist/personal-github.d.ts +319 -0
  57. package/dist/personal-github.js +209 -0
  58. package/dist/personal-github.js.map +1 -0
  59. package/dist/preference-registry.d.ts +17 -0
  60. package/dist/remember.d.ts +331 -0
  61. package/dist/sandbox-file-artifacts.d.ts +56 -0
  62. package/dist/sandbox-snapshots.d.ts +21 -0
  63. package/dist/slack-bot-scopes.d.ts +34 -14
  64. package/dist/slack-bot-scopes.js +5 -1
  65. package/dist/spreadsheet-artifact-commands.d.ts +2 -3
  66. package/dist/spreadsheet-artifact-commands.js +4 -2
  67. package/dist/spreadsheet-artifact-query.js +3 -2
  68. package/dist/task-notes.d.ts +42 -1
  69. package/dist/tool-result-spill.d.ts +16 -0
  70. package/dist/workspace-instruction-policies.d.ts +81 -0
  71. package/dist/workspace-learning-administration.d.ts +289 -0
  72. package/package.json +13 -1
  73. package/src/agent-authored-durable-text.ts +105 -0
  74. package/src/company-brain-governed-writes.ts +356 -0
  75. package/src/company-brain.ts +201 -0
  76. package/src/company-profile.ts +122 -1
  77. package/src/connection-authority.ts +413 -0
  78. package/src/connector-attachments.ts +327 -0
  79. package/src/editable-artifact-codec-registry.ts +55 -17
  80. package/src/editable-artifact-committed-transaction.ts +44 -31
  81. package/src/editable-artifact-live.ts +123 -57
  82. package/src/editable-artifact-serialized-commit.ts +2 -1
  83. package/src/editable-artifact-versions.ts +26 -5
  84. package/src/editable-artifacts.ts +2 -0
  85. package/src/governed-learning-activation.ts +191 -0
  86. package/src/governed-learning-evaluator.ts +176 -0
  87. package/src/index.ts +3033 -392
  88. package/src/interaction.ts +55 -1
  89. package/src/knowledge.ts +118 -6
  90. package/src/organization-membership-lifecycle.ts +330 -0
  91. package/src/permissions.ts +55 -0
  92. package/src/personal-github.ts +267 -0
  93. package/src/preference-registry.ts +17 -0
  94. package/src/remember.ts +242 -0
  95. package/src/sandbox-file-artifacts.ts +65 -0
  96. package/src/sandbox-snapshots.ts +78 -0
  97. package/src/slack-bot-scopes.ts +81 -9
  98. package/src/spreadsheet-artifact-commands.ts +12 -13
  99. package/src/task-notes.ts +14 -1
  100. package/src/tool-result-spill.ts +35 -0
  101. package/src/workspace-instruction-policies.ts +30 -0
  102. package/src/workspace-learning-administration.ts +88 -0
  103. package/dist/chunk-5UDNP7AO.js.map +0 -1
  104. package/dist/chunk-BVGIYW7D.js +0 -11
  105. package/dist/chunk-BVGIYW7D.js.map +0 -1
  106. package/dist/chunk-JBCIY7QD.js.map +0 -1
  107. package/dist/chunk-LSB7GRLG.js.map +0 -1
  108. package/dist/chunk-LW7OH6CS.js.map +0 -1
  109. package/dist/chunk-NX5JNF4L.js.map +0 -1
  110. package/dist/chunk-TZ6YEYN4.js.map +0 -1
  111. package/dist/chunk-Y3MLSLB4.js.map +0 -1
  112. /package/dist/{chunk-CADSX6UN.js.map → chunk-Y3KNXVTD.js.map} +0 -0
@@ -0,0 +1,364 @@
1
+ import {
2
+ ConnectionKind,
3
+ ManagedUserResourceGrantMode,
4
+ SessionTenancyVisibility,
5
+ UserResourceAuthorityGrant,
6
+ UserResourceDelegation
7
+ } from "./chunk-7ZZ3R27P.js";
8
+ import "./chunk-MRWYRAS5.js";
9
+ import "./chunk-JUFK3T4Q.js";
10
+ import "./chunk-WYBDERIY.js";
11
+ import "./chunk-N6GRVXAJ.js";
12
+ import "./chunk-3SIZGL3O.js";
13
+ import "./chunk-NVJMJWLL.js";
14
+ import "./chunk-7RMTKFJW.js";
15
+ import "./chunk-Y3KNXVTD.js";
16
+ import "./chunk-RIY7GYQS.js";
17
+ import "./chunk-YRKRZ6OF.js";
18
+ import "./chunk-CM6BMECR.js";
19
+ import "./chunk-D2HKF2EF.js";
20
+ import "./chunk-MYBZRDTY.js";
21
+ import "./chunk-TXTQIYCV.js";
22
+ import "./chunk-PX3VCKAU.js";
23
+ import "./chunk-M5ZGRVIQ.js";
24
+ import "./chunk-YBW5JSA3.js";
25
+
26
+ // src/connection-authority.ts
27
+ import { z } from "zod";
28
+ var ConnectionUseAction = z.literal("connection.use");
29
+ var ConnectionAuthorityEnvelope = z.object({
30
+ scope: z.enum(["workspace", "user"]).default("workspace"),
31
+ userDelegation: UserResourceDelegation.optional()
32
+ }).strict().superRefine((value, context) => {
33
+ if (value.scope === "workspace" && value.userDelegation !== void 0) {
34
+ context.addIssue({
35
+ code: "custom",
36
+ path: ["userDelegation"],
37
+ message: "workspace connections cannot carry user delegation"
38
+ });
39
+ return;
40
+ }
41
+ if (value.scope === "user" && value.userDelegation === void 0) {
42
+ context.addIssue({
43
+ code: "custom",
44
+ path: ["userDelegation"],
45
+ message: "user connections require an immutable delegation"
46
+ });
47
+ return;
48
+ }
49
+ if (value.userDelegation && value.userDelegation.action !== ConnectionUseAction.value) {
50
+ context.addIssue({
51
+ code: "custom",
52
+ path: ["userDelegation", "action"],
53
+ message: "connection delegation must use connection.use"
54
+ });
55
+ }
56
+ });
57
+ var ConnectionAuthorityGrant = UserResourceAuthorityGrant.extend({
58
+ action: ConnectionUseAction
59
+ }).strict();
60
+ var ConnectionAuthoritySummary = z.object({
61
+ authorityId: z.string().uuid(),
62
+ resourceId: z.string().uuid(),
63
+ originWorkspaceId: z.string().uuid().nullable(),
64
+ generation: z.number().int().positive(),
65
+ status: z.enum(["active", "retained", "revoked"]),
66
+ grants: z.array(ConnectionAuthorityGrant)
67
+ }).strict();
68
+ var ListConnectionAuthoritiesQuery = z.object({
69
+ scope: z.literal("user"),
70
+ cursor: z.string().uuid().optional(),
71
+ limit: z.coerce.number().int().min(1).max(100).default(50)
72
+ }).strict();
73
+ var ListConnectionAuthoritiesResponse = z.object({
74
+ scope: z.literal("user"),
75
+ authorities: z.array(ConnectionAuthoritySummary),
76
+ nextCursor: z.string().uuid().nullable()
77
+ }).strict();
78
+ var IssueConnectionUseGrantRequest = z.object({
79
+ scope: z.literal("user"),
80
+ mode: ManagedUserResourceGrantMode,
81
+ context: SessionTenancyVisibility,
82
+ sessionId: z.string().uuid().nullable().optional(),
83
+ expectedAuthorityEpoch: z.number().int().positive().nullable().optional(),
84
+ workspaceSharedAcknowledged: z.boolean().default(false)
85
+ }).strict().superRefine((value, context) => {
86
+ if (value.context === "workspace_shared" && !value.workspaceSharedAcknowledged) {
87
+ context.addIssue({
88
+ code: "custom",
89
+ path: ["workspaceSharedAcknowledged"],
90
+ message: "workspace_shared requires durable shared-output acknowledgement"
91
+ });
92
+ }
93
+ if (value.mode === "always" && (value.sessionId || value.expectedAuthorityEpoch)) {
94
+ context.addIssue({ code: "custom", path: ["sessionId"], message: "always is unbound" });
95
+ }
96
+ if (value.mode === "session" && (!value.sessionId || !value.expectedAuthorityEpoch)) {
97
+ context.addIssue({
98
+ code: "custom",
99
+ path: ["sessionId"],
100
+ message: "session requires a target session and expectedAuthorityEpoch"
101
+ });
102
+ }
103
+ });
104
+ var RevokeConnectionUseGrantQuery = z.object({ scope: z.literal("user") }).strict();
105
+ var ConnectionUseGrantMutationResponse = z.object({
106
+ scope: z.literal("user"),
107
+ grant: ConnectionAuthorityGrant
108
+ }).strict();
109
+ var ConnectionUseGrantRevocationResponse = z.object({
110
+ scope: z.literal("user"),
111
+ grant: z.object({
112
+ grantId: z.string().uuid(),
113
+ generation: z.number().int().positive(),
114
+ status: z.literal("revoked"),
115
+ revokedAt: z.string().datetime()
116
+ }).strict()
117
+ }).strict();
118
+ var ConnectionAuthoritySelectionSource = z.enum([
119
+ "explicit_workspace",
120
+ "legacy_workspace_omission",
121
+ "legacy_user_compatibility",
122
+ "user_delegation"
123
+ ]);
124
+ var ConnectionUseSelectionSource = z.string().min(1).max(128).regex(/^[a-z0-9](?:[a-z0-9._:-]*[a-z0-9])?$/u);
125
+ var AcceptedConnectionWork = z.discriminatedUnion("kind", [
126
+ z.object({
127
+ kind: z.literal("turn"),
128
+ turnId: z.string().uuid()
129
+ }).strict(),
130
+ z.object({
131
+ kind: z.literal("scheduled_task"),
132
+ taskId: z.string().uuid(),
133
+ taskAuthorityRevision: z.number().int().positive(),
134
+ runId: z.string().uuid()
135
+ }).strict()
136
+ ]);
137
+ var ConnectionUseAuthoritySnapshot = z.object({
138
+ organizationId: z.string().uuid(),
139
+ originWorkspaceId: z.string().uuid(),
140
+ targetWorkspaceId: z.string().uuid(),
141
+ targetSessionId: z.string().uuid(),
142
+ targetSessionVisibility: SessionTenancyVisibility,
143
+ targetSessionAuthorityEpoch: z.number().int().positive(),
144
+ acceptedWork: AcceptedConnectionWork,
145
+ connectionId: z.string().uuid(),
146
+ connectionGeneration: z.number().int().positive(),
147
+ connectionStatus: z.literal("active"),
148
+ providerDomain: z.string().min(1).max(2048),
149
+ connectionKind: ConnectionKind,
150
+ scope: z.enum(["workspace", "user", "legacy_user"]),
151
+ ownerSubjectId: z.string().min(1).max(512).nullable(),
152
+ ownerOrganizationMembershipId: z.string().uuid().nullable(),
153
+ ownerMembershipAuthorizationRevision: z.number().int().positive().nullable().default(null),
154
+ authoritySource: ConnectionAuthoritySelectionSource,
155
+ selectionSources: z.array(ConnectionUseSelectionSource).min(1).max(128),
156
+ userDelegation: UserResourceDelegation.nullable()
157
+ }).strict().superRefine((value, context) => {
158
+ const ownedBySubject = value.scope !== "workspace";
159
+ const delegated = value.scope === "user";
160
+ if (ownedBySubject !== (value.ownerSubjectId !== null)) {
161
+ context.addIssue({
162
+ code: "custom",
163
+ path: ["ownerSubjectId"],
164
+ message: "personal connections retain an owner subject"
165
+ });
166
+ }
167
+ if (delegated !== (value.ownerOrganizationMembershipId !== null)) {
168
+ context.addIssue({
169
+ code: "custom",
170
+ path: ["ownerOrganizationMembershipId"],
171
+ message: "only user connections retain an owner membership"
172
+ });
173
+ }
174
+ if (delegated !== (value.ownerMembershipAuthorizationRevision !== null)) {
175
+ context.addIssue({
176
+ code: "custom",
177
+ path: ["ownerMembershipAuthorizationRevision"],
178
+ message: "only user connections retain an owner membership revision"
179
+ });
180
+ }
181
+ if (delegated !== (value.userDelegation !== null)) {
182
+ context.addIssue({
183
+ code: "custom",
184
+ path: ["userDelegation"],
185
+ message: "only user connections retain a delegation"
186
+ });
187
+ }
188
+ if (delegated && value.authoritySource !== "user_delegation") {
189
+ context.addIssue({
190
+ code: "custom",
191
+ path: ["authoritySource"],
192
+ message: "user connections require user_delegation provenance"
193
+ });
194
+ }
195
+ if (!delegated && value.authoritySource === "user_delegation") {
196
+ context.addIssue({
197
+ code: "custom",
198
+ path: ["authoritySource"],
199
+ message: "non-delegated connections cannot claim user delegation provenance"
200
+ });
201
+ }
202
+ if (value.scope === "legacy_user" && value.authoritySource !== "legacy_user_compatibility") {
203
+ context.addIssue({
204
+ code: "custom",
205
+ path: ["authoritySource"],
206
+ message: "legacy user connections require explicit compatibility provenance"
207
+ });
208
+ }
209
+ if (value.scope === "workspace" && value.authoritySource === "legacy_user_compatibility") {
210
+ context.addIssue({
211
+ code: "custom",
212
+ path: ["authoritySource"],
213
+ message: "workspace connections cannot claim legacy user provenance"
214
+ });
215
+ }
216
+ if (!delegated && value.originWorkspaceId !== value.targetWorkspaceId) {
217
+ context.addIssue({
218
+ code: "custom",
219
+ path: ["originWorkspaceId"],
220
+ message: "workspace connections must be owned by the target workspace"
221
+ });
222
+ }
223
+ const delegation = value.userDelegation;
224
+ if (!delegation) return;
225
+ const exactFacts = [
226
+ [
227
+ delegation.organizationId === value.organizationId,
228
+ ["userDelegation", "organizationId"],
229
+ "delegation organization mismatch"
230
+ ],
231
+ [
232
+ delegation.workspaceId === value.targetWorkspaceId,
233
+ ["userDelegation", "workspaceId"],
234
+ "delegation target workspace mismatch"
235
+ ],
236
+ [
237
+ delegation.action === ConnectionUseAction.value,
238
+ ["userDelegation", "action"],
239
+ "delegation action mismatch"
240
+ ],
241
+ [
242
+ delegation.context === value.targetSessionVisibility,
243
+ ["userDelegation", "context"],
244
+ "delegation visibility mismatch"
245
+ ]
246
+ ];
247
+ for (const [matches, path, message] of exactFacts) {
248
+ if (!matches) context.addIssue({ code: "custom", path, message });
249
+ }
250
+ if (delegation.sessionId !== null && delegation.sessionId !== value.targetSessionId) {
251
+ context.addIssue({
252
+ code: "custom",
253
+ path: ["userDelegation", "sessionId"],
254
+ message: "delegation session mismatch"
255
+ });
256
+ }
257
+ if (delegation.authorityEpoch !== null && delegation.authorityEpoch !== value.targetSessionAuthorityEpoch) {
258
+ context.addIssue({
259
+ code: "custom",
260
+ path: ["userDelegation", "authorityEpoch"],
261
+ message: "delegation authority epoch mismatch"
262
+ });
263
+ }
264
+ });
265
+ var ConnectionUseDenialReason = z.enum([
266
+ "tenant_mismatch",
267
+ "workspace_access_inactive",
268
+ "session_inactive",
269
+ "session_identity_changed",
270
+ "session_visibility_changed",
271
+ "session_authority_epoch_changed",
272
+ "accepted_attempt_authority_required",
273
+ "accepted_snapshot_digest_changed",
274
+ "connection_missing",
275
+ "connection_identity_changed",
276
+ "connection_generation_changed",
277
+ "connection_status_inactive",
278
+ "connection_owner_changed",
279
+ "owner_membership_inactive",
280
+ "authority_missing",
281
+ "authority_identity_changed",
282
+ "authority_generation_changed",
283
+ "authority_status_inactive",
284
+ "grant_missing",
285
+ "grant_identity_changed",
286
+ "grant_generation_changed",
287
+ "grant_status_inactive",
288
+ "grant_expired",
289
+ "grant_already_consumed"
290
+ ]);
291
+ var ConnectionUseAttributionFields = z.object({
292
+ organizationId: z.string().uuid(),
293
+ workspaceId: z.string().uuid(),
294
+ sessionId: z.string().uuid(),
295
+ connectionId: z.string().uuid(),
296
+ connectionGeneration: z.number().int().positive(),
297
+ scope: z.enum(["workspace", "user", "legacy_user"]),
298
+ ownerSubjectId: z.string().min(1).max(512).nullable(),
299
+ authorityId: z.string().uuid().nullable(),
300
+ grantId: z.string().uuid().nullable()
301
+ }).strict();
302
+ function refineConnectionUseAttribution(value, context) {
303
+ const personal = value.scope !== "workspace";
304
+ for (const field of ["ownerSubjectId"]) {
305
+ if (personal !== (value[field] !== null)) {
306
+ context.addIssue({
307
+ code: "custom",
308
+ path: [field],
309
+ message: personal ? `personal attribution requires ${field}` : `workspace attribution cannot carry ${field}`
310
+ });
311
+ }
312
+ }
313
+ const delegated = value.scope === "user";
314
+ for (const field of ["authorityId", "grantId"]) {
315
+ if (delegated !== (value[field] !== null)) {
316
+ context.addIssue({
317
+ code: "custom",
318
+ path: [field],
319
+ message: delegated ? `delegated personal attribution requires ${field}` : `non-delegated attribution cannot carry ${field}`
320
+ });
321
+ }
322
+ }
323
+ }
324
+ var ConnectionUseAttribution = ConnectionUseAttributionFields.superRefine(
325
+ refineConnectionUseAttribution
326
+ );
327
+ var ConnectionUseAuditFact = ConnectionUseAttributionFields.extend({
328
+ outcome: z.enum(["authorized", "denied"]),
329
+ denialReason: ConnectionUseDenialReason.nullable(),
330
+ occurredAt: z.string().datetime({ offset: true })
331
+ }).superRefine((value, context) => {
332
+ refineConnectionUseAttribution(value, context);
333
+ if (value.outcome === "denied" !== (value.denialReason !== null)) {
334
+ context.addIssue({
335
+ code: "custom",
336
+ path: ["denialReason"],
337
+ message: "only denied connection use carries a denial reason"
338
+ });
339
+ }
340
+ });
341
+ var ConnectionUseAuthorizationResult = z.discriminatedUnion("status", [
342
+ z.object({ status: z.literal("authorized"), attribution: ConnectionUseAttribution }).strict(),
343
+ z.object({ status: z.literal("denied"), reason: ConnectionUseDenialReason }).strict()
344
+ ]);
345
+ export {
346
+ ConnectionAuthorityEnvelope,
347
+ ConnectionAuthorityGrant,
348
+ ConnectionAuthoritySelectionSource,
349
+ ConnectionAuthoritySummary,
350
+ ConnectionUseAction,
351
+ ConnectionUseAttribution,
352
+ ConnectionUseAuditFact,
353
+ ConnectionUseAuthoritySnapshot,
354
+ ConnectionUseAuthorizationResult,
355
+ ConnectionUseDenialReason,
356
+ ConnectionUseGrantMutationResponse,
357
+ ConnectionUseGrantRevocationResponse,
358
+ ConnectionUseSelectionSource,
359
+ IssueConnectionUseGrantRequest,
360
+ ListConnectionAuthoritiesQuery,
361
+ ListConnectionAuthoritiesResponse,
362
+ RevokeConnectionUseGrantQuery
363
+ };
364
+ //# sourceMappingURL=connection-authority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/connection-authority.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n ConnectionKind,\n ManagedUserResourceGrantMode,\n SessionTenancyVisibility,\n UserResourceAuthorityGrant,\n UserResourceDelegation,\n} from \"./index\";\n\n/** The only generic grant action that authorizes use of a connection. */\nexport const ConnectionUseAction = z.literal(\"connection.use\");\nexport type ConnectionUseAction = z.infer<typeof ConnectionUseAction>;\n\n/**\n * Connection authority is either workspace-owned or user-owned. Omission is\n * intentionally compatible with the historical workspace connection path.\n */\nexport const ConnectionAuthorityEnvelope = z\n .object({\n scope: z.enum([\"workspace\", \"user\"]).default(\"workspace\"),\n userDelegation: UserResourceDelegation.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.scope === \"workspace\" && value.userDelegation !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"userDelegation\"],\n message: \"workspace connections cannot carry user delegation\",\n });\n return;\n }\n if (value.scope === \"user\" && value.userDelegation === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"userDelegation\"],\n message: \"user connections require an immutable delegation\",\n });\n return;\n }\n if (value.userDelegation && value.userDelegation.action !== ConnectionUseAction.value) {\n context.addIssue({\n code: \"custom\",\n path: [\"userDelegation\", \"action\"],\n message: \"connection delegation must use connection.use\",\n });\n }\n });\nexport type ConnectionAuthorityEnvelope = z.infer<typeof ConnectionAuthorityEnvelope>;\n\nexport const ConnectionAuthorityGrant = UserResourceAuthorityGrant.extend({\n action: ConnectionUseAction,\n}).strict();\nexport type ConnectionAuthorityGrant = z.infer<typeof ConnectionAuthorityGrant>;\n\n/** Owner-only opaque projection; connection identity and owner metadata stay server-side. */\nexport const ConnectionAuthoritySummary = z\n .object({\n authorityId: z.string().uuid(),\n resourceId: z.string().uuid(),\n originWorkspaceId: z.string().uuid().nullable(),\n generation: z.number().int().positive(),\n status: z.enum([\"active\", \"retained\", \"revoked\"]),\n grants: z.array(ConnectionAuthorityGrant),\n })\n .strict();\nexport type ConnectionAuthoritySummary = z.infer<typeof ConnectionAuthoritySummary>;\n\nexport const ListConnectionAuthoritiesQuery = z\n .object({\n scope: z.literal(\"user\"),\n cursor: z.string().uuid().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(50),\n })\n .strict();\nexport const ListConnectionAuthoritiesResponse = z\n .object({\n scope: z.literal(\"user\"),\n authorities: z.array(ConnectionAuthoritySummary),\n nextCursor: z.string().uuid().nullable(),\n })\n .strict();\n\nexport const IssueConnectionUseGrantRequest = z\n .object({\n scope: z.literal(\"user\"),\n mode: ManagedUserResourceGrantMode,\n context: SessionTenancyVisibility,\n sessionId: z.string().uuid().nullable().optional(),\n expectedAuthorityEpoch: z.number().int().positive().nullable().optional(),\n workspaceSharedAcknowledged: z.boolean().default(false),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.context === \"workspace_shared\" && !value.workspaceSharedAcknowledged) {\n context.addIssue({\n code: \"custom\",\n path: [\"workspaceSharedAcknowledged\"],\n message: \"workspace_shared requires durable shared-output acknowledgement\",\n });\n }\n if (value.mode === \"always\" && (value.sessionId || value.expectedAuthorityEpoch)) {\n context.addIssue({ code: \"custom\", path: [\"sessionId\"], message: \"always is unbound\" });\n }\n if (value.mode === \"session\" && (!value.sessionId || !value.expectedAuthorityEpoch)) {\n context.addIssue({\n code: \"custom\",\n path: [\"sessionId\"],\n message: \"session requires a target session and expectedAuthorityEpoch\",\n });\n }\n });\nexport type IssueConnectionUseGrantRequest = z.infer<typeof IssueConnectionUseGrantRequest>;\n\nexport const RevokeConnectionUseGrantQuery = z.object({ scope: z.literal(\"user\") }).strict();\n\nexport const ConnectionUseGrantMutationResponse = z\n .object({\n scope: z.literal(\"user\"),\n grant: ConnectionAuthorityGrant,\n })\n .strict();\nexport type ConnectionUseGrantMutationResponse = z.infer<typeof ConnectionUseGrantMutationResponse>;\n\nexport const ConnectionUseGrantRevocationResponse = z\n .object({\n scope: z.literal(\"user\"),\n grant: z\n .object({\n grantId: z.string().uuid(),\n generation: z.number().int().positive(),\n status: z.literal(\"revoked\"),\n revokedAt: z.string().datetime(),\n })\n .strict(),\n })\n .strict();\nexport type ConnectionUseGrantRevocationResponse = z.infer<\n typeof ConnectionUseGrantRevocationResponse\n>;\n\nexport const ConnectionAuthoritySelectionSource = z.enum([\n \"explicit_workspace\",\n \"legacy_workspace_omission\",\n \"legacy_user_compatibility\",\n \"user_delegation\",\n]);\nexport type ConnectionAuthoritySelectionSource = z.infer<typeof ConnectionAuthoritySelectionSource>;\n\nexport const ConnectionUseSelectionSource = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9._:-]*[a-z0-9])?$/u);\nexport type ConnectionUseSelectionSource = z.infer<typeof ConnectionUseSelectionSource>;\n\nconst AcceptedConnectionWork = z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"turn\"),\n turnId: z.string().uuid(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"scheduled_task\"),\n taskId: z.string().uuid(),\n taskAuthorityRevision: z.number().int().positive(),\n runId: z.string().uuid(),\n })\n .strict(),\n]);\n\n/**\n * Internal, credential-free authority frozen when work is accepted. Personal\n * owner identity is retained only for live authorization and usage/audit\n * attribution; it is never part of the public delegation envelope.\n */\nexport const ConnectionUseAuthoritySnapshot = z\n .object({\n organizationId: z.string().uuid(),\n originWorkspaceId: z.string().uuid(),\n targetWorkspaceId: z.string().uuid(),\n targetSessionId: z.string().uuid(),\n targetSessionVisibility: SessionTenancyVisibility,\n targetSessionAuthorityEpoch: z.number().int().positive(),\n acceptedWork: AcceptedConnectionWork,\n connectionId: z.string().uuid(),\n connectionGeneration: z.number().int().positive(),\n connectionStatus: z.literal(\"active\"),\n providerDomain: z.string().min(1).max(2048),\n connectionKind: ConnectionKind,\n scope: z.enum([\"workspace\", \"user\", \"legacy_user\"]),\n ownerSubjectId: z.string().min(1).max(512).nullable(),\n ownerOrganizationMembershipId: z.string().uuid().nullable(),\n ownerMembershipAuthorizationRevision: z.number().int().positive().nullable().default(null),\n authoritySource: ConnectionAuthoritySelectionSource,\n selectionSources: z.array(ConnectionUseSelectionSource).min(1).max(128),\n userDelegation: UserResourceDelegation.nullable(),\n })\n .strict()\n .superRefine((value, context) => {\n const ownedBySubject = value.scope !== \"workspace\";\n const delegated = value.scope === \"user\";\n if (ownedBySubject !== (value.ownerSubjectId !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"ownerSubjectId\"],\n message: \"personal connections retain an owner subject\",\n });\n }\n if (delegated !== (value.ownerOrganizationMembershipId !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"ownerOrganizationMembershipId\"],\n message: \"only user connections retain an owner membership\",\n });\n }\n if (delegated !== (value.ownerMembershipAuthorizationRevision !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"ownerMembershipAuthorizationRevision\"],\n message: \"only user connections retain an owner membership revision\",\n });\n }\n if (delegated !== (value.userDelegation !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"userDelegation\"],\n message: \"only user connections retain a delegation\",\n });\n }\n if (delegated && value.authoritySource !== \"user_delegation\") {\n context.addIssue({\n code: \"custom\",\n path: [\"authoritySource\"],\n message: \"user connections require user_delegation provenance\",\n });\n }\n if (!delegated && value.authoritySource === \"user_delegation\") {\n context.addIssue({\n code: \"custom\",\n path: [\"authoritySource\"],\n message: \"non-delegated connections cannot claim user delegation provenance\",\n });\n }\n if (value.scope === \"legacy_user\" && value.authoritySource !== \"legacy_user_compatibility\") {\n context.addIssue({\n code: \"custom\",\n path: [\"authoritySource\"],\n message: \"legacy user connections require explicit compatibility provenance\",\n });\n }\n if (value.scope === \"workspace\" && value.authoritySource === \"legacy_user_compatibility\") {\n context.addIssue({\n code: \"custom\",\n path: [\"authoritySource\"],\n message: \"workspace connections cannot claim legacy user provenance\",\n });\n }\n if (!delegated && value.originWorkspaceId !== value.targetWorkspaceId) {\n context.addIssue({\n code: \"custom\",\n path: [\"originWorkspaceId\"],\n message: \"workspace connections must be owned by the target workspace\",\n });\n }\n const delegation = value.userDelegation;\n if (!delegation) return;\n const exactFacts: Array<[boolean, (string | number)[], string]> = [\n [\n delegation.organizationId === value.organizationId,\n [\"userDelegation\", \"organizationId\"],\n \"delegation organization mismatch\",\n ],\n [\n delegation.workspaceId === value.targetWorkspaceId,\n [\"userDelegation\", \"workspaceId\"],\n \"delegation target workspace mismatch\",\n ],\n [\n delegation.action === ConnectionUseAction.value,\n [\"userDelegation\", \"action\"],\n \"delegation action mismatch\",\n ],\n [\n delegation.context === value.targetSessionVisibility,\n [\"userDelegation\", \"context\"],\n \"delegation visibility mismatch\",\n ],\n ];\n for (const [matches, path, message] of exactFacts) {\n if (!matches) context.addIssue({ code: \"custom\", path, message });\n }\n if (delegation.sessionId !== null && delegation.sessionId !== value.targetSessionId) {\n context.addIssue({\n code: \"custom\",\n path: [\"userDelegation\", \"sessionId\"],\n message: \"delegation session mismatch\",\n });\n }\n if (\n delegation.authorityEpoch !== null &&\n delegation.authorityEpoch !== value.targetSessionAuthorityEpoch\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"userDelegation\", \"authorityEpoch\"],\n message: \"delegation authority epoch mismatch\",\n });\n }\n });\nexport type ConnectionUseAuthoritySnapshot = z.infer<typeof ConnectionUseAuthoritySnapshot>;\n\nexport const ConnectionUseDenialReason = z.enum([\n \"tenant_mismatch\",\n \"workspace_access_inactive\",\n \"session_inactive\",\n \"session_identity_changed\",\n \"session_visibility_changed\",\n \"session_authority_epoch_changed\",\n \"accepted_attempt_authority_required\",\n \"accepted_snapshot_digest_changed\",\n \"connection_missing\",\n \"connection_identity_changed\",\n \"connection_generation_changed\",\n \"connection_status_inactive\",\n \"connection_owner_changed\",\n \"owner_membership_inactive\",\n \"authority_missing\",\n \"authority_identity_changed\",\n \"authority_generation_changed\",\n \"authority_status_inactive\",\n \"grant_missing\",\n \"grant_identity_changed\",\n \"grant_generation_changed\",\n \"grant_status_inactive\",\n \"grant_expired\",\n \"grant_already_consumed\",\n]);\nexport type ConnectionUseDenialReason = z.infer<typeof ConnectionUseDenialReason>;\n\nconst ConnectionUseAttributionFields = z\n .object({\n organizationId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n connectionId: z.string().uuid(),\n connectionGeneration: z.number().int().positive(),\n scope: z.enum([\"workspace\", \"user\", \"legacy_user\"]),\n ownerSubjectId: z.string().min(1).max(512).nullable(),\n authorityId: z.string().uuid().nullable(),\n grantId: z.string().uuid().nullable(),\n })\n .strict();\n\nfunction refineConnectionUseAttribution(\n value: z.infer<typeof ConnectionUseAttributionFields>,\n context: z.RefinementCtx,\n): void {\n const personal = value.scope !== \"workspace\";\n for (const field of [\"ownerSubjectId\"] as const) {\n if (personal !== (value[field] !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [field],\n message: personal\n ? `personal attribution requires ${field}`\n : `workspace attribution cannot carry ${field}`,\n });\n }\n }\n const delegated = value.scope === \"user\";\n for (const field of [\"authorityId\", \"grantId\"] as const) {\n if (delegated !== (value[field] !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [field],\n message: delegated\n ? `delegated personal attribution requires ${field}`\n : `non-delegated attribution cannot carry ${field}`,\n });\n }\n }\n}\n\n/** Metadata-only attribution emitted after pre-use authorization. */\nexport const ConnectionUseAttribution = ConnectionUseAttributionFields.superRefine(\n refineConnectionUseAttribution,\n);\nexport type ConnectionUseAttribution = z.infer<typeof ConnectionUseAttribution>;\n\nexport const ConnectionUseAuditFact = ConnectionUseAttributionFields.extend({\n outcome: z.enum([\"authorized\", \"denied\"]),\n denialReason: ConnectionUseDenialReason.nullable(),\n occurredAt: z.string().datetime({ offset: true }),\n}).superRefine((value, context) => {\n refineConnectionUseAttribution(value, context);\n if ((value.outcome === \"denied\") !== (value.denialReason !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"denialReason\"],\n message: \"only denied connection use carries a denial reason\",\n });\n }\n});\nexport type ConnectionUseAuditFact = z.infer<typeof ConnectionUseAuditFact>;\n\nexport const ConnectionUseAuthorizationResult = z.discriminatedUnion(\"status\", [\n z.object({ status: z.literal(\"authorized\"), attribution: ConnectionUseAttribution }).strict(),\n z.object({ status: z.literal(\"denied\"), reason: ConnectionUseDenialReason }).strict(),\n]);\nexport type ConnectionUseAuthorizationResult = z.infer<typeof ConnectionUseAuthorizationResult>;\n"],"mappings":"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","names":[]}
@@ -0,0 +1,95 @@
1
+ import { z } from "zod";
2
+ export declare const CONNECTOR_ATTACHMENT_TRANSFER_VERSION: 1;
3
+ export declare const CONNECTOR_ATTACHMENT_RECEIPT_VERSION: 1;
4
+ export declare const CONNECTOR_ATTACHMENT_TRANSFER_META_KEY: "opengeni/connector-attachment-transfers";
5
+ export declare const CONNECTOR_ATTACHMENT_RECEIPT_META_KEY: "opengeni/connector-attachment-receipts";
6
+ export declare const CONNECTOR_ATTACHMENT_MAX_COUNT = 16;
7
+ export declare const CONNECTOR_ATTACHMENT_MAX_BYTES = 5000000000;
8
+ export declare const CONNECTOR_ATTACHMENT_FILENAME_MAX_UTF8_BYTES = 255;
9
+ export declare const CONNECTOR_ATTACHMENT_MEDIA_TYPE_MAX_UTF8_BYTES = 256;
10
+ export declare const CONNECTOR_ATTACHMENT_PROVIDER_MAX_UTF8_BYTES = 128;
11
+ export declare const CONNECTOR_ATTACHMENT_PROVIDER_ID_MAX_UTF8_BYTES = 512;
12
+ export declare const CONNECTOR_ATTACHMENT_SOURCE_URL_MAX_UTF8_BYTES: number;
13
+ export declare const CONNECTOR_ATTACHMENT_SANDBOX_PATH_MAX_UTF8_BYTES: number;
14
+ export declare const ConnectorAttachmentProviderIdentity: z.ZodObject<{
15
+ provider: z.ZodString;
16
+ kind: z.ZodLiteral<"attachment">;
17
+ value: z.ZodString;
18
+ }, z.core.$strict>;
19
+ export type ConnectorAttachmentProviderIdentity = z.infer<typeof ConnectorAttachmentProviderIdentity>;
20
+ export declare const ConnectorAttachmentFileName: z.ZodString;
21
+ export declare const ConnectorAttachmentMediaType: z.ZodString;
22
+ export declare const ConnectorAttachmentSha256: z.ZodString;
23
+ export declare const ConnectorAttachmentPrivateSource: z.ZodObject<{
24
+ url: z.ZodString;
25
+ expiresAt: z.ZodISODateTime;
26
+ }, z.core.$strict>;
27
+ export type ConnectorAttachmentPrivateSource = z.infer<typeof ConnectorAttachmentPrivateSource>;
28
+ export declare const ConnectorAttachmentTransfer: z.ZodObject<{
29
+ providerAttachmentId: z.ZodObject<{
30
+ provider: z.ZodString;
31
+ kind: z.ZodLiteral<"attachment">;
32
+ value: z.ZodString;
33
+ }, z.core.$strict>;
34
+ fileName: z.ZodString;
35
+ mediaType: z.ZodString;
36
+ byteSize: z.ZodNumber;
37
+ contentSha256: z.ZodString;
38
+ source: z.ZodObject<{
39
+ url: z.ZodString;
40
+ expiresAt: z.ZodISODateTime;
41
+ }, z.core.$strict>;
42
+ }, z.core.$strict>;
43
+ export type ConnectorAttachmentTransfer = z.infer<typeof ConnectorAttachmentTransfer>;
44
+ export declare const ConnectorAttachmentTransferEnvelope: z.ZodObject<{
45
+ version: z.ZodLiteral<1>;
46
+ attachments: z.ZodArray<z.ZodObject<{
47
+ providerAttachmentId: z.ZodObject<{
48
+ provider: z.ZodString;
49
+ kind: z.ZodLiteral<"attachment">;
50
+ value: z.ZodString;
51
+ }, z.core.$strict>;
52
+ fileName: z.ZodString;
53
+ mediaType: z.ZodString;
54
+ byteSize: z.ZodNumber;
55
+ contentSha256: z.ZodString;
56
+ source: z.ZodObject<{
57
+ url: z.ZodString;
58
+ expiresAt: z.ZodISODateTime;
59
+ }, z.core.$strict>;
60
+ }, z.core.$strict>>;
61
+ }, z.core.$strict>;
62
+ export type ConnectorAttachmentTransferEnvelope = z.infer<typeof ConnectorAttachmentTransferEnvelope>;
63
+ export declare const ConnectorAttachmentSandboxPath: z.ZodString;
64
+ export declare const ConnectorAttachmentReceipt: z.ZodObject<{
65
+ providerAttachmentId: z.ZodObject<{
66
+ provider: z.ZodString;
67
+ kind: z.ZodLiteral<"attachment">;
68
+ value: z.ZodString;
69
+ }, z.core.$strict>;
70
+ fileName: z.ZodString;
71
+ mediaType: z.ZodString;
72
+ byteSize: z.ZodNumber;
73
+ contentSha256: z.ZodString;
74
+ sandboxPath: z.ZodString;
75
+ }, z.core.$strict>;
76
+ export type ConnectorAttachmentReceipt = z.infer<typeof ConnectorAttachmentReceipt>;
77
+ export declare const ConnectorAttachmentReceiptEnvelope: z.ZodObject<{
78
+ version: z.ZodLiteral<1>;
79
+ attachments: z.ZodArray<z.ZodObject<{
80
+ providerAttachmentId: z.ZodObject<{
81
+ provider: z.ZodString;
82
+ kind: z.ZodLiteral<"attachment">;
83
+ value: z.ZodString;
84
+ }, z.core.$strict>;
85
+ fileName: z.ZodString;
86
+ mediaType: z.ZodString;
87
+ byteSize: z.ZodNumber;
88
+ contentSha256: z.ZodString;
89
+ sandboxPath: z.ZodString;
90
+ }, z.core.$strict>>;
91
+ }, z.core.$strict>;
92
+ export type ConnectorAttachmentReceiptEnvelope = z.infer<typeof ConnectorAttachmentReceiptEnvelope>;
93
+ export declare function parseConnectorAttachmentTransferEnvelope(value: unknown, options?: {
94
+ nowMs?: number;
95
+ }): ConnectorAttachmentTransferEnvelope;
@@ -0,0 +1,51 @@
1
+ import {
2
+ CONNECTOR_ATTACHMENT_FILENAME_MAX_UTF8_BYTES,
3
+ CONNECTOR_ATTACHMENT_MAX_BYTES,
4
+ CONNECTOR_ATTACHMENT_MAX_COUNT,
5
+ CONNECTOR_ATTACHMENT_MEDIA_TYPE_MAX_UTF8_BYTES,
6
+ CONNECTOR_ATTACHMENT_PROVIDER_ID_MAX_UTF8_BYTES,
7
+ CONNECTOR_ATTACHMENT_PROVIDER_MAX_UTF8_BYTES,
8
+ CONNECTOR_ATTACHMENT_RECEIPT_META_KEY,
9
+ CONNECTOR_ATTACHMENT_RECEIPT_VERSION,
10
+ CONNECTOR_ATTACHMENT_SANDBOX_PATH_MAX_UTF8_BYTES,
11
+ CONNECTOR_ATTACHMENT_SOURCE_URL_MAX_UTF8_BYTES,
12
+ CONNECTOR_ATTACHMENT_TRANSFER_META_KEY,
13
+ CONNECTOR_ATTACHMENT_TRANSFER_VERSION,
14
+ ConnectorAttachmentFileName,
15
+ ConnectorAttachmentMediaType,
16
+ ConnectorAttachmentPrivateSource,
17
+ ConnectorAttachmentProviderIdentity,
18
+ ConnectorAttachmentReceipt,
19
+ ConnectorAttachmentReceiptEnvelope,
20
+ ConnectorAttachmentSandboxPath,
21
+ ConnectorAttachmentSha256,
22
+ ConnectorAttachmentTransfer,
23
+ ConnectorAttachmentTransferEnvelope,
24
+ parseConnectorAttachmentTransferEnvelope
25
+ } from "./chunk-YBW5JSA3.js";
26
+ export {
27
+ CONNECTOR_ATTACHMENT_FILENAME_MAX_UTF8_BYTES,
28
+ CONNECTOR_ATTACHMENT_MAX_BYTES,
29
+ CONNECTOR_ATTACHMENT_MAX_COUNT,
30
+ CONNECTOR_ATTACHMENT_MEDIA_TYPE_MAX_UTF8_BYTES,
31
+ CONNECTOR_ATTACHMENT_PROVIDER_ID_MAX_UTF8_BYTES,
32
+ CONNECTOR_ATTACHMENT_PROVIDER_MAX_UTF8_BYTES,
33
+ CONNECTOR_ATTACHMENT_RECEIPT_META_KEY,
34
+ CONNECTOR_ATTACHMENT_RECEIPT_VERSION,
35
+ CONNECTOR_ATTACHMENT_SANDBOX_PATH_MAX_UTF8_BYTES,
36
+ CONNECTOR_ATTACHMENT_SOURCE_URL_MAX_UTF8_BYTES,
37
+ CONNECTOR_ATTACHMENT_TRANSFER_META_KEY,
38
+ CONNECTOR_ATTACHMENT_TRANSFER_VERSION,
39
+ ConnectorAttachmentFileName,
40
+ ConnectorAttachmentMediaType,
41
+ ConnectorAttachmentPrivateSource,
42
+ ConnectorAttachmentProviderIdentity,
43
+ ConnectorAttachmentReceipt,
44
+ ConnectorAttachmentReceiptEnvelope,
45
+ ConnectorAttachmentSandboxPath,
46
+ ConnectorAttachmentSha256,
47
+ ConnectorAttachmentTransfer,
48
+ ConnectorAttachmentTransferEnvelope,
49
+ parseConnectorAttachmentTransferEnvelope
50
+ };
51
+ //# sourceMappingURL=connector-attachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,14 +1,21 @@
1
- import { EDITABLE_ARTIFACT_MODEL_SCHEMA_VERSION, EDITABLE_ARTIFACT_SNAPSHOT_VERSION } from "./editable-artifact-versions.js";
2
- export { EDITABLE_ARTIFACT_MODEL_SCHEMA_VERSION, EDITABLE_ARTIFACT_SNAPSHOT_VERSION, } from "./editable-artifact-versions.js";
1
+ export { DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION, DOCUMENT_ARTIFACT_SNAPSHOT_VERSION, PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION, PRESENTATION_ARTIFACT_SNAPSHOT_VERSION, SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION, SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION, } from "./editable-artifact-versions.js";
3
2
  export type EditableArtifactModality = "spreadsheet" | "document" | "presentation";
4
3
  export type EditableArtifactConcurrencySemantics = "causal-crdt-v1" | "authoritative-serialized-stale-base-v1";
4
+ export type CurrentEditableArtifactCompatibility = Readonly<{
5
+ modality: EditableArtifactModality;
6
+ liveProtocolVersion: number;
7
+ modelSchemaVersion: number;
8
+ snapshotVersion: number;
9
+ commandProtocolVersion: number;
10
+ committedTransactionProtocolVersion: number;
11
+ }>;
5
12
  export type EditableArtifactCodecDescriptor = Readonly<{
6
13
  modality: EditableArtifactModality;
7
- modelSchemaVersion: typeof EDITABLE_ARTIFACT_MODEL_SCHEMA_VERSION;
8
- snapshotVersion: typeof EDITABLE_ARTIFACT_SNAPSHOT_VERSION;
14
+ modelSchemaVersion: 1 | 2;
15
+ snapshotVersion: 1 | 2;
9
16
  command: Readonly<{
10
- magic: "OGASC001" | "OGADC001" | "OGAPC001";
11
- version: 1;
17
+ magic: "OGASC002" | "OGADC001" | "OGAPC001";
18
+ version: 1 | 2;
12
19
  maximumBytes: number;
13
20
  maximumCommands: number;
14
21
  encode: (value: unknown) => Uint8Array;
@@ -31,11 +38,13 @@ export type EditableArtifactCodecDescriptor = Readonly<{
31
38
  }>;
32
39
  concurrency: Readonly<{
33
40
  semantics: EditableArtifactConcurrencySemantics;
34
- collaborationEnvelope: "OGACO001" | null;
41
+ collaborationEnvelope: "OGACO002" | null;
35
42
  staleBaseMustBeRejected: boolean;
36
43
  }>;
37
44
  }>;
38
45
  export declare const EDITABLE_ARTIFACT_CODEC_REGISTRY: Readonly<Record<EditableArtifactModality, EditableArtifactCodecDescriptor>>;
46
+ /** One exact current compatibility tuple per durable modality. */
47
+ export declare function currentEditableArtifactCompatibility(modality: EditableArtifactModality): CurrentEditableArtifactCompatibility;
39
48
  /**
40
49
  * Selects solely from the durable artifact modality plus persisted versions.
41
50
  * Modality intentionally never enters OGATX001: the durable artifact row is
@@ -1,20 +1,30 @@
1
1
  import {
2
2
  EDITABLE_ARTIFACT_CODEC_REGISTRY,
3
+ currentEditableArtifactCompatibility,
3
4
  editableArtifactCodecFor
4
- } from "./chunk-JBCIY7QD.js";
5
+ } from "./chunk-7RMTKFJW.js";
6
+ import "./chunk-Y3KNXVTD.js";
5
7
  import "./chunk-RIY7GYQS.js";
6
- import "./chunk-CADSX6UN.js";
7
8
  import "./chunk-D2HKF2EF.js";
8
9
  import "./chunk-MYBZRDTY.js";
9
- import "./chunk-LSB7GRLG.js";
10
+ import "./chunk-TXTQIYCV.js";
10
11
  import {
11
- EDITABLE_ARTIFACT_MODEL_SCHEMA_VERSION,
12
- EDITABLE_ARTIFACT_SNAPSHOT_VERSION
13
- } from "./chunk-BVGIYW7D.js";
12
+ DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,
13
+ DOCUMENT_ARTIFACT_SNAPSHOT_VERSION,
14
+ PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,
15
+ PRESENTATION_ARTIFACT_SNAPSHOT_VERSION,
16
+ SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,
17
+ SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION
18
+ } from "./chunk-PX3VCKAU.js";
14
19
  export {
20
+ DOCUMENT_ARTIFACT_MODEL_SCHEMA_VERSION,
21
+ DOCUMENT_ARTIFACT_SNAPSHOT_VERSION,
15
22
  EDITABLE_ARTIFACT_CODEC_REGISTRY,
16
- EDITABLE_ARTIFACT_MODEL_SCHEMA_VERSION,
17
- EDITABLE_ARTIFACT_SNAPSHOT_VERSION,
23
+ PRESENTATION_ARTIFACT_MODEL_SCHEMA_VERSION,
24
+ PRESENTATION_ARTIFACT_SNAPSHOT_VERSION,
25
+ SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,
26
+ SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION,
27
+ currentEditableArtifactCompatibility,
18
28
  editableArtifactCodecFor
19
29
  };
20
30
  //# sourceMappingURL=editable-artifact-codec-registry.js.map
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Strict, allocation-bounded inspection of canonical OGACO001 transactions.
2
+ * Strict, allocation-bounded inspection of canonical OGACO002 transactions.
3
3
  *
4
4
  * The Rust kernel remains the authority for applying operations. This decoder
5
5
  * validates the complete envelope and every typed operation so metadata after
@@ -27,7 +27,7 @@ export type CommittedTransactionSummary = Readonly<{
27
27
  stateHash: string;
28
28
  }>;
29
29
  /**
30
- * Decodes only the metadata of one exact canonical OGACO001 byte envelope.
30
+ * Decodes only the metadata of one exact canonical OGACO002 byte envelope.
31
31
  *
32
32
  * This function is synchronous and never mutates or retains `bytes`. The
33
33
  * caller remains the owner of the exact canonical envelope.