codexgpt 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.example.md +20 -0
- package/CHANGELOG.md +342 -0
- package/CHATGPT_PROMPT.md +12 -0
- package/CLOUDFLARED_VERIFIED_INSTALL.md +94 -0
- package/CODEX_PROMPT.md +12 -0
- package/CONTRIBUTING.md +62 -0
- package/DOMAIN_SETUP.md +275 -0
- package/FAQ.md +366 -0
- package/FAQ_ZH.md +329 -0
- package/LICENSE +21 -0
- package/PUBLIC_LAUNCH_CHECKLIST.md +111 -0
- package/README.md +490 -0
- package/README_ZH.md +747 -0
- package/SECURITY.md +295 -0
- package/config.example.env +103 -0
- package/dist/access/fullAccessLease.js +148 -0
- package/dist/access/fullAccessLease.js.map +1 -0
- package/dist/access/protectedRoots.js +122 -0
- package/dist/access/protectedRoots.js.map +1 -0
- package/dist/access/rootAdmission.js +347 -0
- package/dist/access/rootAdmission.js.map +1 -0
- package/dist/analysis/cache.js +27 -0
- package/dist/analysis/cache.js.map +1 -0
- package/dist/analysis/classify.js +102 -0
- package/dist/analysis/classify.js.map +1 -0
- package/dist/analysis/extract.js +139 -0
- package/dist/analysis/extract.js.map +1 -0
- package/dist/analysis/graph.js +22 -0
- package/dist/analysis/graph.js.map +1 -0
- package/dist/analysis/impact.js +167 -0
- package/dist/analysis/impact.js.map +1 -0
- package/dist/analysis/index.js +215 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/inventory.js +51 -0
- package/dist/analysis/inventory.js.map +1 -0
- package/dist/analysis/providers.js +24 -0
- package/dist/analysis/providers.js.map +1 -0
- package/dist/analysis/rank.js +27 -0
- package/dist/analysis/rank.js.map +1 -0
- package/dist/analysis/types.js +8 -0
- package/dist/analysis/types.js.map +1 -0
- package/dist/audit/canonicalJson.js +79 -0
- package/dist/audit/canonicalJson.js.map +1 -0
- package/dist/audit/diagnostics.js +128 -0
- package/dist/audit/diagnostics.js.map +1 -0
- package/dist/audit/index.js +12 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/lifecycleV3.js +53 -0
- package/dist/audit/lifecycleV3.js.map +1 -0
- package/dist/audit/lifecycleV4.js +70 -0
- package/dist/audit/lifecycleV4.js.map +1 -0
- package/dist/audit/lock.js +195 -0
- package/dist/audit/lock.js.map +1 -0
- package/dist/audit/queryTool.js +120 -0
- package/dist/audit/queryTool.js.map +1 -0
- package/dist/audit/runtime.js +48 -0
- package/dist/audit/runtime.js.map +1 -0
- package/dist/audit/schemas.js +640 -0
- package/dist/audit/schemas.js.map +1 -0
- package/dist/audit/store.js +1309 -0
- package/dist/audit/store.js.map +1 -0
- package/dist/audit/transactionParticipant.js +45 -0
- package/dist/audit/transactionParticipant.js.map +1 -0
- package/dist/audit/types.js +11 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/auth/audit.js +44 -0
- package/dist/auth/audit.js.map +1 -0
- package/dist/auth/authorizationStore.js +333 -0
- package/dist/auth/authorizationStore.js.map +1 -0
- package/dist/auth/challenges.js +25 -0
- package/dist/auth/challenges.js.map +1 -0
- package/dist/auth/clientStore.js +469 -0
- package/dist/auth/clientStore.js.map +1 -0
- package/dist/auth/cloudflareConfig.js +112 -0
- package/dist/auth/cloudflareConfig.js.map +1 -0
- package/dist/auth/configuration.js +167 -0
- package/dist/auth/configuration.js.map +1 -0
- package/dist/auth/credentialStore.js +65 -0
- package/dist/auth/credentialStore.js.map +1 -0
- package/dist/auth/deploymentLock.js +220 -0
- package/dist/auth/deploymentLock.js.map +1 -0
- package/dist/auth/deploymentRegistry.js +149 -0
- package/dist/auth/deploymentRegistry.js.map +1 -0
- package/dist/auth/errors.js +26 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/grantStore.js +307 -0
- package/dist/auth/grantStore.js.map +1 -0
- package/dist/auth/index.js +39 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/keyManager.js +148 -0
- package/dist/auth/keyManager.js.map +1 -0
- package/dist/auth/localAdminSession.js +173 -0
- package/dist/auth/localAdminSession.js.map +1 -0
- package/dist/auth/metadata.js +69 -0
- package/dist/auth/metadata.js.map +1 -0
- package/dist/auth/oauthProvider.js +589 -0
- package/dist/auth/oauthProvider.js.map +1 -0
- package/dist/auth/ownerApproval.js +51 -0
- package/dist/auth/ownerApproval.js.map +1 -0
- package/dist/auth/policyIdentity.js +189 -0
- package/dist/auth/policyIdentity.js.map +1 -0
- package/dist/auth/rateLimits.js +66 -0
- package/dist/auth/rateLimits.js.map +1 -0
- package/dist/auth/recovery.js +275 -0
- package/dist/auth/recovery.js.map +1 -0
- package/dist/auth/requestContext.js +34 -0
- package/dist/auth/requestContext.js.map +1 -0
- package/dist/auth/resourceMiddleware.js +147 -0
- package/dist/auth/resourceMiddleware.js.map +1 -0
- package/dist/auth/runtimeStatus.js +51 -0
- package/dist/auth/runtimeStatus.js.map +1 -0
- package/dist/auth/schemas.js +84 -0
- package/dist/auth/schemas.js.map +1 -0
- package/dist/auth/stateStore.js +468 -0
- package/dist/auth/stateStore.js.map +1 -0
- package/dist/auth/tokenService.js +631 -0
- package/dist/auth/tokenService.js.map +1 -0
- package/dist/auth/toolSecurity.js +108 -0
- package/dist/auth/toolSecurity.js.map +1 -0
- package/dist/auth/types.js +6 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/windowsDpapi.js +193 -0
- package/dist/auth/windowsDpapi.js.map +1 -0
- package/dist/bashOps.js +292 -0
- package/dist/bashOps.js.map +1 -0
- package/dist/capabilitiesOps.js +412 -0
- package/dist/capabilitiesOps.js.map +1 -0
- package/dist/changesets/crypto.js +92 -0
- package/dist/changesets/crypto.js.map +1 -0
- package/dist/changesets/index.js +9 -0
- package/dist/changesets/index.js.map +1 -0
- package/dist/changesets/moveStore.js +237 -0
- package/dist/changesets/moveStore.js.map +1 -0
- package/dist/changesets/moveUndo.js +386 -0
- package/dist/changesets/moveUndo.js.map +1 -0
- package/dist/changesets/schemas.js +234 -0
- package/dist/changesets/schemas.js.map +1 -0
- package/dist/changesets/store.js +573 -0
- package/dist/changesets/store.js.map +1 -0
- package/dist/changesets/types.js +9 -0
- package/dist/changesets/types.js.map +1 -0
- package/dist/changesets/undo.js +525 -0
- package/dist/changesets/undo.js.map +1 -0
- package/dist/changesets/unifiedUndo.js +31 -0
- package/dist/changesets/unifiedUndo.js.map +1 -0
- package/dist/cliEnvironment.js +85 -0
- package/dist/cliEnvironment.js.map +1 -0
- package/dist/codexSessions.js +733 -0
- package/dist/codexSessions.js.map +1 -0
- package/dist/codexgptSupertool.js +216 -0
- package/dist/codexgptSupertool.js.map +1 -0
- package/dist/codexproSupertool.js +204 -0
- package/dist/codexproSupertool.js.map +1 -0
- package/dist/config.js +733 -0
- package/dist/config.js.map +1 -0
- package/dist/control/localApprovalClient.js +287 -0
- package/dist/control/localApprovalClient.js.map +1 -0
- package/dist/control/localApprovalServer.js +466 -0
- package/dist/control/localApprovalServer.js.map +1 -0
- package/dist/control/runtime.js +178 -0
- package/dist/control/runtime.js.map +1 -0
- package/dist/control/schemas.js +184 -0
- package/dist/control/schemas.js.map +1 -0
- package/dist/control/windowsLocalControl.js +348 -0
- package/dist/control/windowsLocalControl.js.map +1 -0
- package/dist/fsOps.js +541 -0
- package/dist/fsOps.js.map +1 -0
- package/dist/git/admission.js +26 -0
- package/dist/git/admission.js.map +1 -0
- package/dist/git/branchService.js +51 -0
- package/dist/git/branchService.js.map +1 -0
- package/dist/git/capabilities.js +143 -0
- package/dist/git/capabilities.js.map +1 -0
- package/dist/git/commitService.js +344 -0
- package/dist/git/commitService.js.map +1 -0
- package/dist/git/durableState.js +151 -0
- package/dist/git/durableState.js.map +1 -0
- package/dist/git/execution.js +451 -0
- package/dist/git/execution.js.map +1 -0
- package/dist/git/fileTransaction.js +50 -0
- package/dist/git/fileTransaction.js.map +1 -0
- package/dist/git/indexService.js +421 -0
- package/dist/git/indexService.js.map +1 -0
- package/dist/git/integrations.js +653 -0
- package/dist/git/integrations.js.map +1 -0
- package/dist/git/locks.js +287 -0
- package/dist/git/locks.js.map +1 -0
- package/dist/git/mutationContext.js +92 -0
- package/dist/git/mutationContext.js.map +1 -0
- package/dist/git/mutationJournal.js +91 -0
- package/dist/git/mutationJournal.js.map +1 -0
- package/dist/git/mutationService.js +352 -0
- package/dist/git/mutationService.js.map +1 -0
- package/dist/git/normalization.js +57 -0
- package/dist/git/normalization.js.map +1 -0
- package/dist/git/objectQuarantine.js +243 -0
- package/dist/git/objectQuarantine.js.map +1 -0
- package/dist/git/opaqueRecordStore.js +187 -0
- package/dist/git/opaqueRecordStore.js.map +1 -0
- package/dist/git/operationStore.js +287 -0
- package/dist/git/operationStore.js.map +1 -0
- package/dist/git/parsers.js +311 -0
- package/dist/git/parsers.js.map +1 -0
- package/dist/git/privateIndex.js +79 -0
- package/dist/git/privateIndex.js.map +1 -0
- package/dist/git/productionBootstrap.js +39 -0
- package/dist/git/productionBootstrap.js.map +1 -0
- package/dist/git/readService.js +846 -0
- package/dist/git/readService.js.map +1 -0
- package/dist/git/recovery.js +417 -0
- package/dist/git/recovery.js.map +1 -0
- package/dist/git/repositoryIdentity.js +611 -0
- package/dist/git/repositoryIdentity.js.map +1 -0
- package/dist/git/repositoryStore.js +237 -0
- package/dist/git/repositoryStore.js.map +1 -0
- package/dist/git/resources.js +113 -0
- package/dist/git/resources.js.map +1 -0
- package/dist/git/restoreService.js +178 -0
- package/dist/git/restoreService.js.map +1 -0
- package/dist/git/reviewToken.js +86 -0
- package/dist/git/reviewToken.js.map +1 -0
- package/dist/git/stashService.js +566 -0
- package/dist/git/stashService.js.map +1 -0
- package/dist/git/stateToken.js +139 -0
- package/dist/git/stateToken.js.map +1 -0
- package/dist/gitOps.js +147 -0
- package/dist/gitOps.js.map +1 -0
- package/dist/guard.js +608 -0
- package/dist/guard.js.map +1 -0
- package/dist/guidance/diagnostics.js +14 -0
- package/dist/guidance/diagnostics.js.map +1 -0
- package/dist/guidance/instructions.js +167 -0
- package/dist/guidance/instructions.js.map +1 -0
- package/dist/guidance/mode.js +18 -0
- package/dist/guidance/mode.js.map +1 -0
- package/dist/guidance/openaiSkillMetadata.js +29 -0
- package/dist/guidance/openaiSkillMetadata.js.map +1 -0
- package/dist/guidance/safeTextReader.js +171 -0
- package/dist/guidance/safeTextReader.js.map +1 -0
- package/dist/guidance/skillCatalog.js +70 -0
- package/dist/guidance/skillCatalog.js.map +1 -0
- package/dist/guidance/skillDiscovery.js +353 -0
- package/dist/guidance/skillDiscovery.js.map +1 -0
- package/dist/guidance/skillMetadata.js +115 -0
- package/dist/guidance/skillMetadata.js.map +1 -0
- package/dist/guidance/skillResources.js +146 -0
- package/dist/guidance/skillResources.js.map +1 -0
- package/dist/handoffOps.js +449 -0
- package/dist/handoffOps.js.map +1 -0
- package/dist/http/localAdminApp.js +203 -0
- package/dist/http/localAdminApp.js.map +1 -0
- package/dist/http/oauthMcpRuntime.js +294 -0
- package/dist/http/oauthMcpRuntime.js.map +1 -0
- package/dist/http/publicApp.js +350 -0
- package/dist/http/publicApp.js.map +1 -0
- package/dist/http/securityHeaders.js +11 -0
- package/dist/http/securityHeaders.js.map +1 -0
- package/dist/http.js +2076 -0
- package/dist/http.js.map +1 -0
- package/dist/moves/engine.js +1079 -0
- package/dist/moves/engine.js.map +1 -0
- package/dist/moves/index.js +6 -0
- package/dist/moves/index.js.map +1 -0
- package/dist/moves/planner.js +270 -0
- package/dist/moves/planner.js.map +1 -0
- package/dist/moves/recovery.js +557 -0
- package/dist/moves/recovery.js.map +1 -0
- package/dist/moves/service.js +300 -0
- package/dist/moves/service.js.map +1 -0
- package/dist/moves/types.js +11 -0
- package/dist/moves/types.js.map +1 -0
- package/dist/mutations/index.js +4 -0
- package/dist/mutations/index.js.map +1 -0
- package/dist/mutations/lifecycle.js +165 -0
- package/dist/mutations/lifecycle.js.map +1 -0
- package/dist/mutations/localService.js +163 -0
- package/dist/mutations/localService.js.map +1 -0
- package/dist/mutations/runtime.js +322 -0
- package/dist/mutations/runtime.js.map +1 -0
- package/dist/mutations/types.js +2 -0
- package/dist/mutations/types.js.map +1 -0
- package/dist/mutations/writers.js +360 -0
- package/dist/mutations/writers.js.map +1 -0
- package/dist/patchOps.js +420 -0
- package/dist/patchOps.js.map +1 -0
- package/dist/policy/approval.js +306 -0
- package/dist/policy/approval.js.map +1 -0
- package/dist/policy/audit.js +88 -0
- package/dist/policy/audit.js.map +1 -0
- package/dist/policy/authorizationFacts.js +187 -0
- package/dist/policy/authorizationFacts.js.map +1 -0
- package/dist/policy/compat.js +104 -0
- package/dist/policy/compat.js.map +1 -0
- package/dist/policy/context.js +31 -0
- package/dist/policy/context.js.map +1 -0
- package/dist/policy/enforcement.js +46 -0
- package/dist/policy/enforcement.js.map +1 -0
- package/dist/policy/evaluator.js +338 -0
- package/dist/policy/evaluator.js.map +1 -0
- package/dist/policy/executionCapabilities.js +80 -0
- package/dist/policy/executionCapabilities.js.map +1 -0
- package/dist/policy/executionResources.js +192 -0
- package/dist/policy/executionResources.js.map +1 -0
- package/dist/policy/fullAccessResources.js +23 -0
- package/dist/policy/fullAccessResources.js.map +1 -0
- package/dist/policy/hardPolicy.js +50 -0
- package/dist/policy/hardPolicy.js.map +1 -0
- package/dist/policy/identity.js +142 -0
- package/dist/policy/identity.js.map +1 -0
- package/dist/policy/integration.js +331 -0
- package/dist/policy/integration.js.map +1 -0
- package/dist/policy/pendingApprovals.js +301 -0
- package/dist/policy/pendingApprovals.js.map +1 -0
- package/dist/policy/profileStore.js +367 -0
- package/dist/policy/profileStore.js.map +1 -0
- package/dist/policy/resources.js +249 -0
- package/dist/policy/resources.js.map +1 -0
- package/dist/policy/runtime.js +713 -0
- package/dist/policy/runtime.js.map +1 -0
- package/dist/policy/schemas.js +625 -0
- package/dist/policy/schemas.js.map +1 -0
- package/dist/policy/toolPolicy.js +141 -0
- package/dist/policy/toolPolicy.js.map +1 -0
- package/dist/policy/transport.js +10 -0
- package/dist/policy/transport.js.map +1 -0
- package/dist/policy/types.js +31 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/proContext.js +675 -0
- package/dist/proContext.js.map +1 -0
- package/dist/process/authority.js +18 -0
- package/dist/process/authority.js.map +1 -0
- package/dist/process/backendDiscovery.js +83 -0
- package/dist/process/backendDiscovery.js.map +1 -0
- package/dist/process/commandCompiler.js +71 -0
- package/dist/process/commandCompiler.js.map +1 -0
- package/dist/process/outputCursor.js +67 -0
- package/dist/process/outputCursor.js.map +1 -0
- package/dist/process/outputQuota.js +94 -0
- package/dist/process/outputQuota.js.map +1 -0
- package/dist/process/outputRing.js +138 -0
- package/dist/process/outputRing.js.map +1 -0
- package/dist/process/processAuditCoordinator.js +52 -0
- package/dist/process/processAuditCoordinator.js.map +1 -0
- package/dist/process/processManager.js +311 -0
- package/dist/process/processManager.js.map +1 -0
- package/dist/process/runCommand.js +332 -0
- package/dist/process/runCommand.js.map +1 -0
- package/dist/process/streamingRedactor.js +105 -0
- package/dist/process/streamingRedactor.js.map +1 -0
- package/dist/process/types.js +2 -0
- package/dist/process/types.js.map +1 -0
- package/dist/process/windowsHostClient.js +604 -0
- package/dist/process/windowsHostClient.js.map +1 -0
- package/dist/process/windowsHostProtocol.js +270 -0
- package/dist/process/windowsHostProtocol.js.map +1 -0
- package/dist/process/windowsPersistentBackend.js +263 -0
- package/dist/process/windowsPersistentBackend.js.map +1 -0
- package/dist/productionRuntime.js +907 -0
- package/dist/productionRuntime.js.map +1 -0
- package/dist/profileStore.js +231 -0
- package/dist/profileStore.js.map +1 -0
- package/dist/redact.js +124 -0
- package/dist/redact.js.map +1 -0
- package/dist/searchOps.js +186 -0
- package/dist/searchOps.js.map +1 -0
- package/dist/selfTestOps.js +786 -0
- package/dist/selfTestOps.js.map +1 -0
- package/dist/semantic/budgets.js +12 -0
- package/dist/semantic/budgets.js.map +1 -0
- package/dist/semantic/builtin/typescriptAssets.js +68 -0
- package/dist/semantic/builtin/typescriptAssets.js.map +1 -0
- package/dist/semantic/builtin/typescriptProvider.js +211 -0
- package/dist/semantic/builtin/typescriptProvider.js.map +1 -0
- package/dist/semantic/builtin/typescriptWorker.js +365 -0
- package/dist/semantic/builtin/typescriptWorker.js.map +1 -0
- package/dist/semantic/diffPreview.js +36 -0
- package/dist/semantic/diffPreview.js.map +1 -0
- package/dist/semantic/index.js +11 -0
- package/dist/semantic/index.js.map +1 -0
- package/dist/semantic/manager.js +522 -0
- package/dist/semantic/manager.js.map +1 -0
- package/dist/semantic/positions.js +86 -0
- package/dist/semantic/positions.js.map +1 -0
- package/dist/semantic/previewStore.js +276 -0
- package/dist/semantic/previewStore.js.map +1 -0
- package/dist/semantic/projectResolver.js +309 -0
- package/dist/semantic/projectResolver.js.map +1 -0
- package/dist/semantic/sourceSnapshot.js +54 -0
- package/dist/semantic/sourceSnapshot.js.map +1 -0
- package/dist/semantic/status.js +46 -0
- package/dist/semantic/status.js.map +1 -0
- package/dist/semantic/types.js +2 -0
- package/dist/semantic/types.js.map +1 -0
- package/dist/server.js +8676 -0
- package/dist/server.js.map +1 -0
- package/dist/stdio.js +64 -0
- package/dist/stdio.js.map +1 -0
- package/dist/toolCardWidget.js +2000 -0
- package/dist/toolCardWidget.js.map +1 -0
- package/dist/tools/contracts/catalog.js +111 -0
- package/dist/tools/contracts/catalog.js.map +1 -0
- package/dist/tools/contracts/index.js +8 -0
- package/dist/tools/contracts/index.js.map +1 -0
- package/dist/tools/contracts/registration.js +27 -0
- package/dist/tools/contracts/registration.js.map +1 -0
- package/dist/tools/contracts/schemas.js +11 -0
- package/dist/tools/contracts/schemas.js.map +1 -0
- package/dist/tools/contracts/types.js +2 -0
- package/dist/tools/contracts/types.js.map +1 -0
- package/dist/tools/contracts/v3.js +76 -0
- package/dist/tools/contracts/v3.js.map +1 -0
- package/dist/tools/contracts/v4.js +39 -0
- package/dist/tools/contracts/v4.js.map +1 -0
- package/dist/tools/contracts/v5.js +20 -0
- package/dist/tools/contracts/v5.js.map +1 -0
- package/dist/tools/phase3dServer.js +350 -0
- package/dist/tools/phase3dServer.js.map +1 -0
- package/dist/tools/schemas/applyPatch.js +388 -0
- package/dist/tools/schemas/applyPatch.js.map +1 -0
- package/dist/tools/schemas/bash.js +202 -0
- package/dist/tools/schemas/bash.js.map +1 -0
- package/dist/tools/schemas/closeWorkspace.js +105 -0
- package/dist/tools/schemas/closeWorkspace.js.map +1 -0
- package/dist/tools/schemas/codexContext.js +402 -0
- package/dist/tools/schemas/codexContext.js.map +1 -0
- package/dist/tools/schemas/codexSessions.js +328 -0
- package/dist/tools/schemas/codexSessions.js.map +1 -0
- package/dist/tools/schemas/codexgpt.js +1068 -0
- package/dist/tools/schemas/codexgpt.js.map +1 -0
- package/dist/tools/schemas/codexgptInventory.js +359 -0
- package/dist/tools/schemas/codexgptInventory.js.map +1 -0
- package/dist/tools/schemas/codexgptSelfTest.js +563 -0
- package/dist/tools/schemas/codexgptSelfTest.js.map +1 -0
- package/dist/tools/schemas/codexpro.js +917 -0
- package/dist/tools/schemas/codexpro.js.map +1 -0
- package/dist/tools/schemas/codexproInventory.js +352 -0
- package/dist/tools/schemas/codexproInventory.js.map +1 -0
- package/dist/tools/schemas/codexproSelfTest.js +546 -0
- package/dist/tools/schemas/codexproSelfTest.js.map +1 -0
- package/dist/tools/schemas/common.js +21 -0
- package/dist/tools/schemas/common.js.map +1 -0
- package/dist/tools/schemas/createTaskWorktree.js +51 -0
- package/dist/tools/schemas/createTaskWorktree.js.map +1 -0
- package/dist/tools/schemas/edit.js +321 -0
- package/dist/tools/schemas/edit.js.map +1 -0
- package/dist/tools/schemas/execution.js +330 -0
- package/dist/tools/schemas/execution.js.map +1 -0
- package/dist/tools/schemas/exportProContext.js +370 -0
- package/dist/tools/schemas/exportProContext.js.map +1 -0
- package/dist/tools/schemas/getTaskWorktree.js +19 -0
- package/dist/tools/schemas/getTaskWorktree.js.map +1 -0
- package/dist/tools/schemas/gitBranch.js +42 -0
- package/dist/tools/schemas/gitBranch.js.map +1 -0
- package/dist/tools/schemas/gitCommit.js +40 -0
- package/dist/tools/schemas/gitCommit.js.map +1 -0
- package/dist/tools/schemas/gitCreateBranch.js +22 -0
- package/dist/tools/schemas/gitCreateBranch.js.map +1 -0
- package/dist/tools/schemas/gitDiff.js +222 -0
- package/dist/tools/schemas/gitDiff.js.map +1 -0
- package/dist/tools/schemas/gitLog.js +41 -0
- package/dist/tools/schemas/gitLog.js.map +1 -0
- package/dist/tools/schemas/gitRestore.js +47 -0
- package/dist/tools/schemas/gitRestore.js.map +1 -0
- package/dist/tools/schemas/gitStage.js +33 -0
- package/dist/tools/schemas/gitStage.js.map +1 -0
- package/dist/tools/schemas/gitStash.js +102 -0
- package/dist/tools/schemas/gitStash.js.map +1 -0
- package/dist/tools/schemas/gitStatus.js +226 -0
- package/dist/tools/schemas/gitStatus.js.map +1 -0
- package/dist/tools/schemas/gitV4Common.js +205 -0
- package/dist/tools/schemas/gitV4Common.js.map +1 -0
- package/dist/tools/schemas/guidance.js +40 -0
- package/dist/tools/schemas/guidance.js.map +1 -0
- package/dist/tools/schemas/handoffToAgent.js +276 -0
- package/dist/tools/schemas/handoffToAgent.js.map +1 -0
- package/dist/tools/schemas/handoffToCodex.js +137 -0
- package/dist/tools/schemas/handoffToCodex.js.map +1 -0
- package/dist/tools/schemas/inspectWorkspace.js +379 -0
- package/dist/tools/schemas/inspectWorkspace.js.map +1 -0
- package/dist/tools/schemas/listTaskWorktrees.js +21 -0
- package/dist/tools/schemas/listTaskWorktrees.js.map +1 -0
- package/dist/tools/schemas/listWorkspaces.js +134 -0
- package/dist/tools/schemas/listWorkspaces.js.map +1 -0
- package/dist/tools/schemas/loadSkill.js +619 -0
- package/dist/tools/schemas/loadSkill.js.map +1 -0
- package/dist/tools/schemas/mergeTaskWorktree.js +105 -0
- package/dist/tools/schemas/mergeTaskWorktree.js.map +1 -0
- package/dist/tools/schemas/movePaths.js +175 -0
- package/dist/tools/schemas/movePaths.js.map +1 -0
- package/dist/tools/schemas/openCurrentWorkspace.js +174 -0
- package/dist/tools/schemas/openCurrentWorkspace.js.map +1 -0
- package/dist/tools/schemas/openFullAccessWorkspace.js +81 -0
- package/dist/tools/schemas/openFullAccessWorkspace.js.map +1 -0
- package/dist/tools/schemas/openWorkspace.js +193 -0
- package/dist/tools/schemas/openWorkspace.js.map +1 -0
- package/dist/tools/schemas/queryAuditEvents.js +193 -0
- package/dist/tools/schemas/queryAuditEvents.js.map +1 -0
- package/dist/tools/schemas/read.js +199 -0
- package/dist/tools/schemas/read.js.map +1 -0
- package/dist/tools/schemas/readCodexSession.js +353 -0
- package/dist/tools/schemas/readCodexSession.js.map +1 -0
- package/dist/tools/schemas/readHandoff.js +446 -0
- package/dist/tools/schemas/readHandoff.js.map +1 -0
- package/dist/tools/schemas/removeTaskWorktree.js +40 -0
- package/dist/tools/schemas/removeTaskWorktree.js.map +1 -0
- package/dist/tools/schemas/search.js +235 -0
- package/dist/tools/schemas/search.js.map +1 -0
- package/dist/tools/schemas/semantic.js +195 -0
- package/dist/tools/schemas/semantic.js.map +1 -0
- package/dist/tools/schemas/serverConfig.js +157 -0
- package/dist/tools/schemas/serverConfig.js.map +1 -0
- package/dist/tools/schemas/showChanges.js +283 -0
- package/dist/tools/schemas/showChanges.js.map +1 -0
- package/dist/tools/schemas/transactionResult.js +11 -0
- package/dist/tools/schemas/transactionResult.js.map +1 -0
- package/dist/tools/schemas/tree.js +136 -0
- package/dist/tools/schemas/tree.js.map +1 -0
- package/dist/tools/schemas/undoChangeSet.js +152 -0
- package/dist/tools/schemas/undoChangeSet.js.map +1 -0
- package/dist/tools/schemas/waitForHandoff.js +462 -0
- package/dist/tools/schemas/waitForHandoff.js.map +1 -0
- package/dist/tools/schemas/workspaceSnapshot.js +145 -0
- package/dist/tools/schemas/workspaceSnapshot.js.map +1 -0
- package/dist/tools/schemas/write.js +285 -0
- package/dist/tools/schemas/write.js.map +1 -0
- package/dist/transactions/atomicFs.js +438 -0
- package/dist/transactions/atomicFs.js.map +1 -0
- package/dist/transactions/atomicStateFile.js +190 -0
- package/dist/transactions/atomicStateFile.js.map +1 -0
- package/dist/transactions/engine.js +574 -0
- package/dist/transactions/engine.js.map +1 -0
- package/dist/transactions/index.js +12 -0
- package/dist/transactions/index.js.map +1 -0
- package/dist/transactions/installation.js +158 -0
- package/dist/transactions/installation.js.map +1 -0
- package/dist/transactions/manifestV2Store.js +96 -0
- package/dist/transactions/manifestV2Store.js.map +1 -0
- package/dist/transactions/participantRecovery.js +98 -0
- package/dist/transactions/participantRecovery.js.map +1 -0
- package/dist/transactions/recovery.js +513 -0
- package/dist/transactions/recovery.js.map +1 -0
- package/dist/transactions/schemas.js +365 -0
- package/dist/transactions/schemas.js.map +1 -0
- package/dist/transactions/stateRoot.js +63 -0
- package/dist/transactions/stateRoot.js.map +1 -0
- package/dist/transactions/types.js +11 -0
- package/dist/transactions/types.js.map +1 -0
- package/dist/transactions/workspaceLock.js +201 -0
- package/dist/transactions/workspaceLock.js.map +1 -0
- package/dist/workspaceOps.js +924 -0
- package/dist/workspaceOps.js.map +1 -0
- package/dist/worktrees/candidateWorkspace.js +566 -0
- package/dist/worktrees/candidateWorkspace.js.map +1 -0
- package/dist/worktrees/manager.js +258 -0
- package/dist/worktrees/manager.js.map +1 -0
- package/dist/worktrees/materializer.js +60 -0
- package/dist/worktrees/materializer.js.map +1 -0
- package/dist/worktrees/mergeExecute.js +498 -0
- package/dist/worktrees/mergeExecute.js.map +1 -0
- package/dist/worktrees/mergePlanStore.js +247 -0
- package/dist/worktrees/mergePlanStore.js.map +1 -0
- package/dist/worktrees/mergePrepare.js +709 -0
- package/dist/worktrees/mergePrepare.js.map +1 -0
- package/dist/worktrees/recovery.js +294 -0
- package/dist/worktrees/recovery.js.map +1 -0
- package/dist/worktrees/remove.js +296 -0
- package/dist/worktrees/remove.js.map +1 -0
- package/dist/worktrees/remover.js +57 -0
- package/dist/worktrees/remover.js.map +1 -0
- package/dist/worktrees/root.js +47 -0
- package/dist/worktrees/root.js.map +1 -0
- package/dist/worktrees/service.js +245 -0
- package/dist/worktrees/service.js.map +1 -0
- package/dist/worktrees/store.js +156 -0
- package/dist/worktrees/store.js.map +1 -0
- package/dist/worktrees/treeManifest.js +106 -0
- package/dist/worktrees/treeManifest.js.map +1 -0
- package/dist/worktrees/verificationReceipts.js +215 -0
- package/dist/worktrees/verificationReceipts.js.map +1 -0
- package/dist/worktrees/verificationTerminal.js +23 -0
- package/dist/worktrees/verificationTerminal.js.map +1 -0
- package/dist/worktrees/workspaceAuthority.js +64 -0
- package/dist/worktrees/workspaceAuthority.js.map +1 -0
- package/docs/favicon.svg +5 -0
- package/docs/index.html +624 -0
- package/docs/og.svg +52 -0
- package/docs/script.js +33 -0
- package/docs/star.svg +11 -0
- package/docs/styles.css +1571 -0
- package/docs/zh.html +428 -0
- package/package.json +121 -0
- package/scripts/analysis-cli-smoke.mjs +81 -0
- package/scripts/analysis-smoke.mjs +179 -0
- package/scripts/atomic-file.mjs +137 -0
- package/scripts/ci-change-classifier.mjs +59 -0
- package/scripts/ci-failure-summary.mjs +92 -0
- package/scripts/cloudflared-installer.mjs +215 -0
- package/scripts/cloudflared-release.mjs +63 -0
- package/scripts/codexgpt-entry.mjs +235 -0
- package/scripts/codexgpt.mjs +4987 -0
- package/scripts/connector-auth-output-shim.cjs +66 -0
- package/scripts/doctor-smoke.mjs +90 -0
- package/scripts/doctor.mjs +165 -0
- package/scripts/exact-head-ci.mjs +126 -0
- package/scripts/execute-handoff-smoke-platform-compat.mjs +38 -0
- package/scripts/execute-handoff-smoke.mjs +1117 -0
- package/scripts/g8-u-live-probe.mjs +208 -0
- package/scripts/http-smoke-compat.mjs +151 -0
- package/scripts/http-smoke.mjs +776 -0
- package/scripts/long-task-runner.mjs +1037 -0
- package/scripts/oauth-admin.mjs +1608 -0
- package/scripts/output-bounds.mjs +29 -0
- package/scripts/owned-temp-root.d.mts +50 -0
- package/scripts/owned-temp-root.mjs +567 -0
- package/scripts/phase-4a-smoke.mjs +36 -0
- package/scripts/policy-windows-spike.mjs +135 -0
- package/scripts/pro-apply.mjs +152 -0
- package/scripts/pro-bundle.mjs +121 -0
- package/scripts/pro-smoke.mjs +97 -0
- package/scripts/process-identity.mjs +67 -0
- package/scripts/repository-policy.mjs +166 -0
- package/scripts/run-and-summarize.mjs +134 -0
- package/scripts/run-smoke.mjs +52 -0
- package/scripts/run-with-cleanup.mjs +98 -0
- package/scripts/settings-smoke-platform-compat.mjs +85 -0
- package/scripts/settings-smoke.mjs +769 -0
- package/scripts/smoke-platform-compat.mjs +302 -0
- package/scripts/smoke.mjs +1180 -0
- package/scripts/stress-contract-compat.mjs +94 -0
- package/scripts/stress.mjs +882 -0
- package/scripts/test-domains.mjs +247 -0
- package/scripts/test-execution-profile-manifest.mjs +273 -0
- package/scripts/test-execution-profiles.mjs +147 -0
- package/scripts/test-performance-reporter.mjs +291 -0
- package/scripts/toolchain-manager.mjs +266 -0
- package/scripts/toolchains.json +19 -0
- package/scripts/windows-conpty-probe-child.mjs +82 -0
- package/scripts/windows-conpty-worker.ps1 +24 -0
- package/scripts/windows-credential-host-manifest.json +16 -0
- package/scripts/windows-credential-host-protocol-v1.json +16 -0
- package/scripts/windows-credential-host.cs +256 -0
- package/scripts/windows-credential-host.ps1 +26 -0
- package/scripts/windows-local-control-manifest.json +23 -0
- package/scripts/windows-local-control-spike.cs +738 -0
- package/scripts/windows-local-control-spike.mjs +415 -0
- package/scripts/windows-local-control-spike.ps1 +35 -0
- package/scripts/windows-local-control.cs +738 -0
- package/scripts/windows-local-control.ps1 +35 -0
- package/scripts/windows-native-api-inventory-v1.json +90 -0
- package/scripts/windows-process-host-manifest.json +20 -0
- package/scripts/windows-process-host-protocol-v1.json +59 -0
- package/scripts/windows-process-host.cs +2385 -0
- package/scripts/windows-process-host.ps1 +59 -0
- package/scripts/windows-realpath-shim.cjs +78 -0
|
@@ -0,0 +1,1068 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CONTRACT_V1_CHILD_TOOLS, CONTRACT_V2_CHILD_TOOLS, CONTRACT_V3_CHILD_TOOLS, CONTRACT_V4_CHILD_TOOLS, CONTRACT_V5_CHILD_TOOLS, canonicalToolsForVersion } from "../contracts/catalog.js";
|
|
3
|
+
import { queryAuditEventsInputV2Schema, queryAuditEventsResultV2Schema, queryAuditEventsInputV3Schema, queryAuditEventsResultV3Schema } from "../../audit/schemas.js";
|
|
4
|
+
import { applyPatchOutputSchema, applyPatchOutputSchemaV2 } from "./applyPatch.js";
|
|
5
|
+
import { bashOutputSchema } from "./bash.js";
|
|
6
|
+
import { closeWorkspaceOutputSchema } from "./closeWorkspace.js";
|
|
7
|
+
import { codexContextOutputSchema } from "./codexContext.js";
|
|
8
|
+
import { codexgptInventoryOutputSchema } from "./codexgptInventory.js";
|
|
9
|
+
import { codexgptSelfTestOutputSchema } from "./codexgptSelfTest.js";
|
|
10
|
+
import { codexSessionsOutputSchema } from "./codexSessions.js";
|
|
11
|
+
import { createToolMeta, toolErrorSchema, toolMetaSchema } from "./common.js";
|
|
12
|
+
import { editOutputSchema, editOutputSchemaV2 } from "./edit.js";
|
|
13
|
+
import { exportProContextOutputSchema } from "./exportProContext.js";
|
|
14
|
+
import { gitDiffOutputSchema, gitDiffOutputSchemaV4 } from "./gitDiff.js";
|
|
15
|
+
import { gitStatusOutputSchema, gitStatusOutputSchemaV4 } from "./gitStatus.js";
|
|
16
|
+
import { handoffToAgentOutputSchema } from "./handoffToAgent.js";
|
|
17
|
+
import { handoffToCodexOutputSchema } from "./handoffToCodex.js";
|
|
18
|
+
import { inspectWorkspaceOutputSchema } from "./inspectWorkspace.js";
|
|
19
|
+
import { listWorkspacesOutputSchema } from "./listWorkspaces.js";
|
|
20
|
+
import { loadSkillOutputSchema } from "./loadSkill.js";
|
|
21
|
+
import { openCurrentWorkspaceOutputSchema } from "./openCurrentWorkspace.js";
|
|
22
|
+
import { openWorkspaceOutputSchema } from "./openWorkspace.js";
|
|
23
|
+
import { readOutputSchema } from "./read.js";
|
|
24
|
+
import { readCodexSessionOutputSchema } from "./readCodexSession.js";
|
|
25
|
+
import { readHandoffOutputSchema } from "./readHandoff.js";
|
|
26
|
+
import { searchOutputSchema } from "./search.js";
|
|
27
|
+
import { serverConfigOutputSchema } from "./serverConfig.js";
|
|
28
|
+
import { showChangesOutputSchema } from "./showChanges.js";
|
|
29
|
+
import { treeOutputSchema } from "./tree.js";
|
|
30
|
+
import { waitForHandoffOutputSchema } from "./waitForHandoff.js";
|
|
31
|
+
import { workspaceSnapshotOutputSchema } from "./workspaceSnapshot.js";
|
|
32
|
+
import { writeOutputSchema, writeOutputSchemaV2 } from "./write.js";
|
|
33
|
+
import { undoChangeSetInputV2Schema, undoChangeSetOutputSchema } from "./undoChangeSet.js";
|
|
34
|
+
import { movePathsOutputSchema } from "./movePaths.js";
|
|
35
|
+
import { queryAuditEventsOutputSchema, queryAuditEventsOutputSchemaV3 as queryAuditEventsToolOutputSchemaV3, queryAuditEventsOutputSchemaV4 as queryAuditEventsToolOutputSchemaV4 } from "./queryAuditEvents.js";
|
|
36
|
+
import { openFullAccessWorkspaceOutputSchema } from "./openFullAccessWorkspace.js";
|
|
37
|
+
import { EXECUTION_OUTPUT_SCHEMAS, EXECUTION_OUTPUT_SCHEMAS_V4 } from "./execution.js";
|
|
38
|
+
import { gitLogOutputSchemaV4 } from "./gitLog.js";
|
|
39
|
+
import { gitBranchOutputSchemaV4 } from "./gitBranch.js";
|
|
40
|
+
import { gitCreateBranchOutputSchemaV4 } from "./gitCreateBranch.js";
|
|
41
|
+
import { gitStageOutputSchemaV4 } from "./gitStage.js";
|
|
42
|
+
import { gitCommitOutputSchemaV4 } from "./gitCommit.js";
|
|
43
|
+
import { gitRestoreOutputSchemaV4 } from "./gitRestore.js";
|
|
44
|
+
import { gitStashOutputSchemaV4 } from "./gitStash.js";
|
|
45
|
+
import { createTaskWorktreeOutputSchemaV4 } from "./createTaskWorktree.js";
|
|
46
|
+
import { listTaskWorktreesOutputSchemaV4 } from "./listTaskWorktrees.js";
|
|
47
|
+
import { getTaskWorktreeOutputSchemaV4 } from "./getTaskWorktree.js";
|
|
48
|
+
import { mergeTaskWorktreeOutputSchemaV4 } from "./mergeTaskWorktree.js";
|
|
49
|
+
import { removeTaskWorktreeOutputSchemaV4 } from "./removeTaskWorktree.js";
|
|
50
|
+
import { semanticOutputSchema } from "./semantic.js";
|
|
51
|
+
export const CANONICAL_CODEXGPT_CHILD_TOOLS_V1 = CONTRACT_V1_CHILD_TOOLS;
|
|
52
|
+
export const CANONICAL_CODEXGPT_CHILD_TOOLS_V2 = CONTRACT_V2_CHILD_TOOLS;
|
|
53
|
+
export const CANONICAL_CODEXGPT_CHILD_TOOLS_V3 = CONTRACT_V3_CHILD_TOOLS;
|
|
54
|
+
export const CANONICAL_CODEXGPT_CHILD_TOOLS_V4 = CONTRACT_V4_CHILD_TOOLS;
|
|
55
|
+
export const CANONICAL_CODEXGPT_CHILD_TOOLS_V5 = CONTRACT_V5_CHILD_TOOLS;
|
|
56
|
+
export const CANONICAL_CODEXGPT_CHILD_TOOLS = CANONICAL_CODEXGPT_CHILD_TOOLS_V1;
|
|
57
|
+
export function canonicalCodexGPTChildTools(version) {
|
|
58
|
+
return canonicalToolsForVersion(version);
|
|
59
|
+
}
|
|
60
|
+
// Versioned contract helpers. The server contract selector remains the sole
|
|
61
|
+
// authority for which exact V1/V2/V3 child universe is publicly registered.
|
|
62
|
+
export const queryAuditEventsInputSchemaV2 = queryAuditEventsInputV2Schema;
|
|
63
|
+
export const queryAuditEventsOutputSchemaV2 = queryAuditEventsResultV2Schema;
|
|
64
|
+
export const undoChangeSetInputSchemaV2 = undoChangeSetInputV2Schema;
|
|
65
|
+
export const undoChangeSetOutputSchemaV2 = undoChangeSetOutputSchema;
|
|
66
|
+
export const queryAuditEventsInputSchemaV3 = queryAuditEventsInputV3Schema;
|
|
67
|
+
export const queryAuditEventsOutputSchemaV3 = queryAuditEventsResultV3Schema;
|
|
68
|
+
export const CODEXGPT_ADDITIONAL_OUTPUT_SCHEMAS_V2 = Object.freeze({
|
|
69
|
+
query_audit_events: queryAuditEventsOutputSchema,
|
|
70
|
+
undo_change_set: undoChangeSetOutputSchema,
|
|
71
|
+
move_paths: movePathsOutputSchema
|
|
72
|
+
});
|
|
73
|
+
export const CODEXGPT_ACTION_ALIASES = Object.freeze({
|
|
74
|
+
open: "open_current_workspace",
|
|
75
|
+
snapshot: "workspace_snapshot",
|
|
76
|
+
changes: "show_changes",
|
|
77
|
+
inventory: "codexgpt_inventory",
|
|
78
|
+
handoff_poll: "wait_for_handoff",
|
|
79
|
+
pro_export: "export_pro_context",
|
|
80
|
+
agent_handoff: "handoff_to_agent",
|
|
81
|
+
codex_handoff: "handoff_to_codex"
|
|
82
|
+
});
|
|
83
|
+
const canonicalToolSchema = z.enum(CANONICAL_CODEXGPT_CHILD_TOOLS);
|
|
84
|
+
const canonicalToolSet = new Set(CANONICAL_CODEXGPT_CHILD_TOOLS);
|
|
85
|
+
export const CODEXGPT_ERROR_MESSAGES = Object.freeze({
|
|
86
|
+
ACTION_NOT_AVAILABLE: "The requested CodexGPT action is not available.",
|
|
87
|
+
ACTION_ARGUMENTS_INVALID: "The requested CodexGPT action arguments are invalid.",
|
|
88
|
+
CHILD_RESULT_INVALID: "The wrapped tool returned an invalid structured result.",
|
|
89
|
+
INTERNAL_ERROR: "CodexGPT could not complete the requested action."
|
|
90
|
+
});
|
|
91
|
+
const safeActionSchema = z.string().min(1).max(160).refine((value) => !/[\r\n\u0000-\u001f\u007f]/.test(value), "Action must be one control-safe line.");
|
|
92
|
+
const actionNotAvailableErrorSchema = toolErrorSchema.extend({
|
|
93
|
+
code: z.literal("ACTION_NOT_AVAILABLE"),
|
|
94
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_NOT_AVAILABLE),
|
|
95
|
+
retryable: z.literal(false),
|
|
96
|
+
details: z.object({ action: safeActionSchema }).strict()
|
|
97
|
+
}).strict();
|
|
98
|
+
const actionArgumentsInvalidErrorSchema = toolErrorSchema.extend({
|
|
99
|
+
code: z.literal("ACTION_ARGUMENTS_INVALID"),
|
|
100
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_ARGUMENTS_INVALID),
|
|
101
|
+
retryable: z.literal(false),
|
|
102
|
+
details: z.object({
|
|
103
|
+
action: safeActionSchema,
|
|
104
|
+
wrapped_tool: canonicalToolSchema
|
|
105
|
+
}).strict()
|
|
106
|
+
}).strict();
|
|
107
|
+
const childResultInvalidErrorSchema = toolErrorSchema.extend({
|
|
108
|
+
code: z.literal("CHILD_RESULT_INVALID"),
|
|
109
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.CHILD_RESULT_INVALID),
|
|
110
|
+
retryable: z.literal(false),
|
|
111
|
+
details: z.object({
|
|
112
|
+
action: safeActionSchema,
|
|
113
|
+
wrapped_tool: canonicalToolSchema
|
|
114
|
+
}).strict()
|
|
115
|
+
}).strict();
|
|
116
|
+
const internalErrorSchema = toolErrorSchema.extend({
|
|
117
|
+
code: z.literal("INTERNAL_ERROR"),
|
|
118
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.INTERNAL_ERROR),
|
|
119
|
+
retryable: z.literal(false),
|
|
120
|
+
details: z.object({}).strict()
|
|
121
|
+
}).strict();
|
|
122
|
+
const codexgptErrorSchema = z.union([
|
|
123
|
+
actionNotAvailableErrorSchema,
|
|
124
|
+
actionArgumentsInvalidErrorSchema,
|
|
125
|
+
childResultInvalidErrorSchema,
|
|
126
|
+
internalErrorSchema
|
|
127
|
+
]);
|
|
128
|
+
export const codexgptListActionsDataSchema = z.object({
|
|
129
|
+
actions: z.array(canonicalToolSchema),
|
|
130
|
+
action_count: z.number().int().nonnegative()
|
|
131
|
+
}).strict().superRefine((value, context) => {
|
|
132
|
+
if (value.action_count !== value.actions.length) {
|
|
133
|
+
context.addIssue({
|
|
134
|
+
code: z.ZodIssueCode.custom,
|
|
135
|
+
path: ["action_count"],
|
|
136
|
+
message: "action_count must equal actions.length."
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (new Set(value.actions).size !== value.actions.length) {
|
|
140
|
+
context.addIssue({
|
|
141
|
+
code: z.ZodIssueCode.custom,
|
|
142
|
+
path: ["actions"],
|
|
143
|
+
message: "actions must be unique."
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
const sorted = [...value.actions].sort();
|
|
147
|
+
if (sorted.some((action, index) => action !== value.actions[index])) {
|
|
148
|
+
context.addIssue({
|
|
149
|
+
code: z.ZodIssueCode.custom,
|
|
150
|
+
path: ["actions"],
|
|
151
|
+
message: "actions must be sorted."
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
const codexgptOwnedDataSchema = codexgptListActionsDataSchema;
|
|
156
|
+
export const codexgptOutputShape = {
|
|
157
|
+
codexgpt_tool: z.union([z.literal("codexgpt"), canonicalToolSchema]),
|
|
158
|
+
codexgpt_title: z.string().min(1),
|
|
159
|
+
ok: z.boolean(),
|
|
160
|
+
data: z.record(z.unknown()).nullable(),
|
|
161
|
+
error: z.union([codexgptErrorSchema, toolErrorSchema]).nullable(),
|
|
162
|
+
meta: toolMetaSchema,
|
|
163
|
+
codexgpt_super_action: safeActionSchema.optional(),
|
|
164
|
+
wrapped_tool: canonicalToolSchema.optional()
|
|
165
|
+
};
|
|
166
|
+
const codexgptOutputBaseSchema = z.object(codexgptOutputShape).strict();
|
|
167
|
+
const codexgptOwnedOutputSchema = z.object({
|
|
168
|
+
codexgpt_tool: z.literal("codexgpt"),
|
|
169
|
+
codexgpt_title: z.literal("CodexGPT"),
|
|
170
|
+
ok: z.boolean(),
|
|
171
|
+
data: codexgptOwnedDataSchema.nullable(),
|
|
172
|
+
error: codexgptErrorSchema.nullable(),
|
|
173
|
+
meta: toolMetaSchema
|
|
174
|
+
}).strict().superRefine((value, context) => {
|
|
175
|
+
if (value.ok) {
|
|
176
|
+
if (value.data === null) {
|
|
177
|
+
context.addIssue({
|
|
178
|
+
code: z.ZodIssueCode.custom,
|
|
179
|
+
path: ["data"],
|
|
180
|
+
message: "Successful codexgpt results require data."
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (value.error !== null) {
|
|
184
|
+
context.addIssue({
|
|
185
|
+
code: z.ZodIssueCode.custom,
|
|
186
|
+
path: ["error"],
|
|
187
|
+
message: "Successful codexgpt results require error to be null."
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (value.data !== null) {
|
|
193
|
+
context.addIssue({
|
|
194
|
+
code: z.ZodIssueCode.custom,
|
|
195
|
+
path: ["data"],
|
|
196
|
+
message: "Failed codexgpt results require data to be null."
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
if (value.error === null) {
|
|
200
|
+
context.addIssue({
|
|
201
|
+
code: z.ZodIssueCode.custom,
|
|
202
|
+
path: ["error"],
|
|
203
|
+
message: "Failed codexgpt results require an error object."
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
const childOutputSchemas = {
|
|
208
|
+
apply_patch: applyPatchOutputSchema,
|
|
209
|
+
bash: bashOutputSchema,
|
|
210
|
+
codex_context: codexContextOutputSchema,
|
|
211
|
+
codexgpt_inventory: codexgptInventoryOutputSchema,
|
|
212
|
+
codexgpt_self_test: codexgptSelfTestOutputSchema,
|
|
213
|
+
codex_sessions: codexSessionsOutputSchema,
|
|
214
|
+
edit: editOutputSchema,
|
|
215
|
+
export_pro_context: exportProContextOutputSchema,
|
|
216
|
+
git_diff: gitDiffOutputSchema,
|
|
217
|
+
git_status: gitStatusOutputSchema,
|
|
218
|
+
handoff_to_agent: handoffToAgentOutputSchema,
|
|
219
|
+
handoff_to_codex: handoffToCodexOutputSchema,
|
|
220
|
+
inspect_workspace: inspectWorkspaceOutputSchema,
|
|
221
|
+
list_workspaces: listWorkspacesOutputSchema,
|
|
222
|
+
close_workspace: closeWorkspaceOutputSchema,
|
|
223
|
+
load_skill: loadSkillOutputSchema,
|
|
224
|
+
open_current_workspace: openCurrentWorkspaceOutputSchema,
|
|
225
|
+
open_workspace: openWorkspaceOutputSchema,
|
|
226
|
+
read: readOutputSchema,
|
|
227
|
+
read_codex_session: readCodexSessionOutputSchema,
|
|
228
|
+
read_handoff: readHandoffOutputSchema,
|
|
229
|
+
search: searchOutputSchema,
|
|
230
|
+
server_config: serverConfigOutputSchema,
|
|
231
|
+
show_changes: showChangesOutputSchema,
|
|
232
|
+
tree: treeOutputSchema,
|
|
233
|
+
wait_for_handoff: waitForHandoffOutputSchema,
|
|
234
|
+
workspace_snapshot: workspaceSnapshotOutputSchema,
|
|
235
|
+
write: writeOutputSchema
|
|
236
|
+
};
|
|
237
|
+
export const CODEXGPT_CHILD_OUTPUT_SCHEMAS = Object.freeze(childOutputSchemas);
|
|
238
|
+
function stripWrapperFields(value) {
|
|
239
|
+
const { codexgpt_super_action: _action, wrapped_tool: _wrappedTool, ...child } = value;
|
|
240
|
+
return child;
|
|
241
|
+
}
|
|
242
|
+
export function resolveCodexGPTAction(action) {
|
|
243
|
+
if (canonicalToolSet.has(action))
|
|
244
|
+
return action;
|
|
245
|
+
return CODEXGPT_ACTION_ALIASES[action] ?? null;
|
|
246
|
+
}
|
|
247
|
+
export const codexgptOutputSchema = codexgptOutputBaseSchema.superRefine((value, context) => {
|
|
248
|
+
if (value.codexgpt_tool === "codexgpt") {
|
|
249
|
+
const owned = codexgptOwnedOutputSchema.safeParse(value);
|
|
250
|
+
if (!owned.success) {
|
|
251
|
+
context.addIssue({
|
|
252
|
+
code: z.ZodIssueCode.custom,
|
|
253
|
+
message: "Invalid wrapper-owned codexgpt result."
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (!value.codexgpt_super_action || !value.wrapped_tool) {
|
|
259
|
+
context.addIssue({
|
|
260
|
+
code: z.ZodIssueCode.custom,
|
|
261
|
+
message: "Wrapped child results require wrapper identity fields."
|
|
262
|
+
});
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
if (value.codexgpt_tool !== value.wrapped_tool) {
|
|
266
|
+
context.addIssue({
|
|
267
|
+
code: z.ZodIssueCode.custom,
|
|
268
|
+
path: ["wrapped_tool"],
|
|
269
|
+
message: "wrapped_tool must equal codexgpt_tool."
|
|
270
|
+
});
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
if (resolveCodexGPTAction(value.codexgpt_super_action) !== value.wrapped_tool) {
|
|
274
|
+
context.addIssue({
|
|
275
|
+
code: z.ZodIssueCode.custom,
|
|
276
|
+
path: ["codexgpt_super_action"],
|
|
277
|
+
message: "codexgpt_super_action must resolve to wrapped_tool."
|
|
278
|
+
});
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
const childSchema = childOutputSchemas[value.wrapped_tool];
|
|
282
|
+
if (!childSchema.safeParse(stripWrapperFields(value)).success) {
|
|
283
|
+
context.addIssue({
|
|
284
|
+
code: z.ZodIssueCode.custom,
|
|
285
|
+
message: "Wrapped child result does not match its exact child schema."
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
function safePublicAction(value) {
|
|
290
|
+
const normalized = String(value ?? "")
|
|
291
|
+
.replace(/[\r\n\u0000-\u001f\u007f]+/g, " ")
|
|
292
|
+
.replace(/\s+/g, " ")
|
|
293
|
+
.trim()
|
|
294
|
+
.slice(0, 160);
|
|
295
|
+
return normalized || "invalid-action";
|
|
296
|
+
}
|
|
297
|
+
export function createCodexGPTListActionsSuccess(actions, durationMs = 0) {
|
|
298
|
+
const uniqueActions = [...new Set(actions)];
|
|
299
|
+
for (const action of uniqueActions) {
|
|
300
|
+
if (!canonicalToolSet.has(action)) {
|
|
301
|
+
throw new Error("Invalid canonical CodexGPT child action.");
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
uniqueActions.sort();
|
|
305
|
+
return codexgptOutputSchema.parse({
|
|
306
|
+
codexgpt_tool: "codexgpt",
|
|
307
|
+
codexgpt_title: "CodexGPT",
|
|
308
|
+
ok: true,
|
|
309
|
+
data: {
|
|
310
|
+
actions: uniqueActions,
|
|
311
|
+
action_count: uniqueActions.length
|
|
312
|
+
},
|
|
313
|
+
error: null,
|
|
314
|
+
meta: createToolMeta(durationMs)
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
export function createCodexGPTFailure(failure, durationMs = 0) {
|
|
318
|
+
const details = failure.code === "ACTION_NOT_AVAILABLE"
|
|
319
|
+
? { action: safePublicAction(failure.details.action) }
|
|
320
|
+
: failure.code === "INTERNAL_ERROR"
|
|
321
|
+
? {}
|
|
322
|
+
: {
|
|
323
|
+
action: safePublicAction(failure.details.action),
|
|
324
|
+
wrapped_tool: failure.details.wrapped_tool
|
|
325
|
+
};
|
|
326
|
+
return codexgptOutputSchema.parse({
|
|
327
|
+
codexgpt_tool: "codexgpt",
|
|
328
|
+
codexgpt_title: "CodexGPT",
|
|
329
|
+
ok: false,
|
|
330
|
+
data: null,
|
|
331
|
+
error: {
|
|
332
|
+
code: failure.code,
|
|
333
|
+
message: CODEXGPT_ERROR_MESSAGES[failure.code],
|
|
334
|
+
retryable: false,
|
|
335
|
+
details
|
|
336
|
+
},
|
|
337
|
+
meta: createToolMeta(durationMs)
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
export function wrapCodexGPTChildResult(action, wrappedTool, childStructuredContent) {
|
|
341
|
+
if (resolveCodexGPTAction(action) !== wrappedTool) {
|
|
342
|
+
throw new Error("CodexGPT action and wrapped tool do not match.");
|
|
343
|
+
}
|
|
344
|
+
if (!childStructuredContent || typeof childStructuredContent !== "object" || Array.isArray(childStructuredContent)) {
|
|
345
|
+
throw new Error("CodexGPT child structured result must be an object.");
|
|
346
|
+
}
|
|
347
|
+
const child = childStructuredContent;
|
|
348
|
+
if ("codexgpt_super_action" in child || "wrapped_tool" in child) {
|
|
349
|
+
throw new Error("CodexGPT child structured result already contains wrapper fields.");
|
|
350
|
+
}
|
|
351
|
+
const childSchema = childOutputSchemas[wrappedTool];
|
|
352
|
+
const parsedChild = childSchema.parse(child);
|
|
353
|
+
return codexgptOutputSchema.parse({
|
|
354
|
+
...parsedChild,
|
|
355
|
+
codexgpt_super_action: safePublicAction(action),
|
|
356
|
+
wrapped_tool: wrappedTool
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
const canonicalToolSchemaV2 = z.enum(CANONICAL_CODEXGPT_CHILD_TOOLS_V2);
|
|
360
|
+
const canonicalToolSetV2 = new Set(CANONICAL_CODEXGPT_CHILD_TOOLS_V2);
|
|
361
|
+
const actionNotAvailableErrorSchemaV2 = toolErrorSchema.extend({
|
|
362
|
+
code: z.literal("ACTION_NOT_AVAILABLE"),
|
|
363
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_NOT_AVAILABLE),
|
|
364
|
+
retryable: z.literal(false),
|
|
365
|
+
details: z.object({ action: safeActionSchema }).strict()
|
|
366
|
+
}).strict();
|
|
367
|
+
const actionArgumentsInvalidErrorSchemaV2 = toolErrorSchema.extend({
|
|
368
|
+
code: z.literal("ACTION_ARGUMENTS_INVALID"),
|
|
369
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_ARGUMENTS_INVALID),
|
|
370
|
+
retryable: z.literal(false),
|
|
371
|
+
details: z.object({
|
|
372
|
+
action: safeActionSchema,
|
|
373
|
+
wrapped_tool: canonicalToolSchemaV2
|
|
374
|
+
}).strict()
|
|
375
|
+
}).strict();
|
|
376
|
+
const childResultInvalidErrorSchemaV2 = toolErrorSchema.extend({
|
|
377
|
+
code: z.literal("CHILD_RESULT_INVALID"),
|
|
378
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.CHILD_RESULT_INVALID),
|
|
379
|
+
retryable: z.literal(false),
|
|
380
|
+
details: z.object({
|
|
381
|
+
action: safeActionSchema,
|
|
382
|
+
wrapped_tool: canonicalToolSchemaV2
|
|
383
|
+
}).strict()
|
|
384
|
+
}).strict();
|
|
385
|
+
const codexgptErrorSchemaV2 = z.union([
|
|
386
|
+
actionNotAvailableErrorSchemaV2,
|
|
387
|
+
actionArgumentsInvalidErrorSchemaV2,
|
|
388
|
+
childResultInvalidErrorSchemaV2,
|
|
389
|
+
internalErrorSchema
|
|
390
|
+
]);
|
|
391
|
+
const codexgptListActionsDataSchemaV2 = z.object({
|
|
392
|
+
actions: z.array(canonicalToolSchemaV2),
|
|
393
|
+
action_count: z.number().int().nonnegative()
|
|
394
|
+
}).strict().superRefine((value, context) => {
|
|
395
|
+
if (value.action_count !== value.actions.length) {
|
|
396
|
+
context.addIssue({
|
|
397
|
+
code: z.ZodIssueCode.custom,
|
|
398
|
+
path: ["action_count"],
|
|
399
|
+
message: "action_count must equal actions.length."
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
if (new Set(value.actions).size !== value.actions.length) {
|
|
403
|
+
context.addIssue({
|
|
404
|
+
code: z.ZodIssueCode.custom,
|
|
405
|
+
path: ["actions"],
|
|
406
|
+
message: "actions must be unique."
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
const sorted = [...value.actions].sort();
|
|
410
|
+
if (sorted.some((action, index) => action !== value.actions[index])) {
|
|
411
|
+
context.addIssue({
|
|
412
|
+
code: z.ZodIssueCode.custom,
|
|
413
|
+
path: ["actions"],
|
|
414
|
+
message: "actions must be sorted."
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
const codexgptOwnedOutputSchemaV2 = z.object({
|
|
419
|
+
codexgpt_tool: z.literal("codexgpt"),
|
|
420
|
+
codexgpt_title: z.literal("CodexGPT"),
|
|
421
|
+
ok: z.boolean(),
|
|
422
|
+
data: codexgptListActionsDataSchemaV2.nullable(),
|
|
423
|
+
error: codexgptErrorSchemaV2.nullable(),
|
|
424
|
+
meta: toolMetaSchema
|
|
425
|
+
}).strict().superRefine((value, context) => {
|
|
426
|
+
if (value.ok) {
|
|
427
|
+
if (value.data === null) {
|
|
428
|
+
context.addIssue({
|
|
429
|
+
code: z.ZodIssueCode.custom,
|
|
430
|
+
path: ["data"],
|
|
431
|
+
message: "Successful codexgpt results require data."
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
if (value.error !== null) {
|
|
435
|
+
context.addIssue({
|
|
436
|
+
code: z.ZodIssueCode.custom,
|
|
437
|
+
path: ["error"],
|
|
438
|
+
message: "Successful codexgpt results require error to be null."
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
if (value.data !== null) {
|
|
444
|
+
context.addIssue({
|
|
445
|
+
code: z.ZodIssueCode.custom,
|
|
446
|
+
path: ["data"],
|
|
447
|
+
message: "Failed codexgpt results require data to be null."
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
if (value.error === null) {
|
|
451
|
+
context.addIssue({
|
|
452
|
+
code: z.ZodIssueCode.custom,
|
|
453
|
+
path: ["error"],
|
|
454
|
+
message: "Failed codexgpt results require an error object."
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
const childOutputSchemasV2 = {
|
|
459
|
+
...childOutputSchemas,
|
|
460
|
+
write: writeOutputSchemaV2,
|
|
461
|
+
edit: editOutputSchemaV2,
|
|
462
|
+
apply_patch: applyPatchOutputSchemaV2,
|
|
463
|
+
...CODEXGPT_ADDITIONAL_OUTPUT_SCHEMAS_V2
|
|
464
|
+
};
|
|
465
|
+
export const CODEXGPT_CHILD_OUTPUT_SCHEMAS_V2 = Object.freeze(childOutputSchemasV2);
|
|
466
|
+
export function resolveCodexGPTActionV2(action) {
|
|
467
|
+
if (canonicalToolSetV2.has(action))
|
|
468
|
+
return action;
|
|
469
|
+
return CODEXGPT_ACTION_ALIASES[action] ?? null;
|
|
470
|
+
}
|
|
471
|
+
export const codexgptOutputShapeV2 = {
|
|
472
|
+
codexgpt_tool: z.union([z.literal("codexgpt"), canonicalToolSchemaV2]),
|
|
473
|
+
codexgpt_title: z.string().min(1),
|
|
474
|
+
ok: z.boolean(),
|
|
475
|
+
data: z.record(z.unknown()).nullable(),
|
|
476
|
+
error: z.union([codexgptErrorSchemaV2, toolErrorSchema]).nullable(),
|
|
477
|
+
meta: toolMetaSchema,
|
|
478
|
+
codexgpt_super_action: safeActionSchema.optional(),
|
|
479
|
+
wrapped_tool: canonicalToolSchemaV2.optional()
|
|
480
|
+
};
|
|
481
|
+
const codexgptOutputBaseSchemaV2 = z.object(codexgptOutputShapeV2).strict();
|
|
482
|
+
export const codexgptOutputSchemaV2 = codexgptOutputBaseSchemaV2.superRefine((value, context) => {
|
|
483
|
+
if (value.codexgpt_tool === "codexgpt") {
|
|
484
|
+
if (!codexgptOwnedOutputSchemaV2.safeParse(value).success) {
|
|
485
|
+
context.addIssue({
|
|
486
|
+
code: z.ZodIssueCode.custom,
|
|
487
|
+
message: "Invalid wrapper-owned codexgpt V2 result."
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
if (!value.codexgpt_super_action || !value.wrapped_tool) {
|
|
493
|
+
context.addIssue({
|
|
494
|
+
code: z.ZodIssueCode.custom,
|
|
495
|
+
message: "Wrapped V2 child results require wrapper identity fields."
|
|
496
|
+
});
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
if (value.codexgpt_tool !== value.wrapped_tool) {
|
|
500
|
+
context.addIssue({
|
|
501
|
+
code: z.ZodIssueCode.custom,
|
|
502
|
+
path: ["wrapped_tool"],
|
|
503
|
+
message: "wrapped_tool must equal codexgpt_tool."
|
|
504
|
+
});
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
if (resolveCodexGPTActionV2(value.codexgpt_super_action) !== value.wrapped_tool) {
|
|
508
|
+
context.addIssue({
|
|
509
|
+
code: z.ZodIssueCode.custom,
|
|
510
|
+
path: ["codexgpt_super_action"],
|
|
511
|
+
message: "codexgpt_super_action must resolve to wrapped_tool."
|
|
512
|
+
});
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
const child = stripWrapperFields(value);
|
|
516
|
+
const schema = childOutputSchemasV2[value.wrapped_tool];
|
|
517
|
+
if (!schema.safeParse(child).success) {
|
|
518
|
+
context.addIssue({
|
|
519
|
+
code: z.ZodIssueCode.custom,
|
|
520
|
+
message: "Wrapped child result does not match its exact child schema."
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
export function createCodexGPTListActionsSuccessV2(actions, durationMs = 0) {
|
|
525
|
+
const uniqueActions = [...new Set(actions)];
|
|
526
|
+
for (const action of uniqueActions) {
|
|
527
|
+
if (!canonicalToolSetV2.has(action)) {
|
|
528
|
+
throw new Error("Invalid canonical CodexGPT V2 child action.");
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
uniqueActions.sort();
|
|
532
|
+
return codexgptOwnedOutputSchemaV2.parse({
|
|
533
|
+
codexgpt_tool: "codexgpt",
|
|
534
|
+
codexgpt_title: "CodexGPT",
|
|
535
|
+
ok: true,
|
|
536
|
+
data: {
|
|
537
|
+
actions: uniqueActions,
|
|
538
|
+
action_count: uniqueActions.length
|
|
539
|
+
},
|
|
540
|
+
error: null,
|
|
541
|
+
meta: createToolMeta(durationMs)
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
export function createCodexGPTFailureV2(failure, durationMs = 0) {
|
|
545
|
+
const details = failure.code === "ACTION_NOT_AVAILABLE"
|
|
546
|
+
? { action: safePublicAction(failure.details.action) }
|
|
547
|
+
: failure.code === "INTERNAL_ERROR"
|
|
548
|
+
? {}
|
|
549
|
+
: {
|
|
550
|
+
action: safePublicAction(failure.details.action),
|
|
551
|
+
wrapped_tool: failure.details.wrapped_tool
|
|
552
|
+
};
|
|
553
|
+
return codexgptOwnedOutputSchemaV2.parse({
|
|
554
|
+
codexgpt_tool: "codexgpt",
|
|
555
|
+
codexgpt_title: "CodexGPT",
|
|
556
|
+
ok: false,
|
|
557
|
+
data: null,
|
|
558
|
+
error: {
|
|
559
|
+
code: failure.code,
|
|
560
|
+
message: CODEXGPT_ERROR_MESSAGES[failure.code],
|
|
561
|
+
retryable: false,
|
|
562
|
+
details
|
|
563
|
+
},
|
|
564
|
+
meta: createToolMeta(durationMs)
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
export function wrapCodexGPTChildResultV2(action, wrappedTool, childStructuredContent) {
|
|
568
|
+
if (resolveCodexGPTActionV2(action) !== wrappedTool) {
|
|
569
|
+
throw new Error("CodexGPT V2 action and wrapped tool do not match.");
|
|
570
|
+
}
|
|
571
|
+
if (!childStructuredContent || typeof childStructuredContent !== "object" || Array.isArray(childStructuredContent)) {
|
|
572
|
+
throw new Error("CodexGPT V2 child structured result must be an object.");
|
|
573
|
+
}
|
|
574
|
+
const child = childStructuredContent;
|
|
575
|
+
if ("codexgpt_super_action" in child || "wrapped_tool" in child) {
|
|
576
|
+
throw new Error("CodexGPT V2 child structured result already contains wrapper fields.");
|
|
577
|
+
}
|
|
578
|
+
const parsedChild = childOutputSchemasV2[wrappedTool].parse(child);
|
|
579
|
+
return codexgptOutputSchemaV2.parse({
|
|
580
|
+
...parsedChild,
|
|
581
|
+
codexgpt_super_action: safePublicAction(action),
|
|
582
|
+
wrapped_tool: wrappedTool
|
|
583
|
+
});
|
|
584
|
+
}
|
|
585
|
+
const canonicalToolSchemaV3 = z.enum([...CANONICAL_CODEXGPT_CHILD_TOOLS_V3]);
|
|
586
|
+
const canonicalToolSetV3 = new Set(CANONICAL_CODEXGPT_CHILD_TOOLS_V3);
|
|
587
|
+
const childOutputSchemasV3 = Object.fromEntries([
|
|
588
|
+
...Object.entries(childOutputSchemasV2).filter(([name]) => name !== "bash"),
|
|
589
|
+
["query_audit_events", queryAuditEventsToolOutputSchemaV3],
|
|
590
|
+
["open_full_access_workspace", openFullAccessWorkspaceOutputSchema],
|
|
591
|
+
...Object.entries(EXECUTION_OUTPUT_SCHEMAS)
|
|
592
|
+
]);
|
|
593
|
+
export const CODEXGPT_CHILD_OUTPUT_SCHEMAS_V3 = Object.freeze(childOutputSchemasV3);
|
|
594
|
+
export function resolveCodexGPTActionV3(action) {
|
|
595
|
+
if (canonicalToolSetV3.has(action))
|
|
596
|
+
return action;
|
|
597
|
+
const alias = CODEXGPT_ACTION_ALIASES[action];
|
|
598
|
+
return alias && canonicalToolSetV3.has(alias) ? alias : null;
|
|
599
|
+
}
|
|
600
|
+
const actionNotAvailableErrorSchemaV3 = toolErrorSchema.extend({
|
|
601
|
+
code: z.literal("ACTION_NOT_AVAILABLE"),
|
|
602
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_NOT_AVAILABLE),
|
|
603
|
+
retryable: z.literal(false),
|
|
604
|
+
details: z.object({ action: safeActionSchema }).strict()
|
|
605
|
+
}).strict();
|
|
606
|
+
const actionArgumentsInvalidErrorSchemaV3 = toolErrorSchema.extend({
|
|
607
|
+
code: z.literal("ACTION_ARGUMENTS_INVALID"),
|
|
608
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_ARGUMENTS_INVALID),
|
|
609
|
+
retryable: z.literal(false),
|
|
610
|
+
details: z.object({
|
|
611
|
+
action: safeActionSchema,
|
|
612
|
+
wrapped_tool: canonicalToolSchemaV3
|
|
613
|
+
}).strict()
|
|
614
|
+
}).strict();
|
|
615
|
+
const childResultInvalidErrorSchemaV3 = toolErrorSchema.extend({
|
|
616
|
+
code: z.literal("CHILD_RESULT_INVALID"),
|
|
617
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.CHILD_RESULT_INVALID),
|
|
618
|
+
retryable: z.literal(false),
|
|
619
|
+
details: z.object({
|
|
620
|
+
action: safeActionSchema,
|
|
621
|
+
wrapped_tool: canonicalToolSchemaV3
|
|
622
|
+
}).strict()
|
|
623
|
+
}).strict();
|
|
624
|
+
const codexgptErrorSchemaV3 = z.union([
|
|
625
|
+
actionNotAvailableErrorSchemaV3,
|
|
626
|
+
actionArgumentsInvalidErrorSchemaV3,
|
|
627
|
+
childResultInvalidErrorSchemaV3,
|
|
628
|
+
internalErrorSchema
|
|
629
|
+
]);
|
|
630
|
+
const codexgptListActionsDataSchemaV3 = z.object({
|
|
631
|
+
actions: z.array(canonicalToolSchemaV3),
|
|
632
|
+
action_count: z.number().int().nonnegative()
|
|
633
|
+
}).strict().superRefine((value, context) => {
|
|
634
|
+
if (value.action_count !== value.actions.length) {
|
|
635
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: ["action_count"], message: "action_count must equal actions.length." });
|
|
636
|
+
}
|
|
637
|
+
if (new Set(value.actions).size !== value.actions.length) {
|
|
638
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: ["actions"], message: "actions must be unique." });
|
|
639
|
+
}
|
|
640
|
+
const sorted = [...value.actions].sort();
|
|
641
|
+
if (sorted.some((action, index) => action !== value.actions[index])) {
|
|
642
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: ["actions"], message: "actions must be sorted." });
|
|
643
|
+
}
|
|
644
|
+
});
|
|
645
|
+
const codexgptOwnedOutputSchemaV3 = z.object({
|
|
646
|
+
codexgpt_tool: z.literal("codexgpt"),
|
|
647
|
+
codexgpt_title: z.literal("CodexGPT"),
|
|
648
|
+
ok: z.boolean(),
|
|
649
|
+
data: codexgptListActionsDataSchemaV3.nullable(),
|
|
650
|
+
error: codexgptErrorSchemaV3.nullable(),
|
|
651
|
+
meta: toolMetaSchema
|
|
652
|
+
}).strict().superRefine((value, context) => {
|
|
653
|
+
if (value.ok && (value.data === null || value.error !== null)) {
|
|
654
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Successful CodexGPT V3 results require data and no error." });
|
|
655
|
+
}
|
|
656
|
+
if (!value.ok && (value.data !== null || value.error === null)) {
|
|
657
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Failed CodexGPT V3 results require an error and no data." });
|
|
658
|
+
}
|
|
659
|
+
});
|
|
660
|
+
export const codexgptOutputShapeV3 = {
|
|
661
|
+
codexgpt_tool: z.union([z.literal("codexgpt"), canonicalToolSchemaV3]),
|
|
662
|
+
codexgpt_title: z.string().min(1),
|
|
663
|
+
ok: z.boolean(),
|
|
664
|
+
data: z.record(z.unknown()).nullable(),
|
|
665
|
+
error: z.union([codexgptErrorSchemaV3, toolErrorSchema]).nullable(),
|
|
666
|
+
meta: toolMetaSchema,
|
|
667
|
+
codexgpt_super_action: safeActionSchema.optional(),
|
|
668
|
+
wrapped_tool: canonicalToolSchemaV3.optional()
|
|
669
|
+
};
|
|
670
|
+
const codexgptOutputBaseSchemaV3 = z.object(codexgptOutputShapeV3).strict();
|
|
671
|
+
export const codexgptOutputSchemaV3 = codexgptOutputBaseSchemaV3.superRefine((value, context) => {
|
|
672
|
+
if (value.codexgpt_tool === "codexgpt") {
|
|
673
|
+
if (!codexgptOwnedOutputSchemaV3.safeParse(value).success) {
|
|
674
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Invalid wrapper-owned CodexGPT V3 result." });
|
|
675
|
+
}
|
|
676
|
+
return;
|
|
677
|
+
}
|
|
678
|
+
if (!value.codexgpt_super_action || !value.wrapped_tool) {
|
|
679
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Wrapped V3 child results require wrapper identity fields." });
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
682
|
+
if (value.codexgpt_tool !== value.wrapped_tool ||
|
|
683
|
+
resolveCodexGPTActionV3(value.codexgpt_super_action) !== value.wrapped_tool) {
|
|
684
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "CodexGPT V3 action and wrapped tool do not match." });
|
|
685
|
+
return;
|
|
686
|
+
}
|
|
687
|
+
if (!childOutputSchemasV3[value.wrapped_tool].safeParse(stripWrapperFields(value)).success) {
|
|
688
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Wrapped V3 child result does not match its exact child schema." });
|
|
689
|
+
}
|
|
690
|
+
});
|
|
691
|
+
export function createCodexGPTListActionsSuccessV3(actions, durationMs = 0) {
|
|
692
|
+
const uniqueActions = [...new Set(actions)];
|
|
693
|
+
for (const action of uniqueActions) {
|
|
694
|
+
if (!canonicalToolSetV3.has(action))
|
|
695
|
+
throw new Error("Invalid canonical CodexGPT V3 child action.");
|
|
696
|
+
}
|
|
697
|
+
uniqueActions.sort();
|
|
698
|
+
return codexgptOwnedOutputSchemaV3.parse({
|
|
699
|
+
codexgpt_tool: "codexgpt",
|
|
700
|
+
codexgpt_title: "CodexGPT",
|
|
701
|
+
ok: true,
|
|
702
|
+
data: { actions: uniqueActions, action_count: uniqueActions.length },
|
|
703
|
+
error: null,
|
|
704
|
+
meta: createToolMeta(durationMs)
|
|
705
|
+
});
|
|
706
|
+
}
|
|
707
|
+
export function createCodexGPTFailureV3(failure, durationMs = 0) {
|
|
708
|
+
const details = failure.code === "ACTION_NOT_AVAILABLE"
|
|
709
|
+
? { action: safePublicAction(failure.details.action) }
|
|
710
|
+
: failure.code === "INTERNAL_ERROR"
|
|
711
|
+
? {}
|
|
712
|
+
: { action: safePublicAction(failure.details.action), wrapped_tool: failure.details.wrapped_tool };
|
|
713
|
+
return codexgptOwnedOutputSchemaV3.parse({
|
|
714
|
+
codexgpt_tool: "codexgpt",
|
|
715
|
+
codexgpt_title: "CodexGPT",
|
|
716
|
+
ok: false,
|
|
717
|
+
data: null,
|
|
718
|
+
error: {
|
|
719
|
+
code: failure.code,
|
|
720
|
+
message: CODEXGPT_ERROR_MESSAGES[failure.code],
|
|
721
|
+
retryable: false,
|
|
722
|
+
details
|
|
723
|
+
},
|
|
724
|
+
meta: createToolMeta(durationMs)
|
|
725
|
+
});
|
|
726
|
+
}
|
|
727
|
+
export function wrapCodexGPTChildResultV3(action, wrappedTool, childStructuredContent) {
|
|
728
|
+
if (resolveCodexGPTActionV3(action) !== wrappedTool) {
|
|
729
|
+
throw new Error("CodexGPT V3 action and wrapped tool do not match.");
|
|
730
|
+
}
|
|
731
|
+
if (!childStructuredContent || typeof childStructuredContent !== "object" || Array.isArray(childStructuredContent)) {
|
|
732
|
+
throw new Error("CodexGPT V3 child structured result must be an object.");
|
|
733
|
+
}
|
|
734
|
+
const child = childStructuredContent;
|
|
735
|
+
if ("codexgpt_super_action" in child || "wrapped_tool" in child) {
|
|
736
|
+
throw new Error("CodexGPT V3 child structured result already contains wrapper fields.");
|
|
737
|
+
}
|
|
738
|
+
const parsedChild = childOutputSchemasV3[wrappedTool].parse(child);
|
|
739
|
+
return codexgptOutputSchemaV3.parse({
|
|
740
|
+
...parsedChild,
|
|
741
|
+
codexgpt_super_action: safePublicAction(action),
|
|
742
|
+
wrapped_tool: wrappedTool
|
|
743
|
+
});
|
|
744
|
+
}
|
|
745
|
+
const canonicalToolSchemaV4 = z.enum([...CANONICAL_CODEXGPT_CHILD_TOOLS_V4]);
|
|
746
|
+
const canonicalToolSetV4 = new Set(CANONICAL_CODEXGPT_CHILD_TOOLS_V4);
|
|
747
|
+
const childOutputSchemasV4 = Object.freeze({
|
|
748
|
+
...childOutputSchemasV3,
|
|
749
|
+
run_command: EXECUTION_OUTPUT_SCHEMAS_V4.run_command,
|
|
750
|
+
read_process_output: EXECUTION_OUTPUT_SCHEMAS_V4.read_process_output,
|
|
751
|
+
git_status: gitStatusOutputSchemaV4,
|
|
752
|
+
git_diff: gitDiffOutputSchemaV4,
|
|
753
|
+
query_audit_events: queryAuditEventsToolOutputSchemaV4,
|
|
754
|
+
git_log: gitLogOutputSchemaV4,
|
|
755
|
+
git_branch: gitBranchOutputSchemaV4,
|
|
756
|
+
git_create_branch: gitCreateBranchOutputSchemaV4,
|
|
757
|
+
git_stage: gitStageOutputSchemaV4,
|
|
758
|
+
git_commit: gitCommitOutputSchemaV4,
|
|
759
|
+
git_restore: gitRestoreOutputSchemaV4,
|
|
760
|
+
git_stash: gitStashOutputSchemaV4,
|
|
761
|
+
create_task_worktree: createTaskWorktreeOutputSchemaV4,
|
|
762
|
+
list_task_worktrees: listTaskWorktreesOutputSchemaV4,
|
|
763
|
+
get_task_worktree: getTaskWorktreeOutputSchemaV4,
|
|
764
|
+
merge_task_worktree: mergeTaskWorktreeOutputSchemaV4,
|
|
765
|
+
remove_task_worktree: removeTaskWorktreeOutputSchemaV4
|
|
766
|
+
});
|
|
767
|
+
export const CODEXGPT_CHILD_OUTPUT_SCHEMAS_V4 = childOutputSchemasV4;
|
|
768
|
+
export function resolveCodexGPTActionV4(action) {
|
|
769
|
+
if (canonicalToolSetV4.has(action))
|
|
770
|
+
return action;
|
|
771
|
+
const alias = CODEXGPT_ACTION_ALIASES[action];
|
|
772
|
+
return alias && canonicalToolSetV4.has(alias) ? alias : null;
|
|
773
|
+
}
|
|
774
|
+
const actionNotAvailableErrorSchemaV4 = toolErrorSchema.extend({
|
|
775
|
+
code: z.literal("ACTION_NOT_AVAILABLE"),
|
|
776
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_NOT_AVAILABLE),
|
|
777
|
+
retryable: z.literal(false),
|
|
778
|
+
details: z.object({ action: safeActionSchema }).strict()
|
|
779
|
+
}).strict();
|
|
780
|
+
const actionArgumentsInvalidErrorSchemaV4 = toolErrorSchema.extend({
|
|
781
|
+
code: z.literal("ACTION_ARGUMENTS_INVALID"),
|
|
782
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_ARGUMENTS_INVALID),
|
|
783
|
+
retryable: z.literal(false),
|
|
784
|
+
details: z.object({
|
|
785
|
+
action: safeActionSchema,
|
|
786
|
+
wrapped_tool: canonicalToolSchemaV4
|
|
787
|
+
}).strict()
|
|
788
|
+
}).strict();
|
|
789
|
+
const childResultInvalidErrorSchemaV4 = toolErrorSchema.extend({
|
|
790
|
+
code: z.literal("CHILD_RESULT_INVALID"),
|
|
791
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.CHILD_RESULT_INVALID),
|
|
792
|
+
retryable: z.literal(false),
|
|
793
|
+
details: z.object({
|
|
794
|
+
action: safeActionSchema,
|
|
795
|
+
wrapped_tool: canonicalToolSchemaV4
|
|
796
|
+
}).strict()
|
|
797
|
+
}).strict();
|
|
798
|
+
const codexgptErrorSchemaV4 = z.union([
|
|
799
|
+
actionNotAvailableErrorSchemaV4,
|
|
800
|
+
actionArgumentsInvalidErrorSchemaV4,
|
|
801
|
+
childResultInvalidErrorSchemaV4,
|
|
802
|
+
internalErrorSchema
|
|
803
|
+
]);
|
|
804
|
+
const codexgptListActionsDataSchemaV4 = z.object({
|
|
805
|
+
actions: z.array(canonicalToolSchemaV4),
|
|
806
|
+
action_count: z.number().int().nonnegative()
|
|
807
|
+
}).strict().superRefine((value, context) => {
|
|
808
|
+
if (value.action_count !== value.actions.length) {
|
|
809
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: ["action_count"], message: "action_count must equal actions.length." });
|
|
810
|
+
}
|
|
811
|
+
if (new Set(value.actions).size !== value.actions.length) {
|
|
812
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: ["actions"], message: "actions must be unique." });
|
|
813
|
+
}
|
|
814
|
+
const sorted = [...value.actions].sort();
|
|
815
|
+
if (sorted.some((action, index) => action !== value.actions[index])) {
|
|
816
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: ["actions"], message: "actions must be sorted." });
|
|
817
|
+
}
|
|
818
|
+
});
|
|
819
|
+
const codexgptOwnedOutputSchemaV4 = z.object({
|
|
820
|
+
codexgpt_tool: z.literal("codexgpt"),
|
|
821
|
+
codexgpt_title: z.literal("CodexGPT"),
|
|
822
|
+
ok: z.boolean(),
|
|
823
|
+
data: codexgptListActionsDataSchemaV4.nullable(),
|
|
824
|
+
error: codexgptErrorSchemaV4.nullable(),
|
|
825
|
+
meta: toolMetaSchema
|
|
826
|
+
}).strict().superRefine((value, context) => {
|
|
827
|
+
if (value.ok && (value.data === null || value.error !== null)) {
|
|
828
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Successful CodexGPT V4 results require data and no error." });
|
|
829
|
+
}
|
|
830
|
+
if (!value.ok && (value.data !== null || value.error === null)) {
|
|
831
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Failed CodexGPT V4 results require an error and no data." });
|
|
832
|
+
}
|
|
833
|
+
});
|
|
834
|
+
export const codexgptOutputShapeV4 = {
|
|
835
|
+
codexgpt_tool: z.union([z.literal("codexgpt"), canonicalToolSchemaV4]),
|
|
836
|
+
codexgpt_title: z.string().min(1),
|
|
837
|
+
ok: z.boolean(),
|
|
838
|
+
data: z.record(z.unknown()).nullable(),
|
|
839
|
+
error: z.union([codexgptErrorSchemaV4, toolErrorSchema]).nullable(),
|
|
840
|
+
meta: toolMetaSchema,
|
|
841
|
+
codexgpt_super_action: safeActionSchema.optional(),
|
|
842
|
+
wrapped_tool: canonicalToolSchemaV4.optional()
|
|
843
|
+
};
|
|
844
|
+
const codexgptOutputBaseSchemaV4 = z.object(codexgptOutputShapeV4).strict();
|
|
845
|
+
export const codexgptOutputSchemaV4 = codexgptOutputBaseSchemaV4.superRefine((value, context) => {
|
|
846
|
+
if (value.codexgpt_tool === "codexgpt") {
|
|
847
|
+
if (!codexgptOwnedOutputSchemaV4.safeParse(value).success) {
|
|
848
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Invalid wrapper-owned CodexGPT V4 result." });
|
|
849
|
+
}
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
852
|
+
if (!value.codexgpt_super_action || !value.wrapped_tool) {
|
|
853
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Wrapped V4 child results require wrapper identity fields." });
|
|
854
|
+
return;
|
|
855
|
+
}
|
|
856
|
+
if (value.codexgpt_tool !== value.wrapped_tool ||
|
|
857
|
+
resolveCodexGPTActionV4(value.codexgpt_super_action) !== value.wrapped_tool) {
|
|
858
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "CodexGPT V4 action and wrapped tool do not match." });
|
|
859
|
+
return;
|
|
860
|
+
}
|
|
861
|
+
if (!childOutputSchemasV4[value.wrapped_tool].safeParse(stripWrapperFields(value)).success) {
|
|
862
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Wrapped V4 child result does not match its exact child schema." });
|
|
863
|
+
}
|
|
864
|
+
});
|
|
865
|
+
export function createCodexGPTListActionsSuccessV4(actions, durationMs = 0) {
|
|
866
|
+
const uniqueActions = [...new Set(actions)];
|
|
867
|
+
for (const action of uniqueActions) {
|
|
868
|
+
if (!canonicalToolSetV4.has(action))
|
|
869
|
+
throw new Error("Invalid canonical CodexGPT V4 child action.");
|
|
870
|
+
}
|
|
871
|
+
uniqueActions.sort();
|
|
872
|
+
return codexgptOwnedOutputSchemaV4.parse({
|
|
873
|
+
codexgpt_tool: "codexgpt",
|
|
874
|
+
codexgpt_title: "CodexGPT",
|
|
875
|
+
ok: true,
|
|
876
|
+
data: { actions: uniqueActions, action_count: uniqueActions.length },
|
|
877
|
+
error: null,
|
|
878
|
+
meta: createToolMeta(durationMs)
|
|
879
|
+
});
|
|
880
|
+
}
|
|
881
|
+
export function createCodexGPTFailureV4(failure, durationMs = 0) {
|
|
882
|
+
const details = failure.code === "ACTION_NOT_AVAILABLE"
|
|
883
|
+
? { action: safePublicAction(failure.details.action) }
|
|
884
|
+
: failure.code === "INTERNAL_ERROR"
|
|
885
|
+
? {}
|
|
886
|
+
: { action: safePublicAction(failure.details.action), wrapped_tool: failure.details.wrapped_tool };
|
|
887
|
+
return codexgptOwnedOutputSchemaV4.parse({
|
|
888
|
+
codexgpt_tool: "codexgpt",
|
|
889
|
+
codexgpt_title: "CodexGPT",
|
|
890
|
+
ok: false,
|
|
891
|
+
data: null,
|
|
892
|
+
error: {
|
|
893
|
+
code: failure.code,
|
|
894
|
+
message: CODEXGPT_ERROR_MESSAGES[failure.code],
|
|
895
|
+
retryable: false,
|
|
896
|
+
details
|
|
897
|
+
},
|
|
898
|
+
meta: createToolMeta(durationMs)
|
|
899
|
+
});
|
|
900
|
+
}
|
|
901
|
+
export function wrapCodexGPTChildResultV4(action, wrappedTool, childStructuredContent) {
|
|
902
|
+
if (resolveCodexGPTActionV4(action) !== wrappedTool) {
|
|
903
|
+
throw new Error("CodexGPT V4 action and wrapped tool do not match.");
|
|
904
|
+
}
|
|
905
|
+
if (!childStructuredContent || typeof childStructuredContent !== "object" || Array.isArray(childStructuredContent)) {
|
|
906
|
+
throw new Error("CodexGPT V4 child structured result must be an object.");
|
|
907
|
+
}
|
|
908
|
+
const child = childStructuredContent;
|
|
909
|
+
if ("codexgpt_super_action" in child || "wrapped_tool" in child) {
|
|
910
|
+
throw new Error("CodexGPT V4 child structured result already contains wrapper fields.");
|
|
911
|
+
}
|
|
912
|
+
const parsedChild = childOutputSchemasV4[wrappedTool].parse(child);
|
|
913
|
+
return codexgptOutputSchemaV4.parse({
|
|
914
|
+
...parsedChild,
|
|
915
|
+
codexgpt_super_action: safePublicAction(action),
|
|
916
|
+
wrapped_tool: wrappedTool
|
|
917
|
+
});
|
|
918
|
+
}
|
|
919
|
+
const canonicalToolSchemaV5 = z.enum([...CANONICAL_CODEXGPT_CHILD_TOOLS_V5]);
|
|
920
|
+
const canonicalToolSetV5 = new Set(CANONICAL_CODEXGPT_CHILD_TOOLS_V5);
|
|
921
|
+
const childOutputSchemasV5 = Object.freeze({
|
|
922
|
+
...childOutputSchemasV4,
|
|
923
|
+
semantic: semanticOutputSchema
|
|
924
|
+
});
|
|
925
|
+
export const CODEXGPT_CHILD_OUTPUT_SCHEMAS_V5 = childOutputSchemasV5;
|
|
926
|
+
export function resolveCodexGPTActionV5(action) {
|
|
927
|
+
if (canonicalToolSetV5.has(action))
|
|
928
|
+
return action;
|
|
929
|
+
const alias = CODEXGPT_ACTION_ALIASES[action];
|
|
930
|
+
return alias && canonicalToolSetV5.has(alias) ? alias : null;
|
|
931
|
+
}
|
|
932
|
+
const codexgptErrorSchemaV5 = z.union([
|
|
933
|
+
toolErrorSchema.extend({
|
|
934
|
+
code: z.literal("ACTION_NOT_AVAILABLE"),
|
|
935
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_NOT_AVAILABLE),
|
|
936
|
+
retryable: z.literal(false),
|
|
937
|
+
details: z.object({ action: safeActionSchema }).strict()
|
|
938
|
+
}).strict(),
|
|
939
|
+
toolErrorSchema.extend({
|
|
940
|
+
code: z.literal("ACTION_ARGUMENTS_INVALID"),
|
|
941
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.ACTION_ARGUMENTS_INVALID),
|
|
942
|
+
retryable: z.literal(false),
|
|
943
|
+
details: z.object({ action: safeActionSchema, wrapped_tool: canonicalToolSchemaV5 }).strict()
|
|
944
|
+
}).strict(),
|
|
945
|
+
toolErrorSchema.extend({
|
|
946
|
+
code: z.literal("CHILD_RESULT_INVALID"),
|
|
947
|
+
message: z.literal(CODEXGPT_ERROR_MESSAGES.CHILD_RESULT_INVALID),
|
|
948
|
+
retryable: z.literal(false),
|
|
949
|
+
details: z.object({ action: safeActionSchema, wrapped_tool: canonicalToolSchemaV5 }).strict()
|
|
950
|
+
}).strict(),
|
|
951
|
+
internalErrorSchema
|
|
952
|
+
]);
|
|
953
|
+
const codexgptListActionsDataSchemaV5 = z.object({
|
|
954
|
+
actions: z.array(canonicalToolSchemaV5),
|
|
955
|
+
action_count: z.number().int().nonnegative()
|
|
956
|
+
}).strict().superRefine((value, context) => {
|
|
957
|
+
if (value.action_count !== value.actions.length) {
|
|
958
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: ["action_count"], message: "action_count must equal actions.length." });
|
|
959
|
+
}
|
|
960
|
+
if (new Set(value.actions).size !== value.actions.length) {
|
|
961
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: ["actions"], message: "actions must be unique." });
|
|
962
|
+
}
|
|
963
|
+
const sorted = [...value.actions].sort();
|
|
964
|
+
if (sorted.some((action, index) => action !== value.actions[index])) {
|
|
965
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: ["actions"], message: "actions must be sorted." });
|
|
966
|
+
}
|
|
967
|
+
});
|
|
968
|
+
const codexgptOwnedOutputSchemaV5 = z.object({
|
|
969
|
+
codexgpt_tool: z.literal("codexgpt"),
|
|
970
|
+
codexgpt_title: z.literal("CodexGPT"),
|
|
971
|
+
ok: z.boolean(),
|
|
972
|
+
data: codexgptListActionsDataSchemaV5.nullable(),
|
|
973
|
+
error: codexgptErrorSchemaV5.nullable(),
|
|
974
|
+
meta: toolMetaSchema
|
|
975
|
+
}).strict().superRefine((value, context) => {
|
|
976
|
+
if (value.ok && (value.data === null || value.error !== null)) {
|
|
977
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Successful CodexGPT V5 results require data and no error." });
|
|
978
|
+
}
|
|
979
|
+
if (!value.ok && (value.data !== null || value.error === null)) {
|
|
980
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Failed CodexGPT V5 results require an error and no data." });
|
|
981
|
+
}
|
|
982
|
+
});
|
|
983
|
+
export const codexgptOutputShapeV5 = {
|
|
984
|
+
codexgpt_tool: z.union([z.literal("codexgpt"), canonicalToolSchemaV5]),
|
|
985
|
+
codexgpt_title: z.string().min(1),
|
|
986
|
+
ok: z.boolean(),
|
|
987
|
+
data: z.record(z.unknown()).nullable(),
|
|
988
|
+
error: z.union([codexgptErrorSchemaV5, toolErrorSchema]).nullable(),
|
|
989
|
+
meta: toolMetaSchema,
|
|
990
|
+
codexgpt_super_action: safeActionSchema.optional(),
|
|
991
|
+
wrapped_tool: canonicalToolSchemaV5.optional()
|
|
992
|
+
};
|
|
993
|
+
const codexgptOutputBaseSchemaV5 = z.object(codexgptOutputShapeV5).strict();
|
|
994
|
+
export const codexgptOutputSchemaV5 = codexgptOutputBaseSchemaV5.superRefine((value, context) => {
|
|
995
|
+
if (value.codexgpt_tool === "codexgpt") {
|
|
996
|
+
if (!codexgptOwnedOutputSchemaV5.safeParse(value).success) {
|
|
997
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Invalid wrapper-owned CodexGPT V5 result." });
|
|
998
|
+
}
|
|
999
|
+
return;
|
|
1000
|
+
}
|
|
1001
|
+
if (!value.codexgpt_super_action || !value.wrapped_tool) {
|
|
1002
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Wrapped V5 child results require wrapper identity fields." });
|
|
1003
|
+
return;
|
|
1004
|
+
}
|
|
1005
|
+
if (value.codexgpt_tool !== value.wrapped_tool ||
|
|
1006
|
+
resolveCodexGPTActionV5(value.codexgpt_super_action) !== value.wrapped_tool) {
|
|
1007
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "CodexGPT V5 action and wrapped tool do not match." });
|
|
1008
|
+
return;
|
|
1009
|
+
}
|
|
1010
|
+
if (!childOutputSchemasV5[value.wrapped_tool].safeParse(stripWrapperFields(value)).success) {
|
|
1011
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "Wrapped V5 child result does not match its exact child schema." });
|
|
1012
|
+
}
|
|
1013
|
+
});
|
|
1014
|
+
export function createCodexGPTListActionsSuccessV5(actions, durationMs = 0) {
|
|
1015
|
+
const uniqueActions = [...new Set(actions)];
|
|
1016
|
+
for (const action of uniqueActions) {
|
|
1017
|
+
if (!canonicalToolSetV5.has(action))
|
|
1018
|
+
throw new Error("Invalid canonical CodexGPT V5 child action.");
|
|
1019
|
+
}
|
|
1020
|
+
uniqueActions.sort();
|
|
1021
|
+
return codexgptOwnedOutputSchemaV5.parse({
|
|
1022
|
+
codexgpt_tool: "codexgpt",
|
|
1023
|
+
codexgpt_title: "CodexGPT",
|
|
1024
|
+
ok: true,
|
|
1025
|
+
data: { actions: uniqueActions, action_count: uniqueActions.length },
|
|
1026
|
+
error: null,
|
|
1027
|
+
meta: createToolMeta(durationMs)
|
|
1028
|
+
});
|
|
1029
|
+
}
|
|
1030
|
+
export function createCodexGPTFailureV5(failure, durationMs = 0) {
|
|
1031
|
+
const details = failure.code === "ACTION_NOT_AVAILABLE"
|
|
1032
|
+
? { action: safePublicAction(failure.details.action) }
|
|
1033
|
+
: failure.code === "INTERNAL_ERROR"
|
|
1034
|
+
? {}
|
|
1035
|
+
: { action: safePublicAction(failure.details.action), wrapped_tool: failure.details.wrapped_tool };
|
|
1036
|
+
return codexgptOwnedOutputSchemaV5.parse({
|
|
1037
|
+
codexgpt_tool: "codexgpt",
|
|
1038
|
+
codexgpt_title: "CodexGPT",
|
|
1039
|
+
ok: false,
|
|
1040
|
+
data: null,
|
|
1041
|
+
error: {
|
|
1042
|
+
code: failure.code,
|
|
1043
|
+
message: CODEXGPT_ERROR_MESSAGES[failure.code],
|
|
1044
|
+
retryable: false,
|
|
1045
|
+
details
|
|
1046
|
+
},
|
|
1047
|
+
meta: createToolMeta(durationMs)
|
|
1048
|
+
});
|
|
1049
|
+
}
|
|
1050
|
+
export function wrapCodexGPTChildResultV5(action, wrappedTool, childStructuredContent) {
|
|
1051
|
+
if (resolveCodexGPTActionV5(action) !== wrappedTool) {
|
|
1052
|
+
throw new Error("CodexGPT V5 action and wrapped tool do not match.");
|
|
1053
|
+
}
|
|
1054
|
+
if (!childStructuredContent || typeof childStructuredContent !== "object" || Array.isArray(childStructuredContent)) {
|
|
1055
|
+
throw new Error("CodexGPT V5 child structured result must be an object.");
|
|
1056
|
+
}
|
|
1057
|
+
const child = childStructuredContent;
|
|
1058
|
+
if ("codexgpt_super_action" in child || "wrapped_tool" in child) {
|
|
1059
|
+
throw new Error("CodexGPT V5 child structured result already contains wrapper fields.");
|
|
1060
|
+
}
|
|
1061
|
+
const parsedChild = childOutputSchemasV5[wrappedTool].parse(child);
|
|
1062
|
+
return codexgptOutputSchemaV5.parse({
|
|
1063
|
+
...parsedChild,
|
|
1064
|
+
codexgpt_super_action: safePublicAction(action),
|
|
1065
|
+
wrapped_tool: wrappedTool
|
|
1066
|
+
});
|
|
1067
|
+
}
|
|
1068
|
+
//# sourceMappingURL=codexgpt.js.map
|