@opengeni/core 0.21.10 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/access/index.d.ts +1 -1
  2. package/dist/application/new-session-drafts.d.ts +1 -1
  3. package/dist/application/session-commands.d.ts +2 -2
  4. package/dist/billing/limits.d.ts +1 -1
  5. package/dist/chunk-6WKPWE5S.js +2380 -0
  6. package/dist/chunk-6WKPWE5S.js.map +1 -0
  7. package/dist/chunk-JJU6I5XD.js +2713 -0
  8. package/dist/chunk-JJU6I5XD.js.map +1 -0
  9. package/dist/chunk-NYPMQ7NO.js +2270 -0
  10. package/dist/chunk-NYPMQ7NO.js.map +1 -0
  11. package/dist/dependencies.d.ts +26 -6
  12. package/dist/domain/capabilities.d.ts +28 -3
  13. package/dist/domain/company-profile-durable-learning-adapter.d.ts +39 -0
  14. package/dist/domain/durable-learning-slack-publication.d.ts +72 -0
  15. package/dist/domain/editable-artifacts/agent-application.d.ts +192 -0
  16. package/dist/domain/editable-artifacts/durable-export-postgres.d.ts +4 -0
  17. package/dist/domain/editable-artifacts/durable-export.d.ts +212 -0
  18. package/dist/domain/editable-artifacts/errors.d.ts +47 -0
  19. package/dist/domain/editable-artifacts/hash.d.ts +11 -0
  20. package/dist/domain/editable-artifacts/in-memory.d.ts +99 -0
  21. package/dist/domain/editable-artifacts/index.d.ts +14 -0
  22. package/dist/domain/editable-artifacts/ports.d.ts +341 -0
  23. package/dist/domain/editable-artifacts/postgres-adapters.d.ts +13 -0
  24. package/dist/domain/editable-artifacts/service.d.ts +105 -0
  25. package/dist/domain/editable-artifacts/snapshot-compaction.d.ts +44 -0
  26. package/dist/domain/editable-artifacts/snapshot-verifier-genesis.d.ts +50 -0
  27. package/dist/domain/editable-artifacts/snapshot-verifier-materialization.d.ts +21 -0
  28. package/dist/domain/editable-artifacts/snapshot-verifier.d.ts +118 -0
  29. package/dist/domain/editable-artifacts/types.d.ts +410 -0
  30. package/dist/domain/memory-slack-delivery.d.ts +19 -0
  31. package/dist/domain/packs.d.ts +29 -1
  32. package/dist/domain/personal-connection-delegations.d.ts +9 -1
  33. package/dist/domain/scheduled-tasks.d.ts +2 -2
  34. package/dist/domain/session-tool-policy.d.ts +2 -2
  35. package/dist/domain/sessions.d.ts +14 -6
  36. package/dist/domain/skill-imports.d.ts +32 -0
  37. package/dist/domain/slack-publication-secret-safety.d.ts +8 -0
  38. package/dist/domain/timeline-annotations.d.ts +5 -0
  39. package/dist/domain/video-generation-capabilities.d.ts +9 -0
  40. package/dist/domain/video-generation.d.ts +47 -0
  41. package/dist/editable-artifact-live/application.d.ts +69 -0
  42. package/dist/editable-artifact-live/errors.d.ts +1 -0
  43. package/dist/editable-artifact-live/index.d.ts +8 -0
  44. package/dist/editable-artifact-live/outbox-dispatcher.d.ts +162 -0
  45. package/dist/editable-artifact-live/ports.d.ts +100 -0
  46. package/dist/editable-artifact-live/server.d.ts +71 -0
  47. package/dist/editable-artifact-live/ticket.d.ts +40 -0
  48. package/dist/editable-artifact-live/types.d.ts +213 -0
  49. package/dist/editable-artifact-live/wire.d.ts +34 -0
  50. package/dist/editable-artifact-live.d.ts +2 -0
  51. package/dist/editable-artifact-live.js +58 -0
  52. package/dist/editable-artifact-live.js.map +1 -0
  53. package/dist/editable-artifacts.d.ts +2 -0
  54. package/dist/editable-artifacts.js +179 -0
  55. package/dist/editable-artifacts.js.map +1 -0
  56. package/dist/index.d.ts +35 -26
  57. package/dist/index.js +2792 -609
  58. package/dist/index.js.map +1 -1
  59. package/dist/managed-session.d.ts +1 -1
  60. package/dist/rigs/index.d.ts +1 -1
  61. package/dist/rigs/provider-images.d.ts +31 -0
  62. package/dist/sandbox/routing.d.ts +1 -0
  63. package/dist/session-authorization.d.ts +1 -1
  64. package/dist/workflow-wake-contract.d.ts +7 -0
  65. package/package.json +18 -10
  66. package/src/application/new-session-drafts.ts +2 -0
  67. package/src/application/session-commands.ts +188 -107
  68. package/src/dependencies.ts +30 -2
  69. package/src/domain/capabilities.ts +604 -220
  70. package/src/domain/company-profile-durable-learning-adapter.ts +221 -0
  71. package/src/domain/durable-learning-slack-publication.ts +202 -0
  72. package/src/domain/editable-artifacts/agent-application.ts +687 -0
  73. package/src/domain/editable-artifacts/durable-export-postgres.ts +139 -0
  74. package/src/domain/editable-artifacts/durable-export.ts +734 -0
  75. package/src/domain/editable-artifacts/errors.ts +115 -0
  76. package/src/domain/editable-artifacts/hash.ts +131 -0
  77. package/src/domain/editable-artifacts/in-memory.ts +1662 -0
  78. package/src/domain/editable-artifacts/index.ts +14 -0
  79. package/src/domain/editable-artifacts/ports.ts +462 -0
  80. package/src/domain/editable-artifacts/postgres-adapters.ts +49 -0
  81. package/src/domain/editable-artifacts/service.ts +2402 -0
  82. package/src/domain/editable-artifacts/snapshot-compaction.ts +246 -0
  83. package/src/domain/editable-artifacts/snapshot-verifier-genesis.ts +235 -0
  84. package/src/domain/editable-artifacts/snapshot-verifier-materialization.ts +74 -0
  85. package/src/domain/editable-artifacts/snapshot-verifier.ts +687 -0
  86. package/src/domain/editable-artifacts/types.ts +835 -0
  87. package/src/domain/insights.ts +136 -33
  88. package/src/domain/memory-slack-delivery.ts +204 -0
  89. package/src/domain/memory-slack-publication.ts +5 -2
  90. package/src/domain/packs.ts +266 -5
  91. package/src/domain/personal-connection-delegations.ts +97 -6
  92. package/src/domain/scheduled-tasks.ts +155 -29
  93. package/src/domain/session-tool-policy.ts +8 -2
  94. package/src/domain/sessions.ts +274 -131
  95. package/src/domain/skill-imports.ts +350 -0
  96. package/src/domain/slack-publication-secret-safety.ts +42 -0
  97. package/src/domain/timeline-annotations.ts +204 -0
  98. package/src/domain/video-generation-capabilities.ts +69 -0
  99. package/src/domain/video-generation.ts +249 -0
  100. package/src/editable-artifact-live/application.ts +182 -0
  101. package/src/editable-artifact-live/errors.ts +4 -0
  102. package/src/editable-artifact-live/index.ts +8 -0
  103. package/src/editable-artifact-live/outbox-dispatcher.ts +916 -0
  104. package/src/editable-artifact-live/ports.ts +139 -0
  105. package/src/editable-artifact-live/server.ts +1707 -0
  106. package/src/editable-artifact-live/ticket.ts +217 -0
  107. package/src/editable-artifact-live/types.ts +286 -0
  108. package/src/editable-artifact-live/wire.ts +95 -0
  109. package/src/editable-artifact-live.ts +2 -0
  110. package/src/editable-artifacts.ts +2 -0
  111. package/src/index.ts +13 -0
  112. package/src/rigs/index.ts +26 -19
  113. package/src/rigs/provider-images.ts +110 -0
  114. package/src/sandbox/routing.ts +6 -3
  115. package/src/session-authorization.ts +3 -0
  116. package/src/workflow-wake-contract.ts +8 -0
@@ -0,0 +1,118 @@
1
+ import { type BoundedObjectReadPort } from "@opengeni/storage";
2
+ import type { EditableArtifactSnapshotVerifierPort } from "./ports.js";
3
+ import { type EditableArtifactCausalFrontier, type EditableArtifactContentHash, type EditableArtifactId, type EditableArtifactScope, type EditableArtifactModality, type EditableArtifactStateHash, type PublishEditableArtifactSnapshotRequest } from "./types.js";
4
+ export declare const MAX_EDITABLE_ARTIFACT_SNAPSHOT_BYTES: number;
5
+ export declare const MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_BYTES: number;
6
+ export declare const MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_SEGMENTS = 100000;
7
+ export declare const MAX_EDITABLE_ARTIFACT_SNAPSHOT_TAIL_SEGMENT_BYTES: number;
8
+ export type EditableArtifactSnapshotVerificationErrorCode = "cancelled" | "canonical_mismatch" | "content_hash_mismatch" | "content_type_mismatch" | "coverage_mismatch" | "frontier_mismatch" | "identity_mismatch" | "kernel_rejected" | "limit_exceeded" | "object_changed" | "object_missing" | "replay_invalid" | "state_hash_mismatch" | "storage_failure" | "truncated" | "version_mismatch";
9
+ /** Intentionally contains no provider diagnostic, reference, key, or URL. */
10
+ export declare class EditableArtifactSnapshotVerificationError extends Error {
11
+ readonly code: EditableArtifactSnapshotVerificationErrorCode;
12
+ constructor(code: EditableArtifactSnapshotVerificationErrorCode);
13
+ }
14
+ type EditableArtifactSnapshotReplaySegmentCommon = Readonly<{
15
+ sequenceStart: number;
16
+ sequenceEnd: number;
17
+ contentHash: EditableArtifactContentHash;
18
+ bytes: Uint8Array;
19
+ }>;
20
+ export type EditableArtifactSnapshotReplaySegment = (EditableArtifactSnapshotReplaySegmentCommon & Readonly<{
21
+ modality: "spreadsheet";
22
+ operationProtocolVersion: number;
23
+ }>) | (EditableArtifactSnapshotReplaySegmentCommon & Readonly<{
24
+ modality: "document" | "presentation";
25
+ }>);
26
+ type EditableArtifactSnapshotReplayPlanCommon = Readonly<{
27
+ modality: EditableArtifactModality;
28
+ /** Must equal the verified snapshot's coverage boundary. */
29
+ baseHeadSequence: number;
30
+ targetHeadSequence: number;
31
+ targetStateHash: EditableArtifactStateHash;
32
+ segments: AsyncIterable<EditableArtifactSnapshotReplaySegment>;
33
+ }>;
34
+ export type EditableArtifactSnapshotReplayPlan = (EditableArtifactSnapshotReplayPlanCommon & Readonly<{
35
+ modality: "spreadsheet";
36
+ targetCausalFrontier: EditableArtifactCausalFrontier;
37
+ }>) | (EditableArtifactSnapshotReplayPlanCommon & Readonly<{
38
+ modality: "document" | "presentation";
39
+ targetNativeRevision: number;
40
+ }>);
41
+ /** Optional authoritative tail used to prove reconstruction to a later head. */
42
+ export interface EditableArtifactSnapshotReplayPlanPort {
43
+ resolve(input: {
44
+ scope: EditableArtifactScope;
45
+ artifactId: EditableArtifactId;
46
+ snapshot: PublishEditableArtifactSnapshotRequest;
47
+ signal?: AbortSignal;
48
+ }): Promise<EditableArtifactSnapshotReplayPlan | null>;
49
+ }
50
+ type IsolatedEditableArtifactSnapshotKernelResultCommon = Readonly<{
51
+ modality: EditableArtifactModality;
52
+ /** True only when canonical re-encoding was byte-equivalent to the input. */
53
+ canonicalReencodeVerified: true;
54
+ scope: EditableArtifactScope;
55
+ artifactId: EditableArtifactId;
56
+ canonicalByteSize: number;
57
+ canonicalContentHash: EditableArtifactContentHash;
58
+ coveredHeadSequence: number;
59
+ stateHash: EditableArtifactStateHash;
60
+ modelSchemaVersion: number;
61
+ kernelVersion: string;
62
+ }>;
63
+ export type IsolatedEditableArtifactSnapshotKernelResult = (IsolatedEditableArtifactSnapshotKernelResultCommon & Readonly<{
64
+ modality: "spreadsheet";
65
+ /** True only after decoding dots, vectors, tombstones, and undo metadata. */
66
+ fullCrdtStateVerified: true;
67
+ coveredCausalFrontier: EditableArtifactCausalFrontier;
68
+ operationProtocolVersion: number;
69
+ crdtStateVersion: number;
70
+ replayedTarget?: Readonly<{
71
+ headSequence: number;
72
+ causalFrontier: EditableArtifactCausalFrontier;
73
+ stateHash: EditableArtifactStateHash;
74
+ }>;
75
+ }>) | (IsolatedEditableArtifactSnapshotKernelResultCommon & Readonly<{
76
+ modality: "document" | "presentation";
77
+ nativeRevision: number;
78
+ replayedTarget?: Readonly<{
79
+ headSequence: number;
80
+ nativeRevision: number;
81
+ stateHash: EditableArtifactStateHash;
82
+ }>;
83
+ }>);
84
+ /** Adapter to the exact no-network native kernel; JavaScript models are never authority. */
85
+ export interface IsolatedEditableArtifactSnapshotKernelPort {
86
+ verifyAndReconstruct(input: {
87
+ scope: EditableArtifactScope;
88
+ artifactId: EditableArtifactId;
89
+ modality: EditableArtifactModality;
90
+ /** Durable coverage/version metadata stays distinct from native revision. */
91
+ expectedSnapshot: PublishEditableArtifactSnapshotRequest;
92
+ snapshotChunks: AsyncIterable<Uint8Array>;
93
+ expectedSnapshotByteSize: number;
94
+ replayPlan?: EditableArtifactSnapshotReplayPlan;
95
+ signal?: AbortSignal;
96
+ }): Promise<IsolatedEditableArtifactSnapshotKernelResult>;
97
+ }
98
+ export type ProductionEditableArtifactSnapshotVerifierDependencies = Readonly<{
99
+ objects: BoundedObjectReadPort;
100
+ kernel: IsolatedEditableArtifactSnapshotKernelPort;
101
+ replayPlans?: EditableArtifactSnapshotReplayPlanPort;
102
+ maxSnapshotBytes?: number;
103
+ maxReplayBytes?: number;
104
+ maxReplaySegments?: number;
105
+ snapshotChunkBytes?: number;
106
+ }>;
107
+ /**
108
+ * Production verifier for the existing domain port. Publication remains a
109
+ * separate, short forward-only database CAS after this method succeeds.
110
+ */
111
+ export declare class ProductionEditableArtifactSnapshotVerifier implements EditableArtifactSnapshotVerifierPort {
112
+ #private;
113
+ constructor(dependencies: ProductionEditableArtifactSnapshotVerifierDependencies);
114
+ verify(input: Parameters<EditableArtifactSnapshotVerifierPort["verify"]>[0] & {
115
+ signal?: AbortSignal;
116
+ }): Promise<void>;
117
+ }
118
+ export {};
@@ -0,0 +1,410 @@
1
+ import type { EditableArtifactMutationIntent as ContractEditableArtifactMutationIntent, EDITABLE_ARTIFACT_INTENT_VERSION } from "@opengeni/contracts/editable-artifacts";
2
+ /**
3
+ * Domain vocabulary for collaborative, editable Office-like artifacts.
4
+ *
5
+ * This is intentionally unrelated to OpenGeni's published HTML artifacts and
6
+ * document-ingestion records. An editable artifact is mutable canonical model
7
+ * state plus a causally ordered operation history.
8
+ */
9
+ declare const editableArtifactIdBrand: unique symbol;
10
+ declare const editableArtifactTransactionIdBrand: unique symbol;
11
+ declare const editableArtifactReceiptIdBrand: unique symbol;
12
+ declare const editableArtifactSnapshotIdBrand: unique symbol;
13
+ declare const editableArtifactOutboxIdBrand: unique symbol;
14
+ declare const editableArtifactOperationIdBrand: unique symbol;
15
+ declare const editableArtifactReplicaIdBrand: unique symbol;
16
+ declare const editableArtifactClientTransactionIdBrand: unique symbol;
17
+ declare const editableArtifactRequestHashBrand: unique symbol;
18
+ declare const editableArtifactStateHashBrand: unique symbol;
19
+ declare const editableArtifactContentHashBrand: unique symbol;
20
+ export type EditableArtifactId = string & {
21
+ readonly [editableArtifactIdBrand]: true;
22
+ };
23
+ export type EditableArtifactTransactionId = string & {
24
+ readonly [editableArtifactTransactionIdBrand]: true;
25
+ };
26
+ export type EditableArtifactReceiptId = string & {
27
+ readonly [editableArtifactReceiptIdBrand]: true;
28
+ };
29
+ export type EditableArtifactSnapshotId = string & {
30
+ readonly [editableArtifactSnapshotIdBrand]: true;
31
+ };
32
+ export type EditableArtifactOutboxId = string & {
33
+ readonly [editableArtifactOutboxIdBrand]: true;
34
+ };
35
+ export type EditableArtifactOperationId = string & {
36
+ readonly [editableArtifactOperationIdBrand]: true;
37
+ };
38
+ export type EditableArtifactReplicaId = string & {
39
+ readonly [editableArtifactReplicaIdBrand]: true;
40
+ };
41
+ export type EditableArtifactClientTransactionId = string & {
42
+ readonly [editableArtifactClientTransactionIdBrand]: true;
43
+ };
44
+ export type EditableArtifactRequestHash = string & {
45
+ readonly [editableArtifactRequestHashBrand]: true;
46
+ };
47
+ export type EditableArtifactStateHash = string & {
48
+ readonly [editableArtifactStateHashBrand]: true;
49
+ };
50
+ export type EditableArtifactContentHash = string & {
51
+ readonly [editableArtifactContentHashBrand]: true;
52
+ };
53
+ export type EditableArtifactStableId = EditableArtifactId | EditableArtifactTransactionId | EditableArtifactReceiptId | EditableArtifactSnapshotId | EditableArtifactOutboxId | EditableArtifactOperationId;
54
+ export declare function editableArtifactId(value: string): EditableArtifactId;
55
+ export declare function editableArtifactTransactionId(value: string): EditableArtifactTransactionId;
56
+ export declare function editableArtifactReceiptId(value: string): EditableArtifactReceiptId;
57
+ export declare function editableArtifactSnapshotId(value: string): EditableArtifactSnapshotId;
58
+ export declare function editableArtifactOutboxId(value: string): EditableArtifactOutboxId;
59
+ export declare function editableArtifactOperationId(value: string): EditableArtifactOperationId;
60
+ export declare function editableArtifactReplicaId(value: string): EditableArtifactReplicaId;
61
+ export declare function editableArtifactClientTransactionId(value: string): EditableArtifactClientTransactionId;
62
+ export declare function editableArtifactRequestHash(value: string): EditableArtifactRequestHash;
63
+ export declare function editableArtifactStateHash(value: string): EditableArtifactStateHash;
64
+ export declare function editableArtifactContentHash(value: string): EditableArtifactContentHash;
65
+ export type EditableArtifactScope = Readonly<{
66
+ accountId: string;
67
+ workspaceId: string;
68
+ }>;
69
+ export declare function editableArtifactScope(input: EditableArtifactScope): EditableArtifactScope;
70
+ export type EditableArtifactModality = "spreadsheet" | "presentation" | "document";
71
+ export type EditableArtifactLifecycleState = "active" | "archived";
72
+ export type EditableArtifactPermission = "create" | "read" | "edit" | "import" | "export" | "manage";
73
+ export type EditableArtifactHumanActor = Readonly<{
74
+ kind: "human";
75
+ subjectId: string;
76
+ replicaId: EditableArtifactReplicaId;
77
+ }>;
78
+ export type EditableArtifactAgentActor = Readonly<{
79
+ kind: "agent";
80
+ subjectId: string;
81
+ replicaId: EditableArtifactReplicaId;
82
+ sessionId: string;
83
+ turnId: string;
84
+ attemptId: string;
85
+ generation: number;
86
+ }>;
87
+ export type EditableArtifactServiceActor = Readonly<{
88
+ kind: "service";
89
+ subjectId: string;
90
+ replicaId: EditableArtifactReplicaId;
91
+ service: string;
92
+ }>;
93
+ export type EditableArtifactActor = EditableArtifactHumanActor | EditableArtifactAgentActor | EditableArtifactServiceActor;
94
+ export declare function validateEditableArtifactActor(actor: EditableArtifactActor): void;
95
+ /** Exact authority identity used by idempotency and operation authorship. */
96
+ export declare function editableArtifactActorKey(actor: EditableArtifactActor): string;
97
+ export type EditableArtifactCausalEntry = Readonly<{
98
+ replicaId: EditableArtifactReplicaId;
99
+ counter: number;
100
+ }>;
101
+ /** Sorted, duplicate-free semantic causality. Never substitute headSequence. */
102
+ export type EditableArtifactCausalFrontier = readonly EditableArtifactCausalEntry[];
103
+ export declare function editableArtifactCausalFrontier(entries: Iterable<EditableArtifactCausalEntry>): EditableArtifactCausalFrontier;
104
+ export declare function causalCounter(frontier: EditableArtifactCausalFrontier, replicaId: EditableArtifactReplicaId): number;
105
+ export declare function causalFrontierDominates(candidate: EditableArtifactCausalFrontier, required: EditableArtifactCausalFrontier): boolean;
106
+ export declare function causalFrontiersEqual(left: EditableArtifactCausalFrontier, right: EditableArtifactCausalFrontier): boolean;
107
+ export declare function mergeCausalFrontiers(...frontiers: readonly EditableArtifactCausalFrontier[]): EditableArtifactCausalFrontier;
108
+ export type EditableArtifactCausalDot = EditableArtifactCausalEntry;
109
+ type EditableArtifactCommon = Readonly<{
110
+ scope: EditableArtifactScope;
111
+ id: EditableArtifactId;
112
+ title: string;
113
+ lifecycle: EditableArtifactLifecycleState;
114
+ /** Local policy revision atomically fenced with every durable write. */
115
+ authorizationRevision: number;
116
+ headSequence: number;
117
+ stateHash: EditableArtifactStateHash;
118
+ currentSnapshotId: EditableArtifactSnapshotId | null;
119
+ createdAt: string;
120
+ updatedAt: string;
121
+ }>;
122
+ export type EditableArtifactSpreadsheet = EditableArtifactCommon & Readonly<{
123
+ modality: "spreadsheet";
124
+ causalFrontier: EditableArtifactCausalFrontier;
125
+ }>;
126
+ export type EditableArtifactSerialized = EditableArtifactCommon & Readonly<{
127
+ modality: "document" | "presentation";
128
+ }>;
129
+ export type EditableArtifact = EditableArtifactSpreadsheet | EditableArtifactSerialized;
130
+ export type CreateEditableArtifactRequest = Readonly<{
131
+ idempotencyKey: EditableArtifactClientTransactionId;
132
+ modality: EditableArtifactModality;
133
+ title: string;
134
+ }>;
135
+ export type EditableArtifactOriginOperation = "create" | "import";
136
+ export declare const EDITABLE_ARTIFACT_ORIGINAL_IMPORT_MAX_BYTES: number;
137
+ /**
138
+ * Immutable, already-retained Office source for one imported artifact. The
139
+ * object reference is infrastructure-owned; the remaining facts are bound into
140
+ * the import idempotency hash and independently checked by the snapshot
141
+ * verifier before publication.
142
+ */
143
+ export type EditableArtifactOriginalImport = Readonly<{
144
+ fileId: string;
145
+ blobReference: string;
146
+ byteSize: number;
147
+ contentHash: EditableArtifactContentHash;
148
+ mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | "application/vnd.openxmlformats-officedocument.presentationml.presentation";
149
+ }>;
150
+ type ImportedEditableArtifactSnapshotRequest = PublishEditableArtifactSnapshotRequest extends infer Snapshot ? Snapshot extends PublishEditableArtifactSnapshotRequest ? Omit<Snapshot, "snapshotId" | "verifiedAt"> : never : never;
151
+ export type ImportEditableArtifactRequest = Readonly<{
152
+ idempotencyKey: EditableArtifactClientTransactionId;
153
+ modality: EditableArtifactModality;
154
+ title: string;
155
+ originalImport: EditableArtifactOriginalImport;
156
+ /** Snapshot identity and verification/publication timestamps remain server-owned. */
157
+ snapshot: ImportedEditableArtifactSnapshotRequest;
158
+ }>;
159
+ export type EditableArtifactCreationReceipt = Readonly<{
160
+ receiptId: EditableArtifactReceiptId;
161
+ scope: EditableArtifactScope;
162
+ artifactId: EditableArtifactId;
163
+ operationKind: EditableArtifactOriginOperation;
164
+ authorityKey: string;
165
+ idempotencyKey: EditableArtifactClientTransactionId;
166
+ /** Canonical hash of client semantics only; generated genesis facts are result data. */
167
+ requestHash: EditableArtifactRequestHash;
168
+ genesisSnapshotId: EditableArtifactSnapshotId;
169
+ createdAt: string;
170
+ }>;
171
+ export type CreateEditableArtifactResult = Readonly<{
172
+ artifact: EditableArtifact;
173
+ genesisSnapshot: EditableArtifactSnapshotMetadata;
174
+ creationReceipt: EditableArtifactCreationReceipt;
175
+ replayed: boolean;
176
+ }>;
177
+ /** Exact decoded shared OGATX001 contract; never independently recanonicalized. */
178
+ export type EditableArtifactMutationIntent = ContractEditableArtifactMutationIntent;
179
+ /** Server-validated/branded projection of the exact decoded shared contract. */
180
+ export type ValidatedEditableArtifactMutationIntent = Readonly<{
181
+ envelopeVersion: typeof EDITABLE_ARTIFACT_INTENT_VERSION;
182
+ protocolVersion: number;
183
+ modelSchemaVersion: number;
184
+ commandProtocolVersion: number;
185
+ artifactId: EditableArtifactId;
186
+ clientTransactionId: EditableArtifactClientTransactionId;
187
+ replicaId: EditableArtifactReplicaId;
188
+ /** One persisted counter is reserved per atomic local transaction. */
189
+ replicaCounter: number;
190
+ /** Null only for the first transaction authored by this replica. */
191
+ previousLocalTransactionId: EditableArtifactClientTransactionId | null;
192
+ observedHeadSequence: number;
193
+ causalBase: EditableArtifactCausalFrontier;
194
+ selectiveUndoOperationIds: readonly EditableArtifactOperationId[];
195
+ /** Canonical client commands; only the authoritative kernel may decode them. */
196
+ commandBytes: Uint8Array;
197
+ }>;
198
+ export type ApplyEditableArtifactTransactionRequest = Readonly<{
199
+ /** Exact owned canonical OGATX001 bytes. */
200
+ intentBytes: Uint8Array;
201
+ requestHash: EditableArtifactRequestHash;
202
+ /**
203
+ * Optional exact-head fence for clients that author from a bounded read.
204
+ * Browser replicas deliberately omit it so spreadsheet CRDT operations can
205
+ * merge. Agent edits always provide it and must re-inspect after a conflict.
206
+ */
207
+ expectedHead?: Readonly<{
208
+ sequence: number;
209
+ stateHash: EditableArtifactStateHash;
210
+ }>;
211
+ }>;
212
+ /** Metadata indexed for authorship/selective undo; command data stays in OGACO. */
213
+ export type EditableArtifactKernelOperation = Readonly<{
214
+ operationId: EditableArtifactOperationId;
215
+ dot: EditableArtifactCausalDot;
216
+ }>;
217
+ export type EditableArtifactOperationRecord = EditableArtifactKernelOperation & Readonly<{
218
+ scope: EditableArtifactScope;
219
+ artifactId: EditableArtifactId;
220
+ serverTransactionId: EditableArtifactTransactionId;
221
+ sequence: number;
222
+ actorKey: string;
223
+ createdAt: string;
224
+ }>;
225
+ /**
226
+ * One exact canonical OGACO transaction. The opaque bytes are the sole
227
+ * authoritative operation payload and are replayed atomically by the native
228
+ * or WASM kernel. Core never decodes modality commands from this envelope.
229
+ */
230
+ type EditableArtifactCommittedTransactionCommon = Readonly<{
231
+ scope: EditableArtifactScope;
232
+ artifactId: EditableArtifactId;
233
+ modality: EditableArtifactModality;
234
+ serverTransactionId: EditableArtifactTransactionId;
235
+ requestHash: EditableArtifactRequestHash;
236
+ sequenceStart: number;
237
+ sequenceEnd: number;
238
+ priorStateHash: EditableArtifactStateHash;
239
+ stateHash: EditableArtifactStateHash;
240
+ modelSchemaVersion: number;
241
+ kernelVersion: string;
242
+ committedTransactionBytes: Uint8Array;
243
+ committedAt: string;
244
+ }>;
245
+ export type EditableArtifactSpreadsheetCommittedTransactionRecord = EditableArtifactCommittedTransactionCommon & Readonly<{
246
+ modality: "spreadsheet";
247
+ dot: EditableArtifactCausalDot;
248
+ resolvedCausalBase: EditableArtifactCausalFrontier;
249
+ resultingCausalFrontier: EditableArtifactCausalFrontier;
250
+ operationIds: readonly EditableArtifactOperationId[];
251
+ operationProtocolVersion: number;
252
+ }>;
253
+ export type EditableArtifactSerializedCommittedTransactionRecord = EditableArtifactCommittedTransactionCommon & Readonly<{
254
+ modality: "document" | "presentation";
255
+ commitProtocolVersion: number;
256
+ priorNativeRevision: number;
257
+ nativeRevision: number;
258
+ commandCount: number;
259
+ nativeReceiptBytes: Uint8Array;
260
+ }>;
261
+ export type EditableArtifactCommittedTransactionRecord = EditableArtifactSpreadsheetCommittedTransactionRecord | EditableArtifactSerializedCommittedTransactionRecord;
262
+ type EditableArtifactReceiptCommon = Readonly<{
263
+ receiptId: EditableArtifactReceiptId;
264
+ scope: EditableArtifactScope;
265
+ artifactId: EditableArtifactId;
266
+ modality: EditableArtifactModality;
267
+ serverTransactionId: EditableArtifactTransactionId;
268
+ clientTransactionId: EditableArtifactClientTransactionId;
269
+ replicaId: EditableArtifactReplicaId;
270
+ replicaCounter: number;
271
+ previousLocalTransactionId: EditableArtifactClientTransactionId | null;
272
+ requestHash: EditableArtifactRequestHash;
273
+ /** Exact canonical bytes whose SHA-256 is requestHash. */
274
+ intentBytes: Uint8Array;
275
+ actorKey: string;
276
+ sequenceStart: number;
277
+ sequenceEnd: number;
278
+ priorStateHash: EditableArtifactStateHash;
279
+ stateHash: EditableArtifactStateHash;
280
+ intentEnvelopeVersion: number;
281
+ intentProtocolVersion: number;
282
+ commandProtocolVersion: number;
283
+ kernelVersion: string;
284
+ modelSchemaVersion: number;
285
+ committedAt: string;
286
+ }>;
287
+ export type EditableArtifactSpreadsheetReceipt = EditableArtifactReceiptCommon & Readonly<{
288
+ modality: "spreadsheet";
289
+ causalBase: EditableArtifactCausalFrontier;
290
+ resolvedCausalBase: EditableArtifactCausalFrontier;
291
+ resultingCausalFrontier: EditableArtifactCausalFrontier;
292
+ stateHash: EditableArtifactStateHash;
293
+ operationCount: number;
294
+ selectiveUndoOperationIds: readonly EditableArtifactOperationId[];
295
+ operationProtocolVersion: number;
296
+ }>;
297
+ export type EditableArtifactSerializedReceipt = EditableArtifactReceiptCommon & Readonly<{
298
+ modality: "document" | "presentation";
299
+ commitProtocolVersion: number;
300
+ priorNativeRevision: number;
301
+ nativeRevision: number;
302
+ commandCount: number;
303
+ }>;
304
+ export type EditableArtifactReceipt = EditableArtifactSpreadsheetReceipt | EditableArtifactSerializedReceipt;
305
+ export type ApplyEditableArtifactTransactionResult = Readonly<{
306
+ receipt: EditableArtifactReceipt;
307
+ replayed: boolean;
308
+ }>;
309
+ type EditableArtifactSnapshotMetadataCommon = Readonly<{
310
+ scope: EditableArtifactScope;
311
+ artifactId: EditableArtifactId;
312
+ modality: EditableArtifactModality;
313
+ snapshotId: EditableArtifactSnapshotId;
314
+ blobReference: string;
315
+ byteSize: number;
316
+ contentHash: EditableArtifactContentHash;
317
+ mimeType: "application/vnd.opengeni.editable-artifact-snapshot";
318
+ coveredHeadSequence: number;
319
+ stateHash: EditableArtifactStateHash;
320
+ modelSchemaVersion: number;
321
+ kernelVersion: string;
322
+ verifiedAt: string;
323
+ publishedAt: string;
324
+ }>;
325
+ export type EditableArtifactSpreadsheetSnapshotMetadata = EditableArtifactSnapshotMetadataCommon & Readonly<{
326
+ modality: "spreadsheet";
327
+ coveredCausalFrontier: EditableArtifactCausalFrontier;
328
+ operationProtocolVersion: number;
329
+ crdtStateVersion: number;
330
+ }>;
331
+ export type EditableArtifactSerializedSnapshotMetadata = EditableArtifactSnapshotMetadataCommon & Readonly<{
332
+ modality: "document" | "presentation";
333
+ nativeRevision: number;
334
+ }>;
335
+ export type EditableArtifactSnapshotMetadata = EditableArtifactSpreadsheetSnapshotMetadata | EditableArtifactSerializedSnapshotMetadata;
336
+ export type PublishEditableArtifactSnapshotRequest = EditableArtifactSnapshotMetadata extends infer Snapshot ? Snapshot extends EditableArtifactSnapshotMetadata ? Omit<Snapshot, "scope" | "artifactId" | "publishedAt"> : never : never;
337
+ type EditableArtifactTransactionCommittedEventCommon = Readonly<{
338
+ kind: "transaction_committed";
339
+ schemaVersion: 1;
340
+ scope: EditableArtifactScope;
341
+ artifactId: EditableArtifactId;
342
+ modality: EditableArtifactModality;
343
+ serverTransactionId: EditableArtifactTransactionId;
344
+ sequenceStart: number;
345
+ sequenceEnd: number;
346
+ stateHash: EditableArtifactStateHash;
347
+ committedAt: string;
348
+ }>;
349
+ export type EditableArtifactTransactionCommittedEvent = (EditableArtifactTransactionCommittedEventCommon & Readonly<{
350
+ modality: "spreadsheet";
351
+ operationProtocolVersion: number;
352
+ }>) | (EditableArtifactTransactionCommittedEventCommon & Readonly<{
353
+ modality: "document" | "presentation";
354
+ commitProtocolVersion: number;
355
+ }>);
356
+ type EditableArtifactSnapshotPublishedEventCommon = Readonly<{
357
+ kind: "snapshot_published";
358
+ schemaVersion: 1;
359
+ scope: EditableArtifactScope;
360
+ artifactId: EditableArtifactId;
361
+ modality: EditableArtifactModality;
362
+ snapshotId: EditableArtifactSnapshotId;
363
+ coveredHeadSequence: number;
364
+ stateHash: EditableArtifactStateHash;
365
+ publishedAt: string;
366
+ }>;
367
+ export type EditableArtifactSnapshotPublishedEvent = (EditableArtifactSnapshotPublishedEventCommon & Readonly<{
368
+ modality: "spreadsheet";
369
+ operationProtocolVersion: number;
370
+ }>) | (EditableArtifactSnapshotPublishedEventCommon & Readonly<{
371
+ modality: "document" | "presentation";
372
+ }>);
373
+ /** Durable live fanout hint. Consumers gap-fill canonical transactions. */
374
+ export type EditableArtifactLiveEvent = EditableArtifactTransactionCommittedEvent | EditableArtifactSnapshotPublishedEvent;
375
+ export type EditableArtifactOutboxRetryFailureCode = "broker_unavailable" | "broker_backpressure" | "publish_timeout";
376
+ export type EditableArtifactOutboxDeadLetterFailureCode = "invalid_hint" | "oversized_hint";
377
+ export type EditableArtifactOutboxErrorCode = EditableArtifactOutboxRetryFailureCode | EditableArtifactOutboxDeadLetterFailureCode;
378
+ export type EditableArtifactLiveOutboxRecord = Readonly<{
379
+ outboxId: EditableArtifactOutboxId;
380
+ event: EditableArtifactLiveEvent;
381
+ state: "pending" | "publishing" | "published" | "dead_lettered";
382
+ attemptCount: number;
383
+ leaseOwner: string | null;
384
+ leaseExpiresAt: string | null;
385
+ nextAttemptAt: string;
386
+ lastErrorCode: EditableArtifactOutboxErrorCode | null;
387
+ publishedAt: string | null;
388
+ deadLetteredAt: string | null;
389
+ createdAt: string;
390
+ }>;
391
+ export type EditableArtifactSequenceCheckpoint = Readonly<{
392
+ modality: "spreadsheet";
393
+ headSequence: number;
394
+ causalFrontier: EditableArtifactCausalFrontier;
395
+ stateHash: EditableArtifactStateHash;
396
+ }> | Readonly<{
397
+ modality: "document" | "presentation";
398
+ headSequence: number;
399
+ nativeRevision: number;
400
+ stateHash: EditableArtifactStateHash;
401
+ }>;
402
+ export declare function assertNonnegativeSafeInteger(value: number, label: string): void;
403
+ export declare function assertPositiveSafeInteger(value: number, label: string): void;
404
+ export declare function assertIsoTimestamp(value: string, label: string): void;
405
+ export declare function assertBoundedArtifactTitle(value: string): void;
406
+ export declare function assertBoundedOpaqueReference(value: string, label: string): void;
407
+ export declare function assertBoundedKernelVersion(value: unknown): asserts value is string;
408
+ /** Locale-independent ordering used by every canonical wire/hash projection. */
409
+ export declare function compareCodeUnits(left: string, right: string): number;
410
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { MemorySlackPublicationDistribution } from "@opengeni/contracts";
2
+ import { type CorrectWorkspaceMemoryInput, type CorrectWorkspaceMemoryResult, type Database, type EnqueueMemorySlackPublicationResult, type MemoryEmbedder, type MemorySlackPublicationActor, type SaveWorkspaceMemoryInput, type SaveWorkspaceMemoryResult } from "@opengeni/db";
3
+ import { type MemorySlackOrigin, type MemorySlackPublicationDecision } from "./memory-slack-publication.js";
4
+ export type MemorySlackPublicationCommitRequest = {
5
+ distribution: MemorySlackPublicationDistribution;
6
+ actor: MemorySlackPublicationActor;
7
+ ownerLabel?: string | null;
8
+ origin?: MemorySlackOrigin;
9
+ };
10
+ export type MemorySlackPublicationCommitResult = {
11
+ decision: MemorySlackPublicationDecision | null;
12
+ enqueue: EnqueueMemorySlackPublicationResult | null;
13
+ };
14
+ export declare function saveWorkspaceMemoryWithSlackPublication(db: Database, input: SaveWorkspaceMemoryInput, publication: MemorySlackPublicationCommitRequest | null, embedder?: MemoryEmbedder): Promise<SaveWorkspaceMemoryResult & {
15
+ slackPublication: MemorySlackPublicationCommitResult;
16
+ }>;
17
+ export declare function correctWorkspaceMemoryWithSlackPublication(db: Database, input: CorrectWorkspaceMemoryInput, publication: MemorySlackPublicationCommitRequest | null, embedder?: MemoryEmbedder): Promise<CorrectWorkspaceMemoryResult & {
18
+ slackPublication: MemorySlackPublicationCommitResult;
19
+ }>;
@@ -1,4 +1,4 @@
1
- import { CapabilityPack, type ScheduledTaskAgentConfig, type SocialConnection } from "@opengeni/contracts";
1
+ import { CapabilityPack, type CapabilityPackSkill, type PackInstallationPreview, type ScheduledTaskAgentConfig, type SocialConnection } from "@opengeni/contracts";
2
2
  import { type Database } from "@opengeni/db";
3
3
  export declare const MARKETING_SOCIAL_PACK_ID = "marketing-social-daily-analysis";
4
4
  export declare function listCapabilityPacks(): CapabilityPack[];
@@ -12,6 +12,34 @@ export declare function isBuiltInCapabilityPack(packId: string): boolean;
12
12
  */
13
13
  export declare function listWorkspaceCapabilityPacks(db: Database, workspaceId: string): Promise<CapabilityPack[]>;
14
14
  export declare function resolveCapabilityPack(db: Database, workspaceId: string, packId: string): Promise<CapabilityPack | null>;
15
+ export declare function capabilityPackManifestDigest(pack: CapabilityPack): string;
16
+ /** True when the Pack must use the owner-aware V2 preview/install lifecycle. */
17
+ export declare function capabilityPackRequiresInstallationPlan(pack: CapabilityPack): boolean;
18
+ export type InlinePackSkillInstall = {
19
+ componentKey: string;
20
+ capabilityId: string;
21
+ pluginKey: string;
22
+ sourceUrl: string;
23
+ repositoryUrl: string;
24
+ sourceCommit: string;
25
+ sourcePath: string;
26
+ name: string;
27
+ description: string;
28
+ contentSha256: string;
29
+ totalBytes: number;
30
+ files: Array<{
31
+ path: string;
32
+ content: string;
33
+ byteSize: number;
34
+ contentSha256: string;
35
+ }>;
36
+ };
37
+ /** Convert a legacy inline Pack Skill into the ordinary immutable Skill model. */
38
+ export declare function inlinePackSkillInstall(pack: CapabilityPack, skill: CapabilityPackSkill): InlinePackSkillInstall;
39
+ export declare function previewCapabilityPackInstallation(db: Database, workspaceId: string, pack: CapabilityPack, options?: {
40
+ rigId?: string;
41
+ variableSetId?: string;
42
+ }): Promise<PackInstallationPreview>;
15
43
  /**
16
44
  * v1 pack-scoped runtime rule: at most one enabled pack per workspace may
17
45
  * declare a `sandboxImage` — there is deliberately no image composition or
@@ -15,6 +15,10 @@ export type AuthorizedSocialConnection = {
15
15
  connection: SocialConnection;
16
16
  subjectId: string | null;
17
17
  };
18
+ export type AuthorizedAtlassianConnection = {
19
+ connection: ConnectionMetadata;
20
+ subjectId: string | null;
21
+ };
18
22
  export declare function directPersonalConnectionSubjectId(turn: Pick<SessionTurn, "source" | "initiator" | "initiatorContext">): string | undefined;
19
23
  export declare function personalConnectionDelegationSourceForGrant(grant: AccessGrant): PersonalConnectionDelegationSource;
20
24
  export declare function authorizedSocialConnectionsForGrant(input: {
@@ -22,6 +26,10 @@ export declare function authorizedSocialConnectionsForGrant(input: {
22
26
  grant: AccessGrant;
23
27
  limit?: number;
24
28
  }): Promise<AuthorizedSocialConnection[]>;
29
+ export declare function authorizedAtlassianConnectionsForGrant(input: {
30
+ db: Database;
31
+ grant: AccessGrant;
32
+ }): Promise<AuthorizedAtlassianConnection[]>;
25
33
  export declare function selectedPersonalConnectionServers(settings: Pick<Settings, "mcpServers">, tools: ToolRef[]): McpServerConfig[];
26
34
  export declare function personalConnectionDelegationsFromVisibleConnections(input: {
27
35
  servers: McpServerConfig[];
@@ -37,7 +45,7 @@ export declare function personalConnectionDelegationForServer(delegations: McpPe
37
45
  type ConnectionCredentialResolver = (request: ResolveConnectionCredentialInput) => Promise<ResolveConnectionCredentialResult>;
38
46
  /**
39
47
  * Resolves subject-owned MCP credentials only through the exact authority
40
- * frozen on the causal turn. A direct human subject, worker Toolspace caller,
48
+ * frozen on the causal turn. A direct human subject, worker Codemode caller,
41
49
  * retry, or recovery can identify the caller, but none may widen or replace
42
50
  * the persisted connection UUID.
43
51
  */
@@ -1,8 +1,8 @@
1
1
  import type { Settings } from "@opengeni/config";
2
2
  import type { AccessGrant, McpPersonalConnectionDelegation, ScheduledTask, ScheduledTaskAgentConfig, Session, SessionAuthorizationPort, SessionAuthorizationSurface, CreateScheduledTaskRequest as CreateScheduledTaskPayload, UpdateScheduledTaskRequest as UpdateScheduledTaskPayload } from "@opengeni/contracts";
3
3
  import { type Database, type UpdateScheduledTaskInput } from "@opengeni/db";
4
- import type { SessionWorkflowClient } from "../dependencies";
5
- import type { ObjectStorageDependency } from "../dependencies";
4
+ import type { SessionWorkflowClient } from "../dependencies.js";
5
+ import type { ObjectStorageDependency } from "../dependencies.js";
6
6
  /**
7
7
  * Whether a raw scheduled-task payload explicitly set agentConfig.tools.
8
8
  * Zod's `.default([])` erases the distinction between "absent" and
@@ -24,8 +24,8 @@ export declare function defaultSessionMcpServerIds(servers: Iterable<{
24
24
  */
25
25
  export declare function resolveSessionToolPolicy(input: SessionToolPolicyInput): ResolvedSessionToolPolicy;
26
26
  /** Current full runtime registry IDs, including configured static servers. */
27
- export declare function workspaceSessionToolPolicyServerIds(db: Database, workspaceId: string, settings: Settings): Promise<string[]>;
27
+ export declare function workspaceSessionToolPolicyServerIds(db: Database, workspaceId: string, settings: Settings, subjectId?: string): Promise<string[]>;
28
28
  /** Current omitted-tools defaults: every configured runtime MCP is on. */
29
- export declare function workspaceSessionToolPolicyDefaultServerIds(db: Database, workspaceId: string, settings: Settings): Promise<string[]>;
29
+ export declare function workspaceSessionToolPolicyDefaultServerIds(db: Database, workspaceId: string, settings: Settings, subjectId?: string): Promise<string[]>;
30
30
  /** Add a bounded, secret-safe effective projection to a session response. */
31
31
  export declare function sessionWithEffectiveToolPolicy(session: Session, workspaceServerIds: Iterable<string>, workspaceDefaultServerIds?: Iterable<string>): Session;