@opengeni/sdk 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/README.md +117 -2
- package/dist/artifacts.js +5 -5
- package/dist/automations-client.d.ts +17 -0
- package/dist/automations.d.ts +3 -0
- package/dist/automations.js +78 -0
- package/dist/automations.js.map +1 -0
- package/dist/{chunk-YGH5P47G.js → chunk-6IPZY27S.js} +744 -57
- package/dist/chunk-6IPZY27S.js.map +1 -0
- package/dist/{chunk-TYZ4JL4J.js → chunk-AGUKZAXR.js} +2 -2
- package/dist/{chunk-A5DC5WEM.js → chunk-C2H7HBNP.js} +22 -2
- package/dist/chunk-C2H7HBNP.js.map +1 -0
- package/dist/{chunk-GU6JF75T.js → chunk-C4DJPZRU.js} +1 -1
- package/dist/{chunk-GU6JF75T.js.map → chunk-C4DJPZRU.js.map} +1 -1
- package/dist/{chunk-ST5DDKJP.js → chunk-GW3EJ2GP.js} +52 -1
- package/dist/chunk-GW3EJ2GP.js.map +1 -0
- package/dist/{chunk-4DV37UUA.js → chunk-TW5MNHUX.js} +16 -2
- package/dist/chunk-TW5MNHUX.js.map +1 -0
- package/dist/{chunk-VWE2QIVO.js → chunk-XNG7YGR3.js} +23 -6
- package/dist/chunk-XNG7YGR3.js.map +1 -0
- package/dist/client.d.ts +159 -26
- package/dist/codex-realtime-controller.d.ts +1 -0
- package/dist/codex-realtime-controller.js +2 -2
- package/dist/company-brain.d.ts +32 -0
- package/dist/company-profile.d.ts +1 -1
- package/dist/core.js +4 -4
- package/dist/editable-artifacts/browser-session.d.ts +7 -3
- package/dist/editable-artifacts/controller.d.ts +4 -1
- package/dist/editable-artifacts/errors.d.ts +1 -1
- package/dist/editable-artifacts/http-live-transport.d.ts +6 -2
- package/dist/editable-artifacts/index.d.ts +2 -0
- package/dist/editable-artifacts/open-failure.d.ts +9 -0
- package/dist/editable-artifacts/types.d.ts +4 -3
- package/dist/editable-artifacts/worker/kernel-adapter.d.ts +1 -1
- package/dist/editable-artifacts-worker.js +44 -17
- package/dist/editable-artifacts-worker.js.map +1 -1
- package/dist/editable-artifacts.js +222 -119
- package/dist/editable-artifacts.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.js +61 -12
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +23 -0
- package/dist/interaction.js +4 -1
- package/dist/organization-private-session-settings.d.ts +6 -0
- package/dist/organization-private-session-settings.js +22 -0
- package/dist/organization-private-session-settings.js.map +1 -0
- package/dist/pr-review-client.d.ts +15 -0
- package/dist/pr-review.d.ts +4 -0
- package/dist/pr-review.js +56 -0
- package/dist/pr-review.js.map +1 -0
- package/dist/preference-registry.d.ts +8 -0
- package/dist/realtime.js +2 -2
- package/dist/retained-artifacts.d.ts +5 -1
- package/dist/types.d.ts +1023 -13
- package/dist/workspace-instruction-policies.d.ts +22 -0
- package/dist/workspace-learning.d.ts +124 -0
- package/package.json +14 -2
- package/src/automations-client.ts +118 -0
- package/src/automations.ts +15 -0
- package/src/client.ts +1049 -71
- package/src/codex-realtime-controller.ts +21 -0
- package/src/company-brain.ts +99 -0
- package/src/company-profile.ts +4 -1
- package/src/editable-artifacts/browser-session.ts +36 -22
- package/src/editable-artifacts/controller.ts +66 -45
- package/src/editable-artifacts/errors.ts +2 -0
- package/src/editable-artifacts/http-live-transport.ts +62 -37
- package/src/editable-artifacts/index.ts +6 -0
- package/src/editable-artifacts/open-failure.ts +79 -0
- package/src/editable-artifacts/storage.ts +31 -40
- package/src/editable-artifacts/types.ts +4 -3
- package/src/editable-artifacts/worker/kernel-adapter.ts +23 -7
- package/src/editable-artifacts/worker/runtime.ts +26 -13
- package/src/editable-artifacts/worker/wire-codec.ts +23 -5
- package/src/errors.ts +1 -1
- package/src/index.ts +134 -0
- package/src/interaction.ts +95 -0
- package/src/organization-private-session-settings.ts +33 -0
- package/src/pr-review-client.ts +84 -0
- package/src/pr-review.ts +15 -0
- package/src/preference-registry.ts +9 -0
- package/src/retained-artifacts.ts +101 -0
- package/src/stream.ts +13 -2
- package/src/types.ts +1174 -12
- package/src/workspace-instruction-policies.ts +24 -0
- package/src/workspace-learning.ts +138 -0
- package/dist/chunk-4DV37UUA.js.map +0 -1
- package/dist/chunk-A5DC5WEM.js.map +0 -1
- package/dist/chunk-ST5DDKJP.js.map +0 -1
- package/dist/chunk-VWE2QIVO.js.map +0 -1
- package/dist/chunk-YGH5P47G.js.map +0 -1
- /package/dist/{chunk-TYZ4JL4J.js.map → chunk-AGUKZAXR.js.map} +0 -0
|
@@ -5,9 +5,13 @@ import {
|
|
|
5
5
|
decodeEditableArtifactMutationIntent,
|
|
6
6
|
hashEditableArtifactMutationIntent,
|
|
7
7
|
} from "@opengeni/contracts/editable-artifacts";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
COMMITTED_TRANSACTION_PROTOCOL_VERSION,
|
|
10
|
+
decodeCommittedTransactionSummary,
|
|
11
|
+
} from "@opengeni/contracts/editable-artifact-committed-transaction";
|
|
9
12
|
import { editableArtifactCodecFor } from "@opengeni/contracts/editable-artifact-codec-registry";
|
|
10
13
|
import { decodeEditableArtifactSerializedCommit } from "@opengeni/contracts/editable-artifact-serialized-commit";
|
|
14
|
+
import { SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION } from "@opengeni/contracts/editable-artifact-versions";
|
|
11
15
|
import type {
|
|
12
16
|
EditableArtifactBlockedPending,
|
|
13
17
|
EditableArtifactCausalFrontier,
|
|
@@ -269,18 +273,20 @@ export class ArtifactWorkerRuntime {
|
|
|
269
273
|
snapshot.modality !== initialization.modality ||
|
|
270
274
|
snapshot.modality !== adapter.modality ||
|
|
271
275
|
(snapshot.modality === "spreadsheet" &&
|
|
272
|
-
snapshot.
|
|
273
|
-
|
|
276
|
+
(snapshot.operationProtocolVersion !== COMMITTED_TRANSACTION_PROTOCOL_VERSION ||
|
|
277
|
+
snapshot.snapshotVersion !== SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION)) ||
|
|
274
278
|
snapshot.modelSchemaVersion !== adapter.modelSchemaVersion
|
|
275
279
|
) {
|
|
276
280
|
throw runtimeError(
|
|
277
281
|
"unsupported_protocol",
|
|
278
|
-
"snapshot protocol/
|
|
282
|
+
"snapshot protocol/schema is incompatible with the loaded collaboration kernel",
|
|
279
283
|
);
|
|
280
284
|
}
|
|
281
285
|
const digest = await sha256Hex(ownedBytes);
|
|
282
286
|
this.throwIfCancelled(frame.requestId);
|
|
283
|
-
|
|
287
|
+
if (digest !== snapshot.digest) {
|
|
288
|
+
throw runtimeError("byte_corruption", "snapshot digest does not match its bytes");
|
|
289
|
+
}
|
|
284
290
|
const canonical = requireBytesWithin(
|
|
285
291
|
adapter.canonicalizeSnapshot(ownedBytes),
|
|
286
292
|
initialization.maximumSnapshotBytes,
|
|
@@ -298,7 +304,12 @@ export class ArtifactWorkerRuntime {
|
|
|
298
304
|
try {
|
|
299
305
|
stateHash = await nextConfirmed.stateHash();
|
|
300
306
|
this.throwIfCancelled(frame.requestId);
|
|
301
|
-
|
|
307
|
+
if (stateHash !== snapshot.stateHash) {
|
|
308
|
+
throw runtimeError(
|
|
309
|
+
"authored_causal_mismatch",
|
|
310
|
+
"snapshot authored state does not match its state hash",
|
|
311
|
+
);
|
|
312
|
+
}
|
|
302
313
|
if (
|
|
303
314
|
snapshot.modality !== "spreadsheet" &&
|
|
304
315
|
nextConfirmed.nativeRevision() !== snapshot.nativeRevision
|
|
@@ -324,7 +335,7 @@ export class ArtifactWorkerRuntime {
|
|
|
324
335
|
artifactId: snapshot.artifactId,
|
|
325
336
|
modality: "spreadsheet",
|
|
326
337
|
sequence: snapshot.sequence,
|
|
327
|
-
protocolVersion:
|
|
338
|
+
protocolVersion: adapter.protocolVersion,
|
|
328
339
|
kernelVersion: snapshot.kernelVersion,
|
|
329
340
|
modelSchemaVersion: snapshot.modelSchemaVersion,
|
|
330
341
|
stateHash,
|
|
@@ -566,7 +577,7 @@ export class ArtifactWorkerRuntime {
|
|
|
566
577
|
}
|
|
567
578
|
if (
|
|
568
579
|
transaction.modality === "spreadsheet" &&
|
|
569
|
-
transaction.
|
|
580
|
+
transaction.operationProtocolVersion !== COMMITTED_TRANSACTION_PROTOCOL_VERSION
|
|
570
581
|
)
|
|
571
582
|
throw runtimeError("unsupported_protocol", "committed transaction protocol is incompatible");
|
|
572
583
|
if (transaction.startSequence !== installed.sequence + 1) {
|
|
@@ -1046,12 +1057,12 @@ function assertCommittedEnvelopeMatchesOuter(
|
|
|
1046
1057
|
} catch (error) {
|
|
1047
1058
|
throw new ArtifactWorkerProtocolError(
|
|
1048
1059
|
"invalid_committed_transaction",
|
|
1049
|
-
"committed transaction is not canonical
|
|
1060
|
+
"committed transaction is not canonical OGACO002",
|
|
1050
1061
|
{ cause: error },
|
|
1051
1062
|
);
|
|
1052
1063
|
}
|
|
1053
1064
|
if (
|
|
1054
|
-
summary.operationProtocolVersion !== transaction.
|
|
1065
|
+
summary.operationProtocolVersion !== transaction.operationProtocolVersion ||
|
|
1055
1066
|
summary.transactionId !== transaction.transactionId ||
|
|
1056
1067
|
summary.priorStateHash !== transaction.priorStateHash ||
|
|
1057
1068
|
summary.stateHash !== transaction.stateHash ||
|
|
@@ -1059,7 +1070,7 @@ function assertCommittedEnvelopeMatchesOuter(
|
|
|
1059
1070
|
) {
|
|
1060
1071
|
throw runtimeError(
|
|
1061
1072
|
"committed_metadata_mismatch",
|
|
1062
|
-
"outer committed metadata disagrees with its exact
|
|
1073
|
+
"outer committed metadata disagrees with its exact OGACO002 envelope",
|
|
1063
1074
|
);
|
|
1064
1075
|
}
|
|
1065
1076
|
}
|
|
@@ -1156,8 +1167,9 @@ function asWorkerFailure(error: unknown): WorkerFailure {
|
|
|
1156
1167
|
};
|
|
1157
1168
|
}
|
|
1158
1169
|
if (error instanceof Error) {
|
|
1170
|
+
const rawCode = (error as Error & { code?: unknown }).code;
|
|
1159
1171
|
return {
|
|
1160
|
-
code: "kernel_failed",
|
|
1172
|
+
code: typeof rawCode === "string" ? normalizeErrorCode(rawCode) : "kernel_failed",
|
|
1161
1173
|
message: sanitizeErrorMessage(error.message || "artifact kernel failed"),
|
|
1162
1174
|
retryable: false,
|
|
1163
1175
|
};
|
|
@@ -1175,7 +1187,8 @@ function asProtocolError(error: unknown): ArtifactWorkerProtocolError {
|
|
|
1175
1187
|
}
|
|
1176
1188
|
|
|
1177
1189
|
function normalizeErrorCode(value: string): string {
|
|
1178
|
-
|
|
1190
|
+
const normalized = value.toLowerCase();
|
|
1191
|
+
return /^[a-z][a-z0-9_]{0,127}$/.test(normalized) ? normalized : "kernel_failed";
|
|
1179
1192
|
}
|
|
1180
1193
|
|
|
1181
1194
|
function sanitizeErrorMessage(value: string): string {
|
|
@@ -126,7 +126,10 @@ export function encodeSnapshotMetadata(snapshot: EditableArtifactSnapshot): Uint
|
|
|
126
126
|
if (snapshot.modality === "spreadsheet") {
|
|
127
127
|
writer
|
|
128
128
|
.frontier(snapshot.causalFrontier)
|
|
129
|
-
.u32(
|
|
129
|
+
.u32(
|
|
130
|
+
positiveSafeInteger(snapshot.operationProtocolVersion, "snapshot.operationProtocolVersion"),
|
|
131
|
+
)
|
|
132
|
+
.u32(positiveSafeInteger(snapshot.snapshotVersion, "snapshot.snapshotVersion"));
|
|
130
133
|
} else {
|
|
131
134
|
writer.safeUint(nonNegativeSafeInteger(snapshot.nativeRevision, "snapshot.nativeRevision"));
|
|
132
135
|
}
|
|
@@ -154,7 +157,11 @@ export function decodeSnapshotMetadata(
|
|
|
154
157
|
...common,
|
|
155
158
|
modality,
|
|
156
159
|
causalFrontier: reader.frontier(),
|
|
157
|
-
|
|
160
|
+
operationProtocolVersion: positiveSafeInteger(
|
|
161
|
+
reader.u32(),
|
|
162
|
+
"snapshot.operationProtocolVersion",
|
|
163
|
+
),
|
|
164
|
+
snapshotVersion: positiveSafeInteger(reader.u32(), "snapshot.snapshotVersion"),
|
|
158
165
|
}
|
|
159
166
|
: {
|
|
160
167
|
...common,
|
|
@@ -195,7 +202,10 @@ export function decodeCommittedMetadata(
|
|
|
195
202
|
...common,
|
|
196
203
|
modality,
|
|
197
204
|
causalFrontier: reader.frontier(),
|
|
198
|
-
|
|
205
|
+
operationProtocolVersion: positiveSafeInteger(
|
|
206
|
+
reader.u32(),
|
|
207
|
+
"transaction.operationProtocolVersion",
|
|
208
|
+
),
|
|
199
209
|
}
|
|
200
210
|
: {
|
|
201
211
|
...common,
|
|
@@ -427,7 +437,12 @@ function encodeCommittedFields(
|
|
|
427
437
|
if (transaction.modality === "spreadsheet") {
|
|
428
438
|
writer
|
|
429
439
|
.frontier(transaction.causalFrontier)
|
|
430
|
-
.u32(
|
|
440
|
+
.u32(
|
|
441
|
+
positiveSafeInteger(
|
|
442
|
+
transaction.operationProtocolVersion,
|
|
443
|
+
"transaction.operationProtocolVersion",
|
|
444
|
+
),
|
|
445
|
+
);
|
|
431
446
|
} else {
|
|
432
447
|
writer
|
|
433
448
|
.safeUint(
|
|
@@ -461,7 +476,10 @@ function decodeCommittedFields(
|
|
|
461
476
|
...common,
|
|
462
477
|
modality,
|
|
463
478
|
causalFrontier: reader.frontier(),
|
|
464
|
-
|
|
479
|
+
operationProtocolVersion: positiveSafeInteger(
|
|
480
|
+
reader.u32(),
|
|
481
|
+
"transaction.operationProtocolVersion",
|
|
482
|
+
),
|
|
465
483
|
}
|
|
466
484
|
: {
|
|
467
485
|
...common,
|
package/src/errors.ts
CHANGED
|
@@ -128,7 +128,7 @@ function boundedCorrelationId(value: unknown): string | undefined {
|
|
|
128
128
|
return value;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
/** A short-lived session-list snapshot cursor can no longer be continued. */
|
|
131
|
+
/** A legacy short-lived session-list snapshot cursor can no longer be continued. */
|
|
132
132
|
export class OpenGeniSessionListCursorError extends OpenGeniApiError {}
|
|
133
133
|
|
|
134
134
|
/** The browser bundle and API disagree about their state-changing wire contract. */
|
package/src/index.ts
CHANGED
|
@@ -48,6 +48,8 @@ export {
|
|
|
48
48
|
parseMediaGenerationResult,
|
|
49
49
|
parseRetainedGeneratedImageReference,
|
|
50
50
|
parseRetainedGeneratedVideoReference,
|
|
51
|
+
parseRetainedWorkspaceFileReference,
|
|
52
|
+
parseSandboxFileArtifactReceipt,
|
|
51
53
|
} from "./retained-artifacts";
|
|
52
54
|
export {
|
|
53
55
|
CodexRealtimeMicrophoneError,
|
|
@@ -158,6 +160,25 @@ export {
|
|
|
158
160
|
normalizeWorkspaceInstructionPolicyRoleKey,
|
|
159
161
|
WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS,
|
|
160
162
|
} from "./workspace-instruction-policies";
|
|
163
|
+
export type {
|
|
164
|
+
ActivateWorkspaceLearningPolicyRevisionRequest,
|
|
165
|
+
CreateWorkspaceLearningPolicyRevisionRequest,
|
|
166
|
+
GovernedLearningActivationReceipt,
|
|
167
|
+
GovernedLearningActivationUndoReceipt,
|
|
168
|
+
GovernedLearningDecisionReceipt,
|
|
169
|
+
RollbackWorkspaceLearningPolicyRevisionRequest,
|
|
170
|
+
WorkspaceLearningHistoryOptions,
|
|
171
|
+
WorkspaceLearningHistoryResponse,
|
|
172
|
+
WorkspaceLearningMode,
|
|
173
|
+
WorkspaceLearningOverrideMode,
|
|
174
|
+
WorkspaceLearningPolicyEvent,
|
|
175
|
+
WorkspaceLearningPolicyHead,
|
|
176
|
+
WorkspaceLearningPolicyMutationResponse,
|
|
177
|
+
WorkspaceLearningPolicyRevision,
|
|
178
|
+
WorkspaceLearningPolicyRevisionIdentity,
|
|
179
|
+
WorkspaceLearningSourceOverride,
|
|
180
|
+
WorkspaceLearningSourceOverrideInput,
|
|
181
|
+
} from "./workspace-learning";
|
|
161
182
|
export {
|
|
162
183
|
COMPANY_PROFILE_ENTRY_MAX_CHARS,
|
|
163
184
|
COMPANY_PROFILE_ENTRY_MAX_COUNT,
|
|
@@ -225,6 +246,28 @@ export type {
|
|
|
225
246
|
WorkspaceStateResponse,
|
|
226
247
|
WorkspaceStateSourceKindCounts,
|
|
227
248
|
} from "./workspace-state";
|
|
249
|
+
export type {
|
|
250
|
+
CompanyBrainContextReceiptListOptions,
|
|
251
|
+
CompanyBrainContextReceiptPage,
|
|
252
|
+
CompanyBrainInspectorTransport,
|
|
253
|
+
CompanyBrainKnowledgeBrowseRequest,
|
|
254
|
+
CompanyBrainKnowledgeBrowseResponse,
|
|
255
|
+
CompanyBrainKnowledgeGetResponse,
|
|
256
|
+
CompanyBrainKnowledgeRecord,
|
|
257
|
+
CompanyBrainKnowledgeProposalListOptions,
|
|
258
|
+
CompanyBrainKnowledgeProposalPage,
|
|
259
|
+
CompanyBrainKnowledgeSearchRequest,
|
|
260
|
+
CompanyBrainKnowledgeSearchResponse,
|
|
261
|
+
CompanyBrainOkfDownload,
|
|
262
|
+
CompanyBrainOkfPackage,
|
|
263
|
+
} from "./company-brain";
|
|
264
|
+
export {
|
|
265
|
+
browseCompanyBrainKnowledge,
|
|
266
|
+
getCompanyBrainKnowledge,
|
|
267
|
+
listCompanyBrainContextReceipts,
|
|
268
|
+
listCompanyBrainKnowledgeProposals,
|
|
269
|
+
searchCompanyBrainKnowledge,
|
|
270
|
+
} from "./company-brain";
|
|
228
271
|
export type {
|
|
229
272
|
MemorySlackImportance,
|
|
230
273
|
MemorySlackPublication,
|
|
@@ -250,6 +293,7 @@ export type {
|
|
|
250
293
|
DeactivatePreferenceRegistryRequest,
|
|
251
294
|
PreferenceRegistryConflictStrategy,
|
|
252
295
|
PreferenceRegistryDescriptor,
|
|
296
|
+
PreferenceRegistryActivationAuthority,
|
|
253
297
|
PreferenceRegistryDescriptorProvenance,
|
|
254
298
|
PreferenceRegistryDetailResponse,
|
|
255
299
|
PreferenceRegistryEvent,
|
|
@@ -305,9 +349,12 @@ export {
|
|
|
305
349
|
OPENGENI_API_CONTRACT_HEADER,
|
|
306
350
|
OPENGENI_API_CONTRACT_REVISION,
|
|
307
351
|
OPENGENI_CORRELATION_HEADER,
|
|
352
|
+
PERSONAL_RESOURCE_SHARED_OUTPUT_WARNING,
|
|
353
|
+
PERSONAL_RESOURCE_SHARED_OUTPUT_WARNING_VERSION,
|
|
308
354
|
GENERATED_VIDEO_MAX_BYTES,
|
|
309
355
|
RETAINED_OUTPUT_DEFAULT_PAGE_BYTES,
|
|
310
356
|
RETAINED_OUTPUT_MAX_PAGE_BYTES,
|
|
357
|
+
SANDBOX_FILE_ARTIFACT_MAX_BYTES,
|
|
311
358
|
SESSION_EVENT_TYPES,
|
|
312
359
|
} from "./types";
|
|
313
360
|
export type {
|
|
@@ -330,10 +377,21 @@ export type {
|
|
|
330
377
|
BillingSummary,
|
|
331
378
|
ListManagedOrganizationMembershipsResponse,
|
|
332
379
|
ManagedOrganizationMembership,
|
|
380
|
+
OrganizationAdministrationOverview,
|
|
381
|
+
OrganizationPrivateSessionSettings,
|
|
382
|
+
OrganizationSummary,
|
|
383
|
+
OrganizationWorkspaceAccess,
|
|
384
|
+
OrganizationWorkspaceAccessMember,
|
|
385
|
+
CreateOrganizationWorkspaceRequest,
|
|
386
|
+
UpdateOrganizationNameRequest,
|
|
387
|
+
UpdateOrganizationPrivateSessionSettingsRequest,
|
|
333
388
|
BillingUsageResponse,
|
|
334
389
|
InsightsRange,
|
|
335
390
|
InsightsBillingPath,
|
|
336
391
|
InsightsPricingSource,
|
|
392
|
+
ModelContextContributionSource,
|
|
393
|
+
InsightsPromptContributionRow,
|
|
394
|
+
InsightsPromptContributions,
|
|
337
395
|
InsightsModelUsageRow,
|
|
338
396
|
InsightsModelCallRow,
|
|
339
397
|
InsightsSeriesPoint,
|
|
@@ -397,6 +455,7 @@ export type {
|
|
|
397
455
|
SessionRealtimeState,
|
|
398
456
|
WorkspaceModelCatalogModel,
|
|
399
457
|
WorkspaceModelCatalogResponse,
|
|
458
|
+
WorkspaceModelAccessPolicy,
|
|
400
459
|
WorkspaceRealtimeModelCatalogItem,
|
|
401
460
|
WorkspaceRealtimeModelCatalogResponse,
|
|
402
461
|
CodexAccount,
|
|
@@ -436,6 +495,22 @@ export type {
|
|
|
436
495
|
ConnectionOwnership,
|
|
437
496
|
ConnectionResponse,
|
|
438
497
|
ConnectionStatus,
|
|
498
|
+
PersonalGitHubConnectionMetadata,
|
|
499
|
+
PersonalGitHubConnectionStatusResponse,
|
|
500
|
+
PersonalGitHubDisconnectRequest,
|
|
501
|
+
PersonalGitHubOAuthStartRequest,
|
|
502
|
+
PersonalGitHubOAuthStartResponse,
|
|
503
|
+
ListPersonalGitHubRepositoriesOptions,
|
|
504
|
+
ListPersonalGitHubRepositoriesResponse,
|
|
505
|
+
PersonalGitHubRepository,
|
|
506
|
+
PersonalGitHubRepositoryAccess,
|
|
507
|
+
PersonalGitHubRepositoryCatalogItem,
|
|
508
|
+
PersonalGitHubRepositoryPermissions,
|
|
509
|
+
PersonalGitHubRepositorySelectionInput,
|
|
510
|
+
PersonalGitHubRepositorySelectionState,
|
|
511
|
+
PersonalGitHubSelectedRepository,
|
|
512
|
+
ReplacePersonalGitHubRepositorySelectionsRequest,
|
|
513
|
+
VerifyPersonalGitHubRepositorySelectionsRequest,
|
|
439
514
|
ConnectorDocumentDestination,
|
|
440
515
|
ConnectorDocumentDestinationAuthority,
|
|
441
516
|
ConnectorDocumentDestinationSelection,
|
|
@@ -451,9 +526,14 @@ export type {
|
|
|
451
526
|
SlackInstallationBinding,
|
|
452
527
|
SlackInstallationBindingState,
|
|
453
528
|
ListSlackInstallationBindingsResponse,
|
|
529
|
+
SlackChannelRoute,
|
|
530
|
+
SlackChannelRouteListResponse,
|
|
531
|
+
UpdateSlackChannelRoutesRequest,
|
|
454
532
|
SlackReactionChannel,
|
|
455
533
|
SlackReactionChannelListResponse,
|
|
456
534
|
CreateConnectionRequest,
|
|
535
|
+
CreateBillingPortalRequest,
|
|
536
|
+
CreateBillingPortalResponse,
|
|
457
537
|
CreateCheckoutRequest,
|
|
458
538
|
CreateCheckoutResponse,
|
|
459
539
|
CreateDocumentBaseRequest,
|
|
@@ -552,6 +632,16 @@ export type {
|
|
|
552
632
|
GitCredentialProvider,
|
|
553
633
|
GitCredentialBindingId,
|
|
554
634
|
GitRepositoryAccess,
|
|
635
|
+
PrReviewProvider,
|
|
636
|
+
PrReviewCredentialKind,
|
|
637
|
+
PrReviewWebhookAuthKind,
|
|
638
|
+
PrReviewAppRegistration,
|
|
639
|
+
PrReviewRepositoryBinding,
|
|
640
|
+
CreatePrReviewAppRegistrationRequest,
|
|
641
|
+
UpdatePrReviewAppRegistrationRequest,
|
|
642
|
+
CreatePrReviewRepositoryBindingRequest,
|
|
643
|
+
UpdatePrReviewRepositoryBindingRequest,
|
|
644
|
+
ListPrReviewConfigurationResponse,
|
|
555
645
|
ListApiKeysResponse,
|
|
556
646
|
ListConnectionsResponse,
|
|
557
647
|
ListPacksResponse,
|
|
@@ -635,6 +725,17 @@ export type {
|
|
|
635
725
|
ScheduledTaskStatus,
|
|
636
726
|
ScheduledTaskTriggerType,
|
|
637
727
|
Session,
|
|
728
|
+
SessionBackgroundCommand,
|
|
729
|
+
SessionBackgroundCommandActivity,
|
|
730
|
+
SessionBackgroundCommandListResponse,
|
|
731
|
+
CancelSessionBackgroundCommandResult,
|
|
732
|
+
SessionVisibility,
|
|
733
|
+
SessionTenancyCreateCapabilities,
|
|
734
|
+
SessionTenancyPublicProjection,
|
|
735
|
+
UpdateSessionVisibilityRequest,
|
|
736
|
+
UpdateSessionVisibilityResponse,
|
|
737
|
+
ForkSessionRequest,
|
|
738
|
+
ForkSessionResponse,
|
|
638
739
|
SessionCapabilities,
|
|
639
740
|
AgentTopologyPageResponse,
|
|
640
741
|
AgentTopologySession,
|
|
@@ -653,9 +754,13 @@ export type {
|
|
|
653
754
|
MoveSessionQueueItemRequest,
|
|
654
755
|
NewSessionDraft,
|
|
655
756
|
NewSessionDraftOptions,
|
|
757
|
+
NewSessionSelectionHistory,
|
|
656
758
|
SaveComposerDraftRequest,
|
|
759
|
+
SubmitComposerDraftRequest,
|
|
760
|
+
SubmitComposerDraftResponse,
|
|
657
761
|
SaveNewSessionDraftRequest,
|
|
658
762
|
SessionCommandReceipt,
|
|
763
|
+
SessionPromptRouting,
|
|
659
764
|
SteerSessionQueueItemRequest,
|
|
660
765
|
WorkspaceInferenceControlResponse,
|
|
661
766
|
SessionPendingInputPreview,
|
|
@@ -702,6 +807,12 @@ export type {
|
|
|
702
807
|
SessionEventSemanticClass,
|
|
703
808
|
SessionEventType,
|
|
704
809
|
SessionGoal,
|
|
810
|
+
SessionGoalRevision,
|
|
811
|
+
ListSessionGoalRevisionsOptions,
|
|
812
|
+
ListSessionGoalRevisionsResponse,
|
|
813
|
+
RejectSessionGoalRevisionRequest,
|
|
814
|
+
RejectSessionGoalRevisionResponse,
|
|
815
|
+
RollbackSessionGoalRevisionRequest,
|
|
705
816
|
SessionGoalCreatedBy,
|
|
706
817
|
SessionGoalStatus,
|
|
707
818
|
SessionHumanInputRequest,
|
|
@@ -741,6 +852,8 @@ export type {
|
|
|
741
852
|
FsListBatchResponse,
|
|
742
853
|
FsReadRequest,
|
|
743
854
|
FsReadResponse,
|
|
855
|
+
PublishSandboxFileArtifactRequest,
|
|
856
|
+
SandboxFileArtifactReceipt,
|
|
744
857
|
FsWriteRequest,
|
|
745
858
|
FsWriteResponse,
|
|
746
859
|
FsDeleteRequest,
|
|
@@ -795,6 +908,8 @@ export type {
|
|
|
795
908
|
UpdateSessionGoalRequest,
|
|
796
909
|
UpdateSessionMcpApprovalPolicyRequest,
|
|
797
910
|
UpdateSessionMcpApprovalPolicyResponse,
|
|
911
|
+
UpdateSessionAttentionRequest,
|
|
912
|
+
UpdateSessionArchiveRequest,
|
|
798
913
|
UpdateSessionPinRequest,
|
|
799
914
|
UpdateSessionRequest,
|
|
800
915
|
UpdateSessionToolPolicyRequest,
|
|
@@ -802,6 +917,7 @@ export type {
|
|
|
802
917
|
UpdateWorkspaceEnvironmentRequest,
|
|
803
918
|
UpdateWorkspaceMemberRequest,
|
|
804
919
|
UpdateWorkspaceRequest,
|
|
920
|
+
UpdateWorkspaceModelAccessPolicyRequest,
|
|
805
921
|
UpdateWorkspaceSettingsRequest,
|
|
806
922
|
WorkspaceSlackReactionSummonSettings,
|
|
807
923
|
TranscribeAudioResponse,
|
|
@@ -811,6 +927,13 @@ export type {
|
|
|
811
927
|
UserApprovalDecisionEventInput,
|
|
812
928
|
UserHumanInputResponseEventInput,
|
|
813
929
|
UserMessageEventInput,
|
|
930
|
+
PersonalResourceAttachmentIntent,
|
|
931
|
+
PersonalResourceAttachmentSummary,
|
|
932
|
+
UserResourceAuthoritySummary,
|
|
933
|
+
UserResourceAuthorityGrant,
|
|
934
|
+
UserResourceKind,
|
|
935
|
+
ListUserResourceAuthoritiesOptions,
|
|
936
|
+
ListUserResourceAuthoritiesResponse,
|
|
814
937
|
Workspace,
|
|
815
938
|
WorkspaceControlEvent,
|
|
816
939
|
VariableSet,
|
|
@@ -818,6 +941,7 @@ export type {
|
|
|
818
941
|
VariableSetVariableMetadata,
|
|
819
942
|
Channel,
|
|
820
943
|
CreateChannelRequest,
|
|
944
|
+
ReorderChannelsRequest,
|
|
821
945
|
UpdateChannelRequest,
|
|
822
946
|
UpdateSessionChannelRequest,
|
|
823
947
|
Rig,
|
|
@@ -887,6 +1011,7 @@ export type {
|
|
|
887
1011
|
WorkspaceMemorySearchRequest,
|
|
888
1012
|
WorkspaceMemorySearchResult,
|
|
889
1013
|
WorkspaceMemorySearchResponse,
|
|
1014
|
+
WorkspaceSessionDefaults,
|
|
890
1015
|
WorkspaceSettings,
|
|
891
1016
|
WorkspaceVideoGenerationSettings,
|
|
892
1017
|
WorkspaceVoiceInputSettings,
|
|
@@ -895,6 +1020,14 @@ export type {
|
|
|
895
1020
|
MetricSample,
|
|
896
1021
|
MachineState,
|
|
897
1022
|
MachineKind,
|
|
1023
|
+
MachineConnectionAuthority,
|
|
1024
|
+
MachineRuntimeCapabilities,
|
|
1025
|
+
MachineUpdateStatus,
|
|
1026
|
+
MachineUpdateState,
|
|
1027
|
+
MachineRuntime,
|
|
1028
|
+
UpdateMachineAgentResponse,
|
|
1029
|
+
MachineOperationPolicy,
|
|
1030
|
+
UpdateMachineOperationPolicyRequest,
|
|
898
1031
|
MachineView,
|
|
899
1032
|
MachinesResponse,
|
|
900
1033
|
MachineMetricsSeriesResponse,
|
|
@@ -906,6 +1039,7 @@ export type {
|
|
|
906
1039
|
// Self-hosted enrollment UX (design 11): click-Grant approve-page lookup/deny +
|
|
907
1040
|
// headless enroll-token mint/exchange.
|
|
908
1041
|
EnrollmentOs,
|
|
1042
|
+
ResourceAuthorityScope,
|
|
909
1043
|
DeviceEnrollmentLookupRequest,
|
|
910
1044
|
DeviceEnrollmentLookupResponse,
|
|
911
1045
|
DeviceEnrollmentLookupMachine,
|
package/src/interaction.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { OpenGeniRequestOptions } from "./client";
|
|
2
|
+
import { OpenGeniApiError } from "./errors";
|
|
2
3
|
import type { RetainedArtifactReference } from "./types";
|
|
3
4
|
|
|
4
5
|
/** Public Browser/Computer protocol version. Driver and provider details stay private. */
|
|
@@ -28,6 +29,83 @@ export type InteractionJsonValue =
|
|
|
28
29
|
| InteractionJsonValue[]
|
|
29
30
|
| { [key: string]: InteractionJsonValue };
|
|
30
31
|
|
|
32
|
+
export type InteractionControlFailureCode =
|
|
33
|
+
| "unknown"
|
|
34
|
+
| "unsupported"
|
|
35
|
+
| "os"
|
|
36
|
+
| "not_found"
|
|
37
|
+
| "consent_required"
|
|
38
|
+
| "timeout"
|
|
39
|
+
| "draining"
|
|
40
|
+
| "protocol"
|
|
41
|
+
| "stream"
|
|
42
|
+
| "agent_offline"
|
|
43
|
+
| "fenced"
|
|
44
|
+
| "payload_too_large";
|
|
45
|
+
|
|
46
|
+
export type InteractionControlFailure = {
|
|
47
|
+
layer: "connected_machine";
|
|
48
|
+
surface: "browser" | "computer";
|
|
49
|
+
code: InteractionControlFailureCode;
|
|
50
|
+
retryable: boolean;
|
|
51
|
+
outcomeUnknown: boolean;
|
|
52
|
+
requestId: string | undefined;
|
|
53
|
+
controlRequestId: string | undefined;
|
|
54
|
+
message: string;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/** Decodes the bounded typed control-failure details emitted by OpenGeni. Raw
|
|
58
|
+
* provider/OS detail is intentionally absent; both correlation ids are opaque. */
|
|
59
|
+
export function interactionControlFailureFromError(
|
|
60
|
+
error: unknown,
|
|
61
|
+
): InteractionControlFailure | null {
|
|
62
|
+
if (!(error instanceof OpenGeniApiError)) return null;
|
|
63
|
+
const details = error.details;
|
|
64
|
+
if (!details || details.interactionLayer !== "connected_machine") return null;
|
|
65
|
+
const surface = details.interactionSurface;
|
|
66
|
+
const code = details.controlFailureCode;
|
|
67
|
+
if ((surface !== "browser" && surface !== "computer") || !isControlFailureCode(code)) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const controlRequestId = boundedOpaqueCorrelation(details.controlRequestId);
|
|
71
|
+
return {
|
|
72
|
+
layer: "connected_machine",
|
|
73
|
+
surface,
|
|
74
|
+
code,
|
|
75
|
+
retryable: error.retryable,
|
|
76
|
+
outcomeUnknown: error.outcomeUnknown,
|
|
77
|
+
requestId: error.correlationId,
|
|
78
|
+
controlRequestId,
|
|
79
|
+
message: error.message,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function isControlFailureCode(value: unknown): value is InteractionControlFailureCode {
|
|
84
|
+
return (
|
|
85
|
+
typeof value === "string" &&
|
|
86
|
+
[
|
|
87
|
+
"unknown",
|
|
88
|
+
"unsupported",
|
|
89
|
+
"os",
|
|
90
|
+
"not_found",
|
|
91
|
+
"consent_required",
|
|
92
|
+
"timeout",
|
|
93
|
+
"draining",
|
|
94
|
+
"protocol",
|
|
95
|
+
"stream",
|
|
96
|
+
"agent_offline",
|
|
97
|
+
"fenced",
|
|
98
|
+
"payload_too_large",
|
|
99
|
+
].includes(value)
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function boundedOpaqueCorrelation(value: unknown): string | undefined {
|
|
104
|
+
return typeof value === "string" && value.length <= 128 && /^[A-Za-z0-9._:-]+$/u.test(value)
|
|
105
|
+
? value
|
|
106
|
+
: undefined;
|
|
107
|
+
}
|
|
108
|
+
|
|
31
109
|
export type InteractionPlacement =
|
|
32
110
|
| { kind: "sandbox_group"; sandboxGroupId: string }
|
|
33
111
|
| { kind: "connected_machine"; sandboxId: string }
|
|
@@ -71,8 +149,18 @@ export type AttachedBrowserDevice = {
|
|
|
71
149
|
updatedAt: string;
|
|
72
150
|
};
|
|
73
151
|
|
|
152
|
+
export type AttachedBrowserBridge = {
|
|
153
|
+
enrollmentId: string;
|
|
154
|
+
state: "online" | "offline";
|
|
155
|
+
bridgeGeneration: string;
|
|
156
|
+
inventoryRevision: number;
|
|
157
|
+
connectedProfileCount: number;
|
|
158
|
+
lastSeenAt: string;
|
|
159
|
+
};
|
|
160
|
+
|
|
74
161
|
export type AttachedBrowserDeviceListResponse = {
|
|
75
162
|
revision: number;
|
|
163
|
+
bridges: AttachedBrowserBridge[];
|
|
76
164
|
devices: AttachedBrowserDevice[];
|
|
77
165
|
};
|
|
78
166
|
|
|
@@ -2439,6 +2527,7 @@ export function browserFrameSocketUrl(
|
|
|
2439
2527
|
else if (url.protocol !== "ws:" && url.protocol !== "wss:") {
|
|
2440
2528
|
throw new Error("browser frame attachment did not contain an HTTP or WebSocket URL");
|
|
2441
2529
|
}
|
|
2530
|
+
upgradeMixedContentWebSocket(url);
|
|
2442
2531
|
if (options.format !== undefined) url.searchParams.set("format", options.format);
|
|
2443
2532
|
setBoundedIntegerQuery(url, "quality", options.quality, 1, 100);
|
|
2444
2533
|
setBoundedIntegerQuery(url, "maxWidth", options.maxWidth, 1, 4_096);
|
|
@@ -2461,6 +2550,7 @@ export function computerFrameSocketUrl(
|
|
|
2461
2550
|
else if (url.protocol !== "ws:" && url.protocol !== "wss:") {
|
|
2462
2551
|
throw new Error("computer frame attachment did not contain an HTTP or WebSocket URL");
|
|
2463
2552
|
}
|
|
2553
|
+
upgradeMixedContentWebSocket(url);
|
|
2464
2554
|
if (options.format !== undefined) url.searchParams.set("format", options.format);
|
|
2465
2555
|
setBoundedIntegerQuery(url, "quality", options.quality, 1, 100);
|
|
2466
2556
|
setBoundedIntegerQuery(url, "maxWidth", options.maxWidth, 1, 4_096);
|
|
@@ -2754,6 +2844,11 @@ function computerRelevance(session: ComputerSession, associationSessionId: strin
|
|
|
2754
2844
|
return Math.max(association, Number.isFinite(used) ? used : 0);
|
|
2755
2845
|
}
|
|
2756
2846
|
|
|
2847
|
+
function upgradeMixedContentWebSocket(url: URL): void {
|
|
2848
|
+
const protocol = (globalThis as { location?: { protocol?: string } }).location?.protocol;
|
|
2849
|
+
if (protocol === "https:" && url.protocol === "ws:") url.protocol = "wss:";
|
|
2850
|
+
}
|
|
2851
|
+
|
|
2757
2852
|
function setBoundedIntegerQuery(
|
|
2758
2853
|
url: URL,
|
|
2759
2854
|
name: string,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { OpenGeniClient } from "./client";
|
|
2
|
+
import type {
|
|
3
|
+
OrganizationPrivateSessionSettings,
|
|
4
|
+
UpdateOrganizationPrivateSessionSettingsRequest,
|
|
5
|
+
} from "./types";
|
|
6
|
+
|
|
7
|
+
type OrganizationPrivateSessionSettingsClient = Pick<OpenGeniClient, "requestJson">;
|
|
8
|
+
|
|
9
|
+
function settingsPath(organizationId: string): string {
|
|
10
|
+
return `/v1/organizations/${organizationId}/private-session-settings`;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export async function getOrganizationPrivateSessionSettings(
|
|
14
|
+
client: OrganizationPrivateSessionSettingsClient,
|
|
15
|
+
organizationId: string,
|
|
16
|
+
): Promise<OrganizationPrivateSessionSettings> {
|
|
17
|
+
return await client.requestJson<OrganizationPrivateSessionSettings>(
|
|
18
|
+
"GET",
|
|
19
|
+
settingsPath(organizationId),
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export async function updateOrganizationPrivateSessionSettings(
|
|
24
|
+
client: OrganizationPrivateSessionSettingsClient,
|
|
25
|
+
organizationId: string,
|
|
26
|
+
request: UpdateOrganizationPrivateSessionSettingsRequest,
|
|
27
|
+
): Promise<OrganizationPrivateSessionSettings> {
|
|
28
|
+
return await client.requestJson<OrganizationPrivateSessionSettings>(
|
|
29
|
+
"PATCH",
|
|
30
|
+
settingsPath(organizationId),
|
|
31
|
+
request,
|
|
32
|
+
);
|
|
33
|
+
}
|