gitwise-cli 0.24.2__py3-none-any.whl

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.
Files changed (125) hide show
  1. gitwise/__init__.py +11 -0
  2. gitwise/__main__.py +113 -0
  3. gitwise/_cli_completions.py +88 -0
  4. gitwise/_cli_dispatch.py +469 -0
  5. gitwise/_cli_introspection.py +275 -0
  6. gitwise/_cli_parser.py +345 -0
  7. gitwise/_cli_setup_agents.py +439 -0
  8. gitwise/_i18n_data.json +1934 -0
  9. gitwise/_paths.py +22 -0
  10. gitwise/_runtime_config.py +246 -0
  11. gitwise/audit.py +338 -0
  12. gitwise/branches.py +183 -0
  13. gitwise/clean.py +197 -0
  14. gitwise/commit.py +142 -0
  15. gitwise/conflicts.py +112 -0
  16. gitwise/context.py +163 -0
  17. gitwise/design.py +383 -0
  18. gitwise/diff.py +309 -0
  19. gitwise/doctor.py +116 -0
  20. gitwise/git.py +254 -0
  21. gitwise/health.py +345 -0
  22. gitwise/i18n.py +99 -0
  23. gitwise/log.py +329 -0
  24. gitwise/merge.py +193 -0
  25. gitwise/optimize.py +212 -0
  26. gitwise/output.py +652 -0
  27. gitwise/pick.py +102 -0
  28. gitwise/pr.py +543 -0
  29. gitwise/py.typed +0 -0
  30. gitwise/schema.py +49 -0
  31. gitwise/setup.py +551 -0
  32. gitwise/setup_agents/__init__.py +36 -0
  33. gitwise/setup_agents/adapters/__init__.py +17 -0
  34. gitwise/setup_agents/adapters/aider.py +5 -0
  35. gitwise/setup_agents/adapters/base.py +5 -0
  36. gitwise/setup_agents/adapters/codex.py +5 -0
  37. gitwise/setup_agents/adapters/continue_adapter.py +5 -0
  38. gitwise/setup_agents/adapters/cursor.py +5 -0
  39. gitwise/setup_agents/adapters/opencode.py +5 -0
  40. gitwise/setup_agents/adapters/pi.py +5 -0
  41. gitwise/setup_agents/exec.py +449 -0
  42. gitwise/setup_agents/format.py +164 -0
  43. gitwise/setup_agents/plan.py +254 -0
  44. gitwise/setup_agents/plan_gitfiles.py +167 -0
  45. gitwise/setup_agents/plan_skills.py +256 -0
  46. gitwise/setup_agents/providers/__init__.py +96 -0
  47. gitwise/setup_agents/providers/aider.py +11 -0
  48. gitwise/setup_agents/providers/base.py +79 -0
  49. gitwise/setup_agents/providers/claude.py +408 -0
  50. gitwise/setup_agents/providers/codex.py +11 -0
  51. gitwise/setup_agents/providers/continue_adapter.py +11 -0
  52. gitwise/setup_agents/providers/cursor.py +11 -0
  53. gitwise/setup_agents/providers/opencode.py +11 -0
  54. gitwise/setup_agents/providers/pi.py +11 -0
  55. gitwise/setup_agents/state.py +141 -0
  56. gitwise/setup_agents/types.py +48 -0
  57. gitwise/share/agents/skills/git-audit/SKILL.md +25 -0
  58. gitwise/share/agents/skills/git-clean/SKILL.md +22 -0
  59. gitwise/share/agents/skills/git-optimize/SKILL.md +21 -0
  60. gitwise/share/aider/CONVENTIONS.md.template +8 -0
  61. gitwise/share/aider/aider.conf.yml.template +4 -0
  62. gitwise/share/claude/CLAUDE.md.template +9 -0
  63. gitwise/share/claude/rules/gitwise.md +16 -0
  64. gitwise/share/claude/settings.json.template +47 -0
  65. gitwise/share/claude/skills/git-audit/SKILL.md +25 -0
  66. gitwise/share/claude/skills/git-clean/SKILL.md +22 -0
  67. gitwise/share/claude/skills/git-optimize/SKILL.md +21 -0
  68. gitwise/share/codex/agents/gitwise.toml.template +18 -0
  69. gitwise/share/continue/rules/gitwise.md.template +14 -0
  70. gitwise/share/cursor/rules/gitwise.mdc.template +16 -0
  71. gitwise/share/git-config-modern.txt +48 -0
  72. gitwise/share/hooks/commit-msg +22 -0
  73. gitwise/share/hooks/pre-commit +19 -0
  74. gitwise/share/opencode/agents/gitwise.md.template +14 -0
  75. gitwise/share/pi/skills/gitwise.md.template +14 -0
  76. gitwise/share/schemas/v1/input/audit.json +40 -0
  77. gitwise/share/schemas/v1/input/branches.json +51 -0
  78. gitwise/share/schemas/v1/input/clean.json +52 -0
  79. gitwise/share/schemas/v1/input/commands.json +36 -0
  80. gitwise/share/schemas/v1/input/commit.json +63 -0
  81. gitwise/share/schemas/v1/input/completions.json +51 -0
  82. gitwise/share/schemas/v1/input/conflicts.json +46 -0
  83. gitwise/share/schemas/v1/input/context.json +36 -0
  84. gitwise/share/schemas/v1/input/diff.json +56 -0
  85. gitwise/share/schemas/v1/input/doctor.json +36 -0
  86. gitwise/share/schemas/v1/input/health.json +36 -0
  87. gitwise/share/schemas/v1/input/log.json +71 -0
  88. gitwise/share/schemas/v1/input/merge.json +63 -0
  89. gitwise/share/schemas/v1/input/optimize.json +44 -0
  90. gitwise/share/schemas/v1/input/pick.json +63 -0
  91. gitwise/share/schemas/v1/input/pr.json +51 -0
  92. gitwise/share/schemas/v1/input/schema.json +48 -0
  93. gitwise/share/schemas/v1/input/setup-agents.json +108 -0
  94. gitwise/share/schemas/v1/input/setup.json +55 -0
  95. gitwise/share/schemas/v1/input/show.json +46 -0
  96. gitwise/share/schemas/v1/input/snapshot.json +36 -0
  97. gitwise/share/schemas/v1/input/stash.json +68 -0
  98. gitwise/share/schemas/v1/input/status.json +36 -0
  99. gitwise/share/schemas/v1/input/suggest.json +36 -0
  100. gitwise/share/schemas/v1/input/summarize.json +44 -0
  101. gitwise/share/schemas/v1/input/sync.json +55 -0
  102. gitwise/share/schemas/v1/input/tag.json +73 -0
  103. gitwise/share/schemas/v1/input/undo.json +60 -0
  104. gitwise/share/schemas/v1/input/update.json +40 -0
  105. gitwise/share/schemas/v1/input/worktree.json +50 -0
  106. gitwise/show.py +118 -0
  107. gitwise/snapshot.py +110 -0
  108. gitwise/stash.py +188 -0
  109. gitwise/status.py +93 -0
  110. gitwise/suggest.py +148 -0
  111. gitwise/summarize.py +202 -0
  112. gitwise/sync.py +257 -0
  113. gitwise/tag.py +252 -0
  114. gitwise/undo.py +145 -0
  115. gitwise/update.py +42 -0
  116. gitwise/utils/__init__.py +1 -0
  117. gitwise/utils/git_output.py +51 -0
  118. gitwise/utils/json_envelope.py +58 -0
  119. gitwise/utils/parsing.py +34 -0
  120. gitwise/worktree.py +182 -0
  121. gitwise_cli-0.24.2.dist-info/METADATA +151 -0
  122. gitwise_cli-0.24.2.dist-info/RECORD +125 -0
  123. gitwise_cli-0.24.2.dist-info/WHEEL +4 -0
  124. gitwise_cli-0.24.2.dist-info/entry_points.txt +2 -0
  125. gitwise_cli-0.24.2.dist-info/licenses/LICENSE +21 -0
gitwise/worktree.py ADDED
@@ -0,0 +1,182 @@
1
+ """Worktree helpers for multi-agent Claude Code workflows."""
2
+
3
+ import re
4
+ from pathlib import Path
5
+
6
+ from .git import require_root, validate_branch_name
7
+ from .git import run as git_run
8
+ from .i18n import t
9
+ from .output import (
10
+ error,
11
+ info,
12
+ ok,
13
+ print_bracket,
14
+ print_dim,
15
+ print_header,
16
+ print_json,
17
+ )
18
+ from .utils.json_envelope import ok_envelope, passthrough_envelope
19
+
20
+
21
+ def _list_worktrees(cwd: Path) -> list[dict]:
22
+ r = git_run(["worktree", "list", "--porcelain"], cwd=cwd, check=False)
23
+ if r.returncode != 0:
24
+ return []
25
+ worktrees: list[dict] = []
26
+ current: dict = {}
27
+ for line in r.stdout.splitlines():
28
+ if line.startswith("worktree "):
29
+ if current:
30
+ worktrees.append(current)
31
+ current = {
32
+ "path": line.removeprefix("worktree "),
33
+ "branch": None,
34
+ "locked": False,
35
+ "prunable": False,
36
+ }
37
+ elif line.startswith("branch refs/heads/"):
38
+ current["branch"] = line.removeprefix("branch refs/heads/")
39
+ elif line == "locked":
40
+ current["locked"] = True
41
+ elif line.startswith("prunable"):
42
+ current["prunable"] = True
43
+ if current:
44
+ worktrees.append(current)
45
+ return worktrees
46
+
47
+
48
+ def _find_orphaned(cwd: Path) -> list[dict]:
49
+ """Worktrees registered in git but whose directory no longer exists."""
50
+ return [wt for wt in _list_worktrees(cwd) if not Path(wt["path"]).exists()]
51
+
52
+
53
+ def _worktree_create(branch: str, root: Path) -> tuple[int, str | None, dict]:
54
+ """Core worktree creation logic. Returns (rc, path, error_or_data)."""
55
+ if branch.startswith("/") or branch.startswith("../") or "/../" in branch:
56
+ return 1, None, {"ok": False, "error": t("invalid_branch_name", name=branch)}
57
+
58
+ safe_name = re.sub(r"^\.+", "", branch.replace("/", "-"))
59
+ wt_path = root.parent / (safe_name or "worktree")
60
+
61
+ if not validate_branch_name(branch):
62
+ return 1, None, {"ok": False, "error": t("invalid_branch_name", name=branch)}
63
+
64
+ if wt_path.exists():
65
+ return 1, None, {"ok": False, "error": t("directory_exists", path=str(wt_path))}
66
+
67
+ branch_exists = (
68
+ git_run(
69
+ ["rev-parse", "--verify", f"refs/heads/{branch}"],
70
+ cwd=root,
71
+ check=False,
72
+ ).returncode
73
+ == 0
74
+ )
75
+
76
+ if branch_exists:
77
+ r = git_run(["worktree", "add", "--", str(wt_path), branch], cwd=root, check=False)
78
+ else:
79
+ r = git_run(["worktree", "add", "-b", branch, "--", str(wt_path)], cwd=root, check=False)
80
+
81
+ if r.returncode != 0:
82
+ return 1, None, {"ok": False, "error": r.stderr.strip()}
83
+
84
+ return 0, str(wt_path), {"ok": True, "path": str(wt_path), "branch": branch}
85
+
86
+
87
+ def _worktree_new(branch: str, root: Path) -> int:
88
+ rc, path, data = _worktree_create(branch, root)
89
+ if rc != 0:
90
+ error(data.get("error", t("worktree_failed", error="unknown")))
91
+ return rc
92
+ ok(t("worktree_created", path=path or ""))
93
+ print_header(t("worktree_branch_msg", branch=branch))
94
+ print_dim(t("worktree_to_use", path=path or ""))
95
+ return 0
96
+
97
+
98
+ def _worktree_new_json(branch: str, root: Path) -> tuple[int, dict]:
99
+ rc, _path, data = _worktree_create(branch, root)
100
+ return rc, data
101
+
102
+
103
+ def _worktree_clean(cwd: Path, *, dry_run: bool = False, as_json: bool = False) -> int:
104
+ # git worktree prune removes stale admin files
105
+ prune_args = ["worktree", "prune"]
106
+ if dry_run:
107
+ prune_args.append("--dry-run")
108
+ prune_r = git_run(prune_args, cwd=cwd, check=False)
109
+
110
+ pruned_lines = prune_r.stdout.strip().splitlines() if prune_r.stdout.strip() else []
111
+
112
+ # Detect orphaned worktrees (missing directory)
113
+ orphaned = _find_orphaned(cwd)
114
+
115
+ if not orphaned and not pruned_lines:
116
+ if as_json:
117
+ print_json(ok_envelope(cleaned=0, orphaned=0, dry_run=dry_run))
118
+ else:
119
+ ok(t("no_orphaned_worktrees", suffix=" (dry-run)" if dry_run else ""))
120
+ return 0
121
+
122
+ if as_json:
123
+ print_json(
124
+ ok_envelope(
125
+ pruned=len(pruned_lines),
126
+ orphaned=len(orphaned),
127
+ orphaned_branches=[wt["branch"] for wt in orphaned],
128
+ dry_run=dry_run,
129
+ )
130
+ )
131
+ return 0
132
+
133
+ if pruned_lines:
134
+ print_bracket(t("worktrees_to_clean"))
135
+ for line in pruned_lines:
136
+ print_dim(f" {line}")
137
+
138
+ info(t("orphaned_worktrees", count=str(len(orphaned))))
139
+ for wt in orphaned:
140
+ print_bracket(wt["path"], t("branch_label", branch=wt["branch"] or t("unknown_branch")))
141
+
142
+ if dry_run:
143
+ print_dim(t("dry_run_no_clean"))
144
+ return 0
145
+
146
+ git_run(["worktree", "prune"], cwd=cwd, check=False)
147
+ ok(t("worktrees_cleaned", count=str(len(orphaned))))
148
+ return 0
149
+
150
+
151
+ def run_worktree(
152
+ action: str | None,
153
+ branch: str | None,
154
+ *,
155
+ dry_run: bool = False,
156
+ as_json: bool = False,
157
+ ) -> int:
158
+ root, err = require_root()
159
+ if err:
160
+ return err
161
+ if root is None:
162
+ return 1
163
+
164
+ if action == "new":
165
+ if not branch:
166
+ error(t("worktree_usage"))
167
+ return 1
168
+ if as_json:
169
+ rc, data = _worktree_new_json(branch, root)
170
+ if rc == 0:
171
+ print_json(ok_envelope(payload=data))
172
+ else:
173
+ print_json(passthrough_envelope(payload=data))
174
+ return rc
175
+ return _worktree_new(branch, root)
176
+
177
+ elif action == "clean":
178
+ return _worktree_clean(root, dry_run=dry_run, as_json=as_json)
179
+
180
+ else:
181
+ error(t("worktree_usage_full"))
182
+ return 1
@@ -0,0 +1,151 @@
1
+ Metadata-Version: 2.4
2
+ Name: gitwise-cli
3
+ Version: 0.24.2
4
+ Summary: Python CLI for optimizing git workflows and Claude Code integration
5
+ Author-email: Deiner <drzioner@gmail.com>
6
+ License-Expression: MIT
7
+ License-File: LICENSE
8
+ Keywords: automation,claude-code,cli,developer-tools,git
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Environment :: Console
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: MacOS
14
+ Classifier: Operating System :: Microsoft :: Windows
15
+ Classifier: Operating System :: POSIX :: Linux
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Software Development :: Version Control :: Git
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.10
25
+ Requires-Dist: rich-argparse<2,>=1.8.0
26
+ Requires-Dist: rich<15,>=13.0
27
+ Requires-Dist: shtab<2,>=1.8.0
28
+ Description-Content-Type: text/markdown
29
+
30
+ # gitwise
31
+
32
+ [English](README.md) | [Español](README.es.md)
33
+
34
+ Python CLI for optimized Git workflows and coding agents integration.
35
+
36
+ [![CI](https://github.com/drzioner/gitwise/actions/workflows/ci.yml/badge.svg)](https://github.com/drzioner/gitwise/actions/workflows/ci.yml)
37
+ [![Coverage](https://codecov.io/gh/drzioner/gitwise/graph/badge.svg)](https://codecov.io/gh/drzioner/gitwise)
38
+ [![Version](https://img.shields.io/github/v/release/drzioner/gitwise?display_name=tag)](https://github.com/drzioner/gitwise/releases)
39
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
40
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)
41
+ [![Docs: EN/ES](https://img.shields.io/badge/docs-EN%20%7C%20ES-0A7EA4)](docs/README.md)
42
+
43
+ gitwise addresses three daily pain points:
44
+
45
+ 1. AI context bloat from raw `git diff`
46
+ 2. Slow repositories without modern Git maintenance settings
47
+ 3. Unsafe commit flows that bypass GPG signing rules
48
+
49
+ ## Requirements
50
+
51
+ - Python >= 3.10
52
+ - git >= 2.29
53
+ - macOS or Linux
54
+
55
+ ## Install
56
+
57
+ ```bash
58
+ git clone https://github.com/drzioner/gitwise.git ~/.local/share/gitwise
59
+ bash ~/.local/share/gitwise/install.sh
60
+ ```
61
+
62
+ Update an existing installation:
63
+
64
+ ```bash
65
+ gitwise update
66
+ ```
67
+
68
+ ## Quick Start
69
+
70
+ ```bash
71
+ gitwise doctor
72
+ gitwise setup --dry-run
73
+ gitwise setup-agents --local --dry-run
74
+ gitwise summarize
75
+ ```
76
+
77
+ ## Most Used Commands
78
+
79
+ | Command | Purpose |
80
+ |---|---|
81
+ | `gitwise doctor` | Check Python, git, platform, optional tools |
82
+ | `gitwise setup` | Apply modern Git defaults safely |
83
+ | `gitwise setup-agents` | Install canonical agents layout + optional provider config |
84
+ | `gitwise audit` | Detect stale branches, graph/cache gaps, large blobs |
85
+ | `gitwise summarize` | Compact context for humans and AI |
86
+ | `gitwise diff` | Focused changed-file view (`--stat`, `--staged`, `--patch`) |
87
+ | `gitwise worktree` | Create and clean worktree-based branch setups |
88
+ | `gitwise status` | Enhanced status with staged/unstaged and ahead/behind |
89
+ | `gitwise commands --json` | List subcommands with aliases and metadata |
90
+ | `gitwise schema <command> --json` | Return versioned JSON Schema for command inputs |
91
+ | `gitwise completions <shell>` | Generate shell completion scripts (bash/zsh/fish) |
92
+ | `gitwise pr` | List/check/view PRs via GitHub CLI |
93
+
94
+ For all commands, examples, aliases, and JSON usage, see:
95
+
96
+ - [Command reference (English)](docs/reference/commands.md)
97
+ - [Referencia de comandos (Español)](docs/es/reference/commands.md)
98
+
99
+ ## Documentation
100
+
101
+ - [Documentation index (English)](docs/README.md)
102
+ - [Indice de documentacion (Español)](docs/es/README.md)
103
+ - [Contributing guide](CONTRIBUTING.md)
104
+ - [Guia de contribucion](CONTRIBUTING.es.md)
105
+ - [Security policy](SECURITY.md)
106
+ - [Politica de seguridad](SECURITY.es.md)
107
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
108
+ - [Código de conducta](CODE_OF_CONDUCT.es.md)
109
+ - [Git conventions](CONVENTIONS.md)
110
+ - [Convenciones Git](CONVENTIONS.es.md)
111
+
112
+ ## GPG and Safety Model
113
+
114
+ `setup` and `setup-agents` never modify `commit.gpgsign` or `user.signingkey`.
115
+
116
+ - Git layer: `setup` manages hooks safely (`--hooks-mode preserve|native|legacy|skip`) to validate signing key availability and conventional commits.
117
+ - Agent layer: deny-rules block `--no-gpg-sign`, `--no-verify`, and `-c commit.gpgsign=false`.
118
+
119
+ ## Environment Variables
120
+
121
+ | Variable | Description |
122
+ |---|---|
123
+ | `GITWISE_DEBUG=1` | Print each `git` subprocess command to stderr |
124
+ | `GITWISE_LOG_JSON=1` | Emit structured stderr logs as JSON lines |
125
+ | `GITWISE_JSON_PRETTY=1` | Pretty-print JSON output by default |
126
+ | `GITWISE_LANG=es` / `GITWISE_LANG=en` | Force output locale |
127
+ | `GITWISE_THEME=dark` / `GITWISE_THEME=light` / `GITWISE_THEME=auto` | Override color theme selection |
128
+ | `GITWISE_NO_COLOR=1` | Disable ANSI color output |
129
+ | `GITWISE_OUTPUT=agent` | Force machine-oriented output mode |
130
+ | `GITWISE_AGENT=1` | Alias to enable agent output mode |
131
+ | `GITWISE_GIT_TIMEOUT=<seconds>` | Override git subprocess timeout |
132
+ | `GITWISE_WIDTH=<columns>` | Override output width |
133
+ | `GITWISE_BIN_DIR` | Install location (default: `~/.local/bin`) |
134
+
135
+ ## Shell Completions
136
+
137
+ Generate completions script per shell:
138
+
139
+ ```bash
140
+ gitwise completions bash > ~/.local/share/bash-completion/completions/gitwise
141
+ gitwise completions zsh > ~/.zsh/completions/_gitwise
142
+ gitwise completions fish > ~/.config/fish/completions/gitwise.fish
143
+ ```
144
+
145
+ ## Demo
146
+
147
+ [![asciicast](https://asciinema.org/a/6tm4TnYMygEQT7ef.svg)](https://asciinema.org/a/6tm4TnYMygEQT7ef)
148
+
149
+ ## License
150
+
151
+ [MIT](LICENSE) - Deiner
@@ -0,0 +1,125 @@
1
+ gitwise/__init__.py,sha256=7L7HnP5tooOOvzruNgV0VpHfWdXuT88cUiYwqKeAX-8,267
2
+ gitwise/__main__.py,sha256=2GuRJ3LysuDIHrMYryXqJCKFe6EtxgmGwg7nXQEmGyw,2897
3
+ gitwise/_cli_completions.py,sha256=85-aF5I-SFFehbSDvrj22eFb3DYiHiNxpwr6GxW0B4Q,3091
4
+ gitwise/_cli_dispatch.py,sha256=x75GaHWYS_Hcem0XvKVL1cB-dS0Q_d6_u3k00KZk6GU,12150
5
+ gitwise/_cli_introspection.py,sha256=wlRMcRrGpitUGs5Sm1g-Eyf0avLeHpYhsBs48PCC2eI,9112
6
+ gitwise/_cli_parser.py,sha256=eN-LCksh-Fhp4UUyDTLaHJlC7YviFPcf4PamRQLTrdM,13702
7
+ gitwise/_cli_setup_agents.py,sha256=kgMnzIZ4t9r-YV3ANCAQhx8cKxdkK_pkopCtFq14ew8,13419
8
+ gitwise/_i18n_data.json,sha256=VJjWJXIdKi0PFJgBPTQ6WH0TEkOj8ums_Ea7ryLUVrM,60751
9
+ gitwise/_paths.py,sha256=VRkql9HQ5_OjwbpcX-18fwe_lMpuQffP4AiBV6suSFg,658
10
+ gitwise/_runtime_config.py,sha256=G3MqJwPoKWMak3dZkPHXqCeJPph2_9KBEomQ5YT2RHI,7176
11
+ gitwise/audit.py,sha256=mdovDdJ2PQ4dSTBBNujA0KrYzdqZaOQZt6GrbSW7vfA,10507
12
+ gitwise/branches.py,sha256=6YBZh3QkNPSxPEHoWxsnO0nR17zkD8y9LhPia60gBCk,5627
13
+ gitwise/clean.py,sha256=HdoMTzY2GHiSmyjQnwA6FmItfdCYA_7wfQ8WA1zuTHA,5637
14
+ gitwise/commit.py,sha256=9CUrogVrDtlTGXINIC67oab0Jyl_Bnn5X-KLbQ8c5uA,3926
15
+ gitwise/conflicts.py,sha256=LKnPLvhCdkaNv9QCBywpQTvInLboNsug3upi7XK-4uo,3620
16
+ gitwise/context.py,sha256=rxeZNso-BfqTpYTMomGzx2Q85nojJpoHfMk3CYmV2Vw,5454
17
+ gitwise/design.py,sha256=lr7R6PaUTOGNyY8bPHU-soG8FV0Zsf3cBkRZkyUWuBk,11156
18
+ gitwise/diff.py,sha256=jXG02qu4pNjae9scGnrs27cNpz1BEYB8hLTvrXuYxW4,8843
19
+ gitwise/doctor.py,sha256=z6EpxrBbdXtb1kMiCT1qPBiqwZCrmXjkik0gnUvHp-g,3848
20
+ gitwise/git.py,sha256=OY4FNeP-RZbC8vda-5d9zzvSKJBgM05uCJWnlrEzWIo,7259
21
+ gitwise/health.py,sha256=02PFdcP0Mb67M4fVdBI7rEYbknVMHKUdHisTQYjE-Uw,9562
22
+ gitwise/i18n.py,sha256=9tEI-xs6lUdku3NnqMGwtM7Ck6AlUSm7nrPd95yzXcg,2448
23
+ gitwise/log.py,sha256=gaPTDW12ZVDR1dPSdJbCx7d9hhyg5HPsUs85WC4ErHo,9149
24
+ gitwise/merge.py,sha256=DHqxqRmfToOu-j8qo2DP16xtist4e4-tJhozHalIQh0,5711
25
+ gitwise/optimize.py,sha256=Eqka6u2s-eSMKfkhWynAYlEwjjAL4rOwEHoPikxXew8,5955
26
+ gitwise/output.py,sha256=fuyu2L0K8-l6A4NHSZGt-SLS5Km6_bFKoUNM7V9T5m8,18668
27
+ gitwise/pick.py,sha256=2JNkcaL4D7z0dRfFyoDRQsa7_2vGtkBV22MMxHFIYG4,2985
28
+ gitwise/pr.py,sha256=Kbv8WhC3esRS3lI34HU9oFNbDqpTQNJn3Yl2CvAw8TM,16730
29
+ gitwise/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ gitwise/schema.py,sha256=IWPnx8Yv6ubt8E57AHz94hbKu0Jnwxm2zbPigxQZSbk,1418
31
+ gitwise/setup.py,sha256=CbOc8wyRytLQza-v1XkVr0bV29Es6UbDWrh2lQDUfSs,16625
32
+ gitwise/show.py,sha256=QY_4-sJjS_Q6rInzkalDXiZIHw2Sw7ir0zNQJ3S6RKs,3729
33
+ gitwise/snapshot.py,sha256=sXzWlkjjhuHokD3wNjNkC5QJus0kr09_qf4ftHVRJ_8,3415
34
+ gitwise/stash.py,sha256=dGyurYTVYB5I1KBLvVR-WAAHSD8oqyYp9HlchSPTvws,5325
35
+ gitwise/status.py,sha256=Th13IFi9z35muy8avzmbMb38ZaenVstKAoLpivXW3nk,2792
36
+ gitwise/suggest.py,sha256=5abkVvFnIISRToSt4jP6qHh6Fg8G_K3fo10G--EuRB0,4484
37
+ gitwise/summarize.py,sha256=qgR4teozwtS3AOI1rc24QUtkoeYJvXPagXlKBjtHtH8,6600
38
+ gitwise/sync.py,sha256=kpnToYTdwRvdh6NDx-ZCgpqU2Ayz7_uKnudJYAxIV_o,7420
39
+ gitwise/tag.py,sha256=af6hEFHlngWh5XA2Gxd0sIV_VVvO_NdJToWL3jJ1tgw,6397
40
+ gitwise/undo.py,sha256=MoeeFVETDJNtREx_tR6j8yWYnyYHH3n1EmVUuHjJNOg,3988
41
+ gitwise/update.py,sha256=4GuUFzNxQEsVqpKngJ59Md0zodTmDKHNl8xtNl6R4pE,1581
42
+ gitwise/worktree.py,sha256=yRUB5QUMpntarsqpXJJD0Zha701Vim4DC1daHZ_1h3I,5640
43
+ gitwise/setup_agents/__init__.py,sha256=P5IrjTxvT8kZUNNPqIyN9rMvlcNuyckFRyL02ZFuCic,1001
44
+ gitwise/setup_agents/exec.py,sha256=ziunMi10dicfpd7Tc5Npp-uWyKcLtq3RBwakchwdRLk,16205
45
+ gitwise/setup_agents/format.py,sha256=j1oLr6pw8_1H03sftFAl1UZP8mEUNRTuDE-iBKexLX8,4634
46
+ gitwise/setup_agents/plan.py,sha256=GKi1nijhZSG1y5ZgWTKtbDfwb73l8VijjP-mrfD_UGI,7971
47
+ gitwise/setup_agents/plan_gitfiles.py,sha256=M7Pqluyv-rI3sJ3F0oftADC3VKgyxttZCqlTYKRdYEE,5517
48
+ gitwise/setup_agents/plan_skills.py,sha256=HBtfBKitw30N6D_DQLjSfAPBybOjMxW-6NNoHHcMtHU,9549
49
+ gitwise/setup_agents/state.py,sha256=O1ENeoJRcb8za3HIa7DLmsRbah8_y1P_jEogCju9kso,4431
50
+ gitwise/setup_agents/types.py,sha256=rPUg5vu9XDA6Ldoc5uE_xv_6Pxl8ocHNitdobb8RnRk,1258
51
+ gitwise/setup_agents/adapters/__init__.py,sha256=PTC3aqJuXQBLjO4ExsfCJp-ZB1JdyT2HAR7DyP1jQ1Y,396
52
+ gitwise/setup_agents/adapters/aider.py,sha256=m3um9Mfz8gQ027LIl_hb-0ELTAjpCNbNxjUN_7hpKMc,132
53
+ gitwise/setup_agents/adapters/base.py,sha256=S4vAj2yDQ4tuMmQEK2L_TsMLtv4uAG2L38mrbMWlzhY,148
54
+ gitwise/setup_agents/adapters/codex.py,sha256=tlcrpO1mKx0T6YPafvw1vVRSdbXVLsrUYV9G-nuIur4,132
55
+ gitwise/setup_agents/adapters/continue_adapter.py,sha256=-peFhw1biwGBt5ib1ObRpnd8Gv0uOj1tFzZwpOawTrQ,146
56
+ gitwise/setup_agents/adapters/cursor.py,sha256=WI5RxwbBgwJDhKrC71jcEQgENY9j8sjyQbIwQ6hq52A,134
57
+ gitwise/setup_agents/adapters/opencode.py,sha256=FZfBO2hbChsxWfU9l4u8qpk9NIp-_G3NNXV83m04Ai4,138
58
+ gitwise/setup_agents/adapters/pi.py,sha256=2Zi6Oz0_OU7Hkr0_8-7UIaONBLfkF8CpGLjFDuBRlPw,126
59
+ gitwise/setup_agents/providers/__init__.py,sha256=CkGy-1SAkTTcSZ3WdBAqB2fD5w8lzLNPliVvnsKCtYo,3095
60
+ gitwise/setup_agents/providers/aider.py,sha256=QVGU99vYtaD0axixVIE_pntfaZGJ-hWGkIRPKp98hXs,357
61
+ gitwise/setup_agents/providers/base.py,sha256=1St3SzePio_DhUhDreAtptStZKrGujMwisrWo59Iwg4,2595
62
+ gitwise/setup_agents/providers/claude.py,sha256=3SHA1KJ30zA0BBsSwuhz2ErFsDQQlvDQR0EwikGqUMg,13724
63
+ gitwise/setup_agents/providers/codex.py,sha256=HAyFNy3MYfNr1a4ifBOIBoIIT8q-_O1XK3Yb4TgUvIk,327
64
+ gitwise/setup_agents/providers/continue_adapter.py,sha256=6eokEzOyeH_hzUQGQHrtrjA6covnoh0R5eVNvZHXhws,327
65
+ gitwise/setup_agents/providers/cursor.py,sha256=bz2_AboPIFc1gkvsEon6JP659ksgtFiWlzasxtEMFZg,353
66
+ gitwise/setup_agents/providers/opencode.py,sha256=ZfA18EP9Pcqn-wStBcBAmFwHcu7PO_mJ68ErztaKZXM,330
67
+ gitwise/setup_agents/providers/pi.py,sha256=-sj_Ufa25OhBbhZ6P3QlKBTLcIVRdKrgCZ6I8NYJ4OM,312
68
+ gitwise/utils/__init__.py,sha256=sW1hu0zxDj57_wkxhxLce2ZRGgHPtn3ey0IBeIw69Xg,42
69
+ gitwise/utils/git_output.py,sha256=KJOTuB_ce5fHWvkwRYoYQcXsCU2wKABt1YT2eP02cnc,1741
70
+ gitwise/utils/json_envelope.py,sha256=3lQF2_CxJtqYsarGwBa49d8ycF7-Eq2mvRZqe28yVz0,1320
71
+ gitwise/utils/parsing.py,sha256=2rm-b6Hd1QqA0WlPVzFburFIP8QWMPhhHpr0mhX59R0,939
72
+ gitwise/share/git-config-modern.txt,sha256=CwIu4xVZuGrujWioHq6yjmjfzPNFgSfWHXtL0EmREIs,875
73
+ gitwise/share/agents/skills/git-audit/SKILL.md,sha256=ItlLBBKUcug11dC2_ftRcp1eRSmNHaJpBtMGQXMksFA,1079
74
+ gitwise/share/agents/skills/git-clean/SKILL.md,sha256=vNxY4KJ6hYvSknTiZsTuJx8fZJFdhJ0VwXLJ49PU_6U,930
75
+ gitwise/share/agents/skills/git-optimize/SKILL.md,sha256=zuPfPlvu-_XJ2AbYho6vJh65gTMHo0jROQvbOhgtUiE,886
76
+ gitwise/share/aider/CONVENTIONS.md.template,sha256=yy34J9bvbo053SFYu3d0qqNwTet3VJNuExPTilwRBIQ,426
77
+ gitwise/share/aider/aider.conf.yml.template,sha256=S95dRmqO79JQyPVuB6FolmzjblkZZ_UBaTTamSD9sOY,95
78
+ gitwise/share/claude/CLAUDE.md.template,sha256=cEwWJ2UdtZ1BkrZB6s_BNzMsVAakoWPmmxpfsMJjlMs,524
79
+ gitwise/share/claude/settings.json.template,sha256=sFSKLz00oMi3k3WGMNvp5V_1abqUdpW7rHIhI0bsl4E,1262
80
+ gitwise/share/claude/rules/gitwise.md,sha256=bh_TVoh6kc7zHh4W58mrdAjyhH4VnNg-7Dk8FA_0vCY,557
81
+ gitwise/share/claude/skills/git-audit/SKILL.md,sha256=ItlLBBKUcug11dC2_ftRcp1eRSmNHaJpBtMGQXMksFA,1079
82
+ gitwise/share/claude/skills/git-clean/SKILL.md,sha256=vNxY4KJ6hYvSknTiZsTuJx8fZJFdhJ0VwXLJ49PU_6U,930
83
+ gitwise/share/claude/skills/git-optimize/SKILL.md,sha256=zuPfPlvu-_XJ2AbYho6vJh65gTMHo0jROQvbOhgtUiE,886
84
+ gitwise/share/codex/agents/gitwise.toml.template,sha256=whClCeFfF2hpfI-hr5DMoDMYWj1P-0nDVk9BKjTT5fw,643
85
+ gitwise/share/continue/rules/gitwise.md.template,sha256=qpHNHs-yYDx0TuO0ztQshcMIa_j_yBw1DBJZHW7acZs,619
86
+ gitwise/share/cursor/rules/gitwise.mdc.template,sha256=63l2MWe6bQXL253x09O7CgM7_Ws9JUgrUOtNB9Zhag4,641
87
+ gitwise/share/hooks/commit-msg,sha256=XYO1M8yr-dg6RIW1EsbURTPniz_P5NnDAy2g9iyVm4c,967
88
+ gitwise/share/hooks/pre-commit,sha256=ArwF0ObjO-yrHUS2E0SztH4ya1h9ERww2uQBvGjLXl8,826
89
+ gitwise/share/opencode/agents/gitwise.md.template,sha256=qpHNHs-yYDx0TuO0ztQshcMIa_j_yBw1DBJZHW7acZs,619
90
+ gitwise/share/pi/skills/gitwise.md.template,sha256=qpHNHs-yYDx0TuO0ztQshcMIa_j_yBw1DBJZHW7acZs,619
91
+ gitwise/share/schemas/v1/input/audit.json,sha256=VRggwo8B-qUPUdWnVlrnTKCRrHAFk6Z-ZbSZOA_tVas,907
92
+ gitwise/share/schemas/v1/input/branches.json,sha256=WhUMBibXZRghx7zOf0AEar2oUWavEg1dcQZlhujUsaU,1232
93
+ gitwise/share/schemas/v1/input/clean.json,sha256=PQX0I00cnbrrb7nGgYVF3Ls-Z0-1CGbU1IBcdQCUQ7Y,1119
94
+ gitwise/share/schemas/v1/input/commands.json,sha256=cY-gQK_k-KpYd1xSeo-9QaD-H5-MQ0CydMEht4QAWg0,843
95
+ gitwise/share/schemas/v1/input/commit.json,sha256=yuQljkmno1ZnLng7D3Pex03HFI2uJoEOw3uLbwIOeA4,1451
96
+ gitwise/share/schemas/v1/input/completions.json,sha256=94L2h3uFzuVn7H_U2tAkGM3Tua7suz31D6ijsQbhMx4,1207
97
+ gitwise/share/schemas/v1/input/conflicts.json,sha256=IBpEgZiTMefwAQRNfG7NPl6JviKVp1ndp69qC1oAyz0,1101
98
+ gitwise/share/schemas/v1/input/context.json,sha256=EmHb_SewW6xxDAZ_InJq76_lrAAD_HWlQmGC-V6Zq1o,841
99
+ gitwise/share/schemas/v1/input/diff.json,sha256=QAuq15XR3M3UE3dTfSSMd3Dvq2TYz79TdbGefRawlFM,1332
100
+ gitwise/share/schemas/v1/input/doctor.json,sha256=qkR-oY8jlNyur8USc62o8g8EmUFA0q3t5sVCSfHO8vE,839
101
+ gitwise/share/schemas/v1/input/health.json,sha256=ujZmveZ8un8DhgKGan79A_MOTxu0rjXXUmDlSAeU7oM,839
102
+ gitwise/share/schemas/v1/input/log.json,sha256=6sWO7QUKaSMEofNgZPDQZ_bv89SkNkExqkz9awO0hPU,1634
103
+ gitwise/share/schemas/v1/input/merge.json,sha256=K9vlpkfDeHTDIRBNbu8VPJQDD11ivS6JdveMKyVRWkE,1438
104
+ gitwise/share/schemas/v1/input/optimize.json,sha256=cymFwU8RuHbR54RUh40F__rkHupqYLJb60L6J5hCzNg,983
105
+ gitwise/share/schemas/v1/input/pick.json,sha256=JMuEkIj64ntvXzoXYAh8PA3w6dgO-p0sOS7P0xEFFkE,1472
106
+ gitwise/share/schemas/v1/input/pr.json,sha256=FG_KrZj09f9bQMQOxfnR7_P4IOlIY-jZkbX4_unweOE,1152
107
+ gitwise/share/schemas/v1/input/schema.json,sha256=vARP4FbVhP43V99H5FdRH1KENlOY8JYdN8G-nQNJJ8k,1094
108
+ gitwise/share/schemas/v1/input/setup-agents.json,sha256=kdQfy6PBOv12t03fshHRz2pNjk_0jf3Mff-RO47LMuQ,2921
109
+ gitwise/share/schemas/v1/input/setup.json,sha256=0vVCWAIsMTkReJZNJT5vWpS3rS65pItAwcubgdb20Xo,1236
110
+ gitwise/share/schemas/v1/input/show.json,sha256=mnoU5_6jaULPnVNPL4Eu28uO3dC1aZIHLAbsknB6Qxw,1061
111
+ gitwise/share/schemas/v1/input/snapshot.json,sha256=Pt5oIEwRHEYaM0cUcFC1JAcUNPCjeUPlsVuYoE2S6lg,843
112
+ gitwise/share/schemas/v1/input/stash.json,sha256=ZdCRx2ZDqUrWnNkYSQp7alwvdWklNTGtwqdrwkv1Tbc,1493
113
+ gitwise/share/schemas/v1/input/status.json,sha256=TBeVq8zUl99OkOntjSLAz2K3CuFpBdgxraXhTZGwDAU,839
114
+ gitwise/share/schemas/v1/input/suggest.json,sha256=WhahOh7tJQxmsr596Y6Z3HYfk7rhRQUQjA3Y8OtuxEo,841
115
+ gitwise/share/schemas/v1/input/summarize.json,sha256=HsCLmZ8yBXYQeyqGdWk0JMIqaZt9UBP1WhiVgCegObk,987
116
+ gitwise/share/schemas/v1/input/sync.json,sha256=j96-lgPR29-7a9mpOAFE47tZMJJ_94PKJ0r23tmpTvs,1288
117
+ gitwise/share/schemas/v1/input/tag.json,sha256=KmrCyqcJsJU_uDhNba_KYpAkYg7vIlQacnqaXUHJlZo,1577
118
+ gitwise/share/schemas/v1/input/undo.json,sha256=PRab96r2e1iU2FN8yBV_njgly_-7lm7Vy4KcMh3NMQ4,1406
119
+ gitwise/share/schemas/v1/input/update.json,sha256=OmuSgSp_USg2f45mywnSpxUB0NMSn_lQDLC4yDzCopo,911
120
+ gitwise/share/schemas/v1/input/worktree.json,sha256=rKKOtWyAgARIa-b-Raw7ZNPqKkO7DlPd7PE1c0flRDs,1063
121
+ gitwise_cli-0.24.2.dist-info/METADATA,sha256=_HjfNbOXGsycMAlZb2DjjA7UHn05PMViWIxcf3ZG5lI,5714
122
+ gitwise_cli-0.24.2.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
123
+ gitwise_cli-0.24.2.dist-info/entry_points.txt,sha256=rGwxSDmUHtzlY6yp7KeMJhRARijXkSE6OKuOJ8PF51E,50
124
+ gitwise_cli-0.24.2.dist-info/licenses/LICENSE,sha256=vfJO-ThMtWhZOD9MsArN2yul1EJmxAXxfeGHKnEk9QQ,1063
125
+ gitwise_cli-0.24.2.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.30.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ gitwise = gitwise.__main__:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Deiner
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.