@opengeni/contracts 0.31.1 → 0.32.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.
@@ -864,8 +864,205 @@ function isPlainRecord(value) {
864
864
  return Boolean(value && typeof value === "object" && !Array.isArray(value));
865
865
  }
866
866
 
867
- // src/artifacts.ts
867
+ // src/workspace-instruction-policies.ts
868
868
  import { z as z2 } from "zod";
869
+ var WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS = 262144;
870
+ var WORKSPACE_INSTRUCTION_POLICY_PROMPT_MAX_UTF8_BYTES = 131072;
871
+ var WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS = 4096;
872
+ var WORKSPACE_INSTRUCTION_POLICY_ROLE_KEY_MAX_CHARS = 64;
873
+ var WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS = 512;
874
+ var WorkspaceInstructionPolicyKind = z2.enum(["charter", "policy"]);
875
+ var WorkspaceInstructionPolicyScope = z2.enum(["global", "role"]);
876
+ var WorkspaceInstructionPolicyProvenanceSource = z2.enum([
877
+ "human",
878
+ "onboarding",
879
+ "knowledge_proposal",
880
+ "legacy_import"
881
+ ]);
882
+ var WorkspaceInstructionPolicyDraftProvenanceSource = z2.enum([
883
+ "human",
884
+ "onboarding",
885
+ "knowledge_proposal"
886
+ ]);
887
+ var WorkspaceInstructionPolicyActivationType = z2.enum(["activate", "rollback"]);
888
+ var WorkspaceInstructionPolicyRoleKey = z2.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_ROLE_KEY_MAX_CHARS).regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/);
889
+ function normalizeWorkspaceInstructionPolicyRoleKey(value) {
890
+ return value.normalize("NFKC").trim().toLowerCase().replace(/\s+/gu, "-").replace(/-+/g, "-");
891
+ }
892
+ var WorkspaceInstructionPolicyRoleKeyInput = z2.string().transform(normalizeWorkspaceInstructionPolicyRoleKey).pipe(WorkspaceInstructionPolicyRoleKey);
893
+ var WorkspaceInstructionPolicyRoleSource = z2.enum([
894
+ "session_binding",
895
+ "metadata_fallback",
896
+ "none",
897
+ "invalid_metadata_fallback"
898
+ ]);
899
+ var targetShape = {
900
+ kind: WorkspaceInstructionPolicyKind,
901
+ scope: WorkspaceInstructionPolicyScope,
902
+ roleKey: WorkspaceInstructionPolicyRoleKey.nullable()
903
+ };
904
+ function validateTarget(value, context) {
905
+ if (value.kind === "charter" && (value.scope !== "global" || value.roleKey !== null)) {
906
+ context.addIssue({
907
+ code: "custom",
908
+ path: ["scope"],
909
+ message: "a charter must use global scope with no role key"
910
+ });
911
+ }
912
+ if (value.scope === "global" && value.roleKey !== null) {
913
+ context.addIssue({
914
+ code: "custom",
915
+ path: ["roleKey"],
916
+ message: "a global instruction policy must not have a role key"
917
+ });
918
+ }
919
+ if (value.scope === "role" && (value.kind !== "policy" || value.roleKey === null)) {
920
+ context.addIssue({
921
+ code: "custom",
922
+ path: ["roleKey"],
923
+ message: "role scope requires a policy and a normalized role key"
924
+ });
925
+ }
926
+ }
927
+ var WorkspaceInstructionPolicyTarget = z2.object(targetShape).superRefine(validateTarget);
928
+ var WorkspaceInstructionPolicyProvenance = z2.object({
929
+ source: WorkspaceInstructionPolicyProvenanceSource,
930
+ sourceId: z2.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS).nullable()
931
+ });
932
+ var revisionIdentityShape = {
933
+ id: z2.string().uuid(),
934
+ revision: z2.number().int().positive(),
935
+ contentHash: z2.string().regex(/^[0-9a-f]{64}$/)
936
+ };
937
+ var WorkspaceInstructionPolicyRevisionIdentity = z2.object(revisionIdentityShape);
938
+ var WorkspaceInstructionPolicyRevision = z2.object({
939
+ ...revisionIdentityShape,
940
+ accountId: z2.string().uuid(),
941
+ workspaceId: z2.string().uuid(),
942
+ ...targetShape,
943
+ content: z2.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS),
944
+ provenance: WorkspaceInstructionPolicyProvenance,
945
+ supersedesRevisionId: z2.string().uuid().nullable(),
946
+ createdBySubjectId: z2.string().min(1),
947
+ createdAt: z2.string().datetime()
948
+ });
949
+ var WorkspaceInstructionPolicyHead = z2.object({
950
+ workspaceId: z2.string().uuid(),
951
+ ...targetShape,
952
+ revisionId: z2.string().uuid(),
953
+ revision: z2.number().int().positive(),
954
+ contentHash: z2.string().regex(/^[0-9a-f]{64}$/),
955
+ activationVersion: z2.number().int().positive(),
956
+ activatedAt: z2.string().datetime()
957
+ });
958
+ var WorkspaceInstructionPolicySnapshotProvenance = z2.object({
959
+ source: WorkspaceInstructionPolicyProvenanceSource,
960
+ sourceIdHash: z2.string().regex(/^[0-9a-f]{64}$/).nullable()
961
+ });
962
+ var WorkspaceInstructionPolicySnapshotEntry = z2.object({
963
+ kind: WorkspaceInstructionPolicyKind,
964
+ scope: WorkspaceInstructionPolicyScope,
965
+ roleKey: WorkspaceInstructionPolicyRoleKey.nullable(),
966
+ revisionId: z2.string().uuid(),
967
+ revision: z2.number().int().positive(),
968
+ contentHash: z2.string().regex(/^[0-9a-f]{64}$/),
969
+ activationVersion: z2.number().int().positive(),
970
+ activatedAt: z2.string().datetime(),
971
+ provenance: WorkspaceInstructionPolicySnapshotProvenance
972
+ });
973
+ var WorkspaceInstructionPolicySnapshot = z2.object({
974
+ id: z2.string().uuid(),
975
+ workspaceId: z2.string().uuid(),
976
+ sessionId: z2.string().uuid(),
977
+ turnId: z2.string().uuid(),
978
+ attemptId: z2.string().uuid(),
979
+ executionGeneration: z2.number().int().positive(),
980
+ policyRole: WorkspaceInstructionPolicyRoleKey.nullable(),
981
+ roleSource: WorkspaceInstructionPolicyRoleSource,
982
+ entryHash: z2.string().regex(/^[0-9a-f]{64}$/),
983
+ entries: z2.array(WorkspaceInstructionPolicySnapshotEntry).max(3),
984
+ createdAt: z2.string().datetime()
985
+ });
986
+ var ResolvedWorkspaceInstructionPolicySnapshotEntry = WorkspaceInstructionPolicySnapshotEntry.extend({
987
+ content: z2.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS)
988
+ });
989
+ var ResolvedWorkspaceInstructionPolicySnapshot = WorkspaceInstructionPolicySnapshot.extend(
990
+ {
991
+ entries: z2.array(ResolvedWorkspaceInstructionPolicySnapshotEntry).max(3)
992
+ }
993
+ );
994
+ var WorkspaceInstructionPolicyActivationEvent = z2.object({
995
+ id: z2.string().uuid(),
996
+ accountId: z2.string().uuid(),
997
+ workspaceId: z2.string().uuid(),
998
+ ...targetShape,
999
+ type: WorkspaceInstructionPolicyActivationType,
1000
+ activationVersion: z2.number().int().positive(),
1001
+ oldRevision: WorkspaceInstructionPolicyRevisionIdentity.nullable(),
1002
+ newRevision: WorkspaceInstructionPolicyRevisionIdentity,
1003
+ actorSubjectId: z2.string().min(1),
1004
+ reason: z2.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS),
1005
+ createdAt: z2.string().datetime()
1006
+ });
1007
+ var CreateWorkspaceInstructionPolicyDraftRequest = z2.object({
1008
+ kind: WorkspaceInstructionPolicyKind,
1009
+ scope: WorkspaceInstructionPolicyScope,
1010
+ roleKey: WorkspaceInstructionPolicyRoleKeyInput.nullable().default(null),
1011
+ content: z2.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS).refine((value) => value.trim().length > 0, "instruction policy content must not be blank"),
1012
+ provenanceSource: WorkspaceInstructionPolicyDraftProvenanceSource.default("human"),
1013
+ provenanceSourceId: z2.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS).nullable().default(null),
1014
+ supersedesRevisionId: z2.string().uuid().nullable().default(null)
1015
+ }).superRefine(validateTarget);
1016
+ var ImportLegacyWorkspaceInstructionPolicyDraftRequest = z2.object({
1017
+ supersedesRevisionId: z2.string().uuid().nullable().default(null)
1018
+ }).strict();
1019
+ var WorkspaceInstructionPolicyListQuery = z2.object({
1020
+ kind: WorkspaceInstructionPolicyKind.optional(),
1021
+ scope: WorkspaceInstructionPolicyScope.optional(),
1022
+ roleKey: WorkspaceInstructionPolicyRoleKeyInput.nullable().optional(),
1023
+ afterRevision: z2.coerce.number().int().positive().optional(),
1024
+ limit: z2.coerce.number().int().min(1).max(100).default(50)
1025
+ });
1026
+ var WorkspaceInstructionPolicyListResponse = z2.object({
1027
+ revisions: z2.array(WorkspaceInstructionPolicyRevision),
1028
+ activeHeads: z2.array(WorkspaceInstructionPolicyHead),
1029
+ activationEvents: z2.array(WorkspaceInstructionPolicyActivationEvent),
1030
+ nextAfterRevision: z2.number().int().positive().nullable()
1031
+ });
1032
+ var WorkspaceInstructionPolicyDiffRequest = z2.object({
1033
+ fromRevisionId: z2.string().uuid(),
1034
+ toRevisionId: z2.string().uuid()
1035
+ }).refine((value) => value.fromRevisionId !== value.toRevisionId, {
1036
+ message: "diff revisions must be different",
1037
+ path: ["toRevisionId"]
1038
+ });
1039
+ var WorkspaceInstructionPolicyDiffResponse = z2.object({
1040
+ from: WorkspaceInstructionPolicyRevision,
1041
+ to: WorkspaceInstructionPolicyRevision,
1042
+ format: z2.literal("unified"),
1043
+ diff: z2.string()
1044
+ });
1045
+ var ActivateWorkspaceInstructionPolicyRequest = z2.object({
1046
+ expectedCurrentRevisionId: z2.string().uuid().nullable(),
1047
+ reason: z2.string().trim().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS)
1048
+ });
1049
+ var RollbackWorkspaceInstructionPolicyRequest = z2.object({
1050
+ targetRevisionId: z2.string().uuid(),
1051
+ expectedCurrentRevisionId: z2.string().uuid(),
1052
+ reason: z2.string().trim().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS)
1053
+ });
1054
+ var WorkspaceInstructionPolicyActivationResponse = z2.object({
1055
+ head: WorkspaceInstructionPolicyHead,
1056
+ event: WorkspaceInstructionPolicyActivationEvent
1057
+ });
1058
+ var WorkspaceInstructionPolicyConflictResponse = z2.object({
1059
+ code: z2.literal("WORKSPACE_INSTRUCTION_POLICY_CONFLICT"),
1060
+ message: z2.string(),
1061
+ currentHead: WorkspaceInstructionPolicyHead.nullable()
1062
+ });
1063
+
1064
+ // src/artifacts.ts
1065
+ import { z as z3 } from "zod";
869
1066
  var WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES = 512 * 1024;
870
1067
  var WORKSPACE_ARTIFACT_TITLE_MAX_CHARS = 120;
871
1068
  var WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS = 2e3;
@@ -873,72 +1070,72 @@ var WORKSPACE_ARTIFACT_LIST_MAX = 100;
873
1070
  var WORKSPACE_ARTIFACT_LIST_DEFAULT = 50;
874
1071
  var WORKSPACE_ARTIFACT_CURSOR_MAX_CHARS = 512;
875
1072
  var encoder3 = new TextEncoder();
876
- var sha256 = z2.string().regex(/^[0-9a-f]{64}$/);
877
- var WorkspaceArtifactSlug = z2.string().trim().min(1).max(96).regex(/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/);
878
- var WorkspaceArtifactStatus = z2.enum(["active", "archived"]);
879
- var WorkspaceArtifactVersion = z2.object({
880
- id: z2.string().uuid(),
881
- accountId: z2.string().uuid(),
882
- workspaceId: z2.string().uuid(),
883
- artifactId: z2.string().uuid(),
884
- revision: z2.number().int().positive(),
885
- contentType: z2.literal("text/html"),
1073
+ var sha256 = z3.string().regex(/^[0-9a-f]{64}$/);
1074
+ var WorkspaceArtifactSlug = z3.string().trim().min(1).max(96).regex(/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/);
1075
+ var WorkspaceArtifactStatus = z3.enum(["active", "archived"]);
1076
+ var WorkspaceArtifactVersion = z3.object({
1077
+ id: z3.string().uuid(),
1078
+ accountId: z3.string().uuid(),
1079
+ workspaceId: z3.string().uuid(),
1080
+ artifactId: z3.string().uuid(),
1081
+ revision: z3.number().int().positive(),
1082
+ contentType: z3.literal("text/html"),
886
1083
  contentSha256: sha256,
887
- sizeBytes: z2.number().int().positive().max(WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES),
888
- sourceSessionId: z2.string().uuid().nullable(),
889
- sourceTurnId: z2.string().uuid().nullable(),
890
- sourceAttemptId: z2.string().uuid().nullable(),
891
- sourceExecutionGeneration: z2.number().int().positive().nullable(),
892
- createdBySubjectId: z2.string().min(1).max(1024),
893
- createdAt: z2.string().datetime({ offset: true })
894
- });
895
- var WorkspaceArtifact = z2.object({
896
- id: z2.string().uuid(),
897
- accountId: z2.string().uuid(),
898
- workspaceId: z2.string().uuid(),
1084
+ sizeBytes: z3.number().int().positive().max(WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES),
1085
+ sourceSessionId: z3.string().uuid().nullable(),
1086
+ sourceTurnId: z3.string().uuid().nullable(),
1087
+ sourceAttemptId: z3.string().uuid().nullable(),
1088
+ sourceExecutionGeneration: z3.number().int().positive().nullable(),
1089
+ createdBySubjectId: z3.string().min(1).max(1024),
1090
+ createdAt: z3.string().datetime({ offset: true })
1091
+ });
1092
+ var WorkspaceArtifact = z3.object({
1093
+ id: z3.string().uuid(),
1094
+ accountId: z3.string().uuid(),
1095
+ workspaceId: z3.string().uuid(),
899
1096
  slug: WorkspaceArtifactSlug,
900
- title: z2.string().trim().min(1).max(WORKSPACE_ARTIFACT_TITLE_MAX_CHARS),
901
- description: z2.string().max(WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS).nullable(),
1097
+ title: z3.string().trim().min(1).max(WORKSPACE_ARTIFACT_TITLE_MAX_CHARS),
1098
+ description: z3.string().max(WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS).nullable(),
902
1099
  status: WorkspaceArtifactStatus,
903
1100
  currentVersion: WorkspaceArtifactVersion.nullable(),
904
- createdBySubjectId: z2.string().min(1).max(1024),
905
- createdAt: z2.string().datetime({ offset: true }),
906
- updatedAt: z2.string().datetime({ offset: true })
1101
+ createdBySubjectId: z3.string().min(1).max(1024),
1102
+ createdAt: z3.string().datetime({ offset: true }),
1103
+ updatedAt: z3.string().datetime({ offset: true })
907
1104
  });
908
- var WorkspaceArtifactEventType = z2.enum(["published", "rolled_back"]);
909
- var WorkspaceArtifactEvent = z2.object({
910
- id: z2.string().uuid(),
911
- accountId: z2.string().uuid(),
912
- workspaceId: z2.string().uuid(),
913
- artifactId: z2.string().uuid(),
1105
+ var WorkspaceArtifactEventType = z3.enum(["published", "rolled_back"]);
1106
+ var WorkspaceArtifactEvent = z3.object({
1107
+ id: z3.string().uuid(),
1108
+ accountId: z3.string().uuid(),
1109
+ workspaceId: z3.string().uuid(),
1110
+ artifactId: z3.string().uuid(),
914
1111
  type: WorkspaceArtifactEventType,
915
- fromVersionId: z2.string().uuid().nullable(),
916
- toVersionId: z2.string().uuid(),
917
- sourceSessionId: z2.string().uuid().nullable(),
918
- sourceTurnId: z2.string().uuid().nullable(),
919
- sourceAttemptId: z2.string().uuid().nullable(),
920
- sourceExecutionGeneration: z2.number().int().positive().nullable(),
921
- actorSubjectId: z2.string().min(1).max(1024),
922
- reason: z2.string().min(1).max(4096),
923
- createdAt: z2.string().datetime({ offset: true })
924
- });
925
- var WorkspaceArtifactListQuery = z2.object({
926
- limit: z2.coerce.number().int().positive().max(WORKSPACE_ARTIFACT_LIST_MAX).default(WORKSPACE_ARTIFACT_LIST_DEFAULT),
927
- cursor: z2.string().min(1).max(WORKSPACE_ARTIFACT_CURSOR_MAX_CHARS).optional()
928
- });
929
- var WorkspaceArtifactListResponse = z2.object({
930
- artifacts: z2.array(WorkspaceArtifact).max(WORKSPACE_ARTIFACT_LIST_MAX),
931
- nextCursor: z2.string().max(WORKSPACE_ARTIFACT_CURSOR_MAX_CHARS).nullable(),
932
- truncated: z2.boolean()
933
- });
934
- var WorkspaceArtifactDetailResponse = z2.object({
1112
+ fromVersionId: z3.string().uuid().nullable(),
1113
+ toVersionId: z3.string().uuid(),
1114
+ sourceSessionId: z3.string().uuid().nullable(),
1115
+ sourceTurnId: z3.string().uuid().nullable(),
1116
+ sourceAttemptId: z3.string().uuid().nullable(),
1117
+ sourceExecutionGeneration: z3.number().int().positive().nullable(),
1118
+ actorSubjectId: z3.string().min(1).max(1024),
1119
+ reason: z3.string().min(1).max(4096),
1120
+ createdAt: z3.string().datetime({ offset: true })
1121
+ });
1122
+ var WorkspaceArtifactListQuery = z3.object({
1123
+ limit: z3.coerce.number().int().positive().max(WORKSPACE_ARTIFACT_LIST_MAX).default(WORKSPACE_ARTIFACT_LIST_DEFAULT),
1124
+ cursor: z3.string().min(1).max(WORKSPACE_ARTIFACT_CURSOR_MAX_CHARS).optional()
1125
+ });
1126
+ var WorkspaceArtifactListResponse = z3.object({
1127
+ artifacts: z3.array(WorkspaceArtifact).max(WORKSPACE_ARTIFACT_LIST_MAX),
1128
+ nextCursor: z3.string().max(WORKSPACE_ARTIFACT_CURSOR_MAX_CHARS).nullable(),
1129
+ truncated: z3.boolean()
1130
+ });
1131
+ var WorkspaceArtifactDetailResponse = z3.object({
935
1132
  artifact: WorkspaceArtifact,
936
- versions: z2.array(WorkspaceArtifactVersion).max(WORKSPACE_ARTIFACT_LIST_MAX),
937
- events: z2.array(WorkspaceArtifactEvent).max(WORKSPACE_ARTIFACT_LIST_MAX),
938
- versionsTruncated: z2.boolean(),
939
- eventsTruncated: z2.boolean()
1133
+ versions: z3.array(WorkspaceArtifactVersion).max(WORKSPACE_ARTIFACT_LIST_MAX),
1134
+ events: z3.array(WorkspaceArtifactEvent).max(WORKSPACE_ARTIFACT_LIST_MAX),
1135
+ versionsTruncated: z3.boolean(),
1136
+ eventsTruncated: z3.boolean()
940
1137
  });
941
- var WorkspaceArtifactHtml = z2.string().min(1).max(WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES).superRefine((value, ctx) => {
1138
+ var WorkspaceArtifactHtml = z3.string().min(1).max(WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES).superRefine((value, ctx) => {
942
1139
  if (encoder3.encode(value).byteLength > WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES) {
943
1140
  ctx.addIssue({
944
1141
  code: "custom",
@@ -946,36 +1143,36 @@ var WorkspaceArtifactHtml = z2.string().min(1).max(WORKSPACE_ARTIFACT_HTML_MAX_U
946
1143
  });
947
1144
  }
948
1145
  });
949
- var CreateWorkspaceArtifactRequest = z2.object({
1146
+ var CreateWorkspaceArtifactRequest = z3.object({
950
1147
  slug: WorkspaceArtifactSlug.optional(),
951
- title: z2.string().trim().min(1).max(WORKSPACE_ARTIFACT_TITLE_MAX_CHARS),
952
- description: z2.string().max(WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS).nullable().optional(),
1148
+ title: z3.string().trim().min(1).max(WORKSPACE_ARTIFACT_TITLE_MAX_CHARS),
1149
+ description: z3.string().max(WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS).nullable().optional(),
953
1150
  html: WorkspaceArtifactHtml,
954
- idempotencyKey: z2.string().trim().min(1).max(200)
1151
+ idempotencyKey: z3.string().trim().min(1).max(200)
955
1152
  });
956
- var PublishWorkspaceArtifactVersionRequest = z2.object({
957
- title: z2.string().trim().min(1).max(WORKSPACE_ARTIFACT_TITLE_MAX_CHARS).optional(),
958
- description: z2.string().max(WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS).nullable().optional(),
1153
+ var PublishWorkspaceArtifactVersionRequest = z3.object({
1154
+ title: z3.string().trim().min(1).max(WORKSPACE_ARTIFACT_TITLE_MAX_CHARS).optional(),
1155
+ description: z3.string().max(WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS).nullable().optional(),
959
1156
  html: WorkspaceArtifactHtml,
960
- expectedCurrentVersionId: z2.string().uuid(),
961
- idempotencyKey: z2.string().trim().min(1).max(200)
1157
+ expectedCurrentVersionId: z3.string().uuid(),
1158
+ idempotencyKey: z3.string().trim().min(1).max(200)
962
1159
  });
963
- var RollbackWorkspaceArtifactRequest = z2.object({
964
- versionId: z2.string().uuid(),
965
- expectedCurrentVersionId: z2.string().uuid(),
966
- reason: z2.string().trim().min(1).max(4096),
967
- idempotencyKey: z2.string().trim().min(1).max(200)
1160
+ var RollbackWorkspaceArtifactRequest = z3.object({
1161
+ versionId: z3.string().uuid(),
1162
+ expectedCurrentVersionId: z3.string().uuid(),
1163
+ reason: z3.string().trim().min(1).max(4096),
1164
+ idempotencyKey: z3.string().trim().min(1).max(200)
968
1165
  });
969
- var WorkspaceArtifactMutationResponse = z2.object({
1166
+ var WorkspaceArtifactMutationResponse = z3.object({
970
1167
  artifact: WorkspaceArtifact,
971
1168
  version: WorkspaceArtifactVersion,
972
1169
  event: WorkspaceArtifactEvent,
973
- replayed: z2.boolean()
1170
+ replayed: z3.boolean()
974
1171
  });
975
- var WorkspaceArtifactContentResponse = z2.object({
976
- artifactId: z2.string().uuid(),
977
- versionId: z2.string().uuid(),
978
- contentType: z2.literal("text/html"),
1172
+ var WorkspaceArtifactContentResponse = z3.object({
1173
+ artifactId: z3.string().uuid(),
1174
+ versionId: z3.string().uuid(),
1175
+ contentType: z3.literal("text/html"),
979
1176
  contentSha256: sha256,
980
1177
  html: WorkspaceArtifactHtml
981
1178
  });
@@ -2215,160 +2412,6 @@ function stripMatchingQuotes(value) {
2215
2412
  return value;
2216
2413
  }
2217
2414
 
2218
- // src/workspace-instruction-policies.ts
2219
- import { z as z3 } from "zod";
2220
- var WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS = 262144;
2221
- var WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS = 4096;
2222
- var WORKSPACE_INSTRUCTION_POLICY_ROLE_KEY_MAX_CHARS = 64;
2223
- var WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS = 512;
2224
- var WorkspaceInstructionPolicyKind = z3.enum(["charter", "policy"]);
2225
- var WorkspaceInstructionPolicyScope = z3.enum(["global", "role"]);
2226
- var WorkspaceInstructionPolicyProvenanceSource = z3.enum([
2227
- "human",
2228
- "onboarding",
2229
- "knowledge_proposal",
2230
- "legacy_import"
2231
- ]);
2232
- var WorkspaceInstructionPolicyDraftProvenanceSource = z3.enum([
2233
- "human",
2234
- "onboarding",
2235
- "knowledge_proposal"
2236
- ]);
2237
- var WorkspaceInstructionPolicyActivationType = z3.enum(["activate", "rollback"]);
2238
- var WorkspaceInstructionPolicyRoleKey = z3.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_ROLE_KEY_MAX_CHARS).regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/);
2239
- function normalizeWorkspaceInstructionPolicyRoleKey(value) {
2240
- return value.normalize("NFKC").trim().toLowerCase().replace(/\s+/gu, "-").replace(/-+/g, "-");
2241
- }
2242
- var RequestRoleKey = z3.string().transform(normalizeWorkspaceInstructionPolicyRoleKey).pipe(WorkspaceInstructionPolicyRoleKey);
2243
- var targetShape = {
2244
- kind: WorkspaceInstructionPolicyKind,
2245
- scope: WorkspaceInstructionPolicyScope,
2246
- roleKey: WorkspaceInstructionPolicyRoleKey.nullable()
2247
- };
2248
- function validateTarget(value, context) {
2249
- if (value.kind === "charter" && (value.scope !== "global" || value.roleKey !== null)) {
2250
- context.addIssue({
2251
- code: "custom",
2252
- path: ["scope"],
2253
- message: "a charter must use global scope with no role key"
2254
- });
2255
- }
2256
- if (value.scope === "global" && value.roleKey !== null) {
2257
- context.addIssue({
2258
- code: "custom",
2259
- path: ["roleKey"],
2260
- message: "a global instruction policy must not have a role key"
2261
- });
2262
- }
2263
- if (value.scope === "role" && (value.kind !== "policy" || value.roleKey === null)) {
2264
- context.addIssue({
2265
- code: "custom",
2266
- path: ["roleKey"],
2267
- message: "role scope requires a policy and a normalized role key"
2268
- });
2269
- }
2270
- }
2271
- var WorkspaceInstructionPolicyTarget = z3.object(targetShape).superRefine(validateTarget);
2272
- var WorkspaceInstructionPolicyProvenance = z3.object({
2273
- source: WorkspaceInstructionPolicyProvenanceSource,
2274
- sourceId: z3.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS).nullable()
2275
- });
2276
- var revisionIdentityShape = {
2277
- id: z3.string().uuid(),
2278
- revision: z3.number().int().positive(),
2279
- contentHash: z3.string().regex(/^[0-9a-f]{64}$/)
2280
- };
2281
- var WorkspaceInstructionPolicyRevisionIdentity = z3.object(revisionIdentityShape);
2282
- var WorkspaceInstructionPolicyRevision = z3.object({
2283
- ...revisionIdentityShape,
2284
- accountId: z3.string().uuid(),
2285
- workspaceId: z3.string().uuid(),
2286
- ...targetShape,
2287
- content: z3.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS),
2288
- provenance: WorkspaceInstructionPolicyProvenance,
2289
- supersedesRevisionId: z3.string().uuid().nullable(),
2290
- createdBySubjectId: z3.string().min(1),
2291
- createdAt: z3.string().datetime()
2292
- });
2293
- var WorkspaceInstructionPolicyHead = z3.object({
2294
- workspaceId: z3.string().uuid(),
2295
- ...targetShape,
2296
- revisionId: z3.string().uuid(),
2297
- revision: z3.number().int().positive(),
2298
- contentHash: z3.string().regex(/^[0-9a-f]{64}$/),
2299
- activationVersion: z3.number().int().positive(),
2300
- activatedAt: z3.string().datetime()
2301
- });
2302
- var WorkspaceInstructionPolicyActivationEvent = z3.object({
2303
- id: z3.string().uuid(),
2304
- accountId: z3.string().uuid(),
2305
- workspaceId: z3.string().uuid(),
2306
- ...targetShape,
2307
- type: WorkspaceInstructionPolicyActivationType,
2308
- activationVersion: z3.number().int().positive(),
2309
- oldRevision: WorkspaceInstructionPolicyRevisionIdentity.nullable(),
2310
- newRevision: WorkspaceInstructionPolicyRevisionIdentity,
2311
- actorSubjectId: z3.string().min(1),
2312
- reason: z3.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS),
2313
- createdAt: z3.string().datetime()
2314
- });
2315
- var CreateWorkspaceInstructionPolicyDraftRequest = z3.object({
2316
- kind: WorkspaceInstructionPolicyKind,
2317
- scope: WorkspaceInstructionPolicyScope,
2318
- roleKey: RequestRoleKey.nullable().default(null),
2319
- content: z3.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS).refine((value) => value.trim().length > 0, "instruction policy content must not be blank"),
2320
- provenanceSource: WorkspaceInstructionPolicyDraftProvenanceSource.default("human"),
2321
- provenanceSourceId: z3.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS).nullable().default(null),
2322
- supersedesRevisionId: z3.string().uuid().nullable().default(null)
2323
- }).superRefine(validateTarget);
2324
- var ImportLegacyWorkspaceInstructionPolicyDraftRequest = z3.object({
2325
- supersedesRevisionId: z3.string().uuid().nullable().default(null)
2326
- }).strict();
2327
- var WorkspaceInstructionPolicyListQuery = z3.object({
2328
- kind: WorkspaceInstructionPolicyKind.optional(),
2329
- scope: WorkspaceInstructionPolicyScope.optional(),
2330
- roleKey: RequestRoleKey.nullable().optional(),
2331
- afterRevision: z3.coerce.number().int().positive().optional(),
2332
- limit: z3.coerce.number().int().min(1).max(100).default(50)
2333
- });
2334
- var WorkspaceInstructionPolicyListResponse = z3.object({
2335
- revisions: z3.array(WorkspaceInstructionPolicyRevision),
2336
- activeHeads: z3.array(WorkspaceInstructionPolicyHead),
2337
- activationEvents: z3.array(WorkspaceInstructionPolicyActivationEvent),
2338
- nextAfterRevision: z3.number().int().positive().nullable()
2339
- });
2340
- var WorkspaceInstructionPolicyDiffRequest = z3.object({
2341
- fromRevisionId: z3.string().uuid(),
2342
- toRevisionId: z3.string().uuid()
2343
- }).refine((value) => value.fromRevisionId !== value.toRevisionId, {
2344
- message: "diff revisions must be different",
2345
- path: ["toRevisionId"]
2346
- });
2347
- var WorkspaceInstructionPolicyDiffResponse = z3.object({
2348
- from: WorkspaceInstructionPolicyRevision,
2349
- to: WorkspaceInstructionPolicyRevision,
2350
- format: z3.literal("unified"),
2351
- diff: z3.string()
2352
- });
2353
- var ActivateWorkspaceInstructionPolicyRequest = z3.object({
2354
- expectedCurrentRevisionId: z3.string().uuid().nullable(),
2355
- reason: z3.string().trim().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS)
2356
- });
2357
- var RollbackWorkspaceInstructionPolicyRequest = z3.object({
2358
- targetRevisionId: z3.string().uuid(),
2359
- expectedCurrentRevisionId: z3.string().uuid(),
2360
- reason: z3.string().trim().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS)
2361
- });
2362
- var WorkspaceInstructionPolicyActivationResponse = z3.object({
2363
- head: WorkspaceInstructionPolicyHead,
2364
- event: WorkspaceInstructionPolicyActivationEvent
2365
- });
2366
- var WorkspaceInstructionPolicyConflictResponse = z3.object({
2367
- code: z3.literal("WORKSPACE_INSTRUCTION_POLICY_CONFLICT"),
2368
- message: z3.string(),
2369
- currentHead: WorkspaceInstructionPolicyHead.nullable()
2370
- });
2371
-
2372
2415
  // src/workspace-state.ts
2373
2416
  import { z as z4 } from "zod";
2374
2417
  var WORKSPACE_STATE_MAX_ACTIVE_POLICY_HEADS = 32;
@@ -3156,7 +3199,7 @@ var CAPABILITY_DESCRIPTORS = {
3156
3199
  supportsRunAs: false
3157
3200
  }
3158
3201
  };
3159
- var ReasoningEffort = z7.enum(["none", "minimal", "low", "medium", "high", "xhigh"]);
3202
+ var ReasoningEffort = z7.enum(["none", "minimal", "low", "medium", "high", "xhigh", "max"]);
3160
3203
  var LatencyMode = z7.enum(["standard", "priority", "fast"]);
3161
3204
  var ErrorCode = z7.enum([
3162
3205
  "unauthenticated",
@@ -3684,6 +3727,33 @@ var VOICE_INPUT_ACCEPTED_MIME_TYPES = [
3684
3727
  "audio/m4a"
3685
3728
  ];
3686
3729
  var CodexCompactionMode = z7.enum(["remote_v2", "portable"]);
3730
+ var SlackReactionEmojiName = z7.string().trim().min(1).max(64).regex(/^[a-z0-9_+-]+$/, "use the exact Slack emoji name without surrounding colons");
3731
+ var WorkspaceSlackReactionChannelPolicy = z7.discriminatedUnion("mode", [
3732
+ z7.object({ mode: z7.literal("bot_member") }).strict(),
3733
+ z7.object({
3734
+ mode: z7.literal("allowlist"),
3735
+ channelIds: z7.array(z7.string().trim().min(1).max(64)).max(100)
3736
+ }).strict()
3737
+ ]);
3738
+ var WorkspaceSlackReactionSummonSettings = z7.object({
3739
+ enabled: z7.boolean(),
3740
+ emoji: SlackReactionEmojiName,
3741
+ channelPolicy: WorkspaceSlackReactionChannelPolicy
3742
+ }).strict();
3743
+ var SlackReactionChannel = z7.object({
3744
+ id: z7.string().min(1).max(64),
3745
+ name: z7.string().min(1).max(256).nullable(),
3746
+ isPrivate: z7.boolean()
3747
+ });
3748
+ var SlackReactionChannelListResponse = z7.object({
3749
+ channels: z7.array(SlackReactionChannel).max(200),
3750
+ nextCursor: z7.string().max(1024).nullable()
3751
+ });
3752
+ var DEFAULT_WORKSPACE_SLACK_REACTION_SUMMON_SETTINGS = {
3753
+ enabled: false,
3754
+ emoji: "genie",
3755
+ channelPolicy: { mode: "bot_member" }
3756
+ };
3687
3757
  var WorkspaceSettingsSchema = z7.object({
3688
3758
  memoryEnabled: z7.boolean().optional(),
3689
3759
  /** Preferred workspace voice-input toggle. */
@@ -3698,7 +3768,10 @@ var WorkspaceSettingsSchema = z7.object({
3698
3768
  maxNestedAgentDepth: NestedAgentDepthValue.nullable().optional(),
3699
3769
  // Default compaction strategy for NEW Codex sessions created in this
3700
3770
  // workspace. Absent ⇒ remote_v2. Non-Codex sessions always freeze portable.
3701
- codexCompactionDefault: CodexCompactionMode.optional()
3771
+ codexCompactionDefault: CodexCompactionMode.optional(),
3772
+ // Optional Slack reaction invocation. Absent/invalid fails closed to the
3773
+ // disabled default via resolveWorkspaceSlackReactionSummonSettings.
3774
+ slackReactionSummon: WorkspaceSlackReactionSummonSettings.optional()
3702
3775
  }).passthrough();
3703
3776
  function resolveWorkspaceMemoryEnabled(settings) {
3704
3777
  const parsed = WorkspaceSettingsSchema.safeParse(settings ?? {});
@@ -3716,13 +3789,35 @@ function resolveWorkspaceVoiceInputEnabled(settings) {
3716
3789
  if (parsed.data.transcription) return parsed.data.transcription.enabled;
3717
3790
  return null;
3718
3791
  }
3792
+ function resolveWorkspaceSlackReactionSummonSettings(settings) {
3793
+ const parsed = WorkspaceSettingsSchema.safeParse(settings ?? {});
3794
+ const configured = parsed.success ? parsed.data.slackReactionSummon : void 0;
3795
+ if (!configured) {
3796
+ return {
3797
+ enabled: DEFAULT_WORKSPACE_SLACK_REACTION_SUMMON_SETTINGS.enabled,
3798
+ emoji: DEFAULT_WORKSPACE_SLACK_REACTION_SUMMON_SETTINGS.emoji,
3799
+ channelPolicy: { ...DEFAULT_WORKSPACE_SLACK_REACTION_SUMMON_SETTINGS.channelPolicy }
3800
+ };
3801
+ }
3802
+ return configured.channelPolicy.mode === "allowlist" ? {
3803
+ ...configured,
3804
+ channelPolicy: {
3805
+ mode: "allowlist",
3806
+ channelIds: [...new Set(configured.channelPolicy.channelIds)]
3807
+ }
3808
+ } : { ...configured, channelPolicy: { mode: "bot_member" } };
3809
+ }
3810
+ function workspaceSlackReactionChannelAllowed(settings, channelId) {
3811
+ return settings.channelPolicy.mode === "bot_member" || settings.channelPolicy.channelIds.includes(channelId);
3812
+ }
3719
3813
  var UpdateWorkspaceSettingsRequest = z7.object({
3720
3814
  memoryEnabled: z7.boolean().optional(),
3721
3815
  voiceInput: WorkspaceVoiceInputSettings.optional(),
3722
3816
  /** @deprecated Prefer `voiceInput`. Kept for one compatibility release. */
3723
3817
  transcription: WorkspaceTranscriptionPolicy.optional(),
3724
3818
  maxNestedAgentDepth: NestedAgentDepthValue.nullable().optional(),
3725
- codexCompactionDefault: CodexCompactionMode.optional()
3819
+ codexCompactionDefault: CodexCompactionMode.optional(),
3820
+ slackReactionSummon: WorkspaceSlackReactionSummonSettings.optional()
3726
3821
  }).passthrough();
3727
3822
  var SetWorkspaceDefaultRigRequest = z7.object({
3728
3823
  rigId: z7.string().uuid().nullable()
@@ -5042,7 +5137,7 @@ function mergeResourceRefs(existing, additions, options = {}) {
5042
5137
  }
5043
5138
  function reasoningEffortForMetadata(metadata, fallback) {
5044
5139
  const value = metadata.reasoningEffort;
5045
- return value === "none" || value === "minimal" || value === "low" || value === "medium" || value === "high" || value === "xhigh" ? value : fallback;
5140
+ return value === "none" || value === "minimal" || value === "low" || value === "medium" || value === "high" || value === "xhigh" || value === "max" ? value : fallback;
5046
5141
  }
5047
5142
  function latencyModeForMetadata(metadata, fallback = "standard") {
5048
5143
  const value = metadata.latencyMode;
@@ -5217,6 +5312,191 @@ var SessionAuthorizationSurface = z7.enum([
5217
5312
  "first_party_mcp",
5218
5313
  "toolspace"
5219
5314
  ]);
5315
+ var CodexRealtimeWebrtcVersion = z7.literal("v3");
5316
+ var CodexRealtimeVoice = z7.enum([
5317
+ "juniper",
5318
+ "maple",
5319
+ "spruce",
5320
+ "ember",
5321
+ "vale",
5322
+ "breeze",
5323
+ "arbor",
5324
+ "sol",
5325
+ "cove"
5326
+ ]);
5327
+ var SessionRealtimeOwnerProof = z7.object({
5328
+ browserInstanceId: z7.string().min(1).max(256),
5329
+ ownerKey: z7.string().min(32).max(1024)
5330
+ });
5331
+ var CodexRealtimeWebrtcRequest = SessionRealtimeOwnerProof.extend({
5332
+ realtimeId: z7.string().uuid(),
5333
+ operationId: z7.string().uuid(),
5334
+ expectedVersion: z7.number().int().positive(),
5335
+ expectedConnectionEpoch: z7.number().int().positive(),
5336
+ rotate: z7.boolean(),
5337
+ browserActivation: z7.literal("required").optional(),
5338
+ sdp: z7.string().min(1).max(1024 * 1024),
5339
+ version: CodexRealtimeWebrtcVersion,
5340
+ instructions: z7.string().max(32768).optional(),
5341
+ voice: CodexRealtimeVoice.optional()
5342
+ }).strict();
5343
+ var CodexRealtimeWebrtcResponse = z7.object({
5344
+ sdp: z7.string().min(1).max(1024 * 1024),
5345
+ version: CodexRealtimeWebrtcVersion,
5346
+ model: z7.literal("gpt-live-1-boulder-alpha"),
5347
+ connectionId: z7.string().uuid(),
5348
+ connectionEpoch: z7.number().int().positive(),
5349
+ startupFenceSequence: z7.number().int().nonnegative(),
5350
+ modeVersion: z7.number().int().positive(),
5351
+ replay: z7.boolean()
5352
+ }).strict();
5353
+ var GatewayRealtimeConnectRequest = SessionRealtimeOwnerProof.extend({
5354
+ realtimeId: z7.string().uuid(),
5355
+ operationId: z7.string().uuid(),
5356
+ expectedVersion: z7.number().int().positive(),
5357
+ expectedConnectionEpoch: z7.number().int().positive(),
5358
+ rotate: z7.boolean()
5359
+ }).strict();
5360
+ var GatewayRealtimeInitialItem = z7.object({
5361
+ role: z7.enum(["user", "developer", "assistant"]),
5362
+ text: z7.string().min(1).max(131072)
5363
+ });
5364
+ var GatewayRealtimeConnectResponse = z7.object({
5365
+ token: z7.string().min(1).max(16384),
5366
+ url: z7.string().url(),
5367
+ upstreamModelId: z7.string().min(1).max(256),
5368
+ expiresAt: z7.number().int().positive().nullable(),
5369
+ connectionId: z7.string().uuid(),
5370
+ connectionEpoch: z7.number().int().positive(),
5371
+ startupFenceSequence: z7.number().int().nonnegative(),
5372
+ modeVersion: z7.number().int().positive(),
5373
+ initialItems: z7.array(GatewayRealtimeInitialItem).max(128),
5374
+ instructions: z7.string().min(1).max(32768),
5375
+ replay: z7.literal(false)
5376
+ }).strict();
5377
+ var ActivateCodexRealtimeConnectionRequest = SessionRealtimeOwnerProof.extend({
5378
+ operationId: z7.string().uuid(),
5379
+ connectionEpoch: z7.number().int().positive(),
5380
+ expectedVersion: z7.number().int().positive(),
5381
+ expectedConnectionEpoch: z7.number().int().positive()
5382
+ }).strict();
5383
+ var SessionRealtimeLedgerDirection = z7.enum(["provider_in", "provider_out"]);
5384
+ var SessionRealtimeLedgerKind = z7.enum([
5385
+ "user_transcript",
5386
+ "assistant_transcript",
5387
+ "delegation_call",
5388
+ "delegation_progress",
5389
+ "delegation_result",
5390
+ "interruption",
5391
+ "session_update",
5392
+ "error"
5393
+ ]);
5394
+ var SessionRealtimeLedgerEntry = z7.object({
5395
+ id: z7.string().uuid(),
5396
+ realtimeId: z7.string().uuid(),
5397
+ operationId: z7.string().uuid(),
5398
+ connectionEpoch: z7.number().int().positive(),
5399
+ sequence: z7.number().int().positive(),
5400
+ direction: SessionRealtimeLedgerDirection,
5401
+ kind: SessionRealtimeLedgerKind,
5402
+ role: z7.enum(["user", "assistant"]).nullable(),
5403
+ providerEventId: z7.string().nullable(),
5404
+ delegationItemId: z7.string().nullable(),
5405
+ sourceUpdateId: z7.string().uuid().nullable(),
5406
+ historyItemId: z7.string().uuid().nullable(),
5407
+ turnId: z7.string().uuid().nullable(),
5408
+ text: z7.string().nullable(),
5409
+ payload: z7.record(z7.string(), z7.unknown()),
5410
+ clientAckedAt: z7.string().datetime().nullable(),
5411
+ providerAckedAt: z7.string().datetime().nullable(),
5412
+ createdAt: z7.string().datetime(),
5413
+ updatedAt: z7.string().datetime()
5414
+ }).strict();
5415
+ var SessionRealtimeInboundEntry = z7.object({
5416
+ operationId: z7.string().uuid(),
5417
+ kind: z7.enum([
5418
+ "user_transcript",
5419
+ "assistant_transcript",
5420
+ "delegation_call",
5421
+ "interruption",
5422
+ "error"
5423
+ ]),
5424
+ role: z7.enum(["user", "assistant"]).nullable().optional(),
5425
+ providerEventId: z7.string().max(1024).nullable().optional(),
5426
+ delegationItemId: z7.string().max(1024).nullable().optional(),
5427
+ text: z7.string().max(131072).nullable().optional(),
5428
+ payload: z7.record(z7.string(), z7.unknown()).optional()
5429
+ }).strict();
5430
+ var SyncSessionRealtimeLedgerRequest = SessionRealtimeOwnerProof.extend({
5431
+ expectedVersion: z7.number().int().positive(),
5432
+ connectionId: z7.string().uuid(),
5433
+ connectionEpoch: z7.number().int().positive(),
5434
+ entries: z7.array(SessionRealtimeInboundEntry).max(64).optional(),
5435
+ clientAckThroughSequence: z7.number().int().nonnegative().nullable().optional(),
5436
+ providerAckSequences: z7.array(z7.number().int().positive()).max(100).optional(),
5437
+ providerStarted: z7.object({
5438
+ providerSessionId: z7.string().min(1).max(1024),
5439
+ providerEventId: z7.string().min(1).max(1024).nullable().optional()
5440
+ }).strict().optional()
5441
+ }).strict();
5442
+ var SyncSessionRealtimeLedgerResponse = z7.object({
5443
+ accepted: z7.array(
5444
+ z7.object({ entry: SessionRealtimeLedgerEntry, replay: z7.boolean() }).strict()
5445
+ ),
5446
+ outbound: z7.array(SessionRealtimeLedgerEntry)
5447
+ }).strict();
5448
+ var SessionRealtimeModel = z7.enum([
5449
+ "gpt-live-1-boulder-alpha",
5450
+ "opengeni-gateway/openai/gpt-realtime-2.1",
5451
+ "opengeni-gateway/openai/gpt-realtime-mini",
5452
+ "opengeni-gateway/xai/grok-voice-think-fast-2.0",
5453
+ "workspace-gateway/openai/gpt-realtime-2.1",
5454
+ "workspace-gateway/openai/gpt-realtime-mini",
5455
+ "workspace-gateway/xai/grok-voice-think-fast-2.0"
5456
+ ]);
5457
+ var WorkspaceRealtimeModelCatalogItem = z7.object({
5458
+ id: SessionRealtimeModel,
5459
+ label: z7.string().min(1),
5460
+ provider: z7.enum(["OpenGeni", "Connected Codex", "Your Gateway"]),
5461
+ description: z7.string().min(1),
5462
+ available: z7.boolean(),
5463
+ unavailableReason: z7.string().nullable(),
5464
+ recommended: z7.boolean()
5465
+ });
5466
+ var WorkspaceRealtimeModelCatalogResponse = z7.object({
5467
+ models: z7.array(WorkspaceRealtimeModelCatalogItem)
5468
+ });
5469
+ var SessionRealtimeState = z7.enum(["active", "ended"]);
5470
+ var SessionRealtimeEndReason = z7.enum(["user_stop", "browser_unload", "lease_expired"]);
5471
+ var SessionRealtimeMode = z7.object({
5472
+ id: z7.string().uuid(),
5473
+ sessionId: z7.string().uuid(),
5474
+ operationId: z7.string().uuid(),
5475
+ browserInstanceId: z7.string().min(1).max(256),
5476
+ model: SessionRealtimeModel,
5477
+ state: SessionRealtimeState,
5478
+ version: z7.number().int().positive(),
5479
+ connectionEpoch: z7.number().int().positive(),
5480
+ leaseExpiresAt: z7.string().datetime(),
5481
+ lastHeartbeatAt: z7.string().datetime(),
5482
+ startedAt: z7.string().datetime(),
5483
+ endedAt: z7.string().datetime().nullable(),
5484
+ endReason: SessionRealtimeEndReason.nullable()
5485
+ });
5486
+ var BeginSessionRealtimeRequest = SessionRealtimeOwnerProof.extend({
5487
+ operationId: z7.string().uuid(),
5488
+ model: SessionRealtimeModel
5489
+ });
5490
+ var RenewSessionRealtimeRequest = SessionRealtimeOwnerProof.extend({
5491
+ expectedVersion: z7.number().int().positive()
5492
+ });
5493
+ var EndSessionRealtimeRequest = RenewSessionRealtimeRequest.extend({
5494
+ reason: z7.enum(["user_stop", "browser_unload"])
5495
+ });
5496
+ var SessionRealtimeMutationResponse = z7.object({
5497
+ mode: SessionRealtimeMode,
5498
+ replay: z7.boolean()
5499
+ });
5220
5500
  var SessionAuthorizationOperation = z7.enum([
5221
5501
  "session.read",
5222
5502
  "session.events.read",
@@ -5243,6 +5523,8 @@ var SessionAuthorizationOperation = z7.enum([
5243
5523
  "session.toolspace.call",
5244
5524
  "session.pin.write",
5245
5525
  "session.codex_account.write",
5526
+ "session.realtime.start",
5527
+ "session.realtime.control",
5246
5528
  "session.context.write",
5247
5529
  "session.approval.write",
5248
5530
  "session.human_input.read",
@@ -5474,7 +5756,7 @@ var WorkspaceControlReason = z7.string().min(1).refine((value) => !value.include
5474
5756
  `reason must not exceed ${WORKSPACE_CONTROL_REASON_MAX_BYTES} UTF-8 bytes`
5475
5757
  );
5476
5758
  var SessionControlRequest = z7.object({
5477
- action: z7.enum(["pause", "resume"]),
5759
+ action: z7.enum(["pause", "resume", "cancel"]),
5478
5760
  reason: WorkspaceControlReason.optional(),
5479
5761
  clientEventId: SessionOperationKey,
5480
5762
  expectedControlEtag: z7.string().min(1).optional()
@@ -5660,7 +5942,7 @@ var SessionSystemUpdatePayload = z7.discriminatedUnion("type", [
5660
5942
  z7.object({
5661
5943
  type: z7.literal("child_terminal_result"),
5662
5944
  childSessionId: z7.string().uuid(),
5663
- status: z7.enum(["idle", "failed"])
5945
+ status: z7.enum(["idle", "failed", "cancelled"])
5664
5946
  }).passthrough()
5665
5947
  ]);
5666
5948
  var SessionSystemUpdateState = z7.enum([
@@ -6604,6 +6886,10 @@ var Session = z7.object({
6604
6886
  // metadata (exposed like title/goal), never a secret and never a timeline event.
6605
6887
  // null when the session carried none.
6606
6888
  instructions: z7.string().nullable(),
6889
+ // Immutable prompt-policy role binding. This is separate from human
6890
+ // workspace membership roles and from memory selectors. Null keeps the
6891
+ // compatibility fallback to a normalized metadata.role value.
6892
+ policyRole: WorkspaceInstructionPolicyRoleKeyInput.nullable().default(null),
6607
6893
  resources: z7.array(ResourceRef),
6608
6894
  skills: SessionSkills.default([]),
6609
6895
  tools: z7.array(ToolRef),
@@ -6744,6 +7030,8 @@ var SessionEventType = z7.enum([
6744
7030
  // crossing NATS, SSE, REST, or browser boundaries.
6745
7031
  "session.event.envelope_omitted",
6746
7032
  "session.status.changed",
7033
+ "session.realtime.started",
7034
+ "session.realtime.ended",
6747
7035
  "session.requiresAction",
6748
7036
  "session.humanInput.requested",
6749
7037
  "session.context.compaction.requested",
@@ -7830,7 +8118,12 @@ function compactFailure(payload, eventType) {
7830
8118
  const code = compactResultStringField(payload.code);
7831
8119
  const recovery = compactResultStringField(payload.recovery);
7832
8120
  const retryable = typeof payload.retryable === "boolean" ? payload.retryable : null;
7833
- const value = { error: error.value, code: code.value, retryable, recovery: recovery.value };
8121
+ const value = {
8122
+ error: error.value,
8123
+ code: code.value,
8124
+ retryable,
8125
+ recovery: recovery.value
8126
+ };
7834
8127
  const originalBytes = [error, code, recovery].map((field) => field.originalBytes ?? 0).reduce((sum, bytes) => sum + bytes, 0);
7835
8128
  return {
7836
8129
  value,
@@ -8268,7 +8561,9 @@ var SessionControlResponse = z7.object({
8268
8561
  receipt: SessionCommandReceipt,
8269
8562
  effectiveControl: EffectiveSessionControl,
8270
8563
  interruptionCount: z7.number().int().nonnegative(),
8271
- wakeCount: z7.number().int().nonnegative()
8564
+ wakeCount: z7.number().int().nonnegative(),
8565
+ cancelledSessionCount: z7.number().int().nonnegative(),
8566
+ cancelledTurnCount: z7.number().int().nonnegative()
8272
8567
  });
8273
8568
  var CreateSessionRequest = withVariableSetIdAlias({
8274
8569
  /**
@@ -8278,7 +8573,11 @@ var CreateSessionRequest = withVariableSetIdAlias({
8278
8573
  * identity or authorization from the UUID.
8279
8574
  */
8280
8575
  requestedSessionId: z7.string().uuid().optional(),
8281
- initialMessage: z7.string().min(1),
8576
+ initialMessage: z7.string().min(1).optional(),
8577
+ // Creates the durable session shell without fabricating a user message or
8578
+ // starting an underlying agent turn. Realtime can then become the first
8579
+ // interaction and use the ordinary Send/Steer path when it delegates.
8580
+ startMode: z7.literal("realtime").optional(),
8282
8581
  // System-level host context for the initial turn only. Unlike `instructions`,
8283
8582
  // this does not persist into later turns and is never emitted as a user event.
8284
8583
  turnInstructions: z7.string().trim().min(1).max(32768).optional(),
@@ -8291,6 +8590,11 @@ var CreateSessionRequest = withVariableSetIdAlias({
8291
8590
  // matches the codebase's largest free-form string convention (workspace
8292
8591
  // variable set variable values). Absent ⇒ byte-identical to today.
8293
8592
  instructions: z7.string().trim().min(1).max(32768).optional(),
8593
+ // Immutable prompt-policy role binding for matching one activated role
8594
+ // policy. This never derives from or grants a human workspace membership
8595
+ // role. Existing callers may continue to use normalized metadata.role as a
8596
+ // compatibility fallback by omitting this field.
8597
+ policyRole: WorkspaceInstructionPolicyRoleKeyInput.optional(),
8294
8598
  // For an agent-created child, omission inherits the trusted immediate
8295
8599
  // parent's repository/file context. An explicit array, including [], is
8296
8600
  // authoritative. Top-level omission remains []. Presence is resolved from
@@ -8324,10 +8628,10 @@ var CreateSessionRequest = withVariableSetIdAlias({
8324
8628
  variableSetId: z7.string().uuid().optional(),
8325
8629
  environmentId: z7.string().uuid().optional(),
8326
8630
  // The rig to bind this session to (M3). Its ACTIVE version is resolved and
8327
- // FROZEN onto the session at create. Omitted ⇒ the workspace's default rig
8328
- // (workspaces.default_rig_id) when set, else a rig-less session (today's
8329
- // behavior). An id that does not name a rig in the workspace is a 422.
8330
- rigId: z7.string().uuid().optional(),
8631
+ // FROZEN onto the session at create. Omitted ⇒ inherit the workspace default;
8632
+ // null explicitly create a rig-less session; UUID ⇒ bind that exact rig.
8633
+ // An id that does not name a rig in the workspace is a 422.
8634
+ rigId: z7.string().uuid().nullable().optional(),
8331
8635
  goal: GoalSpec.optional(),
8332
8636
  clientEventId: SessionOperationKey.optional(),
8333
8637
  // Workspace-scoped CREATE idempotency key: collapses concurrent/retried
@@ -8382,6 +8686,21 @@ var CreateSessionRequest = withVariableSetIdAlias({
8382
8686
  // request 422s at create (instead of the first turn dying on the SDK's
8383
8687
  // manifest-env guard).
8384
8688
  sandbox: z7.union([z7.literal("shared"), z7.literal("new"), z7.object({ groupId: z7.string().uuid() })]).optional()
8689
+ }).superRefine((value, context) => {
8690
+ if (value.startMode !== "realtime" && value.initialMessage === void 0) {
8691
+ context.addIssue({
8692
+ code: z7.ZodIssueCode.custom,
8693
+ path: ["initialMessage"],
8694
+ message: "initialMessage is required unless startMode is realtime"
8695
+ });
8696
+ }
8697
+ if (value.startMode === "realtime" && value.initialMessage !== void 0) {
8698
+ context.addIssue({
8699
+ code: z7.ZodIssueCode.custom,
8700
+ path: ["initialMessage"],
8701
+ message: "initialMessage must be omitted when startMode is realtime"
8702
+ });
8703
+ }
8385
8704
  });
8386
8705
  var HumanInputQuestionKind = z7.enum(["text", "single_select", "multi_select"]);
8387
8706
  var HumanInputOption = z7.object({
@@ -9014,9 +9333,7 @@ var MachineMetricsSeriesResponse = z7.object({
9014
9333
  function defineModelContractSchema(factory) {
9015
9334
  return factory();
9016
9335
  }
9017
- var ModelCapabilitySupportV1 = /* @__PURE__ */ defineModelContractSchema(
9018
- () => z7.enum(["supported", "unsupported", "unknown"])
9019
- );
9336
+ var ModelCapabilitySupportV1 = /* @__PURE__ */ defineModelContractSchema(() => z7.enum(["supported", "unsupported", "unknown"]));
9020
9337
  var ModelCapabilityStateV1 = /* @__PURE__ */ defineModelContractSchema(
9021
9338
  () => z7.object({
9022
9339
  upstream: ModelCapabilitySupportV1,
@@ -9059,9 +9376,18 @@ var ModelCapabilitiesV1 = /* @__PURE__ */ defineModelContractSchema(
9059
9376
  );
9060
9377
  var ModelCredentialSourceV1 = /* @__PURE__ */ defineModelContractSchema(
9061
9378
  () => z7.union([
9062
- z7.object({ kind: z7.literal("deployment"), mechanism: z7.enum(["api_key", "azure_ad_bearer"]) }).strict(),
9063
- z7.object({ kind: z7.literal("connected_subscription"), provider: z7.literal("codex") }).strict(),
9064
- z7.object({ kind: z7.literal("workspace_connection"), mechanism: z7.literal("api_key") }).strict()
9379
+ z7.object({
9380
+ kind: z7.literal("deployment"),
9381
+ mechanism: z7.enum(["api_key", "azure_ad_bearer"])
9382
+ }).strict(),
9383
+ z7.object({
9384
+ kind: z7.literal("connected_subscription"),
9385
+ provider: z7.literal("codex")
9386
+ }).strict(),
9387
+ z7.object({
9388
+ kind: z7.literal("workspace_connection"),
9389
+ mechanism: z7.literal("api_key")
9390
+ }).strict()
9065
9391
  ])
9066
9392
  );
9067
9393
  var ModelBillingAttributionV1 = /* @__PURE__ */ defineModelContractSchema(
@@ -9410,6 +9736,41 @@ export {
9410
9736
  sessionEventMediaPreviewFromDataUrl,
9411
9737
  sessionEventPayloadTruncation,
9412
9738
  boundSessionEventPayload,
9739
+ WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS,
9740
+ WORKSPACE_INSTRUCTION_POLICY_PROMPT_MAX_UTF8_BYTES,
9741
+ WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS,
9742
+ WORKSPACE_INSTRUCTION_POLICY_ROLE_KEY_MAX_CHARS,
9743
+ WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS,
9744
+ WorkspaceInstructionPolicyKind,
9745
+ WorkspaceInstructionPolicyScope,
9746
+ WorkspaceInstructionPolicyProvenanceSource,
9747
+ WorkspaceInstructionPolicyDraftProvenanceSource,
9748
+ WorkspaceInstructionPolicyActivationType,
9749
+ WorkspaceInstructionPolicyRoleKey,
9750
+ normalizeWorkspaceInstructionPolicyRoleKey,
9751
+ WorkspaceInstructionPolicyRoleKeyInput,
9752
+ WorkspaceInstructionPolicyRoleSource,
9753
+ WorkspaceInstructionPolicyTarget,
9754
+ WorkspaceInstructionPolicyProvenance,
9755
+ WorkspaceInstructionPolicyRevisionIdentity,
9756
+ WorkspaceInstructionPolicyRevision,
9757
+ WorkspaceInstructionPolicyHead,
9758
+ WorkspaceInstructionPolicySnapshotProvenance,
9759
+ WorkspaceInstructionPolicySnapshotEntry,
9760
+ WorkspaceInstructionPolicySnapshot,
9761
+ ResolvedWorkspaceInstructionPolicySnapshotEntry,
9762
+ ResolvedWorkspaceInstructionPolicySnapshot,
9763
+ WorkspaceInstructionPolicyActivationEvent,
9764
+ CreateWorkspaceInstructionPolicyDraftRequest,
9765
+ ImportLegacyWorkspaceInstructionPolicyDraftRequest,
9766
+ WorkspaceInstructionPolicyListQuery,
9767
+ WorkspaceInstructionPolicyListResponse,
9768
+ WorkspaceInstructionPolicyDiffRequest,
9769
+ WorkspaceInstructionPolicyDiffResponse,
9770
+ ActivateWorkspaceInstructionPolicyRequest,
9771
+ RollbackWorkspaceInstructionPolicyRequest,
9772
+ WorkspaceInstructionPolicyActivationResponse,
9773
+ WorkspaceInstructionPolicyConflictResponse,
9413
9774
  WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES,
9414
9775
  WORKSPACE_ARTIFACT_TITLE_MAX_CHARS,
9415
9776
  WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS,
@@ -9458,33 +9819,6 @@ export {
9458
9819
  createSecretRedactor,
9459
9820
  redactSerializedJson,
9460
9821
  identityRedactor,
9461
- WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS,
9462
- WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS,
9463
- WORKSPACE_INSTRUCTION_POLICY_ROLE_KEY_MAX_CHARS,
9464
- WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS,
9465
- WorkspaceInstructionPolicyKind,
9466
- WorkspaceInstructionPolicyScope,
9467
- WorkspaceInstructionPolicyProvenanceSource,
9468
- WorkspaceInstructionPolicyDraftProvenanceSource,
9469
- WorkspaceInstructionPolicyActivationType,
9470
- WorkspaceInstructionPolicyRoleKey,
9471
- normalizeWorkspaceInstructionPolicyRoleKey,
9472
- WorkspaceInstructionPolicyTarget,
9473
- WorkspaceInstructionPolicyProvenance,
9474
- WorkspaceInstructionPolicyRevisionIdentity,
9475
- WorkspaceInstructionPolicyRevision,
9476
- WorkspaceInstructionPolicyHead,
9477
- WorkspaceInstructionPolicyActivationEvent,
9478
- CreateWorkspaceInstructionPolicyDraftRequest,
9479
- ImportLegacyWorkspaceInstructionPolicyDraftRequest,
9480
- WorkspaceInstructionPolicyListQuery,
9481
- WorkspaceInstructionPolicyListResponse,
9482
- WorkspaceInstructionPolicyDiffRequest,
9483
- WorkspaceInstructionPolicyDiffResponse,
9484
- ActivateWorkspaceInstructionPolicyRequest,
9485
- RollbackWorkspaceInstructionPolicyRequest,
9486
- WorkspaceInstructionPolicyActivationResponse,
9487
- WorkspaceInstructionPolicyConflictResponse,
9488
9822
  WORKSPACE_STATE_MAX_ACTIVE_POLICY_HEADS,
9489
9823
  WORKSPACE_STATE_MAX_BASES,
9490
9824
  WORKSPACE_STATE_MAX_TOPICS,
@@ -9602,10 +9936,18 @@ export {
9602
9936
  VOICE_INPUT_MAX_SIZE_BYTES,
9603
9937
  VOICE_INPUT_ACCEPTED_MIME_TYPES,
9604
9938
  CodexCompactionMode,
9939
+ SlackReactionEmojiName,
9940
+ WorkspaceSlackReactionChannelPolicy,
9941
+ WorkspaceSlackReactionSummonSettings,
9942
+ SlackReactionChannel,
9943
+ SlackReactionChannelListResponse,
9944
+ DEFAULT_WORKSPACE_SLACK_REACTION_SUMMON_SETTINGS,
9605
9945
  WorkspaceSettingsSchema,
9606
9946
  resolveWorkspaceMemoryEnabled,
9607
9947
  resolveWorkspaceCodexCompactionDefault,
9608
9948
  resolveWorkspaceVoiceInputEnabled,
9949
+ resolveWorkspaceSlackReactionSummonSettings,
9950
+ workspaceSlackReactionChannelAllowed,
9609
9951
  UpdateWorkspaceSettingsRequest,
9610
9952
  SetWorkspaceDefaultRigRequest,
9611
9953
  UpdateWorkspaceModelPolicyRequest,
@@ -9766,6 +10108,30 @@ export {
9766
10108
  CompactSessionContextResult,
9767
10109
  TurnInitiator,
9768
10110
  SessionAuthorizationSurface,
10111
+ CodexRealtimeWebrtcVersion,
10112
+ CodexRealtimeVoice,
10113
+ CodexRealtimeWebrtcRequest,
10114
+ CodexRealtimeWebrtcResponse,
10115
+ GatewayRealtimeConnectRequest,
10116
+ GatewayRealtimeInitialItem,
10117
+ GatewayRealtimeConnectResponse,
10118
+ ActivateCodexRealtimeConnectionRequest,
10119
+ SessionRealtimeLedgerDirection,
10120
+ SessionRealtimeLedgerKind,
10121
+ SessionRealtimeLedgerEntry,
10122
+ SessionRealtimeInboundEntry,
10123
+ SyncSessionRealtimeLedgerRequest,
10124
+ SyncSessionRealtimeLedgerResponse,
10125
+ SessionRealtimeModel,
10126
+ WorkspaceRealtimeModelCatalogItem,
10127
+ WorkspaceRealtimeModelCatalogResponse,
10128
+ SessionRealtimeState,
10129
+ SessionRealtimeEndReason,
10130
+ SessionRealtimeMode,
10131
+ BeginSessionRealtimeRequest,
10132
+ RenewSessionRealtimeRequest,
10133
+ EndSessionRealtimeRequest,
10134
+ SessionRealtimeMutationResponse,
9769
10135
  SessionAuthorizationOperation,
9770
10136
  SessionAuthorizationActor,
9771
10137
  SessionAuthorizationTarget,
@@ -10094,4 +10460,4 @@ export {
10094
10460
  ClientConfig,
10095
10461
  evaluateWorkspaceModelPolicy
10096
10462
  };
10097
- //# sourceMappingURL=chunk-TQC34EGL.js.map
10463
+ //# sourceMappingURL=chunk-GMOYIHF3.js.map