giton 0.1.12__tar.gz → 0.1.13__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 (111) hide show
  1. giton-0.1.13/.github/workflows/trigger-org-sync.yml +27 -0
  2. {giton-0.1.12 → giton-0.1.13}/.idea/workspace.xml +49 -58
  3. {giton-0.1.12 → giton-0.1.13}/CHANGELOG.md +10 -0
  4. {giton-0.1.12 → giton-0.1.13}/PKG-INFO +4 -6
  5. {giton-0.1.12 → giton-0.1.13}/README.md +3 -5
  6. giton-0.1.13/VERSION +1 -0
  7. giton-0.1.13/app.doql.less +43 -0
  8. {giton-0.1.12 → giton-0.1.13}/goal.yaml +21 -5
  9. giton-0.1.13/index.html +33 -0
  10. {giton-0.1.12 → giton-0.1.13}/pyproject.toml +1 -1
  11. {giton-0.1.12 → giton-0.1.13}/src/giton/__init__.py +1 -1
  12. giton-0.1.13/tests/__init__.py +0 -0
  13. {giton-0.1.12 → giton-0.1.13}/uv.lock +1 -1
  14. giton-0.1.12/VERSION +0 -1
  15. giton-0.1.12/app.doql.less +0 -28
  16. {giton-0.1.12 → giton-0.1.13}/.gitignore +0 -0
  17. {giton-0.1.12 → giton-0.1.13}/.giton/last_check.json +0 -0
  18. {giton-0.1.12 → giton-0.1.13}/.giton/last_diff.patch +0 -0
  19. {giton-0.1.12 → giton-0.1.13}/.idea/.gitignore +0 -0
  20. {giton-0.1.12 → giton-0.1.13}/.koru/event-store.jsonl +0 -0
  21. {giton-0.1.12 → giton-0.1.13}/.koru/events/observability.jsonl +0 -0
  22. {giton-0.1.12 → giton-0.1.13}/.koru/history.jsonl +0 -0
  23. {giton-0.1.12 → giton-0.1.13}/.koru/onboarding.json +0 -0
  24. {giton-0.1.12 → giton-0.1.13}/.koru/project.json +0 -0
  25. /giton-0.1.12/.planfile/.koru/queue-runner.lock → /giton-0.1.13/.nojekyll +0 -0
  26. {giton-0.1.12 → giton-0.1.13}/.planfile/.koru/autonomous-state.json +0 -0
  27. {giton-0.1.12 → giton-0.1.13}/.planfile/.koru/autonomy-telemetry.json +0 -0
  28. {giton-0.1.12 → giton-0.1.13}/.planfile/.koru/event-store.jsonl +0 -0
  29. {giton-0.1.12 → giton-0.1.13}/.planfile/.koru/nfo-events.jsonl +0 -0
  30. {giton-0.1.12 → giton-0.1.13}/.planfile/.koru/operator-steps/mcp_koru.ticket +0 -0
  31. {giton-0.1.12 → giton-0.1.13}/.planfile/.koru/operator-steps/self_control.ticket +0 -0
  32. /giton-0.1.12/.planfile/sprints/current.yaml.lock → /giton-0.1.13/.planfile/.koru/queue-runner.lock +0 -0
  33. {giton-0.1.12 → giton-0.1.13}/.planfile/.koru/serve-endpoint.json +0 -0
  34. {giton-0.1.12 → giton-0.1.13}/.planfile/config.yaml +0 -0
  35. {giton-0.1.12 → giton-0.1.13}/.planfile/sprints/current.yaml +0 -0
  36. /giton-0.1.12/tests/__init__.py → /giton-0.1.13/.planfile/sprints/current.yaml.lock +0 -0
  37. {giton-0.1.12 → giton-0.1.13}/.pyqual/llx_history.jsonl +0 -0
  38. {giton-0.1.12 → giton-0.1.13}/.pyqual/pipeline.db +0 -0
  39. {giton-0.1.12 → giton-0.1.13}/.pyqual/runtime_errors.json +0 -0
  40. {giton-0.1.12 → giton-0.1.13}/LICENSE +0 -0
  41. {giton-0.1.12 → giton-0.1.13}/SUMD.md +0 -0
  42. {giton-0.1.12 → giton-0.1.13}/SUMR.md +0 -0
  43. {giton-0.1.12 → giton-0.1.13}/TODO.md +0 -0
  44. {giton-0.1.12 → giton-0.1.13}/examples/advanced/Dockerfile +0 -0
  45. {giton-0.1.12 → giton-0.1.13}/examples/advanced/README.md +0 -0
  46. {giton-0.1.12 → giton-0.1.13}/examples/advanced/logs/log.txt +0 -0
  47. {giton-0.1.12 → giton-0.1.13}/examples/advanced/main.py +0 -0
  48. {giton-0.1.12 → giton-0.1.13}/examples/basic/Dockerfile +0 -0
  49. {giton-0.1.12 → giton-0.1.13}/examples/basic/README.md +0 -0
  50. {giton-0.1.12 → giton-0.1.13}/examples/basic/logs/log.txt +0 -0
  51. {giton-0.1.12 → giton-0.1.13}/examples/basic/main.py +0 -0
  52. {giton-0.1.12 → giton-0.1.13}/examples/plugins/README.md +0 -0
  53. {giton-0.1.12 → giton-0.1.13}/examples/plugins/test_plugin_lifecycle.py +0 -0
  54. {giton-0.1.12 → giton-0.1.13}/examples/testing/Dockerfile +0 -0
  55. {giton-0.1.12 → giton-0.1.13}/examples/testing/README.md +0 -0
  56. {giton-0.1.12 → giton-0.1.13}/examples/testing/docker-compose.yml +0 -0
  57. {giton-0.1.12 → giton-0.1.13}/examples/testing/logs/log.txt +0 -0
  58. {giton-0.1.12 → giton-0.1.13}/examples/testing/sample_project/pyproject.toml +0 -0
  59. {giton-0.1.12 → giton-0.1.13}/examples/testing/sample_project/src/example.py +0 -0
  60. {giton-0.1.12 → giton-0.1.13}/examples/testing/sample_project/tests/test_example.py +0 -0
  61. {giton-0.1.12 → giton-0.1.13}/examples/testing/test_giton_integration.py +0 -0
  62. {giton-0.1.12 → giton-0.1.13}/koru.yaml +0 -0
  63. {giton-0.1.12 → giton-0.1.13}/planfile.yaml +0 -0
  64. {giton-0.1.12 → giton-0.1.13}/prefact.yaml +0 -0
  65. {giton-0.1.12 → giton-0.1.13}/project/README.md +0 -0
  66. {giton-0.1.12 → giton-0.1.13}/project/analysis.toon.yaml +0 -0
  67. {giton-0.1.12 → giton-0.1.13}/project/calls.mmd +0 -0
  68. {giton-0.1.12 → giton-0.1.13}/project/calls.png +0 -0
  69. {giton-0.1.12 → giton-0.1.13}/project/calls.toon.yaml +0 -0
  70. {giton-0.1.12 → giton-0.1.13}/project/calls.yaml +0 -0
  71. {giton-0.1.12 → giton-0.1.13}/project/compact_flow.mmd +0 -0
  72. {giton-0.1.12 → giton-0.1.13}/project/compact_flow.png +0 -0
  73. {giton-0.1.12 → giton-0.1.13}/project/context.md +0 -0
  74. {giton-0.1.12 → giton-0.1.13}/project/duplication.toon.yaml +0 -0
  75. {giton-0.1.12 → giton-0.1.13}/project/evolution.toon.yaml +0 -0
  76. {giton-0.1.12 → giton-0.1.13}/project/flow.mmd +0 -0
  77. {giton-0.1.12 → giton-0.1.13}/project/flow.png +0 -0
  78. {giton-0.1.12 → giton-0.1.13}/project/index.html +0 -0
  79. {giton-0.1.12 → giton-0.1.13}/project/logic.pl +0 -0
  80. {giton-0.1.12 → giton-0.1.13}/project/map.toon.yaml +0 -0
  81. {giton-0.1.12 → giton-0.1.13}/project/mermaid.export +0 -0
  82. {giton-0.1.12 → giton-0.1.13}/project/planfile-tickets.yaml +0 -0
  83. {giton-0.1.12 → giton-0.1.13}/project/project.toon.yaml +0 -0
  84. {giton-0.1.12 → giton-0.1.13}/project/prompt.txt +0 -0
  85. {giton-0.1.12 → giton-0.1.13}/project/validation.toon.yaml +0 -0
  86. {giton-0.1.12 → giton-0.1.13}/project.sh +0 -0
  87. {giton-0.1.12 → giton-0.1.13}/pyqual.yaml +0 -0
  88. {giton-0.1.12 → giton-0.1.13}/src/giton/__main__.py +0 -0
  89. {giton-0.1.12 → giton-0.1.13}/src/giton/catalog.py +0 -0
  90. {giton-0.1.12 → giton-0.1.13}/src/giton/cli.py +0 -0
  91. {giton-0.1.12 → giton-0.1.13}/src/giton/config.py +0 -0
  92. {giton-0.1.12 → giton-0.1.13}/src/giton/context.py +0 -0
  93. {giton-0.1.12 → giton-0.1.13}/src/giton/fixups.py +0 -0
  94. {giton-0.1.12 → giton-0.1.13}/src/giton/history.py +0 -0
  95. {giton-0.1.12 → giton-0.1.13}/src/giton/hooks.py +0 -0
  96. {giton-0.1.12 → giton-0.1.13}/src/giton/interactive.py +0 -0
  97. {giton-0.1.12 → giton-0.1.13}/src/giton/plugins.py +0 -0
  98. {giton-0.1.12 → giton-0.1.13}/src/giton/policies.py +0 -0
  99. {giton-0.1.12 → giton-0.1.13}/src/giton/repo_config.py +0 -0
  100. {giton-0.1.12 → giton-0.1.13}/src/giton/runner.py +0 -0
  101. {giton-0.1.12 → giton-0.1.13}/src/giton/shell.py +0 -0
  102. {giton-0.1.12 → giton-0.1.13}/src/giton/store.py +0 -0
  103. {giton-0.1.12 → giton-0.1.13}/tagi.toml +0 -0
  104. {giton-0.1.12 → giton-0.1.13}/testql-scenarios/generated-cli-tests.testql.toon.yaml +0 -0
  105. {giton-0.1.12 → giton-0.1.13}/testql-scenarios/generated-from-pytests.testql.toon.yaml +0 -0
  106. {giton-0.1.12 → giton-0.1.13}/tests/test_basic.py +0 -0
  107. {giton-0.1.12 → giton-0.1.13}/tests/test_fixups.py +0 -0
  108. {giton-0.1.12 → giton-0.1.13}/tests/test_history.py +0 -0
  109. {giton-0.1.12 → giton-0.1.13}/tests/test_plugin_runner.py +0 -0
  110. {giton-0.1.12 → giton-0.1.13}/tests/test_policies.py +0 -0
  111. {giton-0.1.12 → giton-0.1.13}/tree.sh +0 -0
@@ -0,0 +1,27 @@
1
+ # Copy this file to member repos as .github/workflows/trigger-org-sync.yml
2
+ # Repository dispatch target is filled by bootstrap_triggers.py
3
+
4
+ name: Trigger org metadata sync
5
+
6
+ on:
7
+ push:
8
+ branches: [main, master]
9
+ paths-ignore:
10
+ - "index.html"
11
+ - ".nojekyll"
12
+ - "profile/**"
13
+ - ".github/workflows/trigger-org-sync.yml"
14
+ workflow_dispatch:
15
+
16
+ jobs:
17
+ dispatch:
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - name: Notify org metadata sync
21
+ uses: peter-evans/repository-dispatch@v3
22
+ with:
23
+ token: ${{ secrets.ORG_SYNC_PAT }}
24
+ repository: semcod/.github
25
+ event-type: org-repo-changed
26
+ client-payload: >-
27
+ {"repository":"${{ github.repository }}","ref":"${{ github.ref }}","sha":"${{ github.sha }}"}
@@ -4,16 +4,7 @@
4
4
  <option name="autoReloadType" value="SELECTIVE" />
5
5
  </component>
6
6
  <component name="ChangeListManager">
7
- <list default="true" id="9532a670-1f01-4d5e-9501-f3491f105c64" name="Changes" comment="">
8
- <change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
9
- <change beforePath="$PROJECT_DIR$/.giton/last_check.json" beforeDir="false" afterPath="$PROJECT_DIR$/.giton/last_check.json" afterDir="false" />
10
- <change beforePath="$PROJECT_DIR$/.giton/last_diff.patch" beforeDir="false" afterPath="$PROJECT_DIR$/.giton/last_diff.patch" afterDir="false" />
11
- <change beforePath="$PROJECT_DIR$/.planfile/config.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/.planfile/config.yaml" afterDir="false" />
12
- <change beforePath="$PROJECT_DIR$/.planfile/sprints/current.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/.planfile/sprints/current.yaml" afterDir="false" />
13
- <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
14
- <change beforePath="$PROJECT_DIR$/goal.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/goal.yaml" afterDir="false" />
15
- <change beforePath="$PROJECT_DIR$/testql-scenarios/generated-cli-tests.testql.toon.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/testql-scenarios/generated-cli-tests.testql.toon.yaml" afterDir="false" />
16
- </list>
7
+ <list default="true" id="9532a670-1f01-4d5e-9501-f3491f105c64" name="Changes" comment="" />
17
8
  <option name="SHOW_DIALOG" value="false" />
18
9
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
19
10
  <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -50,61 +41,61 @@
50
41
  </component>
51
42
  <component name="NextEditCompletionFeaturesState">
52
43
  <decayedCancelled>
53
- <entry key="MS100" value="1.932247973139872" />
54
- <entry key="MS500" value="2.6982380052110324" />
55
- <entry key="S2" value="2.9188642309520114" />
56
- <entry key="S5" value="2.967059263805006" />
57
- <entry key="S10" value="2.9834473554540093" />
58
- <entry key="S30" value="2.9944661048059102" />
59
- <entry key="S60" value="3.0029345294533276" />
60
- <entry key="M2" value="3.417983924948266" />
61
- <entry key="M5" value="9.30835883575256" />
62
- <entry key="M10" value="20.703312092674857" />
63
- <entry key="M15" value="30.42259802773198" />
64
- <entry key="M30" value="53.66713106345948" />
65
- <entry key="H1" value="83.0809993275816" />
66
- <entry key="H2" value="109.98787354556517" />
67
- <entry key="H4" value="128.8898380220881" />
68
- <entry key="D1" value="148.55414796004084" />
69
- <entry key="W1" value="152.3534178497576" />
44
+ <entry key="MS100" value="1.273700370004983" />
45
+ <entry key="MS500" value="4.268652519612051" />
46
+ <entry key="S2" value="6.754465419032777" />
47
+ <entry key="S5" value="7.469512440734581" />
48
+ <entry key="S10" value="7.72904478355838" />
49
+ <entry key="S30" value="7.908381882402461" />
50
+ <entry key="S60" value="7.959687791942729" />
51
+ <entry key="M2" value="8.394788570348824" />
52
+ <entry key="M5" value="14.290340506127327" />
53
+ <entry key="M10" value="25.685851630221773" />
54
+ <entry key="M15" value="35.4061518554498" />
55
+ <entry key="M30" value="58.65316111929394" />
56
+ <entry key="H1" value="88.07037826845577" />
57
+ <entry key="H2" value="114.98089990836695" />
58
+ <entry key="H4" value="133.88576703509355" />
59
+ <entry key="D1" value="153.5533681733638" />
60
+ <entry key="W1" value="157.35330365598554" />
70
61
  </decayedCancelled>
71
62
  <decayedSelected>
72
63
  <entry key="MS100" value="0.0" />
73
64
  <entry key="MS500" value="0.0" />
74
65
  <entry key="S2" value="0.0" />
75
- <entry key="S5" value="1.933821598530457E-155" />
76
- <entry key="S10" value="4.397523847042176E-78" />
77
- <entry key="S30" value="1.638335094916865E-26" />
78
- <entry key="S60" value="1.2799746462007982E-13" />
79
- <entry key="M2" value="3.577673367668767E-7" />
80
- <entry key="M5" value="0.002640690382466627" />
81
- <entry key="M10" value="0.05266933187983529" />
82
- <entry key="M15" value="0.15009076783090844" />
83
- <entry key="M30" value="0.48082621617998655" />
84
- <entry key="H1" value="0.9399864258697901" />
85
- <entry key="H2" value="1.3555371667386964" />
86
- <entry key="H4" value="1.6417396947648897" />
87
- <entry key="D1" value="1.934485552327999" />
88
- <entry key="W1" value="1.9904867954330148" />
66
+ <entry key="S5" value="1.7691479561502404E-155" />
67
+ <entry key="S10" value="4.206124054459455E-78" />
68
+ <entry key="S30" value="1.6142124497064884E-26" />
69
+ <entry key="S60" value="1.2705166074107343E-13" />
70
+ <entry key="M2" value="3.5644307169416346E-7" />
71
+ <entry key="M5" value="0.002636776257783567" />
72
+ <entry key="M10" value="0.05263028323136457" />
73
+ <entry key="M15" value="0.15001657454664974" />
74
+ <entry key="M30" value="0.48070735981603857" />
75
+ <entry key="H1" value="0.9398702401564161" />
76
+ <entry key="H2" value="1.3554533895077714" />
77
+ <entry key="H4" value="1.641688961175987" />
78
+ <entry key="D1" value="1.9344755888464988" />
79
+ <entry key="W1" value="1.9904853308707242" />
89
80
  </decayedSelected>
90
81
  <decayedShown>
91
- <entry key="MS100" value="1.5611966695433397" />
92
- <entry key="MS500" value="2.5603881655144978" />
93
- <entry key="S2" value="2.8799415500596783" />
94
- <entry key="S5" value="2.9511033967380973" />
95
- <entry key="S10" value="2.975403777171672" />
96
- <entry key="S30" value="2.991770210606719" />
97
- <entry key="S60" value="3.001582116795644" />
98
- <entry key="M2" value="3.4172416706349744" />
99
- <entry key="M5" value="9.310392087541302" />
100
- <entry key="M10" value="20.755317729302078" />
101
- <entry key="M15" value="30.57198413067875" />
102
- <entry key="M30" value="54.147269076571156" />
103
- <entry key="H1" value="84.02044447074726" />
104
- <entry key="H2" value="111.34305699286497" />
105
- <entry key="H4" value="130.53137307601446" />
106
- <entry key="D1" value="150.48859474100738" />
107
- <entry key="W1" value="154.34389897983786" />
82
+ <entry key="MS100" value="1.242353916847454" />
83
+ <entry key="MS500" value="4.19325310203451" />
84
+ <entry key="S2" value="6.716156013457596" />
85
+ <entry key="S5" value="7.451785232331934" />
86
+ <entry key="S10" value="7.719737919170992" />
87
+ <entry key="S30" value="7.905176808474532" />
88
+ <entry key="S60" value="7.958069529073346" />
89
+ <entry key="M2" value="8.393910788418248" />
90
+ <entry key="M5" value="14.292315349138365" />
91
+ <entry key="M10" value="25.737790998564996" />
92
+ <entry key="M15" value="35.55544563582803" />
93
+ <entry key="M30" value="59.13317120577483" />
94
+ <entry key="H1" value="89.0097026722257" />
95
+ <entry key="H2" value="116.33599728990501" />
96
+ <entry key="H4" value="135.52725020653423" />
97
+ <entry key="D1" value="155.4878047985083" />
98
+ <entry key="W1" value="159.34378329400187" />
108
99
  </decayedShown>
109
100
  </component>
110
101
  <component name="ProjectColorInfo">{
@@ -17,6 +17,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
17
17
 
18
18
  ## [Unreleased]
19
19
 
20
+ ## [0.1.13] - 2026-06-29
21
+
22
+ ### Docs
23
+ - Update README.md
24
+
25
+ ### Other
26
+ - Update .nojekyll
27
+ - Update app.doql.less
28
+ - Update index.html
29
+
20
30
  ## [0.1.12] - 2026-05-31
21
31
 
22
32
  ### Docs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: giton
3
- Version: 0.1.12
3
+ Version: 0.1.13
4
4
  Summary: Local AI layer for git: orchestrates policies & plugins between commit and push.
5
5
  Author: semcod
6
6
  Author-email: Tom Sapletta <tom@sapletta.com>
@@ -22,13 +22,11 @@ Description-Content-Type: text/markdown
22
22
 
23
23
  ## AI Cost Tracking
24
24
 
25
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.12-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
26
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$1.53-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-4.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
25
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$6.28-yellow) ![AI Model](https://img.shields.io/badge/AI%20Model-openrouter%2Fqwen%2Fqwen3-coder-next-lightgrey)
27
26
 
28
- - 🤖 **LLM usage:** $1.5328 (13 commits)
29
- - 👤 **Human dev:** ~$466 (4.7h @ $100/h, 30min dedup)
27
+ This project uses AI-generated code. Total cost: **$6.2764** with **14** AI commits.
30
28
 
31
- Generated on 2026-05-31 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
29
+ Generated on 2026-06-29 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/models/openrouter/qwen/qwen3-coder-next)
32
30
 
33
31
  ---
34
32
 
@@ -3,13 +3,11 @@
3
3
 
4
4
  ## AI Cost Tracking
5
5
 
6
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.12-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$1.53-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-4.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
6
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$6.28-yellow) ![AI Model](https://img.shields.io/badge/AI%20Model-openrouter%2Fqwen%2Fqwen3-coder-next-lightgrey)
8
7
 
9
- - 🤖 **LLM usage:** $1.5328 (13 commits)
10
- - 👤 **Human dev:** ~$466 (4.7h @ $100/h, 30min dedup)
8
+ This project uses AI-generated code. Total cost: **$6.2764** with **14** AI commits.
11
9
 
12
- Generated on 2026-05-31 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
10
+ Generated on 2026-06-29 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/models/openrouter/qwen/qwen3-coder-next)
13
11
 
14
12
  ---
15
13
 
giton-0.1.13/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.13
@@ -0,0 +1,43 @@
1
+ // LESS format — define @variables here as needed
2
+
3
+ app {
4
+ name: giton;
5
+ version: 0.1.12;
6
+ description: "Local AI layer for git: orchestrates policies & plugins between commit and push.";
7
+ license: Apache-2.0;
8
+ authors: "semcod, Tom Sapletta <tom@sapletta.com>";
9
+ }
10
+
11
+ dependencies {
12
+ runtime: "typer>=0.12, rich>=13.7, PyYAML>=6.0";
13
+ dev: "pytest>=8.0, goal>=2.1.0, costs>=0.1.20, pfix>=0.1.60";
14
+ }
15
+
16
+ interface[type="cli"] {
17
+ framework: argparse;
18
+ }
19
+ interface[type="cli"] page[name="giton"] {
20
+ entry: giton.cli:app;
21
+ }
22
+
23
+ tests {
24
+ import: testql-scenarios/**/*.testql.toon.yaml;
25
+ }
26
+
27
+ env_vars {
28
+ keys: OPENROUTER_API_KEY, LLM_MODEL, PFIX_AUTO_APPLY, PFIX_AUTO_INSTALL_DEPS, PFIX_AUTO_RESTART, PFIX_MAX_RETRIES, PFIX_DRY_RUN, PFIX_ENABLED, PFIX_GIT_COMMIT, PFIX_GIT_PREFIX, PFIX_CREATE_BACKUPS, XDG_CONFIG_HOME, GITON_NON_INTERACTIVE;
29
+ }
30
+
31
+ deploy {
32
+ target: docker;
33
+ }
34
+
35
+ environment[name="local"] {
36
+ runtime: docker-compose;
37
+ env_file: .env;
38
+ template_file: .env.example;
39
+ python_version: >=3.10;
40
+ vars: LLM_MODEL, OPENROUTER_API_KEY, PFIX_AUTO_APPLY, PFIX_AUTO_INSTALL_DEPS, PFIX_AUTO_RESTART, PFIX_CREATE_BACKUPS, PFIX_DRY_RUN, PFIX_ENABLED, PFIX_GIT_COMMIT, PFIX_GIT_PREFIX, PFIX_MAX_RETRIES;
41
+ runtime_llm: OPENROUTER_API_KEY;
42
+ runtime_pfix: PFIX_AUTO_APPLY, PFIX_AUTO_INSTALL_DEPS, PFIX_AUTO_RESTART, PFIX_CREATE_BACKUPS, PFIX_DRY_RUN, PFIX_ENABLED, PFIX_GIT_COMMIT, PFIX_GIT_PREFIX, PFIX_MAX_RETRIES;
43
+ }
@@ -1,5 +1,5 @@
1
1
  # goal.yaml - Goal configuration file
2
- # Generated: 2026-05-27 20:03:25
2
+ # Generated: 2026-06-29 11:50:31
3
3
  # Documentation: https://github.com/wronai/goal#configuration
4
4
  #
5
5
  # This file configures Goal's behavior for:
@@ -23,7 +23,7 @@ versioning:
23
23
  files:
24
24
  - VERSION
25
25
  - pyproject.toml:version
26
- - venv/lib/python3.13/site-packages/cryptography/__init__.py:__version__
26
+ - src/giton/__init__.py:__version__
27
27
  bump_rules:
28
28
  patch: 10
29
29
  minor: 50
@@ -221,6 +221,20 @@ git:
221
221
  enabled: true
222
222
  prefix: v
223
223
  format: '{prefix}{version}'
224
+ publishing:
225
+ enabled: true
226
+ registries:
227
+ - pypi
228
+ dry_run: false
229
+ fallback:
230
+ github_release:
231
+ enabled: true
232
+ owner: ''
233
+ repo: ''
234
+ repo_map: {}
235
+ token_env: GITHUB_TOKEN
236
+ skip_pypi_retries_on_block: true
237
+ asset_glob: dist/*
224
238
  strategies:
225
239
  python:
226
240
  test: pytest tests/ -v
@@ -308,13 +322,15 @@ advanced:
308
322
  - pk_test_[a-zA-Z0-9]{24}
309
323
  - sk_live_[a-zA-Z0-9]{24}
310
324
  - sk_test_[a-zA-Z0-9]{24}
311
- - Bearer\s+[a-zA-Z0-9_-]{20,}
312
- - Token\s+[a-zA-Z0-9_-]{20,}
313
325
  - '-----BEGIN\s+(RSA\s+)?PRIVATE\s+KEY-----'
314
326
  - '-----BEGIN\s+EC\s+PRIVATE\s+KEY-----'
315
327
  - '-----BEGIN\s+OPENSSH\s+PRIVATE\s+KEY-----'
316
328
  - '-----BEGIN\s+DSA\s+PRIVATE\s+KEY-----'
317
- - ^[A-Z_]+=[a-zA-Z0-9_-]{20,}
329
+ - sk-or-v1-(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9_-]{32,}
330
+ - CS:^[A-Z][A-Z0-9_]*(?:API|KEY|TOKEN|SECRET|AUTH|PASS|PWD|CREDENTIAL|ACCESS)[A-Z0-9_]*=(?=(?:.*[a-z]))(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9_-]{20,}
331
+ - \bBearer\s+(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9_-]{32,}\b
332
+ - \bToken\s+(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9_-]{32,}\b
333
+ - '-----BEGIN\s+(?:RSA\s+)?PRIVATE\s+KEY-----'
318
334
  recovery:
319
335
  enabled: true
320
336
  auto_offer: true
@@ -0,0 +1,33 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>giton · semcod</title>
7
+ <meta name="description" content="Git onboarding assistant — init repos, remotes, hooks and semcod workflow templates.">
8
+ <style>
9
+ :root { color-scheme: light dark; }
10
+ body { font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; margin: 0; background: #0b1220; color: #e5e7eb; }
11
+ main { max-width: 760px; margin: 0 auto; padding: 3rem 1.25rem; }
12
+ h1 { font-size: 2rem; margin: 0 0 0.75rem; }
13
+ p { line-height: 1.6; color: #cbd5e1; }
14
+ .links { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 1.5rem; }
15
+ a { color: #93c5fd; text-decoration: none; border: 1px solid #334155; padding: 0.55rem 0.9rem; border-radius: 0.5rem; }
16
+ a:hover { background: #111827; }
17
+ .badge { display: inline-block; font-size: 0.8rem; color: #94a3b8; margin-bottom: 1rem; }
18
+ </style>
19
+ </head>
20
+ <body>
21
+ <main>
22
+ <div class="badge">semcod ecosystem</div>
23
+ <h1>giton</h1>
24
+ <p>Git onboarding assistant — init repos, remotes, hooks and semcod workflow templates.</p>
25
+ <div class="links">
26
+ <a href="project/">Interactive analysis</a>
27
+ <a href="README.md">README</a>
28
+ <a href="https://github.com/semcod/giton">GitHub</a>
29
+ <a href="https://pypi.org/project/giton/">PyPI</a>
30
+ </div>
31
+ </main>
32
+ </body>
33
+ </html>
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "giton"
7
- version = "0.1.12"
7
+ version = "0.1.13"
8
8
  description = "Local AI layer for git: orchestrates policies & plugins between commit and push."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,3 +1,3 @@
1
1
  """giton — local AI layer for git, between commit and push."""
2
2
 
3
- __version__ = "0.1.12"
3
+ __version__ = "0.1.13"
File without changes
@@ -819,7 +819,7 @@ wheels = [
819
819
 
820
820
  [[package]]
821
821
  name = "giton"
822
- version = "0.1.12"
822
+ version = "0.1.13"
823
823
  source = { editable = "." }
824
824
  dependencies = [
825
825
  { name = "pyyaml" },
giton-0.1.12/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.12
@@ -1,28 +0,0 @@
1
- // LESS format — define @variables here as needed
2
-
3
- app {
4
- name: giton;
5
- version: 0.1.9;
6
- }
7
-
8
- dependencies {
9
- runtime: "typer>=0.12, rich>=13.7, PyYAML>=6.0";
10
- dev: "pytest>=8.0, goal>=2.1.0, costs>=0.1.20, pfix>=0.1.60";
11
- }
12
-
13
- interface[type="cli"] {
14
- framework: argparse;
15
- }
16
- interface[type="cli"] page[name="giton"] {
17
-
18
- }
19
-
20
- deploy {
21
- target: docker;
22
- }
23
-
24
- environment[name="local"] {
25
- runtime: docker-compose;
26
- env_file: .env;
27
- python_version: >=3.10;
28
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes