chucky 1.0.0__tar.gz

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 (137) hide show
  1. chucky-1.0.0/.chuckignore +20 -0
  2. chucky-1.0.0/.claude/settings.local.json +29 -0
  3. chucky-1.0.0/.github/ISSUE_TEMPLATE/bug_report.md +19 -0
  4. chucky-1.0.0/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  5. chucky-1.0.0/.github/workflows/ci.yml +33 -0
  6. chucky-1.0.0/.github/workflows/publish.yml +28 -0
  7. chucky-1.0.0/.gitignore +32 -0
  8. chucky-1.0.0/.st8/MISSION.md +42 -0
  9. chucky-1.0.0/.st8/REPORT.md +45 -0
  10. chucky-1.0.0/.st8/config.json +24 -0
  11. chucky-1.0.0/.st8/deploy.json +180 -0
  12. chucky-1.0.0/.st8/dev/hashes.json +60 -0
  13. chucky-1.0.0/.st8/history.json +20 -0
  14. chucky-1.0.0/.st8/prod/.chuckignore +20 -0
  15. chucky-1.0.0/.st8/prod/.claude/settings.local.json +29 -0
  16. chucky-1.0.0/.st8/prod/.github/ISSUE_TEMPLATE/bug_report.md +19 -0
  17. chucky-1.0.0/.st8/prod/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  18. chucky-1.0.0/.st8/prod/.github/workflows/ci.yml +33 -0
  19. chucky-1.0.0/.st8/prod/.github/workflows/publish.yml +28 -0
  20. chucky-1.0.0/.st8/prod/.gitignore +32 -0
  21. chucky-1.0.0/.st8/prod/CHANGELOG.md +20 -0
  22. chucky-1.0.0/.st8/prod/CONTRIBUTING.md +29 -0
  23. chucky-1.0.0/.st8/prod/LICENSE +21 -0
  24. chucky-1.0.0/.st8/prod/MANIFEST.in +3 -0
  25. chucky-1.0.0/.st8/prod/README.md +510 -0
  26. chucky-1.0.0/.st8/prod/chuck_aider.py +165 -0
  27. chucky-1.0.0/.st8/prod/chuck_aider_init.py +137 -0
  28. chucky-1.0.0/.st8/prod/examples/basic_usage.py +78 -0
  29. chucky-1.0.0/.st8/prod/examples/ci_pipeline.py +121 -0
  30. chucky-1.0.0/.st8/prod/examples/claude_code.py +74 -0
  31. chucky-1.0.0/.st8/prod/examples/multi_context.py +79 -0
  32. chucky-1.0.0/.st8/prod/pyproject.toml +64 -0
  33. chucky-1.0.0/.st8/prod/src/chuck/__init__.py +49 -0
  34. chucky-1.0.0/.st8/prod/src/chuck/chunker.py +206 -0
  35. chucky-1.0.0/.st8/prod/src/chuck/cli.py +301 -0
  36. chucky-1.0.0/.st8/prod/src/chuck/context.py +79 -0
  37. chucky-1.0.0/.st8/prod/src/chuck/core.py +424 -0
  38. chucky-1.0.0/.st8/prod/src/chuck/digest.py +316 -0
  39. chucky-1.0.0/.st8/prod/src/chuck/hasher.py +23 -0
  40. chucky-1.0.0/.st8/prod/src/chuck/ignore.py +125 -0
  41. chucky-1.0.0/.st8/prod/src/chuck/py.typed +0 -0
  42. chucky-1.0.0/.st8/prod/src/chuck/snapshot.py +235 -0
  43. chucky-1.0.0/.st8/prod/src/chuck/tokens.py +47 -0
  44. chucky-1.0.0/.st8/prod/tests/__init__.py +0 -0
  45. chucky-1.0.0/.st8/prod/tests/fixtures/sample_project/README.md +8 -0
  46. chucky-1.0.0/.st8/prod/tests/fixtures/sample_project/src/main.py +13 -0
  47. chucky-1.0.0/.st8/prod/tests/fixtures/sample_project/src/utils.py +9 -0
  48. chucky-1.0.0/.st8/prod/tests/test_chunker.py +75 -0
  49. chucky-1.0.0/.st8/prod/tests/test_context.py +79 -0
  50. chucky-1.0.0/.st8/prod/tests/test_context_selection.py +184 -0
  51. chucky-1.0.0/.st8/prod/tests/test_core.py +402 -0
  52. chucky-1.0.0/.st8/prod/tests/test_digest.py +104 -0
  53. chucky-1.0.0/.st8/prod/tests/test_ignore.py +80 -0
  54. chucky-1.0.0/.st8/prod/tests/test_launcher_flags.py +184 -0
  55. chucky-1.0.0/.st8/prod/tests/test_snapshot.py +148 -0
  56. chucky-1.0.0/.st8/prod/tests/test_tokens.py +60 -0
  57. chucky-1.0.0/.st8/stage/.chuckignore +20 -0
  58. chucky-1.0.0/.st8/stage/.claude/settings.local.json +29 -0
  59. chucky-1.0.0/.st8/stage/.github/ISSUE_TEMPLATE/bug_report.md +19 -0
  60. chucky-1.0.0/.st8/stage/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  61. chucky-1.0.0/.st8/stage/.github/workflows/ci.yml +33 -0
  62. chucky-1.0.0/.st8/stage/.github/workflows/publish.yml +28 -0
  63. chucky-1.0.0/.st8/stage/.gitignore +32 -0
  64. chucky-1.0.0/.st8/stage/CHANGELOG.md +20 -0
  65. chucky-1.0.0/.st8/stage/CONTRIBUTING.md +29 -0
  66. chucky-1.0.0/.st8/stage/LICENSE +21 -0
  67. chucky-1.0.0/.st8/stage/MANIFEST.in +3 -0
  68. chucky-1.0.0/.st8/stage/README.md +510 -0
  69. chucky-1.0.0/.st8/stage/chuck_aider.py +165 -0
  70. chucky-1.0.0/.st8/stage/chuck_aider_init.py +137 -0
  71. chucky-1.0.0/.st8/stage/examples/basic_usage.py +78 -0
  72. chucky-1.0.0/.st8/stage/examples/ci_pipeline.py +121 -0
  73. chucky-1.0.0/.st8/stage/examples/claude_code.py +74 -0
  74. chucky-1.0.0/.st8/stage/examples/multi_context.py +79 -0
  75. chucky-1.0.0/.st8/stage/pyproject.toml +64 -0
  76. chucky-1.0.0/.st8/stage/src/chuck/__init__.py +49 -0
  77. chucky-1.0.0/.st8/stage/src/chuck/chunker.py +206 -0
  78. chucky-1.0.0/.st8/stage/src/chuck/cli.py +301 -0
  79. chucky-1.0.0/.st8/stage/src/chuck/context.py +79 -0
  80. chucky-1.0.0/.st8/stage/src/chuck/core.py +424 -0
  81. chucky-1.0.0/.st8/stage/src/chuck/digest.py +316 -0
  82. chucky-1.0.0/.st8/stage/src/chuck/hasher.py +23 -0
  83. chucky-1.0.0/.st8/stage/src/chuck/ignore.py +125 -0
  84. chucky-1.0.0/.st8/stage/src/chuck/py.typed +0 -0
  85. chucky-1.0.0/.st8/stage/src/chuck/snapshot.py +235 -0
  86. chucky-1.0.0/.st8/stage/src/chuck/tokens.py +47 -0
  87. chucky-1.0.0/.st8/stage/tests/__init__.py +0 -0
  88. chucky-1.0.0/.st8/stage/tests/fixtures/sample_project/README.md +8 -0
  89. chucky-1.0.0/.st8/stage/tests/fixtures/sample_project/src/main.py +13 -0
  90. chucky-1.0.0/.st8/stage/tests/fixtures/sample_project/src/utils.py +9 -0
  91. chucky-1.0.0/.st8/stage/tests/test_chunker.py +75 -0
  92. chucky-1.0.0/.st8/stage/tests/test_context.py +79 -0
  93. chucky-1.0.0/.st8/stage/tests/test_context_selection.py +184 -0
  94. chucky-1.0.0/.st8/stage/tests/test_core.py +402 -0
  95. chucky-1.0.0/.st8/stage/tests/test_digest.py +104 -0
  96. chucky-1.0.0/.st8/stage/tests/test_ignore.py +80 -0
  97. chucky-1.0.0/.st8/stage/tests/test_launcher_flags.py +184 -0
  98. chucky-1.0.0/.st8/stage/tests/test_snapshot.py +148 -0
  99. chucky-1.0.0/.st8/stage/tests/test_tokens.py +60 -0
  100. chucky-1.0.0/.st8/state.json +7 -0
  101. chucky-1.0.0/CHANGELOG.md +20 -0
  102. chucky-1.0.0/CONTRIBUTING.md +29 -0
  103. chucky-1.0.0/LICENSE +21 -0
  104. chucky-1.0.0/MANIFEST.in +3 -0
  105. chucky-1.0.0/PKG-INFO +545 -0
  106. chucky-1.0.0/README.md +510 -0
  107. chucky-1.0.0/chuck_aider.py +165 -0
  108. chucky-1.0.0/chuck_aider_init.py +137 -0
  109. chucky-1.0.0/examples/basic_usage.py +78 -0
  110. chucky-1.0.0/examples/ci_pipeline.py +121 -0
  111. chucky-1.0.0/examples/claude_code.py +74 -0
  112. chucky-1.0.0/examples/multi_context.py +79 -0
  113. chucky-1.0.0/pyproject.toml +64 -0
  114. chucky-1.0.0/src/chuck/__init__.py +49 -0
  115. chucky-1.0.0/src/chuck/chunker.py +206 -0
  116. chucky-1.0.0/src/chuck/cli.py +301 -0
  117. chucky-1.0.0/src/chuck/context.py +79 -0
  118. chucky-1.0.0/src/chuck/core.py +424 -0
  119. chucky-1.0.0/src/chuck/digest.py +316 -0
  120. chucky-1.0.0/src/chuck/hasher.py +23 -0
  121. chucky-1.0.0/src/chuck/ignore.py +125 -0
  122. chucky-1.0.0/src/chuck/py.typed +0 -0
  123. chucky-1.0.0/src/chuck/snapshot.py +235 -0
  124. chucky-1.0.0/src/chuck/tokens.py +47 -0
  125. chucky-1.0.0/tests/__init__.py +0 -0
  126. chucky-1.0.0/tests/fixtures/sample_project/README.md +8 -0
  127. chucky-1.0.0/tests/fixtures/sample_project/src/main.py +13 -0
  128. chucky-1.0.0/tests/fixtures/sample_project/src/utils.py +9 -0
  129. chucky-1.0.0/tests/test_chunker.py +75 -0
  130. chucky-1.0.0/tests/test_context.py +79 -0
  131. chucky-1.0.0/tests/test_context_selection.py +184 -0
  132. chucky-1.0.0/tests/test_core.py +402 -0
  133. chucky-1.0.0/tests/test_digest.py +104 -0
  134. chucky-1.0.0/tests/test_ignore.py +80 -0
  135. chucky-1.0.0/tests/test_launcher_flags.py +184 -0
  136. chucky-1.0.0/tests/test_snapshot.py +148 -0
  137. chucky-1.0.0/tests/test_tokens.py +60 -0
@@ -0,0 +1,20 @@
1
+ # Chuck's own ignore file (dogfooding)
2
+ .git/
3
+ .chuck/
4
+ __pycache__/
5
+ *.pyc
6
+ *.pyo
7
+ .env
8
+ .env.*
9
+ *.egg-info/
10
+ dist/
11
+ build/
12
+ .tox/
13
+ .venv/
14
+ venv/
15
+ .pytest_cache/
16
+ .coverage
17
+ htmlcov/
18
+ *.so
19
+ *.dylib
20
+ .DS_Store
@@ -0,0 +1,29 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(python:*)",
5
+ "Bash(pip:*)",
6
+ "Bash(st8:*)",
7
+ "Bash(tree:*)",
8
+ "Bash(echo:*)",
9
+ "Bash(pytest:*)",
10
+ "Bash(npm:*)",
11
+ "Bash(node:*)",
12
+ "Bash(git:*)",
13
+ "Bash(ls:*)",
14
+ "Bash(mkdir:*)",
15
+ "Bash(cp:*)",
16
+ "Bash(mv:*)",
17
+ "Bash(rm:*)",
18
+ "Bash(cat:*)",
19
+ "Bash(wc:*)",
20
+ "Read",
21
+ "Edit",
22
+ "Write",
23
+ "Glob",
24
+ "Grep",
25
+ "mcp__ide__getDiagnostics",
26
+ "Bash(chuck:*)"
27
+ ]
28
+ }
29
+ }
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Something isn't working correctly
4
+ labels: bug
5
+ ---
6
+
7
+ **Describe the bug**
8
+ A clear description of what the bug is.
9
+
10
+ **To reproduce**
11
+ Steps to reproduce the behavior.
12
+
13
+ **Expected behavior**
14
+ What you expected to happen.
15
+
16
+ **Environment**
17
+ - OS:
18
+ - Python version:
19
+ - Chuck version:
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest an idea for Chuck
4
+ labels: enhancement
5
+ ---
6
+
7
+ **Problem**
8
+ What problem does this solve?
9
+
10
+ **Proposed solution**
11
+ Describe what you'd like to happen.
12
+
13
+ **Alternatives considered**
14
+ Any alternative solutions you've thought about.
@@ -0,0 +1,33 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: ${{ matrix.python-version }}
21
+ - run: pip install -e ".[dev]"
22
+ - run: pytest --cov=chuck --cov-report=term-missing
23
+ - run: ruff check .
24
+
25
+ lint:
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ - uses: actions/setup-python@v5
30
+ with:
31
+ python-version: "3.12"
32
+ - run: pip install ruff
33
+ - run: ruff check .
@@ -0,0 +1,28 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ id-token: write
9
+
10
+ jobs:
11
+ publish:
12
+ runs-on: ubuntu-latest
13
+ environment: pypi
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.12"
20
+
21
+ - name: Install build tools
22
+ run: pip install build
23
+
24
+ - name: Build package
25
+ run: python -m build
26
+
27
+ - name: Publish to PyPI
28
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,32 @@
1
+ # Python
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ *.egg
9
+ .eggs/
10
+
11
+ # Virtual environments
12
+ .venv/
13
+ venv/
14
+ env/
15
+
16
+ # Testing
17
+ .pytest_cache/
18
+ .coverage
19
+ htmlcov/
20
+
21
+ # IDE
22
+ .vscode/
23
+ .idea/
24
+ *.swp
25
+ *.swo
26
+
27
+ # OS
28
+ .DS_Store
29
+ Thumbs.db
30
+
31
+ # Chuck's own state (don't ship in the package)
32
+ .chuck/
@@ -0,0 +1,42 @@
1
+ # Mission
2
+
3
+ ## Objective
4
+ <!-- What do you want to accomplish? Be specific and measurable. -->
5
+
6
+
7
+ ## Context
8
+ <!-- What's the current state? What problem are you solving? -->
9
+
10
+
11
+ ## Requirements
12
+ <!-- List specific deliverables with checkboxes. -->
13
+ - [ ]
14
+
15
+
16
+ ## Constraints
17
+ <!-- Technical limits, dependencies, what must NOT change. -->
18
+
19
+
20
+ ## Success Criteria
21
+ <!-- How will you verify this is done correctly? -->
22
+
23
+
24
+ ## Files to Focus On
25
+ <!-- Which files should the agent read or modify? -->
26
+
27
+
28
+ ## Out of Scope
29
+ <!-- What should NOT be changed or added? -->
30
+
31
+
32
+ ## Additional Context
33
+ <!-- Links, examples, related issues. Delete if not needed. -->
34
+
35
+
36
+ ---
37
+
38
+ ## Mission Completion
39
+ <!--
40
+ When running via `st8 mission`, archiving is AUTOMATIC.
41
+ Your only task is to update .st8/REPORT.md with your findings.
42
+ -->
@@ -0,0 +1,45 @@
1
+ # Mission Report
2
+
3
+ ## Status
4
+ <!-- SUCCESS | PARTIAL | BLOCKED | FAILED -->
5
+
6
+
7
+ ## Summary
8
+ <!-- 1-2 sentence overview of what was accomplished -->
9
+
10
+
11
+ ## Changes Made
12
+ <!-- List of files modified and what was changed -->
13
+
14
+
15
+ ## Challenges Encountered
16
+ <!-- What was difficult? What slowed progress? -->
17
+
18
+
19
+ ## Decisions Made
20
+ <!-- Key decisions and rationale -->
21
+
22
+
23
+ ## Testing Done
24
+ <!-- How was the work validated? -->
25
+
26
+
27
+ ## Known Issues
28
+ <!-- Any remaining problems or edge cases -->
29
+
30
+
31
+ ## Improvement Opportunities
32
+ <!-- Suggestions for future enhancements -->
33
+
34
+
35
+ ## Ideas for Future
36
+ <!-- Related features or refactors worth considering -->
37
+
38
+
39
+ ## Mission Feedback
40
+ <!-- How could the MISSION.md have been clearer or more helpful? -->
41
+
42
+
43
+ ---
44
+ *Session Hash: <!-- Will be populated on archive -->*
45
+ *Completed: YYYY-MM-DD HH:MM*
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "chuck",
3
+ "current_version": "1.0.0",
4
+ "thresholds": {
5
+ "patch": 0.05,
6
+ "minor": 0.25
7
+ },
8
+ "weighted_paths": {
9
+ "src/": 1.0,
10
+ "lib/": 1.0,
11
+ "tests/": 0.3,
12
+ "docs/": 0.1,
13
+ "config/": 0.5
14
+ },
15
+ "exclude": [
16
+ "node_modules/",
17
+ ".st8/",
18
+ "build/",
19
+ "dist/",
20
+ ".git/",
21
+ "__pycache__/",
22
+ "*.pyc"
23
+ ]
24
+ }
@@ -0,0 +1,180 @@
1
+ {
2
+ "environments": {
3
+ "dev": {
4
+ "enabled": false,
5
+ "auto_deploy": false,
6
+ "protocol": "ssh",
7
+ "host": "",
8
+ "port": 22,
9
+ "username": "",
10
+ "password": "",
11
+ "remote_path": "",
12
+ "ignore": [
13
+ ".DS_Store",
14
+ ".st8",
15
+ ".git",
16
+ ".gitignore",
17
+ ".vscode",
18
+ ".idea",
19
+ ".claude",
20
+ ".tracy",
21
+ "LICENSE",
22
+ "README.md",
23
+ "CLAUDE.md",
24
+ "MISSION.md",
25
+ "REPORT.md",
26
+ "*.jpg",
27
+ "*.jpeg",
28
+ "*.png",
29
+ "*.gif",
30
+ "*.svg",
31
+ "*.webp",
32
+ "*.ico",
33
+ "*.mp4",
34
+ "*.mov",
35
+ "*.avi",
36
+ "*.wmv",
37
+ "*.flv",
38
+ "*.mkv",
39
+ "*.mp3",
40
+ "*.wav",
41
+ "*.ogg",
42
+ "*.pdf",
43
+ "*.zip",
44
+ "*.tar",
45
+ "*.gz",
46
+ "*.rar",
47
+ "*.7z"
48
+ ]
49
+ },
50
+ "stg": {
51
+ "enabled": false,
52
+ "auto_deploy": false,
53
+ "protocol": "ssh",
54
+ "host": "",
55
+ "port": 22,
56
+ "username": "",
57
+ "password": "",
58
+ "remote_path": "",
59
+ "ignore": [
60
+ ".DS_Store",
61
+ ".st8",
62
+ ".git",
63
+ ".gitignore",
64
+ ".vscode",
65
+ ".idea",
66
+ ".claude",
67
+ ".tracy",
68
+ "LICENSE",
69
+ "README.md",
70
+ "CLAUDE.md",
71
+ "MISSION.md",
72
+ "REPORT.md",
73
+ "*.jpg",
74
+ "*.jpeg",
75
+ "*.png",
76
+ "*.gif",
77
+ "*.svg",
78
+ "*.webp",
79
+ "*.ico",
80
+ "*.mp4",
81
+ "*.mov",
82
+ "*.avi",
83
+ "*.wmv",
84
+ "*.flv",
85
+ "*.mkv",
86
+ "*.mp3",
87
+ "*.wav",
88
+ "*.ogg",
89
+ "*.pdf",
90
+ "*.zip",
91
+ "*.tar",
92
+ "*.gz",
93
+ "*.rar",
94
+ "*.7z"
95
+ ]
96
+ },
97
+ "prod": {
98
+ "enabled": false,
99
+ "auto_deploy": false,
100
+ "protocol": "ssh",
101
+ "host": "",
102
+ "port": 22,
103
+ "username": "",
104
+ "password": "",
105
+ "remote_path": "",
106
+ "ignore": [
107
+ ".DS_Store",
108
+ ".st8",
109
+ ".git",
110
+ ".gitignore",
111
+ ".vscode",
112
+ ".idea",
113
+ ".claude",
114
+ ".tracy",
115
+ "LICENSE",
116
+ "README.md",
117
+ "CLAUDE.md",
118
+ "MISSION.md",
119
+ "REPORT.md",
120
+ "*.jpg",
121
+ "*.jpeg",
122
+ "*.png",
123
+ "*.gif",
124
+ "*.svg",
125
+ "*.webp",
126
+ "*.ico",
127
+ "*.mp4",
128
+ "*.mov",
129
+ "*.avi",
130
+ "*.wmv",
131
+ "*.flv",
132
+ "*.mkv",
133
+ "*.mp3",
134
+ "*.wav",
135
+ "*.ogg",
136
+ "*.pdf",
137
+ "*.zip",
138
+ "*.tar",
139
+ "*.gz",
140
+ "*.rar",
141
+ "*.7z"
142
+ ]
143
+ }
144
+ },
145
+ "auth": {
146
+ "method": "key",
147
+ "key_path": "~/.ssh/id_rsa"
148
+ },
149
+ "options": {
150
+ "backup_before_deploy": true,
151
+ "post_deploy_command": ""
152
+ },
153
+ "git": {
154
+ "enabled": true,
155
+ "stage_branch": "stage",
156
+ "prod_branch": "main",
157
+ "auto_push": true
158
+ },
159
+ "ai": {
160
+ "simple": {
161
+ "provider": "ollama",
162
+ "model": "llama3.2",
163
+ "endpoint": "http://localhost:11434"
164
+ },
165
+ "agent": {
166
+ "provider": "claude-code",
167
+ "command": "claude",
168
+ "fallback_model": "claude-sonnet-4-5-20250929",
169
+ "endpoint": "http://localhost:11434"
170
+ },
171
+ "author": {
172
+ "provider": "anthropic",
173
+ "model": "claude-sonnet-4-5-20250929",
174
+ "max_tokens": 4096
175
+ }
176
+ },
177
+ "mission": {
178
+ "auto_promote": false
179
+ }
180
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ ".DS_Store": "481fac4a39535d8066e19b3aa4a6134f1decb19060ae0b15ff386f0c4f72011a",
3
+ "LICENSE": "02909ac37eaf3f7789aeecc3b22c2141e843a16ef44bef31ed69005ddf126561",
4
+ "CHANGELOG.md": "fc128c2f56d4ef9351d97ec684afb8abd2df4586627e6652f27cc200697657dc",
5
+ "pyproject.toml": "869207e3497a330f4f95f80ab7fc52b74609c53c8fb3a898f9fd67601f04da1f",
6
+ "MANIFEST.in": "e8639fe98578d680ddc31a93c05a87eb9f81fb79ff5cda9f92fd6f136d4e034a",
7
+ ".chuckignore": "9e3a2911c67f3be6ca9ce4b42aad70e275a6e6198e7f80fc25860edd43b5292f",
8
+ "README.md": "00572e90c656acc5e678ebf25d5bfe1e62b3b72c444f04c754f8c02094ab6269",
9
+ ".gitignore": "4a491cc4114b618459f634d0614a5f726b2091d254399f5192edddaef8809645",
10
+ "CONTRIBUTING.md": "e88db1a133e58901c727ca02d9158384ca3bd9a9bb1f3f20cbbb68a01ba6e924",
11
+ "chuck_aider.py": "0f2ca141d6dcf24702803a92443647553825134d953fabbff04ad328facb5661",
12
+ "chuck_aider_init.py": "53dd3d6306a2419a76ee7fdd3b72b3e6a2588e5616e5c0308af4b8f8a8e61636",
13
+ ".pytest_cache/CACHEDIR.TAG": "37dc88ef9a0abeddbe81053a6dd8fdfb13afb613045ea1eb4a5c815a74a3bde4",
14
+ ".pytest_cache/README.md": "73fd6fccdd802c419a6b2d983d6c3173b7da97558ac4b589edec2dfe443db9ad",
15
+ ".pytest_cache/.gitignore": "3ed731b65d06150c138e2dadb0be0697550888a6b47eb8c45ecc9adba8b8e9bd",
16
+ ".pytest_cache/v/cache/nodeids": "3a630b2dc51a59eed61078434e28bff8e235c5c22965926574fcfacaa85234b5",
17
+ ".pytest_cache/v/cache/lastfailed": "b495f8a4853760325f8ac97caff4fe809f7e11e1f7314b7bada2678fb22f4b81",
18
+ ".pytest_cache/v/cache/stepwise": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
19
+ "tests/test_context_selection.py": "7ae9ac96257e511d697e420e81337ab3764c7321fb3ff1c75cdd1e7e6f042252",
20
+ "tests/test_ignore.py": "eefed1465485bd10a91a11df4b42276a55aaa904532c4e3b822cd7af56bc9f29",
21
+ "tests/test_chunker.py": "b0f74ae893f7f081d464b1a32e9c7434db17da71786d7e20b603a5de4ce8e112",
22
+ "tests/.DS_Store": "f18d05cdf6ea18701bbe998b5f40fde5ab739244aa4b2fc471b1c901e043a96b",
23
+ "tests/test_launcher_flags.py": "9c07dc8fb9febcd23a73ea115ffca39d8ec8999ac989c77b6f230c0aced3474f",
24
+ "tests/test_core.py": "3e6d203ccb98a10796da52211a76639fe8c1d9e4a417d6ce299d02b96bca54fa",
25
+ "tests/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
26
+ "tests/test_digest.py": "eaf481e331ff8e4116b739f0f491278591da45f9b48542a9549201f53d863c33",
27
+ "tests/test_snapshot.py": "2b6d1fbfce1ac27953db534d37cdbe5e6d488383ee0025b2f37f86545a900a01",
28
+ "tests/test_context.py": "68ea839eab7f5d7606e24d595bd9505618f2f760a798e214d693f876d9d6c5e7",
29
+ "tests/test_tokens.py": "e9c214142bb977bc8fa02ed183a3e2216b2c82d10f3629818f661e289fe1d799",
30
+ "tests/fixtures/sample_project/README.md": "864b315d33397418844bbe905100a65da85e309ef95df3df85d8d80e6564fcd1",
31
+ "tests/fixtures/sample_project/src/utils.py": "d2e832f714c101435d63654ea1bcb9675236e441118ef47285470bcebbe0603c",
32
+ "tests/fixtures/sample_project/src/main.py": "06da35793173494fd8b4b3dd2649435c0a00844245e75cbd51b5254f5b80e4a2",
33
+ ".claude/settings.local.json": "94917ef87f308fe85d3a6b66dacc1785f98b6b1b957e77c25a9afb1822e4be06",
34
+ "examples/basic_usage.py": "f4b893368cbe23f880b27e3e1015815d8cc5262b148891349d7f775116e24d9a",
35
+ "examples/ci_pipeline.py": "fb7b75be896d905c16bef86843a9b7e2594def2509b1d61c4fde5060aa090f01",
36
+ "examples/multi_context.py": "c3e6c04f36ed8f77b0dfdc8429fb4b74ea56551cfb0c23944dd61f8b74f04568",
37
+ "examples/claude_code.py": "09ed84e26598228824317774d58b72cd950741eca24f8c2b121887627d532b6c",
38
+ ".github/workflows/publish.yml": "f248eb319aab54a07d770e2c8d1d8bcf5a00f88eccc32d840a722021d75c54db",
39
+ ".github/workflows/ci.yml": "49e7212b6e41cf3b4a10f5620268b8244fa198967ec53ea8046d9974e1e53aab",
40
+ ".github/ISSUE_TEMPLATE/feature_request.md": "0debd18c536a362db4318ea53a0a45bfa6fb868126c1e7114b9bb3335b9273cb",
41
+ ".github/ISSUE_TEMPLATE/bug_report.md": "a2da7a2c1291279824090f4cd9cc01a1f411fa5aa4f85df1a79f5d6e8a675d0e",
42
+ "src/.DS_Store": "7a6a6687b2941a4d72ceedad53e351c12512931d92bc05d222b00ab46cf983d8",
43
+ "src/chuck/digest.py": "442ed06dc5dd76b4b7c0f51069cfbd8eb56854cf23733e780457047053b56389",
44
+ "src/chuck/chunker.py": "b0730a8f80fb6e3357b3a4b71a8f30153fe77c4f3e22e7396db9bdd8b8f6d105",
45
+ "src/chuck/__init__.py": "6f089a4d443f2477f82eca30fef8d455dfb6bcc210f8602432f71015acdd472f",
46
+ "src/chuck/core.py": "ff17347589b473ed71b3812829e07f124358d85d839d41ca6063be12641c0808",
47
+ "src/chuck/tokens.py": "dc4e84335c51e3693dc5ddc06fd6e1f82d8976969e1208214c381cc1567f9dc2",
48
+ "src/chuck/ignore.py": "25739d3fedc5c2a4513b5e3e907a3ecb49d496c8e64e7a012de349decdbbda96",
49
+ "src/chuck/context.py": "5ce9fcec80b0f9b7a95a5aac98c489abe73d7cd8321777573d654861d5139953",
50
+ "src/chuck/cli.py": "0ff64c21f7cd24eb2c6d262acea653747b25d7ec1de9dff57c1e576e98a2a79f",
51
+ "src/chuck/py.typed": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
52
+ "src/chuck/hasher.py": "0bb3a9e02c2132852c3c89b6f8a5761fdc7d04f05e35666072c6602d347da5e6",
53
+ "src/chuck/snapshot.py": "5870baab417e95fa4591d4c555180bd05ad247d01e925930a62c2be5a9d1cd7e",
54
+ "src/chuck.egg-info/PKG-INFO": "50955eb0294d12dda2eba6fe96dd7432f00f074f4e64fe67670fb1ecaadc1264",
55
+ "src/chuck.egg-info/SOURCES.txt": "9f14ba3870b081d17be4079b855484303615b47ec242b47d862e47022797187e",
56
+ "src/chuck.egg-info/entry_points.txt": "d7d78d698a7bd99a778346c77413a05a68bea568680ff33a638cf2988bd2cf90",
57
+ "src/chuck.egg-info/requires.txt": "ca245aca038f9a3d2bbb2dc0c1bcecc2aa819652166b4e34121c641248dcfd2a",
58
+ "src/chuck.egg-info/top_level.txt": "0e020043b94165dcb241e206d23637fbc9cd4513fdfd4059b4b832e81222ba1a",
59
+ "src/chuck.egg-info/dependency_links.txt": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
60
+ }
@@ -0,0 +1,20 @@
1
+ [
2
+ {
3
+ "version": "1.0.0",
4
+ "timestamp": "2026-03-07T22:36:41.075453+00:00",
5
+ "message": "Initial commit",
6
+ "tags": [],
7
+ "percent_changed": 100.0,
8
+ "files_changed": 58,
9
+ "type": "checkpoint"
10
+ },
11
+ {
12
+ "version": "1.0.0",
13
+ "timestamp": "2026-03-07T22:41:29.227531+00:00",
14
+ "message": "",
15
+ "tags": [],
16
+ "percent_changed": 100.0,
17
+ "files_changed": 58,
18
+ "type": "release"
19
+ }
20
+ ]
@@ -0,0 +1,20 @@
1
+ # Chuck's own ignore file (dogfooding)
2
+ .git/
3
+ .chuck/
4
+ __pycache__/
5
+ *.pyc
6
+ *.pyo
7
+ .env
8
+ .env.*
9
+ *.egg-info/
10
+ dist/
11
+ build/
12
+ .tox/
13
+ .venv/
14
+ venv/
15
+ .pytest_cache/
16
+ .coverage
17
+ htmlcov/
18
+ *.so
19
+ *.dylib
20
+ .DS_Store
@@ -0,0 +1,29 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(python:*)",
5
+ "Bash(pip:*)",
6
+ "Bash(st8:*)",
7
+ "Bash(tree:*)",
8
+ "Bash(echo:*)",
9
+ "Bash(pytest:*)",
10
+ "Bash(npm:*)",
11
+ "Bash(node:*)",
12
+ "Bash(git:*)",
13
+ "Bash(ls:*)",
14
+ "Bash(mkdir:*)",
15
+ "Bash(cp:*)",
16
+ "Bash(mv:*)",
17
+ "Bash(rm:*)",
18
+ "Bash(cat:*)",
19
+ "Bash(wc:*)",
20
+ "Read",
21
+ "Edit",
22
+ "Write",
23
+ "Glob",
24
+ "Grep",
25
+ "mcp__ide__getDiagnostics",
26
+ "Bash(chuck:*)"
27
+ ]
28
+ }
29
+ }
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Something isn't working correctly
4
+ labels: bug
5
+ ---
6
+
7
+ **Describe the bug**
8
+ A clear description of what the bug is.
9
+
10
+ **To reproduce**
11
+ Steps to reproduce the behavior.
12
+
13
+ **Expected behavior**
14
+ What you expected to happen.
15
+
16
+ **Environment**
17
+ - OS:
18
+ - Python version:
19
+ - Chuck version:
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest an idea for Chuck
4
+ labels: enhancement
5
+ ---
6
+
7
+ **Problem**
8
+ What problem does this solve?
9
+
10
+ **Proposed solution**
11
+ Describe what you'd like to happen.
12
+
13
+ **Alternatives considered**
14
+ Any alternative solutions you've thought about.
@@ -0,0 +1,33 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: ${{ matrix.python-version }}
21
+ - run: pip install -e ".[dev]"
22
+ - run: pytest --cov=chuck --cov-report=term-missing
23
+ - run: ruff check .
24
+
25
+ lint:
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ - uses: actions/setup-python@v5
30
+ with:
31
+ python-version: "3.12"
32
+ - run: pip install ruff
33
+ - run: ruff check .