clsync 1.1.0__tar.gz → 1.1.2__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 (99) hide show
  1. {clsync-1.1.0 → clsync-1.1.2}/.gitlab-ci.yml +1 -1
  2. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/3/3/9/7/4/33974f84394d9a943f68359da08431dab4af9f86c33962982ea21b5f +0 -0
  3. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/4/4/e/5/b/44e5b11a6caa92636d8ccfe658d420ba4ed8f67f7f4e835b214255aa +0 -0
  4. clsync-1.1.2/.pip-cache/http-v2/6/2/e/2/c/62e2caaadb9fd2d0a88b65a7d2043b2c343936491ef44dc753aa91e0 +0 -0
  5. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/8/c/5/4/2/8c54213ac80b2536d9dbc88d24229468300e07d0d4883935e180e4d8 +0 -0
  6. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/9/e/d/3/7/9ed377a761861346a483546ee4ebbe92a83f2d3a40e917849c2eb140 +0 -0
  7. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/c/d/2/3/6/cd2366d413a2e8e87377cfadece7d8173562ece48b2be25218d5714a +0 -0
  8. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/f/3/6/d/5/f36d58c71164036f2cff3c9d0bb0c2b4d1d94bd0814c26b9cbe036b2 +0 -0
  9. {clsync-1.1.0 → clsync-1.1.2}/PKG-INFO +25 -3
  10. {clsync-1.1.0 → clsync-1.1.2}/README.md +24 -2
  11. {clsync-1.1.0 → clsync-1.1.2}/pyproject.toml +1 -1
  12. clsync-1.1.0/.pip-cache/http-v2/6/2/e/2/c/62e2caaadb9fd2d0a88b65a7d2043b2c343936491ef44dc753aa91e0 +0 -0
  13. {clsync-1.1.0 → clsync-1.1.2}/.gitignore +0 -0
  14. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/0/3/5/9/5/03595f024098ed084eba12d86fd2749d935b061fa35d6b1f18cc0b84 +0 -0
  15. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/0/3/5/9/5/03595f024098ed084eba12d86fd2749d935b061fa35d6b1f18cc0b84.body +0 -0
  16. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/0/e/d/3/3/0ed336d749e009fe1267c844e36c442e5b3dc645d5eb9865c545b81a +0 -0
  17. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/0/e/d/3/3/0ed336d749e009fe1267c844e36c442e5b3dc645d5eb9865c545b81a.body +0 -0
  18. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/1/0/f/7/b/10f7b6adbfb7d3cd4bc86e1d6fb49a2b3aa9d3e5b1bb00aa757f9b45 +0 -0
  19. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/1/0/f/7/b/10f7b6adbfb7d3cd4bc86e1d6fb49a2b3aa9d3e5b1bb00aa757f9b45.body +0 -0
  20. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/2/8/3/9/a/2839a1e60014c8f0cdf9453a6036b2fef7bf06342761e3d37258b029 +0 -0
  21. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/2/8/3/9/a/2839a1e60014c8f0cdf9453a6036b2fef7bf06342761e3d37258b029.body +0 -0
  22. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/3/3/9/7/4/33974f84394d9a943f68359da08431dab4af9f86c33962982ea21b5f.body +0 -0
  23. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/3/c/e/7/7/3ce770df07ea321ab056bed31a67391a50e82aea9460d349fd057276 +0 -0
  24. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/3/c/e/7/7/3ce770df07ea321ab056bed31a67391a50e82aea9460d349fd057276.body +0 -0
  25. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/4/4/e/5/b/44e5b11a6caa92636d8ccfe658d420ba4ed8f67f7f4e835b214255aa.body +0 -0
  26. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/6/2/e/2/c/62e2caaadb9fd2d0a88b65a7d2043b2c343936491ef44dc753aa91e0.body +0 -0
  27. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/6/a/0/8/8/6a088fc192b69f4692b96903e0d1df2f92839b402221a47a2ca3b5be +0 -0
  28. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/6/a/0/8/8/6a088fc192b69f4692b96903e0d1df2f92839b402221a47a2ca3b5be.body +0 -0
  29. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/8/3/2/5/0/832505e3888a5751a777d9654bf14eb54b92aa42dfc569c4812d43cf +0 -0
  30. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/8/3/2/5/0/832505e3888a5751a777d9654bf14eb54b92aa42dfc569c4812d43cf.body +0 -0
  31. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/8/c/5/4/2/8c54213ac80b2536d9dbc88d24229468300e07d0d4883935e180e4d8.body +0 -0
  32. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/9/2/8/c/7/928c755db48c17282ed7a16aa7cbf0ae7aa370d2e20d939a3292aa75 +0 -0
  33. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/9/2/8/c/7/928c755db48c17282ed7a16aa7cbf0ae7aa370d2e20d939a3292aa75.body +0 -0
  34. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/9/e/a/1/5/9ea15e1a7a7a1cb9950b76e2e3c06da4d07100bc185f905f6e33e283 +0 -0
  35. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/9/e/a/1/5/9ea15e1a7a7a1cb9950b76e2e3c06da4d07100bc185f905f6e33e283.body +0 -0
  36. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/9/e/d/3/7/9ed377a761861346a483546ee4ebbe92a83f2d3a40e917849c2eb140.body +0 -0
  37. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a +0 -0
  38. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a.body +0 -0
  39. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/a/d/3/4/4/ad344e8dcc28c72166da85db3d3c34ea7bd39531944f502465cf3a50 +0 -0
  40. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/a/d/3/4/4/ad344e8dcc28c72166da85db3d3c34ea7bd39531944f502465cf3a50.body +0 -0
  41. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/a/d/f/d/a/adfdac1a71358ae7b47b92917f8a6af8c5acecccb52b186c45372c03 +0 -0
  42. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/a/d/f/d/a/adfdac1a71358ae7b47b92917f8a6af8c5acecccb52b186c45372c03.body +0 -0
  43. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/a/f/0/b/4/af0b4f3ea11a267af8c06f6fa9fa74e1a06b91e221cbd34f379bb11c +0 -0
  44. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/a/f/0/b/4/af0b4f3ea11a267af8c06f6fa9fa74e1a06b91e221cbd34f379bb11c.body +0 -0
  45. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/b/9/3/9/c/b939c4552b20c2f2a36204f6bb1d2e526af7e96070b43b1d2e2e9ae4 +0 -0
  46. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/b/9/3/9/c/b939c4552b20c2f2a36204f6bb1d2e526af7e96070b43b1d2e2e9ae4.body +0 -0
  47. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/c/5/2/e/2/c52e2f1dd5b9608ced10cc1a661cb4850330552cdc6801105598d8e4 +0 -0
  48. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/c/5/2/e/2/c52e2f1dd5b9608ced10cc1a661cb4850330552cdc6801105598d8e4.body +0 -0
  49. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/c/6/f/3/1/c6f3192810e6b78a08fee1da61557cd4bdd93a63331b9d474bca9d38 +0 -0
  50. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/c/6/f/3/1/c6f3192810e6b78a08fee1da61557cd4bdd93a63331b9d474bca9d38.body +0 -0
  51. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/c/d/2/3/6/cd2366d413a2e8e87377cfadece7d8173562ece48b2be25218d5714a.body +0 -0
  52. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/f/3/6/d/5/f36d58c71164036f2cff3c9d0bb0c2b4d1d94bd0814c26b9cbe036b2.body +0 -0
  53. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/f/9/9/b/3/f99b3487d2b9c55edcd311aeafa35cbf852ab2cc5c3f5d1a1a08e2b5 +0 -0
  54. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/http-v2/f/9/9/b/3/f99b3487d2b9c55edcd311aeafa35cbf852ab2cc5c3f5d1a1a08e2b5.body +0 -0
  55. {clsync-1.1.0 → clsync-1.1.2}/.pip-cache/selfcheck/fe300af6f7d708c14827daac3afc81fbb8306b73de8dd6e3f1f8ea3b +0 -0
  56. {clsync-1.1.0 → clsync-1.1.2}/CLAUDE.md +0 -0
  57. {clsync-1.1.0 → clsync-1.1.2}/LICENSE +0 -0
  58. {clsync-1.1.0 → clsync-1.1.2}/pipeline/models.py +0 -0
  59. {clsync-1.1.0 → clsync-1.1.2}/pipeline/prompts/synthesize_claude_md.txt +0 -0
  60. {clsync-1.1.0 → clsync-1.1.2}/pipeline/prompts/synthesize_critic.txt +0 -0
  61. {clsync-1.1.0 → clsync-1.1.2}/pipeline/requirements.txt +0 -0
  62. {clsync-1.1.0 → clsync-1.1.2}/pipeline/synthesize.py +0 -0
  63. {clsync-1.1.0 → clsync-1.1.2}/project-specification.md +0 -0
  64. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/__init__.py +0 -0
  65. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/apply.py +0 -0
  66. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/bootstrap.py +0 -0
  67. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/ci_provider.py +0 -0
  68. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/claude_paths.py +0 -0
  69. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/cli.py +0 -0
  70. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/config.py +0 -0
  71. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/git_ops.py +0 -0
  72. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/gitlab_api.py +0 -0
  73. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/lock.py +0 -0
  74. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/models.py +0 -0
  75. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/prompts/bootstrap.txt +0 -0
  76. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/scaffold.py +0 -0
  77. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/snapshot.py +0 -0
  78. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/templates/__init__.py +0 -0
  79. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/templates/github-workflow.yml +0 -0
  80. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/templates/gitignore +0 -0
  81. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/templates/gitlab-ci.yml +0 -0
  82. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/templates/pipeline/models.py +0 -0
  83. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/templates/pipeline/prompts/synthesize_claude_md.txt +0 -0
  84. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/templates/pipeline/prompts/synthesize_critic.txt +0 -0
  85. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/templates/pipeline/requirements.txt +0 -0
  86. {clsync-1.1.0 → clsync-1.1.2}/src/claude_sync/templates/pipeline/synthesize.py +0 -0
  87. {clsync-1.1.0 → clsync-1.1.2}/tests/fixtures/machine_a/global/CLAUDE.md +0 -0
  88. {clsync-1.1.0 → clsync-1.1.2}/tests/fixtures/machine_a/projects/my-app/CLAUDE.md +0 -0
  89. {clsync-1.1.0 → clsync-1.1.2}/tests/fixtures/machine_b/global/CLAUDE.md +0 -0
  90. {clsync-1.1.0 → clsync-1.1.2}/tests/test_apply.py +0 -0
  91. {clsync-1.1.0 → clsync-1.1.2}/tests/test_bootstrap.py +0 -0
  92. {clsync-1.1.0 → clsync-1.1.2}/tests/test_claude_paths.py +0 -0
  93. {clsync-1.1.0 → clsync-1.1.2}/tests/test_config.py +0 -0
  94. {clsync-1.1.0 → clsync-1.1.2}/tests/test_git_ops.py +0 -0
  95. {clsync-1.1.0 → clsync-1.1.2}/tests/test_gitlab_api.py +0 -0
  96. {clsync-1.1.0 → clsync-1.1.2}/tests/test_lock.py +0 -0
  97. {clsync-1.1.0 → clsync-1.1.2}/tests/test_scaffold.py +0 -0
  98. {clsync-1.1.0 → clsync-1.1.2}/tests/test_snapshot.py +0 -0
  99. {clsync-1.1.0 → clsync-1.1.2}/tests/test_synthesize.py +0 -0
@@ -43,7 +43,7 @@ publish_to_gitlab_registry:
43
43
  TWINE_USERNAME=gitlab-ci-token
44
44
  TWINE_PASSWORD=${CI_JOB_TOKEN}
45
45
  python -m twine upload
46
- --repository-url "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi"
46
+ --repository-url "http://gitlab:8081/api/v4/projects/${CI_PROJECT_ID}/packages/pypi"
47
47
  dist/*
48
48
  rules:
49
49
  - if: $CI_COMMIT_TAG
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clsync
3
- Version: 1.1.0
3
+ Version: 1.1.2
4
4
  Summary: Sync Claude Code knowledge across machines via a shared git repository and AI-powered synthesis
5
5
  Project-URL: Homepage, https://gitlab.hahtse.de/published/claudesync
6
6
  Project-URL: Repository, https://gitlab.hahtse.de/published/claudesync
@@ -201,7 +201,7 @@ pipx install .
201
201
  Verify:
202
202
 
203
203
  ```bash
204
- clsync --help
204
+ clsync --version
205
205
  ```
206
206
 
207
207
  For development (editable install with test dependencies — use pip, not pipx):
@@ -398,6 +398,13 @@ To skip all safety checks (running process detection and large-diff confirmation
398
398
  clsync pull --force
399
399
  ```
400
400
 
401
+ To resolve git conflicts automatically (e.g. after a concurrent synthesis):
402
+
403
+ ```bash
404
+ clsync pull --resolve mine # keep your local version on conflict
405
+ clsync pull --resolve theirs # keep remote version on conflict
406
+ ```
407
+
401
408
  ### Push, synthesize, and pull in one command
402
409
 
403
410
  ```bash
@@ -406,6 +413,12 @@ clsync sync
406
413
 
407
414
  This runs push → waits for the pipeline to complete → pull, in sequence.
408
415
 
416
+ `--resolve` is also accepted by `sync` and applies to both the initial pull and the final pull step:
417
+
418
+ ```bash
419
+ clsync sync --resolve theirs
420
+ ```
421
+
409
422
  ### Trigger the pipeline without pushing
410
423
 
411
424
  ```bash
@@ -487,7 +500,16 @@ If only one machine has content for a scope, it is copied directly without an AP
487
500
 
488
501
  ### Conflict markers
489
502
 
490
- When two machines contradict each other and the synthesizer cannot determine which is correct, it writes:
503
+ There are two kinds of conflicts:
504
+
505
+ **Git-level conflicts** occur when two machines push to the sync repo concurrently and `git pull --rebase` cannot auto-merge. These can be resolved automatically with the `--resolve` flag:
506
+
507
+ ```bash
508
+ clsync pull --resolve theirs # keep the remote version
509
+ clsync pull --resolve mine # keep the local version
510
+ ```
511
+
512
+ **Synthesis-level conflicts** occur when two machines contradict each other in content and the synthesizer cannot determine which is correct. It writes:
491
513
 
492
514
  ```
493
515
  <!-- CONFLICT: [description] — resolve manually -->
@@ -165,7 +165,7 @@ pipx install .
165
165
  Verify:
166
166
 
167
167
  ```bash
168
- clsync --help
168
+ clsync --version
169
169
  ```
170
170
 
171
171
  For development (editable install with test dependencies — use pip, not pipx):
@@ -362,6 +362,13 @@ To skip all safety checks (running process detection and large-diff confirmation
362
362
  clsync pull --force
363
363
  ```
364
364
 
365
+ To resolve git conflicts automatically (e.g. after a concurrent synthesis):
366
+
367
+ ```bash
368
+ clsync pull --resolve mine # keep your local version on conflict
369
+ clsync pull --resolve theirs # keep remote version on conflict
370
+ ```
371
+
365
372
  ### Push, synthesize, and pull in one command
366
373
 
367
374
  ```bash
@@ -370,6 +377,12 @@ clsync sync
370
377
 
371
378
  This runs push → waits for the pipeline to complete → pull, in sequence.
372
379
 
380
+ `--resolve` is also accepted by `sync` and applies to both the initial pull and the final pull step:
381
+
382
+ ```bash
383
+ clsync sync --resolve theirs
384
+ ```
385
+
373
386
  ### Trigger the pipeline without pushing
374
387
 
375
388
  ```bash
@@ -451,7 +464,16 @@ If only one machine has content for a scope, it is copied directly without an AP
451
464
 
452
465
  ### Conflict markers
453
466
 
454
- When two machines contradict each other and the synthesizer cannot determine which is correct, it writes:
467
+ There are two kinds of conflicts:
468
+
469
+ **Git-level conflicts** occur when two machines push to the sync repo concurrently and `git pull --rebase` cannot auto-merge. These can be resolved automatically with the `--resolve` flag:
470
+
471
+ ```bash
472
+ clsync pull --resolve theirs # keep the remote version
473
+ clsync pull --resolve mine # keep the local version
474
+ ```
475
+
476
+ **Synthesis-level conflicts** occur when two machines contradict each other in content and the synthesizer cannot determine which is correct. It writes:
455
477
 
456
478
  ```
457
479
  <!-- CONFLICT: [description] — resolve manually -->
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "clsync"
7
- version = "1.1.0"
7
+ version = "1.1.2"
8
8
  description = "Sync Claude Code knowledge across machines via a shared git repository and AI-powered synthesis"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
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