@excitedjs/tm 1.1.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/bin/tm +76 -0
- package/package.json +39 -0
- package/resolver-register.mjs +7 -0
- package/resolver.mjs +86 -0
- package/src/cli/context.ts +63 -0
- package/src/cli/dispatch.ts +444 -0
- package/src/cli/errors.ts +45 -0
- package/src/cli/parse.ts +265 -0
- package/src/cli.ts +12 -0
- package/src/codex-protocol/AbsolutePathBuf.ts +14 -0
- package/src/codex-protocol/AgentPath.ts +5 -0
- package/src/codex-protocol/ApplyPatchApprovalParams.ts +21 -0
- package/src/codex-protocol/ApplyPatchApprovalResponse.ts +6 -0
- package/src/codex-protocol/AuthMode.ts +8 -0
- package/src/codex-protocol/AutoCompactTokenLimitScope.ts +9 -0
- package/src/codex-protocol/ClientInfo.ts +5 -0
- package/src/codex-protocol/ClientNotification.ts +5 -0
- package/src/codex-protocol/ClientRequest.ts +110 -0
- package/src/codex-protocol/CollaborationMode.ts +10 -0
- package/src/codex-protocol/ContentItem.ts +6 -0
- package/src/codex-protocol/ConversationGitInfo.ts +5 -0
- package/src/codex-protocol/ConversationSummary.ts +8 -0
- package/src/codex-protocol/ExecCommandApprovalParams.ts +16 -0
- package/src/codex-protocol/ExecCommandApprovalResponse.ts +6 -0
- package/src/codex-protocol/ExecPolicyAmendment.ts +12 -0
- package/src/codex-protocol/FileChange.ts +5 -0
- package/src/codex-protocol/ForcedLoginMethod.ts +5 -0
- package/src/codex-protocol/FunctionCallOutputBody.ts +6 -0
- package/src/codex-protocol/FunctionCallOutputContentItem.ts +10 -0
- package/src/codex-protocol/FuzzyFileSearchMatchType.ts +5 -0
- package/src/codex-protocol/FuzzyFileSearchParams.ts +5 -0
- package/src/codex-protocol/FuzzyFileSearchResponse.ts +6 -0
- package/src/codex-protocol/FuzzyFileSearchResult.ts +9 -0
- package/src/codex-protocol/FuzzyFileSearchSessionCompletedNotification.ts +5 -0
- package/src/codex-protocol/FuzzyFileSearchSessionStartParams.ts +5 -0
- package/src/codex-protocol/FuzzyFileSearchSessionStartResponse.ts +5 -0
- package/src/codex-protocol/FuzzyFileSearchSessionStopParams.ts +5 -0
- package/src/codex-protocol/FuzzyFileSearchSessionStopResponse.ts +5 -0
- package/src/codex-protocol/FuzzyFileSearchSessionUpdateParams.ts +5 -0
- package/src/codex-protocol/FuzzyFileSearchSessionUpdateResponse.ts +5 -0
- package/src/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.ts +6 -0
- package/src/codex-protocol/GetAuthStatusParams.ts +5 -0
- package/src/codex-protocol/GetAuthStatusResponse.ts +6 -0
- package/src/codex-protocol/GetConversationSummaryParams.ts +6 -0
- package/src/codex-protocol/GetConversationSummaryResponse.ts +6 -0
- package/src/codex-protocol/GitDiffToRemoteParams.ts +5 -0
- package/src/codex-protocol/GitDiffToRemoteResponse.ts +6 -0
- package/src/codex-protocol/GitSha.ts +5 -0
- package/src/codex-protocol/ImageDetail.ts +5 -0
- package/src/codex-protocol/InitializeCapabilities.ts +21 -0
- package/src/codex-protocol/InitializeParams.ts +7 -0
- package/src/codex-protocol/InitializeResponse.ts +20 -0
- package/src/codex-protocol/InputModality.ts +8 -0
- package/src/codex-protocol/InternalSessionSource.ts +5 -0
- package/src/codex-protocol/LocalShellAction.ts +6 -0
- package/src/codex-protocol/LocalShellExecAction.ts +5 -0
- package/src/codex-protocol/LocalShellStatus.ts +5 -0
- package/src/codex-protocol/MessagePhase.ts +11 -0
- package/src/codex-protocol/ModeKind.ts +8 -0
- package/src/codex-protocol/NetworkPolicyAmendment.ts +6 -0
- package/src/codex-protocol/NetworkPolicyRuleAction.ts +5 -0
- package/src/codex-protocol/ParsedCommand.ts +12 -0
- package/src/codex-protocol/Personality.ts +5 -0
- package/src/codex-protocol/PlanType.ts +5 -0
- package/src/codex-protocol/RealtimeConversationVersion.ts +5 -0
- package/src/codex-protocol/RealtimeOutputModality.ts +5 -0
- package/src/codex-protocol/RealtimeVoice.ts +5 -0
- package/src/codex-protocol/RealtimeVoicesList.ts +6 -0
- package/src/codex-protocol/ReasoningEffort.ts +8 -0
- package/src/codex-protocol/ReasoningItemContent.ts +5 -0
- package/src/codex-protocol/ReasoningItemReasoningSummary.ts +5 -0
- package/src/codex-protocol/ReasoningSummary.ts +10 -0
- package/src/codex-protocol/RequestId.ts +5 -0
- package/src/codex-protocol/Resource.ts +9 -0
- package/src/codex-protocol/ResourceContent.ts +17 -0
- package/src/codex-protocol/ResourceTemplate.ts +9 -0
- package/src/codex-protocol/ResponseItem.ts +17 -0
- package/src/codex-protocol/ReviewDecision.ts +10 -0
- package/src/codex-protocol/ServerNotification.ts +73 -0
- package/src/codex-protocol/ServerRequest.ts +19 -0
- package/src/codex-protocol/SessionSource.ts +7 -0
- package/src/codex-protocol/Settings.ts +9 -0
- package/src/codex-protocol/SubAgentSource.ts +7 -0
- package/src/codex-protocol/ThreadId.ts +5 -0
- package/src/codex-protocol/ThreadMemoryMode.ts +5 -0
- package/src/codex-protocol/Tool.ts +9 -0
- package/src/codex-protocol/Verbosity.ts +9 -0
- package/src/codex-protocol/WebSearchAction.ts +5 -0
- package/src/codex-protocol/WebSearchContextSize.ts +5 -0
- package/src/codex-protocol/WebSearchLocation.ts +5 -0
- package/src/codex-protocol/WebSearchMode.ts +5 -0
- package/src/codex-protocol/WebSearchToolConfig.ts +7 -0
- package/src/codex-protocol/index.ts +86 -0
- package/src/codex-protocol/serde_json/JsonValue.ts +5 -0
- package/src/codex-protocol/v2/Account.ts +6 -0
- package/src/codex-protocol/v2/AccountLoginCompletedNotification.ts +5 -0
- package/src/codex-protocol/v2/AccountRateLimitsUpdatedNotification.ts +6 -0
- package/src/codex-protocol/v2/AccountUpdatedNotification.ts +7 -0
- package/src/codex-protocol/v2/ActivePermissionProfile.ts +15 -0
- package/src/codex-protocol/v2/AddCreditsNudgeCreditType.ts +5 -0
- package/src/codex-protocol/v2/AddCreditsNudgeEmailStatus.ts +5 -0
- package/src/codex-protocol/v2/AdditionalFileSystemPermissions.ts +15 -0
- package/src/codex-protocol/v2/AdditionalNetworkPermissions.ts +5 -0
- package/src/codex-protocol/v2/AdditionalPermissionProfile.ts +11 -0
- package/src/codex-protocol/v2/AgentMessageDeltaNotification.ts +5 -0
- package/src/codex-protocol/v2/AnalyticsConfig.ts +6 -0
- package/src/codex-protocol/v2/AppBranding.ts +8 -0
- package/src/codex-protocol/v2/AppInfo.ts +19 -0
- package/src/codex-protocol/v2/AppListUpdatedNotification.ts +9 -0
- package/src/codex-protocol/v2/AppMetadata.ts +7 -0
- package/src/codex-protocol/v2/AppReview.ts +5 -0
- package/src/codex-protocol/v2/AppScreenshot.ts +5 -0
- package/src/codex-protocol/v2/AppSummary.ts +8 -0
- package/src/codex-protocol/v2/AppToolApproval.ts +5 -0
- package/src/codex-protocol/v2/AppToolsConfig.ts +6 -0
- package/src/codex-protocol/v2/ApprovalsReviewer.ts +12 -0
- package/src/codex-protocol/v2/AppsConfig.ts +8 -0
- package/src/codex-protocol/v2/AppsDefaultConfig.ts +5 -0
- package/src/codex-protocol/v2/AppsListParams.ts +24 -0
- package/src/codex-protocol/v2/AppsListResponse.ts +14 -0
- package/src/codex-protocol/v2/AskForApproval.ts +5 -0
- package/src/codex-protocol/v2/AttestationGenerateParams.ts +5 -0
- package/src/codex-protocol/v2/AttestationGenerateResponse.ts +9 -0
- package/src/codex-protocol/v2/AutoReviewDecisionSource.ts +8 -0
- package/src/codex-protocol/v2/ByteRange.ts +5 -0
- package/src/codex-protocol/v2/CancelLoginAccountParams.ts +5 -0
- package/src/codex-protocol/v2/CancelLoginAccountResponse.ts +6 -0
- package/src/codex-protocol/v2/CancelLoginAccountStatus.ts +5 -0
- package/src/codex-protocol/v2/ChatgptAuthTokensRefreshParams.ts +16 -0
- package/src/codex-protocol/v2/ChatgptAuthTokensRefreshReason.ts +5 -0
- package/src/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.ts +5 -0
- package/src/codex-protocol/v2/CodexErrorInfo.ts +12 -0
- package/src/codex-protocol/v2/CollabAgentState.ts +6 -0
- package/src/codex-protocol/v2/CollabAgentStatus.ts +5 -0
- package/src/codex-protocol/v2/CollabAgentTool.ts +5 -0
- package/src/codex-protocol/v2/CollabAgentToolCallStatus.ts +5 -0
- package/src/codex-protocol/v2/CollaborationModeListParams.ts +8 -0
- package/src/codex-protocol/v2/CollaborationModeListResponse.ts +9 -0
- package/src/codex-protocol/v2/CollaborationModeMask.ts +10 -0
- package/src/codex-protocol/v2/CommandAction.ts +6 -0
- package/src/codex-protocol/v2/CommandExecOutputDeltaNotification.ts +30 -0
- package/src/codex-protocol/v2/CommandExecOutputStream.ts +8 -0
- package/src/codex-protocol/v2/CommandExecParams.ts +105 -0
- package/src/codex-protocol/v2/CommandExecResizeParams.ts +18 -0
- package/src/codex-protocol/v2/CommandExecResizeResponse.ts +8 -0
- package/src/codex-protocol/v2/CommandExecResponse.ts +24 -0
- package/src/codex-protocol/v2/CommandExecTerminalSize.ts +16 -0
- package/src/codex-protocol/v2/CommandExecTerminateParams.ts +13 -0
- package/src/codex-protocol/v2/CommandExecTerminateResponse.ts +8 -0
- package/src/codex-protocol/v2/CommandExecWriteParams.ts +22 -0
- package/src/codex-protocol/v2/CommandExecWriteResponse.ts +8 -0
- package/src/codex-protocol/v2/CommandExecutionApprovalDecision.ts +7 -0
- package/src/codex-protocol/v2/CommandExecutionOutputDeltaNotification.ts +5 -0
- package/src/codex-protocol/v2/CommandExecutionRequestApprovalParams.ts +62 -0
- package/src/codex-protocol/v2/CommandExecutionRequestApprovalResponse.ts +6 -0
- package/src/codex-protocol/v2/CommandExecutionSource.ts +5 -0
- package/src/codex-protocol/v2/CommandExecutionStatus.ts +5 -0
- package/src/codex-protocol/v2/CommandMigration.ts +5 -0
- package/src/codex-protocol/v2/ComputerUseRequirements.ts +5 -0
- package/src/codex-protocol/v2/Config.ts +26 -0
- package/src/codex-protocol/v2/ConfigBatchWriteParams.ts +14 -0
- package/src/codex-protocol/v2/ConfigEdit.ts +7 -0
- package/src/codex-protocol/v2/ConfigLayer.ts +7 -0
- package/src/codex-protocol/v2/ConfigLayerMetadata.ts +6 -0
- package/src/codex-protocol/v2/ConfigLayerSource.ts +21 -0
- package/src/codex-protocol/v2/ConfigReadParams.ts +11 -0
- package/src/codex-protocol/v2/ConfigReadResponse.ts +8 -0
- package/src/codex-protocol/v2/ConfigRequirements.ts +13 -0
- package/src/codex-protocol/v2/ConfigRequirementsReadResponse.ts +10 -0
- package/src/codex-protocol/v2/ConfigValueWriteParams.ts +11 -0
- package/src/codex-protocol/v2/ConfigWarningNotification.ts +22 -0
- package/src/codex-protocol/v2/ConfigWriteResponse.ts +12 -0
- package/src/codex-protocol/v2/ConfiguredHookHandler.ts +5 -0
- package/src/codex-protocol/v2/ConfiguredHookMatcherGroup.ts +6 -0
- package/src/codex-protocol/v2/ContextCompactedNotification.ts +8 -0
- package/src/codex-protocol/v2/CreditsSnapshot.ts +5 -0
- package/src/codex-protocol/v2/DeprecationNoticeNotification.ts +13 -0
- package/src/codex-protocol/v2/DynamicToolCallOutputContentItem.ts +5 -0
- package/src/codex-protocol/v2/DynamicToolCallParams.ts +6 -0
- package/src/codex-protocol/v2/DynamicToolCallResponse.ts +6 -0
- package/src/codex-protocol/v2/DynamicToolCallStatus.ts +5 -0
- package/src/codex-protocol/v2/DynamicToolSpec.ts +6 -0
- package/src/codex-protocol/v2/EnvironmentAddParams.ts +5 -0
- package/src/codex-protocol/v2/EnvironmentAddResponse.ts +5 -0
- package/src/codex-protocol/v2/ErrorNotification.ts +6 -0
- package/src/codex-protocol/v2/ExecPolicyAmendment.ts +5 -0
- package/src/codex-protocol/v2/ExperimentalFeature.ts +37 -0
- package/src/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.ts +12 -0
- package/src/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.ts +9 -0
- package/src/codex-protocol/v2/ExperimentalFeatureListParams.ts +19 -0
- package/src/codex-protocol/v2/ExperimentalFeatureListResponse.ts +11 -0
- package/src/codex-protocol/v2/ExperimentalFeatureStage.ts +5 -0
- package/src/codex-protocol/v2/ExternalAgentConfigDetectParams.ts +13 -0
- package/src/codex-protocol/v2/ExternalAgentConfigDetectResponse.ts +6 -0
- package/src/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.ts +5 -0
- package/src/codex-protocol/v2/ExternalAgentConfigImportParams.ts +6 -0
- package/src/codex-protocol/v2/ExternalAgentConfigImportResponse.ts +5 -0
- package/src/codex-protocol/v2/ExternalAgentConfigMigrationItem.ts +11 -0
- package/src/codex-protocol/v2/ExternalAgentConfigMigrationItemType.ts +5 -0
- package/src/codex-protocol/v2/FeedbackUploadParams.ts +5 -0
- package/src/codex-protocol/v2/FeedbackUploadResponse.ts +5 -0
- package/src/codex-protocol/v2/FileChangeApprovalDecision.ts +5 -0
- package/src/codex-protocol/v2/FileChangeOutputDeltaNotification.ts +10 -0
- package/src/codex-protocol/v2/FileChangePatchUpdatedNotification.ts +6 -0
- package/src/codex-protocol/v2/FileChangeRequestApprovalParams.ts +18 -0
- package/src/codex-protocol/v2/FileChangeRequestApprovalResponse.ts +6 -0
- package/src/codex-protocol/v2/FileSystemAccessMode.ts +5 -0
- package/src/codex-protocol/v2/FileSystemPath.ts +7 -0
- package/src/codex-protocol/v2/FileSystemSandboxEntry.ts +7 -0
- package/src/codex-protocol/v2/FileSystemSpecialPath.ts +5 -0
- package/src/codex-protocol/v2/FileUpdateChange.ts +6 -0
- package/src/codex-protocol/v2/ForcedChatgptWorkspaceIds.ts +8 -0
- package/src/codex-protocol/v2/FsChangedNotification.ts +17 -0
- package/src/codex-protocol/v2/FsCopyParams.ts +21 -0
- package/src/codex-protocol/v2/FsCopyResponse.ts +8 -0
- package/src/codex-protocol/v2/FsCreateDirectoryParams.ts +17 -0
- package/src/codex-protocol/v2/FsCreateDirectoryResponse.ts +8 -0
- package/src/codex-protocol/v2/FsGetMetadataParams.ts +13 -0
- package/src/codex-protocol/v2/FsGetMetadataResponse.ts +28 -0
- package/src/codex-protocol/v2/FsReadDirectoryEntry.ts +20 -0
- package/src/codex-protocol/v2/FsReadDirectoryParams.ts +13 -0
- package/src/codex-protocol/v2/FsReadDirectoryResponse.ts +13 -0
- package/src/codex-protocol/v2/FsReadFileParams.ts +13 -0
- package/src/codex-protocol/v2/FsReadFileResponse.ts +12 -0
- package/src/codex-protocol/v2/FsRemoveParams.ts +21 -0
- package/src/codex-protocol/v2/FsRemoveResponse.ts +8 -0
- package/src/codex-protocol/v2/FsUnwatchParams.ts +12 -0
- package/src/codex-protocol/v2/FsUnwatchResponse.ts +8 -0
- package/src/codex-protocol/v2/FsWatchParams.ts +17 -0
- package/src/codex-protocol/v2/FsWatchResponse.ts +13 -0
- package/src/codex-protocol/v2/FsWriteFileParams.ts +17 -0
- package/src/codex-protocol/v2/FsWriteFileResponse.ts +8 -0
- package/src/codex-protocol/v2/GetAccountParams.ts +13 -0
- package/src/codex-protocol/v2/GetAccountRateLimitsResponse.ts +14 -0
- package/src/codex-protocol/v2/GetAccountResponse.ts +6 -0
- package/src/codex-protocol/v2/GitInfo.ts +5 -0
- package/src/codex-protocol/v2/GrantedPermissionProfile.ts +7 -0
- package/src/codex-protocol/v2/GuardianApprovalReview.ts +13 -0
- package/src/codex-protocol/v2/GuardianApprovalReviewAction.ts +9 -0
- package/src/codex-protocol/v2/GuardianApprovalReviewStatus.ts +8 -0
- package/src/codex-protocol/v2/GuardianCommandSource.ts +5 -0
- package/src/codex-protocol/v2/GuardianRiskLevel.ts +8 -0
- package/src/codex-protocol/v2/GuardianUserAuthorization.ts +8 -0
- package/src/codex-protocol/v2/GuardianWarningNotification.ts +13 -0
- package/src/codex-protocol/v2/HookCompletedNotification.ts +6 -0
- package/src/codex-protocol/v2/HookErrorInfo.ts +5 -0
- package/src/codex-protocol/v2/HookEventName.ts +5 -0
- package/src/codex-protocol/v2/HookExecutionMode.ts +5 -0
- package/src/codex-protocol/v2/HookHandlerType.ts +5 -0
- package/src/codex-protocol/v2/HookMetadata.ts +10 -0
- package/src/codex-protocol/v2/HookMigration.ts +5 -0
- package/src/codex-protocol/v2/HookOutputEntry.ts +6 -0
- package/src/codex-protocol/v2/HookOutputEntryKind.ts +5 -0
- package/src/codex-protocol/v2/HookPromptFragment.ts +5 -0
- package/src/codex-protocol/v2/HookRunStatus.ts +5 -0
- package/src/codex-protocol/v2/HookRunSummary.ts +13 -0
- package/src/codex-protocol/v2/HookScope.ts +5 -0
- package/src/codex-protocol/v2/HookSource.ts +5 -0
- package/src/codex-protocol/v2/HookStartedNotification.ts +6 -0
- package/src/codex-protocol/v2/HookTrustStatus.ts +5 -0
- package/src/codex-protocol/v2/HooksListEntry.ts +7 -0
- package/src/codex-protocol/v2/HooksListParams.ts +9 -0
- package/src/codex-protocol/v2/HooksListResponse.ts +6 -0
- package/src/codex-protocol/v2/ItemCompletedNotification.ts +10 -0
- package/src/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.ts +38 -0
- package/src/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.ts +33 -0
- package/src/codex-protocol/v2/ItemStartedNotification.ts +10 -0
- package/src/codex-protocol/v2/ListMcpServerStatusParams.ts +19 -0
- package/src/codex-protocol/v2/ListMcpServerStatusResponse.ts +11 -0
- package/src/codex-protocol/v2/LoginAccountParams.ts +21 -0
- package/src/codex-protocol/v2/LoginAccountResponse.ts +17 -0
- package/src/codex-protocol/v2/LogoutAccountResponse.ts +5 -0
- package/src/codex-protocol/v2/ManagedHooksRequirements.ts +6 -0
- package/src/codex-protocol/v2/MarketplaceAddParams.ts +5 -0
- package/src/codex-protocol/v2/MarketplaceAddResponse.ts +6 -0
- package/src/codex-protocol/v2/MarketplaceInterface.ts +5 -0
- package/src/codex-protocol/v2/MarketplaceLoadErrorInfo.ts +6 -0
- package/src/codex-protocol/v2/MarketplaceRemoveParams.ts +5 -0
- package/src/codex-protocol/v2/MarketplaceRemoveResponse.ts +6 -0
- package/src/codex-protocol/v2/MarketplaceUpgradeErrorInfo.ts +5 -0
- package/src/codex-protocol/v2/MarketplaceUpgradeParams.ts +5 -0
- package/src/codex-protocol/v2/MarketplaceUpgradeResponse.ts +7 -0
- package/src/codex-protocol/v2/McpAuthStatus.ts +5 -0
- package/src/codex-protocol/v2/McpElicitationArrayType.ts +5 -0
- package/src/codex-protocol/v2/McpElicitationBooleanSchema.ts +6 -0
- package/src/codex-protocol/v2/McpElicitationBooleanType.ts +5 -0
- package/src/codex-protocol/v2/McpElicitationConstOption.ts +5 -0
- package/src/codex-protocol/v2/McpElicitationEnumSchema.ts +8 -0
- package/src/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.ts +6 -0
- package/src/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.ts +7 -0
- package/src/codex-protocol/v2/McpElicitationNumberSchema.ts +6 -0
- package/src/codex-protocol/v2/McpElicitationNumberType.ts +5 -0
- package/src/codex-protocol/v2/McpElicitationObjectType.ts +5 -0
- package/src/codex-protocol/v2/McpElicitationPrimitiveSchema.ts +9 -0
- package/src/codex-protocol/v2/McpElicitationSchema.ts +13 -0
- package/src/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.ts +7 -0
- package/src/codex-protocol/v2/McpElicitationStringFormat.ts +5 -0
- package/src/codex-protocol/v2/McpElicitationStringSchema.ts +7 -0
- package/src/codex-protocol/v2/McpElicitationStringType.ts +5 -0
- package/src/codex-protocol/v2/McpElicitationTitledEnumItems.ts +6 -0
- package/src/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.ts +7 -0
- package/src/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.ts +7 -0
- package/src/codex-protocol/v2/McpElicitationUntitledEnumItems.ts +6 -0
- package/src/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.ts +7 -0
- package/src/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.ts +6 -0
- package/src/codex-protocol/v2/McpResourceReadParams.ts +5 -0
- package/src/codex-protocol/v2/McpResourceReadResponse.ts +6 -0
- package/src/codex-protocol/v2/McpServerElicitationAction.ts +5 -0
- package/src/codex-protocol/v2/McpServerElicitationRequestParams.ts +16 -0
- package/src/codex-protocol/v2/McpServerElicitationRequestResponse.ts +17 -0
- package/src/codex-protocol/v2/McpServerMigration.ts +5 -0
- package/src/codex-protocol/v2/McpServerOauthLoginCompletedNotification.ts +5 -0
- package/src/codex-protocol/v2/McpServerOauthLoginParams.ts +5 -0
- package/src/codex-protocol/v2/McpServerOauthLoginResponse.ts +5 -0
- package/src/codex-protocol/v2/McpServerRefreshResponse.ts +5 -0
- package/src/codex-protocol/v2/McpServerStartupState.ts +5 -0
- package/src/codex-protocol/v2/McpServerStatus.ts +9 -0
- package/src/codex-protocol/v2/McpServerStatusDetail.ts +5 -0
- package/src/codex-protocol/v2/McpServerStatusUpdatedNotification.ts +6 -0
- package/src/codex-protocol/v2/McpServerToolCallParams.ts +6 -0
- package/src/codex-protocol/v2/McpServerToolCallResponse.ts +6 -0
- package/src/codex-protocol/v2/McpToolCallError.ts +5 -0
- package/src/codex-protocol/v2/McpToolCallProgressNotification.ts +5 -0
- package/src/codex-protocol/v2/McpToolCallResult.ts +6 -0
- package/src/codex-protocol/v2/McpToolCallStatus.ts +5 -0
- package/src/codex-protocol/v2/MemoryCitation.ts +6 -0
- package/src/codex-protocol/v2/MemoryCitationEntry.ts +5 -0
- package/src/codex-protocol/v2/MemoryResetResponse.ts +5 -0
- package/src/codex-protocol/v2/MergeStrategy.ts +5 -0
- package/src/codex-protocol/v2/MigrationDetails.ts +11 -0
- package/src/codex-protocol/v2/MockExperimentalMethodParams.ts +9 -0
- package/src/codex-protocol/v2/MockExperimentalMethodResponse.ts +9 -0
- package/src/codex-protocol/v2/Model.ts +19 -0
- package/src/codex-protocol/v2/ModelAvailabilityNux.ts +5 -0
- package/src/codex-protocol/v2/ModelListParams.ts +17 -0
- package/src/codex-protocol/v2/ModelListResponse.ts +11 -0
- package/src/codex-protocol/v2/ModelProviderCapabilitiesReadParams.ts +5 -0
- package/src/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.ts +5 -0
- package/src/codex-protocol/v2/ModelRerouteReason.ts +5 -0
- package/src/codex-protocol/v2/ModelReroutedNotification.ts +6 -0
- package/src/codex-protocol/v2/ModelServiceTier.ts +5 -0
- package/src/codex-protocol/v2/ModelUpgradeInfo.ts +5 -0
- package/src/codex-protocol/v2/ModelVerification.ts +5 -0
- package/src/codex-protocol/v2/ModelVerificationNotification.ts +6 -0
- package/src/codex-protocol/v2/NetworkAccess.ts +5 -0
- package/src/codex-protocol/v2/NetworkApprovalContext.ts +6 -0
- package/src/codex-protocol/v2/NetworkApprovalProtocol.ts +5 -0
- package/src/codex-protocol/v2/NetworkDomainPermission.ts +5 -0
- package/src/codex-protocol/v2/NetworkPolicyAmendment.ts +6 -0
- package/src/codex-protocol/v2/NetworkPolicyRuleAction.ts +5 -0
- package/src/codex-protocol/v2/NetworkRequirements.ts +32 -0
- package/src/codex-protocol/v2/NetworkUnixSocketPermission.ts +5 -0
- package/src/codex-protocol/v2/NonSteerableTurnKind.ts +5 -0
- package/src/codex-protocol/v2/OverriddenMetadata.ts +7 -0
- package/src/codex-protocol/v2/PatchApplyStatus.ts +5 -0
- package/src/codex-protocol/v2/PatchChangeKind.ts +5 -0
- package/src/codex-protocol/v2/PermissionGrantScope.ts +5 -0
- package/src/codex-protocol/v2/PermissionProfileListParams.ts +17 -0
- package/src/codex-protocol/v2/PermissionProfileListResponse.ts +11 -0
- package/src/codex-protocol/v2/PermissionProfileSummary.ts +13 -0
- package/src/codex-protocol/v2/PermissionsRequestApprovalParams.ts +11 -0
- package/src/codex-protocol/v2/PermissionsRequestApprovalResponse.ts +11 -0
- package/src/codex-protocol/v2/PlanDeltaNotification.ts +9 -0
- package/src/codex-protocol/v2/PluginAuthPolicy.ts +5 -0
- package/src/codex-protocol/v2/PluginAvailability.ts +5 -0
- package/src/codex-protocol/v2/PluginDetail.ts +10 -0
- package/src/codex-protocol/v2/PluginHookSummary.ts +6 -0
- package/src/codex-protocol/v2/PluginInstallParams.ts +6 -0
- package/src/codex-protocol/v2/PluginInstallPolicy.ts +5 -0
- package/src/codex-protocol/v2/PluginInstallResponse.ts +7 -0
- package/src/codex-protocol/v2/PluginInstalledParams.ts +15 -0
- package/src/codex-protocol/v2/PluginInstalledResponse.ts +7 -0
- package/src/codex-protocol/v2/PluginInterface.ts +35 -0
- package/src/codex-protocol/v2/PluginListMarketplaceKind.ts +5 -0
- package/src/codex-protocol/v2/PluginListParams.ts +17 -0
- package/src/codex-protocol/v2/PluginListResponse.ts +7 -0
- package/src/codex-protocol/v2/PluginMarketplaceEntry.ts +13 -0
- package/src/codex-protocol/v2/PluginReadParams.ts +6 -0
- package/src/codex-protocol/v2/PluginReadResponse.ts +6 -0
- package/src/codex-protocol/v2/PluginShareCheckoutParams.ts +5 -0
- package/src/codex-protocol/v2/PluginShareCheckoutResponse.ts +6 -0
- package/src/codex-protocol/v2/PluginShareContext.ts +11 -0
- package/src/codex-protocol/v2/PluginShareDeleteParams.ts +5 -0
- package/src/codex-protocol/v2/PluginShareDeleteResponse.ts +5 -0
- package/src/codex-protocol/v2/PluginShareDiscoverability.ts +5 -0
- package/src/codex-protocol/v2/PluginShareListItem.ts +7 -0
- package/src/codex-protocol/v2/PluginShareListParams.ts +5 -0
- package/src/codex-protocol/v2/PluginShareListResponse.ts +6 -0
- package/src/codex-protocol/v2/PluginSharePrincipal.ts +7 -0
- package/src/codex-protocol/v2/PluginSharePrincipalRole.ts +5 -0
- package/src/codex-protocol/v2/PluginSharePrincipalType.ts +5 -0
- package/src/codex-protocol/v2/PluginShareSaveParams.ts +8 -0
- package/src/codex-protocol/v2/PluginShareSaveResponse.ts +5 -0
- package/src/codex-protocol/v2/PluginShareTarget.ts +7 -0
- package/src/codex-protocol/v2/PluginShareTargetRole.ts +5 -0
- package/src/codex-protocol/v2/PluginShareUpdateDiscoverability.ts +5 -0
- package/src/codex-protocol/v2/PluginShareUpdateTargetsParams.ts +7 -0
- package/src/codex-protocol/v2/PluginShareUpdateTargetsResponse.ts +7 -0
- package/src/codex-protocol/v2/PluginSkillReadParams.ts +5 -0
- package/src/codex-protocol/v2/PluginSkillReadResponse.ts +5 -0
- package/src/codex-protocol/v2/PluginSource.ts +6 -0
- package/src/codex-protocol/v2/PluginSummary.ts +27 -0
- package/src/codex-protocol/v2/PluginUninstallParams.ts +5 -0
- package/src/codex-protocol/v2/PluginUninstallResponse.ts +5 -0
- package/src/codex-protocol/v2/PluginsMigration.ts +5 -0
- package/src/codex-protocol/v2/ProcessExitedNotification.ts +42 -0
- package/src/codex-protocol/v2/ProcessKillParams.ts +12 -0
- package/src/codex-protocol/v2/ProcessKillResponse.ts +8 -0
- package/src/codex-protocol/v2/ProcessOutputDeltaNotification.ts +26 -0
- package/src/codex-protocol/v2/ProcessOutputStream.ts +8 -0
- package/src/codex-protocol/v2/ProcessResizePtyParams.ts +17 -0
- package/src/codex-protocol/v2/ProcessResizePtyResponse.ts +8 -0
- package/src/codex-protocol/v2/ProcessSpawnParams.ts +73 -0
- package/src/codex-protocol/v2/ProcessSpawnResponse.ts +8 -0
- package/src/codex-protocol/v2/ProcessTerminalSize.ts +16 -0
- package/src/codex-protocol/v2/ProcessWriteStdinParams.ts +21 -0
- package/src/codex-protocol/v2/ProcessWriteStdinResponse.ts +8 -0
- package/src/codex-protocol/v2/ProfileV2.ts +19 -0
- package/src/codex-protocol/v2/RateLimitReachedType.ts +5 -0
- package/src/codex-protocol/v2/RateLimitSnapshot.ts +9 -0
- package/src/codex-protocol/v2/RateLimitWindow.ts +5 -0
- package/src/codex-protocol/v2/RawResponseItemCompletedNotification.ts +6 -0
- package/src/codex-protocol/v2/ReasoningEffortOption.ts +6 -0
- package/src/codex-protocol/v2/ReasoningSummaryPartAddedNotification.ts +5 -0
- package/src/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.ts +5 -0
- package/src/codex-protocol/v2/ReasoningTextDeltaNotification.ts +5 -0
- package/src/codex-protocol/v2/RemoteControlConnectionStatus.ts +5 -0
- package/src/codex-protocol/v2/RemoteControlDisableResponse.ts +6 -0
- package/src/codex-protocol/v2/RemoteControlEnableResponse.ts +6 -0
- package/src/codex-protocol/v2/RemoteControlStatusChangedNotification.ts +9 -0
- package/src/codex-protocol/v2/RemoteControlStatusReadResponse.ts +6 -0
- package/src/codex-protocol/v2/RequestPermissionProfile.ts +7 -0
- package/src/codex-protocol/v2/ResidencyRequirement.ts +5 -0
- package/src/codex-protocol/v2/ReviewDelivery.ts +5 -0
- package/src/codex-protocol/v2/ReviewStartParams.ts +12 -0
- package/src/codex-protocol/v2/ReviewStartResponse.ts +13 -0
- package/src/codex-protocol/v2/ReviewTarget.ts +9 -0
- package/src/codex-protocol/v2/SandboxMode.ts +5 -0
- package/src/codex-protocol/v2/SandboxPolicy.ts +7 -0
- package/src/codex-protocol/v2/SandboxWorkspaceWrite.ts +5 -0
- package/src/codex-protocol/v2/SendAddCreditsNudgeEmailParams.ts +6 -0
- package/src/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.ts +6 -0
- package/src/codex-protocol/v2/ServerRequestResolvedNotification.ts +6 -0
- package/src/codex-protocol/v2/SessionMigration.ts +5 -0
- package/src/codex-protocol/v2/SessionSource.ts +6 -0
- package/src/codex-protocol/v2/SkillDependencies.ts +6 -0
- package/src/codex-protocol/v2/SkillErrorInfo.ts +5 -0
- package/src/codex-protocol/v2/SkillInterface.ts +6 -0
- package/src/codex-protocol/v2/SkillMetadata.ts +13 -0
- package/src/codex-protocol/v2/SkillScope.ts +5 -0
- package/src/codex-protocol/v2/SkillSummary.ts +7 -0
- package/src/codex-protocol/v2/SkillToolDependency.ts +5 -0
- package/src/codex-protocol/v2/SkillsChangedNotification.ts +11 -0
- package/src/codex-protocol/v2/SkillsConfigWriteParams.ts +14 -0
- package/src/codex-protocol/v2/SkillsConfigWriteResponse.ts +5 -0
- package/src/codex-protocol/v2/SkillsListEntry.ts +7 -0
- package/src/codex-protocol/v2/SkillsListParams.ts +13 -0
- package/src/codex-protocol/v2/SkillsListResponse.ts +6 -0
- package/src/codex-protocol/v2/SortDirection.ts +5 -0
- package/src/codex-protocol/v2/SubagentMigration.ts +5 -0
- package/src/codex-protocol/v2/TerminalInteractionNotification.ts +5 -0
- package/src/codex-protocol/v2/TextElement.ts +14 -0
- package/src/codex-protocol/v2/TextPosition.ts +13 -0
- package/src/codex-protocol/v2/TextRange.ts +6 -0
- package/src/codex-protocol/v2/Thread.ts +86 -0
- package/src/codex-protocol/v2/ThreadActiveFlag.ts +5 -0
- package/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.ts +10 -0
- package/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadArchiveParams.ts +5 -0
- package/src/codex-protocol/v2/ThreadArchiveResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadArchivedNotification.ts +5 -0
- package/src/codex-protocol/v2/ThreadBackgroundTerminalsCleanParams.ts +5 -0
- package/src/codex-protocol/v2/ThreadBackgroundTerminalsCleanResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadClosedNotification.ts +5 -0
- package/src/codex-protocol/v2/ThreadCompactStartParams.ts +5 -0
- package/src/codex-protocol/v2/ThreadCompactStartResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadDecrementElicitationParams.ts +12 -0
- package/src/codex-protocol/v2/ThreadDecrementElicitationResponse.ts +16 -0
- package/src/codex-protocol/v2/ThreadForkParams.ts +60 -0
- package/src/codex-protocol/v2/ThreadForkResponse.ts +35 -0
- package/src/codex-protocol/v2/ThreadGoal.ts +6 -0
- package/src/codex-protocol/v2/ThreadGoalClearParams.ts +5 -0
- package/src/codex-protocol/v2/ThreadGoalClearResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadGoalClearedNotification.ts +5 -0
- package/src/codex-protocol/v2/ThreadGoalGetParams.ts +5 -0
- package/src/codex-protocol/v2/ThreadGoalGetResponse.ts +6 -0
- package/src/codex-protocol/v2/ThreadGoalSetParams.ts +6 -0
- package/src/codex-protocol/v2/ThreadGoalSetResponse.ts +6 -0
- package/src/codex-protocol/v2/ThreadGoalStatus.ts +5 -0
- package/src/codex-protocol/v2/ThreadGoalUpdatedNotification.ts +6 -0
- package/src/codex-protocol/v2/ThreadIncrementElicitationParams.ts +12 -0
- package/src/codex-protocol/v2/ThreadIncrementElicitationResponse.ts +16 -0
- package/src/codex-protocol/v2/ThreadInjectItemsParams.ts +10 -0
- package/src/codex-protocol/v2/ThreadInjectItemsResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadItem.ts +101 -0
- package/src/codex-protocol/v2/ThreadListParams.ts +54 -0
- package/src/codex-protocol/v2/ThreadListResponse.ts +18 -0
- package/src/codex-protocol/v2/ThreadLoadedListParams.ts +13 -0
- package/src/codex-protocol/v2/ThreadLoadedListResponse.ts +14 -0
- package/src/codex-protocol/v2/ThreadMemoryModeSetParams.ts +6 -0
- package/src/codex-protocol/v2/ThreadMemoryModeSetResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.ts +20 -0
- package/src/codex-protocol/v2/ThreadMetadataUpdateParams.ts +12 -0
- package/src/codex-protocol/v2/ThreadMetadataUpdateResponse.ts +6 -0
- package/src/codex-protocol/v2/ThreadNameUpdatedNotification.ts +5 -0
- package/src/codex-protocol/v2/ThreadReadParams.ts +9 -0
- package/src/codex-protocol/v2/ThreadReadResponse.ts +6 -0
- package/src/codex-protocol/v2/ThreadRealtimeAppendAudioParams.ts +9 -0
- package/src/codex-protocol/v2/ThreadRealtimeAppendAudioResponse.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeAppendTextParams.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeAppendTextResponse.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeAudioChunk.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeClosedNotification.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeErrorNotification.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeItemAddedNotification.ts +9 -0
- package/src/codex-protocol/v2/ThreadRealtimeListVoicesParams.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeListVoicesResponse.ts +9 -0
- package/src/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.ts +9 -0
- package/src/codex-protocol/v2/ThreadRealtimeSdpNotification.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeStartParams.ts +16 -0
- package/src/codex-protocol/v2/ThreadRealtimeStartResponse.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeStartTransport.ts +13 -0
- package/src/codex-protocol/v2/ThreadRealtimeStartedNotification.ts +9 -0
- package/src/codex-protocol/v2/ThreadRealtimeStopParams.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeStopResponse.ts +8 -0
- package/src/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.ts +13 -0
- package/src/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.ts +13 -0
- package/src/codex-protocol/v2/ThreadResumeParams.ts +71 -0
- package/src/codex-protocol/v2/ThreadResumeResponse.ts +35 -0
- package/src/codex-protocol/v2/ThreadRollbackParams.ts +12 -0
- package/src/codex-protocol/v2/ThreadRollbackResponse.ts +14 -0
- package/src/codex-protocol/v2/ThreadSetNameParams.ts +5 -0
- package/src/codex-protocol/v2/ThreadSetNameResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadSettings.ts +14 -0
- package/src/codex-protocol/v2/ThreadSettingsUpdateParams.ts +61 -0
- package/src/codex-protocol/v2/ThreadSettingsUpdateResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadSettingsUpdatedNotification.ts +6 -0
- package/src/codex-protocol/v2/ThreadShellCommandParams.ts +12 -0
- package/src/codex-protocol/v2/ThreadShellCommandResponse.ts +5 -0
- package/src/codex-protocol/v2/ThreadSortKey.ts +5 -0
- package/src/codex-protocol/v2/ThreadSource.ts +5 -0
- package/src/codex-protocol/v2/ThreadSourceKind.ts +5 -0
- package/src/codex-protocol/v2/ThreadStartParams.ts +57 -0
- package/src/codex-protocol/v2/ThreadStartResponse.ts +35 -0
- package/src/codex-protocol/v2/ThreadStartSource.ts +5 -0
- package/src/codex-protocol/v2/ThreadStartedNotification.ts +6 -0
- package/src/codex-protocol/v2/ThreadStatus.ts +6 -0
- package/src/codex-protocol/v2/ThreadStatusChangedNotification.ts +6 -0
- package/src/codex-protocol/v2/ThreadTokenUsage.ts +6 -0
- package/src/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.ts +6 -0
- package/src/codex-protocol/v2/ThreadTurnsItemsListParams.ts +18 -0
- package/src/codex-protocol/v2/ThreadTurnsItemsListResponse.ts +16 -0
- package/src/codex-protocol/v2/ThreadTurnsListParams.ts +23 -0
- package/src/codex-protocol/v2/ThreadTurnsListResponse.ts +18 -0
- package/src/codex-protocol/v2/ThreadUnarchiveParams.ts +5 -0
- package/src/codex-protocol/v2/ThreadUnarchiveResponse.ts +6 -0
- package/src/codex-protocol/v2/ThreadUnarchivedNotification.ts +5 -0
- package/src/codex-protocol/v2/ThreadUnsubscribeParams.ts +5 -0
- package/src/codex-protocol/v2/ThreadUnsubscribeResponse.ts +6 -0
- package/src/codex-protocol/v2/ThreadUnsubscribeStatus.ts +5 -0
- package/src/codex-protocol/v2/TokenUsageBreakdown.ts +5 -0
- package/src/codex-protocol/v2/ToolRequestUserInputAnswer.ts +8 -0
- package/src/codex-protocol/v2/ToolRequestUserInputOption.ts +8 -0
- package/src/codex-protocol/v2/ToolRequestUserInputParams.ts +9 -0
- package/src/codex-protocol/v2/ToolRequestUserInputQuestion.ts +9 -0
- package/src/codex-protocol/v2/ToolRequestUserInputResponse.ts +9 -0
- package/src/codex-protocol/v2/ToolsV2.ts +6 -0
- package/src/codex-protocol/v2/Turn.ts +33 -0
- package/src/codex-protocol/v2/TurnCompletedNotification.ts +6 -0
- package/src/codex-protocol/v2/TurnDiffUpdatedNotification.ts +9 -0
- package/src/codex-protocol/v2/TurnEnvironmentParams.ts +6 -0
- package/src/codex-protocol/v2/TurnError.ts +6 -0
- package/src/codex-protocol/v2/TurnInterruptParams.ts +5 -0
- package/src/codex-protocol/v2/TurnInterruptResponse.ts +5 -0
- package/src/codex-protocol/v2/TurnItemsView.ts +5 -0
- package/src/codex-protocol/v2/TurnPlanStep.ts +6 -0
- package/src/codex-protocol/v2/TurnPlanStepStatus.ts +5 -0
- package/src/codex-protocol/v2/TurnPlanUpdatedNotification.ts +6 -0
- package/src/codex-protocol/v2/TurnStartParams.ts +88 -0
- package/src/codex-protocol/v2/TurnStartResponse.ts +6 -0
- package/src/codex-protocol/v2/TurnStartedNotification.ts +6 -0
- package/src/codex-protocol/v2/TurnStatus.ts +5 -0
- package/src/codex-protocol/v2/TurnSteerParams.ts +15 -0
- package/src/codex-protocol/v2/TurnSteerResponse.ts +5 -0
- package/src/codex-protocol/v2/UserInput.ts +11 -0
- package/src/codex-protocol/v2/WarningNotification.ts +13 -0
- package/src/codex-protocol/v2/WebSearchAction.ts +5 -0
- package/src/codex-protocol/v2/WindowsSandboxReadiness.ts +5 -0
- package/src/codex-protocol/v2/WindowsSandboxReadinessResponse.ts +6 -0
- package/src/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.ts +6 -0
- package/src/codex-protocol/v2/WindowsSandboxSetupMode.ts +5 -0
- package/src/codex-protocol/v2/WindowsSandboxSetupStartParams.ts +7 -0
- package/src/codex-protocol/v2/WindowsSandboxSetupStartResponse.ts +5 -0
- package/src/codex-protocol/v2/WindowsWorldWritableWarningNotification.ts +5 -0
- package/src/codex-protocol/v2/WriteStatus.ts +5 -0
- package/src/codex-protocol/v2/index.ts +503 -0
- package/src/column.ts +44 -0
- package/src/engines/claude/claude-engine.ts +769 -0
- package/src/engines/claude/clock.ts +48 -0
- package/src/engines/claude/compact.ts +107 -0
- package/src/engines/claude/ctx.ts +239 -0
- package/src/engines/claude/doctor.ts +202 -0
- package/src/engines/claude/env.ts +16 -0
- package/src/engines/claude/history.ts +504 -0
- package/src/engines/claude/identifiers.ts +25 -0
- package/src/engines/claude/identity-migration.ts +16 -0
- package/src/engines/claude/idle.ts +91 -0
- package/src/engines/claude/keys.ts +163 -0
- package/src/engines/claude/last.ts +52 -0
- package/src/engines/claude/mem.ts +124 -0
- package/src/engines/claude/persistence.ts +41 -0
- package/src/engines/claude/post-turn.ts +45 -0
- package/src/engines/claude/reload.ts +53 -0
- package/src/engines/claude/repo-fs.ts +63 -0
- package/src/engines/claude/resume.ts +145 -0
- package/src/engines/claude/send.ts +86 -0
- package/src/engines/claude/spawn.ts +435 -0
- package/src/engines/claude/state.ts +124 -0
- package/src/engines/claude/tmux.ts +99 -0
- package/src/engines/claude/wait-signals.ts +128 -0
- package/src/engines/claude/wait.ts +59 -0
- package/src/engines/codex/ask.ts +69 -0
- package/src/engines/codex/engine.ts +1261 -0
- package/src/engines/codex/events.ts +106 -0
- package/src/engines/codex/history.ts +385 -0
- package/src/engines/codex/identity-migration.ts +14 -0
- package/src/engines/codex/ipc-bridge-process.ts +14 -0
- package/src/engines/codex/ipc-bridge.ts +844 -0
- package/src/engines/codex/persistence.ts +236 -0
- package/src/engines/codex/rollout.ts +384 -0
- package/src/engines/codex/rpc.ts +311 -0
- package/src/engines/codex/supervisor.ts +648 -0
- package/src/engines/codex/ui-ipc.ts +374 -0
- package/src/engines/codex/verb-common.ts +34 -0
- package/src/engines/codex/verb-lifecycle.ts +94 -0
- package/src/engines/codex/verb-state.ts +19 -0
- package/src/engines/codex/verb-turns.ts +49 -0
- package/src/engines/codex/verbs.ts +15 -0
- package/src/engines/engine.ts +91 -0
- package/src/engines/git-worktree.ts +137 -0
- package/src/engines/production.ts +19 -0
- package/src/engines/registry.ts +70 -0
- package/src/engines/teammate-record.ts +113 -0
- package/src/engines/types.ts +334 -0
- package/src/env.ts +29 -0
- package/src/grep.ts +39 -0
- package/src/help.ts +433 -0
- package/src/identity/name.ts +58 -0
- package/src/identity/router.ts +80 -0
- package/src/identity/uuid-prefix.ts +40 -0
- package/src/main.ts +39 -0
- package/src/persistence/atomic-file.ts +74 -0
- package/src/persistence/identity-store.ts +294 -0
- package/src/persistence/identity-writer.ts +28 -0
- package/src/persistence/paths.ts +138 -0
- package/src/plugin-root.ts +26 -0
- package/src/proc.ts +66 -0
- package/src/shared/verb-args.ts +331 -0
- package/src/tm.ts +54 -0
- package/src/tmux.ts +57 -0
- package/src/verbs/archive.ts +211 -0
- package/src/verbs/ask.ts +29 -0
- package/src/verbs/compact.ts +25 -0
- package/src/verbs/context.ts +68 -0
- package/src/verbs/ctx.ts +21 -0
- package/src/verbs/format.ts +213 -0
- package/src/verbs/history.ts +190 -0
- package/src/verbs/kill.ts +61 -0
- package/src/verbs/last.ts +34 -0
- package/src/verbs/ls.ts +27 -0
- package/src/verbs/mem.ts +40 -0
- package/src/verbs/poll.ts +61 -0
- package/src/verbs/reload.ts +17 -0
- package/src/verbs/resolve.ts +14 -0
- package/src/verbs/resume.ts +170 -0
- package/src/verbs/send.ts +36 -0
- package/src/verbs/spawn.ts +81 -0
- package/src/verbs/states.ts +74 -0
- package/src/verbs/status.ts +26 -0
- package/src/verbs/wait.ts +40 -0
- package/src/verbs.ts +56 -0
- package/src/ws-types.d.ts +9 -0
- package/third_party/ws/LICENSE +20 -0
- package/third_party/ws/README.md +548 -0
- package/third_party/ws/UPSTREAM.md +55 -0
- package/third_party/ws/browser.js +8 -0
- package/third_party/ws/index.js +22 -0
- package/third_party/ws/lib/buffer-util.js +131 -0
- package/third_party/ws/lib/constants.js +19 -0
- package/third_party/ws/lib/event-target.js +292 -0
- package/third_party/ws/lib/extension.js +203 -0
- package/third_party/ws/lib/limiter.js +55 -0
- package/third_party/ws/lib/permessage-deflate.js +528 -0
- package/third_party/ws/lib/receiver.js +760 -0
- package/third_party/ws/lib/sender.js +607 -0
- package/third_party/ws/lib/stream.js +161 -0
- package/third_party/ws/lib/subprotocol.js +62 -0
- package/third_party/ws/lib/validation.js +152 -0
- package/third_party/ws/lib/websocket-server.js +562 -0
- package/third_party/ws/lib/websocket.js +1407 -0
- package/third_party/ws/package.json +13 -0
- package/third_party/ws/wrapper.mjs +21 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-managed git worktree helpers — used by engines (currently
|
|
3
|
+
* Codex) that do not have a native worktree concept.
|
|
4
|
+
*
|
|
5
|
+
* The Claude engine relies on `claude --worktree <slug>` and does not
|
|
6
|
+
* call into this module. Codex has no equivalent flag, so claudemux
|
|
7
|
+
* drives `git worktree add` / `git worktree remove` itself; the
|
|
8
|
+
* resulting worktree layout matches Claude's:
|
|
9
|
+
*
|
|
10
|
+
* <repo>/.claude/worktrees/<slug> ← runtime cwd
|
|
11
|
+
* branch: worktree-<slug> ← matches `claude --worktree`
|
|
12
|
+
*
|
|
13
|
+
* Decisions:
|
|
14
|
+
*
|
|
15
|
+
* - `baseRef = HEAD`. The user's pinned default for both engines;
|
|
16
|
+
* Claude's side configures this through its `--settings` worktree
|
|
17
|
+
* block, ours is just `git worktree add -b worktree-<slug> <path>
|
|
18
|
+
* HEAD`.
|
|
19
|
+
*
|
|
20
|
+
* - `--no-worktree` does not call these helpers; the daemon's cwd
|
|
21
|
+
* stays at the repo root.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { existsSync } from 'node:fs'
|
|
25
|
+
|
|
26
|
+
import { spawnCapture } from '../proc'
|
|
27
|
+
import { worktreeBranchFor, worktreePathFor } from '../persistence/paths'
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Create the worktree for a Codex teammate. Returns `null` on
|
|
31
|
+
* success, or a human-readable error message describing why the
|
|
32
|
+
* `git worktree add` invocation failed.
|
|
33
|
+
*
|
|
34
|
+
* Idempotent: a worktree-path that already exists is accepted —
|
|
35
|
+
* either the previous spawn left a clean directory or the user
|
|
36
|
+
* pre-created it via `claude --worktree <slug>` from the same repo.
|
|
37
|
+
*/
|
|
38
|
+
export async function provisionCodexWorktree(
|
|
39
|
+
repo: string,
|
|
40
|
+
slug: string,
|
|
41
|
+
): Promise<string | null> {
|
|
42
|
+
const path = worktreePathFor(repo, slug)
|
|
43
|
+
if (existsSync(path)) return null
|
|
44
|
+
const branch = worktreeBranchFor(slug)
|
|
45
|
+
const args = ['git', '-C', repo, 'worktree', 'add', '-b', branch, path, 'HEAD']
|
|
46
|
+
const result = await spawnCapture(args)
|
|
47
|
+
if (result.code === 0) return null
|
|
48
|
+
return (
|
|
49
|
+
`git worktree add failed (code ${result.code}): ` +
|
|
50
|
+
(result.stderr.trim() || result.stdout.trim() || `unknown failure running ${args.join(' ')}`)
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Tear down the worktree for a Codex teammate. Returns the
|
|
56
|
+
* resolution:
|
|
57
|
+
*
|
|
58
|
+
* - `removed` — the worktree was cleanly cleared AND the
|
|
59
|
+
* `worktree-<slug>` branch was removable (either fully merged
|
|
60
|
+
* into the parent HEAD or already gone elsewhere).
|
|
61
|
+
* - `preserved-dirty` — `git status --porcelain` reported uncommitted
|
|
62
|
+
* changes; the worktree and the branch are both kept.
|
|
63
|
+
* - `preserved-unmerged` — the worktree itself had no uncommitted
|
|
64
|
+
* changes, but its branch carries commits that are not merged
|
|
65
|
+
* into the parent HEAD. The worktree was removed (its content
|
|
66
|
+
* is reachable via the surviving branch ref); the branch is
|
|
67
|
+
* preserved so the user's committed work does not become a
|
|
68
|
+
* dangling object.
|
|
69
|
+
* - `not-present` — nothing to remove.
|
|
70
|
+
* - `failed` — some `git` invocation failed.
|
|
71
|
+
*/
|
|
72
|
+
export type CodexWorktreeReap =
|
|
73
|
+
| { kind: 'removed' }
|
|
74
|
+
| { kind: 'preserved-dirty'; path: string }
|
|
75
|
+
| { kind: 'preserved-unmerged'; path: string; branch: string }
|
|
76
|
+
| { kind: 'not-present' }
|
|
77
|
+
| { kind: 'failed'; message: string }
|
|
78
|
+
|
|
79
|
+
export async function reapCodexWorktree(
|
|
80
|
+
repo: string,
|
|
81
|
+
slug: string,
|
|
82
|
+
): Promise<CodexWorktreeReap> {
|
|
83
|
+
const path = worktreePathFor(repo, slug)
|
|
84
|
+
if (!existsSync(path)) return { kind: 'not-present' }
|
|
85
|
+
const status = await spawnCapture(['git', '-C', path, 'status', '--porcelain'])
|
|
86
|
+
if (status.code !== 0) {
|
|
87
|
+
return {
|
|
88
|
+
kind: 'failed',
|
|
89
|
+
message:
|
|
90
|
+
`git status failed (code ${status.code}): ${status.stderr.trim() || status.stdout.trim()}`,
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (status.stdout.trim().length > 0) {
|
|
94
|
+
return { kind: 'preserved-dirty', path }
|
|
95
|
+
}
|
|
96
|
+
const remove = await spawnCapture(['git', '-C', repo, 'worktree', 'remove', '--force', path])
|
|
97
|
+
if (remove.code !== 0) {
|
|
98
|
+
return {
|
|
99
|
+
kind: 'failed',
|
|
100
|
+
message:
|
|
101
|
+
`git worktree remove failed (code ${remove.code}): ${remove.stderr.trim() || remove.stdout.trim()}`,
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// `provisionCodexWorktree` created the branch with `worktree add
|
|
105
|
+
// -b worktree-<slug>`; `git worktree remove` does NOT delete the
|
|
106
|
+
// branch ref. Use `git branch -d` (safe) — it refuses to delete a
|
|
107
|
+
// branch carrying commits not yet merged into HEAD, which is
|
|
108
|
+
// exactly the case where a force-delete would orphan committed
|
|
109
|
+
// user work into a dangling commit. On `-d` refusal, restore the
|
|
110
|
+
// worktree path (so the user can resume the conversation /
|
|
111
|
+
// recover from the branch) and report `preserved-unmerged`. If
|
|
112
|
+
// `-d` succeeds (branch was merged or already gone), the slug
|
|
113
|
+
// is now fully free for a subsequent same-name `tm spawn`.
|
|
114
|
+
const branch = worktreeBranchFor(slug)
|
|
115
|
+
const branchDelete = await spawnCapture(['git', '-C', repo, 'branch', '-d', branch])
|
|
116
|
+
if (branchDelete.code === 0) return { kind: 'removed' }
|
|
117
|
+
const stderr = branchDelete.stderr.trim()
|
|
118
|
+
// `not fully merged` is what `git branch -d` prints when refusing
|
|
119
|
+
// because of unmerged commits. If git failed for any *other*
|
|
120
|
+
// reason (e.g. the branch was already gone), the slug is still
|
|
121
|
+
// free, so treat it the same as `removed`.
|
|
122
|
+
if (!/not fully merged/i.test(stderr)) return { kind: 'removed' }
|
|
123
|
+
// The branch ref carries unmerged work. Recreate the worktree
|
|
124
|
+
// pointing back at it so the user can recover. If even this
|
|
125
|
+
// restore fails, the data is still safe at the branch ref — but
|
|
126
|
+
// we surface a `failed` so the user can intervene.
|
|
127
|
+
const restore = await spawnCapture(['git', '-C', repo, 'worktree', 'add', path, branch])
|
|
128
|
+
if (restore.code !== 0) {
|
|
129
|
+
return {
|
|
130
|
+
kind: 'failed',
|
|
131
|
+
message:
|
|
132
|
+
`branch '${branch}' has unmerged commits and the recovery worktree-restore failed: ` +
|
|
133
|
+
(restore.stderr.trim() || restore.stdout.trim()),
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return { kind: 'preserved-unmerged', path, branch }
|
|
137
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Production engine wiring for one `tm` process.
|
|
3
|
+
*
|
|
4
|
+
* Phase 2a registers the Claude engine; Phase 2b registers the Codex
|
|
5
|
+
* engine. Keep both registrations in this one invocation-scoped helper so
|
|
6
|
+
* verb defaults see the full fleet.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { NativeEnv } from '../env'
|
|
10
|
+
import { ClaudeEngine } from './claude/claude-engine'
|
|
11
|
+
import { CodexEngine } from './codex/engine'
|
|
12
|
+
import { EngineRegistry } from './registry'
|
|
13
|
+
|
|
14
|
+
export function productionRegistry(env: NativeEnv): EngineRegistry {
|
|
15
|
+
const registry = new EngineRegistry()
|
|
16
|
+
registry.register(new ClaudeEngine(env))
|
|
17
|
+
registry.register(new CodexEngine())
|
|
18
|
+
return registry
|
|
19
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The engine registry — one place where every concrete engine
|
|
3
|
+
* registers itself, and every verb-layer default implementation pulls
|
|
4
|
+
* the engines it needs to fan out over.
|
|
5
|
+
*
|
|
6
|
+
* Decision multi-engine-tui-architecture §"Verb is the abstraction" leans on this seam: `tm ls`
|
|
7
|
+
* iterates `registered()` and concatenates `Engine.list()` rows; the
|
|
8
|
+
* status / kill verbs resolve a teammate's engine through the identity
|
|
9
|
+
* router (decision multi-engine-tui-architecture §"Engine identity is the JSON's `engine` field")
|
|
10
|
+
* and the registry hands back the implementation. Phase 1 ships the
|
|
11
|
+
* empty registry; Phase 2a registers the Claude engine, Phase 2b
|
|
12
|
+
* registers the Codex engine.
|
|
13
|
+
*
|
|
14
|
+
* The registry is invocation-scoped: each `tm` process creates one,
|
|
15
|
+
* the production wiring populates it, tests inject their own. There is
|
|
16
|
+
* no module-level singleton.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import type { Engine } from './engine'
|
|
20
|
+
import type { EngineKind } from './types'
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* A read-only view of registered engines. Verb-layer default impls
|
|
24
|
+
* accept this view (not the mutable registry), so a verb cannot
|
|
25
|
+
* accidentally re-register an engine mid-dispatch.
|
|
26
|
+
*/
|
|
27
|
+
export interface EngineRegistryView {
|
|
28
|
+
/** Look up by kind; `undefined` when no engine of that kind is registered. */
|
|
29
|
+
get(kind: EngineKind): Engine | undefined
|
|
30
|
+
/** Every registered engine, in deterministic order (insertion order). */
|
|
31
|
+
registered(): readonly Engine[]
|
|
32
|
+
/** Every kind currently registered. */
|
|
33
|
+
kinds(): readonly EngineKind[]
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The mutable registry. The production wiring constructs one of these,
|
|
38
|
+
* registers each engine implementation, then hands the view to the
|
|
39
|
+
* verb dispatcher.
|
|
40
|
+
*/
|
|
41
|
+
export class EngineRegistry implements EngineRegistryView {
|
|
42
|
+
private readonly engines: Map<EngineKind, Engine> = new Map()
|
|
43
|
+
|
|
44
|
+
/** Add an engine; throws if a kind is registered twice in one process. */
|
|
45
|
+
register(engine: Engine): void {
|
|
46
|
+
if (this.engines.has(engine.kind)) {
|
|
47
|
+
throw new Error(
|
|
48
|
+
`EngineRegistry.register: engine '${engine.kind}' is already registered in this process`,
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
this.engines.set(engine.kind, engine)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
get(kind: EngineKind): Engine | undefined {
|
|
55
|
+
return this.engines.get(kind)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
registered(): readonly Engine[] {
|
|
59
|
+
return Array.from(this.engines.values())
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
kinds(): readonly EngineKind[] {
|
|
63
|
+
return Array.from(this.engines.keys())
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** Convenience constructor for tests / empty production wiring. */
|
|
68
|
+
export function emptyRegistry(): EngineRegistry {
|
|
69
|
+
return new EngineRegistry()
|
|
70
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single source of truth for a teammate's identity. Decision multi-engine-tui-architecture
|
|
3
|
+
* §"TeammateRecord — one base JSON, engine-private extensions, hooks-
|
|
4
|
+
* managed files left alone" collapses what `tm` itself writes and reads
|
|
5
|
+
* (engine, repo, cwd, worktreeSlug, createdAt, …) into one JSON at
|
|
6
|
+
* `/tmp/teammate-<name>.json`; engine-private state lives under the
|
|
7
|
+
* engine's persistence module; hooks-managed marker files (`.busy`,
|
|
8
|
+
* `.last`, `.sid`, `.ready`, idle marker) stay separate because Bash
|
|
9
|
+
* hooks cannot atomically rewrite JSON.
|
|
10
|
+
*
|
|
11
|
+
* `TeammateRecord` is the abstract base every per-engine record extends.
|
|
12
|
+
* It owns the JSON-serialised base fields plus the `markerPath(name)`
|
|
13
|
+
* builder (one named function, so the file shape is changed in one
|
|
14
|
+
* place — decision cross-process-cross-platform-invariants's path-builder discipline). A subclass declares
|
|
15
|
+
* its engine-private extension files via `engineExtensionFiles()`, which
|
|
16
|
+
* `tm doctor` consumes to enumerate everything to reap for a given
|
|
17
|
+
* teammate.
|
|
18
|
+
*
|
|
19
|
+
* Schema 2 — the name/repo decoupling cut. The teammate `name` is a
|
|
20
|
+
* flat opaque identifier; `repo` is the physical path of the source
|
|
21
|
+
* repository (recorded once at spawn); `cwd` is the runtime working
|
|
22
|
+
* directory (= `repo/.claude/worktrees/<worktreeSlug>` when a worktree
|
|
23
|
+
* is in use, `= repo` otherwise); `worktreeSlug` is the short name of
|
|
24
|
+
* the worktree under `.claude/worktrees/`, or `null` for
|
|
25
|
+
* `--no-worktree`.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
import type { EngineKind, TeammateName } from './types'
|
|
29
|
+
|
|
30
|
+
/** Current on-disk schema for `/tmp/teammate-<name>.json`. */
|
|
31
|
+
export const TEAMMATE_RECORD_SCHEMA = 2 as const
|
|
32
|
+
|
|
33
|
+
/** The JSON shape `tm` writes at spawn and reads on every verb. */
|
|
34
|
+
export interface TeammateRecordJson {
|
|
35
|
+
readonly schema: typeof TEAMMATE_RECORD_SCHEMA
|
|
36
|
+
readonly name: TeammateName
|
|
37
|
+
readonly engine: EngineKind
|
|
38
|
+
/** Physical path of the source repository (parent of any worktree). */
|
|
39
|
+
readonly repo: string
|
|
40
|
+
/**
|
|
41
|
+
* Runtime working directory the teammate process is launched in.
|
|
42
|
+
* Equal to `<repo>/.claude/worktrees/<worktreeSlug>` when a worktree
|
|
43
|
+
* is in use; equal to `repo` otherwise.
|
|
44
|
+
*/
|
|
45
|
+
readonly cwd: string
|
|
46
|
+
/** Short name of the worktree under `.claude/worktrees/`; `null` for `--no-worktree`. */
|
|
47
|
+
readonly worktreeSlug: string | null
|
|
48
|
+
readonly createdAt: number
|
|
49
|
+
readonly displayName: string | null
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Base carrier for a teammate identity. Subclasses live under
|
|
54
|
+
* `engines/<kind>/persistence.ts` and add engine-private file builders
|
|
55
|
+
* (e.g., `.cwd`, `.sid`, `/tmp/teammate-codex/<name>/socket`); the base
|
|
56
|
+
* fields are written once by the registry layer and never mutated.
|
|
57
|
+
*/
|
|
58
|
+
export abstract class TeammateRecord {
|
|
59
|
+
readonly schema: typeof TEAMMATE_RECORD_SCHEMA = TEAMMATE_RECORD_SCHEMA
|
|
60
|
+
readonly name: TeammateName
|
|
61
|
+
abstract readonly engine: EngineKind
|
|
62
|
+
readonly repo: string
|
|
63
|
+
readonly cwd: string
|
|
64
|
+
readonly worktreeSlug: string | null
|
|
65
|
+
readonly createdAt: number
|
|
66
|
+
readonly displayName: string | null
|
|
67
|
+
|
|
68
|
+
protected constructor(args: {
|
|
69
|
+
name: TeammateName
|
|
70
|
+
repo: string
|
|
71
|
+
cwd: string
|
|
72
|
+
worktreeSlug: string | null
|
|
73
|
+
createdAt: number
|
|
74
|
+
displayName: string | null
|
|
75
|
+
}) {
|
|
76
|
+
this.name = args.name
|
|
77
|
+
this.repo = args.repo
|
|
78
|
+
this.cwd = args.cwd
|
|
79
|
+
this.worktreeSlug = args.worktreeSlug
|
|
80
|
+
this.createdAt = args.createdAt
|
|
81
|
+
this.displayName = args.displayName
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Absolute path of the base JSON file for this teammate. The single
|
|
86
|
+
* builder so the file shape changes in one place.
|
|
87
|
+
*/
|
|
88
|
+
static markerPath(name: TeammateName): string {
|
|
89
|
+
return `/tmp/teammate-${name}.json`
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** Serialise this record's base fields to the on-disk JSON shape. */
|
|
93
|
+
toJson(): TeammateRecordJson {
|
|
94
|
+
return {
|
|
95
|
+
schema: this.schema,
|
|
96
|
+
name: this.name,
|
|
97
|
+
engine: this.engine,
|
|
98
|
+
repo: this.repo,
|
|
99
|
+
cwd: this.cwd,
|
|
100
|
+
worktreeSlug: this.worktreeSlug,
|
|
101
|
+
createdAt: this.createdAt,
|
|
102
|
+
displayName: this.displayName,
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* The engine-private files that belong to this teammate. `tm doctor`
|
|
108
|
+
* walks this list when reaping an orphaned identity. The base file
|
|
109
|
+
* (`/tmp/teammate-<name>.json`) is not part of the list — the
|
|
110
|
+
* registry layer owns it.
|
|
111
|
+
*/
|
|
112
|
+
abstract engineExtensionFiles(): readonly string[]
|
|
113
|
+
}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shared request / result / value types that the `Engine` interface
|
|
3
|
+
* and every verb-layer default implementation speak in.
|
|
4
|
+
*
|
|
5
|
+
* Decision multi-engine-tui-architecture §"Engine interface" and §"Capabilities are structured,
|
|
6
|
+
* not stringly-typed" anchor this file. Three rules carry through:
|
|
7
|
+
*
|
|
8
|
+
* - Every operation result is a discriminated union keyed by `kind`, so
|
|
9
|
+
* the verb formatter can `switch` exhaustively and TypeScript will
|
|
10
|
+
* reject a missing case at compile time. There is no `string`
|
|
11
|
+
* fallback on a capability slot; a future engine adding a mode bumps
|
|
12
|
+
* the union here in one place.
|
|
13
|
+
* - Every result includes a `not-supported` variant carrying a short
|
|
14
|
+
* `reason` string. An engine that genuinely cannot perform a verb
|
|
15
|
+
* still implements the method and returns this variant — the CLI
|
|
16
|
+
* surface gives the agent a one-line "why", not a stack trace.
|
|
17
|
+
* - Teammate names may contain `/` (decision multi-engine-tui-architecture §"Nested teammate
|
|
18
|
+
* names"). Path builders treat the name as opaque; engine-specific
|
|
19
|
+
* encoding (e.g., the Claude engine's tmux session name) lives behind
|
|
20
|
+
* named path builders.
|
|
21
|
+
*
|
|
22
|
+
* Phase 1 lands this file as a contract. The engine implementations
|
|
23
|
+
* (Phase 2a for Claude, Phase 2b for Codex) consume it without
|
|
24
|
+
* touching it.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
import type { TmResult } from '../tm'
|
|
28
|
+
|
|
29
|
+
/** The closed set of engine kinds. New kinds extend this union here. */
|
|
30
|
+
export type EngineKind = 'claude' | 'codex'
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A teammate name as it appears on the CLI. Single-segment is the
|
|
34
|
+
* common case; nested segments (e.g., `flow/flow-1`) are allowed.
|
|
35
|
+
* Validation lives in `identity/name.ts` once it lands; this alias
|
|
36
|
+
* documents intent at the call sites.
|
|
37
|
+
*/
|
|
38
|
+
export type TeammateName = string
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Shared environment passed to every Engine method. Phase 2 will widen
|
|
42
|
+
* this with the production runtime (file system, process runner, clock,
|
|
43
|
+
* tmux adapter); Phase 1 keeps the surface minimal so engine stubs can
|
|
44
|
+
* already match the contract.
|
|
45
|
+
*/
|
|
46
|
+
export interface EngineContext {
|
|
47
|
+
/** Wall-clock reader — engines must not call `Date.now()` directly. */
|
|
48
|
+
now(): number
|
|
49
|
+
/** Process environment, scoped per invocation so tests can inject. */
|
|
50
|
+
env: NodeJS.ProcessEnv
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Capabilities reported by an engine. Every slot is a discriminated
|
|
55
|
+
* literal union or a boolean — no `string` fallback. A verb that
|
|
56
|
+
* branches on a capability gets exhaustive `switch` checking.
|
|
57
|
+
*
|
|
58
|
+
* `atomicSend` is the literal `true`, not `boolean`: the verb contract
|
|
59
|
+
* demands atomic round-trips, and an engine that cannot do that does
|
|
60
|
+
* not qualify as a `tm` engine.
|
|
61
|
+
*/
|
|
62
|
+
export interface EngineCapabilities {
|
|
63
|
+
readonly atomicSend: true
|
|
64
|
+
readonly atomicSpawnPrompt: boolean
|
|
65
|
+
readonly compaction: 'manual' | 'auto' | 'unsupported'
|
|
66
|
+
readonly contextUsage: 'transcript-jsonl' | 'rpc-token-usage' | 'unsupported'
|
|
67
|
+
readonly history: 'transcript-files' | 'rpc-thread-list' | 'unsupported'
|
|
68
|
+
readonly memory: 'claude-project-memory' | 'engine-native' | 'unsupported'
|
|
69
|
+
readonly reload: 'prompt-command' | 'native-command' | 'unsupported'
|
|
70
|
+
readonly resume: 'transcript-id' | 'thread-id' | 'unsupported'
|
|
71
|
+
readonly detachedTurn: 'unsupported' | 'replayable' | 'best-effort-push'
|
|
72
|
+
readonly events: 'push' | 'synthesized' | 'none'
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** One typed item emitted within a turn (assistant text, tool call, …). */
|
|
76
|
+
export type InteractionItem =
|
|
77
|
+
| { kind: 'assistant-text'; text: string }
|
|
78
|
+
| { kind: 'tool-call'; tool: string; argsJson: string }
|
|
79
|
+
| { kind: 'tool-result'; tool: string; ok: boolean; textOrJson: string }
|
|
80
|
+
| { kind: 'system-note'; text: string }
|
|
81
|
+
|
|
82
|
+
// ─── Spawn ──────────────────────────────────────────────────────────────
|
|
83
|
+
|
|
84
|
+
export interface SpawnRequest {
|
|
85
|
+
readonly name: TeammateName
|
|
86
|
+
/**
|
|
87
|
+
* Physical path of the source repository. Equal to `cwd` when
|
|
88
|
+
* `worktreeSlug` is `null` (`--no-worktree`); otherwise the parent
|
|
89
|
+
* of the worktree path.
|
|
90
|
+
*/
|
|
91
|
+
readonly repo: string
|
|
92
|
+
/**
|
|
93
|
+
* Runtime working directory the engine launches the teammate in.
|
|
94
|
+
* `repo/.claude/worktrees/<worktreeSlug>` when a worktree is in use,
|
|
95
|
+
* `repo` otherwise.
|
|
96
|
+
*/
|
|
97
|
+
readonly cwd: string
|
|
98
|
+
/** Short name of the worktree under `.claude/worktrees/`; `null` for `--no-worktree`. */
|
|
99
|
+
readonly worktreeSlug: string | null
|
|
100
|
+
/** Optional engine-specific resume checkpoint. */
|
|
101
|
+
readonly resumeCheckpoint: string | null
|
|
102
|
+
/** Optional first-turn prompt — when present, spawn is an atomic round-trip. */
|
|
103
|
+
readonly prompt: string | null
|
|
104
|
+
/** Optional caller-supplied wall-clock cap; `null` means unbounded. */
|
|
105
|
+
readonly timeoutMs: number | null
|
|
106
|
+
/** Human-readable display name for fleet listing; null falls back to `name`. */
|
|
107
|
+
readonly displayName: string | null
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Temporary compatibility carrier for migrated Claude verbs whose public
|
|
112
|
+
* stdout/stderr contract is already pinned by conformance goldens. The
|
|
113
|
+
* structured fields stay authoritative for engine-neutral verbs; CLI
|
|
114
|
+
* formatters can return `tmResult` verbatim when it is present.
|
|
115
|
+
*/
|
|
116
|
+
export interface RawTmResult {
|
|
117
|
+
readonly tmResult?: TmResult
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export type SpawnResult =
|
|
121
|
+
| ({ kind: 'spawned'; name: TeammateName; firstTurn: TurnResult | null } & RawTmResult)
|
|
122
|
+
| ({ kind: 'already-exists'; existingEngine: EngineKind } & RawTmResult)
|
|
123
|
+
| ({ kind: 'failed'; message: string } & RawTmResult)
|
|
124
|
+
|
|
125
|
+
// ─── Send / Wait ────────────────────────────────────────────────────────
|
|
126
|
+
|
|
127
|
+
export interface SendRequest {
|
|
128
|
+
readonly name: TeammateName
|
|
129
|
+
readonly prompt: string
|
|
130
|
+
readonly timeoutMs: number | null
|
|
131
|
+
readonly paneQuiet: boolean
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export interface WaitRequest {
|
|
135
|
+
readonly name: TeammateName
|
|
136
|
+
/** A previous turn-id to recover from, when send/spawn aborted before reading. */
|
|
137
|
+
readonly recoverFor: string | null
|
|
138
|
+
readonly timeoutMs: number | null
|
|
139
|
+
readonly fresh: boolean
|
|
140
|
+
readonly paneQuiet: boolean
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export type TurnResult =
|
|
144
|
+
| ({
|
|
145
|
+
kind: 'completed'
|
|
146
|
+
text: string
|
|
147
|
+
items: readonly InteractionItem[]
|
|
148
|
+
context: ContextResult | null
|
|
149
|
+
} & RawTmResult)
|
|
150
|
+
| ({ kind: 'failed'; message: string; recoverable: boolean } & RawTmResult)
|
|
151
|
+
| ({ kind: 'timed-out'; elapsedMs: number } & RawTmResult)
|
|
152
|
+
| ({ kind: 'not-supported'; reason: string } & RawTmResult)
|
|
153
|
+
| ({ kind: 'no-op'; reason: string } & RawTmResult)
|
|
154
|
+
|
|
155
|
+
// ─── Kill ───────────────────────────────────────────────────────────────
|
|
156
|
+
|
|
157
|
+
export interface KillRequest {
|
|
158
|
+
readonly name: TeammateName
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export type KillResult =
|
|
162
|
+
| { kind: 'killed'; note?: string }
|
|
163
|
+
| { kind: 'not-found' }
|
|
164
|
+
| { kind: 'failed'; message: string }
|
|
165
|
+
|
|
166
|
+
// ─── Compact / Resume / Reload ──────────────────────────────────────────
|
|
167
|
+
|
|
168
|
+
export interface CompactRequest {
|
|
169
|
+
readonly name: TeammateName
|
|
170
|
+
readonly timeoutMs: number | null
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export type CompactResult =
|
|
174
|
+
| ({ kind: 'compacted' } & RawTmResult)
|
|
175
|
+
| ({ kind: 'not-needed'; reason: string } & RawTmResult)
|
|
176
|
+
| ({ kind: 'not-supported'; reason: string } & RawTmResult)
|
|
177
|
+
| ({ kind: 'failed'; message: string } & RawTmResult)
|
|
178
|
+
|
|
179
|
+
export interface ResumeRequest {
|
|
180
|
+
readonly name: TeammateName
|
|
181
|
+
/** Physical repo path the teammate is bound to; `null` when unknown. */
|
|
182
|
+
readonly repo: string | null
|
|
183
|
+
/** Absolute working directory used by engines that relaunch a process. */
|
|
184
|
+
readonly cwd: string | null
|
|
185
|
+
/** Worktree slug under `.claude/worktrees/`; `null` for `--no-worktree`. */
|
|
186
|
+
readonly worktreeSlug: string | null
|
|
187
|
+
/** Engine-specific identifier (Claude sid / Codex thread id); null lets the engine auto-pick when supported. */
|
|
188
|
+
readonly checkpoint: string | null
|
|
189
|
+
/** Optional first-turn prompt after the resumed teammate is relaunched. */
|
|
190
|
+
readonly prompt: string | null
|
|
191
|
+
/** Optional display relabel for engines that expose one. */
|
|
192
|
+
readonly displayName: string | null
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export type ResumeResult =
|
|
196
|
+
| ({ kind: 'resumed'; checkpoint: string | null } & RawTmResult)
|
|
197
|
+
| ({ kind: 'not-found'; reason: string } & RawTmResult)
|
|
198
|
+
| ({ kind: 'not-supported'; reason: string } & RawTmResult)
|
|
199
|
+
| ({ kind: 'failed'; message: string } & RawTmResult)
|
|
200
|
+
|
|
201
|
+
export interface ReloadRequest {
|
|
202
|
+
readonly name: TeammateName
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export type ReloadResult =
|
|
206
|
+
| ({ kind: 'reloaded' } & RawTmResult)
|
|
207
|
+
| ({ kind: 'not-supported'; reason: string } & RawTmResult)
|
|
208
|
+
| ({ kind: 'failed'; message: string } & RawTmResult)
|
|
209
|
+
|
|
210
|
+
// ─── Last / Ctx / History / Mem ────────────────────────────────────────
|
|
211
|
+
|
|
212
|
+
export interface LastRequest {
|
|
213
|
+
readonly name: TeammateName
|
|
214
|
+
readonly verbose: boolean
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export interface ContextRequest {
|
|
218
|
+
readonly name: TeammateName
|
|
219
|
+
readonly windowOverride: '' | '200k' | '1m'
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export type ContextResult =
|
|
223
|
+
| ({ kind: 'usage'; tokensUsed: number; tokensTotal: number; pct: number } & RawTmResult)
|
|
224
|
+
| ({ kind: 'not-supported'; reason: string } & RawTmResult)
|
|
225
|
+
| ({ kind: 'failed'; message: string } & RawTmResult)
|
|
226
|
+
|
|
227
|
+
export interface HistoryRequest {
|
|
228
|
+
readonly name: TeammateName
|
|
229
|
+
/** Absolute working directory used by engines whose history is keyed by cwd. */
|
|
230
|
+
readonly cwd: string | null
|
|
231
|
+
/** `null` = list view; non-null = engine-specific detail selector. */
|
|
232
|
+
readonly index: string | null
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
export type HistoryResult =
|
|
236
|
+
| ({ kind: 'list'; turns: readonly HistoryTurn[]; entries?: readonly HistoryListEntry[] } & RawTmResult)
|
|
237
|
+
| ({ kind: 'detail'; turn: HistoryTurn; items: readonly InteractionItem[] } & RawTmResult)
|
|
238
|
+
| ({ kind: 'not-supported'; reason: string } & RawTmResult)
|
|
239
|
+
| ({ kind: 'failed'; message: string } & RawTmResult)
|
|
240
|
+
|
|
241
|
+
export interface HistoryListEntry {
|
|
242
|
+
readonly engine: EngineKind
|
|
243
|
+
readonly id: string
|
|
244
|
+
readonly mtimeMs: number
|
|
245
|
+
readonly size: number
|
|
246
|
+
readonly topic: string
|
|
247
|
+
readonly active: boolean
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export interface HistoryTurn {
|
|
251
|
+
readonly index: number
|
|
252
|
+
readonly startedAt: number
|
|
253
|
+
readonly summary: string
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export interface MemoryRequest {
|
|
257
|
+
readonly name: TeammateName
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Plain-text payload — used for `mem`, `last`, and any other verb whose
|
|
262
|
+
* engine result is "here are some bytes, render them as-is".
|
|
263
|
+
*/
|
|
264
|
+
export type TextResult =
|
|
265
|
+
| ({ kind: 'text'; text: string } & RawTmResult)
|
|
266
|
+
| ({ kind: 'not-found'; reason: string } & RawTmResult)
|
|
267
|
+
| ({ kind: 'not-supported'; reason: string } & RawTmResult)
|
|
268
|
+
| ({ kind: 'failed'; message: string } & RawTmResult)
|
|
269
|
+
|
|
270
|
+
// ─── Fleet visibility (list / status) ──────────────────────────────────
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* One row of `tm ls` — the cross-engine listing default impl concatenates
|
|
274
|
+
* what every engine returns. Engines stay free to add engine-private
|
|
275
|
+
* fields by extending `extras`; the verb formatter ignores unknown keys.
|
|
276
|
+
*/
|
|
277
|
+
export interface TeammateListing {
|
|
278
|
+
readonly name: TeammateName
|
|
279
|
+
readonly engine: EngineKind
|
|
280
|
+
readonly state: 'idle' | 'busy' | 'unknown'
|
|
281
|
+
/** Physical repo path the teammate is bound to. */
|
|
282
|
+
readonly repo: string
|
|
283
|
+
/** Runtime working directory (worktree path or `repo`). */
|
|
284
|
+
readonly cwd: string
|
|
285
|
+
/** Worktree slug, or `null` for `--no-worktree`. */
|
|
286
|
+
readonly worktreeSlug: string | null
|
|
287
|
+
readonly displayName: string | null
|
|
288
|
+
readonly extras: Readonly<Record<string, string>>
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export interface StatusRequest {
|
|
292
|
+
readonly name: TeammateName
|
|
293
|
+
/** Verb-layer hint for scrollback depth (status pane capture). */
|
|
294
|
+
readonly lines: number | null
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export type TeammateStatus =
|
|
298
|
+
| {
|
|
299
|
+
kind: 'present'
|
|
300
|
+
name: TeammateName
|
|
301
|
+
engine: EngineKind
|
|
302
|
+
state: 'idle' | 'busy' | 'unknown'
|
|
303
|
+
cwd: string
|
|
304
|
+
pane: string | null
|
|
305
|
+
diagnostics: Readonly<Record<string, string>>
|
|
306
|
+
}
|
|
307
|
+
| { kind: 'not-found' }
|
|
308
|
+
| { kind: 'failed'; message: string }
|
|
309
|
+
|
|
310
|
+
// ─── Doctor / Inspect ───────────────────────────────────────────────────
|
|
311
|
+
|
|
312
|
+
export interface InspectRequest {
|
|
313
|
+
readonly name: TeammateName
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export interface EngineSnapshot {
|
|
317
|
+
readonly engine: EngineKind
|
|
318
|
+
readonly name: TeammateName
|
|
319
|
+
/** Free-form key/value diagnostic dump. */
|
|
320
|
+
readonly fields: Readonly<Record<string, string>>
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/** One section of the `tm doctor` output, contributed by one engine. */
|
|
324
|
+
export interface DoctorSection {
|
|
325
|
+
readonly engine: EngineKind
|
|
326
|
+
readonly findings: readonly DoctorFinding[]
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
export interface DoctorFinding {
|
|
330
|
+
readonly severity: 'ok' | 'warn' | 'error'
|
|
331
|
+
readonly summary: string
|
|
332
|
+
/** Optional remediation hint shown after the summary line. */
|
|
333
|
+
readonly fix: string | null
|
|
334
|
+
}
|