@gitkraken/core-gitlens 0.4.0 → 0.4.101
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/CHANGELOG.md +74 -1
- package/README.md +9 -2
- package/dist/git/cache.d.ts +29 -2
- package/dist/git/cache.d.ts.map +1 -1
- package/dist/git/cache.js +67 -7
- package/dist/git/cache.js.map +1 -1
- package/dist/git/context.d.ts.map +1 -1
- package/dist/git/errors.d.ts +31 -1
- package/dist/git/errors.d.ts.map +1 -1
- package/dist/git/errors.js +29 -0
- package/dist/git/errors.js.map +1 -1
- package/dist/git/models/author.d.ts.map +1 -1
- package/dist/git/models/author.js.map +1 -1
- package/dist/git/models/autolink.d.ts.map +1 -1
- package/dist/git/models/autolink.js.map +1 -1
- package/dist/git/models/blame.d.ts.map +1 -1
- package/dist/git/models/blame.js.map +1 -1
- package/dist/git/models/branch.d.ts.map +1 -1
- package/dist/git/models/branch.js.map +1 -1
- package/dist/git/models/commit.d.ts.map +1 -1
- package/dist/git/models/commit.js +1 -1
- package/dist/git/models/commit.js.map +1 -1
- package/dist/git/models/contributor.d.ts.map +1 -1
- package/dist/git/models/contributor.js.map +1 -1
- package/dist/git/models/defaultBranch.d.ts.map +1 -1
- package/dist/git/models/defaultBranch.js.map +1 -1
- package/dist/git/models/diff.d.ts.map +1 -1
- package/dist/git/models/diff.js.map +1 -1
- package/dist/git/models/file.d.ts.map +1 -1
- package/dist/git/models/file.js.map +1 -1
- package/dist/git/models/fileChange.d.ts.map +1 -1
- package/dist/git/models/fileChange.js.map +1 -1
- package/dist/git/models/fileStatus.d.ts +22 -22
- package/dist/git/models/fileStatus.d.ts.map +1 -1
- package/dist/git/models/fileStatus.js.map +1 -1
- package/dist/git/models/graph.d.ts +122 -1
- package/dist/git/models/graph.d.ts.map +1 -1
- package/dist/git/models/graph.js +4 -0
- package/dist/git/models/graph.js.map +1 -1
- package/dist/git/models/graphSearch.d.ts.map +1 -1
- package/dist/git/models/graphSearch.js.map +1 -1
- package/dist/git/models/graphSession.d.ts +177 -0
- package/dist/git/models/graphSession.d.ts.map +1 -0
- package/dist/git/models/graphSession.js +7 -0
- package/dist/git/models/graphSession.js.map +1 -0
- package/dist/git/models/issue.d.ts +12 -2
- package/dist/git/models/issue.d.ts.map +1 -1
- package/dist/git/models/issue.js +3 -1
- package/dist/git/models/issue.js.map +1 -1
- package/dist/git/models/issueOrPullRequest.d.ts.map +1 -1
- package/dist/git/models/issueOrPullRequest.js.map +1 -1
- package/dist/git/models/lineRange.d.ts.map +1 -1
- package/dist/git/models/lineRange.js.map +1 -1
- package/dist/git/models/log.d.ts.map +1 -1
- package/dist/git/models/log.js.map +1 -1
- package/dist/git/models/mergeConflicts.d.ts.map +1 -1
- package/dist/git/models/mergeConflicts.js.map +1 -1
- package/dist/git/models/patch.d.ts.map +1 -1
- package/dist/git/models/patch.js.map +1 -1
- package/dist/git/models/pausedOperationStatus.d.ts.map +1 -1
- package/dist/git/models/pausedOperationStatus.js.map +1 -1
- package/dist/git/models/pullRequest.d.ts +27 -2
- package/dist/git/models/pullRequest.d.ts.map +1 -1
- package/dist/git/models/pullRequest.js +7 -1
- package/dist/git/models/pullRequest.js.map +1 -1
- package/dist/git/models/rebase.d.ts.map +1 -1
- package/dist/git/models/rebase.js.map +1 -1
- package/dist/git/models/reference.d.ts.map +1 -1
- package/dist/git/models/reference.js.map +1 -1
- package/dist/git/models/reflog.d.ts.map +1 -1
- package/dist/git/models/reflog.js.map +1 -1
- package/dist/git/models/remote.d.ts.map +1 -1
- package/dist/git/models/remote.js.map +1 -1
- package/dist/git/models/remoteProvider.d.ts.map +1 -1
- package/dist/git/models/remoteProvider.js.map +1 -1
- package/dist/git/models/remoteResource.d.ts.map +1 -1
- package/dist/git/models/remoteResource.js.map +1 -1
- package/dist/git/models/repository.d.ts +20 -2
- package/dist/git/models/repository.d.ts.map +1 -1
- package/dist/git/models/repository.js +19 -0
- package/dist/git/models/repository.js.map +1 -1
- package/dist/git/models/repositoryChangeEvent.d.ts.map +1 -1
- package/dist/git/models/repositoryChangeEvent.js.map +1 -1
- package/dist/git/models/repositoryIdentities.d.ts.map +1 -1
- package/dist/git/models/repositoryIdentities.js.map +1 -1
- package/dist/git/models/repositoryMetadata.d.ts.map +1 -1
- package/dist/git/models/repositoryMetadata.js.map +1 -1
- package/dist/git/models/resourceDescriptor.d.ts +16 -0
- package/dist/git/models/resourceDescriptor.d.ts.map +1 -1
- package/dist/git/models/resourceDescriptor.js.map +1 -1
- package/dist/git/models/revision.d.ts.map +1 -1
- package/dist/git/models/revision.js.map +1 -1
- package/dist/git/models/search.d.ts.map +1 -1
- package/dist/git/models/search.js.map +1 -1
- package/dist/git/models/shortlog.d.ts.map +1 -1
- package/dist/git/models/shortlog.js.map +1 -1
- package/dist/git/models/signature.d.ts +14 -0
- package/dist/git/models/signature.d.ts.map +1 -1
- package/dist/git/models/signature.js.map +1 -1
- package/dist/git/models/staging.d.ts.map +1 -1
- package/dist/git/models/staging.js.map +1 -1
- package/dist/git/models/stash.d.ts.map +1 -1
- package/dist/git/models/stash.js.map +1 -1
- package/dist/git/models/status.d.ts.map +1 -1
- package/dist/git/models/status.js.map +1 -1
- package/dist/git/models/statusFile.d.ts.map +1 -1
- package/dist/git/models/statusFile.js.map +1 -1
- package/dist/git/models/tag.d.ts +11 -1
- package/dist/git/models/tag.d.ts.map +1 -1
- package/dist/git/models/tag.js +9 -2
- package/dist/git/models/tag.js.map +1 -1
- package/dist/git/models/tree.d.ts.map +1 -1
- package/dist/git/models/tree.js.map +1 -1
- package/dist/git/models/user.d.ts.map +1 -1
- package/dist/git/models/user.js.map +1 -1
- package/dist/git/models/worktree.d.ts.map +1 -1
- package/dist/git/models/worktree.js.map +1 -1
- package/dist/git/parsers/diffParser.d.ts.map +1 -1
- package/dist/git/parsers/diffParser.js +1 -1
- package/dist/git/parsers/diffParser.js.map +1 -1
- package/dist/git/parsers/rebaseTodoParser.d.ts.map +1 -1
- package/dist/git/parsers/rebaseTodoParser.js.map +1 -1
- package/dist/git/providers/blame.d.ts.map +1 -1
- package/dist/git/providers/blame.js.map +1 -1
- package/dist/git/providers/branches.d.ts +8 -1
- package/dist/git/providers/branches.d.ts.map +1 -1
- package/dist/git/providers/branches.js.map +1 -1
- package/dist/git/providers/commits.d.ts +6 -1
- package/dist/git/providers/commits.d.ts.map +1 -1
- package/dist/git/providers/commits.js.map +1 -1
- package/dist/git/providers/config.d.ts +6 -2
- package/dist/git/providers/config.d.ts.map +1 -1
- package/dist/git/providers/config.js.map +1 -1
- package/dist/git/providers/contributors.d.ts.map +1 -1
- package/dist/git/providers/contributors.js.map +1 -1
- package/dist/git/providers/diff.d.ts.map +1 -1
- package/dist/git/providers/diff.js.map +1 -1
- package/dist/git/providers/graph.d.ts +55 -1
- package/dist/git/providers/graph.d.ts.map +1 -1
- package/dist/git/providers/graph.js.map +1 -1
- package/dist/git/providers/operations.d.ts.map +1 -1
- package/dist/git/providers/operations.js.map +1 -1
- package/dist/git/providers/patch.d.ts.map +1 -1
- package/dist/git/providers/patch.js.map +1 -1
- package/dist/git/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git/providers/pausedOperations.js.map +1 -1
- package/dist/git/providers/provider.d.ts.map +1 -1
- package/dist/git/providers/provider.js.map +1 -1
- package/dist/git/providers/refs.d.ts.map +1 -1
- package/dist/git/providers/refs.js.map +1 -1
- package/dist/git/providers/remotes.d.ts.map +1 -1
- package/dist/git/providers/remotes.js.map +1 -1
- package/dist/git/providers/revision.d.ts.map +1 -1
- package/dist/git/providers/revision.js.map +1 -1
- package/dist/git/providers/shared/remotes.d.ts.map +1 -1
- package/dist/git/providers/shared/remotes.js.map +1 -1
- package/dist/git/providers/staging.d.ts.map +1 -1
- package/dist/git/providers/staging.js.map +1 -1
- package/dist/git/providers/stash.d.ts.map +1 -1
- package/dist/git/providers/stash.js.map +1 -1
- package/dist/git/providers/status.d.ts +1 -0
- package/dist/git/providers/status.d.ts.map +1 -1
- package/dist/git/providers/status.js.map +1 -1
- package/dist/git/providers/tags.d.ts.map +1 -1
- package/dist/git/providers/tags.js.map +1 -1
- package/dist/git/providers/types.d.ts.map +1 -1
- package/dist/git/providers/types.js.map +1 -1
- package/dist/git/providers/worktrees.d.ts +3 -1
- package/dist/git/providers/worktrees.d.ts.map +1 -1
- package/dist/git/providers/worktrees.js.map +1 -1
- package/dist/git/remotes/azure-devops.d.ts.map +1 -1
- package/dist/git/remotes/azure-devops.js +27 -31
- package/dist/git/remotes/azure-devops.js.map +1 -1
- package/dist/git/remotes/bitbucket-server.d.ts.map +1 -1
- package/dist/git/remotes/bitbucket-server.js +21 -23
- package/dist/git/remotes/bitbucket-server.js.map +1 -1
- package/dist/git/remotes/bitbucket.d.ts.map +1 -1
- package/dist/git/remotes/bitbucket.js +21 -23
- package/dist/git/remotes/bitbucket.js.map +1 -1
- package/dist/git/remotes/custom.d.ts.map +1 -1
- package/dist/git/remotes/custom.js.map +1 -1
- package/dist/git/remotes/gerrit.d.ts.map +1 -1
- package/dist/git/remotes/gerrit.js +11 -13
- package/dist/git/remotes/gerrit.js.map +1 -1
- package/dist/git/remotes/gitea.d.ts.map +1 -1
- package/dist/git/remotes/gitea.js +12 -14
- package/dist/git/remotes/gitea.js.map +1 -1
- package/dist/git/remotes/github.d.ts.map +1 -1
- package/dist/git/remotes/github.js +54 -56
- package/dist/git/remotes/github.js.map +1 -1
- package/dist/git/remotes/gitlab.d.ts.map +1 -1
- package/dist/git/remotes/gitlab.js +93 -95
- package/dist/git/remotes/gitlab.js.map +1 -1
- package/dist/git/remotes/google-source.d.ts.map +1 -1
- package/dist/git/remotes/google-source.js.map +1 -1
- package/dist/git/remotes/matcher.d.ts.map +1 -1
- package/dist/git/remotes/matcher.js.map +1 -1
- package/dist/git/run.types.d.ts +62 -3
- package/dist/git/run.types.d.ts.map +1 -1
- package/dist/git/service.d.ts.map +1 -1
- package/dist/git/utils/autolink.utils.d.ts.map +1 -1
- package/dist/git/utils/autolink.utils.js.map +1 -1
- package/dist/git/utils/blame.utils.d.ts.map +1 -1
- package/dist/git/utils/blame.utils.js.map +1 -1
- package/dist/git/utils/branch.utils.d.ts.map +1 -1
- package/dist/git/utils/branch.utils.js +12 -1
- package/dist/git/utils/branch.utils.js.map +1 -1
- package/dist/git/utils/commit.utils.d.ts.map +1 -1
- package/dist/git/utils/commit.utils.js.map +1 -1
- package/dist/git/utils/conflictResolution.utils.d.ts.map +1 -1
- package/dist/git/utils/conflictResolution.utils.js.map +1 -1
- package/dist/git/utils/contributor.utils.d.ts +1 -1
- package/dist/git/utils/contributor.utils.d.ts.map +1 -1
- package/dist/git/utils/contributor.utils.js +1 -2
- package/dist/git/utils/contributor.utils.js.map +1 -1
- package/dist/git/utils/fetch.utils.d.ts.map +1 -1
- package/dist/git/utils/fetch.utils.js.map +1 -1
- package/dist/git/utils/fileStatus.utils.d.ts +7 -0
- package/dist/git/utils/fileStatus.utils.d.ts.map +1 -1
- package/dist/git/utils/fileStatus.utils.js +6 -0
- package/dist/git/utils/fileStatus.utils.js.map +1 -1
- package/dist/git/utils/graph.utils.d.ts +20 -0
- package/dist/git/utils/graph.utils.d.ts.map +1 -0
- package/dist/git/utils/graph.utils.js +40 -0
- package/dist/git/utils/graph.utils.js.map +1 -0
- package/dist/git/utils/issue.utils.d.ts.map +1 -1
- package/dist/git/utils/issue.utils.js +1 -0
- package/dist/git/utils/issue.utils.js.map +1 -1
- package/dist/git/utils/issueOrPullRequest.utils.d.ts.map +1 -1
- package/dist/git/utils/issueOrPullRequest.utils.js.map +1 -1
- package/dist/git/utils/mergeConflicts.utils.d.ts.map +1 -1
- package/dist/git/utils/mergeConflicts.utils.js.map +1 -1
- package/dist/git/utils/pausedOperationStatus.utils.d.ts +13 -13
- package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +1 -1
- package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -1
- package/dist/git/utils/pullRequest.utils.d.ts.map +1 -1
- package/dist/git/utils/pullRequest.utils.js +9 -0
- package/dist/git/utils/pullRequest.utils.js.map +1 -1
- package/dist/git/utils/reachability.utils.d.ts +20 -2
- package/dist/git/utils/reachability.utils.d.ts.map +1 -1
- package/dist/git/utils/reachability.utils.js +68 -7
- package/dist/git/utils/reachability.utils.js.map +1 -1
- package/dist/git/utils/rebase.utils.d.ts.map +1 -1
- package/dist/git/utils/rebase.utils.js.map +1 -1
- package/dist/git/utils/reference.utils.d.ts.map +1 -1
- package/dist/git/utils/reference.utils.js.map +1 -1
- package/dist/git/utils/remote.utils.d.ts.map +1 -1
- package/dist/git/utils/remote.utils.js.map +1 -1
- package/dist/git/utils/repository.utils.d.ts.map +1 -1
- package/dist/git/utils/repository.utils.js.map +1 -1
- package/dist/git/utils/resourceDescriptor.utils.d.ts.map +1 -1
- package/dist/git/utils/resourceDescriptor.utils.js.map +1 -1
- package/dist/git/utils/revision.utils.d.ts.map +1 -1
- package/dist/git/utils/revision.utils.js.map +1 -1
- package/dist/git/utils/search.utils.d.ts.map +1 -1
- package/dist/git/utils/search.utils.js.map +1 -1
- package/dist/git/utils/sorting.d.ts.map +1 -1
- package/dist/git/utils/sorting.js.map +1 -1
- package/dist/git/utils/sshKey.utils.d.ts +7 -0
- package/dist/git/utils/sshKey.utils.d.ts.map +1 -0
- package/dist/git/utils/sshKey.utils.js +25 -0
- package/dist/git/utils/sshKey.utils.js.map +1 -0
- package/dist/git/utils/status.utils.d.ts.map +1 -1
- package/dist/git/utils/status.utils.js.map +1 -1
- package/dist/git/utils/statusFile.utils.d.ts.map +1 -1
- package/dist/git/utils/statusFile.utils.js.map +1 -1
- package/dist/git/utils/tag.utils.d.ts.map +1 -1
- package/dist/git/utils/tag.utils.js.map +1 -1
- package/dist/git/utils/tooltip.utils.d.ts.map +1 -1
- package/dist/git/utils/tooltip.utils.js.map +1 -1
- package/dist/git/utils/uriAuthority.d.ts.map +1 -1
- package/dist/git/utils/uriAuthority.js.map +1 -1
- package/dist/git/utils/user.utils.d.ts.map +1 -1
- package/dist/git/utils/user.utils.js.map +1 -1
- package/dist/git/utils/worktree.utils.d.ts.map +1 -1
- package/dist/git/utils/worktree.utils.js.map +1 -1
- package/dist/git/watching/changeEvent.d.ts.map +1 -1
- package/dist/git/watching/changeEvent.js.map +1 -1
- package/dist/git/watching/classifyChange.d.ts.map +1 -1
- package/dist/git/watching/classifyChange.js.map +1 -1
- package/dist/git/watching/gitIgnoreFilter.d.ts.map +1 -1
- package/dist/git/watching/gitIgnoreFilter.js.map +1 -1
- package/dist/git/watching/initWatcher.d.ts.map +1 -1
- package/dist/git/watching/initWatcher.js.map +1 -1
- package/dist/git/watching/provider.d.ts.map +1 -1
- package/dist/git/watching/provider.js.map +1 -1
- package/dist/git/watching/watchGroup.d.ts.map +1 -1
- package/dist/git/watching/watchGroup.js.map +1 -1
- package/dist/git/watching/watchService.d.ts +4 -0
- package/dist/git/watching/watchService.d.ts.map +1 -1
- package/dist/git/watching/watchService.js +15 -1
- package/dist/git/watching/watchService.js.map +1 -1
- package/dist/git/watching/watchSession.d.ts +7 -0
- package/dist/git/watching/watchSession.d.ts.map +1 -1
- package/dist/git/watching/watchSession.js +14 -2
- package/dist/git/watching/watchSession.js.map +1 -1
- package/dist/git/watching/watcherPatterns.d.ts.map +1 -1
- package/dist/git/watching/watcherPatterns.js.map +1 -1
- package/dist/git-cli/cliGitProvider.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.errors.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.errors.js.map +1 -1
- package/dist/git-cli/exec/exec.js.map +1 -1
- package/dist/git-cli/exec/exec.types.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.types.js.map +1 -1
- package/dist/git-cli/exec/features.d.ts.map +1 -1
- package/dist/git-cli/exec/features.js.map +1 -1
- package/dist/git-cli/exec/git.d.ts +19 -27
- package/dist/git-cli/exec/git.d.ts.map +1 -1
- package/dist/git-cli/exec/git.js +126 -34
- package/dist/git-cli/exec/git.js.map +1 -1
- package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
- package/dist/git-cli/exec/gitQueue.js.map +1 -1
- package/dist/git-cli/exec/locator.d.ts.map +1 -1
- package/dist/git-cli/exec/locator.js.map +1 -1
- package/dist/git-cli/parsers/blameParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/blameParser.js.map +1 -1
- package/dist/git-cli/parsers/indexParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/indexParser.js.map +1 -1
- package/dist/git-cli/parsers/logParser.d.ts +9 -1
- package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/logParser.js +141 -60
- package/dist/git-cli/parsers/logParser.js.map +1 -1
- package/dist/git-cli/parsers/mergeTreeParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/mergeTreeParser.js.map +1 -1
- package/dist/git-cli/parsers/refParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/refParser.js.map +1 -1
- package/dist/git-cli/parsers/reflogParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/reflogParser.js.map +1 -1
- package/dist/git-cli/parsers/remoteParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/remoteParser.js.map +1 -1
- package/dist/git-cli/parsers/shortlogParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/shortlogParser.js.map +1 -1
- package/dist/git-cli/parsers/signatureParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/signatureParser.js.map +1 -1
- package/dist/git-cli/parsers/sshSignatureParser.d.ts +21 -0
- package/dist/git-cli/parsers/sshSignatureParser.d.ts.map +1 -0
- package/dist/git-cli/parsers/sshSignatureParser.js +78 -0
- package/dist/git-cli/parsers/sshSignatureParser.js.map +1 -0
- package/dist/git-cli/parsers/statusParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/statusParser.js.map +1 -1
- package/dist/git-cli/parsers/treeParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/treeParser.js.map +1 -1
- package/dist/git-cli/parsers/worktreeParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/worktreeParser.js +5 -7
- package/dist/git-cli/parsers/worktreeParser.js.map +1 -1
- package/dist/git-cli/providers/blame.d.ts.map +1 -1
- package/dist/git-cli/providers/blame.js.map +1 -1
- package/dist/git-cli/providers/branches.d.ts +1 -0
- package/dist/git-cli/providers/branches.d.ts.map +1 -1
- package/dist/git-cli/providers/branches.js +51 -32
- package/dist/git-cli/providers/branches.js.map +1 -1
- package/dist/git-cli/providers/commitFilesetUtils.d.ts.map +1 -1
- package/dist/git-cli/providers/commitFilesetUtils.js.map +1 -1
- package/dist/git-cli/providers/commits.d.ts +12 -1
- package/dist/git-cli/providers/commits.d.ts.map +1 -1
- package/dist/git-cli/providers/commits.js +89 -8
- package/dist/git-cli/providers/commits.js.map +1 -1
- package/dist/git-cli/providers/config.d.ts.map +1 -1
- package/dist/git-cli/providers/config.js.map +1 -1
- package/dist/git-cli/providers/contributors.d.ts.map +1 -1
- package/dist/git-cli/providers/contributors.js.map +1 -1
- package/dist/git-cli/providers/diff.d.ts.map +1 -1
- package/dist/git-cli/providers/diff.js.map +1 -1
- package/dist/git-cli/providers/graph.d.ts +35 -1
- package/dist/git-cli/providers/graph.d.ts.map +1 -1
- package/dist/git-cli/providers/graph.js +1434 -330
- package/dist/git-cli/providers/graph.js.map +1 -1
- package/dist/git-cli/providers/operations.d.ts.map +1 -1
- package/dist/git-cli/providers/operations.js.map +1 -1
- package/dist/git-cli/providers/patch.d.ts.map +1 -1
- package/dist/git-cli/providers/patch.js.map +1 -1
- package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git-cli/providers/pausedOperations.js +3 -3
- package/dist/git-cli/providers/pausedOperations.js.map +1 -1
- package/dist/git-cli/providers/refs.d.ts.map +1 -1
- package/dist/git-cli/providers/refs.js.map +1 -1
- package/dist/git-cli/providers/remotes.d.ts.map +1 -1
- package/dist/git-cli/providers/remotes.js.map +1 -1
- package/dist/git-cli/providers/revision.d.ts +1 -0
- package/dist/git-cli/providers/revision.d.ts.map +1 -1
- package/dist/git-cli/providers/revision.js +33 -0
- package/dist/git-cli/providers/revision.js.map +1 -1
- package/dist/git-cli/providers/staging.d.ts.map +1 -1
- package/dist/git-cli/providers/staging.js.map +1 -1
- package/dist/git-cli/providers/stash.d.ts.map +1 -1
- package/dist/git-cli/providers/stash.js.map +1 -1
- package/dist/git-cli/providers/status.d.ts +28 -0
- package/dist/git-cli/providers/status.d.ts.map +1 -1
- package/dist/git-cli/providers/status.js +240 -154
- package/dist/git-cli/providers/status.js.map +1 -1
- package/dist/git-cli/providers/tags.d.ts.map +1 -1
- package/dist/git-cli/providers/tags.js +2 -1
- package/dist/git-cli/providers/tags.js.map +1 -1
- package/dist/git-cli/providers/worktrees.d.ts +2 -1
- package/dist/git-cli/providers/worktrees.d.ts.map +1 -1
- package/dist/git-cli/providers/worktrees.js +28 -3
- package/dist/git-cli/providers/worktrees.js.map +1 -1
- package/dist/git-cli/service.d.ts.map +1 -1
- package/dist/git-cli/service.js +8 -0
- package/dist/git-cli/service.js.map +1 -1
- package/dist/ipc/ipcServer.d.ts.map +1 -1
- package/dist/ipc/ipcServer.js +1 -1
- package/dist/ipc/ipcServer.js.map +1 -1
- package/dist/plus/agents/providers/claudeCodeProvider.d.ts +6 -1
- package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -1
- package/dist/plus/agents/providers/claudeCodeProvider.js +19 -0
- package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -1
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +68 -0
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
- package/dist/plus/agents/providers/claudeCodeTranscript.js +262 -8
- package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
- package/dist/plus/agents/types.d.ts +36 -2
- package/dist/plus/agents/types.d.ts.map +1 -1
- package/dist/plus/ai/constants.d.ts +1 -2
- package/dist/plus/ai/constants.d.ts.map +1 -1
- package/dist/plus/ai/constants.js +1 -8
- package/dist/plus/ai/constants.js.map +1 -1
- package/dist/plus/ai/errors.d.ts.map +1 -1
- package/dist/plus/ai/errors.js.map +1 -1
- package/dist/plus/ai/models/conversation.d.ts.map +1 -1
- package/dist/plus/ai/models/conversation.js.map +1 -1
- package/dist/plus/ai/models/model.d.ts +2 -1
- package/dist/plus/ai/models/model.d.ts.map +1 -1
- package/dist/plus/ai/models/model.js +50 -1
- package/dist/plus/ai/models/model.js.map +1 -1
- package/dist/plus/ai/models/promptTemplates.d.ts +5 -2
- package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
- package/dist/plus/ai/models/promptTemplates.js.map +1 -1
- package/dist/plus/ai/models/provider.d.ts.map +1 -1
- package/dist/plus/ai/models/provider.js.map +1 -1
- package/dist/plus/ai/models/results.d.ts.map +1 -1
- package/dist/plus/ai/models/results.js.map +1 -1
- package/dist/plus/ai/prompts.d.ts +1 -1
- package/dist/plus/ai/prompts.d.ts.map +1 -1
- package/dist/plus/ai/prompts.js +15 -47
- package/dist/plus/ai/prompts.js.map +1 -1
- package/dist/plus/ai/providers/anthropicProvider.d.ts +5 -0
- package/dist/plus/ai/providers/anthropicProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/anthropicProvider.js +40 -3
- package/dist/plus/ai/providers/anthropicProvider.js.map +1 -1
- package/dist/plus/ai/providers/azureProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/azureProvider.js.map +1 -1
- package/dist/plus/ai/providers/context.d.ts.map +1 -1
- package/dist/plus/ai/providers/context.js.map +1 -1
- package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/deepSeekProvider.js +17 -1
- package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -1
- package/dist/plus/ai/providers/geminiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/geminiProvider.js +25 -6
- package/dist/plus/ai/providers/geminiProvider.js.map +1 -1
- package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/gitkrakenProvider.js +1 -0
- package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.d.ts +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.js +21 -18
- package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -1
- package/dist/plus/ai/providers/mistralProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
- package/dist/plus/ai/providers/ollamaProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/ollamaProvider.js.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +10 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.js +9 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
- package/dist/plus/ai/providers/openRouterProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openRouterProvider.js.map +1 -1
- package/dist/plus/ai/providers/openaiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openaiProvider.js.map +1 -1
- package/dist/plus/ai/providers/xaiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/xaiProvider.js +14 -1
- package/dist/plus/ai/providers/xaiProvider.js.map +1 -1
- package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/ai.utils.js +0 -2
- package/dist/plus/ai/utils/ai.utils.js.map +1 -1
- package/dist/plus/ai/utils/results.utils.d.ts +3 -0
- package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/results.utils.js +26 -0
- package/dist/plus/ai/utils/results.utils.js.map +1 -1
- package/dist/plus/ai/utils/truncation.utils.d.ts +1 -1
- package/dist/plus/ai/utils/truncation.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/truncation.utils.js.map +1 -1
- package/dist/plus/git-github/api/config.d.ts.map +1 -1
- package/dist/plus/git-github/api/config.js.map +1 -1
- package/dist/plus/git-github/api/github.d.ts +66 -3
- package/dist/plus/git-github/api/github.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.js +345 -74
- package/dist/plus/git-github/api/github.js.map +1 -1
- package/dist/plus/git-github/api/github.utils.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.utils.js.map +1 -1
- package/dist/plus/git-github/api/token.d.ts.map +1 -1
- package/dist/plus/git-github/api/token.js.map +1 -1
- package/dist/plus/git-github/api/tokenUtils.d.ts.map +1 -1
- package/dist/plus/git-github/api/tokenUtils.js.map +1 -1
- package/dist/plus/git-github/api/types.d.ts.map +1 -1
- package/dist/plus/git-github/api/types.js.map +1 -1
- package/dist/plus/git-github/context.d.ts.map +1 -1
- package/dist/plus/git-github/models.d.ts +5 -0
- package/dist/plus/git-github/models.d.ts.map +1 -1
- package/dist/plus/git-github/models.js +27 -2
- package/dist/plus/git-github/models.js.map +1 -1
- package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/blame.js.map +1 -1
- package/dist/plus/git-github/providers/github/branches.d.ts +2 -1
- package/dist/plus/git-github/providers/github/branches.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/branches.js +7 -3
- package/dist/plus/git-github/providers/github/branches.js.map +1 -1
- package/dist/plus/git-github/providers/github/commits.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/commits.js.map +1 -1
- package/dist/plus/git-github/providers/github/config.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/config.js.map +1 -1
- package/dist/plus/git-github/providers/github/contributors.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/contributors.js.map +1 -1
- package/dist/plus/git-github/providers/github/diff.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/diff.js +2 -2
- package/dist/plus/git-github/providers/github/diff.js.map +1 -1
- package/dist/plus/git-github/providers/github/graph.d.ts +12 -1
- package/dist/plus/git-github/providers/github/graph.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/graph.js +85 -0
- package/dist/plus/git-github/providers/github/graph.js.map +1 -1
- package/dist/plus/git-github/providers/github/refs.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/refs.js.map +1 -1
- package/dist/plus/git-github/providers/github/remotes.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/remotes.js.map +1 -1
- package/dist/plus/git-github/providers/github/revision.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/revision.js.map +1 -1
- package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/status.js.map +1 -1
- package/dist/plus/git-github/providers/github/tags.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/tags.js +3 -1
- package/dist/plus/git-github/providers/github/tags.js.map +1 -1
- package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +1 -1
- package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -1
- package/dist/plus/git-github/providers/githubProvider.d.ts.map +1 -1
- package/dist/plus/git-github/providers/githubProvider.js.map +1 -1
- package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts +20 -1
- package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/cloudIntegrationService.js +134 -10
- package/dist/plus/integrations/authentication/cloudIntegrationService.js.map +1 -1
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts +52 -5
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/configuredIntegrationService.js +248 -46
- package/dist/plus/integrations/authentication/configuredIntegrationService.js.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts +24 -4
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js +58 -26
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationService.js +7 -3
- package/dist/plus/integrations/authentication/integrationAuthenticationService.js.map +1 -1
- package/dist/plus/integrations/authentication/manualTokenProvider.d.ts +1 -0
- package/dist/plus/integrations/authentication/manualTokenProvider.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/manualTokenProvider.js +9 -5
- package/dist/plus/integrations/authentication/manualTokenProvider.js.map +1 -1
- package/dist/plus/integrations/authentication/models.d.ts +33 -0
- package/dist/plus/integrations/authentication/models.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/models.js.map +1 -1
- package/dist/plus/integrations/collectionMetadata.d.ts +21 -0
- package/dist/plus/integrations/collectionMetadata.d.ts.map +1 -0
- package/dist/plus/integrations/collectionMetadata.js +121 -0
- package/dist/plus/integrations/collectionMetadata.js.map +1 -0
- package/dist/plus/integrations/constants.d.ts +12 -2
- package/dist/plus/integrations/constants.d.ts.map +1 -1
- package/dist/plus/integrations/constants.js +10 -0
- package/dist/plus/integrations/constants.js.map +1 -1
- package/dist/plus/integrations/context.d.ts +10 -6
- package/dist/plus/integrations/context.d.ts.map +1 -1
- package/dist/plus/integrations/errors.d.ts +65 -0
- package/dist/plus/integrations/errors.d.ts.map +1 -1
- package/dist/plus/integrations/errors.js +135 -0
- package/dist/plus/integrations/errors.js.map +1 -1
- package/dist/plus/integrations/index.d.ts +57 -12
- package/dist/plus/integrations/index.d.ts.map +1 -1
- package/dist/plus/integrations/index.js +39 -37
- package/dist/plus/integrations/index.js.map +1 -1
- package/dist/plus/integrations/integrationService.d.ts +297 -13
- package/dist/plus/integrations/integrationService.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.js +672 -36
- package/dist/plus/integrations/integrationService.js.map +1 -1
- package/dist/plus/integrations/lite.d.ts +47 -0
- package/dist/plus/integrations/lite.d.ts.map +1 -0
- package/dist/plus/integrations/lite.js +141 -0
- package/dist/plus/integrations/lite.js.map +1 -0
- package/dist/plus/integrations/manager.d.ts +332 -0
- package/dist/plus/integrations/manager.d.ts.map +1 -0
- package/dist/plus/integrations/manager.js +2 -0
- package/dist/plus/integrations/manager.js.map +1 -0
- package/dist/plus/integrations/models/gitHostIntegration.d.ts +262 -10
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.js +675 -101
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
- package/dist/plus/integrations/models/integration.d.ts +88 -3
- package/dist/plus/integrations/models/integration.d.ts.map +1 -1
- package/dist/plus/integrations/models/integration.js +192 -21
- package/dist/plus/integrations/models/integration.js.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.d.ts +70 -7
- package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.js +108 -35
- package/dist/plus/integrations/models/issuesIntegration.js.map +1 -1
- package/dist/plus/integrations/providerFilters.d.ts +12 -0
- package/dist/plus/integrations/providerFilters.d.ts.map +1 -0
- package/dist/plus/integrations/providerFilters.js +14 -0
- package/dist/plus/integrations/providerFilters.js.map +1 -0
- package/dist/plus/integrations/providers/apiClients.d.ts.map +1 -1
- package/dist/plus/integrations/providers/apiClients.js +3 -3
- package/dist/plus/integrations/providers/apiClients.js.map +1 -1
- package/dist/plus/integrations/providers/apiConfig.d.ts +52 -0
- package/dist/plus/integrations/providers/apiConfig.d.ts.map +1 -0
- package/dist/plus/integrations/providers/apiConfig.js +19 -0
- package/dist/plus/integrations/providers/apiConfig.js.map +1 -0
- package/dist/plus/integrations/providers/azure/azure.d.ts +14 -2
- package/dist/plus/integrations/providers/azure/azure.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azure/azure.js +107 -32
- package/dist/plus/integrations/providers/azure/azure.js.map +1 -1
- package/dist/plus/integrations/providers/azure/models.d.ts +16 -0
- package/dist/plus/integrations/providers/azure/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azure/models.js +6 -6
- package/dist/plus/integrations/providers/azure/models.js.map +1 -1
- package/dist/plus/integrations/providers/azureDevOps.d.ts +55 -9
- package/dist/plus/integrations/providers/azureDevOps.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azureDevOps.js +572 -79
- package/dist/plus/integrations/providers/azureDevOps.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts +13 -2
- package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js +108 -32
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.d.ts +19 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.js +20 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server.d.ts +28 -4
- package/dist/plus/integrations/providers/bitbucket-server.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server.js +110 -6
- package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket.d.ts +38 -4
- package/dist/plus/integrations/providers/bitbucket.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket.js +330 -34
- package/dist/plus/integrations/providers/bitbucket.js.map +1 -1
- package/dist/plus/integrations/providers/github/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github/github.js +1 -1
- package/dist/plus/integrations/providers/github/github.js.map +1 -1
- package/dist/plus/integrations/providers/github/github.utils.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github/github.utils.js.map +1 -1
- package/dist/plus/integrations/providers/github/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github/models.js.map +1 -1
- package/dist/plus/integrations/providers/github.d.ts +49 -6
- package/dist/plus/integrations/providers/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github.js +289 -4
- package/dist/plus/integrations/providers/github.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.d.ts +11 -3
- package/dist/plus/integrations/providers/gitlab/gitlab.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.js +121 -47
- package/dist/plus/integrations/providers/gitlab/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts +6 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.js +8 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/models.d.ts +10 -0
- package/dist/plus/integrations/providers/gitlab/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab/models.js +8 -5
- package/dist/plus/integrations/providers/gitlab/models.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab.d.ts +50 -5
- package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab.js +274 -8
- package/dist/plus/integrations/providers/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/jira.d.ts +13 -2
- package/dist/plus/integrations/providers/jira.d.ts.map +1 -1
- package/dist/plus/integrations/providers/jira.js +200 -30
- package/dist/plus/integrations/providers/jira.js.map +1 -1
- package/dist/plus/integrations/providers/linear.d.ts +16 -5
- package/dist/plus/integrations/providers/linear.d.ts.map +1 -1
- package/dist/plus/integrations/providers/linear.js +127 -21
- package/dist/plus/integrations/providers/linear.js.map +1 -1
- package/dist/plus/integrations/providers/models.d.ts +339 -60
- package/dist/plus/integrations/providers/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/models.js +307 -59
- package/dist/plus/integrations/providers/models.js.map +1 -1
- package/dist/plus/integrations/providers/providersApi.d.ts +144 -11
- package/dist/plus/integrations/providers/providersApi.d.ts.map +1 -1
- package/dist/plus/integrations/providers/providersApi.js +486 -55
- package/dist/plus/integrations/providers/providersApi.js.map +1 -1
- package/dist/plus/integrations/providers/trello.d.ts +47 -0
- package/dist/plus/integrations/providers/trello.d.ts.map +1 -0
- package/dist/plus/integrations/providers/trello.js +141 -0
- package/dist/plus/integrations/providers/trello.js.map +1 -0
- package/dist/plus/integrations/providers/utils/providerPaging.d.ts +29 -0
- package/dist/plus/integrations/providers/utils/providerPaging.d.ts.map +1 -0
- package/dist/plus/integrations/providers/utils/providerPaging.js +154 -0
- package/dist/plus/integrations/providers/utils/providerPaging.js.map +1 -0
- package/dist/plus/integrations/providers/utils.d.ts +21 -0
- package/dist/plus/integrations/providers/utils.d.ts.map +1 -1
- package/dist/plus/integrations/providers/utils.js +57 -6
- package/dist/plus/integrations/providers/utils.js.map +1 -1
- package/dist/plus/integrations/reads/broaden.d.ts +20 -0
- package/dist/plus/integrations/reads/broaden.d.ts.map +1 -0
- package/dist/plus/integrations/reads/broaden.js +326 -0
- package/dist/plus/integrations/reads/broaden.js.map +1 -0
- package/dist/plus/integrations/reads/context.d.ts +74 -0
- package/dist/plus/integrations/reads/context.d.ts.map +1 -0
- package/dist/plus/integrations/reads/context.js +2 -0
- package/dist/plus/integrations/reads/context.js.map +1 -0
- package/dist/plus/integrations/reads/cursors.d.ts +66 -0
- package/dist/plus/integrations/reads/cursors.d.ts.map +1 -0
- package/dist/plus/integrations/reads/cursors.js +133 -0
- package/dist/plus/integrations/reads/cursors.js.map +1 -0
- package/dist/plus/integrations/reads/drains.d.ts +60 -0
- package/dist/plus/integrations/reads/drains.d.ts.map +1 -0
- package/dist/plus/integrations/reads/drains.js +255 -0
- package/dist/plus/integrations/reads/drains.js.map +1 -0
- package/dist/plus/integrations/reads/filters.d.ts +81 -0
- package/dist/plus/integrations/reads/filters.d.ts.map +1 -0
- package/dist/plus/integrations/reads/filters.js +87 -0
- package/dist/plus/integrations/reads/filters.js.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.d.ts +17 -0
- package/dist/plus/integrations/reads/hierarchy.d.ts.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.js +320 -0
- package/dist/plus/integrations/reads/hierarchy.js.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts +77 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.js +128 -0
- package/dist/plus/integrations/reads/hierarchy.utils.js.map +1 -0
- package/dist/plus/integrations/reads/issueTracker.d.ts +19 -0
- package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -0
- package/dist/plus/integrations/reads/issueTracker.js +334 -0
- package/dist/plus/integrations/reads/issueTracker.js.map +1 -0
- package/dist/plus/integrations/reads/issues.d.ts +34 -0
- package/dist/plus/integrations/reads/issues.d.ts.map +1 -0
- package/dist/plus/integrations/reads/issues.js +244 -0
- package/dist/plus/integrations/reads/issues.js.map +1 -0
- package/dist/plus/integrations/reads/paging.d.ts +136 -0
- package/dist/plus/integrations/reads/paging.d.ts.map +1 -0
- package/dist/plus/integrations/reads/paging.js +221 -0
- package/dist/plus/integrations/reads/paging.js.map +1 -0
- package/dist/plus/integrations/reads/pullRequests.d.ts +32 -0
- package/dist/plus/integrations/reads/pullRequests.d.ts.map +1 -0
- package/dist/plus/integrations/reads/pullRequests.js +151 -0
- package/dist/plus/integrations/reads/pullRequests.js.map +1 -0
- package/dist/plus/integrations/reads/resolveRepository.d.ts +25 -0
- package/dist/plus/integrations/reads/resolveRepository.d.ts.map +1 -0
- package/dist/plus/integrations/reads/resolveRepository.js +235 -0
- package/dist/plus/integrations/reads/resolveRepository.js.map +1 -0
- package/dist/plus/integrations/reads/sweeps.d.ts +11 -0
- package/dist/plus/integrations/reads/sweeps.d.ts.map +1 -0
- package/dist/plus/integrations/reads/sweeps.js +125 -0
- package/dist/plus/integrations/reads/sweeps.js.map +1 -0
- package/dist/plus/integrations/reads/warnings.d.ts +47 -0
- package/dist/plus/integrations/reads/warnings.d.ts.map +1 -0
- package/dist/plus/integrations/reads/warnings.js +81 -0
- package/dist/plus/integrations/reads/warnings.js.map +1 -0
- package/dist/plus/integrations/results.d.ts +189 -0
- package/dist/plus/integrations/results.d.ts.map +1 -0
- package/dist/plus/integrations/results.js +62 -0
- package/dist/plus/integrations/results.js.map +1 -0
- package/dist/plus/integrations/utils/domain.utils.d.ts +5 -0
- package/dist/plus/integrations/utils/domain.utils.d.ts.map +1 -0
- package/dist/plus/integrations/utils/domain.utils.js +27 -0
- package/dist/plus/integrations/utils/domain.utils.js.map +1 -0
- package/dist/plus/integrations/utils/integration.utils.d.ts +27 -1
- package/dist/plus/integrations/utils/integration.utils.d.ts.map +1 -1
- package/dist/plus/integrations/utils/integration.utils.js +86 -15
- package/dist/plus/integrations/utils/integration.utils.js.map +1 -1
- package/dist/utils/array.d.ts.map +1 -1
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/brand.d.ts.map +1 -1
- package/dist/utils/cancellation.d.ts +13 -0
- package/dist/utils/cancellation.d.ts.map +1 -1
- package/dist/utils/cancellation.js +52 -7
- package/dist/utils/cancellation.js.map +1 -1
- package/dist/utils/charCode.d.ts.map +1 -1
- package/dist/utils/coalescedRun.d.ts +16 -0
- package/dist/utils/coalescedRun.d.ts.map +1 -0
- package/dist/utils/coalescedRun.js +43 -0
- package/dist/utils/coalescedRun.js.map +1 -0
- package/dist/utils/color.d.ts.map +1 -1
- package/dist/utils/color.js +3 -3
- package/dist/utils/color.js.map +1 -1
- package/dist/utils/date.d.ts +24 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +62 -0
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/debounce.js +1 -1
- package/dist/utils/debounce.js.map +1 -1
- package/dist/utils/decorators/debounce.d.ts.map +1 -1
- package/dist/utils/decorators/debounce.js.map +1 -1
- package/dist/utils/decorators/gate.d.ts.map +1 -1
- package/dist/utils/decorators/gate.js +2 -2
- package/dist/utils/decorators/gate.js.map +1 -1
- package/dist/utils/decorators/log.d.ts.map +1 -1
- package/dist/utils/decorators/log.js +5 -5
- package/dist/utils/decorators/log.js.map +1 -1
- package/dist/utils/decorators/memoize.d.ts.map +1 -1
- package/dist/utils/decorators/memoize.js +2 -2
- package/dist/utils/decorators/memoize.js.map +1 -1
- package/dist/utils/decorators/resolver.d.ts.map +1 -1
- package/dist/utils/decorators/resolver.js.map +1 -1
- package/dist/utils/decorators/sequentialize.d.ts.map +1 -1
- package/dist/utils/decorators/sequentialize.js +2 -2
- package/dist/utils/decorators/sequentialize.js.map +1 -1
- package/dist/utils/decorators/serializable.d.ts.map +1 -1
- package/dist/utils/decorators/serializable.js +1 -1
- package/dist/utils/decorators/serializable.js.map +1 -1
- package/dist/utils/dedupedAsyncCache.d.ts.map +1 -1
- package/dist/utils/env/browser/base64.d.ts.map +1 -1
- package/dist/utils/env/browser/base64.js.map +1 -1
- package/dist/utils/env/browser/crypto.d.ts.map +1 -1
- package/dist/utils/env/browser/crypto.js.map +1 -1
- package/dist/utils/env/browser/fs.d.ts.map +1 -1
- package/dist/utils/env/browser/fs.js.map +1 -1
- package/dist/utils/env/browser/hex.d.ts.map +1 -1
- package/dist/utils/env/browser/hex.js.map +1 -1
- package/dist/utils/env/browser/hrtime.d.ts.map +1 -1
- package/dist/utils/env/browser/hrtime.js.map +1 -1
- package/dist/utils/env/browser/logScope.d.ts.map +1 -1
- package/dist/utils/env/browser/logScope.js.map +1 -1
- package/dist/utils/env/browser/md5.d.ts.map +1 -1
- package/dist/utils/env/browser/md5.js.map +1 -1
- package/dist/utils/env/browser/platform.d.ts.map +1 -1
- package/dist/utils/env/browser/platform.js.map +1 -1
- package/dist/utils/env/node/base64.d.ts.map +1 -1
- package/dist/utils/env/node/base64.js.map +1 -1
- package/dist/utils/env/node/crypto.d.ts.map +1 -1
- package/dist/utils/env/node/crypto.js.map +1 -1
- package/dist/utils/env/node/exec.d.ts +9 -1
- package/dist/utils/env/node/exec.d.ts.map +1 -1
- package/dist/utils/env/node/exec.js +11 -4
- package/dist/utils/env/node/exec.js.map +1 -1
- package/dist/utils/env/node/fs.d.ts.map +1 -1
- package/dist/utils/env/node/fs.js.map +1 -1
- package/dist/utils/env/node/hex.d.ts.map +1 -1
- package/dist/utils/env/node/hex.js.map +1 -1
- package/dist/utils/env/node/hrtime.d.ts.map +1 -1
- package/dist/utils/env/node/hrtime.js.map +1 -1
- package/dist/utils/env/node/logScope.d.ts.map +1 -1
- package/dist/utils/env/node/logScope.js.map +1 -1
- package/dist/utils/env/node/platform.d.ts.map +1 -1
- package/dist/utils/env/node/platform.js.map +1 -1
- package/dist/utils/event.d.ts.map +1 -1
- package/dist/utils/event.js +18 -22
- package/dist/utils/event.js.map +1 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js.map +1 -1
- package/dist/utils/function.d.ts.map +1 -1
- package/dist/utils/function.js +3 -3
- package/dist/utils/function.js.map +1 -1
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/iterable.d.ts.map +1 -1
- package/dist/utils/iterable.js +2 -6
- package/dist/utils/iterable.js.map +1 -1
- package/dist/utils/lazy.d.ts.map +1 -1
- package/dist/utils/lazy.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/logger.scoped.js +1 -1
- package/dist/utils/logger.scoped.js.map +1 -1
- package/dist/utils/lruMap.d.ts.map +1 -1
- package/dist/utils/lruMap.js.map +1 -1
- package/dist/utils/mru.d.ts.map +1 -1
- package/dist/utils/mru.js.map +1 -1
- package/dist/utils/object.js.map +1 -1
- package/dist/utils/paging.d.ts +29 -0
- package/dist/utils/paging.d.ts.map +1 -1
- package/dist/utils/paging.js +18 -0
- package/dist/utils/paging.js.map +1 -1
- package/dist/utils/path.js.map +1 -1
- package/dist/utils/promise.d.ts +10 -0
- package/dist/utils/promise.d.ts.map +1 -1
- package/dist/utils/promise.js +26 -3
- package/dist/utils/promise.js.map +1 -1
- package/dist/utils/promiseCache.d.ts +12 -2
- package/dist/utils/promiseCache.d.ts.map +1 -1
- package/dist/utils/promiseCache.js +80 -50
- package/dist/utils/promiseCache.js.map +1 -1
- package/dist/utils/searchTree.d.ts.map +1 -1
- package/dist/utils/searchTree.js +4 -1
- package/dist/utils/searchTree.js.map +1 -1
- package/dist/utils/stopwatch.d.ts.map +1 -1
- package/dist/utils/string.js +1 -1
- package/dist/utils/string.js.map +1 -1
- package/dist/utils/subscriptionManager.d.ts.map +1 -1
- package/dist/utils/subscriptionManager.js.map +1 -1
- package/dist/utils/trie.d.ts.map +1 -1
- package/dist/utils/trie.js +1 -0
- package/dist/utils/trie.js.map +1 -1
- package/docs/integrations.md +372 -0
- package/docs/kepler-read-api-parity.md +112 -0
- package/package.json +238 -213
- package/src/git/cache.ts +75 -8
- package/src/git/errors.ts +36 -1
- package/src/git/models/commit.ts +1 -1
- package/src/git/models/graph.ts +147 -0
- package/src/git/models/graphSession.ts +205 -0
- package/src/git/models/issue.ts +12 -1
- package/src/git/models/pullRequest.ts +27 -1
- package/src/git/models/repository.ts +24 -1
- package/src/git/models/resourceDescriptor.ts +17 -0
- package/src/git/models/signature.ts +16 -0
- package/src/git/models/tag.ts +6 -1
- package/src/git/parsers/diffParser.ts +1 -1
- package/src/git/providers/branches.ts +6 -1
- package/src/git/providers/commits.ts +6 -1
- package/src/git/providers/config.ts +5 -1
- package/src/git/providers/graph.ts +69 -2
- package/src/git/providers/status.ts +1 -1
- package/src/git/providers/worktrees.ts +3 -1
- package/src/git/remotes/azure-devops.ts +29 -33
- package/src/git/remotes/bitbucket-server.ts +23 -25
- package/src/git/remotes/bitbucket.ts +23 -25
- package/src/git/remotes/gerrit.ts +12 -14
- package/src/git/remotes/gitea.ts +13 -15
- package/src/git/remotes/github.ts +56 -58
- package/src/git/remotes/gitlab.ts +102 -104
- package/src/git/run.types.ts +54 -4
- package/src/git/utils/branch.utils.ts +12 -1
- package/src/git/utils/contributor.utils.ts +1 -1
- package/src/git/utils/fileStatus.utils.ts +7 -0
- package/src/git/utils/graph.utils.ts +46 -0
- package/src/git/utils/issue.utils.ts +1 -0
- package/src/git/utils/pullRequest.utils.ts +9 -0
- package/src/git/utils/reachability.utils.ts +79 -8
- package/src/git/utils/sshKey.utils.ts +30 -0
- package/src/git/watching/watchService.ts +16 -1
- package/src/git/watching/watchSession.ts +20 -2
- package/src/git-cli/exec/git.ts +144 -42
- package/src/git-cli/parsers/logParser.ts +83 -1
- package/src/git-cli/parsers/sshSignatureParser.ts +85 -0
- package/src/git-cli/parsers/worktreeParser.ts +5 -7
- package/src/git-cli/providers/branches.ts +60 -38
- package/src/git-cli/providers/commits.ts +102 -9
- package/src/git-cli/providers/graph.ts +1771 -393
- package/src/git-cli/providers/pausedOperations.ts +3 -3
- package/src/git-cli/providers/revision.ts +42 -0
- package/src/git-cli/providers/status.ts +333 -178
- package/src/git-cli/providers/tags.ts +2 -0
- package/src/git-cli/providers/worktrees.ts +40 -4
- package/src/git-cli/service.ts +9 -0
- package/src/ipc/ipcServer.ts +1 -1
- package/src/plus/agents/providers/claudeCodeProvider.ts +25 -0
- package/src/plus/agents/providers/claudeCodeTranscript.ts +320 -8
- package/src/plus/agents/types.ts +34 -0
- package/src/plus/ai/constants.ts +1 -9
- package/src/plus/ai/models/model.ts +53 -2
- package/src/plus/ai/models/promptTemplates.ts +9 -2
- package/src/plus/ai/prompts.ts +16 -48
- package/src/plus/ai/providers/anthropicProvider.ts +45 -3
- package/src/plus/ai/providers/deepSeekProvider.ts +17 -1
- package/src/plus/ai/providers/geminiProvider.ts +25 -6
- package/src/plus/ai/providers/gitkrakenProvider.ts +2 -0
- package/src/plus/ai/providers/huggingFaceProvider.ts +28 -21
- package/src/plus/ai/providers/openAICompatibleProviderBase.ts +16 -1
- package/src/plus/ai/providers/xaiProvider.ts +14 -1
- package/src/plus/ai/utils/ai.utils.ts +0 -2
- package/src/plus/ai/utils/results.utils.ts +32 -0
- package/src/plus/ai/utils/truncation.utils.ts +0 -1
- package/src/plus/git-github/api/github.ts +484 -104
- package/src/plus/git-github/models.ts +33 -0
- package/src/plus/git-github/providers/github/branches.ts +6 -3
- package/src/plus/git-github/providers/github/diff.ts +1 -1
- package/src/plus/git-github/providers/github/graph.ts +131 -0
- package/src/plus/git-github/providers/github/tags.ts +2 -0
- package/src/plus/integrations/authentication/cloudIntegrationService.ts +189 -17
- package/src/plus/integrations/authentication/configuredIntegrationService.ts +287 -50
- package/src/plus/integrations/authentication/integrationAuthenticationProvider.ts +105 -31
- package/src/plus/integrations/authentication/integrationAuthenticationService.ts +7 -3
- package/src/plus/integrations/authentication/manualTokenProvider.ts +12 -5
- package/src/plus/integrations/authentication/models.ts +35 -1
- package/src/plus/integrations/collectionMetadata.ts +143 -0
- package/src/plus/integrations/constants.ts +21 -0
- package/src/plus/integrations/context.ts +8 -9
- package/src/plus/integrations/errors.ts +153 -0
- package/src/plus/integrations/index.ts +148 -51
- package/src/plus/integrations/integrationService.ts +940 -49
- package/src/plus/integrations/lite.ts +233 -0
- package/src/plus/integrations/manager.ts +359 -0
- package/src/plus/integrations/models/gitHostIntegration.ts +1005 -134
- package/src/plus/integrations/models/integration.ts +293 -24
- package/src/plus/integrations/models/issuesIntegration.ts +132 -39
- package/src/plus/integrations/providerFilters.ts +12 -0
- package/src/plus/integrations/providers/apiClients.ts +8 -11
- package/src/plus/integrations/providers/apiConfig.ts +71 -0
- package/src/plus/integrations/providers/azure/azure.ts +164 -33
- package/src/plus/integrations/providers/azure/models.ts +19 -6
- package/src/plus/integrations/providers/azureDevOps.ts +766 -101
- package/src/plus/integrations/providers/bitbucket/bitbucket.ts +164 -34
- package/src/plus/integrations/providers/bitbucket-server/models.ts +32 -1
- package/src/plus/integrations/providers/bitbucket-server.ts +173 -8
- package/src/plus/integrations/providers/bitbucket.ts +489 -45
- package/src/plus/integrations/providers/github/github.ts +2 -2
- package/src/plus/integrations/providers/github/github.utils.ts +1 -1
- package/src/plus/integrations/providers/github.ts +390 -6
- package/src/plus/integrations/providers/gitlab/gitlab.ts +170 -60
- package/src/plus/integrations/providers/gitlab/gitlab.utils.ts +9 -0
- package/src/plus/integrations/providers/gitlab/models.ts +19 -5
- package/src/plus/integrations/providers/gitlab.ts +369 -10
- package/src/plus/integrations/providers/jira.ts +247 -42
- package/src/plus/integrations/providers/linear.ts +154 -27
- package/src/plus/integrations/providers/models.ts +583 -75
- package/src/plus/integrations/providers/providersApi.ts +849 -86
- package/src/plus/integrations/providers/trello.ts +205 -0
- package/src/plus/integrations/providers/utils/providerPaging.ts +177 -0
- package/src/plus/integrations/providers/utils.ts +68 -8
- package/src/plus/integrations/reads/broaden.ts +452 -0
- package/src/plus/integrations/reads/context.ts +99 -0
- package/src/plus/integrations/reads/cursors.ts +224 -0
- package/src/plus/integrations/reads/drains.ts +343 -0
- package/src/plus/integrations/reads/filters.ts +124 -0
- package/src/plus/integrations/reads/hierarchy.ts +473 -0
- package/src/plus/integrations/reads/hierarchy.utils.ts +155 -0
- package/src/plus/integrations/reads/issueTracker.ts +468 -0
- package/src/plus/integrations/reads/issues.ts +409 -0
- package/src/plus/integrations/reads/paging.ts +277 -0
- package/src/plus/integrations/reads/pullRequests.ts +260 -0
- package/src/plus/integrations/reads/resolveRepository.ts +272 -0
- package/src/plus/integrations/reads/sweeps.ts +185 -0
- package/src/plus/integrations/reads/warnings.ts +170 -0
- package/src/plus/integrations/results.ts +275 -0
- package/src/plus/integrations/utils/domain.utils.ts +26 -0
- package/src/plus/integrations/utils/integration.utils.ts +93 -16
- package/src/utils/brand.ts +0 -2
- package/src/utils/cancellation.ts +56 -7
- package/src/utils/coalescedRun.ts +45 -0
- package/src/utils/color.ts +3 -3
- package/src/utils/date.ts +72 -0
- package/src/utils/debounce.ts +1 -1
- package/src/utils/decorators/gate.ts +2 -2
- package/src/utils/decorators/log.ts +5 -5
- package/src/utils/decorators/memoize.ts +2 -2
- package/src/utils/decorators/sequentialize.ts +2 -2
- package/src/utils/decorators/serializable.ts +1 -1
- package/src/utils/env/node/exec.ts +20 -5
- package/src/utils/event.ts +19 -25
- package/src/utils/function.ts +3 -3
- package/src/utils/iterable.ts +2 -6
- package/src/utils/logger.scoped.ts +1 -1
- package/src/utils/logger.ts +1 -1
- package/src/utils/paging.ts +46 -0
- package/src/utils/promise.ts +33 -3
- package/src/utils/promiseCache.ts +81 -51
- package/src/utils/searchTree.ts +4 -2
- package/src/utils/string.ts +1 -1
- package/src/utils/trie.ts +1 -0
- package/dist/plus/ai/providers/githubModelsProvider.d.ts +0 -19
- package/dist/plus/ai/providers/githubModelsProvider.d.ts.map +0 -1
- package/dist/plus/ai/providers/githubModelsProvider.js +0 -51
- package/dist/plus/ai/providers/githubModelsProvider.js.map +0 -1
- package/src/plus/ai/providers/githubModelsProvider.ts +0 -92
|
@@ -14,9 +14,14 @@ import type { Uri } from '../../utils/uri.js';
|
|
|
14
14
|
import { fileUri, toFsPath } from '../../utils/uri.js';
|
|
15
15
|
import type { CliGitProviderInternal } from '../cliGitProvider.js';
|
|
16
16
|
import type { Git, GitError } from '../exec/git.js';
|
|
17
|
-
import { getGitCommandError } from '../exec/git.js';
|
|
17
|
+
import { getGitCommandError, GitErrors } from '../exec/git.js';
|
|
18
18
|
import { parseGitWorktrees } from '../parsers/worktreeParser.js';
|
|
19
19
|
|
|
20
|
+
/** Extracts the lock reason from Git's `cannot remove a locked working tree` output, when it provides one */
|
|
21
|
+
function getLockReason(ex: GitError): string | undefined {
|
|
22
|
+
return GitErrors.worktreeLockedReason.exec(ex.stderr || ex.stdout || ex.message || '')?.[1].trim() || undefined;
|
|
23
|
+
}
|
|
24
|
+
|
|
20
25
|
export class WorktreesGitSubProvider implements GitWorktreesSubProvider {
|
|
21
26
|
constructor(
|
|
22
27
|
private readonly context: GitServiceContext,
|
|
@@ -117,7 +122,7 @@ export class WorktreesGitSubProvider implements GitWorktreesSubProvider {
|
|
|
117
122
|
|
|
118
123
|
return this.cache.getWorktrees(
|
|
119
124
|
repoPath,
|
|
120
|
-
async (commonPath,
|
|
125
|
+
async (commonPath, cacheable, signal) => {
|
|
121
126
|
// Prefer the aggregate signal from the cache; fall back to the caller's cancellation.
|
|
122
127
|
signal ??= cancellation;
|
|
123
128
|
const [dataResult, branchesResult] = await Promise.allSettled([
|
|
@@ -125,6 +130,11 @@ export class WorktreesGitSubProvider implements GitWorktreesSubProvider {
|
|
|
125
130
|
this.provider.branches.getBranches(commonPath, undefined, signal),
|
|
126
131
|
]);
|
|
127
132
|
|
|
133
|
+
if (dataResult.status === 'rejected') {
|
|
134
|
+
// Don't cache a bogus empty result for a transient command failure — retry on next access.
|
|
135
|
+
cacheable.invalidate();
|
|
136
|
+
}
|
|
137
|
+
|
|
128
138
|
const getWorkspaceFolder: WorkspaceFolderResolver | undefined = this.context.workspace
|
|
129
139
|
? uri => {
|
|
130
140
|
const folder = this.context.workspace!.getFolder(uri.fsPath);
|
|
@@ -150,7 +160,11 @@ export class WorktreesGitSubProvider implements GitWorktreesSubProvider {
|
|
|
150
160
|
}
|
|
151
161
|
|
|
152
162
|
@debug()
|
|
153
|
-
async deleteWorktree(
|
|
163
|
+
async deleteWorktree(
|
|
164
|
+
repoPath: string,
|
|
165
|
+
path: string | Uri,
|
|
166
|
+
options?: { force?: boolean | 'locked' },
|
|
167
|
+
): Promise<void> {
|
|
154
168
|
const scope = getScopedLogger();
|
|
155
169
|
|
|
156
170
|
await this.git.ensureSupports(
|
|
@@ -162,6 +176,10 @@ export class WorktreesGitSubProvider implements GitWorktreesSubProvider {
|
|
|
162
176
|
const args = ['worktree', 'remove'];
|
|
163
177
|
if (options?.force) {
|
|
164
178
|
args.push('--force');
|
|
179
|
+
// Git requires a second `--force` to remove a locked worktree
|
|
180
|
+
if (options.force === 'locked') {
|
|
181
|
+
args.push('--force');
|
|
182
|
+
}
|
|
165
183
|
}
|
|
166
184
|
|
|
167
185
|
const pathStr = normalizePath(toFsPath(path));
|
|
@@ -178,7 +196,11 @@ export class WorktreesGitSubProvider implements GitWorktreesSubProvider {
|
|
|
178
196
|
ex as GitError,
|
|
179
197
|
reason =>
|
|
180
198
|
new WorktreeDeleteError(
|
|
181
|
-
{
|
|
199
|
+
{
|
|
200
|
+
reason: reason,
|
|
201
|
+
lockReason: reason === 'locked' ? getLockReason(ex as GitError) : undefined,
|
|
202
|
+
gitCommand: { repoPath: repoPath, args: args },
|
|
203
|
+
},
|
|
182
204
|
ex as GitError,
|
|
183
205
|
),
|
|
184
206
|
);
|
|
@@ -241,4 +263,18 @@ export class WorktreesGitSubProvider implements GitWorktreesSubProvider {
|
|
|
241
263
|
}
|
|
242
264
|
}
|
|
243
265
|
}
|
|
266
|
+
|
|
267
|
+
@debug()
|
|
268
|
+
async unlockWorktree(repoPath: string, path: string | Uri): Promise<void> {
|
|
269
|
+
await this.git.ensureSupports(
|
|
270
|
+
'git:worktrees',
|
|
271
|
+
'Unlocking worktrees',
|
|
272
|
+
' Please install a more recent version of Git and try again.',
|
|
273
|
+
);
|
|
274
|
+
|
|
275
|
+
await this.git.run({ cwd: repoPath, errors: 'throw' }, 'worktree', 'unlock', normalizePath(toFsPath(path)));
|
|
276
|
+
|
|
277
|
+
this.context.hooks?.cache?.onReset?.(repoPath, 'worktrees');
|
|
278
|
+
this.context.hooks?.repository?.onChanged?.(repoPath, ['worktrees']);
|
|
279
|
+
}
|
|
244
280
|
}
|
package/src/git-cli/service.ts
CHANGED
|
@@ -70,5 +70,14 @@ export function createCliGitService(options: CliGitServiceOptions): GitService {
|
|
|
70
70
|
|
|
71
71
|
service.register(provider, () => true);
|
|
72
72
|
|
|
73
|
+
// Advance the provider cache's status generation clock from the watch session's global events — the standalone
|
|
74
|
+
// analogue of what the VS Code host wires in `GitProviderService`. Without this, a consumer that passes a
|
|
75
|
+
// `watchingProvider` and drives watch sessions gets FS events but a FROZEN clock, so `dedupeByStatusGeneration`
|
|
76
|
+
// degrades to the pre-change/post-change stale-join this branch exists to fix. Standalone has no `Repository`
|
|
77
|
+
// models, so there are no force-fired `closed`/`lastFetched` bypassing the session for the global repo event to
|
|
78
|
+
// miss. Subscriptions are torn down with the service (its `watchService`'s emitters are disposed on dispose).
|
|
79
|
+
service.watchService?.onDidChangeWorkingTree(repoPath => provider.cache.onWorkingTreeChanged(repoPath));
|
|
80
|
+
service.watchService?.onDidChangeRepository(e => provider.cache.onRepositoryChanged(e.repoPath, e.changes));
|
|
81
|
+
|
|
73
82
|
return service;
|
|
74
83
|
}
|
package/src/ipc/ipcServer.ts
CHANGED
|
@@ -35,7 +35,7 @@ export async function createIpcServer<Request = unknown, Response = void>(): Pro
|
|
|
35
35
|
resolve(new IpcServer(serverUrl, port, token, server));
|
|
36
36
|
});
|
|
37
37
|
} catch (ex) {
|
|
38
|
-
//
|
|
38
|
+
// oxlint-disable-next-line typescript/prefer-promise-reject-errors
|
|
39
39
|
reject(ex);
|
|
40
40
|
}
|
|
41
41
|
});
|
|
@@ -29,6 +29,9 @@ import type {
|
|
|
29
29
|
PendingPermissionKind,
|
|
30
30
|
PermissionDecision,
|
|
31
31
|
PermissionSuggestion,
|
|
32
|
+
ResumableAgentSession,
|
|
33
|
+
ResumableSessionsOptions,
|
|
34
|
+
ResumableSessionsResult,
|
|
32
35
|
} from '../types.js';
|
|
33
36
|
import { getPhaseForStatus } from '../types.js';
|
|
34
37
|
import { ClaudeCodeTranscriptReader } from './claudeCodeTranscript.js';
|
|
@@ -317,6 +320,28 @@ export class ClaudeCodeProvider implements AgentSessionProvider {
|
|
|
317
320
|
}
|
|
318
321
|
}
|
|
319
322
|
|
|
323
|
+
/** Reads past sessions out of Claude's transcript store. Claude homes each transcript under the
|
|
324
|
+
* directory encoding the session's current cwd (migrating it if the session `cd`s), so the
|
|
325
|
+
* directory for `cwd` is exactly what `claude --resume <id>` can find when invoked from there —
|
|
326
|
+
* every session returned is resumable from `cwd`. */
|
|
327
|
+
async listResumableSessions(cwd: string, options?: ResumableSessionsOptions): Promise<ResumableSessionsResult> {
|
|
328
|
+
const { sessions, total } = await this._transcriptReader.listSessions(cwd, {
|
|
329
|
+
limit: options?.limit,
|
|
330
|
+
excludeSessionIds: options?.excludeSessionIds,
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
const resumable = sessions.map<ResumableAgentSession>(s => ({
|
|
334
|
+
id: s.sessionId,
|
|
335
|
+
providerId: this.id,
|
|
336
|
+
cwd: cwd,
|
|
337
|
+
lastActivity: new Date(s.lastActivityMs),
|
|
338
|
+
titles: s.titles,
|
|
339
|
+
lastPrompt: s.lastPrompt,
|
|
340
|
+
}));
|
|
341
|
+
|
|
342
|
+
return { sessions: resumable, total: total };
|
|
343
|
+
}
|
|
344
|
+
|
|
320
345
|
dispose(): void {
|
|
321
346
|
this._disposed = true;
|
|
322
347
|
this.stop();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createReadStream } from 'fs';
|
|
2
|
-
import { readdir, stat } from 'fs/promises';
|
|
2
|
+
import { open, readdir, stat } from 'fs/promises';
|
|
3
3
|
import { homedir } from 'os';
|
|
4
|
-
import { join } from 'path';
|
|
4
|
+
import { basename, join } from 'path';
|
|
5
5
|
|
|
6
6
|
export interface TranscriptTitles {
|
|
7
7
|
custom?: string;
|
|
@@ -9,6 +9,27 @@ export interface TranscriptTitles {
|
|
|
9
9
|
agent?: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
/** A transcript file discovered by {@link ClaudeCodeTranscriptReader.listSessions}, before its
|
|
13
|
+
* contents are read — everything here comes from `readdir` + `stat`. */
|
|
14
|
+
export interface TranscriptSessionEntry {
|
|
15
|
+
readonly sessionId: string;
|
|
16
|
+
readonly path: string;
|
|
17
|
+
readonly lastActivityMs: number;
|
|
18
|
+
readonly size: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** A {@link TranscriptSessionEntry} enriched with the fields recovered from the file's head/tail. */
|
|
22
|
+
export interface TranscriptSessionSummary extends TranscriptSessionEntry {
|
|
23
|
+
readonly titles: TranscriptTitles;
|
|
24
|
+
readonly lastPrompt?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface TranscriptSessionListing {
|
|
28
|
+
readonly sessions: TranscriptSessionSummary[];
|
|
29
|
+
/** Every transcript in the directory, not just the summarized slice — drives "Showing N of M". */
|
|
30
|
+
readonly total: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
12
33
|
interface CacheEntry {
|
|
13
34
|
path: string;
|
|
14
35
|
mtimeMs: number;
|
|
@@ -17,14 +38,40 @@ interface CacheEntry {
|
|
|
17
38
|
titles: TranscriptTitles;
|
|
18
39
|
}
|
|
19
40
|
|
|
41
|
+
interface ListingCacheEntry {
|
|
42
|
+
entries: TranscriptSessionEntry[];
|
|
43
|
+
resolvedAt: number;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
interface SummaryCacheEntry {
|
|
47
|
+
mtimeMs: number;
|
|
48
|
+
size: number;
|
|
49
|
+
summary: TranscriptSessionSummary;
|
|
50
|
+
}
|
|
51
|
+
|
|
20
52
|
interface TitleEntry {
|
|
21
53
|
type: string;
|
|
22
54
|
sessionId?: string;
|
|
23
55
|
customTitle?: string;
|
|
24
56
|
aiTitle?: string;
|
|
25
57
|
agentName?: string;
|
|
58
|
+
lastPrompt?: string;
|
|
26
59
|
}
|
|
27
60
|
|
|
61
|
+
/** Bytes read from each end of a transcript when summarizing. Titles and prompts cluster at both
|
|
62
|
+
* extremes, and files run to tens of MB, so reading whole files is not an option. */
|
|
63
|
+
const summaryWindowSize = 64 * 1024;
|
|
64
|
+
/** Listings are cheap (readdir + stat) but re-run per panel/sheet open; a short TTL absorbs bursts.
|
|
65
|
+
* Time-based rather than dir-mtime-based because appends move file mtimes without touching the dir. */
|
|
66
|
+
const listingCacheTtlMs = 10 * 1000;
|
|
67
|
+
/** Summaries are keyed by session, and a busy project has hundreds — unlike the per-live-session
|
|
68
|
+
* title cache, this needs a ceiling. */
|
|
69
|
+
const summaryCacheLimit = 200;
|
|
70
|
+
const defaultListLimit = 50;
|
|
71
|
+
/** How far past `limit` the top-up scan may read when transcripts turn out empty — a junk-filled
|
|
72
|
+
* store reads at most `limit + listScanSlack` summaries, staying well under {@link summaryCacheLimit}. */
|
|
73
|
+
const listScanSlack = 25;
|
|
74
|
+
|
|
28
75
|
/**
|
|
29
76
|
* Reads Claude Code transcript JSONL files at `~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl`
|
|
30
77
|
* to surface `custom-title`, `ai-title`, and `agent-name` entries as fallback session names.
|
|
@@ -40,6 +87,9 @@ interface TitleEntry {
|
|
|
40
87
|
export class ClaudeCodeTranscriptReader {
|
|
41
88
|
private readonly _cache = new Map<string, CacheEntry>();
|
|
42
89
|
private readonly _generations = new Map<string, number>();
|
|
90
|
+
private readonly _listings = new Map<string, ListingCacheEntry>();
|
|
91
|
+
/** Insertion-ordered LRU — re-inserted on hit, oldest key evicted past {@link summaryCacheLimit}. */
|
|
92
|
+
private readonly _summaries = new Map<string, SummaryCacheEntry>();
|
|
43
93
|
private _nextGen = 0;
|
|
44
94
|
|
|
45
95
|
async resolve(sessionId: string, cwd: string | undefined): Promise<TranscriptTitles | undefined> {
|
|
@@ -97,16 +147,233 @@ export class ClaudeCodeTranscriptReader {
|
|
|
97
147
|
this._generations.delete(sessionId);
|
|
98
148
|
}
|
|
99
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Lists the transcripts of sessions whose working directory is `cwd`, most-recently-active first,
|
|
152
|
+
* summarizing until `limit` summarizable transcripts are found (bounded by a small scan slack) —
|
|
153
|
+
* not just the first `limit` on disk, since junk transcripts (dropped below) would otherwise starve
|
|
154
|
+
* the result. `excludeSessionIds` is skipped before `limit` applies, but excluded entries still
|
|
155
|
+
* count toward `total`.
|
|
156
|
+
*
|
|
157
|
+
* Claude homes a transcript under the directory encoding the session's *current* cwd, migrating the
|
|
158
|
+
* file if the session `cd`s — so this directory is exactly the set `claude --resume <id>` can find
|
|
159
|
+
* when invoked from `cwd`, and every entry is resumable from there. The transcripts' own recorded
|
|
160
|
+
* `cwd` is per-message and lags the move, so it must NOT be used to filter; the directory decides.
|
|
161
|
+
*
|
|
162
|
+
* Discovery (readdir + stat) covers the whole directory and is cheap; summarizing is not, so it's
|
|
163
|
+
* capped. Entries whose summary yields neither a title nor a prompt are dropped — those are aborted
|
|
164
|
+
* or empty transcripts with nothing to show or search on.
|
|
165
|
+
*/
|
|
166
|
+
async listSessions(
|
|
167
|
+
cwd: string,
|
|
168
|
+
options?: { limit?: number; excludeSessionIds?: ReadonlySet<string> },
|
|
169
|
+
): Promise<TranscriptSessionListing> {
|
|
170
|
+
const dir = await this.resolveProjectDir(cwd);
|
|
171
|
+
if (dir == null) return { sessions: [], total: 0 };
|
|
172
|
+
|
|
173
|
+
const entries = await this.listEntries(dir);
|
|
174
|
+
if (entries.length === 0) return { sessions: [], total: 0 };
|
|
175
|
+
|
|
176
|
+
const limit = options?.limit ?? defaultListLimit;
|
|
177
|
+
const exclude = options?.excludeSessionIds;
|
|
178
|
+
const candidates = exclude?.size ? entries.filter(e => !exclude.has(e.sessionId)) : entries;
|
|
179
|
+
|
|
180
|
+
const sessions: TranscriptSessionSummary[] = [];
|
|
181
|
+
const pushSummaries = (settled: PromiseSettledResult<TranscriptSessionSummary | undefined>[]): void => {
|
|
182
|
+
for (const result of settled) {
|
|
183
|
+
if (result.status !== 'fulfilled') continue;
|
|
184
|
+
|
|
185
|
+
const summary = result.value;
|
|
186
|
+
if (summary == null || !hasSummaryContent(summary)) continue;
|
|
187
|
+
|
|
188
|
+
sessions.push(summary);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
// limit <= 0 means "no ceiling" — summarize every candidate.
|
|
193
|
+
if (limit <= 0) {
|
|
194
|
+
pushSummaries(await Promise.allSettled(candidates.map(e => this.resolveSummary(e))));
|
|
195
|
+
return { sessions: sessions, total: entries.length };
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
const ceiling = Math.min(candidates.length, limit + listScanSlack);
|
|
199
|
+
let cursor = 0;
|
|
200
|
+
while (sessions.length < limit && cursor < ceiling) {
|
|
201
|
+
// Clamped to the remaining ceiling budget too — a run of junk entries must not let a
|
|
202
|
+
// need-sized batch read past `limit + listScanSlack`.
|
|
203
|
+
const batch = candidates.slice(cursor, cursor + Math.min(limit - sessions.length, ceiling - cursor));
|
|
204
|
+
cursor += batch.length;
|
|
205
|
+
pushSummaries(await Promise.allSettled(batch.map(e => this.resolveSummary(e))));
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return { sessions: sessions, total: entries.length };
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/** Discovers every transcript in `dir`, newest first. The directory also holds one sibling
|
|
212
|
+
* subdirectory per session (`<uuid>/subagents`, `<uuid>/tool-results`), so entries must be filtered
|
|
213
|
+
* to files — a busy project has roughly as many subdirectories as transcripts. */
|
|
214
|
+
private async listEntries(dir: string): Promise<TranscriptSessionEntry[]> {
|
|
215
|
+
const cached = this._listings.get(dir);
|
|
216
|
+
if (cached != null && Date.now() - cached.resolvedAt < listingCacheTtlMs) return cached.entries;
|
|
217
|
+
|
|
218
|
+
let names: string[];
|
|
219
|
+
try {
|
|
220
|
+
const dirents = await readdir(dir, { withFileTypes: true });
|
|
221
|
+
names = dirents.filter(d => d.isFile() && d.name.endsWith('.jsonl')).map(d => d.name);
|
|
222
|
+
} catch {
|
|
223
|
+
return [];
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const settled = await Promise.allSettled(
|
|
227
|
+
names.map(async (name): Promise<TranscriptSessionEntry> => {
|
|
228
|
+
const path = join(dir, name);
|
|
229
|
+
const stats = await stat(path);
|
|
230
|
+
return {
|
|
231
|
+
sessionId: basename(name, '.jsonl'),
|
|
232
|
+
path: path,
|
|
233
|
+
lastActivityMs: stats.mtimeMs,
|
|
234
|
+
size: stats.size,
|
|
235
|
+
};
|
|
236
|
+
}),
|
|
237
|
+
);
|
|
238
|
+
|
|
239
|
+
const entries = settled
|
|
240
|
+
.filter(r => r.status === 'fulfilled')
|
|
241
|
+
.map(r => r.value)
|
|
242
|
+
.sort((a, b) => b.lastActivityMs - a.lastActivityMs);
|
|
243
|
+
|
|
244
|
+
this._listings.set(dir, { entries: entries, resolvedAt: Date.now() });
|
|
245
|
+
return entries;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/** Summarizes one transcript, reusing the cached result while its mtime and size are unchanged. */
|
|
249
|
+
private async resolveSummary(entry: TranscriptSessionEntry): Promise<TranscriptSessionSummary | undefined> {
|
|
250
|
+
const cached = this._summaries.get(entry.sessionId);
|
|
251
|
+
if (cached != null && cached.mtimeMs === entry.lastActivityMs && cached.size === entry.size) {
|
|
252
|
+
// Refresh recency for the LRU.
|
|
253
|
+
this._summaries.delete(entry.sessionId);
|
|
254
|
+
this._summaries.set(entry.sessionId, cached);
|
|
255
|
+
return cached.summary;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
let summary: TranscriptSessionSummary;
|
|
259
|
+
try {
|
|
260
|
+
summary = await this.readSummary(entry);
|
|
261
|
+
} catch {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
this._summaries.set(entry.sessionId, {
|
|
266
|
+
mtimeMs: entry.lastActivityMs,
|
|
267
|
+
size: entry.size,
|
|
268
|
+
summary: summary,
|
|
269
|
+
});
|
|
270
|
+
if (this._summaries.size > summaryCacheLimit) {
|
|
271
|
+
const oldest = this._summaries.keys().next();
|
|
272
|
+
if (!oldest.done) {
|
|
273
|
+
this._summaries.delete(oldest.value);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return summary;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Reads a summary from the first and last {@link summaryWindowSize} bytes of the transcript.
|
|
281
|
+
*
|
|
282
|
+
* Deliberately does not reuse `resolve` — that scans from the last-read offset and buffers the whole
|
|
283
|
+
* range, which for a cold multi-MB transcript means loading the entire file. Titles are written early
|
|
284
|
+
* and re-written as they're refined, while prompts land at the tail, so the two windows recover both
|
|
285
|
+
* at a fraction of the bytes. The tail is parsed second so the newest value wins.
|
|
286
|
+
*/
|
|
287
|
+
protected async readSummary(entry: TranscriptSessionEntry): Promise<TranscriptSessionSummary> {
|
|
288
|
+
const titles: TranscriptTitles = {};
|
|
289
|
+
let lastPrompt: string | undefined;
|
|
290
|
+
|
|
291
|
+
const apply = (buffer: Buffer, dropPartialFirstLine: boolean): void => {
|
|
292
|
+
const text = buffer.toString('utf8');
|
|
293
|
+
const lines = text.split('\n');
|
|
294
|
+
// A window starting mid-file almost always opens mid-line; that fragment can't be parsed.
|
|
295
|
+
if (dropPartialFirstLine) {
|
|
296
|
+
lines.shift();
|
|
297
|
+
}
|
|
298
|
+
for (const line of lines) {
|
|
299
|
+
const parsed = parseSummaryLine(line, entry.sessionId);
|
|
300
|
+
if (parsed == null) continue;
|
|
301
|
+
|
|
302
|
+
applyTitleEntry(parsed, titles);
|
|
303
|
+
if (parsed.lastPrompt != null && parsed.lastPrompt.length > 0) {
|
|
304
|
+
lastPrompt = parsed.lastPrompt;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
const handle = await open(entry.path, 'r');
|
|
310
|
+
try {
|
|
311
|
+
if (entry.size <= summaryWindowSize * 2) {
|
|
312
|
+
const whole = Buffer.alloc(entry.size);
|
|
313
|
+
await handle.read(whole, 0, entry.size, 0);
|
|
314
|
+
apply(whole, false);
|
|
315
|
+
} else {
|
|
316
|
+
const head = Buffer.alloc(summaryWindowSize);
|
|
317
|
+
await handle.read(head, 0, summaryWindowSize, 0);
|
|
318
|
+
apply(head, false);
|
|
319
|
+
|
|
320
|
+
const tail = Buffer.alloc(summaryWindowSize);
|
|
321
|
+
await handle.read(tail, 0, summaryWindowSize, entry.size - summaryWindowSize);
|
|
322
|
+
apply(tail, true);
|
|
323
|
+
}
|
|
324
|
+
} finally {
|
|
325
|
+
await handle.close();
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
return {
|
|
329
|
+
...entry,
|
|
330
|
+
titles: titles,
|
|
331
|
+
lastPrompt: lastPrompt,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
protected getProjectsRoot(): string {
|
|
336
|
+
return join(homedir(), '.claude', 'projects');
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/** Resolves the `~/.claude/projects` directory holding the sessions whose working directory is
|
|
340
|
+
* `cwd`, or `undefined` when none exists. Falls back to a case-insensitive name match because on
|
|
341
|
+
* Windows our
|
|
342
|
+
* paths carry a lower-cased drive letter (`normalizePath`) while Claude encodes the OS-native
|
|
343
|
+
* `C:\...` — so the exact name never matches by case. */
|
|
344
|
+
protected async resolveProjectDir(cwd: string | undefined): Promise<string | undefined> {
|
|
345
|
+
if (cwd == null || cwd.length === 0) return undefined;
|
|
346
|
+
|
|
347
|
+
const root = this.getProjectsRoot();
|
|
348
|
+
const encoded = encodeProjectDirName(cwd);
|
|
349
|
+
|
|
350
|
+
const exact = join(root, encoded);
|
|
351
|
+
if (await directoryExists(exact)) return exact;
|
|
352
|
+
|
|
353
|
+
let dirs: string[];
|
|
354
|
+
try {
|
|
355
|
+
dirs = await readdir(root);
|
|
356
|
+
} catch {
|
|
357
|
+
return undefined;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
const lowered = encoded.toLowerCase();
|
|
361
|
+
const match = dirs.find(d => d !== encoded && d.toLowerCase() === lowered);
|
|
362
|
+
return match != null ? join(root, match) : undefined;
|
|
363
|
+
}
|
|
364
|
+
|
|
100
365
|
protected async locateTranscript(sessionId: string, cwd: string | undefined): Promise<string | undefined> {
|
|
101
|
-
const root = join(homedir(), '.claude', 'projects');
|
|
102
366
|
const fileName = `${sessionId}.jsonl`;
|
|
103
367
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const candidate = join(
|
|
368
|
+
const dir = await this.resolveProjectDir(cwd);
|
|
369
|
+
if (dir != null) {
|
|
370
|
+
const candidate = join(dir, fileName);
|
|
107
371
|
if (await fileExists(candidate)) return candidate;
|
|
108
372
|
}
|
|
109
373
|
|
|
374
|
+
// The recorded cwd drifts whenever the agent `cd`s, so it can encode to a directory the session
|
|
375
|
+
// doesn't actually live in — scan every project for the file as a last resort.
|
|
376
|
+
const root = this.getProjectsRoot();
|
|
110
377
|
let dirs: string[];
|
|
111
378
|
try {
|
|
112
379
|
dirs = await readdir(root);
|
|
@@ -115,8 +382,8 @@ export class ClaudeCodeTranscriptReader {
|
|
|
115
382
|
}
|
|
116
383
|
|
|
117
384
|
const candidates = await Promise.all(
|
|
118
|
-
dirs.map(async
|
|
119
|
-
const candidate = join(root,
|
|
385
|
+
dirs.map(async d => {
|
|
386
|
+
const candidate = join(root, d, fileName);
|
|
120
387
|
return (await fileExists(candidate)) ? candidate : undefined;
|
|
121
388
|
}),
|
|
122
389
|
);
|
|
@@ -170,6 +437,27 @@ function applyTitleLine(line: string, sessionId: string, titles: TranscriptTitle
|
|
|
170
437
|
}
|
|
171
438
|
if (entry.sessionId != null && entry.sessionId !== sessionId) return;
|
|
172
439
|
|
|
440
|
+
applyTitleEntry(entry, titles);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/** Parses one transcript line for {@link ClaudeCodeTranscriptReader.readSummary}, rejecting entries
|
|
444
|
+
* that belong to another session. Can't use the `-title` prefilter that {@link isLikelyTitleLine}
|
|
445
|
+
* applies: `last-prompt` matches neither of its markers. */
|
|
446
|
+
function parseSummaryLine(line: string, sessionId: string): TitleEntry | undefined {
|
|
447
|
+
if (line.length === 0 || !line.includes('"type"')) return undefined;
|
|
448
|
+
|
|
449
|
+
let entry: TitleEntry;
|
|
450
|
+
try {
|
|
451
|
+
entry = JSON.parse(line) as TitleEntry;
|
|
452
|
+
} catch {
|
|
453
|
+
return undefined;
|
|
454
|
+
}
|
|
455
|
+
if (entry.sessionId != null && entry.sessionId !== sessionId) return undefined;
|
|
456
|
+
|
|
457
|
+
return entry;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
function applyTitleEntry(entry: TitleEntry, titles: TranscriptTitles): void {
|
|
173
461
|
switch (entry.type) {
|
|
174
462
|
case 'custom-title':
|
|
175
463
|
if (typeof entry.customTitle === 'string' && entry.customTitle.length > 0) {
|
|
@@ -189,11 +477,26 @@ function applyTitleLine(line: string, sessionId: string, titles: TranscriptTitle
|
|
|
189
477
|
}
|
|
190
478
|
}
|
|
191
479
|
|
|
480
|
+
/** Encodes a working directory into its `~/.claude/projects` directory name. Claude replaces every
|
|
481
|
+
* non-alphanumeric character — not just separators — preserving runs (`/home/e/.claude` →
|
|
482
|
+
* `-home-e--claude`) and case. Separators-only would leave the dot in our own worktree convention
|
|
483
|
+
* (`<repo>.worktrees/<name>`) intact and compute a directory that never exists. */
|
|
484
|
+
export function encodeProjectDirName(cwd: string): string {
|
|
485
|
+
return cwd.replace(/[^a-zA-Z0-9]/g, '-');
|
|
486
|
+
}
|
|
487
|
+
|
|
192
488
|
function isLikelyTitleLine(line: string): boolean {
|
|
193
489
|
if (!line.includes('"type"')) return false;
|
|
194
490
|
return line.includes('-title') || line.includes('agent-name');
|
|
195
491
|
}
|
|
196
492
|
|
|
493
|
+
/** A transcript with no title and no prompt is an aborted or empty session — nothing to name it by,
|
|
494
|
+
* nothing to search it on. */
|
|
495
|
+
function hasSummaryContent(summary: TranscriptSessionSummary): boolean {
|
|
496
|
+
const { custom, ai, agent } = summary.titles;
|
|
497
|
+
return custom != null || ai != null || agent != null || summary.lastPrompt != null;
|
|
498
|
+
}
|
|
499
|
+
|
|
197
500
|
async function fileExists(path: string): Promise<boolean> {
|
|
198
501
|
try {
|
|
199
502
|
const stats = await stat(path);
|
|
@@ -203,6 +506,15 @@ async function fileExists(path: string): Promise<boolean> {
|
|
|
203
506
|
}
|
|
204
507
|
}
|
|
205
508
|
|
|
509
|
+
async function directoryExists(path: string): Promise<boolean> {
|
|
510
|
+
try {
|
|
511
|
+
const stats = await stat(path);
|
|
512
|
+
return stats.isDirectory();
|
|
513
|
+
} catch {
|
|
514
|
+
return false;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
206
518
|
function readSlice(path: string, start: number, end: number): Promise<Buffer> {
|
|
207
519
|
return new Promise((resolve, reject) => {
|
|
208
520
|
const chunks: Buffer[] = [];
|
package/src/plus/agents/types.ts
CHANGED
|
@@ -233,6 +233,40 @@ export interface AgentSessionProvider extends UnifiedDisposable {
|
|
|
233
233
|
* `vscode.openFolder` and relies on VS Code's window-folder matching to focus the owning
|
|
234
234
|
* window (which works whether or not the peer runs GitLens). */
|
|
235
235
|
notifyPeerOpenSession?(workspacePath: string, sessionId: string): Promise<boolean>;
|
|
236
|
+
|
|
237
|
+
/** Lists past sessions that can be resumed from `cwd`, most-recently-active first. Omitted by
|
|
238
|
+
* providers with no durable per-directory session store to read. Live sessions are excluded by
|
|
239
|
+
* the caller, not here — this reports what the store holds. The caller may also pass its live
|
|
240
|
+
* set via {@link ResumableSessionsOptions.excludeSessionIds} so exclusion happens before `limit`
|
|
241
|
+
* applies rather than after. */
|
|
242
|
+
listResumableSessions?(cwd: string, options?: ResumableSessionsOptions): Promise<ResumableSessionsResult>;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export interface ResumableSessionsOptions {
|
|
246
|
+
/** How many sessions to detail. Discovery covers the whole store; only this many are read. */
|
|
247
|
+
readonly limit?: number;
|
|
248
|
+
/** Session ids to skip before `limit` applies — typically the caller's live sessions.
|
|
249
|
+
* Excluded entries still count toward `total`. */
|
|
250
|
+
readonly excludeSessionIds?: ReadonlySet<string>;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/** A session that is no longer running but whose transcript survives, so it can be resumed. */
|
|
254
|
+
export interface ResumableAgentSession {
|
|
255
|
+
readonly id: string;
|
|
256
|
+
readonly providerId: string;
|
|
257
|
+
/** The directory the session must be resumed from — resolving it is the store's whole job. */
|
|
258
|
+
readonly cwd: string;
|
|
259
|
+
readonly lastActivity: Date;
|
|
260
|
+
/** Mirrors {@link AgentSession.transcriptTitles} — kept unresolved so naming stays the display
|
|
261
|
+
* cascade's job rather than being decided here. */
|
|
262
|
+
readonly titles?: { readonly custom?: string; readonly ai?: string; readonly agent?: string };
|
|
263
|
+
readonly lastPrompt?: string;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export interface ResumableSessionsResult {
|
|
267
|
+
readonly sessions: ResumableAgentSession[];
|
|
268
|
+
/** Everything the store holds for `cwd`, not just the detailed slice — drives "Showing N of M". */
|
|
269
|
+
readonly total: number;
|
|
236
270
|
}
|
|
237
271
|
|
|
238
272
|
/**
|
package/src/plus/ai/constants.ts
CHANGED
|
@@ -5,7 +5,6 @@ export type AIProviders =
|
|
|
5
5
|
| 'azure'
|
|
6
6
|
| 'deepseek'
|
|
7
7
|
| 'gemini'
|
|
8
|
-
| 'github'
|
|
9
8
|
| 'gitkraken'
|
|
10
9
|
| 'huggingface'
|
|
11
10
|
| 'mistral'
|
|
@@ -87,14 +86,7 @@ export const deepSeekProviderDescriptor: AIProviderDescriptor<'deepseek'> = {
|
|
|
87
86
|
} as const;
|
|
88
87
|
export const xAIProviderDescriptor: AIProviderDescriptor<'xai'> = {
|
|
89
88
|
id: 'xai',
|
|
90
|
-
name: '
|
|
91
|
-
primary: false,
|
|
92
|
-
requiresAccount: true,
|
|
93
|
-
requiresUserKey: true,
|
|
94
|
-
} as const;
|
|
95
|
-
export const githubProviderDescriptor: AIProviderDescriptor<'github'> = {
|
|
96
|
-
id: 'github',
|
|
97
|
-
name: 'GitHub Models',
|
|
89
|
+
name: 'SpaceXAI',
|
|
98
90
|
primary: false,
|
|
99
91
|
requiresAccount: true,
|
|
100
92
|
requiresUserKey: true,
|