@opengeni/contracts 3.0.0-canary.0 → 3.0.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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/atlassian.ts","../src/skills.ts","../src/skill-metadata.ts","../src/skill-files.ts","../src/bundled-skills.ts","../src/model-connection-access.ts","../src/sandbox-provider-command.ts","../src/index.ts","../src/scoped-knowledge.ts","../src/event-preview.ts","../src/memory-slack-delivery.ts","../src/workspace-instruction-policies.ts","../src/transcription-recordings.ts","../src/knowledge.ts","../src/session-topology-primitives.ts","../src/slack-task-policy.ts","../src/image-generation.ts","../src/tool-catalog.ts","../src/mcp-oauth.ts","../src/tool-result-spill.ts","../src/interaction.ts","../src/sandbox-file-artifacts.ts","../src/session-mcp-projections.ts","../src/agent-topology.ts","../src/work-claims.ts","../src/artifacts.ts","../src/mcp-receipts.ts","../src/sandbox-snapshots.ts","../src/checkpoint-provider-bindings.ts","../src/codex-fleet-policy.ts","../src/company-profile.ts","../src/agent-authored-durable-text.ts","../src/company-brain.ts","../src/workspace-state.ts","../src/model-context-inspector.ts","../src/workspace-learning-policy.ts","../src/workspace-learning-administration.ts","../src/governed-learning-activation.ts","../src/governed-learning-evaluator.ts","../src/preference-registry.ts","../src/company-brain-governed-writes.ts","../src/task-notes.ts","../src/organization-membership-lifecycle.ts","../src/remember.ts","../src/feedback.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ConnectionMetadata } from \"./index\";\nimport { ConnectorDocumentDestination } from \"./connector-destinations\";\n\nexport const ATLASSIAN_PROVIDER_DOMAIN = \"api.atlassian.com\" as const;\nexport const ATLASSIAN_CREDENTIAL_ROLE = \"atlassian_knowledge\" as const;\nexport const ATLASSIAN_CREDENTIAL_LABEL = \"Atlassian read-only knowledge sync\" as const;\n\nexport const ATLASSIAN_REQUIRED_SCOPES = [\n \"offline_access\",\n \"read:me\",\n \"read:jira-work\",\n \"read:jira-user\",\n \"read:confluence-content.all\",\n \"read:confluence-space.summary\",\n \"search:confluence\",\n \"read:space:confluence\",\n \"read:page:confluence\",\n \"read:comment:confluence\",\n] as const;\n\nexport const AtlassianSourceKind = z.enum([\"jira_project\", \"confluence_space\"]);\nexport type AtlassianSourceKind = z.infer<typeof AtlassianSourceKind>;\n\nexport const AtlassianSyncCadence = z.enum([\"manual\", \"hourly\", \"daily\"]);\nexport type AtlassianSyncCadence = z.infer<typeof AtlassianSyncCadence>;\n\nexport const AtlassianReadPolicy = z.enum([\"allow\", \"ask\", \"block\"]);\nexport type AtlassianReadPolicy = z.infer<typeof AtlassianReadPolicy>;\n\nexport const AtlassianConnectionLifecycle = z.object({\n state: z.enum([\n \"active\",\n \"paused\",\n \"token_revoked\",\n \"app_removed\",\n \"disconnected\",\n \"reconnect_required\",\n \"reconsent_required\",\n ]),\n recoverable: z.boolean(),\n observedAt: z.string().datetime(),\n});\nexport type AtlassianConnectionLifecycle = z.infer<typeof AtlassianConnectionLifecycle>;\n\nexport const AtlassianSelectedSource = z.object({\n id: z.string().min(1).max(300),\n cloudId: z.string().min(1).max(256),\n siteName: z.string().min(1).max(512),\n siteUrl: z.string().url(),\n resourceId: z.string().min(1).max(256),\n key: z.string().min(1).max(128),\n name: z.string().min(1).max(512),\n kind: AtlassianSourceKind,\n destination: ConnectorDocumentDestination.optional(),\n syncCadence: AtlassianSyncCadence,\n syncEnabled: z.boolean(),\n configGeneration: z.number().int().positive(),\n readPolicy: AtlassianReadPolicy,\n selectedAt: z.string().datetime(),\n});\nexport type AtlassianSelectedSource = z.infer<typeof AtlassianSelectedSource>;\n\nexport const AtlassianConnectionMetadata = z.object({\n credentialRole: z.literal(ATLASSIAN_CREDENTIAL_ROLE),\n credentialLabel: z.literal(ATLASSIAN_CREDENTIAL_LABEL),\n atlassianAccountId: z.string().min(1).max(256),\n displayName: z.string().min(1).max(512),\n email: z.string().email().nullable().optional(),\n sites: z\n .array(\n z.object({\n cloudId: z.string().min(1).max(256),\n name: z.string().min(1).max(512),\n url: z.string().url(),\n products: z.array(z.enum([\"jira\", \"confluence\"])).max(2),\n }),\n )\n .min(1)\n .max(50),\n verifiedAt: z.string().datetime(),\n accessMode: z.literal(\"readonly\"),\n lifecycle: AtlassianConnectionLifecycle.optional(),\n documentDestination: ConnectorDocumentDestination.optional(),\n selectedSources: z.array(AtlassianSelectedSource).max(100).default([]),\n});\nexport type AtlassianConnectionMetadata = z.infer<typeof AtlassianConnectionMetadata>;\n\nexport const AtlassianOAuthStartRequest = z.object({\n connectionId: z.string().uuid().optional(),\n});\nexport type AtlassianOAuthStartRequest = z.infer<typeof AtlassianOAuthStartRequest>;\n\nexport const AtlassianOAuthStartResponse = z.object({\n authorizationUrl: z.string().url(),\n expiresAt: z.string().datetime(),\n});\nexport type AtlassianOAuthStartResponse = z.infer<typeof AtlassianOAuthStartResponse>;\n\nexport const AtlassianBrowseItem = z.object({\n id: z.string().min(1).max(300),\n cloudId: z.string().min(1).max(256),\n siteName: z.string().min(1).max(512),\n siteUrl: z.string().url(),\n resourceId: z.string().min(1).max(256),\n key: z.string().min(1).max(128),\n name: z.string().min(1).max(512),\n kind: AtlassianSourceKind,\n description: z.string().max(2_000).nullable(),\n webUrl: z.string().url(),\n});\nexport type AtlassianBrowseItem = z.infer<typeof AtlassianBrowseItem>;\n\nexport const AtlassianBrowseResponse = z.object({\n connection: z.lazy(() => ConnectionMetadata),\n items: z.array(AtlassianBrowseItem).max(200),\n});\nexport type AtlassianBrowseResponse = z.infer<typeof AtlassianBrowseResponse>;\n\nexport const SaveAtlassianSourcesRequest = z.object({\n sources: z\n .array(\n AtlassianBrowseItem.pick({\n id: true,\n cloudId: true,\n siteName: true,\n siteUrl: true,\n resourceId: true,\n key: true,\n name: true,\n kind: true,\n }),\n )\n .max(100),\n destination: z.object({\n authorityKind: z.enum([\"organization\", \"workspace\", \"personal\"]),\n collectionId: z.string().uuid().nullable().default(null),\n }),\n syncCadence: AtlassianSyncCadence,\n syncEnabled: z.boolean(),\n readPolicy: AtlassianReadPolicy.default(\"allow\"),\n});\nexport type SaveAtlassianSourcesRequest = z.infer<typeof SaveAtlassianSourcesRequest>;\n\nexport const AtlassianLifecycleActionRequest = z.object({\n action: z.enum([\"pause\", \"resume\"]),\n expectedVersion: z.number().int().positive(),\n});\nexport type AtlassianLifecycleActionRequest = z.infer<typeof AtlassianLifecycleActionRequest>;\n\nexport const AtlassianDisconnectRequest = z.object({\n expectedVersion: z.number().int().positive(),\n idempotencyKey: z.string().uuid(),\n});\nexport type AtlassianDisconnectRequest = z.infer<typeof AtlassianDisconnectRequest>;\n\nexport function atlassianScopesAllowRead(scopes: readonly string[]): boolean {\n const granted = new Set(scopes);\n return ATLASSIAN_REQUIRED_SCOPES.every((scope) => granted.has(scope));\n}\n","import { z } from \"zod\";\nexport { parseSkillFrontmatter, readSkillMetadata } from \"./skill-metadata\";\nexport * from \"./skill-files\";\n\n/** Files are UTF-8 text, relative to the Skill root. No executable authority. */\nexport const SkillFile = z.object({ path: z.string().min(1).max(512), content: z.string() });\nexport type SkillFile = z.infer<typeof SkillFile>;\nexport const SkillActor = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"service\"),\n subjectId: z.string().min(1),\n principalKind: z.enum([\"service\", \"api_key\", \"configured_key\"]),\n }),\n z.object({\n kind: z.literal(\"human\"),\n subjectId: z.string().min(1),\n principalKind: z.literal(\"human_session\"),\n }),\n z.object({\n kind: z.literal(\"agent\"),\n sessionId: z.uuid(),\n turnId: z.uuid(),\n attemptId: z.uuid(),\n executionGeneration: z.number().int().positive(),\n }),\n]);\nexport type SkillActor = z.infer<typeof SkillActor>;\nexport type SkillScope = \"workspace\" | \"organization\" | \"user\";\nexport type SkillWriteContext = { accountId: string; workspaceId: string; actor: SkillActor };\nexport type SkillSaveInput = SkillWriteContext & {\n operationId: string;\n skillId: string;\n expectedRevisionId: string | null;\n expectedScopeVersion: number;\n stableKey: string;\n files: SkillFile[];\n scope?: SkillScope;\n reason: string;\n};\nexport type SkillRevisionInput = SkillWriteContext & {\n operationId: string;\n skillId: string;\n revisionId: string;\n expectedRevisionId: string | null;\n expectedScopeVersion: number;\n reason: string;\n};\nexport type SkillInstallInput = SkillWriteContext & {\n operationId: string;\n skillFacetId: string;\n reason: string;\n};\nexport const SkillReviewReference = z.object({\n sourceOperationId: z.uuid(),\n skillId: z.uuid(),\n revisionId: z.uuid(),\n expectedRevisionId: z.uuid().nullable(),\n expectedScopeVersion: z.number().int().positive(),\n});\nexport type SkillReviewReference = z.infer<typeof SkillReviewReference>;\nexport function skillReviewHumanInput(skillReview: SkillReviewReference) {\n return {\n questions: [\n {\n id: `skill:${skillReview.revisionId}`,\n kind: \"single_select\" as const,\n label: \"Save this Skill?\",\n prompt: \"Save this exact Skill revision for this workspace?\",\n helpText:\n \"Review the complete files before saving. Saving activates this revision immediately.\",\n options: [\n { id: \"save\", label: \"Save\" },\n { id: \"skip\", label: \"Don't save\" },\n ],\n required: true,\n allowOther: false,\n skillReview,\n },\n ],\n };\n}\nexport const SkillWriteReceipt = z.object({\n operationId: z.uuid(),\n skillId: z.uuid(),\n revisionId: z.uuid(),\n outcome: z.enum([\"applied\", \"pending\", \"preserved\"]),\n decision: z.literal(\"rejected\").optional(),\n pendingReason: z.enum([\"approval\", \"source_finalization\"]).optional(),\n skillReview: SkillReviewReference.optional(),\n replayed: z.boolean(),\n});\nexport type SkillWriteReceipt = z.infer<typeof SkillWriteReceipt>;\nexport const SkillPublicationReceipt = SkillWriteReceipt.extend({\n sourceOperationId: z.uuid(),\n activationEventId: z.uuid().nullable(),\n});\nexport type SkillPublicationReceipt = z.infer<typeof SkillPublicationReceipt>;\nexport const SkillSourceReleaseReceipt = z.object({\n skillId: z.uuid(),\n revisionId: z.uuid().nullable(),\n disposition: z.enum([\"deactivated\", \"preserved\", \"inactive\"]),\n eventId: z.uuid().nullable(),\n warning: z.string().nullable(),\n});\nexport type SkillSourceReleaseReceipt = z.infer<typeof SkillSourceReleaseReceipt>;\nexport type SkillRecord = {\n activationMode: \"workspace_managed\" | \"session_selected\";\n pendingRevisionIds: string[];\n id: string;\n stableKey: string;\n scope: SkillScope;\n scopeVersion: number;\n status: string;\n activeRevisionId: string | null;\n revisionId: string | null;\n title: string | null;\n description: string | null;\n contentHash: string | null;\n files: SkillFile[];\n source: { pluginId: string; facetKey: string; skillFacetId: string } | null;\n};\n","import { parseDocument } from \"yaml\";\n\n/** The one interpretation of Skill metadata for imports, writes and migration. */\nexport function parseSkillFrontmatter(markdown: string): {\n name: string | null;\n description: string | null;\n} {\n const lines = markdown.split(/\\r?\\n/u);\n if (lines[0]?.trim() !== \"---\") return { name: null, description: null };\n const end = lines.findIndex((line, index) => index > 0 && line.trim() === \"---\");\n if (end === -1) return { name: null, description: null };\n const document = parseDocument(lines.slice(1, end).join(\"\\n\"), {\n schema: \"core\",\n uniqueKeys: true,\n prettyErrors: false,\n });\n if (document.errors.length || document.warnings.length)\n throw new Error(\"Skill artifact SKILL.md has invalid YAML frontmatter\");\n const metadata: unknown = document.toJS({ maxAliasCount: 20 });\n if (!metadata || typeof metadata !== \"object\" || Array.isArray(metadata))\n throw new Error(\"Skill artifact SKILL.md frontmatter must be a mapping\");\n const fields = metadata as Record<string, unknown>;\n return {\n name: typeof fields.name === \"string\" ? fields.name : null,\n description: typeof fields.description === \"string\" ? fields.description : null,\n };\n}\n\nexport function readSkillMetadata(markdown: string): { name: string; description: string } {\n const { name, description } = parseSkillFrontmatter(markdown);\n if (!name || name.length > 64 || !/^[a-z0-9]+(?:-[a-z0-9]+)*$/u.test(name))\n throw new Error(\"Skill artifact SKILL.md must declare a safe name\");\n if (!description?.trim() || description.length > 1024)\n throw new Error(\"Skill artifact SKILL.md must declare a description of 1–1024 characters\");\n return { name, description };\n}\n","/** Shared text-folder limits for API admission, runtime imports and checkout. */\nexport const SKILL_MAX_FILES = 128;\nexport const SKILL_MAX_FILE_BYTES = 256 * 1024;\nexport const SKILL_MAX_TOTAL_BYTES = 1024 * 1024;\n\nexport function isSafeSkillRelativePath(path: string): boolean {\n return (\n path.length > 0 &&\n path.length <= 512 &&\n !/[\\\\:\\u0000-\\u001f\\u007f]/u.test(path) &&\n path.split(\"/\").every((segment) => segment !== \"\" && segment !== \".\" && segment !== \"..\") &&\n new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(\n new TextEncoder().encode(path),\n ) === path\n );\n}\n\n/** Validates bytes, not extensions. Does not rewrite text or interpret metadata. */\nexport function validateSkillTextFiles(files: readonly { path: string; content: string }[]): {\n totalBytes: number;\n} {\n if (files.length === 0 || files.length > SKILL_MAX_FILES)\n throw new Error(`Skill artifact must contain 1-${SKILL_MAX_FILES} files`);\n const paths = new Set<string>();\n const encoder = new TextEncoder();\n const decoder = new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true });\n let totalBytes = 0;\n for (const { path, content } of files) {\n if (!isSafeSkillRelativePath(path))\n throw new Error(`Skill artifact contains an unsafe path: ${path}`);\n if (paths.has(path)) throw new Error(`Skill artifact contains duplicate file path: ${path}`);\n paths.add(path);\n if (content.includes(\"\\u0000\")) throw new Error(`Skill artifact contains NUL bytes: ${path}`);\n const bytes = encoder.encode(content);\n if (decoder.decode(bytes) !== content)\n throw new Error(`Skill artifact contains malformed Unicode text: ${path}`);\n if (bytes.byteLength > SKILL_MAX_FILE_BYTES)\n throw new Error(`Skill artifact file exceeds ${SKILL_MAX_FILE_BYTES} bytes: ${path}`);\n totalBytes += bytes.byteLength;\n if (totalBytes > SKILL_MAX_TOTAL_BYTES)\n throw new Error(`Skill artifact exceeds ${SKILL_MAX_TOTAL_BYTES} bytes`);\n }\n for (const path of paths) {\n const segments = path.split(\"/\");\n for (let index = 1; index < segments.length; index++) {\n const prefix = segments.slice(0, index).join(\"/\");\n if (paths.has(prefix))\n throw new Error(`Skill artifact uses a path as both a file and a directory: ${prefix}`);\n }\n }\n return { totalBytes };\n}\n","import { z } from \"zod\";\n\nexport const BundledSkillId = z.enum([\n \"builtin:opengeni-skills\",\n \"builtin:opengeni-projects\",\n \"builtin:opengeni-documents\",\n \"builtin:opengeni-spreadsheets\",\n \"builtin:opengeni-presentations\",\n \"builtin:opengeni-sites\",\n \"builtin:opengeni-video-generation\",\n]);\nexport type BundledSkillId = z.infer<typeof BundledSkillId>;\nexport const BundledSkillSelection = z\n .array(BundledSkillId)\n .max(BundledSkillId.options.length)\n .refine((ids) => new Set(ids).size === ids.length, \"bundled Skill ids must be unique\")\n .transform((ids) => [...ids].sort());\n\n/** Undefined is defaults/inheritance; an explicit empty list disables bundles. */\nexport function resolveBundledSkillSelection(\n requested: readonly BundledSkillId[] | undefined,\n parent: readonly BundledSkillId[] | undefined,\n): BundledSkillId[] | undefined {\n const selected = requested === undefined ? parent : requested;\n if (parent !== undefined && selected?.some((id) => !parent.includes(id)))\n throw new Error(\"A child cannot widen its parent's bundled Skill selection\");\n return selected === undefined ? undefined : BundledSkillSelection.parse(selected);\n}\n\n// Immutable session configuration, following the existing create-identity\n// metadata convention. Callers cannot set this through arbitrary metadata.\nconst BUNDLED_SKILL_SELECTION_KEY = \"_opengeni_bundled_skill_ids_v1\";\nexport function withBundledSkillSelectionMetadata(\n metadata: Record<string, unknown>,\n ids: readonly BundledSkillId[] | undefined,\n): Record<string, unknown> {\n const next = { ...metadata };\n delete next[BUNDLED_SKILL_SELECTION_KEY];\n if (ids !== undefined) next[BUNDLED_SKILL_SELECTION_KEY] = BundledSkillSelection.parse(ids);\n return next;\n}\nexport function bundledSkillSelectionFromMetadata(\n metadata: Record<string, unknown>,\n): BundledSkillId[] | undefined {\n const value = metadata[BUNDLED_SKILL_SELECTION_KEY];\n return value === undefined ? undefined : BundledSkillSelection.parse(value);\n}\n","import { z } from \"zod\";\n\nexport const ModelConnectionAccessPolicy = z\n .object({\n allowedModels: z.array(z.string().trim().min(1).max(256)).max(500).nullable(),\n allowedWorkspaces: z.array(z.string().uuid()).max(500).nullable(),\n allowPersonalWorkspaces: z.boolean(),\n version: z.number().int().positive(),\n })\n .strict();\n\nexport const ModelConnectionAccessResponse = z.object({\n policy: ModelConnectionAccessPolicy,\n models: z.array(z.object({ id: z.string(), label: z.string() })),\n workspaces: z.array(z.object({ id: z.string().uuid(), name: z.string() })),\n personalWorkspacesSupported: z.boolean(),\n});\n","import { z } from \"zod\";\n\nconst ModalOutputCursor = z\n .object({\n batchIndex: z.number().int().nonnegative().safe(),\n utf8Remainder: z\n .string()\n .max(8)\n .regex(/^[A-Za-z0-9+/]*={0,2}$/u),\n exitCode: z.number().int().nullable(),\n })\n .strict();\n\n/** Provider-owned execution identity and acknowledged output cursors. These\n * values are retained by the control plane, never recovered from sandbox files. */\nexport const SandboxProviderCommand = z\n .object({\n kind: z.literal(\"modal-control-v1\"),\n sandboxId: z.string().min(1).max(200),\n taskId: z.string().min(1).max(200),\n execId: z.string().min(1).max(200),\n pty: z.boolean().optional(),\n streams: z.object({ stdout: ModalOutputCursor, stderr: ModalOutputCursor }).strict(),\n })\n .strict();\nexport type SandboxProviderCommand = z.infer<typeof SandboxProviderCommand>;\n","import { SkillReviewReference, skillReviewHumanInput } from \"./skills\";\nexport * from \"./skills\";\nexport * from \"./bundled-skills\";\nimport { BundledSkillSelection } from \"./bundled-skills\";\nimport { SkillWriteReceipt, SkillSourceReleaseReceipt, SkillPublicationReceipt } from \"./skills\";\nimport { readSkillMetadata } from \"./skill-metadata\";\nimport { isSafeSkillRelativePath, validateSkillTextFiles } from \"./skill-files\";\nexport * from \"./model-connection-access\";\nexport * from \"./sandbox-provider-command\";\nimport { z } from \"zod\";\nexport const HostMcpCreateSelections = z\n .array(\n z\n .object({\n serverId: z.string().min(1).max(256),\n delegationId: z\n .string()\n .uuid()\n .transform((value) => value.toLowerCase()),\n generation: z.number().int().positive().safe(),\n })\n .strict(),\n )\n .max(128)\n .superRefine((values, ctx) => {\n if (new Set(values.map((value) => value.serverId)).size !== values.length)\n ctx.addIssue({ code: \"custom\", message: \"Duplicate host server selection\" });\n });\nexport type HostMcpCreateSelection = z.input<typeof HostMcpCreateSelections>[number];\nimport { Permission } from \"./permissions\";\nimport { ScopedKnowledgeScope } from \"./scoped-knowledge\";\nexport { siteSessionPath, SiteSessionPathError } from \"./site-session-http\";\nimport {\n boundSessionEventPayload,\n measureSessionEventJson,\n sessionEventJsonBytes,\n type SessionEventBoundarySurface,\n} from \"./event-preview\";\nimport { MemorySlackPublicationDistribution } from \"./memory-slack-delivery\";\nimport { WorkspaceInstructionPolicyRoleKeyInput } from \"./workspace-instruction-policies\";\nimport { ClientResumableVoiceInputConfig } from \"./transcription-recordings\";\nimport { MediaGenerationResult } from \"./video-generation\";\nimport { KnowledgeProviderCitation } from \"./knowledge\";\nimport { XaiProviderAccountAuthoritySnapshotV1 } from \"./xai-provider-account-authority\";\nimport {\n MAX_NESTED_AGENT_DEPTH,\n NestedAgentDepthValue,\n SessionGoalStatus,\n SessionStatus,\n} from \"./session-topology-primitives\";\n\nexport * from \"./slack-bot-scopes\";\nexport * from \"./slack-task-policy\";\nexport * from \"./atlassian\";\nexport * from \"./connector-destinations\";\nexport * from \"./connector-attachments\";\nexport * from \"./memory-slack-delivery\";\nexport * from \"./image-generation\";\nexport * from \"./video-generation\";\nexport * from \"./editable-artifacts\";\nexport * from \"./editable-artifact-committed-transaction\";\nexport * from \"./editable-artifact-serialized-commit\";\nexport * from \"./tool-catalog\";\nexport * from \"./mcp-oauth\";\nexport * from \"./tool-result-spill\";\nexport * from \"./interaction\";\nexport * from \"./sandbox-file-artifacts\";\nexport * from \"./permissions\";\nexport * from \"./session-titles\";\nexport * from \"./session-mcp-projections\";\nexport * from \"./session-topology-primitives\";\nexport * from \"./agent-topology\";\nexport * from \"./work-claims\";\n\nexport {\n CreateWorkspaceArtifactRequest,\n PublishWorkspaceArtifactVersionRequest,\n RollbackWorkspaceArtifactRequest,\n SetWorkspaceArtifactStatusRequest,\n WorkspaceArtifact,\n WorkspaceArtifactContentResponse,\n WorkspaceArtifactDetailResponse,\n WorkspaceArtifactEvent,\n WorkspaceArtifactEventType,\n WorkspaceArtifactHtml,\n WorkspaceArtifactListQuery,\n WorkspaceArtifactListResponse,\n WorkspaceArtifactMutationResponse,\n WorkspaceArtifactRequestedTools,\n WorkspaceArtifactSlug,\n WorkspaceArtifactSourceBundle,\n WorkspaceArtifactSourceFile,\n WorkspaceArtifactSourcePath,\n WorkspaceArtifactStatus,\n WorkspaceArtifactVersion,\n WORKSPACE_ARTIFACT_CURSOR_MAX_CHARS,\n WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS,\n WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES,\n WORKSPACE_ARTIFACT_LIST_DEFAULT,\n WORKSPACE_ARTIFACT_LIST_MAX,\n WORKSPACE_ARTIFACT_REQUESTED_TOOLS_MAX,\n WORKSPACE_ARTIFACT_SOURCE_MAX_FILES,\n WORKSPACE_ARTIFACT_SOURCE_MAX_UTF8_BYTES,\n WORKSPACE_ARTIFACT_TITLE_MAX_CHARS,\n normalizeWorkspaceArtifactSlug,\n} from \"./artifacts\";\n\nexport {\n MCP_MUTATION_RECEIPT_MAX_BYTES,\n MCP_MUTATION_RECEIPT_VERSION,\n McpMutationReceipt,\n McpMutationReceiptIdempotencyStatus,\n McpMutationReceiptOutcome,\n McpMutationResource,\n type McpMutationReceipt as McpMutationReceiptType,\n type McpMutationReceiptIdempotencyStatus as McpMutationReceiptIdempotencyStatusType,\n type McpMutationReceiptOutcome as McpMutationReceiptOutcomeType,\n type McpMutationResource as McpMutationResourceType,\n} from \"./mcp-receipts\";\n\nexport {\n SESSION_EVENT_PAYLOAD_MAX_BYTES,\n approximateSessionEventTokens,\n boundSessionEventPayload,\n measureSessionEventJson,\n sessionEventJsonBytes,\n sessionEventMediaPreview,\n sessionEventMediaPreviewFromDataUrl,\n sessionEventPayloadTruncation,\n type BoundSessionEventPayloadOptions,\n type SessionEventBoundarySurface,\n type SessionEventMediaPreview,\n type SessionEventJsonMeasurement,\n type SessionEventPayloadTruncation,\n} from \"./event-preview\";\n\nexport {\n COMPUTER_SCREENSHOT_MAX_BYTES,\n COMPUTER_SCREENSHOT_MAX_DIMENSION,\n COMPUTER_SCREENSHOT_MAX_PIXELS,\n COMPUTER_SCREENSHOT_RETENTION_MS,\n COMPUTER_SCREENSHOT_WORKSPACE_QUOTA_BYTES,\n GENERATED_IMAGE_MAX_BYTES,\n GENERATED_VIDEO_MAX_BYTES,\n RETAINED_OUTPUT_DEFAULT_PAGE_BYTES,\n RETAINED_OUTPUT_MAX_PAGE_BYTES,\n RETAINED_OUTPUT_RECEIPT_MAX_BYTES,\n RetainedArtifactMetadataSchema,\n RetainedArtifactReferenceSchema,\n RetainedArtifactUnavailableSchema,\n RetainedOutputEvidenceSchema,\n RetainedOutputKind,\n RetainedOutputUnavailableReason,\n retainedArtifactReferenceFromFile,\n retainedGeneratedImageReferenceFromFile,\n retainedGeneratedVideoReferenceFromFile,\n retainedScreenshotReferenceFromFile,\n retainedOutputUnavailable,\n resolveRetainedOutputRange,\n validateRetainedOutputEvidence,\n type RetainedArtifactFileInput,\n type RetainedArtifactMetadata,\n type RetainedArtifactReference,\n type RetainedGeneratedImageArtifactInput,\n type RetainedGeneratedVideoArtifactInput,\n type RetainedScreenshotArtifactInput,\n type RetainedArtifactUnavailable,\n type RetainedOutputAvailableEvidence,\n type RetainedOutputEvidence,\n type RetainedOutputRangeResolution,\n type RetainedOutputResolvedRange,\n} from \"./retained-output\";\n\nexport {\n NATIVE_SNAPSHOT_PREFIXES,\n WORKSPACE_ARCHIVE_DESCRIPTOR_VERSION,\n WORKSPACE_ARCHIVE_OBJECT_REF_SCHEMA,\n backendForNativeSnapshotProvider,\n decodeNativeSnapshotRef,\n encodeNativeSnapshotRef,\n omitInlineWorkspaceArchiveWhenObjectRefPresent,\n parseWorkspaceArchiveDescriptor,\n parseWorkspaceArchiveObjectRef,\n workspaceArchiveObjectKey,\n workspaceArchivePayloadPresent,\n type NativeSnapshotDescriptor,\n type NativeSnapshotProvider,\n type NativeSnapshotRef,\n type TarWorkspaceArchiveDescriptor,\n type WorkspaceArchiveDescriptor,\n type WorkspaceArchiveObjectRef,\n type WorkspaceTreeFingerprint,\n} from \"./sandbox-snapshots\";\n\nexport {\n canonicalModalCheckpointProviderBinding,\n type ModalCheckpointProviderBinding,\n} from \"./checkpoint-provider-bindings\";\n\n// 12 backends; 3-way enum parity (contracts / sdk / deployment) is pinned by\n// `packages/sdk/test/contract-parity.test.ts`. Every member is ADDITIVE AT THE\n// END (the parity test pins positions): the original four, then the six cloud\n// backends, then `selfhosted` (bring-your-own-compute — a user's own machine\n// enrolled as a first-class sandbox), then `opensandbox` (an optional\n// Kubernetes-native provisioned sandbox provider).\nexport const SandboxBackend = z.enum([\n \"docker\",\n \"modal\",\n \"local\",\n \"none\",\n \"daytona\",\n \"runloop\",\n \"e2b\",\n \"blaxel\",\n \"cloudflare\",\n \"vercel\",\n \"selfhosted\",\n \"opensandbox\",\n]);\nexport type SandboxBackend = z.infer<typeof SandboxBackend>;\n\n// OpenGeni-owned identity carried beside the provider's opaque SDK envelope.\n// Provider serializers intentionally use different keys (`sandboxId`,\n// `devboxId`, `sandboxName`, ...); durable lease logic must not need to learn a\n// new provider's private state shape. Existing envelopes remain readable via\n// the legacy keys below, while every newly-serialized envelope carries this\n// stable field.\nexport const OPENGENI_SANDBOX_PROVIDER_INSTANCE_ID_FIELD = \"opengeniProviderInstanceId\" as const;\nexport const SANDBOX_PROVIDER_INSTANCE_ID_FIELDS_BY_BACKEND = {\n docker: [\"containerId\"],\n modal: [\"sandboxId\"],\n local: [\"workspaceRootPath\"],\n none: [],\n daytona: [\"sandboxId\"],\n runloop: [\"devboxId\"],\n e2b: [\"sandboxId\"],\n // A Blaxel name is reusable after deletion. The SDK persists a canonical\n // metadata identity (name + creation timestamp + workspace) specifically to\n // distinguish a later sandbox created under the same name.\n blaxel: [\"sandboxIdentity\"],\n cloudflare: [\"sandboxId\"],\n vercel: [\"sandboxId\"],\n selfhosted: [\"agentId\"],\n opensandbox: [\"sandboxId\"],\n} as const satisfies Record<SandboxBackend, readonly string[]>;\nexport const LEGACY_SANDBOX_PROVIDER_INSTANCE_ID_FIELDS = [\n \"sandboxId\",\n \"devboxId\",\n \"sandboxName\",\n \"sandboxIdentity\",\n \"containerId\",\n \"workspaceRootPath\",\n \"agentId\",\n] as const;\n\n/**\n * Durable proof that a provider may replace an execution wrapper without\n * replacing the workspace OpenGeni owns. This is intentionally narrower than\n * generic provider resume: only a provider adapter that can prove the same\n * continuity key may consume it, and only a cold->warming owner or teardown\n * claimant may authorize that replacement.\n */\nexport type SandboxProviderContinuityRecovery = {\n version: 1;\n backend: SandboxBackend;\n kind: \"docker_workspace\";\n sourceInstanceId: string;\n continuityKey: string;\n};\n\n// OS axis. Only \"linux\" is reachable in v1; macos/windows are seam placeholders.\nexport const SandboxOs = z.enum([\"linux\", \"macos\", \"windows\"]);\nexport type SandboxOs = z.infer<typeof SandboxOs>;\n\n// The five surfaceable sandbox capabilities (PascalCase, the canonical names).\nexport const SandboxCapabilityName = z.enum([\n \"FileSystem\", // Channel A: list/read/write/search (Pierre tree)\n \"Terminal\", // Channel A: command-output firehose (+ future pty-ws)\n \"Git\", // Channel A: status/diff/log/show (Pierre diff)\n \"DesktopStream\", // Channel B: noVNC pixels over a scoped tunnel URL\n \"Recording\", // ffmpeg x11grab -> object storage\n]);\nexport type SandboxCapabilityName = z.infer<typeof SandboxCapabilityName>;\n\n// How a backend exposes a network port to the data plane.\nexport type PortExposureKind = \"provider-tunnel\" | \"preview-url\" | \"local-port\" | \"none\";\n\n// Static per-backend metadata — pure data, no runtime state. This table lives\n// in CONTRACTS (not runtime) so config can read it without an import cycle\n// through runtime (ledger CR8). Everything downstream (config boot-validation,\n// OS image selection, capability negotiation, env/mount branch) reads this\n// data, never a hard-coded backend name.\nexport type CapabilityDescriptor = {\n backend: SandboxBackend;\n backendId: string; // asserted === SDK client.backendId at registry build (deferred to P0.3)\n tier: \"desktop\" | \"headless\" | \"dev\" | \"none\";\n os: { supported: SandboxOs[]; default: SandboxOs };\n capabilities: {\n FileSystem: { available: boolean; readOnly: boolean };\n Terminal: {\n available: boolean;\n transport: \"sse-events\" | \"pty-ws\" | \"relay-pty\" | null;\n pty: boolean;\n };\n Git: { available: boolean };\n DesktopStream: {\n available: boolean;\n transport: \"vnc-ws\" | \"rdp-ws\" | \"webrtc\" | null;\n };\n // Feasibility only (== DesktopStream.available && os==linux); NOT a request.\n Recording: { available: boolean };\n };\n lifetime: {\n hardLifetimeMs?: number; // modal 24h, vercel 5h\n requiresSnapshotRollover: boolean;\n hasIdleKiller: boolean;\n supportsSuspendResume: boolean; // runloop/e2b/vercel/modal true\n resumeIsLockFree: boolean; // modal true (fromId, no lock)\n idleKillDisableHint?: string;\n };\n snapshot: {\n kind: \"native-fs\" | \"native-dir\" | \"native-snapshot-id\" | \"tar-only\" | \"none\";\n hasTarFallback: boolean;\n };\n portExposure: { kind: PortExposureKind; supportsOnDemandPorts: boolean }; // runloop=false; blaxel only true\n workspaceRoot: string; // os-overridable; per-backend default (providers owns; os defers)\n nativeBucketMount: boolean; // modal true -> mount/signed-download branch\n persistable: boolean;\n supportsRunAs: boolean;\n};\n\n// The websockify/noVNC desktop port that is merged into `exposedPorts` for\n// every desktop-capable (backend, os). Asserted present by boot-validation.\nexport const DESKTOP_STREAM_PORT = 6080;\n\n// The ttyd PTY-over-websocket port that is exposed over the SAME Modal raw-TLS\n// tunnel as the desktop, for the REAL interactive terminal (Channel-B-symmetric).\n// ttyd's default; the box bakes ttyd and launches it on this port. The pty-ws\n// Terminal cell's `url` is the tunnel address resolved against this port.\nexport const TERMINAL_STREAM_PORT = 7681;\nexport const BROWSER_CONTROL_PORT = 7682;\n\n// The provider capability matrix (sandbox contract PART D + module 03-providers). One row per\n// backend (10 rows). v1 reachable cells are all Linux; macos/windows are seam\n// placeholders (no enum members shipped). Reading rule: a capability cell is\n// `available:false` + a reason in the negotiated doc, never absent.\nexport const CAPABILITY_DESCRIPTORS: Record<SandboxBackend, CapabilityDescriptor> = {\n modal: {\n backend: \"modal\",\n backendId: \"modal\",\n tier: \"desktop\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: true },\n Git: { available: true },\n DesktopStream: { available: true, transport: \"vnc-ws\" },\n Recording: { available: true },\n },\n lifetime: {\n hardLifetimeMs: 24 * 60 * 60 * 1000,\n requiresSnapshotRollover: true,\n hasIdleKiller: true,\n supportsSuspendResume: true,\n resumeIsLockFree: true,\n },\n snapshot: { kind: \"native-fs\", hasTarFallback: true },\n portExposure: { kind: \"provider-tunnel\", supportsOnDemandPorts: false }, // pre-declare 6080\n workspaceRoot: \"/workspace\",\n nativeBucketMount: true,\n persistable: true,\n supportsRunAs: true,\n },\n daytona: {\n backend: \"daytona\",\n backendId: \"daytona\",\n tier: \"desktop\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: true },\n Git: { available: true },\n DesktopStream: { available: true, transport: \"vnc-ws\" },\n Recording: { available: true },\n },\n lifetime: {\n requiresSnapshotRollover: false,\n hasIdleKiller: true,\n supportsSuspendResume: true,\n resumeIsLockFree: false,\n },\n snapshot: { kind: \"native-snapshot-id\", hasTarFallback: true },\n portExposure: { kind: \"preview-url\", supportsOnDemandPorts: false },\n workspaceRoot: \"/workspace\",\n nativeBucketMount: false,\n persistable: true,\n supportsRunAs: true,\n },\n runloop: {\n backend: \"runloop\",\n backendId: \"runloop\",\n tier: \"desktop\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: false },\n Git: { available: true },\n DesktopStream: { available: true, transport: \"vnc-ws\" },\n Recording: { available: true },\n },\n lifetime: {\n requiresSnapshotRollover: false,\n hasIdleKiller: true,\n supportsSuspendResume: true,\n resumeIsLockFree: false,\n },\n snapshot: { kind: \"native-snapshot-id\", hasTarFallback: true },\n portExposure: { kind: \"provider-tunnel\", supportsOnDemandPorts: false }, // CR9: pre-declare 6080\n workspaceRoot: \"/workspace\",\n nativeBucketMount: false,\n persistable: true,\n supportsRunAs: false,\n },\n e2b: {\n backend: \"e2b\",\n backendId: \"e2b\",\n tier: \"desktop\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: false }, // pty-until-proven=no\n Git: { available: true },\n DesktopStream: { available: true, transport: \"vnc-ws\" },\n Recording: { available: true },\n },\n lifetime: {\n requiresSnapshotRollover: false,\n hasIdleKiller: true,\n supportsSuspendResume: true,\n resumeIsLockFree: false,\n },\n snapshot: { kind: \"native-snapshot-id\", hasTarFallback: true },\n portExposure: { kind: \"preview-url\", supportsOnDemandPorts: false },\n workspaceRoot: \"/home/user\",\n nativeBucketMount: false,\n persistable: true,\n supportsRunAs: false,\n },\n blaxel: {\n backend: \"blaxel\",\n backendId: \"blaxel\",\n tier: \"desktop\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: false }, // pty-until-proven=no\n Git: { available: true },\n DesktopStream: { available: true, transport: \"vnc-ws\" },\n Recording: { available: true },\n },\n lifetime: {\n requiresSnapshotRollover: false,\n hasIdleKiller: true,\n supportsSuspendResume: false,\n resumeIsLockFree: false,\n },\n snapshot: { kind: \"tar-only\", hasTarFallback: true },\n portExposure: { kind: \"provider-tunnel\", supportsOnDemandPorts: true }, // only on-demand backend\n workspaceRoot: \"/workspace\",\n nativeBucketMount: false,\n persistable: true,\n supportsRunAs: false,\n },\n cloudflare: {\n backend: \"cloudflare\",\n backendId: \"cloudflare\",\n tier: \"headless\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: true },\n Git: { available: true },\n DesktopStream: { available: false, transport: null },\n Recording: { available: false },\n },\n lifetime: {\n requiresSnapshotRollover: false,\n hasIdleKiller: true,\n supportsSuspendResume: false,\n resumeIsLockFree: false,\n },\n snapshot: { kind: \"tar-only\", hasTarFallback: true },\n portExposure: { kind: \"provider-tunnel\", supportsOnDemandPorts: false },\n workspaceRoot: \"/workspace\",\n nativeBucketMount: false,\n persistable: true,\n supportsRunAs: true,\n },\n vercel: {\n backend: \"vercel\",\n backendId: \"vercel\",\n tier: \"headless\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: false },\n Git: { available: true },\n DesktopStream: { available: false, transport: null },\n Recording: { available: false },\n },\n lifetime: {\n hardLifetimeMs: 5 * 60 * 60 * 1000,\n requiresSnapshotRollover: true,\n hasIdleKiller: true,\n supportsSuspendResume: true,\n resumeIsLockFree: false,\n },\n snapshot: { kind: \"tar-only\", hasTarFallback: true },\n portExposure: { kind: \"preview-url\", supportsOnDemandPorts: false },\n workspaceRoot: \"/vercel/sandbox\",\n nativeBucketMount: false,\n persistable: true,\n supportsRunAs: false,\n },\n docker: {\n backend: \"docker\",\n backendId: \"docker\",\n tier: \"dev\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: true },\n Git: { available: true },\n DesktopStream: { available: false, transport: null }, // local\n Recording: { available: false },\n },\n lifetime: {\n requiresSnapshotRollover: false,\n hasIdleKiller: false,\n supportsSuspendResume: false,\n resumeIsLockFree: true,\n },\n snapshot: { kind: \"native-dir\", hasTarFallback: true },\n portExposure: { kind: \"local-port\", supportsOnDemandPorts: false },\n workspaceRoot: \"/workspace\",\n nativeBucketMount: false,\n persistable: true,\n supportsRunAs: true,\n },\n local: {\n backend: \"local\",\n // The SDK's UnixLocalSandboxClient reports backendId \"unix_local\" — this MUST\n // match it (it is the resume-fence field compared against client.backendId).\n backendId: \"unix_local\",\n tier: \"dev\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: true },\n Git: { available: true },\n DesktopStream: { available: false, transport: null },\n Recording: { available: false },\n },\n lifetime: {\n requiresSnapshotRollover: false,\n hasIdleKiller: false,\n supportsSuspendResume: false,\n resumeIsLockFree: true,\n },\n snapshot: { kind: \"native-dir\", hasTarFallback: true },\n portExposure: { kind: \"local-port\", supportsOnDemandPorts: false },\n workspaceRoot: \"/workspace\",\n nativeBucketMount: false,\n persistable: false,\n supportsRunAs: false,\n },\n none: {\n backend: \"none\",\n backendId: \"none\",\n tier: \"none\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: false, readOnly: true },\n Terminal: { available: false, transport: null, pty: false },\n Git: { available: false },\n DesktopStream: { available: false, transport: null },\n Recording: { available: false },\n },\n lifetime: {\n requiresSnapshotRollover: false,\n hasIdleKiller: false,\n supportsSuspendResume: false,\n resumeIsLockFree: true,\n },\n snapshot: { kind: \"none\", hasTarFallback: false },\n portExposure: { kind: \"none\", supportsOnDemandPorts: false },\n workspaceRoot: \"/workspace\",\n nativeBucketMount: false,\n persistable: false,\n supportsRunAs: false,\n },\n // Bring-your-own-compute: the user's OWN machine, enrolled via a Rust agent,\n // becomes ONE shared whole-machine sandbox (the agent IS the box). It is the\n // first backend to make macOS/Windows reachable (default linux). Desktop is\n // capability-PROCLAIMED (\"vnc-ws\") — the agent serves a native display stack\n // (Linux X11/Xvfb, macOS CGEvent/ScreenCaptureKit) consent-gated at enroll;\n // the online/offline/consent/display negotiation lives in select.ts (M3), this\n // row is the static feasibility ceiling. Always-on (process-lifetime, never\n // idle-reaped) and NOT persistable — OpenGeni cannot snapshot the user's disk,\n // so resume = \"is the agent's subject live?\", never a cold re-create. Ports\n // surface on-demand through the stateless relay edge, which lands behind the\n // `resolveExposedPort` swap-seam later; until then it reuses the existing\n // `provider-tunnel` exposure kind (the relay IS the provider tunnel for the\n // agent) so no new PortExposureKind literal — and no new switch arms — are\n // introduced. supportsOnDemandPorts:true: the agent opens a stream channel for\n // a port on request rather than pre-declaring 6080/7681 at construction.\n selfhosted: {\n backend: \"selfhosted\",\n backendId: \"selfhosted\",\n tier: \"desktop\",\n os: { supported: [\"linux\", \"macos\", \"windows\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"relay-pty\", pty: true }, // real PTY over the relay\n Git: { available: true },\n DesktopStream: { available: true, transport: \"vnc-ws\" }, // proclaimed; consent-gated at enroll\n Recording: { available: true }, // boot invariant: == DesktopStream.available\n },\n lifetime: {\n // Whole-machine, always-there: online while the agent process runs, offline\n // when it stops. The lease is NEVER idle-killed (it's the user's machine,\n // not a reapable cloud box) and there is nothing to suspend/resume — the\n // machine simply is or isn't reachable.\n requiresSnapshotRollover: false,\n hasIdleKiller: false,\n supportsSuspendResume: false,\n resumeIsLockFree: true, // resume = address the live NATS subject; no provider lock\n },\n // persistable:false forces snapshot.kind:\"none\" (the descriptor invariant\n // `persistable ⇒ snapshot.kind!==\"none\"`): OpenGeni cannot snapshot the\n // user's disk — the machine itself is the persistence.\n snapshot: { kind: \"none\", hasTarFallback: false },\n portExposure: { kind: \"provider-tunnel\", supportsOnDemandPorts: true },\n workspaceRoot: \"/\", // agent-reported machine root (the whole machine is the sandbox)\n nativeBucketMount: false,\n persistable: false,\n supportsRunAs: false,\n },\n // Optional Kubernetes-native provisioned sandbox through OpenSandbox.\n // Desktop-class when the box image includes ttyd/browserd/Xvfb: PTY over ttyd,\n // noVNC and browserd over signed URI-mode ingress. OpenGeni owns persistence\n // through its portable tar checkpoint path in object storage; native\n // OpenSandbox pause/resume and snapshots are deliberately not used.\n opensandbox: {\n backend: \"opensandbox\",\n backendId: \"opensandbox\",\n tier: \"desktop\",\n os: { supported: [\"linux\"], default: \"linux\" },\n capabilities: {\n FileSystem: { available: true, readOnly: false },\n Terminal: { available: true, transport: \"sse-events\", pty: true },\n Git: { available: true },\n DesktopStream: { available: true, transport: \"vnc-ws\" },\n Recording: { available: true },\n },\n lifetime: {\n requiresSnapshotRollover: false,\n hasIdleKiller: false,\n supportsSuspendResume: false,\n resumeIsLockFree: true,\n },\n snapshot: { kind: \"tar-only\", hasTarFallback: true },\n portExposure: { kind: \"provider-tunnel\", supportsOnDemandPorts: true },\n workspaceRoot: \"/workspace\",\n nativeBucketMount: false,\n persistable: true,\n supportsRunAs: false,\n },\n};\n\nexport const ReasoningEffort = z.enum([\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"]);\n\n/** Provider service-tier / latency mode selected for a turn or session default. */\nexport const LatencyMode = z.enum([\"standard\", \"priority\", \"fast\"]);\nexport type LatencyMode = z.infer<typeof LatencyMode>;\nexport type ReasoningEffort = z.infer<typeof ReasoningEffort>;\n\nexport const ErrorCode = z.enum([\n \"unauthenticated\",\n \"forbidden\",\n \"not_found\",\n \"validation_failed\",\n \"conflict\",\n \"idempotency_conflict\",\n \"payment_required\",\n \"limit_exceeded\",\n \"nested_agent_depth_exceeded\",\n \"nested_agent_depth_override_forbidden\",\n \"codex_compaction_v2_provider_locked\",\n \"provider_verification_failed\",\n \"upstream_unavailable\",\n \"internal_error\",\n]);\nexport type ErrorCode = z.infer<typeof ErrorCode>;\n\nexport const ErrorEnvelope = z.object({\n error: z.object({\n status: z.number().int().min(400).max(599),\n code: ErrorCode,\n message: z.string(),\n retryable: z.boolean(),\n outcomeUnknown: z.boolean().optional(),\n requestId: z.string().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n }),\n});\nexport type ErrorEnvelope = z.infer<typeof ErrorEnvelope>;\n\n/** A denied child can be one greater than the persisted PostgreSQL int ceiling. */\nexport const NestedAgentDepthAttemptValue = z\n .number()\n .int()\n .nonnegative()\n .max(MAX_NESTED_AGENT_DEPTH + 1);\n\nexport const NestedAgentDepthPolicySource = z.enum([\n \"session\",\n \"workspace\",\n \"deployment\",\n \"default\",\n]);\nexport type NestedAgentDepthPolicySource = z.infer<typeof NestedAgentDepthPolicySource>;\n\n/** Durable evidence for a session-create denial at the database admission boundary. */\nexport const SessionSpawnDenial = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n parentSessionId: z.string().uuid().nullable(),\n rootSessionId: z.string().uuid().nullable(),\n currentDepth: NestedAgentDepthValue,\n attemptedDepth: NestedAgentDepthAttemptValue,\n effectiveMaxNestedAgentDepth: NestedAgentDepthValue,\n requestedMaxNestedAgentDepthOverride: NestedAgentDepthValue.nullable(),\n policySource: NestedAgentDepthPolicySource,\n policySessionId: z.string().uuid().nullable(),\n subjectId: z.string().nullable(),\n code: z.enum([\"nested_agent_depth_exceeded\", \"nested_agent_depth_override_forbidden\"]),\n idempotencyKey: z.string().nullable(),\n createdAt: z.string(),\n});\nexport type SessionSpawnDenial = z.infer<typeof SessionSpawnDenial>;\n\n/**\n * Capability-first permissions signed into a session's first-party OpenGeni\n * MCP token when a top-level creator does not explicitly narrow them.\n *\n * Keep this contract shared by admission and runtime signing: a worker-signed\n * child whose parent was narrowed must inherit the parent's effective subset,\n * never fall back to a different runtime-local default.\n */\nexport const DEFAULT_FIRST_PARTY_MCP_PERMISSIONS = [\n \"workspace:read\",\n \"files:upload\",\n \"files:read\",\n \"documents:search\",\n \"scheduled_tasks:manage\",\n \"scheduled_tasks:run\",\n \"goals:manage\",\n \"sessions:read\",\n \"sessions:create\",\n \"sessions:control\",\n // Read-only connection discovery lets the selected first-party connector\n // tools resolve an already-installed workspace principal. Credentials stay\n // inside the broker and remain subject to each tool's own authorization.\n \"connections:read\",\n \"variable-sets:list\",\n \"variable-sets:write\",\n \"variable-sets:attach\",\n \"variable-sets:use\",\n \"secrets:list\",\n \"secrets:write\",\n \"rigs:use\",\n \"github:use\",\n \"artifacts:read\",\n \"artifacts:publish\",\n] as const satisfies readonly Permission[];\n\n/**\n * Exact public catalog for tools served by the broad first-party `opengeni`\n * MCP server. Adding a registration does not make it model-visible: the name\n * must be admitted here and selected by the session policy.\n *\n * `files_get_download_url` intentionally is not in this catalog. It belongs to\n * the dedicated `files` MCP server.\n */\nexport const FIRST_PARTY_MCP_TOOL_NAMES = [\n \"set_session_title\",\n \"goal_set\",\n \"goal_update\",\n \"goal_progress\",\n \"wait_for_input\",\n \"goal_complete\",\n \"goal_pause\",\n \"goal_resume\",\n \"memory_search\",\n \"memory_save\",\n \"memory_correct\",\n \"preference_registry_summary\",\n \"preference_registry_get\",\n \"task_notes_list\",\n \"task_note_save\",\n \"task_note_archive\",\n \"task_note_replace\",\n \"work_claim_upsert\",\n \"work_claim_release\",\n \"knowledge_propose\",\n \"knowledge_correct\",\n \"task_note_promote_knowledge\",\n \"task_note_promote_instruction_policy\",\n \"task_note_promote_preference\",\n \"instruction_policy_propose\",\n \"preference_propose\",\n \"remember\",\n \"remember_confirm\",\n \"company_profile_propose\",\n \"company_profile_confirm\",\n \"sandboxes_list\",\n \"sandbox_attach\",\n \"sandbox_swap\",\n \"run_on\",\n \"sandbox_provision\",\n \"connected_machine_remove\",\n \"project_list\",\n \"project_get\",\n \"project_create\",\n \"project_update\",\n \"project_reorder\",\n \"project_delete\",\n \"session_set_project\",\n \"rig_list\",\n \"rig_get\",\n \"rig_propose_change\",\n \"rig_verify\",\n \"rig_promote\",\n \"sessions_list\",\n \"session_get\",\n \"session_events\",\n \"session_wait\",\n \"command_wait\",\n \"command_read\",\n \"session_create\",\n \"session_send_message\",\n \"session_pause\",\n \"session_resume\",\n \"session_steer\",\n \"session_human_input_respond\",\n \"set_other_session_title\",\n \"interaction_discover\",\n \"browser_open\",\n \"browser_tabs\",\n \"browser_observe\",\n \"browser_act\",\n \"browser_clipboard\",\n \"browser_debug\",\n \"browser_auth\",\n \"interaction_request_human\",\n \"browser_identity\",\n \"browser_publish\",\n \"browser_lifecycle\",\n \"computer_open\",\n \"computer_targets\",\n \"computer_observe\",\n \"computer_clipboard\",\n \"computer_act\",\n \"computer_lifecycle\",\n \"variable_set_list\",\n \"environment_list\",\n \"variable_set_get_variable\",\n \"variable_set_set_variable\",\n \"environment_set_variable\",\n \"capability_catalog_search\",\n \"capability_authorization_request\",\n \"github_connect_link\",\n \"github_repositories_list\",\n \"social_connections_list\",\n \"social_posts_recent\",\n \"social_daily_analysis_context\",\n \"social_search_live\",\n \"social_mentions_live\",\n \"social_thread_fetch\",\n \"social_posts_sync\",\n \"social_post_reply\",\n \"x_accounts_list\",\n \"x_search_live\",\n \"x_mentions_live\",\n \"x_thread_fetch\",\n \"x_posts_sync\",\n \"x_post_reply\",\n \"reddit_accounts_list\",\n \"reddit_search_live\",\n \"reddit_mentions_live\",\n \"reddit_thread_fetch\",\n \"reddit_posts_sync\",\n \"reddit_post_reply\",\n \"scheduled_tasks_list\",\n \"scheduled_tasks_get\",\n \"scheduled_tasks_create\",\n \"scheduled_tasks_update\",\n \"scheduled_tasks_pause\",\n \"scheduled_tasks_resume\",\n \"scheduled_tasks_trigger\",\n \"scheduled_tasks_delete\",\n \"scheduled_task_runs_list\",\n \"slack_bot_list_channels\",\n \"slack_bot_search\",\n \"slack_bot_channel_history\",\n \"slack_bot_thread_replies\",\n \"slack_bot_list_users\",\n \"slack_bot_list_files\",\n \"slack_bot_file_info\",\n \"slack_bot_file_content\",\n \"slack_bot_post_message\",\n \"slack_bot_delete_message\",\n \"fiken_companies_list\",\n \"fiken_contacts_list\",\n \"fiken_contact_create\",\n \"fiken_products_list\",\n \"fiken_invoices_list\",\n \"fiken_invoice_get\",\n \"fiken_invoice_draft_create\",\n \"fiken_bank_accounts_list\",\n \"fiken_purchases_list\",\n \"fiken_sales_list\",\n \"atlassian_sources_list\",\n \"atlassian_search\",\n \"atlassian_get\",\n \"artifacts_list\",\n \"artifacts_get_source\",\n \"artifacts_prepare_upload\",\n \"artifacts_create\",\n \"artifacts_publish\",\n \"artifacts_rollback\",\n \"artifacts_archive\",\n \"artifacts_restore\",\n \"sandbox_file_publish\",\n \"editable_artifact_list\",\n \"editable_artifact_create\",\n \"editable_artifact_import\",\n \"editable_artifact_get\",\n \"editable_artifact_inspect\",\n \"editable_artifact_apply\",\n \"editable_artifact_export\",\n \"editable_artifact_export_status\",\n] as const;\nexport const FirstPartyMcpToolName = z.enum(FIRST_PARTY_MCP_TOOL_NAMES);\nexport type FirstPartyMcpToolName = z.infer<typeof FirstPartyMcpToolName>;\n\n/**\n * First-party interaction tools executed inside the frozen attempt rather than\n * registered on the remote `opengeni` MCP server. They still belong to the\n * same user-selectable first-party catalog and use the same attempt executor.\n */\nexport const FIRST_PARTY_IN_PROCESS_TOOL_NAMES = [\n \"interaction_discover\",\n \"browser_open\",\n \"browser_tabs\",\n \"browser_observe\",\n \"browser_act\",\n \"browser_clipboard\",\n \"browser_debug\",\n \"browser_auth\",\n \"interaction_request_human\",\n \"browser_identity\",\n \"browser_publish\",\n \"browser_lifecycle\",\n \"computer_open\",\n \"computer_targets\",\n \"computer_observe\",\n \"computer_clipboard\",\n \"computer_act\",\n \"computer_lifecycle\",\n] as const satisfies readonly FirstPartyMcpToolName[];\n\nconst FIRST_PARTY_IN_PROCESS_TOOL_NAME_SET = new Set<FirstPartyMcpToolName>(\n FIRST_PARTY_IN_PROCESS_TOOL_NAMES,\n);\n\n/**\n * Names accepted for stored-selection compatibility but intentionally omitted\n * from the remote first-party `opengeni` MCP server.\n *\n * `slack_bot_post_message` cannot accept a model/caller-supplied UUID as a\n * trustworthy logical-delivery identity. Server-owned Slack delivery paths\n * call the internal client directly with their own durable operation IDs.\n */\nconst FIRST_PARTY_COMPATIBILITY_ONLY_TOOL_NAMES = [\n \"slack_bot_post_message\",\n] as const satisfies readonly FirstPartyMcpToolName[];\n\nconst FIRST_PARTY_COMPATIBILITY_ONLY_TOOL_NAME_SET = new Set<FirstPartyMcpToolName>(\n FIRST_PARTY_COMPATIBILITY_ONLY_TOOL_NAMES,\n);\n\n/** Exact catalog registered by the remote first-party `opengeni` MCP server. */\nexport const FIRST_PARTY_REMOTE_MCP_TOOL_NAMES = FIRST_PARTY_MCP_TOOL_NAMES.filter(\n (name) =>\n !FIRST_PARTY_IN_PROCESS_TOOL_NAME_SET.has(name) &&\n !FIRST_PARTY_COMPATIBILITY_ONLY_TOOL_NAME_SET.has(name),\n) satisfies readonly FirstPartyMcpToolName[];\n\n/** Authored CodeMode paths for the canonical collaborative artifact surface. */\nexport const EDITABLE_ARTIFACT_MCP_CODEMODE_PATHS = {\n editable_artifact_list: [\"artifacts\", \"list\"],\n editable_artifact_create: [\"artifacts\", \"create\"],\n editable_artifact_import: [\"artifacts\", \"import\"],\n editable_artifact_get: [\"artifacts\", \"get\"],\n editable_artifact_inspect: [\"artifacts\", \"inspect\"],\n editable_artifact_apply: [\"artifacts\", \"apply\"],\n editable_artifact_export: [\"artifacts\", \"export\"],\n editable_artifact_export_status: [\"artifacts\", \"exportStatus\"],\n} as const satisfies Partial<Record<FirstPartyMcpToolName, readonly [string, string]>>;\n\n/**\n * Connector-wide tools are explicit-only. Ordinary session omission selects\n * the non-connector catalog, while an explicit session policy may still select\n * any catalogued connector tool and remains independently permission-gated.\n */\nexport const DEFAULT_FIRST_PARTY_MCP_TOOLS = FIRST_PARTY_MCP_TOOL_NAMES.filter(\n (name) =>\n !name.startsWith(\"social_\") &&\n !name.startsWith(\"x_\") &&\n !name.startsWith(\"reddit_\") &&\n !name.startsWith(\"slack_bot_\") &&\n !name.startsWith(\"fiken_\") &&\n !name.startsWith(\"atlassian_\"),\n) satisfies readonly FirstPartyMcpToolName[];\n\nexport function prefixedMcpToolName(registryId: string, toolName: string): string {\n return `${registryId}__${toolName}`;\n}\n\nexport const ProductAccessMode = z.enum([\"local\", \"configured\", \"managed\"]);\nexport type ProductAccessMode = z.infer<typeof ProductAccessMode>;\n\nexport const BillingMode = z.enum([\"disabled\", \"stripe\"]);\nexport type BillingMode = z.infer<typeof BillingMode>;\n\nexport const EntitlementsMode = z.enum([\"none\", \"static\", \"managed\"]);\nexport type EntitlementsMode = z.infer<typeof EntitlementsMode>;\n\nexport const UsageLimitsMode = z.enum([\"none\", \"static\", \"managed\"]);\nexport type UsageLimitsMode = z.infer<typeof UsageLimitsMode>;\n\nexport const AccountRole = z.enum([\"owner\", \"admin\", \"member\"]);\nexport type AccountRole = z.infer<typeof AccountRole>;\n\n/**\n * Settled tenancy vocabulary for resources that may outlive or be used from\n * more than one workspace. This names authority only; parsing one of these\n * contracts never authorizes access by itself.\n */\nexport const ResourceAuthorityScope = z.enum([\"organization\", \"workspace\", \"user\"]);\nexport type ResourceAuthorityScope = z.infer<typeof ResourceAuthorityScope>;\n\nexport const ResourceAuthorityListScope = z.enum([\n \"effective\",\n \"organization\",\n \"workspace\",\n \"user\",\n]);\nexport type ResourceAuthorityListScope = z.infer<typeof ResourceAuthorityListScope>;\n\nexport const OrganizationMembershipStatus = z.enum([\n \"provisioning\",\n \"active\",\n \"suspended\",\n \"revoked\",\n]);\nexport type OrganizationMembershipStatus = z.infer<typeof OrganizationMembershipStatus>;\n\nexport const PersonalResourceRetentionMode = z.enum([\"retain\", \"delete_after\"]);\nexport type PersonalResourceRetentionMode = z.infer<typeof PersonalResourceRetentionMode>;\n\nexport const SessionTenancyVisibility = z.enum([\"user_private\", \"workspace_shared\"]);\n\nexport const UserResourceAuthorityScope = z.literal(\"user\");\nexport const UserResourceKind = z.enum([\n \"connection\",\n \"document\",\n \"variable_set\",\n \"rig\",\n \"connected_machine\",\n]);\nexport type UserResourceKind = z.infer<typeof UserResourceKind>;\n\nexport const USER_RESOURCE_ACTION_BY_KIND = {\n connection: \"connection.use\",\n document: \"document.read\",\n variable_set: \"variable_set.use\",\n rig: \"rig.use\",\n connected_machine: \"connected_machine.use\",\n} as const satisfies Record<UserResourceKind, string>;\n\nexport const UserResourceLifecycleGrantMode = z.enum([\"once\", \"session\", \"always\"]);\nexport const PERSONAL_RESOURCE_SHARED_OUTPUT_WARNING_VERSION = 1 as const;\nexport const PERSONAL_RESOURCE_SHARED_OUTPUT_WARNING =\n \"Personal resources used in a workspace-shared session may influence outputs visible to other workspace members. The underlying credentials and secret values are not shared by the attachment itself.\";\n\n/**\n * Owner-authored issuance intent for the fixed personal Variable Set/Rig/\n * Connected Machine closure selected by one session. The server derives every resource,\n * authority and action from the locked session; callers never nominate grants.\n */\nexport const PersonalResourceAttachmentIntent = z\n .object({\n mode: UserResourceLifecycleGrantMode,\n expectedAuthorityEpoch: z.number().int().positive().optional(),\n workspaceSharedAcknowledged: z.boolean().default(false),\n sharedOutputWarningVersion: z.literal(PERSONAL_RESOURCE_SHARED_OUTPUT_WARNING_VERSION),\n })\n .strict();\nexport type PersonalResourceAttachmentIntent = z.infer<typeof PersonalResourceAttachmentIntent>;\n\nfunction requireEstablishedPersonalResourceEpoch(\n value: {\n personalResourceAttachment?: PersonalResourceAttachmentIntent | undefined;\n },\n context: z.RefinementCtx,\n): void {\n if (\n value.personalResourceAttachment !== undefined &&\n value.personalResourceAttachment.expectedAuthorityEpoch === undefined\n ) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"personalResourceAttachment\", \"expectedAuthorityEpoch\"],\n message: \"established-session attachment requires expectedAuthorityEpoch\",\n });\n }\n}\n\n/** Credential-free accepted-work projection. Resource ids remain private. */\nexport const PersonalResourceAttachmentSummary = z\n .object({\n mode: UserResourceLifecycleGrantMode,\n context: SessionTenancyVisibility,\n resourceCount: z.number().int().positive(),\n resourceKinds: z\n .array(z.enum([\"variable_set\", \"rig\", \"connected_machine\"]))\n .min(1)\n .max(3),\n sharedOutputWarningVersion: z.literal(PERSONAL_RESOURCE_SHARED_OUTPUT_WARNING_VERSION),\n })\n .strict();\nexport type PersonalResourceAttachmentSummary = z.infer<typeof PersonalResourceAttachmentSummary>;\n/** Public owner-management deliberately excludes race-prone standalone `once`. */\nexport const ManagedUserResourceGrantMode = z.enum([\"session\", \"always\"]);\nexport const UserResourceAuthorityGrant = z.object({\n grantId: z.string().uuid(),\n targetWorkspaceId: z.string().uuid(),\n targetSessionId: z.string().uuid().nullable(),\n action: z.enum([\n \"connection.use\",\n \"document.read\",\n \"variable_set.use\",\n \"rig.use\",\n \"connected_machine.use\",\n ]),\n mode: UserResourceLifecycleGrantMode,\n context: SessionTenancyVisibility,\n authorityEpoch: z.number().int().positive().nullable(),\n generation: z.number().int().positive(),\n status: z.enum([\"active\", \"consumed\", \"revoked\", \"expired\"]),\n expiresAt: z.string().datetime().nullable(),\n delegation: z.lazy(() => UserResourceDelegation),\n});\nexport const UserResourceAuthoritySummary = z.object({\n authorityId: z.string().uuid(),\n resourceKind: UserResourceKind,\n resourceId: z.string().uuid(),\n originWorkspaceId: z.string().uuid().nullable(),\n generation: z.number().int().positive(),\n status: z.enum([\"active\", \"retained\", \"revoked\"]),\n grants: z.array(UserResourceAuthorityGrant),\n});\nexport const ListUserResourceAuthoritiesQuery = z.object({\n scope: UserResourceAuthorityScope,\n resourceKind: UserResourceKind,\n cursor: z.string().uuid().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(50),\n});\nexport const ListUserResourceAuthoritiesResponse = z.object({\n scope: UserResourceAuthorityScope,\n authorities: z.array(UserResourceAuthoritySummary),\n nextCursor: z.string().uuid().nullable(),\n});\nexport const IssueUserResourceGrantRequest = z\n .object({\n scope: UserResourceAuthorityScope,\n resourceKind: UserResourceKind,\n mode: ManagedUserResourceGrantMode,\n context: SessionTenancyVisibility,\n sessionId: z.string().uuid().nullable().optional(),\n expectedAuthorityEpoch: z.number().int().positive().nullable().optional(),\n workspaceSharedAcknowledged: z.boolean().default(false),\n })\n .superRefine((value, context) => {\n if (value.context === \"workspace_shared\" && !value.workspaceSharedAcknowledged) {\n context.addIssue({\n code: \"custom\",\n path: [\"workspaceSharedAcknowledged\"],\n message: \"workspace_shared requires durable shared-output acknowledgement\",\n });\n }\n if (value.mode === \"always\" && (value.sessionId || value.expectedAuthorityEpoch)) {\n context.addIssue({\n code: \"custom\",\n path: [\"sessionId\"],\n message: \"always is unbound from session authority\",\n });\n }\n if (value.mode === \"session\" && (!value.sessionId || !value.expectedAuthorityEpoch)) {\n context.addIssue({\n code: \"custom\",\n path: [\"sessionId\"],\n message: \"session grants require a target session and expectedAuthorityEpoch\",\n });\n }\n });\nexport const UserResourceGrantMutationResponse = z.object({\n scope: UserResourceAuthorityScope,\n grant: UserResourceAuthorityGrant,\n});\nexport const UserResourceGrantRevocationResponse = z.object({\n scope: UserResourceAuthorityScope,\n grant: z.object({\n grantId: z.string().uuid(),\n generation: z.number().int().positive(),\n status: z.literal(\"revoked\"),\n revokedAt: z.string().datetime(),\n }),\n});\nexport const RevokeUserResourceGrantQuery = z.object({\n scope: UserResourceAuthorityScope,\n});\nexport type UserResourceAuthorityGrant = z.infer<typeof UserResourceAuthorityGrant>;\nexport type UserResourceAuthoritySummary = z.infer<typeof UserResourceAuthoritySummary>;\nexport type ListUserResourceAuthoritiesQuery = z.infer<typeof ListUserResourceAuthoritiesQuery>;\nexport type ListUserResourceAuthoritiesResponse = z.infer<\n typeof ListUserResourceAuthoritiesResponse\n>;\nexport type IssueUserResourceGrantRequest = z.infer<typeof IssueUserResourceGrantRequest>;\nexport type UserResourceGrantMutationResponse = z.infer<typeof UserResourceGrantMutationResponse>;\nexport type UserResourceGrantRevocationResponse = z.infer<\n typeof UserResourceGrantRevocationResponse\n>;\nexport type SessionTenancyVisibility = z.infer<typeof SessionTenancyVisibility>;\n\n/** Public/session API vocabulary. Persistence keeps the explicit tenancy names. */\nexport const SessionVisibility = z.enum([\"private\", \"workspace\"]);\nexport type SessionVisibility = z.infer<typeof SessionVisibility>;\n\nexport function sessionVisibilityToPublic(value: SessionTenancyVisibility): SessionVisibility {\n return value === \"user_private\" ? \"private\" : \"workspace\";\n}\n\nexport function sessionVisibilityFromPublic(value: SessionVisibility): SessionTenancyVisibility {\n return value === \"private\" ? \"user_private\" : \"workspace_shared\";\n}\n\nexport const UserResourceGrantMode = z.enum([\"once\", \"session\", \"always\"]);\nexport type UserResourceGrantMode = z.infer<typeof UserResourceGrantMode>;\n\n/** Canonical non-wildcard action named by a personal-resource grant. */\nexport const UserResourceGrantAction = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-z0-9](?:[a-z0-9._:-]*[a-z0-9])?$/u);\nexport type UserResourceGrantAction = z.infer<typeof UserResourceGrantAction>;\n\nexport const UserResourceGrantStatus = z.enum([\"active\", \"consumed\", \"revoked\", \"expired\"]);\nexport type UserResourceGrantStatus = z.infer<typeof UserResourceGrantStatus>;\n\nfunction refineUserResourceGrantFence(\n value: {\n mode: UserResourceGrantMode;\n sessionId: string | null;\n authorityEpoch: number | null;\n },\n context: z.RefinementCtx,\n): void {\n const sessionBoundMode = value.mode === \"once\" || value.mode === \"session\";\n const hasSession = value.sessionId !== null;\n const hasAuthorityEpoch = value.authorityEpoch !== null;\n\n if (sessionBoundMode && !hasSession) {\n context.addIssue({\n code: \"custom\",\n path: [\"sessionId\"],\n message: \"once and session grants require an exact sessionId\",\n });\n }\n if (sessionBoundMode && !hasAuthorityEpoch) {\n context.addIssue({\n code: \"custom\",\n path: [\"authorityEpoch\"],\n message: \"once and session grants require an authorityEpoch fence\",\n });\n }\n if (!sessionBoundMode && (hasSession || hasAuthorityEpoch)) {\n context.addIssue({\n code: \"custom\",\n path: [\"mode\"],\n message: \"always grants must not carry a session or authority-epoch fence\",\n });\n }\n if (hasSession !== hasAuthorityEpoch) {\n context.addIssue({\n code: \"custom\",\n path: [\"authorityEpoch\"],\n message: \"sessionId and authorityEpoch must be present or absent together\",\n });\n }\n}\n\n/** Self-only organization membership projection; no subject identifier leaks. */\nexport const OrganizationMembershipProjection = z.object({\n id: z.string().uuid(),\n organizationId: z.string().uuid(),\n status: OrganizationMembershipStatus,\n personalWorkspaceId: z.string().uuid().nullable(),\n personalRetentionUntil: z.string().datetime({ offset: true }).nullable(),\n});\nexport type OrganizationMembershipProjection = z.infer<typeof OrganizationMembershipProjection>;\n\n/**\n * Exact active-membership facts returned by managed-human login provisioning.\n * Retention is intentionally absent because the narrow provisioning capability\n * neither reads nor mutates offboarding policy.\n */\nexport const ManagedOrganizationMembershipProjection = z.object({\n id: z.string().uuid(),\n organizationId: z.string().uuid(),\n status: z.literal(\"active\"),\n personalWorkspaceId: z.string().uuid(),\n});\nexport type ManagedOrganizationMembershipProjection = z.infer<\n typeof ManagedOrganizationMembershipProjection\n>;\n\nexport const ListManagedOrganizationMembershipsResponse = z.object({\n memberships: z.array(ManagedOrganizationMembershipProjection),\n});\nexport type ListManagedOrganizationMembershipsResponse = z.infer<\n typeof ListManagedOrganizationMembershipsResponse\n>;\n\n/**\n * Opaque user-resource authority projection. Ownership is represented by the\n * server-issued authority id, never a raw subject or membership id.\n */\nexport const UserResourceAuthorityProjection = z.object({\n id: z.string().uuid(),\n organizationId: z.string().uuid(),\n scope: z.literal(\"user\"),\n resourceKind: z.string().min(1).max(64),\n originWorkspaceId: z.string().uuid().nullable(),\n generation: z.number().int().positive(),\n status: z.enum([\"active\", \"retained\", \"revoked\"]),\n});\nexport type UserResourceAuthorityProjection = z.infer<typeof UserResourceAuthorityProjection>;\n\n/**\n * Opaque grant projection. A grant is still inert until a server-side access\n * boundary proves the organization, owner, workspace, session context, and\n * current authority epoch.\n */\nexport const UserResourceGrantProjection = z\n .object({\n id: z.string().uuid(),\n authorityId: z.string().uuid(),\n organizationId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid().nullable(),\n action: UserResourceGrantAction,\n mode: UserResourceGrantMode,\n context: SessionTenancyVisibility,\n authorityEpoch: z.number().int().positive().nullable(),\n generation: z.number().int().positive(),\n status: UserResourceGrantStatus,\n expiresAt: z.string().datetime({ offset: true }).nullable(),\n })\n .superRefine(refineUserResourceGrantFence);\nexport type UserResourceGrantProjection = z.infer<typeof UserResourceGrantProjection>;\n\n/**\n * Extensible immutable delegation payload for accepted work. It contains only\n * opaque authority/grant identity and execution fences, never owner identity\n * or credential material.\n */\nexport const UserResourceDelegation = z\n .object({\n authorityId: z.string().uuid(),\n grantId: z.string().uuid(),\n organizationId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid().nullable(),\n action: UserResourceGrantAction,\n mode: UserResourceGrantMode,\n context: SessionTenancyVisibility,\n authorityEpoch: z.number().int().positive().nullable(),\n authorityGeneration: z.number().int().positive(),\n grantGeneration: z.number().int().positive(),\n resourceVersionId: z.string().uuid().nullable().optional(),\n })\n .superRefine(refineUserResourceGrantFence);\nexport type UserResourceDelegation = z.infer<typeof UserResourceDelegation>;\n\n/**\n * Compatibility envelope for future resource selectors. Omitted scope and\n * authority parse to workspace-only behavior; user authority is impossible\n * without one complete opaque delegation.\n */\nexport const ResourceAuthorityEnvelope = z\n .object({\n scope: ResourceAuthorityScope.default(\"workspace\"),\n userDelegation: UserResourceDelegation.optional(),\n })\n .superRefine((value, context) => {\n if (value.scope === \"user\" && value.userDelegation === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"userDelegation\"],\n message: \"user scope requires an explicit immutable delegation\",\n });\n }\n if (value.scope !== \"user\" && value.userDelegation !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"userDelegation\"],\n message: \"only user scope may carry a user delegation\",\n });\n }\n });\nexport type ResourceAuthorityEnvelope = z.infer<typeof ResourceAuthorityEnvelope>;\n\n/** Secret-safe generic session tenancy metadata for an authorized viewer. */\nexport const SessionTenancyProjection = z.object({\n visibility: SessionTenancyVisibility,\n authorityEpoch: z.number().int().positive(),\n ownedByCurrentUser: z.boolean(),\n fork: z\n .object({\n sourceVisibility: SessionTenancyVisibility,\n sourceAuthorityEpoch: z.number().int().positive(),\n forkedAt: z.string().datetime({ offset: true }),\n })\n .nullable(),\n});\nexport type SessionTenancyProjection = z.infer<typeof SessionTenancyProjection>;\n\n/** Secret-safe public projection used by activated session APIs. */\nexport const SessionTenancyPublicProjection = z.object({\n visibility: SessionVisibility,\n authorityEpoch: z.number().int().positive(),\n ownedByCurrentUser: z.boolean(),\n fork: z\n .object({\n sourceVisibility: SessionVisibility,\n sourceAuthorityEpoch: z.number().int().positive(),\n forkedAt: z.string().datetime({ offset: true }),\n })\n .nullable(),\n});\nexport type SessionTenancyPublicProjection = z.infer<typeof SessionTenancyPublicProjection>;\n\nexport const SessionTenancyBlocker = z.enum([\n \"nonterminal_turn\",\n \"nonterminal_attempt\",\n \"unsettled_interruption\",\n \"pending_system_update\",\n \"pending_human_input\",\n \"pending_tool_receipt\",\n \"run_state\",\n \"active_goal\",\n \"capacity_waiter\",\n \"active_realtime\",\n \"active_scheduled_task\",\n \"workspace_mutation_admission\",\n \"retained_process\",\n \"active_sandbox_access\",\n \"shared_sandbox_group\",\n]);\nexport type SessionTenancyBlocker = z.infer<typeof SessionTenancyBlocker>;\n\nexport const SESSION_OPERATION_KEY_MAX_CHARS = 256;\nexport const MAX_SELECTED_VARIABLE_SETS = 25;\nconst SessionTenancyIdempotencyKey = z.string().trim().min(1).max(SESSION_OPERATION_KEY_MAX_CHARS);\n\nexport const UpdateSessionVisibilityRequest = z\n .object({\n visibility: SessionVisibility,\n expectedAuthorityEpoch: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n idempotencyKey: SessionTenancyIdempotencyKey,\n })\n .strict();\nexport type UpdateSessionVisibilityRequest = z.infer<typeof UpdateSessionVisibilityRequest>;\n\nexport const UpdateSessionVisibilityResponse = z\n .object({\n operationId: z.string().uuid(),\n eventId: z.string().uuid().nullable(),\n eventSequence: z.number().int().positive().nullable(),\n visibility: SessionVisibility,\n authorityEpoch: z.number().int().positive(),\n changed: z.boolean(),\n replay: z.boolean(),\n revokedGrantCount: z.number().int().nonnegative(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.changed !== (value.eventId !== null && value.eventSequence !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"changed\"],\n message: \"changed must match the presence of the durable event receipt\",\n });\n }\n if ((value.eventId === null) !== (value.eventSequence === null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"eventId\"],\n message: \"eventId and eventSequence must be present or absent together\",\n });\n }\n });\nexport type UpdateSessionVisibilityResponse = z.infer<typeof UpdateSessionVisibilityResponse>;\n\nexport const ForkSessionRequest = z\n .object({\n sourceEventId: z.string().uuid().optional(),\n idempotencyKey: SessionTenancyIdempotencyKey,\n visibility: SessionVisibility,\n workspaceSharedAcknowledged: z.boolean(),\n // Optional fresh-session runtime setup. Omission preserves the historical\n // content-only fork; explicit null/[] creates a rigless, set-free restart.\n rigId: z.string().uuid().nullable().optional(),\n variableSetIds: z.array(z.string().uuid()).max(MAX_SELECTED_VARIABLE_SETS).optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.sourceEventId && (value.rigId !== undefined || value.variableSetIds !== undefined)) {\n context.addIssue({\n code: \"custom\",\n path: [\"sourceEventId\"],\n message: \"Message forks cannot replace runtime setup\",\n });\n }\n if (value.visibility === \"private\" && value.workspaceSharedAcknowledged) {\n context.addIssue({\n code: \"custom\",\n path: [\"workspaceSharedAcknowledged\"],\n message: \"workspaceSharedAcknowledged must be false for a private destination\",\n });\n }\n if (\n value.variableSetIds &&\n new Set(value.variableSetIds).size !== value.variableSetIds.length\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"variableSetIds\"],\n message: \"variableSetIds must not contain duplicates\",\n });\n }\n });\nexport type ForkSessionRequest = z.infer<typeof ForkSessionRequest>;\n\nexport const ForkSessionResponse = z\n .object({\n operationId: z.string().uuid(),\n eventId: z.string().uuid(),\n eventSequence: z.number().int().positive(),\n sessionId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n visibility: SessionVisibility,\n authorityEpoch: z.literal(1),\n copiedHistoryItemCount: z.number().int().nonnegative(),\n replay: z.boolean(),\n })\n .strict();\nexport type ForkSessionResponse = z.infer<typeof ForkSessionResponse>;\n\nexport const ManagedAccount = z.object({\n id: z.string().uuid(),\n name: z.string(),\n externalSource: z.string().nullable(),\n externalId: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type ManagedAccount = z.infer<typeof ManagedAccount>;\n\nexport const WorkspacePauseTimer = z.object({\n id: z.string().uuid(),\n action: z.enum([\"pause\", \"resume\"]),\n dueAt: z.string().datetime(),\n pauseForSeconds: z.number().int().min(60).max(2592000).nullable(),\n});\nexport type WorkspacePauseTimer = z.infer<typeof WorkspacePauseTimer>;\nexport const WorkspacePauseTimerRequest = z\n .object({\n action: z.enum([\"set\", \"cancel\"]),\n pauseInSeconds: z\n .number()\n .int()\n .min(0)\n .max(2592000)\n .refine((v) => v === 0 || v >= 60)\n .optional(),\n pauseForSeconds: z.number().int().min(60).max(2592000).nullable().optional(),\n clientEventId: z.string().min(1).max(200),\n expectedRevision: z.number().int().nonnegative(),\n })\n .strict();\nexport type WorkspacePauseTimerRequest = z.infer<typeof WorkspacePauseTimerRequest>;\n\nexport const Workspace = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n kind: z.enum([\"personal\", \"shared\"]),\n name: z.string(),\n slug: z.string().nullable(),\n externalSource: z.string().nullable(),\n externalId: z.string().nullable(),\n // Per-workspace agent persona template (white-label override). null means\n // the deployment default (OPENGENI_AGENT_INSTRUCTIONS_TEMPLATE /\n // DEFAULT_AGENT_INSTRUCTIONS) is used. The runtime always injects the\n // non-bypassable CORE (goal-loop ownership + variableSet block), so an\n // override restyles the persona without dropping that contract.\n agentInstructions: z.string().nullable(),\n // Growth-ready per-workspace settings bag (migration 0045). Known keys are\n // validated by WorkspaceSettingsSchema; unknown keys are preserved across\n // PATCH merges so newer settings survive an older server.\n settings: z.record(z.string(), z.unknown()),\n inferenceControl: z.object({\n timer: WorkspacePauseTimer.nullable().optional(),\n serverTime: z.string().optional(),\n state: z.enum([\"active\", \"paused\"]),\n revision: z.number().int().nonnegative(),\n reason: z.string().nullable(),\n changedBy: z.string().nullable(),\n changedAt: z.string().nullable(),\n }),\n // Workspace default rig used by session/scheduled-task create fallback.\n defaultRigId: z.string().uuid().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type Workspace = z.infer<typeof Workspace>;\n\nexport const WorkspaceTranscriptionTarget = z\n .object({\n provider: z.string().trim().min(1).max(128),\n model: z.string().trim().min(1).max(256).nullable(),\n credentialMode: z.enum([\"managed\", \"byok\"]),\n // A workspace-scoped connection reference, never credential material.\n credentialConnectionId: z.string().uuid().nullable(),\n region: z.string().trim().min(1).max(128).nullable(),\n })\n .strict()\n .superRefine((target, context) => {\n if (target.provider === \"azure-speech\" && target.credentialMode !== \"byok\") {\n context.addIssue({\n code: \"custom\",\n path: [\"credentialMode\"],\n message: \"Azure Speech is supported only through workspace BYOK\",\n });\n }\n if (target.credentialMode === \"byok\" && target.credentialConnectionId === null) {\n context.addIssue({\n code: \"custom\",\n path: [\"credentialConnectionId\"],\n message: \"BYOK transcription targets require a workspace connection reference\",\n });\n }\n if (target.credentialMode === \"managed\" && target.credentialConnectionId !== null) {\n context.addIssue({\n code: \"custom\",\n path: [\"credentialConnectionId\"],\n message: \"managed transcription targets cannot name a BYOK connection\",\n });\n }\n });\nexport type WorkspaceTranscriptionTarget = z.infer<typeof WorkspaceTranscriptionTarget>;\n\nexport const TranscriptionErrorCode = z.enum([\n \"permission_denied\",\n \"not_supported\",\n \"network\",\n \"provider\",\n \"policy_blocked\",\n \"timeout\",\n \"cancelled\",\n \"unavailable\",\n \"too_large\",\n \"invalid_audio\",\n \"unknown\",\n]);\nexport type TranscriptionErrorCode = z.infer<typeof TranscriptionErrorCode>;\n\n/** Stable user-safe error codes for the native voice-input transcription path. */\nexport const VoiceInputErrorCode = TranscriptionErrorCode;\nexport type VoiceInputErrorCode = TranscriptionErrorCode;\n\nexport const TranscriptionTimeSpan = z\n .object({\n startMilliseconds: z.number().finite().nonnegative(),\n endMilliseconds: z.number().finite().nonnegative(),\n })\n .strict()\n .superRefine((span, context) => {\n if (span.endMilliseconds < span.startMilliseconds) {\n context.addIssue({\n code: \"custom\",\n path: [\"endMilliseconds\"],\n message: \"transcription spans must not end before they start\",\n });\n }\n });\nexport type TranscriptionTimeSpan = z.infer<typeof TranscriptionTimeSpan>;\n\nexport const TranscriptionSpeaker = z\n .object({\n id: z.string().trim().min(1).max(128),\n label: z.string().trim().min(1).max(128).optional(),\n })\n .strict();\nexport type TranscriptionSpeaker = z.infer<typeof TranscriptionSpeaker>;\n\nexport const TranscriptionWord = z\n .object({\n text: z.string().min(1).max(4096),\n span: TranscriptionTimeSpan,\n confidence: z.number().finite().min(0).max(1).optional(),\n speaker: TranscriptionSpeaker.optional(),\n })\n .strict();\nexport type TranscriptionWord = z.infer<typeof TranscriptionWord>;\n\nexport const TranscriptionResultMetadata = z\n .object({\n detectedLanguage: z.string().trim().min(1).max(64).optional(),\n span: TranscriptionTimeSpan.optional(),\n confidence: z.number().finite().min(0).max(1).optional(),\n speaker: TranscriptionSpeaker.optional(),\n words: z.array(TranscriptionWord).max(10_000).optional(),\n })\n .strict()\n .superRefine((metadata, context) => {\n let previousStart = -1;\n for (const [index, word] of (metadata.words ?? []).entries()) {\n if (word.span.startMilliseconds < previousStart) {\n context.addIssue({\n code: \"custom\",\n path: [\"words\", index, \"span\", \"startMilliseconds\"],\n message: \"transcription words must be ordered by start time\",\n });\n }\n previousStart = word.span.startMilliseconds;\n if (\n metadata.span &&\n (word.span.startMilliseconds < metadata.span.startMilliseconds ||\n word.span.endMilliseconds > metadata.span.endMilliseconds)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"words\", index, \"span\"],\n message: \"transcription word spans must fall within the result span\",\n });\n }\n }\n });\nexport type TranscriptionResultMetadata = z.infer<typeof TranscriptionResultMetadata>;\n\nconst TranscriptionEventBase = z\n .object({\n localSessionId: z.string().min(1).max(256),\n sequence: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n occurredAt: z.string().datetime({ offset: true }),\n })\n .strict();\n\n/** Strict provider-neutral event surface; provider payload bags are rejected. */\nexport const TranscriptionEvent = z.discriminatedUnion(\"type\", [\n TranscriptionEventBase.extend({ type: z.literal(\"permission.requested\") }),\n TranscriptionEventBase.extend({\n type: z.literal(\"session.opened\"),\n providerSessionId: z.string().min(1).max(512),\n }),\n TranscriptionEventBase.extend({\n type: z.literal(\"transcript.partial\"),\n segmentId: z.string().min(1).max(512),\n text: z.string().max(1_000_000),\n metadata: TranscriptionResultMetadata.optional(),\n }),\n TranscriptionEventBase.extend({\n type: z.literal(\"transcript.final\"),\n segmentId: z.string().min(1).max(512),\n text: z.string().max(1_000_000),\n providerAcceptanceId: z.string().min(1).max(512),\n metadata: TranscriptionResultMetadata.optional(),\n }),\n TranscriptionEventBase.extend({\n type: z.literal(\"usage\"),\n audioMilliseconds: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n costUsd: z.number().finite().nonnegative().max(1_000_000_000).nullable(),\n }),\n TranscriptionEventBase.extend({\n type: z.literal(\"session.reconnecting\"),\n attempt: z.number().int().nonnegative().max(10_000),\n reason: z.string().min(1).max(256),\n }),\n TranscriptionEventBase.extend({\n type: z.literal(\"session.error\"),\n code: TranscriptionErrorCode,\n recoverable: z.boolean(),\n }),\n TranscriptionEventBase.extend({\n type: z.literal(\"session.closed\"),\n reason: z.enum([\"completed\", \"cancelled\", \"error\", \"replaced\"]),\n }),\n]);\nexport type TranscriptionEvent = z.infer<typeof TranscriptionEvent>;\n\n/**\n * @deprecated Host-adapter transcription policy. Kept for one release so existing\n * workspace settings remain readable. New writes use `WorkspaceVoiceInputSettings`.\n *\n * Workspace-only policy for the distinct speech-to-text capability. It never\n * authorizes a turn model/provider and contains connection references rather\n * than secrets. `acceptanceId` changes whenever an admin accepts a new target\n * set, so clients can bind a microphone session to one exact policy revision.\n */\nexport const WorkspaceTranscriptionPolicy = z\n .object({\n enabled: z.boolean(),\n acceptanceId: z.string().uuid().nullable(),\n primary: WorkspaceTranscriptionTarget.nullable(),\n language: z.string().trim().min(1).max(64).nullable(),\n autoDetectLanguage: z.boolean(),\n diarization: z\n .object({\n enabled: z.boolean(),\n maxSpeakers: z.number().int().min(2).max(100).nullable(),\n })\n .strict(),\n retention: z\n .object({\n mode: z.enum([\"none\", \"provider-policy\"]),\n maxDays: z.number().int().nonnegative().max(3650).nullable(),\n })\n .strict(),\n privacy: z\n .object({\n allowProviderLogging: z.boolean(),\n allowProviderTraining: z.boolean(),\n })\n .strict(),\n fallback: z\n .object({\n mode: z.enum([\"disabled\", \"explicit\"]),\n targets: z.array(WorkspaceTranscriptionTarget).max(8),\n })\n .strict(),\n cost: z\n .object({\n currency: z.literal(\"USD\"),\n maxPerHour: z.number().finite().nonnegative().max(10_000).nullable(),\n maxPerMonth: z.number().finite().nonnegative().max(1_000_000).nullable(),\n })\n .strict(),\n })\n .strict()\n .superRefine((policy, context) => {\n if (policy.enabled && policy.acceptanceId === null) {\n context.addIssue({\n code: \"custom\",\n path: [\"acceptanceId\"],\n message: \"enabled transcription requires an accepted policy identity\",\n });\n }\n if (policy.enabled && policy.primary === null) {\n context.addIssue({\n code: \"custom\",\n path: [\"primary\"],\n message: \"enabled transcription requires a primary target\",\n });\n }\n if (policy.enabled && !policy.autoDetectLanguage && policy.language === null) {\n context.addIssue({\n code: \"custom\",\n path: [\"language\"],\n message: \"enabled transcription requires a language or accepted automatic detection\",\n });\n }\n if (policy.autoDetectLanguage && policy.language !== null) {\n context.addIssue({\n code: \"custom\",\n path: [\"language\"],\n message: \"automatic language detection and a fixed language are mutually exclusive\",\n });\n }\n if (!policy.diarization.enabled && policy.diarization.maxSpeakers !== null) {\n context.addIssue({\n code: \"custom\",\n path: [\"diarization\", \"maxSpeakers\"],\n message: \"disabled diarization cannot retain a speaker limit\",\n });\n }\n if (policy.fallback.mode === \"disabled\" && policy.fallback.targets.length > 0) {\n context.addIssue({\n code: \"custom\",\n path: [\"fallback\", \"targets\"],\n message: \"disabled fallback cannot retain accepted targets\",\n });\n }\n if (policy.fallback.mode === \"explicit\" && policy.fallback.targets.length === 0) {\n context.addIssue({\n code: \"custom\",\n path: [\"fallback\", \"targets\"],\n message: \"explicit fallback requires at least one accepted target\",\n });\n }\n const targetKeys = [policy.primary, ...policy.fallback.targets]\n .filter((target): target is WorkspaceTranscriptionTarget => target !== null)\n .map((target) =>\n [\n target.provider,\n target.model ?? \"\",\n target.credentialMode,\n target.credentialConnectionId ?? \"\",\n target.region ?? \"\",\n ].join(\"\\u0000\"),\n );\n if (new Set(targetKeys).size !== targetKeys.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"fallback\", \"targets\"],\n message: \"transcription targets must be unique\",\n });\n }\n });\nexport type WorkspaceTranscriptionPolicy = z.infer<typeof WorkspaceTranscriptionPolicy>;\n\n/**\n * Workspace voice-input preferences. Public provider identifiers express the\n * preferred billing route; credentials and model configuration remain private.\n */\nexport const VoiceInputProviderId = z.enum([\n \"supergrok-subscription\",\n \"codex-subscription\",\n \"openai\",\n \"azure-openai\",\n]);\nexport type VoiceInputProviderId = z.infer<typeof VoiceInputProviderId>;\n\nexport const WorkspaceVoiceInputSettings = z\n .object({\n enabled: z.boolean(),\n preferredProvider: VoiceInputProviderId.nullable().optional(),\n fallbackEnabled: z.boolean().optional(),\n })\n .strict();\nexport type WorkspaceVoiceInputSettings = z.infer<typeof WorkspaceVoiceInputSettings>;\n\n/** Model policy inherited by newly created chats and scheduled tasks. */\nexport const WorkspaceSessionDefaults = z\n .object({\n model: z.string().trim().min(1).max(256),\n reasoningEffort: ReasoningEffort,\n })\n .strict();\nexport type WorkspaceSessionDefaults = z.infer<typeof WorkspaceSessionDefaults>;\n\n/**\n * Exact capability selection inherited by new top-level sessions.\n *\n * The product UI presents understandable capability groups, but persistence\n * stays source-of-truth exact: MCP server ids and first-party tool names. This\n * keeps the runtime independent from presentation labels and lets a session\n * narrow the resulting policy without changing the workspace default.\n */\nexport const WorkspaceSessionToolDefaults = z\n .object({\n mcpServerIds: z\n .array(z.string().trim().min(1).max(128))\n .max(128)\n .transform((ids) => [...new Set(ids)])\n .optional(),\n firstPartyMcpTools: z\n .array(FirstPartyMcpToolName)\n .max(512)\n .transform((tools) => [...new Set(tools)])\n .optional(),\n })\n .strict();\nexport type WorkspaceSessionToolDefaults = z.infer<typeof WorkspaceSessionToolDefaults>;\n\n// Omitted keys preserve the stored selection; null removes only that override.\nexport const WorkspaceSessionToolDefaultsPatch = z\n .object({\n mcpServerIds: WorkspaceSessionToolDefaults.shape.mcpServerIds.nullable(),\n firstPartyMcpTools: WorkspaceSessionToolDefaults.shape.firstPartyMcpTools.nullable(),\n })\n .strict();\n\n/** Client-safe voice-input capability projection. Never includes provider secrets. */\nexport const ClientVoiceInputConfig = z\n .object({\n available: z.boolean(),\n providers: z.array(VoiceInputProviderId).optional(),\n maxDurationSeconds: z.number().int().positive().max(600),\n maxSizeBytes: z\n .number()\n .int()\n .positive()\n .max(25 * 1024 * 1024),\n acceptedMimeTypes: z.array(z.string().trim().min(1).max(128)).min(1).max(32),\n resumable: ClientResumableVoiceInputConfig.optional(),\n })\n .strict();\nexport type ClientVoiceInputConfig = z.infer<typeof ClientVoiceInputConfig>;\n\n/** Response from POST /v1/workspaces/:workspaceId/transcriptions. */\nexport const TranscribeAudioResponse = z\n .object({\n text: z.string().max(1_000_000),\n languages: z.array(z.string().trim().min(1).max(64)).max(16).default([]),\n })\n .strict();\nexport type TranscribeAudioResponse = z.infer<typeof TranscribeAudioResponse>;\n\n/** Default safety ceiling for one-shot native voice input (60 seconds). */\nexport const VOICE_INPUT_MAX_DURATION_SECONDS = 60 as const;\nexport const VOICE_INPUT_MAX_SIZE_BYTES = 25 * 1024 * 1024;\nexport const VOICE_INPUT_ACCEPTED_MIME_TYPES = [\n \"audio/webm\",\n \"audio/webm;codecs=opus\",\n \"audio/mp4\",\n \"audio/ogg\",\n \"audio/ogg;codecs=opus\",\n \"audio/mpeg\",\n \"audio/wav\",\n \"audio/x-wav\",\n \"audio/mp3\",\n \"audio/m4a\",\n] as const;\n\nexport * from \"./transcription-recordings\";\n\n/** Per-session / workspace Codex compaction strategy. */\nexport const CodexCompactionMode = z.enum([\"remote_v2\", \"portable\"]);\nexport type CodexCompactionMode = z.infer<typeof CodexCompactionMode>;\n\nexport const SlackReactionEmojiName = z.literal(\"genie\");\nexport type SlackReactionEmojiName = z.infer<typeof SlackReactionEmojiName>;\n\nexport const WorkspaceSlackReactionChannelPolicy = z.discriminatedUnion(\"mode\", [\n z.object({ mode: z.literal(\"bot_member\") }).strict(),\n z\n .object({\n mode: z.literal(\"allowlist\"),\n channelIds: z.array(z.string().trim().min(1).max(64)).max(100),\n })\n .strict(),\n]);\nexport type WorkspaceSlackReactionChannelPolicy = z.infer<\n typeof WorkspaceSlackReactionChannelPolicy\n>;\n\nexport const WorkspaceSlackReactionSummonSettings = z\n .object({\n enabled: z.boolean(),\n emoji: SlackReactionEmojiName,\n channelPolicy: WorkspaceSlackReactionChannelPolicy,\n })\n .strict();\nexport type WorkspaceSlackReactionSummonSettings = z.infer<\n typeof WorkspaceSlackReactionSummonSettings\n>;\n\nexport const SlackReactionChannel = z.object({\n id: z.string().min(1).max(64),\n name: z.string().min(1).max(256).nullable(),\n isPrivate: z.boolean(),\n});\nexport type SlackReactionChannel = z.infer<typeof SlackReactionChannel>;\n\nexport const SlackReactionChannelListResponse = z.object({\n channels: z.array(SlackReactionChannel).max(200),\n nextCursor: z.string().max(1_024).nullable(),\n});\nexport type SlackReactionChannelListResponse = z.infer<typeof SlackReactionChannelListResponse>;\n\n/** Where one Slack channel starts work. */\nexport const SlackChannelRoute = z.object({\n slackChannelId: z.string().min(1).max(64),\n targetWorkspaceId: z.string().uuid(),\n // Unbounded like `Workspace.name` itself: a cap here would reject a row the\n // database happily holds.\n targetWorkspaceName: z.string().min(1).nullable(),\n source: z.enum([\"picker\", \"admin\"]),\n updatedAt: z.string(),\n});\nexport type SlackChannelRoute = z.infer<typeof SlackChannelRoute>;\n\nexport const SlackChannelRouteListResponse = z.object({\n /** Every stored route. Bounded in practice by the channels the bot is in. */\n routes: z.array(SlackChannelRoute),\n /**\n * Whether routing is switched on for this deployment. With it off the stored\n * routes are inert, so the surface says so instead of implying they apply.\n */\n routingEnabled: z.boolean(),\n});\nexport type SlackChannelRouteListResponse = z.infer<typeof SlackChannelRouteListResponse>;\n\nexport const UpdateSlackChannelRoutesRequest = z.object({\n connectionId: z.string().uuid(),\n routes: z\n .array(\n z.object({\n slackChannelId: z.string().min(1).max(64),\n /** Null clears the route, so the channel asks once again. */\n targetWorkspaceId: z.string().uuid().nullable(),\n }),\n )\n .max(200),\n});\nexport type UpdateSlackChannelRoutesRequest = z.infer<typeof UpdateSlackChannelRoutesRequest>;\n\nexport const DEFAULT_WORKSPACE_SLACK_REACTION_SUMMON_SETTINGS = {\n enabled: false,\n emoji: \"genie\",\n channelPolicy: { mode: \"bot_member\" },\n} as const satisfies WorkspaceSlackReactionSummonSettings;\n\n/**\n * Per-workspace switches for the two Slack orchestration notices: a pointer\n * card when a child worker of a Slack-originated session blocks on human input\n * or a tool approval, and a one-line notice when that session's goal pauses for\n * budget or the continuation cap.\n *\n * Both are OFF unless this workspace explicitly turned them on. An unsolicited\n * Slack post is worse than a missed one, and the in-app rail and priority feed\n * already surface a blocked child, so an absent, malformed, or partially\n * invalid setting resolves to both disabled - see\n * `resolveWorkspaceSlackOrchestrationNoticeSettings`.\n *\n * Deliberately not `.strict()`: this is a KNOWN key of the stored settings bag,\n * so rejecting it rejects the whole bag and silently reverts memoryEnabled,\n * agentHumanInputEnabled, codexCompactionDefault, voiceInput, and the Slack\n * reaction shortcut to their defaults too. An unknown key here is a notice a\n * newer release added, and a rollback must not cost five unrelated settings.\n * An invalid VALUE still fails the bag, and therefore fails closed to silence.\n */\nexport const WorkspaceSlackOrchestrationNoticeSettings = z.object({\n childRequiresAction: z.boolean().optional(),\n goalPaused: z.boolean().optional(),\n});\nexport type WorkspaceSlackOrchestrationNoticeSettings = z.infer<\n typeof WorkspaceSlackOrchestrationNoticeSettings\n>;\n\n/**\n * The resolved answer: every notice is an explicit boolean, never absent.\n * Spelled out rather than derived with `Required<>`, which would keep the\n * `| undefined` that the optional zod fields carry into their inferred type.\n */\nexport type ResolvedWorkspaceSlackOrchestrationNoticeSettings = {\n childRequiresAction: boolean;\n goalPaused: boolean;\n};\n\nexport const DEFAULT_WORKSPACE_SLACK_ORCHESTRATION_NOTICE_SETTINGS = {\n childRequiresAction: false,\n goalPaused: false,\n} as const satisfies ResolvedWorkspaceSlackOrchestrationNoticeSettings;\n\n// Memory V1's standing prompt block is retired, but the enum deliberately still\n// ACCEPTS `legacy_standing`. `.passthrough()` only preserves unknown keys - it\n// does not rescue a known key holding a value the enum rejects - so collapsing\n// this to one value would fail the whole settings parse for any workspace that\n// opted in. Every resolver here is \"parse the bag, fall back on failure\", so\n// that single rejection would silently revert memoryEnabled,\n// agentHumanInputEnabled, codexCompactionDefault, voiceInput and Slack summon\n// to their defaults. The value is accepted and then ignored: see\n// resolveWorkspaceMemoryPromptMode.\nexport const WorkspaceMemoryPromptMode = z.enum([\"legacy_standing\", \"retrieval_only\"]);\nexport type WorkspaceMemoryPromptMode = z.infer<typeof WorkspaceMemoryPromptMode>;\n\n/**\n * What an already-accepted turn recorded. Snapshots and receipts are immutable,\n * so turns accepted before the standing block was retired still read back\n * `legacy_standing`. That is a fact about history, not a mode anyone can pick -\n * keep the two apart so retiring the setting never rewrites the record.\n */\nexport const HistoricalMemoryPromptMode = z.enum([\"legacy_standing\", \"retrieval_only\"]);\nexport type HistoricalMemoryPromptMode = z.infer<typeof HistoricalMemoryPromptMode>;\n\n// Validates the KNOWN keys of workspaces.settings; passthrough keeps unknown\n// (future) keys rather than stripping them. memoryEnabled defaults on and the\n// Memory V1 prompt mode is always retrieval-only composition;\n// voiceInput defaults to enabled when the deployment has a provider.\nexport const WorkspaceSettingsSchema = z\n .object({\n memoryEnabled: z.boolean().optional(),\n memoryPromptMode: WorkspaceMemoryPromptMode.optional(),\n sessionDefaults: WorkspaceSessionDefaults.optional(),\n sessionToolDefaults: WorkspaceSessionToolDefaults.optional(),\n /** Preferred workspace voice-input toggle. */\n voiceInput: WorkspaceVoiceInputSettings.optional(),\n /**\n * @deprecated Legacy host-adapter policy. Read for compatibility; new writes\n * should use `voiceInput`.\n */\n transcription: WorkspaceTranscriptionPolicy.optional(),\n // null clears the workspace override and falls back to the persisted\n // deployment policy. The database boundary validates the same range.\n maxNestedAgentDepth: NestedAgentDepthValue.nullable().optional(),\n // Default compaction strategy for NEW Codex sessions created in this\n // workspace. Absent ⇒ remote_v2. Non-Codex sessions always freeze portable.\n codexCompactionDefault: CodexCompactionMode.optional(),\n // Whether agents may expose and invoke the built-in structured human-input\n // tool. Absent preserves the historical enabled behavior.\n agentHumanInputEnabled: z.boolean().optional(),\n // Optional Slack reaction invocation. Absent/invalid fails closed to the\n // disabled default via resolveWorkspaceSlackReactionSummonSettings.\n slackReactionSummon: WorkspaceSlackReactionSummonSettings.optional(),\n // Optional Slack orchestration notices (blocked child worker, paused goal).\n // BOTH DEFAULT OFF: absent, malformed, or partially invalid settings fail\n // closed to disabled via resolveWorkspaceSlackOrchestrationNoticeSettings,\n // because an unsolicited Slack post is worse than a missed one.\n slackOrchestrationNotices: WorkspaceSlackOrchestrationNoticeSettings.optional(),\n })\n .passthrough();\nexport type WorkspaceSettings = z.infer<typeof WorkspaceSettingsSchema>;\n\n// Resolve the effective memoryEnabled flag from a raw settings bag. Omission\n// defaults on; malformed settings still fail closed so invalid state cannot\n// unexpectedly enable durable retention.\nexport function resolveWorkspaceMemoryEnabled(settings?: unknown): boolean {\n const parsed = WorkspaceSettingsSchema.safeParse(settings === undefined ? {} : settings);\n return parsed.success ? parsed.data.memoryEnabled !== false : false;\n}\n\n/** Explicit defaults for new chats/schedules, or null for deployment defaults. */\nexport function resolveWorkspaceSessionDefaults(\n settings: unknown,\n): WorkspaceSessionDefaults | null {\n const parsed = WorkspaceSettingsSchema.safeParse(settings ?? {});\n return parsed.success ? (parsed.data.sessionDefaults ?? null) : null;\n}\n\n/** Exact capability defaults for new sessions, or null for deployment defaults. */\nexport function resolveWorkspaceSessionToolDefaults(\n settings: unknown,\n): WorkspaceSessionToolDefaults | null {\n const parsed = WorkspaceSettingsSchema.safeParse(settings ?? {});\n return parsed.success ? (parsed.data.sessionToolDefaults ?? null) : null;\n}\n\n/**\n * Memory V1 prompt mode. Always `retrieval_only`: the standing pinned/recency\n * block is retired, so an absent, unrecognized, or stored-`legacy_standing`\n * setting all resolve the same way. Kept as a function so the call sites and\n * the frozen SQL snapshot keep agreeing without each one having to learn that\n * the choice is gone.\n */\nexport function resolveWorkspaceMemoryPromptMode(): \"retrieval_only\" {\n return \"retrieval_only\";\n}\n\n/** Default Codex compaction mode for new Codex sessions (remote_v2 when unset). */\nexport function resolveWorkspaceCodexCompactionDefault(settings: unknown): CodexCompactionMode {\n const parsed = WorkspaceSettingsSchema.safeParse(settings ?? {});\n if (!parsed.success) return \"remote_v2\";\n return parsed.data.codexCompactionDefault ?? \"remote_v2\";\n}\n\n/** Whether agents may request structured human input (enabled when unset). */\nexport function resolveWorkspaceAgentHumanInputEnabled(settings: unknown): boolean {\n const parsed = WorkspaceSettingsSchema.safeParse(settings ?? {});\n return parsed.success ? parsed.data.agentHumanInputEnabled !== false : true;\n}\n\n/**\n * Resolve whether voice input is enabled for a workspace.\n *\n * - Prefer `settings.voiceInput.enabled` when present.\n * - Map legacy `settings.transcription.enabled` when voiceInput is absent.\n * - Return `null` when neither is set so callers can default to deployment\n * availability (enabled when a provider is configured).\n */\nexport function resolveWorkspaceVoiceInputEnabled(settings: unknown): boolean | null {\n const parsed = WorkspaceSettingsSchema.safeParse(settings ?? {});\n if (!parsed.success) return null;\n if (parsed.data.voiceInput) return parsed.data.voiceInput.enabled;\n if (parsed.data.transcription) return parsed.data.transcription.enabled;\n return null;\n}\n\nexport function resolveWorkspaceSlackReactionSummonSettings(\n settings: unknown,\n): WorkspaceSlackReactionSummonSettings {\n const parsed = WorkspaceSettingsSchema.safeParse(settings ?? {});\n const configured = parsed.success ? parsed.data.slackReactionSummon : undefined;\n if (!configured) {\n return {\n enabled: DEFAULT_WORKSPACE_SLACK_REACTION_SUMMON_SETTINGS.enabled,\n emoji: DEFAULT_WORKSPACE_SLACK_REACTION_SUMMON_SETTINGS.emoji,\n channelPolicy: {\n ...DEFAULT_WORKSPACE_SLACK_REACTION_SUMMON_SETTINGS.channelPolicy,\n },\n };\n }\n return configured.channelPolicy.mode === \"allowlist\"\n ? {\n ...configured,\n channelPolicy: {\n mode: \"allowlist\",\n channelIds: [...new Set(configured.channelPolicy.channelIds)],\n },\n }\n : { ...configured, channelPolicy: { mode: \"bot_member\" } };\n}\n\n/**\n * Resolve the two Slack orchestration notice switches, failing closed.\n *\n * Off is the product decision, not a placeholder: the in-app rail and priority\n * feed already surface a blocked child worker and a paused goal, so a missed\n * Slack post costs a delay while an unsolicited one costs the thread's\n * credibility. Absent settings, a settings bag this schema rejects, and a\n * partially invalid notice object therefore all resolve to both disabled -\n * only an explicit `true` on a valid bag turns a notice on.\n */\nexport function resolveWorkspaceSlackOrchestrationNoticeSettings(\n settings: unknown,\n): ResolvedWorkspaceSlackOrchestrationNoticeSettings {\n const parsed = WorkspaceSettingsSchema.safeParse(settings ?? {});\n const configured = parsed.success ? parsed.data.slackOrchestrationNotices : undefined;\n return {\n childRequiresAction:\n configured?.childRequiresAction ??\n DEFAULT_WORKSPACE_SLACK_ORCHESTRATION_NOTICE_SETTINGS.childRequiresAction,\n goalPaused:\n configured?.goalPaused ?? DEFAULT_WORKSPACE_SLACK_ORCHESTRATION_NOTICE_SETTINGS.goalPaused,\n };\n}\n\nexport function workspaceSlackReactionChannelAllowed(\n settings: WorkspaceSlackReactionSummonSettings,\n channelId: string,\n): boolean {\n return (\n settings.channelPolicy.mode === \"bot_member\" ||\n settings.channelPolicy.channelIds.includes(channelId)\n );\n}\n\n// PATCH body for workspace settings: a partial top-level patch that merges into\n// the stored bag. Nested voiceInput/transcription updates are full replacements;\n// passthrough carries forward-compatible unknown keys.\nexport const UpdateWorkspaceSettingsRequest = z\n .object({\n memoryEnabled: z.boolean().optional(),\n memoryPromptMode: WorkspaceMemoryPromptMode.optional(),\n sessionDefaults: WorkspaceSessionDefaults.optional(),\n sessionToolDefaults: WorkspaceSessionToolDefaultsPatch.optional(),\n voiceInput: WorkspaceVoiceInputSettings.optional(),\n /** @deprecated Prefer `voiceInput`. Kept for one compatibility release. */\n transcription: WorkspaceTranscriptionPolicy.optional(),\n maxNestedAgentDepth: NestedAgentDepthValue.nullable().optional(),\n codexCompactionDefault: CodexCompactionMode.optional(),\n agentHumanInputEnabled: z.boolean().optional(),\n slackReactionSummon: WorkspaceSlackReactionSummonSettings.optional(),\n slackOrchestrationNotices: WorkspaceSlackOrchestrationNoticeSettings.optional(),\n })\n .passthrough();\nexport type UpdateWorkspaceSettingsRequest = z.infer<typeof UpdateWorkspaceSettingsRequest>;\n\nexport const SetWorkspaceDefaultRigRequest = z.object({\n rigId: z.string().uuid().nullable(),\n});\nexport type SetWorkspaceDefaultRigRequest = z.infer<typeof SetWorkspaceDefaultRigRequest>;\n\n// PUT body for the workspace model policy (full replace, not a merge). null (or\n// omitted) = unrestricted for that dimension; an EMPTY array is a valid,\n// explicit total block. Entries are provider ids / exact model ids as the\n// router resolves them (see evaluateWorkspaceModelPolicy).\nexport const UpdateWorkspaceModelPolicyRequest = z.object({\n allowedProviders: z.array(z.string().min(1).max(128)).max(64).nullable().optional(),\n allowedModels: z.array(z.string().min(1).max(256)).max(256).nullable().optional(),\n});\nexport type UpdateWorkspaceModelPolicyRequest = z.infer<typeof UpdateWorkspaceModelPolicyRequest>;\n\nexport const WORKSPACE_GATEWAY_CUSTOM_MODEL_UPSTREAM_ID_MAX_LENGTH = 238;\n\nexport const CreateWorkspaceGatewayCustomModelRequest = z\n .object({\n operationId: z.string().uuid(),\n upstreamModelId: z\n .string()\n .max(WORKSPACE_GATEWAY_CUSTOM_MODEL_UPSTREAM_ID_MAX_LENGTH)\n .regex(/^[!-{}-~]+$/),\n label: z\n .string()\n .min(1)\n .max(128)\n .refine((value) => new TextEncoder().encode(value).byteLength <= 128, {\n message: \"label must be at most 128 UTF-8 bytes\",\n })\n .refine((value) => !/[\\r\\n|]/u.test(value), {\n message: \"label must not contain newlines or the | field separator\",\n })\n .optional(),\n })\n .strict();\nexport type CreateWorkspaceGatewayCustomModelRequest = z.infer<\n typeof CreateWorkspaceGatewayCustomModelRequest\n>;\n\nexport const DeleteWorkspaceGatewayCustomModelRequest = z\n .object({\n expectedVersion: z.number().int().positive(),\n operationId: z.string().uuid(),\n })\n .strict();\nexport type DeleteWorkspaceGatewayCustomModelRequest = z.infer<\n typeof DeleteWorkspaceGatewayCustomModelRequest\n>;\n\nexport const WorkspaceGatewayCustomModel = z.object({\n id: z.string().uuid(),\n upstreamModelId: z.string(),\n label: z.string().nullable(),\n version: z.number().int().positive(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type WorkspaceGatewayCustomModel = z.infer<typeof WorkspaceGatewayCustomModel>;\n\nexport const WorkspaceGatewayCustomModelsResponse = z.object({\n models: z.array(WorkspaceGatewayCustomModel),\n});\nexport type WorkspaceGatewayCustomModelsResponse = z.infer<\n typeof WorkspaceGatewayCustomModelsResponse\n>;\n\nexport const CreateWorkspaceOpenRouterCustomModelRequest = CreateWorkspaceGatewayCustomModelRequest;\nexport type CreateWorkspaceOpenRouterCustomModelRequest = z.infer<\n typeof CreateWorkspaceOpenRouterCustomModelRequest\n>;\n\nexport const DeleteWorkspaceOpenRouterCustomModelRequest = DeleteWorkspaceGatewayCustomModelRequest;\nexport type DeleteWorkspaceOpenRouterCustomModelRequest = z.infer<\n typeof DeleteWorkspaceOpenRouterCustomModelRequest\n>;\n\nexport const WorkspaceOpenRouterCustomModel = WorkspaceGatewayCustomModel;\nexport type WorkspaceOpenRouterCustomModel = z.infer<typeof WorkspaceOpenRouterCustomModel>;\n\nexport const WorkspaceOpenRouterCustomModelsResponse = z.object({\n models: z.array(WorkspaceOpenRouterCustomModel),\n});\nexport type WorkspaceOpenRouterCustomModelsResponse = z.infer<\n typeof WorkspaceOpenRouterCustomModelsResponse\n>;\n\nexport const CreateOrganizationProviderCustomModelRequest =\n CreateWorkspaceGatewayCustomModelRequest;\nexport type CreateOrganizationProviderCustomModelRequest = z.infer<\n typeof CreateOrganizationProviderCustomModelRequest\n>;\nexport const DeleteOrganizationProviderCustomModelRequest =\n DeleteWorkspaceGatewayCustomModelRequest;\nexport type DeleteOrganizationProviderCustomModelRequest = z.infer<\n typeof DeleteOrganizationProviderCustomModelRequest\n>;\nexport const OrganizationProviderCustomModel = WorkspaceGatewayCustomModel;\nexport type OrganizationProviderCustomModel = z.infer<typeof OrganizationProviderCustomModel>;\nexport const OrganizationProviderCustomModelsResponse = z.object({\n models: z.array(OrganizationProviderCustomModel),\n});\nexport type OrganizationProviderCustomModelsResponse = z.infer<\n typeof OrganizationProviderCustomModelsResponse\n>;\n\nexport const OrganizationModelProviderKind = z.enum([\"vercel_gateway\", \"openrouter\"]);\nexport type OrganizationModelProviderKind = z.infer<typeof OrganizationModelProviderKind>;\nexport const OrganizationModelProviderConnectionResponse = z.object({\n providerKind: OrganizationModelProviderKind,\n status: z.enum([\"active\", \"revoked\"]),\n version: z.number().int().positive(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type OrganizationModelProviderConnectionResponse = z.infer<\n typeof OrganizationModelProviderConnectionResponse\n>;\nexport const UpsertOrganizationModelProviderConnectionRequest = z\n .object({\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().nonnegative().optional(),\n apiKey: z.string().trim().min(1).max(8192),\n })\n .strict();\nexport type UpsertOrganizationModelProviderConnectionRequest = z.infer<\n typeof UpsertOrganizationModelProviderConnectionRequest\n>;\nexport const RevokeOrganizationModelProviderConnectionRequest = z\n .object({ operationId: z.string().uuid(), expectedVersion: z.number().int().positive() })\n .strict();\nexport type RevokeOrganizationModelProviderConnectionRequest = z.infer<\n typeof RevokeOrganizationModelProviderConnectionRequest\n>;\n\nconst turnInitiatorIdentityFields = {\n subjectId: z.string().min(1),\n /** Immutable display snapshot; never an authorization input. */\n label: z.string().min(1).optional(),\n} as const;\n\n/** Reserved creator/initiator id used only by legacy-row migration defaults. */\nexport const UNATTRIBUTED_LEGACY_INITIATOR_SUBJECT_ID = \"unattributed-legacy\" as const;\n\n/**\n * A named machine/service principal asserted by a trusted embedding host. This\n * deliberately excludes `kind: \"subject\"`: a delegated service assertion may\n * describe causal machine work, but it is not a generic human-impersonation\n * mechanism. The authenticated grant remains the authorization boundary.\n */\nexport const ServiceTurnInitiator = z.object({\n kind: z.literal(\"service\"),\n subjectId: z\n .string()\n .min(1)\n .max(1024)\n .refine((value) => value !== UNATTRIBUTED_LEGACY_INITIATOR_SUBJECT_ID, {\n message: \"unattributed-legacy is reserved for migrated rows\",\n }),\n /** Immutable display snapshot; never an authorization input. */\n label: z.string().min(1).max(256).optional(),\n});\nexport type ServiceTurnInitiator = z.infer<typeof ServiceTurnInitiator>;\n\n/**\n * Immutable, non-secret provenance captured with an initiator. This is audit\n * context (for example an external occurrence id), not a second identity or\n * authorization surface.\n */\nexport const TurnInitiatorContext = z.record(z.string(), z.unknown());\nexport type TurnInitiatorContext = z.infer<typeof TurnInitiatorContext>;\n\nconst reservedServiceTurnInitiatorContextKeys = new Set([\n \"backfill\",\n \"label\",\n \"provenanceError\",\n \"opengeniSiteAuthConnectionId\",\n \"opengeniSiteAuthMaintenanceOperationId\",\n \"via\",\n \"viaTruncated\",\n]);\n\n/** Bounded host provenance that cannot forge OpenGeni-owned lineage fields. */\nexport const ServiceTurnInitiatorContext = TurnInitiatorContext.superRefine((value, ctx) => {\n for (const key of reservedServiceTurnInitiatorContextKeys) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [key],\n message: `${key} is reserved OpenGeni initiator context`,\n });\n }\n }\n try {\n if (new TextEncoder().encode(JSON.stringify(value)).byteLength > 4096) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"service initiator context exceeds 4096 UTF-8 bytes\",\n });\n }\n } catch {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"service initiator context must be JSON-serializable\",\n });\n }\n});\nexport type ServiceTurnInitiatorContext = z.infer<typeof ServiceTurnInitiatorContext>;\n\nexport const DelegatedAccessPrincipalKind = z.enum([\"human_session\", \"agent_attempt\", \"service\"]);\nexport type DelegatedAccessPrincipalKind = z.infer<typeof DelegatedAccessPrincipalKind>;\n\nexport const AccessPrincipalKind = z.enum([\n ...DelegatedAccessPrincipalKind.options,\n \"api_key\",\n \"configured_key\",\n]);\nexport type AccessPrincipalKind = z.infer<typeof AccessPrincipalKind>;\n\nexport const AccountGrant = z.object({\n accountId: z.string().uuid(),\n subjectId: z.string().min(1),\n subjectLabel: z.string().optional(),\n role: AccountRole.optional(),\n permissions: z.array(Permission),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\nexport type AccountGrant = z.infer<typeof AccountGrant>;\n\nexport const AccessGrant = z.object({\n workspaceId: z.string().uuid(),\n accountId: z.string().uuid(),\n subjectId: z.string().min(1),\n subjectLabel: z.string().optional(),\n permissions: z.array(Permission),\n // Trusted principal provenance. Delegated grants copy this from the signed\n // token claim; managed/local grants derive it from their authenticated path.\n principalKind: AccessPrincipalKind.optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n // Optional trusted causal principal for a command submitted by an embedding\n // host. Authorization still uses subjectId + permissions above.\n serviceInitiator: ServiceTurnInitiator.optional(),\n serviceInitiatorContext: ServiceTurnInitiatorContext.optional(),\n});\nexport type AccessGrant = z.infer<typeof AccessGrant>;\n\nexport const AccessContext = z.object({\n mode: ProductAccessMode,\n subjectId: z.string().min(1),\n subjectLabel: z.string().optional(),\n accountGrants: z.array(AccountGrant),\n workspaceGrants: z.array(AccessGrant),\n defaultAccountId: z.string().uuid().nullable(),\n defaultWorkspaceId: z.string().uuid().nullable(),\n});\nexport type AccessContext = z.infer<typeof AccessContext>;\n\nexport const DelegatedAccessTokenPayload = z\n .object({\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n subjectId: z.string().min(1),\n subjectLabel: z.string().optional(),\n permissions: z.array(Permission).min(1),\n // Required and covered by the token HMAC. Authorization must positively\n // select a principal kind instead of inferring \"human\" from absent machine\n // markers.\n principalKind: DelegatedAccessPrincipalKind,\n // Trusted embedding hosts can sign a causal service principal separately\n // from the grant subject that authorizes the request. The claim is consumed\n // only when a command creates a new session/turn.\n serviceInitiator: ServiceTurnInitiator.optional(),\n serviceInitiatorContext: ServiceTurnInitiatorContext.optional(),\n // Worker-asserted session scope for first-party MCP calls (HMAC-signed, not\n // agent-controlled); enables session-scoped tools such as goal management.\n sessionId: z.string().uuid().optional(),\n // Model-visible first-party tool selection for a worker-bound session.\n // This is visibility only; permissions remain the authorization boundary.\n firstPartyMcpTools: z.array(FirstPartyMcpToolName).optional(),\n // Trusted root-relative depth facts frozen when the worker prepares this\n // attempt. They shape only the model-visible tool catalog; the database\n // remains authoritative for admission and concurrent policy changes.\n nestedAgentDepth: NestedAgentDepthValue.optional(),\n effectiveMaxNestedAgentDepth: NestedAgentDepthValue.optional(),\n // The turn making the call (the caller's identity), HMAC-signed by the worker\n // at turn setup. Lets a tool classify WHO is calling from the token itself,\n // instead of racily re-reading the session's live active_turn_id — e.g. the\n // sacred-pause guard must know if the CALLER is a machine child-notification\n // turn, and the active pointer can flip to another turn mid-check.\n turnId: z.string().uuid().optional(),\n // Exact execution owner. Agent control commands are accepted only while this\n // attempt still owns the signed turn.\n attemptId: z.string().uuid().optional(),\n executionGeneration: z.number().int().positive().optional(),\n exp: z.number().int().positive(),\n })\n .superRefine((payload, ctx) => {\n const exactAttemptClaims = [\n payload.sessionId,\n payload.turnId,\n payload.attemptId,\n payload.executionGeneration,\n ];\n const exactAttemptClaimCount = exactAttemptClaims.filter((value) => value !== undefined).length;\n const depthClaimCount = [payload.nestedAgentDepth, payload.effectiveMaxNestedAgentDepth].filter(\n (value) => value !== undefined,\n ).length;\n if (depthClaimCount !== 0 && depthClaimCount !== 2) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"nestedAgentDepth\"],\n message: \"nested-agent depth claims must be supplied together\",\n });\n }\n if (depthClaimCount > 0 && payload.principalKind !== \"agent_attempt\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"principalKind\"],\n message: \"nested-agent depth claims require an agent_attempt principal\",\n });\n }\n if (\n payload.principalKind === \"human_session\" &&\n (exactAttemptClaimCount !== 0 || payload.serviceInitiator !== undefined)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"principalKind\"],\n message: \"human_session principal cannot carry machine authority claims\",\n });\n }\n if (\n payload.principalKind === \"agent_attempt\" &&\n (exactAttemptClaimCount !== exactAttemptClaims.length ||\n payload.serviceInitiator !== undefined)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"principalKind\"],\n message: \"agent_attempt principal requires one exact signed attempt authority\",\n });\n }\n if (\n payload.principalKind === \"service\" &&\n (payload.turnId !== undefined ||\n payload.attemptId !== undefined ||\n payload.executionGeneration !== undefined)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"principalKind\"],\n message: \"service principal cannot carry exact agent-attempt authority\",\n });\n }\n if (payload.serviceInitiator && payload.principalKind !== \"service\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"principalKind\"],\n message: \"serviceInitiator requires a service principal\",\n });\n }\n if (payload.serviceInitiatorContext && !payload.serviceInitiator) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"serviceInitiatorContext\"],\n message: \"serviceInitiatorContext requires serviceInitiator\",\n });\n }\n if (\n payload.serviceInitiator &&\n (payload.turnId !== undefined ||\n payload.attemptId !== undefined ||\n payload.executionGeneration !== undefined)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"serviceInitiator\"],\n message: \"serviceInitiator cannot replace an exact agent-attempt initiator\",\n });\n }\n });\nexport type DelegatedAccessTokenPayload = z.infer<typeof DelegatedAccessTokenPayload>;\n\nconst delegatedAccessTokenPrefix = \"ogd_\";\nconst delegatedServiceAccessTokenPrefix = \"ogd2_\";\n\nexport async function signDelegatedAccessToken(\n secret: string,\n payload: DelegatedAccessTokenPayload,\n): Promise<string> {\n const parsed = DelegatedAccessTokenPayload.parse(payload);\n const prefix = parsed.serviceInitiator\n ? delegatedServiceAccessTokenPrefix\n : delegatedAccessTokenPrefix;\n const encodedPayload = base64UrlEncode(JSON.stringify(parsed));\n // The service-capable envelope binds its prefix into the signature. An old\n // verifier accepts only ogd_ and therefore fails closed during a rolling\n // deploy; changing ogd2_ to ogd_ cannot turn provenance loss into success.\n const signature = await hmacSha256Base64Url(\n secret,\n prefix === delegatedServiceAccessTokenPrefix ? `${prefix}${encodedPayload}` : encodedPayload,\n );\n return `${prefix}${encodedPayload}.${signature}`;\n}\n\nexport async function verifyDelegatedAccessToken(\n secret: string,\n token: string,\n nowSeconds = Math.floor(Date.now() / 1000),\n): Promise<DelegatedAccessTokenPayload | null> {\n const prefix = token.startsWith(delegatedServiceAccessTokenPrefix)\n ? delegatedServiceAccessTokenPrefix\n : token.startsWith(delegatedAccessTokenPrefix)\n ? delegatedAccessTokenPrefix\n : null;\n if (!prefix) {\n return null;\n }\n const withoutPrefix = token.slice(prefix.length);\n const dot = withoutPrefix.lastIndexOf(\".\");\n if (dot <= 0) {\n return null;\n }\n const encodedPayload = withoutPrefix.slice(0, dot);\n const signature = withoutPrefix.slice(dot + 1);\n const expected = await hmacSha256Base64Url(\n secret,\n prefix === delegatedServiceAccessTokenPrefix ? `${prefix}${encodedPayload}` : encodedPayload,\n );\n if (!constantTimeEqual(signature, expected)) {\n return null;\n }\n let decoded: unknown;\n try {\n decoded = JSON.parse(base64UrlDecode(encodedPayload));\n } catch {\n return null;\n }\n const payload = DelegatedAccessTokenPayload.safeParse(decoded);\n if (!payload.success || payload.data.exp < nowSeconds) {\n return null;\n }\n if (\n (prefix === delegatedServiceAccessTokenPrefix) !==\n (payload.data.serviceInitiator !== undefined)\n ) {\n return null;\n }\n return payload.data;\n}\n\n// --- Enrollment bearer credential (bring-your-own-compute M5) ---\n//\n// The signed bearer the agent presents to the control plane after enrollment (the\n// EnrollmentCredentials.bearer the poll returns). REUSES the SAME HMAC envelope as\n// the delegated/stream tokens (base64Url payload + hmacSha256Base64Url) with a\n// distinct `oge_` prefix so it can never be confused with an `ogd_` access token or\n// an `ogs_` stream token. It binds (workspaceId, agentId, enrollmentId) so the\n// control plane can verify the agent owns the subject `agent.<ws>.<id>` it\n// subscribes to. Signed with resolveEnrollmentSigningSecret; the secret value is\n// NEVER logged. The real per-workspace NATS Account creds binding is infra-deferred\n// (M4/relay) — this bearer is the application-tier identity proof.\nexport const EnrollmentBearerPayload = z.object({\n workspaceId: z.string().uuid(),\n agentId: z.string().uuid(),\n enrollmentId: z.string().uuid(),\n // Backward-compatible credential-family fence. Generationless bearers minted\n // before migration 0061 parse ONLY as generation 1, matching the migration's\n // default for existing rows. signEnrollmentBearer serializes the parsed output,\n // so every newly signed bearer carries this claim explicitly.\n credentialGeneration: z.number().int().positive().default(1),\n // The Account-scoped control-plane subject prefix the agent subscribes to.\n subjectPrefix: z.string().min(1),\n exp: z.number().int().positive(),\n});\nexport type EnrollmentBearerPayload = z.infer<typeof EnrollmentBearerPayload>;\n\nexport async function signEnrollmentBearer(\n secret: string,\n payload: EnrollmentBearerPayload,\n): Promise<string> {\n const encodedPayload = base64UrlEncode(JSON.stringify(EnrollmentBearerPayload.parse(payload)));\n const signature = await hmacSha256Base64Url(secret, encodedPayload);\n return `oge_${encodedPayload}.${signature}`;\n}\n\nexport async function verifyEnrollmentBearer(\n secret: string,\n token: string,\n nowSeconds = Math.floor(Date.now() / 1000),\n): Promise<EnrollmentBearerPayload | null> {\n if (!token.startsWith(\"oge_\")) {\n return null;\n }\n const withoutPrefix = token.slice(\"oge_\".length);\n const dot = withoutPrefix.lastIndexOf(\".\");\n if (dot <= 0) {\n return null;\n }\n const encodedPayload = withoutPrefix.slice(0, dot);\n const signature = withoutPrefix.slice(dot + 1);\n const expected = await hmacSha256Base64Url(secret, encodedPayload);\n if (!constantTimeEqual(signature, expected)) {\n return null;\n }\n let decoded: unknown;\n try {\n decoded = JSON.parse(base64UrlDecode(encodedPayload));\n } catch {\n return null;\n }\n const payload = EnrollmentBearerPayload.safeParse(decoded);\n if (!payload.success || payload.data.exp < nowSeconds) {\n return null;\n }\n return payload.data;\n}\n\n// --- Non-interactive enroll token (self-hosted enrollment UX §A2.1) ----------\n//\n// The SHORT-TTL, secret, workspace-scoped token the headless/fleet enroll path\n// presents to /v1/enrollments/token/exchange. The token IS the grant — there is\n// no human approve step — so it is stateless-signed (no DB row): the holder of an\n// unexpired token can enroll ONE machine identity into ONE workspace.\n//\n// It REUSES the SAME HMAC envelope as signEnrollmentBearer (base64Url payload +\n// hmacSha256Base64Url) with a DISTINCT `oget_` prefix and a `typ: \"enroll\"` claim.\n// DOMAIN SEPARATION: even though it shares the signing secret with the `oge_`\n// bearer, the prefix + typ claim make an enroll token unusable as an `oge_`\n// bearer (verifyEnrollmentBearer's `oge_` prefix check rejects it) and vice-versa\n// (verifyEnrollToken's `oget_` prefix + typ check rejects an `oge_` bearer). The\n// secret value is NEVER logged.\nexport const EnrollTokenPayload = z.object({\n // Domain-separation claim — fixed \"enroll\" so an `oge_`/`ogd_`/`ogs_` payload (no\n // typ, or a different typ) can never satisfy verifyEnrollToken even past the prefix.\n typ: z.literal(\"enroll\"),\n workspaceId: z.string().uuid(),\n accountId: z.string().uuid(),\n // The screen-control consent baked into the token at mint (the minting user's\n // decision); the exchange records it as consentedScreenControl on the enrollment.\n allowScreenControl: z.boolean(),\n iat: z.number().int().nonnegative(),\n exp: z.number().int().positive(),\n});\nexport type EnrollTokenPayload = z.infer<typeof EnrollTokenPayload>;\n\nexport async function signEnrollToken(\n secret: string,\n payload: EnrollTokenPayload,\n): Promise<string> {\n const encodedPayload = base64UrlEncode(JSON.stringify(EnrollTokenPayload.parse(payload)));\n const signature = await hmacSha256Base64Url(secret, encodedPayload);\n return `oget_${encodedPayload}.${signature}`;\n}\n\n/**\n * Verify an enroll token: rejects (returns null) on a bad prefix (NOT `oget_`),\n * a malformed envelope, a bad HMAC signature (constant-time), schema-invalid\n * claims (which includes `typ !== \"enroll\"` — the `z.literal` rejects it), or an\n * expired token (`exp < now`). Mirrors verifyEnrollmentBearer exactly. An `oge_`\n * bearer fails the prefix gate; a same-secret token that lacks the typ claim fails\n * the schema gate — both halves of the domain separation are enforced here.\n */\nexport async function verifyEnrollToken(\n secret: string,\n token: string,\n nowSeconds = Math.floor(Date.now() / 1000),\n): Promise<EnrollTokenPayload | null> {\n if (!token.startsWith(\"oget_\")) {\n return null;\n }\n const withoutPrefix = token.slice(\"oget_\".length);\n const dot = withoutPrefix.lastIndexOf(\".\");\n if (dot <= 0) {\n return null;\n }\n const encodedPayload = withoutPrefix.slice(0, dot);\n const signature = withoutPrefix.slice(dot + 1);\n const expected = await hmacSha256Base64Url(secret, encodedPayload);\n if (!constantTimeEqual(signature, expected)) {\n return null;\n }\n let decoded: unknown;\n try {\n decoded = JSON.parse(base64UrlDecode(encodedPayload));\n } catch {\n return null;\n }\n const payload = EnrollTokenPayload.safeParse(decoded);\n if (!payload.success || payload.data.exp < nowSeconds) {\n return null;\n }\n return payload.data;\n}\n\n// --- Scoped data-plane stream token (sandbox contract §C.3 / crosscut PART 1.3) ---\n//\n// REUSES the existing HMAC envelope (sign/verifyDelegatedAccessToken's\n// base64Url + hmacSha256Base64Url) — NOT a second crypto — but with a distinct\n// `ogs_` prefix and a HARD-NARROW claim set. The token is a CLAIM the OpenGeni\n// control plane mints; it is NOT the provider's tunnel secret. The browser\n// receives { providerUrl, streamToken }; the provider tunnel URL is the\n// transport, the streamToken is what the in-box edge validates (websockify\n// TokenFile is later-hardening; in v1 the URL's short TTL + the acknowledged\n// stream:view gate are the real boundary). The token is minted + recorded\n// against the holder from day one. It is NEVER appended to the URL as a query\n// param (the provider's own scoped token already lives in the URL).\n//\n// `leaseEpoch` is the fence: when the box is re-elected (warming→warm bumps the\n// epoch) the URL is re-minted with epoch+1 and the old tunnel is torn down, so a\n// stale token points at a dead tunnel. Epoch mismatch is enforced at USE (by the\n// caller comparing the claim against the live lease), not inside verify.\nexport const StreamTokenPayload = z.object({\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n // Identifies the sandbox_lease_holders row (the viewer holder).\n viewerId: z.string().uuid(),\n // Fence: the token logically dies when the box is re-elected (epoch++).\n leaseEpoch: z.number().int().nonnegative(),\n // v1 is always \"view\"; \"control\" is the never-granted raw-input plane.\n mode: z.enum([\"view\", \"control\"]),\n // 6080 (noVNC); pins the token to ONE exposed port.\n port: z.number().int().positive(),\n // Short TTL (120s default); rotation is event-driven under the epoch fence,\n // not on a keepalive clock.\n exp: z.number().int().positive(),\n // The authenticated subject the token was minted for (0281). Optional for\n // rolling compatibility: old verifiers strip it, old mints omit it.\n subjectId: z.string().min(1).max(512).optional(),\n // The session authority epoch observed at mint (0281). The relay tracks the\n // highest value presented per LIVE channel and rejects tokens below that\n // floor. The floor is defense-in-depth, not the revocation authority: it\n // lives only as long as the channel does (both sides detached, the\n // half-open reaper, or a relay restart reset it), so a stale in-TTL token\n // can still attach to a fresh channel. Real revocation is the mint refusing\n // to issue new tokens plus the 120 s TTL bounding the old ones.\n authorityEpoch: z.number().int().positive().optional(),\n});\nexport type StreamTokenPayload = z.infer<typeof StreamTokenPayload>;\n\nexport async function signStreamToken(\n secret: string,\n payload: StreamTokenPayload,\n): Promise<string> {\n const encodedPayload = base64UrlEncode(JSON.stringify(StreamTokenPayload.parse(payload)));\n const signature = await hmacSha256Base64Url(secret, encodedPayload);\n return `ogs_${encodedPayload}.${signature}`;\n}\n\n/**\n * Verify a stream token: rejects (returns null) on a bad prefix, malformed\n * envelope, bad HMAC signature (constant-time), schema-invalid claims, or an\n * expired token (`exp < now`). Mirrors verifyDelegatedAccessToken exactly.\n *\n * The epoch fence (claim.leaseEpoch vs the LIVE lease epoch) and the\n * workspace/session scope are checked by the CALLER at use against the live\n * lease + route params — verify proves the token is authentic + unexpired, the\n * caller proves it is for THIS box's current epoch and THIS workspace+session.\n */\nexport async function verifyStreamToken(\n secret: string,\n token: string,\n nowSeconds = Math.floor(Date.now() / 1000),\n): Promise<StreamTokenPayload | null> {\n if (!token.startsWith(\"ogs_\")) {\n return null;\n }\n const withoutPrefix = token.slice(\"ogs_\".length);\n const dot = withoutPrefix.lastIndexOf(\".\");\n if (dot <= 0) {\n return null;\n }\n const encodedPayload = withoutPrefix.slice(0, dot);\n const signature = withoutPrefix.slice(dot + 1);\n const expected = await hmacSha256Base64Url(secret, encodedPayload);\n if (!constantTimeEqual(signature, expected)) {\n return null;\n }\n let decoded: unknown;\n try {\n decoded = JSON.parse(base64UrlDecode(encodedPayload));\n } catch {\n return null;\n }\n const payload = StreamTokenPayload.safeParse(decoded);\n if (!payload.success || payload.data.exp < nowSeconds) {\n return null;\n }\n return payload.data;\n}\n\n// --- Relay PRODUCER token (bring-your-own-compute M8b) ---\n//\n// The token the AGENT presents to the relay edge when it registers a pty/desktop\n// stream channel (role=AGENT) — distinct from the viewer's `ogs_` token. It is\n// minted by the control plane at enrollment and threaded into EnrollmentCredentials\n// (proto field `relay_token`); the relay verifies it on its own merits, then pairs\n// the producer with the consumer by the shared channel key.\n//\n// REUSES the EXACT SAME HMAC envelope as the `ogs_`/`ogd_`/`oge_` tokens\n// (base64Url JSON payload + hmacSha256Base64Url) — NOT a second crypto — with a\n// distinct `ogr_` prefix so it can never be confused with the others. The claim\n// set binds (workspaceId, agentId): the relay reads the channel-key's ws+agent\n// from the StreamOpen and asserts the producer token claims the SAME pair, so a\n// producer token for workspace A can never register a channel for workspace B.\n// Signed with resolveRelayTokenSecret (the relay-token HMAC secret); the value is\n// NEVER logged. Long-lived by design (it is enrollment-scoped, not per-stream —\n// the agent presents it on every channel registration for the life of the\n// enrollment); the relay additionally validates the channel key + (for the\n// viewer's `ogs_`) the lease/active-epoch fence.\n//\n// The Rust relay re-implements this verify (the same base64url(JSON) + HMAC-SHA256\n// + prefix split) so TS-mint and Rust-verify provably agree — see the cross-stack\n// fixture in agent/crates/opengeni-relay/tests and the relay's `token` module doc.\nexport const RelayTokenPayload = z.object({\n // The workspace the agent (and its channels) belong to — the relay asserts this\n // equals the channel-key's ws so a producer can only register its own channels.\n workspaceId: z.string().uuid(),\n // The agent (machine) id — the relay asserts this equals the channel-key's agent.\n agentId: z.string().uuid(),\n // Expiry (unix seconds). Enrollment-scoped horizon (re-minted on re-enroll).\n exp: z.number().int().positive(),\n});\nexport type RelayTokenPayload = z.infer<typeof RelayTokenPayload>;\n\nexport async function signRelayToken(secret: string, payload: RelayTokenPayload): Promise<string> {\n const encodedPayload = base64UrlEncode(JSON.stringify(RelayTokenPayload.parse(payload)));\n const signature = await hmacSha256Base64Url(secret, encodedPayload);\n return `ogr_${encodedPayload}.${signature}`;\n}\n\n/**\n * Verify a relay producer token: rejects (returns null) on a bad prefix, malformed\n * envelope, bad HMAC signature (constant-time), schema-invalid claims, or expiry.\n * Mirrors verifyStreamToken exactly. The relay (Rust) re-implements this verify;\n * the TS verify here proves the format for the cross-stack fixture + any TS caller.\n *\n * The channel-key scope (claim.workspaceId/agentId vs the StreamOpen channel key)\n * is enforced by the relay at USE — verify proves authenticity + freshness only.\n */\nexport async function verifyRelayToken(\n secret: string,\n token: string,\n nowSeconds = Math.floor(Date.now() / 1000),\n): Promise<RelayTokenPayload | null> {\n if (!token.startsWith(\"ogr_\")) {\n return null;\n }\n const withoutPrefix = token.slice(\"ogr_\".length);\n const dot = withoutPrefix.lastIndexOf(\".\");\n if (dot <= 0) {\n return null;\n }\n const encodedPayload = withoutPrefix.slice(0, dot);\n const signature = withoutPrefix.slice(dot + 1);\n const expected = await hmacSha256Base64Url(secret, encodedPayload);\n if (!constantTimeEqual(signature, expected)) {\n return null;\n }\n let decoded: unknown;\n try {\n decoded = JSON.parse(base64UrlDecode(encodedPayload));\n } catch {\n return null;\n }\n const payload = RelayTokenPayload.safeParse(decoded);\n if (!payload.success || payload.data.exp < nowSeconds) {\n return null;\n }\n return payload.data;\n}\n\nexport const CreateWorkspaceRequest = z.object({\n accountId: z.string().uuid().optional(),\n name: z.string().min(1),\n slug: z.string().min(1).optional(),\n externalSource: z.string().min(1).optional(),\n externalId: z.string().min(1).optional(),\n // White-label persona override for this workspace's agent. null/omitted uses\n // the deployment default template.\n agentInstructions: z.string().min(1).nullable().optional(),\n});\nexport type CreateWorkspaceRequest = z.infer<typeof CreateWorkspaceRequest>;\n\nexport const EnsureWorkspaceRequest = z\n .object({\n accountId: z.string().uuid(),\n externalSource: z.string().trim().min(1).max(200),\n externalId: z.string().trim().min(1).max(1024),\n name: z.string().trim().min(1).max(200),\n slug: z.string().trim().min(1).max(200).optional(),\n // White-label persona override for this workspace's agent. null/omitted uses\n // the deployment default template.\n agentInstructions: z.string().min(1).nullable().optional(),\n })\n .strict();\nexport type EnsureWorkspaceRequest = z.infer<typeof EnsureWorkspaceRequest>;\n\nexport const EnsureWorkspaceResponse = z\n .object({\n workspace: Workspace,\n created: z.boolean(),\n })\n .strict();\nexport type EnsureWorkspaceResponse = z.infer<typeof EnsureWorkspaceResponse>;\n\nexport const UpdateWorkspaceRequest = z\n .object({\n name: z.string().min(1).optional(),\n slug: z.string().min(1).nullable().optional(),\n // White-label persona override. Pass null to clear it back to the deployment\n // default; omit to leave it unchanged.\n agentInstructions: z.string().min(1).nullable().optional(),\n })\n .strict();\nexport type UpdateWorkspaceRequest = z.infer<typeof UpdateWorkspaceRequest>;\n\n/**\n * Organization API key access tier. `full` keys administer the organization\n * (create workspaces, mint keys, run sessions in every shared workspace);\n * `read` keys only inventory shared workspaces and read their sessions, events,\n * and files. The tier is derived from the key's stored permissions, never\n * stored separately: a key whose permissions omit `workspace:admin` is `read`.\n */\nexport const OrganizationApiKeyAccess = z.enum([\"full\", \"read\"]);\nexport type OrganizationApiKeyAccess = z.infer<typeof OrganizationApiKeyAccess>;\n\nexport const ApiKey = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid().nullable(),\n name: z.string(),\n description: z.string().nullable(),\n prefix: z.string(),\n permissions: z.array(Permission),\n /**\n * Organization keys only: the access tier derived from `permissions`.\n * Omitted for workspace-scoped keys, whose permissions are explicit.\n */\n access: OrganizationApiKeyAccess.optional(),\n expiresAt: z.string().nullable(),\n revokedAt: z.string().nullable(),\n lastUsedAt: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type ApiKey = z.infer<typeof ApiKey>;\n\nexport const CreateApiKeyRequest = z.object({\n name: z.string().min(1),\n description: z.string().trim().min(1).max(500).optional(),\n workspaceId: z.string().uuid().optional(),\n permissions: z.array(Permission).min(1),\n expiresAt: z.string().datetime({ offset: true }).optional(),\n});\nexport type CreateApiKeyRequest = z.infer<typeof CreateApiKeyRequest>;\n\nexport const CreateApiKeyResponse = z.object({\n apiKey: ApiKey,\n token: z.string().min(1),\n});\nexport type CreateApiKeyResponse = z.infer<typeof CreateApiKeyResponse>;\n\nexport const CreateOrganizationApiKeyRequest = z\n .object({\n name: z.string().trim().min(1).max(200),\n description: z.string().trim().min(1).max(500).optional(),\n expiresAt: z.string().datetime({ offset: true }).optional(),\n /** Access tier; omitted means `full` so existing callers keep their keys. */\n access: OrganizationApiKeyAccess.default(\"full\"),\n })\n .strict();\nexport type CreateOrganizationApiKeyRequest = z.infer<typeof CreateOrganizationApiKeyRequest>;\n\n// A person (or API key) with access to a workspace: one workspace_memberships\n// row. `subjectId` is `user:<betterAuthUserId>` or `api_key:<id>`; the People\n// surface lists the `user:` subjects (api_key subjects belong to API keys).\nexport const WorkspaceMember = z.object({\n subjectId: z.string().min(1),\n subjectLabel: z.string().nullable(),\n role: z.string(),\n permissions: z.array(Permission),\n createdAt: z.string(),\n});\nexport type WorkspaceMember = z.infer<typeof WorkspaceMember>;\n\nexport const ListWorkspaceMembersResponse = z.object({\n members: z.array(WorkspaceMember),\n});\nexport type ListWorkspaceMembersResponse = z.infer<typeof ListWorkspaceMembersResponse>;\n\nexport const WorkspaceMemberCandidate = z.object({\n organizationMembershipId: z.string().uuid(),\n subjectId: z.string().min(1),\n name: z.string().min(1).max(1024).nullable(),\n email: z.string().email().max(320).nullable(),\n organizationRole: z.enum([\"owner\", \"admin\", \"member\"]),\n});\nexport type WorkspaceMemberCandidate = z.infer<typeof WorkspaceMemberCandidate>;\n\nexport const ListWorkspaceMemberCandidatesResponse = z.object({\n members: z.array(WorkspaceMemberCandidate).max(1000),\n});\nexport type ListWorkspaceMemberCandidatesResponse = z.infer<\n typeof ListWorkspaceMemberCandidatesResponse\n>;\n\nexport const AddWorkspaceMemberRequest = z.object({\n // The candidate inventory exposes this opaque organization-local identifier.\n // Organization invitations stay in the organization-admin lifecycle.\n organizationMembershipId: z.string().uuid(),\n role: z.string().min(1).optional(),\n permissions: z.array(Permission),\n});\nexport type AddWorkspaceMemberRequest = z.infer<typeof AddWorkspaceMemberRequest>;\n\nexport const UpdateWorkspaceMemberRequest = z.object({\n role: z.string().min(1).optional(),\n permissions: z.array(Permission),\n});\nexport type UpdateWorkspaceMemberRequest = z.infer<typeof UpdateWorkspaceMemberRequest>;\n\nexport const SlackUserLinkAccessRequestStatus = z.enum([\n \"prepared\",\n \"pending\",\n \"completed\",\n \"denied\",\n \"cancelled\",\n \"expired\",\n]);\nexport type SlackUserLinkAccessRequestStatus = z.infer<typeof SlackUserLinkAccessRequestStatus>;\n\n/**\n * Durable, token-free projection of one signed Slack identity-link intent.\n * The original bearer and its digest are deliberately absent from every\n * public response.\n */\nexport const SlackUserLinkAccessRequest = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n workspaceDisplayName: z.string().min(1).max(256).nullable(),\n subjectLabel: z.string().min(1).max(512).nullable(),\n status: SlackUserLinkAccessRequestStatus,\n version: z.number().int().positive(),\n expiresAt: z.string().datetime({ offset: true }),\n requestedAt: z.string().datetime({ offset: true }).nullable(),\n decidedAt: z.string().datetime({ offset: true }).nullable(),\n completedAt: z.string().datetime({ offset: true }).nullable(),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport type SlackUserLinkAccessRequest = z.infer<typeof SlackUserLinkAccessRequest>;\n\nexport const PrepareSlackUserLinkAccessRequest = z.object({\n linkToken: z.string().min(1).max(2_048),\n});\nexport type PrepareSlackUserLinkAccessRequest = z.infer<typeof PrepareSlackUserLinkAccessRequest>;\n\nexport const SlackUserLinkAccessMutationRequest = z.object({\n expectedVersion: z.number().int().positive(),\n idempotencyKey: z.string().trim().min(1).max(200),\n});\nexport type SlackUserLinkAccessMutationRequest = z.infer<typeof SlackUserLinkAccessMutationRequest>;\n\nexport const ApproveSlackUserLinkAccessRequest = SlackUserLinkAccessMutationRequest.extend({\n role: z.string().trim().min(1).max(128).optional(),\n permissions: z.array(Permission).min(1),\n});\nexport type ApproveSlackUserLinkAccessRequest = z.infer<typeof ApproveSlackUserLinkAccessRequest>;\n\nexport const ListSlackUserLinkAccessRequestsResponse = z.object({\n requests: z.array(SlackUserLinkAccessRequest),\n});\nexport type ListSlackUserLinkAccessRequestsResponse = z.infer<\n typeof ListSlackUserLinkAccessRequestsResponse\n>;\n\nexport const UsageEventType = z.enum([\n \"agent_run.created\",\n \"agent_run.completed\",\n \"model.tokens\",\n \"model.cost\",\n \"file.uploaded\",\n \"file.deleted\",\n \"document.indexed\",\n \"scheduled_task.fired\",\n \"knowledge_source_sync.fired\",\n \"knowledge_source_sync.completed\",\n \"knowledge_source_sync.items\",\n \"knowledge_source_sync.bytes\",\n \"api_key.request\",\n // --- sandbox warm-time metering (P2.1) ---\n // Wall-clock seconds a box was warm — the billable warm-time meter. Accrued on\n // the two stateless ticks (turn heartbeat + reaper sweep), idempotent on\n // (sandbox_group_id, lease_epoch, tick) so a shared box (N sessions) is metered\n // EXACTLY ONCE per tick (N sessions != N x bill). Orthogonal to model.tokens /\n // model.cost (model API cost vs provider compute cost — both real, no overlap).\n \"sandbox.warm_seconds\",\n // usd_micros: warm-seconds x the per-provider per-second warm rate.\n \"sandbox.warm_cost\",\n]);\nexport type UsageEventType = z.infer<typeof UsageEventType>;\n\nexport const UsageEvent = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n accountId: z.string().uuid(),\n subjectId: z.string().nullable(),\n eventType: UsageEventType,\n quantity: z.number(),\n unit: z.string(),\n sourceResourceType: z.string().nullable(),\n sourceResourceId: z.string().nullable(),\n idempotencyKey: z.string(),\n occurredAt: z.string(),\n recordedAt: z.string(),\n exportedToBillingAt: z.string().nullable(),\n billingProviderEventId: z.string().nullable(),\n});\nexport type UsageEvent = z.infer<typeof UsageEvent>;\n\n/** UTC Insights windows. \"this month\" aligns with billing's UTC month. */\nexport const InsightsRange = z.enum([\"today\", \"week\", \"month\", \"ytd\"]);\nexport type InsightsRange = z.infer<typeof InsightsRange>;\n\nexport const InsightsBillingPath = z.enum([\"opengeni_credits\", \"external\"]);\nexport type InsightsBillingPath = z.infer<typeof InsightsBillingPath>;\n\nexport const InsightsPricingSource = z.enum([\"configured_list_price\", \"gateway_reported\"]);\nexport type InsightsPricingSource = z.infer<typeof InsightsPricingSource>;\n\nexport const ModelContextContributionSource = z.enum([\n \"workspace_instruction_policy\",\n \"legacy_workspace_instructions\",\n \"preference_registry_descriptor\",\n \"company_profile\",\n \"legacy_memory_v1\",\n \"runtime_skill_catalog\",\n]);\nexport type ModelContextContributionSource = z.infer<typeof ModelContextContributionSource>;\n\n/** Content-free per-call summary of model-visible Agent Knowledge material. */\nexport const ModelContextContributionSummary = z\n .object({\n source: ModelContextContributionSource,\n items: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n utf8Bytes: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n estimatedTokens: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n })\n .strict();\nexport type ModelContextContributionSummary = z.infer<typeof ModelContextContributionSummary>;\n\nexport const ModelContextContributionSummaries = z\n .array(ModelContextContributionSummary)\n .max(6)\n .superRefine((summaries, context) => {\n const seen = new Set<ModelContextContributionSource>();\n for (const [index, summary] of summaries.entries()) {\n if (seen.has(summary.source)) {\n context.addIssue({\n code: \"custom\",\n message: \"Model context contribution sources must be unique\",\n path: [index, \"source\"],\n });\n }\n seen.add(summary.source);\n }\n });\n\nexport const InsightsPromptContributionRow = ModelContextContributionSummary.extend({\n calls: z.number().int().nonnegative(),\n});\nexport type InsightsPromptContributionRow = z.infer<typeof InsightsPromptContributionRow>;\n\nexport const InsightsPromptContributions = z.object({\n /** Sum of UTF-8 byte / 4 estimates across calls with contribution receipts. */\n estimatedTokens: z.number().int().nonnegative(),\n utf8Bytes: z.number().int().nonnegative(),\n coveredCalls: z.number().int().nonnegative(),\n totalCalls: z.number().int().nonnegative(),\n sources: z.array(InsightsPromptContributionRow),\n});\nexport type InsightsPromptContributions = z.infer<typeof InsightsPromptContributions>;\n\nexport const InsightsModelUsageRow = z.object({\n id: z.string().min(1),\n model: z.string().min(1),\n provider: z.string().min(1),\n billing: InsightsBillingPath,\n calls: z.number().int().nonnegative(),\n inputTokens: z.number().nonnegative(),\n outputTokens: z.number().nonnegative(),\n cachedTokens: z.number().nonnegative(),\n cacheInputTokens: z.number().nonnegative(),\n cacheWriteTokens: z.number().nonnegative(),\n reasoningTokens: z.number().nonnegative(),\n totalTokens: z.number().nonnegative(),\n tokenKnownCalls: z.number().int().nonnegative(),\n cacheKnownCalls: z.number().int().nonnegative(),\n /** Priced OpenGeni credit $ for this model×provider (from model_call_facts). */\n creditUsd: z.number().nonnegative(),\n /** Hypothetical provider-rate USD; never an OpenGeni charge. */\n estimatedProviderUsd: z.number().nonnegative(),\n estimatedProviderCostKnownCalls: z.number().int().nonnegative(),\n /** OpenGeni credit price at the captured rate, whether or not credits paid for the call. */\n equivalentCreditUsd: z.number().nonnegative(),\n equivalentCreditCostKnownCalls: z.number().int().nonnegative(),\n});\nexport type InsightsModelUsageRow = z.infer<typeof InsightsModelUsageRow>;\n\nexport const InsightsSeriesPoint = z.object({\n label: z.string().min(1),\n /** UTC hour/day-bucketed sum of usage_events.model.cost (workspace-wide) or filtered facts when provider/model set. */\n modelCostUsd: z.number().nonnegative(),\n /** UTC hour/day-bucketed hypothetical provider-rate USD for calls with captured pricing. */\n estimatedProviderUsd: z.number().nonnegative(),\n estimatedProviderCostKnownCalls: z.number().int().nonnegative(),\n /** UTC hour/day-bucketed equivalent OpenGeni credit price for calls with captured pricing. */\n equivalentCreditUsd: z.number().nonnegative(),\n equivalentCreditCostKnownCalls: z.number().int().nonnegative(),\n warmSeconds: z.number().nonnegative(),\n inputTokens: z.number().nonnegative(),\n outputTokens: z.number().nonnegative(),\n cachedTokens: z.number().nonnegative(),\n cacheInputTokens: z.number().nonnegative(),\n cacheWriteTokens: z.number().nonnegative(),\n reasoningTokens: z.number().nonnegative(),\n totalTokens: z.number().nonnegative(),\n tokenKnownCalls: z.number().int().nonnegative(),\n cacheKnownCalls: z.number().int().nonnegative(),\n cacheHitPct: z.number().int().min(0).max(100),\n calls: z.number().int().nonnegative(),\n});\nexport type InsightsSeriesPoint = z.infer<typeof InsightsSeriesPoint>;\n\nexport const InsightsDepthBucket = z.object({\n depth: z.number().int().nonnegative(),\n sessions: z.number().int().nonnegative(),\n});\nexport type InsightsDepthBucket = z.infer<typeof InsightsDepthBucket>;\n\nexport const InsightsModelFacet = z.object({\n provider: z.string().min(1),\n model: z.string().min(1),\n});\nexport type InsightsModelFacet = z.infer<typeof InsightsModelFacet>;\n\nexport const InsightsSpendDriver = z.object({\n id: z.string().min(1),\n groupBy: z.enum([\"root_session\", \"schedule\"]),\n label: z.string().min(1),\n creditUsd: z.number().nonnegative(),\n estimatedProviderUsd: z.number().nonnegative(),\n estimatedProviderCostKnownCalls: z.number().int().nonnegative(),\n equivalentCreditUsd: z.number().nonnegative(),\n equivalentCreditCostKnownCalls: z.number().int().nonnegative(),\n tokens: z.number().nonnegative(),\n cacheHitPct: z.number().int().min(0).max(100),\n pctOfCreditUsd: z.number().int().min(0).max(100),\n pctOfTokens: z.number().int().min(0).max(100),\n deltaUsdVsPrior: z.number(),\n});\nexport type InsightsSpendDriver = z.infer<typeof InsightsSpendDriver>;\n\nexport const InsightsWarmGroupRow = z.object({\n id: z.string().min(1),\n groupId: z.string().uuid(),\n label: z.string().min(1),\n /** Live lease backend when known; null when only historical warm ticks exist. */\n backend: z.string().nullable(),\n warmSeconds: z.number().nonnegative(),\n /** Currently attached sessions — not cost share. */\n sessionsAttached: z.number().int().nonnegative(),\n});\nexport type InsightsWarmGroupRow = z.infer<typeof InsightsWarmGroupRow>;\n\nexport const InsightsLiveWarmLease = z.object({\n id: z.string().uuid(),\n groupId: z.string().uuid(),\n backend: z.string().min(1),\n turnHolders: z.number().int().nonnegative(),\n viewerHolders: z.number().int().nonnegative(),\n warmForLabel: z.string().min(1),\n warmSeconds: z.number().nonnegative(),\n});\nexport type InsightsLiveWarmLease = z.infer<typeof InsightsLiveWarmLease>;\n\nexport const InsightsFloorSession = z.object({\n id: z.string().uuid(),\n title: z.string(),\n state: z.enum([\"running\", \"paused\", \"failed\", \"idle\", \"compacting\", \"waiting\"]),\n depth: z.number().int().nonnegative(),\n model: z.string().nullable(),\n provider: z.string().nullable(),\n ageLabel: z.string(),\n cacheHitPct: z.number().int().min(0).max(100).nullable(),\n route: z.string().nullable(),\n});\nexport type InsightsFloorSession = z.infer<typeof InsightsFloorSession>;\n\nexport const InsightsScheduleRow = z.object({\n id: z.string().uuid(),\n name: z.string(),\n fires: z.number().int().nonnegative(),\n /** Null when no facts carry scheduled_task_id for this window. */\n creditUsd: z.number().nonnegative().nullable(),\n estimatedProviderUsd: z.number().nonnegative().nullable(),\n estimatedProviderCostKnownCalls: z.number().int().nonnegative().nullable(),\n equivalentCreditUsd: z.number().nonnegative().nullable(),\n equivalentCreditCostKnownCalls: z.number().int().nonnegative().nullable(),\n tokens: z.number().nonnegative().nullable(),\n cacheHitPct: z.number().int().min(0).max(100).nullable(),\n billing: InsightsBillingPath.nullable(),\n});\nexport type InsightsScheduleRow = z.infer<typeof InsightsScheduleRow>;\n\nexport const InsightsModelCallRow = z.object({\n id: z.string().uuid(),\n occurredAt: z.string().datetime(),\n recordedAt: z.string().datetime(),\n sessionId: z.string().uuid(),\n sessionTitle: z.string(),\n turnId: z.string().uuid(),\n provider: z.string().min(1),\n providerApi: z.string().min(1),\n model: z.string().min(1),\n billing: InsightsBillingPath,\n inputTokens: z.number().nonnegative().nullable(),\n outputTokens: z.number().nonnegative().nullable(),\n cachedTokens: z.number().nonnegative().nullable(),\n cacheWriteTokens: z.number().nonnegative().nullable(),\n reasoningTokens: z.number().nonnegative().nullable(),\n totalTokens: z.number().nonnegative().nullable(),\n /** OpenGeni credit price for this call. External calls are always zero. */\n creditUsd: z.number().nonnegative(),\n /** Hypothetical provider-rate USD; null when historical pricing is unavailable. */\n estimatedProviderUsd: z.number().nonnegative().nullable(),\n /** Equivalent OpenGeni credit price; null when historical pricing is unavailable. */\n equivalentCreditUsd: z.number().nonnegative().nullable(),\n pricingSource: InsightsPricingSource.nullable(),\n});\nexport type InsightsModelCallRow = z.infer<typeof InsightsModelCallRow>;\n\nexport const WorkspaceInsightsSnapshot = z.object({\n range: InsightsRange,\n rangeLabel: z.string().min(1),\n priorLabel: z.string().min(1),\n seriesLabel: z.string().min(1),\n cacheSeriesLabel: z.string().min(1),\n windowStart: z.string().datetime(),\n windowEnd: z.string().datetime(),\n generatedAt: z.string().datetime(),\n /** All ranges/series are UTC. */\n timezone: z.literal(\"UTC\"),\n models: z.array(InsightsModelUsageRow),\n /** Unfiltered provider×model pairs in the window — drives filter dropdowns. */\n facets: z.array(InsightsModelFacet),\n series: z.array(InsightsSeriesPoint),\n depth: z.array(InsightsDepthBucket),\n drivers: z.array(InsightsSpendDriver),\n schedules: z.array(InsightsScheduleRow),\n recentCalls: z.array(InsightsModelCallRow),\n promptContributions: InsightsPromptContributions.default({\n estimatedTokens: 0,\n utf8Bytes: 0,\n coveredCalls: 0,\n totalCalls: 0,\n sources: [],\n }),\n warmSeconds: z.number().nonnegative(),\n priorWarmSeconds: z.number().nonnegative(),\n warmGroups: z.array(InsightsWarmGroupRow),\n liveWarm: z.array(InsightsLiveWarmLease),\n floor: z.array(InsightsFloorSession),\n selfhostedEnabled: z.boolean(),\n machinesOnline: z.number().int().nonnegative(),\n /** Workspace-wide OpenGeni credit $ from usage_events.model.cost (unfiltered). */\n workspaceCreditUsd: z.number().nonnegative(),\n priorWorkspaceCreditUsd: z.number().nonnegative(),\n /** Model-filterable credit $ from facts (equals workspace when unfiltered, ignoring late-reject drift). */\n creditUsd: z.number().nonnegative(),\n priorCreditUsd: z.number().nonnegative(),\n /** Hypothetical provider-rate USD for calls whose historical price was captured. */\n estimatedProviderUsd: z.number().nonnegative(),\n priorEstimatedProviderUsd: z.number().nonnegative(),\n estimatedProviderCostKnownCalls: z.number().int().nonnegative(),\n priorEstimatedProviderCostKnownCalls: z.number().int().nonnegative(),\n /** Equivalent OpenGeni credit price across calls whose historical price was captured. */\n equivalentCreditUsd: z.number().nonnegative(),\n priorEquivalentCreditUsd: z.number().nonnegative(),\n equivalentCreditCostKnownCalls: z.number().int().nonnegative(),\n priorEquivalentCreditCostKnownCalls: z.number().int().nonnegative(),\n modelCalls: z.number().int().nonnegative(),\n priorInputTokens: z.number().nonnegative(),\n priorTotalTokens: z.number().nonnegative(),\n priorCacheHitPct: z.number().int().min(0).max(100),\n priorCalls: z.number().int().nonnegative(),\n /** Lifetime workspace topology (not scoped to the selected Insights range). */\n goalsActive: z.number().int().nonnegative(),\n goalsCompleted: z.number().int().nonnegative(),\n sessionsTouched: z.number().int().nonnegative(),\n rootSessions: z.number().int().nonnegative(),\n deepestDepth: z.number().int().nonnegative(),\n deepestSessionTitle: z.string(),\n avgDepth: z.number().nonnegative(),\n warmIdleNow: z.number().int().nonnegative(),\n /** Billable credits-path tokens this UTC month (usage_events.model.tokens). */\n billableTokensUsed: z.number().nonnegative(),\n billableTokenCap: z.number().int().positive().nullable(),\n /** Agent runs this UTC month (usage_events.agent_run.created). */\n agentRunsUsed: z.number().nonnegative(),\n agentRunCap: z.number().int().positive().nullable(),\n /** True when provider/model filters exclude workspace-wide warm/caps meaning. */\n modelFilterActive: z.boolean(),\n});\nexport type WorkspaceInsightsSnapshot = z.infer<typeof WorkspaceInsightsSnapshot>;\n\nexport const WorkspaceInsightsResponse = z.object({\n snapshot: WorkspaceInsightsSnapshot,\n});\nexport type WorkspaceInsightsResponse = z.infer<typeof WorkspaceInsightsResponse>;\n\nexport const LimitAction = z.enum([\n \"agent_run:create\",\n \"tokens:consume\",\n \"file:upload\",\n \"document:index\",\n \"schedule:create\",\n \"workspace:create\",\n \"api_key:create\",\n]);\nexport type LimitAction = z.infer<typeof LimitAction>;\n\nexport const StaticUsageLimits = z.object({\n maxWorkspacesPerAccount: z.number().int().positive().optional(),\n maxApiKeysPerWorkspace: z.number().int().positive().optional(),\n maxSchedulesPerWorkspace: z.number().int().positive().optional(),\n maxFileUploadBytes: z.number().int().positive().optional(),\n maxMonthlyAgentRunsPerWorkspace: z.number().int().positive().optional(),\n maxMonthlyTokensPerWorkspace: z.number().int().positive().optional(),\n maxMonthlyCostMicrosPerAccount: z.number().int().positive().optional(),\n maxDocumentIndexedChunksPerWorkspace: z.number().int().positive().optional(),\n});\nexport type StaticUsageLimits = z.infer<typeof StaticUsageLimits>;\n\nexport const EntitlementValue = z.union([z.boolean(), z.string(), z.number(), z.array(z.string())]);\nexport type EntitlementValue = z.infer<typeof EntitlementValue>;\n\nexport const Entitlements = z.record(z.string().min(1), EntitlementValue);\nexport type Entitlements = z.infer<typeof Entitlements>;\n\nexport const LimitDecision = z.discriminatedUnion(\"allowed\", [\n z.object({ allowed: z.literal(true) }),\n z.object({\n allowed: z.literal(false),\n code: z.string(),\n message: z.string(),\n }),\n]);\nexport type LimitDecision = z.infer<typeof LimitDecision>;\n\n// ============ P3 — Entitlements port (§7.5) ============\n//\n// The host-providable admission seam over OpenGeni's TWO existing admission\n// sites: the API edge (`checkLimit`/`requireLimit`, billing/limits.ts) AND the\n// worker edge (`ensureRunAllowed`, agent-turn.ts — both turn-entry and the\n// mid-stream budget valve). A host that owns its OWN ledger/meter binds this to\n// keep OpenGeni from re-deriving admission from its local ledger.\n//\n// CRITICAL CONTRACT: `admitRun` returns a transport-neutral allow/deny decision\n// (+ optional structured reason + the echoed quantity it admitted) and NEVER\n// exposes `getBillingBalance` or any ledger internals — the host's balance math\n// stays on the host side of the boundary. This is what lets the same port serve\n// both PUSH (host funds OpenGeni's ledger; admission is a LOCAL read of that\n// funded ledger) and PULL (a network callback to the host's own meter).\n//\n// `action` is a free `string` (NOT the internal `LimitAction` enum) so a host\n// meter can key on actions OpenGeni does not model. `quantity` is the units the\n// caller is about to consume (tokens, bytes, 1 run, …); the decision MAY echo\n// the admitted quantity so a PULL host can grant a partial allowance.\nexport const EntitlementDecision = z.discriminatedUnion(\"allowed\", [\n z.object({ allowed: z.literal(true), quantity: z.number().optional() }),\n z.object({\n allowed: z.literal(false),\n reason: z.string(),\n code: z.string().optional(),\n quantity: z.number().optional(),\n }),\n]);\nexport type EntitlementDecision = z.infer<typeof EntitlementDecision>;\n\nexport type AdmitRunInput = {\n accountId: string;\n workspaceId: string;\n action: string;\n quantity: number;\n};\n\nexport type EntitlementsPort = {\n admitRun(input: AdmitRunInput): Promise<EntitlementDecision>;\n};\n\nexport const GitCredentialProvider = z.enum([\"github\", \"gitlab\", \"azure_devops\"]);\nexport type GitCredentialProvider = z.infer<typeof GitCredentialProvider>;\n\n// Host-opaque identity for one independently mintable Git credential. It is\n// deliberately NOT constrained to a filesystem-safe alphabet: runtimes hash it\n// before using it in paths, command text, or environment variable names.\nexport const GitCredentialBindingId = z.string().min(1).max(256);\nexport type GitCredentialBindingId = z.infer<typeof GitCredentialBindingId>;\n\nexport const GitRepositoryAccess = z.enum([\"read\", \"write\"]);\nexport type GitRepositoryAccess = z.infer<typeof GitRepositoryAccess>;\n\nconst GitProviderRepositoryId = z.union([z.number().int().positive(), z.string().min(1)]);\n\nexport const GitCredentialRepositoryRef = z.object({\n provider: GitCredentialProvider.optional(),\n credentialBindingId: GitCredentialBindingId.optional(),\n access: GitRepositoryAccess.optional(),\n uri: z.string().min(1),\n ref: z.string().min(1),\n /** Immutable commit the caller expects `ref` to materialize. */\n expectedCommitSha: z\n .string()\n .regex(/^[0-9a-f]{40}$/)\n .optional(),\n repositoryId: GitProviderRepositoryId.optional(),\n installationId: GitProviderRepositoryId.optional(),\n projectId: GitProviderRepositoryId.optional(),\n connectionId: z.string().min(1).optional(),\n});\nexport type GitCredentialRepositoryRef = z.infer<typeof GitCredentialRepositoryRef>;\n\n// ============ connection-credential provider — Connection-credential provider (§7.6) ============\n//\n// The host-providable credential seam over OpenGeni's run-scoped credential\n// sites in the worker and API:\n// - GIT credentials: run-scoped provider tokens minted in\n// `sandboxEnvironmentForRun` (standalone self-mints GitHub App tokens from\n// `settings`; embedded hosts can broker GitHub, GitLab, and Azure DevOps)\n// and seeded off-manifest into sandbox token files for git + provider CLIs.\n// - SANDBOX secrets: the decrypted variable set values loaded in\n// `loadVariableSetForRun` (today decrypted with\n// `environmentsEncryptionKeyBytes(settings)`).\n// - MCP credentials: request-time transport headers for connection-backed\n// servers, shared by normal model tools and Codemode/Code Mode.\n//\n// In embedded/separate topologies the HOST owns these external connections\n// (its GitHub App, its secret vault + encryption key). When a host binds this\n// port, OpenGeni asks the host to mint/decrypt per-run instead of self-minting\n// from `settings`. Unset (standalone default) → byte-for-byte today's\n// self-mint.\n//\n// Workspace-scope cross-check (the host-mapping safety guardrail): a credential\n// provider returns the `workspaceId` it scoped the credential to, and the\n// activity ASSERTS it agrees with the run's workspace BEFORE injecting\n// any git provider token seed (or applying decrypted environment values). A host mapping bug that\n// returns tenant B's creds while the run is tenant A is thereby caught at the\n// seam, never silently injected into tenant A's sandbox.\n\nexport type GitCredentialsRequest = {\n accountId: string;\n workspaceId: string;\n /** Immutable authority admitted with the turn requesting this credential. */\n sessionId: string;\n rootSessionId: string;\n turnId: string;\n attemptId: string;\n executionGeneration: number;\n initiator: TurnInitiator;\n initiatorContext: TurnInitiatorContext;\n // Provider defaults to \"github\" for the legacy request shape. GitHub-only\n // hosts can keep reading installationId/repositoryIds exactly as before;\n // provider-aware hosts should branch on this and repositoryRefs.\n provider?: GitCredentialProvider;\n // Present when the host supplied an explicit binding or when more than one\n // independently mintable credential exists for this provider. A host must\n // mint only this binding; OpenGeni never treats provider identity as enough\n // to select among multiple accounts/installations.\n credentialBindingId?: GitCredentialBindingId;\n // Canonical lower-case host shared by this binding's repository refs when\n // there is exactly one. Binding-aware providers echo it when present.\n providerHost?: string;\n // Token requests are the existing behavior. Identity requests let lazy\n // sandbox provisioning resolve stable git author/committer identity before\n // the box exists while deferring the rotating token value to first provision.\n purpose?: \"token\" | \"identity\";\n // Provider-neutral repository refs for hosts that broker non-GitHub tokens.\n // For GitHub requests these are additive to the legacy fields below.\n repositoryRefs?: GitCredentialRepositoryRef[];\n // Legacy GitHub App installation shape retained for 0.x compatibility.\n installationId: number;\n repositoryIds: number[];\n};\n\n/**\n * One exact repository route exposed by a host-owned HTTPS smart-Git broker.\n *\n * `repositoryUri` must echo one URI from the request's `repositoryRefs`.\n * `brokerUri` is a stable, credential-free HTTPS remote. The rotating bearer\n * remains separate in `GitCredentials.token`, so it cannot leak through Git\n * configuration, provider-CLI arguments, manifests, or repository metadata.\n */\nexport type GitHttpBrokerRepositoryRoute = {\n repositoryUri: string;\n brokerUri: string;\n};\n\n/**\n * Optional transport override for credentials that cannot be safely narrowed\n * into a provider token. Omission retains the provider-token behavior.\n */\nexport type GitCredentialTransport = {\n kind: \"http_broker\";\n repositories: GitHttpBrokerRepositoryRoute[];\n};\n\nexport type GitCredentials = {\n // The minted secret. For the default transport this is a provider token; for\n // `http_broker` it is the broker bearer. Required for purpose=\"token\";\n // optional for purpose=\"identity\" so hosts can return only stable git identity\n // before lazy sandbox provision. The value never enters the manifest.\n token?: string;\n // A host-owned exact smart-Git transport for providers whose available token\n // cannot be constrained to the selected repositories. OpenGeni rewrites only\n // the echoed repository remotes and never exposes this bearer to provider\n // CLIs. Omitted means the token is a direct provider credential.\n transport?: GitCredentialTransport;\n // workspace-scope cross-check echo: the workspace the provider scoped this token to. The activity\n // asserts `workspaceId === request.workspaceId` before injecting.\n workspaceId: string;\n // Strict request echoes for binding-aware requests. OpenGeni validates these\n // before accepting a token, preventing a host routing bug from returning a\n // sibling connection's credential. They remain optional for legacy single-\n // binding/provider hosts.\n credentialBindingId?: GitCredentialBindingId;\n provider?: GitCredentialProvider;\n providerHost?: string;\n // Optional provider expiry for host-managed proactive renewal. ISO-8601;\n // null/omitted means the host does not expose a deadline and OpenGeni uses\n // its conservative bounded refresh cadence instead.\n expiresAt?: string | null;\n // Optional git identity override. When omitted the activity falls back to\n // today's `githubAppBotIdentity(settings)`.\n identity?: { name: string; email: string } | null;\n};\n\nexport type SandboxSecretsRequest = {\n accountId: string;\n workspaceId: string;\n // Exact live attempt authority. Hosts MUST revalidate this tuple, the\n // session's selected resource identity, and any personal-resource grant\n // immediately before returning plaintext.\n sessionId: string;\n turnId: string;\n attemptId: string;\n executionGeneration: number;\n // Organization/workspace Variable Sets may be materialized by a pure\n // service turn (for example, the scheduler). Personal Variable Sets still\n // require this causal human and an exact personal-resource grant.\n initiator: TurnInitiator;\n initiatingHumanSubjectId: string | null;\n variableSetId: string;\n /**\n * Exact accepted scheduled-occurrence generation. Present only for scheduled\n * attempts; ordinary live turns omit it, so hosts that predate this field keep\n * working unchanged for those.\n */\n expectedGeneration?: number | null;\n};\n\nexport type SandboxSecrets = {\n // The decrypted variableSet values the run injects, replacing the local\n // `environmentsEncryptionKeyBytes` decrypt. Same shape the self-mint path\n // produces (plaintext name→value).\n values: Record<string, string>;\n // Exact scope/resource echoes are mandatory so a host routing bug cannot\n // inject a sibling tenant, resource, or stale attempt's plaintext.\n accountId: string;\n workspaceId: string;\n sessionId: string;\n turnId: string;\n attemptId: string;\n executionGeneration: number;\n variableSetId: string;\n /** Must echo the request's `expectedGeneration` when one was supplied. */\n expectedGeneration?: number | null;\n scope: VariableSetScope;\n generation: number;\n // Optional variableSet metadata; when omitted the activity uses the\n // variableSetId as both id and name (the local decrypt carries the row's\n // id/name/description, but only `id` is load-bearing downstream).\n id?: string;\n name?: string;\n description?: string | null;\n};\n\nexport type CredentialAuthNeededReason =\n | \"missing_connection\"\n | \"expired\"\n | \"insufficient_scope\"\n | \"refresh_failed\";\n\n/**\n * Host-owned run credentials are materialized below one OpenGeni-owned sandbox\n * directory. Paths are relative POSIX names; the runtime validates traversal,\n * collisions, bounds, and modes before any content reaches a sandbox.\n */\nexport type RunCredentialFile = {\n path: string;\n content: string;\n mode?: \"0400\" | \"0600\";\n};\n\nexport type RunCredentialAuthNeeded = {\n reason: CredentialAuthNeededReason;\n providerDomain?: string;\n connectionId?: string;\n scopes?: string[];\n resource?: string;\n authorizationUrl?: string;\n /** Bounded non-secret guidance. Never place credential material here. */\n message?: string;\n};\n\nexport type RunCredentialsRequest = {\n accountId: string;\n workspaceId: string;\n sessionId: string;\n parentSessionId: string | null;\n rootSessionId: string;\n /** All sessions sharing this sandbox group share one OS/filesystem trust boundary. */\n sandboxGroupId: string;\n turnId: string;\n attemptId: string;\n executionGeneration: number;\n /** Immutable authority admitted with this turn. */\n initiator: TurnInitiator;\n initiatorContext: TurnInitiatorContext;\n effectiveSandboxBackend: SandboxBackend;\n sandboxOs: SandboxOs;\n purpose: \"provision\" | \"renewal\";\n forceRefresh: boolean;\n /** Informational standalone variable-set identity; never gates host resolution. */\n variableSet: { id: string; name: string } | null;\n};\n\nexport type RunCredentialsResolution =\n | {\n /**\n * The frozen target/attempt must not receive host material. Hosts use\n * this for unsupported OSes/backends and policy-based opt-out; the\n * decision must remain stable for the attempt.\n */\n status: \"not_applicable\";\n accountId: string;\n workspaceId: string;\n sessionId: string;\n }\n | {\n status: \"ok\";\n /** Scope echoes are mandatory and checked before materialization. */\n accountId: string;\n workspaceId: string;\n sessionId: string;\n /** Secret environment values. Always delivered off-manifest. */\n environment: Record<string, string>;\n files?: RunCredentialFile[];\n /** Environment name to one returned relative file path. */\n fileEnvironment?: Record<string, string>;\n /** Earliest material expiry. Null/omitted uses a bounded refresh cadence. */\n expiresAt?: string | null;\n /** Partial degradation: usable material may coexist with reconnect notices. */\n authNeeded?: RunCredentialAuthNeeded[];\n }\n | {\n status: \"auth_needed\";\n accountId: string;\n workspaceId: string;\n sessionId: string;\n authNeeded: RunCredentialAuthNeeded[];\n };\n\nexport const McpConnectionResourceScope = z\n .object({\n /** Provider-stable repository identity, serialized as a string on the wire. */\n id: z.string().min(1).max(512),\n kind: z.literal(\"repository\"),\n })\n .strict();\nexport type McpConnectionResourceScope = z.infer<typeof McpConnectionResourceScope>;\n\nconst McpConnectionResourceScopes = z\n .array(McpConnectionResourceScope)\n .min(1)\n .max(256)\n .superRefine((resources, context) => {\n const seen = new Set<string>();\n for (const [index, resource] of resources.entries()) {\n const key = `${resource.kind}\\0${resource.id}`;\n if (seen.has(key)) {\n context.addIssue({\n code: \"custom\",\n message: \"selectedResources must not contain duplicates\",\n path: [index],\n });\n }\n seen.add(key);\n }\n });\n\nexport const McpServerConnectionRef = z\n .object({\n /** Opaque host or standalone connection identifier. */\n connectionId: z.string().min(1).optional(),\n /** Host-owned credential authority; omission keeps OpenGeni's native connection authority. */\n authoritySource: z.literal(\"host\").optional(),\n /** Opt-in durable reference. A live execution validator is mandatory. */\n hostBinding: z\n .object({ bindingId: z.string().uuid(), generation: z.number().int().positive().safe() })\n .strict()\n .optional(),\n /** Stable provider family (for example github, gitlab, or azure_devops). */\n provider: z.string().min(1).max(128).optional(),\n /** Provider host or tenant domain. */\n providerDomain: z.string().min(1),\n kind: z.enum([\"oauth2\", \"api_key\", \"app_install\", \"delegated\"]).optional(),\n scopes: z.array(z.string().min(1)).optional(),\n /** OAuth resource indicator. This is distinct from selectedResources. */\n resource: z.string().min(1).optional(),\n /** Exact provider resources this MCP binding is allowed to operate on. */\n selectedResources: McpConnectionResourceScopes.optional(),\n subjectScope: z.enum([\"workspace\", \"subject\"]).optional(),\n })\n .strict()\n .superRefine((reference, context) => {\n if (reference.authoritySource === \"host\" && !reference.connectionId) {\n context.addIssue({\n code: \"custom\",\n message: \"host authority requires connectionId\",\n path: [\"connectionId\"],\n });\n }\n if (reference.hostBinding && reference.authoritySource !== \"host\")\n context.addIssue({\n code: \"custom\",\n path: [\"hostBinding\"],\n message: \"Durable binding requires host authority\",\n });\n if (!reference.selectedResources) return;\n if (!reference.connectionId) {\n context.addIssue({\n code: \"custom\",\n message: \"selectedResources requires connectionId\",\n path: [\"connectionId\"],\n });\n }\n if (!reference.provider) {\n context.addIssue({\n code: \"custom\",\n message: \"selectedResources requires provider\",\n path: [\"provider\"],\n });\n }\n });\nexport type McpServerConnectionRef = z.infer<typeof McpServerConnectionRef>;\n\n/** Internal frozen authority for one personal MCP connection. */\nexport const McpPersonalConnectionDelegation = z\n .object({\n serverId: z.string().min(1).max(256),\n connectionId: z.string().uuid(),\n /**\n * Immutable physical workspace that owns an activated common-user\n * connection. It is server-resolved from the selected authority and lets\n * provider adapters load only that exact row when the accepted turn runs\n * in another workspace of the same organization.\n */\n originWorkspaceId: z.string().uuid().optional(),\n ownerSubjectId: z.string().min(1).max(512),\n providerDomain: z.string().min(1).max(2048),\n kind: z.enum([\"oauth2\", \"api_key\", \"app_install\", \"delegated\"]).optional(),\n connectionType: z.enum([\"mcp\", \"social\", \"atlassian\", \"github_personal\"]).optional(),\n /**\n * Explicit common-authority grant selected by the owning human. Omission is\n * retained only for legacy_user connections that cannot yet participate in\n * the organization-user authority lifecycle.\n */\n userDelegation: UserResourceDelegation.optional(),\n /**\n * Personal GitHub only: the exact repository authority frozen when this\n * accepted work was admitted. The credential binding is evidence, not an\n * authorization; physical provider use must revalidate every mutable\n * connection/grant/selection fence against this snapshot.\n */\n personalGitHubRepositorySelection: z\n .object({\n credentialBindingId: z.string().uuid(),\n connectionAuthorityGeneration: z.number().int().positive(),\n selectionGeneration: z.number().int().positive(),\n repositories: z\n .array(\n z\n .object({\n repositoryId: z.string().regex(/^[1-9]\\d*$/u),\n fullName: z.string().min(3).max(140),\n canonicalUrl: z.string().url().max(512),\n ref: z.string().min(1).max(255),\n access: GitRepositoryAccess,\n selectionGeneration: z.number().int().positive(),\n })\n .strict(),\n )\n .min(1)\n .max(100),\n })\n .strict()\n .optional(),\n /**\n * Google Drive publication only: the exact output destination frozen when\n * this delegation was accepted, so a later connection-settings change can\n * never redirect an already-accepted turn's publication. Structurally\n * mirrors GoogleDriveOutputDestination (defined in ./google-drive, which\n * imports this module - hence the inline shape). Absent on pre-freeze\n * turns, which keep the bounded legacy live-resolution behavior.\n */\n outputDestination: z\n .object({\n folderId: z.string().min(1).max(256),\n folderName: z.string().min(1).max(1024),\n driveId: z.string().min(1).max(256).nullable(),\n location: z.enum([\"my_drive\", \"shared_drive\"]),\n selectedAt: z.string().datetime({ offset: true }),\n })\n .strict()\n .optional(),\n })\n .strict()\n .superRefine((delegation, context) => {\n const personalGitHub = delegation.connectionType === \"github_personal\";\n if (personalGitHub !== (delegation.personalGitHubRepositorySelection !== undefined)) {\n context.addIssue({\n code: \"custom\",\n path: [\"personalGitHubRepositorySelection\"],\n message: \"personal GitHub delegation requires one repository authority snapshot\",\n });\n }\n if (!personalGitHub) return;\n if (\n delegation.serverId !== \"github:personal\" ||\n delegation.providerDomain !== \"github.com\" ||\n delegation.kind !== \"oauth2\" ||\n !delegation.originWorkspaceId ||\n !delegation.userDelegation\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"personal GitHub delegation requires exact user-owned connection authority\",\n });\n }\n const repositories = delegation.personalGitHubRepositorySelection?.repositories ?? [];\n const repositoryIds = new Set<string>();\n const canonicalUrls = new Set<string>();\n repositories.forEach((repository, index) => {\n const canonicalUrl = repository.canonicalUrl.toLowerCase();\n if (\n !/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})\\/[A-Za-z0-9_.-]{1,100}$/u.test(repository.fullName) ||\n repository.canonicalUrl !== `https://github.com/${repository.fullName}`\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"personalGitHubRepositorySelection\", \"repositories\", index, \"canonicalUrl\"],\n message: \"personal GitHub repository identity must be canonical\",\n });\n }\n if (repositoryIds.has(repository.repositoryId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"personalGitHubRepositorySelection\", \"repositories\", index, \"repositoryId\"],\n message: \"personal GitHub repositories must be unique by provider id\",\n });\n }\n if (canonicalUrls.has(canonicalUrl)) {\n context.addIssue({\n code: \"custom\",\n path: [\"personalGitHubRepositorySelection\", \"repositories\", index, \"canonicalUrl\"],\n message: \"personal GitHub repositories must be unique by canonical URL\",\n });\n }\n repositoryIds.add(repository.repositoryId);\n canonicalUrls.add(canonicalUrl);\n });\n });\nexport type McpPersonalConnectionDelegation = z.infer<typeof McpPersonalConnectionDelegation>;\n\n/**\n * Exact personal MCP authority frozen on one causal turn or scheduled task.\n * One server can have at most one grant; bounded validation keeps corrupt JSON\n * from becoming executable credential authority at a DB read boundary.\n */\nexport const McpPersonalConnectionDelegations = z\n .array(McpPersonalConnectionDelegation)\n .max(128)\n .superRefine((delegations, context) => {\n const seen = new Set<string>();\n for (const [index, delegation] of delegations.entries()) {\n if (seen.has(delegation.serverId)) {\n context.addIssue({\n code: \"custom\",\n message: \"personal MCP delegations must be unique by serverId\",\n path: [index, \"serverId\"],\n });\n }\n seen.add(delegation.serverId);\n }\n });\n\nexport const McpPersonalConnectionSummary = z\n .object({\n serverId: z.string().min(1).max(256),\n providerDomain: z.string().min(1).max(2048),\n })\n .strict();\nexport type McpPersonalConnectionSummary = z.infer<typeof McpPersonalConnectionSummary>;\n\n/**\n * Public, credential-free selection of one exact personal connection grant for\n * one selected MCP/first-party server. The owner is always derived server-side.\n */\nexport const McpConnectionAuthoritySelection = z\n .object({\n serverId: z.string().min(1).max(256),\n connectionId: z.string().uuid(),\n userDelegation: UserResourceDelegation,\n })\n .strict();\nexport type McpConnectionAuthoritySelection = z.infer<typeof McpConnectionAuthoritySelection>;\n\nexport const McpConnectionAuthoritySelections = z\n .array(McpConnectionAuthoritySelection)\n .max(128)\n .superRefine((selections, context) => {\n const seen = new Set<string>();\n for (const [index, selection] of selections.entries()) {\n if (seen.has(selection.serverId)) {\n context.addIssue({\n code: \"custom\",\n message: \"connection authority selections must be unique by serverId\",\n path: [index, \"serverId\"],\n });\n }\n seen.add(selection.serverId);\n }\n });\n\nexport type McpCredentialsRequest = {\n accountId: string;\n workspaceId: string;\n /** Immediate session whose model or Codemode call needs the credential. */\n sessionId: string;\n /** Workspace-scoped lineage root for host authorization and binding lookup. */\n rootSessionId: string;\n turnId: string;\n /** Null only while a durable turn exists without a currently executing attempt. */\n attemptId: string | null;\n executionGeneration: number;\n /** The immutable authority that admitted this turn. Never substitute the sandbox caller. */\n initiator: TurnInitiator;\n initiatorContext: TurnInitiatorContext;\n /** Immediate technical caller, retained only as non-authoritative audit context. */\n callerSubjectId?: string;\n surface: \"model\" | \"codemode\";\n /** Canonical MCP destination that will receive the resolved headers. */\n destinationUrl: string;\n /**\n * Credential transport requested by the caller. Omitted means the existing\n * header-only MCP transport. The additive `http_api` target allows embedding\n * hosts to return query/cookie API-key placements for local API integrations\n * without making those placements eligible for a remote MCP request.\n */\n credentialTarget?: \"mcp\" | \"http_api\";\n serverId: string;\n toolName?: string;\n connectionRef: McpServerConnectionRef;\n forceRefresh: boolean;\n /** Canonical credential-free authority frozen on the accepted turn. */\n connectionUseAuthority?: unknown;\n /** Stable idempotency key for this one physical provider request. */\n connectionUseRequestId?: string;\n};\n\nexport type McpCredentialAuthNeededReason =\n | CredentialAuthNeededReason\n | \"personal_authority_unavailable\"\n | \"unsupported_auth\"\n | \"resource_scope_unavailable\";\n\nexport type ConnectionCredentialPlacement = {\n carrier: \"header\" | \"query\" | \"cookie\";\n name: string;\n value: string;\n prefix?: string;\n};\n\nexport type McpCredentialResolution =\n | {\n status: \"ok\";\n /** Scope echoes are mandatory and verified before any header is used. */\n accountId: string;\n workspaceId: string;\n sessionId: string;\n headers: Record<string, string>;\n /**\n * Optional normalized HTTP credential placements. When present, header\n * placements must exactly match `headers`. Query/cookie placements are\n * accepted only for a request whose credentialTarget is `http_api`.\n */\n placements?: ConnectionCredentialPlacement[];\n connectionId: string;\n providerDomain: string;\n provider?: string;\n scopes?: string[];\n resource?: string;\n selectedResources?: McpConnectionResourceScope[];\n expiresAt?: string | null;\n }\n | {\n status: \"auth_needed\";\n /** Scope echoes are mandatory even when the credential cannot be resolved. */\n accountId: string;\n workspaceId: string;\n sessionId: string;\n reason: McpCredentialAuthNeededReason;\n providerDomain: string;\n provider?: string;\n connectionId?: string;\n scopes?: string[];\n resource?: string;\n selectedResources?: McpConnectionResourceScope[];\n authorizationUrl?: string;\n };\n\n/** Non-turn authority captured by the authenticated API gateway, never by caller JSON. */\nexport type McpGatewayCredentialAuthority = {\n kind: \"external_user\" | \"organization_service\";\n subjectId: string;\n permissions: AccessGrant[\"permissions\"];\n};\n\nexport type McpGatewayCredentialsRequest = Pick<\n McpCredentialsRequest,\n | \"accountId\"\n | \"workspaceId\"\n | \"destinationUrl\"\n | \"credentialTarget\"\n | \"serverId\"\n | \"toolName\"\n | \"connectionRef\"\n | \"forceRefresh\"\n> & {\n surface: \"workspace_gateway\";\n requestId: string;\n authority: McpGatewayCredentialAuthority;\n};\n\nexport type McpGatewayCredentialResolution =\n | (Omit<Extract<McpCredentialResolution, { status: \"ok\" }>, \"sessionId\"> & { requestId: string })\n | (Omit<Extract<McpCredentialResolution, { status: \"auth_needed\" }>, \"sessionId\"> & {\n requestId: string;\n });\n\nexport type ConnectionCredentialsPort = {\n /** Restrict an optional remote adapter to explicit host refs. Omission keeps\n * existing in-process host override and legacy-reference behavior. */\n mcpAuthoritySource?: \"host\";\n // Every leg is optional: a host may drive only the credential classes it\n // owns. An unset leg falls through to today's standalone implementation for\n // that leg only.\n gitCredentials?(input: GitCredentialsRequest): Promise<GitCredentials>;\n sandboxSecrets?(input: SandboxSecretsRequest): Promise<SandboxSecrets>;\n /**\n * Resolve host-owned, session-aware sandbox credentials independently of an\n * OpenGeni variable set. OpenGeni transports and renews the material; the host\n * remains the sole owner of connection selection and credential policy.\n */\n runCredentials?(input: RunCredentialsRequest): Promise<RunCredentialsResolution>;\n /**\n * Resolve rotating MCP transport credentials at request time. Embedded hosts\n * use this to keep their provider connection as the sole credential source;\n * OpenGeni never requires a duplicate connection record. The same resolver is\n * used by model-visible MCP tools and the exact-attempt Codemode projection.\n */\n mcpCredentials?(input: McpCredentialsRequest): Promise<McpCredentialResolution>;\n /** Explicit opt-in for authenticated pre-session discovery and invocation.\n * Does not call the turn-based mcpCredentials fallback or grant durable use. */\n mcpGatewayCredentials?(\n input: McpGatewayCredentialsRequest,\n ): Promise<McpGatewayCredentialResolution>;\n};\n\n// ============ connection-credential provider — GitHub App API port (BYO-App, §7.6 / GitHub credential prototype remainder) ===\n//\n// The host-driven GitHub-API credential leg. GitHub credential prototype closed the establishment +\n// gate (storage) axis; this closes the credential leg by making the live\n// GitHub-API calls host-PROVIDABLE so a BYO-GitHub-App host drives its OWN App\n// credentials (its own JWT-signing key, its own OAuth client) instead of\n// OpenGeni self-minting from `settings`:\n// - authorizeUser: OAuth code exchange + user-visible installation and\n// repository permission discovery. Retained for provider ABI compatibility;\n// visibility is not proof of installation authority and core does not use\n// this method for new workspace binding.\n// - verifyInstallationAccessForUser: OAuth code→token + installation lookup,\n// also retained for provider ABI compatibility and not used for binding.\n// - getInstallation: retained in the provider ABI for compatibility. Direct\n// existing-installation selection is fail-closed and core does not call\n// this method for binding.\n// - listRepositories: the installation-scoped repo listing behind\n// `GET /v1/workspaces/:id/github/repositories` (today\n// `listGitHubAppRepositories(settings, …)`).\n//\n// Unset (standalone default) → today's `settings`-based self-mint runs\n// byte-for-byte (the live GitHub-API verify/list against OpenGeni's own App).\n\nexport type GitHubInstallationSummary = {\n installationId: number;\n accountId: number;\n accountLogin: string | null;\n accountType: string | null;\n suspended: boolean;\n};\n\nexport type GitHubInstallationAuthorityKind = \"personal_owner\" | \"organization_owner\";\n\nexport interface GitHubInstallationBindingCandidate {\n installation: GitHubInstallationSummary;\n authorityKind: GitHubInstallationAuthorityKind;\n}\n\nexport interface GitHubInstallationBindingProof {\n actorId: number;\n actorLogin: string;\n authorityKind: GitHubInstallationAuthorityKind;\n installation: GitHubInstallationSummary;\n repositories: GitHubRepository[];\n}\n\nexport type GitHubRepositoryPermissions = {\n admin: boolean;\n maintain: boolean;\n push: boolean;\n triage: boolean;\n pull: boolean;\n};\n\nexport type GitHubUserRepositoryAccess = GitHubRepository & {\n permissions: GitHubRepositoryPermissions;\n};\n\nexport type GitHubUserInstallationAccess = GitHubInstallationSummary & {\n repositories: GitHubUserRepositoryAccess[];\n};\n\nexport type GitHubAppRepositoryBranchPage = {\n installationId: number;\n repositoryId: number;\n defaultBranch: string;\n branches: string[];\n nextPage: number | null;\n};\n\nexport type GitHubAppApiPort = {\n /**\n * Exchange one fresh GitHub user-authorization code and prove current\n * installation authority. Implementations must accept only exact personal\n * ownership or active organization ownership; installation visibility,\n * repository permission bits, and App Manager metadata are not authority.\n * Organization ownership must be revalidated after repository discovery,\n * immediately before returning the proof used by the durable bind.\n */\n authorizeInstallationBinding?: (input: {\n code: string;\n installationId: number;\n }) => Promise<GitHubInstallationBindingProof>;\n /**\n * Exchange one fresh GitHub user-authorization code and return only existing\n * App installations for which that exact human is the personal owner or an\n * active organization owner. Visibility and repository permissions alone\n * must never produce a candidate.\n */\n discoverInstallationBindingCandidates?: (input: {\n code: string;\n }) => Promise<GitHubInstallationBindingCandidate[]>;\n authorizeUser?: (input: { code: string }) => Promise<GitHubUserInstallationAccess[]>;\n verifyInstallationAccessForUser?: (input: {\n code: string;\n installationId: number;\n }) => Promise<GitHubInstallationSummary>;\n getInstallation?: (input: {\n installationId: number;\n }) => Promise<GitHubInstallationSummary | null>;\n listRepositories?: (input: { installationIds?: number[] }) => Promise<GitHubRepository[]>;\n /**\n * List one bounded page of branch suggestions for one exact repository.\n * Implementations must keep the provider credential server-side and scope\n * it to exactly `repositoryId`; the caller separately rechecks the durable\n * workspace binding immediately before and after this provider request.\n */\n listRepositoryBranches?: (input: {\n installationId: number;\n repositoryId: number;\n page: number;\n limit: number;\n }) => Promise<GitHubAppRepositoryBranchPage>;\n};\n\nexport const BillingBalance = z.object({\n accountId: z.string().uuid(),\n balanceMicros: z.number().int(),\n currency: z.literal(\"usd\"),\n updatedAt: z.string(),\n});\nexport type BillingBalance = z.infer<typeof BillingBalance>;\n\nexport const CreateCheckoutRequest = z.object({\n accountId: z.string().uuid().optional(),\n amountUsd: z\n .number()\n .min(5)\n .max(10_000)\n .refine(\n (value) => Number.isFinite(value) && Math.abs(value - Math.round(value * 100) / 100) < 1e-9,\n { message: \"amountUsd must use cent precision\" },\n ),\n successUrl: z.string().url().optional(),\n cancelUrl: z.string().url().optional(),\n});\nexport type CreateCheckoutRequest = z.infer<typeof CreateCheckoutRequest>;\n\nexport const CreateCheckoutResponse = z.object({\n checkoutSessionId: z.string(),\n url: z.string().url(),\n});\nexport type CreateCheckoutResponse = z.infer<typeof CreateCheckoutResponse>;\n\nexport const CreateBillingPortalRequest = z.object({\n accountId: z.string().uuid().optional(),\n returnUrl: z.string().url().optional(),\n});\nexport type CreateBillingPortalRequest = z.infer<typeof CreateBillingPortalRequest>;\n\nexport const CreateBillingPortalResponse = z.object({\n portalSessionId: z.string(),\n url: z.string().url(),\n});\nexport type CreateBillingPortalResponse = z.infer<typeof CreateBillingPortalResponse>;\n\nexport const RepositoryResourceRef = z.object({\n kind: z.literal(\"repository\"),\n uri: z.string().min(1),\n ref: z.string().min(1),\n /**\n * Optional immutable Git object fence. Repository materialization must fail\n * when the checked-out HEAD is not this exact commit. Event-driven sessions\n * use it to prevent a mutable PR branch from changing underneath a review.\n */\n expectedCommitSha: z\n .string()\n .regex(/^[0-9a-f]{40}$/)\n .optional(),\n mountPath: z.string().min(1).optional(),\n subpath: z.string().min(1).optional(),\n provider: GitCredentialProvider.optional(),\n connectionType: z.literal(\"github_personal\").optional(),\n credentialBindingId: GitCredentialBindingId.optional(),\n access: GitRepositoryAccess.optional(),\n repositoryId: GitProviderRepositoryId.optional(),\n installationId: GitProviderRepositoryId.optional(),\n projectId: GitProviderRepositoryId.optional(),\n connectionId: z.string().min(1).optional(),\n githubInstallationId: z.number().int().positive().optional(),\n githubRepositoryId: z.number().int().positive().optional(),\n});\nexport type RepositoryResourceRef = z.infer<typeof RepositoryResourceRef>;\n\nfunction positiveGitProviderInteger(value: unknown): number | null {\n if (typeof value === \"number\" && Number.isInteger(value) && value > 0) return value;\n if (typeof value === \"string\" && /^\\d+$/.test(value) && Number(value) > 0) {\n return Number(value);\n }\n return null;\n}\n\n/**\n * Resolve whether a repository participates in platform-brokered Git auth.\n * Provider-less public repositories return null; legacy GitHub aliases infer\n * GitHub only when both positive installation and repository ids are present.\n */\nexport function gitCredentialProviderForRepository(\n resource: RepositoryResourceRef,\n): GitCredentialProvider | null {\n if (resource.provider) return resource.provider;\n if (\n positiveGitProviderInteger(resource.githubInstallationId) &&\n positiveGitProviderInteger(resource.githubRepositoryId)\n ) {\n return \"github\";\n }\n return null;\n}\n\n/**\n * Derive the one canonical runtime/broker identity for a repository credential.\n * Every consumer must use this helper so mint grouping, token filenames, and\n * credential-helper routing cannot diverge on legacy provider ids.\n */\nexport function gitCredentialBindingIdForRepository(\n resource: RepositoryResourceRef,\n provider: GitCredentialProvider | null = gitCredentialProviderForRepository(resource),\n): GitCredentialBindingId | null {\n if (!provider) return null;\n const installationId =\n provider === \"github\"\n ? positiveGitProviderInteger(resource.githubInstallationId ?? resource.installationId)\n : null;\n return (\n resource.credentialBindingId ??\n resource.connectionId ??\n (installationId ? `github-installation:${installationId}` : provider)\n );\n}\n\ntype GitRemotePathSemantics = \"dot_git_alias\" | \"exact\";\n\n/**\n * Provider-declared remote-path behavior. Keeping this exhaustive makes a new\n * provider choose its semantics instead of inheriting GitHub conventions.\n */\nconst GIT_REMOTE_PATH_SEMANTICS = {\n github: \"dot_git_alias\",\n gitlab: \"dot_git_alias\",\n azure_devops: \"exact\",\n} as const satisfies Record<GitCredentialProvider, GitRemotePathSemantics>;\n\nfunction gitRemotePathSemantics(\n provider: GitCredentialProvider | null | undefined,\n): GitRemotePathSemantics {\n return provider ? GIT_REMOTE_PATH_SEMANTICS[provider] : \"exact\";\n}\n\nexport class RepositoryUriError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"RepositoryUriError\";\n }\n}\n\n/**\n * Normalize only the safe, provider-neutral parts of an HTTPS clone URI.\n *\n * The provider-defined path is opaque: this helper never adds or removes a\n * `.git` suffix. Embedded user info, query parameters, and fragments are not\n * durable resource identity and are omitted, matching the existing secret-free\n * resource contract.\n */\nexport function normalizeRepositoryTransportUri(uri: string): string {\n let url: URL;\n try {\n url = new URL(uri.trim());\n } catch {\n throw new RepositoryUriError(`invalid repository URI: ${uri}`);\n }\n if (url.protocol !== \"https:\" || !url.hostname) {\n throw new RepositoryUriError(\"repository resources must use HTTPS Git URLs\");\n }\n const path = url.pathname.replace(/^\\/+|\\/+$/g, \"\");\n if (path.split(\"/\").filter(Boolean).length < 2) {\n throw new RepositoryUriError(\"repository URL must include owner and repo\");\n }\n return `https://${url.host.toLowerCase()}/${path}`;\n}\n\n/**\n * Return every URI spelling that a provider explicitly declares equivalent.\n * Exact-path and unqualified providers return only the normalized input URI.\n */\nexport function gitRemoteUriAliases(\n uri: string,\n provider: GitCredentialProvider | null | undefined,\n): string[] {\n const normalizedUri = normalizeRepositoryTransportUri(uri);\n if (gitRemotePathSemantics(provider) === \"exact\") {\n return [normalizedUri];\n }\n const base = normalizedUri.replace(/\\.git$/, \"\");\n return [...new Set([normalizedUri, base, `${base}.git`])];\n}\n\n/** Stable remote identity for deduplication and credential-binding ownership. */\nexport function gitRemoteIdentity(\n uri: string,\n provider: GitCredentialProvider | null | undefined,\n): string {\n const normalizedUri = normalizeRepositoryTransportUri(uri);\n return gitRemotePathSemantics(provider) === \"dot_git_alias\"\n ? normalizedUri.replace(/\\.git$/, \"\")\n : normalizedUri;\n}\n\n/** Provider-aware Git credential-helper path aliases, without a leading slash. */\nexport function gitRemotePathAliases(\n uri: string,\n provider: GitCredentialProvider | null | undefined,\n): string[] {\n return gitRemoteUriAliases(uri, provider).map((alias) =>\n new URL(alias).pathname.replace(/^\\/+|\\/+$/g, \"\"),\n );\n}\n\nexport const FileResourceRef = z.object({\n kind: z.literal(\"file\"),\n fileId: z.string().uuid(),\n mountPath: z.string().min(1).optional(),\n});\nexport type FileResourceRef = z.infer<typeof FileResourceRef>;\n\n/**\n * Private durable metadata carried on user history items. It contains only\n * stable file references, never file bytes, and is removed before model wire\n * serialization. Keeping the references beside the message lets a later turn\n * reconstruct the same typed attachment input after a model switch or retry.\n */\nexport const MODEL_ATTACHMENT_REFS_FIELD = \"opengeni_attachment_refs\" as const;\n/** Private marker for the compact attachment-reference carrier created by compaction. */\nexport const MODEL_ATTACHMENT_CATALOG_MARKER = \"opengeni_attachment_catalog\" as const;\n/**\n * Structured timeline annotations retained beside the deterministic user-text\n * projection in canonical history. Provider adapters remove this OpenGeni\n * extension field; the numbered projection in `content` remains model-visible.\n */\nexport const MODEL_TIMELINE_ANNOTATIONS_FIELD = \"opengeni_timeline_annotations\" as const;\n\nexport const ResourceRef = z.discriminatedUnion(\"kind\", [RepositoryResourceRef, FileResourceRef]);\nexport type ResourceRef = z.infer<typeof ResourceRef>;\n\nexport class ResourceMountPathError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ResourceMountPathError\";\n }\n}\n\n/**\n * Normalize one workspace-relative resource mount path for every runtime.\n *\n * Backslashes are treated as separators so a path cannot be harmless on Linux\n * but become traversal on a connected Windows machine. Empty, absolute,\n * drive-qualified, dot-segment, NUL-containing, and repeated-separator paths\n * fail closed instead of being silently reinterpreted.\n */\nexport function normalizeResourceMountPath(path: string): string {\n const normalizedSeparators = path.trim().replace(/\\\\/g, \"/\");\n if (\n !normalizedSeparators ||\n normalizedSeparators.startsWith(\"/\") ||\n /^[A-Za-z]:\\//.test(normalizedSeparators) ||\n normalizedSeparators.includes(\"\\0\")\n ) {\n throw new ResourceMountPathError(`invalid resource mount path: ${path}`);\n }\n const segments = normalizedSeparators.split(\"/\");\n if (\n segments.some(\n (segment) =>\n !segment ||\n segment === \".\" ||\n segment === \"..\" ||\n /[<>:\"|?*\\u0000-\\u001f]/.test(segment) ||\n /[ .]$/.test(segment) ||\n /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\.|$)/i.test(segment),\n )\n ) {\n throw new ResourceMountPathError(`invalid resource mount path: ${path}`);\n }\n return segments.join(\"/\");\n}\n\n/** Normalize a repository-internal subpath while preserving legacy `/path/` input. */\nexport function normalizeRepositorySubpath(path: string): string {\n const relative = path\n .trim()\n .replace(/\\\\/g, \"/\")\n .replace(/^\\/+|\\/+$/g, \"\");\n return normalizeResourceMountPath(relative);\n}\n\n/** A conservative collision identity that is portable to case-insensitive hosts. */\nexport function resourceMountPathCollisionKey(path: string): string {\n return normalizeResourceMountPath(path).normalize(\"NFKC\").toLowerCase();\n}\n\n/**\n * Default repository mount identity. The normalized remote host (including a\n * non-default port) is part of the path, so equal owner/repo names on GitHub,\n * GitLab, Azure DevOps, or a custom host do not collide. Encoding the host keeps\n * IPv6/custom-port identities inside one portable path segment.\n */\nexport function defaultRepositoryMountPath(\n uri: string,\n provider?: GitCredentialProvider | null,\n): string {\n let url: URL;\n try {\n url = new URL(uri);\n } catch {\n throw new ResourceMountPathError(`invalid repository URI for mount path: ${uri}`);\n }\n if (url.protocol !== \"https:\" || !url.host) {\n throw new ResourceMountPathError(`invalid repository URI for mount path: ${uri}`);\n }\n const remotePath = url.pathname.replace(/^\\/+|\\/+$/g, \"\");\n const repositoryPath =\n gitRemotePathSemantics(provider) === \"dot_git_alias\"\n ? remotePath.replace(/\\.git$/, \"\")\n : remotePath;\n const segments = repositoryPath.split(\"/\").filter(Boolean);\n if (segments.length < 2) {\n throw new ResourceMountPathError(`repository URI must include owner and repo: ${uri}`);\n }\n return normalizeResourceMountPath(\n `repos/${encodeURIComponent(url.host.toLowerCase())}/${segments.join(\"/\")}`,\n );\n}\n\n/** Durable SDK/UI artifact root. Provisioned boxes also mount this path;\n * Connected Machine execution does not treat it as an alias. */\nexport const VIRTUAL_WORKSPACE_ROOT = \"/workspace\" as const;\n\n/**\n * Cwd-relative path for shell/exec prompts. Durable receipts and `sandbox:` UI\n * links keep the durable `/workspace/...` form. Tool receipts use the relative\n * projection so they remain usable from either a provisioned box root or a\n * Connected Machine's truthful host-native cwd.\n */\nexport function sandboxShellPath(virtualPath: string): string {\n if (virtualPath === VIRTUAL_WORKSPACE_ROOT) return \".\";\n if (virtualPath.startsWith(`${VIRTUAL_WORKSPACE_ROOT}/`)) {\n const relative = virtualPath.slice(VIRTUAL_WORKSPACE_ROOT.length + 1);\n return relative.length > 0 ? relative : \".\";\n }\n return virtualPath;\n}\n\n/** Resolve the exact mount used by API normalization, manifests, and clone hooks. */\nexport const DEFAULT_FILE_RESOURCE_MOUNT_ROOT = \".opengeni/files\" as const;\n\nexport function resourceMountPath(resource: ResourceRef): string {\n if (resource.mountPath) return normalizeResourceMountPath(resource.mountPath);\n return resource.kind === \"file\"\n ? normalizeResourceMountPath(`${DEFAULT_FILE_RESOURCE_MOUNT_ROOT}/${resource.fileId}`)\n : defaultRepositoryMountPath(resource.uri, gitCredentialProviderForRepository(resource));\n}\n\n/** Fail before sandbox execution when two resources share a portable path. */\nexport function assertUniqueResourceMountPaths(resources: readonly ResourceRef[]): void {\n const mounted = new Set<string>();\n for (const resource of resources) {\n const path = resourceMountPath(resource);\n const key = resourceMountPathCollisionKey(path);\n if (mounted.has(key)) {\n throw new ResourceRefConflictError(`resource mount path is already attached: ${path}`);\n }\n mounted.add(key);\n }\n}\n\nexport const FileStatus = z.enum([\"pending_upload\", \"ready\", \"failed\", \"expired\", \"deleted\"]);\nexport type FileStatus = z.infer<typeof FileStatus>;\n\nexport const FileUploadStatus = z.enum([\n \"pending\",\n \"cleanup_pending\",\n \"completed\",\n \"expired\",\n \"failed\",\n]);\nexport type FileUploadStatus = z.infer<typeof FileUploadStatus>;\n\nexport const FileAsset = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n status: FileStatus,\n filename: z.string(),\n safeFilename: z.string(),\n contentType: z.string(),\n sizeBytes: z.number().int().nonnegative(),\n sha256: z.string().nullable(),\n bucket: z.string(),\n objectKey: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type FileAsset = z.infer<typeof FileAsset>;\n\nexport const CreateFileUploadRequest = z.object({\n filename: z.string().min(1),\n contentType: z.string().min(1),\n sizeBytes: z.number().int().positive(),\n sha256: z.string().min(1).optional(),\n});\nexport type CreateFileUploadRequest = z.infer<typeof CreateFileUploadRequest>;\n\nexport const CreateFileUploadResponse = z.object({\n fileId: z.string().uuid(),\n uploadId: z.string().uuid(),\n putUrl: z.string().url(),\n requiredHeaders: z.record(z.string(), z.string()),\n expiresAt: z.string(),\n maxSizeBytes: z.number().int().positive(),\n});\nexport type CreateFileUploadResponse = z.infer<typeof CreateFileUploadResponse>;\n\nexport const CompleteFileUploadResponse = z.object({\n file: FileAsset,\n});\nexport type CompleteFileUploadResponse = z.infer<typeof CompleteFileUploadResponse>;\n\nexport const FileDownloadUrlResponse = z.object({\n url: z.string().url(),\n expiresAt: z.string(),\n});\nexport type FileDownloadUrlResponse = z.infer<typeof FileDownloadUrlResponse>;\n\nexport const DocumentStatus = z.enum([\"queued\", \"indexing\", \"ready\", \"failed\"]);\nexport type DocumentStatus = z.infer<typeof DocumentStatus>;\n\nexport const KnowledgeSourceKind = z.enum([\n \"manual_upload\",\n \"meeting_transcript\",\n \"repository\",\n \"email\",\n \"chat\",\n \"document\",\n \"web\",\n \"other\",\n]);\nexport type KnowledgeSourceKind = z.infer<typeof KnowledgeSourceKind>;\n\nexport const DocumentSearchMode = z.enum([\"hybrid\", \"vector\", \"keyword\"]);\nexport type DocumentSearchMode = z.infer<typeof DocumentSearchMode>;\n\n// Durable document authority. Collections/bases are organizational metadata,\n// never an authorization boundary.\nexport const DocumentAuthorityKind = z.enum([\"organization\", \"workspace\", \"personal\"]);\nexport type DocumentAuthorityKind = z.infer<typeof DocumentAuthorityKind>;\n\n// 'workspace' documents are readable by anyone with workspace access;\n// 'private' documents are readable only by the grant subject that created them.\n// Retained as a compatibility projection over authorityKind:\n// personal -> private; organization/workspace -> workspace.\nexport const DocumentVisibility = z.enum([\"workspace\", \"private\"]);\nexport type DocumentVisibility = z.infer<typeof DocumentVisibility>;\n\n// Knowledge-drop auto-curation lifecycle. 'none' = ordinary caller-described add\n// (never auto-curated). 'pending' = dropped, curation runs during indexing.\n// 'suggested' = curated but the base move was NOT applied (low confidence or\n// conflict) — the suggestion lives in Document.curation. 'auto_filed' = curated\n// and moved into the suggested base. 'failed' = curation errored (fail-soft;\n// the document still indexes and stays searchable).\nexport const DocumentCurationStatus = z.enum([\n \"none\",\n \"pending\",\n \"suggested\",\n \"auto_filed\",\n \"failed\",\n]);\nexport type DocumentCurationStatus = z.infer<typeof DocumentCurationStatus>;\n\n// Curator audit blob persisted on the document.\nexport const DocumentCuration = z.object({\n suggestedBaseId: z.string().uuid().nullable(),\n suggestedBaseName: z.string().nullable(),\n confidence: z.number().min(0).max(1),\n reason: z.string().nullable(),\n originalTitle: z.string().nullable(),\n model: z.string().nullable(),\n});\nexport type DocumentCuration = z.infer<typeof DocumentCuration>;\n\nexport const DocumentBase = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n name: z.string(),\n description: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type DocumentBase = z.infer<typeof DocumentBase>;\n\nexport const Document = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n baseId: z.string().uuid(),\n fileId: z.string().uuid(),\n status: DocumentStatus,\n title: z.string(),\n parser: z.string(),\n chunkCount: z.number().int().nonnegative(),\n error: z.string().nullable(),\n sourceKind: KnowledgeSourceKind,\n sourceUri: z.string().nullable(),\n sourceExternalId: z.string().nullable(),\n sourceTitle: z.string().nullable(),\n sourceAuthor: z.string().nullable(),\n sourceCreatedAt: z.string().nullable(),\n sourceUpdatedAt: z.string().nullable(),\n sourceVersion: z.string().nullable(),\n aclTags: z.array(z.string()),\n authorityKind: DocumentAuthorityKind,\n authorityWorkspaceId: z.string().uuid().nullable(),\n authoritySubjectId: z.string().nullable(),\n // Opaque handle used by the owning human to issue explicit personal-scope\n // grants. Organization/workspace and legacy anchored personal rows are null.\n authorityId: z.string().uuid().nullable().optional(),\n visibility: DocumentVisibility,\n createdBy: z.string().nullable(),\n agentAccess: z.boolean(),\n summary: z.string().nullable(),\n topics: z.array(z.string()),\n curationStatus: DocumentCurationStatus,\n curation: DocumentCuration.nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type Document = z.infer<typeof Document>;\n\nexport const DocumentSearchResult = z.object({\n chunkId: z.string().uuid(),\n // The workspace that ingested the document. Organization-authority results\n // may originate in another workspace in the same account; this identifier\n // is provenance and does not grant access to that workspace or its resources.\n workspaceId: z.string().uuid(),\n documentId: z.string().uuid(),\n baseId: z.string().uuid(),\n fileId: z.string().uuid(),\n title: z.string(),\n text: z.string(),\n score: z.number(),\n matchType: DocumentSearchMode,\n vectorScore: z.number().nullable(),\n keywordScore: z.number().nullable(),\n chunkIndex: z.number().int().nonnegative(),\n metadata: z.record(z.string(), z.unknown()),\n sourceKind: KnowledgeSourceKind,\n sourceUri: z.string().nullable(),\n sourceExternalId: z.string().nullable(),\n sourceTitle: z.string().nullable(),\n sourceAuthor: z.string().nullable(),\n sourceCreatedAt: z.string().nullable(),\n sourceUpdatedAt: z.string().nullable(),\n sourceVersion: z.string().nullable(),\n aclTags: z.array(z.string()),\n authorityKind: DocumentAuthorityKind,\n authorityWorkspaceId: z.string().uuid().nullable(),\n authoritySubjectId: z.string().nullable(),\n citation: KnowledgeProviderCitation.nullable().optional(),\n});\nexport type DocumentSearchResult = z.infer<typeof DocumentSearchResult>;\n\nexport const DocumentSearchResponse = z.object({\n results: z.array(DocumentSearchResult),\n});\nexport type DocumentSearchResponse = z.infer<typeof DocumentSearchResponse>;\n\nexport const IndexedDocumentSource = z.object({\n kind: KnowledgeSourceKind,\n uri: z.string().nullable(),\n externalId: z.string().nullable(),\n title: z.string().nullable(),\n author: z.string().nullable(),\n createdAt: z.string().nullable(),\n updatedAt: z.string().nullable(),\n version: z.string().nullable(),\n});\nexport type IndexedDocumentSource = z.infer<typeof IndexedDocumentSource>;\n\nexport const IndexedDocumentProvenance = z.object({\n ingestionWorkspaceId: z.string().uuid(),\n baseId: z.string().uuid(),\n fileId: z.string().uuid(),\n authorityKind: DocumentAuthorityKind,\n authorityWorkspaceId: z.string().uuid().nullable(),\n authoritySubjectId: z.string().nullable(),\n createdBy: z.string().nullable(),\n createdAt: z.string(),\n citation: KnowledgeProviderCitation.nullable().optional(),\n});\nexport type IndexedDocumentProvenance = z.infer<typeof IndexedDocumentProvenance>;\n\nexport const IndexedDocumentSummary = z.object({\n id: z.string().uuid(),\n title: z.string(),\n parser: z.string(),\n chunkCount: z.number().int().nonnegative(),\n indexedAt: z.string(),\n summary: z.string().nullable(),\n topics: z.array(z.string()),\n source: IndexedDocumentSource,\n provenance: IndexedDocumentProvenance,\n});\nexport type IndexedDocumentSummary = z.infer<typeof IndexedDocumentSummary>;\n\nexport const ListIndexedDocumentsRequest = z.object({\n checkpoint: z.string().min(1).max(1_024).optional(),\n limit: z.number().int().positive().max(100).default(50),\n});\nexport type ListIndexedDocumentsRequest = z.infer<typeof ListIndexedDocumentsRequest>;\n\nexport const ListIndexedDocumentsResponse = z.object({\n documents: z.array(IndexedDocumentSummary),\n nextCheckpoint: z.string().min(1).max(1_024),\n hasMore: z.boolean(),\n});\nexport type ListIndexedDocumentsResponse = z.infer<typeof ListIndexedDocumentsResponse>;\n\nexport const CreateDocumentBaseRequest = z.object({\n name: z.string().min(1),\n description: z.string().optional(),\n});\nexport type CreateDocumentBaseRequest = z.infer<typeof CreateDocumentBaseRequest>;\n\nexport const AddDocumentRequest = z.object({\n fileId: z.string().uuid(),\n title: z.string().min(1).optional(),\n sourceKind: KnowledgeSourceKind.optional(),\n sourceUri: z.string().min(1).optional(),\n sourceExternalId: z.string().min(1).optional(),\n sourceTitle: z.string().min(1).optional(),\n sourceAuthor: z.string().min(1).optional(),\n sourceCreatedAt: z.string().datetime({ offset: true }).optional(),\n sourceUpdatedAt: z.string().datetime({ offset: true }).optional(),\n sourceVersion: z.string().min(1).optional(),\n aclTags: z.array(z.string().min(1)).optional(),\n authorityKind: DocumentAuthorityKind.optional(),\n visibility: DocumentVisibility.optional(),\n agentAccess: z.boolean().optional(),\n});\nexport type AddDocumentRequest = z.infer<typeof AddDocumentRequest>;\n\n// A knowledge drop: raw text or an already-uploaded file, with no required\n// metadata. The server files it into the workspace Default base. When a\n// curation provider is enabled, it may name, summarize, categorize, and\n// (confidence permitting) move the document; provider=none leaves caller\n// metadata and Default placement unchanged.\nexport const CreateKnowledgeDropRequest = z\n .object({\n text: z.string().min(1).max(2_000_000).optional(),\n fileId: z.string().uuid().optional(),\n filename: z.string().min(1).optional(),\n title: z.string().min(1).optional(),\n authorityKind: DocumentAuthorityKind.optional(),\n visibility: DocumentVisibility.optional(),\n agentAccess: z.boolean().optional(),\n })\n .refine((value) => (value.text === undefined) !== (value.fileId === undefined), {\n message: \"provide exactly one of text or fileId\",\n });\nexport type CreateKnowledgeDropRequest = z.infer<typeof CreateKnowledgeDropRequest>;\n\n// Move a document (and its indexed chunks) to another base. With no explicit\n// targetBaseId, applies the document's stored curation suggestion.\nexport const MoveDocumentRequest = z.object({\n targetBaseId: z.string().uuid().optional(),\n});\nexport type MoveDocumentRequest = z.infer<typeof MoveDocumentRequest>;\n\nexport const DocumentAuthorityTuple = z.object({\n kind: DocumentAuthorityKind,\n workspaceId: z.string().uuid().nullable(),\n subjectId: z.string().nullable(),\n authorityId: z.string().uuid().nullable(),\n});\nexport type DocumentAuthorityTuple = z.infer<typeof DocumentAuthorityTuple>;\n\nexport const ReclassifyDocumentAuthorityRequest = z.object({\n operationId: z.string().uuid(),\n expectedAuthority: DocumentAuthorityTuple,\n targetAuthorityKind: DocumentAuthorityKind,\n});\nexport type ReclassifyDocumentAuthorityRequest = z.infer<typeof ReclassifyDocumentAuthorityRequest>;\n\nexport const DocumentAuthorityReclassification = z.object({\n operationId: z.string().uuid(),\n documentId: z.string().uuid(),\n previousAuthority: DocumentAuthorityTuple,\n authority: DocumentAuthorityTuple,\n createdAt: z.string().datetime({ offset: true }),\n});\nexport type DocumentAuthorityReclassification = z.infer<typeof DocumentAuthorityReclassification>;\n\nexport const DOCUMENT_AUTHORITY_RECLASSIFICATION_LIST_DEFAULT_LIMIT = 50;\nexport const DOCUMENT_AUTHORITY_RECLASSIFICATION_LIST_MAX_LIMIT = 100;\nexport const DOCUMENT_AUTHORITY_RECLASSIFICATION_CURSOR_MAX_CHARS = 1_024;\n\nexport const ListDocumentAuthorityReclassificationsQuery = z.object({\n limit: z.coerce\n .number()\n .int()\n .positive()\n .max(DOCUMENT_AUTHORITY_RECLASSIFICATION_LIST_MAX_LIMIT)\n .default(DOCUMENT_AUTHORITY_RECLASSIFICATION_LIST_DEFAULT_LIMIT),\n cursor: z.string().min(1).max(DOCUMENT_AUTHORITY_RECLASSIFICATION_CURSOR_MAX_CHARS).optional(),\n});\nexport type ListDocumentAuthorityReclassificationsQuery = z.infer<\n typeof ListDocumentAuthorityReclassificationsQuery\n>;\n\nexport const ListDocumentAuthorityReclassificationsResponse = z.object({\n receipts: z.array(DocumentAuthorityReclassification),\n hasMore: z.boolean(),\n nextCursor: z.string().max(DOCUMENT_AUTHORITY_RECLASSIFICATION_CURSOR_MAX_CHARS).nullable(),\n});\nexport type ListDocumentAuthorityReclassificationsResponse = z.infer<\n typeof ListDocumentAuthorityReclassificationsResponse\n>;\n\nexport const RunDocumentDefaultCollectionBackfillRequest = z.object({\n runId: z.string().uuid(),\n operationId: z.string().uuid(),\n batchSize: z.number().int().min(1).max(100).default(50),\n});\nexport type RunDocumentDefaultCollectionBackfillRequest = z.infer<\n typeof RunDocumentDefaultCollectionBackfillRequest\n>;\n\nexport const DocumentDefaultCollectionBackfill = z.object({\n runId: z.string().uuid(),\n operationId: z.string().uuid(),\n status: z.enum([\"running\", \"completed\"]),\n lastWorkspaceId: z.string().uuid().nullable(),\n processedCount: z.number().int().nonnegative(),\n createdCount: z.number().int().nonnegative(),\n adoptedCount: z.number().int().nonnegative(),\n completedAt: z.string().datetime({ offset: true }).nullable(),\n});\nexport type DocumentDefaultCollectionBackfill = z.infer<typeof DocumentDefaultCollectionBackfill>;\n\nexport const DocumentDefaultCollectionBackfillRunAudit = DocumentDefaultCollectionBackfill.omit({\n operationId: true,\n}).extend({\n actorSubjectId: z.string().min(1),\n startedAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport type DocumentDefaultCollectionBackfillRunAudit = z.infer<\n typeof DocumentDefaultCollectionBackfillRunAudit\n>;\n\nexport const DocumentDefaultCollectionBackfillOperationAudit = z.object({\n operationId: z.string().uuid(),\n result: DocumentDefaultCollectionBackfill,\n createdAt: z.string().datetime({ offset: true }),\n});\nexport type DocumentDefaultCollectionBackfillOperationAudit = z.infer<\n typeof DocumentDefaultCollectionBackfillOperationAudit\n>;\n\nexport const DocumentDefaultCollectionBackfillReceiptAudit = z.object({\n workspaceId: z.string().uuid(),\n baseId: z.string().uuid(),\n outcome: z.enum([\"created\", \"adopted\"]),\n createdAt: z.string().datetime({ offset: true }),\n});\nexport type DocumentDefaultCollectionBackfillReceiptAudit = z.infer<\n typeof DocumentDefaultCollectionBackfillReceiptAudit\n>;\n\nexport const ListDocumentMigrationAuditQuery = ListDocumentAuthorityReclassificationsQuery;\nexport type ListDocumentMigrationAuditQuery = z.infer<typeof ListDocumentMigrationAuditQuery>;\n\nexport const ListDocumentDefaultCollectionBackfillRunsResponse = z.object({\n runs: z.array(DocumentDefaultCollectionBackfillRunAudit),\n hasMore: z.boolean(),\n nextCursor: z.string().max(DOCUMENT_AUTHORITY_RECLASSIFICATION_CURSOR_MAX_CHARS).nullable(),\n});\nexport type ListDocumentDefaultCollectionBackfillRunsResponse = z.infer<\n typeof ListDocumentDefaultCollectionBackfillRunsResponse\n>;\n\nexport const GetDocumentDefaultCollectionBackfillAuditQuery = z.object({\n limit: z.coerce\n .number()\n .int()\n .positive()\n .max(DOCUMENT_AUTHORITY_RECLASSIFICATION_LIST_MAX_LIMIT)\n .default(DOCUMENT_AUTHORITY_RECLASSIFICATION_LIST_DEFAULT_LIMIT),\n operationCursor: z\n .string()\n .min(1)\n .max(DOCUMENT_AUTHORITY_RECLASSIFICATION_CURSOR_MAX_CHARS)\n .optional(),\n receiptCursor: z\n .string()\n .min(1)\n .max(DOCUMENT_AUTHORITY_RECLASSIFICATION_CURSOR_MAX_CHARS)\n .optional(),\n});\nexport type GetDocumentDefaultCollectionBackfillAuditQuery = z.infer<\n typeof GetDocumentDefaultCollectionBackfillAuditQuery\n>;\n\nexport const DocumentDefaultCollectionBackfillAudit = z.object({\n run: DocumentDefaultCollectionBackfillRunAudit,\n operations: z.array(DocumentDefaultCollectionBackfillOperationAudit),\n receipts: z.array(DocumentDefaultCollectionBackfillReceiptAudit),\n operationsHasMore: z.boolean(),\n operationsNextCursor: z\n .string()\n .max(DOCUMENT_AUTHORITY_RECLASSIFICATION_CURSOR_MAX_CHARS)\n .nullable(),\n receiptsHasMore: z.boolean(),\n receiptsNextCursor: z\n .string()\n .max(DOCUMENT_AUTHORITY_RECLASSIFICATION_CURSOR_MAX_CHARS)\n .nullable(),\n});\nexport type DocumentDefaultCollectionBackfillAudit = z.infer<\n typeof DocumentDefaultCollectionBackfillAudit\n>;\n\nexport const OrganizationDocumentAuthorityReclassification =\n DocumentAuthorityReclassification.extend({\n actorSubjectId: z.string().min(1),\n requestWorkspaceId: z.string().uuid(),\n });\nexport type OrganizationDocumentAuthorityReclassification = z.infer<\n typeof OrganizationDocumentAuthorityReclassification\n>;\n\nexport const ListOrganizationDocumentAuthorityReclassificationsResponse = z.object({\n receipts: z.array(OrganizationDocumentAuthorityReclassification),\n hasMore: z.boolean(),\n nextCursor: z.string().max(DOCUMENT_AUTHORITY_RECLASSIFICATION_CURSOR_MAX_CHARS).nullable(),\n});\nexport type ListOrganizationDocumentAuthorityReclassificationsResponse = z.infer<\n typeof ListOrganizationDocumentAuthorityReclassificationsResponse\n>;\n\nexport const DocumentSearchRequest = z.object({\n query: z.string().min(1),\n baseIds: z.array(z.string().uuid()).optional(),\n mode: DocumentSearchMode.optional(),\n sourceKinds: z.array(KnowledgeSourceKind).optional(),\n authorityKinds: z.array(DocumentAuthorityKind).max(3).optional(),\n aclTags: z.array(z.string().min(1)).optional(),\n limit: z.number().int().positive().max(50).default(5),\n});\nexport type DocumentSearchRequest = z.infer<typeof DocumentSearchRequest>;\n\n// proposed/approved/rejected are the legacy curated-knowledge review states\n// (docs-MCP memory_propose lane). active/superseded/archived are Workspace\n// Memory V1: agent-written memories land `active` (usable immediately — human is\n// auditor, not gatekeeper), get `superseded` when replaced, `archived` when\n// retired. Agent-visible set = active ∪ approved.\nexport const KnowledgeMemoryStatus = z.enum([\n \"proposed\",\n \"approved\",\n \"rejected\",\n \"active\",\n \"superseded\",\n \"archived\",\n]);\nexport type KnowledgeMemoryStatus = z.infer<typeof KnowledgeMemoryStatus>;\n\nexport const KnowledgeMemoryKind = z.enum([\n \"semantic\",\n \"episodic\",\n \"procedural\",\n \"decision\",\n \"preference\",\n]);\nexport type KnowledgeMemoryKind = z.infer<typeof KnowledgeMemoryKind>;\n\nexport const KnowledgeSourceRef = z.object({\n kind: z.enum([\"document_chunk\", \"document\", \"session_event\", \"memory\", \"external\"]),\n id: z.string().min(1),\n uri: z.string().min(1).optional(),\n title: z.string().min(1).optional(),\n metadata: z.record(z.string(), z.unknown()).default({}),\n});\nexport type KnowledgeSourceRef = z.infer<typeof KnowledgeSourceRef>;\n\nexport const KnowledgeMemory = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n status: KnowledgeMemoryStatus,\n kind: KnowledgeMemoryKind,\n scope: z.string(),\n /** Typed selector (migration 0152/0426): workspace, user, session, role, ephemeral, legacy. */\n scopeType: z.string().optional(),\n /** `end_user:v1:<tuple hash>` for a session end-user layer; null otherwise. */\n scopeSubjectId: z.string().nullable().optional(),\n /** Lineage root for a session layer; null otherwise. */\n scopeSessionId: z.string().uuid().nullable().optional(),\n text: z.string(),\n sourceRefs: z.array(KnowledgeSourceRef),\n confidence: z.number().min(0).max(1),\n metadata: z.record(z.string(), z.unknown()),\n createdBySessionId: z.string().uuid().nullable(),\n reviewedBy: z.string().nullable(),\n reviewedAt: z.string().nullable(),\n // Workspace Memory V1 fields. usageCount/lastUsedAt feed end-state ranking and\n // decay; supersedesId/supersededById link correction chains; validFrom/validUntil\n // are the point-in-time window. embedding/embeddingModel/textHash are internal\n // and never exposed on the wire.\n pinned: z.boolean(),\n usageCount: z.number().int(),\n lastUsedAt: z.string().nullable(),\n supersedesId: z.string().uuid().nullable(),\n supersededById: z.string().uuid().nullable(),\n validFrom: z.string(),\n validUntil: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type KnowledgeMemory = z.infer<typeof KnowledgeMemory>;\n\n// Default status is `active`: a create through this request lands an\n// agent-visible memory via the one write gate (saveWorkspaceMemory). Passing an\n// explicit `proposed`/`approved`/`rejected` status routes to the legacy curated\n// create instead (the docs-MCP memory_propose lane). pinned/replacesId apply to\n// the active (memory) path.\nexport const CreateKnowledgeMemoryRequest = z.object({\n status: KnowledgeMemoryStatus.default(\"active\"),\n kind: KnowledgeMemoryKind.default(\"semantic\"),\n scope: z.string().min(1).default(\"workspace\"),\n text: z.string().min(1),\n sourceRefs: z.array(KnowledgeSourceRef).default([]),\n confidence: z.number().min(0).max(1).default(0.5),\n metadata: z.record(z.string(), z.unknown()).default({}),\n createdBySessionId: z.string().uuid().optional(),\n pinned: z.boolean().optional(),\n replacesId: z.string().min(1).optional(),\n slackPublication: MemorySlackPublicationDistribution.optional(),\n});\nexport type CreateKnowledgeMemoryRequest = z.infer<typeof CreateKnowledgeMemoryRequest>;\n\nexport const UpdateKnowledgeMemoryRequest = z.object({\n status: KnowledgeMemoryStatus.optional(),\n kind: KnowledgeMemoryKind.optional(),\n scope: z.string().min(1).optional(),\n text: z.string().min(1).optional(),\n sourceRefs: z.array(KnowledgeSourceRef).optional(),\n confidence: z.number().min(0).max(1).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n reviewedBy: z.string().min(1).optional(),\n // Human audit action: pin (never decays) / unpin.\n pinned: z.boolean().optional(),\n});\nexport type UpdateKnowledgeMemoryRequest = z.infer<typeof UpdateKnowledgeMemoryRequest>;\n\n// GET list/filter over knowledge memories (curated + memory).\nexport const KnowledgeMemorySearchRequest = z.object({\n query: z.string().min(1).optional(),\n status: KnowledgeMemoryStatus.optional(),\n kind: KnowledgeMemoryKind.optional(),\n scope: z.string().min(1).optional(),\n limit: z.number().int().positive().max(100).default(20),\n});\nexport type KnowledgeMemorySearchRequest = z.infer<typeof KnowledgeMemorySearchRequest>;\n\nexport const WorkspaceMemorySearchMode = z.enum([\"hybrid\", \"vector\", \"keyword\"]);\nexport type WorkspaceMemorySearchMode = z.infer<typeof WorkspaceMemorySearchMode>;\n\n// POST hybrid search over the workspace's agent-visible memory (active ∪ approved).\nexport const WorkspaceMemorySearchRequest = z.object({\n query: z.string().min(1),\n kind: KnowledgeMemoryKind.optional(),\n limit: z.number().int().positive().max(20).optional(),\n mode: WorkspaceMemorySearchMode.optional(),\n});\nexport type WorkspaceMemorySearchRequest = z.infer<typeof WorkspaceMemorySearchRequest>;\n\nexport const WorkspaceMemorySearchResult = z.object({\n memory: KnowledgeMemory,\n score: z.number(),\n matchType: WorkspaceMemorySearchMode,\n vectorScore: z.number().nullable(),\n keywordScore: z.number().nullable(),\n});\nexport type WorkspaceMemorySearchResult = z.infer<typeof WorkspaceMemorySearchResult>;\n\nexport const WorkspaceMemorySearchResponse = z.object({\n results: z.array(WorkspaceMemorySearchResult),\n});\nexport type WorkspaceMemorySearchResponse = z.infer<typeof WorkspaceMemorySearchResponse>;\n\nexport const ToolRef = z.object({\n kind: z.literal(\"mcp\"),\n id: z.string().min(1),\n // Session-scoped startup choice. `true` prepares this server's authorized\n // schemas before the first model request; absent/false keeps it behind\n // progressive discovery. This never grants a server or tool permission.\n eager: z.boolean().optional(),\n // Non-fatal-on-connect marker for MCP server refs that can degrade\n // gracefully. On new input, absent/false is STRICT: the id must be configured\n // and an unavailable registered server fails closed when its preparation is\n // demanded. Only the independent eager marker makes that a startup failure.\n // Persisted refs are\n // intersected with the current registry at each turn boundary, so a server\n // disconnected after admission is retained in policy/audit truth but skipped\n // until it is registered again. `optional:true` additionally makes runtime\n // connect/list failures skip a known server; if the deployment does not\n // configure the id, validation drops the ref. Auto-attached workspace-default\n // capability MCPs also use this marker.\n optional: z.boolean().optional(),\n});\nexport type ToolRef = z.infer<typeof ToolRef>;\n\nconst registryId = /^[A-Za-z0-9_-]+$/;\nexport const SessionMcpServerId = z.string().min(1).regex(registryId);\nexport type SessionMcpServerId = z.infer<typeof SessionMcpServerId>;\n\n// How a session's persisted tool selection was chosen.\nexport const SessionToolPolicy = z.object({\n mode: z.enum([\"workspace_default\", \"explicit\", \"inherited\"]),\n inheritedFromSessionId: z.string().uuid().nullable(),\n});\nexport type SessionToolPolicy = z.infer<typeof SessionToolPolicy>;\n\nexport const SESSION_EFFECTIVE_TOOL_POLICY_ID_LIMIT = 64;\nexport const SESSION_EFFECTIVE_TOOL_POLICY_ID_MAX_LENGTH = 200;\nconst SessionEffectiveToolPolicyId = z\n .string()\n .min(1)\n .max(SESSION_EFFECTIVE_TOOL_POLICY_ID_MAX_LENGTH)\n .regex(registryId);\nconst SessionEffectiveToolPolicyIds = z\n .array(SessionEffectiveToolPolicyId)\n .max(SESSION_EFFECTIVE_TOOL_POLICY_ID_LIMIT);\n\n// Secret-safe, read-time policy truth. This projection contains only bounded\n// MCP registry ids and exact counts: never URLs, names, headers, credentials,\n// connector configuration, or tool schemas. IDs are samples when capped;\n// counts remain exact and idsTruncated makes that explicit to clients.\nexport const SessionEffectiveToolPolicy = z\n .object({\n mode: z.enum([\"workspace_default\", \"explicit\", \"inherited\"]),\n inheritedFromSessionId: z.string().uuid().nullable(),\n selectedIds: SessionEffectiveToolPolicyIds,\n effectiveIds: SessionEffectiveToolPolicyIds,\n mandatoryIds: SessionEffectiveToolPolicyIds,\n lazyRouter: z\n .object({\n state: z.enum([\"required\", \"disabled\"]),\n deferredIds: SessionEffectiveToolPolicyIds,\n })\n .strict(),\n configuredIds: SessionEffectiveToolPolicyIds,\n droppedIds: SessionEffectiveToolPolicyIds,\n counts: z\n .object({\n selected: z.number().int().nonnegative(),\n effective: z.number().int().nonnegative(),\n mandatory: z.number().int().nonnegative(),\n deferred: z.number().int().nonnegative(),\n configured: z.number().int().nonnegative(),\n dropped: z.number().int().nonnegative(),\n })\n .strict(),\n idsTruncated: z.boolean(),\n })\n .strict();\nexport type SessionEffectiveToolPolicy = z.infer<typeof SessionEffectiveToolPolicy>;\nconst httpsUrl = z\n .string()\n .url()\n .refine(\n (value) => {\n try {\n return new URL(value).protocol === \"https:\";\n } catch {\n return false;\n }\n },\n { message: \"URL must use https\" },\n );\n\n/**\n * Human-approval policy for one MCP server. `true` gates every tool, `false`\n * gates none, and a list gates only those unprefixed names.\n */\nexport const SESSION_MCP_APPROVAL_POLICY_MAX_TOOL_NAMES = 2_048;\nexport const SESSION_MCP_APPROVAL_POLICY_MAX_BYTES = 256 * 1024;\nexport const SESSION_MCP_APPROVAL_TOOL_NAME_MAX_BYTES = 1_024;\nexport const SESSION_MCP_SERVERS_MAX = 64;\n\nconst sessionMcpApprovalToolName = z\n .string()\n .min(1)\n .superRefine((name, ctx) => {\n if (new TextEncoder().encode(name).byteLength > SESSION_MCP_APPROVAL_TOOL_NAME_MAX_BYTES) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `MCP approval tool names must be at most ${SESSION_MCP_APPROVAL_TOOL_NAME_MAX_BYTES} UTF-8 bytes`,\n });\n }\n });\nconst selectiveSessionMcpApprovalPolicy = z\n .array(sessionMcpApprovalToolName)\n .max(SESSION_MCP_APPROVAL_POLICY_MAX_TOOL_NAMES)\n .superRefine((names, ctx) => {\n const bytes = names.reduce(\n (total, name) => total + new TextEncoder().encode(name).byteLength,\n 0,\n );\n if (bytes > SESSION_MCP_APPROVAL_POLICY_MAX_BYTES) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `MCP approval policies must be at most ${SESSION_MCP_APPROVAL_POLICY_MAX_BYTES} UTF-8 bytes`,\n });\n }\n })\n .transform((names) => [...new Set(names)].sort());\nexport const SessionMcpApprovalPolicy = z.union([z.boolean(), selectiveSessionMcpApprovalPolicy]);\nexport type SessionMcpApprovalPolicy = z.infer<typeof SessionMcpApprovalPolicy>;\n\nexport const SessionMcpServerInput = z.object({\n id: SessionMcpServerId,\n name: z.string().min(1).optional(),\n url: httpsUrl,\n allowedTools: z.array(z.string().min(1)).optional(),\n timeoutMs: z.number().int().positive().optional(),\n cacheToolsList: z.boolean().optional(),\n // The caller resolves an approval pause with `user.approvalDecision`.\n requireApproval: SessionMcpApprovalPolicy.optional(),\n // Write-only credential headers. Values are encrypted at rest and never\n // returned in session responses or events; response metadata exposes names.\n headers: z.record(z.string(), z.string()).optional(),\n // Non-secret opaque pointer resolved at request time by the standalone\n // connection broker or an embedding host's mcpCredentials port.\n connectionRef: McpServerConnectionRef.optional(),\n});\nexport type SessionMcpServerInput = z.infer<typeof SessionMcpServerInput>;\n\nexport const SessionMcpCredentialUpdateInput = z.object({\n id: SessionMcpServerId,\n headers: z.record(z.string(), z.string()),\n});\nexport type SessionMcpCredentialUpdateInput = z.infer<typeof SessionMcpCredentialUpdateInput>;\n\nexport const SessionMcpServerMetadata = z\n .object({\n id: SessionMcpServerId,\n name: z.string().min(1).nullable(),\n url: httpsUrl,\n headerNames: z.array(z.string()).default([]),\n credentialVersion: z.number().int().positive(),\n requireApproval: SessionMcpApprovalPolicy.default(false),\n connectionRef: McpServerConnectionRef.nullable().default(null),\n })\n .strict();\nexport type SessionMcpServerMetadata = z.infer<typeof SessionMcpServerMetadata>;\n\nexport const UpdateSessionMcpApprovalPolicyRequest = z\n .object({\n requireApproval: SessionMcpApprovalPolicy,\n })\n .strict();\nexport type UpdateSessionMcpApprovalPolicyRequest = z.infer<\n typeof UpdateSessionMcpApprovalPolicyRequest\n>;\n\nexport const UpdateSessionMcpApprovalPolicyResponse = z\n .object({\n server: SessionMcpServerMetadata,\n effectiveFrom: z.literal(\"next_attempt\"),\n })\n .strict();\nexport type UpdateSessionMcpApprovalPolicyResponse = z.infer<\n typeof UpdateSessionMcpApprovalPolicyResponse\n>;\n\nexport class ResourceRefConflictError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ResourceRefConflictError\";\n }\n}\n\nexport function mergeToolRefs(existing: ToolRef[], additions: ToolRef[]): ToolRef[] {\n const byKey = new Map<string, ToolRef>();\n const order: string[] = [];\n for (const tool of [...existing, ...additions]) {\n const key = `${tool.kind}:${tool.id}`;\n const prior = byKey.get(key);\n if (!prior) {\n byKey.set(key, tool);\n order.push(key);\n continue;\n }\n // Strict wins: if the same server appears both optional and strict, the\n // strict occurrence upgrades the merged ref so an unavailable server fails\n // the turn. This preserves the fail-loud default when defaults, packs, and\n // per-turn tool selections are combined.\n const optional = prior.optional === true && tool.optional === true ? true : undefined;\n const eager = prior.eager === true || tool.eager === true ? true : undefined;\n byKey.set(key, {\n kind: \"mcp\",\n id: prior.id,\n ...(optional ? { optional } : {}),\n ...(eager ? { eager } : {}),\n });\n }\n return order.map((key) => byKey.get(key)!);\n}\n\nexport function mergeResourceRefs(\n existing: ResourceRef[],\n additions: ResourceRef[],\n options: { rejectConflicts?: boolean } = {},\n): ResourceRef[] {\n if (options.rejectConflicts) {\n assertUniqueResourceMountPaths(existing);\n }\n const out = [...existing];\n const mountPaths = new Map(\n existing.map(\n (resource) =>\n [resourceMountPathCollisionKey(resourceMountPath(resource)), stableJson(resource)] as const,\n ),\n );\n const identities = new Map(\n existing.map((resource) => [resourceIdentityKey(resource), stableJson(resource)] as const),\n );\n const exact = new Set(existing.map(stableJson));\n\n for (const resource of additions) {\n const serialized = stableJson(resource);\n if (exact.has(serialized)) {\n continue;\n }\n if (options.rejectConflicts) {\n const mountPath = resourceMountPath(resource);\n const existingAtMount = mountPaths.get(resourceMountPathCollisionKey(mountPath));\n if (existingAtMount && existingAtMount !== serialized) {\n throw new ResourceRefConflictError(`resource mount path is already attached: ${mountPath}`);\n }\n const identity = resourceIdentityKey(resource);\n const existingIdentity = identities.get(identity);\n if (existingIdentity && existingIdentity !== serialized) {\n throw new ResourceRefConflictError(\n `resource is already attached with different settings: ${identity}`,\n );\n }\n }\n out.push(resource);\n exact.add(serialized);\n identities.set(resourceIdentityKey(resource), serialized);\n mountPaths.set(resourceMountPathCollisionKey(resourceMountPath(resource)), serialized);\n }\n return out;\n}\n\nexport function reasoningEffortForMetadata(\n metadata: Record<string, unknown>,\n fallback: ReasoningEffort,\n): ReasoningEffort {\n const value = metadata.reasoningEffort;\n return value === \"none\" ||\n value === \"minimal\" ||\n value === \"low\" ||\n value === \"medium\" ||\n value === \"high\" ||\n value === \"xhigh\" ||\n value === \"max\"\n ? value\n : fallback;\n}\n\nexport function latencyModeForMetadata(\n metadata: Record<string, unknown>,\n fallback: LatencyMode = \"standard\",\n): LatencyMode {\n const value = metadata.latencyMode;\n return value === \"standard\" || value === \"priority\" || value === \"fast\" ? value : fallback;\n}\n\nexport function stableJson(value: unknown): string {\n return JSON.stringify(sortJson(value));\n}\n\nexport function resourceIdentityKey(resource: ResourceRef): string {\n if (resource.kind === \"file\") {\n return `file:${resource.fileId}`;\n }\n return `repository:${gitRemoteIdentity(\n resource.uri,\n gitCredentialProviderForRepository(resource),\n )}`;\n}\n\nfunction sortJson(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortJson);\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([key, nested]) => [key, sortJson(nested)]),\n );\n }\n return value;\n}\n\nexport const SessionTurnStatus = z.enum([\n \"queued\",\n \"running\",\n \"requires_action\",\n \"recovering\",\n \"waiting_capacity\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n \"superseded\",\n \"withdrawn_for_edit\",\n]);\nexport type SessionTurnStatus = z.infer<typeof SessionTurnStatus>;\n\nexport const SessionTurnSource = z.enum([\n \"user\",\n \"scheduled_task\",\n \"api\",\n \"goal\",\n \"system\",\n \"compaction\",\n]);\nexport type SessionTurnSource = z.infer<typeof SessionTurnSource>;\n\nexport const SessionControlState = z.enum([\"active\", \"paused\"]);\nexport type SessionControlState = z.infer<typeof SessionControlState>;\n\nexport const WorkspaceInferenceState = z.enum([\"active\", \"paused\"]);\nexport type WorkspaceInferenceState = z.infer<typeof WorkspaceInferenceState>;\n\nexport const SessionGoalCreatedBy = z.enum([\"api\", \"agent\", \"scheduled_task\"]);\nexport type SessionGoalCreatedBy = z.infer<typeof SessionGoalCreatedBy>;\n\nexport const SessionGoalMutationPolicy = z.enum([\n \"review_changes\",\n \"preserve_intent\",\n \"autonomous_adaptation\",\n]);\nexport type SessionGoalMutationPolicy = z.infer<typeof SessionGoalMutationPolicy>;\n\nexport const SessionGoalChangeKind = z.enum([\"refinement\", \"adaptation\", \"replacement\"]);\nexport type SessionGoalChangeKind = z.infer<typeof SessionGoalChangeKind>;\n\nexport const SESSION_GOAL_TEXT_MAX_BYTES = 8 * 1024;\nexport const SESSION_GOAL_SUCCESS_CRITERIA_MAX_BYTES = 8 * 1024;\nexport const SESSION_GOAL_RATIONALE_MAX_BYTES = 2 * 1024;\nexport const SESSION_GOAL_PROGRESS_MAX_BYTES = 4 * 1024;\nexport const SESSION_GOAL_ROOT_CONSTRAINT_MAX_BYTES = 512;\nexport const SESSION_GOAL_ROOT_CONSTRAINTS_MAX_BYTES = 4 * 1024;\nexport const SESSION_GOAL_ROOT_CONSTRAINTS_MAX_ITEMS = 16;\n\nexport function sessionGoalUtf8Bytes(value: string): number {\n return new TextEncoder().encode(value).byteLength;\n}\n\nfunction boundedSessionGoalString(maxBytes: number, field: string) {\n return z\n .string()\n .min(1)\n .refine((value) => sessionGoalUtf8Bytes(value) <= maxBytes, {\n message: `${field} exceeds ${maxBytes} UTF-8 bytes`,\n });\n}\n\nfunction compareUtf8(left: string, right: string): number {\n const encoder = new TextEncoder();\n const leftBytes = encoder.encode(left);\n const rightBytes = encoder.encode(right);\n const length = Math.min(leftBytes.length, rightBytes.length);\n for (let index = 0; index < length; index += 1) {\n const difference = leftBytes[index]! - rightBytes[index]!;\n if (difference !== 0) return difference;\n }\n return leftBytes.length - rightBytes.length;\n}\n\nexport function normalizeSessionGoalRootConstraints(values: readonly string[]): string[] {\n // PostgreSQL btrim(text) removes U+0020 at both ends. Keep the public\n // projector byte-equivalent with the storage trigger instead of using\n // JavaScript trim(), whose Unicode whitespace set is broader.\n return [...new Set(values.map((value) => value.replace(/^ +| +$/g, \"\")))].sort(compareUtf8);\n}\n\nexport const SessionGoalRootConstraintsWrite = z\n .array(boundedSessionGoalString(SESSION_GOAL_ROOT_CONSTRAINT_MAX_BYTES, \"goal root constraint\"))\n .transform(normalizeSessionGoalRootConstraints)\n .pipe(\n z\n .array(z.string().min(1))\n .max(SESSION_GOAL_ROOT_CONSTRAINTS_MAX_ITEMS)\n .refine(\n (values) =>\n values.reduce((total, value) => total + sessionGoalUtf8Bytes(value), 0) <=\n SESSION_GOAL_ROOT_CONSTRAINTS_MAX_BYTES,\n {\n message: `goal root constraints exceed ${SESSION_GOAL_ROOT_CONSTRAINTS_MAX_BYTES} aggregate UTF-8 bytes`,\n },\n ),\n );\nexport type SessionGoalRootConstraintsWrite = z.infer<typeof SessionGoalRootConstraintsWrite>;\n\nconst SessionGoalTextWrite = boundedSessionGoalString(SESSION_GOAL_TEXT_MAX_BYTES, \"goal text\");\nconst SessionGoalSuccessCriteriaWrite = boundedSessionGoalString(\n SESSION_GOAL_SUCCESS_CRITERIA_MAX_BYTES,\n \"goal success criteria\",\n);\nconst SessionGoalRationaleWrite = boundedSessionGoalString(\n SESSION_GOAL_RATIONALE_MAX_BYTES,\n \"goal rationale\",\n);\n\nexport const SessionGoalSnapshot = z.discriminatedUnion(\"state\", [\n z.object({ state: z.literal(\"none\"), capturedAt: z.string() }),\n z.object({\n state: z.enum([\"active\", \"paused\", \"completed\"]),\n goalId: z.string().uuid(),\n objectiveRevision: z.number().int().positive(),\n text: SessionGoalTextWrite,\n successCriteria: SessionGoalSuccessCriteriaWrite.nullable(),\n rootConstraints: SessionGoalRootConstraintsWrite.default([]),\n mutationPolicy: SessionGoalMutationPolicy,\n capturedAt: z.string(),\n }),\n]);\nexport type SessionGoalSnapshot = z.infer<typeof SessionGoalSnapshot>;\n\nexport const SessionGoalRevision = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n goalId: z.string().uuid(),\n disposition: z.enum([\"applied\", \"proposed\", \"rejected\"]),\n changeKind: SessionGoalChangeKind,\n baseObjectiveRevision: z.number().int().nonnegative(),\n resultObjectiveRevision: z.number().int().positive().nullable(),\n text: z.string().min(1),\n successCriteria: z.string().nullable(),\n rootConstraints: z.array(z.string().min(1)).default([]),\n mutationPolicy: SessionGoalMutationPolicy,\n rationale: z.string().min(1),\n actor: z.enum([\"agent\", \"api\", \"scheduled_task\"]),\n actorTurnId: z.string().uuid().nullable(),\n actorAttemptId: z.string().uuid().nullable(),\n proposalId: z.string().uuid().nullable(),\n rollbackOfRevisionId: z.string().uuid().nullable(),\n createdAt: z.string(),\n});\nexport type SessionGoalRevision = z.infer<typeof SessionGoalRevision>;\n\nexport const SESSION_GOAL_REVISION_LIST_DEFAULT_LIMIT = 50;\nexport const SESSION_GOAL_REVISION_LIST_MAX_LIMIT = 100;\n\nexport const ListSessionGoalRevisionsQuery = z.object({\n limit: z.coerce\n .number()\n .int()\n .positive()\n .max(SESSION_GOAL_REVISION_LIST_MAX_LIMIT)\n .default(SESSION_GOAL_REVISION_LIST_DEFAULT_LIMIT),\n before: z.string().uuid().optional(),\n});\nexport type ListSessionGoalRevisionsQuery = z.infer<typeof ListSessionGoalRevisionsQuery>;\n\nexport const ListSessionGoalRevisionsResponse = z.object({\n revisions: z.array(SessionGoalRevision),\n hasMore: z.boolean(),\n nextCursor: z.string().uuid().nullable(),\n});\nexport type ListSessionGoalRevisionsResponse = z.infer<typeof ListSessionGoalRevisionsResponse>;\n\nexport const ApplySessionGoalRevisionRequest = z.object({\n expectedObjectiveRevision: z.number().int().positive(),\n rationale: SessionGoalRationaleWrite.optional(),\n});\nexport type ApplySessionGoalRevisionRequest = z.infer<typeof ApplySessionGoalRevisionRequest>;\n\nexport const RejectSessionGoalRevisionRequest = z.object({\n expectedObjectiveRevision: z.number().int().positive(),\n rationale: SessionGoalRationaleWrite,\n});\nexport type RejectSessionGoalRevisionRequest = z.infer<typeof RejectSessionGoalRevisionRequest>;\n\nexport const RollbackSessionGoalRevisionRequest = z.object({\n expectedObjectiveRevision: z.number().int().positive(),\n rationale: SessionGoalRationaleWrite,\n});\nexport type RollbackSessionGoalRevisionRequest = z.infer<typeof RollbackSessionGoalRevisionRequest>;\n\nexport const SessionGoalPausedReason = z.enum([\n \"agent\",\n \"user_pause\",\n \"api\",\n \"no_progress\",\n \"max_auto_continuations\",\n \"limits\",\n]);\nexport type SessionGoalPausedReason = z.infer<typeof SessionGoalPausedReason>;\n\nexport const SessionGoalContinuationState = z.enum([\n \"inactive\",\n \"scheduled\",\n \"running\",\n \"blocked\",\n \"invariant_broken\",\n]);\nexport type SessionGoalContinuationState = z.infer<typeof SessionGoalContinuationState>;\n\nexport const SessionGoalContinuationReason = z.enum([\n \"goal_inactive\",\n \"wake_pending\",\n \"continuation_pending\",\n \"human_work_pending\",\n \"goal_turn_running\",\n \"human_turn_running\",\n \"workstream_paused\",\n \"approval_required\",\n \"provider_backpressure\",\n \"session_cancelled\",\n \"system_work_pending\",\n \"held_for_input\",\n // Idle backoff: consecutive no-input continuations are paced, and the next\n // evaluation is armed as a delayed workflow wake at `nextAttemptAt`.\n \"backoff_pending\",\n \"missing_obligation\",\n]);\nexport type SessionGoalContinuationReason = z.infer<typeof SessionGoalContinuationReason>;\n\n/**\n * Why a paused goal became active again. `api` is the operator PATCH; the\n * system resumes only a `max_auto_continuations` pause, and only because new\n * external input arrived: a child result, scheduled occurrence, media result,\n * Agent message, Agent Steer, or human/API Send/Steer. The cap is pacing,\n * never user intent, so a `user_pause`/`api`/`agent`/`limits` pause is never\n * auto-resumed.\n */\nexport const SessionGoalResumedReason = z.enum([\"api\", \"external_input\"]);\nexport type SessionGoalResumedReason = z.infer<typeof SessionGoalResumedReason>;\n\nexport const SessionGoalResumedEventPayload = z\n .object({\n goalId: z.string().uuid(),\n actor: z.enum([\"api\", \"system\"]),\n reason: SessionGoalResumedReason,\n cause: z\n .object({\n kind: z.string().min(1),\n updateId: z.string().uuid().optional(),\n turnId: z.string().uuid().optional(),\n })\n .optional(),\n })\n .passthrough();\nexport type SessionGoalResumedEventPayload = z.infer<typeof SessionGoalResumedEventPayload>;\n\nexport const SessionGoalContinuation = z.object({\n state: SessionGoalContinuationState,\n reason: SessionGoalContinuationReason,\n wakeRevision: z.number().int().nonnegative(),\n observedRevision: z.number().int().nonnegative(),\n nextAttemptAt: z.string().datetime({ offset: true }).nullable(),\n lastError: z.string().nullable(),\n /**\n * The agent's stated reason for a `held_for_input` hold (`wait_for_input`), so a\n * human can see why the goal is waiting and until when (`nextAttemptAt`).\n * Null for every other state; omitted by older servers.\n */\n holdReason: z.string().nullable().optional(),\n});\nexport type SessionGoalContinuation = z.infer<typeof SessionGoalContinuation>;\n\nexport const SessionGoal = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n status: SessionGoalStatus,\n text: z.string(),\n successCriteria: z.string().nullable(),\n rootConstraints: z.array(z.string().min(1)).default([]),\n evidence: z.string().nullable(),\n rationale: z.string().nullable(),\n pausedReason: z.string().nullable(),\n createdBy: SessionGoalCreatedBy,\n version: z.number().int().positive(),\n objectiveRevision: z.number().int().positive(),\n mutationPolicy: SessionGoalMutationPolicy,\n autoContinuations: z.number().int().nonnegative(),\n noProgressStreak: z.number().int().nonnegative(),\n maxAutoContinuations: z.number().int().positive().nullable(),\n metadata: z.record(z.string(), z.unknown()),\n // Optional for source compatibility with older clients; the API always\n // supplies this authoritative continuation projection.\n continuation: SessionGoalContinuation.optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type SessionGoal = z.infer<typeof SessionGoal>;\n\nexport const GoalSpec = z.object({\n text: SessionGoalTextWrite,\n successCriteria: SessionGoalSuccessCriteriaWrite.optional(),\n rootConstraints: SessionGoalRootConstraintsWrite.optional(),\n maxAutoContinuations: z.number().int().positive().optional(),\n mutationPolicy: SessionGoalMutationPolicy.optional(),\n});\nexport type GoalSpec = z.infer<typeof GoalSpec>;\n\nexport const UpdateSessionGoalRequest = z.union([\n z.object({\n status: z.enum([\"paused\", \"active\"]),\n rationale: SessionGoalRationaleWrite.optional(),\n }),\n z.object({\n text: SessionGoalTextWrite,\n successCriteria: SessionGoalSuccessCriteriaWrite.nullable().optional(),\n rootConstraints: SessionGoalRootConstraintsWrite.optional(),\n mutationPolicy: SessionGoalMutationPolicy.optional(),\n rationale: SessionGoalRationaleWrite,\n expectedObjectiveRevision: z.number().int().positive(),\n }),\n]);\nexport type UpdateSessionGoalRequest = z.infer<typeof UpdateSessionGoalRequest>;\n\nexport const UpdateSessionRequest = z.object({\n title: z.string().min(1).max(200),\n});\nexport type UpdateSessionRequest = z.infer<typeof UpdateSessionRequest>;\n\nexport const UpdateSessionVariableSetsRequest = z\n .object({\n variableSetIds: z.array(z.string().uuid()).max(MAX_SELECTED_VARIABLE_SETS),\n })\n .strict()\n .superRefine((value, context) => {\n if (new Set(value.variableSetIds).size !== value.variableSetIds.length) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"variableSetIds\"],\n message: \"variableSetIds must not contain duplicates\",\n });\n }\n });\nexport type UpdateSessionVariableSetsRequest = z.infer<typeof UpdateSessionVariableSetsRequest>;\n\n/**\n * Replace the complete durable session tool policy, or explicitly opt back in\n * to current workspace defaults. MCP servers and individual OpenGeni tools\n * advance atomically under one policy version.\n */\nexport const UpdateSessionToolPolicyRequest = z.union([\n z\n .object({\n mode: z.literal(\"workspace_default\"),\n expectedVersion: z.number().int().positive(),\n })\n .strict(),\n z\n .object({\n mode: z.literal(\"explicit\"),\n tools: z.array(ToolRef).max(64),\n firstPartyMcpTools: z.array(FirstPartyMcpToolName),\n expectedVersion: z.number().int().positive(),\n })\n .strict(),\n]);\nexport type UpdateSessionToolPolicyRequest = z.infer<typeof UpdateSessionToolPolicyRequest>;\n\n/**\n * A member's personal pin preference for a session. `expectedVersion` is\n * optional: ordinary pin/unpin actions are idempotent last-write-wins, while a\n * client that has a known version can fail closed rather than overwrite a newer\n * action from another browser.\n */\nexport const UpdateSessionPinRequest = z.object({\n pinned: z.boolean(),\n expectedVersion: z.number().int().nonnegative().optional(),\n});\nexport type UpdateSessionPinRequest = z.infer<typeof UpdateSessionPinRequest>;\n\n/**\n * A member's durable follow-up state for one session. Reading the session does\n * not acknowledge it: `unread` changes only through this explicit mutation.\n * A foreground reader may provide `acknowledgedThroughSequence` with\n * `unread: false` so later server events remain unread instead of being\n * consumed by a delayed acknowledgement request.\n * `activelyWorking` is an independent personal label that survives read state.\n */\nexport const UpdateSessionAttentionRequest = z\n .object({\n unread: z.boolean().optional(),\n acknowledgedThroughSequence: z.number().int().nonnegative().optional(),\n activelyWorking: z.boolean().optional(),\n expectedVersion: z.number().int().nonnegative().optional(),\n })\n .strict()\n .refine((value) => value.unread !== undefined || value.activelyWorking !== undefined, {\n message: \"unread or activelyWorking is required\",\n })\n .refine((value) => value.acknowledgedThroughSequence === undefined || value.unread === false, {\n message: \"acknowledgedThroughSequence requires unread false\",\n path: [\"acknowledgedThroughSequence\"],\n });\nexport type UpdateSessionAttentionRequest = z.infer<typeof UpdateSessionAttentionRequest>;\n\n/** A member's personal archive state for a root chat. */\nexport const UpdateSessionArchiveRequest = z\n .object({\n archived: z.boolean(),\n expectedVersion: z.number().int().nonnegative().optional(),\n })\n .strict();\nexport type UpdateSessionArchiveRequest = z.infer<typeof UpdateSessionArchiveRequest>;\n\n// Operator context controls (slash-command palette: /clear, /compact). These\n// are session/operator actions, NOT a structured way to talk to the agent —\n// the human↔agent channel stays plain chat. Both require `sessions:control`.\n\n/**\n * Clear a session's conversation context. `confirm` must be the literal `true`\n * so an accidental/empty POST cannot wipe context — the destructive intent is\n * explicit on the wire, mirroring the client-side confirm affordance.\n */\nexport const ClearSessionContextRequest = z.object({\n confirm: z.literal(true),\n});\nexport type ClearSessionContextRequest = z.infer<typeof ClearSessionContextRequest>;\n\n/**\n * The marker key on the sentinel run-state blob written by a context clear. The\n * blob ({@link CLEARED_RUN_STATE_BLOB}) is NOT a real Agents-SDK serialized run\n * state — it carries no `$schemaVersion`/history, so `RunState.fromString` would\n * throw on it. Every read path that deserializes a run-state blob MUST first\n * check {@link isClearedRunStateBlob} and treat a match as \"no prior state\"\n * (a fresh, empty start), which is exactly what a clear means. This is the\n * shared contract that keeps the db (writer) and the runtime (reader) in sync.\n */\nexport const CLEARED_RUN_STATE_MARKER = \"$opengeniCleared\" as const;\n\n/** The canonical sentinel serializedRunState value a context clear stores. */\nexport const CLEARED_RUN_STATE_BLOB = JSON.stringify({\n [CLEARED_RUN_STATE_MARKER]: true,\n});\n\n/**\n * True when a serialized run-state blob is the cleared sentinel rather than a\n * real Agents-SDK run state. Recognized leniently (any object carrying the\n * marker key set truthy) so a future field addition to the sentinel does not\n * resurrect the pre-clear context. Anything that is not the sentinel — including\n * malformed JSON — returns false so genuine blobs/corruption are handled by the\n * normal deserialize path.\n */\nexport function isClearedRunStateBlob(serialized: string | null | undefined): boolean {\n if (!serialized) {\n return false;\n }\n try {\n const parsed = JSON.parse(serialized) as unknown;\n return (\n typeof parsed === \"object\" &&\n parsed !== null &&\n (parsed as Record<string, unknown>)[CLEARED_RUN_STATE_MARKER] === true\n );\n } catch {\n return false;\n }\n}\n\n/**\n * Sentinel written on a requires_action pause. Resume must not call\n * `RunState.fromString` on it; the open suffix on `session_pending_tool_calls`\n * plus paired history is the resume authority.\n */\nexport const OPEN_SUFFIX_RUN_STATE_MARKER = \"$opengeniOpenSuffix\" as const;\n\n/** Canonical sentinel serializedRunState for a requires_action pause. */\nexport const OPEN_SUFFIX_RUN_STATE_BLOB = JSON.stringify({\n [OPEN_SUFFIX_RUN_STATE_MARKER]: true,\n});\n\nexport function isOpenSuffixRunStateBlob(serialized: string | null | undefined): boolean {\n if (!serialized) {\n return false;\n }\n try {\n const parsed = JSON.parse(serialized) as unknown;\n return (\n typeof parsed === \"object\" &&\n parsed !== null &&\n (parsed as Record<string, unknown>)[OPEN_SUFFIX_RUN_STATE_MARKER] === true\n );\n } catch {\n return false;\n }\n}\n\n/** Trigger conversation compaction now. No body fields today (forward-room). */\nexport const CompactSessionContextRequest = z.object({}).strict();\nexport type CompactSessionContextRequest = z.infer<typeof CompactSessionContextRequest>;\n\n/** Outcome of a manual /compact trigger. */\nexport const CompactSessionContextResult = z.object({\n // pending: an active/paused session will compact at its next safe boundary.\n // completed: an idle compaction-only activity completed synchronously.\n // noop: there is no active history to compact.\n status: z.enum([\"pending\", \"completed\", \"noop\"]),\n message: z.string(),\n});\nexport type CompactSessionContextResult = z.infer<typeof CompactSessionContextResult>;\n\n/**\n * The principal whose authority accepted a session or turn. `subjectId` is an\n * opaque host/standalone identity and therefore must never encode `kind` by\n * convention: embedding hosts own their subject namespace.\n */\nexport const TurnInitiator = z.object({\n kind: z.enum([\"subject\", \"service\"]),\n ...turnInitiatorIdentityFields,\n});\nexport type TurnInitiator = z.infer<typeof TurnInitiator>;\n\n// ============ embedding host session authorization ============\n//\n// Workspace permissions answer whether a principal may use an OpenGeni\n// capability. An embedding host can additionally own per-session visibility\n// (ownership, sharing, nested workspaces, revocation). This port is the one\n// host-neutral boundary for that second decision. Inputs contain OpenGeni ids\n// and immutable, non-secret authority only; host records and policy details\n// never cross the boundary.\n\nexport const SessionAuthorizationSurface = z.enum([\n \"http\",\n \"core\",\n \"stream\",\n \"first_party_mcp\",\n \"codemode\",\n]);\nexport type SessionAuthorizationSurface = z.infer<typeof SessionAuthorizationSurface>;\n\n// Native connected-Codex GPT-Live WebRTC negotiation. The browser sends its\n// SDP offer, non-provider session configuration, and proof of the exact active\n// ordinary-session realtime owner. The API consumes that proof before resolving\n// the subscription credential and returns only the provider's SDP answer.\nexport const CodexRealtimeWebrtcVersion = z.literal(\"v3\");\nexport type CodexRealtimeWebrtcVersion = z.infer<typeof CodexRealtimeWebrtcVersion>;\n\nexport const CodexRealtimeVoice = z.enum([\n \"juniper\",\n \"maple\",\n \"spruce\",\n \"ember\",\n \"vale\",\n \"breeze\",\n \"arbor\",\n \"sol\",\n \"cove\",\n]);\nexport type CodexRealtimeVoice = z.infer<typeof CodexRealtimeVoice>;\n\nconst SessionRealtimeOwnerProof = z.object({\n browserInstanceId: z.string().min(1).max(256),\n ownerKey: z.string().min(32).max(1024),\n});\n\nexport const CodexRealtimeWebrtcRequest = SessionRealtimeOwnerProof.extend({\n realtimeId: z.string().uuid(),\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive(),\n expectedConnectionEpoch: z.number().int().positive(),\n rotate: z.boolean(),\n browserActivation: z.literal(\"required\").optional(),\n sdp: z\n .string()\n .min(1)\n .max(1024 * 1024),\n version: CodexRealtimeWebrtcVersion,\n instructions: z.string().max(32_768).optional(),\n voice: CodexRealtimeVoice.optional(),\n}).strict();\nexport type CodexRealtimeWebrtcRequest = z.infer<typeof CodexRealtimeWebrtcRequest>;\n\nexport const CodexRealtimeWebrtcResponse = z\n .object({\n sdp: z\n .string()\n .min(1)\n .max(1024 * 1024),\n version: CodexRealtimeWebrtcVersion,\n model: z.literal(\"gpt-live-1-boulder-alpha\"),\n connectionId: z.string().uuid(),\n connectionEpoch: z.number().int().positive(),\n startupFenceSequence: z.number().int().nonnegative(),\n modeVersion: z.number().int().positive(),\n replay: z.boolean(),\n })\n .strict();\nexport type CodexRealtimeWebrtcResponse = z.infer<typeof CodexRealtimeWebrtcResponse>;\n\nexport const GatewayRealtimeConnectRequest = SessionRealtimeOwnerProof.extend({\n realtimeId: z.string().uuid(),\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive(),\n expectedConnectionEpoch: z.number().int().positive(),\n rotate: z.boolean(),\n}).strict();\nexport type GatewayRealtimeConnectRequest = z.infer<typeof GatewayRealtimeConnectRequest>;\n\nexport const GatewayRealtimeInitialItem = z.object({\n role: z.enum([\"user\", \"developer\", \"assistant\"]),\n text: z.string().min(1).max(131_072),\n});\nexport type GatewayRealtimeInitialItem = z.infer<typeof GatewayRealtimeInitialItem>;\n\nexport const GatewayRealtimeConnectResponse = z\n .object({\n token: z.string().min(1).max(16_384),\n url: z.string().url(),\n upstreamModelId: z.string().min(1).max(256),\n expiresAt: z.number().int().positive().nullable(),\n connectionId: z.string().uuid(),\n connectionEpoch: z.number().int().positive(),\n startupFenceSequence: z.number().int().nonnegative(),\n modeVersion: z.number().int().positive(),\n initialItems: z.array(GatewayRealtimeInitialItem).max(128),\n instructions: z.string().min(1).max(32_768),\n replay: z.literal(false),\n })\n .strict();\nexport type GatewayRealtimeConnectResponse = z.infer<typeof GatewayRealtimeConnectResponse>;\n\nexport const ActivateCodexRealtimeConnectionRequest = SessionRealtimeOwnerProof.extend({\n operationId: z.string().uuid(),\n connectionEpoch: z.number().int().positive(),\n expectedVersion: z.number().int().positive(),\n expectedConnectionEpoch: z.number().int().positive(),\n}).strict();\nexport type ActivateCodexRealtimeConnectionRequest = z.infer<\n typeof ActivateCodexRealtimeConnectionRequest\n>;\n\nexport const SessionRealtimeLedgerDirection = z.enum([\"provider_in\", \"provider_out\"]);\nexport type SessionRealtimeLedgerDirection = z.infer<typeof SessionRealtimeLedgerDirection>;\n\nexport const SessionRealtimeLedgerKind = z.enum([\n \"user_transcript\",\n \"assistant_transcript\",\n \"delegation_call\",\n \"delegation_progress\",\n \"delegation_result\",\n \"interruption\",\n \"session_update\",\n \"error\",\n]);\nexport type SessionRealtimeLedgerKind = z.infer<typeof SessionRealtimeLedgerKind>;\n\nexport const SessionRealtimeLedgerEntry = z\n .object({\n id: z.string().uuid(),\n realtimeId: z.string().uuid(),\n operationId: z.string().uuid(),\n connectionEpoch: z.number().int().positive(),\n sequence: z.number().int().positive(),\n direction: SessionRealtimeLedgerDirection,\n kind: SessionRealtimeLedgerKind,\n role: z.enum([\"user\", \"assistant\"]).nullable(),\n providerEventId: z.string().nullable(),\n delegationItemId: z.string().nullable(),\n sourceUpdateId: z.string().uuid().nullable(),\n historyItemId: z.string().uuid().nullable(),\n turnId: z.string().uuid().nullable(),\n text: z.string().nullable(),\n payload: z.record(z.string(), z.unknown()),\n clientAckedAt: z.string().datetime().nullable(),\n providerAckedAt: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n })\n .strict();\nexport type SessionRealtimeLedgerEntry = z.infer<typeof SessionRealtimeLedgerEntry>;\n\nexport const SessionRealtimeInboundEntry = z\n .object({\n operationId: z.string().uuid(),\n kind: z.enum([\n \"user_transcript\",\n \"assistant_transcript\",\n \"delegation_call\",\n \"interruption\",\n \"error\",\n ]),\n role: z.enum([\"user\", \"assistant\"]).nullable().optional(),\n providerEventId: z.string().max(1024).nullable().optional(),\n delegationItemId: z.string().max(1024).nullable().optional(),\n text: z.string().max(131_072).nullable().optional(),\n payload: z.record(z.string(), z.unknown()).optional(),\n // Application context attached to the exact delegation/transcript message.\n // It is ordinary model-visible user-message content when materialized, not\n // a secret or instruction-authority boundary.\n modelContext: z.string().trim().min(1).max(32768).optional(),\n })\n .strict()\n .superRefine((entry, context) => {\n if (\n entry.modelContext !== undefined &&\n entry.kind !== \"delegation_call\" &&\n entry.kind !== \"user_transcript\" &&\n entry.kind !== \"assistant_transcript\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"modelContext\"],\n message: \"modelContext requires a delegation or finalized transcript entry\",\n });\n }\n });\nexport type SessionRealtimeInboundEntry = z.infer<typeof SessionRealtimeInboundEntry>;\n\nexport const SyncSessionRealtimeLedgerRequest = SessionRealtimeOwnerProof.extend({\n expectedVersion: z.number().int().positive(),\n connectionId: z.string().uuid(),\n connectionEpoch: z.number().int().positive(),\n entries: z.array(SessionRealtimeInboundEntry).max(64).optional(),\n clientAckThroughSequence: z.number().int().nonnegative().nullable().optional(),\n providerAckSequences: z.array(z.number().int().positive()).max(100).optional(),\n providerStarted: z\n .object({\n providerSessionId: z.string().min(1).max(1024),\n providerEventId: z.string().min(1).max(1024).nullable().optional(),\n })\n .strict()\n .optional(),\n}).strict();\nexport type SyncSessionRealtimeLedgerRequest = z.infer<typeof SyncSessionRealtimeLedgerRequest>;\n\nexport const SyncSessionRealtimeLedgerResponse = z\n .object({\n accepted: z.array(\n z.object({ entry: SessionRealtimeLedgerEntry, replay: z.boolean() }).strict(),\n ),\n outbound: z.array(SessionRealtimeLedgerEntry),\n })\n .strict();\nexport type SyncSessionRealtimeLedgerResponse = z.infer<typeof SyncSessionRealtimeLedgerResponse>;\n\nexport const SessionRealtimeModel = z.enum([\n \"gpt-live-1-boulder-alpha\",\n \"supergrok/grok-voice-think-fast-2.0\",\n \"opengeni-gateway/openai/gpt-realtime-2.1\",\n \"opengeni-gateway/openai/gpt-realtime-mini\",\n \"opengeni-gateway/xai/grok-voice-think-fast-2.0\",\n \"workspace-gateway/openai/gpt-realtime-2.1\",\n \"workspace-gateway/openai/gpt-realtime-mini\",\n \"workspace-gateway/xai/grok-voice-think-fast-2.0\",\n]);\nexport type SessionRealtimeModel = z.infer<typeof SessionRealtimeModel>;\n\nexport const WorkspaceRealtimeModelCatalogItem = z.object({\n id: SessionRealtimeModel,\n label: z.string().min(1),\n provider: z.enum([\"OpenGeni\", \"Connected Codex\", \"Connected SuperGrok\", \"Your Gateway\"]),\n description: z.string().min(1),\n available: z.boolean(),\n unavailableReason: z.string().nullable(),\n recommended: z.boolean(),\n});\nexport type WorkspaceRealtimeModelCatalogItem = z.infer<typeof WorkspaceRealtimeModelCatalogItem>;\n\nexport const WorkspaceRealtimeModelCatalogResponse = z.object({\n models: z.array(WorkspaceRealtimeModelCatalogItem),\n});\nexport type WorkspaceRealtimeModelCatalogResponse = z.infer<\n typeof WorkspaceRealtimeModelCatalogResponse\n>;\n\nexport const SessionRealtimeState = z.enum([\"active\", \"ended\"]);\nexport type SessionRealtimeState = z.infer<typeof SessionRealtimeState>;\n\nexport const SessionRealtimeEndReason = z.enum([\n \"user_stop\",\n \"browser_unload\",\n \"lease_expired\",\n \"authority_revoked\",\n]);\nexport type SessionRealtimeEndReason = z.infer<typeof SessionRealtimeEndReason>;\n\nexport const SessionRealtimeMode = z.object({\n id: z.string().uuid(),\n sessionId: z.string().uuid(),\n operationId: z.string().uuid(),\n browserInstanceId: z.string().min(1).max(256),\n model: SessionRealtimeModel,\n state: SessionRealtimeState,\n version: z.number().int().positive(),\n connectionEpoch: z.number().int().positive(),\n leaseExpiresAt: z.string().datetime(),\n lastHeartbeatAt: z.string().datetime(),\n startedAt: z.string().datetime(),\n endedAt: z.string().datetime().nullable(),\n endReason: SessionRealtimeEndReason.nullable(),\n});\nexport type SessionRealtimeMode = z.infer<typeof SessionRealtimeMode>;\n\nexport const BeginSessionRealtimeRequest = SessionRealtimeOwnerProof.extend({\n operationId: z.string().uuid(),\n model: SessionRealtimeModel,\n});\nexport type BeginSessionRealtimeRequest = z.infer<typeof BeginSessionRealtimeRequest>;\n\nexport const RenewSessionRealtimeRequest = SessionRealtimeOwnerProof.extend({\n expectedVersion: z.number().int().positive(),\n});\nexport type RenewSessionRealtimeRequest = z.infer<typeof RenewSessionRealtimeRequest>;\n\nexport const EndSessionRealtimeRequest = RenewSessionRealtimeRequest.extend({\n reason: z.enum([\"user_stop\", \"browser_unload\"]),\n});\nexport type EndSessionRealtimeRequest = z.infer<typeof EndSessionRealtimeRequest>;\n\nexport const SessionRealtimeMutationResponse = z.object({\n mode: SessionRealtimeMode,\n replay: z.boolean(),\n});\nexport type SessionRealtimeMutationResponse = z.infer<typeof SessionRealtimeMutationResponse>;\n\nexport const SessionAuthorizationOperation = z.enum([\n \"session.read\",\n \"session.events.read\",\n \"session.stream.read\",\n \"session.stream.acknowledge\",\n \"session.turns.read\",\n \"session.append\",\n \"session.steer\",\n \"session.control\",\n \"session.queue.read\",\n \"session.queue.control\",\n \"session.composer.read\",\n \"session.composer.write\",\n \"session.lineage.read\",\n \"session.capture.read\",\n \"session.files.read\",\n \"session.files.write\",\n \"session.git.read\",\n \"session.terminal.read\",\n \"session.terminal.control\",\n \"session.viewer.read\",\n \"session.viewer.control\",\n \"session.first_party_mcp.call\",\n \"session.secret.read\",\n \"session.codemode.call\",\n \"session.pin.write\",\n \"session.feedback.write\",\n \"session.attention.write\",\n \"session.archive.write\",\n \"session.delete\",\n \"session.codex_account.write\",\n \"session.realtime.start\",\n \"session.realtime.control\",\n \"session.context.write\",\n \"session.approval.write\",\n \"session.human_input.read\",\n \"session.human_input.write\",\n \"session.title.write\",\n \"session.channel.write\",\n \"session.variable_sets.write\",\n \"session.mcp.approval_policy.write\",\n \"session.tool_policy.write\",\n \"session.goal.read\",\n \"session.goal.write\",\n \"session.child.create\",\n \"session.visibility.write\",\n \"session.fork.create\",\n \"session.personal_resource.grant\",\n]);\nexport type SessionAuthorizationOperation = z.infer<typeof SessionAuthorizationOperation>;\n\nexport const SessionAuthorizationActor = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"subject\"),\n subjectId: z.string().min(1),\n subjectLabel: z.string().min(1).optional(),\n }),\n z.object({\n kind: z.literal(\"agent_attempt\"),\n /** Technical, authenticated first-party caller (not the host authority). */\n subjectId: z.string().min(1),\n callerSessionId: z.string().uuid(),\n callerRootSessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n /** Frozen authority that admitted the calling turn. */\n initiator: TurnInitiator,\n initiatorContext: TurnInitiatorContext,\n /** Durable causal human for delegated/service work; null for pure service work. */\n initiatingHumanSubjectId: z.string().min(1).max(1024).nullable(),\n }),\n]);\nexport type SessionAuthorizationActor = z.infer<typeof SessionAuthorizationActor>;\n\nexport const SessionAuthorizationTarget = z.object({\n sessionId: z.string().uuid(),\n /** Server-resolved workspace lineage root; never accepted from a caller. */\n rootSessionId: z.string().uuid(),\n});\nexport type SessionAuthorizationTarget = z.infer<typeof SessionAuthorizationTarget>;\n\nexport type AuthorizeSessionInput = {\n accountId: string;\n workspaceId: string;\n actor: SessionAuthorizationActor;\n target: SessionAuthorizationTarget;\n operation: SessionAuthorizationOperation;\n surface: SessionAuthorizationSurface;\n};\n\nexport const SessionAuthorizationDecision = z.discriminatedUnion(\"allowed\", [\n z.object({\n allowed: z.literal(true),\n /**\n * Whether related-session metadata may be projected with the target.\n * `target` is the fail-closed default for exact shares; `root` permits the\n * target's full lineage tree. This does not authorize a separate operation\n * against another session, which always requires its own decision.\n */\n relatedSessionAccess: z.enum([\"target\", \"root\"]).optional(),\n /** A host may request a tighter stream reauthorization bound. */\n reauthorizeAfterMs: z.number().int().min(1_000).max(60_000).optional(),\n }),\n z.object({\n allowed: z.literal(false),\n reason: z.enum([\"not_found\", \"forbidden\", \"revoked\"]),\n }),\n]);\nexport type SessionAuthorizationDecision = z.infer<typeof SessionAuthorizationDecision>;\n\n/**\n * A database-applicable listing scope. `rootSessionIds` includes every\n * descendant of those lineage anchors; `sessionIds` authorizes only the exact\n * sessions. Supplying neither is an explicit empty scope. OpenGeni intersects\n * every id with the requested workspace and never trusts a host scope as\n * session existence evidence.\n */\nexport const SESSION_AUTHORIZATION_LIST_SCOPE_MAX_IDS = 10_000;\n\n/**\n * How far a live agent attempt on a session may reach across the workspace,\n * under ordinary resource authorization. `workspace` is the platform default.\n * `user` limits outgoing reach to the same canonical {@link SessionScopeSubjectId};\n * `session` limits it to the own root tree. Target task scope does not restrict\n * incoming access; private ownership remains enforced. Humans and API keys\n * are unaffected: this is an agent-to-agent fence enforced only in the core\n * session-authorization seam.\n */\nexport const SessionAgentAccess = z.enum([\"session\", \"user\", \"workspace\"]);\nexport type SessionAgentAccess = z.infer<typeof SessionAgentAccess>;\n\n/**\n * Server-derived canonical user for the session's agent-reach boundary.\n * This is an output/filter value, never caller-supplied creation authority.\n * Human visibility remains an independent resource authorization check.\n */\nexport const SessionScopeSubjectId = z\n .string()\n .min(1)\n .max(1024)\n .regex(/^(?:user:|external_user:).+/);\nexport type SessionScopeSubjectId = z.infer<typeof SessionScopeSubjectId>;\n\n/**\n * The typed Workspace Memory selector an agent reads and writes. `workspace`\n * is shared memory; `user` adds a private layer\n * (the agent still reads workspace facts and saves to its narrowest scope);\n * `off` registers no Memory tools for the session. `user` requires an\n * authenticated canonical user on the active turn. Use task notes for task-local data.\n */\nexport const SessionMemoryScope = z.enum([\"workspace\", \"user\", \"off\"]);\nexport type SessionMemoryScope = z.infer<typeof SessionMemoryScope>;\n\n/** Read old persisted selectors without promoting task-local data or authority.\n * New requests must use SessionMemoryScope directly and reject `session`.\n * Historical Memory rows remain retained; task notes own new task-local facts. */\nexport function storedSessionMemoryScope(value: unknown): SessionMemoryScope {\n if (value === \"session\") return \"off\";\n return SessionMemoryScope.parse(value ?? \"workspace\");\n}\n\n/**\n * The calling agent attempt's own access scope, resolved by OpenGeni from the\n * caller session row (never from the request) and applied as one SQL\n * predicate wherever a session list runs for that attempt.\n */\nexport const SessionAgentAccessViewer = z\n .object({\n callerRootSessionId: z.string().uuid(),\n agentAccess: SessionAgentAccess,\n scopeSubjectId: SessionScopeSubjectId.nullable(),\n })\n .strict();\nexport type SessionAgentAccessViewer = z.infer<typeof SessionAgentAccessViewer>;\n\nexport const SessionAuthorizationListScope = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"all\"),\n /** Set by OpenGeni for an agent attempt; a host-returned value is replaced. */\n agentAccessViewer: SessionAgentAccessViewer.optional(),\n }),\n z.object({\n kind: z.literal(\"scoped\"),\n rootSessionIds: z.array(z.string().uuid()).max(SESSION_AUTHORIZATION_LIST_SCOPE_MAX_IDS),\n sessionIds: z.array(z.string().uuid()).max(SESSION_AUTHORIZATION_LIST_SCOPE_MAX_IDS),\n agentAccessViewer: SessionAgentAccessViewer.optional(),\n }),\n]);\nexport type SessionAuthorizationListScope = z.infer<typeof SessionAuthorizationListScope>;\n\nexport type ResolveSessionAuthorizationListScopeInput = {\n accountId: string;\n workspaceId: string;\n actor: SessionAuthorizationActor;\n surface: SessionAuthorizationSurface;\n};\n\nexport type SessionAuthorizationPort = {\n authorizeSession(input: AuthorizeSessionInput): Promise<SessionAuthorizationDecision>;\n /**\n * Return the complete current scope used inside OpenGeni's cursor query.\n * This is deliberately not a post-filter callback: search, pinning, ordering,\n * totals, and cursor advancement must all operate on authorized rows.\n */\n resolveListScope(\n input: ResolveSessionAuthorizationListScopeInput,\n ): Promise<SessionAuthorizationListScope>;\n};\n\nexport const TIMELINE_ANNOTATION_MAX_COUNT = 12;\nexport const TIMELINE_ANNOTATION_QUOTE_MAX_BYTES = 16 * 1024;\nexport const TIMELINE_ANNOTATION_NOTE_MAX_BYTES = 2 * 1024;\nexport const TIMELINE_ANNOTATION_CONTEXT_MAX_BYTES = 512;\nexport const TIMELINE_ANNOTATION_LABEL_MAX_BYTES = 256;\nexport const TIMELINE_ANNOTATIONS_MAX_BYTES = 64 * 1024;\n\nexport const TimelineAnnotationSourceKind = z.enum([\n \"user_message\",\n \"assistant_message\",\n \"tool_output\",\n]);\nexport type TimelineAnnotationSourceKind = z.infer<typeof TimelineAnnotationSourceKind>;\n\nexport const TimelineAnnotationSourceEventType = z.enum([\n \"user.message\",\n \"agent.message.completed\",\n \"agent.toolCall.output\",\n]);\nexport type TimelineAnnotationSourceEventType = z.infer<typeof TimelineAnnotationSourceEventType>;\n\nfunction timelineAnnotationUtf8Bytes(value: string): number {\n return new TextEncoder().encode(value).byteLength;\n}\n\nfunction timelineAnnotationBoundedText(maxBytes: number, label: string) {\n return z.string().superRefine((value, ctx) => {\n if (timelineAnnotationUtf8Bytes(value) > maxBytes) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${label} must be at most ${maxBytes} UTF-8 bytes`,\n });\n }\n });\n}\n\nexport const TimelineAnnotationSource = z\n .object({\n kind: TimelineAnnotationSourceKind,\n eventId: z.string().uuid(),\n eventType: TimelineAnnotationSourceEventType,\n sequence: z.number().int().positive(),\n turnId: z.string().uuid().nullable(),\n startOffset: z.number().int().nonnegative(),\n endOffset: z.number().int().nonnegative(),\n contextBefore: timelineAnnotationBoundedText(\n TIMELINE_ANNOTATION_CONTEXT_MAX_BYTES,\n \"annotation source contextBefore\",\n ),\n contextAfter: timelineAnnotationBoundedText(\n TIMELINE_ANNOTATION_CONTEXT_MAX_BYTES,\n \"annotation source contextAfter\",\n ),\n label: timelineAnnotationBoundedText(\n TIMELINE_ANNOTATION_LABEL_MAX_BYTES,\n \"annotation source label\",\n ).optional(),\n })\n .strict()\n .superRefine((source, ctx) => {\n if (source.endOffset < source.startOffset) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"endOffset\"],\n message: \"annotation source endOffset must not precede startOffset\",\n });\n }\n const expectedKind =\n source.eventType === \"user.message\"\n ? \"user_message\"\n : source.eventType === \"agent.message.completed\"\n ? \"assistant_message\"\n : \"tool_output\";\n if (source.kind !== expectedKind) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"kind\"],\n message: \"annotation source kind does not match eventType\",\n });\n }\n });\nexport type TimelineAnnotationSource = z.infer<typeof TimelineAnnotationSource>;\n\nexport const DraftTimelineAnnotation = z\n .object({\n id: z.string().uuid(),\n source: TimelineAnnotationSource,\n quote: timelineAnnotationBoundedText(TIMELINE_ANNOTATION_QUOTE_MAX_BYTES, \"annotation quote\"),\n note: timelineAnnotationBoundedText(TIMELINE_ANNOTATION_NOTE_MAX_BYTES, \"annotation note\"),\n })\n .strict()\n .superRefine((annotation, ctx) => {\n if (!annotation.quote.trim()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"quote\"],\n message: \"annotation quote must contain non-whitespace text\",\n });\n }\n });\nexport type DraftTimelineAnnotation = z.infer<typeof DraftTimelineAnnotation>;\n\nexport const SubmittedTimelineAnnotation = DraftTimelineAnnotation.superRefine(\n (annotation, ctx) => {\n if (!annotation.note.trim()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"note\"],\n message: \"annotation note must contain non-whitespace text\",\n });\n }\n },\n);\nexport type SubmittedTimelineAnnotation = z.infer<typeof SubmittedTimelineAnnotation>;\n\nexport const TimelineAnnotation = z\n .object({\n id: z.string().uuid(),\n source: TimelineAnnotationSource,\n quote: timelineAnnotationBoundedText(TIMELINE_ANNOTATION_QUOTE_MAX_BYTES, \"annotation quote\"),\n note: timelineAnnotationBoundedText(\n TIMELINE_ANNOTATION_NOTE_MAX_BYTES,\n \"annotation note\",\n ).refine((value) => value.trim().length > 0, {\n message: \"annotation note must contain non-whitespace text\",\n }),\n ordinal: z.number().int().positive(),\n })\n .strict();\nexport type TimelineAnnotation = z.infer<typeof TimelineAnnotation>;\n\nfunction timelineAnnotationArray<T extends z.ZodTypeAny>(item: T) {\n return z\n .array(item)\n .max(TIMELINE_ANNOTATION_MAX_COUNT)\n .superRefine((annotations, ctx) => {\n const ids = new Set<string>();\n for (let index = 0; index < annotations.length; index += 1) {\n const id = (annotations[index] as { id?: unknown }).id;\n if (typeof id === \"string\" && ids.has(id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [index, \"id\"],\n message: \"annotation ids must be unique\",\n });\n }\n if (typeof id === \"string\") ids.add(id);\n }\n if (\n timelineAnnotationUtf8Bytes(JSON.stringify(annotations)) > TIMELINE_ANNOTATIONS_MAX_BYTES\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `annotations must be at most ${TIMELINE_ANNOTATIONS_MAX_BYTES} UTF-8 bytes`,\n });\n }\n });\n}\n\nexport const DraftTimelineAnnotations = timelineAnnotationArray(DraftTimelineAnnotation);\nexport type DraftTimelineAnnotations = z.infer<typeof DraftTimelineAnnotations>;\n\nexport const SubmittedTimelineAnnotations = timelineAnnotationArray(SubmittedTimelineAnnotation);\nexport type SubmittedTimelineAnnotations = z.infer<typeof SubmittedTimelineAnnotations>;\n\nexport const TimelineAnnotations = timelineAnnotationArray(TimelineAnnotation).superRefine(\n (annotations, ctx) => {\n for (let index = 0; index < annotations.length; index += 1) {\n if (annotations[index]!.ordinal !== index + 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [index, \"ordinal\"],\n message: \"annotation ordinals must be contiguous and match array order\",\n });\n }\n }\n },\n);\nexport type TimelineAnnotations = z.infer<typeof TimelineAnnotations>;\n\nexport function numberTimelineAnnotations(\n annotations: readonly SubmittedTimelineAnnotation[],\n): TimelineAnnotation[] {\n return annotations.map((annotation, index) => ({\n ...annotation,\n source: { ...annotation.source },\n ordinal: index + 1,\n }));\n}\n\nexport function renderTimelineAnnotationsForModel(\n text: string,\n annotations: readonly TimelineAnnotation[],\n): string {\n if (annotations.length === 0) return text;\n const sections = annotations.flatMap((annotation) => [\n `Annotation ${annotation.ordinal}`,\n `Source: ${JSON.stringify({\n kind: annotation.source.kind,\n eventId: annotation.source.eventId,\n eventType: annotation.source.eventType,\n sequence: annotation.source.sequence,\n turnId: annotation.source.turnId,\n startOffset: annotation.source.startOffset,\n endOffset: annotation.source.endOffset,\n contextBefore: annotation.source.contextBefore,\n contextAfter: annotation.source.contextAfter,\n ...(annotation.source.label ? { label: annotation.source.label } : {}),\n })}`,\n `Exact quote: ${JSON.stringify(annotation.quote)}`,\n `User note: ${JSON.stringify(annotation.note)}`,\n ]);\n return [\n ...(text.length > 0 ? [text, \"\"] : []),\n \"[OpenGeni timeline annotations]\",\n ...sections.flatMap((line, index) =>\n index > 0 && line.startsWith(\"Annotation \") ? [\"\", line] : [line],\n ),\n ].join(\"\\n\");\n}\n\nexport const MODEL_CONTEXT_LABEL = \"[Application context attached to this user message]\" as const;\nexport const SESSION_GOAL_CONTEXT_LABEL =\n \"[Session goal frozen when this turn was accepted]\" as const;\n\n/**\n * Render the exact goal authority frozen with one accepted logical turn. Goal\n * state belongs at the chronological input boundary, not in the mutable\n * Agent.instructions prefix.\n */\nexport function renderSessionGoalContext(snapshot?: SessionGoalSnapshot): string | undefined {\n if (!snapshot || snapshot.state === \"none\") return undefined;\n const rootConstraints = snapshot.rootConstraints.length\n ? `\\nRoot constraints (must remain satisfied):\\n${snapshot.rootConstraints.map((constraint) => `- ${constraint}`).join(\"\\n\")}`\n : \"\";\n if (snapshot.state === \"completed\") {\n return `Previous session goal (frozen at logical-turn acceptance; objective revision ${snapshot.objectiveRevision}; status completed): ${snapshot.text}\\nSuccess criteria: ${snapshot.successCriteria ?? \"none specified\"}.${rootConstraints} This goal is complete and remains as historical context. If the user provides a new long-running objective, create it with opengeni__goal_set; goal_update cannot revise a completed goal.`;\n }\n const policy =\n snapshot.mutationPolicy === \"review_changes\"\n ? \"Semantic changes are proposals until a user applies them.\"\n : snapshot.mutationPolicy === \"preserve_intent\"\n ? \"You may directly refine wording without changing intent; adaptations and replacements are proposals until a user applies them.\"\n : \"You may autonomously refine, adapt, or replace the goal when explicit user direction or material new evidence justifies it.\";\n return `Standing session goal (frozen at logical-turn acceptance; objective revision ${snapshot.objectiveRevision}; status ${snapshot.state}): ${snapshot.text}\\nSuccess criteria: ${snapshot.successCriteria ?? \"none specified\"}.${rootConstraints}\\nMutation policy: ${snapshot.mutationPolicy}. ${policy} Treat later ordinary messages as additional context unless they explicitly redirect this objective. Root constraints are user/API authority and cannot be widened, removed, or rewritten by an agent. Semantic goal changes use opengeni__goal_update with the expected objective revision, change kind, and rationale.`;\n}\n\n/**\n * Build one canonical user-role message body. `modelContext` is ordinary\n * message content, while `goalSnapshot` is the exact goal authority frozen at\n * turn acceptance. Both remain in the visible message's chronological\n * position, and presentation layers may omit their leading parts.\n */\nexport function renderUserMessageContentForModel(\n text: string,\n annotations: readonly TimelineAnnotation[],\n modelContext?: string | null,\n goalSnapshot?: SessionGoalSnapshot,\n): string | Array<{ type: \"input_text\"; text: string }> {\n const visibleContent = renderTimelineAnnotationsForModel(text, annotations);\n const context = modelContext?.trim();\n const goalContext = renderSessionGoalContext(goalSnapshot);\n if (!context && !goalContext) return visibleContent;\n return [\n ...(goalContext\n ? [\n {\n type: \"input_text\" as const,\n text: `${SESSION_GOAL_CONTEXT_LABEL}\\n${goalContext}`,\n },\n ]\n : []),\n ...(context\n ? [\n {\n type: \"input_text\" as const,\n text: `${MODEL_CONTEXT_LABEL}\\n${context}`,\n },\n ]\n : []),\n { type: \"input_text\", text: visibleContent },\n ];\n}\n\nexport const SessionTurn = z\n .object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n triggerEventId: z.string().uuid(),\n temporalWorkflowId: z.string(),\n status: SessionTurnStatus,\n source: SessionTurnSource,\n position: z.number().int(),\n prompt: z.string(),\n annotations: TimelineAnnotations.default([]),\n resources: z.array(ResourceRef),\n tools: z.array(ToolRef),\n // Omitted/default discovery and explicit `tools: []` are distinct. False\n // inherits the durable session policy; true replaces it for this turn after\n // admission proves the selection is a subset.\n toolsProvided: z.boolean().optional(),\n model: z.string().min(1),\n reasoningEffort: ReasoningEffort,\n latencyMode: LatencyMode,\n sandboxBackend: SandboxBackend,\n // Per-turn OS override. NULL = inherit the session's sandboxOs.\n sandboxOs: SandboxOs.nullable(),\n metadata: z.record(z.string(), z.unknown()),\n version: z.number().int().positive(),\n executionGeneration: z.number().int().nonnegative(),\n activeAttemptId: z.string().uuid().nullable(),\n lineage: z.record(z.string(), z.unknown()),\n initiator: TurnInitiator,\n initiatorContext: TurnInitiatorContext,\n /** Secret-safe projection of the exact personal authority frozen on this turn. */\n personalConnections: z.array(McpPersonalConnectionSummary).default([]),\n /** Safe summary only; opaque resource/grant identity remains private. */\n personalResources: PersonalResourceAttachmentSummary.nullable().default(null),\n cancelledBy: z.string().nullable(),\n cancelReason: z.string().nullable(),\n startedAt: z.string().nullable(),\n finishedAt: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n })\n .superRefine((turn, ctx) => {\n if (turn.prompt.length === 0 && turn.annotations.length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"prompt\"],\n message: \"turn prompt or annotations are required\",\n });\n }\n });\nexport type SessionTurn = z.infer<typeof SessionTurn>;\n\nexport const EffectiveControlBlocker = z.object({\n kind: z.enum([\"session\", \"workspace\"]),\n sessionId: z.string().uuid().optional(),\n displayName: z.string().min(1),\n actor: z.string().nullable(),\n reason: z.string().nullable(),\n changedAt: z.string().nullable(),\n revision: z.number().int().nonnegative(),\n});\nexport type EffectiveControlBlocker = z.infer<typeof EffectiveControlBlocker>;\n\nexport const EffectiveControlResumeOption = z.object({\n scope: z.enum([\"selected\", \"session\", \"workspace\"]),\n targetId: z.string().uuid().optional(),\n selectedStateAfter: SessionControlState,\n remainingPrimaryBlocker: EffectiveControlBlocker.optional(),\n impactCopy: z.string().min(1),\n});\nexport type EffectiveControlResumeOption = z.infer<typeof EffectiveControlResumeOption>;\n\nexport const EffectiveSessionControl = z.object({\n state: SessionControlState,\n controlVersion: z.number().int().nonnegative(),\n controlEtag: z.string().min(1),\n directState: SessionControlState,\n primaryBlocker: EffectiveControlBlocker.nullable(),\n additionalBlockerCount: z.number().int().nonnegative(),\n blockers: z.array(EffectiveControlBlocker),\n resumeOptions: z.array(EffectiveControlResumeOption),\n override: z\n .object({\n rootSessionId: z.string().uuid(),\n revision: z.number().int().nonnegative(),\n })\n .nullable(),\n settlement: z\n .object({\n state: z.literal(\"stopping\"),\n attemptCount: z.number().int().positive(),\n interruptionPendingCount: z.number().int().nonnegative(),\n quiescencePendingCount: z.number().int().nonnegative(),\n })\n .nullable(),\n /** Independent command-cancellation settlement. Session pause/turn state is\n * intentionally not overloaded with process lifecycle. */\n backgroundCommandSettlement: z\n .object({\n state: z.literal(\"stopping\"),\n commandCount: z.number().int().positive(),\n })\n .nullable()\n .optional(),\n});\nexport type EffectiveSessionControl = z.infer<typeof EffectiveSessionControl>;\n\nconst SessionOperationKey = z.string().min(1).max(SESSION_OPERATION_KEY_MAX_CHARS);\n\nexport const SessionCommandReceipt = z.object({\n id: z.string().uuid(),\n action: z.string().min(1),\n operationKey: z.string().min(1).max(SESSION_OPERATION_KEY_MAX_CHARS),\n targetSessionId: z.string().uuid().nullable(),\n targetTurnId: z.string().uuid().nullable(),\n appliedControlRevision: z.number().int().nonnegative().nullable(),\n appliedQueueVersion: z.number().int().nonnegative().nullable(),\n appliedTurnVersion: z.number().int().positive().nullable(),\n appliedDraftRevision: z.number().int().positive().nullable(),\n createdAt: z.string(),\n});\nexport type SessionCommandReceipt = z.infer<typeof SessionCommandReceipt>;\n\n/** The server-owned destination of an accepted human prompt at admission time. */\nexport const SessionPromptRouting = z.enum([\n \"accepted_for_execution\",\n \"queued_for_execution\",\n \"accepted_for_steering\",\n]);\nexport type SessionPromptRouting = z.infer<typeof SessionPromptRouting>;\n\nexport const ComposerDraft = z.object({\n revision: z.number().int().nonnegative(),\n text: z.string(),\n annotations: DraftTimelineAnnotations.default([]),\n resources: z.array(ResourceRef),\n model: z.string().min(1),\n reasoningEffort: ReasoningEffort,\n latencyMode: LatencyMode,\n sourceTurnId: z.string().uuid().nullable(),\n sourceTurnVersion: z.number().int().positive().nullable(),\n updatedAt: z.string().nullable(),\n});\nexport type ComposerDraft = z.infer<typeof ComposerDraft>;\n\nexport const MoveSessionQueueItemRequest = z.object({\n clientEventId: SessionOperationKey,\n expectedQueueVersion: z.number().int().nonnegative(),\n beforeTurnId: z.string().uuid().nullable(),\n});\nexport type MoveSessionQueueItemRequest = z.infer<typeof MoveSessionQueueItemRequest>;\n\nexport const EditSessionQueueItemRequest = z.object({\n clientEventId: SessionOperationKey,\n expectedTurnVersion: z.number().int().positive(),\n expectedDraftRevision: z.number().int().nonnegative(),\n replaceDraft: z.boolean(),\n});\nexport type EditSessionQueueItemRequest = z.infer<typeof EditSessionQueueItemRequest>;\n\nexport const SteerSessionQueueItemRequest = z.object({\n clientEventId: SessionOperationKey,\n expectedTurnVersion: z.number().int().positive(),\n controlEtag: z.string().min(1).optional(),\n});\nexport type SteerSessionQueueItemRequest = z.infer<typeof SteerSessionQueueItemRequest>;\n\nexport const DeleteSessionQueueItemRequest = z.object({\n clientEventId: SessionOperationKey,\n expectedTurnVersion: z.number().int().positive(),\n reason: z.string().min(1).optional(),\n});\nexport type DeleteSessionQueueItemRequest = z.infer<typeof DeleteSessionQueueItemRequest>;\n\nexport const SaveComposerDraftRequest = ComposerDraft.pick({\n text: true,\n annotations: true,\n resources: true,\n model: true,\n reasoningEffort: true,\n latencyMode: true,\n}).extend({ expectedRevision: z.number().int().nonnegative() });\nexport type SaveComposerDraftRequest = z.infer<typeof SaveComposerDraftRequest>;\n\n/**\n * Submit one exact established-session draft. Content is repeated only as an\n * integrity fence for outcome-unknown idempotent replay; the matching durable\n * draft revision remains authoritative and is atomically rotated on acceptance.\n */\nexport const SubmitComposerDraftRequest = ComposerDraft.pick({\n text: true,\n annotations: true,\n resources: true,\n model: true,\n reasoningEffort: true,\n latencyMode: true,\n})\n .extend({\n expectedDraftRevision: z.number().int().positive(),\n clientEventId: SessionOperationKey,\n delivery: z.enum([\"send\", \"steer\"]),\n controlEtag: z.string().min(1).optional(),\n modelContext: z.string().trim().min(1).max(32768).optional(),\n mcpCredentialUpdates: z.array(SessionMcpCredentialUpdateInput).optional(),\n connectionAuthorities: McpConnectionAuthoritySelections.default([]),\n personalResourceAttachment: PersonalResourceAttachmentIntent.optional(),\n })\n .superRefine(requireEstablishedPersonalResourceEpoch);\nexport type SubmitComposerDraftRequest = z.infer<typeof SubmitComposerDraftRequest>;\n\n/**\n * Create-only options saved with an actor's private pre-session draft. This is\n * deliberately narrower than CreateSessionRequest: idempotency/event keys and\n * credential-bearing MCP server inputs are per-attempt data, never draft state.\n */\nexport const NewSessionDraftOptions = withVariableSetIdAlias({\n visibility: SessionVisibility.optional(),\n sandboxBackend: SandboxBackend.optional(),\n targetSandboxId: z.string().uuid().optional(),\n workingDir: z.string().min(1).optional(),\n variableSetId: z.string().uuid().optional(),\n variableSetIds: z.array(z.string().uuid()).max(MAX_SELECTED_VARIABLE_SETS).optional(),\n rigId: z.string().uuid().optional(),\n goal: GoalSpec.optional(),\n firstPartyMcpPermissions: z.array(Permission).optional(),\n firstPartyMcpTools: z.array(FirstPartyMcpToolName).optional(),\n});\nexport type NewSessionDraftOptions = z.infer<typeof NewSessionDraftOptions>;\n\n/**\n * Actor-private successful-create history for the new-session composer. Project\n * entries and their machine entries are MRU ordered. A null target means the\n * managed sandbox; a null working directory means the machine's launch root.\n */\nexport const NewSessionSelectionHistory = z.object({\n projects: z\n .array(\n z.object({\n channelId: z.string().uuid().nullable(),\n targetSandboxId: z.string().uuid().nullable(),\n machines: z\n .array(\n z.object({\n sandboxId: z.string().uuid(),\n workingDir: z.string().min(1).max(4096).nullable(),\n }),\n )\n .max(20),\n }),\n )\n .max(50),\n});\nexport type NewSessionSelectionHistory = z.infer<typeof NewSessionSelectionHistory>;\n\n/** Actor-private, server-authoritative composer state before a session exists. */\nexport const NewSessionDraft = z.object({\n revision: z.number().int().nonnegative(),\n text: z.string(),\n resources: z.array(ResourceRef),\n tools: z.array(ToolRef),\n /** False means the workspace-default MCP policy is still inherited. */\n toolsProvided: z.boolean().default(false),\n model: z.string().min(1),\n reasoningEffort: ReasoningEffort,\n latencyMode: LatencyMode,\n /** Absent on legacy drafts; null is explicit provenance for the Default project. */\n selectedProjectChannelId: z.string().uuid().nullable().optional(),\n options: NewSessionDraftOptions,\n selectionHistory: NewSessionSelectionHistory.default({ projects: [] }),\n updatedAt: z.string().nullable(),\n});\nexport type NewSessionDraft = z.infer<typeof NewSessionDraft>;\n\nexport const SaveNewSessionDraftRequest = NewSessionDraft.pick({\n text: true,\n resources: true,\n tools: true,\n toolsProvided: true,\n model: true,\n reasoningEffort: true,\n latencyMode: true,\n selectedProjectChannelId: true,\n options: true,\n}).extend({ expectedRevision: z.number().int().nonnegative() });\nexport type SaveNewSessionDraftRequest = z.infer<typeof SaveNewSessionDraftRequest>;\n\nexport const WORKSPACE_CONTROL_REASON_MAX_BYTES = 8 * 1024;\nexport const WORKSPACE_CONTROL_ACTOR_MAX_BYTES = 1024;\nexport const WORKSPACE_CONTROL_EVENT_MAX_BYTES = 16 * 1024;\n\nconst WorkspaceControlReason = z\n .string()\n .min(1)\n .refine((value) => !value.includes(\"\\u0000\"), \"reason must not contain NUL bytes\")\n .refine(\n (value) => workspaceControlUtf8Bytes(value) <= WORKSPACE_CONTROL_REASON_MAX_BYTES,\n `reason must not exceed ${WORKSPACE_CONTROL_REASON_MAX_BYTES} UTF-8 bytes`,\n );\n\nexport const SessionControlRequest = z.object({\n action: z.enum([\"pause\", \"resume\", \"cancel\"]),\n reason: WorkspaceControlReason.optional(),\n clientEventId: SessionOperationKey,\n expectedControlEtag: z.string().min(1).optional(),\n});\nexport type SessionControlRequest = z.infer<typeof SessionControlRequest>;\n\nexport const WorkspaceInferenceControlRequest = z.object({\n action: z.enum([\"pause\", \"resume\"]),\n reason: WorkspaceControlReason.optional(),\n clientEventId: SessionOperationKey,\n expectedRevision: z.number().int().nonnegative().optional(),\n});\nexport type WorkspaceInferenceControlRequest = z.infer<typeof WorkspaceInferenceControlRequest>;\n\nexport const WorkspaceInferenceControlResponse = z.object({\n receipt: SessionCommandReceipt,\n state: SessionControlState,\n revision: z.number().int().nonnegative(),\n interruptionCount: z.number().int().nonnegative(),\n wakeCount: z.number().int().nonnegative(),\n});\nexport type WorkspaceInferenceControlResponse = z.infer<typeof WorkspaceInferenceControlResponse>;\n\n/**\n * One durable workspace-wide invalidation for one committed control revision.\n * It is not conversation history and never becomes queue work; clients use it\n * only to refetch authoritative workspace/session projections.\n */\nexport const WorkspaceControlEventTruncation = z.object({\n truncated: z.literal(true),\n surface: z.enum([\n \"durable_control\",\n \"database_guard\",\n \"http_projection\",\n \"nats_legacy_guard\",\n \"sse_legacy_guard\",\n ]),\n deliveredBytes: z.number().int().nonnegative(),\n fields: z.array(\n z.object({\n field: z.enum([\"reason\", \"actor\"]),\n originalBytes: z.number().int().nonnegative(),\n deliveredBytes: z.number().int().nonnegative(),\n omittedBytes: z.number().int().nonnegative(),\n }),\n ),\n fullEvidence: z.object({\n available: z.literal(false),\n reason: z.literal(\"not_retained\"),\n }),\n});\nexport type WorkspaceControlEventTruncation = z.infer<typeof WorkspaceControlEventTruncation>;\n\nexport const WorkspaceControlEvent = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sequence: z.number().int().positive(),\n revision: z.number().int().positive(),\n type: z.literal(\"workspace.control.changed\"),\n scope: z.enum([\"workspace\", \"session\"]),\n rootSessionId: z.string().uuid().nullable(),\n action: z.enum([\"pause\", \"resume\", \"timer_set\", \"timer_cancelled\"]),\n automatic: z.boolean(),\n reason: z.string().nullable(),\n actor: z.string().min(1),\n occurredAt: z.string(),\n truncation: WorkspaceControlEventTruncation.nullable().optional(),\n});\nexport type WorkspaceControlEvent = z.infer<typeof WorkspaceControlEvent>;\n\nexport type WorkspaceControlBoundarySurface = WorkspaceControlEventTruncation[\"surface\"];\n\nexport type BoundWorkspaceControlEventOptions = {\n surface?: WorkspaceControlBoundarySurface;\n reasonOriginalBytes?: number | null;\n actorOriginalBytes?: number | null;\n};\n\n/** UTF-8 byte count used by workspace-control storage and transport guards. */\nexport function workspaceControlUtf8Bytes(value: string): number {\n return new TextEncoder().encode(value).byteLength;\n}\n\n/**\n * Canonical bounded invalidation event. The event is not a full evidence store:\n * when a producer or legacy row exceeds a field cap, the retained head carries\n * a visible marker and structured exact byte-loss facts.\n */\nexport function boundWorkspaceControlEvent(\n event: WorkspaceControlEvent,\n options: BoundWorkspaceControlEventOptions = {},\n): WorkspaceControlEvent {\n const existingFields = new Map(\n (event.truncation?.fields ?? []).map((field) => [field.field, field] as const),\n );\n const reason =\n event.reason === null\n ? null\n : boundWorkspaceControlText(event.reason, WORKSPACE_CONTROL_REASON_MAX_BYTES);\n const actor = boundWorkspaceControlText(event.actor, WORKSPACE_CONTROL_ACTOR_MAX_BYTES);\n const reasonBytes = reason === null ? 0 : workspaceControlUtf8Bytes(reason);\n const actorBytes = workspaceControlUtf8Bytes(actor);\n const reasonOriginalBytes =\n event.reason === null\n ? null\n : Math.max(\n workspaceControlUtf8Bytes(event.reason),\n normalizedWorkspaceControlOriginalBytes(options.reasonOriginalBytes),\n existingFields.get(\"reason\")?.originalBytes ?? 0,\n );\n const actorOriginalBytes = Math.max(\n workspaceControlUtf8Bytes(event.actor),\n normalizedWorkspaceControlOriginalBytes(options.actorOriginalBytes),\n existingFields.get(\"actor\")?.originalBytes ?? 0,\n );\n const fields: WorkspaceControlEventTruncation[\"fields\"] = [];\n if (reasonOriginalBytes !== null && reasonOriginalBytes > reasonBytes) {\n fields.push({\n field: \"reason\",\n originalBytes: reasonOriginalBytes,\n deliveredBytes: reasonBytes,\n omittedBytes: reasonOriginalBytes - reasonBytes,\n });\n }\n if (actorOriginalBytes > actorBytes) {\n fields.push({\n field: \"actor\",\n originalBytes: actorOriginalBytes,\n deliveredBytes: actorBytes,\n omittedBytes: actorOriginalBytes - actorBytes,\n });\n }\n if (fields.length === 0 && event.truncation == null) {\n if (sessionEventJsonBytes(event) > WORKSPACE_CONTROL_EVENT_MAX_BYTES) {\n throw new RangeError(\"Workspace control event exceeds its bounded envelope\");\n }\n return event;\n }\n\n const truncation: WorkspaceControlEventTruncation = {\n truncated: true,\n surface: event.truncation?.surface ?? options.surface ?? \"durable_control\",\n deliveredBytes: 0,\n fields,\n fullEvidence: { available: false, reason: \"not_retained\" },\n };\n const bounded: WorkspaceControlEvent = {\n ...event,\n reason,\n actor,\n truncation,\n };\n settleWorkspaceControlDeliveredBytes(bounded, truncation);\n const deliveredBytes = sessionEventJsonBytes(bounded);\n if (deliveredBytes > WORKSPACE_CONTROL_EVENT_MAX_BYTES) {\n throw new RangeError(\n `Bounded workspace control event exceeds its final envelope (${deliveredBytes} > ${WORKSPACE_CONTROL_EVENT_MAX_BYTES} bytes)`,\n );\n }\n return bounded;\n}\n\nfunction boundWorkspaceControlText(value: string, maxBytes: number): string {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder();\n const bytes = encoder.encode(value);\n if (bytes.byteLength <= maxBytes) return value;\n const marker = \"…[truncated]\";\n const prefixBudget = Math.max(0, maxBytes - encoder.encode(marker).byteLength);\n let prefixEnd = Math.min(prefixBudget, bytes.byteLength);\n while (prefixEnd > 0 && prefixEnd < bytes.byteLength && (bytes[prefixEnd]! & 0xc0) === 0x80) {\n prefixEnd -= 1;\n }\n return `${decoder.decode(bytes.subarray(0, prefixEnd))}${marker}`;\n}\n\nfunction normalizedWorkspaceControlOriginalBytes(value: number | null | undefined): number {\n return value === null || value === undefined || !Number.isFinite(value)\n ? 0\n : Math.max(0, Math.floor(value));\n}\n\nfunction settleWorkspaceControlDeliveredBytes(\n event: WorkspaceControlEvent,\n truncation: WorkspaceControlEventTruncation,\n): void {\n for (let attempt = 0; attempt < 16; attempt += 1) {\n const deliveredBytes = sessionEventJsonBytes(event);\n if (truncation.deliveredBytes === deliveredBytes) return;\n truncation.deliveredBytes = deliveredBytes;\n }\n const deliveredBytes = sessionEventJsonBytes(event);\n if (truncation.deliveredBytes !== deliveredBytes) {\n throw new RangeError(\"Workspace control event byte accounting did not converge\");\n }\n}\n\nexport const SystemUpdateClassification = z.enum([\"success\", \"failure\", \"action_required\", \"info\"]);\nexport type SystemUpdateClassification = z.infer<typeof SystemUpdateClassification>;\n\nexport const SessionSystemUpdateKind = z.enum([\n \"scheduled_occurrence\",\n \"goal_continuation\",\n \"agent_message\",\n \"agent_steer_instruction\",\n \"session_wait_timeout\",\n \"background_command_result\",\n \"child_terminal_result\",\n \"media_generation_result\",\n \"child_requires_action\",\n \"child_requires_action_resolved\",\n \"child_paused\",\n \"child_waiting_capacity\",\n \"child_progress\",\n]);\nexport type SessionSystemUpdateKind = z.infer<typeof SessionSystemUpdateKind>;\n\n/**\n * How a newly pending machine input affects an idle receiving session.\n * `immediate` registers a workflow wake in the same commit (the behaviour of\n * every pre-existing kind) and ends a `wait_for_input` hold at the next idle\n * evaluation; `deferred` only inserts the durable pending row plus its\n * `system.update.pending` event and is delivered coalesced with the next claim.\n */\nexport type SessionSystemUpdateWakeClass = \"immediate\" | \"deferred\";\n\nexport const SESSION_SYSTEM_UPDATE_WAKE_CLASS: Record<\n SessionSystemUpdateKind,\n SessionSystemUpdateWakeClass\n> = {\n scheduled_occurrence: \"immediate\",\n goal_continuation: \"immediate\",\n agent_message: \"immediate\",\n agent_steer_instruction: \"immediate\",\n session_wait_timeout: \"immediate\",\n background_command_result: \"immediate\",\n child_terminal_result: \"immediate\",\n media_generation_result: \"immediate\",\n child_requires_action: \"immediate\",\n child_requires_action_resolved: \"deferred\",\n child_paused: \"deferred\",\n child_waiting_capacity: \"deferred\",\n child_progress: \"deferred\",\n};\n\n/**\n * Kinds a child session's lifecycle produces for its parent. Every one of them\n * travels through `session_system_update_outbox`, and none of them may\n * autonomously wake a parent whose goal is not active.\n */\nexport const CHILD_LIFECYCLE_SYSTEM_UPDATE_KINDS = [\n \"child_terminal_result\",\n \"child_requires_action\",\n \"child_requires_action_resolved\",\n \"child_paused\",\n \"child_waiting_capacity\",\n \"child_progress\",\n] as const satisfies readonly SessionSystemUpdateKind[];\nexport type ChildLifecycleSystemUpdateKind = (typeof CHILD_LIFECYCLE_SYSTEM_UPDATE_KINDS)[number];\n\nconst CHILD_LIFECYCLE_SYSTEM_UPDATE_KIND_SET: ReadonlySet<string> = new Set(\n CHILD_LIFECYCLE_SYSTEM_UPDATE_KINDS,\n);\n\nexport function isChildLifecycleSystemUpdateKind(\n kind: string,\n): kind is ChildLifecycleSystemUpdateKind {\n return CHILD_LIFECYCLE_SYSTEM_UPDATE_KIND_SET.has(kind);\n}\n\n/** A child_paused notice requested by a human/API is action-required; an agent pause is informational. */\nexport function childPausedClassification(\n actorKind: \"human\" | \"api\" | \"agent\",\n): \"action_required\" | \"info\" {\n return actorKind === \"agent\" ? \"info\" : \"action_required\";\n}\n\n/** Whole child_requires_action payload bound (UTF-8 JSON bytes). */\nexport const CHILD_REQUIRES_ACTION_PAYLOAD_MAX_BYTES = 8 * 1024;\n/** Bounded first-question preview inside a child_requires_action notice. */\nexport const CHILD_REQUIRES_ACTION_QUESTION_PREVIEW_MAX_BYTES = 512;\nexport const CHILD_REQUIRES_ACTION_MAX_REQUESTS = 20;\nexport const CHILD_PAUSED_REASON_MAX_BYTES = 2 * 1024;\nexport const CHILD_PROGRESS_NOTE_MAX_BYTES = 4 * 1024;\n\nconst boundedUtf8String = (maxBytes: number) =>\n z.string().refine((value) => new TextEncoder().encode(value).byteLength <= maxBytes, {\n message: `must be at most ${maxBytes} UTF-8 bytes`,\n });\n\nexport const ChildRequiresActionRequest = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"human_input\"),\n requestId: z.string().uuid(),\n questionCount: z.number().int().nonnegative(),\n firstQuestion: boundedUtf8String(CHILD_REQUIRES_ACTION_QUESTION_PREVIEW_MAX_BYTES),\n allowSkip: z.boolean(),\n expiresAt: z.string().nullable(),\n }),\n z.object({\n kind: z.literal(\"approval\"),\n approvalId: boundedUtf8String(256),\n toolName: boundedUtf8String(128).nullable(),\n }),\n]);\nexport type ChildRequiresActionRequest = z.infer<typeof ChildRequiresActionRequest>;\n\nexport const ChildRequiresActionPayload = z\n .object({\n type: z.literal(\"child_requires_action\"),\n childSessionId: z.string().uuid(),\n childTurnId: z.string().uuid(),\n childTurnGeneration: z.number().int().positive(),\n requests: z.array(ChildRequiresActionRequest).max(CHILD_REQUIRES_ACTION_MAX_REQUESTS),\n truncated: z.boolean(),\n })\n .passthrough();\nexport type ChildRequiresActionPayload = z.infer<typeof ChildRequiresActionPayload>;\n\nexport const ChildRequiresActionResolvedOutcome = z.enum([\n \"answered\",\n \"skipped\",\n \"expired\",\n \"cancelled\",\n \"approved\",\n \"rejected\",\n]);\nexport type ChildRequiresActionResolvedOutcome = z.infer<typeof ChildRequiresActionResolvedOutcome>;\n\nexport const ChildRequiresActionRespondedByKind = z.enum([\n \"human\",\n \"api\",\n \"agent_attempt\",\n \"system\",\n]);\nexport type ChildRequiresActionRespondedByKind = z.infer<typeof ChildRequiresActionRespondedByKind>;\n\nexport const ChildRequiresActionResolvedPayload = z\n .object({\n type: z.literal(\"child_requires_action_resolved\"),\n childSessionId: z.string().uuid(),\n childTurnId: z.string().uuid(),\n childTurnGeneration: z.number().int().positive(),\n requestId: z.string().uuid().nullable(),\n approvalId: boundedUtf8String(256).nullable(),\n outcome: ChildRequiresActionResolvedOutcome,\n respondedByKind: ChildRequiresActionRespondedByKind,\n })\n .passthrough();\nexport type ChildRequiresActionResolvedPayload = z.infer<typeof ChildRequiresActionResolvedPayload>;\n\nexport const ChildPausedPayload = z\n .object({\n type: z.literal(\"child_paused\"),\n childSessionId: z.string().uuid(),\n operationId: z.string().uuid(),\n actorKind: z.enum([\"human\", \"api\", \"agent\"]),\n reason: boundedUtf8String(CHILD_PAUSED_REASON_MAX_BYTES).nullable(),\n })\n .passthrough();\nexport type ChildPausedPayload = z.infer<typeof ChildPausedPayload>;\n\nexport const ChildWaitingCapacityPayload = z\n .object({\n type: z.literal(\"child_waiting_capacity\"),\n childSessionId: z.string().uuid(),\n childTurnId: z.string().uuid(),\n provider: z.enum([\"codex\", \"xai\"]),\n nextCheckAt: z.string().nullable(),\n })\n .passthrough();\nexport type ChildWaitingCapacityPayload = z.infer<typeof ChildWaitingCapacityPayload>;\n\nexport const ChildProgressPayload = z\n .object({\n type: z.literal(\"child_progress\"),\n childSessionId: z.string().uuid(),\n goalId: z.string().uuid(),\n objectiveRevision: z.number().int().nonnegative(),\n operationId: z.string().uuid(),\n progressNote: boundedUtf8String(CHILD_PROGRESS_NOTE_MAX_BYTES),\n })\n .passthrough();\nexport type ChildProgressPayload = z.infer<typeof ChildProgressPayload>;\n\nexport const SessionSystemUpdatePayload = z.discriminatedUnion(\"type\", [\n z\n .object({\n type: z.literal(\"scheduled_occurrence\"),\n text: z.string().min(1),\n scheduledTaskId: z.string().uuid(),\n scheduledTaskRunId: z.string().uuid(),\n resources: z.array(ResourceRef).optional(),\n tools: z.array(ToolRef).optional(),\n })\n .passthrough(),\n z\n .object({\n type: z.literal(\"goal_continuation\"),\n goalId: z.string().uuid(),\n goalVersion: z.number().int().positive(),\n prompt: z.string().min(1),\n reason: z.string().optional(),\n })\n .passthrough(),\n z\n .object({\n type: z.literal(\"agent_message\"),\n text: z.string().min(1),\n operationId: z.string().uuid(),\n })\n .passthrough(),\n z\n .object({\n type: z.literal(\"agent_steer_instruction\"),\n instruction: z.string().min(1),\n operationId: z.string().uuid(),\n })\n .passthrough(),\n z\n .object({\n type: z.literal(\"session_wait_timeout\"),\n waitTurnId: z.string().uuid(),\n deadlineAt: z.string().datetime({ offset: true }),\n reason: boundedUtf8String(2 * 1024),\n })\n .passthrough(),\n z\n .object({\n type: z.literal(\"background_command_result\"),\n commandId: z.string().uuid(),\n state: z.enum([\"exited\", \"lost\"]),\n exitCode: z.number().int().nullable(),\n reason: boundedUtf8String(512),\n failure: z.lazy(() => SessionCommandFailure).optional(),\n outputLocator: z\n .object({\n eventType: z.literal(\"sandbox.command.output.delta\"),\n commandId: z.string().uuid(),\n })\n .strict(),\n })\n .passthrough(),\n z\n .object({\n type: z.literal(\"child_terminal_result\"),\n childSessionId: z.string().uuid(),\n status: z.enum([\"idle\", \"failed\", \"cancelled\"]),\n })\n .passthrough(),\n MediaGenerationResult,\n ChildRequiresActionPayload,\n ChildRequiresActionResolvedPayload,\n ChildPausedPayload,\n ChildWaitingCapacityPayload,\n ChildProgressPayload,\n]);\nexport type SessionSystemUpdatePayload = z.infer<typeof SessionSystemUpdatePayload>;\n\nexport const SessionSystemUpdateState = z.enum([\n \"pending\",\n \"delivered\",\n \"cancelled\",\n \"superseded\",\n \"failed\",\n]);\nexport type SessionSystemUpdateState = z.infer<typeof SessionSystemUpdateState>;\n\nexport const SessionSystemUpdate = z.object({\n id: z.string().uuid(),\n sessionId: z.string().uuid(),\n kind: SessionSystemUpdateKind,\n classification: SystemUpdateClassification,\n sourceId: z.string(),\n dedupeKey: z.string(),\n summary: z.string(),\n payload: SessionSystemUpdatePayload,\n lineage: z.record(z.string(), z.unknown()),\n state: SessionSystemUpdateState,\n deliveredTurnId: z.string().uuid().nullable(),\n /**\n * The exact durable model-memory row containing the coalesced batch that\n * delivered this update. Null until claim; every member of one batch shares\n * the same id.\n */\n deliveredHistoryItemId: z.string().uuid().nullable(),\n deliveredAt: z.string().nullable(),\n createdAt: z.string(),\n});\nexport type SessionSystemUpdate = z.infer<typeof SessionSystemUpdate>;\n\n/**\n * Bounded queue projection of a canonical pending machine input. Full payload,\n * lineage, and dedupe data remain in canonical storage and never inflate the\n * hot queue response.\n */\nexport const SessionPendingInputPreview = SessionSystemUpdate.pick({\n id: true,\n sessionId: true,\n kind: true,\n classification: true,\n sourceId: true,\n summary: true,\n createdAt: true,\n});\nexport type SessionPendingInputPreview = z.infer<typeof SessionPendingInputPreview>;\n\nexport const SessionQueueSnapshot = z.object({\n version: z.number().int().nonnegative(),\n effectiveControl: EffectiveSessionControl,\n /** Secret-safe personal MCP summaries frozen on the exact active turn. */\n activePersonalConnections: z.array(McpPersonalConnectionSummary).default([]),\n /**\n * True while the latest attempt is interrupted but has not durably proved\n * quiescence: no more inference, user-visible output, or workspace-persistence\n * authority. Temporal cancellation/terminalization is not that proof. This is\n * distinct from ordinary capacity queueing, remains accurate with an empty\n * visible queue, and is independent of Steer-row metadata or withdrawal.\n */\n stoppingPreviousAttempt: z.boolean(),\n items: z.array(SessionTurn),\n /** Canonical bounded previews; never reconstructed from session events. */\n pendingInputs: z.array(SessionPendingInputPreview),\n /**\n * Exact members of the next bounded machine-input batch that will join an\n * already-waiting human/API prompt. Null means the next machine-input claim\n * is standalone. This is a projection of canonical rows, not queue state.\n */\n pendingInputAttachment: z\n .object({\n turnId: z.string().uuid(),\n inputIds: z.array(z.string().uuid()).min(1),\n })\n .nullable(),\n});\nexport type SessionQueueSnapshot = z.infer<typeof SessionQueueSnapshot>;\n\n/**\n * Deterministic, protocol-safe model representation of one claimed machine\n * input batch. This exact string is persisted before inference and replayed on\n * every later turn; callers must not synthesize an equivalent transient copy.\n */\nexport function renderSessionSystemUpdateBatch(\n updates: ReadonlyArray<\n Pick<\n SessionSystemUpdate,\n \"id\" | \"kind\" | \"classification\" | \"sourceId\" | \"summary\" | \"payload\" | \"lineage\"\n >\n >,\n): string {\n if (updates.length === 0) {\n throw new TypeError(\"A durable machine-input batch requires at least one update\");\n }\n return [\n \"[OpenGeni internal updates]\",\n \"These platform updates were delivered together for this inference.\",\n JSON.stringify({\n updates: updates.map((update) => ({\n id: update.id,\n kind: update.kind,\n classification: update.classification,\n sourceId: update.sourceId,\n summary: update.summary,\n payload: update.payload,\n lineage: update.lineage,\n })),\n }),\n ].join(\"\\n\");\n}\n\nexport const SCHEDULED_OCCURRENCE_TASK_LABEL = \"[OpenGeni scheduled task occurrence]\" as const;\n\n/**\n * A pure scheduled-occurrence batch is a new task boundary for the model, not\n * merely background context. The user role here is conversational only: the\n * owning turn retains its immutable scheduler/service initiator and frozen\n * execution authority in the database.\n *\n * Malformed or mixed legacy batches fall back to the generic system envelope\n * so this renderer never invents task identity from inconsistent payloads.\n */\nfunction renderScheduledOccurrenceTaskBatch(\n updates: Parameters<typeof renderSessionSystemUpdateBatch>[0],\n): string | null {\n if (updates.length === 0 || updates.some((update) => update.kind !== \"scheduled_occurrence\")) {\n return null;\n }\n const occurrences = updates.map((update) => {\n const parsed = SessionSystemUpdatePayload.safeParse(update.payload);\n if (\n !parsed.success ||\n parsed.data.type !== \"scheduled_occurrence\" ||\n parsed.data.scheduledTaskRunId !== update.sourceId\n ) {\n return null;\n }\n return { update, payload: parsed.data };\n });\n if (occurrences.some((occurrence) => occurrence === null)) return null;\n\n const introduction =\n occurrences.length === 1\n ? \"A new scheduled occurrence has started. Execute the instructions below for this occurrence now.\"\n : `${occurrences.length} new scheduled occurrences have started. Execute every instruction set below for this turn now.`;\n return [\n SCHEDULED_OCCURRENCE_TASK_LABEL,\n introduction,\n \"The scheduled instructions below are the task for this turn. Earlier completed goals, occurrences, conversation, and tool outputs are historical context and do not complete this occurrence. When the task depends on mutable external state, query that state during this occurrence instead of reusing an earlier result.\",\n ...occurrences.flatMap((occurrence, index) => {\n if (!occurrence) return [];\n return [\n \"\",\n ...(occurrences.length > 1 ? [`Occurrence ${index + 1}:`] : []),\n `Scheduled task ID: ${occurrence.payload.scheduledTaskId}`,\n `Scheduled task run ID: ${occurrence.payload.scheduledTaskRunId}`,\n `Update ID: ${occurrence.update.id}`,\n \"Instructions:\",\n occurrence.payload.text,\n ];\n }),\n ].join(\"\\n\");\n}\n\nexport function sessionSystemUpdateBatchHistoryItem(\n updates: Parameters<typeof renderSessionSystemUpdateBatch>[0],\n goalSnapshot?: SessionGoalSnapshot,\n options: { promoteScheduledOccurrenceToUser?: boolean } = {},\n): { type: \"message\"; role: \"system\" | \"user\"; content: string } {\n const goalContext = renderSessionGoalContext(goalSnapshot);\n const scheduledTask = options.promoteScheduledOccurrenceToUser\n ? renderScheduledOccurrenceTaskBatch(updates)\n : null;\n return {\n type: \"message\",\n role: scheduledTask ? \"user\" : \"system\",\n content: [\n ...(goalContext ? [`${SESSION_GOAL_CONTEXT_LABEL}\\n${goalContext}`] : []),\n scheduledTask ?? renderSessionSystemUpdateBatch(updates),\n ].join(\"\\n\\n\"),\n };\n}\n\nexport const VariableSetVariableName = z\n .string()\n .regex(/^[A-Z][A-Z0-9_]*$/)\n .max(128);\nexport type VariableSetVariableName = z.infer<typeof VariableSetVariableName>;\n\nexport const VARIABLE_SET_RESERVED_EXACT_NAMES = [\n \"HOME\",\n \"PATH\",\n \"SHELL\",\n \"USER\",\n \"LOGNAME\",\n \"TMPDIR\",\n \"IFS\",\n \"ENV\",\n \"BASH_ENV\",\n \"NODE_OPTIONS\",\n \"PYTHONPATH\",\n \"PYTHONSTARTUP\",\n \"PERL5OPT\",\n \"PERL5LIB\",\n \"GH_TOKEN\",\n \"GITHUB_TOKEN\",\n \"GITLAB_TOKEN\",\n \"AZURE_DEVOPS_EXT_PAT\",\n \"GIT_ASKPASS\",\n \"GIT_TERMINAL_PROMPT\",\n] as const;\n\nexport const VARIABLE_SET_RESERVED_PREFIXES = [\n \"OPENGENI_\",\n \"GIT_CONFIG_\",\n \"GIT_AUTHOR_\",\n \"GIT_COMMITTER_\",\n \"LD_\",\n \"DYLD_\",\n] as const;\n\nexport function variableSetVariableNameReservation(\n name: string,\n): { kind: \"exact\" | \"prefix\"; value: string } | null {\n if ((VARIABLE_SET_RESERVED_EXACT_NAMES as readonly string[]).includes(name)) {\n return { kind: \"exact\", value: name };\n }\n const prefix = VARIABLE_SET_RESERVED_PREFIXES.find((candidate) => name.startsWith(candidate));\n return prefix ? { kind: \"prefix\", value: prefix } : null;\n}\n\nfunction withVariableSetIdAlias<T extends z.ZodRawShape>(\n shape: T,\n options: { rejectKeys?: readonly string[] } = {},\n) {\n return z.preprocess(\n (input) => {\n if (!input || typeof input !== \"object\" || Array.isArray(input)) {\n return input;\n }\n const record = input as Record<string, unknown>;\n if (options.rejectKeys?.some((key) => Object.hasOwn(record, key))) return null;\n const aliased =\n record.variableSetId !== undefined || record.environmentId === undefined\n ? record\n : { ...record, variableSetId: record.environmentId };\n if (aliased.variableSetIds === undefined && aliased.variableSetId !== undefined) {\n return {\n ...aliased,\n variableSetIds: aliased.variableSetId === null ? [] : [aliased.variableSetId],\n };\n }\n return aliased;\n },\n z.object(shape).superRefine((value, context) => {\n const record = value as Record<string, unknown>;\n if (!Array.isArray(record.variableSetIds)) return;\n if (new Set(record.variableSetIds).size !== record.variableSetIds.length) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"variableSetIds\"],\n message: \"variableSetIds must not contain duplicates\",\n });\n }\n if (record.variableSetId === undefined) return;\n const expected =\n record.variableSetIds.length > 0\n ? record.variableSetIds[record.variableSetIds.length - 1]\n : null;\n if (record.variableSetId !== expected) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"variableSetId\"],\n message: \"variableSetId must match the last variableSetIds entry\",\n });\n }\n }),\n );\n}\n\n// Generic variable-set reads remain metadata-only. Exact plaintext has one\n// dedicated response schema so callers cannot accidentally widen another\n// workspace/session response with secret material.\nexport const VariableSetVariableMetadata = z.object({\n name: VariableSetVariableName,\n version: z.number().int().positive(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type VariableSetVariableMetadata = z.infer<typeof VariableSetVariableMetadata>;\n/** @deprecated use VariableSetVariableMetadata */\nexport const WorkspaceEnvironmentVariableMetadata = VariableSetVariableMetadata;\n/** @deprecated use VariableSetVariableMetadata */\nexport type WorkspaceEnvironmentVariableMetadata = VariableSetVariableMetadata;\n\nexport const VariableSetSecret = z.object({\n variableSetId: z.string().uuid(),\n name: VariableSetVariableName,\n version: z.number().int().positive(),\n value: z.string(),\n});\nexport type VariableSetSecret = z.infer<typeof VariableSetSecret>;\n\nexport const VariableSetScope = z.enum([\"organization\", \"workspace\", \"user\"]);\nexport type VariableSetScope = z.infer<typeof VariableSetScope>;\n\n/**\n * Exact-ID metadata used only to validate attachments. This deliberately omits\n * names, descriptions, and variable-name metadata so attach/use authority does\n * not become general catalog access.\n */\nexport const VariableSetAttachmentMetadata = z.object({\n id: z.string().uuid(),\n scope: VariableSetScope,\n});\nexport type VariableSetAttachmentMetadata = z.infer<typeof VariableSetAttachmentMetadata>;\n\nexport const MAX_RESOLVED_VARIABLE_SET_ATTACHMENTS = MAX_SELECTED_VARIABLE_SETS * 2;\nexport const ResolveVariableSetAttachmentsRequest = z\n .object({\n // One create can carry 25 explicit selections plus 25 defaults from its Rig.\n variableSetIds: z.array(z.string().uuid()).max(MAX_RESOLVED_VARIABLE_SET_ATTACHMENTS),\n })\n .strict()\n .superRefine((value, context) => {\n if (new Set(value.variableSetIds).size !== value.variableSetIds.length) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"variableSetIds\"],\n message: \"variableSetIds must not contain duplicates\",\n });\n }\n });\nexport type ResolveVariableSetAttachmentsRequest = z.infer<\n typeof ResolveVariableSetAttachmentsRequest\n>;\n\nexport const ResolveVariableSetAttachmentsResponse = z.object({\n variableSets: z.array(VariableSetAttachmentMetadata),\n});\nexport type ResolveVariableSetAttachmentsResponse = z.infer<\n typeof ResolveVariableSetAttachmentsResponse\n>;\n\nexport const VariableSet = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n scope: VariableSetScope,\n generation: z.number().int().positive(),\n status: z.enum([\"active\", \"revoked\"]),\n name: z.string(),\n description: z.string().nullable(),\n variables: z.array(VariableSetVariableMetadata),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type VariableSet = z.infer<typeof VariableSet>;\n/** @deprecated use VariableSet */\nexport const WorkspaceEnvironment = VariableSet;\n/** @deprecated use VariableSet */\nexport type WorkspaceEnvironment = VariableSet;\n\nexport const CreateVariableSetRequest = z.object({\n // Omitted remains the legacy workspace-owned creation path.\n scope: VariableSetScope.default(\"workspace\"),\n name: z.string().min(1).max(120),\n description: z.string().max(2000).optional(),\n variables: z\n .array(\n z.object({\n name: VariableSetVariableName,\n value: z.string().min(1).max(32768),\n }),\n )\n .default([]),\n});\nexport type CreateVariableSetRequest = z.infer<typeof CreateVariableSetRequest>;\n/** @deprecated use CreateVariableSetRequest */\nexport const CreateWorkspaceEnvironmentRequest = CreateVariableSetRequest;\n/** @deprecated use CreateVariableSetRequest */\nexport type CreateWorkspaceEnvironmentRequest = CreateVariableSetRequest;\n\nexport const UpdateVariableSetRequest = z.object({\n name: z.string().min(1).max(120).optional(),\n description: z.string().max(2000).nullable().optional(),\n});\nexport type UpdateVariableSetRequest = z.infer<typeof UpdateVariableSetRequest>;\n/** @deprecated use UpdateVariableSetRequest */\nexport const UpdateWorkspaceEnvironmentRequest = UpdateVariableSetRequest;\n/** @deprecated use UpdateVariableSetRequest */\nexport type UpdateWorkspaceEnvironmentRequest = UpdateVariableSetRequest;\n\nexport const SetVariableSetVariableRequest = z.object({\n value: z.string().min(1).max(32768),\n});\nexport type SetVariableSetVariableRequest = z.infer<typeof SetVariableSetVariableRequest>;\n/** @deprecated use SetVariableSetVariableRequest */\nexport const SetWorkspaceEnvironmentVariableRequest = SetVariableSetVariableRequest;\n/** @deprecated use SetVariableSetVariableRequest */\nexport type SetWorkspaceEnvironmentVariableRequest = SetVariableSetVariableRequest;\n\n// --- Rigs ---------------------------------------------------------------------\n// Workspace-scoped, versioned sandbox machine definitions. A rig is the named\n// truth; each sandbox is a disposable fork of a rig version. Versions are\n// append-only and content-immutable; exactly one is active per rig.\n\n// A self-declared health check: a name + the shell command that must exit 0.\nexport const RigCheck = z.object({\n name: z.string().min(1).max(120),\n command: z.string().min(1).max(8192),\n});\nexport type RigCheck = z.infer<typeof RigCheck>;\n\nexport const RigProviderImageBuildStatus = z.enum([\"building\", \"ready\", \"failed\", \"unsupported\"]);\nexport type RigProviderImageBuildStatus = z.infer<typeof RigProviderImageBuildStatus>;\n\nexport const RigProviderImage = z\n .object({\n backend: SandboxBackend,\n provider: z.string().min(1).max(64),\n status: RigProviderImageBuildStatus,\n // Exact immutable rig-definition/setup identity used to reject stale image\n // reuse when a version or its effective base image changes.\n contentHash: z.string().regex(/^sha256:[0-9a-f]{64}$/u),\n setupHash: z.string().regex(/^sha256:[0-9a-f]{64}$/u),\n sourceImage: z.string().max(2048).nullable(),\n buildRequestId: z.string().uuid(),\n imageId: z.string().min(1).max(512).nullable(),\n imageDigest: z.string().min(1).max(512).nullable(),\n artifactId: z.string().uuid().nullable(),\n providerBindingKeyHash: z\n .string()\n .regex(/^sha256:[0-9a-f]{64}$/u)\n .nullable(),\n // Added after provider-image v1 shipped. Absence is retained for rolling\n // compatibility but means runtime must use logical-image + setup fallback\n // until an explicit verification cold-boots this exact image.\n coldBootValidation: z\n .object({\n version: z.literal(1),\n checkedAt: z.string().datetime(),\n })\n .optional(),\n provenance: z.object({\n kind: z.literal(\"rig_verification\"),\n targetKind: z.enum([\"change\", \"version\"]),\n targetId: z.string().uuid(),\n }),\n startedAt: z.string().datetime(),\n finishedAt: z.string().datetime().nullable(),\n error: z\n .object({\n code: z.string().min(1).max(120),\n message: z.string().min(1).max(2000),\n retryable: z.boolean(),\n })\n .nullable(),\n })\n .superRefine((value, ctx) => {\n if (value.status === \"ready\" && !value.imageId && !value.imageDigest) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"imageId\"],\n message: \"ready provider images require an immutable image id or digest\",\n });\n }\n if (\n value.status === \"ready\" &&\n value.backend === \"modal\" &&\n (value.artifactId === null || value.providerBindingKeyHash === null)\n ) {\n ctx.addIssue({\n code: \"custom\",\n path: [value.artifactId === null ? \"artifactId\" : \"providerBindingKeyHash\"],\n message: \"ready Modal provider images require durable artifact ownership and binding\",\n });\n }\n if (value.status !== \"ready\" && value.artifactId !== null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"artifactId\"],\n message: \"only ready provider images may retain a durable artifact\",\n });\n }\n if (value.status === \"building\") {\n if (value.finishedAt !== null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"finishedAt\"],\n message: \"building provider images cannot be finished\",\n });\n }\n if (value.error !== null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"error\"],\n message: \"building provider images cannot have a terminal error\",\n });\n }\n } else if (value.finishedAt === null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"finishedAt\"],\n message: \"terminal provider images require a finish timestamp\",\n });\n }\n if ((value.status === \"failed\" || value.status === \"unsupported\") && value.error === null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"error\"],\n message: `${value.status} provider images require failure truth`,\n });\n }\n if (value.status === \"ready\" && value.error !== null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"error\"],\n message: \"ready provider images cannot retain an error\",\n });\n }\n if (value.status !== \"ready\" && value.coldBootValidation !== undefined) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"coldBootValidation\"],\n message: \"only ready provider images may retain cold-boot validation\",\n });\n }\n });\nexport type RigProviderImage = z.infer<typeof RigProviderImage>;\n\nexport const RigProviderImages = z.partialRecord(SandboxBackend, RigProviderImage);\nexport type RigProviderImages = z.infer<typeof RigProviderImages>;\n\nexport const RigVersion = z.object({\n id: z.string().uuid(),\n rigId: z.string().uuid(),\n version: z.number().int().positive(),\n image: z.string().nullable(),\n setupScript: z.string().nullable(),\n checks: z.array(RigCheck),\n credentialHooks: z.array(z.string()),\n defaultVariableSetIds: z.array(z.string().uuid()),\n changelog: z.string().nullable(),\n // Operational build metadata is version-bound but not part of the immutable\n // rig definition. Each backend records its own truthful build state.\n providerImages: RigProviderImages.default({}),\n // Attribution: 'user:<subject>' | 'session:<id>' | 'system'.\n createdBy: z.string().nullable(),\n active: z.boolean(),\n createdAt: z.string(),\n});\nexport type RigVersion = z.infer<typeof RigVersion>;\n\nexport const RigVerificationHealth = z.object({\n checkHealth: z.enum([\"passing\", \"failing\", \"unknown\"]),\n lastVerifiedAt: z.string().nullable(),\n});\nexport type RigVerificationHealth = z.infer<typeof RigVerificationHealth>;\n\nexport const Rig = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n scope: ResourceAuthorityScope,\n generation: z.number().int().positive(),\n status: z.enum([\"active\", \"revoked\"]),\n name: z.string(),\n description: z.string().nullable(),\n createdBy: z.string().nullable(),\n // The rig's currently-active version (present after create; nullable so a\n // partial/list read can omit it without a schema change).\n activeVersion: RigVersion.nullable(),\n // Summary for the currently active version. null only when there is no active\n // version; otherwise \"unknown\" means the active version has no verification.\n activeVersionHealth: RigVerificationHealth.nullable(),\n versionCount: z.number().int().nonnegative(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type Rig = z.infer<typeof Rig>;\n\nexport const RigChangeKind = z.enum([\"setup_append\", \"definition_edit\"]);\nexport type RigChangeKind = z.infer<typeof RigChangeKind>;\n\nexport const RigChangeStatus = z.enum([\"proposed\", \"verifying\", \"merged\", \"rejected\", \"failed\"]);\nexport type RigChangeStatus = z.infer<typeof RigChangeStatus>;\n\n// A single check's outcome inside a verification run (populated in M4).\nexport const RigCheckResult = z.object({\n name: z.string(),\n command: z.string(),\n exitCode: z.number().int().nullable(),\n output: z.string().optional(),\n});\nexport type RigCheckResult = z.infer<typeof RigCheckResult>;\n\n// The verification record a rig-CI run writes onto a change (M4). Open-ended\n// (passthrough) so M4 can enrich it without a contracts break.\nexport const RigChangeVerification = z\n .object({\n startedAt: z.string().optional(),\n finishedAt: z.string().optional(),\n log: z.string().optional(),\n platformCheckResults: z.array(RigCheckResult).optional(),\n checkResults: z.array(RigCheckResult).optional(),\n })\n .passthrough();\nexport type RigChangeVerification = z.infer<typeof RigChangeVerification>;\n\nexport const RigChange = z.object({\n id: z.string().uuid(),\n rigId: z.string().uuid(),\n baseVersionId: z.string().uuid().nullable(),\n kind: RigChangeKind,\n payload: z.record(z.string(), z.unknown()),\n status: RigChangeStatus,\n proposedBy: z.string().nullable(),\n verification: RigChangeVerification.nullable(),\n resultVersionId: z.string().uuid().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type RigChange = z.infer<typeof RigChange>;\n\n// Rig setup payloads are transferred to sandboxes in bounded chunks. Keep the\n// public definition limit independent from provider command-argument ceilings.\nexport const RIG_SETUP_SCRIPT_MAX_CHARS = 1024 * 1024;\n\nexport const CreateRigRequest = z.object({\n // Omitted remains the compatibility workspace-owned creation path.\n scope: ResourceAuthorityScope.default(\"workspace\"),\n name: z.string().min(1).max(120),\n description: z.string().max(2000).optional(),\n // Initial (version 1) content, inline.\n // Explicit Rig base images are temporarily disabled. Rigs always compose on\n // the deployment-owned platform sandbox image so Computer, Browser, Terminal,\n // and the stock runtime cannot be replaced by a user definition. Keep an\n // explicit never-field instead of silently stripping `image` from older\n // clients: callers must receive a validation error and remove the override.\n image: z.never().optional(),\n setupScript: z.string().max(RIG_SETUP_SCRIPT_MAX_CHARS).optional(),\n checks: z.array(RigCheck).max(100).default([]),\n credentialHooks: z.array(z.string().min(1).max(200)).max(50).default([]),\n defaultVariableSetIds: z.array(z.string().uuid()).max(25).default([]),\n});\nexport type CreateRigRequest = z.infer<typeof CreateRigRequest>;\n\nexport const UpdateRigRequest = z.object({\n name: z.string().min(1).max(120).optional(),\n description: z.string().max(2000).nullable().optional(),\n});\nexport type UpdateRigRequest = z.infer<typeof UpdateRigRequest>;\n\n// Workspace-shared channels organize root sessions (\"workstreams\") by work\n// type in the rail. Pure organizational metadata: filing a session into a\n// channel never affects execution, authority, memory, or history.\nexport const Channel = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n name: z.string(),\n description: z.string().nullable(),\n pinned: z.boolean(),\n sortOrder: z.number().int().nonnegative(),\n createdBy: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type Channel = z.infer<typeof Channel>;\n\nexport const CreateChannelRequest = z.object({\n name: z.string().trim().min(1).max(80),\n description: z.string().max(2000).optional(),\n});\nexport type CreateChannelRequest = z.infer<typeof CreateChannelRequest>;\n\nexport const UpdateChannelRequest = z.object({\n name: z.string().trim().min(1).max(80).optional(),\n description: z.string().max(2000).nullable().optional(),\n pinned: z.boolean().optional(),\n});\nexport type UpdateChannelRequest = z.infer<typeof UpdateChannelRequest>;\n\n/** Complete workspace project order. It is replaced atomically after a drag. */\nexport const ReorderChannelsRequest = z\n .object({ channelIds: z.array(z.string().uuid()).min(1).max(200) })\n .strict();\nexport type ReorderChannelsRequest = z.infer<typeof ReorderChannelsRequest>;\n\n// Re-files one session (rail organization only). null moves it back to the\n// unfiled inbox.\nexport const UpdateSessionChannelRequest = z.object({\n channelId: z.string().uuid().nullable(),\n});\nexport type UpdateSessionChannelRequest = z.infer<typeof UpdateSessionChannelRequest>;\n\n// setup_append: the exact command that already worked (+ an optional note).\nexport const RigSetupAppendPayload = z.object({\n command: z.string().min(1).max(8192),\n note: z.string().max(2000).optional(),\n});\nexport type RigSetupAppendPayload = z.infer<typeof RigSetupAppendPayload>;\n\n// definition_edit: the full next-version content (all fields optional; unset\n// fields inherit from the base version at promote time).\nexport const RigDefinitionEditPayload = z.object({\n // See CreateRigRequest.image. Historical RigVersion.image values remain on\n // the read model for compatibility, but no new definition may set or clear\n // one through the public write contract.\n image: z.never().optional(),\n setupScript: z.string().max(RIG_SETUP_SCRIPT_MAX_CHARS).nullish(),\n checks: z.array(RigCheck).max(100).optional(),\n credentialHooks: z.array(z.string().min(1).max(200)).max(50).optional(),\n defaultVariableSetIds: z.array(z.string().uuid()).max(25).optional(),\n changelog: z.string().max(4096).nullish(),\n});\nexport type RigDefinitionEditPayload = z.infer<typeof RigDefinitionEditPayload>;\n\nexport const ProposeRigChangeRequest = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"setup_append\"), payload: RigSetupAppendPayload }),\n z.object({\n kind: z.literal(\"definition_edit\"),\n payload: RigDefinitionEditPayload,\n }),\n]);\nexport type ProposeRigChangeRequest = z.infer<typeof ProposeRigChangeRequest>;\n\nexport const ScheduledTaskStatus = /* @__PURE__ */ z.enum([\"active\", \"paused\"]);\nexport type ScheduledTaskStatus = z.infer<typeof ScheduledTaskStatus>;\n\nexport const ScheduledTaskRunStatus = /* @__PURE__ */ z.enum([\n \"queued\",\n \"dispatched\",\n \"succeeded\",\n \"skipped\",\n \"failed\",\n]);\nexport type ScheduledTaskRunStatus = z.infer<typeof ScheduledTaskRunStatus>;\n\nexport const ScheduledTaskRunMode = /* @__PURE__ */ z.enum([\n \"new_session_per_run\",\n \"reusable_session\",\n \"existing_session\",\n]);\nexport type ScheduledTaskRunMode = z.infer<typeof ScheduledTaskRunMode>;\n\nexport const ScheduledTaskOverlapPolicy = /* @__PURE__ */ z.enum([\n \"allow_concurrent\",\n \"skip\",\n \"buffer_one\",\n]);\nexport type ScheduledTaskOverlapPolicy = z.infer<typeof ScheduledTaskOverlapPolicy>;\n\nexport const ScheduledTaskTriggerType = /* @__PURE__ */ z.enum([\n \"scheduled\",\n \"manual\",\n \"initial\",\n \"provider_event\",\n \"retry\",\n \"repair\",\n]);\nexport type ScheduledTaskTriggerType = z.infer<typeof ScheduledTaskTriggerType>;\n\nexport const ScheduledTaskActionKind = /* @__PURE__ */ z.enum([\n \"agent_turn\",\n \"knowledge_source_sync\",\n]);\nexport type ScheduledTaskActionKind = z.infer<typeof ScheduledTaskActionKind>;\n\nconst KnowledgeSourceSyncPositiveInteger = z.number().int().positive();\nconst KnowledgeSourceSyncNonnegativeInteger = z.number().int().nonnegative();\nconst KnowledgeSourceSyncZeroInteger = KnowledgeSourceSyncNonnegativeInteger.default(0);\nconst KnowledgeSourceSyncUuid = z.string().uuid();\nconst KnowledgeSourceSyncSubject = z.string().min(1).max(1024);\nconst KnowledgeSourceSyncEnabled = z.boolean().default(true);\nconst KnowledgeSourceSyncDisabled = z.boolean().default(false);\n\nexport const KnowledgeSourceSyncLimits = /* @__PURE__ */ z.object({\n maxItems: KnowledgeSourceSyncPositiveInteger.max(10_000).default(500),\n maxBytes: KnowledgeSourceSyncPositiveInteger.max(5_000_000_000).default(500_000_000),\n maxFileBytes: KnowledgeSourceSyncPositiveInteger.max(5_000_000_000).default(100_000_000),\n maxProviderRequests: KnowledgeSourceSyncPositiveInteger.max(10_000).default(1_000),\n maxElapsedSeconds: KnowledgeSourceSyncPositiveInteger.max(3_600).default(300),\n maxConcurrency: KnowledgeSourceSyncPositiveInteger.max(32).default(4),\n maxFailureDetails: KnowledgeSourceSyncPositiveInteger.max(100).default(25),\n});\nexport type KnowledgeSourceSyncLimits = z.infer<typeof KnowledgeSourceSyncLimits>;\n\nexport const KnowledgeSourceSyncConnectionAuthority = /* @__PURE__ */ z.object({\n connectionId: KnowledgeSourceSyncUuid,\n connectionVersion: KnowledgeSourceSyncPositiveInteger,\n providerDomain: z.string().min(1).max(2048),\n kind: z.enum([\"oauth2\", \"api_key\", \"app_install\", \"delegated\"]),\n ownerSubjectId: KnowledgeSourceSyncSubject,\n});\nexport type KnowledgeSourceSyncConnectionAuthority = z.infer<\n typeof KnowledgeSourceSyncConnectionAuthority\n>;\n\nexport const KnowledgeSourceSyncAction = /* @__PURE__ */ z\n .object({\n kind: z.literal(\"knowledge_source_sync\"),\n sourceId: KnowledgeSourceSyncUuid,\n sourceGeneration: KnowledgeSourceSyncNonnegativeInteger,\n sourceLifecycleGeneration: KnowledgeSourceSyncPositiveInteger,\n sourceConfigGeneration: KnowledgeSourceSyncPositiveInteger,\n controlWorkspaceId: KnowledgeSourceSyncUuid,\n providerCoordinationKey: z.string().trim().min(1).max(1024),\n connection: KnowledgeSourceSyncConnectionAuthority,\n destination: ScopedKnowledgeScope,\n initiatingSubjectId: KnowledgeSourceSyncSubject,\n allDescendants: KnowledgeSourceSyncEnabled,\n limits: KnowledgeSourceSyncLimits.prefault({}),\n })\n .strict();\nexport type KnowledgeSourceSyncAction = z.infer<typeof KnowledgeSourceSyncAction>;\n\nexport const KnowledgeSourceSyncScheduleControl = /* @__PURE__ */ z\n .object({\n sourceEnabled: KnowledgeSourceSyncEnabled,\n connectionPaused: KnowledgeSourceSyncDisabled,\n })\n .strict();\nexport type KnowledgeSourceSyncScheduleControl = z.infer<typeof KnowledgeSourceSyncScheduleControl>;\n\nexport const ScheduledTaskAction = /* @__PURE__ */ z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"agent_turn\") }).strict(),\n KnowledgeSourceSyncAction,\n]);\nexport type ScheduledTaskAction = z.infer<typeof ScheduledTaskAction>;\n\nexport const ScheduledTaskScheduleSpec = /* @__PURE__ */ z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"manual\") }).strict(),\n z.object({\n type: z.literal(\"once\"),\n runAt: z.string().datetime({ offset: true }),\n timeZone: z.string().min(1).default(\"UTC\"),\n }),\n z.object({\n type: z.literal(\"interval\"),\n everySeconds: z.number().int().positive(),\n startAt: z.string().datetime({ offset: true }).optional(),\n endAt: z.string().datetime({ offset: true }).optional(),\n }),\n z.object({\n type: z.literal(\"calendar\"),\n timeZone: z.string().min(1).default(\"UTC\"),\n hour: z.number().int().min(0).max(23),\n minute: z.number().int().min(0).max(59),\n daysOfWeek: z\n .array(z.enum([\"SUNDAY\", \"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SATURDAY\"]))\n .min(1)\n .optional(),\n }),\n]);\nexport type ScheduledTaskScheduleSpec = z.infer<typeof ScheduledTaskScheduleSpec>;\n\nexport const IncidentTelemetryExecutionClass = z.literal(\"incident_telemetry\");\nexport type IncidentTelemetryExecutionClass = z.infer<typeof IncidentTelemetryExecutionClass>;\n\nconst IncidentTelemetryIdentifier = z.string().trim().min(1).max(200);\nconst IncidentTelemetryMetricName = z\n .string()\n .trim()\n .min(1)\n .max(200)\n .regex(/^[A-Za-z_:][A-Za-z0-9_:]*$/);\nconst IncidentTelemetryLabelName = z\n .string()\n .trim()\n .min(1)\n .max(200)\n .regex(/^[A-Za-z_][A-Za-z0-9_]*$/);\n\nexport const IncidentTelemetrySeriesMetadata = z\n .object({\n metric: IncidentTelemetryMetricName,\n labels: z.array(IncidentTelemetryLabelName).min(1).max(64),\n })\n .strict();\nexport type IncidentTelemetrySeriesMetadata = z.infer<typeof IncidentTelemetrySeriesMetadata>;\n\nexport const IncidentTelemetryDataRoute = z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"mcp\"),\n serverId: SessionMcpServerId,\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"first_party\"),\n tool: FirstPartyMcpToolName,\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"variable_set\"),\n variableSetName: z.string().trim().min(1).max(120),\n variableNames: z.array(VariableSetVariableName).min(1).max(100),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"rig_credential_hook\"),\n credentialHookId: IncidentTelemetryIdentifier,\n })\n .strict(),\n]);\nexport type IncidentTelemetryDataRoute = z.infer<typeof IncidentTelemetryDataRoute>;\n\nexport const IncidentTelemetryPreflight = z\n .object({\n // These are exact selected resource refs, not discovery hints. The core\n // validator requires every entry to already be present in agentConfig.\n requiredResources: z.array(ResourceRef).max(100).default([]),\n requiredMcpServerIds: z.array(SessionMcpServerId).max(64).default([]),\n requiredFirstPartyMcpTools: z.array(FirstPartyMcpToolName).max(100).default([]),\n requiredFirstPartyMcpPermissions: z.array(Permission).max(100).default([]),\n requiredRig: z\n .object({\n name: z.string().trim().min(1).max(120),\n credentialHookIds: z.array(IncidentTelemetryIdentifier).max(50).default([]),\n })\n .strict()\n .nullable()\n .default(null),\n // Names only. The dispatch preflight never reads or decrypts values.\n requiredVariableSetNames: z.array(z.string().trim().min(1).max(120)).max(25).default([]),\n requiredVariableNames: z.array(VariableSetVariableName).max(100).default([]),\n dataSource: z\n .object({\n kind: z.literal(\"prometheus\"),\n // Exposition endpoints such as /metrics are deliberately excluded.\n queryPath: z.enum([\"/api/v1/query\", \"/api/v1/query_range\"]),\n workspaceLabel: IncidentTelemetryLabelName,\n // Exact non-workspace labels whose values come from the validated\n // structured alert occurrence and bound every telemetry query.\n alertSelectorLabels: z.array(IncidentTelemetryLabelName).min(1).max(16),\n route: IncidentTelemetryDataRoute,\n requiredSeries: z.array(IncidentTelemetrySeriesMetadata).min(1).max(100),\n availableSeries: z.array(IncidentTelemetrySeriesMetadata).min(1).max(500),\n })\n .strict(),\n })\n .strict()\n .superRefine((value, context) => {\n for (const [index, label] of value.dataSource.alertSelectorLabels.entries()) {\n if (label === value.dataSource.workspaceLabel) {\n context.addIssue({\n code: \"custom\",\n path: [\"dataSource\", \"alertSelectorLabels\", index],\n message: \"alert selector labels must be non-workspace labels\",\n });\n }\n }\n for (const [index, series] of value.dataSource.requiredSeries.entries()) {\n if (!series.labels.includes(value.dataSource.workspaceLabel)) {\n context.addIssue({\n code: \"custom\",\n path: [\"dataSource\", \"requiredSeries\", index, \"labels\"],\n message: \"required incident series must include the workspace label\",\n });\n }\n for (const label of value.dataSource.alertSelectorLabels) {\n if (!series.labels.includes(label)) {\n context.addIssue({\n code: \"custom\",\n path: [\"dataSource\", \"requiredSeries\", index, \"labels\"],\n message: \"required incident series must include every alert selector label\",\n });\n }\n }\n }\n });\nexport type IncidentTelemetryPreflight = z.infer<typeof IncidentTelemetryPreflight>;\n\n/**\n * Canonical UTF-8 ingress limits for newly written scheduled execution truth.\n * They bound create/update requests and freshly accepted occurrence snapshots;\n * already-stored tasks are read back through the unbounded storage shape so a\n * legacy row can never become unreadable or undispatchable by a later cap.\n */\nexport const SCHEDULED_TASK_NAME_MAX_BYTES = 512;\nexport const SCHEDULED_TASK_PROMPT_MAX_BYTES = 64 * 1024;\nexport const SCHEDULED_TASK_METADATA_MAX_BYTES = 32 * 1024;\nexport const SCHEDULED_TASK_AGENT_CONFIG_MAX_BYTES = 128 * 1024;\nexport const SCHEDULED_TASK_ACCEPTED_EXECUTION_MAX_BYTES = 512 * 1024;\n/**\n * A scheduled occurrence is delivered as one durable internal update whose\n * payload (`scheduled_occurrence` text + resources + tools + ids) must fit the\n * canonical internal-update bound. Bounding it here at ingress means every\n * stored task that passed validation can also be delivered.\n */\nexport const SCHEDULED_TASK_OCCURRENCE_PAYLOAD_MAX_BYTES = 64 * 1024;\n/**\n * Ingress reserves headroom below that bound for what the worker adds to the\n * delivered payload (the first-party `opengeni` MCP tool ref and real ids), so\n * a request that passes validation can always be delivered.\n */\nexport const SCHEDULED_TASK_OCCURRENCE_PAYLOAD_INGRESS_HEADROOM_BYTES = 1024;\nexport const SCHEDULED_TASK_PRODUCER_KEY_MAX_BYTES = 512;\nexport const SCHEDULED_TASK_RESOURCE_MAX_COUNT = 100;\nexport const SCHEDULED_TASK_TOOL_MAX_COUNT = 128;\n\nconst scheduledTaskUtf8Encoder = new TextEncoder();\n\nfunction scheduledTaskUtf8Bytes(value: string): number {\n return scheduledTaskUtf8Encoder.encode(value).byteLength;\n}\n\nfunction scheduledTaskJsonUtf8Bytes(value: unknown): number {\n try {\n const encoded = JSON.stringify(value);\n return encoded === undefined ? Number.POSITIVE_INFINITY : scheduledTaskUtf8Bytes(encoded);\n } catch {\n return Number.POSITIVE_INFINITY;\n }\n}\n\n/**\n * UTF-8 size of the exact `scheduled_occurrence` internal-update payload the\n * worker delivers for one occurrence of this agent config (ids use fixed-width\n * placeholder UUIDs). Shared by ingress validation and worker admission.\n */\nexport function scheduledOccurrencePayloadUtf8Bytes(agentConfig: {\n prompt: string;\n resources?: readonly unknown[] | undefined;\n tools?: readonly unknown[] | undefined;\n}): number {\n const placeholder = \"00000000-0000-4000-8000-000000000000\";\n return scheduledTaskJsonUtf8Bytes({\n type: \"scheduled_occurrence\",\n text: agentConfig.prompt,\n scheduledTaskId: placeholder,\n scheduledTaskRunId: placeholder,\n ...(agentConfig.resources?.length ? { resources: agentConfig.resources } : {}),\n ...(agentConfig.tools?.length ? { tools: agentConfig.tools } : {}),\n });\n}\n\nfunction scheduledTaskBoundedJsonObject(maxBytes: number, label: string) {\n return z.record(z.string(), z.unknown()).superRefine((value, context) => {\n if (scheduledTaskJsonUtf8Bytes(value) > maxBytes) {\n context.addIssue({\n code: \"custom\",\n message: `${label} exceeds ${maxBytes} UTF-8 bytes`,\n });\n }\n });\n}\n\nfunction scheduledTaskBoundedString(maxBytes: number, label: string) {\n return z\n .string()\n .min(1)\n .superRefine((value, context) => {\n if (scheduledTaskUtf8Bytes(value) > maxBytes) {\n context.addIssue({\n code: \"custom\",\n message: `${label} exceeds ${maxBytes} UTF-8 bytes`,\n });\n }\n });\n}\n\n/** Ingress-bounded task name for create/update requests. */\nexport const ScheduledTaskNameInput =\n /* @__PURE__ */ scheduledTaskBoundedString(SCHEDULED_TASK_NAME_MAX_BYTES, \"scheduled task name\");\n/** Ingress-bounded task metadata for create/update requests. */\nexport const ScheduledTaskMetadataInput =\n /* @__PURE__ */ scheduledTaskBoundedJsonObject(\n SCHEDULED_TASK_METADATA_MAX_BYTES,\n \"scheduled task metadata\",\n );\n\nfunction scheduledTaskAgentConfigShape(bounded: boolean) {\n const machineTarget = z\n .object({\n targetSandboxId: z.string().uuid(),\n workingDir: bounded\n ? z.string().trim().min(1).max(4096).optional()\n : z.string().min(1).optional(),\n })\n .strict();\n return {\n bundledSkillIds: BundledSkillSelection.optional(),\n prompt: bounded\n ? scheduledTaskBoundedString(SCHEDULED_TASK_PROMPT_MAX_BYTES, \"scheduled task prompt\")\n : z.string().min(1),\n resources: bounded\n ? z.array(ResourceRef).max(SCHEDULED_TASK_RESOURCE_MAX_COUNT).default([])\n : z.array(ResourceRef).default([]),\n tools: bounded\n ? z\n .array(ToolRef)\n .max(SCHEDULED_TASK_TOOL_MAX_COUNT - 1)\n .default([])\n : z.array(ToolRef).default([]),\n metadata: bounded\n ? ScheduledTaskMetadataInput.default({})\n : z.record(z.string(), z.unknown()).default({}),\n // Explicit workspace-shared OpenGeni Slack bot binding for scheduled runs.\n // The worker copies this non-secret pointer into session metadata; the\n // first-party Slack tools never fall back to a personal hosted-MCP grant.\n slackBotConnectionId: z.string().uuid().optional(),\n model: bounded\n ? scheduledTaskBoundedString(512, \"scheduled task model\").optional()\n : z.string().min(1).optional(),\n reasoningEffort: ReasoningEffort.optional(),\n sandboxBackend: SandboxBackend.optional(),\n // Connected Machines are a concrete execution target, not a generic\n // sandbox backend. Persist the exact machine + optional cwd so every\n // generated session can seed its active route before its first turn.\n machineTarget: machineTarget.optional(),\n goal: GoalSpec.optional(),\n // Incident telemetry is the only special execution class. Omission keeps\n // every existing task on the byte-compatible ordinary dispatch path.\n executionClass: IncidentTelemetryExecutionClass.optional(),\n incidentTelemetryPreflight: IncidentTelemetryPreflight.optional(),\n // Durable task override. Scheduled dispatch is trusted to preserve this\n // snapshot even if the workspace/deployment policy narrows later.\n maxNestedAgentDepth: NestedAgentDepthValue.optional(),\n };\n}\n\nfunction refineScheduledTaskAgentConfig(\n value: { executionClass?: unknown; incidentTelemetryPreflight?: unknown },\n context: z.RefinementCtx,\n): void {\n if (value.executionClass === \"incident_telemetry\" && !value.incidentTelemetryPreflight) {\n context.addIssue({\n code: \"custom\",\n path: [\"incidentTelemetryPreflight\"],\n message: \"incident telemetry tasks require incidentTelemetryPreflight\",\n });\n }\n if (value.executionClass !== \"incident_telemetry\" && value.incidentTelemetryPreflight) {\n context.addIssue({\n code: \"custom\",\n path: [\"executionClass\"],\n message: \"incidentTelemetryPreflight requires executionClass=incident_telemetry\",\n });\n }\n}\n\n/** Storage/projection shape. Deliberately unbounded so stored rows always parse. */\nexport const ScheduledTaskAgentConfig = /* @__PURE__ */ z\n .object(scheduledTaskAgentConfigShape(false))\n .superRefine(refineScheduledTaskAgentConfig);\nexport type ScheduledTaskAgentConfig = z.infer<typeof ScheduledTaskAgentConfig>;\n\n/** Ingress-bounded agent config for create/update requests. */\nexport const ScheduledTaskAgentConfigInput = /* @__PURE__ */ z\n .object(scheduledTaskAgentConfigShape(true))\n .superRefine((value, context) => {\n if (value.machineTarget && value.sandboxBackend !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"machineTarget\"],\n message: \"machineTarget cannot be combined with sandboxBackend\",\n });\n }\n if (value.sandboxBackend === \"selfhosted\") {\n context.addIssue({\n code: \"custom\",\n path: [\"sandboxBackend\"],\n message: \"selfhosted scheduled tasks require machineTarget\",\n });\n }\n if (scheduledTaskJsonUtf8Bytes(value) > SCHEDULED_TASK_AGENT_CONFIG_MAX_BYTES) {\n context.addIssue({\n code: \"custom\",\n message: `scheduled task agent config exceeds ${SCHEDULED_TASK_AGENT_CONFIG_MAX_BYTES} UTF-8 bytes`,\n });\n }\n if (\n scheduledOccurrencePayloadUtf8Bytes(value) >\n SCHEDULED_TASK_OCCURRENCE_PAYLOAD_MAX_BYTES -\n SCHEDULED_TASK_OCCURRENCE_PAYLOAD_INGRESS_HEADROOM_BYTES\n ) {\n context.addIssue({\n code: \"custom\",\n message: `scheduled task prompt, resources, and tools exceed the ${SCHEDULED_TASK_OCCURRENCE_PAYLOAD_MAX_BYTES - SCHEDULED_TASK_OCCURRENCE_PAYLOAD_INGRESS_HEADROOM_BYTES} UTF-8 byte occurrence payload`,\n });\n }\n refineScheduledTaskAgentConfig(value, context);\n });\nexport type ScheduledTaskAgentConfigInput = z.infer<typeof ScheduledTaskAgentConfigInput>;\n\nexport const ScheduledTask = /* @__PURE__ */ z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n name: z.string(),\n status: ScheduledTaskStatus,\n schedule: ScheduledTaskScheduleSpec,\n temporalScheduleId: z.string(),\n runMode: ScheduledTaskRunMode,\n overlapPolicy: ScheduledTaskOverlapPolicy,\n action: ScheduledTaskAction.default({ kind: \"agent_turn\" }),\n agentConfig: ScheduledTaskAgentConfig,\n createdBy: TurnInitiator.default({\n kind: \"service\",\n subjectId: \"unattributed-legacy\",\n }),\n createdByContext: TurnInitiatorContext.default({}),\n personalConnections: z.array(McpPersonalConnectionSummary).default([]),\n authorityRevision: z.number().int().positive().default(1),\n executionDigest: z.string().regex(/^[0-9a-f]{64}$/u),\n reusableSessionId: z.string().uuid().nullable(),\n targetSessionId: z.string().uuid().nullable().default(null),\n variableSetId: z.string().uuid().nullable().default(null),\n /** @deprecated use variableSetId */\n environmentId: z.string().uuid().nullable().default(null),\n // The rig each run binds to (M3). Stored on the task; the ACTIVE version is\n // resolved PER FIRE (at dispatch), so a task always runs the rig's current\n // version rather than one frozen at task-create time. Null ⇒ rig-less runs.\n rigId: z.string().uuid().nullable().default(null),\n metadata: z.record(z.string(), z.unknown()),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type ScheduledTask = z.infer<typeof ScheduledTask>;\n\n/**\n * Complete credential-free execution truth accepted for one scheduled agent\n * occurrence. Retries consume this immutable snapshot instead of a mutable\n * scheduled-task head.\n */\nexport const ScheduledTaskRunAcceptedExecution = /* @__PURE__ */ z\n .object({\n version: z.literal(1),\n task: ScheduledTask,\n resolvedModel: z.string().min(1),\n resolvedReasoningEffort: ReasoningEffort,\n resolvedLatencyMode: LatencyMode,\n /** Secret-safe TurnExecutionPolicyV1 accepted with this occurrence. Kept\n * structurally open here because the canonical policy schema is declared\n * later in this package; consumers must parse it with TurnExecutionPolicyV1. */\n turnExecutionPolicy: z.unknown().optional(),\n resolvedSandboxBackend: SandboxBackend,\n resolvedSandboxOs: SandboxOs,\n resolvedTools: z.array(ToolRef).max(SCHEDULED_TASK_TOOL_MAX_COUNT),\n resolvedFirstPartyMcpTools: z.array(FirstPartyMcpToolName),\n resolvedFirstPartyMcpPermissions: z.array(Permission),\n resolvedVariableSet: z\n .object({\n id: z.string().uuid(),\n generation: z.number().int().positive(),\n })\n .strict()\n .nullable(),\n resolvedRig: z\n .object({\n id: z.string().uuid(),\n versionId: z.string().uuid(),\n defaultVariableSets: z\n .array(\n z\n .object({\n id: z.string().uuid(),\n generation: z.number().int().positive(),\n })\n .strict(),\n )\n .max(25),\n })\n .strict()\n .nullable(),\n resolvedSlackBotConnection: z\n .object({\n id: z.string().uuid(),\n version: z.number().int().positive(),\n verifiedInstallVersion: z.number().int().positive(),\n metadata: z\n .object({\n credentialRole: z.literal(\"opengeni_slack_bot\"),\n credentialLabel: z.literal(\"OpenGeni Slack bot\"),\n slackTeamId: z.string().min(1).max(64),\n slackTeamName: z.string().min(1).max(256),\n botUserId: z.string().min(1).max(64),\n botId: z.string().min(1).max(64),\n botDisplayName: z.enum([\"OpenGeni\", \"OpenGeni Staging\"]),\n verifiedAt: z.string().datetime({ offset: true }),\n })\n .passthrough(),\n })\n .strict()\n .nullable(),\n /**\n * The effective policy that an existing or already-materialized reusable\n * session will execute. Generated sessions carry null because their\n * accepted task policy is used to create the session itself.\n */\n targetSessionExecution: z\n .object({\n sessionId: z.string().uuid(),\n visibility: z.enum([\"user_private\", \"workspace_shared\"]),\n authorityEpoch: z.number().int().positive(),\n model: z.string().min(1),\n reasoningEffort: ReasoningEffort,\n latencyMode: LatencyMode,\n tools: z.array(ToolRef).max(SCHEDULED_TASK_TOOL_MAX_COUNT),\n sandboxBackend: SandboxBackend,\n sandboxOs: SandboxOs,\n firstPartyMcpTools: z.array(FirstPartyMcpToolName),\n firstPartyMcpPermissions: z.array(Permission).nullable(),\n toolPolicy: SessionToolPolicy,\n mcpServerIds: z.array(z.string().min(1).max(256)).max(SCHEDULED_TASK_TOOL_MAX_COUNT),\n effectiveMcpServerIds: z\n .array(z.string().min(1).max(256))\n .max(SCHEDULED_TASK_TOOL_MAX_COUNT),\n toolPolicyVersion: z.number().int().nonnegative(),\n variableSets: z\n .array(\n z\n .object({\n id: z.string().uuid(),\n generation: z.number().int().positive(),\n })\n .strict(),\n )\n .max(MAX_SELECTED_VARIABLE_SETS)\n .default([]),\n variableSetId: z.string().uuid().nullable(),\n variableSetGeneration: z.number().int().positive().nullable(),\n rigId: z.string().uuid().nullable(),\n rigVersionId: z.string().uuid().nullable(),\n rigDefaultVariableSets: z\n .array(\n z\n .object({\n id: z.string().uuid(),\n generation: z.number().int().positive(),\n })\n .strict(),\n )\n .max(25),\n maxNestedAgentDepthOverride: NestedAgentDepthValue.nullable(),\n effectiveMaxNestedAgentDepth: NestedAgentDepthValue,\n })\n .strict()\n .nullable(),\n generatedSessionBinding: z\n .object({\n createIdempotencyKey: z.string().min(1).max(512),\n effectiveMaxNestedAgentDepth: NestedAgentDepthValue,\n nestedAgentDepthPolicySource: NestedAgentDepthPolicySource,\n codexCompactionMode: CodexCompactionMode,\n })\n .strict()\n .nullable(),\n personalConnectionDelegations: McpPersonalConnectionDelegations,\n personalResourceAuthoritySubjectId: z.string().min(1).nullable(),\n /** One accepted human principal for every resource-bearing scheduled run. */\n causalHumanSubjectId: z.string().min(1).nullable().default(null),\n /** Exact revision-bound human membership proof; never inferred at execution. */\n causalHumanAuthority: z\n .object({\n subjectId: z.string().min(1),\n organizationMembershipId: z.string().uuid(),\n membershipAuthorizationRevision: z.number().int().positive(),\n })\n .strict()\n .nullable()\n .default(null),\n xaiProviderAccountAuthoritySnapshot: XaiProviderAccountAuthoritySnapshotV1,\n xaiAuthoritySubjectId: z.string().min(1).nullable(),\n connectionAuthoritySubjectId: z.string().min(1).nullable(),\n triggerInitiator: TurnInitiator,\n agentRunUsageIdempotencyKey: z.string().min(1).max(512).nullable(),\n incidentPreflightRequired: z.boolean(),\n alertOccurrenceLabels: z.record(z.string(), z.string()).nullable(),\n })\n .strict()\n .superRefine((value, context) => {\n if (scheduledTaskJsonUtf8Bytes(value) > SCHEDULED_TASK_ACCEPTED_EXECUTION_MAX_BYTES) {\n context.addIssue({\n code: \"custom\",\n message: `scheduled accepted execution exceeds ${SCHEDULED_TASK_ACCEPTED_EXECUTION_MAX_BYTES} UTF-8 bytes`,\n });\n }\n });\nexport type ScheduledTaskRunAcceptedExecution = z.infer<typeof ScheduledTaskRunAcceptedExecution>;\n\nexport const KnowledgeSourceSyncFailure = /* @__PURE__ */ z.object({\n externalObjectId: KnowledgeSourceSyncSubject,\n code: z.enum([\n \"authority_changed\",\n \"connection_reconnect_required\",\n \"provider_unavailable\",\n \"provider_rejected\",\n \"provider_payload_invalid\",\n \"content_unsupported\",\n \"content_too_large\",\n \"resource_limit\",\n \"item_processing_failed\",\n \"indexing_failed\",\n \"internal_failure\",\n ]),\n retryable: z.boolean(),\n message: z.string().min(1).max(1000),\n});\nexport type KnowledgeSourceSyncFailure = z.infer<typeof KnowledgeSourceSyncFailure>;\n\nexport const KnowledgeSourceSyncRunSummary = /* @__PURE__ */ z.object({\n phase: z\n .enum([\"queued\", \"inventory\", \"transfer\", \"index\", \"checkpoint\", \"completed\", \"failed\"])\n .default(\"queued\"),\n scanned: KnowledgeSourceSyncZeroInteger,\n imported: KnowledgeSourceSyncZeroInteger,\n unchanged: KnowledgeSourceSyncZeroInteger,\n skipped: KnowledgeSourceSyncZeroInteger,\n failed: KnowledgeSourceSyncZeroInteger,\n bytes: KnowledgeSourceSyncZeroInteger,\n providerRequests: KnowledgeSourceSyncZeroInteger,\n elapsedMs: KnowledgeSourceSyncZeroInteger,\n indexed: KnowledgeSourceSyncZeroInteger,\n aclPending: KnowledgeSourceSyncZeroInteger,\n retryable: KnowledgeSourceSyncDisabled,\n limitReached: z\n .enum([\"items\", \"bytes\", \"file_bytes\", \"provider_requests\", \"elapsed_time\"])\n .nullable()\n .default(null),\n checkpointed: KnowledgeSourceSyncDisabled,\n reconnectRequired: KnowledgeSourceSyncDisabled,\n failures: z.array(KnowledgeSourceSyncFailure).max(100).default([]),\n});\nexport type KnowledgeSourceSyncRunSummary = z.infer<typeof KnowledgeSourceSyncRunSummary>;\n\nexport const ScheduledTaskRun = /* @__PURE__ */ z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n taskId: z.string().uuid(),\n taskAuthorityRevision: z.number().int().positive().nullable().default(null),\n taskExecutionDigest: z\n .string()\n .regex(/^[0-9a-f]{64}$/u)\n .nullable()\n .default(null),\n status: ScheduledTaskRunStatus,\n triggerType: ScheduledTaskTriggerType,\n scheduledAt: z.string().nullable(),\n firedAt: z.string(),\n sessionId: z.string().uuid().nullable(),\n triggerEventId: z.string().uuid().nullable(),\n actionKind: ScheduledTaskActionKind.default(\"agent_turn\"),\n knowledgeSyncRunId: KnowledgeSourceSyncUuid.nullable().default(null),\n knowledgeSummary: KnowledgeSourceSyncRunSummary.nullable().default(null),\n completedAt: z.string().nullable().default(null),\n error: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type ScheduledTaskRun = z.infer<typeof ScheduledTaskRun>;\n\nconst CreateAgentScheduledTaskRequest = /* @__PURE__ */ withVariableSetIdAlias({\n name: ScheduledTaskNameInput,\n schedule: ScheduledTaskScheduleSpec,\n action: z\n .object({ kind: z.literal(\"agent_turn\") })\n .strict()\n .default({ kind: \"agent_turn\" }),\n runMode: ScheduledTaskRunMode.default(\"new_session_per_run\"),\n overlapPolicy: ScheduledTaskOverlapPolicy.default(\"allow_concurrent\"),\n targetSessionId: z.string().uuid().nullable().optional(),\n connectionAuthorities: McpConnectionAuthoritySelections.default([]),\n selectedHostMcpDelegations: HostMcpCreateSelections.optional(),\n agentConfig: ScheduledTaskAgentConfigInput,\n status: ScheduledTaskStatus.default(\"active\"),\n variableSetId: z.string().uuid().nullable().optional(),\n environmentId: z.string().uuid().nullable().optional(),\n // The rig each run binds to (M3); its active version is resolved per fire.\n rigId: z.string().uuid().nullable().optional(),\n metadata: ScheduledTaskMetadataInput.default({}),\n}).superRefine((value, context) => {\n if (value.runMode === \"existing_session\" && !value.targetSessionId) {\n context.addIssue({\n code: \"custom\",\n path: [\"targetSessionId\"],\n message: \"targetSessionId is required when runMode=existing_session\",\n });\n }\n if (value.runMode !== \"existing_session\" && value.targetSessionId) {\n context.addIssue({\n code: \"custom\",\n path: [\"targetSessionId\"],\n message: \"targetSessionId requires runMode=existing_session\",\n });\n }\n if (value.runMode === \"existing_session\" && value.agentConfig.goal) {\n context.addIssue({\n code: \"custom\",\n path: [\"agentConfig\", \"goal\"],\n message: \"agentConfig.goal cannot be used with an existing-session target\",\n });\n }\n if (value.runMode === \"existing_session\" && value.agentConfig.machineTarget) {\n context.addIssue({\n code: \"custom\",\n path: [\"agentConfig\", \"machineTarget\"],\n message: \"machineTarget cannot be used with an existing-session target\",\n });\n }\n});\n\nconst CreateKnowledgeSourceSyncScheduledTaskRequest = /* @__PURE__ */ z\n .object({\n name: z.string().min(1),\n schedule: ScheduledTaskScheduleSpec,\n action: KnowledgeSourceSyncAction,\n overlapPolicy: z.enum([\"skip\", \"buffer_one\"]).default(\"buffer_one\"),\n status: ScheduledTaskStatus.default(\"active\"),\n metadata: z.record(z.string(), z.unknown()).default({}),\n })\n .strict()\n .transform((value) => ({\n ...value,\n runMode: \"new_session_per_run\" as const,\n targetSessionId: null,\n agentConfig: {\n prompt: \"Knowledge source synchronization\",\n resources: [],\n tools: [],\n metadata: {},\n },\n variableSetId: null,\n environmentId: null,\n rigId: null,\n connectionAuthorities: [],\n }));\n\nexport const CreateScheduledTaskRequest = /* @__PURE__ */ z.union([\n CreateKnowledgeSourceSyncScheduledTaskRequest,\n CreateAgentScheduledTaskRequest,\n]);\nexport type CreateScheduledTaskRequest = z.infer<typeof CreateScheduledTaskRequest>;\n\nexport const UpdateScheduledTaskRequest =\n /* @__PURE__ */ withVariableSetIdAlias({\n name: ScheduledTaskNameInput.optional(),\n schedule: ScheduledTaskScheduleSpec.optional(),\n runMode: ScheduledTaskRunMode.optional(),\n overlapPolicy: ScheduledTaskOverlapPolicy.optional(),\n action: ScheduledTaskAction.optional(),\n targetSessionId: z.string().uuid().nullable().optional(),\n connectionAuthorities: McpConnectionAuthoritySelections.optional(),\n selectedHostMcpDelegations: HostMcpCreateSelections.optional(),\n agentConfig: ScheduledTaskAgentConfigInput.optional(),\n status: ScheduledTaskStatus.optional(),\n variableSetId: z.string().uuid().nullable().optional(),\n environmentId: z.string().uuid().nullable().optional(),\n // The rig each run binds to (M3); null clears it. Its active version is\n // resolved per fire, so an update takes effect on the next dispatch.\n rigId: z.string().uuid().nullable().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n }).superRefine((value, context) => {\n if (value.targetSessionId && value.runMode && value.runMode !== \"existing_session\") {\n context.addIssue({\n code: \"custom\",\n path: [\"targetSessionId\"],\n message: \"targetSessionId requires runMode=existing_session\",\n });\n }\n if (value.runMode === \"existing_session\" && value.targetSessionId === null) {\n context.addIssue({\n code: \"custom\",\n path: [\"targetSessionId\"],\n message: \"targetSessionId cannot be null when runMode=existing_session\",\n });\n }\n if (\n value.agentConfig?.goal &&\n (value.runMode === \"existing_session\" || Boolean(value.targetSessionId))\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"agentConfig\", \"goal\"],\n message: \"agentConfig.goal cannot be used with an existing-session target\",\n });\n }\n if (\n value.agentConfig?.machineTarget &&\n (value.runMode === \"existing_session\" || Boolean(value.targetSessionId))\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"agentConfig\", \"machineTarget\"],\n message: \"machineTarget cannot be used with an existing-session target\",\n });\n }\n });\nexport type UpdateScheduledTaskRequest = z.infer<typeof UpdateScheduledTaskRequest>;\n\n/**\n * Manual-trigger body. `triggerId` is a client-supplied idempotency token: a\n * retried trigger that reuses the same token charges once and starts one run.\n * Omitting it makes each call a distinct trigger (the server mints a token).\n */\nexport const TriggerScheduledTaskRequest = z.object({\n triggerId: z.string().min(1).max(128).optional(),\n});\nexport type TriggerScheduledTaskRequest = z.infer<typeof TriggerScheduledTaskRequest>;\n\n// ============ Event-triggered automations ============\n\nexport const AUTOMATION_WEBHOOK_MAX_BYTES = 2 * 1024 * 1024;\nexport const AUTOMATION_EVENT_PAYLOAD_MAX_BYTES = 256 * 1024;\nexport const AUTOMATION_SESSION_TEMPLATE_MAX_BYTES = 512 * 1024;\nexport const AUTOMATION_MAX_MATCHED_TRIGGERS = 32;\n\nconst AutomationBoundedJson = z.record(z.string(), z.unknown()).superRefine((value, context) => {\n let bytes = Number.POSITIVE_INFINITY;\n try {\n bytes = new TextEncoder().encode(JSON.stringify(value)).byteLength;\n } catch {\n // The shared JSON/protocol boundary reports the exact runtime path later;\n // this public ingress still fails closed on an unserializable value.\n }\n if (bytes > AUTOMATION_EVENT_PAYLOAD_MAX_BYTES) {\n context.addIssue({\n code: \"custom\",\n message: `automation JSON exceeds ${AUTOMATION_EVENT_PAYLOAD_MAX_BYTES} UTF-8 bytes`,\n });\n }\n});\n\nexport const AutomationAdapterId = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9._/-]*[a-z0-9])?$/);\nexport type AutomationAdapterId = z.infer<typeof AutomationAdapterId>;\n\nexport const AutomationSourceStatus = z.enum([\"active\", \"disabled\"]);\nexport type AutomationSourceStatus = z.infer<typeof AutomationSourceStatus>;\n\nexport const AutomationTriggerStatus = z.enum([\"active\", \"paused\", \"disabled\"]);\nexport type AutomationTriggerStatus = z.infer<typeof AutomationTriggerStatus>;\n\nexport const AutomationRunStatus = z.enum([\n \"queued\",\n \"dispatching\",\n \"dispatched\",\n \"skipped\",\n \"failed\",\n]);\nexport type AutomationRunStatus = z.infer<typeof AutomationRunStatus>;\n\nexport const AutomationEventStatus = z.enum([\"accepted\", \"ignored\", \"failed\"]);\nexport type AutomationEventStatus = z.infer<typeof AutomationEventStatus>;\n\nexport const SignedJsonAutomationEnvelope = z\n .object({\n id: z.string().trim().min(1).max(1024).optional(),\n type: z.string().trim().min(1).max(256),\n occurrenceKey: z.string().trim().min(1).max(1024).optional(),\n occurredAt: z.string().datetime({ offset: true }).nullable().optional(),\n subject: z.string().trim().min(1).max(512).nullable().optional(),\n resource: z.string().trim().min(1).max(1024).nullable().optional(),\n data: z.record(z.string(), z.unknown()).default({}),\n })\n .strict();\nexport type SignedJsonAutomationEnvelope = z.infer<typeof SignedJsonAutomationEnvelope>;\n\nexport const AutomationSessionTemplate = /* @__PURE__ */ defineSkillContractSchema(() =>\n z\n .object({\n bundledSkillIds: BundledSkillSelection.optional(),\n prompt: z\n .string()\n .trim()\n .min(1)\n .max(64 * 1024),\n instructions: z\n .string()\n .trim()\n .min(1)\n .max(64 * 1024)\n .nullable()\n .default(null),\n resources: z.array(ResourceRef).max(100).default([]),\n // Resolve the shared contract after module initialization, rather than\n // maintaining a second, weaker Skill definition for scheduled dispatch.\n skills: z.lazy(() => SessionSkills).default([]),\n tools: z.array(ToolRef).max(128).default([]),\n firstPartyMcpTools: z.array(FirstPartyMcpToolName).max(128).default([]),\n firstPartyMcpPermissions: z.array(Permission).max(128).default([]),\n model: z.string().trim().min(1).max(512).nullable().default(null),\n reasoningEffort: ReasoningEffort.nullable().default(null),\n sandboxBackend: SandboxBackend.nullable().default(null),\n policyRole: z.string().trim().min(1).max(128).nullable().default(null),\n metadata: AutomationBoundedJson.default({}),\n })\n .strict()\n .superRefine((value, context) => {\n let bytes = Number.POSITIVE_INFINITY;\n try {\n bytes = new TextEncoder().encode(JSON.stringify(value)).byteLength;\n } catch {\n // Fail through the size issue below.\n }\n if (bytes > AUTOMATION_SESSION_TEMPLATE_MAX_BYTES) {\n context.addIssue({\n code: \"custom\",\n message: `automation session template exceeds ${AUTOMATION_SESSION_TEMPLATE_MAX_BYTES} UTF-8 bytes`,\n });\n }\n }),\n);\nexport type AutomationSessionTemplate = z.infer<typeof AutomationSessionTemplate>;\n\n/** Stored labels are projections, not assertions supplied by a new caller. */\nexport const StoredAutomationSessionTemplate = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.preprocess(projectStoredTemplateSkillMetadata, AutomationSessionTemplate),\n);\n\nexport const AutomationNormalizedEvent = z\n .object({\n adapterId: AutomationAdapterId,\n eventType: z.string().trim().min(1).max(256),\n occurrenceKey: z.string().trim().min(1).max(1024),\n occurredAt: z.string().datetime({ offset: true }).nullable().default(null),\n subject: z.string().trim().min(1).max(512).nullable().default(null),\n resource: z.string().trim().min(1).max(1024).nullable().default(null),\n payload: AutomationBoundedJson,\n })\n .strict();\nexport type AutomationNormalizedEvent = z.infer<typeof AutomationNormalizedEvent>;\n\nexport const AutomationAcceptedExecution = /* @__PURE__ */ defineSkillContractSchema(() =>\n z\n .object({\n version: z.literal(1),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sourceId: z.string().uuid(),\n sourceVersion: z.number().int().positive(),\n triggerId: z.string().uuid(),\n triggerRevision: z.number().int().positive(),\n eventId: z.string().uuid(),\n adapterId: AutomationAdapterId,\n occurrenceKey: z.string().min(1).max(1024),\n initialMessage: z\n .string()\n .min(1)\n .max(256 * 1024),\n sessionTemplate: AutomationSessionTemplate,\n serviceSubjectId: z.string().min(1).max(512),\n serviceLabel: z.string().min(1).max(200),\n provenance: AutomationBoundedJson,\n })\n .strict(),\n);\nexport type AutomationAcceptedExecution = z.infer<typeof AutomationAcceptedExecution>;\nexport const StoredAutomationAcceptedExecution = /* @__PURE__ */ defineSkillContractSchema(() =>\n AutomationAcceptedExecution.extend({\n sessionTemplate: StoredAutomationSessionTemplate,\n }),\n);\n\nexport const CreateAutomationSourceRequest = z\n .object({\n name: z.string().trim().min(1).max(200),\n adapterId: AutomationAdapterId.default(\"signed-json.v1\"),\n webhookSecret: z.string().min(16).max(65_536),\n configuration: AutomationBoundedJson.default({}),\n })\n .strict();\nexport type CreateAutomationSourceRequest = z.infer<typeof CreateAutomationSourceRequest>;\n\nexport const UpdateAutomationSourceRequest = z\n .object({\n name: z.string().trim().min(1).max(200).optional(),\n webhookSecret: z.string().min(16).max(65_536).optional(),\n configuration: AutomationBoundedJson.optional(),\n status: AutomationSourceStatus.optional(),\n })\n .strict()\n .refine((value) => Object.keys(value).length > 0, \"automation source update is empty\");\nexport type UpdateAutomationSourceRequest = z.infer<typeof UpdateAutomationSourceRequest>;\n\nexport const AutomationSource = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n name: z.string(),\n adapterId: AutomationAdapterId,\n configuration: z.record(z.string(), z.unknown()),\n status: AutomationSourceStatus,\n version: z.number().int().positive(),\n packInstallationId: z.string().uuid().nullable(),\n packConnectorId: z.string().min(1).max(128).nullable(),\n hasWebhookSecret: z.boolean(),\n webhookPath: z.string().min(1),\n createdBySubjectId: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type AutomationSource = z.infer<typeof AutomationSource>;\n\nexport const CreateAutomationTriggerRequest = /* @__PURE__ */ defineSkillContractSchema(() =>\n z\n .object({\n sourceId: z.string().uuid(),\n name: z.string().trim().min(1).max(200),\n eventTypes: z.array(z.string().trim().min(1).max(256)).min(1).max(64),\n configuration: AutomationBoundedJson.default({}),\n parameters: AutomationBoundedJson.default({}),\n sessionTemplate: AutomationSessionTemplate,\n status: AutomationTriggerStatus.default(\"active\"),\n packInstallationId: z.string().uuid().nullable().default(null),\n packTemplateId: z.string().trim().min(1).max(128).nullable().default(null),\n })\n .strict()\n .superRefine((value, context) => {\n if ((value.packInstallationId === null) !== (value.packTemplateId === null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"packTemplateId\"],\n message: \"packInstallationId and packTemplateId must be supplied together\",\n });\n }\n }),\n);\nexport type CreateAutomationTriggerRequest = z.infer<typeof CreateAutomationTriggerRequest>;\n\nexport const UpdateAutomationTriggerRequest = /* @__PURE__ */ defineSkillContractSchema(() =>\n z\n .object({\n expectedRevision: z.number().int().positive(),\n name: z.string().trim().min(1).max(200).optional(),\n eventTypes: z.array(z.string().trim().min(1).max(256)).min(1).max(64).optional(),\n configuration: AutomationBoundedJson.optional(),\n parameters: AutomationBoundedJson.optional(),\n sessionTemplate: AutomationSessionTemplate.optional(),\n status: AutomationTriggerStatus.optional(),\n })\n .strict()\n .refine((value) => Object.keys(value).some((key) => key !== \"expectedRevision\"), {\n message: \"automation trigger update is empty\",\n }),\n);\nexport type UpdateAutomationTriggerRequest = z.infer<typeof UpdateAutomationTriggerRequest>;\n\nexport const AutomationTrigger = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sourceId: z.string().uuid(),\n name: z.string(),\n adapterId: AutomationAdapterId,\n eventTypes: z.array(z.string()),\n configuration: z.record(z.string(), z.unknown()),\n parameters: z.record(z.string(), z.unknown()),\n sessionTemplate: AutomationSessionTemplate,\n status: AutomationTriggerStatus,\n revision: z.number().int().positive(),\n packInstallationId: z.string().uuid().nullable(),\n packTemplateId: z.string().nullable(),\n createdBySubjectId: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n }),\n);\nexport type AutomationTrigger = z.infer<typeof AutomationTrigger>;\n\nexport const AutomationRun = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sourceId: z.string().uuid(),\n triggerId: z.string().uuid(),\n triggerRevision: z.number().int().positive(),\n eventId: z.string().uuid(),\n occurrenceKey: z.string(),\n status: AutomationRunStatus,\n sessionId: z.string().uuid().nullable(),\n errorCode: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type AutomationRun = z.infer<typeof AutomationRun>;\n\nexport const AutomationWebhookResult = z.object({\n accepted: z.boolean(),\n duplicate: z.boolean(),\n ignoredReason: z.string().nullable(),\n eventId: z.string().uuid().nullable(),\n runIds: z.array(z.string().uuid()),\n});\nexport type AutomationWebhookResult = z.infer<typeof AutomationWebhookResult>;\n\nexport const TriggerAutomationManuallyRequest = z\n .object({\n deliveryId: z.string().trim().min(1).max(512).optional(),\n eventType: z.string().trim().min(1).max(256),\n occurrenceKey: z.string().trim().min(1).max(1024),\n payload: AutomationBoundedJson.default({}),\n occurredAt: z.string().datetime({ offset: true }).nullable().default(null),\n subject: z.string().trim().min(1).max(512).nullable().default(null),\n resource: z.string().trim().min(1).max(1024).nullable().default(null),\n })\n .strict();\nexport type TriggerAutomationManuallyRequest = z.infer<typeof TriggerAutomationManuallyRequest>;\n\nexport const CapabilityPackAutomationTemplate = /* @__PURE__ */ defineSkillContractSchema(() =>\n z\n .object({\n id: z.string().min(1).max(128),\n name: z.string().min(1).max(200),\n description: z.string().min(1).max(4096),\n adapterId: AutomationAdapterId,\n eventTypes: z.array(z.string().min(1).max(256)).min(1).max(64),\n sessionTemplate: AutomationSessionTemplate,\n configuration: AutomationBoundedJson.default({}),\n connectionRequirement: z.string().min(1).max(128).nullable().default(null),\n })\n .strict(),\n);\nexport type CapabilityPackAutomationTemplate = z.infer<typeof CapabilityPackAutomationTemplate>;\n\nexport const CapabilityPackConnectorAuthModel = z.enum([\n \"oauth2_authorization_code_pkce\",\n \"oauth2_authorization_code\",\n \"api_key\",\n \"credential_ref\",\n]);\nexport type CapabilityPackConnectorAuthModel = z.infer<typeof CapabilityPackConnectorAuthModel>;\n\nexport const CapabilityPackConnector = z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n category: z.string().min(1),\n authModel: CapabilityPackConnectorAuthModel,\n providers: z.array(z.string().min(1)).default([]),\n scopes: z.array(z.string().min(1)).default([]),\n required: z.boolean().default(false),\n metadata: z.record(z.string(), z.unknown()).default({}),\n});\nexport type CapabilityPackConnector = z.infer<typeof CapabilityPackConnector>;\n\nexport const CapabilityPackKnowledge = z.object({\n type: z.literal(\"document_base\"),\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string().nullable().default(null),\n required: z.boolean().default(false),\n});\nexport type CapabilityPackKnowledge = z.infer<typeof CapabilityPackKnowledge>;\n\nexport const CapabilityPackScheduledTaskTemplate = z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string().min(1),\n defaultSchedule: ScheduledTaskScheduleSpec,\n defaultRunMode: ScheduledTaskRunMode.default(\"new_session_per_run\"),\n defaultOverlapPolicy: ScheduledTaskOverlapPolicy.default(\"skip\"),\n // Optional default agent prompt so registered pack manifests can ship fully\n // instantiable templates; built-in packs may instead build prompts in code.\n prompt: z.string().min(1).optional(),\n});\nexport type CapabilityPackScheduledTaskTemplate = z.infer<\n typeof CapabilityPackScheduledTaskTemplate\n>;\n\n// Construct canonical Skill validators synchronously, but let browser bundlers\n// discard their entire dependency graph (including YAML) for unrelated imports.\n// Each transitive schema initializer needs a pure factory boundary: annotating\n// only the leaf still retains it through eager parent Zod calls.\nfunction defineSkillContractSchema<Schema>(factory: () => Schema): Schema {\n return factory();\n}\n\n// One file inside a pack skill directory. Paths are workspace-relative POSIX\n// paths inside the skill directory (for example \"SKILL.md\" or\n// \"references/runbook.md\"); content is UTF-8 text carried inline in the pack\n// manifest, which is also how registered packs persist it (the manifest JSONB\n// row in workspace_packs is the storage of record for pack skills).\nexport const CapabilityPackSkillFile = z.object({\n path: z.string().min(1).max(512).refine(isSafeSkillRelativePath, {\n message: \"skill file path must be a safe relative POSIX path without '..' segments\",\n }),\n content: z.string().max(256 * 1024),\n});\nexport type CapabilityPackSkillFile = z.infer<typeof CapabilityPackSkillFile>;\n\n// A skill delivered by a capability pack. Files own metadata. Optional legacy\n// name/description inputs are consistency assertions, never competing values.\nexport const CapabilityPackSkill = /* @__PURE__ */ defineSkillContractSchema(() =>\n z\n .object({\n name: z.string().min(1).max(64).optional(),\n description: z.string().min(1).max(1024).optional(),\n // Workspace-managed Skills are available to every session in the\n // workspace. Session-selected Skills remain installed and inspectable, but\n // enter model context only when their immutable definition is attached to\n // a session explicitly. This is the hard contamination boundary for Packs\n // that guide implementation agents rather than customer-facing agents.\n activationMode: z.enum([\"workspace_managed\", \"session_selected\"]).optional(),\n files: z.array(CapabilityPackSkillFile).min(1).max(128),\n })\n .transform((skill, ctx) => {\n const main = skill.files.find((file) => file.path === \"SKILL.md\");\n if (!main) {\n ctx.addIssue({\n code: \"custom\",\n message: \"skill must include a top-level SKILL.md file\",\n path: [\"files\"],\n });\n return z.NEVER;\n }\n let metadata: ReturnType<typeof readSkillMetadata>;\n try {\n validateSkillTextFiles(skill.files);\n metadata = readSkillMetadata(main.content);\n } catch (error) {\n ctx.addIssue({\n code: \"custom\",\n message: error instanceof Error ? error.message : \"Invalid Skill frontmatter\",\n path: [\"files\"],\n });\n return z.NEVER;\n }\n for (const key of [\"name\", \"description\"] as const) {\n if (skill[key] !== undefined && skill[key] !== metadata[key])\n ctx.addIssue({\n code: \"custom\",\n message: `Skill ${key} must match SKILL.md frontmatter`,\n path: [key],\n });\n }\n return { ...skill, ...metadata };\n }),\n);\nexport type CapabilityPackSkill = z.infer<typeof CapabilityPackSkill>;\nexport type CapabilityPackSkillInput = z.input<typeof CapabilityPackSkill>;\n\n// Inline skill content fixed onto one session at creation. It intentionally\n// uses the exact same validated directory shape as a pack skill, but has a\n// different semantic owner and lifecycle. Session readers can inspect it; it\n// is configuration, never a secret store. Pack activation policy is consumed\n// at admission and cannot become part of the session-owned artifact.\nexport const SessionSkill = /* @__PURE__ */ defineSkillContractSchema(() =>\n CapabilityPackSkill.transform(({ activationMode: _activationMode, ...skill }) => skill),\n);\nexport type SessionSkill = z.infer<typeof SessionSkill>;\nexport type SessionSkillInput = z.input<typeof SessionSkill>;\n\nexport const SessionSkills = /* @__PURE__ */ defineSkillContractSchema(() =>\n z\n .array(SessionSkill)\n .max(32)\n .transform((skills, ctx) => {\n const selected = new Map<string, { fingerprint: string; skill: SessionSkill }>();\n for (const skill of skills) {\n const key = skill.name.toLowerCase();\n const fingerprint = JSON.stringify({\n description: skill.description ?? null,\n files: [...skill.files]\n .sort((left, right) => left.path.localeCompare(right.path))\n .map(({ path, content }) => ({ path, content })),\n });\n const existing = selected.get(key);\n if (!existing) {\n selected.set(key, { fingerprint, skill });\n continue;\n }\n if (existing.fingerprint !== fingerprint) {\n ctx.addIssue({\n code: \"custom\",\n message: `conflicting session skill definitions: ${skill.name}`,\n });\n }\n }\n return [...selected.values()].map(({ skill }) => skill);\n }),\n);\n\n/** No header synthesis: stored files must still pass the canonical contract. */\nexport const StoredSessionSkills = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.preprocess(projectStoredSkillMetadata, SessionSkills),\n);\n\nfunction projectStoredSkillMetadata(value: unknown): unknown {\n if (!Array.isArray(value)) return value;\n return value.map((skill: unknown) => {\n if (!skill || typeof skill !== \"object\" || Array.isArray(skill)) return skill;\n const {\n name: _name,\n description: _description,\n ...definition\n } = skill as Record<string, unknown>;\n return definition;\n });\n}\n\nfunction projectStoredTemplateSkillMetadata(value: unknown): unknown {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n const template = value as Record<string, unknown>;\n return {\n ...template,\n ...(template.skills !== undefined\n ? { skills: projectStoredSkillMetadata(template.skills) }\n : {}),\n };\n}\n\nconst CapabilityPackVariableSet = z\n .object({\n description: z.string().min(1).max(2048),\n requiredVariables: z.array(VariableSetVariableName).max(256).default([]),\n required: z.boolean().default(false),\n })\n .strict();\n\nconst CapabilityPackComponentKey = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9._/-]*[a-z0-9])?$/);\n\nconst CapabilityPackInstanceKey = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9._/-]*[a-z0-9])?$/);\n\n/**\n * Immutable requirements adopted by a Pack installation. The manifest names\n * portable identities; installation resolves them to exact workspace-local\n * component rows and records Pack ownership in the shared component ledger.\n */\nexport const CapabilityPackComponentReference = z.discriminatedUnion(\"kind\", [\n z\n .object({\n key: CapabilityPackComponentKey,\n kind: z.literal(\"plugin\"),\n pluginKey: z.string().min(1).max(200),\n version: z.string().min(1).max(128),\n manifestDigest: z.string().regex(/^[0-9a-f]{64}$/),\n required: z.boolean().default(true),\n })\n .strict(),\n z\n .object({\n key: CapabilityPackComponentKey,\n kind: z.literal(\"skill\"),\n capabilityId: z.string().min(1).max(512),\n contentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n required: z.boolean().default(true),\n })\n .strict(),\n z\n .object({\n key: CapabilityPackComponentKey,\n kind: z.literal(\"integration\"),\n capabilityId: z.string().min(1).max(512),\n instanceKey: CapabilityPackInstanceKey,\n revisionId: z.string().min(1).max(512),\n contentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n required: z.boolean().default(true),\n })\n .strict(),\n z\n .object({\n key: CapabilityPackComponentKey,\n kind: z.literal(\"facet\"),\n capabilityId: z.string().min(1).max(512),\n instanceKey: CapabilityPackInstanceKey,\n facetKey: z.string().min(1).max(200),\n bindingKey: CapabilityPackInstanceKey,\n configDigest: z.string().regex(/^[0-9a-f]{64}$/),\n required: z.boolean().default(true),\n })\n .strict(),\n]);\nexport type CapabilityPackComponentReference = z.infer<typeof CapabilityPackComponentReference>;\n\nexport const CapabilityPackRigRequirement = z\n .object({\n description: z.string().min(1).max(2048).optional(),\n required: z.boolean().default(true),\n rigId: z.string().uuid().optional(),\n requireVerified: z.boolean().default(false),\n })\n .strict();\nexport type CapabilityPackRigRequirement = z.infer<typeof CapabilityPackRigRequirement>;\n\nexport const CapabilityPack = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.preprocess(\n (input) => {\n if (!input || typeof input !== \"object\" || Array.isArray(input)) {\n return input;\n }\n const record = input as Record<string, unknown>;\n if (record.variableSet !== undefined) {\n return record;\n }\n if (record.environment !== undefined) {\n const { environment: _environment, ...rest } = record;\n return { ...rest, variableSet: record.environment };\n }\n if (record.requiredVariables !== undefined) {\n const { requiredVariables: _requiredVariables, ...rest } = record;\n return {\n ...rest,\n variableSet: {\n description: \"Required variables\",\n requiredVariables: record.requiredVariables,\n required:\n Array.isArray(record.requiredVariables) && record.requiredVariables.length > 0,\n },\n };\n }\n return record;\n },\n z\n .object({\n id: z\n .string()\n .min(1)\n .max(100)\n .regex(/^[a-z0-9](?:[a-z0-9._/-]*[a-z0-9])?$/),\n name: z.string().min(1).max(200),\n description: z.string().min(1).max(4096),\n role: z.string().min(1).max(128),\n category: z.string().min(1).max(128),\n version: z.string().min(1).max(128),\n // Legacy manifest compatibility. V2 installation resolves this image to\n // an explicit Rig requirement; the Pack no longer changes workspace\n // runtime settings directly.\n sandboxImage: z.string().trim().min(1).max(512).optional(),\n // Optional provider-native immutable identities for the exact logical\n // sandboxImage above. These avoid re-importing a private registry image on\n // every provider while preserving sandboxImage as the cross-provider image\n // provenance and lease-conflict identity.\n sandboxProviderImages: z\n .object({\n modal: z\n .object({\n imageId: z\n .string()\n .trim()\n .regex(/^im-[A-Za-z0-9]{22}$/),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n // Legacy inline Skills are migrated into immutable Skill components by\n // the V2 Pack installer. They are not loaded directly by V2 runtime.\n skills: z\n .array(CapabilityPackSkill)\n .max(32)\n .superRefine((skills, ctx) => {\n const seen = new Set<string>();\n skills.forEach((skill, index) => {\n const key = skill.name.toLowerCase();\n if (seen.has(key)) {\n ctx.addIssue({\n code: \"custom\",\n message: `duplicate pack skill name: ${skill.name}`,\n path: [index, \"name\"],\n });\n }\n seen.add(key);\n });\n })\n .default([]),\n components: z.array(CapabilityPackComponentReference).max(128).default([]),\n rig: CapabilityPackRigRequirement.optional(),\n tools: z.array(ToolRef).default([]),\n connectors: z.array(CapabilityPackConnector).default([]),\n knowledge: z.array(CapabilityPackKnowledge).default([]),\n scheduledTaskTemplates: z.array(CapabilityPackScheduledTaskTemplate).default([]),\n automationTemplates: z.array(CapabilityPackAutomationTemplate).max(64).optional(),\n variableSet: CapabilityPackVariableSet.optional(),\n metadata: z.record(z.string(), z.unknown()).default({}),\n })\n .superRefine((pack, ctx) => {\n const componentKeys = new Set<string>();\n pack.components.forEach((component, index) => {\n if (componentKeys.has(component.key)) {\n ctx.addIssue({\n code: \"custom\",\n message: `duplicate Pack component key: ${component.key}`,\n path: [\"components\", index, \"key\"],\n });\n }\n componentKeys.add(component.key);\n });\n pack.skills.forEach((skill, index) => {\n const key = `inline-skill/${skill.name.toLowerCase()}`;\n if (componentKeys.has(key)) {\n ctx.addIssue({\n code: \"custom\",\n message: `Pack component key conflicts with inline Skill ${skill.name}: ${key}`,\n path: [\"skills\", index, \"name\"],\n });\n }\n componentKeys.add(key);\n });\n const automationTemplateIds = new Set<string>();\n pack.automationTemplates?.forEach((template, index) => {\n if (automationTemplateIds.has(template.id)) {\n ctx.addIssue({\n code: \"custom\",\n message: `duplicate Pack automation template id: ${template.id}`,\n path: [\"automationTemplates\", index, \"id\"],\n });\n }\n automationTemplateIds.add(template.id);\n });\n if (!pack.sandboxProviderImages?.modal) {\n return;\n }\n if (!pack.sandboxImage) {\n ctx.addIssue({\n code: \"custom\",\n message: \"sandboxProviderImages.modal requires sandboxImage\",\n path: [\"sandboxProviderImages\", \"modal\"],\n });\n return;\n }\n if (!/@sha256:[0-9a-f]{64}$/i.test(pack.sandboxImage)) {\n ctx.addIssue({\n code: \"custom\",\n message:\n \"sandboxProviderImages.modal requires sandboxImage to be pinned by an OCI sha256 digest\",\n path: [\"sandboxImage\"],\n });\n }\n }),\n ),\n);\nexport type CapabilityPack = z.infer<typeof CapabilityPack>;\n\n/** Execution view only; never replace the stored manifest or its digest with it. */\nexport const StoredCapabilityPack = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.preprocess((value) => {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n const pack = value as Record<string, unknown>;\n return {\n ...pack,\n ...(pack.skills !== undefined ? { skills: projectStoredSkillMetadata(pack.skills) } : {}),\n ...(Array.isArray(pack.automationTemplates)\n ? {\n automationTemplates: pack.automationTemplates.map((entry: unknown) => {\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) return entry;\n const template = entry as Record<string, unknown>;\n return {\n ...template,\n sessionTemplate: projectStoredTemplateSkillMetadata(template.sessionTemplate),\n };\n }),\n }\n : {}),\n };\n }, CapabilityPack),\n);\n\n// Registering a pack stores the manifest itself; the request body is a full\n// CapabilityPack manifest.\nexport const RegisterCapabilityPackRequest = /* @__PURE__ */ defineSkillContractSchema(\n () => CapabilityPack,\n);\nexport type RegisterCapabilityPackRequest = z.infer<typeof RegisterCapabilityPackRequest>;\n\nexport const WorkspaceRegisteredPack = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.object({\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n pack: CapabilityPack,\n createdAt: z.string(),\n updatedAt: z.string(),\n }),\n);\nexport type WorkspaceRegisteredPack = z.infer<typeof WorkspaceRegisteredPack>;\n\nexport const PackInstallationStatus = z.enum([\n \"installing\",\n \"active\",\n \"needs_attention\",\n \"disabled\",\n]);\nexport type PackInstallationStatus = z.infer<typeof PackInstallationStatus>;\n\nexport const PackInstallation = z.object({\n skillWrites: z.array(SkillWriteReceipt).optional(),\n skillPublications: z.array(SkillPublicationReceipt).optional(),\n skillReleases: z.array(SkillSourceReleaseReceipt).optional(),\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n packId: z.string().min(1),\n status: PackInstallationStatus,\n version: z.number().int().positive(),\n // Exact accepted audit data, including historical fields and legacy Skills.\n // Execution must explicitly parse StoredCapabilityPack; response validation\n // must not project metadata, apply defaults, or change manifestDigest input.\n manifestSnapshot: z.record(z.string(), z.unknown()).nullable(),\n manifestDigest: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n selectedRigId: z.string().uuid().nullable(),\n installedBySubjectId: z.string().min(1).max(1024).nullable(),\n metadata: z.record(z.string(), z.unknown()),\n enabledAt: z.string(),\n updatedAt: z.string(),\n});\nexport type PackInstallation = z.infer<typeof PackInstallation>;\n\n// ============ OpenGeni Review Bot — provider-neutral pull-request review automation ============\n\nexport const OPENGENI_PR_REVIEW_PACK_ID = \"pr-review\" as const;\nexport const OPENGENI_PR_REVIEW_SESSION_ROLE = \"pull_request_review\" as const;\n\nexport const PrReviewProvider = GitCredentialProvider;\nexport type PrReviewProvider = z.infer<typeof PrReviewProvider>;\n\nexport const PrReviewCredentialKind = /* @__PURE__ */ z.enum([\n \"github_app\",\n \"managed_github_app\",\n \"provider_token\",\n]);\nexport type PrReviewCredentialKind = z.infer<typeof PrReviewCredentialKind>;\n\nexport const PrReviewWebhookAuthKind = /* @__PURE__ */ z.enum([\n \"hmac_sha256\",\n \"shared_token\",\n \"basic\",\n]);\nexport type PrReviewWebhookAuthKind = z.infer<typeof PrReviewWebhookAuthKind>;\n\nconst PrReviewSecretInput = /* @__PURE__ */ (() => z.string().min(16).max(65_536))();\n\nexport const CreatePrReviewAppRegistrationRequest = /* @__PURE__ */ (() =>\n z\n .object({\n name: z.string().trim().min(1).max(200),\n provider: PrReviewProvider,\n providerBaseUrl: z.string().url().max(2048).optional(),\n appId: z.string().trim().min(1).max(512).optional(),\n credentialKind: PrReviewCredentialKind,\n privateKey: PrReviewSecretInput.optional(),\n accessToken: PrReviewSecretInput.optional(),\n accessTokenExpiresAt: z.string().datetime().nullable().optional(),\n webhookSecret: PrReviewSecretInput,\n webhookUsername: z.string().min(1).max(512).optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.provider === \"github\" && value.credentialKind !== \"github_app\") {\n context.addIssue({\n code: \"custom\",\n path: [\"credentialKind\"],\n message: \"GitHub PR Review registrations require a dedicated GitHub App\",\n });\n }\n if (value.provider === \"github\" && (!value.appId || !value.privateKey)) {\n context.addIssue({\n code: \"custom\",\n path: [!value.appId ? \"appId\" : \"privateKey\"],\n message: \"GitHub PR Review registrations require the dedicated App ID and private key\",\n });\n }\n if (value.provider !== \"github\" && value.credentialKind !== \"provider_token\") {\n context.addIssue({\n code: \"custom\",\n path: [\"credentialKind\"],\n message: \"GitLab and Azure DevOps PR Review registrations require a provider token\",\n });\n }\n if (value.credentialKind === \"provider_token\" && !value.accessToken) {\n context.addIssue({\n code: \"custom\",\n path: [\"accessToken\"],\n message: \"provider_token credentials require accessToken\",\n });\n }\n if (\n value.credentialKind === \"github_app\" &&\n (value.accessToken !== undefined || value.privateKey === undefined)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [value.accessToken !== undefined ? \"accessToken\" : \"privateKey\"],\n message: \"GitHub App credentials require privateKey and cannot include accessToken\",\n });\n }\n if (value.credentialKind === \"provider_token\" && value.privateKey !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"privateKey\"],\n message: \"provider_token credentials cannot include a GitHub privateKey\",\n });\n }\n if (value.provider === \"github\" && value.accessTokenExpiresAt !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"accessTokenExpiresAt\"],\n message: \"GitHub App registrations do not use accessTokenExpiresAt\",\n });\n }\n if (value.provider === \"azure_devops\" && !value.webhookUsername) {\n context.addIssue({\n code: \"custom\",\n path: [\"webhookUsername\"],\n message: \"Azure DevOps service hooks require a Basic authentication username\",\n });\n }\n }))();\nexport type CreatePrReviewAppRegistrationRequest = z.infer<\n typeof CreatePrReviewAppRegistrationRequest\n>;\n\nexport const UpdatePrReviewAppRegistrationRequest = /* @__PURE__ */ (() =>\n z\n .object({\n name: z.string().trim().min(1).max(200).optional(),\n accessToken: PrReviewSecretInput.optional(),\n privateKey: PrReviewSecretInput.optional(),\n accessTokenExpiresAt: z.string().datetime().nullable().optional(),\n webhookSecret: PrReviewSecretInput.optional(),\n webhookUsername: z.string().min(1).max(512).optional(),\n status: z.enum([\"active\", \"disabled\"]).optional(),\n })\n .strict()\n .refine((value) => Object.keys(value).length > 0, {\n message: \"PR Review registration update must change at least one field\",\n }))();\nexport type UpdatePrReviewAppRegistrationRequest = z.infer<\n typeof UpdatePrReviewAppRegistrationRequest\n>;\n\nexport const PrReviewAppRegistration = /* @__PURE__ */ (() =>\n z.object({\n id: z.string().uuid(),\n sourceId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n name: z.string(),\n provider: PrReviewProvider,\n providerBaseUrl: z.string().url(),\n appId: z.string().nullable(),\n installationId: z.string().nullable(),\n providerAccountLogin: z.string().nullable(),\n providerAccountType: z.enum([\"User\", \"Organization\"]).nullable(),\n credentialKind: PrReviewCredentialKind,\n hasCredential: z.boolean(),\n accessTokenExpiresAt: z.string().nullable(),\n webhookAuthKind: PrReviewWebhookAuthKind,\n hasWebhookSecret: z.boolean(),\n webhookUsername: z.string().nullable(),\n webhookPath: z.string(),\n status: z.enum([\"active\", \"disabled\"]),\n createdBySubjectId: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n }))();\nexport type PrReviewAppRegistration = z.infer<typeof PrReviewAppRegistration>;\n\nexport const PrReviewManagedGitHubInstallation = /* @__PURE__ */ (() =>\n z.object({\n registrationId: z.string().uuid(),\n installationId: z.string(),\n accountLogin: z.string().nullable(),\n configureUrl: z.string().url().nullable(),\n repositoryCount: z.number().int().nonnegative(),\n }))();\nexport type PrReviewManagedGitHubInstallation = z.infer<typeof PrReviewManagedGitHubInstallation>;\n\nexport const PrReviewManagedGitHubSetup = /* @__PURE__ */ (() =>\n z.object({\n configured: z.boolean(),\n status: z.enum([\"unavailable\", \"not_connected\", \"connected\"]),\n appName: z.literal(\"OpenGeni Lens\"),\n connectUrl: z.string().url().nullable(),\n installations: z.array(PrReviewManagedGitHubInstallation),\n missing: z.array(z.string()),\n }))();\nexport type PrReviewManagedGitHubSetup = z.infer<typeof PrReviewManagedGitHubSetup>;\n\nexport const CreatePrReviewRepositoryBindingRequest = /* @__PURE__ */ (() =>\n z\n .object({\n registrationId: z.string().uuid(),\n repositoryUri: z.string().url().max(2048),\n repositoryFullName: z.string().trim().min(1).max(1024),\n providerRepositoryId: z.union([z.string().min(1).max(512), z.number().int().positive()]),\n installationId: z.union([z.string().min(1).max(512), z.number().int().positive()]).optional(),\n projectId: z.union([z.string().min(1).max(512), z.number().int().positive()]).optional(),\n model: z.string().min(1).max(512).nullable().optional(),\n additionalInstructions: z.string().max(16_384).nullable().optional(),\n status: z.enum([\"active\", \"disabled\"]).default(\"active\"),\n })\n .strict())();\nexport type CreatePrReviewRepositoryBindingRequest = z.infer<\n typeof CreatePrReviewRepositoryBindingRequest\n>;\n\nexport const UpdatePrReviewRepositoryBindingRequest = /* @__PURE__ */ (() =>\n z\n .object({\n model: z.string().min(1).max(512).nullable().optional(),\n additionalInstructions: z.string().max(16_384).nullable().optional(),\n status: z.enum([\"active\", \"disabled\"]).optional(),\n })\n .strict()\n .refine((value) => Object.keys(value).length > 0, {\n message: \"PR Review repository update must change at least one field\",\n }))();\nexport type UpdatePrReviewRepositoryBindingRequest = z.infer<\n typeof UpdatePrReviewRepositoryBindingRequest\n>;\n\nexport const PrReviewRepositoryBinding = /* @__PURE__ */ (() =>\n z.object({\n id: z.string().uuid(),\n triggerId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n registrationId: z.string().uuid(),\n provider: PrReviewProvider,\n repositoryUri: z.string(),\n repositoryFullName: z.string(),\n providerRepositoryId: z.string(),\n installationId: z.string().nullable(),\n projectId: z.string().nullable(),\n model: z.string().nullable(),\n additionalInstructions: z.string().nullable(),\n status: z.enum([\"active\", \"disabled\"]),\n createdBySubjectId: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n }))();\nexport type PrReviewRepositoryBinding = z.infer<typeof PrReviewRepositoryBinding>;\n\nexport const EnablePackRequest = withVariableSetIdAlias({\n variableSetId: z.string().uuid().optional(),\n environmentId: z.string().uuid().optional(),\n metadata: z.record(z.string(), z.unknown()).default({}),\n});\nexport type EnablePackRequest = z.infer<typeof EnablePackRequest>;\n\nexport const PackComponentResolutionStatus = z.enum([\"ready\", \"missing\", \"mismatch\"]);\nexport type PackComponentResolutionStatus = z.infer<typeof PackComponentResolutionStatus>;\n\nexport const PackComponentResolution = z\n .object({\n key: CapabilityPackComponentKey,\n kind: z.enum([\"plugin\", \"skill\", \"integration\", \"facet\", \"inline_skill\"]),\n capabilityId: z.string().min(1).max(512),\n required: z.boolean(),\n status: PackComponentResolutionStatus,\n expectedDigest: z.string().regex(/^[0-9a-f]{64}$/),\n actualDigest: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n resolvedId: z.string().min(1).max(512).nullable(),\n label: z.string().min(1).max(200),\n })\n .strict();\nexport type PackComponentResolution = z.infer<typeof PackComponentResolution>;\n\nexport const PackRigResolution = z\n .object({\n required: z.boolean(),\n status: z.enum([\"not_required\", \"ready\", \"missing\", \"mismatch\", \"unverified\"]),\n requestedRigId: z.string().uuid().nullable(),\n rigId: z.string().uuid().nullable(),\n rigVersionId: z.string().uuid().nullable(),\n name: z.string().min(1).max(200).nullable(),\n image: z.string().min(1).max(512).nullable(),\n })\n .strict();\nexport type PackRigResolution = z.infer<typeof PackRigResolution>;\n\nexport const PreviewPackInstallationRequest = z\n .object({\n rigId: z.string().uuid().optional(),\n variableSetId: z.string().uuid().optional(),\n })\n .strict();\nexport type PreviewPackInstallationRequest = z.infer<typeof PreviewPackInstallationRequest>;\n\nexport const PackInstallationPreview = z\n .object({\n packId: z.string().min(1),\n packVersion: z.string().min(1),\n manifestDigest: z.string().regex(/^[0-9a-f]{64}$/),\n installationVersion: z.number().int().positive().nullable(),\n action: z.enum([\"install\", \"update\", \"repair\"]),\n ready: z.boolean(),\n blockers: z.array(z.string().min(1).max(500)).max(256),\n components: z.array(PackComponentResolution).max(160),\n rig: PackRigResolution,\n variableSetId: z.string().uuid().nullable(),\n legacyInlineSkillCount: z.number().int().nonnegative().max(32),\n legacySandboxImage: z.string().min(1).max(512).nullable(),\n })\n .strict();\nexport type PackInstallationPreview = z.infer<typeof PackInstallationPreview>;\n\nexport const InstallPackRequest = z\n .object({\n expectedManifestDigest: z.string().regex(/^[0-9a-f]{64}$/),\n expectedInstallationVersion: z.number().int().positive().optional(),\n rigId: z.string().uuid().optional(),\n variableSetId: z.string().uuid().optional(),\n idempotencyKey: z.string().uuid(),\n metadata: z.record(z.string(), z.unknown()).default({}),\n })\n .strict();\nexport type InstallPackRequest = z.infer<typeof InstallPackRequest>;\n\nexport const PackUninstallPreview = z\n .object({\n packId: z.string().min(1),\n installed: z.boolean(),\n installationVersion: z.number().int().positive().nullable(),\n components: z\n .array(\n z\n .object({\n key: CapabilityPackComponentKey,\n kind: z.enum([\"plugin\", \"skill\", \"integration\", \"facet\", \"inline_skill\"]),\n capabilityId: z.string().min(1).max(512),\n retainedByOtherOwners: z.boolean(),\n })\n .strict(),\n )\n .max(160),\n })\n .strict();\nexport type PackUninstallPreview = z.infer<typeof PackUninstallPreview>;\n\nexport const UninstallPackRequest = z\n .object({\n expectedInstallationVersion: z.number().int().positive(),\n idempotencyKey: z.string().uuid(),\n })\n .strict();\nexport type UninstallPackRequest = z.infer<typeof UninstallPackRequest>;\n\nexport const UninstallPackResult = z\n .object({\n skillReleases: z.array(SkillSourceReleaseReceipt).optional(),\n packId: z.string().min(1),\n status: z.enum([\"not_installed\", \"uninstalled\"]),\n retainedComponents: z.array(z.string().min(1).max(512)).max(160),\n })\n .strict();\nexport type UninstallPackResult = z.infer<typeof UninstallPackResult>;\n\nexport const SocialProvider = z.enum([\n \"x\",\n \"reddit\",\n \"linkedin\",\n \"instagram\",\n \"facebook\",\n \"tiktok\",\n \"youtube\",\n \"custom\",\n]);\nexport type SocialProvider = z.infer<typeof SocialProvider>;\n\nexport const SocialConnectionStatus = z.enum([\"connected\", \"needs_reauth\", \"disabled\"]);\nexport type SocialConnectionStatus = z.infer<typeof SocialConnectionStatus>;\n\nexport const ConnectionOwnership = z.enum([\"workspace\", \"personal\"]);\nexport type ConnectionOwnership = z.infer<typeof ConnectionOwnership>;\n\nexport const SocialConnection = z.object({\n id: z.string().uuid(),\n /** Present on version-aware deployments; required for observed reconnect. */\n version: z.number().int().positive().optional(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n provider: SocialProvider,\n accountHandle: z.string().min(1),\n accountName: z.string().nullable(),\n externalAccountId: z.string().nullable(),\n ownership: ConnectionOwnership,\n status: SocialConnectionStatus,\n scopes: z.array(z.string()),\n credentialRef: z.string().nullable(),\n tokenMetadata: z.record(z.string(), z.unknown()),\n metadata: z.record(z.string(), z.unknown()),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type SocialConnection = z.infer<typeof SocialConnection>;\n\nexport const CreateSocialConnectionRequest = z.object({\n provider: SocialProvider,\n accountHandle: z.string().min(1),\n accountName: z.string().min(1).optional(),\n externalAccountId: z.string().min(1).optional(),\n status: SocialConnectionStatus.default(\"connected\"),\n scopes: z.array(z.string().min(1)).default([]),\n credentialRef: z.string().min(1).optional(),\n tokenMetadata: z.record(z.string(), z.unknown()).default({}),\n metadata: z.record(z.string(), z.unknown()).default({}),\n});\nexport type CreateSocialConnectionRequest = z.infer<typeof CreateSocialConnectionRequest>;\n\nexport const SocialPost = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n connectionId: z.string().uuid(),\n provider: SocialProvider,\n externalPostId: z.string().nullable(),\n url: z.string().url().nullable(),\n authorHandle: z.string().nullable(),\n text: z.string(),\n publishedAt: z.string(),\n metrics: z.record(z.string(), z.number()),\n raw: z.record(z.string(), z.unknown()),\n createdAt: z.string(),\n});\nexport type SocialPost = z.infer<typeof SocialPost>;\n\nexport const CreateSocialPostRequest = z.object({\n connectionId: z.string().uuid(),\n externalPostId: z.string().min(1).optional(),\n url: z.string().url().optional(),\n authorHandle: z.string().min(1).optional(),\n text: z.string().min(1),\n publishedAt: z.string().datetime({ offset: true }),\n metrics: z.record(z.string(), z.number()).default({}),\n raw: z.record(z.string(), z.unknown()).default({}),\n});\nexport type CreateSocialPostRequest = z.infer<typeof CreateSocialPostRequest>;\n\n// Social OAuth is first-party (X / Reddit REST APIs), distinct from the MCP\n// integrations OAuth flow: these providers have no MCP resource metadata, so\n// endpoints are pinned per provider and tokens live in social_connections.\nexport const SocialOAuthProviderId = z.enum([\"x\", \"reddit\"]);\nexport type SocialOAuthProviderId = z.infer<typeof SocialOAuthProviderId>;\n\nexport const SocialOAuthStartRequest = z.object({\n provider: SocialOAuthProviderId,\n ownership: ConnectionOwnership.default(\"workspace\"),\n scopes: z.array(z.string().min(1)).optional(),\n returnPath: z.string().optional(),\n});\nexport type SocialOAuthStartRequest = z.infer<typeof SocialOAuthStartRequest>;\n\nexport const ConnectionKind = z.enum([\"oauth2\", \"api_key\", \"app_install\", \"delegated\"]);\nexport type ConnectionKind = z.infer<typeof ConnectionKind>;\n\nexport const ConnectionStatus = z.enum([\"active\", \"needs_reauth\", \"revoked\", \"error\"]);\nexport type ConnectionStatus = z.infer<typeof ConnectionStatus>;\n\nexport const OPENGENI_PERSONAL_SLACK_MCP_URL = \"https://mcp.slack.com/mcp\" as const;\n\nexport const OPENGENI_SLACK_BOT_CREDENTIAL_ROLE = \"opengeni_slack_bot\" as const;\nexport const OPENGENI_SLACK_BOT_CREDENTIAL_LABEL = \"OpenGeni Slack bot\" as const;\nexport const OPENGENI_SLACK_BOT_SESSION_METADATA_KEY = \"opengeniSlackBotConnectionId\" as const;\nexport const OpenGeniSlackBotDisplayName = z.enum([\"OpenGeni\", \"OpenGeni Staging\"]);\nexport type OpenGeniSlackBotDisplayName = z.infer<typeof OpenGeniSlackBotDisplayName>;\nexport const OpenGeniSlackBotConnectionMetadata = z\n .object({\n credentialRole: z.literal(OPENGENI_SLACK_BOT_CREDENTIAL_ROLE),\n credentialLabel: z.literal(OPENGENI_SLACK_BOT_CREDENTIAL_LABEL),\n slackTeamId: z.string().min(1).max(64),\n slackTeamName: z.string().min(1).max(256),\n botUserId: z.string().min(1).max(64),\n botId: z.string().min(1).max(64),\n botDisplayName: OpenGeniSlackBotDisplayName,\n verifiedAt: z.string().datetime({ offset: true }),\n })\n .passthrough();\nexport type OpenGeniSlackBotConnectionMetadata = z.infer<typeof OpenGeniSlackBotConnectionMetadata>;\n\nexport const FIKEN_PROVIDER_DOMAIN = \"fiken.no\" as const;\nexport const FIKEN_CREDENTIAL_ROLE = \"fiken_api_token\" as const;\nexport const FIKEN_CREDENTIAL_LABEL = \"Fiken API token\" as const;\n\nexport const FikenCompanySummary = z.object({\n slug: z.string().min(1).max(128),\n name: z.string().min(1).max(256),\n organizationNumber: z.string().max(64).nullable(),\n});\nexport type FikenCompanySummary = z.infer<typeof FikenCompanySummary>;\n\nexport const FikenConnectionMetadata = z\n .object({\n credentialRole: z.literal(FIKEN_CREDENTIAL_ROLE),\n credentialLabel: z.literal(FIKEN_CREDENTIAL_LABEL),\n companies: z.array(FikenCompanySummary).max(100),\n defaultCompanySlug: z.string().min(1).max(128).nullable(),\n verifiedAt: z.string().datetime({ offset: true }),\n })\n .passthrough();\nexport type FikenConnectionMetadata = z.infer<typeof FikenConnectionMetadata>;\n\nexport const FikenInstallRequest = z.object({\n apiToken: z.string().min(16).max(512),\n defaultCompanySlug: z.string().min(1).max(128).optional(),\n /** Existing Fiken connection to rewrite in place (reconnect). */\n connectionId: z.string().uuid().optional(),\n});\nexport type FikenInstallRequest = z.infer<typeof FikenInstallRequest>;\n\nexport const FikenOAuthStartRequest = z.object({\n /** Same-origin product route to return to after provider consent. */\n returnPath: z.string().min(1).max(2048).optional(),\n /** Existing Fiken connection to re-authorize in place (reconnect). */\n connectionId: z.string().uuid().optional(),\n});\nexport type FikenOAuthStartRequest = z.infer<typeof FikenOAuthStartRequest>;\n\nexport const FikenOAuthStartResponse = z.object({\n authorizationUrl: z.string().url(),\n expiresAt: z.string().datetime({ offset: true }),\n});\nexport type FikenOAuthStartResponse = z.infer<typeof FikenOAuthStartResponse>;\n\nexport const ConnectionMetadata = z.object({\n id: z.string().uuid(),\n /** Opaque owner-only handle used to manage this personal connection's grants. */\n authorityId: z.string().uuid().optional(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n subjectId: z.string().nullable(),\n providerDomain: z.string(),\n kind: ConnectionKind,\n status: ConnectionStatus,\n grantedScopes: z.array(z.string()),\n expiresAt: z.string().nullable(),\n lastRefreshAt: z.string().nullable(),\n lastUsedAt: z.string().nullable(),\n lastError: z.string().nullable(),\n version: z.number().int().positive(),\n verifiedInstallAt: z.string().datetime({ offset: true }).nullable().optional(),\n verifiedInstallVersion: z.number().int().positive().nullable().optional(),\n metadata: z.record(z.string(), z.unknown()),\n createdBySubjectId: z.string().nullable(),\n updatedBySubjectId: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type ConnectionMetadata = z.infer<typeof ConnectionMetadata>;\n\ntype PersonalSlackCanonicalConnection = Pick<\n ConnectionMetadata,\n \"id\" | \"status\" | \"createdAt\" | \"updatedAt\"\n>;\n\nconst PERSONAL_SLACK_CONNECTION_STATUS_RANK = {\n active: 0,\n needs_reauth: 1,\n error: 2,\n revoked: 3,\n} as const satisfies Record<ConnectionStatus, number>;\n\n/**\n * Canonical ordering for duplicate subject-owned Personal Slack rows.\n *\n * PostgreSQL broker lookup mirrors this exact sequence: usable status first,\n * then newest update, newest creation, and immutable UUID descending.\n */\nexport function comparePersonalSlackCanonicalConnections(\n left: PersonalSlackCanonicalConnection,\n right: PersonalSlackCanonicalConnection,\n): number {\n const statusDelta =\n PERSONAL_SLACK_CONNECTION_STATUS_RANK[left.status] -\n PERSONAL_SLACK_CONNECTION_STATUS_RANK[right.status];\n if (statusDelta !== 0) return statusDelta;\n\n const updatedAtDelta = compareDescending(\n canonicalConnectionTimestamp(left.updatedAt),\n canonicalConnectionTimestamp(right.updatedAt),\n );\n if (updatedAtDelta !== 0) return updatedAtDelta;\n\n const createdAtDelta = compareDescending(\n canonicalConnectionTimestamp(left.createdAt),\n canonicalConnectionTimestamp(right.createdAt),\n );\n if (createdAtDelta !== 0) return createdAtDelta;\n\n return compareDescending(left.id, right.id);\n}\n\nexport function selectCanonicalPersonalSlackConnection<T extends PersonalSlackCanonicalConnection>(\n connections: readonly T[],\n): T | null {\n let selected: T | null = null;\n for (const connection of connections) {\n if (!selected || comparePersonalSlackCanonicalConnections(connection, selected) < 0) {\n selected = connection;\n }\n }\n return selected;\n}\n\nfunction canonicalConnectionTimestamp(value: string): number {\n const timestamp = Date.parse(value);\n return Number.isFinite(timestamp) ? timestamp : Number.NEGATIVE_INFINITY;\n}\n\nfunction compareDescending(left: number | string, right: number | string): number {\n if (left === right) return 0;\n return left > right ? -1 : 1;\n}\n\nexport const ConnectionCredentialBundle = z.record(z.string(), z.unknown());\nexport type ConnectionCredentialBundle = z.infer<typeof ConnectionCredentialBundle>;\n\nexport const VERCEL_AI_GATEWAY_CREDENTIAL_OPERATION_ID_METADATA_KEY =\n \"vercelAiGatewayCredentialOperationId\" as const;\nexport const VERCEL_AI_GATEWAY_CREDENTIAL_OPERATION_DIGEST_METADATA_KEY =\n \"vercelAiGatewayCredentialOperationDigest\" as const;\nexport const OPENROUTER_CREDENTIAL_OPERATION_ID_METADATA_KEY =\n \"openRouterCredentialOperationId\" as const;\nexport const OPENROUTER_CREDENTIAL_OPERATION_DIGEST_METADATA_KEY =\n \"openRouterCredentialOperationDigest\" as const;\n\nexport const CreateConnectionRequest = z.object({\n providerDomain: z.string().min(1),\n kind: ConnectionKind,\n ownership: ConnectionOwnership.optional(),\n /** @deprecated use ownership */\n subjectId: z.string().min(1).nullable().optional(),\n credential: ConnectionCredentialBundle,\n grantedScopes: z.array(z.string().min(1)).default([]),\n expiresAt: z.string().datetime({ offset: true }).nullable().optional(),\n metadata: z.record(z.string(), z.unknown()).default({}),\n operationId: z.string().uuid().optional(),\n});\nexport type CreateConnectionRequest = z.infer<typeof CreateConnectionRequest>;\n\nexport const OpenGeniSlackBotInstallRequest = z.object({\n connectionId: z.string().uuid().optional(),\n});\nexport type OpenGeniSlackBotInstallRequest = z.infer<typeof OpenGeniSlackBotInstallRequest>;\n\nexport const OpenGeniSlackBotInstallStart = z.object({\n authorizationUrl: z.string().url(),\n expiresAt: z.string().datetime({ offset: true }),\n});\nexport type OpenGeniSlackBotInstallStart = z.infer<typeof OpenGeniSlackBotInstallStart>;\n\nexport const SlackInstallationBindingState = z.enum([\"active\", \"quarantined\"]);\nexport type SlackInstallationBindingState = z.infer<typeof SlackInstallationBindingState>;\n\nexport const SlackInstallationBinding = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n accountName: z.string().min(1),\n workspaceId: z.string().uuid(),\n workspaceName: z.string().min(1),\n connectionId: z.string().uuid(),\n connectionStatus: ConnectionStatus,\n connectionVersion: z.number().int().positive(),\n slackTeamId: z.string().min(1).max(64),\n slackTeamName: z.string().min(1).max(256),\n botId: z.string().min(1).max(64),\n botUserId: z.string().min(1).max(64),\n botDisplayName: OpenGeniSlackBotDisplayName,\n state: SlackInstallationBindingState,\n quarantineReason: z.string().min(1).nullable(),\n version: z.number().int().positive(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type SlackInstallationBinding = z.infer<typeof SlackInstallationBinding>;\n\nexport const ListSlackInstallationBindingsResponse = z.object({\n bindings: z.array(SlackInstallationBinding),\n});\nexport type ListSlackInstallationBindingsResponse = z.infer<\n typeof ListSlackInstallationBindingsResponse\n>;\n\nexport const UpdateConnectionRequest = z.object({\n providerDomain: z.string().min(1).optional(),\n subjectId: z.string().min(1).nullable().optional(),\n kind: ConnectionKind.optional(),\n status: ConnectionStatus.optional(),\n credential: ConnectionCredentialBundle.optional(),\n grantedScopes: z.array(z.string().min(1)).optional(),\n expiresAt: z.string().datetime({ offset: true }).nullable().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n expectedVersion: z.number().int().positive().optional(),\n operationId: z.string().uuid().optional(),\n});\nexport type UpdateConnectionRequest = z.infer<typeof UpdateConnectionRequest>;\n\nexport const ConnectionResponse = z.object({\n connection: ConnectionMetadata,\n});\nexport type ConnectionResponse = z.infer<typeof ConnectionResponse>;\n\nexport const ListConnectionsResponse = z.object({\n connections: z.array(ConnectionMetadata),\n});\nexport type ListConnectionsResponse = z.infer<typeof ListConnectionsResponse>;\n\nexport const OAuthStartRequest = z\n .object({\n providerDomain: z.string().min(1).optional(),\n mcpUrl: z.string().url().optional(),\n resource: z.string().url().optional(),\n requestedScopes: z.array(z.string().min(1)).default([]),\n returnPath: z.string().min(1).optional(),\n returnUrl: z.string().min(1).max(4096).optional(),\n connectionId: z.string().uuid().optional(),\n ownership: ConnectionOwnership.optional(),\n oauthClient: z\n .object({\n clientId: z.string().min(1),\n clientSecret: z.string().min(1).optional(),\n tokenEndpointAuthMethod: z\n .enum([\"none\", \"client_secret_post\", \"client_secret_basic\"])\n .optional(),\n })\n .optional(),\n })\n .refine((value) => Boolean(value.mcpUrl ?? value.resource), {\n message: \"mcpUrl is required\",\n path: [\"mcpUrl\"],\n });\nexport type OAuthStartRequest = z.infer<typeof OAuthStartRequest>;\n\nexport const OAuthStartResponse = z.object({\n state: z.string().min(1),\n authorizationUrl: z.string().url().nullable(),\n expiresAt: z.string(),\n});\nexport type OAuthStartResponse = z.infer<typeof OAuthStartResponse>;\n\nexport const IntegrationClientMetadata = z.object({\n client_id: z.string().url(),\n client_name: z.literal(\"OpenGeni\"),\n redirect_uris: z.array(z.string().url()),\n token_endpoint_auth_method: z.literal(\"none\"),\n grant_types: z.array(z.enum([\"authorization_code\", \"refresh_token\"])),\n response_types: z.array(z.literal(\"code\")),\n});\nexport type IntegrationClientMetadata = z.infer<typeof IntegrationClientMetadata>;\n\nexport const MarketingDailyAnalysisTaskRequest = z.object({\n name: z.string().min(1).optional(),\n connectionIds: z.array(z.string().uuid()).default([]),\n documentBaseIds: z.array(z.string().uuid()).default([]),\n timeZone: z.string().min(1).default(\"UTC\"),\n hour: z.number().int().min(0).max(23).default(9),\n minute: z.number().int().min(0).max(59).default(0),\n promptInstructions: z.string().min(1).optional(),\n status: ScheduledTaskStatus.default(\"active\"),\n runMode: ScheduledTaskRunMode.default(\"new_session_per_run\"),\n overlapPolicy: ScheduledTaskOverlapPolicy.default(\"skip\"),\n});\nexport type MarketingDailyAnalysisTaskRequest = z.infer<typeof MarketingDailyAnalysisTaskRequest>;\n\nexport const CapabilityKind = z.enum([\"pack\", \"mcp\", \"api\", \"skill\", \"plugin\"]);\nexport type CapabilityKind = z.infer<typeof CapabilityKind>;\n\nexport const CapabilitySource = z.enum([\n \"built_in\",\n \"library\",\n \"configured\",\n \"public_registry\",\n \"registry\",\n \"manual\",\n]);\nexport type CapabilitySource = z.infer<typeof CapabilitySource>;\n\nexport const CapabilityInstallationStatus = z.enum([\"active\", \"disabled\"]);\nexport type CapabilityInstallationStatus = z.infer<typeof CapabilityInstallationStatus>;\n\nexport const CapabilityCatalogAuthKind = z.enum([\"oauth2\", \"api_key\", \"none\", \"unknown\"]);\nexport type CapabilityCatalogAuthKind = z.infer<typeof CapabilityCatalogAuthKind>;\n\nexport const CapabilityCatalogTier = z.enum([\"verified\", \"community\"]);\nexport type CapabilityCatalogTier = z.infer<typeof CapabilityCatalogTier>;\n\n/**\n * User-facing lifecycle truth for the Capabilities control center. This is a\n * read-model projection only: each action is still executed by the owning\n * Plugin, Integration, Connection, Skill, or Pack domain.\n */\nexport const CapabilityLifecycleStatus = z.enum([\n \"available\",\n \"installed\",\n \"connected\",\n \"ready\",\n \"needs_attention\",\n \"unavailable\",\n \"managed\",\n]);\nexport type CapabilityLifecycleStatus = z.infer<typeof CapabilityLifecycleStatus>;\n\nexport const CapabilityReadiness = z.enum([\"ready\", \"setup_required\", \"attention\", \"unavailable\"]);\nexport type CapabilityReadiness = z.infer<typeof CapabilityReadiness>;\n\nexport const CapabilityAction = z.enum([\n \"install\",\n \"connect\",\n \"configure\",\n \"update\",\n \"repair\",\n \"disconnect\",\n \"uninstall\",\n \"inspect\",\n]);\nexport type CapabilityAction = z.infer<typeof CapabilityAction>;\n\nexport const CapabilityLifecycle = z.object({\n status: CapabilityLifecycleStatus,\n readiness: CapabilityReadiness,\n detail: z.string().nullable().default(null),\n managedBy: z.enum([\"deployment\", \"platform\", \"workspace\"]).nullable().default(null),\n});\nexport type CapabilityLifecycle = z.infer<typeof CapabilityLifecycle>;\n\nexport const CapabilityRuntime = z.object({\n available: z.boolean().default(false),\n mcpServerId: z.string().min(1).optional(),\n transport: z.string().min(1).optional(),\n notes: z.string().nullable().default(null),\n // Registry exposure provenance is server-derived and contains no endpoint or\n // credential material.\n catalogTrust: z\n .object({\n state: z.enum([\"trusted\", \"legacy_active\", \"unverified\"]),\n reason: z.enum([\n \"trusted_source\",\n \"verified_probe\",\n \"active_installation_compatibility\",\n \"missing_verification\",\n ]),\n })\n .optional(),\n});\nexport type CapabilityRuntime = z.infer<typeof CapabilityRuntime>;\n\nexport const CapabilityCatalogItem = z.object({\n id: z.string().min(1),\n accountId: z.string().uuid().optional(),\n workspaceId: z.string().uuid().optional(),\n kind: CapabilityKind,\n source: CapabilitySource,\n name: z.string().min(1),\n description: z.string().nullable().default(null),\n category: z.string().min(1).default(\"custom\"),\n tags: z.array(z.string().min(1)).default([]),\n homepageUrl: z.string().url().nullable().default(null),\n endpointUrl: z.string().url().nullable().default(null),\n installUrl: z.string().url().nullable().default(null),\n authModel: z.string().min(1).nullable().default(null),\n providerDomain: z.string().min(1).nullable().default(null),\n surfaceType: z.string().min(1).nullable().default(null),\n transport: z.string().min(1).nullable().default(null),\n mcpUrl: z.string().url().nullable().default(null),\n authKind: CapabilityCatalogAuthKind.nullable().default(null),\n credentialFacts: z.array(z.record(z.string(), z.unknown())).default([]),\n tier: CapabilityCatalogTier.nullable().default(null),\n provenance: z.string().min(1).nullable().default(null),\n logoAssetPath: z.string().min(1).nullable().default(null),\n importBatchId: z.string().uuid().nullable().default(null),\n stale: z.boolean().default(false),\n staleAt: z.string().nullable().default(null),\n tools: z.array(ToolRef).default([]),\n runtime: CapabilityRuntime.default({ available: false, notes: null }),\n lifecycle: CapabilityLifecycle.default({\n status: \"available\",\n readiness: \"setup_required\",\n detail: null,\n managedBy: null,\n }),\n actions: z.array(CapabilityAction).default([]),\n /**\n * @deprecated Compatibility projection for existing clients. New surfaces\n * must use lifecycle and actions rather than treating every type as an\n * enable/disable toggle.\n */\n enabled: z.boolean().default(false),\n /** @deprecated Compatibility explanation paired with enabled. */\n enabledReason: z.string().nullable().default(null),\n // The non-secret connection binding stored with an enabled installation.\n // Native workspace refs retain an exact row id. Native subject refs omit it\n // so each caller resolves their own row. The first-party catalog projects a\n // host-owned installation as null for old-browser safety; the schema remains\n // tolerant of additive host projections from embedding-specific catalogs.\n connectionRef: z\n .object({\n connectionId: z.string().min(1).optional(),\n authoritySource: z.literal(\"host\").optional(),\n providerDomain: z.string().min(1),\n kind: z.string().min(1),\n subjectScope: z.enum([\"workspace\", \"subject\"]).optional(),\n })\n .nullable()\n .default(null),\n metadata: z.record(z.string(), z.unknown()).default({}),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n});\nexport type CapabilityCatalogItem = z.infer<typeof CapabilityCatalogItem>;\n\n/**\n * Shared trust gate for catalog visibility and runtime selection. Registry rows\n * remain durable for provenance and audit, but only a reviewed real-MCP probe\n * with known authentication is exposable. API-key rows additionally need a\n * machine-actionable header contract; prose credential instructions are not a\n * runtime contract and must fail closed.\n */\nexport function capabilityCatalogItemIsTrustedForExposure(\n item: Pick<CapabilityCatalogItem, \"source\" | \"stale\" | \"authKind\" | \"metadata\">,\n): boolean {\n if (item.stale) return false;\n if (item.source !== \"registry\") return true;\n const probe = item.metadata.mcpProbe;\n if (!probe || typeof probe !== \"object\" || Array.isArray(probe)) return false;\n if ((probe as Record<string, unknown>).status !== \"real\") return false;\n if (item.authKind === null || item.authKind === \"unknown\") return false;\n if (item.authKind !== \"api_key\") return true;\n const contract = item.metadata.authContract;\n if (!contract || typeof contract !== \"object\" || Array.isArray(contract)) return false;\n const record = contract as Record<string, unknown>;\n return (\n typeof record.headerName === \"string\" &&\n /^[A-Za-z0-9!#$%&'*+.^_`|~-]+$/.test(record.headerName) &&\n typeof record.scheme === \"string\" &&\n record.scheme.trim().length > 0\n );\n}\n\nexport const CapabilityInstallation = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n capabilityId: z.string().min(1),\n kind: CapabilityKind,\n status: CapabilityInstallationStatus,\n config: z.record(z.string(), z.unknown()),\n metadata: z.record(z.string(), z.unknown()),\n enabledAt: z.string(),\n updatedAt: z.string(),\n});\nexport type CapabilityInstallation = z.infer<typeof CapabilityInstallation>;\n\nexport const CreateCapabilityCatalogItemRequest = z.object({\n id: z.string().min(1).optional(),\n kind: z.literal(\"mcp\"),\n source: CapabilitySource.default(\"manual\"),\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n category: z.string().min(1).default(\"custom\"),\n tags: z.array(z.string().min(1)).default([]),\n homepageUrl: z.string().url().optional(),\n endpointUrl: z.string().url().optional(),\n installUrl: z.string().url().optional(),\n authModel: z.string().min(1).optional(),\n metadata: z.record(z.string(), z.unknown()).default({}),\n});\nexport type CreateCapabilityCatalogItemRequest = z.infer<typeof CreateCapabilityCatalogItemRequest>;\n\nexport const EnableCapabilityRequest = z.object({\n config: z.record(z.string(), z.unknown()).default({}),\n metadata: z.record(z.string(), z.unknown()).default({}),\n connectionRef: McpServerConnectionRef.optional(),\n /**\n * Credential headers for remote MCP capabilities (for example an\n * Authorization bearer token). Values are encrypted at rest with the\n * workspace-variable-sets key, injected only into the runtime MCP client,\n * and never returned by the API — responses expose header names only.\n */\n headers: z.record(z.string(), z.string()).default({}),\n});\nexport type EnableCapabilityRequest = z.infer<typeof EnableCapabilityRequest>;\n\nexport const CapabilityCatalogResponse = z.object({\n items: z.array(CapabilityCatalogItem),\n installations: z.array(CapabilityInstallation),\n});\nexport type CapabilityCatalogResponse = z.infer<typeof CapabilityCatalogResponse>;\n\nexport const DiscoverMcpCapabilitiesResponse = z.object({\n items: z.array(CapabilityCatalogItem),\n source: z.literal(\"official_mcp_registry\"),\n sourceUrl: z.string().url(),\n});\nexport type DiscoverMcpCapabilitiesResponse = z.infer<typeof DiscoverMcpCapabilitiesResponse>;\n\nexport const SkillImportSource = z.enum([\"github\", \"skills_sh\"]);\nexport type SkillImportSource = z.infer<typeof SkillImportSource>;\n\nexport const SkillInstallationSource = z.enum([\"library\", \"github\", \"skills_sh\", \"pack\"]);\nexport type SkillInstallationSource = z.infer<typeof SkillInstallationSource>;\n\nexport const PreviewSkillImportRequest = z.object({\n url: z.string().url().max(2048),\n});\nexport type PreviewSkillImportRequest = z.infer<typeof PreviewSkillImportRequest>;\n\nexport const SkillImportFileSummary = z.object({\n path: z.string().min(1).max(1024),\n byteSize: z.number().int().nonnegative().max(262144),\n contentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n});\nexport type SkillImportFileSummary = z.infer<typeof SkillImportFileSummary>;\n\nexport const SkillImportPreview = z.object({\n source: SkillImportSource,\n sourceUrl: z.string().url(),\n repositoryUrl: z.string().url(),\n owner: z.string().min(1).max(100),\n repository: z.string().min(1).max(100),\n sourcePath: z.string().min(1).max(1024),\n sourceCommit: z.string().regex(/^[0-9a-f]{40,64}$/),\n name: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/),\n description: z.string().min(1).max(2048),\n contentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n totalBytes: z.number().int().positive().max(1048576),\n files: z.array(SkillImportFileSummary).min(1).max(128),\n warnings: z.array(z.string().min(1).max(500)).max(32).default([]),\n installed: z.boolean().default(false),\n installationVersion: z.number().int().positive().nullable().default(null),\n});\nexport type SkillImportPreview = z.infer<typeof SkillImportPreview>;\n\nexport const InstallSkillRequest = z.object({\n url: z.string().url().max(2048),\n expectedSourceCommit: z.string().regex(/^[0-9a-f]{40,64}$/),\n expectedContentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n expectedInstallationVersion: z.number().int().positive().optional(),\n});\nexport type InstallSkillRequest = z.infer<typeof InstallSkillRequest>;\n\nexport const InstallLibrarySkillRequest = z\n .object({\n expectedVersion: z.string().min(1).max(96),\n expectedContentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n expectedInstallationVersion: z.number().int().positive().optional(),\n })\n .strict();\nexport type InstallLibrarySkillRequest = z.infer<typeof InstallLibrarySkillRequest>;\n\nexport const InstalledSkill = z.object({\n skillReceipt: SkillWriteReceipt.optional(),\n capabilityId: z.string().min(1),\n pluginId: z.string().uuid(),\n pluginVersionId: z.string().uuid(),\n facetId: z.string().uuid(),\n pluginInstallationId: z.string().uuid(),\n facetInstallationId: z.string().uuid(),\n installationVersion: z.number().int().positive(),\n source: SkillInstallationSource,\n version: z.string().min(1).max(96),\n sourceUrl: z.string().url(),\n sourceCommit: z.string().regex(/^[0-9a-f]{40,64}$/),\n contentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n name: z.string(),\n status: z.literal(\"installed\"),\n});\nexport type InstalledSkill = z.infer<typeof InstalledSkill>;\n\nexport const CapabilityComponentOwner = z.object({\n kind: z.enum([\"direct\", \"plugin\", \"pack\", \"migration\"]),\n id: z.string().min(1).max(512),\n removable: z.boolean(),\n});\nexport type CapabilityComponentOwner = z.infer<typeof CapabilityComponentOwner>;\n\nexport const InstalledSkillSummary = z\n .object({\n capabilityId: z.string().min(1),\n pluginKey: z.string().min(1).max(200),\n installationVersion: z.number().int().positive(),\n name: z.string().min(1).max(200),\n description: z.string().max(4000),\n category: z.string().min(1).max(100),\n tags: z.array(z.string().min(1).max(100)).max(64),\n provenance: z.string().min(1).max(4000),\n source: SkillInstallationSource,\n version: z.string().min(1).max(96),\n sourceUrl: z.string().url().max(2048),\n repositoryUrl: z.string().url().max(2048),\n sourceCommit: z.string().regex(/^[0-9a-f]{40,64}$/),\n sourcePath: z.string().min(1).max(1024),\n contentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n fileCount: z.number().int().positive().max(128),\n totalBytes: z.number().int().positive().max(1048576),\n license: z.string().min(1).max(200).nullable(),\n installedAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n owners: z.array(CapabilityComponentOwner).min(1),\n })\n .strict();\nexport type InstalledSkillSummary = z.infer<typeof InstalledSkillSummary>;\n\nexport const ListInstalledSkillsResponse = z\n .object({ skills: z.array(InstalledSkillSummary).max(1000) })\n .strict();\nexport type ListInstalledSkillsResponse = z.infer<typeof ListInstalledSkillsResponse>;\n\nexport const SkillUninstallPreview = z.object({\n capabilityId: z.string().min(1),\n installed: z.boolean(),\n installationVersion: z.number().int().positive().nullable(),\n directOwner: CapabilityComponentOwner.nullable(),\n remainingOwners: z.array(CapabilityComponentOwner),\n removesRuntimeSkill: z.boolean(),\n});\nexport type SkillUninstallPreview = z.infer<typeof SkillUninstallPreview>;\n\nexport const UninstallSkillRequest = z.object({\n expectedInstallationVersion: z.number().int().positive(),\n});\nexport type UninstallSkillRequest = z.infer<typeof UninstallSkillRequest>;\n\nexport const UninstallSkillResult = z.object({\n skillReleases: z.array(SkillSourceReleaseReceipt).optional(),\n capabilityId: z.string().min(1),\n status: z.enum([\"not_installed\", \"uninstalled\", \"retained_by_other_owners\"]),\n remainingOwners: z.array(CapabilityComponentOwner),\n});\nexport type UninstallSkillResult = z.infer<typeof UninstallSkillResult>;\n\nexport const ApiIntegrationProtocol = z.enum([\"openapi\", \"graphql\"]);\nexport type ApiIntegrationProtocol = z.infer<typeof ApiIntegrationProtocol>;\n\nexport const IntegrationDefinitionProvenance = z.enum([\"curated\", \"workspace\"]);\nexport type IntegrationDefinitionProvenance = z.infer<typeof IntegrationDefinitionProvenance>;\n\nexport const IntegrationFacetKey = z\n .string()\n .min(1)\n .max(200)\n .regex(/^[a-z0-9](?:[a-z0-9._/-]*[a-z0-9])?$/);\nexport type IntegrationFacetKey = z.infer<typeof IntegrationFacetKey>;\n\nexport const IntegrationFacetKind = z.enum([\n \"tools\",\n \"knowledge_source\",\n \"inbound_trigger\",\n \"delivery_destination\",\n \"identity_link\",\n]);\nexport type IntegrationFacetKind = z.infer<typeof IntegrationFacetKind>;\n\nexport const IntegrationFacetStatus = z.enum([\"active\", \"paused\", \"needs_attention\", \"disabled\"]);\nexport type IntegrationFacetStatus = z.infer<typeof IntegrationFacetStatus>;\n\nconst IntegrationFacetJsonObject = z.record(z.string(), z.unknown()).superRefine((value, ctx) => {\n let serialized: string;\n try {\n serialized = JSON.stringify(value);\n } catch {\n ctx.addIssue({ code: \"custom\", message: \"must be JSON serializable\" });\n return;\n }\n if (new TextEncoder().encode(serialized).byteLength > 131_072) {\n ctx.addIssue({\n code: \"custom\",\n message: \"must not exceed 131072 UTF-8 bytes\",\n });\n }\n});\n\nexport const IntegrationFacetDefinitionSummary = z\n .object({\n facetKey: IntegrationFacetKey,\n kind: IntegrationFacetKind.exclude([\"tools\"]),\n configSchema: IntegrationFacetJsonObject,\n capabilities: IntegrationFacetJsonObject,\n })\n .strict();\nexport type IntegrationFacetDefinitionSummary = z.infer<typeof IntegrationFacetDefinitionSummary>;\n\n/**\n * Presentation-only consent copy for an integration or connector. Never grants\n * a scope, selects a connection, or replaces server-side authorization; the UI\n * falls back to generic copy for any omitted field.\n */\nexport const IntegrationPresentation = z\n .object({\n providerName: z.string().min(1).max(120).optional(),\n icon: z.enum([\"calendar\", \"cloud\", \"contacts\", \"files\", \"mail\"]).optional(),\n introduction: z.string().min(1).max(500).optional(),\n capabilities: z\n .array(\n z\n .object({\n title: z.string().min(1).max(160),\n description: z.string().min(1).max(500),\n })\n .strict(),\n )\n .max(8)\n .optional(),\n permissionSummary: z.string().min(1).max(500).optional(),\n scopeLabels: z\n .record(\n z.string().min(1).max(1024),\n z\n .object({\n label: z.string().min(1).max(160),\n description: z.string().min(1).max(500),\n })\n .strict(),\n )\n .optional(),\n })\n .strict();\nexport type IntegrationPresentation = z.infer<typeof IntegrationPresentation>;\n\nexport const IntegrationDefinitionSummary = z\n .object({\n id: z.string().min(1).max(128),\n name: z.string().min(1).max(200),\n summary: z.string().min(1).max(1000),\n protocol: z.literal(\"openapi\"),\n provider: z\n .object({\n id: z.enum([\"google\", \"microsoft\"]),\n domain: z.string().min(1).max(253),\n })\n .strict(),\n authentication: z\n .object({\n kind: z.literal(\"oauth2\"),\n scopes: z.array(z.string().min(1).max(1024)).max(256),\n })\n .strict(),\n presentation: IntegrationPresentation.optional(),\n facets: z.array(IntegrationFacetDefinitionSummary).max(128),\n })\n .strict();\nexport type IntegrationDefinitionSummary = z.infer<typeof IntegrationDefinitionSummary>;\n\nexport const ListIntegrationDefinitionsResponse = z\n .object({ definitions: z.array(IntegrationDefinitionSummary).max(128) })\n .strict();\nexport type ListIntegrationDefinitionsResponse = z.infer<typeof ListIntegrationDefinitionsResponse>;\n\nexport const IntegrationInstanceKey = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9._/-]*[a-z0-9])?$/);\nexport type IntegrationInstanceKey = z.infer<typeof IntegrationInstanceKey>;\n\nexport const IntegrationFacetBindingSummary = z\n .object({\n id: z.string().uuid(),\n facetKey: IntegrationFacetKey,\n kind: IntegrationFacetKind.exclude([\"tools\"]),\n bindingKey: IntegrationInstanceKey,\n displayName: z.string().min(1).max(200),\n connectionId: z.string().uuid().nullable(),\n status: IntegrationFacetStatus,\n config: IntegrationFacetJsonObject,\n version: z.number().int().positive(),\n hasCursor: z.boolean(),\n lastSuccessAt: z.string().datetime({ offset: true }).nullable(),\n lastErrorCode: z.string().min(1).max(120).nullable(),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n directlyOwned: z.boolean(),\n owners: z.array(CapabilityComponentOwner),\n })\n .strict();\nexport type IntegrationFacetBindingSummary = z.infer<typeof IntegrationFacetBindingSummary>;\n\nexport const IntegrationInstanceFacetsResponse = z\n .object({\n capabilityId: z.string().min(1).max(512),\n instanceKey: IntegrationInstanceKey,\n providerDomain: z.string().min(1).max(253),\n connectionId: z.string().uuid().nullable(),\n facets: z\n .array(\n z\n .object({\n definition: IntegrationFacetDefinitionSummary,\n binding: IntegrationFacetBindingSummary.nullable(),\n })\n .strict(),\n )\n .max(128),\n })\n .strict();\nexport type IntegrationInstanceFacetsResponse = z.infer<typeof IntegrationInstanceFacetsResponse>;\n\nexport const UpsertIntegrationFacetRequest = z\n .object({\n displayName: z.string().min(1).max(200),\n config: IntegrationFacetJsonObject.default({}),\n expectedVersion: z.number().int().positive().optional(),\n idempotencyKey: z.string().uuid(),\n })\n .strict();\nexport type UpsertIntegrationFacetRequest = z.infer<typeof UpsertIntegrationFacetRequest>;\n\nexport const MutateIntegrationFacetRequest = z\n .object({\n expectedVersion: z.number().int().positive(),\n idempotencyKey: z.string().uuid(),\n })\n .strict();\nexport type MutateIntegrationFacetRequest = z.infer<typeof MutateIntegrationFacetRequest>;\n\nexport const IntegrationFacetMutationResult = z\n .object({\n capabilityId: z.string().min(1).max(512),\n instanceKey: IntegrationInstanceKey,\n facetKey: IntegrationFacetKey,\n status: z.enum([\"configured\", \"paused\", \"active\"]),\n binding: IntegrationFacetBindingSummary,\n })\n .strict();\nexport type IntegrationFacetMutationResult = z.infer<typeof IntegrationFacetMutationResult>;\n\nexport const IntegrationFacetRemovalResult = z\n .object({\n capabilityId: z.string().min(1).max(512),\n instanceKey: IntegrationInstanceKey,\n facetKey: IntegrationFacetKey,\n status: z.enum([\"not_configured\", \"removed\", \"retained_by_other_owners\"]),\n binding: IntegrationFacetBindingSummary.nullable(),\n remainingOwners: z.array(CapabilityComponentOwner),\n })\n .strict();\nexport type IntegrationFacetRemovalResult = z.infer<typeof IntegrationFacetRemovalResult>;\n\nexport const IntegrationSource = z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"definition\"),\n definitionId: z.string().min(1).max(128),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"openapi\"),\n url: z.string().url().max(2048),\n baseUrl: z.string().url().max(2048).optional(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"graphql\"),\n endpoint: z.string().url().max(2048),\n name: z.string().min(1).max(200).optional(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"auto\"),\n url: z.string().url().max(2048),\n baseUrl: z.string().url().max(2048).optional(),\n })\n .strict(),\n]);\nexport type IntegrationSource = z.infer<typeof IntegrationSource>;\n\nexport const PreviewApiIntegrationRequest = z\n .object({\n source: IntegrationSource,\n connectionId: z.string().uuid().optional(),\n ownership: ConnectionOwnership.optional(),\n })\n .strict();\nexport type PreviewApiIntegrationRequest = z.infer<typeof PreviewApiIntegrationRequest>;\n\nexport const ApiIntegrationOAuthStartRequest = z\n .object({\n definitionId: z.string().min(1).max(128),\n ownership: ConnectionOwnership.optional(),\n connectionId: z.string().uuid().optional(),\n returnPath: z.string().min(1).max(2048).optional(),\n })\n .strict();\nexport type ApiIntegrationOAuthStartRequest = z.infer<typeof ApiIntegrationOAuthStartRequest>;\n\nexport const API_INTEGRATION_OAUTH_CREDENTIAL_ROLE = \"api_integration_oauth\" as const;\n\nexport const ApiIntegrationOAuthConnectionMetadata = z\n .object({\n credentialRole: z.literal(API_INTEGRATION_OAUTH_CREDENTIAL_ROLE),\n providerFamily: z.enum([\"google\", \"microsoft\"]),\n providerPrincipalId: z.string().min(1).max(512),\n providerEmail: z.string().min(1).max(512).nullable(),\n providerDisplayName: z.string().min(1).max(512).nullable(),\n authorizedDefinitionIds: z.array(z.string().min(1).max(128)).min(1).max(32),\n verifiedAt: z.string().datetime({ offset: true }),\n })\n .passthrough();\nexport type ApiIntegrationOAuthConnectionMetadata = z.infer<\n typeof ApiIntegrationOAuthConnectionMetadata\n>;\n\nexport const ApiIntegrationAuthPreview = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"none\") }).strict(),\n z\n .object({\n kind: z.literal(\"oauth2\"),\n providerDomain: z.string().min(1).max(253),\n scopes: z.array(z.string().min(1).max(1024)).max(256),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"api_key\"),\n providerDomain: z.string().min(1).max(253),\n carrier: z.enum([\"header\", \"query\", \"cookie\"]),\n name: z.string().min(1).max(256),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"http\"),\n providerDomain: z.string().min(1).max(253),\n scheme: z.string().min(1).max(64),\n })\n .strict(),\n]);\nexport type ApiIntegrationAuthPreview = z.infer<typeof ApiIntegrationAuthPreview>;\n\nexport const ApiIntegrationToolPreview = z\n .object({\n id: z.string().min(1).max(200),\n operationKey: z.string().min(1).max(512),\n name: z.string().min(1).max(200),\n description: z.string().max(4000),\n safety: z.enum([\"read\", \"write\", \"destructive\"]),\n approvalMode: z.enum([\"never\", \"ask\"]),\n deprecated: z.boolean(),\n })\n .strict();\nexport type ApiIntegrationToolPreview = z.infer<typeof ApiIntegrationToolPreview>;\n\nexport const ApiIntegrationPreview = z\n .object({\n source: IntegrationSource,\n definitionId: z.string().min(1).max(200),\n definitionProvenance: IntegrationDefinitionProvenance,\n protocol: ApiIntegrationProtocol,\n capabilityId: z.string().min(1).max(512),\n pluginKey: z.string().min(1).max(200),\n serverId: SessionMcpServerId,\n name: z.string().min(1).max(200),\n description: z.string().max(4000).nullable(),\n provider: z.string().min(1).max(128).nullable(),\n providerDomain: z.string().min(1).max(253),\n baseUrl: z.string().url().max(2048),\n sourceUrl: z.string().url().max(2048).nullable(),\n revisionId: z.string().min(1).max(96),\n contentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n auth: ApiIntegrationAuthPreview,\n connectionId: z.string().uuid().nullable(),\n connectionOwnership: ConnectionOwnership.nullable(),\n tools: z.array(ApiIntegrationToolPreview).min(1).max(2000),\n warnings: z.array(z.string().min(1).max(500)).max(32).default([]),\n })\n .strict();\nexport type ApiIntegrationPreview = z.infer<typeof ApiIntegrationPreview>;\n\nexport const InstallApiIntegrationRequest = z\n .object({\n source: IntegrationSource,\n expectedRevisionId: z.string().min(1).max(96),\n expectedContentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n connectionId: z.string().uuid().optional(),\n ownership: ConnectionOwnership.optional(),\n instanceKey: IntegrationInstanceKey.optional(),\n displayName: z.string().min(1).max(200).optional(),\n expectedInstanceVersion: z.number().int().positive().optional(),\n allowedTools: z.array(z.string().min(1).max(200)).max(2000).optional(),\n })\n .strict();\nexport type InstallApiIntegrationRequest = z.infer<typeof InstallApiIntegrationRequest>;\n\nexport const InstalledApiIntegration = z\n .object({\n capabilityId: z.string().min(1),\n pluginId: z.string().uuid(),\n pluginVersionId: z.string().uuid(),\n integrationFacetId: z.string().uuid(),\n apiFacetId: z.string().uuid(),\n pluginInstallationId: z.string().uuid(),\n integrationFacetInstallationId: z.string().uuid(),\n apiFacetInstallationId: z.string().uuid(),\n installationVersion: z.number().int().positive(),\n instanceId: z.string().uuid(),\n instanceKey: IntegrationInstanceKey,\n displayName: z.string().min(1).max(200),\n instanceVersion: z.number().int().positive(),\n revisionId: z.string().min(1),\n serverId: SessionMcpServerId,\n status: z.literal(\"installed\"),\n })\n .strict();\nexport type InstalledApiIntegration = z.infer<typeof InstalledApiIntegration>;\n\nexport const ApiIntegrationInstallationSummary = z\n .object({\n capabilityId: z.string().min(1),\n pluginKey: z.string().min(1),\n installationVersion: z.number().int().positive(),\n instanceId: z.string().uuid(),\n instanceKey: IntegrationInstanceKey,\n displayName: z.string().min(1).max(200),\n instanceVersion: z.number().int().positive(),\n serverId: SessionMcpServerId,\n name: z.string().min(1),\n description: z.string().nullable(),\n protocol: ApiIntegrationProtocol,\n definitionId: z.string().min(1).max(200),\n definitionProvenance: IntegrationDefinitionProvenance,\n providerDomain: z.string().min(1),\n baseUrl: z.string().url(),\n sourceUrl: z.string().url().nullable(),\n connected: z.boolean(),\n requiresConnection: z.boolean(),\n connectionId: z.string().uuid().nullable(),\n ownership: z.enum([\"workspace\", \"personal\", \"none\"]),\n allowedTools: z.array(z.string().min(1).max(200)).max(2000),\n toolCount: z.number().int().nonnegative(),\n approvalRequiredToolCount: z.number().int().nonnegative(),\n revisionId: z.string().min(1),\n contentSha256: z.string().regex(/^[0-9a-f]{64}$/),\n })\n .strict();\nexport type ApiIntegrationInstallationSummary = z.infer<typeof ApiIntegrationInstallationSummary>;\n\nexport const ListApiIntegrationsResponse = z\n .object({ integrations: z.array(ApiIntegrationInstallationSummary) })\n .strict();\nexport type ListApiIntegrationsResponse = z.infer<typeof ListApiIntegrationsResponse>;\n\nexport const ApiIntegrationUninstallPreview = z\n .object({\n capabilityId: z.string().min(1),\n instanceKey: IntegrationInstanceKey,\n displayName: z.string().min(1).max(200).nullable(),\n installed: z.boolean(),\n installationVersion: z.number().int().positive().nullable(),\n instanceVersion: z.number().int().positive().nullable(),\n directOwner: CapabilityComponentOwner.nullable(),\n remainingOwners: z.array(CapabilityComponentOwner),\n removesRuntimeIntegration: z.boolean(),\n removesDefinition: z.boolean(),\n })\n .strict();\nexport type ApiIntegrationUninstallPreview = z.infer<typeof ApiIntegrationUninstallPreview>;\n\nexport const UninstallApiIntegrationRequest = z\n .object({\n expectedInstallationVersion: z.number().int().positive(),\n expectedInstanceVersion: z.number().int().positive(),\n })\n .strict();\nexport type UninstallApiIntegrationRequest = z.infer<typeof UninstallApiIntegrationRequest>;\n\nexport const UninstallApiIntegrationResult = z\n .object({\n capabilityId: z.string().min(1),\n instanceKey: IntegrationInstanceKey,\n status: z.enum([\"not_installed\", \"uninstalled\", \"retained_by_other_owners\"]),\n remainingOwners: z.array(CapabilityComponentOwner),\n definitionStatus: z.enum([\"retained\", \"disabled\"]),\n })\n .strict();\nexport type UninstallApiIntegrationResult = z.infer<typeof UninstallApiIntegrationResult>;\n\nconst PluginComponentKey = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9._/-]*[a-z0-9])?$/);\n\nexport const PluginManifest = z\n .object({\n schemaVersion: z.literal(1),\n pluginKey: z\n .string()\n .min(1)\n .max(200)\n .regex(/^[a-z0-9](?:[a-z0-9._/-]*[a-z0-9])?$/),\n version: z.string().min(1).max(128),\n name: z.string().min(1).max(200),\n description: z.string().max(4000).default(\"\"),\n category: z.string().min(1).max(100).default(\"plugins\"),\n tags: z.array(z.string().min(1).max(100)).max(64).default([]),\n components: z\n .array(\n z.discriminatedUnion(\"kind\", [\n z\n .object({\n key: PluginComponentKey,\n kind: z.literal(\"skill\"),\n url: z.string().url(),\n })\n .strict(),\n z\n .object({\n key: PluginComponentKey,\n kind: z.literal(\"integration\"),\n source: IntegrationSource,\n })\n .strict(),\n z\n .object({\n key: PluginComponentKey,\n kind: z.literal(\"mcp\"),\n serverId: SessionMcpServerId,\n })\n .strict(),\n ]),\n )\n .min(1)\n .max(64),\n })\n .strict()\n .superRefine((manifest, context) => {\n const seen = new Set<string>();\n for (const [index, component] of manifest.components.entries()) {\n if (seen.has(component.key)) {\n context.addIssue({\n code: \"custom\",\n message: \"Plugin component keys must be unique\",\n path: [\"components\", index, \"key\"],\n });\n }\n seen.add(component.key);\n }\n });\nexport type PluginManifest = z.infer<typeof PluginManifest>;\n\nexport const PluginComponentBinding = z\n .object({\n connectionId: z.string().uuid().optional(),\n instanceKey: IntegrationInstanceKey.optional(),\n displayName: z.string().min(1).max(200).optional(),\n })\n .strict();\nexport type PluginComponentBinding = z.infer<typeof PluginComponentBinding>;\n\nexport const PreviewPluginRequest = z\n .object({\n url: z.string().url().max(2048),\n bindings: z.record(PluginComponentKey, PluginComponentBinding).default({}),\n })\n .strict();\nexport type PreviewPluginRequest = z.infer<typeof PreviewPluginRequest>;\n\nexport const PluginComponentPreview = z\n .object({\n key: PluginComponentKey,\n kind: z.enum([\"skill\", \"integration\", \"mcp\"]),\n name: z.string().min(1).max(200),\n capabilityId: z.string().min(1).max(512),\n digest: z.string().regex(/^[0-9a-f]{64}$/),\n connectionRequired: z.boolean(),\n connectionId: z.string().uuid().nullable(),\n instanceKey: IntegrationInstanceKey.nullable(),\n displayName: z.string().min(1).max(200).nullable(),\n facts: z.record(z.string(), z.unknown()),\n })\n .strict();\nexport type PluginComponentPreview = z.infer<typeof PluginComponentPreview>;\n\nexport const PluginUpdateDiff = z\n .object({\n fromVersion: z.string().nullable(),\n toVersion: z.string().min(1),\n added: z.array(PluginComponentKey),\n removed: z.array(PluginComponentKey),\n changed: z.array(PluginComponentKey),\n unchanged: z.array(PluginComponentKey),\n })\n .strict();\nexport type PluginUpdateDiff = z.infer<typeof PluginUpdateDiff>;\n\nexport const PluginPreview = z\n .object({\n sourceUrl: z.string().url(),\n manifest: PluginManifest,\n manifestDigest: z.string().regex(/^[0-9a-f]{64}$/),\n installed: z.boolean(),\n installationVersion: z.number().int().positive().nullable(),\n components: z.array(PluginComponentPreview).min(1).max(64),\n diff: PluginUpdateDiff,\n })\n .strict();\nexport type PluginPreview = z.infer<typeof PluginPreview>;\n\nexport const InstallPluginRequest = z\n .object({\n url: z.string().url().max(2048),\n expectedManifestDigest: z.string().regex(/^[0-9a-f]{64}$/),\n expectedComponents: z\n .array(\n z\n .object({\n key: PluginComponentKey,\n digest: z.string().regex(/^[0-9a-f]{64}$/),\n })\n .strict(),\n )\n .min(1)\n .max(64),\n bindings: z.record(PluginComponentKey, PluginComponentBinding).default({}),\n idempotencyKey: z.string().uuid(),\n expectedInstallationVersion: z.number().int().positive().optional(),\n })\n .strict();\nexport type InstallPluginRequest = z.infer<typeof InstallPluginRequest>;\n\nexport const InstalledPlugin = z\n .object({\n skillWrites: z.array(SkillWriteReceipt).optional(),\n skillPublications: z.array(SkillPublicationReceipt).optional(),\n skillReleases: z.array(SkillSourceReleaseReceipt).optional(),\n pluginKey: z.string().min(1),\n version: z.string().min(1),\n pluginId: z.string().uuid(),\n pluginVersionId: z.string().uuid(),\n pluginInstallationId: z.string().uuid(),\n installationVersion: z.number().int().positive(),\n componentCount: z.number().int().positive(),\n status: z.literal(\"installed\"),\n })\n .strict();\nexport type InstalledPlugin = z.infer<typeof InstalledPlugin>;\n\nexport const PluginInstallationSummary = z\n .object({\n pluginKey: z.string().min(1).max(200),\n version: z.string().min(1).max(128),\n name: z.string().min(1).max(200),\n description: z.string().max(4000),\n category: z.string().min(1).max(100),\n tags: z.array(z.string().min(1).max(100)).max(64),\n sourceUrl: z.string().url().max(2048).nullable(),\n manifestDigest: z.string().regex(/^[0-9a-f]{64}$/),\n installationVersion: z.number().int().positive(),\n componentCount: z.number().int().nonnegative().max(64),\n status: z.enum([\"active\", \"needs_attention\"]),\n installedAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type PluginInstallationSummary = z.infer<typeof PluginInstallationSummary>;\n\nexport const ListInstalledPluginsResponse = z\n .object({ plugins: z.array(PluginInstallationSummary).max(1000) })\n .strict();\nexport type ListInstalledPluginsResponse = z.infer<typeof ListInstalledPluginsResponse>;\n\nexport const PluginUninstallPreview = z\n .object({\n pluginKey: z.string().min(1),\n installed: z.boolean(),\n version: z.string().nullable(),\n installationVersion: z.number().int().positive().nullable(),\n components: z.array(\n z.object({\n capabilityId: z.string().min(1),\n kind: z.enum([\"skill\", \"integration\", \"mcp\"]),\n retainedByOtherOwners: z.boolean(),\n }),\n ),\n })\n .strict();\nexport type PluginUninstallPreview = z.infer<typeof PluginUninstallPreview>;\n\nexport const UninstallPluginRequest = z\n .object({\n expectedInstallationVersion: z.number().int().positive(),\n idempotencyKey: z.string().uuid(),\n })\n .strict();\nexport type UninstallPluginRequest = z.infer<typeof UninstallPluginRequest>;\n\nexport const UninstallPluginResult = z\n .object({\n skillReleases: z.array(SkillSourceReleaseReceipt).optional(),\n pluginKey: z.string().min(1),\n status: z.enum([\"not_installed\", \"uninstalled\"]),\n retainedComponents: z.array(z.string().min(1)),\n })\n .strict();\nexport type UninstallPluginResult = z.infer<typeof UninstallPluginResult>;\n\nexport const SessionBackgroundCommandState = z.enum([\"running\", \"stopping\", \"exited\", \"lost\"]);\nexport type SessionBackgroundCommandState = z.infer<typeof SessionBackgroundCommandState>;\n\nexport const SessionBackgroundCommandProvider = z.enum([\"managed\", \"connected_machine\"]);\nexport type SessionBackgroundCommandProvider = z.infer<typeof SessionBackgroundCommandProvider>;\n\nexport const SessionBackgroundCommandActivity = z\n .object({\n state: z.enum([\"running\", \"stopping\"]),\n count: z.number().int().positive(),\n unavailableCount: z.number().int().nonnegative().optional(),\n })\n .strict();\nexport type SessionBackgroundCommandActivity = z.infer<typeof SessionBackgroundCommandActivity>;\n\nexport const SessionCommandFailure = z\n .object({\n code: z.string().regex(/^[A-Za-z0-9_-]{1,128}$/),\n detail: z.record(z.string().max(128), z.string().max(2048)).optional(),\n retryable: z.literal(false),\n })\n .refine(\n (failure) =>\n Object.keys(failure.detail ?? {}).length <= 32 &&\n new TextEncoder().encode(JSON.stringify(failure)).byteLength <= 4096,\n \"Command failure metadata exceeds its retained bound\",\n );\nexport type SessionCommandFailure = z.infer<typeof SessionCommandFailure>;\n\nexport const SessionBackgroundCommand = z\n .object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n provider: SessionBackgroundCommandProvider,\n state: SessionBackgroundCommandState,\n observationStatus: z.literal(\"unavailable\").optional(),\n commandPreview: z.string().max(512),\n cancelRequestedAt: z.string().nullable(),\n exitCode: z.number().int().nullable(),\n settlementReason: z.string().nullable(),\n failure: SessionCommandFailure.optional(),\n startedAt: z.string(),\n settledAt: z.string().nullable(),\n completionObservedAt: z.string().nullable().optional(),\n updatedAt: z.string(),\n })\n .strict();\nexport type SessionBackgroundCommand = z.infer<typeof SessionBackgroundCommand>;\n\nexport const CommandReadInput = /* @__PURE__ */ (() =>\n z\n .object({\n commandId: z.string().uuid(),\n cursor: z.string().max(128).optional(),\n waitSeconds: z.number().int().min(0).max(50).optional(),\n maxOutputBytes: z.number().int().min(4).max(65_536).optional(),\n })\n .strict())();\nexport type CommandReadInput = z.infer<typeof CommandReadInput>;\n\nexport const CommandReadResult = /* @__PURE__ */ (() =>\n z\n .object({\n commandId: z.string().uuid(),\n state: SessionBackgroundCommandState,\n exitCode: z.number().int().nullable(),\n settlementReason: z.string().nullable().optional(),\n // A physical zero exit is not success when runner output delivery failed.\n failure: SessionCommandFailure.optional(),\n terminal: z.boolean(),\n completionObservedAt: z.string().nullable(),\n freshness: z\n .object({\n status: z.literal(\"refresh_unavailable\"),\n retryable: z.literal(true),\n })\n .optional(),\n chunks: z\n .array(\n z.object({\n sequence: z.number().int().nonnegative(),\n stream: z.enum([\"stdout\", \"stderr\"]),\n streamFidelity: z.enum([\"separate\", \"merged\", \"unknown\"]),\n chunk: z.string(),\n }),\n )\n .max(64),\n nextCursor: z.string(),\n hasMore: z.boolean(),\n retention: z.object({\n source: z.literal(\"retained_session_events\"),\n completeness: z.literal(\"unknown\"),\n gaps: z.array(z.string()),\n }),\n waitedMs: z.number().nonnegative(),\n timedOut: z.boolean(),\n aborted: z.boolean(),\n liveFanout: z.boolean(),\n })\n .strict())();\nexport type CommandReadResult = z.infer<typeof CommandReadResult>;\n\nexport const SessionBackgroundCommandListResponse = z\n .object({ commands: z.array(SessionBackgroundCommand).max(1000) })\n .strict();\nexport type SessionBackgroundCommandListResponse = z.infer<\n typeof SessionBackgroundCommandListResponse\n>;\n\nexport const CancelSessionBackgroundCommandResult = z\n .object({ command: SessionBackgroundCommand, accepted: z.boolean() })\n .strict();\nexport type CancelSessionBackgroundCommandResult = z.infer<\n typeof CancelSessionBackgroundCommandResult\n>;\n\nexport const Session = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.object({\n bundledSkillIds: BundledSkillSelection.optional(),\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n accountId: z.string().uuid(),\n status: SessionStatus,\n /** Additive list projection. Detail reads may omit it. */\n backgroundCommandActivity: SessionBackgroundCommandActivity.optional(),\n /** Current non-deleted schedules targeting this session, including paused schedules. */\n hasSchedules: z.boolean().optional(),\n initialMessage: z.string(),\n title: z.string().nullable(),\n titleSource: z.enum([\"user\", \"agent\"]).nullable(),\n // Per-session agent persona/system instructions supplied at create. Org-visible\n // metadata (exposed like title/goal), never a secret and never a timeline event.\n // null when the session carried none.\n instructions: z.string().nullable(),\n // Immutable prompt-policy role binding. This is separate from human\n // workspace membership roles and from memory selectors. Null keeps the\n // compatibility fallback to a normalized metadata.role value.\n policyRole: WorkspaceInstructionPolicyRoleKeyInput.nullable().default(null),\n /** Agent-to-agent reach declared at create; see {@link SessionAgentAccess}. */\n agentAccess: SessionAgentAccess.default(\"workspace\"),\n /** Canonical native/asUser scope identity; null for unscoped service work. */\n scopeSubjectId: SessionScopeSubjectId.nullable().default(null),\n /** Typed Memory selector frozen at create; see {@link SessionMemoryScope}. */\n memoryScope: SessionMemoryScope.default(\"workspace\"),\n resources: z.array(ResourceRef),\n skills: SessionSkills.default([]),\n tools: z.array(ToolRef),\n // Origin and optimistic-concurrency fence for the durable session policy.\n toolPolicy: SessionToolPolicy,\n toolPolicyVersion: z.number().int().positive(),\n // Secret-safe current resolution, computed at an API/read or execution\n // boundary from IDs only. Optional because internal DB readers need not load\n // the workspace runtime registry.\n effectiveToolPolicy: SessionEffectiveToolPolicy.optional(),\n metadata: z.record(z.string(), z.unknown()),\n /** Additive public tenancy projection; omitted by legacy/internal readers. */\n tenancy: SessionTenancyPublicProjection.optional(),\n /** Frozen creator fact used only for creation attribution/idempotent repair. */\n createdBy: TurnInitiator,\n createdByContext: TurnInitiatorContext,\n // Read projection: latest turn.started policy, or creation policy before any turn starts.\n // Accepted/queued turns and actor composer drafts retain their own explicit policy.\n model: z.string(),\n reasoningEffort: ReasoningEffort,\n latencyMode: LatencyMode,\n sandboxBackend: SandboxBackend,\n // The OS the session's box runs. Defaults to 'linux' (today's only OS).\n sandboxOs: SandboxOs,\n // The shared-sandbox group the session's box belongs to. Equals the session's\n // own id for a singleton group (today's 1:1 default); equals the parent's\n // group when spawned shared (both sessions run in ONE box).\n sandboxGroupId: z.string().uuid(),\n // The first-class swappable-sandbox POINTER (bring-your-own-compute M2). NULL\n // resolves to the session's own group sandbox (the backward-compat default);\n // a swap sets it to the target sandbox row. active_epoch is the second epoch\n // ABOVE the lease epoch, bumped on every swap so the routing proxy can fence a\n // stale in-flight op and retry against the new active sandbox.\n activeSandboxId: z.string().uuid().nullable(),\n activeEpoch: z.number().int().nonnegative(),\n // The explicit connected-machine project root selected for this session.\n // Null means the enrolled agent's launch workspace root.\n workingDir: z.string().nullable().default(null),\n // Ordered low-to-high precedence. The legacy singular aliases below expose\n // the final (highest-precedence) entry for older clients.\n variableSetIds: z.array(z.string().uuid()).max(MAX_SELECTED_VARIABLE_SETS).default([]),\n variableSetId: z.string().uuid().nullable().default(null),\n /** @deprecated use variableSetId */\n environmentId: z.string().uuid().nullable().default(null),\n // The rig this session rides (M3 runtime binding). Both are resolved and\n // FROZEN at session create: rigId names the rig, rigVersionId pins the exact\n // active version the session's box/env/setup/doctrine are built from for the\n // session's whole life (a later promote does NOT move an existing session).\n // Both null ⇒ a rig-less session (byte-for-byte today's behavior).\n rigId: z.string().uuid().nullable().default(null),\n rigVersionId: z.string().uuid().nullable().default(null),\n // Workspace channel this session is filed under (rail organization only;\n // a session tree is grouped by its ROOT session's channel). Null = unfiled.\n channelId: z.string().uuid().nullable().default(null),\n // Non-default first-party MCP token permissions (manager-style sessions);\n // null means the fixed worker default set.\n firstPartyMcpPermissions: z.array(Permission).nullable(),\n // Exact model-visible OpenGeni selection. The default omits connector-wide\n // tools; [] intentionally selects none.\n firstPartyMcpTools: z.array(FirstPartyMcpToolName),\n // Per-session third-party MCP servers, metadata only. Credential values are\n // write-only and never appear here.\n mcpServers: z.array(SessionMcpServerMetadata).default([]),\n // The manager session that spawned this one via session_create (set only\n // when the creating grant carried a worker-signed sessionId claim); null for\n // direct API creates and scheduled-task runs. When set, this session's\n // terminal-for-now transitions wake the parent.\n parentSessionId: z.string().uuid().nullable(),\n // Server-authored nested-agent lineage/policy. Root sessions are depth 0;\n // snapshots are immutable and govern only future descendant creation.\n rootSessionId: z.string().uuid(),\n nestedAgentDepth: NestedAgentDepthValue,\n maxNestedAgentDepthOverride: NestedAgentDepthValue.nullable(),\n effectiveMaxNestedAgentDepth: NestedAgentDepthValue,\n nestedAgentDepthPolicySource: NestedAgentDepthPolicySource,\n nestedAgentDepthPolicySessionId: z.string().uuid().nullable(),\n // Workspace-scoped CREATE idempotency key the session was created under (the\n // dedup target collapsing double-submit/retry races to one session); null\n // when the create carried no key.\n createIdempotencyKey: z.string().nullable(),\n temporalWorkflowId: z.string().nullable(),\n activeTurnId: z.string().uuid().nullable(),\n // Provider-reported input tokens of the latest authoritative terminal\n // response. Null after a context transition or whenever that latest response\n // supplied no usable count, so an older response can never drive compaction.\n lastInputTokens: z.number().int().nonnegative().nullable(),\n queueVersion: z.number().int().nonnegative(),\n queueHeadPosition: z.number().int(),\n queueTailPosition: z.number().int(),\n effectiveControl: EffectiveSessionControl,\n /** Current out-of-turn wait, independent of goals. Omitted by older servers.\n * An elapsed deadline means the recheck is due, not proof it has started. */\n inputWait: z\n .object({\n deadlineAt: z.string().datetime({ offset: true }),\n reason: z.string(),\n })\n .nullable()\n .optional(),\n lastSequence: z.number().int().nonnegative(),\n // Multi-account Codex (P1). codexPinnedCredentialId: the account this session is\n // manually PINNED to (null ⇒ follow the workspace active pointer).\n // codexLastCredentialId: the account the most recent turn actually ran on (the\n // \"Running on:\" indicator's source). Both are credential-row ids, null until set.\n codexPinnedCredentialId: z.string().uuid().nullable(),\n codexLastCredentialId: z.string().uuid().nullable(),\n /** Detail-read projection of the accepted current turn; never a future-account prediction. */\n codexCurrentSelection: z\n .object({\n credentialId: z.string().nullable(),\n waiting: z.boolean(),\n })\n .nullable()\n .optional(),\n // Frozen at session create. remote_v2 ⇒ Codex remote compaction + Codex-only\n // model admission for the life of the session; portable ⇒ plaintext compaction\n // and free mid-session provider switching (today's behavior).\n codexCompactionMode: CodexCompactionMode,\n /** Personal (authenticated subject) workspace pin state, never workspace-global. */\n pinned: z.boolean().default(false),\n /** Stable pin ordering key; null when this subject has not pinned the session. */\n pinnedAt: z.string().nullable().default(null),\n /** Optimistic pin-state revision; zero represents an absent pin relation. */\n pinVersion: z.number().int().nonnegative().default(0),\n /** Personal explicit acknowledgment state; opening the session never clears it. */\n unread: z.boolean().default(false),\n /** Personal power-user label for work the member intends to continue. */\n activelyWorking: z.boolean().default(false),\n /** Optimistic revision for unread/actively-working state. */\n attentionVersion: z.number().int().nonnegative().default(0),\n /** Personal archive state. Archived roots and their descendants leave the ordinary list. */\n archived: z.boolean().default(false),\n archivedAt: z.string().nullable().default(null),\n /** Optimistic archive-state revision; zero represents an absent personal relation. */\n archiveVersion: z.number().int().nonnegative().default(0),\n /**\n * Server-authoritative hierarchy summary populated on session-list reads.\n * Detail reads may omit it. The rail uses this instead of guessing a tree\n * from whichever global recency page happened to be loaded.\n */\n treeStats: z\n .object({\n directChildren: z.number().int().nonnegative(),\n totalDescendants: z.number().int().nonnegative(),\n runningDescendants: z.number().int().nonnegative(),\n queuedDescendants: z.number().int().nonnegative(),\n waitingDescendants: z.number().int().nonnegative().optional(),\n attentionDescendants: z.number().int().nonnegative(),\n pausedDescendants: z.number().int().nonnegative(),\n /** Historical failed lifecycle states, including already-reviewed failures. */\n failedDescendants: z.number().int().nonnegative(),\n unreadDescendants: z.number().int().nonnegative().optional(),\n /** Failed descendants whose latest durable event this viewer has not acknowledged. */\n unreadFailedDescendants: z.number().int().nonnegative().optional(),\n activelyWorkingDescendants: z.number().int().nonnegative().optional(),\n /**\n * Earliest moment one of the counted `attentionDescendants` entered\n * `requires_action` (the oldest still-open `requires_action` turn among\n * those descendants). Null when none is waiting; omitted by older servers.\n */\n attentionSince: z.string().nullable().optional(),\n /** Counts are lower bounds rather than exact totals when true. */\n truncated: z.boolean().default(false),\n })\n .optional(),\n /**\n * When this session's own open turn entered `requires_action`. Populated by\n * list and lineage reads for sessions whose status is `requires_action`;\n * null otherwise and omitted by older servers or detail reads.\n */\n requiresActionSince: z.string().nullable().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n }),\n);\nexport type Session = z.infer<typeof Session>;\n\n/**\n * Additive receipt returned only by session creation. `activeTurnId` remains an\n * execution pointer and is correctly null while the first turn is queued;\n * embedders use this immutable identity to correlate their preallocated run.\n */\nexport const CreateSessionResponse = /* @__PURE__ */ defineSkillContractSchema(() =>\n Session.extend({\n initialTurnId: z.string().uuid().nullable(),\n }),\n);\nexport type CreateSessionResponse = z.infer<typeof CreateSessionResponse>;\n\nexport type SessionSummary = Session;\n\n/**\n * The canonical session-list page. Pinned rows are returned separately and are\n * excluded from `sessions`, so a cursor can page ordinary recency rows without\n * duplicating a pin. The newest 100 matching pins are returned, ordered by\n * pinnedAt DESC, id DESC; `pinnedTruncated` makes an older-pin omission\n * explicit. Pins are filtered by the same parent/search predicates as ordinary\n * rows.\n */\nexport const SessionListResponse = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.object({\n pinned: z.array(Session),\n filtersApplied: z.literal(true).optional(),\n originSiteId: z.string().uuid().optional(),\n /** True when older matching pins were omitted from this bounded page. */\n pinnedTruncated: z.boolean().optional(),\n sessions: z.array(Session),\n nextCursor: z.string().nullable(),\n }),\n);\nexport type SessionListResponse = z.infer<typeof SessionListResponse>;\n\n/**\n * Organization session queries may filter a canonical scope subject and lifecycle\n * state. Legacy end-user label filters are rejected.\n */\nexport const ListOrganizationSessionsQuery = z.object({\n limit: z.coerce.number().int().min(1).max(200).default(50),\n cursor: z.string().min(1).optional(),\n scopeSubjectId: SessionScopeSubjectId.optional(),\n endUserSource: z.never().optional(),\n endUserId: z.never().optional(),\n status: SessionStatus.optional(),\n});\nexport type ListOrganizationSessionsQuery = z.infer<typeof ListOrganizationSessionsQuery>;\n\n/**\n * One page of the organization-wide session list: the sessions of every\n * shared workspace the caller may read, visited in a stable workspace order.\n * Every row carries its `workspaceId`; events, history, and files are read\n * through the ordinary workspace routes. Personal workspaces are never\n * included and private sessions stay invisible to the caller exactly as they\n * are on the workspace list. A page may hold fewer than `limit` rows while\n * `nextCursor` is still set (the server bounds how many workspaces one request\n * visits), so callers follow `nextCursor` until it is null.\n */\nexport const OrganizationSessionListResponse = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.object({\n sessions: z.array(Session),\n nextCursor: z.string().nullable(),\n }),\n);\nexport type OrganizationSessionListResponse = z.infer<typeof OrganizationSessionListResponse>;\n\n// Recursive: the TS type is declared first so the schema annotation can carry\n// the FULL recursive shape (a shallow annotation loses type information for\n// contracts consumers after one level of nesting).\nexport type LineageNode = {\n session: SessionSummary;\n children: LineageNode[];\n};\nexport const LineageNode: z.ZodType<LineageNode> = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.lazy(() =>\n z.object({\n session: Session,\n children: z.array(LineageNode),\n }),\n ),\n);\n\nexport const SessionLineageResponse = /* @__PURE__ */ defineSkillContractSchema(() =>\n z.object({\n /** Current schedule relationship for the requested session. */\n sessionHasSchedules: z.boolean().optional(),\n ancestors: z.array(Session),\n children: z.array(LineageNode),\n truncated: z.boolean().default(false),\n }),\n);\nexport type SessionLineageResponse = z.infer<typeof SessionLineageResponse>;\n\nexport const SessionEventType = z.enum([\n \"session.created\",\n \"session.variable_sets.updated\",\n \"session.runtime.configured\",\n \"session.personal_resources.attached\",\n \"session.visibility.changed\",\n // Defensive read/transport projection for a malformed or historically\n // oversized retained event envelope. The original row stays durable; this\n // explicit synthetic type prevents unbounded free-form envelope fields from\n // crossing NATS, SSE, REST, or browser boundaries.\n \"session.event.envelope_omitted\",\n \"session.status.changed\",\n \"session.realtime.started\",\n \"session.realtime.ended\",\n \"session.requiresAction\",\n \"session.humanInput.requested\",\n \"session.context.compaction.requested\",\n \"session.context.compaction.started\",\n \"session.context.compacted\",\n \"session.context.compaction.skipped\",\n \"session.context.cleared\",\n \"user.message\",\n \"user.pause\",\n \"user.approvalDecision\",\n \"user.humanInputResponse\",\n \"turn.queued\",\n \"turn.started\",\n \"turn.completed\",\n \"turn.failed\",\n \"turn.cancelled\",\n \"turn.superseded\",\n \"turn.recovery.requested\",\n \"turn.capacity_waiting\",\n // Compact, attempt-fenced user-visible worker preparation checkpoints. The\n // payload phase is a closed enum and terminal events carry durationMs; no\n // session-specific value is ever promoted into Prometheus labels.\n \"turn.startup.phase.started\",\n \"turn.startup.phase.completed\",\n \"turn.startup.phase.failed\",\n \"agent.message.delta\",\n \"agent.message.completed\",\n \"agent.reasoning.delta\",\n \"agent.toolCall.created\",\n \"agent.toolCall.output\",\n // Attempt-fenced provider Responses lifecycle metadata (request identity,\n // liveness policy, first-event/terminal phase, provider request id). Never\n // request body, credentials, or model output.\n \"agent.model.request\",\n \"agent.model.usage\",\n \"tool.auth_needed\",\n \"credential.auth_needed\",\n \"agent.updated\",\n \"rig.setup.started\",\n \"rig.setup.completed\",\n \"rig.setup.skipped\",\n \"rig.setup.failed\",\n \"sandbox.operation.started\",\n \"sandbox.operation.completed\",\n \"sandbox.operation.failed\",\n \"session.command.backgrounded\",\n \"session.command.finished\",\n \"session.wait.started\",\n \"session.wait.finished\",\n \"sandbox.command.output.delta\",\n \"artifact.created\",\n \"goal.set\",\n \"goal.updated\",\n \"goal.progress\",\n \"goal.rewrite.proposed\",\n \"goal.rewrite.rejected\",\n \"goal.completed\",\n \"goal.paused\",\n \"goal.resumed\",\n \"goal.cleared\",\n \"goal.held\",\n \"goal.continuation\",\n \"system.update.pending\",\n \"system.update.delivered\",\n \"system.update.superseded\",\n \"system.update.cancelled\",\n \"system.update.settled\",\n \"session.control.paused\",\n \"session.control.resumed\",\n \"session.control.steer_requested\",\n \"workspace.inference.paused\",\n \"workspace.inference.resumed\",\n \"session.queue.changed\",\n \"session.queue.prompt.cancelled\",\n \"session.queue.history\",\n // A terminal/stale activity callback is retained as an audit wrapper rather\n // than being dropped or emitted as though it belonged to the current turn.\n \"turn.event.rejected_late\",\n \"memory.saved\",\n \"memory.corrected\",\n // Channel-B desktop pixel-plane signals (07-channel-b §1.2). The pixel socket\n // carries opaque RFB and cannot carry a control message the client can act on,\n // so these ride the durable, sequenced, gap-filled Channel-A SSE spine.\n \"stream.url.rotated\", // re-minted {url,token,expiresAt} on box rollover (event-driven)\n \"stream.opened\", // a viewer attached (audit + refcount visibility)\n \"stream.closed\", // a viewer detached / was reaped\n \"stream.revoked\", // a grant was revoked → connected clients MUST disconnect now\n // Desktop recording signals. The capture loop records the same display humans\n // watch, then stores the finalized artifact for replay.\n // → storage. The artifact ref rides the AVAILABLE event (storageKey, NOT a\n // long-lived URL — clients mint a short-TTL signed GET via the route).\n \"recording.started\", // ffmpeg launched on :0 (mode/codec/dimensions)\n \"recording.available\", // finalized: bytes PUT to storage, replayable\n \"recording.failed\", // ffmpeg/box-death/rollover/upload error — no artifact\n // Structured-service notifications. File, Git, and terminal reads are\n // synchronous API-direct point\n // queries (their result is the HTTP response, NEVER an event). What rides A1\n // here are the side-effect NOTIFICATIONS — a path changed, git state changed,\n // a pty opened/printed/exited — durable, sequenced, gap-filled like every\n // other session event, so any viewer's Pierre tree / diff / terminal stays\n // live. fs.changed/git.changed are cache-invalidation signals; the pty.*\n // events carry the interactive terminal byte stream.\n \"fs.changed\", // a path was created/modified/deleted (write or agent mutation)\n \"git.changed\", // working-tree/index/HEAD changed (debounced re-probe)\n \"terminal.pty.started\", // an interactive PTY session opened (carries ptyId)\n \"terminal.pty.output.delta\", // PTY stdout/stderr bytes (separate from command.output)\n \"terminal.pty.exited\", // PTY session ended (exitCode/reason)\n \"session.title_set\",\n \"session.mcp.approval_policy.updated\",\n \"session.tool_policy.updated\",\n // Multi-account Codex (P1): the account a session's turn runs on changed\n // (manual switch in P1; failover/rotation in P3 reuse the same event). Drives\n // the in-session \"Running on:\" indicator's live flip.\n \"codex.account.switched\",\n \"codex.account.selection.changed\",\n // credential allocator per-turn selection audit. Payload is metadata only: credential row\n // id, bounded strategy/reason, and pool counts — never token material.\n \"codex.credential.selected\",\n // Adaptive fleet shadow decision record. Contains only bounded opaque candidate aliases,\n // normalized pressure/cache/confidence features, deterministic fingerprints,\n // the actual-vs-shadow comparison, and no credential/account identity.\n \"codex.fleet.decision\",\n // credential allocator durable zero-capacity wait lifecycle. Runtime/system events only;\n // no synthetic user message is created when capacity returns.\n \"codex.capacity.waiting\",\n \"codex.capacity.resumed\",\n \"codex.capacity.superseded\",\n // Sandbox durability observability (sandbox-file-persistence). The 2026-07\n // incidents (mid-session box death with /workspace loss; a fatal manifest-env\n // delta on a live box) were near-unattributable because box lifecycle left no\n // durable trace — only worker logs, which rotate within hours. These events\n // make every box transition and env recomputation drift readable from the DB\n // alone. Payloads carry ids/flags/key NAMES only — never env values (secrets).\n \"sandbox.box.created\", // box cold-created/cold-restored ({hydrated: \"archive\"|\"none\"})\n \"sandbox.box.lost\", // resume-by-id found the box gone (provider NotFound)\n \"sandbox.box.terminated\", // reaper drain terminated the box ({actor, persisted})\n \"sandbox.box.snapshot\", // mid-session /workspace snapshot persisted ({trigger})\n \"sandbox.env.drift\", // recomputed manifest env != live box env (key names only)\n // Active-sandbox pointer reconcile (issue #341 invariant B). Turn start found the\n // persisted (active_sandbox_id, active_epoch) pointing at a target the turn cannot\n // establish — a deleted/absent sandbox, a Modal sibling with no establisher, or a\n // selfhosted sandbox with no enrollment — and reset it to the session HOME under\n // the epoch fence instead of routing every op into the dead target. A VISIBLE,\n // never-silent downgrade: payload carries the typed reason + from/to epoch, never a\n // target id or command content. Announce-only; hits the timeline projection default\n // (no rendered item) like the other sandbox.* diagnostics.\n \"session.route.reconciled\",\n // Workbench v2 turn-end workspace capture. ANNOUNCE-ONLY: a new\n // capture revision was persisted at turn end; the client refetches the latest\n // capture. It carries metadata only (revision/turnId/capturedAt/leaseEpoch/stats),\n // never file content. Hits the timeline projection default case (ignored) — it\n // must NEVER gain a rendered timeline item without regenerating the golden\n // snapshots (golden-grammar gate).\n \"workspace.revision.captured\",\n // Repository discovery could not prove a complete capture. The worker\n // persisted a failed/degraded revision marker and clients must fall back to\n // the live box rather than trust a zero-repository snapshot.\n \"workspace.revision.degraded\",\n // Connected Machine (selfhosted) op-outcome observability (failure-visibility\n // doctrine, out-of-band plane). SESSION-scoped facts only: these fire for the\n // session whose turn ran the op (the two-planes rule — machine-plane facts like\n // pressure live in the M10 metrics DB, never as session events). Payloads carry\n // the op kind + a typed fault class + attempt count — NEVER command content.\n //\n // `machine.op.failed` fires ONLY for INFRASTRUCTURE fault classes (offline,\n // draining-exhausted, payload-too-large, reconnecting-timeout, OS/stream/protocol)\n // — a semantic miss the model asked about (a missing path, a consent gate, a\n // nonzero exit) is an OUTCOME, not an infra fault, and never fires this.\n // `machine.op.recovered` is the healed-fault leading indicator (a blip/backpressure\n // the transport absorbed): announce-only, quiet. Both hit the timeline projection's\n // quiet status-tick tier (the severity split's \"degraded\"); adding a rendered item\n // requires regenerating the golden snapshots (the golden-grammar gate).\n \"machine.op.failed\",\n \"machine.op.recovered\",\n // Connected Machine (selfhosted) LINK-plane observability (failure-visibility\n // doctrine). SESSION-scoped, ANNOUNCE-ONLY facts fanned out to the sessions that\n // had an active op running on the machine when its control link changed — never\n // to idle/historical sessions. Payloads carry ids / a typed reason / key-names\n // only, NEVER command content.\n //\n // `machine.link.lost` — the machine announced a clean GoingOffline (its control\n // link is going away) while a session had a running turn on it. `machine.link.\n // restored` — a reconnect Hello re-established the link that was previously lost.\n // `machine.runner.restarted` — the additional signal that the going-offline was\n // a self-update restart specifically (link.lost also fires for it; this\n // distinguishes a restart from a plain stop / host shutdown). All three hit the\n // timeline projection's quiet default tier (no rendered item); adding a rendered\n // item requires regenerating the golden snapshots (the golden-grammar gate).\n \"machine.link.lost\",\n \"machine.link.restored\",\n \"machine.runner.restarted\",\n]);\nexport type SessionEventType = z.infer<typeof SessionEventType>;\n\n/**\n * Stable semantic groups for bounded session monitoring. These are a read\n * projection only: an event keeps its canonical durable `type`, and callers\n * can always combine a class with explicit type include/exclude filters.\n */\nexport const SessionEventSemanticClass = z.enum([\n \"control\",\n \"terminal\",\n \"failure\",\n \"checkpoint\",\n \"tool_receipt\",\n \"provider_account\",\n]);\nexport type SessionEventSemanticClass = z.infer<typeof SessionEventSemanticClass>;\n\n/**\n * The semantic classes accepted by an exclusive latest lookup. `receipt` is\n * the concise public spelling for the historical `tool_receipt` class; the\n * latter remains accepted everywhere for backwards compatibility.\n */\nexport const SessionEventLatestClass = z.enum([\n \"control\",\n \"terminal\",\n \"failure\",\n \"checkpoint\",\n \"tool_receipt\",\n \"provider_account\",\n \"receipt\",\n]);\nexport type SessionEventLatestClass = z.infer<typeof SessionEventLatestClass>;\n\nexport function sessionEventLatestClassToSemanticClass(\n value: SessionEventLatestClass,\n): SessionEventSemanticClass {\n return value === \"receipt\" ? \"tool_receipt\" : value;\n}\n\nexport const SessionEventPayloadMode = z.enum([\"none\", \"summary\", \"full\"]);\nexport type SessionEventPayloadMode = z.infer<typeof SessionEventPayloadMode>;\n\n/** Select the compact semantic-result projection instead of an event array. */\nexport const SessionEventResultMode = z.enum([\"events\", \"compact\"]);\nexport type SessionEventResultMode = z.infer<typeof SessionEventResultMode>;\n\nexport const SessionEventReadMode = z.enum([\"monitoring\", \"forensic\"]);\nexport type SessionEventReadMode = z.infer<typeof SessionEventReadMode>;\n\nexport const SessionEventReadDirection = z.enum([\"after\", \"before\"]);\nexport type SessionEventReadDirection = z.infer<typeof SessionEventReadDirection>;\n\nexport const SESSION_EVENT_RAW_DELTA_TYPES = [\n \"agent.message.delta\",\n \"agent.reasoning.delta\",\n \"sandbox.command.output.delta\",\n \"terminal.pty.output.delta\",\n] as const satisfies readonly SessionEventType[];\n\nexport const SESSION_EVENT_SEMANTIC_CLASS_TYPES = {\n control: [\n \"session.status.changed\",\n \"session.command.backgrounded\",\n \"session.wait.started\",\n \"session.wait.finished\",\n \"session.requiresAction\",\n \"session.humanInput.requested\",\n \"user.pause\",\n \"user.approvalDecision\",\n \"user.humanInputResponse\",\n \"goal.set\",\n \"goal.updated\",\n \"goal.progress\",\n \"goal.rewrite.proposed\",\n \"goal.rewrite.rejected\",\n \"goal.completed\",\n \"goal.paused\",\n \"goal.resumed\",\n \"goal.cleared\",\n \"goal.held\",\n \"goal.continuation\",\n \"system.update.pending\",\n \"system.update.delivered\",\n \"system.update.superseded\",\n \"system.update.cancelled\",\n \"system.update.settled\",\n \"session.control.paused\",\n \"session.control.resumed\",\n \"session.control.steer_requested\",\n \"workspace.inference.paused\",\n \"workspace.inference.resumed\",\n \"session.queue.changed\",\n \"session.queue.prompt.cancelled\",\n \"session.mcp.approval_policy.updated\",\n \"session.tool_policy.updated\",\n ],\n terminal: [\n \"turn.completed\",\n \"agent.message.completed\",\n \"turn.failed\",\n \"turn.cancelled\",\n \"turn.superseded\",\n \"goal.completed\",\n \"goal.paused\",\n \"rig.setup.completed\",\n \"rig.setup.skipped\",\n \"rig.setup.failed\",\n \"sandbox.operation.completed\",\n \"sandbox.operation.failed\",\n \"recording.available\",\n \"recording.failed\",\n \"terminal.pty.exited\",\n \"session.command.finished\",\n ],\n failure: [\n \"session.event.envelope_omitted\",\n \"turn.failed\",\n \"tool.auth_needed\",\n \"credential.auth_needed\",\n \"rig.setup.failed\",\n \"sandbox.operation.failed\",\n \"recording.failed\",\n \"sandbox.box.lost\",\n \"workspace.revision.degraded\",\n \"machine.op.failed\",\n \"machine.link.lost\",\n ],\n checkpoint: [\n \"session.context.compaction.requested\",\n \"session.context.compaction.started\",\n \"session.context.compacted\",\n \"session.context.compaction.skipped\",\n \"session.context.cleared\",\n \"turn.recovery.requested\",\n \"session.queue.history\",\n \"sandbox.box.snapshot\",\n \"workspace.revision.captured\",\n ],\n tool_receipt: [\n \"agent.toolCall.created\",\n \"agent.toolCall.output\",\n \"tool.auth_needed\",\n \"artifact.created\",\n ],\n provider_account: [\n \"agent.model.usage\",\n \"codex.account.switched\",\n \"codex.account.selection.changed\",\n \"codex.credential.selected\",\n \"codex.capacity.waiting\",\n \"codex.capacity.resumed\",\n \"codex.capacity.superseded\",\n \"sandbox.box.created\",\n \"sandbox.box.lost\",\n \"sandbox.box.terminated\",\n \"sandbox.box.snapshot\",\n \"sandbox.env.drift\",\n \"session.route.reconciled\",\n \"machine.op.failed\",\n \"machine.op.recovered\",\n \"machine.link.lost\",\n \"machine.link.restored\",\n \"machine.runner.restarted\",\n ],\n} as const satisfies Record<SessionEventSemanticClass, readonly SessionEventType[]>;\n\nexport type ResolveSessionEventTypeFiltersInput = {\n includeTypes?: readonly SessionEventType[] | undefined;\n excludeTypes?: readonly SessionEventType[] | undefined;\n includeClasses?: readonly SessionEventSemanticClass[] | undefined;\n excludeClasses?: readonly SessionEventSemanticClass[] | undefined;\n /** Applied unless the same type was explicitly included by type or class. */\n defaultExcludeTypes?: readonly SessionEventType[] | undefined;\n};\n\n/** Resolve class/type filter algebra once so every read surface behaves alike. */\nexport function resolveSessionEventTypeFilters(input: ResolveSessionEventTypeFiltersInput): {\n includeTypes: SessionEventType[];\n excludeTypes: SessionEventType[];\n} {\n const included = new Set<SessionEventType>(input.includeTypes ?? []);\n for (const semanticClass of input.includeClasses ?? []) {\n for (const type of SESSION_EVENT_SEMANTIC_CLASS_TYPES[semanticClass]) included.add(type);\n }\n\n const excluded = new Set<SessionEventType>(input.excludeTypes ?? []);\n for (const semanticClass of input.excludeClasses ?? []) {\n for (const type of SESSION_EVENT_SEMANTIC_CLASS_TYPES[semanticClass]) excluded.add(type);\n }\n for (const type of input.defaultExcludeTypes ?? []) {\n if (!included.has(type)) excluded.add(type);\n }\n\n // An explicit exclusion always wins over a positive selector.\n for (const type of excluded) included.delete(type);\n return { includeTypes: [...included], excludeTypes: [...excluded] };\n}\n\nexport const ToolAuthNeededReason = z.enum([\n \"missing_connection\",\n \"expired\",\n \"insufficient_scope\",\n \"refresh_failed\",\n \"personal_authority_unavailable\",\n \"unsupported_auth\",\n \"resource_scope_unavailable\",\n]);\nexport type ToolAuthNeededReason = z.infer<typeof ToolAuthNeededReason>;\n\nexport const ToolAuthNeededPayload = z\n .object({\n serverId: z.string().min(1),\n toolName: z.string().min(1).nullable().optional(),\n providerDomain: z.string().min(1),\n provider: z.string().min(1).max(128).optional(),\n // Embedded hosts may use an opaque connection identity; never assume an\n // OpenGeni UUID on the public event wire.\n connectionId: z.string().min(1).nullable().optional(),\n /** The failed binding is owned by the embedding host, not OpenGeni's connection broker. */\n authoritySource: z.literal(\"host\").optional(),\n /**\n * Legacy-compatible reason. Host-owned event writers pin this to\n * unsupported_auth so a pre-host-authority browser cannot launch native\n * OAuth for the opaque id.\n */\n reason: ToolAuthNeededReason,\n /** Exact host recovery reason consumed by host-aware clients. */\n hostReason: ToolAuthNeededReason.optional(),\n scopes: z.array(z.string().min(1)).optional(),\n resource: z.string().min(1).optional(),\n selectedResources: McpConnectionResourceScopes.optional(),\n authorizationUrl: z.string().url().optional(),\n subjectId: z.string().min(1).nullable().optional(),\n // A catalog recommendation is still a tool-level authorization condition:\n // the agent may describe and request it, but only the authenticated host UI\n // can start setup. Keeping this nested and optional preserves the established\n // auth-needed event for ordinary failed MCP calls.\n capability: z\n .object({\n id: z.string().min(1).max(512),\n name: z.string().min(1).max(256),\n kind: CapabilityKind,\n source: CapabilitySource,\n action: z.enum([\"connect\", \"add_credentials\", \"enable\"]),\n rationale: z.string().min(1).max(2000),\n requiredVariables: z.array(VariableSetVariableName).max(64).default([]),\n })\n .optional(),\n })\n .superRefine((payload, context) => {\n if (payload.authoritySource === \"host\") {\n if (payload.reason !== \"unsupported_auth\") {\n context.addIssue({\n code: \"custom\",\n message: \"host auth-needed events require the legacy-safe unsupported_auth reason\",\n path: [\"reason\"],\n });\n }\n if (!payload.hostReason) {\n context.addIssue({\n code: \"custom\",\n message: \"host auth-needed events require hostReason\",\n path: [\"hostReason\"],\n });\n }\n } else if (payload.hostReason) {\n context.addIssue({\n code: \"custom\",\n message: \"hostReason is reserved for host-owned auth-needed events\",\n path: [\"hostReason\"],\n });\n }\n });\nexport type ToolAuthNeededPayload = z.infer<typeof ToolAuthNeededPayload>;\n\n/** A host-owned non-tool credential needed by the active run. */\nexport const CredentialAuthNeededPayload = z.object({\n credentialClass: z.literal(\"run\"),\n providerDomain: z.string().min(1).optional(),\n connectionId: z.string().min(1).optional(),\n reason: z.enum([\"missing_connection\", \"expired\", \"insufficient_scope\", \"refresh_failed\"]),\n scopes: z.array(z.string().min(1)).optional(),\n resource: z.string().min(1).optional(),\n authorizationUrl: z.string().url().optional(),\n message: z.string().min(1).optional(),\n});\nexport type CredentialAuthNeededPayload = z.infer<typeof CredentialAuthNeededPayload>;\n\n// Channel-B stream-event payloads (07-channel-b §1.2). SessionEvent.payload is\n// z.unknown() (NOT a discriminated union) — these are standalone schemas parsed\n// explicitly at the producer (the API-direct handshake/rotation) and the SDK/\n// React consumer. The rotation payload carries the freshly-minted data-plane URL\n// + the scoped stream token so a connected client hot-swaps its noVNC socket.\nexport const StreamUrlRotatedPayload = z.object({\n url: z.string().url(),\n token: z.string().nullable(),\n expiresAt: z.string().datetime().nullable(),\n // The epoch the new URL was minted under (the box-rollover fence the client\n // reconciles against). A client must drop a rotation event whose epoch it has\n // already advanced past.\n leaseEpoch: z.number().int().nonnegative(),\n transport: z.literal(\"vnc-ws\"),\n // The viewer holder this URL is for (so a client filters out other viewers').\n viewerId: z.string().uuid().nullable().default(null),\n});\nexport type StreamUrlRotatedPayload = z.infer<typeof StreamUrlRotatedPayload>;\n\nexport const StreamOpenedPayload = z.object({\n viewerId: z.string().uuid(),\n shared: z.boolean().default(false),\n viewerCount: z.number().int().nonnegative(),\n});\nexport type StreamOpenedPayload = z.infer<typeof StreamOpenedPayload>;\n\nexport const StreamClosedPayload = z.object({\n viewerId: z.string().uuid(),\n reason: z.enum([\"client-disconnect\", \"reaped\", \"revoked\", \"box-rollover\"]),\n viewerCount: z.number().int().nonnegative(),\n});\nexport type StreamClosedPayload = z.infer<typeof StreamClosedPayload>;\n\nexport const StreamRevokedPayload = z.object({\n viewerId: z.string().uuid().nullable().default(null),\n reason: z.enum([\"grant-revoked\", \"session-failed\", \"admin\"]),\n});\nexport type StreamRevokedPayload = z.infer<typeof StreamRevokedPayload>;\n\n// ── Recording payloads (P4.3 / module 05 §3.4) ──────────────────────────────\n// SessionEvent.payload is z.unknown() (NOT a discriminated union) — these are\n// standalone schemas parsed explicitly at the producer (the recording activity)\n// and the SDK/React consumer. The codec/contentType pair stays consistent\n// (h264-mp4↔video/mp4, vp9-webm↔video/webm).\nexport const RecordingMode = z.enum([\"manual\", \"on-turn\", \"on-verify\"]);\nexport type RecordingMode = z.infer<typeof RecordingMode>;\nexport const RecordingCodec = z.enum([\"h264-mp4\", \"vp9-webm\"]);\nexport type RecordingCodec = z.infer<typeof RecordingCodec>;\nexport const RecordingContentType = z.enum([\"video/mp4\", \"video/webm\"]);\nexport type RecordingContentType = z.infer<typeof RecordingContentType>;\n\nexport const RecordingStartedPayload = z.object({\n recordingId: z.string().uuid(),\n turnId: z.string().uuid().nullable(),\n mode: RecordingMode,\n codec: RecordingCodec,\n dimensions: z.tuple([z.number().int().positive(), z.number().int().positive()]),\n framerate: z.number().int().positive(),\n startedAt: z.string(), // ISO\n // The verification rationale (\"agent-verification: tf apply succeeded\"). Agent-\n // authored free text — the producer caps + scrubs it before emit.\n reason: z.string().nullable().optional(),\n});\nexport type RecordingStartedPayload = z.infer<typeof RecordingStartedPayload>;\n\nexport const RecordingAvailablePayload = z.object({\n recordingId: z.string().uuid(),\n turnId: z.string().uuid().nullable(),\n codec: RecordingCodec,\n contentType: RecordingContentType,\n // The @opengeni/storage object key. NO long-lived URL in the event — clients\n // mint a short-TTL signed GET via GET …/recordings/:id/url.\n storageKey: z.string(),\n durationSeconds: z.number().nonnegative().nullable(),\n sizeBytes: z.number().int().nonnegative(),\n dimensions: z.tuple([z.number().int().positive(), z.number().int().positive()]),\n});\nexport type RecordingAvailablePayload = z.infer<typeof RecordingAvailablePayload>;\n\n// `max-bytes-exceeded` is distinct from `timeout` (the -t ceiling hitting is a\n// SUCCESSFUL finalize, never a failure) — the adversarial-review F7 fix.\nexport const RecordingFailedReason = z.enum([\n \"ffmpeg-error\",\n \"box-death\",\n \"box-rollover\",\n \"upload-failed\",\n \"max-bytes-exceeded\",\n \"display-unavailable\",\n]);\nexport type RecordingFailedReason = z.infer<typeof RecordingFailedReason>;\n\nexport const RecordingFailedPayload = z.object({\n recordingId: z.string().uuid(),\n turnId: z.string().uuid().nullable(),\n reason: RecordingFailedReason,\n // Exact ffmpeg stderr/error detail. Event transport limits must reject or\n // paginate rather than rewriting this canonical diagnostic.\n detail: z.string().nullable().optional(),\n});\nexport type RecordingFailedPayload = z.infer<typeof RecordingFailedPayload>;\n\n// ── Structured sandbox services ─────────────────────────────────────────────\n// Two transports on one spine: the A2 request/response shapes (FsNode tree,\n// GitDiff hunks, terminal exec) are returned INLINE on synchronous API-direct\n// routes (never the bus); the A1 notification payloads below ride the durable\n// SSE event log so every viewer's Pierre tree / diff / terminal stays live.\n\n// --- A1 event payloads -------------------------------------------------------\n\n// The agent's command-output firehose, enriched. Backward-compatible widening\n// of the existing sandbox.command.output.delta (consumers read `chunk`); the\n// producer may now also stamp stream/commandId/seq for finer terminal rendering.\nexport const SandboxCommandOutputDeltaPayload = z.object({\n stream: z.enum([\"stdout\", \"stderr\"]).default(\"stdout\"),\n chunk: z.string(), // raw bytes, utf-8 (lossy) — terminal is opaque-ish\n commandId: z.string().optional(), // groups deltas to one agent command\n seq: z.number().int().nonnegative().optional(), // intra-command ordering hint\n});\nexport type SandboxCommandOutputDeltaPayload = z.infer<typeof SandboxCommandOutputDeltaPayload>;\n\nexport const FsChangeKind = z.enum([\"created\", \"modified\", \"deleted\", \"renamed\"]);\nexport type FsChangeKind = z.infer<typeof FsChangeKind>;\nexport const FsChangedPayload = z.object({\n changes: z\n .array(\n z.object({\n path: z.string(), // workspace-relative POSIX path\n kind: FsChangeKind,\n isDir: z.boolean().default(false),\n sizeBytes: z.number().int().nonnegative().nullable().default(null),\n oldPath: z.string().optional(), // for \"renamed\"\n }),\n )\n .min(1),\n source: z.enum([\"write\", \"watch\", \"agent\"]).default(\"write\"),\n // Monotonic FS revision (per-lease, paired with leaseEpoch for staleness).\n revision: z.number().int().nonnegative(),\n // The lease epoch the revision was minted under: a client invalidates on a\n // (leaseEpoch, revision) tuple change, never a bare revision compare (H3 —\n // revision resets to 0 on box re-key, so a bare monotonic compare goes stale).\n leaseEpoch: z.number().int().nonnegative().default(0),\n});\nexport type FsChangedPayload = z.infer<typeof FsChangedPayload>;\n\nexport const GitChangedPayload = z.object({\n head: z.string().nullable(), // current branch or detached SHA\n dirty: z.boolean(), // working tree has uncommitted changes\n ahead: z.number().int().nonnegative().default(0),\n behind: z.number().int().nonnegative().default(0),\n changedFileCount: z.number().int().nonnegative(),\n reason: z\n .enum([\"commit\", \"checkout\", \"stage\", \"worktree\", \"fetch\", \"unknown\"])\n .default(\"unknown\"),\n revision: z.number().int().nonnegative().default(0),\n leaseEpoch: z.number().int().nonnegative().default(0),\n});\nexport type GitChangedPayload = z.infer<typeof GitChangedPayload>;\n\nexport const TerminalPtyStartedPayload = z.object({\n ptyId: z.string().uuid(),\n cols: z.number().int().positive(),\n rows: z.number().int().positive(),\n shell: z.string(), // resolved shell, e.g. \"/bin/bash\"\n cwd: z.string(),\n});\nexport type TerminalPtyStartedPayload = z.infer<typeof TerminalPtyStartedPayload>;\n\nexport const TerminalPtyOutputDeltaPayload = z.object({\n ptyId: z.string().uuid(),\n stream: z.enum([\"stdout\", \"stderr\"]).default(\"stdout\"),\n chunk: z.string(), // raw terminal bytes (incl. ANSI), utf-8 lossy\n seq: z.number().int().nonnegative(), // strict per-pty ordering (owner-assigned)\n});\nexport type TerminalPtyOutputDeltaPayload = z.infer<typeof TerminalPtyOutputDeltaPayload>;\n\nexport const TerminalPtyExitedPayload = z.object({\n ptyId: z.string().uuid(),\n exitCode: z.number().int().nullable(),\n reason: z.enum([\"exit\", \"killed\", \"owner_gone\", \"timeout\", \"lost\"]),\n});\nexport type TerminalPtyExitedPayload = z.infer<typeof TerminalPtyExitedPayload>;\n\n// --- A2 FileSystem request/response (NOT events; returned inline) ------------\nexport const FsNodeType = z.enum([\"file\", \"dir\", \"symlink\", \"other\"]);\nexport type FsNodeType = z.infer<typeof FsNodeType>;\n/** Optional identity copied from one stream-capabilities response. File callers\n * use it to fail with a retryable route conflict instead of reinterpreting a\n * canonical path after the selected sandbox or effective root changes. */\nexport const FileSystemRouteIdentity = z\n .object({\n epoch: z.number().int().nonnegative(),\n root: z.string().min(1).max(4_096),\n })\n .strict();\nexport type FileSystemRouteIdentity = z.infer<typeof FileSystemRouteIdentity>;\n// The Pierre-tree node. `children` is present only when the dir was listed with\n// depth>0; the tree lazy-expands via repeated depth-1 lists at deeper paths.\nexport interface FsTreeNode {\n name: string;\n // Same namespace as the request: workspace-relative for relative requests,\n // canonical target path for requests rooted at FileSystem.root.\n path: string;\n type: z.infer<typeof FsNodeType>;\n sizeBytes: number | null; // null for dirs\n mtimeMs: number | null;\n mode: number | null; // unix mode bits, for Pierre tree icons/perms\n children?: FsTreeNode[] | undefined;\n truncated: boolean; // dir had more entries than the cap\n}\nexport const FsTreeNode: z.ZodType<FsTreeNode> = z.lazy(() =>\n z.object({\n name: z.string(),\n path: z.string(),\n type: FsNodeType,\n sizeBytes: z.number().int().nonnegative().nullable(),\n mtimeMs: z.number().int().nonnegative().nullable(),\n mode: z.number().int().nullable(),\n children: z.array(FsTreeNode).optional(),\n truncated: z.boolean().default(false),\n }),\n) as z.ZodType<FsTreeNode>;\n\nexport const FsListRequest = z.object({\n // \"\" = workspace root; canonical absolute paths must stay within the\n // selected target's advertised FileSystem.root.\n path: z.string().default(\"\"),\n depth: z.number().int().min(0).max(8).default(1),\n maxEntries: z.number().int().positive().max(20_000).default(2_000),\n includeHidden: z.boolean().default(true),\n route: FileSystemRouteIdentity.optional(),\n});\nexport type FsListRequest = z.infer<typeof FsListRequest>;\nexport const FsListResponse = z.object({\n root: FsTreeNode,\n revision: z.number().int().nonnegative(),\n truncated: z.boolean(), // global cap hit\n});\nexport type FsListResponse = z.infer<typeof FsListResponse>;\n\n/** Several independent directory listings served behind one Channel-A lease.\n * The response order exactly matches `requests`; callers can paint a root and\n * hydrate a bounded lazy-tree frontier without repeating provider attach work. */\nexport const FsListBatchRequest = z.object({\n requests: z.array(FsListRequest).min(1).max(16),\n});\nexport type FsListBatchRequest = z.infer<typeof FsListBatchRequest>;\nexport const FsListBatchResponse = z.object({\n results: z.array(FsListResponse),\n});\nexport type FsListBatchResponse = z.infer<typeof FsListBatchResponse>;\n\nexport const FsEncoding = z.enum([\"utf8\", \"base64\"]);\nexport type FsEncoding = z.infer<typeof FsEncoding>;\nexport const FsReadRequest = z.object({\n path: z.string(),\n encoding: FsEncoding.default(\"utf8\"),\n maxBytes: z\n .number()\n .int()\n .positive()\n .max(25 * 1024 * 1024)\n .default(5 * 1024 * 1024),\n route: FileSystemRouteIdentity.optional(),\n});\nexport type FsReadRequest = z.infer<typeof FsReadRequest>;\nexport const FsReadResponse = z.object({\n path: z.string(),\n encoding: FsEncoding,\n content: z.string(), // text or base64 per encoding\n sizeBytes: z.number().int().nonnegative(), // bytes returned (== content size)\n truncated: z.boolean(), // sizeBytes hit maxBytes; content is the prefix\n isBinary: z.boolean(), // sniffed NUL byte in first 8KB\n revision: z.number().int().nonnegative(),\n});\nexport type FsReadResponse = z.infer<typeof FsReadResponse>;\n\nexport const FsWriteRequest = z.object({\n path: z.string(),\n encoding: FsEncoding.default(\"utf8\"),\n content: z.string(),\n overwrite: z.boolean().default(true), // false + existing path => 409\n createParents: z.boolean().default(true),\n route: FileSystemRouteIdentity.optional(),\n});\nexport type FsWriteRequest = z.infer<typeof FsWriteRequest>;\nexport const FsWriteResponse = z.object({\n path: z.string(),\n sizeBytes: z.number().int().nonnegative(),\n revision: z.number().int().nonnegative(), // == the fs.changed revision\n});\nexport type FsWriteResponse = z.infer<typeof FsWriteResponse>;\n\nexport const FsDeleteRequest = z.object({\n path: z.string(),\n recursive: z.boolean().default(false), // required true to delete a non-empty dir\n route: FileSystemRouteIdentity.optional(),\n});\nexport type FsDeleteRequest = z.infer<typeof FsDeleteRequest>;\nexport const FsDeleteResponse = z.object({\n revision: z.number().int().nonnegative(),\n});\nexport type FsDeleteResponse = z.infer<typeof FsDeleteResponse>;\n\nexport const FsMoveRequest = z.object({\n path: z.string(),\n newPath: z.string(),\n overwrite: z.boolean().default(false), // false + existing destination => 409\n createParents: z.boolean().default(true),\n route: FileSystemRouteIdentity.optional(),\n});\nexport type FsMoveRequest = z.infer<typeof FsMoveRequest>;\nexport const FsMoveResponse = z.object({\n path: z.string(),\n newPath: z.string(),\n revision: z.number().int().nonnegative(), // == the fs.changed revision\n});\nexport type FsMoveResponse = z.infer<typeof FsMoveResponse>;\n\nexport const FsMkdirRequest = z.object({\n path: z.string(),\n recursive: z.boolean().default(true), // false + existing path => 400\n route: FileSystemRouteIdentity.optional(),\n});\nexport type FsMkdirRequest = z.infer<typeof FsMkdirRequest>;\nexport const FsMkdirResponse = z.object({\n path: z.string(),\n revision: z.number().int().nonnegative(), // == the fs.changed revision\n});\nexport type FsMkdirResponse = z.infer<typeof FsMkdirResponse>;\n\n// --- A2 Git request/response (read-only; feeds Pierre diff/tree) -------------\nexport const GitFileStatusCode = z.enum([\n \"added\",\n \"modified\",\n \"deleted\",\n \"renamed\",\n \"copied\",\n \"untracked\",\n \"ignored\",\n \"conflicted\",\n \"typechange\",\n]);\nexport type GitFileStatusCode = z.infer<typeof GitFileStatusCode>;\nexport const GitFileStatus = z.object({\n path: z.string(),\n oldPath: z.string().nullable(), // for renamed/copied\n index: GitFileStatusCode.nullable(), // staged change (X in porcelain XY)\n worktree: GitFileStatusCode.nullable(), // unstaged change (Y in porcelain XY)\n isConflicted: z.boolean().default(false),\n});\nexport type GitFileStatus = z.infer<typeof GitFileStatus>;\nexport const GitStatusRequest = z.object({\n path: z.string().default(\"\"), // repo root within workspace (multi-repo support)\n});\nexport type GitStatusRequest = z.infer<typeof GitStatusRequest>;\nexport const GitStatusResponse = z.object({\n isRepo: z.boolean(),\n head: z.string().nullable(), // branch name\n // Exact commit object identity. null for unborn/non-repositories; optional\n // only so older adapters and serialized captures remain readable.\n headOid: z.string().nullable().optional(),\n detached: z.boolean().default(false),\n upstream: z.string().nullable(),\n ahead: z.number().int().nonnegative().default(0),\n behind: z.number().int().nonnegative().default(0),\n files: z.array(GitFileStatus),\n revision: z.number().int().nonnegative(),\n});\nexport type GitStatusResponse = z.infer<typeof GitStatusResponse>;\n\n// The structured hunk shape that feeds Pierre diff — the whole point of Git.\nexport const GitDiffLineType = z.enum([\"context\", \"add\", \"del\", \"meta\"]);\nexport type GitDiffLineType = z.infer<typeof GitDiffLineType>;\nexport const GitDiffLine = z.object({\n type: GitDiffLineType,\n // null on the side that doesn't have the line (add => oldNo null; del => newNo null)\n oldNo: z.number().int().positive().nullable(),\n newNo: z.number().int().positive().nullable(),\n text: z.string(), // line WITHOUT leading +/-/space marker\n});\nexport type GitDiffLine = z.infer<typeof GitDiffLine>;\nexport const GitDiffHunk = z.object({\n oldStart: z.number().int().nonnegative(),\n oldLines: z.number().int().nonnegative(),\n newStart: z.number().int().nonnegative(),\n newLines: z.number().int().nonnegative(),\n header: z.string(), // the @@ ... @@ section heading\n lines: z.array(GitDiffLine),\n});\nexport type GitDiffHunk = z.infer<typeof GitDiffHunk>;\nexport const GitFileDiff = z.object({\n path: z.string(),\n oldPath: z.string().nullable(),\n status: GitFileStatusCode,\n isBinary: z.boolean().default(false),\n isImage: z.boolean().default(false),\n additions: z.number().int().nonnegative(),\n deletions: z.number().int().nonnegative(),\n hunks: z.array(GitDiffHunk), // empty if binary or truncated\n truncated: z.boolean().default(false), // diff exceeded maxBytes; hunks omitted\n});\nexport type GitFileDiff = z.infer<typeof GitFileDiff>;\nexport const GitDiffRequest = z.object({\n path: z.string().default(\"\"), // repo root\n // diff selectors, mutually exclusive precedence: refs > staged > worktree\n staged: z.boolean().default(false), // --cached (index vs HEAD)\n // Workspace review includes after-images that ordinary `git diff` omits.\n // Explicit so commit/staged consumers keep native Git semantics by default.\n includeUntracked: z.boolean().default(false),\n fromRef: z.string().optional(),\n toRef: z.string().optional(),\n pathspec: z.array(z.string()).default([]),\n contextLines: z.number().int().min(0).max(10).default(3),\n maxBytesPerFile: z\n .number()\n .int()\n .positive()\n .max(2 * 1024 * 1024)\n .default(512 * 1024),\n});\nexport type GitDiffRequest = z.infer<typeof GitDiffRequest>;\nexport const GitDiffResponse = z.object({\n files: z.array(GitFileDiff),\n revision: z.number().int().nonnegative(),\n});\nexport type GitDiffResponse = z.infer<typeof GitDiffResponse>;\n\n/** One repository read unit: status metadata plus an optional comparison.\n * Multiple units execute behind one Channel-A lease and preserve input order. */\nexport const GitReadBatchItemRequest = z.object({\n status: GitStatusRequest,\n diff: GitDiffRequest.optional(),\n});\nexport type GitReadBatchItemRequest = z.infer<typeof GitReadBatchItemRequest>;\nexport const GitReadBatchRequest = z.object({\n requests: z.array(GitReadBatchItemRequest).min(1).max(32),\n});\nexport type GitReadBatchRequest = z.infer<typeof GitReadBatchRequest>;\nexport const GitReadBatchItemResponse = z.object({\n status: GitStatusResponse,\n diff: GitDiffResponse.optional(),\n});\nexport type GitReadBatchItemResponse = z.infer<typeof GitReadBatchItemResponse>;\nexport const GitReadBatchResponse = z.object({\n results: z.array(GitReadBatchItemResponse),\n});\nexport type GitReadBatchResponse = z.infer<typeof GitReadBatchResponse>;\n\n// ─── Workbench v2 turn-end workspace capture ────────────\n// A capture is a point-in-time snapshot of the session workspace's CHANGES,\n// probed live off the box at turn end (detectRepos → gitStatus/gitDiff → fsRead\n// after-images → fsList tree index). It is the cold/offline read source that\n// lets the workbench paint instantly with zero machine round-trips. Live always\n// wins when the box is warm; a capture is a labelled cache, never a replacement.\n// This is the shape the M1 worker writes and the M2 API serves inline.\n\n// One touched file in the capture. `contentRef` is the content-addressed storage\n// key of its after-image blob (shared across revisions → the GC set-difference\n// key). Deleted / binary / >5MB (tooLarge) files carry no contentRef; the UI\n// renders \"too large — open live\" for tooLarge, and the diff hunks for the rest.\nexport const WorkspaceCaptureFile = z.object({\n path: z.string(),\n status: GitFileStatusCode,\n // sha256 of the captured after-image bytes; null when deleted / tooLarge.\n hash: z.string().nullable(),\n // git blob sha of the HEAD version — the wake-on-edit flush guard (design\n // §10.1). null when the path is new/untracked (no HEAD blob).\n baseHash: z.string().nullable(),\n // Content-addressed storage key of the after-image; null when deleted /\n // tooLarge / binary (no inline content captured).\n contentRef: z.string().nullable(),\n sizeBytes: z.number().int().nonnegative(),\n isBinary: z.boolean().default(false),\n // >5MB per-file content guard tripped: content NOT captured, render \"open live\".\n tooLarge: z.boolean().default(false),\n deleted: z.boolean().default(false),\n});\nexport type WorkspaceCaptureFile = z.infer<typeof WorkspaceCaptureFile>;\n\n// One repo discovered in the workspace. `diff` is the working/index surface vs\n// HEAD; `branchDiff`, when available, is the complete current branch vs the\n// remote default branch and therefore retains committed agent work. `status`\n// is the full porcelain file list. root \"\" = the workspace root repo.\nexport const WorkspaceCaptureRepo = z.object({\n root: z.string(),\n head: z.string().nullable(),\n // Exact HEAD commit object identity. null for unborn repositories; optional\n // for workspace captures written before commit identity was retained.\n headOid: z.string().nullable().optional(),\n detached: z.boolean().default(false),\n upstream: z.string().nullable(),\n ahead: z.number().int().nonnegative().default(0),\n behind: z.number().int().nonnegative().default(0),\n status: z.array(GitFileStatus),\n diff: z.array(GitFileDiff),\n branchDiff: z.array(GitFileDiff).optional(),\n});\nexport type WorkspaceCaptureRepo = z.infer<typeof WorkspaceCaptureRepo>;\n\nexport const WorkspaceCaptureDegradedReason = z.enum([\n \"repository_discovery_command_failed\",\n \"repository_discovery_timed_out\",\n \"repository_discovery_result_limit_exceeded\",\n \"repository_read_unavailable\",\n]);\nexport type WorkspaceCaptureDegradedReason = z.infer<typeof WorkspaceCaptureDegradedReason>;\n\n// Rollup counters — carried on the row (jsonb) and the announce event so the UI\n// can reserve layout (no layout shift) before fetching the manifest.\nexport const WorkspaceCaptureStats = z.object({\n repoCount: z.number().int().nonnegative(),\n fileCount: z.number().int().nonnegative(),\n additions: z.number().int().nonnegative(),\n deletions: z.number().int().nonnegative(),\n totalBytes: z.number().int().nonnegative(),\n tooLargeCount: z.number().int().nonnegative(),\n binaryCount: z.number().int().nonnegative(),\n treeEntryCount: z.number().int().nonnegative(),\n treeTruncated: z.boolean().default(false),\n durationMs: z.number().int().nonnegative(),\n // sha256 over the change surface (per-file path/hash/status + per-repo diff\n // summary, tree/mtime excluded). The empty-turn gate skips a capture whose\n // fingerprint equals the previous revision's — \"no new revision when nothing\n // changed\" holds even when the tree stays dirty across read-only turns.\n fingerprint: z.string().optional(),\n});\nexport type WorkspaceCaptureStats = z.infer<typeof WorkspaceCaptureStats>;\n\n// The single manifest blob (one per revision). Holds everything the workbench\n// needs for a cold paint: the tree index, per-repo status+diff, and the file\n// index (after-image refs). The M2 API serves this inline when small (≤2MB).\nexport const WorkspaceCaptureManifest = z.object({\n version: z.literal(1),\n revision: z.number().int().nonnegative(),\n capturedAt: z.string(),\n turnId: z.string().nullable(),\n leaseEpoch: z.number().int().nonnegative(),\n treeIndex: FsTreeNode,\n treeTruncated: z.boolean().default(false),\n repos: z.array(WorkspaceCaptureRepo),\n files: z.array(WorkspaceCaptureFile),\n stats: WorkspaceCaptureStats,\n});\nexport type WorkspaceCaptureManifest = z.infer<typeof WorkspaceCaptureManifest>;\n\n// Announce-only event payload. Metadata only — never content.\nexport const WorkspaceRevisionCapturedPayload = z.object({\n revision: z.number().int().nonnegative(),\n turnId: z.string().nullable(),\n capturedAt: z.string(),\n leaseEpoch: z.number().int().nonnegative(),\n stats: WorkspaceCaptureStats,\n});\nexport type WorkspaceRevisionCapturedPayload = z.infer<typeof WorkspaceRevisionCapturedPayload>;\n\nexport const WorkspaceRevisionDegradedPayload = z.object({\n revision: z.number().int().nonnegative(),\n turnId: z.string().nullable(),\n capturedAt: z.string(),\n leaseEpoch: z.number().int().nonnegative(),\n reason: WorkspaceCaptureDegradedReason,\n});\nexport type WorkspaceRevisionDegradedPayload = z.infer<typeof WorkspaceRevisionDegradedPayload>;\n\n// --- M2 capture READ API -------------------------------------\n// A short-TTL signed GET URL minted PER REQUEST (never stored). The manifest is\n// served inline for the ≤2MB common case (the <200ms one-round-trip paint); a\n// >2MB manifest and a >256KB single-file after-image fall back to one of these.\nexport const WorkspaceCaptureSignedUrl = z.object({\n url: z.string().url(),\n expiresAt: z.string(),\n});\nexport type WorkspaceCaptureSignedUrl = z.infer<typeof WorkspaceCaptureSignedUrl>;\n\n// GET …/sessions/:sid/workspace/capture. `{available:false}` when no capture row\n// exists yet (or its manifest blob was GC'd) — the client falls back to the\n// live/wake path (status-quo behavior, NEVER an error → served 200). When\n// available: the row metadata (revision/turn/epoch/stats/size) is always inline;\n// the manifest is inline (`manifest`) for the ≤2MB common case and a signed GET\n// URL (`manifestUrl`) above that. Exactly one of manifest/manifestUrl is non-null.\nexport const GetWorkspaceCaptureResponse = z.discriminatedUnion(\"available\", [\n z.object({\n available: z.literal(false),\n // Optional for additive compatibility with older servers. New servers set\n // these fields when the newest durable revision is an explicit degraded\n // marker rather than \"no capture exists yet\".\n degradedReason: WorkspaceCaptureDegradedReason.nullable().optional(),\n revision: z.number().int().nonnegative().nullable().optional(),\n capturedAt: z.string().nullable().optional(),\n turnId: z.string().nullable().optional(),\n leaseEpoch: z.number().int().nonnegative().nullable().optional(),\n }),\n z.object({\n available: z.literal(true),\n revision: z.number().int().nonnegative(),\n capturedAt: z.string(),\n turnId: z.string().nullable(),\n leaseEpoch: z.number().int().nonnegative(),\n sizeBytes: z.number().int().nonnegative(),\n stats: WorkspaceCaptureStats,\n manifest: WorkspaceCaptureManifest.nullable().default(null),\n manifestUrl: WorkspaceCaptureSignedUrl.nullable().default(null),\n }),\n]);\nexport type GetWorkspaceCaptureResponse = z.infer<typeof GetWorkspaceCaptureResponse>;\n\n// GET …/sessions/:sid/workspace/capture/file?path=…&revision=…. A single\n// after-image resolved from the (revision|latest) manifest. The file metadata\n// (from the manifest entry) is always present; `content` is inline for ≤256KB\n// (base64 for binary, utf8 otherwise), else a signed GET URL (`contentUrl`) to\n// the raw content-addressed blob. A tooLarge marker (or a captured file with no\n// content blob — e.g. the after-image was GC'd) returns metadata only, no\n// content and no URL. Path-not-in-manifest / deleted → 404 at the route (not\n// represented here).\nexport const GetWorkspaceCaptureFileResponse = z.object({\n path: z.string(),\n revision: z.number().int().nonnegative(),\n status: GitFileStatusCode,\n hash: z.string().nullable(),\n baseHash: z.string().nullable(),\n sizeBytes: z.number().int().nonnegative(),\n isBinary: z.boolean(),\n tooLarge: z.boolean(),\n encoding: FsEncoding.nullable().default(null), // set iff content is inline\n content: z.string().nullable().default(null), // inline ≤256KB (per encoding)\n contentUrl: WorkspaceCaptureSignedUrl.nullable().default(null), // signed >256KB\n});\nexport type GetWorkspaceCaptureFileResponse = z.infer<typeof GetWorkspaceCaptureFileResponse>;\n\nexport const GitLogRequest = z.object({\n path: z.string().default(\"\"),\n ref: z.string().default(\"HEAD\"),\n maxCount: z.number().int().positive().max(1_000).default(100),\n skip: z.number().int().nonnegative().default(0),\n pathspec: z.array(z.string()).default([]),\n});\nexport type GitLogRequest = z.infer<typeof GitLogRequest>;\nexport const GitCommit = z.object({\n sha: z.string(),\n shortSha: z.string(),\n parents: z.array(z.string()),\n author: z.object({\n name: z.string(),\n email: z.string(),\n timestamp: z.number().int(),\n }),\n committer: z.object({\n name: z.string(),\n email: z.string(),\n timestamp: z.number().int(),\n }),\n subject: z.string(),\n body: z.string(),\n refs: z.array(z.string()).default([]), // decorations: branch/tag pointers\n});\nexport type GitCommit = z.infer<typeof GitCommit>;\nexport const GitLogResponse = z.object({\n commits: z.array(GitCommit),\n hasMore: z.boolean(),\n});\nexport type GitLogResponse = z.infer<typeof GitLogResponse>;\n\nexport const GitShowRequest = z.object({\n path: z.string().default(\"\"),\n ref: z.string(), // a commit/tag/tree-ish\n filePath: z.string().optional(), // ref + filePath => raw blob (\"open file at commit\")\n encoding: FsEncoding.default(\"utf8\"),\n maxBytesPerFile: z\n .number()\n .int()\n .positive()\n .max(2 * 1024 * 1024)\n .default(512 * 1024),\n});\nexport type GitShowRequest = z.infer<typeof GitShowRequest>;\nexport const GitShowResponse = z.object({\n commit: GitCommit.nullable(), // null when fetching a raw blob\n files: z.array(GitFileDiff), // commit diff vs first parent\n blob: z\n .object({\n content: z.string(),\n encoding: FsEncoding,\n sizeBytes: z.number().int(),\n truncated: z.boolean(),\n })\n .nullable(),\n revision: z.number().int().nonnegative(),\n});\nexport type GitShowResponse = z.infer<typeof GitShowResponse>;\n\n// --- A2 Terminal exec (run a command in-box, stream stdout/stderr) -----------\n// The command-output FIREHOSE rides A1 (sandbox.command.output.delta). This is\n// the SYNCHRONOUS exec: run a bounded command and return its stdout/stderr +\n// exit code inline (the result IS the HTTP response). Full interactive PTY\n// (open/write/resize) layers on top via the pty.* events; exec ships now.\nexport const TerminalExecRequest = z.object({\n command: z.string().min(1),\n cwd: z.string().default(\"\"), // workspace-relative\n // Hard wall-clock bound. A timeout response is returned only after the exact\n // provider process is physically absent and any retained admission settles.\n timeoutMs: z.number().int().positive().max(120_000).default(30_000),\n // Stream the deltas onto A1 as the agent firehose (so other viewers see it),\n // in addition to returning the buffered result inline.\n emitStream: z.boolean().default(true),\n});\nexport type TerminalExecRequest = z.infer<typeof TerminalExecRequest>;\nexport const TerminalExecResponse = z.object({\n stdout: z.string(),\n stderr: z.string(),\n exitCode: z.number().int(),\n // Retained for wire compatibility; synchronous exec never exposes a live\n // provider process. Interactive work uses the PTY API.\n running: z.literal(false),\n wallTimeSeconds: z.number().nonnegative(),\n});\nexport type TerminalExecResponse = z.infer<typeof TerminalExecResponse>;\n\n// --- A2 Terminal PTY control (output rides A1) -------------------------------\nexport const PtyOpenRequest = z.object({\n cols: z.number().int().positive().max(500).default(80),\n rows: z.number().int().positive().max(300).default(24),\n cwd: z.string().default(\"\"), // workspace-relative\n shell: z.string().optional(), // default: resolved login shell\n});\nexport type PtyOpenRequest = z.infer<typeof PtyOpenRequest>;\nexport const PtyOpenResponse = z.object({\n ptyId: z.string().uuid(),\n // output streams as terminal.pty.output.delta on the SSE channel the client holds\n streamVia: z.literal(\"sse-events\"),\n supportsInput: z.boolean(), // false on backends without writeStdin\n});\nexport type PtyOpenResponse = z.infer<typeof PtyOpenResponse>;\nexport const PtyWriteRequest = z.object({\n ptyId: z.string().uuid(),\n data: z.string(),\n}); // utf-8 stdin\nexport type PtyWriteRequest = z.infer<typeof PtyWriteRequest>;\nexport const PtyResizeRequest = z.object({\n ptyId: z.string().uuid(),\n cols: z.number().int().positive(),\n rows: z.number().int().positive(),\n});\nexport type PtyResizeRequest = z.infer<typeof PtyResizeRequest>;\nexport const PtyCloseRequest = z.object({ ptyId: z.string().uuid() });\nexport type PtyCloseRequest = z.infer<typeof PtyCloseRequest>;\n\n// Per-session structured-service capabilities (the Channel-A slice of the\n// negotiation). The full SessionCapabilities doc already carries FileSystem /\n// Terminal / Git blocks (P0.1); this is the compact projection the SDK mirrors.\nexport const SessionStructuredCapabilities = z.object({\n FileSystem: z.object({\n available: z.boolean(),\n readOnly: z.boolean(),\n root: z.string(),\n }),\n Terminal: z.object({\n events: z.boolean(), // command.output firehose (always on if a box exists)\n exec: z.boolean(), // synchronous terminal exec\n pty: z.object({ available: z.boolean() }), // interactive stdin (writeStdin)\n }),\n Git: z.object({ available: z.boolean(), repos: z.array(z.string()) }),\n});\nexport type SessionStructuredCapabilities = z.infer<typeof SessionStructuredCapabilities>;\n\nexport const SessionEvent = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n sequence: z.number().int().positive(),\n /** Server-owned durable high-water mark for a synthetic compact event. */\n coveredThrough: z.number().int().positive().optional(),\n type: SessionEventType,\n payload: z.unknown().default({}),\n occurredAt: z.string(),\n clientEventId: SessionOperationKey.nullable().optional(),\n turnId: z.string().uuid().nullable().optional(),\n turnGeneration: z.number().int().nonnegative().nullable().optional(),\n turnAttemptId: z.string().uuid().nullable().optional(),\n turnAssociation: z.enum([\"current\", \"late_rejected\", \"duplicate\"]).nullable().optional(),\n duplicateOfEventId: z.string().uuid().nullable().optional(),\n duplicateReason: z.string().min(1).max(1024).nullable().optional(),\n});\nexport type SessionEvent = z.infer<typeof SessionEvent>;\n\nexport type SessionEventCompactResult = {\n version: 1;\n semanticClass: SessionEventSemanticClass;\n source: {\n id: string;\n type: SessionEventType;\n sequence: number;\n occurredAt: string;\n turnId: string | null;\n turnGeneration: number | null;\n turnAttemptId: string | null;\n turnAssociation: SessionEvent[\"turnAssociation\"];\n };\n // These identity fields are repeated at the top level intentionally: an\n // MCP caller can act on the result without unpacking the source envelope.\n id: string;\n type: SessionEventType;\n sequence: number;\n occurredAt: string;\n turnId: string | null;\n turnGeneration: number | null;\n turnAttemptId: string | null;\n turnAssociation: SessionEvent[\"turnAssociation\"];\n coveredSequence: { first: number; last: number };\n status:\n | \"completed\"\n | \"failed\"\n | \"cancelled\"\n | \"superseded\"\n | \"checkpoint\"\n | \"receipt\"\n | \"unknown\";\n text: string | null;\n output: unknown;\n result: unknown;\n failure: {\n error: string | null;\n code: string | null;\n retryable: boolean | null;\n recovery: string | null;\n } | null;\n checkpoint: unknown;\n receipt: unknown;\n truncation: {\n truncated: boolean;\n fields: string[];\n originalBytes: number | null;\n deliveredBytes: number;\n };\n};\n\nconst SESSION_EVENT_COMPACT_RESULT_TEXT_MAX_BYTES = 12 * 1024;\n// Five independently bounded slots plus identity/metadata must fit below the\n// 64 KiB MCP envelope even when a pathological producer supplies every slot.\nconst SESSION_EVENT_COMPACT_RESULT_VALUE_MAX_BYTES = 8 * 1024;\n\ntype CompactValue = {\n value: unknown;\n truncated: boolean;\n originalBytes: number | null;\n};\n\ntype JsonRecord = Record<string, unknown>;\n\n/**\n * Build the bounded semantic result used by `latest + result=compact`.\n *\n * This is intentionally a pure projection over one already-authoritative\n * event. It never reads history, invokes a model, follows a URL, or stores an\n * artifact. The DB/API/MCP layers decide which event is authoritative; this\n * helper only extracts the small result facts that can cross a client boundary.\n */\nexport function compactSessionEventResult(\n event: SessionEvent,\n semanticClass: SessionEventSemanticClass,\n coveredSequence: { first: number; last: number } = {\n first: event.sequence,\n last: event.sequence,\n },\n): SessionEventCompactResult {\n const payload = isSessionEventJsonRecord(event.payload) ? event.payload : {};\n const fields: string[] = [];\n let originalBytes = 0;\n\n const textCandidate = typeof payload.text === \"string\" ? payload.text : null;\n const outputCandidate = Object.prototype.hasOwnProperty.call(payload, \"output\")\n ? payload.output\n : null;\n const resultCandidate = Object.prototype.hasOwnProperty.call(payload, \"result\")\n ? payload.result\n : undefined;\n const textValue = textCandidate ?? (typeof outputCandidate === \"string\" ? outputCandidate : null);\n const text = textValue === null ? null : compactResultText(textValue);\n if (text && text.truncated) {\n fields.push(\"text\");\n originalBytes += text.originalBytes ?? 0;\n }\n\n const output = compactResultValue(outputCandidate);\n if (outputCandidate !== null && output.truncated) {\n fields.push(\"output\");\n originalBytes += output.originalBytes ?? 0;\n }\n\n const result = compactResultValue(\n resultCandidate === undefined ? (textValue ?? outputCandidate) : resultCandidate,\n );\n if (resultCandidate !== undefined && result.truncated) {\n fields.push(\"result\");\n originalBytes += result.originalBytes ?? 0;\n }\n\n const checkpointField = firstOwnPayloadValue(payload, [\"checkpoint\", \"summary\", \"snapshot\"]);\n const checkpointCandidate =\n checkpointField !== undefined\n ? checkpointField\n : semanticClass === \"checkpoint\"\n ? payload\n : null;\n const checkpoint = compactResultValue(checkpointCandidate);\n if (checkpointCandidate !== null && checkpoint.truncated) {\n fields.push(\"checkpoint\");\n originalBytes += checkpoint.originalBytes ?? 0;\n }\n\n const receiptCandidate = firstOwnPayloadValue(payload, [\"receipt\", \"receiptData\"]);\n const receipt = compactResultValue(\n receiptCandidate !== undefined\n ? receiptCandidate\n : semanticClass === \"tool_receipt\"\n ? payload\n : null,\n );\n if (receipt.truncated) {\n fields.push(\"receipt\");\n originalBytes += receipt.originalBytes ?? 0;\n }\n\n const failure = compactFailure(payload, event.type);\n if (failure.truncated) {\n fields.push(\"failure\");\n originalBytes += failure.originalBytes ?? 0;\n }\n\n if (isSessionEventJsonRecord(payload.truncation) && payload.truncation.truncated === true) {\n fields.push(\"payload\");\n }\n\n const source = {\n id: event.id,\n type: event.type,\n sequence: event.sequence,\n occurredAt: event.occurredAt,\n turnId: event.turnId ?? null,\n turnGeneration: event.turnGeneration ?? null,\n turnAttemptId: event.turnAttemptId ?? null,\n turnAssociation: event.turnAssociation ?? null,\n };\n const status = compactResultStatus(event.type, semanticClass, payload);\n const outputValue = outputCandidate === null ? null : output.value;\n const resultValue = result.value;\n const checkpointValue = checkpointCandidate === null ? null : checkpoint.value;\n const receiptValue =\n receiptCandidate === null && semanticClass !== \"tool_receipt\" ? null : receipt.value;\n const compact: SessionEventCompactResult = {\n version: 1,\n semanticClass,\n source,\n id: source.id,\n type: source.type,\n sequence: source.sequence,\n occurredAt: source.occurredAt,\n turnId: source.turnId,\n turnGeneration: source.turnGeneration,\n turnAttemptId: source.turnAttemptId,\n turnAssociation: source.turnAssociation,\n coveredSequence,\n status,\n text: text?.value ?? null,\n output: outputValue,\n result: resultValue,\n failure: failure.value,\n checkpoint: checkpointValue,\n receipt: receiptValue,\n truncation: {\n truncated: fields.length > 0,\n fields: [...new Set(fields)],\n originalBytes: fields.length > 0 ? originalBytes || null : null,\n deliveredBytes: sessionEventJsonBytes({\n text: text?.value ?? null,\n output: outputValue,\n result: resultValue,\n failure: failure.value,\n checkpoint: checkpointValue,\n receipt: receiptValue,\n }),\n },\n };\n return compact;\n}\n\nfunction isSessionEventJsonRecord(value: unknown): value is JsonRecord {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction firstOwnPayloadValue(payload: JsonRecord, keys: readonly string[]): unknown | undefined {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(payload, key)) return payload[key];\n }\n return undefined;\n}\n\nfunction compactResultText(value: string): CompactValue & { value: string } {\n const originalBytes = new TextEncoder().encode(value).byteLength;\n if (originalBytes <= SESSION_EVENT_COMPACT_RESULT_TEXT_MAX_BYTES) {\n return { value, truncated: false, originalBytes };\n }\n let omittedBytes = originalBytes - SESSION_EVENT_COMPACT_RESULT_TEXT_MAX_BYTES;\n let projected = value;\n for (let attempt = 0; attempt < 4; attempt += 1) {\n const marker = `…[${omittedBytes} UTF-8 bytes omitted from compact result]…`;\n const budget = Math.max(0, SESSION_EVENT_COMPACT_RESULT_TEXT_MAX_BYTES - utf8Bytes(marker));\n const head = utf8PrefixForResult(value, Math.floor(budget * 0.7));\n const tail = utf8SuffixForResult(value, budget - utf8Bytes(head));\n projected = `${head}${marker}${tail}`;\n const nextOmitted = Math.max(0, originalBytes - utf8Bytes(head) - utf8Bytes(tail));\n if (nextOmitted === omittedBytes) break;\n omittedBytes = nextOmitted;\n }\n return { value: projected, truncated: true, originalBytes };\n}\n\nfunction compactResultValue(value: unknown): CompactValue {\n if (value === null || value === undefined) {\n return { value: null, truncated: false, originalBytes: null };\n }\n const measurement = measureSessionEventJson(value);\n const bounded = boundSessionEventPayload(value, {\n surface: \"http_projection\",\n maxBytes: SESSION_EVENT_COMPACT_RESULT_VALUE_MAX_BYTES,\n });\n const deliveredBytes = measureSessionEventJson(bounded).bytes;\n return {\n value: bounded,\n truncated:\n measurement.bytes === null || deliveredBytes === null || measurement.bytes !== deliveredBytes,\n originalBytes: measurement.bytes,\n };\n}\n\nfunction compactFailure(\n payload: JsonRecord,\n eventType: SessionEventType,\n): CompactValue & {\n value: SessionEventCompactResult[\"failure\"];\n} {\n const isFailure =\n eventType === \"turn.failed\" ||\n eventType === \"turn.cancelled\" ||\n eventType === \"turn.superseded\";\n const hasFailureField = [\"error\", \"code\", \"retryable\", \"recovery\"].some((key) =>\n Object.prototype.hasOwnProperty.call(payload, key),\n );\n if (!isFailure && !hasFailureField) {\n return { value: null, truncated: false, originalBytes: null };\n }\n const error = compactResultStringField(payload.error);\n const code = compactResultStringField(payload.code);\n const recovery = compactResultStringField(payload.recovery);\n const retryable = typeof payload.retryable === \"boolean\" ? payload.retryable : null;\n const value = {\n error: error.value,\n code: code.value,\n retryable,\n recovery: recovery.value,\n };\n const originalBytes = [error, code, recovery]\n .map((field) => field.originalBytes ?? 0)\n .reduce((sum, bytes) => sum + bytes, 0);\n return {\n value,\n truncated: error.truncated || code.truncated || recovery.truncated,\n originalBytes: originalBytes || null,\n };\n}\n\nfunction compactResultStringField(value: unknown): CompactValue & { value: string | null } {\n if (typeof value !== \"string\") {\n return { value: null, truncated: false, originalBytes: null };\n }\n return compactResultText(value);\n}\n\nfunction compactResultStatus(\n eventType: SessionEventType,\n semanticClass: SessionEventSemanticClass,\n payload: JsonRecord,\n): SessionEventCompactResult[\"status\"] {\n if (eventType === \"turn.failed\") return \"failed\";\n if (eventType === \"turn.cancelled\") return \"cancelled\";\n if (eventType === \"turn.superseded\") return \"superseded\";\n if (eventType === \"turn.completed\" || eventType === \"agent.message.completed\") {\n return \"completed\";\n }\n if (semanticClass === \"checkpoint\") return \"checkpoint\";\n if (\n semanticClass === \"tool_receipt\" ||\n eventType === \"artifact.created\" ||\n eventType === \"recording.available\"\n ) {\n return \"receipt\";\n }\n if (payload.status === \"failed\") return \"failed\";\n if (payload.status === \"completed\") return \"completed\";\n return \"unknown\";\n}\n\nfunction utf8Bytes(value: string): number {\n return new TextEncoder().encode(value).byteLength;\n}\n\nfunction utf8PrefixForResult(value: string, maxBytes: number): string {\n let bytes = 0;\n let index = 0;\n while (index < value.length) {\n const codePoint = value.codePointAt(index);\n if (codePoint === undefined) break;\n const character = String.fromCodePoint(codePoint);\n const next = utf8Bytes(character);\n if (bytes + next > maxBytes) break;\n bytes += next;\n index += character.length;\n }\n return value.slice(0, index);\n}\n\nfunction utf8SuffixForResult(value: string, maxBytes: number): string {\n let bytes = 0;\n let index = value.length;\n while (index > 0) {\n const width =\n index > 1 && value.charCodeAt(index - 1) >= 0xdc00 && value.charCodeAt(index - 1) <= 0xdfff\n ? 2\n : 1;\n const character = value.slice(index - width, index);\n const next = utf8Bytes(character);\n if (bytes + next > maxBytes) break;\n bytes += next;\n index -= width;\n }\n return value.slice(index);\n}\n\n// --- Durable host export ------------------------------------------------------\n\n/** Wire revision for the durable host event/usage export stream. */\nexport const OPENGENI_HOST_EXPORT_SCHEMA_REVISION = \"2026-07-host-export-v1\" as const;\n\n/**\n * Decimal string rather than a JavaScript number: export cursors are PostgreSQL\n * bigint values and must remain exact beyond Number.MAX_SAFE_INTEGER.\n */\nexport const HostExportCursor = z.string().regex(/^(0|[1-9][0-9]*)$/);\nexport type HostExportCursor = z.infer<typeof HostExportCursor>;\n\nexport const HostExportConsumerId = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/);\nexport type HostExportConsumerId = z.infer<typeof HostExportConsumerId>;\n\nexport const HostExportInitiator = TurnInitiator.extend({\n subjectId: z.string().min(1).max(1024),\n label: z.string().min(1).max(256).optional(),\n});\nexport type HostExportInitiator = z.infer<typeof HostExportInitiator>;\n\nexport const HostExportInitiatorContext = TurnInitiatorContext.refine(\n (value) => {\n try {\n return new TextEncoder().encode(JSON.stringify(value)).byteLength <= 4096;\n } catch {\n return false;\n }\n },\n { message: \"Host export initiator context exceeds 4096 UTF-8 bytes\" },\n);\nexport type HostExportInitiatorContext = z.infer<typeof HostExportInitiatorContext>;\n\nconst HostExportAttribution = {\n initiator: HostExportInitiator.nullable(),\n initiatorContext: HostExportInitiatorContext,\n origin: SessionTurnSource.nullable(),\n} as const;\n\n/**\n * Host streams are deliberately forward-tolerant across rolling upgrades.\n * OpenGeni's application contract enumerates the event types known to this\n * build, while the durable export may be read by an older host consumer after\n * a newer writer has committed a bounded type. The database remains the\n * authority for the byte bounds on these persisted strings.\n */\nexport const HostSessionEvent = SessionEvent.extend({\n type: z.string().min(1).max(256),\n clientEventId: z.string().max(1024).nullable().optional(),\n turnAssociation: z.string().min(1).max(64).nullable().optional(),\n duplicateReason: z.string().max(4096).nullable().optional(),\n});\nexport type HostSessionEvent = z.infer<typeof HostSessionEvent>;\n\n/** Export-bounded usage fact; custom bounded metric names remain supported. */\nexport const HostUsageEvent = UsageEvent.extend({\n subjectId: z.string().max(1024).nullable(),\n eventType: z.string().min(1).max(256),\n unit: z.string().min(1).max(128),\n sourceResourceType: z.string().max(256).nullable(),\n sourceResourceId: z.string().max(2048).nullable(),\n idempotencyKey: z.string().min(1).max(2048),\n billingProviderEventId: z.string().max(2048).nullable(),\n});\nexport type HostUsageEvent = z.infer<typeof HostUsageEvent>;\n\n/**\n * One immutable, bounded session-event snapshot from the transactional host\n * outbox. Cross-session cursor order is stable but deliberately non-causal;\n * within a session, `event.sequence` remains authoritative and monotonic.\n */\nexport const HostEventExport = z.object({\n schemaRevision: z.literal(OPENGENI_HOST_EXPORT_SCHEMA_REVISION),\n cursor: HostExportCursor,\n idempotencyKey: z.string().min(1).max(2048),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n /**\n * Immutable root of event.sessionId's session lineage at capture time. Null\n * only for an unresolved pre-lineage/legacy export row.\n */\n rootSessionId: z.string().uuid().nullable(),\n ...HostExportAttribution,\n event: HostSessionEvent,\n});\nexport type HostEventExport = z.infer<typeof HostEventExport>;\n\n/** One exact, idempotency-keyed usage fact from the same ordered outbox. */\nexport const HostUsageExport = z.object({\n schemaRevision: z.literal(OPENGENI_HOST_EXPORT_SCHEMA_REVISION),\n cursor: HostExportCursor,\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid().nullable(),\n /** Null when sessionId is null or an unresolved pre-lineage legacy row. */\n rootSessionId: z.string().uuid().nullable(),\n turnId: z.string().uuid().nullable(),\n turnAttemptId: z.string().uuid().nullable(),\n ...HostExportAttribution,\n usage: HostUsageEvent,\n});\nexport type HostUsageExport = z.infer<typeof HostUsageExport>;\n\nexport const HostEventExportBatch = z.object({\n schemaRevision: z.literal(OPENGENI_HOST_EXPORT_SCHEMA_REVISION),\n consumerId: HostExportConsumerId,\n leaseToken: z.string().uuid(),\n checkpoint: HostExportCursor,\n throughCursor: HostExportCursor,\n events: z.array(HostEventExport).min(1).max(256),\n});\nexport type HostEventExportBatch = z.infer<typeof HostEventExportBatch>;\n\nexport const HostUsageExportBatch = z.object({\n schemaRevision: z.literal(OPENGENI_HOST_EXPORT_SCHEMA_REVISION),\n consumerId: HostExportConsumerId,\n leaseToken: z.string().uuid(),\n checkpoint: HostExportCursor,\n throughCursor: HostExportCursor,\n events: z.array(HostUsageExport).min(1).max(256),\n});\nexport type HostUsageExportBatch = z.infer<typeof HostUsageExportBatch>;\n\n/**\n * Optional embedded-host sinks. Delivery is at least once: the same batch may\n * be repeated after a process dies between sink success and checkpoint commit,\n * so sinks must deduplicate by event/usage idempotency key.\n */\nexport type HostEventSink = {\n consumerId: HostExportConsumerId;\n deliverEvents: (batch: HostEventExportBatch) => Promise<void>;\n};\n\nexport type HostUsageSink = {\n consumerId: HostExportConsumerId;\n deliverUsage: (batch: HostUsageExportBatch) => Promise<void>;\n};\n\nexport const SESSION_EVENT_TYPE_MAX_BYTES = 256;\nexport const SESSION_EVENT_CLIENT_EVENT_ID_MAX_BYTES = SESSION_OPERATION_KEY_MAX_CHARS * 4;\nexport const SESSION_EVENT_TURN_ASSOCIATION_MAX_BYTES = 64;\nexport const SESSION_EVENT_DUPLICATE_REASON_MAX_BYTES = 4 * 1024;\nexport const SESSION_EVENT_ENVELOPE_MAX_BYTES = 80 * 1024;\n\nexport type BoundSessionEventOptions = {\n surface?: SessionEventBoundarySurface;\n maxBytes?: number;\n};\n\n/**\n * Canonical lossy projection for a complete session event. Payload bounds alone\n * are insufficient: a malformed retained row can also carry an oversized type,\n * client id, or duplicate diagnostic. Keep cursor/UUID identity intact, bound\n * every free-form envelope string, and assert the exact final JSON envelope.\n */\nexport function boundSessionEvent(\n event: SessionEvent,\n options: BoundSessionEventOptions = {},\n): SessionEvent {\n const surface = options.surface ?? \"durable_audit\";\n const maxBytes = Math.max(8 * 1024, options.maxBytes ?? SESSION_EVENT_ENVELOPE_MAX_BYTES);\n // Never stringify the untrusted complete event. Measurement has one global\n // work budget and never invokes accessors/custom toJSON; serialization is\n // permitted only after the compact projection below has been constructed.\n const originalBytes = measureSessionEventJson(event).bytes;\n const source = sessionEventOwnDataFields(event);\n const id = canonicalSessionEventUuid(source.id, SESSION_EVENT_ZERO_UUID);\n const workspaceId = canonicalSessionEventUuid(source.workspaceId, SESSION_EVENT_ZERO_UUID);\n const sessionId = canonicalSessionEventUuid(source.sessionId, SESSION_EVENT_ZERO_UUID);\n const sequence =\n source.sequence.readable &&\n typeof source.sequence.value === \"number\" &&\n Number.isSafeInteger(source.sequence.value) &&\n source.sequence.value > 0\n ? source.sequence.value\n : 1;\n const occurredAt =\n source.occurredAt.readable &&\n typeof source.occurredAt.value === \"string\" &&\n sessionEventUtf8Bytes(source.occurredAt.value) <= 256\n ? source.occurredAt.value\n : \"1970-01-01T00:00:00.000Z\";\n const rawType = source.type.readable ? source.type.value : undefined;\n const typeIsSafe =\n typeof rawType === \"string\" &&\n sessionEventUtf8Bytes(rawType) <= SESSION_EVENT_TYPE_MAX_BYTES &&\n !rawType.includes(\"\\n\") &&\n !rawType.includes(\"\\r\");\n const rawClientEventId = source.clientEventId.readable ? source.clientEventId.value : undefined;\n const clientEventId = boundOptionalSessionEventText(\n typeof rawClientEventId === \"string\" || rawClientEventId === null\n ? rawClientEventId\n : undefined,\n SESSION_EVENT_CLIENT_EVENT_ID_MAX_BYTES,\n );\n const rawTurnAssociation = source.turnAssociation.readable\n ? source.turnAssociation.value\n : undefined;\n const turnAssociation =\n rawTurnAssociation === null ||\n rawTurnAssociation === undefined ||\n rawTurnAssociation === \"current\" ||\n rawTurnAssociation === \"late_rejected\" ||\n rawTurnAssociation === \"duplicate\"\n ? rawTurnAssociation\n : null;\n const rawDuplicateReason = source.duplicateReason.readable\n ? source.duplicateReason.value\n : undefined;\n const duplicateReason = boundOptionalSessionEventText(\n typeof rawDuplicateReason === \"string\" || rawDuplicateReason === null\n ? rawDuplicateReason\n : undefined,\n SESSION_EVENT_DUPLICATE_REASON_MAX_BYTES,\n );\n const turnId = canonicalOptionalSessionEventUuid(source.turnId);\n const turnGeneration = canonicalSessionEventGeneration(source.turnGeneration);\n const turnAttemptId = canonicalOptionalSessionEventUuid(source.turnAttemptId);\n const duplicateOfEventId = canonicalOptionalSessionEventUuid(source.duplicateOfEventId);\n const rawCoveredThrough = source.coveredThrough.readable\n ? source.coveredThrough.value\n : undefined;\n const coveredThrough =\n typeof rawCoveredThrough === \"number\" &&\n Number.isSafeInteger(rawCoveredThrough) &&\n rawCoveredThrough >= sequence\n ? rawCoveredThrough\n : undefined;\n const envelopeFields = [\n sessionEventCustomSerializerProjection(event),\n sessionEventAdditionalTopLevelFieldProjection(event),\n !typeIsSafe\n ? sessionEventEnvelopeFieldProjection(\n \"type\",\n rawType,\n \"session.event.envelope_omitted\",\n source.type.readable,\n )\n : null,\n !source.clientEventId.readable || rawClientEventId !== clientEventId\n ? sessionEventEnvelopeFieldProjection(\n \"clientEventId\",\n rawClientEventId,\n clientEventId,\n source.clientEventId.readable,\n )\n : null,\n !source.turnAssociation.readable || rawTurnAssociation !== turnAssociation\n ? sessionEventEnvelopeFieldProjection(\n \"turnAssociation\",\n rawTurnAssociation,\n turnAssociation,\n source.turnAssociation.readable,\n )\n : null,\n !source.duplicateReason.readable || rawDuplicateReason !== duplicateReason\n ? sessionEventEnvelopeFieldProjection(\n \"duplicateReason\",\n rawDuplicateReason,\n duplicateReason,\n source.duplicateReason.readable,\n )\n : null,\n !source.coveredThrough.readable || rawCoveredThrough !== coveredThrough\n ? sessionEventEnvelopeFieldProjection(\n \"coveredThrough\",\n rawCoveredThrough,\n coveredThrough,\n source.coveredThrough.readable,\n )\n : null,\n ...sessionEventCanonicalFieldProjections(source, {\n id,\n workspaceId,\n sessionId,\n sequence,\n occurredAt,\n }),\n ...sessionEventOptionalFieldProjections(source, {\n turnId,\n turnGeneration,\n turnAttemptId,\n duplicateOfEventId,\n }),\n !source.payload.readable\n ? sessionEventEnvelopeFieldProjection(\"payload\", undefined, null, false)\n : null,\n ].filter((field) => field !== null);\n const rawPayload = source.payload.readable\n ? source.payload.value\n : \"[event payload accessor omitted at bounded projection boundary]\";\n const payload =\n envelopeFields.length === 0\n ? boundSessionEventPayload(rawPayload, { surface })\n : boundSessionEventPayload(\n {\n preview: \"[legacy event envelope normalized at bounded projection boundary]\",\n originalEventBytes: originalBytes,\n originalType: typeof rawType === \"string\" ? boundSessionEventText(rawType, 256) : null,\n envelopeProjection: {\n truncated: true,\n surface,\n fields: envelopeFields,\n },\n fullEvidence: { available: false, reason: \"not_retained\" },\n },\n { surface, maxBytes: 8 * 1024 },\n );\n const bounded: SessionEvent = {\n id,\n workspaceId,\n sessionId,\n sequence,\n ...(coveredThrough === undefined ? {} : { coveredThrough }),\n type: typeIsSafe ? (rawType as SessionEvent[\"type\"]) : \"session.event.envelope_omitted\",\n payload,\n occurredAt,\n ...(sessionEventShouldEmitOptionalField(source.clientEventId) ? { clientEventId } : {}),\n ...(sessionEventShouldEmitOptionalField(source.turnId) ? { turnId } : {}),\n ...(sessionEventShouldEmitOptionalField(source.turnGeneration) ? { turnGeneration } : {}),\n ...(sessionEventShouldEmitOptionalField(source.turnAttemptId) ? { turnAttemptId } : {}),\n ...(sessionEventShouldEmitOptionalField(source.turnAssociation) ? { turnAssociation } : {}),\n ...(sessionEventShouldEmitOptionalField(source.duplicateOfEventId)\n ? { duplicateOfEventId }\n : {}),\n ...(sessionEventShouldEmitOptionalField(source.duplicateReason) ? { duplicateReason } : {}),\n };\n if (sessionEventJsonBytes(bounded) <= maxBytes) return bounded;\n\n const fallback: SessionEvent = {\n id,\n workspaceId,\n sessionId,\n sequence,\n ...(coveredThrough === undefined ? {} : { coveredThrough }),\n type: \"session.event.envelope_omitted\",\n payload: boundSessionEventPayload(\n {\n preview: \"[legacy event envelope omitted at bounded projection boundary]\",\n originalEventBytes: originalBytes,\n originalType: typeof rawType === \"string\" ? boundSessionEventText(rawType, 256) : null,\n fullEvidence: { available: false, reason: \"not_retained\" },\n },\n { surface, maxBytes: 4 * 1024 },\n ),\n occurredAt,\n ...(sessionEventShouldEmitOptionalField(source.clientEventId) ? { clientEventId } : {}),\n ...(sessionEventShouldEmitOptionalField(source.turnId) ? { turnId } : {}),\n ...(sessionEventShouldEmitOptionalField(source.turnGeneration) ? { turnGeneration } : {}),\n ...(sessionEventShouldEmitOptionalField(source.turnAttemptId) ? { turnAttemptId } : {}),\n ...(sessionEventShouldEmitOptionalField(source.turnAssociation) ? { turnAssociation } : {}),\n ...(sessionEventShouldEmitOptionalField(source.duplicateOfEventId)\n ? { duplicateOfEventId }\n : {}),\n ...(sessionEventShouldEmitOptionalField(source.duplicateReason) ? { duplicateReason } : {}),\n };\n const deliveredBytes = sessionEventJsonBytes(fallback);\n if (deliveredBytes > maxBytes) {\n throw new RangeError(\n `Bounded session event exceeds its final envelope (${deliveredBytes} > ${maxBytes} bytes)`,\n );\n }\n return fallback;\n}\n\nfunction sessionEventEnvelopeFieldProjection(\n field: string,\n original: unknown,\n delivered: unknown,\n originalReadable = true,\n): { field: string; originalBytes: number | null; deliveredBytes: number } {\n return {\n field,\n originalBytes: originalReadable\n ? typeof original === \"string\"\n ? sessionEventUtf8Bytes(original)\n : typeof original === \"number\" || typeof original === \"boolean\"\n ? sessionEventJsonBytes(original)\n : original === null || original === undefined\n ? 0\n : null\n : null,\n deliveredBytes:\n typeof delivered === \"string\"\n ? sessionEventUtf8Bytes(delivered)\n : typeof delivered === \"number\" || typeof delivered === \"boolean\"\n ? sessionEventJsonBytes(delivered)\n : 0,\n };\n}\n\nfunction sessionEventCustomSerializerProjection(\n event: SessionEvent,\n): { field: string; originalBytes: null; deliveredBytes: 0 } | null {\n const projection = {\n field: \"toJSON\",\n originalBytes: null,\n deliveredBytes: 0,\n } as const;\n let candidate: object | null = event;\n try {\n for (let depth = 0; depth <= SESSION_EVENT_PROTOTYPE_MAX_DEPTH; depth += 1) {\n if (candidate === null) return null;\n const descriptor = Object.getOwnPropertyDescriptor(candidate, \"toJSON\");\n if (descriptor) {\n // JSON.stringify performs an ordinary lookup, so an accessor is both\n // executable behavior and an unknown possible serializer. A data\n // property shadows the rest of the chain and is relevant only when it\n // is callable.\n return !(\"value\" in descriptor) || typeof descriptor.value === \"function\"\n ? projection\n : null;\n }\n candidate = Object.getPrototypeOf(candidate);\n }\n // A hostile or malformed prototype chain that exceeds the fixed lookup\n // budget cannot prove the absence of inherited serialization behavior.\n return projection;\n } catch {\n return projection;\n }\n}\n\nconst SESSION_EVENT_PROTOTYPE_MAX_DEPTH = 32;\nconst SESSION_EVENT_ZERO_UUID = \"00000000-0000-4000-8000-000000000000\";\nconst SESSION_EVENT_UUID_PATTERN =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nconst SESSION_EVENT_OWN_DATA_FIELDS = [\n \"id\",\n \"workspaceId\",\n \"sessionId\",\n \"sequence\",\n \"coveredThrough\",\n \"type\",\n \"payload\",\n \"occurredAt\",\n \"clientEventId\",\n \"turnId\",\n \"turnGeneration\",\n \"turnAttemptId\",\n \"turnAssociation\",\n \"duplicateOfEventId\",\n \"duplicateReason\",\n] as const satisfies readonly (keyof SessionEvent)[];\nconst SESSION_EVENT_KNOWN_ENUMERABLE_FIELDS = new Set<string>([\n ...SESSION_EVENT_OWN_DATA_FIELDS,\n \"toJSON\",\n]);\n\n/**\n * Detect future/legacy own enumerable envelope fields without reading their\n * values. There can be at most the fixed known-key cardinality before an\n * additional key must be observed, so the source-level iterator is bounded.\n * A proxy/enumeration failure is conservatively surfaced as unknown loss.\n */\nfunction sessionEventAdditionalTopLevelFieldProjection(\n event: SessionEvent,\n): { field: string; originalBytes: null; deliveredBytes: 0 } | null {\n const projection = {\n field: \"additionalTopLevelFields\",\n originalBytes: null,\n deliveredBytes: 0,\n } as const;\n let inspected = 0;\n try {\n for (const key in event as SessionEvent & Record<string, unknown>) {\n inspected += 1;\n if (inspected > SESSION_EVENT_KNOWN_ENUMERABLE_FIELDS.size + 1) return projection;\n const descriptor = Object.getOwnPropertyDescriptor(event, key);\n if (descriptor?.enumerable && !SESSION_EVENT_KNOWN_ENUMERABLE_FIELDS.has(key)) {\n return projection;\n }\n }\n return null;\n } catch {\n return projection;\n }\n}\n\ntype SessionEventOwnField = { readable: true; value: unknown } | { readable: false };\ntype SessionEventOwnDataFields = Record<keyof SessionEvent, SessionEventOwnField>;\n\nfunction sessionEventOwnDataFields(event: SessionEvent): SessionEventOwnDataFields {\n return Object.fromEntries(\n SESSION_EVENT_OWN_DATA_FIELDS.map((key) => {\n try {\n const descriptor = Object.getOwnPropertyDescriptor(event, key);\n if (!descriptor) return [key, { readable: true, value: undefined }];\n return [\n key,\n \"value\" in descriptor ? { readable: true, value: descriptor.value } : { readable: false },\n ];\n } catch {\n return [key, { readable: false }];\n }\n }),\n ) as SessionEventOwnDataFields;\n}\n\nfunction canonicalSessionEventUuid(field: SessionEventOwnField, fallback: string): string {\n return field.readable &&\n typeof field.value === \"string\" &&\n SESSION_EVENT_UUID_PATTERN.test(field.value)\n ? field.value\n : fallback;\n}\n\nfunction canonicalOptionalSessionEventUuid(field: SessionEventOwnField): string | null {\n return field.readable &&\n typeof field.value === \"string\" &&\n SESSION_EVENT_UUID_PATTERN.test(field.value)\n ? field.value\n : null;\n}\n\nfunction canonicalSessionEventGeneration(field: SessionEventOwnField): number | null {\n return field.readable &&\n typeof field.value === \"number\" &&\n Number.isSafeInteger(field.value) &&\n field.value >= 0\n ? field.value\n : null;\n}\n\nfunction sessionEventShouldEmitOptionalField(field: SessionEventOwnField): boolean {\n return !field.readable || field.value !== undefined;\n}\n\nfunction sessionEventCanonicalFieldProjections(\n source: SessionEventOwnDataFields,\n delivered: {\n id: string;\n workspaceId: string;\n sessionId: string;\n sequence: number;\n occurredAt: string;\n },\n): Array<{\n field: string;\n originalBytes: number | null;\n deliveredBytes: number;\n}> {\n return ([\"id\", \"workspaceId\", \"sessionId\", \"sequence\", \"occurredAt\"] as const).flatMap(\n (field) => {\n const original = source[field].readable ? source[field].value : undefined;\n return source[field].readable && original === delivered[field]\n ? []\n : [\n sessionEventEnvelopeFieldProjection(\n field,\n original,\n delivered[field],\n source[field].readable,\n ),\n ];\n },\n );\n}\n\nfunction sessionEventOptionalFieldProjections(\n source: SessionEventOwnDataFields,\n delivered: {\n turnId: string | null;\n turnGeneration: number | null;\n turnAttemptId: string | null;\n duplicateOfEventId: string | null;\n },\n): Array<{\n field: string;\n originalBytes: number | null;\n deliveredBytes: number;\n}> {\n return ([\"turnId\", \"turnGeneration\", \"turnAttemptId\", \"duplicateOfEventId\"] as const).flatMap(\n (field) => {\n const original = source[field].readable ? source[field].value : undefined;\n const canonicalOriginal = original ?? null;\n return source[field].readable && canonicalOriginal === delivered[field]\n ? []\n : [\n sessionEventEnvelopeFieldProjection(\n field,\n original,\n delivered[field],\n source[field].readable,\n ),\n ];\n },\n );\n}\n\nfunction boundOptionalSessionEventText<T extends string | null | undefined>(\n value: T,\n maxBytes: number,\n): T {\n return (typeof value === \"string\" ? boundSessionEventText(value, maxBytes) : value) as T;\n}\n\nfunction boundSessionEventText(value: string, maxBytes: number): string {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder();\n const bytes = encoder.encode(value);\n if (bytes.byteLength <= maxBytes) return value;\n const marker = \"…[truncated]\";\n const markerBytes = encoder.encode(marker).byteLength;\n const prefixBudget = Math.max(0, maxBytes - markerBytes);\n let prefixEnd = Math.min(prefixBudget, bytes.byteLength);\n while (prefixEnd > 0 && prefixEnd < bytes.byteLength && (bytes[prefixEnd]! & 0xc0) === 0x80) {\n prefixEnd -= 1;\n }\n return `${decoder.decode(bytes.subarray(0, prefixEnd))}${marker}`;\n}\n\nfunction sessionEventUtf8Bytes(value: string): number {\n return new TextEncoder().encode(value).byteLength;\n}\n\nexport const SessionQueueMutationResponse = z.object({\n receipt: SessionCommandReceipt,\n snapshot: SessionQueueSnapshot,\n draft: ComposerDraft.optional(),\n});\nexport type SessionQueueMutationResponse = z.infer<typeof SessionQueueMutationResponse>;\n\nexport const SessionControlResponse = z.object({\n receipt: SessionCommandReceipt,\n effectiveControl: EffectiveSessionControl,\n interruptionCount: z.number().int().nonnegative(),\n wakeCount: z.number().int().nonnegative(),\n cancelledSessionCount: z.number().int().nonnegative(),\n cancelledTurnCount: z.number().int().nonnegative(),\n});\nexport type SessionControlResponse = z.infer<typeof SessionControlResponse>;\n\nexport const SESSION_INSTRUCTIONS_MAX_CHARACTERS = 65_536;\n\nexport const CreateSessionRequest = /* @__PURE__ */ defineSkillContractSchema(() =>\n withVariableSetIdAlias(\n {\n /** Omission inherits/defaults; [] disables bundles. Children may only narrow. */\n bundledSkillIds: BundledSkillSelection.optional(),\n /**\n * Optional UUID preallocated by an embedding host. This lets the host durably\n * link its own projection before OpenGeni admits the initial turn. Replays\n * must pair it with the same idempotency key; OpenGeni never derives host\n * identity or authorization from the UUID.\n */\n requestedSessionId: z.string().uuid().optional(),\n /** Explicit external-owner grants for the direct initial turn only. */\n selectedHostMcpDelegations: HostMcpCreateSelections.optional(),\n /** Top-level omission is workspace-visible. Agent-child omission inherits\n * the exact parent visibility; cross-visibility child creation is rejected.\n * Top-level private creation is an activated managed-cookie owning-human\n * capability, while a private child uses an exact live-parent-attempt\n * database capability. Both commit atomically. */\n visibility: SessionVisibility.default(\"workspace\"),\n /** Agent-to-agent reach. Top-level omission is the platform default\n * `workspace`. An agent-created child inherits its parent's value on\n * omission and may only narrow it (workspace > user > session); a wider\n * explicit child value is rejected. Never widens human or API-key access. */\n agentAccess: SessionAgentAccess.default(\"workspace\"),\n /** Identity comes from verified native/asUser authority, never request fields. */\n scopeSubjectId: z.never().optional(),\n endUser: z.never().optional(),\n /** Typed Memory selector. `user` requires canonical user authority. Children\n * inherit omission and may only narrow (workspace > user > off). */\n memoryScope: SessionMemoryScope.default(\"workspace\"),\n initialMessage: z.string().min(1).optional(),\n // Creates the durable session shell without fabricating a user message or\n // starting an underlying agent turn. Realtime can then become the first\n // interaction and use the ordinary Send/Steer path when it delegates.\n startMode: z.literal(\"realtime\").optional(),\n // Model-visible application context attached to the initial user message.\n // Standard timeline rendering omits it, while full event/audit reads retain\n // it. This is ordinary user-role content, not secret or privileged input.\n modelContext: z.string().trim().min(1).max(32768).optional(),\n // Per-session agent persona/system instructions (org-visible metadata, NOT a\n // secret). Rides the SAME system-level instructions channel the per-workspace\n // agentInstructions rides, composed AFTER the workspace persona so it refines\n // it for this one session — how a host delivers per-agent-type prompts without\n // leaking them into the user-visible timeline (it is NEVER emitted as an\n // event, unlike goal/initialMessage). Trimmed, non-empty, and bounded by the\n // shared durable session-instruction contract. Absent ⇒ byte-identical to\n // today.\n instructions: z.string().trim().min(1).max(SESSION_INSTRUCTIONS_MAX_CHARACTERS).optional(),\n // Immutable prompt-policy role binding for matching one activated role\n // policy. This never derives from or grants a human workspace membership\n // role. Existing callers may continue to use normalized metadata.role as a\n // compatibility fallback by omitting this field.\n policyRole: WorkspaceInstructionPolicyRoleKeyInput.optional(),\n // For an agent-created child, omission inherits the trusted immediate\n // parent's repositories only; files require explicit selection. An explicit\n // array, including [], is\n // authoritative. Top-level omission remains []. Presence is resolved from\n // the raw request because this Zod default erases absent-vs-empty.\n resources: z.array(ResourceRef).default([]),\n // Inline skills are fixed onto the session. Child omission inherits the\n // trusted parent's selection; an explicit array, including [], wins.\n skills: SessionSkills.default([]),\n // Immutable workspace Skill identities to copy onto this session at\n // creation. This is the explicit opt-in path for session-selected Pack\n // Skills: installation alone never exposes them to model context. Child\n // omission still inherits the parent's already-materialized session Skills.\n installedSkillIds: z\n .array(z.string().min(1).max(512))\n .max(32)\n .refine((ids) => new Set(ids).size === ids.length, {\n message: \"installed Skill identities must be unique\",\n })\n .optional(),\n // The same child omission rule applies to selected MCP tool refs. Top-level\n // omission still applies workspace-default capability MCP tools; explicit []\n // suppresses those defaults (the first-party OpenGeni server remains added).\n tools: z.array(ToolRef).default([]),\n metadata: z.record(z.string(), z.unknown()).default({}),\n model: z.string().min(1).optional(),\n reasoningEffort: ReasoningEffort.optional(),\n latencyMode: LatencyMode.optional(),\n sandboxBackend: SandboxBackend.optional(),\n // The enrolled machine (a sandbox id) to run this session on; seeds the\n // active-sandbox pointer at creation so the FIRST turn routes to the chosen\n // machine (race-free: the pointer is committed before the worker turn\n // workflow can read it). An invalid/unowned/offline target fails the create.\n targetSandboxId: z.string().uuid().optional(),\n // The working directory the targeted machine runs the session under. It may\n // be absolute or relative to the machine's persisted Hello root; the server\n // stores the resolved absolute value. Tilde is rejected because the control\n // plane has no authenticated home-directory fact. Only valid WITH\n // targetSandboxId; omitted selects the reported root.\n workingDir: z.string().min(1).optional(),\n // Ordered low-to-high precedence. A legacy singular selection is normalized\n // into one entry by withVariableSetIdAlias; when both are present the\n // singular value must match the final (highest-precedence) entry.\n variableSetIds: z.array(z.string().uuid()).max(MAX_SELECTED_VARIABLE_SETS).optional(),\n variableSetId: z.string().uuid().optional(),\n environmentId: z.string().uuid().optional(),\n // The rig to bind this session to (M3). Its ACTIVE version is resolved and\n // FROZEN onto the session at create. Omitted ⇒ inherit the workspace default;\n // null ⇒ explicitly create a rig-less session; UUID ⇒ bind that exact rig.\n // An id that does not name a rig in the workspace is a 422.\n rigId: z.string().uuid().nullable().optional(),\n // The workspace channel to file this session under (rail organization only).\n // Omitted/null ⇒ unfiled (inbox). An id that does not name a channel in the\n // workspace is a 422.\n channelId: z.string().uuid().nullable().optional(),\n goal: GoalSpec.optional(),\n clientEventId: SessionOperationKey.optional(),\n // Workspace-scoped CREATE idempotency key: collapses concurrent/retried\n // create calls carrying the same key to a single session (partial unique\n // index on (workspace_id, create_idempotency_key)). Distinct from\n // clientEventId, whose uniqueness is per-session and so cannot dedup the\n // creation of a brand-new session. Absent means no create-dedup (each call\n // is an independent create).\n idempotencyKey: z.string().min(1).max(200).optional(),\n // The exact actor-private pre-session draft revision represented by this\n // create. An ordinary create consumes only this revision. A realtime create\n // preserves the editable draft and atomically updates only successful-create\n // selection history. A newer sibling draft survives, while every failed\n // pre-initialization create leaves the submitted draft intact.\n expectedNewSessionDraftRevision: z.number().int().nonnegative().optional(),\n // A child may lower its inherited limit freely; an increase requires\n // workspace:admin and is checked again at the DB transaction boundary.\n maxNestedAgentDepth: NestedAgentDepthValue.optional(),\n // Permissions the session's first-party MCP token should carry. A top-level\n // omission uses the deployment's worker default; a child omission inherits\n // the creating session's effective grant. An explicit set is capped at\n // creation: every requested permission must be held by the creating grant.\n // A goal-bearing session whose explicit/effective set omits goals:manage is\n // rejected; creation never silently expands a child beyond that set.\n firstPartyMcpPermissions: z.array(Permission).optional(),\n // Exact model-visible selection from the broad first-party OpenGeni MCP\n // catalog. Omission selects the safe non-connector default; [] intentionally\n // exposes none.\n // This does not grant authority: every registered tool is permission-gated.\n firstPartyMcpTools: z.array(FirstPartyMcpToolName).optional(),\n // Third-party MCP servers attached only to this session. For an agent-created\n // child, omission snapshots its trusted immediate parent's server definitions,\n // policies, connection refs, and encrypted credentials. Explicit arrays,\n // including [], are authoritative; non-empty explicit arrays require attach\n // permission. Credential headers are write-only: create responses and events\n // expose only SessionMcpServerMetadata.\n mcpServers: z.array(SessionMcpServerInput).max(SESSION_MCP_SERVERS_MAX).default([]),\n /** Explicit personal-connection grants for the initial accepted turn. */\n connectionAuthorities: McpConnectionAuthoritySelections.default([]),\n /** Atomic owner issuance for the selected personal Variable Set/Rig closure. */\n personalResourceAttachment: PersonalResourceAttachmentIntent.optional(),\n // Shared-sandbox placement (addendum 05 §D.1). Three-way union; OMITTED ⇒\n // today's behavior (a context-dependent default resolved server-side: from\n // inside a session → \"shared\" with the creator's box, top-level → \"new\"),\n // except a named targetSandboxId is always an own-box create (\"new\") because\n // a machine target is a different compute home. Explicit \"shared\"/{groupId}\n // plus a machine target is a 422.\n // - \"shared\": join the CREATOR's box. Requires a parent session (inferred\n // from the worker-signed sessionId claim, never caller-supplied);\n // top-level \"shared\" is a 422.\n // - \"new\": mint a fresh singleton box (group ≡ the new session's id).\n // - {groupId}: join a SPECIFIC sibling group in THIS workspace (manager\n // fan-out). Validated workspace-scoped (cross-workspace → 404).\n // A shared spawn inherits the box's (backend, os) — it is literally the same\n // box; the child cannot pick its own backend. Cross-workspace sharing is\n // forbidden by construction (the parent/group reads are RLS-workspace-scoped).\n // ENV-AWARE: the box's variable set is fixed at creation, so a share requires\n // the SAME variableSetId as the creator's box. On a mismatch the inherited\n // default silently falls back to an own box; an explicit \"shared\"/{groupId}\n // request 422s at create (instead of the first turn dying on the SDK's\n // manifest-env guard).\n sandbox: z\n .union([\n z.literal(\"shared\"),\n z.literal(\"new\"),\n z.object({\n groupId: z.string().uuid(),\n }),\n ])\n .optional(),\n },\n { rejectKeys: [\"turnInstructions\"] },\n ).superRefine((value, context) => {\n if (value.startMode !== \"realtime\" && value.initialMessage === undefined) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"initialMessage\"],\n message: \"initialMessage is required unless startMode is realtime\",\n });\n }\n if (value.startMode === \"realtime\" && value.initialMessage !== undefined) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"initialMessage\"],\n message: \"initialMessage must be omitted when startMode is realtime\",\n });\n }\n if (value.startMode === \"realtime\" && value.modelContext !== undefined) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"modelContext\"],\n message: \"modelContext requires an initialMessage; attach it to a realtime entry instead\",\n });\n }\n if (value.startMode === \"realtime\" && value.connectionAuthorities.length > 0) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"connectionAuthorities\"],\n message:\n \"connectionAuthorities require an accepted initial turn and are not supported by realtime session staging\",\n });\n }\n if (value.startMode === \"realtime\" && value.personalResourceAttachment !== undefined) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"personalResourceAttachment\"],\n message:\n \"personalResourceAttachment requires an accepted initial turn and is not supported by realtime session staging\",\n });\n }\n if (value.personalResourceAttachment?.expectedAuthorityEpoch !== undefined) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"personalResourceAttachment\", \"expectedAuthorityEpoch\"],\n message: \"new-session attachment authority epoch is derived by the server\",\n });\n }\n // Canonical user authority and child inheritance are resolved by the core\n // create resolver, which rejects user Memory without that authority.\n }),\n);\nexport type CreateSessionRequest = z.infer<typeof CreateSessionRequest>;\n\nexport const SessionTenancyCreateCapabilities = z.object({\n activated: z.boolean(),\n canCreatePrivate: z.boolean(),\n reason: z.enum([\"available\", \"not_activated\", \"managed_session_required\", \"unavailable\"]),\n});\nexport type SessionTenancyCreateCapabilities = z.infer<typeof SessionTenancyCreateCapabilities>;\n\n// Generic, host-neutral structured human input. One model tool call creates one\n// request containing one or more questions; the durable response resumes that\n// exact call. This is deliberately distinct from tool approval: an answer,\n// skip, or expiry is structured tool output, never an approve/reject decision.\nexport const HumanInputQuestionKind = z.enum([\"text\", \"single_select\", \"multi_select\"]);\nexport type HumanInputQuestionKind = z.infer<typeof HumanInputQuestionKind>;\n\nexport const HumanInputOption = z.object({\n id: z.string().min(1).max(64),\n label: z.string().min(1).max(256),\n description: z.string().max(2048).nullable().optional(),\n});\nexport type HumanInputOption = z.infer<typeof HumanInputOption>;\n\nexport const HumanInputQuestion = z\n .object({\n id: z.string().min(1).max(64),\n kind: HumanInputQuestionKind,\n prompt: z.string().min(1).max(4096),\n label: z.string().min(1).max(128).nullable().optional(),\n helpText: z.string().max(2048).nullable().optional(),\n skillReview: SkillReviewReference.optional(),\n options: z.array(HumanInputOption).max(20).default([]),\n required: z.boolean().default(true),\n // Retained on the wire for older hosts. OpenGeni's stock runtime and\n // surfaces always expose Other for choice questions, including requests\n // that were persisted before that became the default behavior.\n allowOther: z.boolean().default(false),\n // Selection bounds only — agents invent useless text char mins/maxes.\n // Answer strings stay platform-capped on HumanInputAnswer (~8192).\n validation: z\n .object({\n minSelections: z.number().int().nonnegative().max(20).nullable().optional(),\n maxSelections: z.number().int().positive().max(20).nullable().optional(),\n })\n .nullable()\n .optional(),\n })\n .superRefine((question, ctx) => {\n const optionIds = new Set(question.options.map((option) => option.id));\n if (optionIds.size !== question.options.length) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"options\"],\n message: \"option ids must be unique\",\n });\n }\n if (question.kind === \"text\") {\n if (question.options.length > 0) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"options\"],\n message: \"text questions cannot have options\",\n });\n }\n if (question.allowOther) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"allowOther\"],\n message: \"text questions do not use Other\",\n });\n }\n } else if (question.options.length === 0) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"options\"],\n message: \"select questions require options\",\n });\n }\n const validation = question.validation;\n if (\n validation?.minSelections != null &&\n validation?.maxSelections != null &&\n validation.minSelections > validation.maxSelections\n ) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"validation\"],\n message: \"minSelections exceeds maxSelections\",\n });\n }\n });\nexport type HumanInputQuestion = z.infer<typeof HumanInputQuestion>;\n\n/** Only known presentation wire differences are equivalent. This is not\n * authorization: response admission still binds the immutable source receipt.\n * Compare original keys as well as parsed values so unknown fields cannot be\n * hidden by Zod's ordinary object projection during a pending-card re-freeze. */\nexport function canonicalSkillReviewQuestion(\n question: HumanInputQuestion,\n): HumanInputQuestion | null {\n if (\n !HumanInputQuestion.safeParse(question).success ||\n !SkillReviewReference.strict().safeParse(question.skillReview).success\n )\n return null;\n const canonical = skillReviewHumanInput(question.skillReview!).questions[0]!;\n const normalized = {\n ...question,\n allowOther: false,\n options: question.options.map((option) => {\n if (option.description != null) return option;\n const { description: _description, ...rest } = option;\n return rest;\n }),\n };\n if (\n normalized.validation == null ||\n (Object.keys(normalized.validation).every((key) =>\n [\"minSelections\", \"maxSelections\"].includes(key),\n ) &&\n normalized.validation.minSelections == null &&\n normalized.validation.maxSelections == null)\n ) {\n delete normalized.validation;\n }\n return stableJson(normalized) === stableJson(canonical) ? canonical : null;\n}\n\nexport const HumanInputRequestStatus = z.enum([\n \"pending\",\n \"answered\",\n \"skipped\",\n \"expired\",\n \"cancelled\",\n]);\nexport type HumanInputRequestStatus = z.infer<typeof HumanInputRequestStatus>;\n\nexport const RequestHumanInputToolInput = z.object({\n questions: z.array(HumanInputQuestion).min(1).max(20),\n allowSkip: z.boolean().default(false),\n expiresInSeconds: z\n .number()\n .int()\n .positive()\n .max(30 * 24 * 60 * 60)\n .nullable()\n .optional(),\n});\nexport type RequestHumanInputToolInput = z.infer<typeof RequestHumanInputToolInput>;\n\nexport const HumanInputAnswer = z.object({\n questionId: z.string().min(1).max(64),\n values: z.array(z.string().max(8192)).max(20),\n other: z.string().max(8192).nullable().optional(),\n});\nexport type HumanInputAnswer = z.infer<typeof HumanInputAnswer>;\n\nexport const HumanInputResponse = z.discriminatedUnion(\"outcome\", [\n z.object({\n outcome: z.literal(\"answered\"),\n answers: z.array(HumanInputAnswer).max(20),\n }),\n z.object({ outcome: z.literal(\"skipped\") }),\n z.object({ outcome: z.literal(\"expired\") }),\n z.object({ outcome: z.literal(\"cancelled\") }),\n]);\nexport type HumanInputResponse = z.infer<typeof HumanInputResponse>;\n\nexport const SubmitHumanInputResponseRequest = z.discriminatedUnion(\"outcome\", [\n z.object({\n outcome: z.literal(\"answered\"),\n answers: z.array(HumanInputAnswer).max(20),\n }),\n z.object({ outcome: z.literal(\"skipped\") }),\n]);\nexport type SubmitHumanInputResponseRequest = z.infer<typeof SubmitHumanInputResponseRequest>;\n\nexport const SessionHumanInputRequest = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n turnGeneration: z.number().int().positive(),\n creationAttemptId: z.string().uuid(),\n toolCallId: z.string().min(1).max(1024),\n status: HumanInputRequestStatus,\n questions: z.array(HumanInputQuestion).min(1).max(20),\n allowSkip: z.boolean(),\n response: HumanInputResponse.nullable(),\n respondedBy: z.string().max(1024).nullable(),\n respondedAt: z.string().nullable(),\n expiresAt: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type SessionHumanInputRequest = z.infer<typeof SessionHumanInputRequest>;\n\n/**\n * Extract the stable approval identity used by both durable admission and\n * runtime resume. Serialized SDK interruptions may place it on the wrapper or\n * its raw item; malformed entries fail closed instead of inventing an id.\n */\nexport function approvalIdentifier(value: unknown): string | null {\n if (!value || typeof value !== \"object\") return null;\n const approval = value as Record<string, unknown>;\n const rawItem =\n approval.rawItem && typeof approval.rawItem === \"object\"\n ? (approval.rawItem as Record<string, unknown>)\n : null;\n const candidate = rawItem?.callId ?? rawItem?.id ?? approval.id ?? approval.name;\n if (typeof candidate !== \"string\" && typeof candidate !== \"number\") return null;\n return String(candidate);\n}\n\nfunction requireMessageTextOrAnnotations(\n value: { text: string; annotations: readonly unknown[] },\n ctx: z.RefinementCtx,\n): void {\n if (value.text.length === 0 && value.annotations.length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"text\"],\n message: \"message text or annotations are required\",\n });\n }\n}\n\nexport const SessionUserMessagePayload = z\n .object({\n text: z.string().default(\"\"),\n annotations: SubmittedTimelineAnnotations.default([]),\n // Model-visible application context attached to this exact user message.\n // It is retained in full event/history data but omitted by standard UI.\n modelContext: z.string().trim().min(1).max(32768).optional(),\n resources: z.array(ResourceRef).default([]),\n model: z.string().min(1).optional(),\n reasoningEffort: ReasoningEffort.optional(),\n latencyMode: LatencyMode.optional(),\n controlEtag: z.string().min(1).optional(),\n expectedDraftRevision: z.number().int().nonnegative().optional(),\n // Header-value rotation only. URL/name/tool settings are immutable after\n // session create; persisted events expose metadata, never header values.\n mcpCredentialUpdates: z.array(SessionMcpCredentialUpdateInput).optional(),\n /** Explicit personal-connection grants for this exact logical turn. */\n connectionAuthorities: McpConnectionAuthoritySelections.default([]),\n selectedHostMcpDelegations: HostMcpCreateSelections.optional(),\n personalResourceAttachment: PersonalResourceAttachmentIntent.optional(),\n })\n .strict()\n .superRefine(requireMessageTextOrAnnotations)\n .superRefine(requireEstablishedPersonalResourceEpoch);\nexport type SessionUserMessagePayload = z.infer<typeof SessionUserMessagePayload>;\n\nexport const ClientSessionEvent = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"user.message\"),\n clientEventId: SessionOperationKey.optional(),\n payload: SessionUserMessagePayload,\n }),\n z.object({\n type: z.literal(\"user.approvalDecision\"),\n clientEventId: SessionOperationKey.optional(),\n payload: z.object({\n approvalId: z.string().min(1).max(SESSION_OPERATION_KEY_MAX_CHARS),\n decision: z.enum([\"approve\", \"reject\"]),\n message: z.string().optional(),\n }),\n }),\n z.object({\n type: z.literal(\"user.humanInputResponse\"),\n clientEventId: SessionOperationKey.optional(),\n payload: z.object({\n requestId: z.string().uuid(),\n response: SubmitHumanInputResponseRequest,\n }),\n }),\n]);\nexport type ClientSessionEvent = z.infer<typeof ClientSessionEvent>;\n\nexport const SteerSessionMessageRequest = z\n .object({\n text: z.string().default(\"\"),\n annotations: SubmittedTimelineAnnotations.default([]),\n // Same model-visible message context as a queued user.message.\n modelContext: z.string().trim().min(1).max(32768).optional(),\n resources: z.array(ResourceRef).default([]),\n model: z.string().min(1).optional(),\n reasoningEffort: ReasoningEffort.optional(),\n latencyMode: LatencyMode.optional(),\n clientEventId: SessionOperationKey.optional(),\n controlEtag: z.string().min(1).optional(),\n expectedDraftRevision: z.number().int().nonnegative().optional(),\n mcpCredentialUpdates: z.array(SessionMcpCredentialUpdateInput).optional(),\n /** Explicit personal-connection grants for this exact steered turn. */\n connectionAuthorities: McpConnectionAuthoritySelections.default([]),\n selectedHostMcpDelegations: HostMcpCreateSelections.optional(),\n personalResourceAttachment: PersonalResourceAttachmentIntent.optional(),\n })\n .strict()\n .superRefine(requireMessageTextOrAnnotations)\n .superRefine(requireEstablishedPersonalResourceEpoch);\nexport type SteerSessionMessageRequest = z.infer<typeof SteerSessionMessageRequest>;\n\nexport const SteerSessionMessageResponse = z.object({\n accepted: SessionEvent,\n turn: SessionTurn,\n receipt: SessionCommandReceipt,\n routing: SessionPromptRouting,\n interruptionCount: z.number().int().nonnegative(),\n replay: z.boolean(),\n});\nexport type SteerSessionMessageResponse = z.infer<typeof SteerSessionMessageResponse>;\n\nexport const SubmitComposerDraftResponse = z.object({\n accepted: SessionEvent,\n turn: SessionTurn,\n draft: ComposerDraft,\n receipt: SessionCommandReceipt,\n routing: SessionPromptRouting,\n interruptionCount: z.number().int().nonnegative(),\n replay: z.boolean(),\n});\nexport type SubmitComposerDraftResponse = z.infer<typeof SubmitComposerDraftResponse>;\n\nexport const SessionBusMessage = z.object({\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n events: z.array(SessionEvent).min(1),\n});\nexport type SessionBusMessage = z.infer<typeof SessionBusMessage>;\n\nexport const GitHubAppManifestCreate = z.object({\n appName: z.string().optional(),\n organization: z.string().optional(),\n public: z.boolean().default(false),\n includeCiPermissions: z.boolean().default(true),\n});\nexport type GitHubAppManifestCreate = z.infer<typeof GitHubAppManifestCreate>;\n\nexport const GitHubRepository = z.object({\n id: z.number().int(),\n installationId: z.number().int(),\n fullName: z.string(),\n name: z.string(),\n private: z.boolean(),\n htmlUrl: z.string(),\n cloneUrl: z.string(),\n defaultBranch: z.string(),\n accountLogin: z.string(),\n accountType: z.string().nullable(),\n});\nexport type GitHubRepository = z.infer<typeof GitHubRepository>;\n\nexport const GitHubRepositoryScope = z.enum([\"all\", \"selected\"]);\nexport type GitHubRepositoryScope = z.infer<typeof GitHubRepositoryScope>;\n\nexport const GitHubBindingStatus = z.enum([\"disabled\", \"unbound\", \"bound\"]);\nexport type GitHubBindingStatus = z.infer<typeof GitHubBindingStatus>;\n\nexport const GitHubAppSetupMode = z.enum([\"platform\", \"operator\"]);\nexport type GitHubAppSetupMode = z.infer<typeof GitHubAppSetupMode>;\n\nexport const GitHubInstallationLifecycle = z.enum([\"active\", \"suspended\", \"deleted\", \"unverified\"]);\nexport type GitHubInstallationLifecycle = z.infer<typeof GitHubInstallationLifecycle>;\n\nexport const GitHubInstallationBinding = z.object({\n installationId: z.number().int().positive(),\n githubAccountId: z.number().int().positive().nullable(),\n accountLogin: z.string().nullable(),\n accountType: z.string().nullable(),\n lifecycle: GitHubInstallationLifecycle,\n repositoryScope: GitHubRepositoryScope,\n repositoryCount: z.number().int().nonnegative(),\n configureUrl: z.string().url().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type GitHubInstallationBinding = z.infer<typeof GitHubInstallationBinding>;\n\nexport const GitHubAppInfo = z.object({\n configured: z.boolean(),\n status: GitHubBindingStatus,\n setupMode: GitHubAppSetupMode,\n appId: z.string().nullable(),\n clientId: z.string().nullable(),\n appSlug: z.string().nullable(),\n installUrl: z.string().nullable(),\n linkUrl: z.string().nullable(),\n installations: z.array(GitHubInstallationBinding),\n missing: z.array(z.string()),\n});\nexport type GitHubAppInfo = z.infer<typeof GitHubAppInfo>;\n\nexport const GitHubRepositoriesResponse = z.object({\n repositories: z.array(GitHubRepository),\n});\nexport type GitHubRepositoriesResponse = z.infer<typeof GitHubRepositoriesResponse>;\n\nexport const GitHubActionPolicyDecision = z.enum([\"allow\", \"ask\", \"block\"]);\nexport type GitHubActionPolicyDecision = z.infer<typeof GitHubActionPolicyDecision>;\n\nexport const GitHubActionPolicyEffectiveDecision = z.enum([\n ...GitHubActionPolicyDecision.options,\n \"mixed\",\n]);\nexport type GitHubActionPolicyEffectiveDecision = z.infer<\n typeof GitHubActionPolicyEffectiveDecision\n>;\n\nexport const GitHubActionPolicyGroup = z.enum([\"routine\", \"review\", \"merge\"]);\nexport type GitHubActionPolicyGroup = z.infer<typeof GitHubActionPolicyGroup>;\n\nexport const GitHubActionPolicyActor = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"workspace_app\"),\n installationId: z.number().int().positive(),\n }),\n z.object({\n kind: z.literal(\"personal\"),\n connectionId: z.string().trim().min(1).max(512),\n }),\n]);\nexport type GitHubActionPolicyActor = z.infer<typeof GitHubActionPolicyActor>;\n\nconst GitHubActionPolicyGroups = z.object({\n routine: GitHubActionPolicyEffectiveDecision,\n review: GitHubActionPolicyEffectiveDecision,\n merge: GitHubActionPolicyEffectiveDecision,\n});\n\nexport const GitHubActionPolicyActorState = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"workspace_app\"),\n installationId: z.number().int().positive(),\n label: z.string().min(1).max(256),\n groups: GitHubActionPolicyGroups,\n }),\n z.object({\n kind: z.literal(\"personal\"),\n connectionId: z.string().trim().min(1).max(512),\n label: z.string().min(1).max(256),\n groups: GitHubActionPolicyGroups,\n }),\n]);\nexport type GitHubActionPolicyActorState = z.infer<typeof GitHubActionPolicyActorState>;\n\nexport const GitHubActionPoliciesResponse = z.object({\n enabled: z.boolean(),\n actors: z.array(GitHubActionPolicyActorState).max(128),\n});\nexport type GitHubActionPoliciesResponse = z.infer<typeof GitHubActionPoliciesResponse>;\n\nexport const UpdateGitHubActionPolicyRequest = z.object({\n actor: GitHubActionPolicyActor,\n group: GitHubActionPolicyGroup,\n decision: GitHubActionPolicyDecision,\n});\nexport type UpdateGitHubActionPolicyRequest = z.infer<typeof UpdateGitHubActionPolicyRequest>;\n\nexport const ClientAuthConfig = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"none\"),\n }),\n z.object({\n mode: z.literal(\"deploymentKey\"),\n headerName: z.literal(\"x-opengeni-access-key\"),\n }),\n z.object({\n mode: z.literal(\"configuredToken\"),\n headerName: z.literal(\"authorization\"),\n scheme: z.literal(\"bearer\"),\n }),\n z.object({\n mode: z.literal(\"managedSession\"),\n session: z.literal(\"cookie\"),\n emailVerificationRequired: z.boolean().default(true),\n socialProviders: z\n .array(z.enum([\"google\", \"github\"]))\n .max(2)\n .default([]),\n }),\n]);\nexport type ClientAuthConfig = z.infer<typeof ClientAuthConfig>;\n\n// The negotiated capability handshake document (sandbox contract C.3). ONE shape;\n// collapses the parallel per-module definitions. A capability cell is always\n// present with `available`/`transport` + a `reason` when unavailable — never\n// absent.\nexport const CapabilityUnavailableReason = z.enum([\n \"backend_unsupported\",\n \"os_unsupported\",\n \"not_provisioned\",\n \"disabled_by_policy\",\n \"lease_cold\",\n \"tier_headless\",\n // Selfhosted (bring-your-own-compute) negotiation states (M1 additive; the\n // selfhosted negotiation in select.ts wires them in M3):\n \"agent_offline\", // the enrolled agent process is not running / unreachable\n \"agent_reconnecting\", // a transient blip — the agent is reconnecting (warmable)\n \"consent_required\", // whole-machine / screen-control consent not yet acknowledged\n \"display_unavailable\", // headless machine with no display stack (no DesktopStream)\n]);\nexport type CapabilityUnavailableReason = z.infer<typeof CapabilityUnavailableReason>;\n\nexport const SessionCapabilities = z.object({\n sessionId: z.string().uuid(),\n backend: SandboxBackend,\n os: SandboxOs,\n liveness: z.enum([\"cold\", \"warming\", \"warm\", \"draining\"]),\n // Echoed on viewer heartbeats (the split-brain fence).\n leaseEpoch: z.number().int().nonnegative(),\n workspaceGeneration: z.number().int().nonnegative().nullable().default(null),\n archiveGeneration: z.number().int().nonnegative().nullable().default(null),\n archiveComplete: z.boolean().default(false),\n viewerHeartbeatIntervalMs: z.number().int().positive().default(30_000),\n FileSystem: z.object({\n available: z.boolean(),\n readOnly: z.boolean(),\n root: z.string(),\n pathSep: z.enum([\"/\", \"\\\\\"]),\n treeMode: z.enum([\"lazy\", \"snapshot\"]),\n reason: CapabilityUnavailableReason.nullable(),\n }),\n Terminal: z.object({\n transport: z.enum([\"sse-events\", \"pty-ws\", \"relay-pty\"]).nullable(),\n ptyCapable: z.boolean(),\n shell: z.string(),\n // The direct-to-provider ttyd PTY-over-websocket URL (pty-ws) resolved on the\n // SAME tunnel as the desktop; null on a cold lease / read-only sse-events\n // firehose / degraded terminal. The scoped stream token is recorded against\n // the holder (NEVER a URL query param), symmetric with DesktopStream.\n url: z.string().url().nullable(),\n token: z.string().nullable(),\n // ISO absolute expiry of the minted stream token (symmetric with\n // DesktopStream.expiresAt). Null when no live URL/token is minted.\n expiresAt: z.string().nullable(),\n reason: CapabilityUnavailableReason.nullable(),\n }),\n Git: z.object({\n available: z.boolean(),\n repos: z.array(z.string()),\n reason: CapabilityUnavailableReason.nullable(),\n }),\n DesktopStream: z.object({\n // \"relay-frames\" is the selfhosted framebuffer stream: PNG-per-frame protobuf\n // datagrams spliced over the relay (NOT RFB). The viewer renders it with the\n // \"frames\" client (a canvas painter), distinct from Modal's \"vnc-ws\"/\"novnc\".\n transport: z.enum([\"vnc-ws\", \"rdp-ws\", \"webrtc\", \"relay-frames\"]).nullable(),\n client: z.enum([\"novnc\", \"web-rdp\", \"frames\"]).nullable(),\n mode: z.enum([\"read-only\", \"interactive\"]).default(\"read-only\"),\n url: z.string().url().nullable(),\n token: z.string().nullable(),\n expiresAt: z.string().nullable(),\n resolution: z\n .tuple([z.number().int().positive(), z.number().int().positive()])\n .default([1024, 768]),\n // REQUIRED, no default (the server must assert un-redacted pixels).\n unredacted: z.boolean(),\n requiresAcknowledgment: z.boolean(),\n acknowledged: z.boolean(),\n // SHARED-EXPOSURE disclosure (addendum E.1). `shared` is true when the box's\n // group has >1 session: watching this desktop ALSO shows the sibling\n // sessions' agents on the one :0 framebuffer (the pixels cannot be redacted).\n // `sharedSessionIds` lists the OTHER sessions whose agents may appear — IDS\n // ONLY, never their goal/metadata/conversation (a viewer of A must not be\n // able to use \"I can see B's id\" to subscribe to B's events; stress g). When\n // shared, the consent gate requires the shared-exposure acknowledgment (409\n // shared_acknowledgment_required) before the desktop path is handed out.\n shared: z.boolean().default(false),\n sharedSessionIds: z.array(z.string().uuid()).default([]),\n reason: CapabilityUnavailableReason.nullable(),\n }),\n Recording: z.object({\n available: z.boolean(),\n modes: z.array(z.enum([\"manual\", \"on-turn\", \"on-verify\"])),\n codecs: z.array(z.enum([\"h264-mp4\", \"vp9-webm\"])),\n reason: CapabilityUnavailableReason.nullable(),\n }),\n // Deprecated compatibility cell for clients that predate managed\n // ComputerSession interaction tools. Newly negotiated documents report this\n // unavailable/read-only with `disabled_by_policy`; the shape remains so older\n // clients and persisted payloads still parse.\n ComputerUse: z.object({\n available: z.boolean(),\n readOnly: z.boolean(),\n reason: CapabilityUnavailableReason.nullable(),\n }),\n negotiatedAt: z.string(),\n});\nexport type SessionCapabilities = z.infer<typeof SessionCapabilities>;\n\n// ── API-direct viewer attach (P1.4) ─────────────────────────────────────────\n// A viewer holds the GROUP lease (keeping the box warm while watched). These\n// shape the in-process attach/heartbeat/detach handlers. The scoped stream\n// token + the un-redacted-pixel acknowledgment are P3/P4 — here it is the\n// viewer-HOLDER lifecycle only.\n\n// POST .../viewers — acquire a viewer holder. An omitted viewerId mints a fresh\n// one (returned in the response, to carry through heartbeats + detach).\n//\n// Each optional plane flag declares exactly which live capability is being\n// acquired. The holder itself is shared liveness; credentials are minted only\n// for explicitly requested planes. `desktop` alone carries the un-redacted pixel\n// consent gate, `terminal` carries terminal:attach, and `files` carries\n// files:write. For compatibility, an entirely omitted plane set retains the old\n// terminal-only meaning; new clients always send all three flags explicitly.\nexport const AttachViewerRequest = /* @__PURE__ */ z.object({\n viewerId: z.string().uuid().optional(),\n desktop: z.boolean().optional(),\n terminal: z.boolean().optional(),\n files: z.boolean().optional(),\n});\nexport type AttachViewerRequest = z.infer<typeof AttachViewerRequest>;\n\nexport const ViewerHolder = /* @__PURE__ */ z.object({\n viewerId: z.string().uuid(),\n sandboxGroupId: z.string().uuid(),\n liveness: z.enum([\"cold\", \"warming\", \"warm\", \"draining\"]),\n // The epoch the viewer is fenced on; echoed back on heartbeats.\n leaseEpoch: z.number().int().nonnegative(),\n workspaceGeneration: z.number().int().nonnegative().nullable(),\n archiveGeneration: z.number().int().nonnegative().nullable(),\n archiveComplete: z.boolean(),\n viewerHeartbeatIntervalMs: z.number().int().positive(),\n // The desktop pixel tunnel URL the viewer connects to directly; null until\n // a viewer grant is minted (gated until then).\n dataPlaneUrl: z.string().nullable(),\n});\nexport type ViewerHolder = z.infer<typeof ViewerHolder>;\n\n/** Exact POST /viewers response. Keep the credential cells in the contracts\n * package so API and zero-runtime SDK mirrors cannot silently drift. */\nexport const AttachViewerResponse = /* @__PURE__ */ ViewerHolder.extend({\n streamToken: z.string().nullable(),\n streamExpiresAt: z.string().nullable(),\n resolution: z.tuple([z.number().int().positive(), z.number().int().positive()]).nullable(),\n transport: z.enum([\"vnc-ws\", \"relay-frames\"]).nullable(),\n client: z.enum([\"novnc\", \"frames\"]).nullable(),\n terminalUrl: z.string().nullable(),\n terminalToken: z.string().nullable(),\n terminalExpiresAt: z.string().nullable(),\n terminalTransport: z.enum([\"pty-ws\", \"relay-pty\"]).nullable(),\n});\nexport type AttachViewerResponse = z.infer<typeof AttachViewerResponse>;\n\n// POST .../stream-capabilities/acknowledge — record the calling principal's\n// acknowledgment of the un-redacted pixel plane. Reuses the acknowledgment\n// machinery — no new endpoint\n// shape beyond this body, no new permission beyond stream:acknowledge.\n//\n// `acknowledgeShared` MUST be true when the box is shared (the group has >1\n// session): the un-redacted desktop path returns 409 shared_acknowledgment_required\n// until a shared box is acknowledged WITH the shared-exposure consent. For a\n// solo box `acknowledgeShared` is irrelevant (the un-redacted ack alone gates).\nexport const AcknowledgeStreamRequest = /* @__PURE__ */ z.object({\n // The principal accepts that the desktop pixel plane is un-redacted (can show\n // cloud creds the agent cat's into a terminal). Always true to record consent;\n // present for self-documentation + a future explicit withdraw.\n acknowledgeUnredacted: z.boolean().default(true),\n // The principal accepts the shared-exposure disclosure: watching this desktop\n // also shows sibling sessions' agents on the one framebuffer.\n acknowledgeShared: z.boolean().default(false),\n});\nexport type AcknowledgeStreamRequest = z.infer<typeof AcknowledgeStreamRequest>;\n\nexport const AcknowledgeStreamResponse = /* @__PURE__ */ z.object({\n acknowledged: z.boolean(),\n acknowledgedShared: z.boolean(),\n});\nexport type AcknowledgeStreamResponse = z.infer<typeof AcknowledgeStreamResponse>;\n\n// POST .../viewers/:viewerId/heartbeat — refresh the holder TTL. Epoch-fenced:\n// a stale-epoch beat (a box re-established under a newer epoch) is rejected.\nexport const ViewerHeartbeatRequest = /* @__PURE__ */ z.object({\n leaseEpoch: z.number().int().nonnegative(),\n});\nexport type ViewerHeartbeatRequest = z.infer<typeof ViewerHeartbeatRequest>;\n\nexport const ViewerHeartbeatResponse = /* @__PURE__ */ z.object({\n // false ⇒ the holder was reaped or the epoch is stale; the client re-attaches.\n alive: z.boolean(),\n});\nexport type ViewerHeartbeatResponse = z.infer<typeof ViewerHeartbeatResponse>;\n\n// =============================================================================\n// Bring-your-own-compute (M5) — enrollment device-flow HTTP contract.\n//\n// The HTTP shapes mirror the @opengeni/agent-proto device-flow messages\n// (DeviceAuthStart*, DeviceAuthPoll*, EnrollmentCredentials) so the Rust agent's\n// `enroll` command (which runs the flow over HTTP before it has NATS creds)\n// decodes the SAME field names (the proto's ts-proto JSON is camelCase). The\n// request bodies additionally carry the consent-relevant fields the design brief\n// mandates (the agent ed25519 pubkey + can-offer-display + requests-screen-control).\n// =============================================================================\n\nexport const EnrollmentOs = z.enum([\"linux\", \"macos\", \"windows\"]);\nexport type EnrollmentOs = z.infer<typeof EnrollmentOs>;\nexport const EnrollmentArch = z.enum([\"x86_64\", \"aarch64\"]);\nexport type EnrollmentArch = z.infer<typeof EnrollmentArch>;\n\n// POST /enrollments/device/start (agent-side, unauthenticated-at-the-user-level,\n// rate-limited). The agent presents its ed25519 public key + os/arch + the\n// requested whole-machine exposure + whether it can offer a display + whether it\n// requests screen control.\nexport const DeviceEnrollmentStartRequest = z.object({\n // The agent's ed25519 public key (the machine identity the enrollment binds to).\n publicKey: z.string().min(1).max(1024),\n os: EnrollmentOs.default(\"linux\"),\n arch: EnrollmentArch.default(\"x86_64\"),\n // Human-friendly machine name (hostname by default).\n machineName: z.string().min(1).max(256).optional(),\n // v1 only supports whole-machine; kept explicit so the consent is recorded.\n exposure: z.literal(\"whole-machine\").default(\"whole-machine\"),\n // The agent can offer a display (a real screen / Xvfb is available).\n canOfferDisplay: z.boolean().default(false),\n // The agent requests screen control (computer-use); the user's allow_screen_control\n // at approve is the AUTHORITATIVE consent.\n requestsScreenControl: z.boolean().default(false),\n // The workspace this machine is enrolling into. The agent is told this at install\n // (the user picks the workspace, or the install/enroll token carries it). The user\n // who approves must hold a grant in THIS workspace — that binding is what makes\n // the (user-unauthenticated) start safe: it cannot grant access to a workspace no\n // authorized user later approves in.\n workspaceId: z.string().uuid(),\n});\nexport type DeviceEnrollmentStartRequest = z.infer<typeof DeviceEnrollmentStartRequest>;\n\n// The DeviceAuthStart response (field names match the proto's JSON).\nexport const DeviceEnrollmentStartResponse = z.object({\n deviceCode: z.string(),\n userCode: z.string(),\n verificationUri: z.string(),\n verificationUriComplete: z.string(),\n intervalSeconds: z.number().int().positive(),\n expiresInSeconds: z.number().int().positive(),\n});\nexport type DeviceEnrollmentStartResponse = z.infer<typeof DeviceEnrollmentStartResponse>;\n\n// POST /enrollments/device/approve (USER-authenticated, workspace-gated). The\n// LOUD CONSENT step. whole-machine is mandatory (implicit); screen-control is\n// opt-in per allow_screen_control.\nexport const DeviceEnrollmentApproveRequest = z.object({\n userCode: z.string().min(1).max(64),\n allowScreenControl: z.boolean().default(false),\n // Human-approved machines are private by default. Workspace/organization\n // publication is an explicit consent choice at this same loud boundary.\n scope: ResourceAuthorityScope.default(\"user\"),\n});\nexport type DeviceEnrollmentApproveRequest = z.infer<typeof DeviceEnrollmentApproveRequest>;\n\nexport const DeviceEnrollmentApproveResponse = z.object({\n approved: z.boolean(),\n enrollmentId: z.string().uuid(),\n sandboxId: z.string().uuid(),\n allowScreenControl: z.boolean(),\n});\nexport type DeviceEnrollmentApproveResponse = z.infer<typeof DeviceEnrollmentApproveResponse>;\n\n// POST /enrollments/device/poll (agent-side). The poll state machine.\nexport const DeviceEnrollmentPollRequest = z.object({\n deviceCode: z.string().min(1).max(256),\n});\nexport type DeviceEnrollmentPollRequest = z.infer<typeof DeviceEnrollmentPollRequest>;\n\nexport const DeviceEnrollmentState = z.enum([\n \"pending\",\n \"authorized\",\n \"denied\",\n \"expired\",\n \"disabled\",\n]);\nexport type DeviceEnrollmentState = z.infer<typeof DeviceEnrollmentState>;\n\n// The EnrollmentCredentials (field names match the proto's JSON). natsAccountCreds\n// is a PLACEHOLDER — the real per-workspace NATS Account creds binding is\n// infra-deferred (M4/relay); the bearer + subjectPrefix are the application-tier\n// identity the agent presents today.\nexport const EnrollmentCredentialsResponse = z.object({\n agentId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n // The signed bearer the agent presents to the control plane (the `oge_` token).\n bearer: z.string(),\n // The Account-scoped control-plane subject prefix the agent subscribes to:\n // agent.<workspaceId>.<agentId>.\n subjectPrefix: z.string(),\n // Connect info for the control plane + stream relay (may be empty when not yet\n // configured for this deployment — the agent surfaces \"control plane unconfigured\").\n natsUrls: z.array(z.string()),\n relayUrl: z.string(),\n // The agent's PRODUCER token for the relay edge (the `ogr_` token; M8b). Presented\n // as StreamOpen.token when the agent registers a pty/desktop channel; the relay\n // verifies it then pairs the producer with the viewer (whose `ogs_` token the\n // relay also verifies). Empty when the relay-token plane is unconfigured for this\n // deployment (graceful degrade — the agent then presents an empty token the relay\n // rejects, surfacing the gap loudly rather than silently producing a dead stream).\n relayToken: z.string(),\n // VESTIGIAL (M-AUTH): there is no per-machine NATS Account creds file. The agent\n // presents the `bearer` above as the NATS connect AUTH-TOKEN; the server's\n // auth-callout responder validates it and mints a workspace-scoped user JWT. This\n // field echoes the bearer so a consumer reading it as the connect credential still\n // works; new consumers should read `bearer` directly.\n natsAccountCreds: z.string(),\n // The minisign public key the agent pins for self-update verification.\n updatePublicKey: z.string(),\n consentedWholeMachine: z.boolean(),\n consentedScreenControl: z.boolean(),\n});\nexport type EnrollmentCredentialsResponse = z.infer<typeof EnrollmentCredentialsResponse>;\n\nexport const DeviceEnrollmentPollResponse = z.object({\n state: DeviceEnrollmentState,\n // Present only when state === \"authorized\".\n credentials: EnrollmentCredentialsResponse.optional(),\n});\nexport type DeviceEnrollmentPollResponse = z.infer<typeof DeviceEnrollmentPollResponse>;\n\n// GET /enrollments — a workspace's machines (the Machines dashboard surface).\nexport const EnrollmentSummary = z.object({\n id: z.string().uuid(),\n scope: ResourceAuthorityScope,\n generation: z.number().int().positive(),\n pubkey: z.string(),\n exposure: z.literal(\"whole-machine\"),\n hasDisplay: z.boolean(),\n // Present (non-null) only when a display EXISTS but capture is blocked (macOS\n // Screen Recording / TCC not granted): a human, actionable reason so the UI can\n // show \"display: capture not granted\" instead of a bare \"headless\". null == capture\n // permitted OR genuinely headless.\n desktopUnavailableReason: z.string().nullish(),\n allowScreenControl: z.boolean(),\n status: z.enum([\"active\", \"revoked\"]),\n os: EnrollmentOs,\n arch: z.string(),\n lastSeenAt: z.string().nullable(),\n createdAt: z.string(),\n revokedAt: z.string().nullable(),\n});\nexport type EnrollmentSummary = z.infer<typeof EnrollmentSummary>;\n\nexport const ListEnrollmentsResponse = z.object({\n enrollments: z.array(EnrollmentSummary),\n});\nexport type ListEnrollmentsResponse = z.infer<typeof ListEnrollmentsResponse>;\n\nexport const RevokeEnrollmentResponse = z.object({\n revoked: z.boolean(),\n outcome: z.enum([\"removed\", \"already_removed\", \"blocked\"]),\n enrollmentId: z.string().uuid(),\n machineName: z.string().nullable(),\n lastSeenAt: z.string().datetime({ offset: true }).nullable(),\n revokedAt: z.string().datetime({ offset: true }).nullable(),\n code: z\n .enum([\n \"active_route\",\n \"active_commands\",\n \"machine_home\",\n \"active_lease\",\n \"recovery_pending\",\n \"not_selfhosted\",\n ])\n .nullable(),\n message: z.string(),\n action: z.string(),\n dependentSessions: z.array(\n z.object({\n id: z.string().uuid(),\n title: z.string().nullable(),\n }),\n ),\n});\nexport type RevokeEnrollmentResponse = z.infer<typeof RevokeEnrollmentResponse>;\n\n/** POST /v1/workspaces/:workspaceId/enrollments/:id/revoke body. */\nexport const RemoveEnrollmentRequest = z.object({\n expectedUpdatedAt: z.string().datetime({ offset: true }).optional(),\n idempotencyKey: z.string().trim().min(1).max(200).optional(),\n});\nexport type RemoveEnrollmentRequest = z.infer<typeof RemoveEnrollmentRequest>;\n\n// =============================================================================\n// Enrollment UX (self-hosted enrollment UX, design 11): the click-Grant approve\n// page lookup/deny + the headless enroll-token mint/exchange. These sit beside the\n// device-flow contracts above and REUSE EnrollmentCredentialsResponse for the\n// exchange's credential payload (identical shape to the poll authorized branch).\n// =============================================================================\n\n// POST /v1/enrollments/device/lookup (USER-authenticated, NO workspace in the\n// path). The approve page (EnrollmentConsent) needs the machine details for a\n// user_code WITHOUT consuming the request. The user_code is globally unique among\n// pending rows; the route resolves its workspace, authorizes (enrollments:read),\n// and returns the machine details — or 404 (never revealing cross-workspace\n// existence) when the grant check fails or no live pending row matches.\nexport const DeviceEnrollmentLookupRequest = z.object({\n userCode: z.string().min(1).max(64),\n});\nexport type DeviceEnrollmentLookupRequest = z.infer<typeof DeviceEnrollmentLookupRequest>;\n\n// The presentational machine details the consent screen renders (a subset of the\n// pending request — NO secrets, NO device_code).\nexport const DeviceEnrollmentLookupMachine = z.object({\n machineName: z.string().nullable(),\n os: EnrollmentOs,\n arch: z.string(),\n canOfferDisplay: z.boolean(),\n requestsScreenControl: z.boolean(),\n});\nexport type DeviceEnrollmentLookupMachine = z.infer<typeof DeviceEnrollmentLookupMachine>;\n\nexport const DeviceEnrollmentLookupResponse = z.object({\n workspaceId: z.string().uuid(),\n userCode: z.string(),\n machine: DeviceEnrollmentLookupMachine,\n expiresAt: z.string(),\n});\nexport type DeviceEnrollmentLookupResponse = z.infer<typeof DeviceEnrollmentLookupResponse>;\n\n// POST /v1/workspaces/:workspaceId/enrollments/device/deny (USER-authenticated,\n// enrollments:manage). The explicit \"no\" at the approve page — mirrors approve.\nexport const DeviceEnrollmentDenyRequest = z.object({\n userCode: z.string().min(1).max(64),\n});\nexport type DeviceEnrollmentDenyRequest = z.infer<typeof DeviceEnrollmentDenyRequest>;\n\nexport const DeviceEnrollmentDenyResponse = z.object({\n denied: z.boolean(),\n});\nexport type DeviceEnrollmentDenyResponse = z.infer<typeof DeviceEnrollmentDenyResponse>;\n\n// POST /v1/workspaces/:workspaceId/enrollments/token (USER-authenticated,\n// enrollments:manage). Mints the short-TTL headless enroll token (the `oget_`\n// token). allowScreenControl bakes the screen-control consent into the token.\nexport const MintEnrollTokenRequest = z.object({\n allowScreenControl: z.boolean().default(false),\n});\nexport type MintEnrollTokenRequest = z.infer<typeof MintEnrollTokenRequest>;\n\nexport const MintEnrollTokenResponse = z.object({\n // The `oget_` token. SECRET — the UI shows it once with a copy-now warning.\n token: z.string(),\n expiresAt: z.string(),\n expiresInSeconds: z.number().int().positive(),\n});\nexport type MintEnrollTokenResponse = z.infer<typeof MintEnrollTokenResponse>;\n\n// POST /v1/enrollments/token/exchange (UNAUTHENTICATED — the token IS the auth).\n// The agent presents the same identity fields it sends to device/start plus the\n// enroll token. On a valid token the control plane performs the SAME finalize as\n// approve and returns the IDENTICAL EnrollmentCredentialsResponse shape (so the\n// agent's existing credential parsing is reused).\nexport const EnrollTokenExchangeRequest = z.object({\n // The `oget_` enroll token (the auth + the workspace/account/consent grant).\n token: z.string().min(1),\n // The agent's ed25519 public key (the machine identity the enrollment binds to).\n publicKey: z.string().min(1).max(1024),\n os: EnrollmentOs.default(\"linux\"),\n arch: EnrollmentArch.default(\"x86_64\"),\n machineName: z.string().min(1).max(256).optional(),\n // v1 only supports whole-machine; kept explicit so the consent is recorded.\n exposure: z.literal(\"whole-machine\").default(\"whole-machine\"),\n canOfferDisplay: z.boolean().default(false),\n // The agent's REQUEST; the token's allowScreenControl is the AUTHORITATIVE consent.\n requestsScreenControl: z.boolean().default(false),\n});\nexport type EnrollTokenExchangeRequest = z.infer<typeof EnrollTokenExchangeRequest>;\n\n// The exchange wraps the EXISTING EnrollmentCredentialsResponse — IDENTICAL to the\n// poll authorized branch's `credentials` (NOT a redefined credential shape).\nexport const EnrollTokenExchangeResponse = z.object({\n credentials: EnrollmentCredentialsResponse,\n});\nexport type EnrollTokenExchangeResponse = z.infer<typeof EnrollTokenExchangeResponse>;\n\n// ── Machines dashboard + per-machine metrics (M10) ────────────\n//\n// The SHARED data contract M10 (backend) implements + M9 (UI) renders. THE\n// orchestrator owns this shape; M9 imports these types so the dashboard never\n// drifts from the API. The fields mirror the agent's MetricsSample wire shape\n// (`@opengeni/agent-proto`) projected to the dashboard's JSON, plus the derived\n// machine state matrix (the M3 liveness + the consent/display reasons).\n\n/**\n * A point-in-time machine metrics sample as the dashboard reads it. `cpuPct` and\n * the load averages are 0..N doubles; the byte figures are integers; `gpuUtilPct`\n * / `gpuMemBytes` are null when no GPU was present at sample time (the wire\n * contract: absence == not-reported, NEVER a real zero). `runQueue` is the\n * runnable-count contention signal. `sampledAt` is an ISO-8601 instant.\n */\nexport const MetricSample = z.object({\n cpuPct: z.number(),\n load1: z.number(),\n load5: z.number(),\n load15: z.number(),\n memUsedBytes: z.number().int(),\n memTotalBytes: z.number().int(),\n diskUsedBytes: z.number().int(),\n diskTotalBytes: z.number().int(),\n gpuUtilPct: z.number().nullable(),\n gpuMemBytes: z.number().int().nullable(),\n runQueue: z.number(),\n sampledAt: z.string(),\n});\nexport type MetricSample = z.infer<typeof MetricSample>;\n\n/** The derived dashboard state of a machine. The M3 liveness\n * (online/reconnecting/offline) plus the enrollment-derived consent/display\n * reasons (consent_required / display_unavailable) and the in-flight device-flow\n * (enrolling). */\nexport const MachineState = z.enum([\n \"online\",\n \"reconnecting\",\n \"offline\",\n \"consent_required\",\n \"display_unavailable\",\n \"enrolling\",\n]);\nexport type MachineState = z.infer<typeof MachineState>;\n\nexport const MachineKind = z.enum([\"modal\", \"selfhosted\", \"opensandbox\"]);\nexport type MachineKind = z.infer<typeof MachineKind>;\n\n/** Diagnostic projection of the single live Connected-Machine runner authority.\n * It contains no bearer or NATS subject material. `supersededCount` is derived\n * from the monotonic generation; duplicate-denial evidence records valid\n * competing processes that were prevented from receiving work. */\nexport const MachineConnectionAuthority = z.object({\n state: z.enum([\"not_applicable\", \"unclaimed\", \"active\", \"expired\"]),\n generation: z.number().int().nonnegative(),\n supersededCount: z.number().int().nonnegative(),\n leaseExpiresAt: z.string().nullable(),\n duplicateRunnerDeniedCount: z.number().int().nonnegative(),\n duplicateRunnerDeniedAt: z.string().nullable(),\n});\nexport type MachineConnectionAuthority = z.infer<typeof MachineConnectionAuthority>;\n\nexport const MachineRuntimeCapabilities = z.object({\n exec: z.boolean(),\n filesystem: z.boolean(),\n git: z.boolean(),\n pty: z.boolean(),\n desktop: z.boolean(),\n opStream: z.boolean(),\n browserBridge: z.boolean(),\n operationResourcePolicy: z.boolean(),\n operationCpuQuota: z.boolean(),\n});\nexport type MachineRuntimeCapabilities = z.infer<typeof MachineRuntimeCapabilities>;\n\nexport const MachineUpdateStatus = z.enum([\n \"requested\",\n \"accepted\",\n \"waiting_for_idle\",\n \"downloading\",\n \"verifying\",\n \"applying\",\n \"restarting\",\n \"succeeded\",\n \"failed\",\n]);\nexport type MachineUpdateStatus = z.infer<typeof MachineUpdateStatus>;\n\nexport const MachineUpdateState = z.object({\n operationId: z.string().uuid(),\n status: MachineUpdateStatus,\n targetVersion: z.string(),\n expectedBinarySha256: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n errorCode: z.string().nullable(),\n retryable: z.boolean(),\n rolledBack: z.boolean(),\n requestedAt: z.string(),\n updatedAt: z.string(),\n completedAt: z.string().nullable(),\n});\nexport type MachineUpdateState = z.infer<typeof MachineUpdateState>;\n\nexport const MachineRuntime = z.object({\n installedVersion: z.string().nullable(),\n binarySha256: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n updateChannel: z.enum([\"stable\", \"beta\"]).nullable(),\n desiredVersion: z.string().nullable(),\n versionState: z.enum([\"unknown\", \"current\", \"outdated\", \"ahead\", \"updating\", \"update_failed\"]),\n capabilities: MachineRuntimeCapabilities,\n update: MachineUpdateState.nullable(),\n});\nexport type MachineRuntime = z.infer<typeof MachineRuntime>;\n\nexport const UpdateMachineAgentResponse = z.object({\n operationId: z.string().uuid(),\n accepted: z.boolean(),\n targetVersion: z.string(),\n});\nexport type UpdateMachineAgentResponse = z.infer<typeof UpdateMachineAgentResponse>;\n\nconst OperationMemoryBytes = z.number().int().positive().max(Number.MAX_SAFE_INTEGER).nullable();\nconst OperationCpuMillicores = z.number().int().positive().max(0xffff_ffff).nullable();\n\nfunction operationPolicyShape(\n value: {\n memoryMaxBytes: number | null;\n memoryHighBytes: number | null;\n cpuMaxMillicores?: number | null | undefined;\n },\n ctx: z.RefinementCtx,\n): void {\n if (\n value.memoryMaxBytes !== null &&\n value.memoryHighBytes !== null &&\n value.memoryHighBytes > value.memoryMaxBytes\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"memoryHighBytes\"],\n message: \"memoryHighBytes cannot exceed memoryMaxBytes\",\n });\n }\n}\n\n/** Optional per-connection command resource policy. CPU is a period-independent\n * millicore ratio; runners choose a documented representable cgroup period. Null\n * values are unrestricted; revision is the optimistic concurrency fence. */\nexport const MachineOperationPolicy = z\n .object({\n memoryMaxBytes: OperationMemoryBytes,\n memoryHighBytes: OperationMemoryBytes,\n cpuMaxMillicores: OperationCpuMillicores,\n revision: z.number().int().nonnegative(),\n updatedAt: z.string().nullable(),\n })\n .superRefine(operationPolicyShape);\nexport type MachineOperationPolicy = z.infer<typeof MachineOperationPolicy>;\n\nexport const UpdateMachineOperationPolicyRequest = z\n .object({\n memoryMaxBytes: OperationMemoryBytes,\n memoryHighBytes: OperationMemoryBytes,\n cpuMaxMillicores: OperationCpuMillicores.optional(),\n expectedRevision: z.number().int().nonnegative(),\n })\n .superRefine(operationPolicyShape);\nexport type UpdateMachineOperationPolicyRequest = z.infer<\n typeof UpdateMachineOperationPolicyRequest\n>;\n\n/**\n * A machine as the Machines dashboard renders it. The workspace's enrolled\n * selfhosted machines PLUS the session's synthetic Modal group box\n * (`isSessionGroup: true`). `active` marks the session's currently-active\n * routing target. `sharedSessionCount` is the lease refcount (how many sessions\n * share this whole machine). `metrics` is the latest sample, or null when none\n * has landed yet (just enrolled / offline before a first heartbeat).\n */\nexport const MachineView = z.object({\n sandboxId: z.string(),\n enrollmentId: z.string().nullable(),\n scope: ResourceAuthorityScope.default(\"workspace\"),\n generation: z.number().int().positive().default(1),\n name: z.string(),\n kind: MachineKind,\n state: MachineState,\n active: z.boolean(),\n isSessionGroup: z.boolean(),\n workspaceGeneration: z.number().int().nonnegative().nullable(),\n archiveGeneration: z.number().int().nonnegative().nullable(),\n archiveComplete: z.boolean(),\n os: z.string(),\n arch: z.string(),\n hasDisplay: z.boolean(),\n // Non-null only when a display exists but capture is blocked (macOS Screen\n // Recording / TCC not granted) — the UI can surface \"display: capture not granted\".\n // null == capture permitted OR headless.\n desktopUnavailableReason: z.string().nullish(),\n allowScreenControl: z.boolean(),\n sharedSessionCount: z.number().int(),\n lastSeenAt: z.string().nullable(),\n connectionAuthority: MachineConnectionAuthority,\n // Exact connected-agent build/capabilities and current update operation. Null\n // for managed/session sandboxes and pre-runtime-reporting synthetic rows.\n runtime: MachineRuntime.nullable().default(null),\n // Per-enrollment desired policy. Null for managed/session sandboxes.\n operationPolicy: MachineOperationPolicy.nullable().default(null),\n metrics: MetricSample.nullable(),\n});\nexport type MachineView = z.infer<typeof MachineView>;\n\n/**\n * GET /v1/workspaces/:ws/machines — the dashboard list. `activeSandboxId` /\n * `activeEpoch` echo the session's epoch-fenced active-sandbox pointer (null\n * activeSandboxId == the session's own group box is active).\n */\nexport const MachinesResponse = z.object({\n activeSandboxId: z.string().nullable(),\n activeEpoch: z.number().int(),\n machines: z.array(MachineView),\n});\nexport type MachinesResponse = z.infer<typeof MachinesResponse>;\n\n/**\n * POST /v1/workspaces/:ws/sessions/:sessionId/active-sandbox — the user-\n * authenticated swap of a session's active sandbox (the same epoch-fenced\n * mechanic the M7 `sandbox_swap` MCP tool exposes to the agent). `target` is a\n * `MachinesResponse` machine's `sandboxId`, or \"session\"/\"default\" to swap back\n * to the session's own group box.\n */\nexport const SwapActiveSandboxRequest = z.object({\n target: z.string().min(1),\n});\nexport type SwapActiveSandboxRequest = z.infer<typeof SwapActiveSandboxRequest>;\n\n/**\n * The swap outcome (mirrors the server `FleetSwapResult`). `swapped` is true on a\n * successful repoint OR a no-op (already pointed there); `reason` carries the\n * failure detail (unowned/offline target, or a lost epoch fence) when false.\n */\nexport const SwapActiveSandboxResponse = z.object({\n swapped: z.boolean(),\n activeSandboxId: z.string().nullable(),\n activeEpoch: z.number().int(),\n reason: z.string().optional(),\n // Typed rejection discriminant (issue #341). Present only when swapped is false,\n // so a client distinguishes a deleted/absent target from an unaddressable\n // enrollment from a backend the turn cannot establish from a lost epoch race —\n // without parsing the human reason string.\n code: z\n .enum([\n \"stale_pointer\",\n \"offline_enrollment\",\n \"unsupported_backend_context\",\n \"transient_establishment\",\n \"concurrent_swap\",\n \"recovery_in_progress\",\n \"recovery_degraded\",\n \"recovery_unrecoverable\",\n ])\n .optional(),\n});\nexport type SwapActiveSandboxResponse = z.infer<typeof SwapActiveSandboxResponse>;\n\n/**\n * GET /v1/workspaces/:ws/machines/:enrollmentId/metrics/series?window=1h — the\n * downsampled (~1/min) history the dashboard time-range reads.\n */\nexport const MachineMetricsSeriesResponse = z.object({\n samples: z.array(MetricSample),\n});\nexport type MachineMetricsSeriesResponse = z.infer<typeof MachineMetricsSeriesResponse>;\n\n/**\n * Keep this server-facing schema graph eager when imported while allowing\n * browser bundlers to discard it when contracts is used only for unrelated\n * helpers. Keep each call site annotated as pure; the factory argument itself\n * is side-effect-free until invoked.\n */\nfunction defineModelContractSchema<Schema>(factory: () => Schema): Schema {\n return factory();\n}\n\nexport const ModelCapabilitySupportV1 =\n /* @__PURE__ */ defineModelContractSchema(() => z.enum([\"supported\", \"unsupported\", \"unknown\"]));\nexport type ModelCapabilitySupportV1 = z.infer<typeof ModelCapabilitySupportV1>;\n\nexport const ModelCapabilityStateV1 = /* @__PURE__ */ defineModelContractSchema(() =>\n z.object({\n upstream: ModelCapabilitySupportV1,\n runnable: z.boolean(),\n }),\n);\nexport type ModelCapabilityStateV1 = z.infer<typeof ModelCapabilityStateV1>;\n\nexport const ModelCapabilitiesV1 = /* @__PURE__ */ defineModelContractSchema(() =>\n z.object({\n reasoning: ModelCapabilityStateV1.extend({\n efforts: z.array(ReasoningEffort),\n defaultEffort: ReasoningEffort.nullable(),\n required: z.boolean(),\n }),\n functionCalling: ModelCapabilityStateV1,\n structuredOutput: ModelCapabilityStateV1,\n hostedTools: z.object({\n webSearch: ModelCapabilityStateV1,\n xSearch: ModelCapabilityStateV1,\n codeExecution: ModelCapabilityStateV1,\n }),\n inputModalities: z.array(z.enum([\"text\", \"image\", \"audio\"])),\n inputFileMediaTypes: z.array(z.string()).optional(),\n outputModalities: z.array(z.enum([\"text\", \"image\", \"audio\"])),\n transports: z.object({\n sse: ModelCapabilityStateV1,\n responsesWebSocket: ModelCapabilityStateV1,\n realtimeAudio: ModelCapabilityStateV1,\n }),\n promptCaching: ModelCapabilityStateV1.extend({\n mode: z.enum([\"implicit\", \"automatic\", \"none\"]),\n }).optional(),\n latencyModes: z.array(\n z.object({\n id: z.enum([\"standard\", \"priority\", \"fast\"]),\n upstream: ModelCapabilitySupportV1,\n runnable: z.boolean(),\n billingMultiplierBps: z.number().int().positive().optional(),\n }),\n ),\n }),\n);\nexport type ModelCapabilitiesV1 = z.infer<typeof ModelCapabilitiesV1>;\n\nexport const ModelCredentialSourceV1 =\n /* @__PURE__ */ defineModelContractSchema(() =>\n z.union([\n z\n .object({\n kind: z.literal(\"deployment\"),\n mechanism: z.enum([\"api_key\", \"azure_ad_bearer\"]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"connected_subscription\"),\n provider: z.enum([\"codex\", \"xai\"]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"workspace_connection\"),\n mechanism: z.literal(\"api_key\"),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"organization_connection\"),\n mechanism: z.literal(\"api_key\"),\n })\n .strict(),\n ]),\n );\nexport type ModelCredentialSourceV1 = z.infer<typeof ModelCredentialSourceV1>;\n\nconst TurnExecutionCredentialSourceV1 = z.union([\n ModelCredentialSourceV1,\n z\n .object({\n kind: z.literal(\"deployment\"),\n mechanism: z.literal(\"none\"),\n })\n .strict(),\n]);\n\nexport const ModelBillingAttributionV1 =\n /* @__PURE__ */ defineModelContractSchema(() =>\n z\n .object({\n upstreamPayer: z.enum([\n \"deployment\",\n \"workspace\",\n \"organization\",\n \"connected_subscription\",\n ]),\n metering: z.enum([\"opengeni_credits\", \"external\"]),\n })\n .strict(),\n );\nexport type ModelBillingAttributionV1 = z.infer<typeof ModelBillingAttributionV1>;\n\nexport const ModelCostClassV1 = /* @__PURE__ */ defineModelContractSchema(() =>\n z.enum([\"free\", \"credits\", \"subscription\", \"workspace\", \"organization\"]),\n);\nexport type ModelCostClassV1 = z.infer<typeof ModelCostClassV1>;\n\nexport const TURN_EXECUTION_POLICY_METADATA_KEY = \"turnExecutionPolicyV1\" as const;\n\nexport const TurnExecutionModelSourceV1 =\n /* @__PURE__ */ defineModelContractSchema(() =>\n z.enum([\"explicit\", \"session\", \"deployment\", \"continuation\"]),\n );\nexport type TurnExecutionModelSourceV1 = z.infer<typeof TurnExecutionModelSourceV1>;\n\nexport const TurnExecutionReasoningSourceV1 =\n /* @__PURE__ */ defineModelContractSchema(() =>\n z.enum([\"explicit\", \"session\", \"deployment\", \"continuation\"]),\n );\nexport type TurnExecutionReasoningSourceV1 = z.infer<typeof TurnExecutionReasoningSourceV1>;\n\nexport const TurnExecutionLatencyModeSourceV1 =\n /* @__PURE__ */ defineModelContractSchema(() =>\n z.enum([\"explicit\", \"session\", \"deployment\", \"continuation\"]),\n );\nexport type TurnExecutionLatencyModeSourceV1 = z.infer<typeof TurnExecutionLatencyModeSourceV1>;\n\n/**\n * Secret-safe execution identity frozen onto one accepted logical turn.\n *\n * This is deliberately a strict, normalized reference to the deployment\n * definition rather than a serialized provider client. It must never contain\n * a key/token, concrete connected credential id, account label, authorization\n * header, or credential-bearing URL/query value.\n *\n * `latencyMode` / `latencyModeSource` default to standard/deployment so legacy\n * snapshots without those keys remain readable as Standard.\n */\nexport const TurnExecutionPolicyV1 = /* @__PURE__ */ defineModelContractSchema(() =>\n z\n .object({\n schemaVersion: z.literal(1),\n productModelId: z.string().min(1),\n requestedModelId: z.string().min(1).nullable(),\n modelSource: TurnExecutionModelSourceV1,\n reasoningEffort: ReasoningEffort,\n reasoningSource: TurnExecutionReasoningSourceV1,\n latencyMode: LatencyMode.default(\"standard\"),\n latencyModeSource: TurnExecutionLatencyModeSourceV1.default(\"deployment\"),\n providerId: z.string().min(1),\n upstreamModelId: z.string().min(1),\n wireApi: z.enum([\"responses\", \"chat\"]),\n credentialSource: TurnExecutionCredentialSourceV1,\n billing: ModelBillingAttributionV1,\n definitionVersion: z.string().regex(/^sha256:[a-f0-9]{64}$/u),\n })\n .strict()\n .superRefine((policy, context) => {\n if (policy.modelSource === \"explicit\" && policy.requestedModelId === null) {\n context.addIssue({\n code: \"custom\",\n path: [\"requestedModelId\"],\n message: \"an explicit model source requires a requested model id\",\n });\n }\n if (policy.modelSource !== \"explicit\" && policy.requestedModelId !== null) {\n context.addIssue({\n code: \"custom\",\n path: [\"requestedModelId\"],\n message: \"only an explicit model source may retain a requested model id\",\n });\n }\n }),\n);\nexport type TurnExecutionPolicyV1 = z.infer<typeof TurnExecutionPolicyV1>;\n\n/**\n * Secret-safe Codex allocator policy accepted with the first durable lease of\n * a logical turn. Account ids are policy references only; credential material\n * and provider tokens must never be stored here.\n */\nexport const CODEX_CREDENTIAL_POLICY_SNAPSHOT_METADATA_KEY =\n \"codexCredentialPolicySnapshotV1\" as const;\n\nexport const CodexCredentialPolicySnapshotV1 = /* @__PURE__ */ defineModelContractSchema(() =>\n z\n .object({\n schemaVersion: z.literal(1),\n activeCredentialId: z.string().min(1).max(256).nullable(),\n rotationEnabled: z.boolean(),\n rotationStrategy: z.string().min(1).max(64),\n /** Effective allocator source; absent only on pre-source snapshots. */\n source: z.enum([\"workspace\", \"organization\", \"disabled\"]).optional(),\n pinnedCredentialId: z.string().min(1).max(256).nullable(),\n pinSource: z.enum([\"manual\", \"policy\"]).nullable(),\n lastCredentialId: z.string().min(1).max(256).nullable(),\n })\n .strict()\n .superRefine((policy, context) => {\n if ((policy.pinnedCredentialId === null) !== (policy.pinSource === null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"pinSource\"],\n message: \"pinnedCredentialId and pinSource must both be null or both be present\",\n });\n }\n }),\n);\nexport type CodexCredentialPolicySnapshotV1 = z.infer<typeof CodexCredentialPolicySnapshotV1>;\n\nexport type CodexCredentialPolicySnapshotReadV1 =\n | { kind: \"absent\" }\n | { kind: \"valid\"; policy: CodexCredentialPolicySnapshotV1 };\n\n/**\n * Read the accepted Codex allocator policy from turn metadata. A present but\n * malformed snapshot fails closed; only a missing key is legacy metadata.\n */\nexport function readCodexCredentialPolicySnapshotV1(\n metadata: unknown,\n): CodexCredentialPolicySnapshotReadV1 {\n if (metadata === null || metadata === undefined) {\n return { kind: \"absent\" };\n }\n if (typeof metadata !== \"object\" || Array.isArray(metadata)) {\n throw new Error(\n \"Malformed Codex credential policy snapshot metadata: turn metadata is not an object\",\n );\n }\n const record = metadata as Record<string, unknown>;\n if (\n !Object.prototype.hasOwnProperty.call(record, CODEX_CREDENTIAL_POLICY_SNAPSHOT_METADATA_KEY)\n ) {\n return { kind: \"absent\" };\n }\n const parsed = CodexCredentialPolicySnapshotV1.safeParse(\n record[CODEX_CREDENTIAL_POLICY_SNAPSHOT_METADATA_KEY],\n );\n if (!parsed.success) {\n const paths = [\n ...new Set(\n parsed.error.issues.map((issue) =>\n issue.path.length === 0 ? \"policy\" : `policy.${issue.path.join(\".\")}`,\n ),\n ),\n ].join(\", \");\n throw new Error(`Malformed Codex credential policy snapshot metadata at ${paths || \"policy\"}`);\n }\n return { kind: \"valid\", policy: parsed.data };\n}\n\n/** Merge a trusted Codex allocator policy snapshot into turn metadata. */\nexport function metadataWithCodexCredentialPolicySnapshotV1(\n metadata: Readonly<Record<string, unknown>> | null | undefined,\n policy: CodexCredentialPolicySnapshotV1,\n): Record<string, unknown> {\n return {\n ...(metadata ?? {}),\n [CODEX_CREDENTIAL_POLICY_SNAPSHOT_METADATA_KEY]: CodexCredentialPolicySnapshotV1.parse(policy),\n };\n}\n\nexport type TurnExecutionPolicyReadV1 =\n | { kind: \"absent\" }\n | { kind: \"valid\"; policy: TurnExecutionPolicyV1 };\n\n/**\n * Read the policy from turn metadata. Only a literally absent key is legacy;\n * null, undefined, an unknown schema version, extra fields, and every other\n * malformed present value fail closed. Error text reports paths only and never\n * reflects the untrusted value into logs or events.\n */\nexport function readTurnExecutionPolicyV1(metadata: unknown): TurnExecutionPolicyReadV1 {\n if (metadata === null || metadata === undefined) {\n return { kind: \"absent\" };\n }\n if (typeof metadata !== \"object\" || Array.isArray(metadata)) {\n throw new Error(\"Malformed turn execution policy metadata: turn metadata is not an object\");\n }\n const record = metadata as Record<string, unknown>;\n if (!Object.prototype.hasOwnProperty.call(record, TURN_EXECUTION_POLICY_METADATA_KEY)) {\n return { kind: \"absent\" };\n }\n const parsed = TurnExecutionPolicyV1.safeParse(record[TURN_EXECUTION_POLICY_METADATA_KEY]);\n if (!parsed.success) {\n const paths = [\n ...new Set(\n parsed.error.issues.map((issue) =>\n issue.path.length === 0 ? \"policy\" : `policy.${issue.path.join(\".\")}`,\n ),\n ),\n ].join(\", \");\n throw new Error(`Malformed turn execution policy metadata at ${paths || \"policy\"}`);\n }\n return { kind: \"valid\", policy: parsed.data };\n}\n\n/** Merge a trusted policy into metadata without disturbing dispatch/recovery state. */\nexport function metadataWithTurnExecutionPolicyV1(\n metadata: Readonly<Record<string, unknown>> | null | undefined,\n policy: TurnExecutionPolicyV1,\n): Record<string, unknown> {\n return {\n ...(metadata ?? {}),\n [TURN_EXECUTION_POLICY_METADATA_KEY]: TurnExecutionPolicyV1.parse(policy),\n };\n}\n\n/**\n * Minimal, stable evidence projection for command receipts and audit events.\n * It intentionally excludes aliases, URLs, request metadata, and all concrete\n * credential-selection identity.\n */\nexport function turnExecutionPolicyAuditMetadata(\n policy: TurnExecutionPolicyV1,\n turnId: string,\n): Record<string, unknown> {\n const parsed = TurnExecutionPolicyV1.parse(policy);\n return {\n turnId,\n requestedModelId: parsed.requestedModelId,\n effectiveModelId: parsed.productModelId,\n modelSource: parsed.modelSource,\n effectiveReasoningEffort: parsed.reasoningEffort,\n reasoningSource: parsed.reasoningSource,\n effectiveLatencyMode: parsed.latencyMode,\n latencyModeSource: parsed.latencyModeSource,\n providerId: parsed.providerId,\n credentialSourceKind: parsed.credentialSource.kind,\n credentialSourceMechanism:\n parsed.credentialSource.kind === \"connected_subscription\"\n ? parsed.credentialSource.provider\n : parsed.credentialSource.mechanism,\n billingOwner: parsed.billing.upstreamPayer,\n billingMetering: parsed.billing.metering,\n definitionVersion: parsed.definitionVersion,\n };\n}\n\nexport const ModelPricingV1 = /* @__PURE__ */ defineModelContractSchema(() =>\n z.object({\n inputMicrosPerMillionTokens: z.number().int().nonnegative(),\n cachedInputMicrosPerMillionTokens: z.number().int().nonnegative().optional(),\n cacheWriteMicrosPerMillionTokens: z.number().int().nonnegative().optional(),\n outputMicrosPerMillionTokens: z.number().int().nonnegative(),\n marginBps: z.number().int().min(0).max(100_000).optional(),\n }),\n);\nexport type ModelPricingV1 = z.infer<typeof ModelPricingV1>;\n\nexport const ModelPricingScheduleV1 = /* @__PURE__ */ defineModelContractSchema(() =>\n z.object({\n default: ModelPricingV1,\n inputTokenTiers: z\n .array(\n z.object({\n minimumInputTokens: z.number().int().nonnegative(),\n pricing: ModelPricingV1,\n }),\n )\n .optional(),\n }),\n);\nexport type ModelPricingScheduleV1 = z.infer<typeof ModelPricingScheduleV1>;\n\n/**\n * A single host-exposed model + the provider that serves it, as surfaced to\n * clients (SDK + React composer) by GET /v1/config/client. The wire `api`\n * (\"responses\" | \"chat\") lets a client reason about provider capabilities; the\n * provider id/label drive the picker's grouping. This mirrors the runtime's\n * ConfiguredModel (packages/config) projected to the client-safe fields.\n */\nexport const ClientModel = /* @__PURE__ */ defineModelContractSchema(() =>\n z.object({\n id: z.string(),\n label: z.string(),\n /** Optional curated compact label for dense UI (e.g. mobile composer). */\n shortLabel: z.string().min(1).max(64).optional(),\n provider: z.string(), // provider id\n providerLabel: z.string(),\n api: z.enum([\"responses\", \"chat\"]),\n source: z\n .enum([\"opengeni\", \"codex\", \"supergrok\", \"workspace_gateway\", \"openrouter\"])\n .optional(),\n contextWindowTokens: z.number().int().positive().optional(),\n // Additive normalized definition metadata. Optional so older server payloads\n // remain parseable; current servers project the complete V1 set.\n schemaVersion: z.literal(1).optional(),\n aliases: z.array(z.string()).optional(),\n deployment: z\n .object({\n upstreamModelId: z.string().min(1),\n wireApi: z.enum([\"responses\", \"chat\"]),\n })\n .optional(),\n executionLimits: z\n .object({\n contextWindowTokens: z.number().int().positive().nullable(),\n effectiveContextWindowTokens: z.number().int().positive().nullable(),\n autoCompactTokenLimit: z.number().int().positive().nullable(),\n toolOutputTruncationTokens: z.number().int().positive().nullable(),\n })\n .optional(),\n credentialSource: ModelCredentialSourceV1.optional(),\n billing: ModelBillingAttributionV1.optional(),\n cost: ModelCostClassV1.optional(),\n capabilities: ModelCapabilitiesV1.optional(),\n pricing: ModelPricingScheduleV1.optional(),\n definitionVersion: z\n .string()\n .regex(/^sha256:[a-f0-9]{64}$/u)\n .optional(),\n }),\n);\nexport type ClientModel = z.infer<typeof ClientModel>;\n\nexport const ModelCredentialReadinessV1 =\n /* @__PURE__ */ defineModelContractSchema(() =>\n z\n .object({\n status: z.enum([\"ready\", \"not_ready\", \"error\"]),\n reason: z\n .enum([\n \"missing_credential\",\n \"needs_reauth\",\n \"prerequisites_missing\",\n \"resolver_error\",\n \"observation_stale\",\n ])\n .nullable(),\n basis: z.enum([\"configuration\", \"connection\", \"resolver\"]),\n checkedAt: z.string().datetime().nullable(),\n })\n .strict()\n .superRefine((readiness, context) => {\n if ((readiness.status === \"ready\") !== (readiness.reason === null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"reason\"],\n message: \"ready credential state requires no reason; non-ready state requires a reason\",\n });\n }\n if ((readiness.status === \"error\") !== (readiness.reason === \"resolver_error\")) {\n context.addIssue({\n code: \"custom\",\n path: [\"reason\"],\n message:\n \"credential errors require resolver_error and resolver_error requires error status\",\n });\n }\n if (\n readiness.basis === \"resolver\" &&\n readiness.status === \"ready\" &&\n readiness.checkedAt === null\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"checkedAt\"],\n message: \"resolver readiness requires an observation timestamp\",\n });\n }\n if (readiness.reason === \"observation_stale\" && readiness.checkedAt === null) {\n context.addIssue({\n code: \"custom\",\n path: [\"checkedAt\"],\n message: \"a stale observation requires its observation timestamp\",\n });\n }\n }),\n );\nexport type ModelCredentialReadinessV1 = z.infer<typeof ModelCredentialReadinessV1>;\n\nexport const ModelAvailabilityV1 = /* @__PURE__ */ defineModelContractSchema(() =>\n z.object({\n status: z.enum([\"available\", \"unavailable\", \"degraded\", \"unknown\"]),\n selectable: z.boolean(),\n reason: z\n .enum([\n \"missing_credential\",\n \"needs_reauth\",\n \"credential_not_ready\",\n \"not_entitled\",\n \"provider_unhealthy\",\n \"policy_blocked\",\n \"unsupported\",\n ])\n .nullable(),\n checkedAt: z.string().datetime().nullable(),\n }),\n);\nexport type ModelAvailabilityV1 = z.infer<typeof ModelAvailabilityV1>;\n\nexport const WorkspaceModelCatalogModel =\n /* @__PURE__ */ defineModelContractSchema(() =>\n ClientModel.extend({\n credentialReadiness: ModelCredentialReadinessV1,\n /** Exact workspace-policy verdict without exposing provider identity. */\n policyAllowed: z.boolean().optional(),\n availability: ModelAvailabilityV1,\n }),\n );\nexport type WorkspaceModelCatalogModel = z.infer<typeof WorkspaceModelCatalogModel>;\n\nexport const WorkspaceModelCatalogResponse =\n /* @__PURE__ */ defineModelContractSchema(() =>\n z.object({\n models: z.array(WorkspaceModelCatalogModel),\n }),\n );\nexport type WorkspaceModelCatalogResponse = z.infer<typeof WorkspaceModelCatalogResponse>;\n\n/**\n * Exact public HTTP protocol revision spoken by this release train.\n *\n * This is deliberately independent from a deployment SHA: API and web may roll\n * at different instants, while incompatible request shapes must never cross\n * that rollout boundary. Mutating clients send this value in\n * `x-opengeni-api-contract`; the API rejects any other value before routing.\n */\nexport const OPENGENI_API_CONTRACT_REVISION = \"2026-08-organization-recovery-custody-v1\" as const;\nexport const OPENGENI_API_CONTRACT_HEADER = \"x-opengeni-api-contract\" as const;\n/** Bounded request/response identifier shared by browser, ingress, and API diagnostics. */\nexport const OPENGENI_CORRELATION_HEADER = \"x-opengeni-correlation-id\" as const;\n\nexport const ClientConfig = /* @__PURE__ */ defineModelContractSchema(() =>\n z.object({\n deploymentRevision: z.string(),\n apiContractRevision: z.literal(OPENGENI_API_CONTRACT_REVISION),\n // Release-train version of the server (absent on dev/source builds). The\n // compatibility policy lives in docs/architecture.md — clients within the\n // same major are supported; evolution is additive within a major.\n serverVersion: z.string().optional(),\n defaultModel: z.string(),\n allowedModels: z.array(z.string()).min(1),\n // Richer model list (provider-grouped) for the picker. Defaults to [] for\n // back-compat: callers that only read allowedModels are unaffected.\n models: z.array(ClientModel).default([]),\n defaultReasoningEffort: ReasoningEffort,\n allowedReasoningEfforts: z.array(ReasoningEffort).min(1),\n // Client-safe execution default. The schedule editor uses this to avoid\n // presenting a targetless \"managed\" choice on self-hosted deployments.\n defaultSandboxBackend: SandboxBackend.default(\"modal\"),\n mcpServers: z\n .array(\n z.object({\n id: z.string(),\n name: z.string(),\n }),\n )\n .default([]),\n firstPartyMcpTools: z\n .object({\n default: z.array(FirstPartyMcpToolName),\n allowed: z.array(FirstPartyMcpToolName),\n })\n .default({\n default: [...DEFAULT_FIRST_PARTY_MCP_TOOLS],\n allowed: [...FIRST_PARTY_MCP_TOOL_NAMES],\n }),\n fileUploads: z.object({\n enabled: z.boolean(),\n maxSizeBytes: z.number().int().positive(),\n }),\n // Native voice-input capability. Provider/model/credentials stay server-private;\n // clients only learn whether a deployment can transcribe and the hard ceilings.\n voiceInput: ClientVoiceInputConfig.default({\n available: false,\n maxDurationSeconds: VOICE_INPUT_MAX_DURATION_SECONDS,\n maxSizeBytes: VOICE_INPUT_MAX_SIZE_BYTES,\n acceptedMimeTypes: [...VOICE_INPUT_ACCEPTED_MIME_TYPES],\n }),\n productAccessMode: ProductAccessMode,\n billingMode: BillingMode.default(\"disabled\"),\n // Safe rollout discriminator: the browser only mounts the optional\n // @opengeni/sdk/accounts controller when this is dual or broker.\n managedAuthSessionSetMode: z.enum([\"legacy\", \"dual\", \"broker\"]).default(\"legacy\"),\n auth: ClientAuthConfig.default({ mode: \"none\" }),\n analytics: z\n .object({\n consentRequired: z.boolean(),\n providers: z.object({\n reo: z\n .object({\n clientId: z\n .string()\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/u),\n })\n .optional(),\n posthog: z\n .object({\n projectKey: z.string().min(1).max(256),\n host: z.string().url().max(2_048),\n })\n .optional(),\n ga4: z\n .object({\n measurementId: z\n .string()\n .max(32)\n .regex(/^G-[A-Z0-9]+$/u),\n })\n .optional(),\n }),\n })\n .default({ consentRequired: true, providers: {} }),\n // Server-wide hint: does this deployment support Channel-A structured services\n // at all (P4.4). Per-session availability is negotiated on /stream-capabilities\n // (it depends on the session's pinned backend); this is the coarse on/off the\n // client uses to decide whether to even attempt the fs/git/terminal panels.\n structuredServices: z\n .object({\n fileSystem: z.boolean(),\n git: z.boolean(),\n terminalEvents: z.boolean(),\n })\n .default({ fileSystem: false, git: false, terminalEvents: false }),\n }),\n);\nexport type ClientConfig = z.infer<typeof ClientConfig>;\n\nfunction base64UrlEncode(value: string): string {\n return Buffer.from(value, \"utf8\").toString(\"base64url\");\n}\n\nfunction base64UrlDecode(value: string): string {\n return Buffer.from(value, \"base64url\").toString(\"utf8\");\n}\n\nasync function hmacSha256Base64Url(secret: string, value: string): Promise<string> {\n const key = await crypto.subtle.importKey(\n \"raw\",\n new TextEncoder().encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n const signature = await crypto.subtle.sign(\"HMAC\", key, new TextEncoder().encode(value));\n return Buffer.from(signature).toString(\"base64url\");\n}\n\nfunction constantTimeEqual(actual: string, expected: string): boolean {\n const actualBytes = new TextEncoder().encode(actual);\n const expectedBytes = new TextEncoder().encode(expected);\n if (actualBytes.length !== expectedBytes.length) {\n return false;\n }\n let diff = 0;\n for (let index = 0; index < actualBytes.length; index += 1) {\n diff |= actualBytes[index]! ^ expectedBytes[index]!;\n }\n return diff === 0;\n}\n\nexport type HealthResponse = {\n service: string;\n variableSet: string;\n ok: boolean;\n};\n\n/**\n * Per-workspace model/provider availability policy (see @opengeni/db\n * workspace_model_policies). NULL fields = unrestricted; a non-null\n * allowedProviders is a strict allowlist over RESOLVED provider identities\n * (the built-in OpenAI/Azure client's id — \"openai\"/\"azure\" — including the\n * legacy null-resolution fallback; \"codex-subscription\" for the ChatGPT/Codex\n * overlay; registry providers by their declared ids); a non-null allowedModels\n * is an additional exact-model-id allowlist. Pure and shared so the API edge\n * (422) and the worker's authoritative post-resolution gate (fail-loud\n * turn.failed, never a silent remap) can never disagree on semantics.\n */\nexport type WorkspaceModelPolicyContract = {\n allowedProviders: string[] | null;\n allowedModels: string[] | null;\n};\n\nexport type WorkspaceModelPolicyVerdict =\n | { allowed: true }\n | { allowed: false; reason: \"provider\" | \"model\" };\n\nexport function evaluateWorkspaceModelPolicy(\n policy: WorkspaceModelPolicyContract | null | undefined,\n candidate: { providerId: string; modelId: string },\n): WorkspaceModelPolicyVerdict {\n if (!policy) {\n return { allowed: true };\n }\n if (policy.allowedProviders !== null && !policy.allowedProviders.includes(candidate.providerId)) {\n return { allowed: false, reason: \"provider\" };\n }\n if (policy.allowedModels !== null && !policy.allowedModels.includes(candidate.modelId)) {\n return { allowed: false, reason: \"model\" };\n }\n return { allowed: true };\n}\n\nexport * from \"./codex-fleet-policy\";\nexport * from \"./xai-provider-account-authority\";\nexport * from \"./workspace-instruction-policies\";\nexport * from \"./company-profile\";\nexport * from \"./company-brain\";\nexport * from \"./model-context-inspector\";\nexport * from \"./workspace-learning-policy\";\nexport * from \"./workspace-learning-administration\";\nexport * from \"./workspace-state\";\nexport * from \"./preference-registry\";\nexport * from \"./scoped-knowledge\";\nexport * from \"./company-brain-governed-writes\";\nexport * from \"./governed-learning-evaluator\";\nexport * from \"./governed-learning-activation\";\nexport * from \"./knowledge\";\nexport * from \"./task-notes\";\nexport * from \"./canonical-human-identities\";\nexport * from \"./organization-recovery\";\nexport * from \"./organization-membership-lifecycle\";\nexport * from \"./remember\";\nexport * from \"./agent-authored-durable-text\";\n\nexport * from \"./feedback\";\n","import { z } from \"zod\";\n\n/** Tenant scope for normalized knowledge and source provenance. */\nexport const ScopedKnowledgeScopeKind = z.enum([\"organization\", \"workspace\", \"personal\"]);\nexport type ScopedKnowledgeScopeKind = z.infer<typeof ScopedKnowledgeScopeKind>;\n\nexport const ScopedKnowledgeScope = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"organization\"),\n workspaceId: z.null(),\n subjectId: z.null(),\n }),\n z.object({\n kind: z.literal(\"workspace\"),\n workspaceId: z.string().uuid(),\n subjectId: z.null(),\n }),\n z.object({\n kind: z.literal(\"personal\"),\n workspaceId: z.string().uuid().nullable(),\n subjectId: z.string().min(1).max(1024),\n }),\n]);\nexport type ScopedKnowledgeScope = z.infer<typeof ScopedKnowledgeScope>;\n\nexport const ScopedKnowledgeActorKind = z.enum([\"human\", \"service\"]);\nexport type ScopedKnowledgeActorKind = z.infer<typeof ScopedKnowledgeActorKind>;\n\n/**\n * Immutable write provenance. A service actor may retain a causal human, but\n * the service identity never substitutes for that human on personal reads.\n */\nexport type ScopedKnowledgeActor = {\n kind: ScopedKnowledgeActorKind;\n subjectId: string;\n initiatingHumanSubjectId: string | null;\n};\n\nexport const KnowledgeLifecycleState = z.enum([\"active\", \"deleted\", \"revoked\"]);\nexport type KnowledgeLifecycleState = z.infer<typeof KnowledgeLifecycleState>;\n\nexport const KnowledgeLifecycleEventType = z.enum([\n \"deleted\",\n \"revoked\",\n \"restored\",\n \"acl_changed\",\n \"sync_succeeded\",\n \"sync_failed\",\n \"object_version_added\",\n]);\nexport type KnowledgeLifecycleEventType = z.infer<typeof KnowledgeLifecycleEventType>;\n\nexport const KnowledgeSyncRunState = z.enum([\"started\", \"succeeded\", \"failed\"]);\nexport type KnowledgeSyncRunState = z.infer<typeof KnowledgeSyncRunState>;\n\nexport const KnowledgeClaimOrigin = z.enum([\"explicit\", \"inferred\"]);\nexport type KnowledgeClaimOrigin = z.infer<typeof KnowledgeClaimOrigin>;\n\nexport const KnowledgeClaimRelationType = z.enum([\"supersedes\", \"conflicts_with\"]);\nexport type KnowledgeClaimRelationType = z.infer<typeof KnowledgeClaimRelationType>;\n\nexport const KnowledgeClaimEvidencePolarity = z.enum([\"supports\", \"contradicts\"]);\nexport type KnowledgeClaimEvidencePolarity = z.infer<typeof KnowledgeClaimEvidencePolarity>;\n\nexport const KnowledgeClaimReviewState = z.enum([\"proposed\", \"approved\", \"rejected\", \"revoked\"]);\nexport type KnowledgeClaimReviewState = z.infer<typeof KnowledgeClaimReviewState>;\n\nexport const KnowledgeFactObjectKind = z.enum([\n \"entity\",\n \"text\",\n \"number\",\n \"boolean\",\n \"json\",\n \"timestamp\",\n]);\nexport type KnowledgeFactObjectKind = z.infer<typeof KnowledgeFactObjectKind>;\n\nexport const KnowledgeChangeProposalTargetKind = z.enum([\"instruction_policy\", \"preference\"]);\nexport type KnowledgeChangeProposalTargetKind = z.infer<typeof KnowledgeChangeProposalTargetKind>;\n\nexport type KnowledgeProviderRecord = {\n id: string;\n accountId: string;\n scope: ScopedKnowledgeScope;\n providerKey: string;\n externalTenantId: string;\n lifecycleState: KnowledgeLifecycleState;\n lifecycleGeneration: number;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type KnowledgeSourceRecord = {\n id: string;\n accountId: string;\n providerId: string;\n scope: ScopedKnowledgeScope;\n externalSourceId: string;\n sourceKind: string;\n sourceUri: string | null;\n currentAclGeneration: number | null;\n syncGeneration: number;\n syncCursor: string | null;\n lifecycleState: KnowledgeLifecycleState;\n lifecycleGeneration: number;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type KnowledgeSourceAclVersionRecord = {\n id: string;\n accountId: string;\n sourceId: string;\n generation: number;\n aclVersion: string | null;\n aclHash: string;\n audience: ScopedKnowledgeScope;\n agentAccess: boolean;\n createdAt: string;\n};\n\nexport type KnowledgeSyncRunRecord = {\n id: string;\n accountId: string;\n sourceId: string;\n operationId: string;\n state: KnowledgeSyncRunState;\n inputSyncGeneration: number;\n inputLifecycleGeneration: number;\n inputCursor: string | null;\n outputCursor: string | null;\n watermark: string | null;\n metadata: Record<string, unknown>;\n errorCode: string | null;\n startedAt: string;\n completedAt: string | null;\n};\n\nexport type KnowledgeSourceObjectRecord = {\n id: string;\n accountId: string;\n sourceId: string;\n scope: ScopedKnowledgeScope;\n externalObjectId: string;\n documentId: string | null;\n lifecycleState: KnowledgeLifecycleState;\n lifecycleGeneration: number;\n versionGeneration: number;\n currentVersionId: string | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type KnowledgeDocumentVersionRecord = {\n id: string;\n accountId: string;\n sourceId: string;\n objectId: string;\n scope: ScopedKnowledgeScope;\n versionGeneration: number;\n externalVersionId: string;\n contentSha256: string;\n ingestionKey: string;\n aclVersionId: string;\n aclGeneration: number;\n documentId: string | null;\n fileId: string | null;\n createdAt: string;\n};\n\nexport type KnowledgeEntityRecord = {\n id: string;\n accountId: string;\n scope: ScopedKnowledgeScope;\n entityType: string;\n normalizedKey: string;\n displayName: string;\n createdAt: string;\n};\n\nexport type KnowledgeFactRecord = {\n id: string;\n accountId: string;\n scope: ScopedKnowledgeScope;\n subjectEntityId: string;\n predicateKey: string;\n objectKind: KnowledgeFactObjectKind;\n objectEntityId: string | null;\n objectValue: unknown | null;\n objectHash: string;\n createdAt: string;\n};\n\nexport type KnowledgeClaimRecord = {\n id: string;\n accountId: string;\n scope: ScopedKnowledgeScope;\n factId: string;\n origin: KnowledgeClaimOrigin;\n confidenceBps: number;\n effectiveAt: string;\n expiresAt: string | null;\n extractionMethod: string;\n modelProvider: string | null;\n modelName: string | null;\n modelVersion: string | null;\n createdAt: string;\n};\n\nexport type EligibleKnowledgeClaim = {\n claim: KnowledgeClaimRecord;\n fact: KnowledgeFactRecord;\n reviewState: \"approved\";\n supportingEvidenceCount: number;\n};\n\nexport type KnowledgeChangeProposalRecord = {\n id: string;\n accountId: string;\n scope: ScopedKnowledgeScope;\n targetKind: KnowledgeChangeProposalTargetKind;\n targetScope: string;\n targetKey: string | null;\n content: string;\n contentHash: string;\n claimId: string;\n evidenceId: string;\n status: \"proposed\";\n createdAt: string;\n};\n","/**\n * Canonical bounded representation for explicit session-event previews.\n *\n * Canonical session-event payloads are stored in full. This helper derives a\n * bounded monitoring/public projection without writing that projection back\n * over canonical data. It deliberately has no server-only dependency so the\n * DB, realtime transports, SDK/React, and tests can share one wire contract.\n */\n\nimport {\n retainedOutputUnavailable,\n validateRetainedOutputEvidence,\n type RetainedOutputEvidence,\n} from \"./retained-output\";\n\nexport const SESSION_EVENT_PAYLOAD_MAX_BYTES = 64 * 1024;\n\nconst TARGET_PAYLOAD_BYTES = 60 * 1024;\nconst DEFAULT_STRING_BYTES = 8 * 1024;\nconst RETRY_STRING_BYTES = 1024;\nconst DEFAULT_ARRAY_ENTRIES = 40;\nconst RETRY_ARRAY_ENTRIES = 12;\nconst DEFAULT_OBJECT_FIELDS = 80;\nconst RETRY_OBJECT_FIELDS = 32;\nconst MAX_PREVIEW_DEPTH = 12;\nconst MAX_PREVIEW_NODES = 512;\nconst MAX_MEASUREMENT_NODES = 2_048;\nconst MAX_MEASUREMENT_DEPTH = 64;\nconst MAX_DETAIL_RECORDS = 24;\nconst APPROX_BYTES_PER_TOKEN = 4;\nconst encoder = new TextEncoder();\n\nconst IDENTITY_FIELDS = new Set([\n \"id\",\n \"callId\",\n \"call_id\",\n \"name\",\n \"toolName\",\n \"type\",\n \"status\",\n \"code\",\n \"isError\",\n \"stream\",\n \"commandId\",\n \"sequence\",\n]);\n\nexport type SessionEventBoundarySurface =\n | \"durable_audit\"\n | \"database_guard\"\n | \"database_read_projection\"\n | \"http_projection\"\n | \"nats_legacy_guard\"\n | \"sse_legacy_guard\"\n | \"browser_legacy_guard\";\n\nexport type SessionEventPayloadTruncation = {\n truncated: true;\n surface: SessionEventBoundarySurface;\n reason:\n | \"payload_bytes_exceeded\"\n | \"payload_not_serializable\"\n | \"payload_measurement_bounded\"\n | \"inline_media_not_retained\"\n | \"database_guard\";\n originalBytes: number | null;\n deliveredBytes: number;\n omittedBytes: number | null;\n estimatedOriginalTokens: number | null;\n estimatedDeliveredTokens: number;\n fullEvidence: RetainedOutputEvidence;\n details: Array<{\n path: string;\n kind:\n | \"string\"\n | \"array\"\n | \"object\"\n | \"depth\"\n | \"budget\"\n | \"media\"\n | \"binary\"\n | \"unserializable\";\n originalBytes?: number;\n deliveredBytes?: number;\n omittedEntries?: number | null;\n mediaType?: string;\n }>;\n};\n\nexport type BoundSessionEventPayloadOptions = {\n surface?: SessionEventBoundarySurface;\n maxBytes?: number;\n /**\n * Separately trusted durable receipt. Producer payload fields never populate\n * this slot; invalid values fail closed to not_retained.\n */\n fullEvidence?: unknown;\n};\n\nexport type SessionEventJsonMeasurement =\n | { bytes: number; reason: null }\n | {\n bytes: null;\n reason: \"payload_not_serializable\" | \"payload_measurement_bounded\";\n };\n\nexport type SessionEventMediaPreview = {\n type: \"media_preview\";\n mediaType: string;\n inlineBytes: number | null;\n fullOutputAvailable: false;\n preview: string;\n};\n\ntype PreviewState = {\n changed: boolean;\n sawMedia: boolean;\n details: SessionEventPayloadTruncation[\"details\"];\n stringBytes: number;\n arrayEntries: number;\n objectFields: number;\n remainingNodes: number;\n};\n\n/** UTF-8 bytes used by the JSON wire/storage representation. */\nexport function sessionEventJsonBytes(value: unknown): number {\n return encoder.encode(stringifyForBoundary(value)).byteLength;\n}\n\n/**\n * Inspect a prospective event value without invoking accessors, custom\n * serializers, or allocating its complete JSON representation. A null byte\n * count is explicit: the traversal stopped at the global work/depth boundary\n * or found serialization behavior that must first be normalized.\n */\nexport function measureSessionEventJson(value: unknown): SessionEventJsonMeasurement {\n return measureJsonBytes(value);\n}\n\n/** The same deliberately coarse bytes/4 token estimate used by Codex parity code. */\nexport function approximateSessionEventTokens(bytes: number): number {\n return Math.ceil(Math.max(0, bytes) / APPROX_BYTES_PER_TOKEN);\n}\n\n/** Truthful audit fact for inline media whose source bytes are not durably retained. */\nexport function sessionEventMediaPreview(\n mediaType: string,\n inlineBytes: number | null,\n): SessionEventMediaPreview {\n return {\n type: \"media_preview\",\n mediaType: mediaType || \"application/octet-stream\",\n inlineBytes:\n inlineBytes === null\n ? null\n : Math.max(0, Math.floor(Number.isFinite(inlineBytes) ? inlineBytes : 0)),\n fullOutputAvailable: false,\n preview: \"Inline media omitted from the audit timeline; source bytes were not retained.\",\n };\n}\n\n/** Parse a base64 data URL into a compact audit fact without decoding/copying its bytes. */\nexport function sessionEventMediaPreviewFromDataUrl(\n value: string,\n): SessionEventMediaPreview | null {\n const match = /^data:([^;,]+)(?:;[^,]*)?;base64,/i.exec(value);\n if (!match) return null;\n const encodedLength = Math.max(0, value.length - match[0].length);\n const padding = value.endsWith(\"==\") ? 2 : value.endsWith(\"=\") ? 1 : 0;\n return sessionEventMediaPreview(\n match[1] ?? \"application/octet-stream\",\n Math.max(0, Math.floor((encodedLength * 3) / 4) - padding),\n );\n}\n\n/** Read explicit truncation metadata from a bounded object payload. */\nexport function sessionEventPayloadTruncation(\n payload: unknown,\n): SessionEventPayloadTruncation | null {\n if (!isPlainRecord(payload)) return null;\n const value = payload.truncation;\n if (!isPlainRecord(value) || value.truncated !== true) return null;\n return value as SessionEventPayloadTruncation;\n}\n\n/**\n * Return a byte-bounded preview payload. Unchanged ordinary payloads retain their\n * reference. Oversized strings/containers get deterministic head+tail previews;\n * inline images/binary values become metadata because `session_events` does not\n * durably retain their source bytes as independently retrievable evidence.\n */\nexport function boundSessionEventPayload<T>(\n payload: T,\n options: BoundSessionEventPayloadOptions = {},\n): T {\n const maxBytes = Math.max(1024, Math.floor(options.maxBytes ?? SESSION_EVENT_PAYLOAD_MAX_BYTES));\n const surface = options.surface ?? \"durable_audit\";\n const fullEvidence =\n validateRetainedOutputEvidence(options.fullEvidence) ?? retainedOutputUnavailable();\n const originalMeasurement = measureJsonBytes(payload);\n const originalBytes = originalMeasurement.bytes;\n\n let state = previewState(DEFAULT_STRING_BYTES, DEFAULT_ARRAY_ENTRIES, DEFAULT_OBJECT_FIELDS);\n let preview = previewValue(payload, state, \"$\", 0);\n if (!state.changed && originalBytes !== null && originalBytes <= maxBytes) {\n return payload;\n }\n\n let reason = payloadTruncationReason(originalMeasurement, state);\n let bounded = attachTruncation(\n preview,\n boundaryMetadata(surface, reason, originalBytes, state, fullEvidence),\n );\n\n if (sessionEventJsonBytes(bounded) > Math.min(maxBytes, TARGET_PAYLOAD_BYTES)) {\n state = previewState(RETRY_STRING_BYTES, RETRY_ARRAY_ENTRIES, RETRY_OBJECT_FIELDS);\n preview = previewValue(payload, state, \"$\", 0);\n reason = payloadTruncationReason(originalMeasurement, state);\n bounded = attachTruncation(\n preview,\n boundaryMetadata(surface, reason, originalBytes, state, fullEvidence),\n );\n }\n\n if (sessionEventJsonBytes(bounded) > maxBytes) {\n const identity = identityPreview(payload);\n state.changed = true;\n recordDetail(state, {\n path: \"$\",\n kind: \"object\",\n ...(originalBytes === null ? {} : { originalBytes }),\n });\n bounded = attachTruncation(\n {\n ...identity,\n preview: \"[event payload omitted: bounded audit preview exceeded the storage envelope]\",\n },\n boundaryMetadata(surface, reason, originalBytes, state, fullEvidence),\n );\n }\n\n settleDeliveredSizes(bounded, maxBytes);\n return bounded as T;\n}\n\nfunction previewState(\n stringBytes: number,\n arrayEntries: number,\n objectFields: number,\n): PreviewState {\n return {\n changed: false,\n sawMedia: false,\n details: [],\n stringBytes,\n arrayEntries,\n objectFields,\n remainingNodes: MAX_PREVIEW_NODES,\n };\n}\n\nfunction payloadTruncationReason(\n measurement: JsonMeasurement,\n state: PreviewState,\n): SessionEventPayloadTruncation[\"reason\"] {\n if (state.sawMedia) return \"inline_media_not_retained\";\n return measurement.bytes === null ? measurement.reason : \"payload_bytes_exceeded\";\n}\n\nfunction previewValue(value: unknown, state: PreviewState, path: string, depth: number): unknown {\n if (state.remainingNodes <= 0) {\n state.changed = true;\n recordDetail(state, { path, kind: \"budget\" });\n return \"[nested value omitted at audit preview traversal boundary]\";\n }\n state.remainingNodes -= 1;\n if (typeof value === \"string\") {\n const media = inlineMediaFact(value);\n if (media) {\n state.changed = true;\n state.sawMedia = true;\n recordDetail(state, {\n path,\n kind: \"media\",\n originalBytes: utf8Bytes(value),\n deliveredBytes: sessionEventJsonBytes(media),\n mediaType: media.mediaType,\n });\n return media;\n }\n const originalBytes = utf8Bytes(value);\n if (originalBytes <= state.stringBytes) return value;\n state.changed = true;\n const delivered = truncateUtf8Middle(value, state.stringBytes, originalBytes);\n recordDetail(state, {\n path,\n kind: \"string\",\n originalBytes,\n deliveredBytes: utf8Bytes(delivered),\n });\n return delivered;\n }\n if (typeof value === \"bigint\" || typeof value === \"function\" || typeof value === \"symbol\") {\n state.changed = true;\n recordDetail(state, { path, kind: \"unserializable\" });\n return `[${typeof value} value omitted at audit serialization boundary]`;\n }\n if (value === null || typeof value !== \"object\") return value;\n\n const binary = binaryFact(value);\n if (binary) {\n state.changed = true;\n recordDetail(state, {\n path,\n kind: \"binary\",\n originalBytes: binary.originalBytes,\n deliveredBytes: sessionEventJsonBytes(binary.preview),\n });\n return binary.preview;\n }\n\n if (depth >= MAX_PREVIEW_DEPTH) {\n state.changed = true;\n recordDetail(state, { path, kind: \"depth\" });\n return \"[nested value omitted at audit preview depth boundary]\";\n }\n\n if (Array.isArray(value)) {\n const keep = Math.max(2, state.arrayEntries);\n if (value.length <= keep) {\n return Array.from({ length: value.length }, (_, index) =>\n previewArrayEntry(value, index, state, path, depth),\n );\n }\n state.changed = true;\n const head = Math.ceil(keep / 2);\n const tail = Math.floor(keep / 2);\n const omitted = value.length - head - tail;\n recordDetail(state, { path, kind: \"array\", omittedEntries: omitted });\n return [\n ...Array.from({ length: head }, (_, index) =>\n previewArrayEntry(value, index, state, path, depth),\n ),\n { omittedEntries: omitted, preview: \"[middle array entries omitted]\" },\n ...Array.from({ length: tail }, (_, index) =>\n previewArrayEntry(value, value.length - tail + index, state, path, depth),\n ),\n ];\n }\n\n if (value instanceof Date) {\n if (!hasCanonicalDateSerialization(value)) {\n state.changed = true;\n recordDetail(state, { path, kind: \"unserializable\" });\n return \"[Date value with custom serialization omitted at audit boundary]\";\n }\n try {\n const epoch = Date.prototype.getTime.call(value);\n return Number.isFinite(epoch) ? Date.prototype.toISOString.call(value) : null;\n } catch {\n state.changed = true;\n recordDetail(state, { path, kind: \"unserializable\" });\n return \"[Date value omitted at audit serialization boundary]\";\n }\n }\n\n const record = value as Record<string, unknown>;\n const { entries, omitted, accessorKeys } = selectObjectEntries(record, state.objectFields);\n for (const key of accessorKeys) {\n state.changed = true;\n recordDetail(state, {\n path: `${path}.${key}`,\n kind: \"unserializable\",\n });\n }\n if (omitted) {\n state.changed = true;\n recordDetail(state, {\n path,\n kind: \"object\",\n // Counting every remaining field would defeat the traversal bound. `null`\n // is deliberate: at least one field was omitted, but its exact count is\n // unknown because the source was not fully enumerated.\n omittedEntries: null,\n });\n }\n const out: Record<string, unknown> = {};\n for (const [key, entry] of entries) {\n out[key] = previewValue(entry, state, `${path}.${key}`, depth + 1);\n }\n if (omitted) {\n out.omittedFields = \"additional fields omitted; exact count not measured\";\n }\n return out;\n}\n\nfunction previewArrayEntry(\n value: unknown[],\n index: number,\n state: PreviewState,\n path: string,\n depth: number,\n): unknown {\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n } catch {\n state.changed = true;\n recordDetail(state, { path: `${path}[${index}]`, kind: \"unserializable\" });\n return \"[array element omitted at audit serialization boundary]\";\n }\n if (descriptor && !(\"value\" in descriptor)) {\n state.changed = true;\n recordDetail(state, { path: `${path}[${index}]`, kind: \"unserializable\" });\n return \"[array accessor value omitted at audit serialization boundary]\";\n }\n return previewValue(\n descriptor && \"value\" in descriptor ? descriptor.value : undefined,\n state,\n `${path}[${index}]`,\n depth + 1,\n );\n}\n\nfunction selectObjectEntries(\n record: Record<string, unknown>,\n maxFields: number,\n): {\n entries: Array<[string, unknown]>;\n omitted: boolean;\n accessorKeys: string[];\n} {\n const entries: Array<[string, unknown]> = [];\n const selected = new Set<string>();\n const accessorKeys: string[] = [];\n const select = (key: string): boolean => {\n const descriptor = Object.getOwnPropertyDescriptor(record, key);\n if (!descriptor?.enumerable) return false;\n selected.add(key);\n if (\"value\" in descriptor) {\n entries.push([key, descriptor.value]);\n } else {\n entries.push([key, \"[accessor value omitted at audit serialization boundary]\"]);\n accessorKeys.push(key);\n }\n return true;\n };\n try {\n for (const key of IDENTITY_FIELDS) {\n if (entries.length >= maxFields) break;\n select(key);\n }\n for (const key in record) {\n if (!Object.prototype.hasOwnProperty.call(record, key) || selected.has(key)) continue;\n if (entries.length >= maxFields) {\n return { entries, omitted: true, accessorKeys };\n }\n select(key);\n }\n } catch {\n return { entries, omitted: true, accessorKeys };\n }\n return { entries, omitted: false, accessorKeys };\n}\n\nfunction attachTruncation(\n preview: unknown,\n truncation: SessionEventPayloadTruncation,\n): Record<string, unknown> {\n if (isPlainRecord(preview)) {\n // `truncation` is reserved boundary metadata. A producer-supplied value is\n // intentionally replaced when the boundary actually omits content.\n return { ...preview, truncation };\n }\n return { value: preview, truncation };\n}\n\nfunction boundaryMetadata(\n surface: SessionEventBoundarySurface,\n reason: SessionEventPayloadTruncation[\"reason\"],\n originalBytes: number | null,\n state: PreviewState,\n fullEvidence: RetainedOutputEvidence,\n): SessionEventPayloadTruncation {\n return {\n truncated: true,\n surface,\n reason,\n originalBytes,\n deliveredBytes: 0,\n omittedBytes: originalBytes,\n estimatedOriginalTokens:\n originalBytes === null ? null : approximateSessionEventTokens(originalBytes),\n estimatedDeliveredTokens: 0,\n fullEvidence,\n details: state.details,\n };\n}\n\nfunction settleDeliveredSizes(payload: Record<string, unknown>, maxBytes: number): void {\n const truncation = payload.truncation as SessionEventPayloadTruncation;\n convergeDeliveredSizes(payload, truncation);\n // This should only be reachable when a caller supplies an unusually tiny\n // custom maxBytes. Preserve explicit metadata over an accidental overshoot.\n if (sessionEventJsonBytes(payload) > maxBytes) {\n payload.preview = \"[event payload omitted at audit byte boundary]\";\n for (const key of Object.keys(payload)) {\n if (key !== \"preview\" && key !== \"truncation\" && IDENTITY_FIELDS.has(key) === false) {\n delete payload[key];\n }\n }\n truncation.details = truncation.details.slice(0, 4);\n convergeDeliveredSizes(payload, truncation);\n }\n}\n\nfunction convergeDeliveredSizes(\n payload: Record<string, unknown>,\n truncation: SessionEventPayloadTruncation,\n): void {\n for (let attempt = 0; attempt < 16; attempt += 1) {\n const deliveredBytes = sessionEventJsonBytes(payload);\n const omittedBytes =\n truncation.originalBytes === null\n ? null\n : Math.max(0, truncation.originalBytes - deliveredBytes);\n const estimatedDeliveredTokens = approximateSessionEventTokens(deliveredBytes);\n if (\n truncation.deliveredBytes === deliveredBytes &&\n truncation.omittedBytes === omittedBytes &&\n truncation.estimatedDeliveredTokens === estimatedDeliveredTokens\n ) {\n return;\n }\n truncation.deliveredBytes = deliveredBytes;\n truncation.omittedBytes = omittedBytes;\n truncation.estimatedDeliveredTokens = estimatedDeliveredTokens;\n }\n throw new RangeError(\"Session event byte accounting did not converge\");\n}\n\nfunction recordDetail(\n state: PreviewState,\n detail: SessionEventPayloadTruncation[\"details\"][number],\n): void {\n if (state.details.length < MAX_DETAIL_RECORDS) state.details.push(detail);\n}\n\nfunction identityPreview(value: unknown): Record<string, unknown> {\n if (!isPlainRecord(value)) return {};\n const out: Record<string, unknown> = {};\n for (const key of IDENTITY_FIELDS) {\n let field: unknown;\n try {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!descriptor?.enumerable || !(\"value\" in descriptor)) continue;\n field = descriptor.value;\n } catch {\n continue;\n }\n if (typeof field === \"string\") {\n out[key] = truncateUtf8Middle(field, 256, utf8Bytes(field));\n } else if (typeof field === \"number\" || typeof field === \"boolean\" || field === null) {\n out[key] = field;\n }\n }\n return out;\n}\n\nfunction inlineMediaFact(value: string): SessionEventMediaPreview | null {\n return sessionEventMediaPreviewFromDataUrl(value);\n}\n\nfunction binaryFact(value: object): {\n originalBytes: number;\n preview: {\n type: \"binary_preview\";\n byteLength: number;\n fullOutputAvailable: false;\n preview: string;\n };\n} | null {\n if (ArrayBuffer.isView(value)) {\n return {\n originalBytes: value.byteLength,\n preview: {\n type: \"binary_preview\",\n byteLength: value.byteLength,\n fullOutputAvailable: false,\n preview: \"Inline binary value omitted from the audit timeline; bytes were not retained.\",\n },\n };\n }\n if (value instanceof ArrayBuffer) {\n return {\n originalBytes: value.byteLength,\n preview: {\n type: \"binary_preview\",\n byteLength: value.byteLength,\n fullOutputAvailable: false,\n preview: \"Inline binary value omitted from the audit timeline; bytes were not retained.\",\n },\n };\n }\n return null;\n}\n\nfunction truncateUtf8Middle(\n value: string,\n maxBytes: number,\n knownBytes = utf8Bytes(value),\n): string {\n if (knownBytes <= maxBytes) return value;\n let omittedBytes = Math.max(0, knownBytes - maxBytes);\n for (let attempt = 0; attempt < 4; attempt += 1) {\n const marker = `…[${omittedBytes} bytes omitted]…`;\n const contentBudget = Math.max(0, maxBytes - utf8Bytes(marker));\n if (contentBudget === 0) return marker;\n const left = utf8Prefix(value, Math.floor(contentBudget / 2));\n const right = utf8Suffix(value, contentBudget - left.bytes);\n const exactOmittedBytes = Math.max(0, knownBytes - left.bytes - right.bytes);\n if (exactOmittedBytes === omittedBytes) {\n return `${value.slice(0, left.end)}${marker}${value.slice(right.start)}`;\n }\n omittedBytes = exactOmittedBytes;\n }\n\n const marker = `…[${omittedBytes} bytes omitted]…`;\n const contentBudget = Math.max(0, maxBytes - utf8Bytes(marker));\n const left = utf8Prefix(value, Math.floor(contentBudget / 2));\n const right = utf8Suffix(value, contentBudget - left.bytes);\n return `${value.slice(0, left.end)}${marker}${value.slice(right.start)}`;\n}\n\nfunction utf8Prefix(value: string, maxBytes: number): { end: number; bytes: number } {\n let end = 0;\n let bytes = 0;\n while (end < value.length) {\n const unit = utf8UnitAt(value, end);\n if (bytes + unit.bytes > maxBytes) break;\n bytes += unit.bytes;\n end += unit.codeUnits;\n }\n return { end, bytes };\n}\n\nfunction utf8Suffix(value: string, maxBytes: number): { start: number; bytes: number } {\n let start = value.length;\n let bytes = 0;\n while (start > 0) {\n const unit = utf8UnitBefore(value, start);\n if (bytes + unit.bytes > maxBytes) break;\n bytes += unit.bytes;\n start -= unit.codeUnits;\n }\n return { start, bytes };\n}\n\nfunction utf8UnitAt(value: string, index: number): { codeUnits: number; bytes: number } {\n const code = value.charCodeAt(index);\n if (code <= 0x7f) return { codeUnits: 1, bytes: 1 };\n if (code <= 0x7ff) return { codeUnits: 1, bytes: 2 };\n if (code >= 0xd800 && code <= 0xdbff) {\n const next = index + 1 < value.length ? value.charCodeAt(index + 1) : 0;\n if (next >= 0xdc00 && next <= 0xdfff) {\n return { codeUnits: 2, bytes: 4 };\n }\n }\n return { codeUnits: 1, bytes: 3 };\n}\n\nfunction utf8UnitBefore(value: string, end: number): { codeUnits: number; bytes: number } {\n const code = value.charCodeAt(end - 1);\n if (code >= 0xdc00 && code <= 0xdfff && end >= 2) {\n const previous = value.charCodeAt(end - 2);\n if (previous >= 0xd800 && previous <= 0xdbff) {\n return { codeUnits: 2, bytes: 4 };\n }\n }\n if (code <= 0x7f) return { codeUnits: 1, bytes: 1 };\n if (code <= 0x7ff) return { codeUnits: 1, bytes: 2 };\n return { codeUnits: 1, bytes: 3 };\n}\n\nfunction utf8Bytes(value: string): number {\n let bytes = 0;\n for (let index = 0; index < value.length;) {\n const unit = utf8UnitAt(value, index);\n bytes += unit.bytes;\n index += unit.codeUnits;\n }\n return bytes;\n}\n\n/**\n * Count the JSON wire bytes without first allocating the complete JSON string.\n * A global node budget prevents an adversarial broad graph from moving the\n * durable 64 KiB bound into an unbounded measurement pass. `null` means exact\n * source size is unknown; callers expose that truth instead of measuring a\n * placeholder or claiming a lower bound is exact.\n */\ntype JsonMeasurement = SessionEventJsonMeasurement;\n\nfunction measureJsonBytes(value: unknown): JsonMeasurement {\n const state: JsonMeasurementState = {\n remainingNodes: MAX_MEASUREMENT_NODES,\n seen: new WeakSet<object>(),\n failureReason: null,\n };\n try {\n const bytes = measureJsonValue(value, state, \"top\", 0);\n return bytes === null\n ? {\n bytes: null,\n reason: state.failureReason ?? \"payload_measurement_bounded\",\n }\n : { bytes, reason: null };\n } catch {\n return { bytes: null, reason: \"payload_measurement_bounded\" };\n }\n}\n\ntype JsonMeasurementState = {\n remainingNodes: number;\n seen: WeakSet<object>;\n failureReason: \"payload_not_serializable\" | \"payload_measurement_bounded\" | null;\n};\n\nfunction measureJsonValue(\n value: unknown,\n state: JsonMeasurementState,\n position: \"top\" | \"array\" | \"object\",\n depth: number,\n): number | null {\n if (state.remainingNodes <= 0 || depth > MAX_MEASUREMENT_DEPTH) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n state.remainingNodes -= 1;\n if (value === null) return 4;\n if (typeof value === \"string\") return jsonStringBytes(value);\n if (typeof value === \"boolean\") return value ? 4 : 5;\n if (typeof value === \"number\") {\n const serialized = JSON.stringify(value);\n return serialized === undefined ? null : serialized.length;\n }\n if (typeof value === \"undefined\" || typeof value === \"function\" || typeof value === \"symbol\") {\n return position === \"array\" ? 4 : failJsonMeasurement(state, \"payload_not_serializable\");\n }\n if (typeof value === \"bigint\") {\n return failJsonMeasurement(state, \"payload_not_serializable\");\n }\n if (typeof value !== \"object\") {\n return failJsonMeasurement(state, \"payload_not_serializable\");\n }\n if (value instanceof Date) {\n if (!hasCanonicalDateSerialization(value)) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n try {\n const epoch = Date.prototype.getTime.call(value);\n return Number.isFinite(epoch) ? jsonStringBytes(Date.prototype.toISOString.call(value)) : 4;\n } catch {\n return failJsonMeasurement(state, \"payload_not_serializable\");\n }\n }\n if (ArrayBuffer.isView(value) || value instanceof ArrayBuffer) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n if (state.seen.has(value)) {\n return failJsonMeasurement(state, \"payload_not_serializable\");\n }\n state.seen.add(value);\n try {\n if (Array.isArray(value)) {\n if (Object.getPrototypeOf(value) !== Array.prototype) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n const toJson = Object.getOwnPropertyDescriptor(value, \"toJSON\");\n if (toJson && (\"get\" in toJson || typeof toJson.value === \"function\")) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n if (value.length > state.remainingNodes) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n let bytes = 2;\n for (let index = 0; index < value.length; index += 1) {\n if (index > 0) bytes += 1;\n const descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n if (descriptor && !(\"value\" in descriptor)) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n const entry = descriptor && \"value\" in descriptor ? descriptor.value : undefined;\n const measured = measureJsonValue(entry, state, \"array\", depth + 1);\n if (measured === null) return null;\n bytes += measured;\n }\n return bytes;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n const toJson = Object.getOwnPropertyDescriptor(value, \"toJSON\");\n if (toJson && (\"get\" in toJson || typeof toJson.value === \"function\")) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n let bytes = 2;\n let fields = 0;\n try {\n for (const key in value as Record<string, unknown>) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) continue;\n if (state.remainingNodes <= 0) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n // A property consumes traversal work even when JSON.stringify would\n // omit its value. Without this decrement a broad object containing\n // only undefined/functions/symbols bypasses the global node budget.\n state.remainingNodes -= 1;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!descriptor || !(\"value\" in descriptor)) {\n return failJsonMeasurement(state, \"payload_measurement_bounded\");\n }\n const entry = descriptor.value;\n if (\n typeof entry === \"undefined\" ||\n typeof entry === \"function\" ||\n typeof entry === \"symbol\"\n ) {\n continue;\n }\n const measured = measureJsonValue(entry, state, \"object\", depth + 1);\n if (measured === null) return null;\n if (fields > 0) bytes += 1;\n bytes += jsonStringBytes(key) + 1 + measured;\n fields += 1;\n }\n } catch {\n return null;\n }\n return bytes;\n } finally {\n state.seen.delete(value);\n }\n}\n\nfunction hasCanonicalDateSerialization(value: Date): boolean {\n try {\n if (Object.getPrototypeOf(value) !== Date.prototype) return false;\n // JSON.stringify performs an ordinary property lookup for toJSON. Any own\n // shadow (data or accessor) changes that behavior and must not be invoked.\n return Object.getOwnPropertyDescriptor(value, \"toJSON\") === undefined;\n } catch {\n return false;\n }\n}\n\nfunction failJsonMeasurement(\n state: JsonMeasurementState,\n reason: Exclude<JsonMeasurement, { bytes: number }>[\"reason\"],\n): null {\n state.failureReason ??= reason;\n return null;\n}\n\nfunction jsonStringBytes(value: string): number {\n let bytes = 2;\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (\n code === 0x22 ||\n code === 0x5c ||\n code === 0x08 ||\n code === 0x09 ||\n code === 0x0a ||\n code === 0x0c ||\n code === 0x0d\n ) {\n bytes += 2;\n } else if (code <= 0x1f) {\n bytes += 6;\n } else if (code <= 0x7f) {\n bytes += 1;\n } else if (code <= 0x7ff) {\n bytes += 2;\n } else if (code >= 0xd800 && code <= 0xdbff) {\n const next = index + 1 < value.length ? value.charCodeAt(index + 1) : 0;\n if (next >= 0xdc00 && next <= 0xdfff) {\n bytes += 4;\n index += 1;\n } else {\n // JSON.stringify escapes lone surrogates as six ASCII bytes.\n bytes += 6;\n }\n } else if (code >= 0xdc00 && code <= 0xdfff) {\n bytes += 6;\n } else {\n bytes += 3;\n }\n }\n return bytes;\n}\n\nfunction serializeForBoundary(value: unknown): {\n value: string;\n serializable: boolean;\n} {\n try {\n const serialized = JSON.stringify(value);\n return {\n value: serialized === undefined ? \"null\" : serialized,\n serializable: serialized !== undefined,\n };\n } catch {\n return {\n value: JSON.stringify(\"[unserializable event payload omitted]\"),\n serializable: false,\n };\n }\n}\n\nfunction stringifyForBoundary(value: unknown): string {\n return serializeForBoundary(value).value;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n","import { z } from \"zod\";\n\nexport const MemorySlackImportance = z.enum([\"major\", \"normal\", \"minor\"]);\nexport type MemorySlackImportance = z.infer<typeof MemorySlackImportance>;\n\nexport const MemorySlackRequestedMode = z.enum([\"auto\", \"review\", \"never\"]);\nexport type MemorySlackRequestedMode = z.infer<typeof MemorySlackRequestedMode>;\n\nexport const MemorySlackPublicationDistribution = z\n .object({\n importance: MemorySlackImportance,\n audience: z.literal(\"workspace\"),\n slackMode: MemorySlackRequestedMode,\n shareSummary: z.string().trim().min(1).max(4_096),\n })\n .strict();\nexport type MemorySlackPublicationDistribution = z.infer<typeof MemorySlackPublicationDistribution>;\n\nexport const MemorySlackPublicationConfiguration = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n revision: z.number().int().positive(),\n enabled: z.boolean(),\n connectionId: z.string().uuid().nullable(),\n slackTeamId: z.string().min(1).max(64).nullable(),\n slackChannelId: z.string().min(1).max(64).nullable(),\n slackChannelName: z.string().min(1).max(256).nullable(),\n autoImportances: z.array(MemorySlackImportance).max(3),\n reviewImportances: z.array(MemorySlackImportance).max(3),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string(),\n});\nexport type MemorySlackPublicationConfiguration = z.infer<\n typeof MemorySlackPublicationConfiguration\n>;\n\nexport const UpdateMemorySlackPublicationConfigurationRequest = z\n .object({\n expectedRevision: z.number().int().nonnegative(),\n enabled: z.boolean(),\n connectionId: z.string().uuid().nullable(),\n slackChannelId: z.string().trim().min(1).max(64).nullable(),\n slackChannelName: z.string().trim().min(1).max(256).nullable(),\n autoImportances: z.array(MemorySlackImportance).max(3),\n reviewImportances: z.array(MemorySlackImportance).max(3),\n })\n .strict()\n .superRefine((value, context) => {\n const overlap = value.autoImportances.filter((importance) =>\n value.reviewImportances.includes(importance),\n );\n if (overlap.length > 0) {\n context.addIssue({\n code: \"custom\",\n message: \"auto and review importance policies must not overlap\",\n path: [\"reviewImportances\"],\n });\n }\n if (value.enabled && (!value.connectionId || !value.slackChannelId)) {\n context.addIssue({\n code: \"custom\",\n message: \"an enabled Slack publication configuration requires a connection and channel\",\n });\n }\n });\nexport type UpdateMemorySlackPublicationConfigurationRequest = z.infer<\n typeof UpdateMemorySlackPublicationConfigurationRequest\n>;\n\nexport const MemorySlackPublicationConfigurationResponse = z.object({\n current: MemorySlackPublicationConfiguration.nullable(),\n history: z.array(MemorySlackPublicationConfiguration).max(100),\n});\nexport type MemorySlackPublicationConfigurationResponse = z.infer<\n typeof MemorySlackPublicationConfigurationResponse\n>;\n\nexport const MemorySlackPublicationState = z.enum([\n \"review_pending\",\n \"queued\",\n \"delivering\",\n \"retry_wait\",\n \"delivered\",\n \"rejected\",\n \"failed\",\n \"cancelled\",\n]);\nexport type MemorySlackPublicationState = z.infer<typeof MemorySlackPublicationState>;\n\nexport const MemorySlackPublicationReceiptKind = z.enum([\n \"enqueued\",\n \"review_approved\",\n \"review_rejected\",\n \"delivery_claimed\",\n \"retry_scheduled\",\n \"delivered\",\n \"failed\",\n \"cancelled\",\n \"manual_retry\",\n]);\nexport type MemorySlackPublicationReceiptKind = z.infer<typeof MemorySlackPublicationReceiptKind>;\n\nexport const MemorySlackPublicationReceipt = z.object({\n id: z.string().uuid(),\n publicationId: z.string().uuid(),\n sequence: z.number().int().positive(),\n kind: MemorySlackPublicationReceiptKind,\n state: MemorySlackPublicationState,\n attemptNumber: z.number().int().nonnegative(),\n actorKind: z.enum([\"human\", \"agent\", \"service\"]),\n actorSubjectId: z.string().min(1).max(1_024),\n operationId: z.string().uuid(),\n errorCode: z.string().min(1).max(128).nullable(),\n retryAt: z.string().nullable(),\n slackChannelId: z.string().min(1).max(64).nullable(),\n slackMessageTimestamp: z.string().min(1).max(64).nullable(),\n createdAt: z.string(),\n});\nexport type MemorySlackPublicationReceipt = z.infer<typeof MemorySlackPublicationReceipt>;\n\nexport const MemorySlackPublication = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n configurationRevision: z.number().int().positive(),\n connectionId: z.string().uuid(),\n slackTeamId: z.string().min(1).max(64),\n slackChannelId: z.string().min(1).max(64),\n sourceType: z.enum([\"workspace_memory\", \"durable_learning\"]),\n sourceId: z.string().min(1).max(1_024),\n sourceVersion: z.string().min(1).max(512).nullable(),\n importance: MemorySlackImportance,\n deliveryMode: z.enum([\"auto\", \"review\"]),\n state: MemorySlackPublicationState,\n summary: z.string().max(512),\n sourceLabel: z.string().max(128),\n authoritativePath: z.string().max(2_048).nullable(),\n initiatorKind: z.enum([\"human\", \"agent\", \"service\"]),\n initiatorSubjectId: z.string().min(1).max(1_024),\n initiatingHumanSubjectId: z.string().min(1).max(1_024).nullable(),\n attemptCount: z.number().int().nonnegative(),\n retryAt: z.string().nullable(),\n lastErrorCode: z.string().min(1).max(128).nullable(),\n slackMessageTimestamp: z.string().min(1).max(64).nullable(),\n deliveredAt: z.string().nullable(),\n terminalAt: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n receipts: z.array(MemorySlackPublicationReceipt).max(100),\n});\nexport type MemorySlackPublication = z.infer<typeof MemorySlackPublication>;\n\nexport const MemorySlackPublicationHistoryResponse = z.object({\n publications: z.array(MemorySlackPublication).max(100),\n nextCursor: z.string().uuid().nullable(),\n});\nexport type MemorySlackPublicationHistoryResponse = z.infer<\n typeof MemorySlackPublicationHistoryResponse\n>;\n\nexport const MemorySlackPublicationActionRequest = z\n .object({\n action: z.enum([\"approve\", \"reject\", \"retry\"]),\n expectedState: MemorySlackPublicationState,\n })\n .strict();\nexport type MemorySlackPublicationActionRequest = z.infer<\n typeof MemorySlackPublicationActionRequest\n>;\n\nexport const SlackPublicationChannel = z.object({\n id: z.string().min(1).max(64),\n name: z.string().min(1).max(256).nullable(),\n isPrivate: z.boolean(),\n});\nexport type SlackPublicationChannel = z.infer<typeof SlackPublicationChannel>;\n\nexport const SlackPublicationChannelListResponse = z.object({\n channels: z.array(SlackPublicationChannel).max(200),\n nextCursor: z.string().max(1_024).nullable(),\n});\nexport type SlackPublicationChannelListResponse = z.infer<\n typeof SlackPublicationChannelListResponse\n>;\n","import { z } from \"zod\";\n\nexport const WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS = 262_144;\nexport const WORKSPACE_INSTRUCTION_POLICY_PROMPT_MAX_UTF8_BYTES = 131_072;\nexport const WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS = 4_096;\nexport const WORKSPACE_INSTRUCTION_POLICY_ROLE_KEY_MAX_CHARS = 64;\nexport const WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS = 512;\nexport const WORKSPACE_INSTRUCTION_POLICY_ONBOARDING_SOURCE_VERSION_MAX_CHARS = 256;\n\nexport const WorkspaceInstructionPolicyKind = z.enum([\"charter\", \"policy\"]);\nexport type WorkspaceInstructionPolicyKind = z.infer<typeof WorkspaceInstructionPolicyKind>;\n\nexport const WorkspaceInstructionPolicyScope = z.enum([\"global\", \"role\"]);\nexport type WorkspaceInstructionPolicyScope = z.infer<typeof WorkspaceInstructionPolicyScope>;\n\nexport const WorkspaceInstructionPolicyProvenanceSource = z.enum([\n \"human\",\n \"onboarding\",\n \"knowledge_proposal\",\n \"legacy_import\",\n]);\nexport type WorkspaceInstructionPolicyProvenanceSource = z.infer<\n typeof WorkspaceInstructionPolicyProvenanceSource\n>;\n\nexport const WorkspaceInstructionPolicyDraftProvenanceSource = z.enum([\n \"human\",\n \"onboarding\",\n \"knowledge_proposal\",\n]);\nexport type WorkspaceInstructionPolicyDraftProvenanceSource = z.infer<\n typeof WorkspaceInstructionPolicyDraftProvenanceSource\n>;\n\nexport const WorkspaceInstructionPolicyActivationType = z.enum([\"activate\", \"rollback\"]);\nexport type WorkspaceInstructionPolicyActivationType = z.infer<\n typeof WorkspaceInstructionPolicyActivationType\n>;\n\nexport const WorkspaceInstructionPolicyRoleKey = z\n .string()\n .min(1)\n .max(WORKSPACE_INSTRUCTION_POLICY_ROLE_KEY_MAX_CHARS)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/);\nexport type WorkspaceInstructionPolicyRoleKey = z.infer<typeof WorkspaceInstructionPolicyRoleKey>;\n\n/**\n * Role-policy keys are identifiers rather than display names. Normalize once\n * at ingress so activation uniqueness and every client use the same key.\n */\nexport function normalizeWorkspaceInstructionPolicyRoleKey(value: string): string {\n return value.normalize(\"NFKC\").trim().toLowerCase().replace(/\\s+/gu, \"-\").replace(/-+/g, \"-\");\n}\n\nexport const WorkspaceInstructionPolicyRoleKeyInput = z\n .string()\n .transform(normalizeWorkspaceInstructionPolicyRoleKey)\n .pipe(WorkspaceInstructionPolicyRoleKey);\nexport type WorkspaceInstructionPolicyRoleKeyInput = z.infer<\n typeof WorkspaceInstructionPolicyRoleKeyInput\n>;\n\nexport const WorkspaceInstructionPolicyRoleSource = z.enum([\n \"session_binding\",\n \"metadata_fallback\",\n \"none\",\n \"invalid_metadata_fallback\",\n]);\nexport type WorkspaceInstructionPolicyRoleSource = z.infer<\n typeof WorkspaceInstructionPolicyRoleSource\n>;\n\nconst targetShape = {\n kind: WorkspaceInstructionPolicyKind,\n scope: WorkspaceInstructionPolicyScope,\n roleKey: WorkspaceInstructionPolicyRoleKey.nullable(),\n};\n\nfunction validateTarget(\n value: {\n kind: WorkspaceInstructionPolicyKind;\n scope: WorkspaceInstructionPolicyScope;\n roleKey: string | null;\n },\n context: z.RefinementCtx,\n): void {\n if (value.kind === \"charter\" && (value.scope !== \"global\" || value.roleKey !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"scope\"],\n message: \"a charter must use global scope with no role key\",\n });\n }\n if (value.scope === \"global\" && value.roleKey !== null) {\n context.addIssue({\n code: \"custom\",\n path: [\"roleKey\"],\n message: \"a global instruction policy must not have a role key\",\n });\n }\n if (value.scope === \"role\" && (value.kind !== \"policy\" || value.roleKey === null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"roleKey\"],\n message: \"role scope requires a policy and a normalized role key\",\n });\n }\n}\n\nexport const WorkspaceInstructionPolicyTarget = z.object(targetShape).superRefine(validateTarget);\nexport type WorkspaceInstructionPolicyTarget = z.infer<typeof WorkspaceInstructionPolicyTarget>;\n\nexport const WorkspaceInstructionPolicyProvenance = z.object({\n source: WorkspaceInstructionPolicyProvenanceSource,\n sourceId: z.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS).nullable(),\n});\nexport type WorkspaceInstructionPolicyProvenance = z.infer<\n typeof WorkspaceInstructionPolicyProvenance\n>;\n\nconst revisionIdentityShape = {\n id: z.string().uuid(),\n revision: z.number().int().positive(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n};\n\nexport const WorkspaceInstructionPolicyRevisionIdentity = z.object(revisionIdentityShape);\nexport type WorkspaceInstructionPolicyRevisionIdentity = z.infer<\n typeof WorkspaceInstructionPolicyRevisionIdentity\n>;\n\nexport const WorkspaceInstructionPolicyRevision = z.object({\n ...revisionIdentityShape,\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n ...targetShape,\n content: z.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS),\n provenance: WorkspaceInstructionPolicyProvenance,\n supersedesRevisionId: z.string().uuid().nullable(),\n createdBySubjectId: z.string().min(1),\n createdAt: z.string().datetime(),\n});\nexport type WorkspaceInstructionPolicyRevision = z.infer<typeof WorkspaceInstructionPolicyRevision>;\n\nexport const WorkspaceInstructionPolicyHead = z.object({\n workspaceId: z.string().uuid(),\n ...targetShape,\n revisionId: z.string().uuid(),\n revision: z.number().int().positive(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n activationVersion: z.number().int().positive(),\n activatedAt: z.string().datetime(),\n});\nexport type WorkspaceInstructionPolicyHead = z.infer<typeof WorkspaceInstructionPolicyHead>;\n\nexport const WorkspaceInstructionPolicyInactiveHead = z.object({\n workspaceId: z.string().uuid(),\n ...targetShape,\n activationVersion: z.number().int().positive(),\n deactivatedAt: z.string().datetime(),\n});\nexport type WorkspaceInstructionPolicyInactiveHead = z.infer<\n typeof WorkspaceInstructionPolicyInactiveHead\n>;\n\nexport const WorkspaceInstructionPolicySnapshotProvenance = z.object({\n source: WorkspaceInstructionPolicyProvenanceSource,\n sourceIdHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n});\nexport type WorkspaceInstructionPolicySnapshotProvenance = z.infer<\n typeof WorkspaceInstructionPolicySnapshotProvenance\n>;\n\nexport const WorkspaceInstructionPolicySnapshotEntry = z.object({\n kind: WorkspaceInstructionPolicyKind,\n scope: WorkspaceInstructionPolicyScope,\n roleKey: WorkspaceInstructionPolicyRoleKey.nullable(),\n revisionId: z.string().uuid(),\n revision: z.number().int().positive(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n activationVersion: z.number().int().positive(),\n activatedAt: z.string().datetime(),\n provenance: WorkspaceInstructionPolicySnapshotProvenance,\n});\nexport type WorkspaceInstructionPolicySnapshotEntry = z.infer<\n typeof WorkspaceInstructionPolicySnapshotEntry\n>;\n\nexport const WorkspaceInstructionPolicySnapshot = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n policyRole: WorkspaceInstructionPolicyRoleKey.nullable(),\n roleSource: WorkspaceInstructionPolicyRoleSource,\n entryHash: z.string().regex(/^[0-9a-f]{64}$/),\n entries: z.array(WorkspaceInstructionPolicySnapshotEntry).max(3),\n createdAt: z.string().datetime(),\n});\nexport type WorkspaceInstructionPolicySnapshot = z.infer<typeof WorkspaceInstructionPolicySnapshot>;\n\nexport const ResolvedWorkspaceInstructionPolicySnapshotEntry =\n WorkspaceInstructionPolicySnapshotEntry.extend({\n content: z.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS),\n });\nexport type ResolvedWorkspaceInstructionPolicySnapshotEntry = z.infer<\n typeof ResolvedWorkspaceInstructionPolicySnapshotEntry\n>;\n\nexport const ResolvedWorkspaceInstructionPolicySnapshot = WorkspaceInstructionPolicySnapshot.extend(\n {\n entries: z.array(ResolvedWorkspaceInstructionPolicySnapshotEntry).max(3),\n },\n);\nexport type ResolvedWorkspaceInstructionPolicySnapshot = z.infer<\n typeof ResolvedWorkspaceInstructionPolicySnapshot\n>;\n\nexport const WorkspaceInstructionPolicyActivationEvent = z.object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n ...targetShape,\n type: WorkspaceInstructionPolicyActivationType,\n activationVersion: z.number().int().positive(),\n oldRevision: WorkspaceInstructionPolicyRevisionIdentity.nullable(),\n newRevision: WorkspaceInstructionPolicyRevisionIdentity,\n actorSubjectId: z.string().min(1),\n reason: z.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS),\n createdAt: z.string().datetime(),\n});\nexport type WorkspaceInstructionPolicyActivationEvent = z.infer<\n typeof WorkspaceInstructionPolicyActivationEvent\n>;\n\nexport const WorkspaceInstructionPolicyDeactivationEvent = z.object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n ...targetShape,\n type: z.literal(\"automatic_deactivate\"),\n activationVersion: z.number().int().positive(),\n oldRevision: WorkspaceInstructionPolicyRevisionIdentity,\n actorSubjectId: z.string().min(1),\n reason: z.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS),\n createdAt: z.string().datetime(),\n});\nexport type WorkspaceInstructionPolicyDeactivationEvent = z.infer<\n typeof WorkspaceInstructionPolicyDeactivationEvent\n>;\n\nexport const CreateWorkspaceInstructionPolicyDraftRequest = z\n .object({\n operationId: z.string().uuid().optional(),\n kind: WorkspaceInstructionPolicyKind,\n scope: WorkspaceInstructionPolicyScope,\n roleKey: WorkspaceInstructionPolicyRoleKeyInput.nullable().default(null),\n content: z\n .string()\n .min(1)\n .max(WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS)\n .refine((value) => value.trim().length > 0, \"instruction policy content must not be blank\"),\n provenanceSource: WorkspaceInstructionPolicyDraftProvenanceSource.default(\"human\"),\n provenanceSourceId: z\n .string()\n .min(1)\n .max(WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS)\n .nullable()\n .default(null),\n supersedesRevisionId: z.string().uuid().nullable().default(null),\n })\n .superRefine(validateTarget);\nexport type CreateWorkspaceInstructionPolicyDraftRequest = z.infer<\n typeof CreateWorkspaceInstructionPolicyDraftRequest\n>;\n\nexport const ImportLegacyWorkspaceInstructionPolicyDraftRequest = z\n .object({\n operationId: z.string().uuid().optional(),\n supersedesRevisionId: z.string().uuid().nullable().default(null),\n })\n .strict();\nexport type ImportLegacyWorkspaceInstructionPolicyDraftRequest = z.infer<\n typeof ImportLegacyWorkspaceInstructionPolicyDraftRequest\n>;\n\nexport const WorkspaceInstructionPolicyListQuery = z.object({\n kind: WorkspaceInstructionPolicyKind.optional(),\n scope: WorkspaceInstructionPolicyScope.optional(),\n roleKey: WorkspaceInstructionPolicyRoleKeyInput.nullable().optional(),\n afterRevision: z.coerce.number().int().positive().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(50),\n});\nexport type WorkspaceInstructionPolicyListQuery = z.infer<\n typeof WorkspaceInstructionPolicyListQuery\n>;\n\nexport const WorkspaceInstructionPolicyListResponse = z.object({\n revisions: z.array(WorkspaceInstructionPolicyRevision),\n activeHeads: z.array(WorkspaceInstructionPolicyHead),\n inactiveHeads: z.array(WorkspaceInstructionPolicyInactiveHead).default([]),\n inactiveHeadsTruncated: z.boolean().default(false),\n activationEvents: z.array(WorkspaceInstructionPolicyActivationEvent),\n deactivationEvents: z.array(WorkspaceInstructionPolicyDeactivationEvent).default([]),\n nextAfterRevision: z.number().int().positive().nullable(),\n});\nexport type WorkspaceInstructionPolicyListResponse = z.infer<\n typeof WorkspaceInstructionPolicyListResponse\n>;\n\nexport const WorkspaceInstructionPolicyDiffRequest = z\n .object({\n fromRevisionId: z.string().uuid(),\n toRevisionId: z.string().uuid(),\n })\n .refine((value) => value.fromRevisionId !== value.toRevisionId, {\n message: \"diff revisions must be different\",\n path: [\"toRevisionId\"],\n });\nexport type WorkspaceInstructionPolicyDiffRequest = z.infer<\n typeof WorkspaceInstructionPolicyDiffRequest\n>;\n\nexport const WorkspaceInstructionPolicyDiffResponse = z.object({\n from: WorkspaceInstructionPolicyRevision,\n to: WorkspaceInstructionPolicyRevision,\n format: z.literal(\"unified\"),\n diff: z.string(),\n});\nexport type WorkspaceInstructionPolicyDiffResponse = z.infer<\n typeof WorkspaceInstructionPolicyDiffResponse\n>;\n\nexport const ActivateWorkspaceInstructionPolicyRequest = z.object({\n operationId: z.string().uuid().optional(),\n expectedCurrentRevisionId: z.string().uuid().nullable(),\n expectedActivationVersion: z.number().int().nonnegative().optional(),\n reason: z.string().trim().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS),\n});\nexport type ActivateWorkspaceInstructionPolicyRequest = z.infer<\n typeof ActivateWorkspaceInstructionPolicyRequest\n>;\n\nexport const RollbackWorkspaceInstructionPolicyRequest = z.object({\n operationId: z.string().uuid().optional(),\n targetRevisionId: z.string().uuid(),\n expectedCurrentRevisionId: z.string().uuid(),\n expectedActivationVersion: z.number().int().positive().optional(),\n reason: z.string().trim().min(1).max(WORKSPACE_INSTRUCTION_POLICY_REASON_MAX_CHARS),\n});\nexport type RollbackWorkspaceInstructionPolicyRequest = z.infer<\n typeof RollbackWorkspaceInstructionPolicyRequest\n>;\n\nexport const WorkspaceInstructionPolicyActivationResponse = z.object({\n head: WorkspaceInstructionPolicyHead,\n event: WorkspaceInstructionPolicyActivationEvent,\n});\nexport type WorkspaceInstructionPolicyActivationResponse = z.infer<\n typeof WorkspaceInstructionPolicyActivationResponse\n>;\n\nexport const WorkspaceInstructionPolicyConflictResponse = z.object({\n code: z.literal(\"WORKSPACE_INSTRUCTION_POLICY_CONFLICT\"),\n message: z.string(),\n currentHead: WorkspaceInstructionPolicyHead.nullable(),\n});\nexport type WorkspaceInstructionPolicyConflictResponse = z.infer<\n typeof WorkspaceInstructionPolicyConflictResponse\n>;\n\nexport const WorkspaceInstructionPolicyOperationReuseResponse = z.object({\n code: z.literal(\"WORKSPACE_INSTRUCTION_POLICY_OPERATION_REUSED\"),\n message: z.string(),\n});\nexport type WorkspaceInstructionPolicyOperationReuseResponse = z.infer<\n typeof WorkspaceInstructionPolicyOperationReuseResponse\n>;\n\nexport const WorkspaceInstructionPolicyOnboardingProposalSource = z.object({\n id: z.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS),\n version: z.string().min(1).max(WORKSPACE_INSTRUCTION_POLICY_ONBOARDING_SOURCE_VERSION_MAX_CHARS),\n confidenceBps: z.number().int().min(0).max(10_000),\n});\nexport type WorkspaceInstructionPolicyOnboardingProposalSource = z.infer<\n typeof WorkspaceInstructionPolicyOnboardingProposalSource\n>;\n\nexport const CreateWorkspaceInstructionPolicyOnboardingProposalRequest = z\n .object({\n operationId: z.string().uuid().optional(),\n kind: WorkspaceInstructionPolicyKind,\n scope: WorkspaceInstructionPolicyScope,\n roleKey: WorkspaceInstructionPolicyRoleKeyInput.nullable().default(null),\n // Content bounds are enforced by the domain layer so empty and oversized\n // proposals retain their typed API outcomes instead of collapsing into a\n // generic request-shape error.\n content: z.string(),\n sourceId: z.string().trim().min(1).max(WORKSPACE_INSTRUCTION_POLICY_SOURCE_ID_MAX_CHARS),\n sourceVersion: z\n .string()\n .trim()\n .min(1)\n .max(WORKSPACE_INSTRUCTION_POLICY_ONBOARDING_SOURCE_VERSION_MAX_CHARS),\n confidenceBps: z.number().int().min(0).max(10_000),\n expectedCurrentRevisionId: z.string().uuid().nullable(),\n expectedActivationVersion: z.number().int().nonnegative(),\n })\n .superRefine(validateTarget);\nexport type CreateWorkspaceInstructionPolicyOnboardingProposalRequest = z.infer<\n typeof CreateWorkspaceInstructionPolicyOnboardingProposalRequest\n>;\n\nexport const WorkspaceInstructionPolicyOnboardingProposal = z.object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n ...targetShape,\n source: WorkspaceInstructionPolicyOnboardingProposalSource,\n baseline: WorkspaceInstructionPolicyHead.nullable(),\n draft: WorkspaceInstructionPolicyRevision,\n status: z.literal(\"proposed\"),\n createdBySubjectId: z.string().min(1),\n createdAt: z.string().datetime(),\n});\nexport type WorkspaceInstructionPolicyOnboardingProposal = z.infer<\n typeof WorkspaceInstructionPolicyOnboardingProposal\n>;\n\nexport const WorkspaceInstructionPolicyOnboardingProposalListQuery = z.object({\n limit: z.coerce.number().int().min(1).max(100).default(50),\n});\nexport type WorkspaceInstructionPolicyOnboardingProposalListQuery = z.infer<\n typeof WorkspaceInstructionPolicyOnboardingProposalListQuery\n>;\n\nexport const WorkspaceInstructionPolicyOnboardingProposalListResponse = z.object({\n proposals: z.array(WorkspaceInstructionPolicyOnboardingProposal),\n truncated: z.boolean(),\n});\nexport type WorkspaceInstructionPolicyOnboardingProposalListResponse = z.infer<\n typeof WorkspaceInstructionPolicyOnboardingProposalListResponse\n>;\n\nexport const WorkspaceInstructionPolicyOnboardingProposalContentErrorResponse = z.object({\n code: z.enum([\n \"WORKSPACE_INSTRUCTION_POLICY_ONBOARDING_PROPOSAL_EMPTY\",\n \"WORKSPACE_INSTRUCTION_POLICY_ONBOARDING_PROPOSAL_OVERSIZED\",\n ]),\n message: z.string(),\n maxChars: z.number().int().positive(),\n});\nexport type WorkspaceInstructionPolicyOnboardingProposalContentErrorResponse = z.infer<\n typeof WorkspaceInstructionPolicyOnboardingProposalContentErrorResponse\n>;\n\nexport const WorkspaceInstructionPolicyOnboardingProposalStaleResponse = z.object({\n code: z.literal(\"WORKSPACE_INSTRUCTION_POLICY_ONBOARDING_PROPOSAL_STALE\"),\n message: z.string(),\n currentHead: WorkspaceInstructionPolicyHead.nullable(),\n});\nexport type WorkspaceInstructionPolicyOnboardingProposalStaleResponse = z.infer<\n typeof WorkspaceInstructionPolicyOnboardingProposalStaleResponse\n>;\n\nexport const WorkspaceInstructionPolicyOnboardingProposalConflictResponse = z.object({\n code: z.literal(\"WORKSPACE_INSTRUCTION_POLICY_ONBOARDING_PROPOSAL_CONFLICT\"),\n message: z.string(),\n existingProposalId: z.string().uuid(),\n existingDraftRevisionId: z.string().uuid(),\n});\nexport type WorkspaceInstructionPolicyOnboardingProposalConflictResponse = z.infer<\n typeof WorkspaceInstructionPolicyOnboardingProposalConflictResponse\n>;\n","import { z } from \"zod\";\n\nexport const TranscriptionRecordingErrorCode = z.enum([\n \"permission_denied\",\n \"not_supported\",\n \"network\",\n \"provider\",\n \"policy_blocked\",\n \"timeout\",\n \"cancelled\",\n \"unavailable\",\n \"too_large\",\n \"invalid_audio\",\n \"unknown\",\n]);\nexport type TranscriptionRecordingErrorCode = z.infer<typeof TranscriptionRecordingErrorCode>;\n\nexport const TranscriptionRecordingState = z.enum([\n \"uploading\",\n \"segmenting\",\n \"ready\",\n \"transcribing\",\n \"complete\",\n \"failed\",\n \"discarded\",\n]);\nexport type TranscriptionRecordingState = z.infer<typeof TranscriptionRecordingState>;\n\nexport const TranscriptionRecordingSegmentState = z.enum([\n \"preparing\",\n \"pending\",\n \"transcribing\",\n \"complete\",\n \"failed\",\n]);\nexport type TranscriptionRecordingSegmentState = z.infer<typeof TranscriptionRecordingSegmentState>;\n\nexport const ClientResumableVoiceInputConfig = z\n .object({\n maxDurationSeconds: z\n .number()\n .int()\n .positive()\n .max(8 * 60 * 60),\n maxSizeBytes: z\n .number()\n .int()\n .positive()\n .max(512 * 1024 * 1024),\n maxChunkSizeBytes: z\n .number()\n .int()\n .positive()\n .max(25 * 1024 * 1024),\n providerSegmentSeconds: z.number().int().positive().max(600),\n })\n .strict();\nexport type ClientResumableVoiceInputConfig = z.infer<typeof ClientResumableVoiceInputConfig>;\n\nexport const CreateTranscriptionRecordingRequest = z\n .object({\n recordingId: z.string().uuid(),\n mimeType: z.string().trim().min(1).max(128),\n })\n .strict();\nexport type CreateTranscriptionRecordingRequest = z.infer<\n typeof CreateTranscriptionRecordingRequest\n>;\n\nexport const FinalizeTranscriptionRecordingRequest = z\n .object({\n chunkCount: z.number().int().positive().max(100_000),\n totalBytes: z\n .number()\n .int()\n .positive()\n .max(512 * 1024 * 1024),\n totalDurationMilliseconds: z\n .number()\n .int()\n .positive()\n .max(8 * 60 * 60 * 1_000),\n })\n .strict();\nexport type FinalizeTranscriptionRecordingRequest = z.infer<\n typeof FinalizeTranscriptionRecordingRequest\n>;\n\nexport const TranscriptionRecordingChunk = z\n .object({\n chunkNumber: z.number().int().nonnegative(),\n byteLength: z.number().int().positive(),\n sha256: z.string().regex(/^[0-9a-f]{64}$/),\n startMilliseconds: z.number().int().nonnegative(),\n durationMilliseconds: z.number().int().nonnegative(),\n deduplicated: z.boolean(),\n })\n .strict();\nexport type TranscriptionRecordingChunk = z.infer<typeof TranscriptionRecordingChunk>;\n\nexport const TranscriptionRecordingSegment = z\n .object({\n segmentNumber: z.number().int().nonnegative(),\n state: TranscriptionRecordingSegmentState,\n startMilliseconds: z.number().int().nonnegative(),\n durationMilliseconds: z.number().int().positive(),\n byteLength: z.number().int().positive(),\n errorCode: TranscriptionRecordingErrorCode.nullable(),\n retryable: z.boolean(),\n })\n .strict();\nexport type TranscriptionRecordingSegment = z.infer<typeof TranscriptionRecordingSegment>;\n\nexport const TranscriptionRecording = z\n .object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n mimeType: z.string().trim().min(1).max(128),\n state: TranscriptionRecordingState,\n nextChunkNumber: z.number().int().nonnegative(),\n chunkCount: z.number().int().nonnegative(),\n totalBytes: z.number().int().nonnegative(),\n totalDurationMilliseconds: z.number().int().nonnegative(),\n segmentCount: z.number().int().nonnegative(),\n completedSegmentCount: z.number().int().nonnegative(),\n transcriptText: z.string().max(1_000_000).nullable(),\n languages: z.array(z.string().trim().min(1).max(64)).max(64),\n errorCode: TranscriptionRecordingErrorCode.nullable(),\n retryable: z.boolean(),\n objectsCleaned: z.boolean(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n expiresAt: z.string().datetime(),\n })\n .strict();\nexport type TranscriptionRecording = z.infer<typeof TranscriptionRecording>;\n\nexport const TranscriptionRecordingResponse = z\n .object({\n recording: TranscriptionRecording,\n segments: z.array(TranscriptionRecordingSegment).max(1_000),\n retryAfterMilliseconds: z.number().int().positive().max(60_000).optional(),\n })\n .strict();\nexport type TranscriptionRecordingResponse = z.infer<typeof TranscriptionRecordingResponse>;\n\nexport const TranscriptionRecordingListResponse = z\n .object({\n recordings: z.array(TranscriptionRecording).max(50),\n })\n .strict();\nexport type TranscriptionRecordingListResponse = z.infer<typeof TranscriptionRecordingListResponse>;\n\nexport const UploadTranscriptionRecordingChunkResponse = z\n .object({\n recording: TranscriptionRecording,\n chunk: TranscriptionRecordingChunk,\n })\n .strict();\nexport type UploadTranscriptionRecordingChunkResponse = z.infer<\n typeof UploadTranscriptionRecordingChunkResponse\n>;\n\nexport const TRANSCRIPTION_RECORDING_MAX_DURATION_SECONDS = 2 * 60 * 60;\nexport const TRANSCRIPTION_RECORDING_MAX_SIZE_BYTES = 512 * 1024 * 1024;\nexport const TRANSCRIPTION_RECORDING_MAX_CHUNK_SIZE_BYTES = 8 * 1024 * 1024;\nexport const TRANSCRIPTION_RECORDING_PROVIDER_SEGMENT_SECONDS = 50;\nexport const TRANSCRIPTION_RECORDING_RECOVERY_RETRY_AFTER_MILLISECONDS = 5_000;\nexport const TRANSCRIPTION_RECORDING_RETENTION_SECONDS = 24 * 60 * 60;\n","import { z } from \"zod\";\n\nexport const KNOWLEDGE_BROWSE_CURSOR_MAX_CHARS = 1_024;\nexport const KNOWLEDGE_BROWSE_DEFAULT_LIMIT = 20;\nexport const KNOWLEDGE_BROWSE_MAX_LIMIT = 50;\nexport const KNOWLEDGE_BROWSE_MAX_RESPONSE_BYTES = 64 * 1_024;\nexport const KNOWLEDGE_TITLE_MAX_BYTES = 1_024;\nexport const KNOWLEDGE_BODY_MAX_BYTES = 16 * 1_024;\nexport const KNOWLEDGE_SUMMARY_MAX_BYTES = 4 * 1_024;\nexport const KNOWLEDGE_TOPIC_MAX_BYTES = 256;\nexport const KNOWLEDGE_TOPICS_MAX_ITEMS = 32;\nexport const KNOWLEDGE_METADATA_MAX_BYTES = 8 * 1_024;\nexport const KNOWLEDGE_METADATA_MAX_ITEMS = 64;\nexport const KNOWLEDGE_METADATA_MAX_DEPTH = 4;\nexport const KNOWLEDGE_SOURCE_STRING_MAX_BYTES = 2_048;\nexport const KNOWLEDGE_SOURCE_URI_MAX_BYTES = 8_192;\nexport const KNOWLEDGE_SEARCH_MAX_RESULTS = 50;\nexport const KNOWLEDGE_SEARCH_MAX_RESPONSE_BYTES = 64 * 1_024;\nexport const KNOWLEDGE_SEARCH_TOKEN_ESTIMATE_BYTES_PER_TOKEN = 4;\nexport const KNOWLEDGE_SEARCH_MAX_FLOOR_OMISSIONS = 200;\n// Cosine similarity for unrelated embeddings clusters around 0.5 after the\n// distance conversion used by Documents. Keyword search already excludes\n// non-matches in SQL, but a small normalized floor removes incidental hits.\nexport const KNOWLEDGE_SEARCH_MIN_VECTOR_SCORE = 0.52;\nexport const KNOWLEDGE_SEARCH_MIN_KEYWORD_SCORE = 0.01;\nexport const KNOWLEDGE_QUERY_MAX_BYTES = 4 * 1_024;\n\nconst utf8Bytes = (value: string): number => new TextEncoder().encode(value).byteLength;\nconst boundedUtf8 = (maxBytes: number) =>\n z.string().superRefine((value, ctx) => {\n if (utf8Bytes(value) > maxBytes) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `must be at most ${maxBytes} UTF-8 bytes`,\n });\n }\n });\n\nfunction boundedJson(value: unknown): boolean {\n let items = 0;\n let valid = true;\n const visit = (candidate: unknown, depth: number): void => {\n if (!valid || ++items > KNOWLEDGE_METADATA_MAX_ITEMS || depth > KNOWLEDGE_METADATA_MAX_DEPTH) {\n valid = false;\n return;\n }\n if (\n candidate === null ||\n typeof candidate === \"boolean\" ||\n (typeof candidate === \"number\" && Number.isFinite(candidate))\n ) {\n return;\n }\n if (typeof candidate === \"string\") {\n if (utf8Bytes(candidate) > KNOWLEDGE_SOURCE_STRING_MAX_BYTES) valid = false;\n return;\n }\n if (Array.isArray(candidate)) {\n for (const item of candidate) visit(item, depth + 1);\n return;\n }\n if (typeof candidate === \"object\") {\n for (const [key, item] of Object.entries(candidate as Record<string, unknown>)) {\n if (utf8Bytes(key) > KNOWLEDGE_TOPIC_MAX_BYTES) valid = false;\n visit(item, depth + 1);\n }\n return;\n }\n valid = false;\n };\n visit(value, 0);\n if (!valid) return false;\n try {\n return utf8Bytes(JSON.stringify(value)) <= KNOWLEDGE_METADATA_MAX_BYTES;\n } catch {\n return false;\n }\n}\n\nexport const KnowledgeRecordId = z\n .string()\n .regex(\n /^(document|document_chunk):[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu,\n );\nexport type KnowledgeRecordId = z.infer<typeof KnowledgeRecordId>;\n\nexport const KnowledgeRecordKind = z.enum([\"document\", \"document_chunk\"]);\nexport type KnowledgeRecordKind = z.infer<typeof KnowledgeRecordKind>;\n\nexport const KnowledgeAuthority = z.object({\n kind: z.enum([\"organization\", \"workspace\", \"personal\"]),\n});\nexport type KnowledgeAuthority = z.infer<typeof KnowledgeAuthority>;\n\nexport const KnowledgeSource = z.object({\n kind: z.enum([\n \"manual_upload\",\n \"meeting_transcript\",\n \"repository\",\n \"email\",\n \"chat\",\n \"document\",\n \"web\",\n \"other\",\n ]),\n uri: boundedUtf8(KNOWLEDGE_SOURCE_URI_MAX_BYTES).pipe(z.string().min(1)).nullable(),\n externalId: boundedUtf8(KNOWLEDGE_SOURCE_STRING_MAX_BYTES).nullable(),\n title: boundedUtf8(KNOWLEDGE_SOURCE_STRING_MAX_BYTES).nullable(),\n author: boundedUtf8(KNOWLEDGE_SOURCE_STRING_MAX_BYTES).nullable(),\n createdAt: z.string().nullable(),\n updatedAt: z.string().nullable(),\n version: boundedUtf8(KNOWLEDGE_SOURCE_STRING_MAX_BYTES).nullable(),\n});\nexport type KnowledgeSource = z.infer<typeof KnowledgeSource>;\n\nexport const KnowledgeSearchRequest = z\n .object({\n query: boundedUtf8(KNOWLEDGE_QUERY_MAX_BYTES).pipe(z.string().min(1)),\n baseIds: z.array(z.string().uuid()).max(50).optional(),\n mode: z.enum([\"hybrid\", \"vector\", \"keyword\"]).optional(),\n sourceKinds: z.array(KnowledgeSource.shape.kind).max(8).optional(),\n authorityKinds: z.array(KnowledgeAuthority.shape.kind).max(3).optional(),\n aclTags: z\n .array(boundedUtf8(KNOWLEDGE_TOPIC_MAX_BYTES).pipe(z.string().min(1)))\n .max(64)\n .optional(),\n limit: z.number().int().positive().max(KNOWLEDGE_SEARCH_MAX_RESULTS).default(5),\n })\n .strict();\nexport type KnowledgeSearchRequest = z.input<typeof KnowledgeSearchRequest>;\n\nexport const KnowledgeBrowseRequest = z\n .object({\n parentId: KnowledgeRecordId.optional(),\n topic: boundedUtf8(KNOWLEDGE_TOPIC_MAX_BYTES).pipe(z.string().min(1)).optional(),\n sourceKinds: z.array(KnowledgeSource.shape.kind).max(8).optional(),\n cursor: z.string().min(1).max(KNOWLEDGE_BROWSE_CURSOR_MAX_CHARS).optional(),\n limit: z\n .number()\n .int()\n .positive()\n .max(KNOWLEDGE_BROWSE_MAX_LIMIT)\n .default(KNOWLEDGE_BROWSE_DEFAULT_LIMIT),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.parentId && (value.topic || (value.sourceKinds?.length ?? 0) > 0)) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"document contents do not accept topic or source filters\",\n });\n }\n });\nexport type KnowledgeBrowseRequest = z.input<typeof KnowledgeBrowseRequest>;\n\nexport const KnowledgeProviderCitation = z.object({\n provider: z.literal(\"google_drive\"),\n externalObjectId: boundedUtf8(KNOWLEDGE_SOURCE_STRING_MAX_BYTES),\n providerRevision: boundedUtf8(KNOWLEDGE_SOURCE_STRING_MAX_BYTES).nullable(),\n sourceVersion: boundedUtf8(KNOWLEDGE_SOURCE_STRING_MAX_BYTES),\n driveId: boundedUtf8(KNOWLEDGE_SOURCE_STRING_MAX_BYTES).nullable(),\n deepLink: boundedUtf8(KNOWLEDGE_SOURCE_URI_MAX_BYTES).pipe(z.string().min(1)).nullable(),\n aclRevision: z.string().regex(/^[0-9a-f]{64}$/u),\n authorizationObservedAt: z.string().datetime({ offset: true }),\n authorizationExpiresAt: z.string().datetime({ offset: true }),\n reauthorizedAt: z.string().datetime({ offset: true }),\n});\nexport type KnowledgeProviderCitation = z.infer<typeof KnowledgeProviderCitation>;\n\nexport const KnowledgeLinkTarget = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"knowledge\"),\n id: KnowledgeRecordId,\n }),\n z.object({\n kind: z.literal(\"external\"),\n uri: boundedUtf8(KNOWLEDGE_SOURCE_URI_MAX_BYTES).pipe(z.string().min(1)),\n }),\n]);\nexport type KnowledgeLinkTarget = z.infer<typeof KnowledgeLinkTarget>;\n\nexport const KnowledgeLink = z.object({\n relation: z.enum([\"parent\", \"contents\", \"previous\", \"next\", \"source\"]),\n target: KnowledgeLinkTarget,\n});\nexport type KnowledgeLink = z.infer<typeof KnowledgeLink>;\n\n/**\n * Permission-safe agent projection over one flexible knowledge record. Scope,\n * provenance, lifecycle, and stable identity are strict. The body and metadata\n * stay source-shaped so varied company knowledge does not require one rigid\n * taxonomy. Personal subject ids and inaccessible linked-record metadata are\n * deliberately absent.\n */\nexport const KnowledgeRecord = z.object({\n id: KnowledgeRecordId,\n kind: KnowledgeRecordKind,\n title: boundedUtf8(KNOWLEDGE_TITLE_MAX_BYTES),\n content: z.object({\n format: z.literal(\"markdown\"),\n body: boundedUtf8(KNOWLEDGE_BODY_MAX_BYTES).nullable(),\n summary: boundedUtf8(KNOWLEDGE_SUMMARY_MAX_BYTES).nullable(),\n topics: z.array(boundedUtf8(KNOWLEDGE_TOPIC_MAX_BYTES)).max(KNOWLEDGE_TOPICS_MAX_ITEMS),\n metadata: z.record(z.string(), z.unknown()).refine(boundedJson, {\n message: \"knowledge metadata exceeds its JSON projection boundary\",\n }),\n }),\n authority: KnowledgeAuthority,\n provenance: z.object({\n source: KnowledgeSource,\n indexedAt: z.string(),\n citation: KnowledgeProviderCitation.nullable().optional(),\n }),\n lifecycle: z.object({\n state: z.literal(\"active\"),\n updatedAt: z.string(),\n }),\n quality: z.object({\n trust: z.literal(\"sourced\"),\n freshnessAt: z.string(),\n conflict: z.literal(\"not_evaluated\"),\n correction: z.literal(\"current_source_version\"),\n }),\n links: z.array(KnowledgeLink).max(8),\n projection: z.object({\n truncated: z.boolean(),\n fields: z\n .array(\n z.enum([\n \"title\",\n \"content.body\",\n \"content.summary\",\n \"content.topics\",\n \"content.metadata\",\n \"provenance.source.uri\",\n \"provenance.source.externalId\",\n \"provenance.source.title\",\n \"provenance.source.author\",\n \"provenance.source.version\",\n \"provenance.citation\",\n ]),\n )\n .max(11),\n }),\n});\nexport type KnowledgeRecord = z.infer<typeof KnowledgeRecord>;\n\nexport const KnowledgeSearchResult = z.object({\n record: KnowledgeRecord,\n retrieval: z.object({\n /** Final bounded ordering score after the documented quality adjustment. */\n score: z.number().min(0).max(1),\n /** Semantic score before the quality adjustment. */\n semanticScore: z.number().min(0).max(1),\n matchType: z.enum([\"hybrid\", \"vector\", \"keyword\"]),\n vectorScore: z.number().min(0).max(1).nullable(),\n keywordScore: z.number().min(0).max(1).nullable(),\n relevanceSignals: z\n .array(z.enum([\"vector\", \"keyword\"]))\n .min(1)\n .max(2),\n freshness: z.enum([\"current\", \"aging\", \"stale\"]),\n qualityAdjustment: z.number().min(0).max(1),\n duplicateCount: z.number().int().nonnegative(),\n }),\n});\nexport type KnowledgeSearchResult = z.infer<typeof KnowledgeSearchResult>;\n\nexport const KnowledgeSearchResponse = z.object({\n results: z.array(KnowledgeSearchResult).max(KNOWLEDGE_SEARCH_MAX_RESULTS),\n selection: z.object({\n relevanceFloor: z.object({\n policy: z.literal(\"any_signal\"),\n vectorScore: z.literal(KNOWLEDGE_SEARCH_MIN_VECTOR_SCORE),\n keywordScore: z.literal(KNOWLEDGE_SEARCH_MIN_KEYWORD_SCORE),\n }),\n dedupe: z.object({\n policy: z.literal(\"exact_textual_content\"),\n }),\n candidates: z.object({\n ranked: z.number().int().nonnegative().max(KNOWLEDGE_SEARCH_MAX_RESULTS),\n rechecked: z.number().int().nonnegative().max(KNOWLEDGE_SEARCH_MAX_RESULTS),\n omittedOnRecheck: z.number().int().nonnegative().max(KNOWLEDGE_SEARCH_MAX_RESULTS),\n }),\n omitted: z.object({\n belowRelevanceFloor: z.number().int().nonnegative().max(KNOWLEDGE_SEARCH_MAX_FLOOR_OMISSIONS),\n asDuplicate: z.number().int().nonnegative().max(KNOWLEDGE_SEARCH_MAX_RESULTS),\n forLimit: z.number().int().nonnegative().max(KNOWLEDGE_SEARCH_MAX_RESULTS),\n forResponseBudget: z.number().int().nonnegative().max(KNOWLEDGE_SEARCH_MAX_RESULTS),\n }),\n budget: z.object({\n maxResults: z.literal(KNOWLEDGE_SEARCH_MAX_RESULTS),\n maxResponseBytes: z.literal(KNOWLEDGE_SEARCH_MAX_RESPONSE_BYTES),\n responseBytes: z.number().int().nonnegative().max(KNOWLEDGE_SEARCH_MAX_RESPONSE_BYTES),\n tokenEstimateBytesPerToken: z.literal(KNOWLEDGE_SEARCH_TOKEN_ESTIMATE_BYTES_PER_TOKEN),\n estimatedTokens: z.number().int().nonnegative(),\n maxEstimatedTokens: z.literal(\n Math.ceil(\n KNOWLEDGE_SEARCH_MAX_RESPONSE_BYTES / KNOWLEDGE_SEARCH_TOKEN_ESTIMATE_BYTES_PER_TOKEN,\n ),\n ),\n }),\n }),\n});\nexport type KnowledgeSearchResponse = z.infer<typeof KnowledgeSearchResponse>;\n\nexport const KnowledgeGetResponse = z.object({\n record: KnowledgeRecord,\n});\nexport type KnowledgeGetResponse = z.infer<typeof KnowledgeGetResponse>;\n\nexport const KnowledgeBrowseResponse = z.object({\n records: z.array(KnowledgeRecord).max(KNOWLEDGE_BROWSE_MAX_LIMIT),\n nextCursor: z.string().min(1).max(KNOWLEDGE_BROWSE_CURSOR_MAX_CHARS).nullable(),\n hasMore: z.boolean(),\n selection: z.object({\n omitted: z.object({\n forResponseBudget: z.number().int().nonnegative().max(KNOWLEDGE_BROWSE_MAX_LIMIT),\n }),\n compactedRecordCount: z.number().int().nonnegative().max(1),\n budget: z.object({\n maxResults: z.literal(KNOWLEDGE_BROWSE_MAX_LIMIT),\n maxResponseBytes: z.literal(KNOWLEDGE_BROWSE_MAX_RESPONSE_BYTES),\n responseBytes: z.number().int().nonnegative().max(KNOWLEDGE_BROWSE_MAX_RESPONSE_BYTES),\n tokenEstimateBytesPerToken: z.literal(KNOWLEDGE_SEARCH_TOKEN_ESTIMATE_BYTES_PER_TOKEN),\n estimatedTokens: z.number().int().nonnegative(),\n maxEstimatedTokens: z.literal(\n Math.ceil(\n KNOWLEDGE_BROWSE_MAX_RESPONSE_BYTES / KNOWLEDGE_SEARCH_TOKEN_ESTIMATE_BYTES_PER_TOKEN,\n ),\n ),\n }),\n }),\n});\nexport type KnowledgeBrowseResponse = z.infer<typeof KnowledgeBrowseResponse>;\n","import { z } from \"zod\";\n\nexport const SessionStatus = z.enum([\n \"queued\",\n \"running\",\n \"idle\",\n \"requires_action\",\n \"recovering\",\n \"waiting_capacity\",\n \"failed\",\n \"cancelled\",\n]);\nexport type SessionStatus = z.infer<typeof SessionStatus>;\n\nexport const SessionGoalStatus = z.enum([\"active\", \"paused\", \"completed\"]);\nexport type SessionGoalStatus = z.infer<typeof SessionGoalStatus>;\n\n/** Physical ceiling of the PostgreSQL integer columns that persist depth policy. */\nexport const MAX_NESTED_AGENT_DEPTH = 2_147_483_647;\nexport const NestedAgentDepthValue = z.number().int().nonnegative().max(MAX_NESTED_AGENT_DEPTH);\nexport type NestedAgentDepthValue = z.infer<typeof NestedAgentDepthValue>;\n","import { z } from \"zod\";\n\nexport const SLACK_TASK_POLICY_ID_MAX_CHARS = 128;\nexport const SLACK_TASK_POLICY_REASON_MAX_CHARS = 4_096;\nexport const SLACK_TASK_POLICY_MAX_IDS = 256;\n\nconst SlackOpaqueId = z.string().min(1).max(SLACK_TASK_POLICY_ID_MAX_CHARS);\n\nexport const SlackSharedConversationMode = z.enum([\"deny\", \"private_handoff\"]);\nexport type SlackSharedConversationMode = z.infer<typeof SlackSharedConversationMode>;\n\nexport const SlackResultPublicationMode = z.enum([\"never\", \"approval_required\", \"allow\"]);\nexport type SlackResultPublicationMode = z.infer<typeof SlackResultPublicationMode>;\n\nfunction uniqueSortedIds(values: string[]): string[] {\n return [...new Set(values)].sort();\n}\n\nexport const SlackTaskPolicyContent = z\n .object({\n allowedTeamIds: z\n .array(SlackOpaqueId)\n .max(SLACK_TASK_POLICY_MAX_IDS)\n .transform(uniqueSortedIds),\n allowedConversationIds: z\n .array(SlackOpaqueId)\n .max(SLACK_TASK_POLICY_MAX_IDS)\n .transform(uniqueSortedIds),\n allowGuestInitiators: z.boolean(),\n allowExternalInitiators: z.boolean(),\n allowMpim: z.boolean(),\n sharedConversationMode: SlackSharedConversationMode,\n resultPublicationMode: SlackResultPublicationMode,\n })\n .strict();\nexport type SlackTaskPolicyContent = z.infer<typeof SlackTaskPolicyContent>;\n\nexport const DEFAULT_SLACK_TASK_POLICY: SlackTaskPolicyContent = Object.freeze({\n allowedTeamIds: [],\n allowedConversationIds: [],\n allowGuestInitiators: false,\n allowExternalInitiators: false,\n allowMpim: false,\n sharedConversationMode: \"deny\",\n resultPublicationMode: \"never\",\n});\n\nexport function canonicalizeSlackTaskPolicy(value: SlackTaskPolicyContent): SlackTaskPolicyContent {\n const parsed = SlackTaskPolicyContent.parse(value);\n return {\n allowedTeamIds: parsed.allowedTeamIds,\n allowedConversationIds: parsed.allowedConversationIds,\n allowGuestInitiators: parsed.allowGuestInitiators,\n allowExternalInitiators: parsed.allowExternalInitiators,\n allowMpim: parsed.allowMpim,\n sharedConversationMode: parsed.sharedConversationMode,\n resultPublicationMode: parsed.resultPublicationMode,\n };\n}\n\nexport const SlackTaskPolicyRevisionIdentity = z.object({\n id: z.string().uuid(),\n revision: z.number().int().positive(),\n policyHash: z.string().regex(/^[0-9a-f]{64}$/),\n});\nexport type SlackTaskPolicyRevisionIdentity = z.infer<typeof SlackTaskPolicyRevisionIdentity>;\n\nexport const SlackTaskPolicyRevision = SlackTaskPolicyRevisionIdentity.extend({\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n policy: SlackTaskPolicyContent,\n supersedesRevisionId: z.string().uuid().nullable(),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string().datetime(),\n});\nexport type SlackTaskPolicyRevision = z.infer<typeof SlackTaskPolicyRevision>;\n\nexport const SlackTaskPolicyHead = z.object({\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n revisionId: z.string().uuid(),\n revision: z.number().int().positive(),\n policyHash: z.string().regex(/^[0-9a-f]{64}$/),\n activationVersion: z.number().int().positive(),\n activatedAt: z.string().datetime(),\n});\nexport type SlackTaskPolicyHead = z.infer<typeof SlackTaskPolicyHead>;\n\nexport const SlackTaskPolicyActivationEvent = z.object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n activationVersion: z.number().int().positive(),\n oldRevision: SlackTaskPolicyRevisionIdentity.nullable(),\n newRevision: SlackTaskPolicyRevisionIdentity,\n actorSubjectId: z.string().min(1).max(1_024),\n reason: z.string().min(1).max(SLACK_TASK_POLICY_REASON_MAX_CHARS),\n createdAt: z.string().datetime(),\n});\nexport type SlackTaskPolicyActivationEvent = z.infer<typeof SlackTaskPolicyActivationEvent>;\n\nexport const SlackTaskPolicyListResponse = z.object({\n current: SlackTaskPolicyHead.nullable(),\n activeRevision: SlackTaskPolicyRevision.nullable(),\n revisions: z.array(SlackTaskPolicyRevision),\n activationEvents: z.array(SlackTaskPolicyActivationEvent),\n});\nexport type SlackTaskPolicyListResponse = z.infer<typeof SlackTaskPolicyListResponse>;\n\nexport const UpdateSlackTaskPolicyRequest = z.object({\n operationId: z.string().uuid().optional(),\n policy: SlackTaskPolicyContent,\n expectedCurrentRevisionId: z.string().uuid().nullable(),\n expectedActivationVersion: z.number().int().nonnegative(),\n reason: z.string().trim().min(1).max(SLACK_TASK_POLICY_REASON_MAX_CHARS),\n});\nexport type UpdateSlackTaskPolicyRequest = z.infer<typeof UpdateSlackTaskPolicyRequest>;\n\nexport const SlackTaskPolicyMutationResponse = z.object({\n revision: SlackTaskPolicyRevision,\n head: SlackTaskPolicyHead,\n event: SlackTaskPolicyActivationEvent,\n});\nexport type SlackTaskPolicyMutationResponse = z.infer<typeof SlackTaskPolicyMutationResponse>;\n\nexport type SlackTaskPolicyConversationFacts = Readonly<{\n installationTeamId: string;\n conversationId: string;\n contextTeamId: string | null;\n connectedTeamIds: readonly string[] | null;\n sharedTeamIds: readonly string[] | null;\n isShared: boolean;\n isExternallyShared: boolean;\n isOrgShared: boolean;\n isPendingExternallyShared: boolean;\n isMpim: boolean;\n}>;\n\nexport type SlackTaskPolicyInitiatorFacts = Readonly<{\n teamId: string | null;\n isGuest: boolean | null;\n isExternal: boolean | null;\n}>;\n\nexport type SlackTaskPolicyDecision = Readonly<{\n disposition: \"ordinary\" | \"deny\" | \"private_handoff\";\n publication: SlackResultPublicationMode;\n reason:\n | \"ordinary_conversation\"\n | \"policy_missing\"\n | \"conversation_not_allowed\"\n | \"team_not_allowed\"\n | \"ambiguous_shared_facts\"\n | \"mpim_not_allowed\"\n | \"guest_not_allowed\"\n | \"external_not_allowed\"\n | \"allowed\";\n}>;\n\nexport function evaluateSlackTaskPolicy(input: {\n policy: SlackTaskPolicyContent | null;\n conversation: SlackTaskPolicyConversationFacts;\n initiator: SlackTaskPolicyInitiatorFacts;\n}): SlackTaskPolicyDecision {\n const { conversation, initiator } = input;\n const governed =\n conversation.isShared ||\n conversation.isExternallyShared ||\n conversation.isOrgShared ||\n conversation.isPendingExternallyShared ||\n conversation.isMpim;\n if (!governed) {\n return { disposition: \"ordinary\", publication: \"allow\", reason: \"ordinary_conversation\" };\n }\n if (!input.policy) return { disposition: \"deny\", publication: \"never\", reason: \"policy_missing\" };\n const policy = canonicalizeSlackTaskPolicy(input.policy);\n if (!policy.allowedConversationIds.includes(conversation.conversationId)) {\n return { disposition: \"deny\", publication: \"never\", reason: \"conversation_not_allowed\" };\n }\n if (conversation.isMpim && !policy.allowMpim) {\n return { disposition: \"deny\", publication: \"never\", reason: \"mpim_not_allowed\" };\n }\n if (initiator.isGuest === null || initiator.isExternal === null || initiator.teamId === null) {\n return { disposition: \"deny\", publication: \"never\", reason: \"ambiguous_shared_facts\" };\n }\n if (initiator.isGuest && !policy.allowGuestInitiators) {\n return { disposition: \"deny\", publication: \"never\", reason: \"guest_not_allowed\" };\n }\n if (initiator.isExternal && !policy.allowExternalInitiators) {\n return { disposition: \"deny\", publication: \"never\", reason: \"external_not_allowed\" };\n }\n const teams = [\n conversation.installationTeamId,\n conversation.contextTeamId,\n initiator.teamId,\n ...(conversation.connectedTeamIds ?? []),\n ...(conversation.sharedTeamIds ?? []),\n ];\n if (conversation.connectedTeamIds === null || conversation.sharedTeamIds === null) {\n return { disposition: \"deny\", publication: \"never\", reason: \"ambiguous_shared_facts\" };\n }\n if (teams.some((teamId) => teamId === null || !policy.allowedTeamIds.includes(teamId))) {\n return { disposition: \"deny\", publication: \"never\", reason: \"team_not_allowed\" };\n }\n if (policy.sharedConversationMode === \"deny\") {\n return { disposition: \"deny\", publication: \"never\", reason: \"allowed\" };\n }\n return {\n disposition: \"private_handoff\",\n publication: policy.resultPublicationMode,\n reason: \"allowed\",\n };\n}\n","import { z } from \"zod\";\nimport { RETAINED_OUTPUT_MAX_PAGE_BYTES, RetainedArtifactReferenceSchema } from \"./retained-output\";\n\n// Codex accepts five references, while the current Gateway GPT Image 2 route\n// accepts four. Keep the provider-neutral tool at the reliable shared limit.\nexport const IMAGE_GENERATION_MAX_REFERENCES = 4;\n\nconst WorkspaceImagePathSchema = z\n .string()\n .max(512)\n // Keep the provider-visible pattern within the portable JSON Schema regex\n // subset. Codex rejects lookaround before inference.\n .regex(/^\\/workspace\\/.+$/)\n // Path traversal remains an exact runtime validation concern. Zod does not\n // project custom refinements into JSON Schema, so this preserves the guard\n // without sending unsupported regex syntax to model providers.\n .refine((path) => path.split(\"/\").every((segment) => segment !== \".\" && segment !== \"..\"), {\n message: \"Sandbox image paths cannot contain dot segments\",\n })\n .describe(\n \"Absolute /workspace path to a PNG, JPEG, or WebP image. Convert SVG or other formats before using them as image-generation references.\",\n );\n\n/** One ordered, workspace-owned input used to guide or edit an image. */\nexport const ImageGenerationReferenceSchema = z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"sandbox_path\"),\n path: WorkspaceImagePathSchema,\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"file\"),\n fileId: z.string().uuid(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"artifact\"),\n artifactId: z.string().uuid(),\n })\n .strict(),\n]);\nexport type ImageGenerationReference = z.infer<typeof ImageGenerationReferenceSchema>;\n\n/** Provider-neutral minimum shared by native and adapter-backed image tools. */\nexport const GenerateImageToolInput = z\n .object({\n prompt: z.string().trim().min(1).max(32_000),\n references: z\n .array(ImageGenerationReferenceSchema)\n .max(IMAGE_GENERATION_MAX_REFERENCES)\n .optional()\n .default([])\n .describe(\n \"Ordered image references. Every sandbox path, File, or artifact must resolve to PNG, JPEG, or WebP bytes.\",\n ),\n })\n .strict();\nexport type GenerateImageToolInput = z.infer<typeof GenerateImageToolInput>;\n\n/** Closed durable result shared by native and adapter-backed image tools. */\nexport const GeneratedImageReceiptSchema = z\n .object({\n type: z.literal(\"generated_image\"),\n artifact: RetainedArtifactReferenceSchema,\n sandboxPath: z\n .string()\n .max(256)\n .regex(\n /^\\/workspace\\/generated-images\\/generated-image-[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\\.(png|jpg|webp)$/,\n ),\n })\n .strict()\n .superRefine((value, ctx) => {\n if (value.artifact.kind !== \"generated_image\") {\n ctx.addIssue({\n code: \"custom\",\n path: [\"artifact\", \"kind\"],\n message: \"generated-image receipt requires a generated-image artifact\",\n });\n return;\n }\n if (value.artifact.retrieval.maxRangeBytes !== RETAINED_OUTPUT_MAX_PAGE_BYTES) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"artifact\", \"retrieval\", \"maxRangeBytes\"],\n message: \"generated-image receipt requires the canonical range size\",\n });\n }\n const extension =\n value.artifact.contentType === \"image/png\"\n ? \"png\"\n : value.artifact.contentType === \"image/jpeg\"\n ? \"jpg\"\n : value.artifact.contentType === \"image/webp\"\n ? \"webp\"\n : null;\n if (\n extension === null ||\n value.sandboxPath !==\n `/workspace/generated-images/generated-image-${value.artifact.artifactId}.${extension}`\n ) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"sandboxPath\"],\n message: \"generated-image sandbox path does not match its artifact\",\n });\n }\n });\nexport type GeneratedImageReceipt = z.infer<typeof GeneratedImageReceiptSchema>;\n","import { z } from \"zod\";\n\nexport const ATTEMPT_TOOL_CATALOG_VERSION = 1 as const;\nexport const TOOL_GATEWAY_CATALOG_VERSION = 1 as const;\nexport const ATTEMPT_TOOL_CATALOG_MAX_ENTRIES = 4_096;\nexport const ATTEMPT_TOOL_CATALOG_MAX_BYTES = 16 * 1024 * 1024;\nexport const ATTEMPT_TOOL_CATALOG_MAX_PATH_SEGMENTS = 8;\nexport const ATTEMPT_TOOL_CATALOG_MAX_CONTENT_BLOCKS = 1_024;\nexport const CODEMODE_OPERATION_VERSION = 1 as const;\nexport const CODEMODE_ARGUMENTS_MAX_BYTES = 4 * 1024 * 1024;\nexport const CODEMODE_RESULT_MAX_BYTES = 16 * 1024 * 1024;\nexport const CODEMODE_DISPATCH_TIMEOUT_MS = 5_000;\nexport const CODEMODE_CLAIM_LEASE_MS = 30_000;\nexport const CODEMODE_CLAIM_HEARTBEAT_MS = 10_000;\nexport const CODEMODE_MAX_CONCURRENT_CALLS_PER_ATTEMPT = 16;\n\nconst sha256 = z.string().regex(/^[0-9a-f]{64}$/u);\nconst serverIdentifier = z\n .string()\n .min(1)\n .max(256)\n .regex(/^[A-Za-z0-9_-]+$/u);\nconst toolIdentifier = z\n .string()\n .min(1)\n .max(512)\n .regex(/^[^\\u0000-\\u001f\\u007f]+$/u);\nconst namespaceSegment = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/u)\n .refine((value) => ![\"__proto__\", \"prototype\", \"constructor\"].includes(value), {\n message: \"unsafe Codemode namespace segment\",\n });\nconst jsonObject = z.record(z.string().max(512), z.json());\n\n/** Opaque authority identity. Display/wire names must never be parsed as authority. */\nexport const AttemptToolIdentity = z\n .object({\n serverId: serverIdentifier,\n toolName: toolIdentifier,\n })\n .strict();\nexport type AttemptToolIdentity = z.infer<typeof AttemptToolIdentity>;\n\n/** Protocol-neutral tool identity shared by MCP, HTTP/SDK, agents, and Codemode. */\nexport const ToolGatewayIdentity = AttemptToolIdentity;\nexport type ToolGatewayIdentity = AttemptToolIdentity;\n\nexport const AttemptToolCatalogIcon = z\n .object({\n src: z.string().min(1).max(8_192),\n mimeType: z.string().min(1).max(128).optional(),\n sizes: z.array(z.string().min(1).max(64)).max(16).optional(),\n theme: z.enum([\"light\", \"dark\"]).optional(),\n })\n .strict();\nexport type AttemptToolCatalogIcon = z.infer<typeof AttemptToolCatalogIcon>;\n\n/** MCP annotations retained without inventing stronger effect guarantees. */\nexport const AttemptToolAnnotations = z\n .object({\n title: z.string().max(512).optional(),\n readOnlyHint: z.boolean().optional(),\n destructiveHint: z.boolean().optional(),\n idempotentHint: z.boolean().optional(),\n openWorldHint: z.boolean().optional(),\n })\n .loose();\nexport type AttemptToolAnnotations = z.infer<typeof AttemptToolAnnotations>;\n\n/** JSON Schema is preserved as received. Runtime byte/node guards remain authoritative. */\nexport const AttemptToolJsonSchema = jsonObject;\nexport type AttemptToolJsonSchema = z.infer<typeof AttemptToolJsonSchema>;\n\nexport const AttemptToolCatalogEntry = z\n .object({\n identity: AttemptToolIdentity,\n /** Exact model-wire projection for this generation, e.g. `slack__search`. */\n modelName: toolIdentifier,\n /** Safe generated Codemode namespace; convenience only, never authority. */\n codemodePath: z.array(namespaceSegment).min(2).max(ATTEMPT_TOOL_CATALOG_MAX_PATH_SEGMENTS),\n title: z.string().min(1).max(512).optional(),\n description: z.string().max(32_768).optional(),\n inputSchema: AttemptToolJsonSchema,\n outputSchema: AttemptToolJsonSchema.optional(),\n annotations: AttemptToolAnnotations.optional(),\n icons: z.array(AttemptToolCatalogIcon).max(16).optional(),\n source: z.enum([\"opengeni\", \"files\", \"docs\", \"mcp\", \"codex_apps\", \"interaction\"]),\n approval: z.enum([\"none\", \"human\", \"policy\"]),\n })\n .strict();\nexport type AttemptToolCatalogEntry = z.infer<typeof AttemptToolCatalogEntry>;\n\n/** One canonical gateway entry. Adapter-specific names are projections, never authority. */\nexport const ToolGatewayCatalogEntry = AttemptToolCatalogEntry;\nexport type ToolGatewayCatalogEntry = AttemptToolCatalogEntry;\n\nexport const ToolGatewayCatalog = z\n .object({\n version: z.literal(TOOL_GATEWAY_CATALOG_VERSION),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n generation: z.number().int().positive(),\n digest: sha256,\n createdAt: z.string().datetime({ offset: true }),\n entries: z.array(ToolGatewayCatalogEntry).max(ATTEMPT_TOOL_CATALOG_MAX_ENTRIES),\n })\n .strict()\n .superRefine((catalog, context) => {\n const identities = new Set<string>();\n const modelNames = new Set<string>();\n const toolPaths = new Set<string>();\n for (const [index, entry] of catalog.entries.entries()) {\n const identity = `${entry.identity.serverId}\\u0000${entry.identity.toolName}`;\n const toolPath = entry.codemodePath.join(\".\");\n if (identities.has(identity)) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\", index, \"identity\"],\n message: \"duplicate tool identity\",\n });\n }\n if (modelNames.has(entry.modelName)) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\", index, \"modelName\"],\n message: \"duplicate model tool name\",\n });\n }\n if (toolPaths.has(toolPath)) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\", index, \"codemodePath\"],\n message: \"duplicate tool path\",\n });\n }\n identities.add(identity);\n modelNames.add(entry.modelName);\n toolPaths.add(toolPath);\n }\n });\nexport type ToolGatewayCatalog = z.infer<typeof ToolGatewayCatalog>;\n\nexport const ToolGatewayCaller = z\n .object({\n kind: z.enum([\"model\", \"codemode\", \"http\", \"mcp\", \"browser\"]),\n subjectId: z.string().min(1).max(1_024),\n })\n .strict();\nexport type ToolGatewayCaller = z.infer<typeof ToolGatewayCaller>;\n\nexport const AttemptToolCatalog = z\n .object({\n version: z.literal(ATTEMPT_TOOL_CATALOG_VERSION),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n generation: z.number().int().positive(),\n digest: sha256,\n createdAt: z.string().datetime({ offset: true }),\n entries: z.array(AttemptToolCatalogEntry).max(ATTEMPT_TOOL_CATALOG_MAX_ENTRIES),\n })\n .strict()\n .superRefine((catalog, context) => {\n const identities = new Set<string>();\n const modelNames = new Set<string>();\n const codemodePaths = new Set<string>();\n for (const [index, entry] of catalog.entries.entries()) {\n const identity = `${entry.identity.serverId}\\u0000${entry.identity.toolName}`;\n const codemodePath = entry.codemodePath.join(\".\");\n if (identities.has(identity)) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\", index, \"identity\"],\n message: \"duplicate tool identity\",\n });\n }\n if (modelNames.has(entry.modelName)) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\", index, \"modelName\"],\n message: \"duplicate model tool name\",\n });\n }\n if (codemodePaths.has(codemodePath)) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\", index, \"codemodePath\"],\n message: \"duplicate Codemode tool path\",\n });\n }\n identities.add(identity);\n modelNames.add(entry.modelName);\n codemodePaths.add(codemodePath);\n }\n });\nexport type AttemptToolCatalog = z.infer<typeof AttemptToolCatalog>;\n\nexport const AttemptToolCaller = z\n .object({\n kind: z.enum([\"model\", \"codemode\"]),\n subjectId: z.string().min(1).max(1_024),\n })\n .strict();\nexport type AttemptToolCaller = z.infer<typeof AttemptToolCaller>;\n\nexport const AttemptToolCall = z\n .object({\n operationId: z.string().uuid(),\n catalogDigest: sha256,\n identity: AttemptToolIdentity,\n arguments: jsonObject,\n caller: AttemptToolCaller,\n })\n .strict();\nexport type AttemptToolCall = z.infer<typeof AttemptToolCall>;\n\nconst McpAnnotations = z.record(z.string().max(256), z.json()).optional();\nconst McpMeta = z.record(z.string().max(512), z.json()).optional();\n\nexport const AttemptToolTextContent = z\n .object({\n type: z.literal(\"text\"),\n text: z.string(),\n annotations: McpAnnotations,\n _meta: McpMeta,\n })\n .loose();\n\nexport const AttemptToolImageContent = z\n .object({\n type: z.literal(\"image\"),\n data: z.string(),\n mimeType: z.string().min(1).max(128),\n annotations: McpAnnotations,\n _meta: McpMeta,\n })\n .loose();\n\nexport const AttemptToolAudioContent = z\n .object({\n type: z.literal(\"audio\"),\n data: z.string(),\n mimeType: z.string().min(1).max(128),\n annotations: McpAnnotations,\n _meta: McpMeta,\n })\n .loose();\n\nexport const AttemptToolResourceLinkContent = z\n .object({\n type: z.literal(\"resource_link\"),\n name: z.string().min(1).max(1_024),\n title: z.string().max(1_024).optional(),\n uri: z.string().min(1).max(16_384),\n description: z.string().max(32_768).optional(),\n mimeType: z.string().max(128).optional(),\n size: z.number().int().nonnegative().optional(),\n icons: z.array(AttemptToolCatalogIcon).max(16).optional(),\n annotations: McpAnnotations,\n _meta: McpMeta,\n })\n .loose();\n\nconst AttemptToolTextResource = z\n .object({\n uri: z.string().min(1).max(16_384),\n mimeType: z.string().max(128).optional(),\n text: z.string(),\n _meta: McpMeta,\n })\n .loose();\n\nconst AttemptToolBlobResource = z\n .object({\n uri: z.string().min(1).max(16_384),\n mimeType: z.string().max(128).optional(),\n blob: z.string(),\n _meta: McpMeta,\n })\n .loose();\n\nexport const AttemptToolEmbeddedResourceContent = z\n .object({\n type: z.literal(\"resource\"),\n resource: z.union([AttemptToolTextResource, AttemptToolBlobResource]),\n annotations: McpAnnotations,\n _meta: McpMeta,\n })\n .loose();\n\nexport const AttemptToolContent = z.discriminatedUnion(\"type\", [\n AttemptToolTextContent,\n AttemptToolImageContent,\n AttemptToolAudioContent,\n AttemptToolResourceLinkContent,\n AttemptToolEmbeddedResourceContent,\n]);\nexport type AttemptToolContent = z.infer<typeof AttemptToolContent>;\n\n/** Exact MCP-shaped result. No output type is fabricated when `outputSchema` is absent. */\nexport const AttemptToolResult = z\n .object({\n content: z.array(AttemptToolContent).max(ATTEMPT_TOOL_CATALOG_MAX_CONTENT_BLOCKS),\n structuredContent: jsonObject.optional(),\n isError: z.boolean().optional(),\n _meta: McpMeta,\n })\n .loose();\nexport type AttemptToolResult = z.infer<typeof AttemptToolResult>;\n\nexport const ToolGatewayResult = AttemptToolResult;\nexport type ToolGatewayResult = AttemptToolResult;\n\nexport const ToolGatewayCallRequest = z\n .object({\n operationId: z.string().uuid().optional(),\n catalogDigest: sha256,\n identity: ToolGatewayIdentity,\n arguments: jsonObject,\n /** Host-owned Site context. Publisher-controlled iframe code cannot set it. */\n siteArtifactId: z.string().uuid().optional(),\n siteVersionId: z.string().uuid().optional(),\n /** Opaque, server-issued, single-use capability for an approval-required call. */\n approvalToken: z\n .string()\n .regex(/^ogta_[A-Za-z0-9_-]{43}$/u)\n .optional(),\n })\n .strict()\n .superRefine(requireCompleteSiteToolContext);\nexport type ToolGatewayCallRequest = z.infer<typeof ToolGatewayCallRequest>;\n\nexport const ToolGatewayApprovalRequest = z\n .object({\n operationId: z.string().uuid(),\n catalogDigest: sha256,\n identity: ToolGatewayIdentity,\n arguments: jsonObject,\n })\n .strict();\nexport type ToolGatewayApprovalRequest = z.infer<typeof ToolGatewayApprovalRequest>;\n\nexport const ToolGatewayApprovalResponse = z\n .object({\n operationId: z.string().uuid(),\n catalogDigest: sha256,\n identity: ToolGatewayIdentity,\n approvalToken: z.string().regex(/^ogta_[A-Za-z0-9_-]{43}$/u),\n expiresAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type ToolGatewayApprovalResponse = z.infer<typeof ToolGatewayApprovalResponse>;\n\nexport const ToolGatewayCallResponse = z\n .object({\n operationId: z.string().uuid(),\n catalogDigest: sha256,\n result: ToolGatewayResult,\n })\n .strict();\nexport type ToolGatewayCallResponse = z.infer<typeof ToolGatewayCallResponse>;\n\nexport const ToolGatewayDeclarationsResponse = z\n .object({\n catalogDigest: sha256,\n moduleSpecifier: z.string().min(1).max(512),\n source: z.string().max(16 * 1024 * 1024),\n })\n .strict();\nexport type ToolGatewayDeclarationsResponse = z.infer<typeof ToolGatewayDeclarationsResponse>;\n\nfunction requireCompleteSiteToolContext(\n value: { siteArtifactId?: string | undefined; siteVersionId?: string | undefined },\n context: z.RefinementCtx,\n): void {\n if ((value.siteArtifactId === undefined) === (value.siteVersionId === undefined)) return;\n context.addIssue({\n code: \"custom\",\n message: \"siteArtifactId and siteVersionId must be provided together\",\n path: [value.siteArtifactId === undefined ? \"siteArtifactId\" : \"siteVersionId\"],\n });\n}\n\nexport const CodemodeOperationState = z.enum([\n \"queued\",\n \"running\",\n \"completed\",\n \"failed\",\n \"outcome_unknown\",\n \"cancelled\",\n]);\nexport type CodemodeOperationState = z.infer<typeof CodemodeOperationState>;\n\n/**\n * Durable, attempt-fenced Codemode operation. `requestDigest` binds an\n * idempotency key to one exact call; callers may safely poll/retry the same\n * operation id but may never repurpose it.\n */\nexport const CodemodeOperation = z\n .object({\n version: z.literal(CODEMODE_OPERATION_VERSION),\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n catalogDigest: sha256,\n requestDigest: sha256,\n identity: AttemptToolIdentity,\n arguments: jsonObject,\n caller: AttemptToolCaller.refine((caller) => caller.kind === \"codemode\", {\n message: \"Codemode operation caller must be codemode\",\n }),\n state: CodemodeOperationState,\n result: AttemptToolResult.nullable(),\n errorCode: z.string().min(1).max(128).nullable(),\n errorMessage: z.string().min(1).max(4_096).nullable(),\n createdAt: z.string().datetime({ offset: true }),\n claimedAt: z.string().datetime({ offset: true }).nullable(),\n executionStartedAt: z.string().datetime({ offset: true }).nullable(),\n completedAt: z.string().datetime({ offset: true }).nullable(),\n updatedAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type CodemodeOperation = z.infer<typeof CodemodeOperation>;\n\nexport const CodemodeCallRequest = z\n .object({\n operationId: z.string().uuid(),\n catalogDigest: sha256,\n identity: AttemptToolIdentity,\n arguments: jsonObject,\n })\n .strict();\nexport type CodemodeCallRequest = z.infer<typeof CodemodeCallRequest>;\n\nexport const CodemodeCallSubmission = z\n .object({\n operation: CodemodeOperation,\n dispatch: z.enum([\"accepted\", \"already_running\", \"terminal\", \"unavailable\", \"rejected\"]),\n })\n .strict();\nexport type CodemodeCallSubmission = z.infer<typeof CodemodeCallSubmission>;\n\n/** Tiny NATS wake-up. Postgres, never the broker payload, is durable truth. */\nexport const CodemodeDispatchRequest = z\n .object({\n version: z.literal(CODEMODE_OPERATION_VERSION),\n operationId: z.string().uuid(),\n catalogDigest: sha256,\n })\n .strict();\nexport type CodemodeDispatchRequest = z.infer<typeof CodemodeDispatchRequest>;\n\nexport const CodemodeDispatchAck = z\n .object({\n version: z.literal(CODEMODE_OPERATION_VERSION),\n operationId: z.string().uuid(),\n status: z.enum([\"accepted\", \"already_running\", \"terminal\", \"unavailable\", \"rejected\"]),\n })\n .strict();\nexport type CodemodeDispatchAck = z.infer<typeof CodemodeDispatchAck>;\n","import { z } from \"zod\";\n\nexport const MCP_OAUTH_SCOPE = \"mcp:access\" as const;\nexport const MCP_OAUTH_ACCESS_TOKEN_TTL_SECONDS = 15 * 60;\nexport const MCP_OAUTH_REFRESH_TOKEN_TTL_SECONDS = 30 * 24 * 60 * 60;\nexport const MCP_OAUTH_AUTHORIZATION_CODE_TTL_SECONDS = 5 * 60;\nexport const MCP_OAUTH_CONSENT_TTL_SECONDS = 10 * 60;\n\nconst RedirectUri = z.string().url().max(2_048);\n\nexport const McpOAuthClientRegistrationRequest = z\n .object({\n redirect_uris: z.array(RedirectUri).min(1).max(16),\n client_name: z.string().trim().min(1).max(200).optional(),\n application_type: z.enum([\"native\", \"web\"]).optional(),\n token_endpoint_auth_method: z.literal(\"none\").default(\"none\"),\n scope: z.literal(MCP_OAUTH_SCOPE).optional(),\n grant_types: z\n .array(z.enum([\"authorization_code\", \"refresh_token\"]))\n .min(1)\n .max(2)\n .refine((grantTypes) => grantTypes.includes(\"authorization_code\"), {\n message: \"authorization_code grant is required\",\n })\n .default([\"authorization_code\", \"refresh_token\"]),\n response_types: z.array(z.literal(\"code\")).min(1).max(1).default([\"code\"]),\n })\n .strict();\nexport type McpOAuthClientRegistrationRequest = z.infer<typeof McpOAuthClientRegistrationRequest>;\n\nexport const McpOAuthClientRegistrationResponse = McpOAuthClientRegistrationRequest.extend({\n client_id: z.string().min(1).max(256),\n client_id_issued_at: z.number().int().nonnegative(),\n});\nexport type McpOAuthClientRegistrationResponse = z.infer<typeof McpOAuthClientRegistrationResponse>;\n\nexport const McpOAuthTokenResponse = z.object({\n access_token: z.string().min(1),\n token_type: z.literal(\"Bearer\"),\n expires_in: z.number().int().positive(),\n refresh_token: z.string().min(1).optional(),\n scope: z.literal(MCP_OAUTH_SCOPE),\n});\nexport type McpOAuthTokenResponse = z.infer<typeof McpOAuthTokenResponse>;\n\nexport const McpOAuthProtectedResourceMetadata = z.object({\n resource: z.string().url(),\n authorization_servers: z.array(z.string().url()).min(1).max(1),\n scopes_supported: z.array(z.literal(MCP_OAUTH_SCOPE)).length(1),\n bearer_methods_supported: z.array(z.literal(\"header\")).length(1),\n});\nexport type McpOAuthProtectedResourceMetadata = z.infer<typeof McpOAuthProtectedResourceMetadata>;\n\nexport const McpOAuthAuthorizationServerMetadata = z.object({\n issuer: z.string().url(),\n authorization_endpoint: z.string().url(),\n token_endpoint: z.string().url(),\n registration_endpoint: z.string().url(),\n response_types_supported: z.array(z.literal(\"code\")).length(1),\n grant_types_supported: z.array(z.enum([\"authorization_code\", \"refresh_token\"])).length(2),\n code_challenge_methods_supported: z.array(z.literal(\"S256\")).length(1),\n token_endpoint_auth_methods_supported: z.array(z.literal(\"none\")).length(1),\n scopes_supported: z.array(z.literal(MCP_OAUTH_SCOPE)).length(1),\n authorization_response_iss_parameter_supported: z.literal(true),\n});\nexport type McpOAuthAuthorizationServerMetadata = z.infer<\n typeof McpOAuthAuthorizationServerMetadata\n>;\n","import { z } from \"zod\";\n\n/** Model-visible overflow of one tool result. Exact bytes live on a workspace File. */\nexport const TOOL_RESULT_SPILLED_TYPE = \"tool_result_spilled\" as const;\nexport const TOOL_RESULT_SPILL_MEDIA_TYPE = \"application/json\" as const;\nexport const TOOL_RESULT_SPILL_MOUNT_PATH = \"tool-results\" as const;\n\nconst LOWERCASE_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\n\nexport const ToolResultSpilledReceipt = z\n .object({\n type: z.literal(TOOL_RESULT_SPILLED_TYPE),\n sandboxPath: z.string().min(1).max(4_096).nullable(),\n fileId: z.string().regex(LOWERCASE_UUID),\n byteSize: z.number().int().positive().safe(),\n mediaType: z.literal(TOOL_RESULT_SPILL_MEDIA_TYPE),\n })\n .strict();\nexport type ToolResultSpilledReceipt = z.infer<typeof ToolResultSpilledReceipt>;\n\nexport function isToolResultSpilledReceipt(value: unknown): value is ToolResultSpilledReceipt {\n return ToolResultSpilledReceipt.safeParse(value).success;\n}\n\nexport function toolResultSpillSandboxPath(filename: string): string {\n return `/workspace/${TOOL_RESULT_SPILL_MOUNT_PATH}/${filename}`;\n}\n\nexport function toolResultSpillFilename(operationId: string): string {\n const normalized = operationId.toLowerCase();\n if (!LOWERCASE_UUID.test(normalized)) {\n throw new Error(\"tool result spill filename requires a lowercase UUID operation id\");\n }\n return `${normalized}.json`;\n}\n","import { z } from \"zod\";\nimport { RetainedArtifactReferenceSchema } from \"./retained-output\";\n\nexport const INTERACTION_PROTOCOL_VERSION = 1 as const;\nexport const BROWSER_CONTROL_PROTOCOL_VERSION = INTERACTION_PROTOCOL_VERSION;\nexport const BROWSER_CONTROL_WEBSOCKET_PROTOCOL = \"opengeni.browser.v1\" as const;\nexport const COMPUTER_CONTROL_WEBSOCKET_PROTOCOL = \"opengeni.computer.v1\" as const;\nexport const COMPUTER_RFB_WEBSOCKET_PROTOCOL = \"opengeni.computer.rfb.v1\" as const;\nexport const BROWSER_CONTROL_WEBSOCKET_BEARER_PREFIX = \"opengeni.auth.\" as const;\nexport const BROWSER_CONTROL_MAX_JSON_BYTES = 40 * 1024 * 1024;\nexport const BROWSER_CONTROL_MAX_FRAME_HEADER_BYTES = 64 * 1024;\nexport const BROWSER_PROFILE_ARTIFACT_FORMAT =\n \"opengeni.chromium-profile.v1+gzip+aes-256-gcm\" as const;\nexport const BROWSER_STATE_ARTIFACT_CONTENT_TYPE =\n \"application/vnd.opengeni.browser-profile+octet-stream\" as const;\nexport const INTERACTION_MAX_SEMANTIC_NODES = 10_000;\nexport const INTERACTION_MAX_CHANGED_NODES = 2_000;\nexport const INTERACTION_MAX_DIAGNOSTIC_ENTRIES = 1_000;\nexport const INTERACTION_MAX_ACTIONS_PER_BATCH = 32;\nexport const INTERACTION_MAX_WORKSPACE_FILES_PER_COMMAND = 100;\nexport const INTERACTION_MAX_CLIPBOARD_BYTES = 1024 * 1024;\n\n/**\n * Latest-wins workspace invalidation for Browser/Computer resources. This is\n * deliberately a cursor snapshot rather than a durable event-log entry:\n * consumers refetch authoritative resource lists whenever `revision` advances.\n */\nexport const WorkspaceInteractionRevisionEvent = z\n .object({\n workspaceId: z.string().uuid(),\n sequence: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n revision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n type: z.literal(\"workspace.interaction.changed\"),\n occurredAt: z.string().datetime({ offset: true }),\n })\n .strict()\n .refine((event) => event.sequence === event.revision, {\n message: \"interaction event sequence must equal revision\",\n path: [\"sequence\"],\n });\nexport type WorkspaceInteractionRevisionEvent = z.infer<typeof WorkspaceInteractionRevisionEvent>;\n\nconst opaqueGeneration = z\n .string()\n .min(1)\n .max(256)\n .regex(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/u);\nconst boundedOpaqueId = z\n .string()\n .min(1)\n .max(512)\n .regex(/^[^\\u0000-\\u001f\\u007f]+$/u);\nconst boundedUrl = z\n .string()\n .min(1)\n .max(16_384)\n .refine(\n (value) => {\n try {\n return new URL(value).href.length > 0;\n } catch {\n return false;\n }\n },\n { message: \"URL must be absolute\" },\n );\nconst boundedHttpUrl = boundedUrl.refine(\n (value) => {\n const url = new URL(value);\n return (\n (url.protocol === \"http:\" || url.protocol === \"https:\") && !url.username && !url.password\n );\n },\n { message: \"URL must use HTTP(S) and cannot contain credentials\" },\n);\nconst canonicalWebOrigin = z\n .string()\n .min(1)\n .max(2_048)\n .refine(\n (value) => {\n try {\n const url = new URL(value);\n return (\n (url.protocol === \"http:\" || url.protocol === \"https:\") &&\n !url.username &&\n !url.password &&\n value === url.origin\n );\n } catch {\n return false;\n }\n },\n { message: \"origin must be a canonical HTTP(S) origin\" },\n );\nconst sha256Hex = z.string().regex(/^[0-9a-f]{64}$/u);\n\nexport const InteractionPlacement = z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"sandbox_group\"),\n sandboxGroupId: z.string().uuid(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"connected_machine\"),\n sandboxId: z.string().uuid(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"attached_device\"),\n deviceId: z.string().uuid(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"external_provider\"),\n providerId: boundedOpaqueId,\n placementId: boundedOpaqueId,\n })\n .strict(),\n]);\nexport type InteractionPlacement = z.infer<typeof InteractionPlacement>;\n\nexport const InteractionControllerBinding = z\n .object({\n controllerId: boundedOpaqueId,\n controllerGeneration: opaqueGeneration,\n placementInstanceId: boundedOpaqueId,\n })\n .strict();\nexport type InteractionControllerBinding = z.infer<typeof InteractionControllerBinding>;\n\nexport const InteractionAssociation = z\n .object({\n sessionId: z.string().uuid(),\n turnId: z.string().uuid().nullable(),\n attemptId: z.string().uuid().nullable(),\n relationship: z.enum([\"created\", \"using\", \"observing\", \"related\"]),\n actorSubjectId: z.string().min(1).max(1_024),\n lastUsedAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type InteractionAssociation = z.infer<typeof InteractionAssociation>;\n\nexport const InteractionActor = z\n .object({\n kind: z.enum([\"agent\", \"human\", \"system\"]),\n subjectId: z.string().min(1).max(1_024),\n sessionId: z.string().uuid().optional(),\n turnId: z.string().uuid().optional(),\n attemptId: z.string().uuid().optional(),\n executionGeneration: z.number().int().positive().optional(),\n })\n .strict()\n .superRefine((actor, context) => {\n const attemptFields = [actor.turnId, actor.attemptId, actor.executionGeneration];\n const attemptFieldCount = attemptFields.filter((value) => value !== undefined).length;\n if (attemptFieldCount !== 0 && (attemptFieldCount !== 3 || actor.sessionId === undefined)) {\n context.addIssue({\n code: \"custom\",\n message: \"turnId, attemptId, executionGeneration, and sessionId must be supplied together\",\n });\n }\n });\nexport type InteractionActor = z.infer<typeof InteractionActor>;\n\nexport const InteractionLifecycle = z.enum([\n \"starting\",\n \"active\",\n \"suspending\",\n \"suspended\",\n \"restoring\",\n \"repair_required\",\n \"lost\",\n \"ending\",\n \"ended\",\n \"failed\",\n]);\nexport type InteractionLifecycle = z.infer<typeof InteractionLifecycle>;\n\nexport const BrowserSessionCapabilities = z\n .object({\n semanticObservation: z.boolean(),\n screenshots: z.boolean(),\n liveFrames: z.boolean(),\n humanInput: z.boolean(),\n tabs: z.boolean(),\n downloads: z.boolean(),\n uploads: z.boolean(),\n clipboard: z.boolean(),\n permissions: z.boolean(),\n diagnostics: z.boolean(),\n rawCdp: z.boolean(),\n linkedComputer: z.boolean(),\n privateCheckpoint: z.boolean(),\n identityPublication: z.boolean(),\n parallelTargets: z.boolean(),\n })\n .strict();\nexport type BrowserSessionCapabilities = z.infer<typeof BrowserSessionCapabilities>;\n\nexport const BrowserSession = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n name: z.string().trim().min(1).max(200),\n lifecycle: InteractionLifecycle,\n placement: InteractionPlacement,\n controller: InteractionControllerBinding.nullable(),\n driverId: boundedOpaqueId,\n engine: z.enum([\"chromium\", \"chrome\", \"firefox\", \"webkit\", \"lightpanda\", \"external\"]),\n engineVersion: z.string().min(1).max(256).nullable(),\n headless: z.boolean(),\n identityId: z.string().uuid().nullable(),\n baseRevisionId: z.string().uuid().nullable(),\n networkRouteId: z.string().uuid().nullable(),\n linkedComputerSessionId: z.string().uuid().nullable(),\n capabilities: BrowserSessionCapabilities,\n associations: z.array(InteractionAssociation).max(1_000),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string().datetime({ offset: true }),\n lastUsedAt: z.string().datetime({ offset: true }),\n failureCode: boundedOpaqueId.nullable(),\n })\n .strict();\nexport type BrowserSession = z.infer<typeof BrowserSession>;\n\n/** Controller-private, BrowserSession-scoped clipboard. This is deliberately\n * distinct from a ComputerSession/host OS clipboard so concurrent browsers do\n * not exchange ambient machine state. */\nexport const BrowserClipboard = z\n .object({\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n revision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n text: z\n .string()\n .max(INTERACTION_MAX_CLIPBOARD_BYTES)\n .refine(\n (value) => new TextEncoder().encode(value).byteLength <= INTERACTION_MAX_CLIPBOARD_BYTES,\n { message: \"browser clipboard text exceeds its UTF-8 byte envelope\" },\n ),\n source: z.enum([\"empty\", \"write\", \"clear\", \"copy\", \"paste\"]),\n sourceTargetId: boundedOpaqueId.nullable(),\n updatedAt: z.string().datetime({ offset: true }).nullable(),\n })\n .strict()\n .superRefine((clipboard, context) => {\n if (clipboard.revision === 0) {\n if (\n clipboard.text !== \"\" ||\n clipboard.source !== \"empty\" ||\n clipboard.sourceTargetId !== null ||\n clipboard.updatedAt !== null\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"initial browser clipboard state must be empty\",\n });\n }\n } else if (clipboard.source === \"empty\" || clipboard.updatedAt === null) {\n context.addIssue({\n code: \"custom\",\n message: \"updated browser clipboard state requires a source and timestamp\",\n });\n }\n });\nexport type BrowserClipboard = z.infer<typeof BrowserClipboard>;\n\n/** One live Chrome-profile bridge installed on an enrolled machine. This is a\n * transport endpoint, not saved browser/login state: BrowserIdentity remains\n * the immutable, reusable state abstraction. */\nexport const AttachedBrowserDeviceCapabilities = z\n .object({\n tabInventory: z.boolean(),\n debuggerAttachment: z.boolean(),\n semanticObservation: z.boolean(),\n screenshots: z.boolean(),\n liveFrames: z.boolean(),\n humanInput: z.boolean(),\n diagnostics: z.boolean(),\n rawCdp: z.boolean(),\n linkedComputer: z.boolean(),\n })\n .strict();\nexport type AttachedBrowserDeviceCapabilities = z.infer<typeof AttachedBrowserDeviceCapabilities>;\n\nexport const AttachedBrowserDeviceAnnouncement = z\n .object({\n id: z.string().uuid(),\n name: z.string().trim().min(1).max(200),\n profileLabel: z.string().trim().min(1).max(200).nullable(),\n browserName: z.string().trim().min(1).max(100),\n browserVersion: z.string().trim().min(1).max(256),\n extensionVersion: z.string().trim().min(1).max(256),\n platform: z.enum([\"linux\", \"macos\", \"windows\"]),\n architecture: z.enum([\"x64\", \"arm64\"]),\n connectionGeneration: opaqueGeneration,\n inventoryRevision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n tabCount: z.number().int().nonnegative().max(100_000),\n capabilities: AttachedBrowserDeviceCapabilities,\n })\n .strict();\nexport type AttachedBrowserDeviceAnnouncement = z.infer<typeof AttachedBrowserDeviceAnnouncement>;\n\nexport const AttachedBrowserInventorySnapshot = z\n .object({\n bridgeGeneration: opaqueGeneration,\n revision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n devices: z.array(AttachedBrowserDeviceAnnouncement).max(10_000),\n })\n .strict()\n .superRefine((snapshot, context) => {\n const ids = new Set<string>();\n for (const [index, device] of snapshot.devices.entries()) {\n if (ids.has(device.id)) {\n context.addIssue({\n code: \"custom\",\n path: [\"devices\", index, \"id\"],\n message: \"device ids must be unique within one inventory snapshot\",\n });\n }\n ids.add(device.id);\n }\n });\nexport type AttachedBrowserInventorySnapshot = z.infer<typeof AttachedBrowserInventorySnapshot>;\n\nexport const AttachedBrowserDevice = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n enrollmentId: z.string().uuid(),\n name: z.string().trim().min(1).max(200),\n profileLabel: z.string().trim().min(1).max(200).nullable(),\n browserName: z.string().trim().min(1).max(100),\n browserVersion: z.string().trim().min(1).max(256),\n extensionVersion: z.string().trim().min(1).max(256),\n platform: z.enum([\"linux\", \"macos\", \"windows\"]),\n architecture: z.enum([\"x64\", \"arm64\"]),\n state: z.enum([\"connected\", \"disconnected\"]),\n connectionGeneration: opaqueGeneration,\n inventoryRevision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n tabCount: z.number().int().nonnegative().max(100_000),\n capabilities: AttachedBrowserDeviceCapabilities,\n lastSeenAt: z.string().datetime({ offset: true }),\n disconnectedAt: z.string().datetime({ offset: true }).nullable(),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n })\n .strict()\n .superRefine((device, context) => {\n if ((device.state === \"connected\") !== (device.disconnectedAt === null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"disconnectedAt\"],\n message: \"connected state and disconnectedAt must agree\",\n });\n }\n });\nexport type AttachedBrowserDevice = z.infer<typeof AttachedBrowserDevice>;\n\n/** One enrolled machine agent currently reporting its browser-bridge inventory.\n * A bridge with zero devices is operational but has no Chrome profile connected\n * through the OpenGeni extension yet. */\nexport const AttachedBrowserBridge = z\n .object({\n enrollmentId: z.string().uuid(),\n state: z.enum([\"online\", \"offline\"]),\n bridgeGeneration: opaqueGeneration,\n inventoryRevision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n connectedProfileCount: z.number().int().nonnegative().max(10_000),\n lastSeenAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type AttachedBrowserBridge = z.infer<typeof AttachedBrowserBridge>;\n\nexport const AttachedBrowserDeviceListResponse = z\n .object({\n revision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n bridges: z.array(AttachedBrowserBridge).max(10_000),\n devices: z.array(AttachedBrowserDevice).max(10_000),\n })\n .strict();\nexport type AttachedBrowserDeviceListResponse = z.infer<typeof AttachedBrowserDeviceListResponse>;\n\nexport const AttachedBrowserTab = z\n .object({\n id: boundedOpaqueId,\n windowId: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n index: z.number().int().nonnegative().max(100_000),\n title: z.string().max(8_192),\n url: boundedUrl.nullable(),\n active: z.boolean(),\n pinned: z.boolean(),\n incognito: z.boolean(),\n audible: z.boolean(),\n discarded: z.boolean(),\n controllable: z.boolean(),\n unavailableReason: z.string().trim().min(1).max(2_048).nullable(),\n })\n .strict()\n .superRefine((tab, context) => {\n if (tab.controllable === (tab.unavailableReason !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"unavailableReason\"],\n message: \"unavailableReason is required exactly when a tab is not controllable\",\n });\n }\n });\nexport type AttachedBrowserTab = z.infer<typeof AttachedBrowserTab>;\n\nexport const AttachedBrowserTabListResponse = z\n .object({\n deviceId: z.string().uuid(),\n connectionGeneration: opaqueGeneration,\n inventoryRevision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n tabs: z.array(AttachedBrowserTab).max(100_000),\n })\n .strict();\nexport type AttachedBrowserTabListResponse = z.infer<typeof AttachedBrowserTabListResponse>;\n\nexport const BrowserIdentityStatus = z.enum([\"active\", \"archived\"]);\nexport type BrowserIdentityStatus = z.infer<typeof BrowserIdentityStatus>;\n\nexport const BrowserRevisionComponentKind = z.enum([\n \"chromium_profile\",\n \"normalized_web_state\",\n \"provider_snapshot\",\n]);\nexport type BrowserRevisionComponentKind = z.infer<typeof BrowserRevisionComponentKind>;\n\nexport const BrowserRevisionPortability = z.enum([\"portable\", \"provider_bound\", \"placement_bound\"]);\nexport type BrowserRevisionPortability = z.infer<typeof BrowserRevisionPortability>;\n\n/** Public, non-secret compatibility declaration for one immutable state\n * component. Object keys, provider snapshot handles, and encryption material\n * never enter this contract. */\nexport const BrowserRevisionMaterialization = z\n .object({\n portability: BrowserRevisionPortability,\n reason: z.string().trim().min(1).max(2_048).nullable(),\n platform: z.enum([\"linux\", \"macos\", \"windows\"]).nullable(),\n architecture: z.enum([\"x64\", \"arm64\"]).nullable(),\n engine: z.enum([\"chromium\", \"chrome\", \"firefox\", \"webkit\", \"lightpanda\", \"external\"]),\n engineVersion: z.string().min(1).max(256).nullable(),\n driverId: boundedOpaqueId,\n driverSchemaVersion: z.number().int().positive().max(1_000_000),\n profileCrypto: z.enum([\"chromium_basic\", \"chromium_mock_keychain\", \"platform_bound\"]),\n providerId: boundedOpaqueId.nullable(),\n placement: InteractionPlacement.nullable(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.portability === \"portable\" && (value.providerId || value.placement)) {\n context.addIssue({\n code: \"custom\",\n message: \"portable state cannot carry a binding\",\n });\n }\n if (\n value.portability === \"provider_bound\" &&\n (!value.providerId || value.placement || !value.reason)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"provider-bound state requires one provider and reason\",\n });\n }\n if (\n value.portability === \"placement_bound\" &&\n (!value.placement || value.providerId || !value.reason)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"placement-bound state requires one placement and reason\",\n });\n }\n if (value.profileCrypto === \"platform_bound\" && value.portability !== \"placement_bound\") {\n context.addIssue({\n code: \"custom\",\n message: \"platform-bound profile encryption requires placement-bound state\",\n });\n }\n });\nexport type BrowserRevisionMaterialization = z.infer<typeof BrowserRevisionMaterialization>;\n\nexport const BrowserRevisionComponent = z\n .object({\n id: z.string().uuid(),\n kind: BrowserRevisionComponentKind,\n format: boundedOpaqueId,\n artifactDigest: sha256Hex,\n sizeBytes: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n materialization: BrowserRevisionMaterialization,\n })\n .strict();\nexport type BrowserRevisionComponent = z.infer<typeof BrowserRevisionComponent>;\n\nexport const BrowserRevision = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n identityId: z.string().uuid(),\n parentRevisionId: z.string().uuid().nullable(),\n ordinal: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n sourceBrowserSessionId: z.string().uuid(),\n manifestDigest: sha256Hex,\n components: z.array(BrowserRevisionComponent).min(1).max(16),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type BrowserRevision = z.infer<typeof BrowserRevision>;\n\nexport const BrowserIdentity = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n name: z.string().trim().min(1).max(200),\n status: BrowserIdentityStatus,\n version: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n defaultRevisionId: z.string().uuid().nullable(),\n headGeneration: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n revisionCount: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type BrowserIdentity = z.infer<typeof BrowserIdentity>;\n\n/** A non-secret reference to credential authority held by OpenGeni Connections.\n * The subject and provider bindings are copied when the browser-auth resource is\n * configured so a later agent cannot swap the UUID to another credential. */\nexport const InteractionCredentialAuthorityRef = z\n .object({\n connectionId: z.string().uuid(),\n connectionSubjectId: z.string().min(1).max(1_024).nullable(),\n providerDomain: z.string().trim().min(1).max(512),\n })\n .strict();\nexport type InteractionCredentialAuthorityRef = z.infer<typeof InteractionCredentialAuthorityRef>;\n\nexport const NetworkRouteStatus = z.enum([\"active\", \"archived\"]);\nexport type NetworkRouteStatus = z.infer<typeof NetworkRouteStatus>;\n\nexport const NetworkRouteConfiguration = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"direct\") }).strict(),\n z\n .object({\n kind: z.literal(\"proxy\"),\n protocol: z.enum([\"http\", \"https\", \"socks5\"]),\n host: z.string().trim().min(1).max(253),\n port: z.number().int().min(1).max(65_535),\n credential: InteractionCredentialAuthorityRef.nullable(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"managed\"),\n providerId: boundedOpaqueId,\n routeId: boundedOpaqueId,\n egressClass: z.enum([\"datacenter\", \"residential\", \"isp\"]),\n region: z.string().trim().min(1).max(128).nullable(),\n credential: InteractionCredentialAuthorityRef.nullable(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"tunnel\"),\n placement: InteractionPlacement,\n tunnelId: boundedOpaqueId,\n })\n .strict(),\n]);\nexport type NetworkRouteConfiguration = z.infer<typeof NetworkRouteConfiguration>;\n\nexport const NetworkRouteConsistency = z\n .object({\n dns: z.enum([\"placement\", \"proxy\", \"provider\"]),\n expectedPublicIp: z.string().trim().min(1).max(128).nullable(),\n expectedRegion: z.string().trim().min(1).max(128).nullable(),\n locale: z.string().trim().min(1).max(64).nullable(),\n timezone: z.string().trim().min(1).max(128).nullable(),\n geolocation: z\n .object({\n latitude: z.number().finite().min(-90).max(90),\n longitude: z.number().finite().min(-180).max(180),\n accuracyMeters: z.number().finite().positive().max(1_000_000),\n })\n .strict()\n .nullable(),\n webRtc: z.enum([\"default\", \"disable_non_proxied_udp\", \"proxy_only\"]),\n stability: z.enum([\"session\", \"sticky\", \"persistent\"]),\n })\n .strict();\nexport type NetworkRouteConsistency = z.infer<typeof NetworkRouteConsistency>;\n\nexport function interactionPlacementsEqual(\n left: InteractionPlacement,\n right: InteractionPlacement,\n): boolean {\n if (left.kind !== right.kind) return false;\n switch (left.kind) {\n case \"sandbox_group\":\n return right.kind === \"sandbox_group\" && left.sandboxGroupId === right.sandboxGroupId;\n case \"connected_machine\":\n return right.kind === \"connected_machine\" && left.sandboxId === right.sandboxId;\n case \"attached_device\":\n return right.kind === \"attached_device\" && left.deviceId === right.deviceId;\n case \"external_provider\":\n return (\n right.kind === \"external_provider\" &&\n left.providerId === right.providerId &&\n left.placementId === right.placementId\n );\n }\n}\n\n/** One secret-free compatibility rule shared by configuration, persistence,\n * and launch. `null` placement means the ordinary managed sandbox default. */\nexport function networkRoutePlacementCompatibilityIssue(\n configuration: NetworkRouteConfiguration,\n consistency: NetworkRouteConsistency,\n placement: InteractionPlacement | null,\n): string | null {\n if (configuration.kind === \"tunnel\") {\n if (!placement || !interactionPlacementsEqual(configuration.placement, placement)) {\n return \"Tunnel route is bound to another placement\";\n }\n }\n if (configuration.kind === \"managed\") {\n if (placement?.kind !== \"external_provider\") {\n return \"Managed NetworkRoutes require an external browser provider placement\";\n }\n if (configuration.providerId !== placement.providerId) {\n return \"Managed NetworkRoute belongs to another external browser provider\";\n }\n if (configuration.credential !== null) {\n return \"Managed provider routes cannot use a separate proxy credential\";\n }\n if (consistency.dns !== \"provider\") {\n return \"Managed provider routes require provider DNS\";\n }\n if (configuration.providerId === \"browserbase\") {\n if (configuration.routeId !== \"default\" || configuration.egressClass !== \"residential\") {\n return \"Browserbase supports only its default managed residential route\";\n }\n if (configuration.region !== null && !/^[A-Za-z]{2}$/u.test(configuration.region)) {\n return \"Browserbase managed route region must be a two-letter country code\";\n }\n if (consistency.stability !== \"session\") {\n return \"Browserbase managed routing cannot promise a stable IP across sessions\";\n }\n } else if (configuration.providerId !== \"kernel\") {\n return `Managed NetworkRoute provider ${configuration.providerId} is unsupported`;\n }\n return null;\n }\n if (placement?.kind === \"external_provider\") {\n return \"External browser providers require a provider-managed NetworkRoute\";\n }\n const expectedDns = configuration.kind === \"proxy\" ? \"proxy\" : \"placement\";\n if (consistency.dns !== expectedDns) {\n return `Network route ${configuration.kind} cannot provide ${consistency.dns} DNS`;\n }\n if (consistency.webRtc === \"proxy_only\" && configuration.kind !== \"proxy\") {\n return \"WebRTC proxy-only routing requires a proxy network route\";\n }\n if (placement?.kind === \"attached_device\") {\n if (configuration.kind === \"proxy\") {\n return \"Attached Chrome cannot change its process-scoped proxy configuration\";\n }\n if (\n consistency.locale !== null ||\n consistency.timezone !== null ||\n consistency.geolocation !== null ||\n consistency.webRtc !== \"default\"\n ) {\n return \"Attached Chrome cannot change process-scoped route emulation\";\n }\n }\n return null;\n}\n\nexport const NetworkRoute = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n name: z.string().trim().min(1).max(200),\n status: NetworkRouteStatus,\n configuration: NetworkRouteConfiguration,\n consistency: NetworkRouteConsistency,\n version: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type NetworkRoute = z.infer<typeof NetworkRoute>;\n\nexport const NetworkRouteListResponse = z\n .object({\n revision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n routes: z.array(NetworkRoute).max(10_000),\n })\n .strict();\nexport type NetworkRouteListResponse = z.infer<typeof NetworkRouteListResponse>;\n\nexport const CreateNetworkRouteRequest = z\n .object({\n operationId: z.string().uuid(),\n name: z.string().trim().min(1).max(200),\n configuration: NetworkRouteConfiguration,\n consistency: NetworkRouteConsistency,\n })\n .strict();\nexport type CreateNetworkRouteRequest = z.infer<typeof CreateNetworkRouteRequest>;\n\nexport const UpdateNetworkRouteRequest = z\n .object({\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n name: z.string().trim().min(1).max(200).optional(),\n status: NetworkRouteStatus.optional(),\n configuration: NetworkRouteConfiguration.optional(),\n consistency: NetworkRouteConsistency.optional(),\n })\n .strict()\n .refine(\n (value) =>\n value.name !== undefined ||\n value.status !== undefined ||\n value.configuration !== undefined ||\n value.consistency !== undefined,\n { message: \"network route update is empty\" },\n );\nexport type UpdateNetworkRouteRequest = z.infer<typeof UpdateNetworkRouteRequest>;\n\nexport const NetworkRouteMutationResponse = z\n .object({\n route: NetworkRoute,\n operationId: z.string().uuid(),\n replayed: z.boolean(),\n })\n .strict();\nexport type NetworkRouteMutationResponse = z.infer<typeof NetworkRouteMutationResponse>;\n\nexport const SiteAuthFieldPurpose = z.enum([\"identifier\", \"password\", \"secret\", \"totp\"]);\nexport type SiteAuthFieldPurpose = z.infer<typeof SiteAuthFieldPurpose>;\n\nexport const SiteAuthAuthority = z.discriminatedUnion(\"kind\", [\n z\n .object({\n id: boundedOpaqueId,\n kind: z.literal(\"connection_fields\"),\n label: z.string().trim().min(1).max(200),\n credential: InteractionCredentialAuthorityRef,\n fields: z\n .array(\n z\n .object({\n id: boundedOpaqueId,\n purpose: SiteAuthFieldPurpose,\n credentialKey: z.string().trim().min(1).max(256),\n digits: z.number().int().min(6).max(10).optional(),\n periodSeconds: z.number().int().min(15).max(300).optional(),\n algorithm: z.enum([\"sha1\", \"sha256\", \"sha512\"]).optional(),\n })\n .strict()\n .superRefine((field, context) => {\n const totp = field.purpose === \"totp\";\n if (!totp && (field.digits || field.periodSeconds || field.algorithm)) {\n context.addIssue({\n code: \"custom\",\n message: \"TOTP parameters require purpose=totp\",\n });\n }\n }),\n )\n .min(1)\n .max(32),\n })\n .strict(),\n z\n .object({\n id: boundedOpaqueId,\n kind: z.literal(\"human\"),\n label: z.string().trim().min(1).max(200),\n fields: z\n .array(z.object({ id: boundedOpaqueId, purpose: SiteAuthFieldPurpose }).strict())\n .max(32),\n })\n .strict(),\n z\n .object({\n id: boundedOpaqueId,\n kind: z.literal(\"external_provider\"),\n label: z.string().trim().min(1).max(200),\n adapterId: boundedOpaqueId,\n /** Opaque provider-owned auth-connection reference. It is meaningful\n * only to the named adapter and never treated as credential material. */\n connectionId: boundedOpaqueId,\n credential: InteractionCredentialAuthorityRef.nullable(),\n })\n .strict(),\n]);\nexport type SiteAuthAuthority = z.infer<typeof SiteAuthAuthority>;\n\nexport const SiteAuthMethod = z\n .object({\n id: boundedOpaqueId,\n kind: z.enum([\"password\", \"sso\", \"magic_link\", \"passkey\", \"external\"]),\n label: z.string().trim().min(1).max(200),\n authorityIds: z.array(boundedOpaqueId).min(1).max(32),\n })\n .strict();\nexport type SiteAuthMethod = z.infer<typeof SiteAuthMethod>;\n\nexport const SiteAuthHealthPolicy = z\n .object({\n mode: z.enum([\"on_use\", \"maintained\"]),\n intervalSeconds: z.number().int().min(60).max(31_536_000).nullable(),\n automaticRepair: z.boolean(),\n })\n .strict()\n .superRefine((policy, context) => {\n if (policy.mode === \"maintained\" && policy.intervalSeconds === null) {\n context.addIssue({ code: \"custom\", message: \"maintained auth requires an interval\" });\n }\n if (policy.mode === \"on_use\" && policy.intervalSeconds !== null) {\n context.addIssue({ code: \"custom\", message: \"on-use auth cannot have an interval\" });\n }\n });\nexport type SiteAuthHealthPolicy = z.infer<typeof SiteAuthHealthPolicy>;\n\nexport const SiteAuthVerificationState = z.enum([\"unknown\", \"verified\", \"needs_repair\", \"failed\"]);\nexport type SiteAuthVerificationState = z.infer<typeof SiteAuthVerificationState>;\n\nexport const SiteAuthMaintenance = z\n .object({\n action: z.enum([\"health_check\", \"repair\"]),\n /** Hidden until the durable session start has been confirmed. */\n sessionId: z.string().uuid().nullable(),\n dueAt: z.string().datetime({ offset: true }),\n startedAt: z.string().datetime({ offset: true }).nullable(),\n })\n .strict();\nexport type SiteAuthMaintenance = z.infer<typeof SiteAuthMaintenance>;\n\n/** Trusted service provenance for scheduler-authored maintenance sessions. */\nexport const SITE_AUTH_MAINTENANCE_OPERATION_CONTEXT_KEY =\n \"opengeniSiteAuthMaintenanceOperationId\" as const;\nexport const SITE_AUTH_MAINTENANCE_CONNECTION_CONTEXT_KEY = \"opengeniSiteAuthConnectionId\" as const;\n\nconst SiteAuthConnectionConfiguration = z\n .object({\n name: z.string().trim().min(1).max(200),\n accountLabel: z.string().trim().min(1).max(200),\n origins: z.array(canonicalWebOrigin).min(1).max(64),\n loginUrl: boundedHttpUrl.nullable(),\n verificationUrlPrefixes: z.array(boundedHttpUrl).max(32),\n authorities: z.array(SiteAuthAuthority).min(1).max(32),\n methods: z.array(SiteAuthMethod).min(1).max(32),\n preferredIdentityId: z.string().uuid().nullable(),\n preferredPlacement: InteractionPlacement.nullable(),\n preferredNetworkRouteId: z.string().uuid().nullable(),\n healthPolicy: SiteAuthHealthPolicy,\n })\n .strict();\n\nfunction validateSiteAuthConfiguration(\n connection: z.infer<typeof SiteAuthConnectionConfiguration>,\n context: z.RefinementCtx,\n): void {\n if (\n connection.preferredIdentityId &&\n (connection.preferredPlacement?.kind === \"attached_device\" ||\n connection.preferredPlacement?.kind === \"external_provider\")\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"preferredIdentityId\"],\n message: \"the preferred placement owns its live profile identity\",\n });\n }\n if (new Set(connection.origins).size !== connection.origins.length) {\n context.addIssue({ code: \"custom\", path: [\"origins\"], message: \"origins repeat\" });\n }\n if (\n new Set(connection.verificationUrlPrefixes).size !== connection.verificationUrlPrefixes.length\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"verificationUrlPrefixes\"],\n message: \"verification URL prefixes repeat\",\n });\n }\n const allowedOrigins = new Set(connection.origins);\n const checkedUrls = [\n ...(connection.loginUrl ? [{ path: [\"loginUrl\"], value: connection.loginUrl }] : []),\n ...connection.verificationUrlPrefixes.map((value, index) => ({\n path: [\"verificationUrlPrefixes\", index],\n value,\n })),\n ];\n for (const checked of checkedUrls) {\n if (!allowedOrigins.has(new URL(checked.value).origin)) {\n context.addIssue({\n code: \"custom\",\n path: checked.path,\n message: \"URL origin must be explicitly allowed\",\n });\n }\n }\n const authorityIds = new Set(connection.authorities.map((authority) => authority.id));\n if (authorityIds.size !== connection.authorities.length) {\n context.addIssue({ code: \"custom\", path: [\"authorities\"], message: \"authority ids repeat\" });\n }\n const methodIds = new Set(connection.methods.map((method) => method.id));\n if (methodIds.size !== connection.methods.length) {\n context.addIssue({ code: \"custom\", path: [\"methods\"], message: \"method ids repeat\" });\n }\n for (const [index, method] of connection.methods.entries()) {\n if (new Set(method.authorityIds).size !== method.authorityIds.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"methods\", index, \"authorityIds\"],\n message: \"method authority ids repeat\",\n });\n }\n if (method.authorityIds.some((id) => !authorityIds.has(id))) {\n context.addIssue({\n code: \"custom\",\n path: [\"methods\", index, \"authorityIds\"],\n message: \"method references an unknown authority\",\n });\n }\n }\n for (const [index, authority] of connection.authorities.entries()) {\n if (authority.kind === \"external_provider\") continue;\n const fieldIds = authority.fields.map((field) => field.id);\n if (new Set(fieldIds).size !== fieldIds.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"authorities\", index, \"fields\"],\n message: \"authority field ids repeat\",\n });\n }\n }\n}\n\nexport const SiteAuthConnection = SiteAuthConnectionConfiguration.extend({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n status: z.enum([\"active\", \"archived\"]),\n verificationState: SiteAuthVerificationState,\n lastVerifiedAt: z.string().datetime({ offset: true }).nullable(),\n lastVerifiedUrl: boundedUrl.nullable(),\n lastCheckedAt: z.string().datetime({ offset: true }).nullable(),\n nextCheckAt: z.string().datetime({ offset: true }).nullable(),\n maintenance: SiteAuthMaintenance.nullable(),\n repairCode: boundedOpaqueId.nullable(),\n version: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n}).superRefine(validateSiteAuthConfiguration);\nexport type SiteAuthConnection = z.infer<typeof SiteAuthConnection>;\n\nexport const SiteAuthConnectionListResponse = z\n .object({\n revision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n connections: z.array(SiteAuthConnection).max(10_000),\n })\n .strict();\nexport type SiteAuthConnectionListResponse = z.infer<typeof SiteAuthConnectionListResponse>;\n\nexport const CreateSiteAuthConnectionRequest = SiteAuthConnectionConfiguration.extend({\n operationId: z.string().uuid(),\n}).superRefine(validateSiteAuthConfiguration);\nexport type CreateSiteAuthConnectionRequest = z.infer<typeof CreateSiteAuthConnectionRequest>;\n\nexport const UpdateSiteAuthConnectionRequest = SiteAuthConnectionConfiguration.partial()\n .extend({\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n status: z.enum([\"active\", \"archived\"]).optional(),\n })\n .strict()\n .refine(\n (value) => Object.keys(value).some((key) => ![\"operationId\", \"expectedVersion\"].includes(key)),\n {\n message: \"site auth connection update is empty\",\n },\n );\nexport type UpdateSiteAuthConnectionRequest = z.infer<typeof UpdateSiteAuthConnectionRequest>;\n\nexport const SiteAuthConnectionMutationResponse = z\n .object({\n connection: SiteAuthConnection,\n operationId: z.string().uuid(),\n replayed: z.boolean(),\n })\n .strict();\nexport type SiteAuthConnectionMutationResponse = z.infer<typeof SiteAuthConnectionMutationResponse>;\n\nexport const AuthRunState = z.enum([\n \"discovering\",\n \"awaiting_choice\",\n \"awaiting_secret\",\n \"awaiting_external_action\",\n \"working\",\n \"verified\",\n \"failed\",\n \"cancelled\",\n]);\nexport type AuthRunState = z.infer<typeof AuthRunState>;\n\nexport const AuthRunChoice = z\n .object({\n id: boundedOpaqueId,\n label: z.string().trim().min(1).max(200),\n methodId: boundedOpaqueId,\n })\n .strict();\nexport type AuthRunChoice = z.infer<typeof AuthRunChoice>;\n\nexport const AuthRunPendingField = z\n .object({\n id: boundedOpaqueId,\n label: z.string().trim().min(1).max(200),\n purpose: SiteAuthFieldPurpose,\n })\n .strict();\nexport type AuthRunPendingField = z.infer<typeof AuthRunPendingField>;\n\nexport const AuthRunExternalAction = z\n .object({\n kind: z.enum([\"push\", \"security_key\", \"passkey\", \"device\", \"human\", \"other\"]),\n label: z.string().trim().min(1).max(500),\n expiresAt: z.string().datetime({ offset: true }).nullable(),\n })\n .strict();\nexport type AuthRunExternalAction = z.infer<typeof AuthRunExternalAction>;\n\nexport const AuthRun = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n siteAuthConnectionId: z.string().uuid(),\n browserSessionId: z.string().uuid(),\n targetId: boundedOpaqueId,\n controllerGeneration: opaqueGeneration,\n targetGeneration: opaqueGeneration,\n documentGeneration: opaqueGeneration.nullable(),\n purpose: z.enum([\"authenticate\", \"health_check\", \"repair\"]),\n methodId: boundedOpaqueId.nullable(),\n authorityId: boundedOpaqueId.nullable(),\n state: AuthRunState,\n choices: z.array(AuthRunChoice).max(64),\n pendingFields: z.array(AuthRunPendingField).max(64),\n externalAction: AuthRunExternalAction.nullable(),\n interventionId: z.string().uuid().nullable(),\n verifiedUrl: boundedUrl.nullable(),\n failureCode: boundedOpaqueId.nullable(),\n version: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n operationId: z.string().uuid(),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n settledAt: z.string().datetime({ offset: true }).nullable(),\n })\n .strict()\n .superRefine((run, context) => {\n const settled = run.state === \"verified\" || run.state === \"failed\" || run.state === \"cancelled\";\n if (settled !== (run.settledAt !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"settledAt\"],\n message: \"settled state and timestamp must agree\",\n });\n }\n if ((run.state === \"verified\") !== (run.verifiedUrl !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"verifiedUrl\"],\n message: \"verified URL requires verified state\",\n });\n }\n if ((run.state === \"failed\") !== (run.failureCode !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"failureCode\"],\n message: \"failure code requires failed state\",\n });\n }\n if ((run.state === \"awaiting_choice\") !== run.choices.length > 0) {\n context.addIssue({\n code: \"custom\",\n path: [\"choices\"],\n message: \"choices require awaiting-choice state\",\n });\n }\n if ((run.state === \"awaiting_secret\") !== run.pendingFields.length > 0) {\n context.addIssue({\n code: \"custom\",\n path: [\"pendingFields\"],\n message: \"pending fields require awaiting-secret state\",\n });\n }\n if ((run.state === \"awaiting_external_action\") !== (run.externalAction !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"externalAction\"],\n message: \"external action requires its waiting state\",\n });\n }\n });\nexport type AuthRun = z.infer<typeof AuthRun>;\n\nexport const AuthRunListResponse = z.object({ runs: z.array(AuthRun).max(10_000) }).strict();\nexport type AuthRunListResponse = z.infer<typeof AuthRunListResponse>;\n\nexport const AuthRunMutationResponse = z\n .object({\n run: AuthRun,\n operationId: z.string().uuid(),\n replayed: z.boolean(),\n })\n .strict();\nexport type AuthRunMutationResponse = z.infer<typeof AuthRunMutationResponse>;\n\nexport const StartAuthRunRequest = z\n .object({\n operationId: z.string().uuid(),\n siteAuthConnectionId: z.string().uuid(),\n targetId: boundedOpaqueId,\n expectedTargetGeneration: opaqueGeneration,\n expectedDocumentGeneration: opaqueGeneration.nullable(),\n purpose: z.enum([\"authenticate\", \"health_check\", \"repair\"]).optional(),\n methodId: boundedOpaqueId.optional(),\n authorityId: boundedOpaqueId.optional(),\n })\n .strict();\nexport type StartAuthRunRequest = z.infer<typeof StartAuthRunRequest>;\n\nexport const ReportAuthRunPayload = z\n .object({\n expectedVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n methodId: boundedOpaqueId.optional(),\n authorityId: boundedOpaqueId.optional(),\n state: z.enum([\n \"awaiting_choice\",\n \"awaiting_secret\",\n \"awaiting_external_action\",\n \"working\",\n \"failed\",\n \"cancelled\",\n ]),\n choices: z.array(AuthRunChoice).max(64).optional(),\n pendingFields: z.array(AuthRunPendingField).max(64).optional(),\n externalAction: AuthRunExternalAction.nullable().optional(),\n failureCode: boundedOpaqueId.nullable().optional(),\n })\n .strict()\n .superRefine((report, context) => {\n if ((report.state === \"awaiting_choice\") !== Boolean(report.choices?.length)) {\n context.addIssue({\n code: \"custom\",\n path: [\"choices\"],\n message: \"choices require awaiting-choice state\",\n });\n }\n if ((report.state === \"awaiting_secret\") !== Boolean(report.pendingFields?.length)) {\n context.addIssue({\n code: \"custom\",\n path: [\"pendingFields\"],\n message: \"pending fields require awaiting-secret state\",\n });\n }\n if ((report.state === \"awaiting_external_action\") !== Boolean(report.externalAction)) {\n context.addIssue({\n code: \"custom\",\n path: [\"externalAction\"],\n message: \"external action requires its waiting state\",\n });\n }\n if ((report.state === \"failed\") !== Boolean(report.failureCode)) {\n context.addIssue({\n code: \"custom\",\n path: [\"failureCode\"],\n message: \"failure code requires failed state\",\n });\n }\n });\nexport type ReportAuthRunPayload = z.infer<typeof ReportAuthRunPayload>;\n\nexport const ReportAuthRunRequest = ReportAuthRunPayload.safeExtend({\n operationId: z.string().uuid(),\n});\nexport type ReportAuthRunRequest = z.infer<typeof ReportAuthRunRequest>;\n\nexport const ProtectedAuthField = z\n .object({ fieldId: boundedOpaqueId, locator: z.lazy(() => BrowserLocator) })\n .strict();\nexport type ProtectedAuthField = z.infer<typeof ProtectedAuthField>;\n\nexport const ProtectedAuthSubmit = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"none\") }).strict(),\n z.object({ type: z.literal(\"click\"), locator: z.lazy(() => BrowserLocator) }).strict(),\n z\n .object({\n type: z.literal(\"press\"),\n key: z.string().min(1).max(256),\n locator: z.lazy(() => BrowserLocator).optional(),\n })\n .strict(),\n]);\nexport type ProtectedAuthSubmit = z.infer<typeof ProtectedAuthSubmit>;\n\nexport const ProtectedAuthFillRequest = z\n .object({\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n expectedTargetGeneration: opaqueGeneration,\n expectedDocumentGeneration: opaqueGeneration.nullable(),\n expectedFrameId: opaqueGeneration.nullable(),\n authorityId: boundedOpaqueId,\n fields: z.array(ProtectedAuthField).min(1).max(32),\n submit: ProtectedAuthSubmit.default({ type: \"none\" }),\n })\n .strict();\nexport type ProtectedAuthFillRequest = z.infer<typeof ProtectedAuthFillRequest>;\n\nexport const ProtectedAuthFillResponse = z\n .object({\n run: AuthRun,\n status: z.enum([\"submitted\", \"working\", \"needs_human\", \"stale\", \"failed\"]),\n operationId: z.string().uuid(),\n replayed: z.boolean(),\n })\n .strict();\nexport type ProtectedAuthFillResponse = z.infer<typeof ProtectedAuthFillResponse>;\n\n/** Public request for advancing a provider-managed AuthRun. Provider secrets,\n * profile names, browser ids, and hosted-login URLs stay behind browserd. */\nexport const ExternalAuthRunRequest = z\n .object({\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n action: z.enum([\"start\", \"poll\"]),\n })\n .strict();\nexport type ExternalAuthRunRequest = z.infer<typeof ExternalAuthRunRequest>;\n\nexport const ExternalAuthRunResponse = z\n .object({\n run: AuthRun,\n status: z.enum([\"working\", \"needs_human\", \"ready_to_verify\", \"failed\"]),\n operationId: z.string().uuid(),\n replayed: z.boolean(),\n })\n .strict();\nexport type ExternalAuthRunResponse = z.infer<typeof ExternalAuthRunResponse>;\n\n/** Human-only request for opening the provider's ephemeral hosted login UI. */\nexport const ExternalAuthInteractiveRequest = z\n .object({\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n })\n .strict();\nexport type ExternalAuthInteractiveRequest = z.infer<typeof ExternalAuthInteractiveRequest>;\n\nexport const ExternalAuthInteractiveResponse = z\n .object({\n authRunId: z.string().uuid(),\n url: boundedHttpUrl,\n expiresAt: z.string().datetime({ offset: true }).nullable(),\n })\n .strict();\nexport type ExternalAuthInteractiveResponse = z.infer<typeof ExternalAuthInteractiveResponse>;\n\n/** Controller-private Kernel/host-adapter command. This crosses only the\n * authenticated API -> browserd control channel; it is not a model tool. */\nexport const BrowserExternalAuthCommand = z\n .object({\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n operationId: z.string().uuid(),\n authRunId: z.string().uuid(),\n adapterId: boundedOpaqueId,\n connectionId: boundedOpaqueId,\n action: z.enum([\"start\", \"poll\", \"interactive\"]),\n })\n .strict();\nexport type BrowserExternalAuthCommand = z.infer<typeof BrowserExternalAuthCommand>;\n\nexport const BrowserExternalAuthResult = z\n .object({\n state: z.enum([\"authenticated\", \"in_progress\", \"needs_human\", \"failed\"]),\n externalAction: AuthRunExternalAction.nullable(),\n interactiveUrl: boundedHttpUrl.nullable(),\n failureCode: boundedOpaqueId.nullable(),\n profileLoaded: z.boolean(),\n })\n .strict()\n .superRefine((result, context) => {\n if ((result.state === \"needs_human\") !== (result.externalAction !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"externalAction\"],\n message: \"human external-auth state requires an action\",\n });\n }\n if ((result.state === \"failed\") !== (result.failureCode !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"failureCode\"],\n message: \"failed external-auth state requires a failure code\",\n });\n }\n if (result.interactiveUrl !== null && result.state !== \"needs_human\") {\n context.addIssue({\n code: \"custom\",\n path: [\"interactiveUrl\"],\n message: \"interactive URL requires a human external-auth state\",\n });\n }\n if (result.profileLoaded && result.state !== \"authenticated\") {\n context.addIssue({\n code: \"custom\",\n path: [\"profileLoaded\"],\n message: \"only authenticated external auth can load a profile\",\n });\n }\n });\nexport type BrowserExternalAuthResult = z.infer<typeof BrowserExternalAuthResult>;\n\nexport const VerifyAuthRunRequest = z\n .object({\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n })\n .strict();\nexport type VerifyAuthRunRequest = z.infer<typeof VerifyAuthRunRequest>;\n\nexport const InteractionInterventionStatus = z.enum([\n \"open\",\n \"completed\",\n \"dismissed\",\n \"expired\",\n \"cancelled\",\n]);\nexport type InteractionInterventionStatus = z.infer<typeof InteractionInterventionStatus>;\n\nexport const InteractionIntervention = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n resourceKind: z.enum([\"browser_session\", \"computer_session\"]),\n resourceId: z.string().uuid(),\n targetId: boundedOpaqueId,\n controllerGeneration: opaqueGeneration,\n targetGeneration: opaqueGeneration,\n documentGeneration: opaqueGeneration.nullable(),\n kind: z.enum([\"manual_login\", \"mfa\", \"external_action\", \"confirmation\", \"other\"]),\n reason: z.string().trim().min(1).max(2_048),\n status: InteractionInterventionStatus,\n authRunId: z.string().uuid().nullable(),\n originatingSessionId: z.string().uuid(),\n originatingTurnId: z.string().uuid().nullable(),\n originatingAttemptId: z.string().uuid().nullable(),\n originatingToolOperationId: z.string().uuid().nullable(),\n responseActorSubjectId: z.string().min(1).max(1_024).nullable(),\n version: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n operationId: z.string().uuid(),\n expiresAt: z.string().datetime({ offset: true }),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n settledAt: z.string().datetime({ offset: true }).nullable(),\n })\n .strict();\nexport type InteractionIntervention = z.infer<typeof InteractionIntervention>;\n\nexport const InteractionInterventionListResponse = z\n .object({ interventions: z.array(InteractionIntervention).max(10_000) })\n .strict();\nexport type InteractionInterventionListResponse = z.infer<\n typeof InteractionInterventionListResponse\n>;\n\nexport const CreateInteractionInterventionRequest = z\n .object({\n operationId: z.string().uuid(),\n resourceKind: z.enum([\"browser_session\", \"computer_session\"]),\n resourceId: z.string().uuid(),\n targetId: boundedOpaqueId,\n expectedControllerGeneration: opaqueGeneration,\n expectedTargetGeneration: opaqueGeneration,\n expectedDocumentGeneration: opaqueGeneration.nullable(),\n kind: z.enum([\"manual_login\", \"mfa\", \"external_action\", \"confirmation\", \"other\"]),\n reason: z.string().trim().min(1).max(2_048),\n authRunId: z.string().uuid().optional(),\n expiresInSeconds: z.number().int().min(30).max(86_400).default(900),\n })\n .strict();\nexport type CreateInteractionInterventionRequest = z.infer<\n typeof CreateInteractionInterventionRequest\n>;\n\nexport const ResolveInteractionInterventionRequest = z\n .object({\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n outcome: z.enum([\"completed\", \"dismissed\"]),\n })\n .strict();\nexport type ResolveInteractionInterventionRequest = z.infer<\n typeof ResolveInteractionInterventionRequest\n>;\n\nexport const InteractionInterventionMutationResponse = z\n .object({\n intervention: InteractionIntervention,\n operationId: z.string().uuid(),\n replayed: z.boolean(),\n })\n .strict();\nexport type InteractionInterventionMutationResponse = z.infer<\n typeof InteractionInterventionMutationResponse\n>;\n\n/** Canonical model/Codemode input for one typed browser/computer human wait. */\nexport const INTERACTION_REQUEST_HUMAN_MODEL_TOOL_NAME = \"interaction__interaction_request_human\";\n\nexport const RequestHumanInteractionToolInput = z.discriminatedUnion(\"operation\", [\n z.object({ operation: z.literal(\"wait\"), interventionId: z.string().uuid() }).strict(),\n z\n .object({\n operation: z.literal(\"request\"),\n resourceKind: z.enum([\"browser_session\", \"computer_session\"]),\n resourceId: z.string().uuid(),\n targetId: boundedOpaqueId,\n expectedControllerGeneration: opaqueGeneration,\n expectedTargetGeneration: opaqueGeneration,\n expectedDocumentGeneration: opaqueGeneration.nullable(),\n kind: z.enum([\"manual_login\", \"mfa\", \"external_action\", \"confirmation\", \"other\"]),\n reason: z.string().trim().min(1).max(2_048),\n authRunId: z.string().uuid().optional(),\n expiresInSeconds: z.number().int().min(30).max(86_400).default(900),\n })\n .strict(),\n]);\nexport type RequestHumanInteractionToolInput = z.infer<typeof RequestHumanInteractionToolInput>;\n\nexport const RequestHumanInteractionToolOutput = z\n .object({\n intervention: InteractionIntervention,\n observation: z.lazy(() => z.union([BrowserObservation, ComputerObservation])).nullable(),\n observationErrorCode: z.string().min(1).max(128).nullable(),\n })\n .strict();\nexport type RequestHumanInteractionToolOutput = z.infer<typeof RequestHumanInteractionToolOutput>;\n\nexport const BrowserIdentityListResponse = z\n .object({\n revision: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n identities: z.array(BrowserIdentity).max(10_000),\n })\n .strict();\nexport type BrowserIdentityListResponse = z.infer<typeof BrowserIdentityListResponse>;\n\nexport const BrowserRevisionListResponse = z\n .object({\n identity: BrowserIdentity,\n revisions: z.array(BrowserRevision).max(10_000),\n })\n .strict();\nexport type BrowserRevisionListResponse = z.infer<typeof BrowserRevisionListResponse>;\n\nexport const CreateBrowserIdentityRequest = z\n .object({\n operationId: z.string().uuid(),\n name: z.string().trim().min(1).max(200),\n })\n .strict();\nexport type CreateBrowserIdentityRequest = z.infer<typeof CreateBrowserIdentityRequest>;\n\nexport const UpdateBrowserIdentityRequest = z\n .object({\n operationId: z.string().uuid(),\n expectedVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n name: z.string().trim().min(1).max(200).optional(),\n status: BrowserIdentityStatus.optional(),\n defaultRevisionId: z.string().uuid().optional(),\n })\n .strict()\n .refine(\n (value) =>\n value.name !== undefined ||\n value.status !== undefined ||\n value.defaultRevisionId !== undefined,\n { message: \"browser identity update is empty\" },\n );\nexport type UpdateBrowserIdentityRequest = z.infer<typeof UpdateBrowserIdentityRequest>;\n\nexport const BrowserIdentityMutationResponse = z\n .object({\n identity: BrowserIdentity,\n operationId: z.string().uuid(),\n replayed: z.boolean(),\n })\n .strict();\nexport type BrowserIdentityMutationResponse = z.infer<typeof BrowserIdentityMutationResponse>;\n\n/** Capture the exact live working profile. The controller derives the parent\n * from the session's current saved base; callers cannot forge lineage. */\nexport const PublishBrowserRevisionRequest = z\n .object({\n operationId: z.string().uuid(),\n identityId: z.string().uuid(),\n expectedHeadGeneration: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n advanceDefault: z.boolean().default(true),\n })\n .strict();\nexport type PublishBrowserRevisionRequest = z.infer<typeof PublishBrowserRevisionRequest>;\n\nexport const PublishBrowserRevisionResponse = z\n .object({\n identity: BrowserIdentity,\n revision: BrowserRevision,\n outcome: z.enum([\"saved_as_default\", \"saved_not_default\"]),\n replayed: z.boolean(),\n })\n .strict();\nexport type PublishBrowserRevisionResponse = z.infer<typeof PublishBrowserRevisionResponse>;\n\nexport const BrowserTarget = z\n .object({\n id: boundedOpaqueId,\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetGeneration: opaqueGeneration,\n documentGeneration: opaqueGeneration.nullable(),\n kind: z.enum([\"page\", \"popup\", \"background_page\", \"worker\"]),\n title: z.string().max(4_096),\n url: boundedUrl,\n selected: z.boolean(),\n attached: z.boolean(),\n createdAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type BrowserTarget = z.infer<typeof BrowserTarget>;\n\nexport const BrowserDownloadStatus = z.enum([\n \"in_progress\",\n \"completed\",\n \"cancelled\",\n \"failed\",\n \"unavailable\",\n]);\nexport type BrowserDownloadStatus = z.infer<typeof BrowserDownloadStatus>;\n\n/** One browser-produced file. Its bytes remain private to the exact controller\n * until an explicit save publishes and materializes them. No placement path or\n * source URL crosses this contract. */\nexport const BrowserDownload = z\n .object({\n id: z.string().uuid(),\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId.nullable(),\n filename: z\n .string()\n .min(1)\n .max(4_096)\n .regex(/^[^\\u0000-\\u001f\\u007f]+$/u),\n status: BrowserDownloadStatus,\n receivedBytes: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n totalBytes: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).nullable(),\n sha256: sha256Hex.nullable(),\n version: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n startedAt: z.string().datetime({ offset: true }),\n settledAt: z.string().datetime({ offset: true }).nullable(),\n failureCode: boundedOpaqueId.nullable(),\n })\n .strict()\n .superRefine((download, context) => {\n const terminal = download.status !== \"in_progress\";\n if (terminal !== (download.settledAt !== null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"settledAt\"],\n message: \"download settlement must match its terminal status\",\n });\n }\n if (\n (download.status === \"failed\" || download.status === \"unavailable\") !==\n (download.failureCode !== null)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"failureCode\"],\n message: \"failed or unavailable downloads require one failure code\",\n });\n }\n if (download.status === \"completed\") {\n if (download.sha256 === null || download.totalBytes !== download.receivedBytes) {\n context.addIssue({\n code: \"custom\",\n path: [\"sha256\"],\n message: \"completed downloads require exact bytes and SHA-256\",\n });\n }\n } else if (download.sha256 !== null) {\n context.addIssue({\n code: \"custom\",\n path: [\"sha256\"],\n message: \"only completed downloads carry a SHA-256\",\n });\n }\n });\nexport type BrowserDownload = z.infer<typeof BrowserDownload>;\n\nexport const BrowserDownloadListResponse = z\n .object({\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n downloads: z.array(BrowserDownload).max(10_000),\n })\n .strict();\nexport type BrowserDownloadListResponse = z.infer<typeof BrowserDownloadListResponse>;\n\nconst workspaceRelativeFilePath = z\n .string()\n .min(1)\n .max(4_096)\n .refine((value) => {\n if (value !== value.trim() || value.startsWith(\"/\") || /^[A-Za-z]:[\\\\/]/u.test(value)) {\n return false;\n }\n if (value.includes(\"\\\\\") || value.includes(\"\\0\")) return false;\n const segments = value.split(\"/\");\n return segments.every(\n (segment) =>\n segment.length > 0 &&\n segment !== \".\" &&\n segment !== \"..\" &&\n !/[<>:\"|?*\\u0000-\\u001f\\u007f]/u.test(segment) &&\n !/[ .]$/u.test(segment) &&\n !/^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\.|$)/iu.test(segment),\n );\n }, \"destinationPath must be a portable workspace-relative file path\");\n\nexport const BrowserDownloadSaveRequest = z\n .object({\n operationId: z.string().uuid(),\n destinationPath: workspaceRelativeFilePath,\n overwrite: z.boolean().default(false),\n })\n .strict();\nexport type BrowserDownloadSaveRequest = z.infer<typeof BrowserDownloadSaveRequest>;\n\nexport const BrowserDownloadSaveResponse = z\n .object({\n download: BrowserDownload,\n destinationPath: workspaceRelativeFilePath,\n fileId: z.string().uuid(),\n operationId: z.string().uuid(),\n replayed: z.boolean(),\n })\n .strict();\nexport type BrowserDownloadSaveResponse = z.infer<typeof BrowserDownloadSaveResponse>;\n\n/** Controller-private, narrow object authority for publishing one exact\n * completed download. Signed URLs and headers never appear in public SDK or\n * durable controller receipts. */\nexport const BrowserDownloadExportRequest = z\n .object({\n operationId: z.string().uuid(),\n downloadId: z.string().uuid(),\n upload: z\n .object({\n url: boundedHttpUrl,\n requiredHeaders: z.record(z.string().min(1).max(256), z.string().max(8_192)),\n expiresAt: z.string().datetime({ offset: true }),\n })\n .strict(),\n })\n .strict();\nexport type BrowserDownloadExportRequest = z.infer<typeof BrowserDownloadExportRequest>;\n\nexport const BrowserDownloadExportReceipt = z\n .object({\n operationId: z.string().uuid(),\n downloadId: z.string().uuid(),\n sizeBytes: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n sha256: sha256Hex,\n replayed: z.boolean(),\n })\n .strict();\nexport type BrowserDownloadExportReceipt = z.infer<typeof BrowserDownloadExportReceipt>;\n\nexport const InteractionRect = z\n .object({\n x: z.number().finite(),\n y: z.number().finite(),\n width: z.number().finite().nonnegative(),\n height: z.number().finite().nonnegative(),\n })\n .strict();\nexport type InteractionRect = z.infer<typeof InteractionRect>;\n\nexport const InteractionRedactedValue = z\n .object({\n redacted: z.literal(true),\n reason: z.enum([\"password\", \"payment\", \"private\", \"policy\"]),\n })\n .strict();\nexport type InteractionRedactedValue = z.infer<typeof InteractionRedactedValue>;\n\nexport type InteractionSemanticNodeValue = {\n ref: string;\n role: string;\n identifier?: string | undefined;\n name?: string | undefined;\n description?: string | undefined;\n value?: string | InteractionRedactedValue | undefined;\n states: string[];\n bounds?: InteractionRect | undefined;\n actions: string[];\n children?: InteractionSemanticNodeValue[] | undefined;\n native?: { platform: \"dom\" | \"mac_ax\" | \"at_spi\" | \"uia\"; data: unknown } | undefined;\n};\n\nexport const InteractionSemanticNode: z.ZodType<InteractionSemanticNodeValue> = z.lazy(() =>\n z\n .object({\n ref: boundedOpaqueId,\n role: z.string().min(1).max(256),\n identifier: z.string().min(1).max(2_048).optional(),\n name: z.string().max(8_192).optional(),\n description: z.string().max(8_192).optional(),\n value: z.union([z.string().max(32_768), InteractionRedactedValue]).optional(),\n states: z.array(z.string().min(1).max(128)).max(64),\n bounds: InteractionRect.optional(),\n actions: z.array(z.string().min(1).max(128)).max(64),\n children: z.array(InteractionSemanticNode).optional(),\n native: z\n .object({\n platform: z.enum([\"dom\", \"mac_ax\", \"at_spi\", \"uia\"]),\n data: z.json(),\n })\n .strict()\n .optional(),\n })\n .strict(),\n);\n\nexport const InteractionSemanticSnapshot = z\n .object({\n kind: z.literal(\"snapshot\"),\n roots: z.array(InteractionSemanticNode),\n nodeCount: z.number().int().nonnegative().max(INTERACTION_MAX_SEMANTIC_NODES),\n })\n .strict();\n\nexport const InteractionSemanticDiff = z\n .object({\n kind: z.literal(\"diff\"),\n baseObservationId: boundedOpaqueId,\n removedRefs: z.array(boundedOpaqueId).max(INTERACTION_MAX_CHANGED_NODES),\n changed: z.array(InteractionSemanticNode).max(INTERACTION_MAX_CHANGED_NODES),\n })\n .strict();\n\nexport const InteractionDiagnosticSummary = z\n .object({\n consoleErrorCount: z.number().int().nonnegative(),\n failedRequestCount: z.number().int().nonnegative(),\n downloadCount: z.number().int().nonnegative(),\n pageErrorCount: z.number().int().nonnegative(),\n })\n .strict();\n\nexport const BrowserDialog = z\n .object({\n type: z.enum([\"alert\", \"confirm\", \"prompt\", \"beforeunload\"]),\n message: z.string().max(8_192),\n defaultPrompt: z.string().max(32_768),\n openedAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type BrowserDialog = z.infer<typeof BrowserDialog>;\n\nexport const BrowserObservation = z\n .object({\n protocolVersion: z.literal(INTERACTION_PROTOCOL_VERSION),\n observationId: boundedOpaqueId,\n browserSessionId: z.string().uuid(),\n target: BrowserTarget,\n frameId: opaqueGeneration.nullable(),\n semantic: z.union([InteractionSemanticSnapshot, InteractionSemanticDiff]).nullable(),\n screenshot: RetainedArtifactReferenceSchema.nullable(),\n focusedRef: boundedOpaqueId.nullable(),\n changedRegions: z.array(InteractionRect).max(INTERACTION_MAX_CHANGED_NODES),\n diagnostics: InteractionDiagnosticSummary,\n dialog: BrowserDialog.nullable(),\n observedAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type BrowserObservation = z.infer<typeof BrowserObservation>;\n\nexport const BrowserDiagnosticKind = z.enum([\n \"console\",\n \"page_error\",\n \"failed_request\",\n \"download\",\n]);\nexport type BrowserDiagnosticKind = z.infer<typeof BrowserDiagnosticKind>;\n\nexport const BrowserDiagnosticEntry = z\n .object({\n sequence: z.number().int().positive(),\n kind: BrowserDiagnosticKind,\n level: z.enum([\"debug\", \"info\", \"warning\", \"error\"]).nullable(),\n message: z.string().max(8_192),\n url: boundedUrl.nullable(),\n method: z.string().min(1).max(32).nullable(),\n status: z.number().int().min(100).max(999).nullable(),\n filename: z.string().max(4_096).nullable(),\n occurredAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type BrowserDiagnosticEntry = z.infer<typeof BrowserDiagnosticEntry>;\n\nexport const BrowserDiagnosticBatch = z\n .object({\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId,\n targetGeneration: opaqueGeneration,\n entries: z.array(BrowserDiagnosticEntry).max(INTERACTION_MAX_DIAGNOSTIC_ENTRIES),\n cursor: z.number().int().nonnegative(),\n truncated: z.boolean(),\n })\n .strict();\nexport type BrowserDiagnosticBatch = z.infer<typeof BrowserDiagnosticBatch>;\n\nexport const BrowserLocator = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"ref\"), ref: boundedOpaqueId }).strict(),\n z\n .object({\n kind: z.literal(\"role\"),\n role: z.string().min(1).max(256),\n name: z.string().max(8_192).optional(),\n exact: z.boolean().optional(),\n })\n .strict(),\n z.object({ kind: z.literal(\"label\"), text: z.string().min(1).max(8_192) }).strict(),\n z.object({ kind: z.literal(\"text\"), text: z.string().min(1).max(8_192) }).strict(),\n z\n .object({\n kind: z.literal(\"placeholder\"),\n text: z.string().min(1).max(8_192),\n })\n .strict(),\n z.object({ kind: z.literal(\"test_id\"), value: z.string().min(1).max(2_048) }).strict(),\n z.object({ kind: z.literal(\"css\"), selector: z.string().min(1).max(8_192) }).strict(),\n]);\nexport type BrowserLocator = z.infer<typeof BrowserLocator>;\n\n/** Provider-neutral locator for native accessibility trees. Native automation\n * identifiers are intentionally distinct from DOM selectors/test ids: AX,\n * AT-SPI, and UIA adapters resolve them inside the exact observed target. */\nexport const ComputerLocator = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"ref\"), ref: boundedOpaqueId }).strict(),\n z\n .object({\n kind: z.literal(\"role\"),\n role: z.string().min(1).max(256),\n name: z.string().max(8_192).optional(),\n exact: z.boolean().optional(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"label\"),\n text: z.string().min(1).max(8_192),\n exact: z.boolean().optional(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"text\"),\n text: z.string().min(1).max(8_192),\n exact: z.boolean().optional(),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"identifier\"),\n value: z.string().min(1).max(2_048),\n })\n .strict(),\n]);\nexport type ComputerLocator = z.infer<typeof ComputerLocator>;\n\n/** Web-platform permissions which a managed browser can set for the exact\n * top-level origin currently fenced by a BrowserActionCommand. Names remain\n * provider-neutral; drivers map them to their native permission descriptors. */\nexport const BrowserPermission = z.enum([\n \"geolocation\",\n \"notifications\",\n \"camera\",\n \"microphone\",\n \"midi\",\n \"midi_sysex\",\n \"sensors\",\n \"idle_detection\",\n \"local_fonts\",\n \"window_management\",\n]);\nexport type BrowserPermission = z.infer<typeof BrowserPermission>;\n\nexport const BrowserPermissionSetting = z.enum([\"granted\", \"denied\", \"prompt\"]);\nexport type BrowserPermissionSetting = z.infer<typeof BrowserPermissionSetting>;\n\nconst browserActionVariants = [\n z.object({ type: z.literal(\"navigate\"), url: boundedUrl }).strict(),\n z\n .object({\n type: z.literal(\"click\"),\n locator: BrowserLocator,\n button: z.enum([\"left\", \"right\", \"middle\"]).optional(),\n })\n .strict(),\n z.object({ type: z.literal(\"double_click\"), locator: BrowserLocator }).strict(),\n z.object({ type: z.literal(\"hover\"), locator: BrowserLocator }).strict(),\n z\n .object({\n type: z.literal(\"fill\"),\n locator: BrowserLocator,\n value: z.string().max(1_000_000),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"type\"),\n locator: BrowserLocator.optional(),\n text: z.string().max(1_000_000),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"press\"),\n locator: BrowserLocator.optional(),\n key: z.string().min(1).max(256),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"select\"),\n locator: BrowserLocator,\n values: z.array(z.string().max(8_192)).min(1).max(100),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"check\"),\n locator: BrowserLocator,\n checked: z.boolean(),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"scroll\"),\n locator: BrowserLocator.optional(),\n deltaX: z.number().finite(),\n deltaY: z.number().finite(),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"drag\"),\n from: BrowserLocator,\n to: BrowserLocator,\n })\n .strict(),\n z\n .object({\n type: z.literal(\"pointer\"),\n action: z.enum([\"click\", \"double_click\", \"move\", \"scroll\", \"drag\"]),\n x: z.number().finite().nonnegative().max(1_000_000),\n y: z.number().finite().nonnegative().max(1_000_000),\n endX: z.number().finite().nonnegative().max(1_000_000).optional(),\n endY: z.number().finite().nonnegative().max(1_000_000).optional(),\n deltaX: z.number().finite().min(-1_000_000).max(1_000_000).optional(),\n deltaY: z.number().finite().min(-1_000_000).max(1_000_000).optional(),\n button: z.enum([\"left\", \"right\", \"middle\"]).optional(),\n clickCount: z.union([z.literal(1), z.literal(2)]).optional(),\n })\n .strict()\n .superRefine((action, context) => {\n const hasEnd = action.endX !== undefined || action.endY !== undefined;\n const hasDelta = action.deltaX !== undefined || action.deltaY !== undefined;\n if (action.action === \"drag\" && (action.endX === undefined || action.endY === undefined)) {\n context.addIssue({\n code: \"custom\",\n message: \"pointer drag requires endX and endY\",\n });\n }\n if (action.action !== \"drag\" && hasEnd) {\n context.addIssue({\n code: \"custom\",\n message: \"pointer end coordinates require drag\",\n });\n }\n if (\n action.action === \"scroll\" &&\n action.deltaX === undefined &&\n action.deltaY === undefined\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"pointer scroll requires a delta\",\n });\n }\n if (action.action !== \"scroll\" && hasDelta) {\n context.addIssue({\n code: \"custom\",\n message: \"pointer deltas require scroll\",\n });\n }\n if (action.action !== \"click\" && action.clickCount !== undefined) {\n context.addIssue({\n code: \"custom\",\n message: \"pointer clickCount requires click\",\n });\n }\n }),\n z\n .object({\n type: z.literal(\"handle_dialog\"),\n response: z.enum([\"accept\", \"dismiss\"]),\n promptText: z.string().max(32_768).optional(),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"upload\"),\n locator: BrowserLocator,\n workspaceFileIds: z.array(z.string().uuid()).min(1).max(100),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"clipboard\"),\n operation: z.enum([\"write\", \"clear\", \"copy\", \"paste\"]),\n text: z\n .string()\n .max(INTERACTION_MAX_CLIPBOARD_BYTES)\n .refine(\n (value) => new TextEncoder().encode(value).byteLength <= INTERACTION_MAX_CLIPBOARD_BYTES,\n { message: \"browser clipboard text exceeds its UTF-8 byte envelope\" },\n )\n .optional(),\n locator: BrowserLocator.optional(),\n content: z.enum([\"selection\", \"value\", \"text\"]).optional(),\n })\n .strict()\n .superRefine((action, context) => {\n if (action.operation === \"write\") {\n if (action.text === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"text\"],\n message: \"clipboard write requires text\",\n });\n }\n if (action.locator !== undefined || action.content !== undefined) {\n context.addIssue({\n code: \"custom\",\n message: \"clipboard write accepts only text\",\n });\n }\n return;\n }\n if (action.operation === \"clear\") {\n if (\n action.text !== undefined ||\n action.locator !== undefined ||\n action.content !== undefined\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"clipboard clear accepts no payload\",\n });\n }\n return;\n }\n if (action.operation === \"copy\") {\n if (action.text !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"text\"],\n message: \"clipboard copy does not accept text\",\n });\n }\n if (action.content !== undefined && action.content !== \"selection\" && !action.locator) {\n context.addIssue({\n code: \"custom\",\n path: [\"locator\"],\n message: \"copying element value or text requires a locator\",\n });\n }\n return;\n }\n if (action.content !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"content\"],\n message: \"clipboard paste does not accept content\",\n });\n }\n }),\n z\n .object({\n type: z.literal(\"permission\"),\n permission: BrowserPermission,\n setting: BrowserPermissionSetting,\n })\n .strict(),\n z\n .object({\n type: z.literal(\"wait\"),\n condition: z.enum([\"load\", \"network_idle\", \"visible\", \"hidden\"]),\n locator: BrowserLocator.optional(),\n timeoutMs: z.number().int().positive().max(120_000).optional(),\n })\n .strict(),\n] as const;\n\nexport const BrowserAction = z.discriminatedUnion(\"type\", browserActionVariants);\nexport type BrowserAction = z.infer<typeof BrowserAction>;\n\nexport const BrowserActionBatch = z\n .object({\n type: z.literal(\"batch\"),\n actions: z.array(BrowserAction).min(1).max(INTERACTION_MAX_ACTIONS_PER_BATCH),\n })\n .strict()\n .superRefine((batch, context) => {\n const fileIds = new Set(\n batch.actions.flatMap((action) => (action.type === \"upload\" ? action.workspaceFileIds : [])),\n );\n if (fileIds.size > INTERACTION_MAX_WORKSPACE_FILES_PER_COMMAND) {\n context.addIssue({\n code: \"custom\",\n path: [\"actions\"],\n message: \"browser action references too many workspace files\",\n });\n }\n });\nexport type BrowserActionBatch = z.infer<typeof BrowserActionBatch>;\n\n/** Secret-safe projection of a connected-machine control failure carried in a\n * standard API error envelope. The outer envelope owns HTTP status, retryability,\n * and public request correlation; this preserves the exact failing control class\n * and optional inner request id without exposing subjects, local paths, or tokens. */\nexport const InteractionControlFailureCode = z.enum([\n \"unknown\",\n \"unsupported\",\n \"os\",\n \"not_found\",\n \"consent_required\",\n \"timeout\",\n \"draining\",\n \"protocol\",\n \"stream\",\n \"agent_offline\",\n \"fenced\",\n \"payload_too_large\",\n]);\nexport type InteractionControlFailureCode = z.infer<typeof InteractionControlFailureCode>;\n\nexport const InteractionControlFailureDetails = z\n .object({\n interactionLayer: z.literal(\"connected_machine\"),\n interactionSurface: z.enum([\"browser\", \"computer\"]),\n controlFailureCode: InteractionControlFailureCode,\n controlRequestId: z\n .string()\n .min(1)\n .max(128)\n .regex(/^[A-Za-z0-9._:-]+$/u)\n .optional(),\n })\n .strict();\nexport type InteractionControlFailureDetails = z.infer<typeof InteractionControlFailureDetails>;\n\nexport const InteractionError = z\n .object({\n code: z.enum([\n \"resource_not_found\",\n \"resource_unavailable\",\n \"controller_stale\",\n \"target_not_found\",\n \"target_stale\",\n \"observation_stale\",\n \"document_stale\",\n \"frame_stale\",\n \"locator_not_found\",\n \"locator_ambiguous\",\n \"unsupported\",\n \"permission_denied\",\n \"machine_locked\",\n \"attempt_stale\",\n \"operation_conflict\",\n \"outcome_unknown\",\n \"invalid_action\",\n \"timeout\",\n \"controller_lost\",\n \"driver_failed\",\n ]),\n message: z.string().min(1).max(8_192),\n retryable: z.boolean(),\n details: z.record(z.string().max(256), z.json()).optional(),\n })\n .strict();\nexport type InteractionError = z.infer<typeof InteractionError>;\n\nexport const BrowserActionCommand = z\n .object({\n protocolVersion: z.literal(INTERACTION_PROTOCOL_VERSION),\n operationId: z.string().uuid(),\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId,\n expectedTargetGeneration: opaqueGeneration,\n expectedDocumentGeneration: opaqueGeneration.nullable(),\n expectedFrameId: opaqueGeneration.nullable(),\n actor: InteractionActor,\n /** Human live-control surfaces already receive the resulting pixels. They\n * may omit the expensive semantic snapshot; agent actions keep it. */\n observationMode: z.enum([\"full\", \"none\"]).optional(),\n action: z.union([BrowserAction, BrowserActionBatch]),\n })\n .strict();\nexport type BrowserActionCommand = z.infer<typeof BrowserActionCommand>;\n\n/** Controller-private authority used to materialize immutable workspace files\n * beside a BrowserSession before an upload action dispatches. Signed URLs and\n * placement paths never appear in the public BrowserAction or its receipt. */\nexport const BrowserWorkspaceFileAuthority = z\n .object({\n fileId: z.string().uuid(),\n safeFilename: z\n .string()\n .min(1)\n .max(240)\n .regex(/^[A-Za-z0-9._ -]+$/u)\n .refine((value) => value !== \".\" && value !== \"..\", {\n message: \"safe filename must be one path segment\",\n }),\n sizeBytes: z.number().int().nonnegative().max(5_000_000_000),\n sha256: sha256Hex.nullable(),\n download: z\n .object({\n url: boundedHttpUrl,\n expiresAt: z.string().datetime({ offset: true }),\n })\n .strict(),\n })\n .strict();\nexport type BrowserWorkspaceFileAuthority = z.infer<typeof BrowserWorkspaceFileAuthority>;\n\nexport const BrowserWorkspaceFileStageRequest = z\n .object({\n operationId: z.string().uuid(),\n files: z.array(BrowserWorkspaceFileAuthority).min(1).max(100),\n })\n .strict()\n .superRefine((request, context) => {\n const seen = new Set<string>();\n for (const [index, file] of request.files.entries()) {\n if (seen.has(file.fileId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"files\", index, \"fileId\"],\n message: \"workspace file authority is duplicated\",\n });\n }\n seen.add(file.fileId);\n }\n });\nexport type BrowserWorkspaceFileStageRequest = z.infer<typeof BrowserWorkspaceFileStageRequest>;\n\nexport const BrowserWorkspaceFileStageResponse = z\n .object({\n operationId: z.string().uuid(),\n fileIds: z.array(z.string().uuid()).min(1).max(100),\n replayed: z.boolean(),\n })\n .strict();\nexport type BrowserWorkspaceFileStageResponse = z.infer<typeof BrowserWorkspaceFileStageResponse>;\n\nexport const InteractionOperationState = z.enum([\n \"prepared\",\n \"dispatched\",\n \"completed\",\n \"failed\",\n \"outcome_unknown\",\n]);\nexport type InteractionOperationState = z.infer<typeof InteractionOperationState>;\n\nexport const InteractionLifecycleOperationKind = z.enum([\n \"create\",\n \"resume\",\n \"suspend\",\n \"end\",\n \"publish\",\n]);\nexport type InteractionLifecycleOperationKind = z.infer<typeof InteractionLifecycleOperationKind>;\n\nexport const InteractionLifecycleOperationReceipt = z\n .object({\n operationId: z.string().uuid(),\n resourceKind: z.enum([\"browser_session\", \"computer_session\"]),\n resourceId: z.string().uuid(),\n kind: InteractionLifecycleOperationKind,\n state: InteractionOperationState,\n replayed: z.boolean(),\n error: InteractionError.nullable(),\n createdAt: z.string().datetime({ offset: true }),\n dispatchedAt: z.string().datetime({ offset: true }).nullable(),\n settledAt: z.string().datetime({ offset: true }).nullable(),\n })\n .strict()\n .superRefine((receipt, context) => {\n if (receipt.state === \"completed\" && (receipt.error !== null || receipt.settledAt === null)) {\n context.addIssue({\n code: \"custom\",\n message: \"completed operation must settle without error\",\n });\n }\n if (\n (receipt.state === \"failed\" || receipt.state === \"outcome_unknown\") &&\n (receipt.error === null || receipt.settledAt === null)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"terminal operation error requires error and time\",\n });\n }\n if (receipt.state === \"dispatched\" && receipt.dispatchedAt === null) {\n context.addIssue({\n code: \"custom\",\n message: \"dispatched operation requires dispatch time\",\n });\n }\n });\nexport type InteractionLifecycleOperationReceipt = z.infer<\n typeof InteractionLifecycleOperationReceipt\n>;\n\nexport const CreateBrowserSessionRequest = z\n .object({\n operationId: z.string().uuid(),\n sessionId: z.string().uuid(),\n name: z.string().trim().min(1).max(200).optional(),\n initialUrl: boundedUrl.optional(),\n headless: z.boolean().default(true),\n /** Managed engine choice. Attached Chrome continues to derive its engine\n * from the selected device rather than accepting an impersonated value. */\n engine: z.enum([\"chromium\", \"lightpanda\"]).default(\"chromium\"),\n placement: InteractionPlacement.optional(),\n identityId: z.string().uuid().optional(),\n baseRevisionId: z.string().uuid().optional(),\n networkRouteId: z.string().uuid().optional(),\n linkedComputerSessionId: z.string().uuid().optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.baseRevisionId && !value.identityId) {\n context.addIssue({\n code: \"custom\",\n path: [\"baseRevisionId\"],\n message: \"baseRevisionId requires identityId\",\n });\n }\n if (value.linkedComputerSessionId && value.headless) {\n context.addIssue({\n code: \"custom\",\n path: [\"linkedComputerSessionId\"],\n message: \"a linked computer requires a headed browser\",\n });\n }\n if (value.engine === \"lightpanda\") {\n if (!value.headless) {\n context.addIssue({\n code: \"custom\",\n path: [\"headless\"],\n message: \"Lightpanda is a headless semantic browser\",\n });\n }\n if (value.identityId || value.baseRevisionId) {\n context.addIssue({\n code: \"custom\",\n path: [\"identityId\"],\n message: \"Lightpanda does not support Chromium browser identities\",\n });\n }\n if (value.networkRouteId) {\n context.addIssue({\n code: \"custom\",\n path: [\"networkRouteId\"],\n message: \"Lightpanda network routes are not supported yet\",\n });\n }\n if (value.linkedComputerSessionId) {\n context.addIssue({\n code: \"custom\",\n path: [\"linkedComputerSessionId\"],\n message: \"Lightpanda has no linked desktop window\",\n });\n }\n }\n if (value.placement?.kind === \"attached_device\") {\n if (value.engine !== \"chromium\") {\n context.addIssue({\n code: \"custom\",\n path: [\"engine\"],\n message: \"attached browser placement uses the selected Chrome engine\",\n });\n }\n if (value.headless) {\n context.addIssue({\n code: \"custom\",\n path: [\"headless\"],\n message: \"attached browser placement is always headed\",\n });\n }\n if (value.identityId || value.baseRevisionId) {\n context.addIssue({\n code: \"custom\",\n path: [\"identityId\"],\n message: \"attached browser placement already has a live profile identity\",\n });\n }\n }\n if (value.placement?.kind === \"external_provider\") {\n if (value.engine !== \"chromium\") {\n context.addIssue({\n code: \"custom\",\n path: [\"engine\"],\n message: \"external browser providers use their Chromium-compatible engine\",\n });\n }\n if (value.identityId || value.baseRevisionId) {\n context.addIssue({\n code: \"custom\",\n path: [\"identityId\"],\n message: \"external browser providers do not yet support portable BrowserIdentity state\",\n });\n }\n if (value.linkedComputerSessionId) {\n context.addIssue({\n code: \"custom\",\n path: [\"linkedComputerSessionId\"],\n message: \"external browser providers cannot link a placement desktop\",\n });\n }\n }\n });\nexport type CreateBrowserSessionRequest = z.infer<typeof CreateBrowserSessionRequest>;\n\nexport const BrowserSessionListResponse = z\n .object({\n revision: z.number().int().nonnegative(),\n sessions: z.array(BrowserSession).max(10_000),\n })\n .strict();\nexport type BrowserSessionListResponse = z.infer<typeof BrowserSessionListResponse>;\n\nexport const BrowserSessionMutationResponse = z\n .object({\n session: BrowserSession,\n operation: InteractionLifecycleOperationReceipt,\n })\n .strict();\nexport type BrowserSessionMutationResponse = z.infer<typeof BrowserSessionMutationResponse>;\n\nexport const BrowserSessionLifecycleRequest = z\n .object({\n operationId: z.string().uuid(),\n })\n .strict();\nexport type BrowserSessionLifecycleRequest = z.infer<typeof BrowserSessionLifecycleRequest>;\n\nexport const BrowserOpenTargetRequest = z\n .object({\n url: boundedUrl.optional(),\n })\n .strict();\nexport type BrowserOpenTargetRequest = z.infer<typeof BrowserOpenTargetRequest>;\n\nexport const BrowserTargetListResponse = z\n .object({\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targets: z.array(BrowserTarget).max(10_000),\n })\n .strict();\nexport type BrowserTargetListResponse = z.infer<typeof BrowserTargetListResponse>;\n\nexport const InteractionFrameStreamOptions = z\n .object({\n format: z.enum([\"jpeg\", \"png\"]).optional(),\n quality: z.number().int().min(1).max(100).optional(),\n maxWidth: z.number().int().min(1).max(4_096).optional(),\n maxHeight: z.number().int().min(1).max(4_096).optional(),\n everyNthFrame: z.number().int().min(1).max(60).optional(),\n })\n .strict();\nexport type InteractionFrameStreamOptions = z.infer<typeof InteractionFrameStreamOptions>;\n\nexport const BrowserFrameStreamOptions = InteractionFrameStreamOptions;\nexport type BrowserFrameStreamOptions = z.infer<typeof BrowserFrameStreamOptions>;\n\n/** Placement-neutral controller attachment. Browser and Computer viewers use\n * the same authenticated transport shape while negotiating distinct stream\n * protocols and resource generations. */\nconst DirectInteractionFrameStreamAttachment = z\n .object({\n kind: z.literal(\"direct_websocket\"),\n url: boundedUrl,\n protocols: z.array(z.string().min(1).max(2_048)).length(2),\n })\n .strict();\n\n/** Native tunnels offer `binary` + RFB + bearer (3). Docker and OpenSandbox\n * hide those on the API interaction frame-proxy, so the viewer sees `binary` +\n * the proxy grant (2). */\nconst DirectComputerRfbAttachment = z\n .object({\n kind: z.literal(\"direct_rfb\"),\n url: boundedUrl,\n protocols: z.array(z.string().min(1).max(2_048)).min(2).max(3),\n })\n .strict();\n\nfunction relayInteractionFrameStreamAttachment<const Kind extends 3 | 4>(kind: Kind) {\n return z\n .object({\n kind: z.literal(\"relay\"),\n url: boundedUrl,\n token: z.string().min(32).max(8_192),\n channel: z\n .object({\n channelId: boundedOpaqueId,\n workspaceId: z.string().uuid(),\n agentId: boundedOpaqueId,\n kind: z.literal(kind),\n port: z.number().int().min(1).max(65_535),\n })\n .strict(),\n })\n .strict();\n}\n\nexport const BrowserFrameStreamAttachment = z.discriminatedUnion(\"kind\", [\n DirectInteractionFrameStreamAttachment,\n relayInteractionFrameStreamAttachment(3),\n]);\nexport type BrowserFrameStreamAttachment = z.infer<typeof BrowserFrameStreamAttachment>;\n\nexport const ComputerFrameStreamAttachment = z.discriminatedUnion(\"kind\", [\n DirectInteractionFrameStreamAttachment,\n DirectComputerRfbAttachment,\n relayInteractionFrameStreamAttachment(4),\n]);\nexport type ComputerFrameStreamAttachment = z.infer<typeof ComputerFrameStreamAttachment>;\n\nexport const InteractionFrameStreamAttachment = z.union([\n BrowserFrameStreamAttachment,\n ComputerFrameStreamAttachment,\n]);\nexport type InteractionFrameStreamAttachment = z.infer<typeof InteractionFrameStreamAttachment>;\n\nexport const BrowserSessionAttachment = z\n .object({\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId,\n stream: BrowserFrameStreamAttachment,\n expiresAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type BrowserSessionAttachment = z.infer<typeof BrowserSessionAttachment>;\n\nexport const BrowserSessionAttachmentRequest = z\n .object({\n targetId: boundedOpaqueId,\n expiresInSeconds: z.number().int().min(15).max(600).default(120),\n stream: BrowserFrameStreamOptions.optional(),\n })\n .strict();\nexport type BrowserSessionAttachmentRequest = z.infer<typeof BrowserSessionAttachmentRequest>;\n\n/** Human/API action request. The API supplies resource/controller/actor fields\n * from authenticated durable authority before dispatching the canonical\n * BrowserActionCommand to the placement. */\nexport const BrowserActionRequest = z\n .object({\n operationId: z.string().uuid(),\n targetId: boundedOpaqueId,\n expectedTargetGeneration: opaqueGeneration,\n expectedDocumentGeneration: opaqueGeneration.nullable(),\n expectedFrameId: opaqueGeneration.nullable(),\n observationMode: z.enum([\"full\", \"none\"]).default(\"full\"),\n action: z.union([BrowserAction, BrowserActionBatch]),\n })\n .strict();\nexport type BrowserActionRequest = z.infer<typeof BrowserActionRequest>;\n\nexport const BrowserSessionHeartbeatResponse = z\n .object({\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n alive: z.literal(true),\n })\n .strict();\nexport type BrowserSessionHeartbeatResponse = z.infer<typeof BrowserSessionHeartbeatResponse>;\n\nexport const BrowserActionReceipt = z\n .object({\n protocolVersion: z.literal(INTERACTION_PROTOCOL_VERSION),\n operationId: z.string().uuid(),\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId,\n state: InteractionOperationState,\n dispatchedAt: z.string().datetime({ offset: true }).nullable(),\n settledAt: z.string().datetime({ offset: true }).nullable(),\n observation: BrowserObservation.nullable(),\n error: InteractionError.nullable(),\n })\n .strict()\n .superRefine((receipt, context) => {\n if (receipt.state === \"completed\" && (receipt.error !== null || receipt.settledAt === null)) {\n context.addIssue({\n code: \"custom\",\n message: \"completed receipt must settle without error\",\n });\n }\n if (\n (receipt.state === \"failed\" || receipt.state === \"outcome_unknown\") &&\n (receipt.error === null || receipt.settledAt === null)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"terminal error receipt requires error and time\",\n });\n }\n if (receipt.state === \"dispatched\" && receipt.dispatchedAt === null) {\n context.addIssue({\n code: \"custom\",\n message: \"dispatched receipt requires dispatch time\",\n });\n }\n });\nexport type BrowserActionReceipt = z.infer<typeof BrowserActionReceipt>;\n\n/** Controller-private protected-fill wire contract. Secret values cross only\n * the credential broker -> exact placement controller boundary; this command\n * is never projected into model MCP, Codemode, public action history, or UI. */\nexport const BrowserProtectedAuthFieldValue = ProtectedAuthField.extend({\n purpose: SiteAuthFieldPurpose,\n value: z.string().min(1).max(65_536),\n}).strict();\nexport type BrowserProtectedAuthFieldValue = z.infer<typeof BrowserProtectedAuthFieldValue>;\n\nexport const BrowserProtectedAuthFillCommand = z\n .object({\n protocolVersion: z.literal(INTERACTION_PROTOCOL_VERSION),\n operationId: z.string().uuid(),\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId,\n expectedTargetGeneration: opaqueGeneration,\n expectedDocumentGeneration: opaqueGeneration,\n expectedFrameId: opaqueGeneration,\n actor: InteractionActor,\n authorityId: boundedOpaqueId,\n credentialVersion: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n allowedOrigins: z.array(canonicalWebOrigin).min(1).max(64),\n fields: z.array(BrowserProtectedAuthFieldValue).min(1).max(32),\n submit: ProtectedAuthSubmit,\n })\n .strict()\n .superRefine((command, context) => {\n if (new Set(command.allowedOrigins).size !== command.allowedOrigins.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"allowedOrigins\"],\n message: \"protected-fill origins repeat\",\n });\n }\n const fieldIds = command.fields.map((field) => field.fieldId);\n if (new Set(fieldIds).size !== fieldIds.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"fields\"],\n message: \"protected-fill field ids repeat\",\n });\n }\n });\nexport type BrowserProtectedAuthFillCommand = z.infer<typeof BrowserProtectedAuthFillCommand>;\n\nexport const BrowserProtectedAuthObservation = z\n .object({\n target: BrowserTarget,\n status: z.enum([\"submitted\", \"working\"]),\n })\n .strict();\nexport type BrowserProtectedAuthObservation = z.infer<typeof BrowserProtectedAuthObservation>;\n\n/** Secret-free placement receipt. It can be journaled, replayed, and returned\n * to the broker without retaining any field value or model-visible page tree. */\nexport const BrowserProtectedAuthFillReceipt = z\n .object({\n protocolVersion: z.literal(INTERACTION_PROTOCOL_VERSION),\n operationId: z.string().uuid(),\n browserSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId,\n state: InteractionOperationState,\n dispatchedAt: z.string().datetime({ offset: true }).nullable(),\n settledAt: z.string().datetime({ offset: true }).nullable(),\n observation: BrowserProtectedAuthObservation.nullable(),\n error: InteractionError.nullable(),\n })\n .strict()\n .superRefine((receipt, context) => {\n if (\n receipt.state === \"completed\" &&\n (receipt.error !== null || receipt.observation === null || receipt.settledAt === null)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"completed protected-fill receipt requires a result and no error\",\n });\n }\n if (\n (receipt.state === \"failed\" || receipt.state === \"outcome_unknown\") &&\n (receipt.error === null || receipt.observation !== null || receipt.settledAt === null)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"terminal protected-fill error requires error, no result, and time\",\n });\n }\n if (receipt.state === \"dispatched\" && receipt.dispatchedAt === null) {\n context.addIssue({\n code: \"custom\",\n message: \"dispatched protected-fill receipt requires dispatch time\",\n });\n }\n });\nexport type BrowserProtectedAuthFillReceipt = z.infer<typeof BrowserProtectedAuthFillReceipt>;\n\nexport const ComputerSessionCapabilities = z\n .object({\n semanticObservation: z.boolean(),\n appDiscovery: z.boolean(),\n appLaunch: z.boolean(),\n windowCapture: z.boolean(),\n screenCapture: z.boolean(),\n semanticActions: z.boolean(),\n pointerInput: z.boolean(),\n keyboardInput: z.boolean(),\n clipboard: z.boolean(),\n backgroundActions: z.boolean(),\n parallelApps: z.boolean(),\n })\n .strict();\nexport type ComputerSessionCapabilities = z.infer<typeof ComputerSessionCapabilities>;\n\n/** A fresh bounded read of the native clipboard for the ComputerSession's\n * graphical seat. Physical ComputerSessions on the same login seat intentionally\n * observe the same OS clipboard; BrowserSession private clipboards never do. */\nexport const ComputerClipboard = z\n .object({\n computerSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n text: z\n .string()\n .max(INTERACTION_MAX_CLIPBOARD_BYTES)\n .refine(\n (value) => new TextEncoder().encode(value).byteLength <= INTERACTION_MAX_CLIPBOARD_BYTES,\n { message: \"computer clipboard text exceeds its UTF-8 byte envelope\" },\n )\n .nullable(),\n truncated: z.boolean(),\n observedAt: z.string().datetime({ offset: true }),\n })\n .strict()\n .superRefine((clipboard, context) => {\n if (clipboard.text === null && clipboard.truncated) {\n context.addIssue({\n code: \"custom\",\n path: [\"truncated\"],\n message: \"an unavailable computer clipboard value cannot be truncated\",\n });\n }\n });\nexport type ComputerClipboard = z.infer<typeof ComputerClipboard>;\n\nexport const ComputerSession = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n name: z.string().trim().min(1).max(200),\n lifecycle: InteractionLifecycle,\n placement: InteractionPlacement,\n controller: InteractionControllerBinding.nullable(),\n platform: z.enum([\"linux\", \"macos\", \"windows\"]).nullable(),\n adapter: boundedOpaqueId.nullable(),\n seatId: boundedOpaqueId.nullable(),\n displayId: boundedOpaqueId.nullable(),\n capabilities: ComputerSessionCapabilities.nullable(),\n associations: z.array(InteractionAssociation).max(1_000),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string().datetime({ offset: true }),\n lastUsedAt: z.string().datetime({ offset: true }),\n failureCode: boundedOpaqueId.nullable(),\n })\n .strict()\n .superRefine((session, context) => {\n const nativeBinding = [\n session.platform,\n session.adapter,\n session.seatId,\n session.displayId,\n session.capabilities,\n ];\n const populated = nativeBinding.filter((value) => value !== null).length;\n if (populated !== 0 && populated !== nativeBinding.length) {\n context.addIssue({\n code: \"custom\",\n message: \"ComputerSession native binding must be absent or complete\",\n });\n }\n if (session.lifecycle === \"active\" && (session.controller === null || populated === 0)) {\n context.addIssue({\n code: \"custom\",\n message: \"active ComputerSession requires controller and native bindings\",\n });\n }\n });\nexport type ComputerSession = z.infer<typeof ComputerSession>;\n\nexport const ComputerTarget = z\n .object({\n id: boundedOpaqueId,\n computerSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetGeneration: opaqueGeneration,\n kind: z.enum([\"app\", \"window\", \"screen\"]),\n applicationId: z.string().max(1_024).nullable(),\n processId: z.number().int().positive().nullable(),\n title: z.string().max(4_096),\n bounds: InteractionRect.nullable(),\n focused: z.boolean(),\n })\n .strict();\nexport type ComputerTarget = z.infer<typeof ComputerTarget>;\n\nexport const ComputerObservation = z\n .object({\n protocolVersion: z.literal(INTERACTION_PROTOCOL_VERSION),\n observationId: boundedOpaqueId,\n computerSessionId: z.string().uuid(),\n target: ComputerTarget,\n frameId: opaqueGeneration.nullable(),\n semantic: z.union([InteractionSemanticSnapshot, InteractionSemanticDiff]).nullable(),\n screenshot: RetainedArtifactReferenceSchema.nullable(),\n focusedRef: boundedOpaqueId.nullable(),\n changedRegions: z.array(InteractionRect).max(INTERACTION_MAX_CHANGED_NODES),\n observedAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type ComputerObservation = z.infer<typeof ComputerObservation>;\n\nexport const ComputerAction = z.discriminatedUnion(\"type\", [\n z\n .object({\n type: z.literal(\"semantic\"),\n locator: ComputerLocator,\n action: z.enum([\n \"invoke\",\n \"focus\",\n \"set_value\",\n \"increment\",\n \"decrement\",\n \"select\",\n \"deselect\",\n \"expand\",\n \"collapse\",\n \"show_menu\",\n \"scroll_into_view\",\n ]),\n value: z.union([z.string().max(1_000_000), z.number().finite(), z.boolean()]).optional(),\n })\n .strict()\n .superRefine((action, context) => {\n if ((action.action === \"set_value\") !== (action.value !== undefined)) {\n context.addIssue({\n code: \"custom\",\n path: [\"value\"],\n message: \"value is required exactly for set_value\",\n });\n }\n }),\n z\n .object({\n type: z.literal(\"pointer\"),\n frameId: opaqueGeneration,\n action: z.enum([\"click\", \"double_click\", \"move\", \"scroll\", \"drag\"]),\n x: z.number().finite(),\n y: z.number().finite(),\n endX: z.number().finite().optional(),\n endY: z.number().finite().optional(),\n deltaX: z.number().finite().optional(),\n deltaY: z.number().finite().optional(),\n button: z.enum([\"left\", \"right\", \"middle\"]).optional(),\n })\n .strict()\n .superRefine((action, context) => {\n const hasEnd = action.endX !== undefined || action.endY !== undefined;\n const hasDelta = action.deltaX !== undefined || action.deltaY !== undefined;\n if (action.action === \"drag\" && (action.endX === undefined || action.endY === undefined)) {\n context.addIssue({\n code: \"custom\",\n message: \"pointer drag requires endX and endY\",\n });\n }\n if (action.action !== \"drag\" && hasEnd) {\n context.addIssue({\n code: \"custom\",\n message: \"pointer end coordinates require drag\",\n });\n }\n if (\n action.action === \"scroll\" &&\n action.deltaX === undefined &&\n action.deltaY === undefined\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"pointer scroll requires a delta\",\n });\n }\n if (action.action !== \"scroll\" && hasDelta) {\n context.addIssue({\n code: \"custom\",\n message: \"pointer deltas require scroll\",\n });\n }\n }),\n z\n .object({\n type: z.literal(\"keyboard\"),\n action: z.enum([\"type\", \"press\"]),\n value: z.string().max(1_000_000),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"clipboard\"),\n operation: z.enum([\"write\", \"clear\", \"copy\", \"paste\"]),\n text: z\n .string()\n .max(INTERACTION_MAX_CLIPBOARD_BYTES)\n .refine(\n (value) => new TextEncoder().encode(value).byteLength <= INTERACTION_MAX_CLIPBOARD_BYTES,\n { message: \"computer clipboard text exceeds its UTF-8 byte envelope\" },\n )\n .optional(),\n })\n .strict()\n .superRefine((action, context) => {\n if ((action.operation === \"write\") !== (action.text !== undefined)) {\n context.addIssue({\n code: \"custom\",\n path: [\"text\"],\n message: \"computer clipboard text is required exactly for write\",\n });\n }\n }),\n z.object({ type: z.literal(\"focus\"), targetId: boundedOpaqueId }).strict(),\n z\n .object({\n type: z.literal(\"launch\"),\n applicationId: z.string().min(1).max(1_024),\n })\n .strict(),\n]);\nexport type ComputerAction = z.infer<typeof ComputerAction>;\n\nexport const ComputerActionCommand = z\n .object({\n protocolVersion: z.literal(INTERACTION_PROTOCOL_VERSION),\n operationId: z.string().uuid(),\n computerSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId,\n expectedTargetGeneration: opaqueGeneration,\n expectedObservationId: boundedOpaqueId.nullable(),\n expectedFrameId: opaqueGeneration.nullable(),\n actor: InteractionActor,\n action: ComputerAction,\n })\n .strict()\n .superRefine((command, context) => {\n if (\n command.action.type === \"semantic\" &&\n command.action.locator.kind === \"ref\" &&\n command.expectedObservationId === null\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"expectedObservationId\"],\n message: \"semantic ref actions require expectedObservationId\",\n });\n }\n if (command.action.type === \"pointer\") {\n if (command.expectedFrameId !== command.action.frameId) {\n context.addIssue({\n code: \"custom\",\n path: [\"expectedFrameId\"],\n message: \"pointer action frameId must match expectedFrameId\",\n });\n }\n } else if (command.expectedFrameId !== null) {\n context.addIssue({\n code: \"custom\",\n path: [\"expectedFrameId\"],\n message: \"expectedFrameId is only valid for pointer actions\",\n });\n }\n });\nexport type ComputerActionCommand = z.infer<typeof ComputerActionCommand>;\n\nexport const ComputerActionReceipt = z\n .object({\n protocolVersion: z.literal(INTERACTION_PROTOCOL_VERSION),\n operationId: z.string().uuid(),\n computerSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId,\n state: InteractionOperationState,\n dispatchedAt: z.string().datetime({ offset: true }).nullable(),\n settledAt: z.string().datetime({ offset: true }).nullable(),\n observation: ComputerObservation.nullable(),\n error: InteractionError.nullable(),\n })\n .strict()\n .superRefine((receipt, context) => {\n if (receipt.state === \"completed\" && (receipt.error !== null || receipt.settledAt === null)) {\n context.addIssue({\n code: \"custom\",\n message: \"completed receipt must settle without error\",\n });\n }\n if (\n (receipt.state === \"failed\" || receipt.state === \"outcome_unknown\") &&\n (receipt.error === null || receipt.settledAt === null)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"terminal error receipt requires error and time\",\n });\n }\n if (receipt.state === \"dispatched\" && receipt.dispatchedAt === null) {\n context.addIssue({\n code: \"custom\",\n message: \"dispatched receipt requires dispatch time\",\n });\n }\n });\nexport type ComputerActionReceipt = z.infer<typeof ComputerActionReceipt>;\n\n/** Public ComputerSession creation request. Placement chooses the concrete\n * platform adapter and allocates its default physical or isolated virtual seat;\n * callers may discover and reuse an existing ComputerSession instead. */\nexport const CreateComputerSessionRequest = z\n .object({\n operationId: z.string().uuid(),\n sessionId: z.string().uuid(),\n name: z.string().trim().min(1).max(200).optional(),\n placement: InteractionPlacement.optional(),\n })\n .strict();\nexport type CreateComputerSessionRequest = z.infer<typeof CreateComputerSessionRequest>;\n\nexport const ComputerSessionListResponse = z\n .object({\n revision: z.number().int().nonnegative(),\n sessions: z.array(ComputerSession).max(10_000),\n })\n .strict();\nexport type ComputerSessionListResponse = z.infer<typeof ComputerSessionListResponse>;\n\nexport const ComputerSessionMutationResponse = z\n .object({\n session: ComputerSession,\n operation: InteractionLifecycleOperationReceipt,\n })\n .strict();\nexport type ComputerSessionMutationResponse = z.infer<typeof ComputerSessionMutationResponse>;\n\nexport const ComputerSessionLifecycleRequest = z\n .object({\n operationId: z.string().uuid(),\n })\n .strict();\nexport type ComputerSessionLifecycleRequest = z.infer<typeof ComputerSessionLifecycleRequest>;\n\nexport const ComputerTargetListResponse = z\n .object({\n computerSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targets: z.array(ComputerTarget).max(10_000),\n })\n .strict();\nexport type ComputerTargetListResponse = z.infer<typeof ComputerTargetListResponse>;\n\nexport const ComputerFrameStreamOptions = InteractionFrameStreamOptions;\nexport type ComputerFrameStreamOptions = z.infer<typeof ComputerFrameStreamOptions>;\n\nexport const ComputerSessionAttachment = z\n .object({\n computerSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n targetId: boundedOpaqueId,\n stream: ComputerFrameStreamAttachment,\n expiresAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type ComputerSessionAttachment = z.infer<typeof ComputerSessionAttachment>;\n\nexport const ComputerSessionAttachmentRequest = z\n .object({\n targetId: boundedOpaqueId,\n expiresInSeconds: z.number().int().min(15).max(600).default(120),\n stream: ComputerFrameStreamOptions.optional(),\n })\n .strict();\nexport type ComputerSessionAttachmentRequest = z.infer<typeof ComputerSessionAttachmentRequest>;\n\n/** Human/API action request. Authenticated durable authority supplies the\n * resource, controller and actor fences before controller dispatch. */\nexport const ComputerActionRequest = z\n .object({\n operationId: z.string().uuid(),\n targetId: boundedOpaqueId,\n expectedTargetGeneration: opaqueGeneration,\n expectedObservationId: boundedOpaqueId.nullable(),\n expectedFrameId: opaqueGeneration.nullable(),\n action: ComputerAction,\n })\n .strict()\n .superRefine((request, context) => {\n if (\n request.action.type === \"semantic\" &&\n request.action.locator.kind === \"ref\" &&\n request.expectedObservationId === null\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"expectedObservationId\"],\n message: \"semantic ref actions require expectedObservationId\",\n });\n }\n if (request.action.type === \"pointer\") {\n if (request.expectedFrameId !== request.action.frameId) {\n context.addIssue({\n code: \"custom\",\n path: [\"expectedFrameId\"],\n message: \"pointer action frameId must match expectedFrameId\",\n });\n }\n } else if (request.expectedFrameId !== null) {\n context.addIssue({\n code: \"custom\",\n path: [\"expectedFrameId\"],\n message: \"expectedFrameId is only valid for pointer actions\",\n });\n }\n });\nexport type ComputerActionRequest = z.infer<typeof ComputerActionRequest>;\n\nexport const ComputerSessionHeartbeatResponse = z\n .object({\n computerSessionId: z.string().uuid(),\n controllerGeneration: opaqueGeneration,\n alive: z.literal(true),\n })\n .strict();\nexport type ComputerSessionHeartbeatResponse = z.infer<typeof ComputerSessionHeartbeatResponse>;\n","import { z } from \"zod\";\n\nimport { RetainedArtifactReferenceSchema } from \"./retained-output\";\n\n/**\n * Channel-A currently returns one bounded binary-safe read. Keep publication\n * below that ceiling so an extra sentinel byte can distinguish an exact file\n * from a truncated prefix.\n */\nexport const SANDBOX_FILE_ARTIFACT_MAX_BYTES = 25 * 1024 * 1024 - 1;\n\nexport const PublishSandboxFileArtifactRequest = z\n .object({\n path: z.string().min(1).max(4_096),\n })\n .strict();\nexport type PublishSandboxFileArtifactRequest = z.infer<typeof PublishSandboxFileArtifactRequest>;\n\n/**\n * Closed model/UI receipt for one exact sandbox-file publication. Storage\n * locators and signed URLs never cross this boundary.\n */\nexport const SandboxFileArtifactReceipt = z\n .object({\n type: z.literal(\"sandbox_file\"),\n sandboxPath: z.string().min(1).max(4_096),\n filename: z.string().min(1).max(1_024),\n artifact: RetainedArtifactReferenceSchema,\n })\n .strict()\n .superRefine((value, context) => {\n const pathSegments = value.sandboxPath.split(\"/\");\n if (\n !value.sandboxPath.startsWith(\"/workspace/\") ||\n value.sandboxPath.includes(\"\\0\") ||\n pathSegments.some(\n (segment, index) => index > 1 && (!segment || segment === \".\" || segment === \"..\"),\n ) ||\n pathSegments.at(-1) !== value.filename\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"sandboxPath\"],\n message: \"sandbox path must canonically identify the published filename in /workspace\",\n });\n }\n if (value.artifact.kind !== \"file\" || value.artifact.retention.policy !== \"workspace_file\") {\n context.addIssue({\n code: \"custom\",\n path: [\"artifact\"],\n message: \"sandbox files require a permanent workspace-file artifact\",\n });\n }\n if (\n value.artifact.originalBytes < 1 ||\n value.artifact.originalBytes > SANDBOX_FILE_ARTIFACT_MAX_BYTES\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"artifact\", \"originalBytes\"],\n message: \"sandbox file size is outside the publication byte limit\",\n });\n }\n });\nexport type SandboxFileArtifactReceipt = z.infer<typeof SandboxFileArtifactReceipt>;\n","import type { SessionGoalStatus, SessionStatus } from \"./session-topology-primitives\";\nimport type { WorkDiscoveryProjection } from \"./work-claims\";\nimport type { Session, SessionQueueSnapshot } from \"./index\";\n\n/** MCP-only presentation choice. REST/SDK session shapes keep their own defaults. */\nexport type SessionMcpDetail = \"compact\" | \"full\";\n\n/** Search evidence is inseparable from matching; presentation opts never weaken search. */\nexport function sessionMcpIncludesRelatedWork(options: {\n detail?: SessionMcpDetail | undefined;\n includeRelatedWork?: boolean | undefined;\n query?: string | undefined;\n subject?: unknown;\n}): boolean {\n return (\n Boolean(options.query?.trim() || options.subject) ||\n (options.includeRelatedWork ?? options.detail === \"full\")\n );\n}\n\n/** A database prefix plus its exact Unicode code-point count, not a JS UTF-16 count. */\nexport function boundSessionMcpText(\n value: string | null,\n maxChars = 600,\n originalChars?: number | null,\n) {\n if (value === null) return { text: null, truncated: false };\n const chars = Array.from(value);\n const sourceChars = Math.max(chars.length, originalChars ?? chars.length);\n if (sourceChars <= maxChars) return { text: value, truncated: false };\n let bodyChars = maxChars;\n let marker = \"\";\n for (let attempt = 0; attempt < 4; attempt += 1) {\n marker = `…[${Math.max(0, sourceChars - bodyChars)} chars truncated]…`;\n const next = Math.max(0, maxChars - Array.from(marker).length);\n if (next === bodyChars) break;\n bodyChars = next;\n }\n return { text: `${chars.slice(0, bodyChars).join(\"\")}${marker}`, truncated: true };\n}\n\nexport type SessionMcpControlSource = {\n state: string;\n primaryBlocker: {\n kind: \"session\" | \"workspace\";\n sessionId?: string | undefined;\n displayName: string;\n displayNameOriginalChars?: number;\n reason?: string | null;\n } | null;\n additionalBlockerCount: number;\n};\n\n/** Call only after related-access projection: this helper never grants ancestor access. */\nexport function compactSessionMcpPause(control: SessionMcpControlSource) {\n const blocker = control.primaryBlocker;\n if (control.state === \"active\" && !blocker && !control.additionalBlockerCount) return undefined;\n const name = blocker\n ? boundSessionMcpText(blocker.displayName, 200, blocker.displayNameOriginalChars)\n : null;\n const reason = blocker?.reason ? boundSessionMcpText(blocker.reason) : null;\n return {\n state: control.state,\n ...(blocker\n ? {\n source: {\n kind: blocker.kind,\n ...(blocker.sessionId ? { sessionId: blocker.sessionId } : {}),\n displayName: name!.text,\n ...(name!.truncated ? { displayNameTruncated: true } : {}),\n ...(reason\n ? { reason: reason.text, ...(reason.truncated ? { reasonTruncated: true } : {}) }\n : {}),\n },\n }\n : {}),\n ...(control.additionalBlockerCount > 0\n ? { additionalBlockerCount: control.additionalBlockerCount }\n : {}),\n };\n}\n\nexport type SessionMcpListSource = {\n channelId?: string | null;\n id: string;\n title: string | null;\n titleOriginalChars?: number | null;\n status: SessionStatus;\n parentSessionId: string | null;\n effectiveControl: SessionMcpControlSource;\n goal: { status: SessionGoalStatus; text: string; textOriginalChars?: number } | null;\n updatedAt: string;\n workDiscovery?: WorkDiscoveryProjection;\n treeStats?: {\n attentionDescendants: number;\n pausedDescendants: number;\n failedDescendants: number;\n truncated: boolean;\n };\n};\n\n/** Closed allowlist, shared by MCP adapters. Never spread a database/session object. */\nexport function compactSessionMcpListRow(\n session: SessionMcpListSource,\n includeRelatedWork = false,\n) {\n const title = boundSessionMcpText(session.title, 200, session.titleOriginalChars);\n const goal = session.goal\n ? boundSessionMcpText(session.goal.text, 600, session.goal.textOriginalChars)\n : null;\n const pause = compactSessionMcpPause(session.effectiveControl);\n const tree = session.treeStats;\n const attention =\n tree &&\n (tree.attentionDescendants > 0 ||\n tree.pausedDescendants > 0 ||\n tree.failedDescendants > 0 ||\n tree.truncated)\n ? {\n ...(tree.attentionDescendants > 0\n ? { requiresActionDescendants: tree.attentionDescendants }\n : {}),\n ...(tree.pausedDescendants > 0 ? { pausedDescendants: tree.pausedDescendants } : {}),\n ...(tree.failedDescendants > 0 ? { failedDescendants: tree.failedDescendants } : {}),\n ...(tree.truncated ? { truncated: true } : {}),\n }\n : undefined;\n return {\n id: session.id,\n ...(session.channelId ? { projectId: session.channelId } : {}),\n title: title.text,\n status: session.status,\n ...(title.truncated ? { titleTruncated: true } : {}),\n ...(session.parentSessionId ? { parentSessionId: session.parentSessionId } : {}),\n ...(goal\n ? {\n goal: {\n status: session.goal!.status,\n summary: goal.text,\n ...(goal.truncated ? { summaryTruncated: true } : {}),\n },\n }\n : {}),\n ...(pause ? { pause } : {}),\n ...(attention ? { attention } : {}),\n ...(includeRelatedWork && session.workDiscovery ? { relatedWork: session.workDiscovery } : {}),\n updatedAt: session.updatedAt,\n };\n}\n\nexport type SessionMcpMonitoringSource = {\n goal: {\n status: SessionGoalStatus;\n text: string;\n textOriginalChars: number;\n evidence: string | null;\n evidenceOriginalChars: number | null;\n rationale: string | null;\n rationaleOriginalChars: number | null;\n pausedReason: string | null;\n pausedReasonOriginalChars: number | null;\n } | null;\n progress: {\n sequence: number;\n text: string | null;\n /** Null when a bounded encoded prefix cannot establish the original code-point count. */\n originalChars: number | null;\n textTruncated?: true;\n occurredAt: string;\n } | null;\n wait: { reason: string; until: string } | null;\n};\n\n/** Closed management projection shared by adapters; never includes session configuration.\n * Apply target/ancestor authorization projection to session before calling. */\nexport function compactSessionMcpDetail(\n session: Session,\n monitoring: SessionMcpMonitoringSource,\n queue: SessionQueueSnapshot | null,\n) {\n const title = boundSessionMcpText(session.title, 200);\n const pause = compactSessionMcpPause(session.effectiveControl);\n const goal = monitoring.goal;\n const goalText = goal ? boundSessionMcpText(goal.text, 600, goal.textOriginalChars) : null;\n const optionalText = <Name extends string>(\n name: Name,\n text: string | null,\n originalChars: number | null,\n limit = 600,\n ): Partial<Record<Name, string | null> & Record<`${Name}Truncated`, true>> => {\n if (text === null) return {};\n const bounded = boundSessionMcpText(text, limit, originalChars);\n return {\n [name]: bounded.text,\n ...(bounded.truncated ? { [`${name}Truncated`]: true } : {}),\n } as Partial<Record<Name, string | null> & Record<`${Name}Truncated`, true>>;\n };\n const progress = monitoring.progress;\n const progressText = progress\n ? boundSessionMcpText(progress.text, 600, progress.originalChars)\n : null;\n const waitReason = monitoring.wait ? boundSessionMcpText(monitoring.wait.reason) : null;\n return {\n id: session.id,\n ...(session.channelId ? { projectId: session.channelId } : {}),\n title: title.text,\n status: session.status,\n ...(title.truncated ? { titleTruncated: true } : {}),\n ...(session.parentSessionId ? { parentSessionId: session.parentSessionId } : {}),\n ...(session.activeTurnId ? { activeTurnId: session.activeTurnId } : {}),\n lastSequence: session.lastSequence,\n ...(goal\n ? {\n goal: {\n status: goal.status,\n summary: goalText!.text,\n ...(goalText!.truncated ? { summaryTruncated: true } : {}),\n ...optionalText(\"evidence\", goal.evidence, goal.evidenceOriginalChars, 2000),\n ...optionalText(\"rationale\", goal.rationale, goal.rationaleOriginalChars),\n ...optionalText(\"pausedReason\", goal.pausedReason, goal.pausedReasonOriginalChars),\n },\n }\n : {}),\n ...(progress\n ? {\n progress: {\n sequence: progress.sequence,\n text: progressText!.text,\n occurredAt: progress.occurredAt,\n ...(progressText!.truncated || progress.textTruncated ? { textTruncated: true } : {}),\n },\n }\n : {}),\n ...(pause ? { pause } : {}),\n ...(monitoring.wait\n ? {\n wait: {\n reason: waitReason!.text,\n until: monitoring.wait.until,\n ...(waitReason!.truncated ? { reasonTruncated: true } : {}),\n },\n }\n : {}),\n ...(queue\n ? {\n queue: {\n queuedTurns: queue.items.length,\n pendingInputs: queue.pendingInputs.length,\n ...(queue.stoppingPreviousAttempt ? { stoppingPreviousAttempt: true } : {}),\n },\n }\n : {}),\n ...(session.effectiveControl.settlement || session.effectiveControl.backgroundCommandSettlement\n ? {\n stopping: {\n ...(session.effectiveControl.settlement\n ? { attempts: session.effectiveControl.settlement.attemptCount }\n : {}),\n ...(session.effectiveControl.backgroundCommandSettlement\n ? {\n backgroundCommands:\n session.effectiveControl.backgroundCommandSettlement.commandCount,\n }\n : {}),\n },\n }\n : {}),\n updatedAt: session.updatedAt,\n };\n}\n\nexport type SessionMcpCompactListRow = ReturnType<typeof compactSessionMcpListRow>;\nexport type SessionMcpCompactDetail = ReturnType<typeof compactSessionMcpDetail>;\n","import { z } from \"zod\";\n\nimport {\n NestedAgentDepthValue,\n SessionGoalStatus,\n SessionStatus,\n} from \"./session-topology-primitives\";\nimport { WorkDiscoveryProjection } from \"./work-claims\";\n\n/** Compact, bounded session projection for workspace agent-topology browsers. */\nexport const AgentTopologySession = z.object({\n id: z.string().uuid(),\n title: z.string().nullable(),\n titleTruncated: z.boolean(),\n parentSessionId: z.string().uuid().nullable(),\n rootSessionId: z.string().uuid(),\n nestedAgentDepth: NestedAgentDepthValue,\n ancestorPath: z.array(\n z.object({\n id: z.string().uuid(),\n title: z.string().nullable(),\n titleTruncated: z.boolean(),\n }),\n ),\n status: SessionStatus,\n goal: z\n .object({\n status: SessionGoalStatus,\n summary: z.string(),\n summaryTruncated: z.boolean(),\n })\n .nullable(),\n pause: z.object({\n state: z.enum([\"active\", \"paused\"]),\n additionalBlockerCount: z.number().int().nonnegative(),\n source: z\n .object({\n kind: z.enum([\"session\", \"workspace\"]),\n sessionId: z.string().uuid().optional(),\n displayName: z.string(),\n displayNameTruncated: z.boolean(),\n })\n .nullable(),\n }),\n children: z.object({\n directChildren: z.number().int().nonnegative(),\n totalDescendants: z.number().int().nonnegative(),\n runningDescendants: z.number().int().nonnegative(),\n queuedDescendants: z.number().int().nonnegative(),\n attentionDescendants: z.number().int().nonnegative(),\n pausedDescendants: z.number().int().nonnegative(),\n failedDescendants: z.number().int().nonnegative(),\n truncated: z.boolean(),\n }),\n relatedWork: WorkDiscoveryProjection,\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type AgentTopologySession = z.infer<typeof AgentTopologySession>;\n\nexport const AgentTopologyPageResponse = z.object({\n sessions: z.array(AgentTopologySession),\n total: z.number().int().nonnegative(),\n hasMore: z.boolean(),\n /** Operator rollout decision for human advisory presentation. */\n humanAdvisoriesEnabled: z.boolean().optional(),\n nextCursor: z.string().nullable(),\n});\nexport type AgentTopologyPageResponse = z.infer<typeof AgentTopologyPageResponse>;\n","import { z } from \"zod\";\nimport { normalizeAutomaticSessionTitle } from \"./session-titles\";\n\nexport const WORK_CLAIM_NAMESPACE_MAX_BYTES = 64;\nexport const WORK_CLAIM_CANONICAL_KEY_MAX_BYTES = 512;\nexport const WORK_CLAIM_DISPLAY_LABEL_MAX_BYTES = 256;\nexport const WORK_CLAIM_VERSION_VALUE_MAX_BYTES = 256;\nexport const WORK_CLAIM_ACTIVE_SESSION_CAP = 64;\nexport const WORK_CLAIM_DISCOVERY_LIMIT = 8;\nexport const WORK_CLAIM_DISCOVERY_DEFAULT_LIMIT = 4;\nexport const WORK_DISCOVERY_QUERY_MAX_CHARS = 200;\nexport const WORK_DISCOVERY_RECENT_HOURS_MAX = 24 * 365;\n\nconst utf8Bytes = (value: string): number => new TextEncoder().encode(value).byteLength;\nconst CONTROL_CHARACTERS = /[\\u0000-\\u001f\\u007f-\\u009f]/u;\nconst NAMESPACE_PATTERN = /^[a-z0-9](?:[a-z0-9._:-]{0,62}[a-z0-9])?$/u;\n\nfunction boundedCanonicalText(maxBytes: number, label: string) {\n return z\n .string()\n .min(1)\n .superRefine((value, context) => {\n if (value !== value.trim()) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${label} must not have leading or trailing whitespace`,\n });\n }\n if (value !== value.normalize(\"NFKC\")) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${label} must use canonical Unicode normalization`,\n });\n }\n if (CONTROL_CHARACTERS.test(value)) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${label} must not contain control characters`,\n });\n }\n if (utf8Bytes(value) > maxBytes) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${label} must be at most ${maxBytes} UTF-8 bytes`,\n });\n }\n });\n}\n\nexport function normalizeWorkClaimNamespace(value: string): string {\n return value.normalize(\"NFKC\").trim().toLowerCase();\n}\n\nexport function normalizeWorkClaimCanonicalKey(value: string): string {\n return value.normalize(\"NFKC\").trim();\n}\n\nexport function normalizeWorkClaimDisplayLabel(value: string): string | null {\n const normalized = normalizeAutomaticSessionTitle(value);\n if (!normalized || utf8Bytes(normalized) > WORK_CLAIM_DISPLAY_LABEL_MAX_BYTES) return null;\n return normalized;\n}\n\nexport const WorkClaimNamespace = z\n .string()\n .min(1)\n .max(WORK_CLAIM_NAMESPACE_MAX_BYTES)\n .regex(NAMESPACE_PATTERN)\n .refine((value) => value === normalizeWorkClaimNamespace(value), {\n message: \"work claim namespace must already be canonical lowercase text\",\n });\nexport type WorkClaimNamespace = z.infer<typeof WorkClaimNamespace>;\n\nexport const WorkClaimCanonicalKey = boundedCanonicalText(\n WORK_CLAIM_CANONICAL_KEY_MAX_BYTES,\n \"work claim canonical key\",\n);\nexport type WorkClaimCanonicalKey = z.infer<typeof WorkClaimCanonicalKey>;\n\nexport const WorkClaimDisplayLabel = z\n .string()\n .min(1)\n .superRefine((value, context) => {\n if (utf8Bytes(value) > WORK_CLAIM_DISPLAY_LABEL_MAX_BYTES) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `work claim display label must be at most ${WORK_CLAIM_DISPLAY_LABEL_MAX_BYTES} UTF-8 bytes`,\n });\n }\n if (normalizeWorkClaimDisplayLabel(value) !== value) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"work claim display label must be a safe concise semantic label\",\n });\n }\n });\nexport type WorkClaimDisplayLabel = z.infer<typeof WorkClaimDisplayLabel>;\n\nexport const WorkClaimSubjectType = z.enum([\n \"repository\",\n \"branch\",\n \"pull_request\",\n \"issue\",\n \"artifact\",\n \"release\",\n \"ci_run\",\n \"other\",\n]);\nexport type WorkClaimSubjectType = z.infer<typeof WorkClaimSubjectType>;\n\nexport const WorkClaimRole = z.enum([\"working\", \"reviewing\", \"monitoring\", \"delivering\"]);\nexport type WorkClaimRole = z.infer<typeof WorkClaimRole>;\n\nexport const WorkClaimState = z.enum([\"active\", \"released\", \"superseded\", \"stale\"]);\nexport type WorkClaimState = z.infer<typeof WorkClaimState>;\n\nexport const WorkClaimProvenance = z.enum([\n \"explicit_agent\",\n \"user_api\",\n \"trusted_integration\",\n \"session_resource\",\n \"system_lifecycle\",\n]);\nexport type WorkClaimProvenance = z.infer<typeof WorkClaimProvenance>;\n\nexport const WorkClaimVersionKind = z.enum([\n \"git_commit\",\n \"branch_head\",\n \"pull_request_head\",\n \"artifact_version\",\n \"release_version\",\n \"ci_run\",\n \"other\",\n]);\nexport type WorkClaimVersionKind = z.infer<typeof WorkClaimVersionKind>;\n\nexport const WorkClaimVersionValue = boundedCanonicalText(\n WORK_CLAIM_VERSION_VALUE_MAX_BYTES,\n \"work claim version value\",\n);\nexport type WorkClaimVersionValue = z.infer<typeof WorkClaimVersionValue>;\n\nexport const WorkClaimReleaseReason = z.enum([\n \"completed\",\n \"cancelled\",\n \"failed\",\n \"superseded\",\n \"no_longer_active\",\n \"corrected\",\n \"external_state_changed\",\n \"other\",\n]);\nexport type WorkClaimReleaseReason = z.infer<typeof WorkClaimReleaseReason>;\n\nexport const WorkClaimMutationKind = z.enum([\n \"created\",\n \"updated\",\n \"released\",\n \"superseded\",\n \"stale\",\n]);\nexport type WorkClaimMutationKind = z.infer<typeof WorkClaimMutationKind>;\n\nexport const WorkClaim = z.object({\n id: z.string().uuid(),\n sessionId: z.string().uuid(),\n rootSessionId: z.string().uuid(),\n subject: z.object({\n namespace: WorkClaimNamespace,\n type: WorkClaimSubjectType,\n canonicalKey: WorkClaimCanonicalKey,\n displayLabel: WorkClaimDisplayLabel.nullable(),\n }),\n role: WorkClaimRole,\n state: WorkClaimState,\n revision: z.number().int().positive(),\n provenance: WorkClaimProvenance,\n version: z\n .object({\n kind: WorkClaimVersionKind,\n value: WorkClaimVersionValue,\n })\n .nullable(),\n observedAt: z.string().datetime({ offset: true }),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n settledAt: z.string().datetime({ offset: true }).nullable(),\n});\nexport type WorkClaim = z.infer<typeof WorkClaim>;\n\nexport const WorkClaimMutationResult = z.object({\n claim: WorkClaim,\n mutation: WorkClaimMutationKind,\n replayed: z.boolean(),\n});\nexport type WorkClaimMutationResult = z.infer<typeof WorkClaimMutationResult>;\n\nexport const WorkClaimDiscoverySummary = WorkClaim.pick({\n id: true,\n sessionId: true,\n subject: true,\n role: true,\n state: true,\n revision: true,\n provenance: true,\n version: true,\n observedAt: true,\n updatedAt: true,\n settledAt: true,\n});\nexport type WorkClaimDiscoverySummary = z.infer<typeof WorkClaimDiscoverySummary>;\n\nexport const WorkClaimSubjectFilter = z\n .object({\n namespace: WorkClaimNamespace,\n type: WorkClaimSubjectType,\n canonicalKey: WorkClaimCanonicalKey,\n })\n .strict();\nexport type WorkClaimSubjectFilter = z.infer<typeof WorkClaimSubjectFilter>;\n\nexport const WorkDiscoveryMatchClass = z.enum([\"exact_subject\", \"title\", \"goal\", \"fuzzy\"]);\nexport type WorkDiscoveryMatchClass = z.infer<typeof WorkDiscoveryMatchClass>;\n\nexport const WorkDiscoveryMatchedField = z.enum([\n \"subject\",\n \"title\",\n \"goal\",\n \"claim_key\",\n \"claim_label\",\n]);\nexport type WorkDiscoveryMatchedField = z.infer<typeof WorkDiscoveryMatchedField>;\n\n/**\n * Deliberately stable bands rather than a raw ranking score. Raw full-text or\n * trigram values are query-relative and become a misleading cross-query API.\n */\nexport const WorkDiscoveryScoreBand = z.enum([\"exact\", \"strong\", \"related\"]);\nexport type WorkDiscoveryScoreBand = z.infer<typeof WorkDiscoveryScoreBand>;\n\nexport const WorkDiscoveryMatch = z\n .object({\n class: WorkDiscoveryMatchClass,\n field: WorkDiscoveryMatchedField,\n scoreBand: WorkDiscoveryScoreBand,\n claimId: z.string().uuid().nullable(),\n })\n .strict();\nexport type WorkDiscoveryMatch = z.infer<typeof WorkDiscoveryMatch>;\n\n/**\n * Provider-neutral related-work evidence. The two literal booleans are part of\n * the wire contract so a consumer cannot accidentally present a claim as a\n * lock, authorization grant, ownership transfer, or mandatory instruction.\n */\nexport const WorkDiscoveryProjection = z\n .object({\n claims: z.array(WorkClaimDiscoverySummary).max(WORK_CLAIM_DISCOVERY_LIMIT),\n claimsTruncated: z.boolean(),\n match: WorkDiscoveryMatch.nullable(),\n possibleOverlap: z.boolean(),\n advisoryOnly: z.literal(true),\n noAdditionalAccess: z.literal(true),\n })\n .strict();\nexport type WorkDiscoveryProjection = z.infer<typeof WorkDiscoveryProjection>;\n","import { z } from \"zod\";\nimport { ToolGatewayIdentity } from \"./tool-catalog\";\n\nexport const WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES = 5_000_000_000;\nexport const WORKSPACE_ARTIFACT_SOURCE_MAX_UTF8_BYTES = 5_000_000_000;\nexport const WORKSPACE_ARTIFACT_SOURCE_MAX_FILES = Number.MAX_SAFE_INTEGER;\nexport const WORKSPACE_ARTIFACT_REQUESTED_TOOLS_MAX = 128;\nexport const WORKSPACE_ARTIFACT_TITLE_MAX_CHARS = 120;\nexport const WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS = 2_000;\nexport const WORKSPACE_ARTIFACT_LIST_MAX = 100;\nexport const WORKSPACE_ARTIFACT_LIST_DEFAULT = 50;\nexport const WORKSPACE_ARTIFACT_CURSOR_MAX_CHARS = 512;\n\nconst encoder = new TextEncoder();\nconst sha256 = z.string().regex(/^[0-9a-f]{64}$/);\n\nexport const WorkspaceArtifactSlug = z\n .string()\n .trim()\n .min(1)\n .max(96)\n .regex(/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/);\nexport type WorkspaceArtifactSlug = z.infer<typeof WorkspaceArtifactSlug>;\n\nexport const WorkspaceArtifactStatus = z.enum([\"active\", \"archived\"]);\nexport type WorkspaceArtifactStatus = z.infer<typeof WorkspaceArtifactStatus>;\n\nexport const WorkspaceArtifactSourcePath = z\n .string()\n .min(1)\n .max(256)\n .regex(/^[A-Za-z0-9._-]+(?:\\/[A-Za-z0-9._-]+)*$/u)\n .refine(\n (value) =>\n !value\n .split(\"/\")\n .some((segment) => segment === \".\" || segment === \"..\" || segment.length === 0),\n { message: \"artifact source paths must be relative and traversal-free\" },\n );\nexport type WorkspaceArtifactSourcePath = z.infer<typeof WorkspaceArtifactSourcePath>;\n\nexport const WorkspaceArtifactSourceFile = z\n .object({\n path: WorkspaceArtifactSourcePath,\n content: z.string(),\n })\n .strict();\nexport type WorkspaceArtifactSourceFile = z.infer<typeof WorkspaceArtifactSourceFile>;\n\n/** Retained editable source; the published runtime remains one exact HTML document. */\nexport const WorkspaceArtifactSourceBundle = z\n .object({\n entrypoint: WorkspaceArtifactSourcePath,\n files: z.array(WorkspaceArtifactSourceFile).min(1).max(WORKSPACE_ARTIFACT_SOURCE_MAX_FILES),\n })\n .strict()\n .superRefine((value, context) => {\n const paths = new Set<string>();\n for (const [index, file] of value.files.entries()) {\n if (paths.has(file.path)) {\n context.addIssue({\n code: \"custom\",\n path: [\"files\", index, \"path\"],\n message: \"artifact source file paths must be unique\",\n });\n }\n paths.add(file.path);\n }\n if (!paths.has(value.entrypoint)) {\n context.addIssue({\n code: \"custom\",\n path: [\"entrypoint\"],\n message: \"artifact source entrypoint must name one retained file\",\n });\n }\n if (\n encoder.encode(JSON.stringify(value)).byteLength > WORKSPACE_ARTIFACT_SOURCE_MAX_UTF8_BYTES\n ) {\n context.addIssue({\n code: \"custom\",\n message: `artifact source exceeds ${WORKSPACE_ARTIFACT_SOURCE_MAX_UTF8_BYTES} UTF-8 bytes`,\n });\n }\n });\nexport type WorkspaceArtifactSourceBundle = z.infer<typeof WorkspaceArtifactSourceBundle>;\n\nexport const WorkspaceArtifactRequestedTools = z\n .array(ToolGatewayIdentity)\n .max(WORKSPACE_ARTIFACT_REQUESTED_TOOLS_MAX)\n .superRefine((tools, context) => {\n const seen = new Set<string>();\n for (const [index, identity] of tools.entries()) {\n const key = `${identity.serverId}\\u0000${identity.toolName}`;\n if (seen.has(key)) {\n context.addIssue({\n code: \"custom\",\n path: [index],\n message: \"requested artifact tools must be unique\",\n });\n }\n seen.add(key);\n }\n });\nexport type WorkspaceArtifactRequestedTools = z.infer<typeof WorkspaceArtifactRequestedTools>;\n\nexport const WorkspaceArtifactVersion = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n artifactId: z.string().uuid(),\n revision: z.number().int().positive(),\n contentType: z.literal(\"text/html\"),\n contentSha256: sha256.nullable(),\n sizeBytes: z.number().int().positive().max(WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES),\n sourceSha256: sha256.nullable(),\n sourceSizeBytes: z\n .number()\n .int()\n .positive()\n .max(WORKSPACE_ARTIFACT_SOURCE_MAX_UTF8_BYTES)\n .nullable(),\n requestedTools: WorkspaceArtifactRequestedTools,\n sourceSessionId: z.string().uuid().nullable(),\n sourceTurnId: z.string().uuid().nullable(),\n sourceAttemptId: z.string().uuid().nullable(),\n sourceExecutionGeneration: z.number().int().positive().nullable(),\n createdBySubjectId: z.string().min(1).max(1024),\n createdAt: z.string().datetime({ offset: true }),\n});\nexport type WorkspaceArtifactVersion = z.infer<typeof WorkspaceArtifactVersion>;\n\nexport const WorkspaceArtifact = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n slug: WorkspaceArtifactSlug,\n title: z.string().trim().min(1).max(WORKSPACE_ARTIFACT_TITLE_MAX_CHARS),\n description: z.string().max(WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS).nullable(),\n status: WorkspaceArtifactStatus,\n currentVersion: WorkspaceArtifactVersion.nullable(),\n createdBySubjectId: z.string().min(1).max(1024),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport type WorkspaceArtifact = z.infer<typeof WorkspaceArtifact>;\n\nexport const WorkspaceArtifactEventType = z.enum([\n \"published\",\n \"rolled_back\",\n \"archived\",\n \"restored\",\n]);\nexport type WorkspaceArtifactEventType = z.infer<typeof WorkspaceArtifactEventType>;\n\nexport const WorkspaceArtifactEvent = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n artifactId: z.string().uuid(),\n type: WorkspaceArtifactEventType,\n fromVersionId: z.string().uuid().nullable(),\n toVersionId: z.string().uuid(),\n sourceSessionId: z.string().uuid().nullable(),\n sourceTurnId: z.string().uuid().nullable(),\n sourceAttemptId: z.string().uuid().nullable(),\n sourceExecutionGeneration: z.number().int().positive().nullable(),\n actorSubjectId: z.string().min(1).max(1024),\n reason: z.string().min(1).max(4096),\n createdAt: z.string().datetime({ offset: true }),\n});\nexport type WorkspaceArtifactEvent = z.infer<typeof WorkspaceArtifactEvent>;\n\nexport const WorkspaceArtifactListQuery = z.object({\n limit: z.coerce\n .number()\n .int()\n .positive()\n .max(WORKSPACE_ARTIFACT_LIST_MAX)\n .default(WORKSPACE_ARTIFACT_LIST_DEFAULT),\n cursor: z.string().min(1).max(WORKSPACE_ARTIFACT_CURSOR_MAX_CHARS).optional(),\n status: WorkspaceArtifactStatus.optional(),\n /** Sites created or published by this session, including older versions. */\n sourceSessionId: z.string().uuid().optional(),\n});\nexport type WorkspaceArtifactListQuery = z.infer<typeof WorkspaceArtifactListQuery>;\n\nexport const WorkspaceArtifactListResponse = z.object({\n artifacts: z.array(WorkspaceArtifact).max(WORKSPACE_ARTIFACT_LIST_MAX),\n nextCursor: z.string().max(WORKSPACE_ARTIFACT_CURSOR_MAX_CHARS).nullable(),\n truncated: z.boolean(),\n});\nexport type WorkspaceArtifactListResponse = z.infer<typeof WorkspaceArtifactListResponse>;\n\nexport const WorkspaceArtifactDetailResponse = z.object({\n artifact: WorkspaceArtifact,\n versions: z.array(WorkspaceArtifactVersion).max(WORKSPACE_ARTIFACT_LIST_MAX),\n events: z.array(WorkspaceArtifactEvent).max(WORKSPACE_ARTIFACT_LIST_MAX),\n versionsTruncated: z.boolean(),\n eventsTruncated: z.boolean(),\n});\nexport type WorkspaceArtifactDetailResponse = z.infer<typeof WorkspaceArtifactDetailResponse>;\n\nexport const WorkspaceArtifactHtml = z\n .string()\n .min(1)\n .max(WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES)\n .superRefine((value, ctx) => {\n if (encoder.encode(value).byteLength > WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES) {\n ctx.addIssue({\n code: \"custom\",\n message: `artifact HTML exceeds ${WORKSPACE_ARTIFACT_HTML_MAX_UTF8_BYTES} UTF-8 bytes`,\n });\n }\n });\n\nexport const CreateWorkspaceArtifactRequest = z\n .object({\n slug: WorkspaceArtifactSlug.optional(),\n title: z.string().trim().min(1).max(WORKSPACE_ARTIFACT_TITLE_MAX_CHARS),\n description: z.string().max(WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS).nullable().optional(),\n html: WorkspaceArtifactHtml.optional(),\n uploadId: z.string().uuid().optional(),\n source: WorkspaceArtifactSourceBundle.optional(),\n requestedTools: WorkspaceArtifactRequestedTools.optional(),\n idempotencyKey: z.string().trim().min(1).max(200),\n })\n .refine((value) => (value.html !== undefined) !== (value.uploadId !== undefined), {\n message: \"Provide either html or uploadId\",\n })\n .refine((value) => !value.uploadId || value.source === undefined, {\n message: \"Upload source using the prepared source URL\",\n });\nexport type CreateWorkspaceArtifactRequest = z.infer<typeof CreateWorkspaceArtifactRequest>;\n\nexport const PublishWorkspaceArtifactVersionRequest = z\n .object({\n title: z.string().trim().min(1).max(WORKSPACE_ARTIFACT_TITLE_MAX_CHARS).optional(),\n description: z.string().max(WORKSPACE_ARTIFACT_DESCRIPTION_MAX_CHARS).nullable().optional(),\n html: WorkspaceArtifactHtml.optional(),\n uploadId: z.string().uuid().optional(),\n source: WorkspaceArtifactSourceBundle.optional(),\n requestedTools: WorkspaceArtifactRequestedTools.optional(),\n expectedCurrentVersionId: z.string().uuid(),\n idempotencyKey: z.string().trim().min(1).max(200),\n })\n .refine((value) => (value.html !== undefined) !== (value.uploadId !== undefined), {\n message: \"Provide either html or uploadId\",\n })\n .refine((value) => !value.uploadId || value.source === undefined, {\n message: \"Upload source using the prepared source URL\",\n });\nexport type PublishWorkspaceArtifactVersionRequest = z.infer<\n typeof PublishWorkspaceArtifactVersionRequest\n>;\n\nexport const RollbackWorkspaceArtifactRequest = z.object({\n versionId: z.string().uuid(),\n expectedCurrentVersionId: z.string().uuid(),\n reason: z.string().trim().min(1).max(4096),\n idempotencyKey: z.string().trim().min(1).max(200),\n});\nexport type RollbackWorkspaceArtifactRequest = z.infer<typeof RollbackWorkspaceArtifactRequest>;\n\nexport const SetWorkspaceArtifactStatusRequest = z.object({\n status: WorkspaceArtifactStatus,\n expectedCurrentVersionId: z.string().uuid(),\n reason: z.string().trim().min(1).max(4096),\n idempotencyKey: z.string().trim().min(1).max(200),\n});\nexport type SetWorkspaceArtifactStatusRequest = z.infer<typeof SetWorkspaceArtifactStatusRequest>;\n\nexport const WorkspaceArtifactMutationResponse = z.object({\n artifact: WorkspaceArtifact,\n version: WorkspaceArtifactVersion,\n event: WorkspaceArtifactEvent,\n replayed: z.boolean(),\n});\nexport type WorkspaceArtifactMutationResponse = z.infer<typeof WorkspaceArtifactMutationResponse>;\n\nexport const WorkspaceArtifactContentResponse = z.object({\n artifactId: z.string().uuid(),\n versionId: z.string().uuid(),\n contentType: z.literal(\"text/html\"),\n contentSha256: sha256.nullable(),\n html: WorkspaceArtifactHtml,\n source: WorkspaceArtifactSourceBundle,\n requestedTools: WorkspaceArtifactRequestedTools,\n});\nexport type WorkspaceArtifactContentResponse = z.infer<typeof WorkspaceArtifactContentResponse>;\n\nexport function normalizeWorkspaceArtifactSlug(value: string): string {\n return value\n .normalize(\"NFKD\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 96)\n .replace(/-+$/g, \"\");\n}\n","import { z } from \"zod\";\n\n/**\n * Versioned, provider-neutral receipt returned by first-party MCP mutation tools.\n *\n * A receipt intentionally contains only server-generated identity and outcome\n * facts. Callers already have mutation inputs in their tool-call history, so\n * copying names, prompts, instructions, commands, evidence, or other request\n * fields into the result wastes context and can expose data twice.\n */\nexport const MCP_MUTATION_RECEIPT_VERSION = \"mcp-mutation-receipt.v1\" as const;\nexport const MCP_MUTATION_RECEIPT_MAX_BYTES = 64 * 1024;\n\nconst utf8ByteLength = (value: string): number => new TextEncoder().encode(value).byteLength;\n\nfunction boundedUtf8String(maxBytes: number, minLength = 0) {\n return z\n .string()\n .min(minLength)\n .max(maxBytes)\n .superRefine((value, context) => {\n if (utf8ByteLength(value) > maxBytes) {\n context.addIssue({\n code: \"custom\",\n message: `string must contain at most ${maxBytes} UTF-8 bytes`,\n });\n }\n });\n}\n\nexport const McpMutationReceiptOutcome = z.enum([\n \"created\",\n \"updated\",\n \"deleted\",\n \"unchanged\",\n \"accepted\",\n \"triggered\",\n \"repaired\",\n \"replayed\",\n \"partial_failure\",\n]);\nexport type McpMutationReceiptOutcome = z.infer<typeof McpMutationReceiptOutcome>;\n\nexport const McpMutationReceiptIdempotencyStatus = z.enum([\n \"not_supported\",\n \"not_requested\",\n \"applied\",\n \"replayed\",\n \"unknown\",\n]);\nexport type McpMutationReceiptIdempotencyStatus = z.infer<\n typeof McpMutationReceiptIdempotencyStatus\n>;\n\nexport const McpMutationResource = z\n .object({\n type: boundedUtf8String(128, 1),\n id: boundedUtf8String(256, 1),\n version: z.union([z.number().int().nonnegative(), boundedUtf8String(128, 1)]).optional(),\n etag: boundedUtf8String(512, 1).optional(),\n state: boundedUtf8String(128, 1).optional(),\n })\n .strict();\nexport type McpMutationResource = z.infer<typeof McpMutationResource>;\n\nconst McpMutationReceiptFact = z.union([\n boundedUtf8String(512),\n z.number().finite(),\n z.boolean(),\n z.null(),\n]);\n\nconst McpMutationReceiptFacts = z\n .record(boundedUtf8String(64, 1), McpMutationReceiptFact)\n .superRefine((value, context) => {\n if (Object.keys(value).length > 16) {\n context.addIssue({\n code: \"custom\",\n message: \"receipt facts may contain at most 16 scalar entries\",\n });\n }\n });\n\nconst McpMutationReceiptNextActionArguments = z\n .record(boundedUtf8String(64, 1), McpMutationReceiptFact)\n .superRefine((value, context) => {\n if (Object.keys(value).length > 8) {\n context.addIssue({\n code: \"custom\",\n message: \"receipt nextAction arguments may contain at most 8 scalar entries\",\n });\n }\n });\n\nexport const McpMutationReceipt = z\n .object({\n receiptVersion: z.literal(MCP_MUTATION_RECEIPT_VERSION),\n operation: boundedUtf8String(128, 1),\n // v1 receipts describe committed truth only. Validation/auth/conflict and\n // fully compensated failures remain MCP errors rather than success-shaped\n // committed=false results.\n committed: z.literal(true),\n outcome: McpMutationReceiptOutcome,\n changed: z.boolean(),\n resource: McpMutationResource,\n relatedResources: z.array(McpMutationResource).max(8).optional(),\n timestamp: z.string().datetime({ offset: true }),\n idempotency: z\n .object({\n status: McpMutationReceiptIdempotencyStatus,\n })\n .strict(),\n partialFailure: z\n .object({\n stage: boundedUtf8String(128, 1),\n retryable: z.boolean(),\n })\n .strict()\n .optional(),\n warnings: z.array(boundedUtf8String(512, 1)).max(20),\n nextAction: z\n .object({\n tool: boundedUtf8String(128, 1),\n arguments: McpMutationReceiptNextActionArguments,\n })\n .strict()\n .optional(),\n /** Operation-specific outcome facts. Values are deliberately bounded scalars. */\n facts: McpMutationReceiptFacts.optional(),\n /**\n * Bounded session_create compatibility aliases. Existing orchestration\n * consumers use these server-authored lineage facts to spawn descendants\n * without fetching the full session entity.\n */\n id: boundedUtf8String(256, 1).optional(),\n rootSessionId: boundedUtf8String(256, 1).optional(),\n nestedAgentDepth: z.number().int().nonnegative().optional(),\n effectiveMaxNestedAgentDepth: z.number().int().nonnegative().optional(),\n /** Bounded session_steer compatibility alias for resource.id. */\n updateId: boundedUtf8String(256, 1).optional(),\n })\n .strict()\n .superRefine((receipt, context) => {\n const sessionCreateCompatibility = [\n [\"id\", receipt.id],\n [\"rootSessionId\", receipt.rootSessionId],\n [\"nestedAgentDepth\", receipt.nestedAgentDepth],\n [\"effectiveMaxNestedAgentDepth\", receipt.effectiveMaxNestedAgentDepth],\n ] as const;\n if (receipt.operation === \"session_create\") {\n for (const [field, value] of sessionCreateCompatibility) {\n if (value === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [field],\n message: `session_create receipts require ${field}`,\n });\n }\n }\n if (receipt.id !== undefined && receipt.id !== receipt.resource.id) {\n context.addIssue({\n code: \"custom\",\n path: [\"id\"],\n message: \"session_create id must equal resource.id\",\n });\n }\n } else {\n for (const [field, value] of sessionCreateCompatibility) {\n if (value !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [field],\n message: `${field} is only valid for session_create receipts`,\n });\n }\n }\n }\n\n if (receipt.operation === \"session_steer\") {\n if (receipt.updateId === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"updateId\"],\n message: \"session_steer receipts require updateId\",\n });\n } else if (receipt.updateId !== receipt.resource.id) {\n context.addIssue({\n code: \"custom\",\n path: [\"updateId\"],\n message: \"session_steer updateId must equal resource.id\",\n });\n }\n } else if (receipt.updateId !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"updateId\"],\n message: \"updateId is only valid for session_steer receipts\",\n });\n }\n\n if (receipt.outcome === \"partial_failure\") {\n if (!receipt.committed) {\n context.addIssue({\n code: \"custom\",\n path: [\"committed\"],\n message: \"partial-failure receipts describe a committed mutation\",\n });\n }\n if (!receipt.partialFailure) {\n context.addIssue({\n code: \"custom\",\n path: [\"partialFailure\"],\n message: \"partial-failure receipts require stage and retryability\",\n });\n }\n } else if (receipt.partialFailure) {\n context.addIssue({\n code: \"custom\",\n path: [\"partialFailure\"],\n message: \"partialFailure is only valid for a partial_failure outcome\",\n });\n }\n\n if (receipt.outcome === \"unchanged\" && receipt.changed) {\n context.addIssue({\n code: \"custom\",\n path: [\"changed\"],\n message: \"unchanged receipts cannot report changed=true\",\n });\n }\n if (receipt.outcome === \"repaired\") {\n if (!receipt.changed) {\n context.addIssue({\n code: \"custom\",\n path: [\"changed\"],\n message: \"a repair must report changed=true\",\n });\n }\n if (receipt.idempotency.status !== \"applied\") {\n context.addIssue({\n code: \"custom\",\n path: [\"idempotency\", \"status\"],\n message: \"repaired outcomes require idempotency.status=applied\",\n });\n }\n }\n if (receipt.outcome === \"replayed\") {\n if (receipt.changed) {\n context.addIssue({\n code: \"custom\",\n path: [\"changed\"],\n message: \"a replay does not apply a new mutation\",\n });\n }\n if (receipt.idempotency.status !== \"replayed\") {\n context.addIssue({\n code: \"custom\",\n path: [\"idempotency\", \"status\"],\n message: \"replayed outcomes require idempotency.status=replayed\",\n });\n }\n } else if (\n receipt.idempotency.status === \"replayed\" &&\n !(receipt.outcome === \"partial_failure\" && !receipt.changed)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"outcome\"],\n message:\n \"idempotency.status=replayed requires a replayed outcome or unchanged partial failure\",\n });\n }\n\n if (utf8ByteLength(JSON.stringify(receipt, null, 2)) > MCP_MUTATION_RECEIPT_MAX_BYTES) {\n context.addIssue({\n code: \"custom\",\n message: `receipt must contain at most ${MCP_MUTATION_RECEIPT_MAX_BYTES} UTF-8 bytes when serialized as pretty JSON`,\n });\n }\n });\nexport type McpMutationReceipt = z.infer<typeof McpMutationReceipt>;\n","export const WORKSPACE_ARCHIVE_DESCRIPTOR_VERSION = 2 as const;\n\nexport type WorkspaceTreeFingerprint = {\n algorithm: \"sha256\";\n sha256: string;\n entryCount: number;\n fileCount: number;\n totalFileBytes: number;\n /**\n * Absent means the original deterministic GNU-tar projection used by remote\n * sandboxes. Host-backed Local/Docker sessions use the Agents SDK's portable\n * archive projection, which intentionally contains directories and regular\n * files only. Keeping the discriminator in the descriptor makes restores\n * stable when a Docker image changes and preserves old descriptor behavior.\n */\n projection?: \"sdk_local_archive_v1\";\n};\n\nexport type TarWorkspaceArchiveDescriptor = {\n version: 1;\n revision: string;\n archiveSha256: string;\n archiveBytes: number;\n capturedAt: string;\n workspace: WorkspaceTreeFingerprint;\n};\n\nexport type NativeSnapshotProvider =\n | \"e2b\"\n | \"modal_snapshot_directory\"\n | \"modal_snapshot_filesystem\"\n | \"runloop\"\n | \"vercel\";\n\nexport type NativeSnapshotRef = {\n provider: NativeSnapshotProvider;\n snapshotId: string;\n workspacePersistence?: string;\n};\n\nexport type NativeSnapshotDescriptor = {\n version: typeof WORKSPACE_ARCHIVE_DESCRIPTOR_VERSION;\n kind: \"provider_snapshot\";\n revision: string;\n archiveSha256: string;\n archiveBytes: number;\n capturedAt: string;\n provider: NativeSnapshotProvider;\n snapshotId: string;\n workspacePersistence?: string;\n};\n\nexport type WorkspaceArchiveDescriptor = TarWorkspaceArchiveDescriptor | NativeSnapshotDescriptor;\n\nexport const WORKSPACE_ARCHIVE_OBJECT_REF_SCHEMA = \"sandbox_archive_object_v1\" as const;\n\n/** Compact object-storage locator for portable tar bytes. The SHA-256/size in\n * `workspaceArchiveMeta` remain the verification authority. */\nexport type WorkspaceArchiveObjectRef = {\n schema: typeof WORKSPACE_ARCHIVE_OBJECT_REF_SCHEMA;\n key: string;\n sha256: string;\n bytes: number;\n backend: string;\n};\n\nconst OBJECT_KEY =\n /^sandbox-archives\\/v1\\/[0-9a-f-]{36}\\/[0-9a-f-]{36}\\/[0-9a-f-]{36}\\/wa1:[0-9]{13}:[0-9a-f]{64}\\.tar$/i;\n\nexport function parseWorkspaceArchiveObjectRef(value: unknown): WorkspaceArchiveObjectRef | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const candidate = value as Partial<WorkspaceArchiveObjectRef>;\n if (\n candidate.schema !== WORKSPACE_ARCHIVE_OBJECT_REF_SCHEMA ||\n typeof candidate.key !== \"string\" ||\n !OBJECT_KEY.test(candidate.key) ||\n typeof candidate.sha256 !== \"string\" ||\n !SHA256.test(candidate.sha256) ||\n !nonnegativeInteger(candidate.bytes) ||\n candidate.bytes <= 0 ||\n typeof candidate.backend !== \"string\" ||\n candidate.backend.length === 0 ||\n candidate.backend.length > 64\n ) {\n return null;\n }\n return {\n schema: WORKSPACE_ARCHIVE_OBJECT_REF_SCHEMA,\n key: candidate.key,\n sha256: candidate.sha256,\n bytes: candidate.bytes,\n backend: candidate.backend,\n };\n}\n\nexport function workspaceArchiveObjectKey(input: {\n accountId: string;\n workspaceId: string;\n sandboxGroupId: string;\n revision: string;\n}): string {\n return `sandbox-archives/v1/${input.accountId}/${input.workspaceId}/${input.sandboxGroupId}/${input.revision}.tar`;\n}\n\nexport function workspaceArchivePayloadPresent(\n sessionState: Record<string, unknown> | null | undefined,\n): boolean {\n if (!sessionState) return false;\n if (\n typeof sessionState.workspaceArchive === \"string\" &&\n sessionState.workspaceArchive.length > 0\n ) {\n return true;\n }\n return parseWorkspaceArchiveObjectRef(sessionState.workspaceArchiveRef) !== null;\n}\n\n/** Restore may inline object bytes in memory for hydrate. That copy must never\n * be published onto a lease when a durable object-storage ref exists. */\nexport function omitInlineWorkspaceArchiveWhenObjectRefPresent(\n sessionState: Record<string, unknown>,\n): Record<string, unknown> {\n const next = { ...sessionState };\n if (parseWorkspaceArchiveObjectRef(next.workspaceArchiveRef)) {\n delete next.workspaceArchive;\n }\n if (parseWorkspaceArchiveObjectRef(next.workspaceArchivePrevRef)) {\n delete next.workspaceArchivePrev;\n }\n return next;\n}\n\nexport const NATIVE_SNAPSHOT_PREFIXES: ReadonlyArray<{\n provider: NativeSnapshotProvider;\n prefix: string;\n}> = [\n { provider: \"e2b\", prefix: \"E2B_SANDBOX_SNAPSHOT_V1\\n\" },\n { provider: \"modal_snapshot_directory\", prefix: \"MODAL_SANDBOX_DIR_SNAPSHOT_V1\\n\" },\n { provider: \"modal_snapshot_filesystem\", prefix: \"MODAL_SANDBOX_FS_SNAPSHOT_V1\\n\" },\n { provider: \"runloop\", prefix: \"RUNLOOP_SANDBOX_SNAPSHOT_V1\\n\" },\n { provider: \"vercel\", prefix: \"UC_VERCEL_SNAPSHOT_V1\\n\" },\n];\n\nconst SHA256 = /^[a-f0-9]{64}$/;\nconst TAR_REVISION = /^wa1:([0-9]{13}):([a-f0-9]{64})$/;\nconst NATIVE_REVISION = /^wa2:([0-9]{13}):([a-f0-9]{64})$/;\n\nfunction nonnegativeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n\nfunction commonDescriptorFieldsValid(\n candidate: Partial<WorkspaceArchiveDescriptor>,\n): candidate is Partial<WorkspaceArchiveDescriptor> & {\n revision: string;\n archiveSha256: string;\n archiveBytes: number;\n capturedAt: string;\n} {\n return (\n typeof candidate.revision === \"string\" &&\n typeof candidate.archiveSha256 === \"string\" &&\n SHA256.test(candidate.archiveSha256) &&\n nonnegativeInteger(candidate.archiveBytes) &&\n candidate.archiveBytes > 0 &&\n typeof candidate.capturedAt === \"string\" &&\n Number.isFinite(Date.parse(candidate.capturedAt))\n );\n}\n\nfunction revisionMatchesDescriptor(\n revision: string,\n archiveSha256: string,\n capturedAt: string,\n pattern: RegExp,\n): boolean {\n const match = revision.match(pattern);\n return Boolean(\n match && match[2] === archiveSha256 && Number(match[1]) === Date.parse(capturedAt),\n );\n}\n\nexport function parseWorkspaceArchiveDescriptor(value: unknown): WorkspaceArchiveDescriptor | null {\n if (!value || typeof value !== \"object\") return null;\n const candidate = value as Partial<WorkspaceArchiveDescriptor>;\n if (!commonDescriptorFieldsValid(candidate)) return null;\n\n if (candidate.version === 1) {\n const tar = candidate as Partial<TarWorkspaceArchiveDescriptor>;\n const workspace = tar.workspace as Partial<WorkspaceTreeFingerprint> | undefined;\n if (\n !revisionMatchesDescriptor(\n candidate.revision,\n candidate.archiveSha256,\n candidate.capturedAt,\n TAR_REVISION,\n ) ||\n workspace?.algorithm !== \"sha256\" ||\n typeof workspace.sha256 !== \"string\" ||\n !SHA256.test(workspace.sha256) ||\n !nonnegativeInteger(workspace.entryCount) ||\n !nonnegativeInteger(workspace.fileCount) ||\n !nonnegativeInteger(workspace.totalFileBytes) ||\n (workspace.projection !== undefined && workspace.projection !== \"sdk_local_archive_v1\")\n ) {\n return null;\n }\n return tar as TarWorkspaceArchiveDescriptor;\n }\n\n if (candidate.version === WORKSPACE_ARCHIVE_DESCRIPTOR_VERSION) {\n const native = candidate as Partial<NativeSnapshotDescriptor>;\n if (\n native.kind !== \"provider_snapshot\" ||\n !revisionMatchesDescriptor(\n candidate.revision,\n candidate.archiveSha256,\n candidate.capturedAt,\n NATIVE_REVISION,\n ) ||\n !NATIVE_SNAPSHOT_PREFIXES.some((entry) => entry.provider === native.provider) ||\n typeof native.snapshotId !== \"string\" ||\n native.snapshotId.length === 0 ||\n (native.workspacePersistence !== undefined && typeof native.workspacePersistence !== \"string\")\n ) {\n return null;\n }\n return native as NativeSnapshotDescriptor;\n }\n\n return null;\n}\n\nexport function decodeNativeSnapshotRef(bytes: Uint8Array): NativeSnapshotRef | null {\n let text: string;\n try {\n text = new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes);\n } catch {\n return null;\n }\n for (const entry of NATIVE_SNAPSHOT_PREFIXES) {\n if (!text.startsWith(entry.prefix)) continue;\n try {\n const payload = JSON.parse(text.slice(entry.prefix.length)) as {\n snapshot_id?: unknown;\n workspace_persistence?: unknown;\n };\n if (typeof payload.snapshot_id !== \"string\" || payload.snapshot_id.length === 0) {\n return null;\n }\n if (\n payload.workspace_persistence !== undefined &&\n typeof payload.workspace_persistence !== \"string\"\n ) {\n return null;\n }\n return {\n provider: entry.provider,\n snapshotId: payload.snapshot_id,\n ...(typeof payload.workspace_persistence === \"string\"\n ? { workspacePersistence: payload.workspace_persistence }\n : {}),\n };\n } catch {\n return null;\n }\n }\n return null;\n}\n\nexport function encodeNativeSnapshotRef(ref: NativeSnapshotRef): Uint8Array {\n const prefix = NATIVE_SNAPSHOT_PREFIXES.find((entry) => entry.provider === ref.provider)?.prefix;\n if (!prefix || typeof ref.snapshotId !== \"string\" || ref.snapshotId.length === 0) {\n throw new TypeError(\"Native snapshot reference requires a supported provider and snapshot id\");\n }\n if (ref.workspacePersistence !== undefined && typeof ref.workspacePersistence !== \"string\") {\n throw new TypeError(\"Native snapshot workspace persistence must be a string\");\n }\n return new TextEncoder().encode(\n `${prefix}${JSON.stringify({\n snapshot_id: ref.snapshotId,\n ...(ref.workspacePersistence === undefined\n ? {}\n : { workspace_persistence: ref.workspacePersistence }),\n })}`,\n );\n}\n\nexport function backendForNativeSnapshotProvider(provider: NativeSnapshotProvider): string {\n return provider === \"modal_snapshot_directory\" || provider === \"modal_snapshot_filesystem\"\n ? \"modal\"\n : provider;\n}\n","export type ModalCheckpointProviderBinding = {\n version: 1;\n serverUrl: string;\n workspaceName: string;\n environment: string;\n};\n\n/**\n * One canonical, non-secret identity for the Modal namespace that owns a\n * checkpoint. The same bytes are used for uniqueness, durable storage, and\n * destructive-call fencing.\n */\nexport function canonicalModalCheckpointProviderBinding(\n value: unknown,\n): { binding: ModalCheckpointProviderBinding; key: string } | null {\n if (!value || typeof value !== \"object\") return null;\n const candidate = value as Partial<ModalCheckpointProviderBinding>;\n if (\n candidate.version !== 1 ||\n typeof candidate.serverUrl !== \"string\" ||\n candidate.serverUrl.trim().length === 0 ||\n typeof candidate.workspaceName !== \"string\" ||\n candidate.workspaceName.trim().length === 0 ||\n typeof candidate.environment !== \"string\"\n ) {\n return null;\n }\n const binding: ModalCheckpointProviderBinding = {\n version: 1,\n serverUrl: candidate.serverUrl,\n workspaceName: candidate.workspaceName,\n environment: candidate.environment,\n };\n const key = JSON.stringify(binding);\n return key.length <= 1024 ? { binding, key } : null;\n}\n","/**\n * Adaptive Codex fleet policy, replay contract, and shadow evaluator.\n *\n * This module is deliberately pure and browser-safe. It accepts only bounded,\n * metadata-only snapshots whose candidate keys are opaque aliases assigned by\n * the caller. It never accepts credential ids, account emails, labels, token\n * material, prompts, or tenant activity. The same normalized snapshot can be\n * persisted in a session event, replayed offline, and compared byte-for-byte.\n *\n * V1 is shadow-only at the runtime integration boundary. The evaluator models\n * later placement, admission, manager priority, borrowing, emergency-fuse, and\n * named-overlay semantics so they can be proven with deterministic simulations\n * before any independent kill switch is allowed to affect a live allocation.\n */\n\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\n\nexport const CODEX_FLEET_POLICY_SCHEMA_VERSION = 1 as const;\nexport const CODEX_FLEET_POLICY_VERSION = \"adaptive-shadow-v1\" as const;\nexport const CODEX_FLEET_POLICY_MAX_CANDIDATES = 32;\nexport const CODEX_FLEET_POLICY_MAX_OVERLAYS_PER_CANDIDATE = 4;\n\nconst MAX_DURATION_MS = 31 * 24 * 60 * 60_000;\nconst MAX_COUNT = 1_000_000;\nconst SCORE_SCALE = 100;\n\n/**\n * Replay-integrity ordering for bounded ASCII-safe fleet keys and aliases.\n *\n * Locale-aware collation is intentionally forbidden here because its result\n * can depend on locale and ICU data. Relational string comparison uses\n * ECMAScript UTF-16 code-unit ordering and is therefore identical in Bun,\n * Node, and browsers.\n */\nexport function compareCodexFleetCanonicalStringsV1(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\nexport type CodexFleetConfidence = \"unknown\" | \"low\" | \"medium\" | \"high\";\nexport type CodexFleetCandidateStatus = \"active\" | \"needs_relogin\" | \"error\" | \"unknown\";\nexport type CodexFleetCacheState = \"unknown\" | \"healthy\" | \"collapsed\";\nexport type CodexFleetPriority = \"standard\" | \"manager\";\nexport type CodexFleetPlacementKind = \"new\" | \"fenced_in_flight\";\nexport type CodexFleetOverlayMode = \"none\" | \"prefer\" | \"isolate\";\n\nexport type CodexFleetQuotaWindowV1 = {\n /** Provider-reported percentage from a workspace-local cache, never inferred tenant truth. */\n usedPercent: number | null;\n /** Relative to input.observedAtMs. Zero means the reported window has reset. */\n resetRemainingMs: number | null;\n};\n\nexport type CodexFleetCandidateV1 = {\n /** Opaque, event-local alias such as c00. Never a credential/account id. */\n key: string;\n status: CodexFleetCandidateStatus;\n allocatorEnabled: boolean;\n /** Relative cooldown. A positive value excludes only NEW placements. */\n cooldownRemainingMs: number | null;\n activeLeaseCount: number;\n quota: {\n primary: CodexFleetQuotaWindowV1;\n secondary: CodexFleetQuotaWindowV1;\n checkedAgeMs: number | null;\n confidence: CodexFleetConfidence;\n };\n /**\n * Runtime-observed cache evidence. It may be absent because the production\n * baseline currently exists as aggregate metrics/logs rather than allocator\n * state. Absence is explicit uncertainty, not a zero cache hit.\n */\n cache: {\n hitRatio: number | null;\n sampledTokens: number | null;\n checkedAgeMs: number | null;\n confidence: CodexFleetConfidence;\n /** Previously latched state; the evaluator applies dwell and recovery thresholds. */\n state: CodexFleetCacheState;\n /** Duration of the current continuous below/above-threshold observation. */\n thresholdObservedForMs: number | null;\n };\n /** Workspace-local observed burn, separate from unexplained/external inference. */\n observedBurn: {\n primaryPercentPerHour: number | null;\n secondaryPercentPerHour: number | null;\n confidence: CodexFleetConfidence;\n };\n /**\n * Unexplained/external burn is an inference only. The name and confidence are\n * load-bearing: consumers must never relabel it as provider or tenant truth.\n */\n inferredUnexplainedBurn: {\n primaryPercentPerHour: number | null;\n secondaryPercentPerHour: number | null;\n confidence: CodexFleetConfidence;\n };\n /** Opaque named-policy keys. Ignored unless overlaysEnabled is independently true. */\n overlayKeys: string[];\n};\n\nexport type CodexFleetAdmissionSnapshotV1 = {\n /** Dynamically observed capacity, not a static per-account slot allocation. */\n dynamicCapacityUnits: number | null;\n inUseUnits: number;\n queuedManagerCount: number;\n emergencyFuseActive: boolean;\n};\n\nexport type CodexFleetDecisionInputV1 = {\n observedAtMs: number;\n request: {\n placement: CodexFleetPlacementKind;\n priority: CodexFleetPriority;\n currentCandidateKey: string | null;\n waitAgeMs: number;\n overlayKey: string | null;\n overlayMode: CodexFleetOverlayMode;\n };\n admission: CodexFleetAdmissionSnapshotV1;\n candidates: CodexFleetCandidateV1[];\n};\n\nexport type CodexFleetPolicyConfigV1 = {\n maxCandidates: number;\n quotaFreshForMs: number;\n quotaStaleAfterMs: number;\n placementUsageCeilingPercent: number;\n cacheFreshForMs: number;\n cacheCollapseThreshold: number;\n cacheCollapseRecoveryThreshold: number;\n cacheMinimumSampledTokens: number;\n cacheCollapseDwellMs: number;\n cacheRecoveryDwellMs: number;\n activeLeaseScore: number;\n unknownQuotaScore: number;\n lowQuotaConfidenceScore: number;\n mediumQuotaConfidenceScore: number;\n inferredBurnScorePerPercentHour: number;\n observedBurnScorePerPercentHour: number;\n /** Maximum exhaustion-before-reset gap that contributes placement pressure. */\n runwayRiskCapHours: number;\n runwayScorePerAtRiskHour: number;\n healthyCacheAffinityBenefit: number;\n unknownCacheAffinityBenefit: number;\n collapsedCacheAffinityBenefit: number;\n switchHysteresisScore: number;\n admissionPacingEnabled: boolean;\n managerPriorityEnabled: boolean;\n managerStandardStarvationMs: number;\n emergencyFuseEnabled: boolean;\n overlaysEnabled: boolean;\n overlayPreferenceScore: number;\n};\n\n/**\n * Experimental shadow defaults. None of the boolean control fields is enabled;\n * production behavior therefore remains sticky-sharded until operators enable\n * each independently after shadow acceptance.\n */\nexport const DEFAULT_CODEX_FLEET_POLICY_V1: CodexFleetPolicyConfigV1 = Object.freeze({\n maxCandidates: CODEX_FLEET_POLICY_MAX_CANDIDATES,\n quotaFreshForMs: 15 * 60_000,\n quotaStaleAfterMs: 60 * 60_000,\n placementUsageCeilingPercent: 90,\n cacheFreshForMs: 30 * 60_000,\n cacheCollapseThreshold: 0.4,\n cacheCollapseRecoveryThreshold: 0.65,\n cacheMinimumSampledTokens: 4_096,\n cacheCollapseDwellMs: 5 * 60_000,\n cacheRecoveryDwellMs: 10 * 60_000,\n activeLeaseScore: 8 * SCORE_SCALE,\n unknownQuotaScore: 16 * SCORE_SCALE,\n lowQuotaConfidenceScore: 10 * SCORE_SCALE,\n mediumQuotaConfidenceScore: 4 * SCORE_SCALE,\n inferredBurnScorePerPercentHour: 0.2 * SCORE_SCALE,\n observedBurnScorePerPercentHour: 0.1 * SCORE_SCALE,\n runwayRiskCapHours: 2,\n runwayScorePerAtRiskHour: 8 * SCORE_SCALE,\n healthyCacheAffinityBenefit: 32 * SCORE_SCALE,\n unknownCacheAffinityBenefit: 24 * SCORE_SCALE,\n collapsedCacheAffinityBenefit: 6 * SCORE_SCALE,\n switchHysteresisScore: 8 * SCORE_SCALE,\n admissionPacingEnabled: false,\n managerPriorityEnabled: false,\n managerStandardStarvationMs: 2 * 60_000,\n emergencyFuseEnabled: false,\n overlaysEnabled: false,\n overlayPreferenceScore: 12 * SCORE_SCALE,\n});\n\nexport type CodexFleetScoreV1 = {\n candidateKey: string;\n eligible: boolean;\n rejectionReason:\n | \"allocator_disabled\"\n | \"unavailable\"\n | \"cooling\"\n | \"quota_ceiling\"\n | \"overlay_isolation\"\n | null;\n quotaPressure: number;\n leasePressure: number;\n observedBurnPressure: number;\n inferredBurnPressure: number;\n runwayPressure: number;\n uncertaintyPressure: number;\n cacheAffinityBenefit: number;\n cacheState: CodexFleetCacheState;\n overlayPreferenceBenefit: number;\n total: number;\n confidence: CodexFleetConfidence;\n};\n\nexport type CodexFleetAdmissionDecisionV1 = {\n outcome: \"admit\" | \"pace\";\n reason:\n | \"fenced_in_flight\"\n | \"pacing_disabled\"\n | \"capacity_unknown\"\n | \"capacity_available\"\n | \"work_conserving_borrow\"\n | \"manager_priority\"\n | \"standard_starvation_bound\"\n | \"capacity_saturated\"\n | \"emergency_fuse\";\n /** True only when standard work uses otherwise-idle capacity with no manager backlog. */\n borrowedIdleCapacity: boolean;\n};\n\nexport type CodexFleetDecisionV1 = {\n outcome: \"selected\" | \"paced\" | \"none\";\n selectedCandidateKey: string | null;\n reason:\n | \"fenced_in_flight\"\n | \"fenced_candidate_missing\"\n | \"admission_paced\"\n | \"no_eligible_candidate\"\n | \"overlay_isolated_empty\"\n | \"best_score\"\n | \"affinity_best\"\n | \"hysteresis_hold\";\n admission: CodexFleetAdmissionDecisionV1;\n borrowedOverlayCapacity: boolean;\n strandedEligibleCount: number;\n confidence: CodexFleetConfidence;\n scores: CodexFleetScoreV1[];\n};\n\nexport type CodexFleetReplayRecordV1 = {\n schemaVersion: typeof CODEX_FLEET_POLICY_SCHEMA_VERSION;\n policyVersion: typeof CODEX_FLEET_POLICY_VERSION;\n mode: \"shadow\";\n policy: CodexFleetPolicyConfigV1;\n input: CodexFleetDecisionInputV1;\n truncatedCandidateCount: number;\n policyFingerprint: string;\n inputFingerprint: string;\n decision: CodexFleetDecisionV1;\n decisionFingerprint: string;\n};\n\nexport type CodexFleetReplayVerdictV1 = {\n matches: boolean;\n policyFingerprintMatches: boolean;\n inputFingerprintMatches: boolean;\n decisionFingerprintMatches: boolean;\n recordedDecisionFingerprintMatches: boolean;\n decision: CodexFleetDecisionV1;\n};\n\ntype NormalizedInput = {\n input: CodexFleetDecisionInputV1;\n truncatedCandidateCount: number;\n};\n\nexport function createCodexFleetReplayRecordV1(\n input: CodexFleetDecisionInputV1,\n policy: CodexFleetPolicyConfigV1 = DEFAULT_CODEX_FLEET_POLICY_V1,\n): CodexFleetReplayRecordV1 {\n const normalizedPolicy = normalizePolicy(policy);\n const normalized = normalizeInput(input, normalizedPolicy.maxCandidates);\n const decision = evaluateCodexFleetDecisionV1(normalized.input, normalizedPolicy);\n return {\n schemaVersion: CODEX_FLEET_POLICY_SCHEMA_VERSION,\n policyVersion: CODEX_FLEET_POLICY_VERSION,\n mode: \"shadow\",\n policy: normalizedPolicy,\n input: normalized.input,\n truncatedCandidateCount: normalized.truncatedCandidateCount,\n policyFingerprint: fingerprint(normalizedPolicy),\n inputFingerprint: fingerprintReplayInput(normalized.input, normalized.truncatedCandidateCount),\n decision,\n decisionFingerprint: fingerprint(decision),\n };\n}\n\nexport function replayCodexFleetDecisionV1(value: unknown): CodexFleetReplayVerdictV1 {\n const record = readCodexFleetReplayRecordV1(value);\n const policyFingerprintMatches = fingerprint(record.policy) === record.policyFingerprint;\n const inputFingerprintMatches =\n fingerprintReplayInput(record.input, record.truncatedCandidateCount) ===\n record.inputFingerprint;\n const decision = evaluateCodexFleetDecisionV1(record.input, record.policy);\n const replayedDecisionFingerprint = fingerprint(decision);\n const recordedDecisionFingerprintMatches =\n fingerprint(record.decision) === record.decisionFingerprint;\n const decisionFingerprintMatches =\n recordedDecisionFingerprintMatches &&\n replayedDecisionFingerprint === record.decisionFingerprint;\n return {\n matches:\n policyFingerprintMatches &&\n inputFingerprintMatches &&\n decisionFingerprintMatches &&\n canonicalJson(decision) === canonicalJson(record.decision),\n policyFingerprintMatches,\n inputFingerprintMatches,\n decisionFingerprintMatches,\n recordedDecisionFingerprintMatches,\n decision,\n };\n}\n\n/**\n * Canonical replay bytes for already-bounded, identity-free fleet values.\n * This is exported so offline tools can prove the exact bytes across runtimes;\n * it performs no redaction and must not be used with raw account metadata.\n */\nexport function canonicalCodexFleetReplayJsonV1(value: CodexFleetReplayRecordV1): string {\n return canonicalJson(value);\n}\n\n/**\n * Strict reader for durable/offline replay. Unknown fields, lossy normalization,\n * malformed decisions, and non-SHA-256 digests are rejected before comparison.\n */\nexport function readCodexFleetReplayRecordV1(value: unknown): CodexFleetReplayRecordV1 {\n const record = strictRecord(value, [\n \"schemaVersion\",\n \"policyVersion\",\n \"mode\",\n \"policy\",\n \"input\",\n \"truncatedCandidateCount\",\n \"policyFingerprint\",\n \"inputFingerprint\",\n \"decision\",\n \"decisionFingerprint\",\n ]);\n if (\n record.schemaVersion !== CODEX_FLEET_POLICY_SCHEMA_VERSION ||\n record.policyVersion !== CODEX_FLEET_POLICY_VERSION ||\n record.mode !== \"shadow\"\n ) {\n throw new Error(\"Unsupported Codex fleet replay envelope\");\n }\n\n const policy = normalizePolicy(record.policy as CodexFleetPolicyConfigV1);\n if (canonicalJson(policy) !== canonicalJson(record.policy)) {\n throw new Error(\"Codex fleet replay policy is not in canonical bounded form\");\n }\n const normalizedInput = normalizeInput(\n record.input as CodexFleetDecisionInputV1,\n policy.maxCandidates,\n );\n if (\n normalizedInput.truncatedCandidateCount !== 0 ||\n canonicalJson(normalizedInput.input) !== canonicalJson(record.input)\n ) {\n throw new Error(\"Codex fleet replay input is not in canonical bounded form\");\n }\n\n return {\n schemaVersion: CODEX_FLEET_POLICY_SCHEMA_VERSION,\n policyVersion: CODEX_FLEET_POLICY_VERSION,\n mode: \"shadow\",\n policy,\n input: normalizedInput.input,\n truncatedCandidateCount: strictInteger(record.truncatedCandidateCount, 0, MAX_COUNT),\n policyFingerprint: strictSha256(record.policyFingerprint),\n inputFingerprint: strictSha256(record.inputFingerprint),\n decision: readCodexFleetDecisionV1(\n record.decision,\n new Set(normalizedInput.input.candidates.map((candidate) => candidate.key)),\n ),\n decisionFingerprint: strictSha256(record.decisionFingerprint),\n };\n}\n\nexport function evaluateCodexFleetDecisionV1(\n input: CodexFleetDecisionInputV1,\n policy: CodexFleetPolicyConfigV1 = DEFAULT_CODEX_FLEET_POLICY_V1,\n): CodexFleetDecisionV1 {\n const admission = evaluateAdmission(input, policy);\n const current = input.request.currentCandidateKey\n ? input.candidates.find((candidate) => candidate.key === input.request.currentCandidateKey)\n : undefined;\n\n // A fenced turn is immutable under every overlay, pacing rule, manager class,\n // or emergency fuse. If its candidate vanished, fail closed instead of moving.\n if (input.request.placement === \"fenced_in_flight\") {\n if (!current) {\n return emptyDecision(\"fenced_candidate_missing\", admission, \"unknown\");\n }\n return {\n outcome: \"selected\",\n selectedCandidateKey: current.key,\n reason: \"fenced_in_flight\",\n admission,\n borrowedOverlayCapacity: false,\n strandedEligibleCount: 0,\n confidence: candidateConfidence(current, policy),\n scores: [scoreCandidate(current, input, policy, false)],\n };\n }\n\n if (admission.outcome === \"pace\") {\n return emptyDecision(\"admission_paced\", admission, \"unknown\");\n }\n\n const scored = input.candidates.map((candidate) =>\n scoreCandidate(candidate, input, policy, false),\n );\n const baseEligibleKeys = new Set(\n scored.filter((candidate) => candidate.eligible).map((candidate) => candidate.candidateKey),\n );\n const overlay = selectOverlayScope(input, policy, baseEligibleKeys);\n const scopedScores = input.candidates\n .map((candidate) =>\n scoreCandidate(\n candidate,\n input,\n policy,\n overlay.rejectedByIsolation.has(candidate.key),\n overlay.preferredMembers.has(candidate.key),\n ),\n )\n .sort((a, b) => compareCodexFleetCanonicalStringsV1(a.candidateKey, b.candidateKey));\n const eligible = scopedScores\n .filter((candidate) => candidate.eligible)\n .sort(\n (a, b) =>\n a.total - b.total || compareCodexFleetCanonicalStringsV1(a.candidateKey, b.candidateKey),\n );\n\n if (eligible.length === 0) {\n return {\n ...emptyDecision(\n overlay.isolatedEmpty ? \"overlay_isolated_empty\" : \"no_eligible_candidate\",\n admission,\n aggregateConfidence(scopedScores),\n ),\n strandedEligibleCount: overlay.strandedEligibleCount,\n scores: scopedScores,\n };\n }\n\n let selected = eligible[0]!;\n let reason: CodexFleetDecisionV1[\"reason\"] = \"best_score\";\n const currentScore = input.request.currentCandidateKey\n ? eligible.find((candidate) => candidate.candidateKey === input.request.currentCandidateKey)\n : undefined;\n if (currentScore) {\n if (selected.candidateKey === currentScore.candidateKey) {\n reason = \"affinity_best\";\n } else if (selected.total + policy.switchHysteresisScore >= currentScore.total) {\n selected = currentScore;\n reason = \"hysteresis_hold\";\n }\n }\n\n return {\n outcome: \"selected\",\n selectedCandidateKey: selected.candidateKey,\n reason,\n admission,\n borrowedOverlayCapacity:\n policy.overlaysEnabled &&\n input.request.overlayMode === \"prefer\" &&\n input.request.overlayKey !== null &&\n !overlay.preferredMembers.has(selected.candidateKey),\n strandedEligibleCount: overlay.strandedEligibleCount,\n confidence: aggregateConfidence(eligible),\n scores: scopedScores,\n };\n}\n\nfunction evaluateAdmission(\n input: CodexFleetDecisionInputV1,\n policy: CodexFleetPolicyConfigV1,\n): CodexFleetAdmissionDecisionV1 {\n if (input.request.placement === \"fenced_in_flight\") {\n return {\n outcome: \"admit\",\n reason: \"fenced_in_flight\",\n borrowedIdleCapacity: false,\n };\n }\n if (policy.emergencyFuseEnabled && input.admission.emergencyFuseActive) {\n return {\n outcome: \"pace\",\n reason: \"emergency_fuse\",\n borrowedIdleCapacity: false,\n };\n }\n if (!policy.admissionPacingEnabled) {\n return {\n outcome: \"admit\",\n reason: \"pacing_disabled\",\n borrowedIdleCapacity: false,\n };\n }\n if (input.admission.dynamicCapacityUnits === null) {\n // Observability-first fail-open: unknown soft capacity never invents a hard slot.\n return {\n outcome: \"admit\",\n reason: \"capacity_unknown\",\n borrowedIdleCapacity: false,\n };\n }\n const available = Math.max(0, input.admission.dynamicCapacityUnits - input.admission.inUseUnits);\n if (available === 0) {\n return {\n outcome: \"pace\",\n reason: \"capacity_saturated\",\n borrowedIdleCapacity: false,\n };\n }\n if (\n policy.managerPriorityEnabled &&\n input.request.priority === \"standard\" &&\n input.admission.queuedManagerCount > 0 &&\n available <= input.admission.queuedManagerCount\n ) {\n if (input.request.waitAgeMs >= policy.managerStandardStarvationMs) {\n return {\n outcome: \"admit\",\n reason: \"standard_starvation_bound\",\n borrowedIdleCapacity: false,\n };\n }\n return {\n outcome: \"pace\",\n reason: \"manager_priority\",\n borrowedIdleCapacity: false,\n };\n }\n if (input.request.priority === \"standard\" && input.admission.queuedManagerCount === 0) {\n return {\n outcome: \"admit\",\n reason: \"work_conserving_borrow\",\n borrowedIdleCapacity: true,\n };\n }\n return {\n outcome: \"admit\",\n reason: \"capacity_available\",\n borrowedIdleCapacity: false,\n };\n}\n\nfunction scoreCandidate(\n candidate: CodexFleetCandidateV1,\n input: CodexFleetDecisionInputV1,\n policy: CodexFleetPolicyConfigV1,\n rejectedByIsolation: boolean,\n preferredOverlayMember = false,\n): CodexFleetScoreV1 {\n const confidence = candidateConfidence(candidate, policy);\n const bindingUsed = bindingUsedPercent(candidate);\n const hardQuotaKnown = confidence === \"high\" || confidence === \"medium\";\n const rejectionReason: CodexFleetScoreV1[\"rejectionReason\"] = !candidate.allocatorEnabled\n ? \"allocator_disabled\"\n : candidate.status !== \"active\"\n ? \"unavailable\"\n : (candidate.cooldownRemainingMs ?? 0) > 0\n ? \"cooling\"\n : hardQuotaKnown &&\n bindingUsed !== null &&\n bindingUsed >= policy.placementUsageCeilingPercent\n ? \"quota_ceiling\"\n : rejectedByIsolation\n ? \"overlay_isolation\"\n : null;\n\n const confidenceFactor = confidenceWeight(confidence);\n // Missing quota is not treated as pristine 0% or as a hard exclusion. Blend\n // toward neutral 50% and add an explicit uncertainty component instead.\n const quotaPressure = Math.round(\n ((bindingUsed ?? 50) * confidenceFactor + 50 * (1 - confidenceFactor)) * SCORE_SCALE,\n );\n const leasePressure = candidate.activeLeaseCount * policy.activeLeaseScore;\n const observedBurnConfidence = confidenceWeight(candidate.observedBurn.confidence);\n const observedBurn = maximumWindowBurn(candidate.observedBurn);\n const observedBurnPressure = Math.round(\n observedBurn * policy.observedBurnScorePerPercentHour * observedBurnConfidence,\n );\n const burnConfidence = confidenceWeight(candidate.inferredUnexplainedBurn.confidence);\n const inferredBurn = maximumWindowBurn(candidate.inferredUnexplainedBurn);\n const inferredBurnPressure = Math.round(\n inferredBurn * policy.inferredBurnScorePerPercentHour * burnConfidence,\n );\n const runwayPressure = runwayRiskPressure(candidate, confidence, policy);\n const uncertaintyPressure = quotaUncertaintyScore(confidence, policy);\n const cacheState = effectiveCodexFleetCacheStateV1(candidate.cache, policy);\n const cacheAffinityBenefit =\n candidate.key === input.request.currentCandidateKey\n ? cacheAffinityBenefitFor(cacheState, policy)\n : 0;\n const overlayPreferenceBenefit = preferredOverlayMember ? policy.overlayPreferenceScore : 0;\n return {\n candidateKey: candidate.key,\n eligible: rejectionReason === null,\n rejectionReason,\n quotaPressure,\n leasePressure,\n observedBurnPressure,\n inferredBurnPressure,\n runwayPressure,\n uncertaintyPressure,\n cacheAffinityBenefit,\n cacheState,\n overlayPreferenceBenefit,\n total:\n quotaPressure +\n leasePressure +\n observedBurnPressure +\n inferredBurnPressure +\n runwayPressure +\n uncertaintyPressure -\n cacheAffinityBenefit -\n overlayPreferenceBenefit,\n confidence,\n };\n}\n\ntype CodexFleetBurnSnapshotV1 = CodexFleetCandidateV1[\"observedBurn\"];\ntype CodexFleetWindowKey = \"primary\" | \"secondary\";\n\nfunction maximumWindowBurn(burn: CodexFleetBurnSnapshotV1): number {\n return Math.max(burn.primaryPercentPerHour ?? 0, burn.secondaryPercentPerHour ?? 0);\n}\n\nfunction windowBurn(burn: CodexFleetBurnSnapshotV1, window: CodexFleetWindowKey): number {\n return window === \"primary\"\n ? (burn.primaryPercentPerHour ?? 0)\n : (burn.secondaryPercentPerHour ?? 0);\n}\n\n/**\n * Score only a confidence-bounded exhaustion risk that occurs before the\n * corresponding provider reset. Each quota window has its own percentage burn\n * denominator and reset horizon; the highest-risk complete window binds.\n * Missing/stale observations contribute uncertainty elsewhere, never invented\n * burn. A zero reset horizon means that reported window has already reset.\n */\nfunction runwayRiskPressure(\n candidate: CodexFleetCandidateV1,\n quotaConfidence: CodexFleetConfidence,\n policy: CodexFleetPolicyConfigV1,\n): number {\n if (quotaConfidence === \"unknown\") return 0;\n const windows: Array<[CodexFleetWindowKey, CodexFleetQuotaWindowV1]> = [\n [\"primary\", candidate.quota.primary],\n [\"secondary\", candidate.quota.secondary],\n ];\n let maximumPressure = 0;\n for (const [windowKey, window] of windows) {\n if (\n window.usedPercent === null ||\n window.resetRemainingMs === null ||\n window.resetRemainingMs === 0\n ) {\n continue;\n }\n const observedConfidence = confidenceWeight(\n lowerConfidence(candidate.observedBurn.confidence, quotaConfidence),\n );\n const inferredConfidence = confidenceWeight(\n lowerConfidence(candidate.inferredUnexplainedBurn.confidence, quotaConfidence),\n );\n const confidenceBoundedBurn =\n windowBurn(candidate.observedBurn, windowKey) * observedConfidence +\n windowBurn(candidate.inferredUnexplainedBurn, windowKey) * inferredConfidence;\n if (confidenceBoundedBurn <= 0) continue;\n\n const exhaustionRunwayHours = Math.max(0, 100 - window.usedPercent) / confidenceBoundedBurn;\n const resetHorizonHours = window.resetRemainingMs / 60 / 60_000;\n const atRiskHours = Math.min(\n policy.runwayRiskCapHours,\n Math.max(0, resetHorizonHours - exhaustionRunwayHours),\n );\n maximumPressure = Math.max(\n maximumPressure,\n Math.round(atRiskHours * policy.runwayScorePerAtRiskHour),\n );\n }\n return maximumPressure;\n}\n\nfunction selectOverlayScope(\n input: CodexFleetDecisionInputV1,\n policy: CodexFleetPolicyConfigV1,\n baseEligibleKeys: Set<string>,\n): {\n rejectedByIsolation: Set<string>;\n preferredMembers: Set<string>;\n isolatedEmpty: boolean;\n strandedEligibleCount: number;\n} {\n if (\n !policy.overlaysEnabled ||\n input.request.overlayMode === \"none\" ||\n input.request.overlayKey === null\n ) {\n return {\n rejectedByIsolation: new Set(),\n preferredMembers: new Set(),\n isolatedEmpty: false,\n strandedEligibleCount: 0,\n };\n }\n const members = new Set(\n input.candidates\n .filter(\n (candidate) =>\n baseEligibleKeys.has(candidate.key) &&\n candidate.overlayKeys.includes(input.request.overlayKey!),\n )\n .map((candidate) => candidate.key),\n );\n if (input.request.overlayMode === \"prefer\") {\n if (members.size === 0) {\n return {\n rejectedByIsolation: new Set(),\n preferredMembers: members,\n isolatedEmpty: false,\n strandedEligibleCount: 0,\n };\n }\n return {\n // Preference is a bounded score benefit, never a hard partition. Healthy\n // authorized outsiders remain eligible and borrowable.\n rejectedByIsolation: new Set(),\n preferredMembers: members,\n isolatedEmpty: false,\n strandedEligibleCount: 0,\n };\n }\n const outside = [...baseEligibleKeys].filter((candidateKey) => !members.has(candidateKey));\n return {\n rejectedByIsolation: new Set(outside),\n preferredMembers: members,\n isolatedEmpty: members.size === 0,\n strandedEligibleCount: outside.length,\n };\n}\n\nfunction candidateConfidence(\n candidate: CodexFleetCandidateV1,\n policy: CodexFleetPolicyConfigV1,\n): CodexFleetConfidence {\n const age = candidate.quota.checkedAgeMs;\n if (age === null || age > policy.quotaStaleAfterMs) return \"unknown\";\n const windows = [candidate.quota.primary, candidate.quota.secondary];\n const completeWindowCount = windows.filter(\n (window) => window.usedPercent !== null && window.resetRemainingMs !== null,\n ).length;\n const hasPartialWindow = windows.some(\n (window) => (window.usedPercent === null) !== (window.resetRemainingMs === null),\n );\n if (completeWindowCount === 0) return \"unknown\";\n const completenessCeiling: CodexFleetConfidence = hasPartialWindow\n ? \"low\"\n : completeWindowCount === windows.length\n ? \"high\"\n : \"medium\";\n const completeConfidence = lowerConfidence(candidate.quota.confidence, completenessCeiling);\n if (age > policy.quotaFreshForMs) {\n return lowerConfidence(completeConfidence, \"low\");\n }\n return completeConfidence;\n}\n\nexport function effectiveCodexFleetCacheStateV1(\n cache: CodexFleetCandidateV1[\"cache\"],\n policy: CodexFleetPolicyConfigV1,\n): CodexFleetCacheState {\n const { hitRatio, sampledTokens, checkedAgeMs, confidence, state, thresholdObservedForMs } =\n cache;\n if (\n hitRatio === null ||\n sampledTokens === null ||\n sampledTokens < policy.cacheMinimumSampledTokens ||\n checkedAgeMs === null ||\n checkedAgeMs > policy.cacheFreshForMs ||\n confidenceWeight(confidence) < confidenceWeight(\"medium\")\n ) {\n return \"unknown\";\n }\n const observedForMs = thresholdObservedForMs ?? 0;\n if (state === \"healthy\") {\n return hitRatio < policy.cacheCollapseThreshold && observedForMs >= policy.cacheCollapseDwellMs\n ? \"collapsed\"\n : \"healthy\";\n }\n if (state === \"collapsed\") {\n return hitRatio >= policy.cacheCollapseRecoveryThreshold &&\n observedForMs >= policy.cacheRecoveryDwellMs\n ? \"healthy\"\n : \"collapsed\";\n }\n if (hitRatio < policy.cacheCollapseThreshold && observedForMs >= policy.cacheCollapseDwellMs) {\n return \"collapsed\";\n }\n if (\n hitRatio >= policy.cacheCollapseRecoveryThreshold &&\n observedForMs >= policy.cacheRecoveryDwellMs\n ) {\n return \"healthy\";\n }\n return \"unknown\";\n}\n\nfunction cacheAffinityBenefitFor(\n state: CodexFleetCacheState,\n policy: CodexFleetPolicyConfigV1,\n): number {\n if (state === \"healthy\") return policy.healthyCacheAffinityBenefit;\n if (state === \"collapsed\") return policy.collapsedCacheAffinityBenefit;\n return policy.unknownCacheAffinityBenefit;\n}\n\nfunction bindingUsedPercent(candidate: CodexFleetCandidateV1): number | null {\n const windows = [candidate.quota.primary, candidate.quota.secondary]\n .filter((window) => window.usedPercent !== null && window.resetRemainingMs !== null)\n .map((window) => (window.resetRemainingMs === 0 ? 0 : window.usedPercent))\n .filter((used): used is number => used !== null);\n return windows.length > 0 ? Math.max(...windows) : null;\n}\n\nfunction quotaUncertaintyScore(\n confidence: CodexFleetConfidence,\n policy: CodexFleetPolicyConfigV1,\n): number {\n if (confidence === \"unknown\") return policy.unknownQuotaScore;\n if (confidence === \"low\") return policy.lowQuotaConfidenceScore;\n if (confidence === \"medium\") return policy.mediumQuotaConfidenceScore;\n return 0;\n}\n\nfunction emptyDecision(\n reason: CodexFleetDecisionV1[\"reason\"],\n admission: CodexFleetAdmissionDecisionV1,\n confidence: CodexFleetConfidence,\n): CodexFleetDecisionV1 {\n return {\n outcome: admission.outcome === \"pace\" ? \"paced\" : \"none\",\n selectedCandidateKey: null,\n reason,\n admission,\n borrowedOverlayCapacity: false,\n strandedEligibleCount: 0,\n confidence,\n scores: [],\n };\n}\n\nfunction aggregateConfidence(scores: CodexFleetScoreV1[]): CodexFleetConfidence {\n if (scores.length === 0) return \"unknown\";\n return scores.reduce<CodexFleetConfidence>(\n (lowest, score) =>\n confidenceWeight(score.confidence) < confidenceWeight(lowest) ? score.confidence : lowest,\n \"high\",\n );\n}\n\nfunction normalizeInput(input: CodexFleetDecisionInputV1, maxCandidates: number): NormalizedInput {\n const currentCandidateKey = normalizeOptionalKey(input.request.currentCandidateKey);\n const candidates = input.candidates\n .map(normalizeCandidate)\n .sort((a, b) => compareCodexFleetCanonicalStringsV1(a.key, b.key));\n for (let index = 1; index < candidates.length; index += 1) {\n if (candidates[index - 1]!.key === candidates[index]!.key) {\n throw new Error(`Duplicate Codex fleet candidate key: ${candidates[index]!.key}`);\n }\n }\n let bounded = candidates.slice(0, maxCandidates);\n if (\n currentCandidateKey &&\n candidates.some((candidate) => candidate.key === currentCandidateKey) &&\n !bounded.some((candidate) => candidate.key === currentCandidateKey)\n ) {\n bounded = [\n ...bounded.slice(0, Math.max(0, maxCandidates - 1)),\n candidates.find((candidate) => candidate.key === currentCandidateKey)!,\n ].sort((a, b) => compareCodexFleetCanonicalStringsV1(a.key, b.key));\n }\n return {\n input: {\n observedAtMs: normalizeInteger(input.observedAtMs, 0, Number.MAX_SAFE_INTEGER),\n request: {\n placement: input.request.placement === \"fenced_in_flight\" ? \"fenced_in_flight\" : \"new\",\n priority: input.request.priority === \"manager\" ? \"manager\" : \"standard\",\n currentCandidateKey,\n waitAgeMs: normalizeInteger(input.request.waitAgeMs, 0, MAX_DURATION_MS),\n overlayKey: normalizeOptionalKey(input.request.overlayKey),\n overlayMode:\n input.request.overlayMode === \"isolate\"\n ? \"isolate\"\n : input.request.overlayMode === \"prefer\"\n ? \"prefer\"\n : \"none\",\n },\n admission: {\n dynamicCapacityUnits:\n input.admission.dynamicCapacityUnits === null\n ? null\n : normalizeInteger(input.admission.dynamicCapacityUnits, 0, MAX_COUNT),\n inUseUnits: normalizeInteger(input.admission.inUseUnits, 0, MAX_COUNT),\n queuedManagerCount: normalizeInteger(input.admission.queuedManagerCount, 0, MAX_COUNT),\n emergencyFuseActive: input.admission.emergencyFuseActive === true,\n },\n candidates: bounded,\n },\n truncatedCandidateCount: candidates.length - bounded.length,\n };\n}\n\nfunction normalizeCandidate(candidate: CodexFleetCandidateV1): CodexFleetCandidateV1 {\n return {\n key: normalizeKey(candidate.key),\n status:\n candidate.status === \"active\" ||\n candidate.status === \"needs_relogin\" ||\n candidate.status === \"error\"\n ? candidate.status\n : \"unknown\",\n allocatorEnabled: candidate.allocatorEnabled === true,\n cooldownRemainingMs: normalizeNullableInteger(\n candidate.cooldownRemainingMs,\n 0,\n MAX_DURATION_MS,\n ),\n activeLeaseCount: normalizeInteger(candidate.activeLeaseCount, 0, MAX_COUNT),\n quota: {\n primary: normalizeQuotaWindow(candidate.quota.primary),\n secondary: normalizeQuotaWindow(candidate.quota.secondary),\n checkedAgeMs: normalizeNullableInteger(candidate.quota.checkedAgeMs, 0, MAX_DURATION_MS),\n confidence: normalizeConfidence(candidate.quota.confidence),\n },\n cache: {\n hitRatio: normalizeNullableNumber(candidate.cache.hitRatio, 0, 1, 4),\n sampledTokens: normalizeNullableInteger(candidate.cache.sampledTokens, 0, MAX_COUNT),\n checkedAgeMs: normalizeNullableInteger(candidate.cache.checkedAgeMs, 0, MAX_DURATION_MS),\n confidence: normalizeConfidence(candidate.cache.confidence),\n state: normalizeCacheState(candidate.cache.state),\n thresholdObservedForMs: normalizeNullableInteger(\n candidate.cache.thresholdObservedForMs,\n 0,\n MAX_DURATION_MS,\n ),\n },\n observedBurn: {\n primaryPercentPerHour: normalizeNullableNumber(\n candidate.observedBurn.primaryPercentPerHour,\n 0,\n 100,\n 3,\n ),\n secondaryPercentPerHour: normalizeNullableNumber(\n candidate.observedBurn.secondaryPercentPerHour,\n 0,\n 100,\n 3,\n ),\n confidence: normalizeConfidence(candidate.observedBurn.confidence),\n },\n inferredUnexplainedBurn: {\n primaryPercentPerHour: normalizeNullableNumber(\n candidate.inferredUnexplainedBurn.primaryPercentPerHour,\n 0,\n 100,\n 3,\n ),\n secondaryPercentPerHour: normalizeNullableNumber(\n candidate.inferredUnexplainedBurn.secondaryPercentPerHour,\n 0,\n 100,\n 3,\n ),\n confidence: normalizeConfidence(candidate.inferredUnexplainedBurn.confidence),\n },\n overlayKeys: [...new Set(candidate.overlayKeys.map(normalizeKey))]\n .sort(compareCodexFleetCanonicalStringsV1)\n .slice(0, CODEX_FLEET_POLICY_MAX_OVERLAYS_PER_CANDIDATE),\n };\n}\n\nfunction normalizeQuotaWindow(window: CodexFleetQuotaWindowV1): CodexFleetQuotaWindowV1 {\n return {\n usedPercent: normalizeNullableNumber(window.usedPercent, 0, 100, 3),\n resetRemainingMs: normalizeNullableInteger(window.resetRemainingMs, 0, MAX_DURATION_MS),\n };\n}\n\nfunction normalizePolicy(policy: CodexFleetPolicyConfigV1): CodexFleetPolicyConfigV1 {\n const quotaFreshForMs = normalizeInteger(policy.quotaFreshForMs, 1, MAX_DURATION_MS);\n const cacheCollapseThreshold = normalizeNumber(policy.cacheCollapseThreshold, 0, 1, 4);\n return {\n maxCandidates: normalizeInteger(policy.maxCandidates, 1, CODEX_FLEET_POLICY_MAX_CANDIDATES),\n quotaFreshForMs,\n quotaStaleAfterMs: normalizeInteger(policy.quotaStaleAfterMs, quotaFreshForMs, MAX_DURATION_MS),\n placementUsageCeilingPercent: normalizeNumber(policy.placementUsageCeilingPercent, 1, 100, 3),\n cacheFreshForMs: normalizeInteger(policy.cacheFreshForMs, 1, MAX_DURATION_MS),\n cacheCollapseThreshold,\n cacheCollapseRecoveryThreshold: normalizeNumber(\n policy.cacheCollapseRecoveryThreshold,\n cacheCollapseThreshold,\n 1,\n 4,\n ),\n cacheMinimumSampledTokens: normalizeInteger(policy.cacheMinimumSampledTokens, 1, MAX_COUNT),\n cacheCollapseDwellMs: normalizeInteger(policy.cacheCollapseDwellMs, 1, MAX_DURATION_MS),\n cacheRecoveryDwellMs: normalizeInteger(policy.cacheRecoveryDwellMs, 1, MAX_DURATION_MS),\n activeLeaseScore: normalizeNumber(policy.activeLeaseScore, 0, MAX_COUNT, 3),\n unknownQuotaScore: normalizeNumber(policy.unknownQuotaScore, 0, MAX_COUNT, 3),\n lowQuotaConfidenceScore: normalizeNumber(policy.lowQuotaConfidenceScore, 0, MAX_COUNT, 3),\n mediumQuotaConfidenceScore: normalizeNumber(policy.mediumQuotaConfidenceScore, 0, MAX_COUNT, 3),\n inferredBurnScorePerPercentHour: normalizeNumber(\n policy.inferredBurnScorePerPercentHour,\n 0,\n MAX_COUNT,\n 3,\n ),\n observedBurnScorePerPercentHour: normalizeNumber(\n policy.observedBurnScorePerPercentHour,\n 0,\n MAX_COUNT,\n 3,\n ),\n runwayRiskCapHours: normalizeNumber(policy.runwayRiskCapHours, 0, 24 * 31, 3),\n runwayScorePerAtRiskHour: normalizeNumber(policy.runwayScorePerAtRiskHour, 0, MAX_COUNT, 3),\n healthyCacheAffinityBenefit: normalizeNumber(\n policy.healthyCacheAffinityBenefit,\n 0,\n MAX_COUNT,\n 3,\n ),\n unknownCacheAffinityBenefit: normalizeNumber(\n policy.unknownCacheAffinityBenefit,\n 0,\n MAX_COUNT,\n 3,\n ),\n collapsedCacheAffinityBenefit: normalizeNumber(\n policy.collapsedCacheAffinityBenefit,\n 0,\n MAX_COUNT,\n 3,\n ),\n switchHysteresisScore: normalizeNumber(policy.switchHysteresisScore, 0, MAX_COUNT, 3),\n admissionPacingEnabled: policy.admissionPacingEnabled === true,\n managerPriorityEnabled: policy.managerPriorityEnabled === true,\n managerStandardStarvationMs: normalizeInteger(\n policy.managerStandardStarvationMs,\n 1,\n MAX_DURATION_MS,\n ),\n emergencyFuseEnabled: policy.emergencyFuseEnabled === true,\n overlaysEnabled: policy.overlaysEnabled === true,\n overlayPreferenceScore: normalizeNumber(policy.overlayPreferenceScore, 0, MAX_COUNT, 3),\n };\n}\n\nfunction normalizeConfidence(value: CodexFleetConfidence): CodexFleetConfidence {\n return value === \"high\" || value === \"medium\" || value === \"low\" ? value : \"unknown\";\n}\n\nfunction normalizeCacheState(value: CodexFleetCacheState): CodexFleetCacheState {\n return value === \"healthy\" || value === \"collapsed\" ? value : \"unknown\";\n}\n\nfunction confidenceWeight(confidence: CodexFleetConfidence): number {\n if (confidence === \"high\") return 1;\n if (confidence === \"medium\") return 0.6;\n if (confidence === \"low\") return 0.25;\n return 0;\n}\n\nfunction lowerConfidence(\n value: CodexFleetConfidence,\n ceiling: CodexFleetConfidence,\n): CodexFleetConfidence {\n return confidenceWeight(value) < confidenceWeight(ceiling) ? value : ceiling;\n}\n\nfunction normalizeKey(value: string): string {\n if (!/^[a-zA-Z0-9._:-]{1,32}$/.test(value)) {\n throw new Error(\"Codex fleet candidate/overlay keys must be 1-32 opaque safe characters\");\n }\n return value;\n}\n\nfunction normalizeOptionalKey(value: string | null): string | null {\n return value === null ? null : normalizeKey(value);\n}\n\nfunction normalizeNullableNumber(\n value: number | null,\n min: number,\n max: number,\n decimals: number,\n): number | null {\n return value === null ? null : normalizeNumber(value, min, max, decimals);\n}\n\nfunction normalizeNumber(value: number, min: number, max: number, decimals: number): number {\n const finite = Number.isFinite(value) ? value : min;\n const clamped = Math.min(max, Math.max(min, finite));\n const scale = 10 ** decimals;\n return Math.round(clamped * scale) / scale;\n}\n\nfunction normalizeNullableInteger(value: number | null, min: number, max: number): number | null {\n return value === null ? null : normalizeInteger(value, min, max);\n}\n\nfunction normalizeInteger(value: number, min: number, max: number): number {\n return Math.round(normalizeNumber(value, min, max, 0));\n}\n\nfunction readCodexFleetDecisionV1(\n value: unknown,\n candidateKeys: ReadonlySet<string>,\n): CodexFleetDecisionV1 {\n const decision = strictRecord(value, [\n \"outcome\",\n \"selectedCandidateKey\",\n \"reason\",\n \"admission\",\n \"borrowedOverlayCapacity\",\n \"strandedEligibleCount\",\n \"confidence\",\n \"scores\",\n ]);\n const outcome = strictEnum(decision.outcome, [\"selected\", \"paced\", \"none\"] as const);\n const selectedCandidateKey = strictOptionalKey(decision.selectedCandidateKey);\n const reason = strictEnum(decision.reason, [\n \"fenced_in_flight\",\n \"fenced_candidate_missing\",\n \"admission_paced\",\n \"no_eligible_candidate\",\n \"overlay_isolated_empty\",\n \"best_score\",\n \"affinity_best\",\n \"hysteresis_hold\",\n ] as const);\n const admissionRecord = strictRecord(decision.admission, [\n \"outcome\",\n \"reason\",\n \"borrowedIdleCapacity\",\n ]);\n const admission: CodexFleetAdmissionDecisionV1 = {\n outcome: strictEnum(admissionRecord.outcome, [\"admit\", \"pace\"] as const),\n reason: strictEnum(admissionRecord.reason, [\n \"fenced_in_flight\",\n \"pacing_disabled\",\n \"capacity_unknown\",\n \"capacity_available\",\n \"work_conserving_borrow\",\n \"manager_priority\",\n \"standard_starvation_bound\",\n \"capacity_saturated\",\n \"emergency_fuse\",\n ] as const),\n borrowedIdleCapacity: strictBoolean(admissionRecord.borrowedIdleCapacity),\n };\n if (!Array.isArray(decision.scores) || decision.scores.length > candidateKeys.size) {\n throw new Error(\"Codex fleet replay decision scores are not a bounded array\");\n }\n const scores = decision.scores.map(readCodexFleetScoreV1);\n if (\n new Set(scores.map((score) => score.candidateKey)).size !== scores.length ||\n scores.some((score) => !candidateKeys.has(score.candidateKey))\n ) {\n throw new Error(\"Codex fleet replay decision has invalid candidate scores\");\n }\n const borrowedOverlayCapacity = strictBoolean(decision.borrowedOverlayCapacity);\n const strandedEligibleCount = strictInteger(decision.strandedEligibleCount, 0, MAX_COUNT);\n\n const selectedReasons = [\n \"fenced_in_flight\",\n \"best_score\",\n \"affinity_best\",\n \"hysteresis_hold\",\n ] as const;\n const noneReasons = [\n \"fenced_candidate_missing\",\n \"no_eligible_candidate\",\n \"overlay_isolated_empty\",\n ] as const;\n const paceReasons = [\"manager_priority\", \"capacity_saturated\", \"emergency_fuse\"] as const;\n const consistent =\n outcome === \"selected\"\n ? selectedCandidateKey !== null &&\n admission.outcome === \"admit\" &&\n selectedReasons.includes(reason as (typeof selectedReasons)[number]) &&\n scores.some((score) => score.candidateKey === selectedCandidateKey)\n : outcome === \"paced\"\n ? selectedCandidateKey === null &&\n reason === \"admission_paced\" &&\n admission.outcome === \"pace\" &&\n paceReasons.includes(admission.reason as (typeof paceReasons)[number])\n : selectedCandidateKey === null &&\n admission.outcome === \"admit\" &&\n noneReasons.includes(reason as (typeof noneReasons)[number]);\n if (\n !consistent ||\n strandedEligibleCount > candidateKeys.size ||\n admission.borrowedIdleCapacity !== (admission.reason === \"work_conserving_borrow\") ||\n (borrowedOverlayCapacity && (outcome !== \"selected\" || strandedEligibleCount !== 0))\n ) {\n throw new Error(\"Codex fleet replay decision is internally inconsistent\");\n }\n\n return {\n outcome,\n selectedCandidateKey,\n reason,\n admission,\n borrowedOverlayCapacity,\n strandedEligibleCount,\n confidence: strictConfidence(decision.confidence),\n scores,\n };\n}\n\nfunction readCodexFleetScoreV1(value: unknown): CodexFleetScoreV1 {\n const score = strictRecord(value, [\n \"candidateKey\",\n \"eligible\",\n \"rejectionReason\",\n \"quotaPressure\",\n \"leasePressure\",\n \"observedBurnPressure\",\n \"inferredBurnPressure\",\n \"runwayPressure\",\n \"uncertaintyPressure\",\n \"cacheAffinityBenefit\",\n \"cacheState\",\n \"overlayPreferenceBenefit\",\n \"total\",\n \"confidence\",\n ]);\n const parsed: CodexFleetScoreV1 = {\n candidateKey: normalizeKey(strictString(score.candidateKey)),\n eligible: strictBoolean(score.eligible),\n rejectionReason:\n score.rejectionReason === null\n ? null\n : strictEnum(score.rejectionReason, [\n \"allocator_disabled\",\n \"unavailable\",\n \"cooling\",\n \"quota_ceiling\",\n \"overlay_isolation\",\n ] as const),\n quotaPressure: strictFiniteNumber(score.quotaPressure, 0, Number.MAX_SAFE_INTEGER),\n leasePressure: strictFiniteNumber(score.leasePressure, 0, Number.MAX_SAFE_INTEGER),\n observedBurnPressure: strictFiniteNumber(\n score.observedBurnPressure,\n 0,\n Number.MAX_SAFE_INTEGER,\n ),\n inferredBurnPressure: strictFiniteNumber(\n score.inferredBurnPressure,\n 0,\n Number.MAX_SAFE_INTEGER,\n ),\n runwayPressure: strictFiniteNumber(score.runwayPressure, 0, Number.MAX_SAFE_INTEGER),\n uncertaintyPressure: strictFiniteNumber(score.uncertaintyPressure, 0, Number.MAX_SAFE_INTEGER),\n cacheAffinityBenefit: strictFiniteNumber(\n score.cacheAffinityBenefit,\n 0,\n Number.MAX_SAFE_INTEGER,\n ),\n cacheState: strictEnum(score.cacheState, [\"unknown\", \"healthy\", \"collapsed\"] as const),\n overlayPreferenceBenefit: strictFiniteNumber(\n score.overlayPreferenceBenefit,\n 0,\n Number.MAX_SAFE_INTEGER,\n ),\n total: strictFiniteNumber(score.total, -Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER),\n confidence: strictConfidence(score.confidence),\n };\n const expectedTotal =\n parsed.quotaPressure +\n parsed.leasePressure +\n parsed.observedBurnPressure +\n parsed.inferredBurnPressure +\n parsed.runwayPressure +\n parsed.uncertaintyPressure -\n parsed.cacheAffinityBenefit -\n parsed.overlayPreferenceBenefit;\n if (parsed.eligible !== (parsed.rejectionReason === null) || parsed.total !== expectedTotal) {\n throw new Error(\"Codex fleet replay score is internally inconsistent\");\n }\n return parsed;\n}\n\nfunction strictRecord(value: unknown, expectedKeys: readonly string[]): Record<string, unknown> {\n if (\n value === null ||\n typeof value !== \"object\" ||\n Array.isArray(value) ||\n ![Object.prototype, null].includes(Object.getPrototypeOf(value))\n ) {\n throw new Error(\"Codex fleet replay value must be a plain object\");\n }\n const record = value as Record<string, unknown>;\n const actualKeys = Object.keys(record).sort(compareCodexFleetCanonicalStringsV1);\n const canonicalExpected = [...expectedKeys].sort(compareCodexFleetCanonicalStringsV1);\n if (canonicalJson(actualKeys) !== canonicalJson(canonicalExpected)) {\n throw new Error(\"Codex fleet replay object has missing or unknown fields\");\n }\n return record;\n}\n\nfunction strictEnum<const T extends readonly string[]>(value: unknown, values: T): T[number] {\n if (typeof value !== \"string\" || !values.includes(value)) {\n throw new Error(\"Codex fleet replay enum value is invalid\");\n }\n return value as T[number];\n}\n\nfunction strictConfidence(value: unknown): CodexFleetConfidence {\n return strictEnum(value, [\"unknown\", \"low\", \"medium\", \"high\"] as const);\n}\n\nfunction strictString(value: unknown): string {\n if (typeof value !== \"string\") throw new Error(\"Codex fleet replay value must be a string\");\n return value;\n}\n\nfunction strictOptionalKey(value: unknown): string | null {\n return value === null ? null : normalizeKey(strictString(value));\n}\n\nfunction strictBoolean(value: unknown): boolean {\n if (typeof value !== \"boolean\") throw new Error(\"Codex fleet replay value must be boolean\");\n return value;\n}\n\nfunction strictFiniteNumber(value: unknown, min: number, max: number): number {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < min || value > max) {\n throw new Error(\"Codex fleet replay numeric value is invalid\");\n }\n return value;\n}\n\nfunction strictInteger(value: unknown, min: number, max: number): number {\n const number = strictFiniteNumber(value, min, max);\n if (!Number.isInteger(number)) throw new Error(\"Codex fleet replay value must be an integer\");\n return number;\n}\n\nfunction strictSha256(value: unknown): string {\n if (typeof value !== \"string\" || !/^[a-f0-9]{64}$/.test(value)) {\n throw new Error(\"Codex fleet replay fingerprint must be lowercase SHA-256\");\n }\n return value;\n}\n\nfunction fingerprint(value: unknown): string {\n const serialized = canonicalJson(value);\n return bytesToHex(sha256(new TextEncoder().encode(serialized)));\n}\n\nfunction fingerprintReplayInput(\n input: CodexFleetDecisionInputV1,\n truncatedCandidateCount: number,\n): string {\n // Truncation affects actual-vs-shadow comparability and the UI explanation,\n // so it is part of the replay input's integrity boundary rather than mutable\n // envelope metadata.\n return fingerprint({ input, truncatedCandidateCount });\n}\n\nfunction canonicalJson(value: unknown): string {\n return JSON.stringify(sortJson(value));\n}\n\nfunction sortJson(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sortJson);\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => compareCodexFleetCanonicalStringsV1(left, right))\n .map(([key, child]) => [key, sortJson(child)]),\n );\n }\n return value;\n}\n","import { z } from \"zod\";\nimport {\n AGENT_AUTHORED_COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES,\n AGENT_AUTHORED_COMPANY_PROFILE_ENTRY_MAX_CHARS,\n AGENT_AUTHORED_COMPANY_PROFILE_SCALAR_MAX_CHARS,\n AGENT_AUTHORED_COMPANY_PROFILE_TOO_LONG_MESSAGE,\n} from \"./agent-authored-durable-text\";\nimport { HumanInputQuestion } from \"./index\";\n\nexport const COMPANY_PROFILE_SCALAR_MAX_CHARS = 2_048;\nexport const COMPANY_PROFILE_ENTRY_MAX_CHARS = 1_024;\nexport const COMPANY_PROFILE_ENTRY_MAX_COUNT = 16;\nexport const COMPANY_PROFILE_STABLE_KEY_MAX_CHARS = 96;\nexport const COMPANY_PROFILE_REASON_MAX_CHARS = 4_096;\nexport const COMPANY_PROFILE_SOURCE_ID_MAX_CHARS = 512;\nexport const COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES = 28_672;\nexport const COMPANY_PROFILE_PROMPT_MAX_UTF8_BYTES = 32_768;\n\nexport const CompanyProfileStableKey = z\n .string()\n .min(1)\n .max(COMPANY_PROFILE_STABLE_KEY_MAX_CHARS)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/);\nexport type CompanyProfileStableKey = z.infer<typeof CompanyProfileStableKey>;\n\nexport function normalizeCompanyProfileStableKey(value: string): string {\n return value.normalize(\"NFKC\").trim().toLowerCase().replace(/\\s+/gu, \"-\").replace(/-+/g, \"-\");\n}\n\nexport const CompanyProfileStableKeyInput = z\n .string()\n .transform(normalizeCompanyProfileStableKey)\n .pipe(CompanyProfileStableKey);\n\nexport const CompanyProfileEntry = z.object({\n key: CompanyProfileStableKeyInput,\n content: z\n .string()\n .min(1)\n .max(COMPANY_PROFILE_ENTRY_MAX_CHARS)\n .refine((value) => value.trim().length > 0, \"company-profile entries must not be blank\"),\n});\nexport type CompanyProfileEntry = z.infer<typeof CompanyProfileEntry>;\n\nfunction boundedScalar() {\n return z\n .string()\n .min(1)\n .max(COMPANY_PROFILE_SCALAR_MAX_CHARS)\n .refine((value) => value.trim().length > 0, \"company-profile scalar content must not be blank\")\n .nullable();\n}\n\nfunction uniqueEntryKeys(\n entries: CompanyProfileEntry[],\n field: \"products\" | \"customers\" | \"goals\" | \"constraints\",\n context: z.RefinementCtx,\n): void {\n const seen = new Set<string>();\n for (const [index, entry] of entries.entries()) {\n if (seen.has(entry.key)) {\n context.addIssue({\n code: \"custom\",\n path: [field, index, \"key\"],\n message: `duplicate company-profile ${field} key`,\n });\n }\n seen.add(entry.key);\n }\n}\n\nexport const CompanyProfileContent = z\n .object({\n identity: boundedScalar(),\n mission: boundedScalar(),\n products: z.array(CompanyProfileEntry).max(COMPANY_PROFILE_ENTRY_MAX_COUNT),\n customers: z.array(CompanyProfileEntry).max(COMPANY_PROFILE_ENTRY_MAX_COUNT),\n goals: z.array(CompanyProfileEntry).max(COMPANY_PROFILE_ENTRY_MAX_COUNT),\n constraints: z.array(CompanyProfileEntry).max(COMPANY_PROFILE_ENTRY_MAX_COUNT),\n })\n .strict()\n .superRefine((value, context) => {\n uniqueEntryKeys(value.products, \"products\", context);\n uniqueEntryKeys(value.customers, \"customers\", context);\n uniqueEntryKeys(value.goals, \"goals\", context);\n uniqueEntryKeys(value.constraints, \"constraints\", context);\n if (\n value.identity === null &&\n value.mission === null &&\n value.products.length === 0 &&\n value.customers.length === 0 &&\n value.goals.length === 0 &&\n value.constraints.length === 0\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"a company profile must contain at least one field\",\n });\n }\n const contentBytes = new TextEncoder().encode(JSON.stringify(value)).byteLength;\n if (contentBytes > COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES) {\n context.addIssue({\n code: \"custom\",\n message: `company profile is ${contentBytes} UTF-8 bytes; limit is ${COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES}`,\n });\n }\n });\nexport type CompanyProfileContent = z.infer<typeof CompanyProfileContent>;\n\n/**\n * The same profile, bounded for an **agent** author. The human `account:admin`\n * route keeps `CompanyProfileContent` and its wider limits; this is the shape\n * persisted by the first-party `company_profile_propose` tool. The current tool\n * accepts only identity and mission and writes empty compatibility lists, but\n * the validator must still read historical revisions without rewriting them.\n */\nexport const AgentAuthoredCompanyProfileContent = CompanyProfileContent.superRefine(\n (value, context) => {\n for (const field of [\"identity\", \"mission\"] as const) {\n const scalar = value[field];\n if (scalar !== null && scalar.length > AGENT_AUTHORED_COMPANY_PROFILE_SCALAR_MAX_CHARS) {\n context.addIssue({\n code: \"custom\",\n path: [field],\n message: `${field} is ${scalar.length} characters. ${AGENT_AUTHORED_COMPANY_PROFILE_TOO_LONG_MESSAGE}`,\n });\n }\n }\n for (const field of [\"products\", \"customers\", \"goals\", \"constraints\"] as const) {\n for (const [index, entry] of value[field].entries()) {\n if (entry.content.length > AGENT_AUTHORED_COMPANY_PROFILE_ENTRY_MAX_CHARS) {\n context.addIssue({\n code: \"custom\",\n path: [field, index, \"content\"],\n message: `this entry is ${entry.content.length} characters. ${AGENT_AUTHORED_COMPANY_PROFILE_TOO_LONG_MESSAGE}`,\n });\n }\n }\n }\n const contentBytes = new TextEncoder().encode(JSON.stringify(value)).byteLength;\n if (contentBytes > AGENT_AUTHORED_COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES) {\n context.addIssue({\n code: \"custom\",\n message: `this profile is ${contentBytes} UTF-8 bytes. ${AGENT_AUTHORED_COMPANY_PROFILE_TOO_LONG_MESSAGE}`,\n });\n }\n },\n);\nexport type AgentAuthoredCompanyProfileContent = z.infer<typeof AgentAuthoredCompanyProfileContent>;\n\nexport const CompanyProfileRevisionIntent = z.enum([\"active\", \"proposal\"]);\nexport type CompanyProfileRevisionIntent = z.infer<typeof CompanyProfileRevisionIntent>;\n\nexport const CompanyProfileProvenanceSource = z.enum([\n \"human\",\n \"agent_admin\",\n \"durable_learning\",\n \"migration\",\n]);\nexport type CompanyProfileProvenanceSource = z.infer<typeof CompanyProfileProvenanceSource>;\n\nexport const CompanyProfilePrincipalKind = z.enum([\"human_session\", \"agent_attempt\", \"service\"]);\nexport type CompanyProfilePrincipalKind = z.infer<typeof CompanyProfilePrincipalKind>;\n\nexport const CompanyProfileActivationType = z.enum([\"activate\", \"rollback\"]);\nexport type CompanyProfileActivationType = z.infer<typeof CompanyProfileActivationType>;\n\nexport const CompanyProfileRevisionIdentity = z.object({\n id: z.string().uuid(),\n revision: z.number().int().positive(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n});\nexport type CompanyProfileRevisionIdentity = z.infer<typeof CompanyProfileRevisionIdentity>;\n\nexport const CompanyProfileRevision = CompanyProfileRevisionIdentity.extend({\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n intent: CompanyProfileRevisionIntent,\n profile: CompanyProfileContent,\n provenance: z.object({\n source: CompanyProfileProvenanceSource,\n sourceId: z.string().min(1).max(COMPANY_PROFILE_SOURCE_ID_MAX_CHARS).nullable(),\n }),\n supersedesRevisionId: z.string().uuid().nullable(),\n createdBySubjectId: z.string().min(1).max(1_024),\n createdAt: z.string().datetime(),\n});\nexport type CompanyProfileRevision = z.infer<typeof CompanyProfileRevision>;\n\nexport const CompanyProfileHead = z.object({\n accountId: z.string().uuid(),\n revisionId: z.string().uuid(),\n revision: z.number().int().positive(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n activationVersion: z.number().int().positive(),\n activatedAt: z.string().datetime(),\n});\nexport type CompanyProfileHead = z.infer<typeof CompanyProfileHead>;\n\nexport const CompanyProfileActivationEvent = z.object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n type: CompanyProfileActivationType,\n activationVersion: z.number().int().positive(),\n oldRevision: CompanyProfileRevisionIdentity.nullable(),\n newRevision: CompanyProfileRevisionIdentity.nullable(),\n actorSubjectId: z.string().min(1).max(1_024),\n reason: z.string().min(1).max(COMPANY_PROFILE_REASON_MAX_CHARS),\n createdAt: z.string().datetime(),\n});\nexport type CompanyProfileActivationEvent = z.infer<typeof CompanyProfileActivationEvent>;\n\nexport const CompanyProfileSnapshotEntry = CompanyProfileRevisionIdentity.extend({\n activationVersion: z.number().int().positive(),\n activatedAt: z.string().datetime(),\n provenance: z.object({\n source: CompanyProfileProvenanceSource,\n sourceIdHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n }),\n});\nexport type CompanyProfileSnapshotEntry = z.infer<typeof CompanyProfileSnapshotEntry>;\n\nexport const CompanyProfileSnapshot = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n profile: CompanyProfileSnapshotEntry.nullable(),\n snapshotHash: z.string().regex(/^[0-9a-f]{64}$/),\n createdAt: z.string().datetime(),\n});\nexport type CompanyProfileSnapshot = z.infer<typeof CompanyProfileSnapshot>;\n\nexport const ResolvedCompanyProfileSnapshot = CompanyProfileSnapshot.extend({\n profile: CompanyProfileSnapshotEntry.extend({ profile: CompanyProfileContent }).nullable(),\n});\nexport type ResolvedCompanyProfileSnapshot = z.infer<typeof ResolvedCompanyProfileSnapshot>;\n\nexport const CompanyProfileListQuery = z.object({\n afterRevision: z.coerce.number().int().positive().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(50),\n});\nexport type CompanyProfileListQuery = z.infer<typeof CompanyProfileListQuery>;\n\nexport const CompanyProfileListResponse = z.object({\n current: CompanyProfileHead.nullable(),\n activeRevision: CompanyProfileRevision.nullable(),\n revisions: z.array(CompanyProfileRevision),\n activationEvents: z.array(CompanyProfileActivationEvent),\n nextAfterRevision: z.number().int().positive().nullable(),\n});\nexport type CompanyProfileListResponse = z.infer<typeof CompanyProfileListResponse>;\n\nexport const UpdateCompanyProfileRequest = z.object({\n operationId: z.string().uuid().optional(),\n profile: CompanyProfileContent,\n expectedCurrentRevisionId: z.string().uuid().nullable(),\n expectedActivationVersion: z.number().int().nonnegative(),\n reason: z.string().trim().min(1).max(COMPANY_PROFILE_REASON_MAX_CHARS),\n});\nexport type UpdateCompanyProfileRequest = z.infer<typeof UpdateCompanyProfileRequest>;\n\nexport const ActivateCompanyProfileRevisionRequest = z.object({\n operationId: z.string().uuid().optional(),\n expectedCurrentRevisionId: z.string().uuid().nullable(),\n expectedActivationVersion: z.number().int().nonnegative(),\n reason: z.string().trim().min(1).max(COMPANY_PROFILE_REASON_MAX_CHARS),\n});\nexport type ActivateCompanyProfileRevisionRequest = z.infer<\n typeof ActivateCompanyProfileRevisionRequest\n>;\n\nexport const RollbackCompanyProfileRequest = z.object({\n operationId: z.string().uuid().optional(),\n targetRevisionId: z.string().uuid(),\n expectedCurrentRevisionId: z.string().uuid(),\n expectedActivationVersion: z.number().int().positive(),\n reason: z.string().trim().min(1).max(COMPANY_PROFILE_REASON_MAX_CHARS),\n});\nexport type RollbackCompanyProfileRequest = z.infer<typeof RollbackCompanyProfileRequest>;\n\nexport const CompanyProfileMutationResponse = z.object({\n revision: CompanyProfileRevision.nullable(),\n head: CompanyProfileHead.nullable(),\n event: CompanyProfileActivationEvent.nullable(),\n});\nexport type CompanyProfileMutationResponse = z.infer<typeof CompanyProfileMutationResponse>;\n\nexport const COMPANY_PROFILE_AGENT_APPROVE_OPTION = \"activate\" as const;\nexport const COMPANY_PROFILE_AGENT_REJECT_OPTION = \"skip\" as const;\n\nexport const CompanyProfileAgentPolicyMode = z.enum([\"off\", \"suggest\", \"automatic\"]);\nexport type CompanyProfileAgentPolicyMode = z.infer<typeof CompanyProfileAgentPolicyMode>;\n\nexport const CompanyProfileAgentPolicy = z.object({\n organizationId: z.string().uuid(),\n mode: CompanyProfileAgentPolicyMode,\n version: z.number().int().nonnegative(),\n updatedAt: z.string().datetime({ offset: true }),\n changed: z.boolean().optional(),\n});\nexport type CompanyProfileAgentPolicy = z.infer<typeof CompanyProfileAgentPolicy>;\n\nexport const UpdateCompanyProfileAgentPolicyRequest = z\n .object({\n mode: CompanyProfileAgentPolicyMode,\n expectedVersion: z.number().int().nonnegative(),\n operationId: z.string().uuid(),\n })\n .strict();\nexport type UpdateCompanyProfileAgentPolicyRequest = z.infer<\n typeof UpdateCompanyProfileAgentPolicyRequest\n>;\n\nexport const CompanyProfileAgentAttempt = z\n .object({\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n agentSubjectId: z.string().trim().min(1).max(1_024),\n })\n .strict();\nexport type CompanyProfileAgentAttempt = z.infer<typeof CompanyProfileAgentAttempt>;\n\nexport const CompanyProfileAgentProposalRequest = z\n .object({\n operationId: z.string().uuid(),\n profile: CompanyProfileContent,\n reason: z.string().trim().min(1).max(COMPANY_PROFILE_REASON_MAX_CHARS),\n })\n .strict();\nexport type CompanyProfileAgentProposalRequest = z.infer<typeof CompanyProfileAgentProposalRequest>;\n\n// z.lazy avoids an import cycle because HumanInputQuestion is declared in the\n// root contracts module that re-exports this file.\nexport const CompanyProfileAgentHumanInputPrompt = z.object({\n questions: z.array(z.lazy(() => HumanInputQuestion)).length(1),\n allowSkip: z.literal(false),\n});\nexport type CompanyProfileAgentHumanInputPrompt = z.infer<\n typeof CompanyProfileAgentHumanInputPrompt\n>;\n\nexport const CompanyProfileAgentReviewRequiredReceipt = z.object({\n status: z.literal(\"confirmation_required\"),\n operationId: z.string().uuid(),\n proposalReceiptId: z.string().uuid(),\n revision: CompanyProfileRevision,\n policyMode: z.literal(\"suggest\"),\n humanInput: CompanyProfileAgentHumanInputPrompt,\n confirmWith: z.literal(\"company_profile_confirm\"),\n replayed: z.boolean(),\n});\nexport type CompanyProfileAgentReviewRequiredReceipt = z.infer<\n typeof CompanyProfileAgentReviewRequiredReceipt\n>;\n\nexport const CompanyProfileAgentAutomaticActivationReceipt = z.object({\n status: z.literal(\"activated\"),\n operationId: z.string().uuid(),\n proposalReceiptId: z.string().uuid(),\n automaticActivationReceiptId: z.string().uuid(),\n policyMode: z.literal(\"automatic\"),\n mutation: CompanyProfileMutationResponse,\n replayed: z.boolean(),\n});\nexport type CompanyProfileAgentAutomaticActivationReceipt = z.infer<\n typeof CompanyProfileAgentAutomaticActivationReceipt\n>;\n\nexport const CompanyProfileAgentProposalReceipt = z.discriminatedUnion(\"status\", [\n CompanyProfileAgentReviewRequiredReceipt,\n CompanyProfileAgentAutomaticActivationReceipt,\n]);\nexport type CompanyProfileAgentProposalReceipt = z.infer<typeof CompanyProfileAgentProposalReceipt>;\n\nexport const CompanyProfileAgentConfirmRequest = z\n .object({\n operationId: z.string().uuid(),\n proposalReceiptId: z.string().uuid(),\n humanInputRequestId: z.string().uuid(),\n })\n .strict();\nexport type CompanyProfileAgentConfirmRequest = z.infer<typeof CompanyProfileAgentConfirmRequest>;\n\nexport const CompanyProfileAgentConfirmationReceipt = z.object({\n status: z.literal(\"activated\"),\n operationId: z.string().uuid(),\n confirmationReceiptId: z.string().uuid(),\n proposalReceiptId: z.string().uuid(),\n humanInputRequestId: z.string().uuid(),\n mutation: CompanyProfileMutationResponse,\n replayed: z.boolean(),\n});\nexport type CompanyProfileAgentConfirmationReceipt = z.infer<\n typeof CompanyProfileAgentConfirmationReceipt\n>;\n\nexport const CompanyProfileDiffRequest = z\n .object({ fromRevisionId: z.string().uuid(), toRevisionId: z.string().uuid() })\n .refine((value) => value.fromRevisionId !== value.toRevisionId, {\n path: [\"toRevisionId\"],\n message: \"diff revisions must be different\",\n });\nexport type CompanyProfileDiffRequest = z.infer<typeof CompanyProfileDiffRequest>;\n\nexport const CompanyProfileDiffResponse = z.object({\n from: CompanyProfileRevision,\n to: CompanyProfileRevision,\n format: z.literal(\"unified_json\"),\n diff: z.string(),\n});\nexport type CompanyProfileDiffResponse = z.infer<typeof CompanyProfileDiffResponse>;\n\nexport const CompanyProfileConflictResponse = z.object({\n code: z.literal(\"COMPANY_PROFILE_CONFLICT\"),\n message: z.string(),\n currentHead: CompanyProfileHead.nullable(),\n});\n\nexport const CompanyProfileOperationReuseResponse = z.object({\n code: z.literal(\"COMPANY_PROFILE_OPERATION_REUSED\"),\n message: z.string(),\n});\n\nexport const CompanyProfileLearningSubjectKind = z.enum([\n \"company_identity\",\n \"company_mission\",\n \"company_product\",\n \"company_customer\",\n \"company_goal\",\n \"company_constraint\",\n]);\nexport type CompanyProfileLearningSubjectKind = z.infer<typeof CompanyProfileLearningSubjectKind>;\n\nconst CompanyProfileScalarLearningSubject = z.object({\n kind: z.enum([\"company_identity\", \"company_mission\"]),\n content: z.string().trim().min(1).max(COMPANY_PROFILE_SCALAR_MAX_CHARS),\n stableKey: z.null(),\n});\n\nconst CompanyProfileRepeatableLearningSubject = z.object({\n kind: z.enum([\"company_product\", \"company_customer\", \"company_goal\", \"company_constraint\"]),\n content: z.string().trim().min(1).max(COMPANY_PROFILE_ENTRY_MAX_CHARS),\n stableKey: CompanyProfileStableKeyInput,\n});\n\n/** Authority-native seam invoked only by the canonical durable-learning router adapter. */\nexport const CompanyProfileLearningWrite = z.object({\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n actorSubjectId: z.string().min(1).max(1_024),\n actorKind: z.enum([\"human\", \"agent\", \"service\"]),\n authority: z.enum([\"active\", \"proposal\"]),\n subject: z.discriminatedUnion(\"kind\", [\n CompanyProfileScalarLearningSubject,\n CompanyProfileRepeatableLearningSubject,\n ]),\n sourceId: z.string().min(1).max(COMPANY_PROFILE_SOURCE_ID_MAX_CHARS),\n});\nexport type CompanyProfileLearningWrite = z.infer<typeof CompanyProfileLearningWrite>;\n","/**\n * Budgets and authoring style for durable text an **agent** writes on a user's\n * behalf.\n *\n * The budget follows the cost, and the cost differs per destination:\n *\n * - A workspace instruction policy is composed verbatim into the prompt of\n * every session it applies to, for as long as it stays active. A global\n * charter or global policy applies to every session in the workspace; a role\n * policy applies to every session bound to that role. At most three entries\n * compose at once (charter, global policy, matching role policy), so the\n * standing ceiling this budget implies is three times the per-entry cap.\n * - A preference is cheaper and in a different way: only its short title and\n * description descriptors are prompt-composed, while the full content is\n * retrieved on demand behind the exact attempt's retrieval handle. Its length\n * is therefore retrieval cost, not standing prompt cost, which is why it gets\n * more room rather than less.\n * - Organization identity and mission are always-on context for root sessions\n * across the whole organization. Historical company-profile list fields stay\n * in the storage contract for compatibility; nonempty values on an already-\n * active historical revision remain composed with an explicit compatibility\n * label until an organization owner replaces the profile.\n * - Knowledge is retrieval evidence and never joins the always-composed prefix.\n *\n * These caps deliberately bind only agent-authored writes. The human-facing\n * limits (`WORKSPACE_INSTRUCTION_POLICY_CONTENT_MAX_CHARS`,\n * `PREFERENCE_REGISTRY_CONTENT_MAX_CHARS`, `COMPANY_PROFILE_SCALAR_MAX_CHARS`,\n * `COMPANY_PROFILE_ENTRY_MAX_CHARS`, `COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES`)\n * are unchanged: a person editing in the UI is making a deliberate, visible\n * choice, and lowering their limit would reject text they already typed.\n * Existing stored revisions are never rewritten; only new agent writes are\n * bounded.\n */\n\n/** One imperative rule, in 1-3 sentences, fits comfortably under this. */\nexport const AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_MAX_CHARS = 600;\n\n/** Retrieved on demand rather than always composed, so a little more room. */\nexport const AGENT_AUTHORED_PREFERENCE_CONTENT_MAX_CHARS = 1_200;\n\n/** `identity` and `mission`: a couple of sentences, not a positioning document. */\nexport const AGENT_AUTHORED_COMPANY_PROFILE_SCALAR_MAX_CHARS = 400;\n\n/** Legacy company-profile list entry bound; retained for stored-revision compatibility. */\nexport const AGENT_AUTHORED_COMPANY_PROFILE_ENTRY_MAX_CHARS = 200;\n\n/** Whole canonical compatibility profile; current agent tools submit only identity and mission. */\nexport const AGENT_AUTHORED_COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES = 4_096;\n\nexport const AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_TOO_LONG_MESSAGE =\n \"A workspace rule is composed verbatim into the prompt of every session it applies to (every session \" +\n \"for a global charter or policy, every session bound to the role for a role policy), for as long as it \" +\n `stays active. Keep it under ${AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_MAX_CHARS} characters: one rule, ` +\n \"imperative, no numbered procedure. Split unrelated rules into separate entries.\";\n\nexport const AGENT_AUTHORED_PREFERENCE_CONTENT_TOO_LONG_MESSAGE =\n \"A Skill is durable Agent Knowledge that agents retrieve on demand, so its length is \" +\n \"retrieval cost rather than standing prompt cost: only its short title and description are composed into \" +\n `every session prompt. Keep it under ${AGENT_AUTHORED_PREFERENCE_CONTENT_MAX_CHARS} characters: state the ` +\n \"trigger and outcome plainly, include only the necessary procedure, checks, and exceptions, and remove \" +\n \"background, repeated guidance, and decorative examples.\";\n\nexport const AGENT_AUTHORED_COMPANY_PROFILE_TOO_LONG_MESSAGE =\n \"Organization identity and mission are mandatory prompt context in every root session across the \" +\n `organization. Keep each under ${AGENT_AUTHORED_COMPANY_PROFILE_SCALAR_MAX_CHARS} characters: one concise ` +\n \"descriptive statement, no products, customers, goals, constraints, procedure, or marketing copy. Those \" +\n \"details belong in organization Documents and are retrieved as evidence when relevant.\";\n\n/**\n * Lane-agnostic guidance for the one `remember` content field, whose schema\n * bound has to admit the widest lane. Without it an over-long rule would be\n * refused with a generic \"expected length <= 4000\" that points at the wrong\n * number entirely.\n */\nexport const AGENT_AUTHORED_REMEMBER_CONTENT_TOO_LONG_MESSAGE =\n \"Remembered content is bounded by where it lands: a mandatory workspace rule at most \" +\n `${AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_MAX_CHARS} characters because it is composed into every ` +\n `session prompt it applies to, a preference at most ${AGENT_AUTHORED_PREFERENCE_CONTENT_MAX_CHARS}, a ` +\n \"Knowledge fact at most 4000. Write one imperative statement in 1-3 sentences, split unrelated entries, and \" +\n \"keep procedure in a Document or Skill that the entry references.\";\n\n/**\n * The shape rule the model reads on every tool that authors a durable *rule or\n * preference*. Deliberately not reused for the company profile, which is a\n * descriptive profile rather than an instruction and needs its own wording.\n */\nexport const AGENT_AUTHORED_INSTRUCTION_POLICY_STYLE =\n \"Write the shortest complete imperative rule in 1-3 sentences, with no numbered procedure, examples, \" +\n \"rationale, or restated defaults. Split unrelated rules, and move conditional procedure into a Skill.\";\n\nexport const AGENT_AUTHORED_SKILL_STYLE =\n \"Write one focused Skill with a clear trigger and outcome. Include only the prerequisites, necessary steps, \" +\n \"verification, and important failure handling an agent needs to execute it; omit background, repetition, \" +\n \"generic advice, and decorative examples. Split unrelated workflows into separate Skills.\";\n\n/** @deprecated Use the destination-specific instruction or Skill style. */\nexport const AGENT_AUTHORED_DURABLE_TEXT_STYLE = AGENT_AUTHORED_INSTRUCTION_POLICY_STYLE;\n\n/**\n * Actionable over-budget message including the text the caller actually sent,\n * so the model can see how far over it is instead of guessing.\n */\nexport function agentAuthoredDurableTextTooLongMessage(input: {\n kind: \"instruction_policy\" | \"preference\";\n actualChars: number;\n}): string {\n const subject = input.kind === \"instruction_policy\" ? \"This rule is\" : \"This preference is\";\n const limit =\n input.kind === \"instruction_policy\"\n ? AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_TOO_LONG_MESSAGE\n : AGENT_AUTHORED_PREFERENCE_CONTENT_TOO_LONG_MESSAGE;\n return `${subject} ${input.actualChars} characters. ${limit}`;\n}\n","import { z } from \"zod\";\n\nimport { WorkspaceStateKnowledge } from \"./workspace-state\";\n\nexport const COMPANY_BRAIN_OKF_SCHEMA_VERSION = 1 as const;\nexport const COMPANY_BRAIN_GUIDANCE_MAX_ENTRIES = 512;\nexport const COMPANY_BRAIN_GUIDANCE_CONTENT_MAX_CHARS = 262_144;\nexport const COMPANY_BRAIN_GUIDANCE_MAX_CONTENT_BYTES = 4 * 1024 * 1024;\nexport const COMPANY_BRAIN_INSPECTOR_DEFAULT_LIMIT = 20;\nexport const COMPANY_BRAIN_INSPECTOR_MAX_LIMIT = 50;\nexport const COMPANY_BRAIN_INSPECTOR_CURSOR_MAX_CHARS = 1_024;\nexport const COMPANY_BRAIN_PROPOSAL_CONTENT_MAX_BYTES = 16 * 1_024;\nexport const COMPANY_BRAIN_PROPOSAL_RESPONSE_MAX_BYTES = 64 * 1_024;\n\nconst utf8Bytes = (value: string): number => new TextEncoder().encode(value).byteLength;\nconst boundedUtf8 = (maxBytes: number) =>\n z.string().superRefine((value, context) => {\n if (utf8Bytes(value) > maxBytes) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `must be at most ${maxBytes} UTF-8 bytes`,\n });\n }\n });\n\nexport const CompanyBrainContextReceipt = z\n .object({\n id: z.string().uuid(),\n sessionId: z.string().uuid(),\n rootSessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n acceptedAt: z.string().datetime(),\n createdAt: z.string().datetime(),\n sessionRole: z.enum([\"root\", \"child\"]),\n memoryEnabled: z.boolean(),\n // Snapshots are immutable: a turn accepted before the standing block was\n // retired recorded `legacy_standing` and still reads back that way. This\n // is a historical fact about that turn, not a mode anyone can select.\n memoryPromptMode: z.enum([\"legacy_standing\", \"retrieval_only\"]),\n companyProfileIncluded: z.boolean(),\n instructionPolicyEntryHash: z.string().regex(/^[0-9a-f]{64}$/u),\n preferenceDescriptorHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/u)\n .nullable(),\n companyProfileSnapshotHash: z.string().regex(/^[0-9a-f]{64}$/u),\n turnContextSnapshotId: z.string().uuid(),\n turnContextSnapshotHash: z.string().regex(/^[0-9a-f]{64}$/u),\n turnContextSnapshotSource: z.enum([\"accepted_turn\", \"legacy_first_claim\"]),\n selectionHash: z.string().regex(/^[0-9a-f]{64}$/u),\n selectedMemoryCount: z.number().int().nonnegative().max(50),\n renderedMemoryCount: z.number().int().nonnegative().max(50),\n budgetOmittedMemoryCount: z.number().int().nonnegative().max(50),\n })\n .strict();\nexport type CompanyBrainContextReceipt = z.infer<typeof CompanyBrainContextReceipt>;\n\nexport const CompanyBrainContextReceiptPage = z\n .object({\n receipts: z.array(CompanyBrainContextReceipt).max(COMPANY_BRAIN_INSPECTOR_MAX_LIMIT),\n nextCursor: z.string().min(1).max(COMPANY_BRAIN_INSPECTOR_CURSOR_MAX_CHARS).nullable(),\n hasMore: z.boolean(),\n })\n .strict();\nexport type CompanyBrainContextReceiptPage = z.infer<typeof CompanyBrainContextReceiptPage>;\n\nexport const CompanyBrainKnowledgeProposal = z\n .object({\n id: z.string().uuid(),\n authority: z.object({ kind: z.enum([\"organization\", \"workspace\", \"personal\"]) }).strict(),\n targetKind: z.enum([\"instruction_policy\", \"preference\"]),\n targetScope: z.string().min(1).max(96),\n targetKey: z.string().min(1).max(96).nullable(),\n content: boundedUtf8(COMPANY_BRAIN_PROPOSAL_CONTENT_MAX_BYTES),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/u),\n source: z.object({ claimId: z.string().uuid(), evidenceId: z.string().uuid() }).strict(),\n status: z.literal(\"proposed\"),\n createdAt: z.string().datetime(),\n projection: z\n .object({\n truncated: z.boolean(),\n originalContentUtf8Bytes: z.number().int().nonnegative().max(1_048_576),\n })\n .strict(),\n })\n .strict();\nexport type CompanyBrainKnowledgeProposal = z.infer<typeof CompanyBrainKnowledgeProposal>;\n\nexport const CompanyBrainKnowledgeProposalPage = z\n .object({\n proposals: z.array(CompanyBrainKnowledgeProposal).max(COMPANY_BRAIN_INSPECTOR_MAX_LIMIT),\n truncatedForCount: z.boolean(),\n truncatedForResponseBytes: z.boolean(),\n responseBytes: z.number().int().nonnegative().max(COMPANY_BRAIN_PROPOSAL_RESPONSE_MAX_BYTES),\n })\n .strict();\nexport type CompanyBrainKnowledgeProposalPage = z.infer<typeof CompanyBrainKnowledgeProposalPage>;\n\nexport const CompanyBrainGuidanceClassification = z.enum([\n \"company_profile\",\n \"mandatory_rule\",\n \"guide\",\n]);\nexport type CompanyBrainGuidanceClassification = z.infer<typeof CompanyBrainGuidanceClassification>;\n\nexport const CompanyBrainGuidanceScope = z.enum([\"organization\", \"workspace\", \"personal\"]);\nexport type CompanyBrainGuidanceScope = z.infer<typeof CompanyBrainGuidanceScope>;\n\nexport const CompanyBrainGuidanceLifecycle = z.enum([\n \"active\",\n \"proposal\",\n \"inactive\",\n \"rejected\",\n \"superseded\",\n \"expired\",\n \"historical\",\n]);\nexport type CompanyBrainGuidanceLifecycle = z.infer<typeof CompanyBrainGuidanceLifecycle>;\n\nexport const CompanyBrainGuidanceRelationship = z\n .object({\n type: z.enum([\"corrects\", \"supersedes\", \"superseded_by\"]),\n targetId: z.string().min(1).max(512),\n })\n .strict();\nexport type CompanyBrainGuidanceRelationship = z.infer<typeof CompanyBrainGuidanceRelationship>;\n\nexport const CompanyBrainGuidanceEntry = z\n .object({\n id: z.string().min(1).max(512),\n revisionId: z.string().uuid(),\n path: z.string().min(1).max(512),\n scope: CompanyBrainGuidanceScope,\n classification: CompanyBrainGuidanceClassification,\n title: z.string().min(1).max(160),\n description: z.string().max(512).nullable(),\n content: z.string().min(1).max(COMPANY_BRAIN_GUIDANCE_CONTENT_MAX_CHARS),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n revision: z.number().int().positive(),\n active: z.boolean(),\n lifecycle: CompanyBrainGuidanceLifecycle,\n provenance: z\n .object({\n source: z.string().min(1).max(96),\n sourceId: z.string().min(1).max(512).nullable(),\n trust: z.string().min(1).max(96).nullable(),\n })\n .strict(),\n relationships: z.array(CompanyBrainGuidanceRelationship).max(32),\n createdAt: z.string().datetime(),\n })\n .strict();\nexport type CompanyBrainGuidanceEntry = z.infer<typeof CompanyBrainGuidanceEntry>;\n\nexport const CompanyBrainGuidanceTruncationReason = z.enum([\n \"company_profile_history\",\n \"instruction_policy_history\",\n \"preference_count\",\n \"preference_history\",\n \"aggregate_item_count\",\n \"aggregate_content_bytes\",\n]);\nexport type CompanyBrainGuidanceTruncationReason = z.infer<\n typeof CompanyBrainGuidanceTruncationReason\n>;\n\nexport const CompanyBrainOkfPackage = z\n .object({\n kind: z.literal(\"opengeni.company_brain.okf\"),\n schemaVersion: z.literal(COMPANY_BRAIN_OKF_SCHEMA_VERSION),\n workspaceId: z.string().uuid(),\n generatedAt: z.string().datetime(),\n permissions: z\n .object({\n guidance: z.literal(\"available\"),\n knowledge: z.enum([\"available\", \"unavailable\"]),\n })\n .strict(),\n guidance: z\n .object({\n entries: z.array(CompanyBrainGuidanceEntry).max(COMPANY_BRAIN_GUIDANCE_MAX_ENTRIES),\n truncated: z.boolean(),\n truncationReasons: z.array(CompanyBrainGuidanceTruncationReason).max(6),\n })\n .strict(),\n knowledge: WorkspaceStateKnowledge,\n omissions: z\n .array(\n z.enum([\n \"inaccessible_knowledge\",\n \"document_bodies_use_documents_export\",\n \"memory_bodies_and_provenance\",\n \"secret_values_and_credentials\",\n \"session_messages_and_task_notes\",\n \"policy_and_preference_actor_identifiers\",\n ]),\n )\n .max(6),\n })\n .strict();\nexport type CompanyBrainOkfPackage = z.infer<typeof CompanyBrainOkfPackage>;\n","import { z } from \"zod\";\n\nimport {\n WorkspaceInstructionPolicyKind,\n WorkspaceInstructionPolicyProvenanceSource,\n WorkspaceInstructionPolicyRoleKey,\n WorkspaceInstructionPolicyRoleSource,\n WorkspaceInstructionPolicyScope,\n WorkspaceInstructionPolicySnapshotEntry,\n} from \"./workspace-instruction-policies\";\n\nexport const WORKSPACE_STATE_MAX_ACTIVE_POLICY_HEADS = 32;\nexport const WORKSPACE_STATE_MAX_BASES = 24;\nexport const WORKSPACE_STATE_MAX_TOPICS = 24;\nexport const WORKSPACE_STATE_MAX_GAPS = 16;\nexport const WORKSPACE_STATE_BASE_NAME_MAX_CHARS = 160;\nexport const WORKSPACE_STATE_TOPIC_MAX_CHARS = 96;\nexport const WORKSPACE_STATE_MEMORY_SAMPLE_LIMIT = 100;\nexport const WORKSPACE_STATE_EXPORT_SCHEMA_VERSION = 1;\n\nconst Count = z.number().int().nonnegative();\n\nexport const WorkspaceStateQuery = z.object({ attemptId: z.string().uuid().optional() }).strict();\nexport type WorkspaceStateQuery = z.infer<typeof WorkspaceStateQuery>;\n\nexport const WorkspaceStateDocumentStatusCounts = z\n .object({\n queued: Count,\n indexing: Count,\n ready: Count,\n failed: Count,\n })\n .strict();\nexport type WorkspaceStateDocumentStatusCounts = z.infer<typeof WorkspaceStateDocumentStatusCounts>;\n\nexport const WorkspaceStateSourceKindCounts = z\n .object({\n manual_upload: Count,\n meeting_transcript: Count,\n repository: Count,\n email: Count,\n chat: Count,\n document: Count,\n web: Count,\n other: Count,\n })\n .strict();\nexport type WorkspaceStateSourceKindCounts = z.infer<typeof WorkspaceStateSourceKindCounts>;\n\nexport const WorkspaceStateDocumentAuthorityKindCounts = z\n .object({\n organization: Count,\n workspace: Count,\n personal: Count,\n })\n .strict();\nexport type WorkspaceStateDocumentAuthorityKindCounts = z.infer<\n typeof WorkspaceStateDocumentAuthorityKindCounts\n>;\n\nexport const WorkspaceStateMemoryStatusCounts = z\n .object({\n proposed: Count,\n approved: Count,\n rejected: Count,\n active: Count,\n superseded: Count,\n archived: Count,\n })\n .strict();\nexport type WorkspaceStateMemoryStatusCounts = z.infer<typeof WorkspaceStateMemoryStatusCounts>;\n\nexport const WorkspaceStateMemoryKindCounts = z\n .object({\n semantic: Count,\n episodic: Count,\n procedural: Count,\n decision: Count,\n preference: Count,\n })\n .strict();\nexport type WorkspaceStateMemoryKindCounts = z.infer<typeof WorkspaceStateMemoryKindCounts>;\n\nexport const WorkspaceStatePolicyHead = z\n .object({\n kind: WorkspaceInstructionPolicyKind,\n scope: WorkspaceInstructionPolicyScope,\n roleKey: WorkspaceInstructionPolicyRoleKey.nullable(),\n revisionId: z.string().uuid(),\n revision: z.number().int().positive(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n activationVersion: z.number().int().positive(),\n activatedAt: z.string().datetime(),\n })\n .strict();\n\nexport const WorkspaceStatePolicyRevisionSummary = z\n .object({\n kind: WorkspaceInstructionPolicyKind,\n scope: WorkspaceInstructionPolicyScope,\n roleKey: WorkspaceInstructionPolicyRoleKey.nullable(),\n revisionId: z.string().uuid(),\n revision: z.number().int().positive(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n provenanceSource: WorkspaceInstructionPolicyProvenanceSource,\n state: z.enum([\"active\", \"inactive\"]),\n createdAt: z.string().datetime(),\n })\n .strict();\n\nexport const WorkspaceStatePolicy = z\n .object({\n authority: z.literal(\"workspace_instruction_policy_heads\"),\n activeHeads: z.array(WorkspaceStatePolicyHead).max(WORKSPACE_STATE_MAX_ACTIVE_POLICY_HEADS),\n activeHeadsTruncated: z.boolean(),\n latestRevision: WorkspaceStatePolicyRevisionSummary.nullable(),\n legacyRuntime: z\n .object({\n source: z.enum([\"workspace_override\", \"deployment_default\"]),\n workspaceOverrideConfigured: z.boolean(),\n })\n .strict(),\n runtimeComposition: z\n .object({\n status: z.literal(\"not_implemented\"),\n })\n .strict(),\n })\n .strict();\n\nexport const WorkspaceStatePreferences = z\n .object({\n authority: z.literal(\"preference_registry_preferences\"),\n activeDescriptorCount: Count.max(64),\n activeDescriptorHash: z.string().regex(/^[0-9a-f]{64}$/),\n scopeCounts: z\n .object({\n organization: Count,\n workspace: Count,\n user: Count,\n })\n .strict(),\n truncated: z.boolean(),\n })\n .strict();\n\nexport const WorkspaceStateKnowledgeBase = z\n .object({\n id: z.string().uuid(),\n name: z.string().min(1).max(WORKSPACE_STATE_BASE_NAME_MAX_CHARS),\n visibleDocumentCount: Count,\n statusCounts: WorkspaceStateDocumentStatusCounts,\n latestUpdatedAt: z.string().datetime().nullable(),\n })\n .strict();\n\nexport const WorkspaceStateTopic = z\n .object({\n name: z.string().min(1).max(WORKSPACE_STATE_TOPIC_MAX_CHARS),\n documentCount: Count,\n })\n .strict();\n\nexport const WorkspaceStateGapCode = z.enum([\n \"no_document_bases\",\n \"no_visible_documents\",\n \"failed_documents\",\n \"processing_documents\",\n \"missing_topic_coverage\",\n \"no_memory_records\",\n \"pending_memory_review\",\n \"partial_inventory\",\n]);\nexport type WorkspaceStateGapCode = z.infer<typeof WorkspaceStateGapCode>;\n\nexport const WorkspaceStateGap = z\n .object({\n code: WorkspaceStateGapCode,\n severity: z.enum([\"info\", \"warning\"]),\n relatedCount: Count.nullable(),\n })\n .strict();\nexport type WorkspaceStateGap = z.infer<typeof WorkspaceStateGap>;\n\nexport const WorkspaceStateKnowledgeAvailable = z\n .object({\n availability: z.literal(\"available\"),\n coverage: z.enum([\"complete\", \"partial\"]),\n baseCount: Count,\n bases: z.array(WorkspaceStateKnowledgeBase).max(WORKSPACE_STATE_MAX_BASES),\n basesTruncated: z.boolean(),\n inspectedVisibleDocumentCount: Count,\n documentStatusCounts: WorkspaceStateDocumentStatusCounts,\n sourceKindCounts: WorkspaceStateSourceKindCounts,\n authorityKindCounts: WorkspaceStateDocumentAuthorityKindCounts,\n topics: z.array(WorkspaceStateTopic).max(WORKSPACE_STATE_MAX_TOPICS),\n topicsTruncated: z.boolean(),\n latestDocumentUpdatedAt: z.string().datetime().nullable(),\n memorySample: z\n .object({\n recordCount: Count.max(WORKSPACE_STATE_MEMORY_SAMPLE_LIMIT),\n sampleLimit: z.literal(WORKSPACE_STATE_MEMORY_SAMPLE_LIMIT),\n limitReached: z.boolean(),\n statusCounts: WorkspaceStateMemoryStatusCounts,\n kindCounts: WorkspaceStateMemoryKindCounts,\n preferenceAuthority: z\n .object({\n kindCountSource: z.literal(\"knowledge_memories_legacy_observations\"),\n activeAuthority: z.literal(\"structured_preference_registry\"),\n })\n .strict(),\n latestUpdatedAt: z.string().datetime().nullable(),\n })\n .strict(),\n gaps: z.array(WorkspaceStateGap).max(WORKSPACE_STATE_MAX_GAPS),\n })\n .strict();\n\nexport const WorkspaceStateKnowledgeUnavailable = z\n .object({\n availability: z.literal(\"unavailable\"),\n reason: z.literal(\"missing_permission\"),\n requiredPermission: z.literal(\"documents:search\"),\n })\n .strict();\n\nexport const WorkspaceStateKnowledge = z.discriminatedUnion(\"availability\", [\n WorkspaceStateKnowledgeAvailable,\n WorkspaceStateKnowledgeUnavailable,\n]);\nexport type WorkspaceStateKnowledge = z.infer<typeof WorkspaceStateKnowledge>;\n\nexport const WorkspaceStateGovernanceDriftStatus = z.enum([\n \"identical\",\n \"changed\",\n \"superseded\",\n \"missing\",\n \"unavailable\",\n \"truncated\",\n]);\nexport type WorkspaceStateGovernanceDriftStatus = z.infer<\n typeof WorkspaceStateGovernanceDriftStatus\n>;\n\nconst WorkspaceStatePolicySnapshotAvailable = z\n .object({\n status: z.literal(\"available\"),\n id: z.string().uuid(),\n createdAt: z.string().datetime(),\n entryHash: z.string().regex(/^[0-9a-f]{64}$/),\n policyRole: WorkspaceInstructionPolicyRoleKey.nullable(),\n roleSource: WorkspaceInstructionPolicyRoleSource,\n entries: z.array(WorkspaceInstructionPolicySnapshotEntry).max(3),\n })\n .strict();\n\nconst WorkspaceStatePolicySnapshotMissing = z.object({ status: z.literal(\"missing\") }).strict();\n\nconst WorkspaceStatePreferenceSnapshotAvailable = z\n .object({\n status: z.literal(\"available\"),\n id: z.string().uuid(),\n createdAt: z.string().datetime(),\n descriptorHash: z.string().regex(/^[0-9a-f]{64}$/),\n descriptorCount: Count.max(64),\n truncated: z.boolean(),\n })\n .strict();\n\nconst WorkspaceStatePreferenceSnapshotMissing = z.object({ status: z.literal(\"missing\") }).strict();\n\nconst WorkspaceStateGovernanceDrift = z\n .object({\n overall: WorkspaceStateGovernanceDriftStatus,\n policy: z\n .object({\n status: WorkspaceStateGovernanceDriftStatus,\n snapshotHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n currentHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n snapshotTargetCount: Count,\n currentTargetCount: Count,\n })\n .strict(),\n preferences: z\n .object({\n status: WorkspaceStateGovernanceDriftStatus,\n snapshotHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n currentHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/)\n .nullable(),\n snapshotDescriptorCount: Count,\n currentDescriptorCount: Count,\n snapshotTruncated: z.boolean(),\n currentTruncated: z.boolean(),\n })\n .strict(),\n })\n .strict();\n\nexport const WorkspaceStateAttemptGovernance = z.discriminatedUnion(\"status\", [\n z.object({ status: z.literal(\"not_requested\") }).strict(),\n z\n .object({\n status: z.literal(\"unavailable\"),\n reason: z.literal(\"attempt_not_found_or_not_authorized\"),\n driftStatus: z.literal(\"unavailable\"),\n })\n .strict(),\n z\n .object({\n status: z.literal(\"available\"),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n acceptedAt: z.string().datetime(),\n policySnapshot: z.discriminatedUnion(\"status\", [\n WorkspaceStatePolicySnapshotAvailable,\n WorkspaceStatePolicySnapshotMissing,\n ]),\n preferenceSnapshot: z.discriminatedUnion(\"status\", [\n WorkspaceStatePreferenceSnapshotAvailable,\n WorkspaceStatePreferenceSnapshotMissing,\n ]),\n drift: WorkspaceStateGovernanceDrift,\n })\n .strict(),\n]);\nexport type WorkspaceStateAttemptGovernance = z.infer<typeof WorkspaceStateAttemptGovernance>;\n\nexport const WorkspaceStateResponse = z\n .object({\n workspaceId: z.string().uuid(),\n generatedAt: z.string().datetime(),\n truth: z\n .object({\n current: z\n .object({\n source: z.literal(\"read_time_projection\"),\n capturedAt: z.string().datetime(),\n })\n .strict(),\n attemptGovernance: WorkspaceStateAttemptGovernance,\n })\n .strict(),\n policy: WorkspaceStatePolicy,\n preferences: WorkspaceStatePreferences,\n knowledge: WorkspaceStateKnowledge,\n })\n .strict();\nexport type WorkspaceStateResponse = z.infer<typeof WorkspaceStateResponse>;\n\nexport const WorkspaceStateExportOmission = z.enum([\n \"hidden_platform_prompts\",\n \"policy_bodies\",\n \"preference_content\",\n \"document_content_and_private_metadata\",\n \"memory_content_and_provenance\",\n \"secret_values_and_credentials\",\n \"session_messages_and_tool_outputs\",\n]);\nexport type WorkspaceStateExportOmission = z.infer<typeof WorkspaceStateExportOmission>;\n\nexport const WorkspaceStateExportResponse = z\n .object({\n kind: z.literal(\"opengeni.workspace_state.sanitized_export\"),\n schemaVersion: z.literal(WORKSPACE_STATE_EXPORT_SCHEMA_VERSION),\n generatedAt: z.string().datetime(),\n stateSha256: z.string().regex(/^[0-9a-f]{64}$/),\n omissions: z.array(WorkspaceStateExportOmission).length(7),\n state: WorkspaceStateResponse,\n })\n .strict();\nexport type WorkspaceStateExportResponse = z.infer<typeof WorkspaceStateExportResponse>;\n","import { z } from \"zod\";\n\nexport const MODEL_CONTEXT_SNAPSHOT_VERSION = 1 as const;\nexport const MODEL_CONTEXT_INSTRUCTIONS_MAX_UTF8_BYTES = 8 * 1024 * 1024;\nexport const MODEL_CONTEXT_SNAPSHOT_MAX_UTF8_BYTES = 16 * 1024 * 1024;\nexport const MODEL_CONTEXT_LAYER_MAX_COUNT = 16;\nexport const MODEL_CONTEXT_TOOL_MAX_COUNT = 2_048;\nexport const MODEL_CONTEXT_SKILL_MAX_COUNT = 1_024;\n\nexport const ModelContextInstructionLayerId = z.enum([\n \"skill_catalog\",\n \"operational_contract\",\n \"persona_and_core\",\n \"workspace_governance\",\n \"session_instructions\",\n \"workspace_memory\",\n \"codemode\",\n \"git_bindings\",\n \"builtin_skills\",\n \"genesis_title\",\n \"sdk_capability_instructions\",\n \"sandbox_preamble\",\n \"sandbox_filesystem\",\n \"sent_system_instructions\",\n]);\nexport type ModelContextInstructionLayerId = z.infer<typeof ModelContextInstructionLayerId>;\n\nexport const ModelContextInstructionLayer = z\n .object({\n id: ModelContextInstructionLayerId,\n title: z.string().min(1).max(120),\n content: z.string(),\n utf8Bytes: z.number().int().nonnegative(),\n estimatedTokens: z.number().int().nonnegative(),\n })\n .strict();\nexport type ModelContextInstructionLayer = z.infer<typeof ModelContextInstructionLayer>;\n\nexport const ModelContextToolVisibility = z.enum([\"eager\", \"searchable\"]);\nexport type ModelContextToolVisibility = z.infer<typeof ModelContextToolVisibility>;\n\nexport const ModelContextTool = z\n .object({\n name: z.string().min(1).max(256),\n type: z.string().min(1).max(64),\n visibility: ModelContextToolVisibility,\n description: z.string().max(16_384).optional(),\n namespace: z.string().max(256).optional(),\n schema: z.unknown().optional(),\n utf8Bytes: z.number().int().nonnegative(),\n estimatedTokens: z.number().int().nonnegative(),\n })\n .strict();\nexport type ModelContextTool = z.infer<typeof ModelContextTool>;\n\nexport const ModelContextSkillKind = z.enum([\n \"preference_descriptor\",\n \"runtime_skill\",\n \"native_tool_skill\",\n]);\nexport type ModelContextSkillKind = z.infer<typeof ModelContextSkillKind>;\n\nexport const ModelContextSkill = z\n .object({\n kind: ModelContextSkillKind,\n name: z.string().min(1).max(128),\n description: z.string().max(8_192),\n source: z.string().max(64).optional(),\n path: z.string().max(1_024).optional(),\n })\n .strict();\nexport type ModelContextSkill = z.infer<typeof ModelContextSkill>;\n\nexport const ModelContextTokenCounts = z\n .object({\n instructions: z.number().int().nonnegative(),\n tools: z.number().int().nonnegative(),\n prefix: z.number().int().nonnegative(),\n })\n .strict();\nexport type ModelContextTokenCounts = z.infer<typeof ModelContextTokenCounts>;\n\nexport const ModelContextSnapshot = z\n .object({\n version: z.literal(MODEL_CONTEXT_SNAPSHOT_VERSION),\n capturedAt: z.string().datetime(),\n source: z.literal(\"model_request\"),\n requestIndex: z.number().int().nonnegative(),\n instructions: z.string(),\n // Absent on historical SDK-prefix captures. Never infer a wire payload.\n providerRequest: z\n .object({\n provider: z.string(),\n body: z.string().nullable(),\n unavailableReason: z.string().optional(),\n parts: z.array(\n z\n .object({\n key: z.string(),\n estimatedTokens: z.number().int().nonnegative().nullable(),\n utf8Bytes: z.number().int().nonnegative(),\n itemEstimatedTokens: z.array(z.number().int().nonnegative().nullable()).optional(),\n })\n .strict(),\n ),\n })\n .strict()\n .optional(),\n layers: z.array(ModelContextInstructionLayer).max(MODEL_CONTEXT_LAYER_MAX_COUNT),\n tools: z.array(ModelContextTool).max(MODEL_CONTEXT_TOOL_MAX_COUNT),\n skills: z.array(ModelContextSkill).max(MODEL_CONTEXT_SKILL_MAX_COUNT),\n tokens: ModelContextTokenCounts,\n })\n .strict();\nexport type ModelContextSnapshot = z.infer<typeof ModelContextSnapshot>;\n\nexport const SessionModelContextResponse = z\n .object({\n sessionId: z.string().uuid(),\n attemptId: z.string().uuid().nullable(),\n turnId: z.string().uuid().nullable(),\n snapshot: ModelContextSnapshot.nullable(),\n })\n .strict();\nexport type SessionModelContextResponse = z.infer<typeof SessionModelContextResponse>;\n","import { z } from \"zod\";\n\nexport const WORKSPACE_LEARNING_POLICY_MAX_SOURCE_OVERRIDES = 256;\nexport const WORKSPACE_LEARNING_POLICY_SOURCE_KIND_MAX_CHARS = 96;\nexport const WORKSPACE_LEARNING_POLICY_SOURCE_ID_MAX_CHARS = 1_024;\nexport const WORKSPACE_LEARNING_POLICY_REASON_MAX_CHARS = 4_096;\nexport const WORKSPACE_LEARNING_POLICY_DEFAULT_SUGGEST_REVISION_ID =\n \"workspace-learning-policy:default-suggest:v1\";\n\nexport const WorkspaceLearningMode = z.enum([\"off\", \"suggest\", \"automatic\"]);\nexport type WorkspaceLearningMode = z.infer<typeof WorkspaceLearningMode>;\n\nexport const WorkspaceLearningOverrideMode = z.enum([\"inherit\", \"off\", \"suggest\", \"automatic\"]);\nexport type WorkspaceLearningOverrideMode = z.infer<typeof WorkspaceLearningOverrideMode>;\n\nexport function normalizeWorkspaceLearningSourceKind(value: string): string {\n return value.normalize(\"NFKC\").trim().toLowerCase().replace(/\\s+/gu, \"-\").replace(/-+/g, \"-\");\n}\n\nexport const WorkspaceLearningSourceKind = z\n .string()\n .transform(normalizeWorkspaceLearningSourceKind)\n .pipe(\n z\n .string()\n .min(1)\n .max(WORKSPACE_LEARNING_POLICY_SOURCE_KIND_MAX_CHARS)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/),\n );\nexport type WorkspaceLearningSourceKind = z.infer<typeof WorkspaceLearningSourceKind>;\n\nexport const WorkspaceLearningSourceId = z\n .string()\n .min(1)\n .max(WORKSPACE_LEARNING_POLICY_SOURCE_ID_MAX_CHARS)\n .refine(\n (value) => value.trim() === value,\n \"learning source ids must not contain edge whitespace\",\n );\nexport type WorkspaceLearningSourceId = z.infer<typeof WorkspaceLearningSourceId>;\n\nexport const WorkspaceLearningSourceRef = z.object({\n kind: WorkspaceLearningSourceKind,\n id: WorkspaceLearningSourceId,\n});\nexport type WorkspaceLearningSourceRef = z.infer<typeof WorkspaceLearningSourceRef>;\n\nexport const WorkspaceLearningSourceOverrideInput = WorkspaceLearningSourceRef.extend({\n mode: WorkspaceLearningOverrideMode,\n});\nexport type WorkspaceLearningSourceOverrideInput = z.infer<\n typeof WorkspaceLearningSourceOverrideInput\n>;\n\nexport const WorkspaceLearningSourceOverride = WorkspaceLearningSourceRef.extend({\n mode: WorkspaceLearningMode,\n});\nexport type WorkspaceLearningSourceOverride = z.infer<typeof WorkspaceLearningSourceOverride>;\n\nexport const WorkspaceLearningSourceOverrides = z\n .array(WorkspaceLearningSourceOverride)\n .max(WORKSPACE_LEARNING_POLICY_MAX_SOURCE_OVERRIDES);\nexport type WorkspaceLearningSourceOverrides = z.infer<typeof WorkspaceLearningSourceOverrides>;\n\nexport function workspaceLearningSourceKey(source: WorkspaceLearningSourceRef): string {\n return `${source.kind}\\u0000${source.id}`;\n}\n\nfunction compareUtf8(left: string, right: string): number {\n const encoder = new TextEncoder();\n const leftBytes = encoder.encode(left);\n const rightBytes = encoder.encode(right);\n const length = Math.min(leftBytes.length, rightBytes.length);\n for (let index = 0; index < length; index += 1) {\n if (leftBytes[index] !== rightBytes[index]) return leftBytes[index]! - rightBytes[index]!;\n }\n return leftBytes.length - rightBytes.length;\n}\n\n/**\n * Canonicalize caller input before hashing or persistence. `inherit` is a\n * request-only reset operation: inherited entries are deliberately absent from\n * immutable revisions so the persisted policy stays sparse and transparent.\n */\nexport function canonicalizeWorkspaceLearningSourceOverrides(\n input: readonly WorkspaceLearningSourceOverrideInput[],\n): WorkspaceLearningSourceOverride[] {\n if (input.length > WORKSPACE_LEARNING_POLICY_MAX_SOURCE_OVERRIDES) {\n throw new Error(\n `workspace learning policy supports at most ${WORKSPACE_LEARNING_POLICY_MAX_SOURCE_OVERRIDES} source overrides`,\n );\n }\n const seen = new Set<string>();\n const canonical: WorkspaceLearningSourceOverride[] = [];\n for (const candidate of input) {\n const parsed = WorkspaceLearningSourceOverrideInput.parse(candidate);\n const key = workspaceLearningSourceKey(parsed);\n if (seen.has(key)) {\n throw new Error(`duplicate workspace learning source override: ${parsed.kind}/${parsed.id}`);\n }\n seen.add(key);\n if (parsed.mode !== \"inherit\") canonical.push(parsed as WorkspaceLearningSourceOverride);\n }\n canonical.sort((left, right) => {\n const kindOrder = compareUtf8(left.kind, right.kind);\n return kindOrder === 0 ? compareUtf8(left.id, right.id) : kindOrder;\n });\n return WorkspaceLearningSourceOverrides.parse(canonical);\n}\n\nconst revisionIdentityShape = {\n id: z.string().uuid(),\n revision: z.number().int().positive(),\n policyHash: z.string().regex(/^[0-9a-f]{64}$/),\n};\n\nexport const WorkspaceLearningPolicyRevisionIdentity = z.object(revisionIdentityShape);\nexport type WorkspaceLearningPolicyRevisionIdentity = z.infer<\n typeof WorkspaceLearningPolicyRevisionIdentity\n>;\n\nexport const WorkspaceLearningPolicyRevision = z.object({\n ...revisionIdentityShape,\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n workspaceMode: WorkspaceLearningMode,\n sourceOverrides: WorkspaceLearningSourceOverrides,\n supersedesRevisionId: z.string().uuid().nullable(),\n createdBySubjectId: z.string().min(1),\n createdAt: z.string().datetime(),\n});\nexport type WorkspaceLearningPolicyRevision = z.infer<typeof WorkspaceLearningPolicyRevision>;\n\nexport const WorkspaceLearningPolicyHead = z.object({\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n revisionId: z.string().uuid(),\n revision: z.number().int().positive(),\n policyHash: z.string().regex(/^[0-9a-f]{64}$/),\n activationVersion: z.number().int().positive(),\n activatedAt: z.string().datetime(),\n});\nexport type WorkspaceLearningPolicyHead = z.infer<typeof WorkspaceLearningPolicyHead>;\n\nexport const WorkspaceLearningPolicyActivationType = z.enum([\"activate\", \"rollback\"]);\nexport type WorkspaceLearningPolicyActivationType = z.infer<\n typeof WorkspaceLearningPolicyActivationType\n>;\n\nexport const WorkspaceLearningPolicyActivationEvent = z.object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n type: WorkspaceLearningPolicyActivationType,\n activationVersion: z.number().int().positive(),\n oldRevision: WorkspaceLearningPolicyRevisionIdentity.nullable(),\n newRevision: WorkspaceLearningPolicyRevisionIdentity,\n actorSubjectId: z.string().min(1),\n reason: z.string().min(1).max(WORKSPACE_LEARNING_POLICY_REASON_MAX_CHARS),\n createdAt: z.string().datetime(),\n});\nexport type WorkspaceLearningPolicyActivationEvent = z.infer<\n typeof WorkspaceLearningPolicyActivationEvent\n>;\n\nexport const WorkspaceLearningPolicySnapshot = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n revision: WorkspaceLearningPolicyRevisionIdentity.nullable(),\n activationVersion: z.number().int().nonnegative(),\n activatedAt: z.string().datetime().nullable(),\n workspaceMode: WorkspaceLearningMode,\n sourceOverrides: WorkspaceLearningSourceOverrides,\n snapshotHash: z.string().regex(/^[0-9a-f]{64}$/),\n createdAt: z.string().datetime(),\n});\nexport type WorkspaceLearningPolicySnapshot = z.infer<typeof WorkspaceLearningPolicySnapshot>;\n\nexport const WorkspaceLearningPolicyRouterContext = z.object({\n mode: WorkspaceLearningMode,\n snapshotId: z.string().uuid(),\n revisionId: z.string().min(1).max(512),\n});\nexport type WorkspaceLearningPolicyRouterContext = z.infer<\n typeof WorkspaceLearningPolicyRouterContext\n>;\n\nexport const WorkspaceLearningPolicyEffectiveMode = WorkspaceLearningPolicyRouterContext.extend({\n inherited: z.boolean(),\n source: WorkspaceLearningSourceRef,\n policyRevision: WorkspaceLearningPolicyRevisionIdentity.nullable(),\n activationVersion: z.number().int().nonnegative(),\n snapshotHash: z.string().regex(/^[0-9a-f]{64}$/),\n});\nexport type WorkspaceLearningPolicyEffectiveMode = z.infer<\n typeof WorkspaceLearningPolicyEffectiveMode\n>;\n\n/** Stable router seam: resolve only from an immutable accepted-attempt snapshot. */\nexport function resolveWorkspaceLearningPolicyEffectiveMode(\n snapshot: WorkspaceLearningPolicySnapshot,\n source: WorkspaceLearningSourceRef,\n): WorkspaceLearningPolicyEffectiveMode {\n const parsedSnapshot = WorkspaceLearningPolicySnapshot.parse(snapshot);\n const parsedSource = WorkspaceLearningSourceRef.parse(source);\n const override = parsedSnapshot.sourceOverrides.find(\n (candidate) => candidate.kind === parsedSource.kind && candidate.id === parsedSource.id,\n );\n return WorkspaceLearningPolicyEffectiveMode.parse({\n mode: override?.mode ?? parsedSnapshot.workspaceMode,\n inherited: override === undefined,\n source: parsedSource,\n policyRevision: parsedSnapshot.revision,\n activationVersion: parsedSnapshot.activationVersion,\n snapshotId: parsedSnapshot.id,\n revisionId:\n parsedSnapshot.revision?.id ?? WORKSPACE_LEARNING_POLICY_DEFAULT_SUGGEST_REVISION_ID,\n snapshotHash: parsedSnapshot.snapshotHash,\n });\n}\n\n/** Exact provider-neutral context consumed by the canonical durable-learning router. */\nexport function workspaceLearningPolicyRouterContext(\n effectiveMode: WorkspaceLearningPolicyEffectiveMode,\n): WorkspaceLearningPolicyRouterContext {\n return WorkspaceLearningPolicyRouterContext.parse(effectiveMode);\n}\n","import { z } from \"zod\";\nimport {\n GovernedLearningActivationReceipt,\n GovernedLearningActivationUndoReceipt,\n UndoGovernedLearningActivationRequest,\n} from \"./governed-learning-activation\";\nimport { GovernedLearningDecisionReceipt } from \"./governed-learning-evaluator\";\nimport {\n WorkspaceLearningMode,\n WorkspaceLearningPolicyActivationEvent,\n WorkspaceLearningPolicyHead,\n WorkspaceLearningPolicyRevision,\n WorkspaceLearningSourceOverrideInput,\n WORKSPACE_LEARNING_POLICY_REASON_MAX_CHARS,\n} from \"./workspace-learning-policy\";\n\nexport const WORKSPACE_LEARNING_HISTORY_MAX_ITEMS = 100;\n\nexport const WorkspaceLearningPolicyHistoryQuery = z.object({\n limit: z.coerce.number().int().min(1).max(WORKSPACE_LEARNING_HISTORY_MAX_ITEMS).default(50),\n});\nexport type WorkspaceLearningPolicyHistoryQuery = z.infer<\n typeof WorkspaceLearningPolicyHistoryQuery\n>;\n\nexport const CreateWorkspaceLearningPolicyRevisionRequest = z\n .object({\n operationId: z.string().uuid().optional(),\n workspaceMode: WorkspaceLearningMode,\n sourceOverrides: z.array(WorkspaceLearningSourceOverrideInput).optional().default([]),\n supersedesRevisionId: z.string().uuid().nullable().optional().default(null),\n })\n .strict();\nexport type CreateWorkspaceLearningPolicyRevisionRequest = z.infer<\n typeof CreateWorkspaceLearningPolicyRevisionRequest\n>;\n\nexport const ActivateWorkspaceLearningPolicyRevisionRequest = z\n .object({\n operationId: z.string().uuid().optional(),\n expectedCurrentRevisionId: z.string().uuid().nullable(),\n expectedActivationVersion: z.number().int().nonnegative(),\n reason: z.string().trim().min(1).max(WORKSPACE_LEARNING_POLICY_REASON_MAX_CHARS),\n })\n .strict();\nexport type ActivateWorkspaceLearningPolicyRevisionRequest = z.infer<\n typeof ActivateWorkspaceLearningPolicyRevisionRequest\n>;\n\nexport const RollbackWorkspaceLearningPolicyRevisionRequest =\n ActivateWorkspaceLearningPolicyRevisionRequest.extend({\n targetRevisionId: z.string().uuid(),\n expectedCurrentRevisionId: z.string().uuid(),\n }).strict();\nexport type RollbackWorkspaceLearningPolicyRevisionRequest = z.infer<\n typeof RollbackWorkspaceLearningPolicyRevisionRequest\n>;\n\nexport const WorkspaceLearningPolicyMutationResponse = z\n .object({\n head: WorkspaceLearningPolicyHead,\n event: WorkspaceLearningPolicyActivationEvent,\n })\n .strict();\nexport type WorkspaceLearningPolicyMutationResponse = z.infer<\n typeof WorkspaceLearningPolicyMutationResponse\n>;\n\nexport const UndoGovernedLearningActivationHttpRequest = UndoGovernedLearningActivationRequest.pick(\n { operationId: true },\n).partial();\nexport type UndoGovernedLearningActivationHttpRequest = z.infer<\n typeof UndoGovernedLearningActivationHttpRequest\n>;\n\nexport const WorkspaceLearningHistoryResponse = z\n .object({\n head: WorkspaceLearningPolicyHead.nullable(),\n revisions: z.array(WorkspaceLearningPolicyRevision),\n policyEvents: z.array(WorkspaceLearningPolicyActivationEvent),\n decisions: z.array(GovernedLearningDecisionReceipt),\n activations: z.array(GovernedLearningActivationReceipt),\n undos: z.array(GovernedLearningActivationUndoReceipt),\n truncated: z.boolean(),\n effectiveBoundary: z.literal(\"next_accepted_attempt\"),\n })\n .strict();\nexport type WorkspaceLearningHistoryResponse = z.infer<typeof WorkspaceLearningHistoryResponse>;\n","import { z } from \"zod\";\n\nconst sha256 = z.string().regex(/^[0-9a-f]{64}$/);\nconst boundedActor = z.string().trim().min(1).max(1_024);\n\nexport const GovernedLearningActivationDestination = z.enum([\"instruction_policy\", \"preference\"]);\nexport const GovernedLearningActivationAuthorityKind = z.enum([\"automatic\", \"human_confirmed\"]);\nexport type GovernedLearningActivationAuthorityKind = z.infer<\n typeof GovernedLearningActivationAuthorityKind\n>;\nexport type GovernedLearningActivationDestination = z.infer<\n typeof GovernedLearningActivationDestination\n>;\n\nexport const GovernedLearningActivationCaller = z\n .object({\n workspaceId: z.string().uuid(),\n subjectId: boundedActor,\n })\n .strict();\nexport type GovernedLearningActivationCaller = z.infer<typeof GovernedLearningActivationCaller>;\n\nexport const ActivateGovernedLearningDecisionRequest = z\n .object({\n operationId: z.string().uuid(),\n decisionReceiptId: z.string().uuid(),\n })\n .strict();\nexport type ActivateGovernedLearningDecisionRequest = z.infer<\n typeof ActivateGovernedLearningDecisionRequest\n>;\n\nexport const UndoGovernedLearningActivationRequest = z\n .object({\n operationId: z.string().uuid(),\n activationReceiptId: z.string().uuid(),\n })\n .strict();\nexport type UndoGovernedLearningActivationRequest = z.infer<\n typeof UndoGovernedLearningActivationRequest\n>;\n\nconst destinationBoundary = {\n destination: GovernedLearningActivationDestination,\n destinationProposalId: z.string().uuid(),\n destinationRevisionId: z.string().uuid(),\n destinationOldRevisionId: z.string().uuid().nullable(),\n destinationOldContentHash: sha256.nullable(),\n destinationOldVersion: z.number().int().nonnegative(),\n destinationNewContentHash: sha256,\n destinationNewVersion: z.number().int().positive(),\n destinationEventId: z.string().uuid(),\n};\n\n/**\n * Immutable content-free proof that one final automatic evaluator receipt was\n * revalidated and applied through the destination-owned lifecycle.\n */\nexport const GovernedLearningActivationReceipt = z\n .object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n inputHash: sha256,\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n decisionReceiptId: z.string().uuid(),\n initiatingHumanSubjectId: boundedActor,\n serviceActorSubjectId: boundedActor,\n policyRevisionId: z.string().uuid(),\n policyHash: sha256,\n policyActivationVersion: z.number().int().positive(),\n sourceKind: z.enum([\"scoped-knowledge-evidence\", \"task-note\"]),\n sourceId: z.string().uuid(),\n sourceAuthorityHash: sha256,\n proposalId: z.string().uuid(),\n claimId: z.string().uuid(),\n evidenceId: z.string().uuid(),\n knowledgePreviousReviewId: z.string().uuid(),\n knowledgePreviousReviewRevision: z.number().int().positive(),\n knowledgeApprovalReviewId: z.string().uuid(),\n knowledgeApprovalReviewRevision: z.number().int().positive(),\n knowledgeApprovalInputHash: sha256,\n ...destinationBoundary,\n outcome: z.literal(\"activated\"),\n effectiveAt: z.string().datetime(),\n /**\n * `automatic`: a final eligible evaluator receipt under an automatic policy.\n * `human_confirmed`: the exact initiating human answered the bound\n * `remember:<proposalId>` structured human-input question with `save`.\n */\n authorityKind: GovernedLearningActivationAuthorityKind,\n humanInputRequestId: z.string().uuid().nullable(),\n rollback: z\n .object({\n supported: z.literal(true),\n mechanism: z.literal(\"exact_head_and_latest_review\"),\n })\n .strict(),\n createdAt: z.string().datetime(),\n })\n .strict();\nexport type GovernedLearningActivationReceipt = z.infer<typeof GovernedLearningActivationReceipt>;\n\nexport const ActivateHumanConfirmedLearningDecisionRequest = z\n .object({\n operationId: z.string().uuid(),\n decisionReceiptId: z.string().uuid(),\n humanInputRequestId: z.string().uuid(),\n })\n .strict();\nexport type ActivateHumanConfirmedLearningDecisionRequest = z.infer<\n typeof ActivateHumanConfirmedLearningDecisionRequest\n>;\n\n/** Append-only compensation proof. Undo never deletes prior evidence. */\nexport const GovernedLearningActivationUndoReceipt = z\n .object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n inputHash: sha256,\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n activationReceiptId: z.string().uuid(),\n initiatingHumanSubjectId: boundedActor,\n serviceActorSubjectId: boundedActor,\n destination: GovernedLearningActivationDestination,\n knowledgeApprovalReviewId: z.string().uuid(),\n knowledgeRevocationReviewId: z.string().uuid(),\n knowledgeRevocationReviewRevision: z.number().int().positive(),\n knowledgeRevocationInputHash: sha256,\n destinationActivatedRevisionId: z.string().uuid(),\n destinationRestoredRevisionId: z.string().uuid().nullable(),\n destinationActivatedContentHash: sha256,\n destinationRestoredContentHash: sha256.nullable(),\n destinationOldVersion: z.number().int().positive(),\n destinationNewVersion: z.number().int().positive(),\n destinationEventId: z.string().uuid(),\n outcome: z.literal(\"undone\"),\n superseded: z.literal(false),\n effectiveAt: z.string().datetime(),\n createdAt: z.string().datetime(),\n })\n .strict();\nexport type GovernedLearningActivationUndoReceipt = z.infer<\n typeof GovernedLearningActivationUndoReceipt\n>;\n\n/**\n * Immutable content-free proof that the exact initiating human confirmed a\n * user-directed Knowledge claim (`remember` with lane `knowledge`) through the\n * bound structured human-input question, after which the claim's latest\n * `proposed` review was superseded by an `approved` service review.\n */\nexport const RememberKnowledgeConfirmationReceipt = z\n .object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n inputHash: sha256,\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n initiatingHumanSubjectId: boundedActor,\n serviceActorSubjectId: boundedActor,\n claimId: z.string().uuid(),\n evidenceId: z.string().uuid(),\n taskNoteId: z.string().uuid(),\n taskNoteTextHash: sha256,\n humanInputRequestId: z.string().uuid(),\n previousReviewId: z.string().uuid(),\n previousReviewRevision: z.number().int().positive(),\n approvalReviewId: z.string().uuid(),\n approvalReviewRevision: z.number().int().positive(),\n createdAt: z.string().datetime(),\n })\n .strict();\nexport type RememberKnowledgeConfirmationReceipt = z.infer<\n typeof RememberKnowledgeConfirmationReceipt\n>;\n\nexport const ConfirmRememberKnowledgeClaimRequest = z\n .object({\n operationId: z.string().uuid(),\n claimId: z.string().uuid(),\n humanInputRequestId: z.string().uuid(),\n })\n .strict();\nexport type ConfirmRememberKnowledgeClaimRequest = z.infer<\n typeof ConfirmRememberKnowledgeClaimRequest\n>;\n","import { z } from \"zod\";\nimport { WorkspaceLearningMode } from \"./workspace-learning-policy\";\n\n/**\n * Automatic is intentionally conservative in the first evaluator tranche.\n * This constant is platform-owned rather than caller-selectable so an agent or\n * connector cannot lower the admission floor inside one request.\n */\nexport const GOVERNED_LEARNING_AUTOMATIC_CONFIDENCE_FLOOR_BPS = 8_500;\nexport const GOVERNED_LEARNING_MAX_CONFLICT_COUNT = 1_000;\n\nexport const GovernedLearningDecisionOutcome = z.enum([\n \"off\",\n \"suggest\",\n \"automatic\",\n \"confidence\",\n \"conflict\",\n \"stale\",\n \"revoked\",\n]);\nexport type GovernedLearningDecisionOutcome = z.infer<typeof GovernedLearningDecisionOutcome>;\n\n/** Stable order used by TypeScript, SQL constraints, and public receipts. */\nexport const GOVERNED_LEARNING_REASON_ORDER = [\n \"policy_off\",\n \"evidence_revoked\",\n \"proposal_stale\",\n \"evidence_conflict\",\n \"confidence_below_floor\",\n \"policy_suggest\",\n \"policy_automatic\",\n] as const;\n\nexport const GovernedLearningDecisionReason = z.enum(GOVERNED_LEARNING_REASON_ORDER);\nexport type GovernedLearningDecisionReason = z.infer<typeof GovernedLearningDecisionReason>;\n\nexport const GovernedLearningDecisionFacts = z\n .object({\n effectiveMode: WorkspaceLearningMode,\n confidenceBps: z.number().int().min(0).max(10_000),\n conflictCount: z.number().int().min(0).max(GOVERNED_LEARNING_MAX_CONFLICT_COUNT),\n stale: z.boolean(),\n revoked: z.boolean(),\n })\n .strict();\nexport type GovernedLearningDecisionFacts = z.infer<typeof GovernedLearningDecisionFacts>;\n\nexport const GovernedLearningDecision = z\n .object({\n outcome: GovernedLearningDecisionOutcome,\n reasons: z\n .array(GovernedLearningDecisionReason)\n .min(1)\n .max(GOVERNED_LEARNING_REASON_ORDER.length),\n automaticEligible: z.boolean(),\n confidenceFloorBps: z.literal(GOVERNED_LEARNING_AUTOMATIC_CONFIDENCE_FLOOR_BPS),\n })\n .strict()\n .superRefine((decision, context) => {\n if (decision.automaticEligible !== (decision.outcome === \"automatic\")) {\n context.addIssue({\n code: \"custom\",\n path: [\"automaticEligible\"],\n message: \"automatic eligibility must exactly match the automatic outcome\",\n });\n }\n const indexes = decision.reasons.map((reason) =>\n GOVERNED_LEARNING_REASON_ORDER.indexOf(reason),\n );\n if (indexes.some((value, index) => index > 0 && value <= indexes[index - 1]!)) {\n context.addIssue({\n code: \"custom\",\n path: [\"reasons\"],\n message: \"governed-learning reasons must be unique and in canonical order\",\n });\n }\n });\nexport type GovernedLearningDecision = z.infer<typeof GovernedLearningDecision>;\n\nexport const GovernedLearningEvaluationAttempt = z\n .object({\n workspaceId: z.string().uuid(),\n subjectId: z.string().trim().min(1).max(1_024),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n })\n .strict();\nexport type GovernedLearningEvaluationAttempt = z.infer<typeof GovernedLearningEvaluationAttempt>;\n\nexport const EvaluateGovernedLearningProposalRequest = z\n .object({\n operationId: z.string().uuid(),\n policySnapshotId: z.string().uuid(),\n proposalId: z.string().uuid(),\n claimId: z.string().uuid(),\n evidenceId: z.string().uuid(),\n })\n .strict();\nexport type EvaluateGovernedLearningProposalRequest = z.infer<\n typeof EvaluateGovernedLearningProposalRequest\n>;\n\nconst sha256 = z.string().regex(/^[0-9a-f]{64}$/);\n\n/**\n * Content-free immutable evidence. Hashes and bounded enums identify exactly\n * what was evaluated without copying proposal, fact, citation, or note text.\n */\nexport const GovernedLearningDecisionReceipt = z\n .object({\n id: z.string().uuid(),\n operationId: z.string().uuid(),\n inputHash: sha256,\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n initiatingHumanSubjectId: z.string().min(1).max(1_024),\n policySnapshotId: z.string().uuid(),\n policySnapshotHash: sha256,\n policyRevisionId: z.string().uuid().nullable(),\n policyActivationVersion: z.number().int().nonnegative(),\n sourceKind: z.enum([\"scoped-knowledge-evidence\", \"task-note\"]),\n sourceId: z.string().uuid(),\n proposalId: z.string().uuid(),\n proposalInputHash: sha256,\n proposalContentHash: sha256,\n claimId: z.string().uuid(),\n claimInputHash: sha256,\n evidenceId: z.string().uuid(),\n evidenceInputHash: sha256,\n evidenceContentHash: sha256,\n evidenceAuthorityHash: sha256,\n reviewRevision: z.number().int().positive(),\n reviewState: z.enum([\"proposed\", \"approved\", \"rejected\", \"revoked\"]),\n effectiveMode: WorkspaceLearningMode,\n confidenceBps: z.number().int().min(0).max(10_000),\n conflictCount: z.number().int().min(0).max(GOVERNED_LEARNING_MAX_CONFLICT_COUNT),\n outcome: GovernedLearningDecisionOutcome,\n reasons: z\n .array(GovernedLearningDecisionReason)\n .min(1)\n .max(GOVERNED_LEARNING_REASON_ORDER.length),\n automaticEligible: z.boolean(),\n confidenceFloorBps: z.literal(GOVERNED_LEARNING_AUTOMATIC_CONFIDENCE_FLOOR_BPS),\n createdAt: z.string().datetime(),\n })\n .strict()\n .superRefine((receipt, context) => {\n const decision = GovernedLearningDecision.safeParse({\n outcome: receipt.outcome,\n reasons: receipt.reasons,\n automaticEligible: receipt.automaticEligible,\n confidenceFloorBps: receipt.confidenceFloorBps,\n });\n if (!decision.success) {\n for (const issue of decision.error.issues) {\n context.addIssue({ ...issue, path: issue.path });\n }\n }\n if (\n receipt.sourceKind === \"scoped-knowledge-evidence\" &&\n receipt.sourceId !== receipt.evidenceId\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"sourceId\"],\n message: \"scoped-Knowledge evaluation must use its exact evidence id as the source id\",\n });\n }\n });\nexport type GovernedLearningDecisionReceipt = z.infer<typeof GovernedLearningDecisionReceipt>;\n","import { z } from \"zod\";\n\nexport const PREFERENCE_REGISTRY_CONTENT_MAX_CHARS = 262_144;\nexport const PREFERENCE_REGISTRY_DESCRIPTOR_DESCRIPTION_MAX_CHARS = 1024;\nexport const PREFERENCE_REGISTRY_DESCRIPTOR_MAX_COUNT = 64;\nexport const PREFERENCE_REGISTRY_DESCRIPTOR_MAX_UTF8_BYTES = 16_384;\nexport const PREFERENCE_REGISTRY_REASON_MAX_CHARS = 4_096;\nexport const PREFERENCE_REGISTRY_SOURCE_ID_MAX_CHARS = 512;\nexport const PREFERENCE_REGISTRY_STABLE_KEY_MAX_CHARS = 96;\nexport const PREFERENCE_REGISTRY_TITLE_MAX_CHARS = 120;\n\nexport const PreferenceRegistryScope = z.enum([\"organization\", \"workspace\", \"user\"]);\nexport type PreferenceRegistryScope = z.infer<typeof PreferenceRegistryScope>;\n\nexport const PreferenceRegistryStatus = z.enum([\n \"proposed\",\n \"active\",\n \"inactive\",\n \"rejected\",\n \"superseded\",\n \"expired\",\n]);\nexport type PreferenceRegistryStatus = z.infer<typeof PreferenceRegistryStatus>;\n\nexport const PreferenceRegistryProvenanceSource = z.enum([\n \"human\",\n \"onboarding\",\n \"knowledge_proposal\",\n \"imported_document\",\n \"slack\",\n \"meeting_transcript\",\n \"call_transcript\",\n \"agent\",\n \"portable_skill\",\n]);\nexport type PreferenceRegistryProvenanceSource = z.infer<typeof PreferenceRegistryProvenanceSource>;\n\nexport const PreferenceRegistryTrust = z.enum([\n \"untrusted_proposal\",\n \"personal\",\n \"workspace_managed\",\n \"organization_managed\",\n]);\nexport type PreferenceRegistryTrust = z.infer<typeof PreferenceRegistryTrust>;\n\nexport const PreferenceRegistryConflictStrategy = z.enum([\"override\", \"merge\", \"reject\", \"inform\"]);\nexport type PreferenceRegistryConflictStrategy = z.infer<typeof PreferenceRegistryConflictStrategy>;\n\nexport const PreferenceRegistryEventType = z.enum([\n \"proposal_created\",\n \"activated\",\n \"corrected\",\n \"rejected\",\n \"deactivated\",\n \"superseded\",\n \"scope_changed\",\n]);\nexport type PreferenceRegistryEventType = z.infer<typeof PreferenceRegistryEventType>;\n\nexport const PreferenceRegistryStableKey = z\n .string()\n .min(1)\n .max(PREFERENCE_REGISTRY_STABLE_KEY_MAX_CHARS)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/);\nexport type PreferenceRegistryStableKey = z.infer<typeof PreferenceRegistryStableKey>;\n\nexport function normalizePreferenceRegistryStableKey(value: string): string {\n return value.normalize(\"NFKC\").trim().toLowerCase().replace(/\\s+/gu, \"-\").replace(/-+/g, \"-\");\n}\n\nconst RequestStableKey = z\n .string()\n .transform(normalizePreferenceRegistryStableKey)\n .pipe(PreferenceRegistryStableKey);\n\nconst hash = z.string().regex(/^[0-9a-f]{64}$/);\nconst boundedActor = z.string().trim().min(1).max(1_024);\nconst boundedReason = z.string().trim().min(1).max(PREFERENCE_REGISTRY_REASON_MAX_CHARS);\nconst descriptorText = z.string().min(1).max(PREFERENCE_REGISTRY_DESCRIPTOR_DESCRIPTION_MAX_CHARS);\n\nexport const PreferenceRegistryScopeTarget = z\n .object({\n scope: PreferenceRegistryScope,\n workspaceId: z.string().uuid().nullable(),\n subjectId: z.string().min(1).max(1_024).nullable(),\n })\n .superRefine((value, context) => {\n if (\n value.scope === \"organization\" &&\n (value.workspaceId !== null || value.subjectId !== null)\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"organization scope has no workspace or subject\",\n });\n }\n if (value.scope === \"workspace\" && (value.workspaceId === null || value.subjectId !== null)) {\n context.addIssue({ code: \"custom\", message: \"workspace scope requires only a workspace\" });\n }\n if (value.scope === \"user\" && (value.workspaceId !== null || value.subjectId === null)) {\n context.addIssue({ code: \"custom\", message: \"user scope requires only a subject\" });\n }\n });\nexport type PreferenceRegistryScopeTarget = z.infer<typeof PreferenceRegistryScopeTarget>;\n\nexport const PreferenceRegistryPrecedence = z.object({\n tier: PreferenceRegistryScope,\n rank: z.number().int().min(-1_000).max(1_000),\n conflictStrategy: PreferenceRegistryConflictStrategy,\n conflictsWith: z.array(PreferenceRegistryStableKey).max(32),\n});\nexport type PreferenceRegistryPrecedence = z.infer<typeof PreferenceRegistryPrecedence>;\n\nexport const PreferenceRegistryProvenance = z.object({\n source: PreferenceRegistryProvenanceSource,\n sourceId: z.string().min(1).max(PREFERENCE_REGISTRY_SOURCE_ID_MAX_CHARS).nullable(),\n trust: PreferenceRegistryTrust,\n});\nexport type PreferenceRegistryProvenance = z.infer<typeof PreferenceRegistryProvenance>;\n\nexport const PreferenceRegistryDescriptorProvenance = z.object({\n source: PreferenceRegistryProvenanceSource,\n sourceIdHash: hash.nullable(),\n trust: PreferenceRegistryTrust,\n});\nexport type PreferenceRegistryDescriptorProvenance = z.infer<\n typeof PreferenceRegistryDescriptorProvenance\n>;\n\nexport const PreferenceRegistryRevisionSummary = z.object({\n id: z.string().uuid(),\n preferenceId: z.string().uuid(),\n revision: z.number().int().positive(),\n contentHash: hash,\n title: z.string().min(1).max(PREFERENCE_REGISTRY_TITLE_MAX_CHARS),\n description: descriptorText,\n precedence: PreferenceRegistryPrecedence,\n provenance: PreferenceRegistryProvenance,\n expiresAt: z.string().datetime().nullable(),\n correctsRevisionId: z.string().uuid().nullable(),\n createdBySubjectId: boundedActor,\n createdAt: z.string().datetime(),\n});\nexport type PreferenceRegistryRevisionSummary = z.infer<typeof PreferenceRegistryRevisionSummary>;\n\nexport const PreferenceRegistryRecord = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n stableKey: PreferenceRegistryStableKey,\n target: PreferenceRegistryScopeTarget,\n status: PreferenceRegistryStatus,\n scopeVersion: z.number().int().positive(),\n activationVersion: z.number().int().nonnegative(),\n activeRevision: PreferenceRegistryRevisionSummary.nullable(),\n supersededByPreferenceId: z.string().uuid().nullable(),\n createdBySubjectId: boundedActor,\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type PreferenceRegistryRecord = z.infer<typeof PreferenceRegistryRecord>;\n\nexport const PreferenceRegistryEvent = z.object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n preferenceId: z.string().uuid(),\n type: PreferenceRegistryEventType,\n version: z.number().int().positive(),\n oldRevisionId: z.string().uuid().nullable(),\n newRevisionId: z.string().uuid().nullable(),\n oldTarget: PreferenceRegistryScopeTarget.nullable(),\n newTarget: PreferenceRegistryScopeTarget.nullable(),\n relatedPreferenceId: z.string().uuid().nullable(),\n actorSubjectId: boundedActor,\n reason: boundedReason,\n createdAt: z.string().datetime(),\n});\nexport type PreferenceRegistryEvent = z.infer<typeof PreferenceRegistryEvent>;\n\nexport const PreferenceRegistryActivationAuthority = z.enum([\"human_confirmed\", \"automatic\"]);\nexport type PreferenceRegistryActivationAuthority = z.infer<\n typeof PreferenceRegistryActivationAuthority\n>;\n\nexport const PreferenceRegistryDescriptor = z.object({\n id: z.string().uuid(),\n stableKey: PreferenceRegistryStableKey,\n title: z.string().min(1).max(PREFERENCE_REGISTRY_TITLE_MAX_CHARS),\n description: descriptorText,\n scope: PreferenceRegistryScope,\n activeVersion: z.number().int().positive(),\n revisionId: z.string().uuid(),\n contentHash: hash,\n precedence: PreferenceRegistryPrecedence,\n provenance: PreferenceRegistryDescriptorProvenance,\n // How the active revision became active, derived from the governed-learning\n // activation receipt rather than stored on the revision. `provenance.trust`\n // stays the frozen creation-time fact - a revision proposed by an agent is\n // `untrusted_proposal` forever, which is correct and immutable - while this\n // says whether a human explicitly confirmed the activation or policy\n // activated it automatically. Null when the revision became active outside\n // governed learning, so no receipt describes it.\n // Defaulted, not merely nullable: snapshots written before this field\n // existed are immutable and their stored JSON simply has no answer. Parsing\n // those as null is the truthful reading, and it keeps their pinned\n // descriptor hash valid because the stored text is untouched.\n activationAuthority: PreferenceRegistryActivationAuthority.nullable().default(null),\n expiresAt: z.string().datetime().nullable(),\n retrievalHandle: z.string().min(1).max(512),\n});\nexport type PreferenceRegistryDescriptor = z.infer<typeof PreferenceRegistryDescriptor>;\n\nexport const PreferenceRegistrySnapshot = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n initiatingHumanSubjectId: boundedActor,\n descriptorHash: hash,\n descriptors: z.array(PreferenceRegistryDescriptor).max(PREFERENCE_REGISTRY_DESCRIPTOR_MAX_COUNT),\n truncated: z.boolean(),\n createdAt: z.string().datetime(),\n});\nexport type PreferenceRegistrySnapshot = z.infer<typeof PreferenceRegistrySnapshot>;\n\nexport const PreferenceRegistryFullContent = z.object({\n descriptor: PreferenceRegistryDescriptor,\n content: z.string().min(1).max(PREFERENCE_REGISTRY_CONTENT_MAX_CHARS),\n});\nexport type PreferenceRegistryFullContent = z.infer<typeof PreferenceRegistryFullContent>;\n\nconst revisionInput = {\n title: z.string().trim().min(1).max(PREFERENCE_REGISTRY_TITLE_MAX_CHARS),\n description: z.string().trim().min(1).max(PREFERENCE_REGISTRY_DESCRIPTOR_DESCRIPTION_MAX_CHARS),\n content: z\n .string()\n .min(1)\n .max(PREFERENCE_REGISTRY_CONTENT_MAX_CHARS)\n .refine((value) => value.trim().length > 0, \"preference content must not be blank\"),\n precedenceRank: z.number().int().min(-1_000).max(1_000).default(0),\n conflictStrategy: PreferenceRegistryConflictStrategy.default(\"override\"),\n conflictsWith: z.array(RequestStableKey).max(32).default([]),\n expiresAt: z.string().datetime({ offset: true }).nullable().default(null),\n};\n\nconst importedSources = new Set<PreferenceRegistryProvenanceSource>([\n \"knowledge_proposal\",\n \"imported_document\",\n \"slack\",\n \"meeting_transcript\",\n \"call_transcript\",\n]);\n\nexport const CreatePreferenceRegistryProposalRequest = z\n .object({\n stableKey: RequestStableKey,\n scope: PreferenceRegistryScope,\n ...revisionInput,\n provenanceSource: PreferenceRegistryProvenanceSource.default(\"human\"),\n provenanceSourceId: z\n .string()\n .min(1)\n .max(PREFERENCE_REGISTRY_SOURCE_ID_MAX_CHARS)\n .nullable()\n .default(null),\n })\n .superRefine((value, context) => {\n if (importedSources.has(value.provenanceSource) && value.provenanceSourceId === null) {\n context.addIssue({\n code: \"custom\",\n path: [\"provenanceSourceId\"],\n message: \"imported preference proposals require a provenance source id\",\n });\n }\n });\nexport type CreatePreferenceRegistryProposalRequest = z.infer<\n typeof CreatePreferenceRegistryProposalRequest\n>;\n\nexport const ActivatePreferenceRegistryRevisionRequest = z.object({\n revisionId: z.string().uuid(),\n expectedCurrentRevisionId: z.string().uuid().nullable(),\n expectedScopeVersion: z.number().int().positive(),\n reason: boundedReason,\n});\nexport type ActivatePreferenceRegistryRevisionRequest = z.infer<\n typeof ActivatePreferenceRegistryRevisionRequest\n>;\n\nexport const CorrectPreferenceRegistryRequest = z.object({\n expectedCurrentRevisionId: z.string().uuid(),\n expectedScopeVersion: z.number().int().positive(),\n ...revisionInput,\n reason: boundedReason,\n});\nexport type CorrectPreferenceRegistryRequest = z.infer<typeof CorrectPreferenceRegistryRequest>;\n\nexport const DeactivatePreferenceRegistryRequest = z.object({\n expectedCurrentRevisionId: z.string().uuid(),\n expectedScopeVersion: z.number().int().positive(),\n reason: boundedReason,\n});\nexport type DeactivatePreferenceRegistryRequest = z.infer<\n typeof DeactivatePreferenceRegistryRequest\n>;\n\nexport const ChangePreferenceRegistryScopeRequest = z.object({\n scope: PreferenceRegistryScope,\n expectedScopeVersion: z.number().int().positive(),\n reason: boundedReason,\n});\nexport type ChangePreferenceRegistryScopeRequest = z.infer<\n typeof ChangePreferenceRegistryScopeRequest\n>;\n\nexport const SupersedePreferenceRegistryRequest = z.object({\n replacementPreferenceId: z.string().uuid(),\n expectedCurrentRevisionId: z.string().uuid(),\n expectedScopeVersion: z.number().int().positive(),\n reason: boundedReason,\n});\nexport type SupersedePreferenceRegistryRequest = z.infer<typeof SupersedePreferenceRegistryRequest>;\n\nexport const RejectPreferenceRegistryProposalRequest = z.object({\n revisionId: z.string().uuid(),\n expectedScopeVersion: z.number().int().positive(),\n reason: boundedReason,\n});\nexport type RejectPreferenceRegistryProposalRequest = z.infer<\n typeof RejectPreferenceRegistryProposalRequest\n>;\n\nexport const PreferenceRegistryListQuery = z.object({\n scope: PreferenceRegistryScope.optional(),\n status: PreferenceRegistryStatus.optional(),\n limit: z.coerce.number().int().min(1).max(100).default(50),\n});\nexport type PreferenceRegistryListQuery = z.infer<typeof PreferenceRegistryListQuery>;\n\nexport const PreferenceRegistryListResponse = z.object({\n preferences: z.array(PreferenceRegistryRecord),\n});\nexport type PreferenceRegistryListResponse = z.infer<typeof PreferenceRegistryListResponse>;\n\nexport const PreferenceRegistryDetailResponse = z.object({\n preference: PreferenceRegistryRecord,\n revisions: z.array(PreferenceRegistryRevisionSummary),\n events: z.array(PreferenceRegistryEvent),\n});\nexport type PreferenceRegistryDetailResponse = z.infer<typeof PreferenceRegistryDetailResponse>;\n\nexport const PreferenceRegistryMutationResponse = z.object({\n preference: PreferenceRegistryRecord,\n event: PreferenceRegistryEvent,\n});\nexport type PreferenceRegistryMutationResponse = z.infer<typeof PreferenceRegistryMutationResponse>;\n\nexport const PreferenceRegistryConflictResponse = z.object({\n code: z.literal(\"PREFERENCE_REGISTRY_CONFLICT\"),\n message: z.string(),\n currentRevisionId: z.string().uuid().nullable(),\n scopeVersion: z.number().int().positive().nullable(),\n});\nexport type PreferenceRegistryConflictResponse = z.infer<typeof PreferenceRegistryConflictResponse>;\n\nexport const PreferenceRegistryFullContentRequest = z.object({\n retrievalHandle: z.string().min(1).max(512),\n});\nexport type PreferenceRegistryFullContentRequest = z.infer<\n typeof PreferenceRegistryFullContentRequest\n>;\n","import { z } from \"zod\";\nimport {\n AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_MAX_CHARS,\n AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_TOO_LONG_MESSAGE,\n AGENT_AUTHORED_PREFERENCE_CONTENT_MAX_CHARS,\n AGENT_AUTHORED_PREFERENCE_CONTENT_TOO_LONG_MESSAGE,\n} from \"./agent-authored-durable-text\";\nimport {\n PREFERENCE_REGISTRY_DESCRIPTOR_DESCRIPTION_MAX_CHARS,\n PREFERENCE_REGISTRY_STABLE_KEY_MAX_CHARS,\n PREFERENCE_REGISTRY_TITLE_MAX_CHARS,\n PreferenceRegistryConflictStrategy,\n PreferenceRegistryStableKey,\n} from \"./preference-registry\";\nimport { GovernedLearningActivationDestination } from \"./governed-learning-activation\";\nimport {\n GovernedLearningDecisionOutcome,\n GovernedLearningDecisionReason,\n} from \"./governed-learning-evaluator\";\nimport { WorkspaceInstructionPolicyTarget } from \"./workspace-instruction-policies\";\nimport { WorkspaceLearningPolicyEffectiveMode } from \"./workspace-learning-policy\";\n\nconst boundedReason = z.string().trim().min(1).max(4_096);\nconst operationId = z.string().uuid();\nconst exactEvidence = {\n claimId: z.string().uuid(),\n evidenceId: z.string().uuid(),\n};\n\n/** Exact accepted-attempt authority. It is validated again inside the write transaction. */\nexport const CompanyBrainGovernedWriteAttempt = z\n .object({\n accountId: z.string().uuid(),\n workspaceId: z.string().uuid(),\n sessionId: z.string().uuid(),\n turnId: z.string().uuid(),\n attemptId: z.string().uuid(),\n executionGeneration: z.number().int().positive(),\n })\n .strict();\nexport type CompanyBrainGovernedWriteAttempt = z.infer<typeof CompanyBrainGovernedWriteAttempt>;\n\nexport const ProposeWorkspaceKnowledgeClaimRequest = z\n .object({\n kind: z.literal(\"propose_knowledge\"),\n operationId,\n ...exactEvidence,\n reason: boundedReason,\n })\n .strict();\nexport type ProposeWorkspaceKnowledgeClaimRequest = z.infer<\n typeof ProposeWorkspaceKnowledgeClaimRequest\n>;\n\nexport const CorrectWorkspaceKnowledgeClaimRequest = z\n .object({\n kind: z.literal(\"correct_knowledge\"),\n operationId,\n ...exactEvidence,\n replacesClaimId: z.string().uuid(),\n reason: boundedReason,\n })\n .strict();\nexport type CorrectWorkspaceKnowledgeClaimRequest = z.infer<\n typeof CorrectWorkspaceKnowledgeClaimRequest\n>;\n\n/**\n * Promote one still-active task-tree note into a normalized, workspace-local\n * Knowledge claim proposal. The note text is the exact fact value and source\n * evidence; callers may describe the subject and predicate but cannot widen\n * authority or supply replacement source bytes.\n */\nexport const PromoteTaskNoteKnowledgeRequest = z\n .object({\n kind: z.literal(\"promote_task_note_knowledge\"),\n operationId,\n noteId: z.string().uuid(),\n expectedNoteVersion: z.literal(1),\n entityType: z\n .string()\n .trim()\n .min(1)\n .max(96)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/),\n normalizedKey: z.string().trim().min(1).max(512),\n displayName: z.string().trim().min(1).max(512),\n predicateKey: z\n .string()\n .trim()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/),\n confidenceBps: z.number().int().min(0).max(10_000),\n reason: boundedReason,\n })\n .strict();\nexport type PromoteTaskNoteKnowledgeRequest = z.infer<typeof PromoteTaskNoteKnowledgeRequest>;\n\n/**\n * Promote the exact immutable Task-note bytes into an inactive mandatory-rule\n * draft. The caller selects only the governed target and active-head baseline;\n * it cannot replace the source content or activate the draft.\n */\nexport const PromoteTaskNoteInstructionPolicyRequest = z\n .strictObject({\n kind: z.literal(\"promote_task_note_instruction_policy\"),\n operationId,\n noteId: z.string().uuid(),\n expectedNoteVersion: z.literal(1),\n entityType: z\n .string()\n .trim()\n .min(1)\n .max(96)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/),\n normalizedKey: z.string().trim().min(1).max(512),\n displayName: z.string().trim().min(1).max(512),\n predicateKey: z\n .string()\n .trim()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/),\n confidenceBps: z.number().int().min(0).max(10_000),\n target: WorkspaceInstructionPolicyTarget,\n expectedCurrentRevisionId: z.string().uuid().nullable(),\n expectedActivationVersion: z.number().int().nonnegative(),\n reason: boundedReason,\n })\n .superRefine((value, context) => {\n const target = WorkspaceInstructionPolicyTarget.safeParse(value.target);\n if (!target.success) {\n for (const issue of target.error.issues) {\n context.addIssue({ ...issue, path: [\"target\", ...issue.path] });\n }\n }\n });\nexport type PromoteTaskNoteInstructionPolicyRequest = z.infer<\n typeof PromoteTaskNoteInstructionPolicyRequest\n>;\n\n/**\n * Promote the exact immutable Task-note bytes into an inactive workspace\n * preference proposal. Descriptor metadata is caller-supplied and bounded,\n * while the full proposal content always comes from the admitted note.\n */\nexport const PromoteTaskNotePreferenceRequest = z.strictObject({\n kind: z.literal(\"promote_task_note_preference\"),\n operationId,\n noteId: z.string().uuid(),\n expectedNoteVersion: z.literal(1),\n entityType: z\n .string()\n .trim()\n .min(1)\n .max(96)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/),\n normalizedKey: z.string().trim().min(1).max(512),\n displayName: z.string().trim().min(1).max(512),\n predicateKey: z\n .string()\n .trim()\n .min(1)\n .max(128)\n .regex(/^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/),\n confidenceBps: z.number().int().min(0).max(10_000),\n stableKey: PreferenceRegistryStableKey.max(PREFERENCE_REGISTRY_STABLE_KEY_MAX_CHARS),\n title: z.string().trim().min(1).max(PREFERENCE_REGISTRY_TITLE_MAX_CHARS),\n description: z.string().trim().min(1).max(PREFERENCE_REGISTRY_DESCRIPTOR_DESCRIPTION_MAX_CHARS),\n precedenceRank: z.number().int().min(-1_000).max(1_000).default(0),\n conflictStrategy: PreferenceRegistryConflictStrategy.default(\"override\"),\n conflictsWith: z.array(PreferenceRegistryStableKey).max(32).default([]),\n expiresAt: z.string().datetime({ offset: true }).nullable().default(null),\n reason: boundedReason,\n});\nexport type PromoteTaskNotePreferenceRequest = z.infer<typeof PromoteTaskNotePreferenceRequest>;\n\nexport const ProposeWorkspaceInstructionPolicyRequest = z\n .strictObject({\n kind: z.literal(\"propose_instruction_policy\"),\n operationId,\n ...exactEvidence,\n target: WorkspaceInstructionPolicyTarget,\n // Agent-authored: this draft becomes prompt text in every session once a\n // human activates it, so it is bounded far below the human editor limit.\n content: z\n .string()\n .min(1)\n .max(\n AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_MAX_CHARS,\n AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_TOO_LONG_MESSAGE,\n )\n .refine((value) => value.trim().length > 0, \"instruction proposal must not be blank\"),\n expectedCurrentRevisionId: z.string().uuid().nullable(),\n expectedActivationVersion: z.number().int().nonnegative(),\n reason: boundedReason,\n })\n .superRefine((value, context) => {\n const target = WorkspaceInstructionPolicyTarget.safeParse(value.target);\n if (!target.success) {\n for (const issue of target.error.issues) {\n context.addIssue({ ...issue, path: [\"target\", ...issue.path] });\n }\n }\n });\nexport type ProposeWorkspaceInstructionPolicyRequest = z.infer<\n typeof ProposeWorkspaceInstructionPolicyRequest\n>;\n\nexport const ProposeWorkspacePreferenceRequest = z.strictObject({\n kind: z.literal(\"propose_preference\"),\n operationId,\n ...exactEvidence,\n stableKey: PreferenceRegistryStableKey.max(PREFERENCE_REGISTRY_STABLE_KEY_MAX_CHARS),\n title: z.string().trim().min(1).max(PREFERENCE_REGISTRY_TITLE_MAX_CHARS),\n description: z.string().trim().min(1).max(PREFERENCE_REGISTRY_DESCRIPTOR_DESCRIPTION_MAX_CHARS),\n // Agent-authored: the descriptor pair is prompt-composed in every session and\n // the content is retrieved on demand, so it stays short.\n content: z\n .string()\n .min(1)\n .max(\n AGENT_AUTHORED_PREFERENCE_CONTENT_MAX_CHARS,\n AGENT_AUTHORED_PREFERENCE_CONTENT_TOO_LONG_MESSAGE,\n )\n .refine((value) => value.trim().length > 0, \"preference proposal must not be blank\"),\n precedenceRank: z.number().int().min(-1_000).max(1_000).default(0),\n conflictStrategy: PreferenceRegistryConflictStrategy.default(\"override\"),\n conflictsWith: z.array(PreferenceRegistryStableKey).max(32).default([]),\n expiresAt: z.string().datetime({ offset: true }).nullable().default(null),\n reason: boundedReason,\n});\nexport type ProposeWorkspacePreferenceRequest = z.infer<typeof ProposeWorkspacePreferenceRequest>;\n\n/**\n * Destination selection is explicit and structured. There is deliberately no\n * generic \"remember\" operation, classifier, personal scope, or active authority.\n */\nexport const CompanyBrainGovernedWriteRequest = z.discriminatedUnion(\"kind\", [\n ProposeWorkspaceKnowledgeClaimRequest,\n CorrectWorkspaceKnowledgeClaimRequest,\n PromoteTaskNoteKnowledgeRequest,\n PromoteTaskNoteInstructionPolicyRequest,\n PromoteTaskNotePreferenceRequest,\n ProposeWorkspaceInstructionPolicyRequest,\n ProposeWorkspacePreferenceRequest,\n]);\nexport type CompanyBrainGovernedWriteRequest = z.infer<typeof CompanyBrainGovernedWriteRequest>;\n\nexport const CompanyBrainGovernedWriteDestination = z.enum([\n \"knowledge\",\n \"instruction_policy\",\n \"preference\",\n]);\nexport type CompanyBrainGovernedWriteDestination = z.infer<\n typeof CompanyBrainGovernedWriteDestination\n>;\n\nexport const CompanyBrainGovernedWriteReceipt = z.object({\n operationId,\n inputHash: z.string().regex(/^[0-9a-f]{64}$/),\n workspaceId: z.string().uuid(),\n destination: CompanyBrainGovernedWriteDestination,\n outcome: z.literal(\"proposed\"),\n claimId: z.string().uuid(),\n evidenceId: z.string().uuid(),\n relationId: z.string().uuid().nullable(),\n reviewId: z.string().uuid().nullable(),\n knowledgeChangeProposalId: z.string().uuid().nullable(),\n destinationProposalId: z.string().uuid().nullable(),\n destinationRevisionId: z.string().uuid().nullable(),\n taskNoteSource: z\n .object({\n noteId: z.string().uuid(),\n rootSessionId: z.string().uuid(),\n noteVersion: z.literal(1),\n textHash: z.string().regex(/^[0-9a-f]{64}$/),\n })\n .nullable()\n .optional(),\n effectiveBoundary: z.literal(\"human_review_required\"),\n rollback: z.object({\n supported: z.literal(false),\n mechanism: z.literal(\"not_applicable_proposal_only\"),\n }),\n});\nexport type CompanyBrainGovernedWriteReceipt = z.infer<typeof CompanyBrainGovernedWriteReceipt>;\n\n/**\n * Policy routing is deliberately separate from destination admission. The\n * immutable accepted-attempt snapshot decides whether derived evidence may\n * create a proposal; the destination still owns activation and rollback.\n */\nexport const CompanyBrainLearningPolicyDecision = z.enum([\n \"blocked\",\n \"proposal_created\",\n \"activation_requested\",\n \"activated\",\n]);\nexport type CompanyBrainLearningPolicyDecision = z.infer<typeof CompanyBrainLearningPolicyDecision>;\n\n/**\n * Content-free summary of the governed-learning decision receipt recorded for\n * a Ways-of-working proposal (instruction policy or preference). Knowledge\n * destinations create no `knowledge_change_proposals` row and are therefore\n * never evaluated; they report `null`.\n */\nexport const CompanyBrainLearningDecisionSummary = z.object({\n receiptId: z.string().uuid(),\n outcome: GovernedLearningDecisionOutcome,\n automaticEligible: z.boolean(),\n reasons: z.array(GovernedLearningDecisionReason).max(16),\n});\nexport type CompanyBrainLearningDecisionSummary = z.infer<\n typeof CompanyBrainLearningDecisionSummary\n>;\n\n/**\n * Bounded, content-free reason why evaluation or activation did not complete.\n * The proposal write itself remains durable regardless.\n */\nexport const CompanyBrainLearningStepFailure = z.object({\n stage: z.enum([\"evaluation\", \"activation\"]),\n code: z.enum([\"authority\", \"conflict\", \"invalid_operation\", \"unavailable\"]),\n});\nexport type CompanyBrainLearningStepFailure = z.infer<typeof CompanyBrainLearningStepFailure>;\n\nexport const CompanyBrainLearningPolicyRouteReceipt = z.object({\n operationId,\n workspaceId: z.string().uuid(),\n effectivePolicy: WorkspaceLearningPolicyEffectiveMode,\n decision: CompanyBrainLearningPolicyDecision,\n write: CompanyBrainGovernedWriteReceipt.nullable(),\n learning: CompanyBrainLearningDecisionSummary.nullable().default(null),\n learningFailure: CompanyBrainLearningStepFailure.nullable().default(null),\n activation: z.object({\n requested: z.boolean(),\n activated: z.boolean(),\n boundary: z.enum([\n \"policy_off\",\n \"human_review\",\n \"destination_authority\",\n \"not_eligible\",\n \"human_activation_required\",\n \"activated\",\n ]),\n receiptId: z.string().uuid().nullable().default(null),\n destination: GovernedLearningActivationDestination.nullable().default(null),\n destinationRevisionId: z.string().uuid().nullable().default(null),\n effectiveAt: z.string().datetime().nullable().default(null),\n }),\n});\nexport type CompanyBrainLearningPolicyRouteReceipt = z.infer<\n typeof CompanyBrainLearningPolicyRouteReceipt\n>;\n","import { z } from \"zod\";\n\nexport const TASK_NOTE_TEXT_MAX_BYTES = 4_096;\nexport const TASK_NOTE_REASON_MAX_BYTES = 2_048;\nexport const TASK_NOTE_MAX_LIFETIME_DAYS = 90;\nexport const TASK_NOTE_ACTIVE_RECORD_CAP = 500;\nexport const TASK_NOTE_LIST_DEFAULT_LIMIT = 10;\nexport const TASK_NOTE_LIST_MAX_LIMIT = 20;\nexport const TASK_NOTE_LIST_RESPONSE_MAX_BYTES = 96 * 1_024;\n\nconst utf8Bytes = (value: string): number => new TextEncoder().encode(value).byteLength;\n\nexport function boundedTaskNoteText(maxBytes: number, label: string) {\n return z\n .string()\n .min(1)\n .superRefine((value, ctx) => {\n if (value !== value.trim()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${label} must not have leading or trailing whitespace`,\n });\n }\n if (utf8Bytes(value) > maxBytes) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${label} must be at most ${maxBytes} UTF-8 bytes`,\n });\n }\n });\n}\n\nexport const TaskNoteText = boundedTaskNoteText(TASK_NOTE_TEXT_MAX_BYTES, \"task note text\");\nexport const TaskNoteReason = boundedTaskNoteText(\n TASK_NOTE_REASON_MAX_BYTES,\n \"task note archive reason\",\n);\n\nexport const TaskNoteKind = z.enum([\n \"finding\",\n \"decision\",\n \"blocker\",\n \"ownership\",\n \"artifact\",\n \"handoff\",\n]);\nexport type TaskNoteKind = z.infer<typeof TaskNoteKind>;\n\nexport const TaskNoteStatus = z.enum([\"active\", \"archived\"]);\nexport type TaskNoteStatus = z.infer<typeof TaskNoteStatus>;\n\nexport const TaskNoteActorKind = z.enum([\"human\", \"service\"]);\nexport type TaskNoteActorKind = z.infer<typeof TaskNoteActorKind>;\n\nexport const TaskNote = z.object({\n id: z.string().uuid(),\n rootSessionId: z.string().uuid(),\n kind: TaskNoteKind,\n text: TaskNoteText,\n status: TaskNoteStatus,\n version: z.number().int().positive(),\n expiresAt: z.string().datetime({ offset: true }),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n archivedAt: z.string().datetime({ offset: true }).nullable(),\n provenance: z.object({\n actorKind: TaskNoteActorKind,\n sourceSessionId: z.string().uuid(),\n sourceTurnId: z.string().uuid(),\n }),\n});\nexport type TaskNote = z.infer<typeof TaskNote>;\n\nexport const TaskNoteMutationResult = z.object({\n note: TaskNote,\n replayed: z.boolean(),\n});\nexport type TaskNoteMutationResult = z.infer<typeof TaskNoteMutationResult>;\n\n/** Atomic correction lineage: archive one exact v1 note and create one v1 replacement. */\nexport const TaskNoteReplacementResult = z.object({\n operationId: z.string().uuid(),\n inputHash: z.string().regex(/^[0-9a-f]{64}$/),\n replaces: z.object({\n noteId: z.string().uuid(),\n archivedVersion: z.literal(2),\n }),\n replacement: TaskNote,\n replayed: z.boolean(),\n});\nexport type TaskNoteReplacementResult = z.infer<typeof TaskNoteReplacementResult>;\n\nexport const TaskNoteListResponse = z\n .object({\n notes: z.array(TaskNote).max(TASK_NOTE_LIST_MAX_LIMIT),\n })\n .superRefine((value, ctx) => {\n if (utf8Bytes(JSON.stringify(value)) > TASK_NOTE_LIST_RESPONSE_MAX_BYTES) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `task note list response must be at most ${TASK_NOTE_LIST_RESPONSE_MAX_BYTES} UTF-8 bytes`,\n });\n }\n });\nexport type TaskNoteListResponse = z.infer<typeof TaskNoteListResponse>;\n","import { z } from \"zod\";\nimport { Permission } from \"./permissions\";\n\nexport const OrganizationMembershipRole = z.enum([\"owner\", \"admin\", \"member\"]);\nexport type OrganizationMembershipRole = z.infer<typeof OrganizationMembershipRole>;\n\nexport const WorkspaceMemberRole = z.enum([\"viewer\", \"member\", \"admin\", \"custom\"]);\nexport type WorkspaceMemberRole = z.infer<typeof WorkspaceMemberRole>;\n\nexport const AssignableWorkspaceMemberRole = z.enum([\"viewer\", \"member\", \"admin\"]);\nexport type AssignableWorkspaceMemberRole = z.infer<typeof AssignableWorkspaceMemberRole>;\n\nexport const OrganizationInvitationStatus = z.enum([\"pending\", \"accepted\", \"revoked\", \"expired\"]);\nexport type OrganizationInvitationStatus = z.infer<typeof OrganizationInvitationStatus>;\n\nexport const OrganizationUserSetupDeliveryState = z.enum([\n \"pending\",\n \"sent\",\n \"failed\",\n \"outcome_unknown\",\n \"revoked\",\n]);\nexport type OrganizationUserSetupDeliveryState = z.infer<typeof OrganizationUserSetupDeliveryState>;\n\nexport const OrganizationUserSetupDelivery = z.object({\n id: z.string().uuid(),\n state: OrganizationUserSetupDeliveryState,\n attemptCount: z.number().int().nonnegative(),\n revision: z.number().int().positive(),\n errorClass: z.string().min(1).max(64).nullable(),\n retryState: z.enum([\"available\", \"reconciliation_required\", \"unavailable\"]),\n sentAt: z.string().datetime({ offset: true }).nullable(),\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport type OrganizationUserSetupDelivery = z.infer<typeof OrganizationUserSetupDelivery>;\n\nexport const OrganizationInvitation = z.object({\n id: z.string().uuid(),\n organizationId: z.string().uuid(),\n organizationName: z.string().trim().min(1).max(120).nullable().default(null),\n targetEmail: z.string().email(),\n targetName: z.string().trim().min(1).max(120).nullable().default(null),\n initialWorkspaceIds: z.array(z.string().uuid()).max(100).default([]),\n role: OrganizationMembershipRole,\n status: OrganizationInvitationStatus,\n revision: z.number().int().positive(),\n expiresAt: z.string().datetime({ offset: true }),\n acceptedMembershipId: z.string().uuid().nullable(),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n delivery: OrganizationUserSetupDelivery.nullable().default(null),\n});\nexport type OrganizationInvitation = z.infer<typeof OrganizationInvitation>;\n\nexport const OrganizationMember = z.object({\n id: z.string().uuid(),\n organizationId: z.string().uuid(),\n subjectId: z.string().min(1).max(1024),\n name: z.string().min(1).max(1024).nullable().default(null),\n email: z.string().email().max(320).nullable().default(null),\n role: OrganizationMembershipRole,\n status: z.enum([\"provisioning\", \"active\", \"suspended\", \"revoked\"]),\n authorizationRevision: z.number().int().positive(),\n personalWorkspaceId: z.string().uuid().nullable(),\n revokedAt: z.string().datetime({ offset: true }).nullable(),\n personalRetentionUntil: z.string().datetime({ offset: true }).nullable(),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport type OrganizationMember = z.infer<typeof OrganizationMember>;\n\nexport const OrganizationAdministrationMemberWorkspaceAccess = z.object({\n workspaceId: z.string().uuid(),\n workspaceName: z.string().min(1).max(255),\n membershipId: z.string().uuid(),\n role: WorkspaceMemberRole,\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport type OrganizationAdministrationMemberWorkspaceAccess = z.infer<\n typeof OrganizationAdministrationMemberWorkspaceAccess\n>;\n\n/** Safe admin projection. Personal-workspace and personal-resource metadata are absent. */\nexport const OrganizationAdministrationMember = z.object({\n id: z.string().uuid(),\n organizationId: z.string().uuid(),\n subjectId: z.string().min(1).max(1024),\n name: z.string().min(1).max(1024).nullable(),\n email: z.string().email().max(320).nullable(),\n role: OrganizationMembershipRole,\n status: z.enum([\"provisioning\", \"active\", \"suspended\", \"revoked\"]),\n authorizationRevision: z.number().int().positive(),\n sharedWorkspaceAccess: z.array(OrganizationAdministrationMemberWorkspaceAccess).max(500),\n revokedAt: z.string().datetime({ offset: true }).nullable(),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport type OrganizationAdministrationMember = z.infer<typeof OrganizationAdministrationMember>;\n\nexport const OrganizationSummary = z.object({\n id: z.string().uuid(),\n name: z.string().trim().min(1).max(120),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport type OrganizationSummary = z.infer<typeof OrganizationSummary>;\n\nexport const OrganizationPrivateSessionSettings = z.object({\n organizationId: z.string().uuid(),\n enabled: z.boolean(),\n available: z.boolean(),\n version: z.number().int().nonnegative(),\n updatedAt: z.string().datetime({ offset: true }),\n changed: z.boolean().optional(),\n});\nexport type OrganizationPrivateSessionSettings = z.infer<typeof OrganizationPrivateSessionSettings>;\n\nexport const UpdateOrganizationPrivateSessionSettingsRequest = z\n .object({\n enabled: z.boolean(),\n expectedVersion: z.number().int().nonnegative(),\n operationId: z.string().uuid(),\n })\n .strict();\nexport type UpdateOrganizationPrivateSessionSettingsRequest = z.infer<\n typeof UpdateOrganizationPrivateSessionSettingsRequest\n>;\n\nexport const OrganizationWorkspaceAccessMember = z.object({\n membershipId: z.string().uuid(),\n organizationMembershipId: z.string().uuid().nullable(),\n subjectId: z.string().min(1).max(1024),\n name: z.string().min(1).max(1024).nullable(),\n email: z.string().email().max(320).nullable(),\n subjectLabel: z.string().min(1).max(1024).nullable(),\n principalKind: z.enum([\"human\", \"service\"]),\n organizationRole: OrganizationMembershipRole.nullable(),\n role: WorkspaceMemberRole,\n permissions: z.array(z.string().min(1).max(128)),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n});\nexport type OrganizationWorkspaceAccessMember = z.infer<typeof OrganizationWorkspaceAccessMember>;\n\nexport const OrganizationWorkspaceAccess = z.object({\n id: z.string().uuid(),\n name: z.string().min(1),\n slug: z.string().nullable(),\n createdAt: z.string().datetime({ offset: true }),\n updatedAt: z.string().datetime({ offset: true }),\n members: z.array(OrganizationWorkspaceAccessMember).max(1000),\n});\nexport type OrganizationWorkspaceAccess = z.infer<typeof OrganizationWorkspaceAccess>;\n\nexport const OrganizationWorkspaceRoleDefinition = z.object({\n role: AssignableWorkspaceMemberRole,\n label: z.string().min(1).max(64),\n description: z.string().min(1).max(512),\n permissions: z.array(Permission).min(1),\n});\nexport type OrganizationWorkspaceRoleDefinition = z.infer<\n typeof OrganizationWorkspaceRoleDefinition\n>;\n\nexport const OrganizationAdministrationOverview = z.object({\n organization: OrganizationSummary,\n roles: z.array(OrganizationWorkspaceRoleDefinition).length(3),\n workspaces: z.array(OrganizationWorkspaceAccess).max(500),\n});\nexport type OrganizationAdministrationOverview = z.infer<typeof OrganizationAdministrationOverview>;\n\nexport const CreateOrganizationWorkspaceRequest = z\n .object({\n name: z.string().trim().min(1).max(120),\n operationId: z.string().uuid(),\n })\n .strict();\nexport type CreateOrganizationWorkspaceRequest = z.infer<typeof CreateOrganizationWorkspaceRequest>;\n\nexport const UpdateOrganizationWorkspaceRequest = z\n .object({\n name: z.string().trim().min(1).max(120),\n expectedUpdatedAt: z.string().datetime({ offset: true }),\n operationId: z.string().uuid(),\n })\n .strict();\nexport type UpdateOrganizationWorkspaceRequest = z.infer<typeof UpdateOrganizationWorkspaceRequest>;\n\nexport const PutOrganizationWorkspaceMemberRequest = z.discriminatedUnion(\"role\", [\n z\n .object({\n role: AssignableWorkspaceMemberRole,\n expectedUpdatedAt: z.string().datetime({ offset: true }).nullable(),\n operationId: z.string().uuid(),\n })\n .strict(),\n z\n .object({\n role: z.literal(\"custom\"),\n permissions: z.array(Permission).max(128),\n expectedUpdatedAt: z.string().datetime({ offset: true }).nullable(),\n operationId: z.string().uuid(),\n })\n .strict(),\n]);\nexport type PutOrganizationWorkspaceMemberRequest = z.infer<\n typeof PutOrganizationWorkspaceMemberRequest\n>;\n\nexport const RevokeOrganizationWorkspaceMemberRequest = z\n .object({\n expectedUpdatedAt: z.string().datetime({ offset: true }),\n operationId: z.string().uuid(),\n })\n .strict();\nexport type RevokeOrganizationWorkspaceMemberRequest = z.infer<\n typeof RevokeOrganizationWorkspaceMemberRequest\n>;\n\nexport const RevokeOrganizationWorkspaceMemberResponse = z\n .object({\n removed: z.boolean(),\n replay: z.boolean(),\n })\n .strict();\nexport type RevokeOrganizationWorkspaceMemberResponse = z.infer<\n typeof RevokeOrganizationWorkspaceMemberResponse\n>;\n\nexport const CreateOrganizationRequest = z.object({\n name: z.string().trim().min(1).max(120),\n operationId: z.string().uuid(),\n});\nexport type CreateOrganizationRequest = z.infer<typeof CreateOrganizationRequest>;\n\nexport const CreateOrganizationResponse = z.object({\n organization: OrganizationSummary,\n workspaceId: z.string().uuid(),\n});\nexport type CreateOrganizationResponse = z.infer<typeof CreateOrganizationResponse>;\n\nexport const CreateAdditionalOrganizationRequest = z\n .object({\n name: z.string().trim().min(1).max(120),\n workspaceName: z.string().trim().min(1).max(120),\n operationId: z.string().uuid(),\n })\n .strict();\nexport type CreateAdditionalOrganizationRequest = z.infer<\n typeof CreateAdditionalOrganizationRequest\n>;\n\nexport const CreateAdditionalOrganizationResponse = z.object({\n organization: OrganizationSummary,\n workspaceId: z.string().uuid(),\n personalWorkspaceId: z.string().uuid(),\n});\nexport type CreateAdditionalOrganizationResponse = z.infer<\n typeof CreateAdditionalOrganizationResponse\n>;\n\nexport const UpdateOrganizationNameRequest = z.object({\n name: z.string().trim().min(1).max(120),\n expectedUpdatedAt: z.string().datetime({ offset: true }),\n operationId: z.string().uuid(),\n});\nexport type UpdateOrganizationNameRequest = z.infer<typeof UpdateOrganizationNameRequest>;\n\nexport const OrganizationRetentionPolicy = z\n .object({\n organizationId: z.string().uuid(),\n mode: z.enum([\"retain\", \"delete_after\"]),\n retentionDays: z.number().int().min(30).max(90).nullable(),\n version: z.number().int().positive(),\n updatedAt: z.string().datetime({ offset: true }),\n })\n .superRefine((value, context) => {\n if ((value.mode === \"retain\") !== (value.retentionDays === null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"retentionDays\"],\n message: \"retain requires no duration; delete_after requires a duration\",\n });\n }\n });\nexport type OrganizationRetentionPolicy = z.infer<typeof OrganizationRetentionPolicy>;\n\nexport const OrganizationRetentionDeletionClaim = z.object({\n organizationId: z.string().uuid(),\n membershipId: z.string().uuid(),\n operationId: z.string().uuid(),\n retentionUntil: z.string().datetime({ offset: true }),\n claimExpiresAt: z.string().datetime({ offset: true }),\n personalWorkspaceId: z.string().uuid().nullable(),\n objectCount: z.number().int().nonnegative(),\n deletedObjectCount: z.number().int().nonnegative(),\n});\nexport type OrganizationRetentionDeletionClaim = z.infer<typeof OrganizationRetentionDeletionClaim>;\n\nexport const OrganizationRetentionDeletionObject = z.object({\n objectKind: z.enum([\n \"file\",\n \"session_recording\",\n \"browser_state_artifact\",\n \"browser_state_upload\",\n \"transcription_recording_object\",\n \"video_staging_reference\",\n \"workspace_artifact_version\",\n \"editable_artifact_blob\",\n \"workspace_capture_manifest\",\n \"workspace_capture_tree_index\",\n \"workspace_capture_blob\",\n ]),\n sourceId: z.string().min(1).max(2048),\n objectBucket: z.string().min(1).max(1024),\n objectKey: z.string().min(1).max(4096),\n});\nexport type OrganizationRetentionDeletionObject = z.infer<\n typeof OrganizationRetentionDeletionObject\n>;\n\nexport const OrganizationRetentionDatabaseFinalization = z.object({\n organizationId: z.string().uuid(),\n membershipId: z.string().uuid(),\n operationId: z.string().uuid(),\n outcome: z.literal(\"cleanup_pending\"),\n objectBucket: z.string().min(1).max(1024),\n objectCount: z.number().int().nonnegative(),\n deletedResources: z.record(z.string(), z.number().int().nonnegative()),\n databaseFinalizedAt: z.string().datetime({ offset: true }),\n});\nexport type OrganizationRetentionDatabaseFinalization = z.infer<\n typeof OrganizationRetentionDatabaseFinalization\n>;\n\nexport const OrganizationRetentionDeletionResult = z.object({\n organizationId: z.string().uuid(),\n membershipId: z.string().uuid(),\n operationId: z.string().uuid(),\n outcome: z.enum([\"completed\", \"already_completed\"]),\n deletedResources: z.record(z.string(), z.number().int().nonnegative()),\n completedAt: z.string().datetime({ offset: true }),\n});\nexport type OrganizationRetentionDeletionResult = z.infer<\n typeof OrganizationRetentionDeletionResult\n>;\n\nexport const OrganizationRetentionDeletionPreview = z.object({\n membershipId: z.string().uuid(),\n retentionUntil: z.string().datetime({ offset: true }),\n personalWorkspaceId: z.string().uuid().nullable(),\n resourceCount: z.number().int().nonnegative(),\n objectCount: z.number().int().nonnegative(),\n});\nexport type OrganizationRetentionDeletionPreview = z.infer<\n typeof OrganizationRetentionDeletionPreview\n>;\n\nexport const CreateOrganizationInvitationRequest = z.object({\n email: z.string().email().max(320),\n name: z.string().trim().min(1).max(120).optional(),\n initialWorkspaceIds: z.array(z.string().uuid()).max(100).default([]),\n role: OrganizationMembershipRole.default(\"member\"),\n expiresAt: z.string().datetime({ offset: true }),\n operationId: z.string().uuid(),\n});\nexport type CreateOrganizationInvitationRequest = z.infer<\n typeof CreateOrganizationInvitationRequest\n>;\n\n/**\n * Public, signed-out completion contract for an invitation-bound account setup.\n * The bearer is delivered out of band to the invited email address. It is\n * never persisted in plaintext; `operationId` makes an outcome-unknown retry\n * converge on the first committed result.\n */\nexport const CompleteOrganizationUserSetupRequest = z.object({\n token: z.string().min(32).max(2048),\n name: z.string().trim().min(1).max(120),\n password: z.string().min(8).max(128),\n operationId: z.string().uuid(),\n});\nexport type CompleteOrganizationUserSetupRequest = z.infer<\n typeof CompleteOrganizationUserSetupRequest\n>;\n\nexport const CompleteOrganizationUserSetupResponse = z.object({\n status: z.literal(\"complete\"),\n});\nexport type CompleteOrganizationUserSetupResponse = z.infer<\n typeof CompleteOrganizationUserSetupResponse\n>;\n\nexport const PreviewOrganizationUserSetupRequest = z\n .object({ token: z.string().min(32).max(2048) })\n .strict();\nexport type PreviewOrganizationUserSetupRequest = z.infer<\n typeof PreviewOrganizationUserSetupRequest\n>;\n\nexport const OrganizationUserSetupPreviewWorkspace = z.object({\n workspaceId: z.string().uuid(),\n workspaceName: z.string().min(1).max(255),\n role: AssignableWorkspaceMemberRole,\n});\nexport type OrganizationUserSetupPreviewWorkspace = z.infer<\n typeof OrganizationUserSetupPreviewWorkspace\n>;\n\nconst OrganizationUserSetupPreviewUnavailable = z.object({\n state: z.enum([\"unavailable\", \"expired\", \"revoked\", \"completed\"]),\n});\nconst OrganizationUserSetupPreviewPending = z.object({\n state: z.literal(\"pending\"),\n organizationId: z.string().uuid(),\n organizationName: z.string().trim().min(1).max(120),\n targetEmail: z.string().email().max(320),\n targetName: z.string().trim().min(1).max(120).nullable(),\n organizationRole: OrganizationMembershipRole,\n sharedWorkspaceAccess: z.array(OrganizationUserSetupPreviewWorkspace).max(100),\n expiresAt: z.string().datetime({ offset: true }),\n});\nexport const OrganizationUserSetupPreview = z.discriminatedUnion(\"state\", [\n OrganizationUserSetupPreviewUnavailable,\n OrganizationUserSetupPreviewPending,\n]);\nexport type OrganizationUserSetupPreview = z.infer<typeof OrganizationUserSetupPreview>;\n\nexport const RetryOrganizationUserSetupDeliveryRequest = z\n .object({ operationId: z.string().uuid() })\n .strict();\nexport type RetryOrganizationUserSetupDeliveryRequest = z.infer<\n typeof RetryOrganizationUserSetupDeliveryRequest\n>;\n\n/** Authenticated organization-name-only setup after ordinary account creation. */\nexport const CompleteSelfServiceOrganizationSetupRequest = z.object({\n organizationName: z.string().trim().min(1).max(120),\n operationId: z.string().uuid(),\n});\nexport type CompleteSelfServiceOrganizationSetupRequest = z.infer<\n typeof CompleteSelfServiceOrganizationSetupRequest\n>;\n\nexport const CompleteSelfServiceOrganizationSetupResponse = z.object({\n status: z.literal(\"complete\"),\n organizationId: z.string().uuid(),\n personalWorkspaceId: z.string().uuid(),\n});\nexport type CompleteSelfServiceOrganizationSetupResponse = z.infer<\n typeof CompleteSelfServiceOrganizationSetupResponse\n>;\n\nexport const SelfServiceOrganizationOnboardingStatus = z.object({\n state: z.enum([\"required\", \"invitation_pending\", \"unavailable\", \"complete\"]),\n});\nexport type SelfServiceOrganizationOnboardingStatus = z.infer<\n typeof SelfServiceOrganizationOnboardingStatus\n>;\n\nexport const AcceptOrganizationInvitationRequest = z.object({\n expectedRevision: z.number().int().positive(),\n operationId: z.string().uuid(),\n});\nexport type AcceptOrganizationInvitationRequest = z.infer<\n typeof AcceptOrganizationInvitationRequest\n>;\n\nexport const RevokeOrganizationInvitationRequest = AcceptOrganizationInvitationRequest;\nexport type RevokeOrganizationInvitationRequest = z.infer<\n typeof RevokeOrganizationInvitationRequest\n>;\n\nexport const OrganizationMemberTransitionKind = z.enum([\n \"change_role\",\n \"suspend\",\n \"reactivate\",\n \"offboard\",\n]);\nexport type OrganizationMemberTransitionKind = z.infer<typeof OrganizationMemberTransitionKind>;\n\nexport const UpdateOrganizationMemberRequest = z\n .object({\n kind: OrganizationMemberTransitionKind,\n role: OrganizationMembershipRole.optional(),\n expectedAuthorizationRevision: z.number().int().positive(),\n operationId: z.string().uuid(),\n reason: z.string().trim().min(1).max(512).optional(),\n })\n .superRefine((value, context) => {\n if ((value.kind === \"change_role\") !== (value.role !== undefined)) {\n context.addIssue({\n code: \"custom\",\n path: [\"role\"],\n message: \"role is required only for change_role\",\n });\n }\n });\nexport type UpdateOrganizationMemberRequest = z.infer<typeof UpdateOrganizationMemberRequest>;\n\nexport const UpdateOrganizationRetentionPolicyRequest = z\n .object({\n mode: z.enum([\"retain\", \"delete_after\"]),\n retentionDays: z.number().int().min(30).max(90).nullable(),\n expectedVersion: z.number().int().positive(),\n operationId: z.string().uuid(),\n })\n .superRefine((value, context) => {\n if ((value.mode === \"retain\") !== (value.retentionDays === null)) {\n context.addIssue({\n code: \"custom\",\n path: [\"retentionDays\"],\n message: \"retain requires no duration; delete_after requires a duration\",\n });\n }\n });\nexport type UpdateOrganizationRetentionPolicyRequest = z.infer<\n typeof UpdateOrganizationRetentionPolicyRequest\n>;\n\nexport const ListOrganizationInvitationsResponse = z.object({\n invitations: z.array(OrganizationInvitation).max(101),\n});\nexport const ListOrganizationInvitationsPageQuery = z.object({\n cursor: z.string().uuid().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(50),\n});\nexport type ListOrganizationInvitationsPageQuery = z.infer<\n typeof ListOrganizationInvitationsPageQuery\n>;\nexport const ListOrganizationInvitationsPageResponse = z.object({\n invitations: z.array(OrganizationInvitation).max(100),\n nextCursor: z.string().uuid().nullable(),\n});\nexport type ListOrganizationInvitationsPageResponse = z.infer<\n typeof ListOrganizationInvitationsPageResponse\n>;\nexport const AcceptOrganizationInvitationResponse = z.object({\n invitation: OrganizationInvitation,\n membership: OrganizationMember,\n});\nexport type AcceptOrganizationInvitationResponse = z.infer<\n typeof AcceptOrganizationInvitationResponse\n>;\nexport const ListOrganizationMembersResponse = z.object({\n members: z.array(OrganizationMember),\n});\nexport const ListOrganizationAdministrationMembersResponse = z.object({\n members: z.array(OrganizationAdministrationMember).max(1000),\n});\nexport const ListSelfOrganizationMembershipsResponse = z.object({\n memberships: z.array(OrganizationMember),\n});\n","import { z } from \"zod\";\nimport {\n AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_MAX_CHARS,\n AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_TOO_LONG_MESSAGE,\n AGENT_AUTHORED_PREFERENCE_CONTENT_MAX_CHARS,\n AGENT_AUTHORED_PREFERENCE_CONTENT_TOO_LONG_MESSAGE,\n} from \"./agent-authored-durable-text\";\nimport {\n CompanyBrainLearningDecisionSummary,\n CompanyBrainLearningStepFailure,\n} from \"./company-brain-governed-writes\";\nimport { GovernedLearningActivationDestination } from \"./governed-learning-activation\";\nimport { HumanInputQuestion } from \"./index\";\nimport {\n PREFERENCE_REGISTRY_DESCRIPTOR_DESCRIPTION_MAX_CHARS,\n PREFERENCE_REGISTRY_TITLE_MAX_CHARS,\n PreferenceRegistryStableKey,\n} from \"./preference-registry\";\nimport { WorkspaceInstructionPolicyTarget } from \"./workspace-instruction-policies\";\n\n/**\n * Explicit user-directed durable write (\"remember X for this workspace\").\n *\n * The lane is the Agent Knowledge area the content belongs to:\n * - `preference`: a Ways-of-working preference (how agents should act);\n * - `instruction_policy`: a mandatory workspace rule (\"always\"/\"never\");\n * - `knowledge`: a company/product/people fact.\n *\n * v1 supports the workspace scope only. Personal and organization scopes are\n * separate authorities that are not yet active for governed writes.\n */\nexport const RememberLane = z.enum([\"preference\", \"instruction_policy\", \"knowledge\"]);\nexport type RememberLane = z.infer<typeof RememberLane>;\n\nexport const RememberScope = z.enum([\"workspace\"]);\nexport type RememberScope = z.infer<typeof RememberScope>;\n\n/**\n * Ceiling for the Knowledge lane, which is retrieval evidence rather than\n * always-composed prompt text. The prompt-composed lanes are bounded far more\n * tightly: see `AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_MAX_CHARS` and\n * `AGENT_AUTHORED_PREFERENCE_CONTENT_MAX_CHARS`.\n */\nexport const REMEMBER_CONTENT_MAX_CHARS = 4_000;\n\nconst rememberBase = {\n operationId: z.string().uuid(),\n scope: RememberScope.default(\"workspace\"),\n /** The exact user-directed content to remember, in the user's words. */\n content: z.string().trim().min(1).max(REMEMBER_CONTENT_MAX_CHARS),\n /** Why the agent believes the user asked for this to be remembered. */\n reason: z.string().trim().min(1).max(4_096),\n};\n\nexport const RememberRequest = z.discriminatedUnion(\"lane\", [\n z\n .object({\n ...rememberBase,\n lane: z.literal(\"preference\"),\n // Only the short title/description descriptors are prompt-composed; the\n // content is retrieved on demand, so this length is retrieval cost rather\n // than standing prompt cost, and gets more room than a rule rather than\n // less.\n content: z\n .string()\n .trim()\n .min(1)\n .max(\n AGENT_AUTHORED_PREFERENCE_CONTENT_MAX_CHARS,\n AGENT_AUTHORED_PREFERENCE_CONTENT_TOO_LONG_MESSAGE,\n ),\n stableKey: PreferenceRegistryStableKey,\n title: z.string().trim().min(1).max(PREFERENCE_REGISTRY_TITLE_MAX_CHARS),\n description: z\n .string()\n .trim()\n .min(1)\n .max(PREFERENCE_REGISTRY_DESCRIPTOR_DESCRIPTION_MAX_CHARS),\n })\n .strict(),\n z\n .object({\n ...rememberBase,\n lane: z.literal(\"instruction_policy\"),\n // A mandatory rule is composed verbatim into the prompt of every session\n // it applies to, for as long as it stays active, so this is the tightest\n // agent budget in Agent Knowledge.\n content: z\n .string()\n .trim()\n .min(1)\n .max(\n AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_MAX_CHARS,\n AGENT_AUTHORED_INSTRUCTION_POLICY_CONTENT_TOO_LONG_MESSAGE,\n ),\n target: WorkspaceInstructionPolicyTarget.default({\n kind: \"policy\",\n scope: \"global\",\n roleKey: null,\n }),\n })\n .strict(),\n z\n .object({\n ...rememberBase,\n lane: z.literal(\"knowledge\"),\n /** Short entity label the fact is about (company, product, person, team, ...). */\n subject: z.string().trim().min(1).max(512),\n })\n .strict(),\n]);\nexport type RememberRequest = z.infer<typeof RememberRequest>;\n\n/**\n * Bound structured human-input question that authorizes a confirmed remember.\n * The question id binds the exact confirmation target: the\n * `knowledge_change_proposals` id for Ways-of-working lanes, or the\n * `knowledge_claims` id for the Knowledge lane.\n */\nexport const REMEMBER_HUMAN_INPUT_SAVE_OPTION = \"save\" as const;\nexport const REMEMBER_HUMAN_INPUT_SKIP_OPTION = \"skip\" as const;\nexport function rememberHumanInputQuestionId(targetId: string): string {\n return `remember:${targetId}`;\n}\n\n// z.lazy: this module is re-exported from ./index, so resolve the question\n// schema at parse time instead of at import time.\nexport const RememberHumanInputPrompt = z.object({\n questions: z.array(z.lazy(() => HumanInputQuestion)).length(1),\n allowSkip: z.literal(false),\n});\nexport type RememberHumanInputPrompt = z.infer<typeof RememberHumanInputPrompt>;\n\nexport const RememberActivationSummary = z.discriminatedUnion(\"destination\", [\n z.object({\n destination: GovernedLearningActivationDestination,\n receiptId: z.string().uuid(),\n destinationRevisionId: z.string().uuid().nullable(),\n effectiveAt: z.string().datetime().nullable(),\n authorityKind: z.enum([\"automatic\", \"human_confirmed\"]),\n /** The `/learning` API/SDK history exposes exact undo for this receipt. */\n undo: z.literal(\"learning_history\"),\n }),\n z.object({\n destination: z.literal(\"knowledge\"),\n receiptId: z.string().uuid(),\n claimId: z.string().uuid(),\n /** The retrievable Memory record materialized from the approved claim. */\n memoryId: z.string().uuid(),\n approvalReviewId: z.string().uuid(),\n effectiveAt: z.string().datetime().nullable(),\n authorityKind: z.literal(\"human_confirmed\"),\n /** Correct or archive the materialized record through the Memory lifecycle. */\n undo: z.literal(\"memory_management\"),\n }),\n]);\nexport type RememberActivationSummary = z.infer<typeof RememberActivationSummary>;\n\nexport const RememberReceipt = z.discriminatedUnion(\"status\", [\n /** Learning policy is off for this source: nothing durable was written. */\n z.object({\n status: z.literal(\"blocked\"),\n operationId: z.string().uuid(),\n lane: RememberLane,\n scope: RememberScope,\n reason: z.literal(\"learning_policy_off\"),\n }),\n /** Kept for callers that still expect review-only Knowledge; not returned by `remember` today. */\n z.object({\n status: z.literal(\"proposed_for_review\"),\n operationId: z.string().uuid(),\n lane: RememberLane,\n scope: RememberScope,\n noteId: z.string().uuid(),\n claimId: z.string().uuid(),\n evidenceId: z.string().uuid(),\n reviewId: z.string().uuid().nullable(),\n }),\n /** Activated immediately (automatic policy) through the destination lifecycle. */\n z.object({\n status: z.literal(\"activated\"),\n operationId: z.string().uuid(),\n lane: RememberLane,\n scope: RememberScope,\n noteId: z.string().uuid(),\n proposalId: z.string().uuid(),\n learning: CompanyBrainLearningDecisionSummary.nullable(),\n activation: RememberActivationSummary,\n }),\n /**\n * The proposal is durable but the workspace policy will not activate it on\n * its own. The agent must ask the human exactly this question through the\n * built-in `request_human_input` tool, then call `remember_confirm` with the\n * returned request id.\n */\n z.object({\n status: z.literal(\"confirmation_required\"),\n operationId: z.string().uuid(),\n lane: RememberLane,\n scope: RememberScope,\n noteId: z.string().uuid(),\n /** Ways-of-working lanes confirm a change proposal; Knowledge confirms the claim. */\n proposalId: z.string().uuid().nullable(),\n claimId: z.string().uuid(),\n learning: CompanyBrainLearningDecisionSummary.nullable(),\n learningFailure: CompanyBrainLearningStepFailure.nullable(),\n humanInput: RememberHumanInputPrompt,\n confirmWith: z.literal(\"remember_confirm\"),\n }),\n]);\nexport type RememberReceipt = z.infer<typeof RememberReceipt>;\n\nexport const RememberConfirmRequest = z.discriminatedUnion(\"target\", [\n z\n .object({\n target: z.literal(\"proposal\"),\n operationId: z.string().uuid(),\n proposalId: z.string().uuid(),\n /** `learning.receiptId` from the `confirmation_required` remember receipt. */\n decisionReceiptId: z.string().uuid(),\n /** The `requestId` returned by `request_human_input`. */\n humanInputRequestId: z.string().uuid(),\n })\n .strict(),\n z\n .object({\n target: z.literal(\"knowledge_claim\"),\n operationId: z.string().uuid(),\n claimId: z.string().uuid(),\n humanInputRequestId: z.string().uuid(),\n })\n .strict(),\n]);\nexport type RememberConfirmRequest = z.infer<typeof RememberConfirmRequest>;\n\nexport const RememberConfirmReceipt = z.object({\n status: z.literal(\"activated\"),\n operationId: z.string().uuid(),\n proposalId: z.string().uuid().nullable(),\n claimId: z.string().uuid(),\n decisionReceiptId: z.string().uuid().nullable(),\n activation: RememberActivationSummary,\n});\nexport type RememberConfirmReceipt = z.infer<typeof RememberConfirmReceipt>;\n","import { z } from \"zod\";\n\nexport const FeedbackSentiment = z.enum([\"positive\", \"negative\"]);\nexport type FeedbackSentiment = z.infer<typeof FeedbackSentiment>;\n\n/** A new key means a new submission; retry the same payload with the same key. */\nexport const CreateFeedbackRequest = z\n .object({\n idempotencyKey: z.string().uuid(),\n sessionId: z.string().uuid().optional(),\n turnId: z.string().uuid().optional(),\n sentiment: FeedbackSentiment.optional(),\n comment: z.string().max(4000).optional(),\n })\n .strict()\n .superRefine((value, ctx) => {\n if (value.turnId && !value.sessionId)\n ctx.addIssue({ code: \"custom\", path: [\"turnId\"], message: \"turnId requires sessionId\" });\n if (value.sentiment && !value.sessionId)\n ctx.addIssue({ code: \"custom\", path: [\"sentiment\"], message: \"Ratings require a session\" });\n if (!value.sentiment && !value.comment?.trim())\n ctx.addIssue({ code: \"custom\", path: [\"comment\"], message: \"Provide a rating or a comment\" });\n });\nexport type CreateFeedbackRequest = z.infer<typeof CreateFeedbackRequest>;\n\nexport const Feedback = z.object({\n id: z.string().uuid(),\n workspaceId: z.string().uuid(),\n subjectId: z.string(),\n principalKind: z.string().nullable(),\n sessionId: z.string().uuid().nullable(),\n turnId: z.string().uuid().nullable(),\n sentiment: FeedbackSentiment.nullable(),\n comment: z.string().nullable(),\n createdAt: z.string().datetime(),\n});\nexport type Feedback = z.infer<typeof Feedback>;\nexport const FeedbackSubmissionResponse = z.object({ feedback: Feedback, replayed: z.boolean() });\nexport type FeedbackSubmissionResponse = z.infer<typeof FeedbackSubmissionResponse>;\n"],"mappings":"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AAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACO,IAAM,wBAAwBA,IAAE,KAAK,0BAA0B;AAQ/D,IAAM,oCAAoC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AA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","names":["z","encoder","z","z","z","z","z","omitted","marker","contentBudget","left","right","toJson","bytes","z","z","z","z","utf8Bytes","z","z","z","z","z","z","z","operationId","z","z","z","z","z","z","utf8Bytes","z","z","z","encoder","sha256","z","z","sha256","z","z","z","z","z","utf8Bytes","boundedUtf8","z","z","z","encoder","revisionIdentityShape","z","z","sha256","z","z","sha256","z","z","boundedActor","z","boundedReason","z","z","utf8Bytes","z","z","z","z","z","z","registryId","sortJson","compareUtf8","encoder","deliveredBytes","boundedUtf8String","fingerprint","utf8Bytes","z"]}