@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
package/src/env.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-invocation environment the CLI hands to each verb dispatcher.
|
|
3
|
+
*
|
|
4
|
+
* Lives in its own module so verb modules and the dispatcher share a
|
|
5
|
+
* single interface without re-importing from each other; the historic
|
|
6
|
+
* `NATIVE_VERBS` table that owned this shape is gone, but the shape
|
|
7
|
+
* itself is still useful as a thin adapter layer.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { ColumnRunner } from './column'
|
|
11
|
+
import type { GrepRunner } from './grep'
|
|
12
|
+
import type { TmuxRunner } from './tmux'
|
|
13
|
+
import type { EngineRegistryView } from './engines/registry'
|
|
14
|
+
|
|
15
|
+
/** Everything a verb handler may need beyond its arguments; injectable for tests. */
|
|
16
|
+
export interface NativeEnv {
|
|
17
|
+
/** Runs `tmux` — injected so a conformance fixture can supply a fake. */
|
|
18
|
+
readonly runTmux: TmuxRunner
|
|
19
|
+
/** Aligns tab-separated rows via `column -t` — for table-rendering verbs. */
|
|
20
|
+
readonly runColumn: ColumnRunner
|
|
21
|
+
/** Matches input against a regex via `grep -qE` — for the `poll` verb. */
|
|
22
|
+
readonly runGrep: GrepRunner
|
|
23
|
+
/** The dispatcher directory — the parent of the sibling teammate repos. */
|
|
24
|
+
readonly dispatcherDir: string
|
|
25
|
+
/** The `~/.claude/projects` directory that holds Claude Code transcripts. */
|
|
26
|
+
readonly projectsDir: string
|
|
27
|
+
/** Production Engine registry; optional for legacy tests. */
|
|
28
|
+
readonly engines?: EngineRegistryView
|
|
29
|
+
}
|
package/src/grep.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `grep` shell-out layer.
|
|
3
|
+
*
|
|
4
|
+
* `tm poll` blocks until a teammate's pane matches a regex — `tmux capture-pane
|
|
5
|
+
* | grep -qE <pattern>`. The native `poll` verb keeps the poll loop in the
|
|
6
|
+
* core but delegates the match itself to the real `grep`, the way `states`
|
|
7
|
+
* delegates alignment to `column`.
|
|
8
|
+
*
|
|
9
|
+
* `grep` is not reimplemented in TypeScript on purpose: its `-E` dialect is
|
|
10
|
+
* POSIX extended regular expressions, which a JavaScript `RegExp` does not
|
|
11
|
+
* reproduce — `\d`, lookahead, and POSIX character classes all differ — and
|
|
12
|
+
* the pattern is `poll`'s user-facing surface, so a behavior-preserving
|
|
13
|
+
* migration must match `grep` exactly. The installed `grep` is faithful to
|
|
14
|
+
* itself.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { spawnCapture } from './proc'
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Runs `grep -qE <pattern>` over `input` and resolves with its exit code:
|
|
21
|
+
* `0` a match, `1` no match, `2` a `grep` error (an invalid pattern). `poll`
|
|
22
|
+
* treats only `0` as a match — exactly `tm`'s `if ... | grep -qE`.
|
|
23
|
+
*
|
|
24
|
+
* Injectable: the native `poll` verb depends on this type, not the concrete
|
|
25
|
+
* function, so a test can supply a stub.
|
|
26
|
+
*/
|
|
27
|
+
export type GrepRunner = (pattern: string, input: string) => Promise<number>
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The production `GrepRunner`: pipe `input` through `grep -qE <pattern>` —
|
|
31
|
+
* the exact invocation `tm poll` uses — and resolve with its exit code. The
|
|
32
|
+
* pattern is passed as its own argument with no `--` guard, matching `tm`, so
|
|
33
|
+
* a pattern that begins with `-` is read by `grep` as a flag just as it is
|
|
34
|
+
* under `tm`.
|
|
35
|
+
*/
|
|
36
|
+
export const runGrep: GrepRunner = async (pattern, input) => {
|
|
37
|
+
const { code } = await spawnCapture(['grep', '-qE', pattern], { stdin: input })
|
|
38
|
+
return code
|
|
39
|
+
}
|
package/src/help.ts
ADDED
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `tm` help text — the single source of truth for the human-facing CLI help.
|
|
3
|
+
*
|
|
4
|
+
* The Bash `bin/tm` is retired on the `next` line; help that used to come from
|
|
5
|
+
* `cmd_help` and the per-verb `help_<verb>` heredocs lives here instead. The
|
|
6
|
+
* text is byte-exact with what the bash help printed (every help line ends
|
|
7
|
+
* with a newline, matching `cat <<'EOF'` semantics) so the conformance harness
|
|
8
|
+
* can golden it without surprises and `tests/help` users see no UX drift.
|
|
9
|
+
*
|
|
10
|
+
* The CLI dispatch layer (`cli/dispatch.ts`) does the routing — this module
|
|
11
|
+
* just owns the strings.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/** Top-level synopsis — printed by `tm`, `tm help`, `tm --help`, `tm -h`. */
|
|
15
|
+
export const OVERVIEW_HELP = `tm — teammate manager for the dispatcher skill
|
|
16
|
+
|
|
17
|
+
Run \`tm <verb> --help\` (or \`tm help <verb>\`) for per-verb detail.
|
|
18
|
+
|
|
19
|
+
NAMING (after the schema 2 cut)
|
|
20
|
+
Teammates have flat opaque identifiers (\`<name>\`). The source repo
|
|
21
|
+
is the spawn-time \`<path>\` positional, recorded in identity, and
|
|
22
|
+
reachable through \`tm ls\`'s REPO column. \`tm send <name>\`,
|
|
23
|
+
\`tm kill <name>\`, etc. are name-based — no path coupling.
|
|
24
|
+
|
|
25
|
+
USAGE (most common first)
|
|
26
|
+
tm spawn <path> [--name <id>] [--prompt "..."] [--no-worktree]
|
|
27
|
+
launch a teammate in <path>. Default
|
|
28
|
+
creates a git worktree at
|
|
29
|
+
<path>/.claude/worktrees/<name>/.
|
|
30
|
+
--no-worktree keeps the teammate at
|
|
31
|
+
<path> itself. --name overrides the
|
|
32
|
+
auto-generated \`<path-leaf>-<rand4>\`
|
|
33
|
+
(must be globally unique).
|
|
34
|
+
tm send <name> --prompt "..." atomic round-trip: send + wait + print reply
|
|
35
|
+
tm wait <name> [--fresh] wait for next Stop; print reply
|
|
36
|
+
tm compact <name> /compact + verify, prints "compacted"
|
|
37
|
+
tm resume <name> [<sid/thread-id>] resume a prior conversation
|
|
38
|
+
tm last <name> [--verbose] reprint last reply; Codex raw turn with --verbose
|
|
39
|
+
tm kill <name> graceful /exit (clean worktree auto-removed);
|
|
40
|
+
dirty worktree preserved with stderr note
|
|
41
|
+
tm reload <name>... | --all fan out /reload-plugins
|
|
42
|
+
tm ls list teammates (NAME REPO WORKTREE ENGINE STATE)
|
|
43
|
+
tm states rich fleet snapshot
|
|
44
|
+
tm ctx <name>... | --all real ctx-window usage from jsonl
|
|
45
|
+
tm history <name> [<sid/thread-prefix>] inspect past sessions for this teammate
|
|
46
|
+
tm mem <name> cat the parent repo's auto-memory index
|
|
47
|
+
tm archive <id> move finished task active→archive (stdin)
|
|
48
|
+
tm ask "<prompt>" one-shot turn on an idle codex teammate (pool)
|
|
49
|
+
|
|
50
|
+
DIAGNOSTIC (escape hatches — prefer the verbs above)
|
|
51
|
+
tm status <name> capture-pane the teammate's live screen
|
|
52
|
+
tm poll <name> <regex> block until pane matches
|
|
53
|
+
tm doctor self-check: tm path/version, env, tmux,
|
|
54
|
+
idle dir, active teammates
|
|
55
|
+
|
|
56
|
+
HELP
|
|
57
|
+
tm --help / tm -h / tm help this text
|
|
58
|
+
tm <verb> --help / tm help <verb> detail for one verb
|
|
59
|
+
|
|
60
|
+
ENVIRONMENT
|
|
61
|
+
TM_DISPATCHER_DIR Dispatcher directory (parent of sibling repos).
|
|
62
|
+
scripts/setup.sh writes it into the dispatcher's
|
|
63
|
+
.claude/settings.json on first /claudemux:setup,
|
|
64
|
+
and Claude Code injects it as env at every
|
|
65
|
+
claude launch — so tm stays correct even when
|
|
66
|
+
the Bash tool's cwd drifts. Falls back to $PWD
|
|
67
|
+
when unset. \`tm spawn <path>\` resolves a relative
|
|
68
|
+
<path> against this directory.
|
|
69
|
+
`
|
|
70
|
+
|
|
71
|
+
/** Per-verb help text — `tm <verb> --help` and `tm help <verb>` both print this. */
|
|
72
|
+
export const HELP_TEXTS: Readonly<Record<string, string>> = {
|
|
73
|
+
ls: `tm ls
|
|
74
|
+
|
|
75
|
+
List running teammate-<name> sessions. Shows tmux's raw session
|
|
76
|
+
row (name, window count, attached state). For a richer "who's
|
|
77
|
+
doing what" view, prefer \`tm states\`.
|
|
78
|
+
`,
|
|
79
|
+
states: `tm states
|
|
80
|
+
|
|
81
|
+
One-line fleet snapshot: REPO, SID / thread id (first 8
|
|
82
|
+
chars), BUSY, LAST (size + age of the last assistant reply),
|
|
83
|
+
PREVIEW (first 50 chars of that reply). Claude reads
|
|
84
|
+
/tmp/claude-idle/<sid>.last; Codex reads the current thread's
|
|
85
|
+
rollout JSONL. Use to see what every teammate is doing at a
|
|
86
|
+
glance.
|
|
87
|
+
`,
|
|
88
|
+
spawn: `tm spawn <path> [--name <id>] [--engine claude|codex] [--prompt "..."] [--no-worktree] [--timeout N]
|
|
89
|
+
|
|
90
|
+
Launch a teammate in <path>. <path> is positional; it may be
|
|
91
|
+
absolute, or relative to the dispatcher dir
|
|
92
|
+
(TM_DISPATCHER_DIR / $PWD). The path must be an existing
|
|
93
|
+
directory — it is \`realpath\`-resolved and recorded as
|
|
94
|
+
\`identity.repo\` so every subsequent verb (\`tm send\`,
|
|
95
|
+
\`tm kill\`, \`tm last\`, \`tm mem\`, …) routes by NAME without
|
|
96
|
+
re-walking the filesystem.
|
|
97
|
+
|
|
98
|
+
<name> conventions (after the schema 2 cut):
|
|
99
|
+
- \`--name <id>\` is an explicit flat identifier. Allowed
|
|
100
|
+
shape: \`^[A-Za-z0-9][A-Za-z0-9_-]*$\`. Must be globally
|
|
101
|
+
unique across the dispatcher; collisions fail with
|
|
102
|
+
\`already exists\`.
|
|
103
|
+
- Omit \`--name\` and the verb auto-generates
|
|
104
|
+
\`<path-leaf>-<rand4>\`. The leaf is derived from
|
|
105
|
+
\`basename(realpath(<path>))\`; rand4 ensures multiple
|
|
106
|
+
teammates can target the same repo without collision.
|
|
107
|
+
|
|
108
|
+
Default behaviour creates a git worktree at
|
|
109
|
+
\`<path>/.claude/worktrees/<name>/\` and runs the teammate
|
|
110
|
+
inside it (branch \`worktree-<name>\`, base ref HEAD). Pass
|
|
111
|
+
\`--no-worktree\` to keep the teammate at <path> itself —
|
|
112
|
+
useful for repo-wide work where a worktree would be a
|
|
113
|
+
negative-value isolation.
|
|
114
|
+
|
|
115
|
+
Without --prompt, the verb returns once the REPL signals
|
|
116
|
+
SessionStart (typically 2-4s on a warm Mac). With
|
|
117
|
+
\`--prompt "..."\`, the verb sleeps 3s after ready, sends the
|
|
118
|
+
prompt, waits for Stop, and prints the teammate's first-turn
|
|
119
|
+
reply on stdout — atomic bootstrap, one call.
|
|
120
|
+
|
|
121
|
+
\`--engine\` selects the teammate engine at spawn time. Default
|
|
122
|
+
is claude; pass \`--engine codex\` for a Codex daemon teammate.
|
|
123
|
+
The name carries no engine meaning, so \`codex-reviewer\` is a
|
|
124
|
+
Claude teammate unless \`--engine codex\` is set. Codex
|
|
125
|
+
teammates default to a self-managed git worktree at the same
|
|
126
|
+
\`.claude/worktrees/<name>/\` layout; they are not tmux sessions,
|
|
127
|
+
and \`--resume\` / \`--task\` are rejected on that path.
|
|
128
|
+
|
|
129
|
+
Every teammate launches with the \`AskUserQuestion\` tool
|
|
130
|
+
disabled — a teammate runs with no human at its terminal, and
|
|
131
|
+
that modal would hold the turn open. A teammate raises
|
|
132
|
+
questions by ending its turn with text, which \`tm send\` /
|
|
133
|
+
\`tm spawn --prompt\` relays straight back to the dispatcher.
|
|
134
|
+
|
|
135
|
+
Exit codes on the \`--prompt\` sync path:
|
|
136
|
+
0 first-turn reply
|
|
137
|
+
124 sync wait expired (teammate still booted — collect with
|
|
138
|
+
\`tm wait <name>\`; don't respawn, the name is taken)
|
|
139
|
+
1 real failure
|
|
140
|
+
`,
|
|
141
|
+
send: `tm send <name> --prompt "..." [--pane-quiet] [--timeout N]
|
|
142
|
+
|
|
143
|
+
Atomic round-trip by default: send prompt + wait for the Stop
|
|
144
|
+
hook + print the teammate's reply text on stdout. The
|
|
145
|
+
dispatcher's primary verb — folds what used to be send +
|
|
146
|
+
wait-idle + last into one call. Stdout is exclusively reply
|
|
147
|
+
text; status lines go to stderr (pipe-friendly).
|
|
148
|
+
<name> is the flat teammate identifier from \`tm spawn\` /
|
|
149
|
+
\`tm ls\` — never a path.
|
|
150
|
+
--prompt "..." the prompt text. Required. Same calling form
|
|
151
|
+
as 'tm spawn --prompt' / 'tm resume --prompt'. Flag order is
|
|
152
|
+
free: 'tm send <name> --prompt "..."' and 'tm send --prompt
|
|
153
|
+
"..." <name>' both work.
|
|
154
|
+
--pane-quiet falls back to pane-quiet detection. Use for
|
|
155
|
+
TUI-only commands that fire no hook: /help, /effort,
|
|
156
|
+
/agents, permission prompts. /compact and /clear do NOT
|
|
157
|
+
need it — the Stop hook now covers them via PostCompact /
|
|
158
|
+
SessionEnd.
|
|
159
|
+
--timeout N overrides the 1800s default wait.
|
|
160
|
+
Empty stdout never silently means success: a turn with no text
|
|
161
|
+
(tool-only, /compact, /clear) prints the sentinel line "(no
|
|
162
|
+
text reply this turn — tool-only, /compact, /clear, or fresh
|
|
163
|
+
spawn)".
|
|
164
|
+
On the default (Stop-hook) path, also echoes the teammate's
|
|
165
|
+
post-turn ctx to stderr as "ctx: N tokens · ~M next turn · X%
|
|
166
|
+
of W (note)" — same data as 'tm ctx <name>' inline with the
|
|
167
|
+
reply. Skipped on --pane-quiet (no fresh usage path in jsonl).
|
|
168
|
+
Exit codes:
|
|
169
|
+
0 the reply landed within --timeout; stdout is the reply.
|
|
170
|
+
124 sync wait expired (no Stop hook within --timeout) but the
|
|
171
|
+
teammate is STILL running — stdout is the partial .last
|
|
172
|
+
if any, stderr names the verb to keep tailing with.
|
|
173
|
+
Don't respawn; the name is still taken. Re-collect with
|
|
174
|
+
'tm wait <name>' or check 'tm status <name>'.
|
|
175
|
+
1 real failure (no such tmux session, sid marker missing,
|
|
176
|
+
sendKeys broke). The teammate is gone or never started.
|
|
177
|
+
|
|
178
|
+
When <name> is a codex teammate (recorded in the identity JSON),
|
|
179
|
+
this verb routes into the codex driver: --prompt is
|
|
180
|
+
required, --timeout is accepted, stdout is the final assistant
|
|
181
|
+
text (same pipe-friendly contract as Claude), stderr carries
|
|
182
|
+
sent/sid/ctx/raw-path status lines, and --pane-quiet is rejected
|
|
183
|
+
explicitly rather than silently ignored. The raw Codex Turn JSON
|
|
184
|
+
is atomically overwritten at
|
|
185
|
+
/tmp/teammate-codex/<name>/last-turn.json and can be read with
|
|
186
|
+
'tm last <name> --verbose'.
|
|
187
|
+
`,
|
|
188
|
+
wait: `tm wait <name> [timeout=1800] [--fresh] [--pane-quiet] [--timeout N]
|
|
189
|
+
|
|
190
|
+
Block until the teammate's next Stop hook (or pane-quiet
|
|
191
|
+
fallback), then print the reply to stdout — same output
|
|
192
|
+
contract as 'tm send'. Use when an external actor (Remote
|
|
193
|
+
Control web UI, mobile app, cron) drove the turn and you just
|
|
194
|
+
want to collect the result.
|
|
195
|
+
--fresh clears the idle/.last/.busy baseline up front so the
|
|
196
|
+
NEXT Stop unblocks the wait, not a prior one. Required when
|
|
197
|
+
monitoring an autonomously progressing teammate (no fresh
|
|
198
|
+
'tm send' to reset the baseline for you). No-op under
|
|
199
|
+
--pane-quiet (pane-quiet uses send-at timing instead of a
|
|
200
|
+
sid-keyed marker; the "≥3s since last send" gate already
|
|
201
|
+
provides the freshness guarantee).
|
|
202
|
+
--pane-quiet falls back to pane-quiet detection (same use
|
|
203
|
+
case as on 'tm send').
|
|
204
|
+
--timeout N is the flag form of the positional [timeout=1800];
|
|
205
|
+
both forms are accepted, and if both are passed, whichever
|
|
206
|
+
is parsed last wins.
|
|
207
|
+
Stop-hook path also echoes ctx to stderr (see 'tm send');
|
|
208
|
+
skipped on --pane-quiet.
|
|
209
|
+
Same exit codes as 'tm send': 0 on a fresh Stop, 124 if --timeout
|
|
210
|
+
elapses without one (teammate still running — re-run 'tm wait'),
|
|
211
|
+
1 on a real failure (no session / no sid marker).
|
|
212
|
+
`,
|
|
213
|
+
compact: `tm compact <name> [timeout=1800] [--timeout N]
|
|
214
|
+
|
|
215
|
+
Send /compact and verify PostCompact fired. Prints "compacted"
|
|
216
|
+
on stdout when the Stop-hook idle marker is touched. Doesn't
|
|
217
|
+
read ctx — run 'tm ctx <name>' separately if you want the new
|
|
218
|
+
size.
|
|
219
|
+
Default timeout is 1800s — large contexts can run many
|
|
220
|
+
minutes, and the cap only fires when compaction never
|
|
221
|
+
finishes.
|
|
222
|
+
Two non-success modes with different exit codes:
|
|
223
|
+
1 Claude Code refuses with "Not enough messages to compact"
|
|
224
|
+
(transcript too short). That error fires no hook, so the
|
|
225
|
+
pane is scanned alongside the idle-marker poll to detect
|
|
226
|
+
it. /compact won't proceed; this is a true failure.
|
|
227
|
+
124 PostCompact never fires within timeout. Compaction may
|
|
228
|
+
still be running — same "sync wait expired, teammate
|
|
229
|
+
still alive" semantics as 'tm send'.
|
|
230
|
+
`,
|
|
231
|
+
resume: `tm resume <name> [<sid-or-thread-id>] [--prompt "..."] [--engine claude|codex]
|
|
232
|
+
|
|
233
|
+
Resume a prior conversation. <name> is the flat teammate
|
|
234
|
+
identifier from a previous spawn — never a path.
|
|
235
|
+
Claude teammates use a transcript sid: passing <sid> validates
|
|
236
|
+
that transcript and launches 'claude --resume <sid>'. Without
|
|
237
|
+
sid, Claude's native 'claude --continue' chooses the latest
|
|
238
|
+
session for the cwd; the /tmp/teammate-<name>.sid marker is
|
|
239
|
+
written by the SessionStart hook after the REPL starts.
|
|
240
|
+
Codex teammates use a thread id: passing <thread-id> calls
|
|
241
|
+
thread/resume directly. Without thread id, claudemux starts a new
|
|
242
|
+
app-server daemon, calls thread/list(limit=1, sortKey=updated_at,
|
|
243
|
+
cwd=<recorded-cwd>) to ask Codex for the latest thread, writes
|
|
244
|
+
that thread id back to the Codex registry, and then calls
|
|
245
|
+
thread/resume.
|
|
246
|
+
Engine selection without an explicit id: when the teammate has no
|
|
247
|
+
base record left (e.g. after 'tm kill'), claudemux probes the cwd
|
|
248
|
+
against both engines' history (Claude project dir + Codex rollout
|
|
249
|
+
sessions). A single candidate auto-routes; if both engines hold
|
|
250
|
+
resumable history the verb refuses to guess and asks for
|
|
251
|
+
disambiguation. Pass --engine claude|codex to skip probing and
|
|
252
|
+
route directly, or supply an explicit <sid>/<thread-id>. --engine
|
|
253
|
+
overrides every other selector — even an active router record.
|
|
254
|
+
Fails if a teammate session for <name> already exists.
|
|
255
|
+
--prompt sends a follow-up after relaunch, atomic like
|
|
256
|
+
'tm spawn --prompt' (inherits 'tm send''s stderr ctx echo on
|
|
257
|
+
the sync path where available).
|
|
258
|
+
Like every teammate launch, the resumed REPL starts with the
|
|
259
|
+
AskUserQuestion tool disabled (see 'tm help spawn' for why): a
|
|
260
|
+
resumed teammate raises questions by ending its turn with
|
|
261
|
+
text, not by opening a modal.
|
|
262
|
+
`,
|
|
263
|
+
last: `tm last <name> [--verbose]
|
|
264
|
+
|
|
265
|
+
Print the teammate's last-turn reply from
|
|
266
|
+
/tmp/claude-idle/<sid>.last. Empty or missing file dies with
|
|
267
|
+
"no reply yet". Use this when you want to re-read a reply the
|
|
268
|
+
send/wait verbs already printed (their output is one-shot).
|
|
269
|
+
For a Codex teammate, --verbose prints the raw
|
|
270
|
+
/tmp/teammate-codex/<name>/last-turn.json instead of the
|
|
271
|
+
assistant-text summary.
|
|
272
|
+
`,
|
|
273
|
+
mem: `tm mem <name>
|
|
274
|
+
|
|
275
|
+
Cat the sibling repo's auto-memory MEMORY.md to stdout. Use
|
|
276
|
+
this before composing a \`tm spawn\` / \`tm send --prompt\` that
|
|
277
|
+
references sibling state (feature-gate names, branch names,
|
|
278
|
+
in-progress projects) — sibling memories live in separate
|
|
279
|
+
per-cwd index files that the dispatcher's own AutoMemory does
|
|
280
|
+
not include. Resolves the encoded project dir as
|
|
281
|
+
$HOME/.claude/projects/<encoded>/memory/MEMORY.md where
|
|
282
|
+
<encoded> = the repo's physical cwd with every \`/\` and \`.\`
|
|
283
|
+
replaced by \`-\`. If no MEMORY.md exists for the repo (never
|
|
284
|
+
ran claude, or its project dir was pruned), prints a one-line
|
|
285
|
+
notice to stderr and returns 0 with empty stdout — that is
|
|
286
|
+
the normal "no sibling memory" case, not an error.
|
|
287
|
+
|
|
288
|
+
MEMORY.md entries can be stale. Verify any fact you are about
|
|
289
|
+
to inject into a teammate's prompt against current code or
|
|
290
|
+
git state before sending.
|
|
291
|
+
`,
|
|
292
|
+
kill: `tm kill <name>
|
|
293
|
+
|
|
294
|
+
Graceful teammate shutdown. For a Claude teammate the verb
|
|
295
|
+
sends \`/exit\` to the REPL and waits up to 15s for the
|
|
296
|
+
SessionEnd hook to fire (observed as either the tmux pane
|
|
297
|
+
disappearing or the teammate's idle marker being touched by
|
|
298
|
+
\`on-stop.sh\`, whichever comes first). \`/exit\` in a clean
|
|
299
|
+
worktree auto-removes both the worktree directory and the
|
|
300
|
+
\`worktree-<slug>\` branch; in a dirty worktree Claude shows
|
|
301
|
+
an interactive "Keep / Remove worktree" prompt — the verb
|
|
302
|
+
presses Enter (default: Keep) and waits another 5s. If
|
|
303
|
+
neither signal lands inside that 20s combined budget, the
|
|
304
|
+
verb falls back to \`tmux kill-session\` (SIGHUP) and prints
|
|
305
|
+
a stderr note pointing at the leftover worktree.
|
|
306
|
+
|
|
307
|
+
Override the combined budget via \`CLAUDEMUX_KILL_GRACE_MS\`
|
|
308
|
+
(used by the conformance harness to keep test runs fast).
|
|
309
|
+
|
|
310
|
+
For a Codex teammate the verb SIGTERMs the daemon. When the
|
|
311
|
+
identity record carries a \`worktreeSlug\`, the verb tries
|
|
312
|
+
\`git worktree remove --force <name>/.claude/worktrees/<slug>\`;
|
|
313
|
+
a dirty worktree is preserved with a stderr warning and a
|
|
314
|
+
hand-typeable removal command.
|
|
315
|
+
|
|
316
|
+
The identity JSON, \`.sid\` / \`.cwd\` / \`.ready\` / \`.send-at\`
|
|
317
|
+
marker files, and idle / busy / .last markers are cleared on
|
|
318
|
+
every exit path (clean, dirty, forced).
|
|
319
|
+
`,
|
|
320
|
+
ask: `tm ask "<prompt>"
|
|
321
|
+
|
|
322
|
+
Drive a one-shot turn on an idle codex teammate from the
|
|
323
|
+
Codex pool, on a fresh thread (so the borrowed teammate's
|
|
324
|
+
persistent conversation thread is not polluted). Prints the
|
|
325
|
+
turn's JSON to stdout.
|
|
326
|
+
|
|
327
|
+
Pool semantics (decision node-cli-orchestrator §6, pool decision A): the named
|
|
328
|
+
Codex-engine teammates are the pool. ask picks any idle one,
|
|
329
|
+
borrows it for one turn, and returns it. "Idle" means it has no
|
|
330
|
+
active borrow lock; the lock is a file under
|
|
331
|
+
/tmp/teammate-codex/<name>/lock.
|
|
332
|
+
|
|
333
|
+
Errors when no codex teammate has been spawned, when every
|
|
334
|
+
spawned teammate is dead (run 'tm doctor' to reap), or when
|
|
335
|
+
every alive teammate is currently borrowed (retry, or spawn one
|
|
336
|
+
more).
|
|
337
|
+
`,
|
|
338
|
+
reload: `tm reload <name>... | --all
|
|
339
|
+
|
|
340
|
+
Fan out /reload-plugins to one, many, or every teammate.
|
|
341
|
+
Sugar over 'tm send <name> --prompt /reload-plugins'. --all enumerates
|
|
342
|
+
from \`tmux ls\`; missing/dead teammates are skipped with a
|
|
343
|
+
stderr note and the exit status reflects whether every send
|
|
344
|
+
succeeded.
|
|
345
|
+
`,
|
|
346
|
+
ctx: `tm ctx <name>... | --all [--window 200k|1m]
|
|
347
|
+
|
|
348
|
+
Real context-window usage per teammate, read from the jsonl
|
|
349
|
+
usage block (more accurate than the TUI percentage). Prints
|
|
350
|
+
current prompt size, next-turn estimate, and percent of
|
|
351
|
+
window.
|
|
352
|
+
Window size is not in the transcript: a peak above ~210k
|
|
353
|
+
proves a 1M window; otherwise 200k is assumed (labelled
|
|
354
|
+
accordingly). --window forces the assumption.
|
|
355
|
+
`,
|
|
356
|
+
history: `tm history <name> [<sid-or-thread-prefix>]
|
|
357
|
+
|
|
358
|
+
Inspect this repo's past Claude sessions and Codex threads
|
|
359
|
+
(live or dead). No id: list mode, newest-first table merged by
|
|
360
|
+
transcript / rollout mtime. The ENGINE column identifies
|
|
361
|
+
claude vs codex; ID is the full Claude sid (UUIDv4) or Codex
|
|
362
|
+
thread id (UUIDv7) recorded in a rollout filename — the same
|
|
363
|
+
string 'tm resume' accepts. '*' marks the current live
|
|
364
|
+
teammate's session / thread. With a sid, thread id, or prefix:
|
|
365
|
+
detail mode (full id, transcript / rollout path, size / line
|
|
366
|
+
count, created time, ctx usage when present, first prompt,
|
|
367
|
+
last assistant text up to 1500 chars, ready-to-paste
|
|
368
|
+
'tm resume' command). Boundary vs 'tm last': last covers only
|
|
369
|
+
the current live teammate's reply; history covers any jsonl on
|
|
370
|
+
disk including killed sessions.
|
|
371
|
+
`,
|
|
372
|
+
archive: `tm archive <id> [--status '<tag>']
|
|
373
|
+
|
|
374
|
+
Move a finished task from the active ledger to the archive.
|
|
375
|
+
Reads the compressed one/two-line outcome on stdin; copies
|
|
376
|
+
repo/branch/intent verbatim from the active entry and stamps
|
|
377
|
+
today's date. Prepends to dispatcher-tasks-archive.md (newest
|
|
378
|
+
on top), creating it from its shape if absent, then deletes
|
|
379
|
+
the entry from active-dispatcher-tasks.md. --status overrides
|
|
380
|
+
the carried-over [status] tag.
|
|
381
|
+
`,
|
|
382
|
+
status: `tm status <name> [lines=80]
|
|
383
|
+
|
|
384
|
+
Capture-pane the teammate's live screen. DIAGNOSTIC — the
|
|
385
|
+
sync send/wait verbs make this unnecessary for normal flow.
|
|
386
|
+
Reach for it only when you genuinely need the live pane (e.g.
|
|
387
|
+
confirming a TUI dialog is up).
|
|
388
|
+
`,
|
|
389
|
+
poll: `tm poll <name> <regex> [timeout=180]
|
|
390
|
+
|
|
391
|
+
Block until pane content matches a regex. DIAGNOSTIC fallback
|
|
392
|
+
when \`tm wait\` can't catch an interesting intermediate state.
|
|
393
|
+
Match the EXPECTED RESULT, not the prompt you just sent (a
|
|
394
|
+
pattern that appears in the sent prompt makes the wait return
|
|
395
|
+
instantly).
|
|
396
|
+
`,
|
|
397
|
+
doctor: `tm doctor
|
|
398
|
+
|
|
399
|
+
Self-check for the dispatcher environment. Reports, in order:
|
|
400
|
+
- tm executable: resolved path and reported plugin version
|
|
401
|
+
- dispatcher dir: TM_DISPATCHER_DIR (or $PWD fallback),
|
|
402
|
+
whether the env was actually set, and whether the
|
|
403
|
+
resolved path matches your current $PWD
|
|
404
|
+
- tmux: installed? version? server running? are we inside
|
|
405
|
+
a tmux session?
|
|
406
|
+
- idle dir: does /tmp/claude-idle/ exist?
|
|
407
|
+
- active teammates: count + names from \`tm ls\`
|
|
408
|
+
Read-only — doesn't change any state. Use it when something
|
|
409
|
+
looks off ("why is tm using the wrong path?" / "did
|
|
410
|
+
/claudemux:setup actually write the env?"). Exit code is
|
|
411
|
+
always 0; interpret the printed lines, not the status.
|
|
412
|
+
`,
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Verbs removed in earlier releases. A user (or stale doc) still typing them
|
|
417
|
+
* gets a specific migration hint and exit 2, instead of the generic
|
|
418
|
+
* "unknown subcommand" path — these are part of the user-facing contract.
|
|
419
|
+
*
|
|
420
|
+
* The `--help` pre-scan in `cli/parse.ts` runs first, so e.g. `tm ask --help`
|
|
421
|
+
* still reaches the overview (no per-verb help exists for a removed verb) —
|
|
422
|
+
* matching the bash behaviour that this layer preserves.
|
|
423
|
+
*/
|
|
424
|
+
export const REMOVED_VERB_MESSAGES: Readonly<Record<string, string>> = {
|
|
425
|
+
// `tm ask` was removed in 0.3.0 and re-introduced in stage 4 with new
|
|
426
|
+
// semantics (codex-mode borrow/return on a Codex-engine teammate). The
|
|
427
|
+
// entry is therefore intentionally absent here — `cli/dispatch.ts` routes the
|
|
428
|
+
// verb into the native dispatch table instead.
|
|
429
|
+
'wait-idle': `tm wait-idle was renamed to 'tm wait' in 0.3.0. Same semantics; the new verb also prints .last on stdout by default.
|
|
430
|
+
`,
|
|
431
|
+
'wait-quiet': `tm wait-quiet was folded into the --pane-quiet flag in 0.3.0. Use 'tm wait <name> --pane-quiet' (or 'tm send <name> --prompt "..." --pane-quiet' for the send-then-wait composition).
|
|
432
|
+
`,
|
|
433
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Teammate name validation.
|
|
3
|
+
*
|
|
4
|
+
* Schema 2 made teammate names flat opaque identifiers — fully
|
|
5
|
+
* decoupled from any repository path. A name must start with an
|
|
6
|
+
* ASCII alphanumeric character and may contain only ASCII
|
|
7
|
+
* alphanumerics, `-`, and `_`. `/` is forbidden, as is anything that
|
|
8
|
+
* looks like a path segment (`.`, `..`, leading `.`).
|
|
9
|
+
*
|
|
10
|
+
* The flat shape is what `tmuxSessionName` and every cross-process
|
|
11
|
+
* file path under `/tmp` consumes directly — no encoding pass, no
|
|
12
|
+
* round-trip ambiguity.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type { TeammateName } from '../engines/types'
|
|
16
|
+
|
|
17
|
+
const NAME_REGEX = /^[A-Za-z0-9][A-Za-z0-9_-]*$/
|
|
18
|
+
|
|
19
|
+
export interface NameValidationFailure {
|
|
20
|
+
readonly kind: 'invalid'
|
|
21
|
+
readonly reason: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface NameValidationOk {
|
|
25
|
+
readonly kind: 'ok'
|
|
26
|
+
readonly name: TeammateName
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type NameValidationResult = NameValidationOk | NameValidationFailure
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Validate a raw CLI teammate name. The accepted form is documented
|
|
33
|
+
* above. Returns a discriminated result so the caller decides what
|
|
34
|
+
* error message the user sees.
|
|
35
|
+
*/
|
|
36
|
+
export function validateTeammateName(raw: string): NameValidationResult {
|
|
37
|
+
if (raw.length === 0) return { kind: 'invalid', reason: 'empty' }
|
|
38
|
+
if (raw.includes('/')) {
|
|
39
|
+
return {
|
|
40
|
+
kind: 'invalid',
|
|
41
|
+
reason: "names are flat — '/' is forbidden (use a slug like 'flow-auth' instead)",
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (raw === '.' || raw === '..') {
|
|
45
|
+
return { kind: 'invalid', reason: `name '${raw}' is reserved` }
|
|
46
|
+
}
|
|
47
|
+
if (raw.startsWith('.')) {
|
|
48
|
+
return { kind: 'invalid', reason: `name '${raw}' starts with '.'` }
|
|
49
|
+
}
|
|
50
|
+
if (!NAME_REGEX.test(raw)) {
|
|
51
|
+
return {
|
|
52
|
+
kind: 'invalid',
|
|
53
|
+
reason:
|
|
54
|
+
"name must start with [A-Za-z0-9] and contain only [A-Za-z0-9_-] (no '/', no '.')",
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return { kind: 'ok', name: raw }
|
|
58
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a teammate name to the engine that owns it. Decision multi-engine-tui-architecture
|
|
3
|
+
* §"Engine identity is the JSON's `engine` field" sets the rule: the
|
|
4
|
+
* router reads `/tmp/teammate-<name>.json` and routes by the `engine`
|
|
5
|
+
* field — no "infer from which registry directory exists" path, no
|
|
6
|
+
* legacy `codex-` prefix fallback.
|
|
7
|
+
*
|
|
8
|
+
* The verb-layer default impls (`statusVerb`, `killVerb`, every
|
|
9
|
+
* single-teammate verb) call `router.resolve(name)`; a `null` return
|
|
10
|
+
* is the "no such teammate" case the verb formats. The router never
|
|
11
|
+
* throws on a missing teammate — that is data, not an error.
|
|
12
|
+
*
|
|
13
|
+
* The production wiring may pass an identity migrator for already-running
|
|
14
|
+
* teammates that predate the base JSON. That migrator is allowed to
|
|
15
|
+
* materialise `/tmp/teammate-<name>.json`; the router still routes only by
|
|
16
|
+
* re-reading the JSON afterwards.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { read as readIdentity } from '../persistence/identity-store'
|
|
20
|
+
import { validateTeammateName } from './name'
|
|
21
|
+
import type { Engine } from '../engines/engine'
|
|
22
|
+
import type { EngineRegistryView } from '../engines/registry'
|
|
23
|
+
import type { TeammateName } from '../engines/types'
|
|
24
|
+
|
|
25
|
+
/** One resolved teammate — the name plus the engine that owns it. */
|
|
26
|
+
export interface ResolvedTeammate {
|
|
27
|
+
readonly name: TeammateName
|
|
28
|
+
readonly engine: Engine
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** The seam every single-teammate verb consults. */
|
|
32
|
+
export interface TeammateRouter {
|
|
33
|
+
/** `null` means "no teammate by that name" — a data outcome, not an error. */
|
|
34
|
+
resolve(name: TeammateName): Promise<ResolvedTeammate | null>
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Optional one-shot materialisation for pre-identity running teammates. */
|
|
38
|
+
export type IdentityMigrator = (name: TeammateName) => Promise<void>
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Production router. Reads the base TeammateRecord JSON via the identity
|
|
42
|
+
* store; looks up the engine for the recorded kind through the registry.
|
|
43
|
+
* If either step misses, the result is `null` and the verb formats
|
|
44
|
+
* "no such teammate".
|
|
45
|
+
*
|
|
46
|
+
* A teammate whose JSON records an engine kind that this process has
|
|
47
|
+
* not registered (e.g. a stale `codex` record while running a build
|
|
48
|
+
* without Codex wired up) also resolves to `null` — the verb says "no
|
|
49
|
+
* such teammate" rather than crashing on `engines.get(undefined)`.
|
|
50
|
+
*/
|
|
51
|
+
export class ProductionTeammateRouter implements TeammateRouter {
|
|
52
|
+
constructor(
|
|
53
|
+
private readonly engines: EngineRegistryView,
|
|
54
|
+
private readonly migrateMissingIdentity: IdentityMigrator | null = null,
|
|
55
|
+
) {}
|
|
56
|
+
|
|
57
|
+
async resolve(name: TeammateName): Promise<ResolvedTeammate | null> {
|
|
58
|
+
if (validateTeammateName(name).kind !== 'ok') return null
|
|
59
|
+
let record = readIdentity(name)
|
|
60
|
+
if (record === null && this.migrateMissingIdentity !== null) {
|
|
61
|
+
await this.migrateMissingIdentity(name)
|
|
62
|
+
record = readIdentity(name)
|
|
63
|
+
}
|
|
64
|
+
if (record === null) return null
|
|
65
|
+
const engine = this.engines.get(record.engine)
|
|
66
|
+
if (engine === undefined) return null
|
|
67
|
+
return { name, engine }
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Test-only router. Returns `null` for every name. Phase 1 used this as
|
|
73
|
+
* the default; Phase 2a keeps it for tests that need to exercise the
|
|
74
|
+
* "not found" branch without setting up the identity store.
|
|
75
|
+
*/
|
|
76
|
+
export class EmptyTeammateRouter implements TeammateRouter {
|
|
77
|
+
async resolve(_name: TeammateName): Promise<ResolvedTeammate | null> {
|
|
78
|
+
return null
|
|
79
|
+
}
|
|
80
|
+
}
|