cluxion-agentplugin-preprocessing 0.3.23__tar.gz → 0.3.25__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 (112) hide show
  1. {cluxion_agentplugin_preprocessing-0.3.23/adapters/claude → cluxion_agentplugin_preprocessing-0.3.25}/.claude-plugin/plugin.json +3 -3
  2. cluxion_agentplugin_preprocessing-0.3.25/.codex-plugin/plugin.json +8 -0
  3. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/Docs/README.md +6 -4
  4. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/PKG-INFO +35 -1
  5. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/README.md +34 -0
  6. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/install-and-operations.md +1 -0
  7. cluxion_agentplugin_preprocessing-0.3.25/commands/cluxion-doctor.md +9 -0
  8. cluxion_agentplugin_preprocessing-0.3.25/commands/cluxion-plan.md +18 -0
  9. cluxion_agentplugin_preprocessing-0.3.25/commands/loop-auto.md +16 -0
  10. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/pyproject.toml +10 -4
  11. cluxion_agentplugin_preprocessing-0.3.25/skills/preprocess/SKILL.md +47 -0
  12. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/cli.py +36 -2
  13. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/doctor/catalog.json +33 -0
  14. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/doctor/probes.py +58 -2
  15. cluxion_agentplugin_preprocessing-0.3.25/src/cluxion_agentplugin_preprocessing/hermes_deliver_patch.py +375 -0
  16. cluxion_agentplugin_preprocessing-0.3.25/src/cluxion_agentplugin_preprocessing/patches/hermes-deliver-agent.patch +89 -0
  17. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/plugin.py +0 -1
  18. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/plugin.yaml +2 -2
  19. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/schemas.py +1 -2
  20. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/slash_commands.py +5 -5
  21. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/cli.py +4 -1
  22. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/loop_auto.py +64 -10
  23. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/guard_daemon_host.py +47 -10
  24. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/guard_bridge.py +125 -43
  25. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/rust_bridge.py +5 -2
  26. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_cluxion_runtime_spine.py +26 -1
  27. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_guard.py +11 -0
  28. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_guard_daemon_host.py +13 -1
  29. cluxion_agentplugin_preprocessing-0.3.25/tests/runtime/test_loop_auto.py +215 -0
  30. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_doctor.py +20 -0
  31. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_guard_watch.py +18 -0
  32. cluxion_agentplugin_preprocessing-0.3.25/tests/test_hermes_deliver_patch.py +57 -0
  33. cluxion_agentplugin_preprocessing-0.3.25/tests/test_packaging_policy.py +40 -0
  34. cluxion_agentplugin_preprocessing-0.3.23/adapters/claude/skills/preprocess/SKILL.md +0 -33
  35. cluxion_agentplugin_preprocessing-0.3.23/adapters/codex/config-snippet.toml +0 -5
  36. cluxion_agentplugin_preprocessing-0.3.23/tests/runtime/test_loop_auto.py +0 -106
  37. cluxion_agentplugin_preprocessing-0.3.23/tests/test_packaging_policy.py +0 -16
  38. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/.github/profile/README.md +0 -0
  39. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/.gitignore +0 -0
  40. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/LICENSE +0 -0
  41. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/README.md +0 -0
  42. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/architecture.md +0 -0
  43. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/harness-logic.md +0 -0
  44. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/honesty-preprocessing.md +0 -0
  45. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/security.md +0 -0
  46. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/Cargo.lock +0 -0
  47. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/Cargo.toml +0 -0
  48. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/pyproject.toml +0 -0
  49. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/context.rs +0 -0
  50. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/dispatch.rs +0 -0
  51. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/guard.rs +0 -0
  52. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/lib.rs +0 -0
  53. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/main.rs +0 -0
  54. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/queue.rs +0 -0
  55. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/types.rs +0 -0
  56. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/uv.lock +0 -0
  57. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/__init__.py +0 -0
  58. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/doctor/__init__.py +0 -0
  59. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/doctor/framework.py +0 -0
  60. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/guard_watch.py +0 -0
  61. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/hermes_config.py +0 -0
  62. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/runner.py +0 -0
  63. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/__init__.py +0 -0
  64. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/__main__.py +0 -0
  65. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/__init__.py +0 -0
  66. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/contract.py +0 -0
  67. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/grok_build.py +0 -0
  68. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/hermes.py +0 -0
  69. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/spec.py +0 -0
  70. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/bootstrap.py +0 -0
  71. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/__init__.py +0 -0
  72. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/clarification.py +0 -0
  73. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/context_compress.py +0 -0
  74. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/dispatch_store.py +0 -0
  75. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/harness.py +0 -0
  76. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/hybrid_forget.py +0 -0
  77. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/intent.py +0 -0
  78. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/ledger.py +0 -0
  79. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/ledger_codec.py +0 -0
  80. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/llm_compress.py +0 -0
  81. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/plan_codec.py +0 -0
  82. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/preprocess.py +0 -0
  83. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/types.py +0 -0
  84. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/work_queue.py +0 -0
  85. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/models/__init__.py +0 -0
  86. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/models/supervisor.py +0 -0
  87. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/models/vllm_mlx.py +0 -0
  88. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/__init__.py +0 -0
  89. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/py_queue.py +0 -0
  90. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/queue_bridge.py +0 -0
  91. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/web/__init__.py +0 -0
  92. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/web/browser_bridge.py +0 -0
  93. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_auto_compress_middleware.py +0 -0
  94. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_bin_resolution.py +0 -0
  95. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_browser_bridge.py +0 -0
  96. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_clarification.py +0 -0
  97. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_context_compress.py +0 -0
  98. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_context_compress_llm_forget.py +0 -0
  99. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_contract.py +0 -0
  100. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_dispatch_store.py +0 -0
  101. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_estimate_tokens.py +0 -0
  102. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_ledger.py +0 -0
  103. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_py_queue_concurrency.py +0 -0
  104. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_queue_backends.py +0 -0
  105. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_runtime_adapter_cli.py +0 -0
  106. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_rust_queue.py +0 -0
  107. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_supervisor.py +0 -0
  108. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_bootstrap.py +0 -0
  109. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_hermes_config.py +0 -0
  110. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_plugin.py +0 -0
  111. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_runner.py +0 -0
  112. {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_slash_commands.py +0 -0
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "cluxion-agentplugin-preprocessing",
3
- "version": "0.2.0",
4
- "description": "Cluxion preprocessing: honesty, clarification, Rust work queue, resource admission.",
3
+ "version": "0.3.25",
4
+ "description": "Cluxion preprocessing: honesty, clarification, durable work queue, loop_auto, doctor, and resource guard contracts.",
5
5
  "author": "cluxion",
6
6
  "commands": "./commands",
7
7
  "skills": "./skills"
8
- }
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "cluxion-agentplugin-preprocessing",
3
+ "version": "0.3.25",
4
+ "description": "Cluxion preprocessing: honesty, clarification, durable work queue, loop_auto, doctor, and resource guard contracts.",
5
+ "author": "cluxion",
6
+ "commands": "./commands",
7
+ "skills": "./skills"
8
+ }
@@ -17,11 +17,11 @@
17
17
 
18
18
  1. 사용자 요청 수신 → `cluxion_plan` (또는 `cluxion-runtime plan`)
19
19
  2. `clarification.required`이면 사용자에게 질문, 작업 보류
20
- 3. `queued` 모드면 `cluxion_queue_next` → segment 처리 → `cluxion_queue_record` `cluxion_queue_brief`
20
+ 3. `queued` 모드: 수동이면 `cluxion_queue_next` → → `cluxion_queue_brief`. 자동 드레인은 `/loopauto`, `loop_auto: true`, 또는 전용 `loop-auto` 명령으로만 실행합니다.
21
21
  4. `answer_policy.required_checks`를 지키며 응답
22
22
  5. (선택) `cluxion_queue_brief` 결과를 ForgetForge에 저장: `forgetforge import-brief --source preprocessing`
23
23
 
24
- Skill: [`adapters/claude/skills/preprocess/SKILL.md`](../adapters/claude/skills/preprocess/SKILL.md)
24
+ Skill: [`skills/preprocess/SKILL.md`](../skills/preprocess/SKILL.md)
25
25
 
26
26
  ### 사람(개발자)이 할 일
27
27
 
@@ -37,7 +37,9 @@ cluxion-preprocess enable # Hermes
37
37
  |------|------|
38
38
  | [architecture.md](architecture.md) | 패키지 구조, 데이터 흐름, host 경계 |
39
39
  | [design.md](design.md) | 정직함, 명확화, 성능 |
40
- | [installation.md](installation.md) | 설치, Hermes 활성화, Rust 큐 |
40
+ | [installation.md](installation.md) | 설치, Hermes 활성화, 슬래시, Rust 큐 |
41
+ | [tools.md](tools.md) | 도구·슬래시·loopAuto·queued workflow |
42
+ | 통합 가이드 | MacBot `Docs/cluxion-plugins-guide.md` §2-A (5종 슬래시 전체) |
41
43
  | [tools.md](tools.md) | 도구, preprocessing mode, queue |
42
44
  | [agent-surfaces.md](agent-surfaces.md) | Hermes / Claude / Codex / Grok |
43
45
  | [rust-architecture.md](rust-architecture.md) | Rust 메인 · Python adapter |
@@ -48,4 +50,4 @@ cluxion-preprocess enable # Hermes
48
50
  - 플러그인이 host 대신 LLM completion을 대체하는 것
49
51
  - 비공개 인프라·배포 비밀
50
52
 
51
- 이슈는 GitHub Issues를 사용해 주세요.
53
+ 이슈는 GitHub Issues를 사용해 주세요.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cluxion-agentplugin-preprocessing
3
- Version: 0.3.23
3
+ Version: 0.3.25
4
4
  Summary: Universal agent plugin for Cluxion preprocessing, honesty contracts, clarification, Rust work queue, and resource-aware harness handoff.
5
5
  Project-URL: Homepage, https://github.com/cluxion/cluxion-Agentplugin-preprocessing
6
6
  Project-URL: Repository, https://github.com/cluxion/cluxion-Agentplugin-preprocessing
@@ -84,6 +84,23 @@ cluxion-preprocess doctor --json # 구조화 출력
84
84
 
85
85
  Hermes 안에서는 `cluxion_doctor` 도구로도 노출됩니다.
86
86
 
87
+ ## Hermes 슬래시 커맨드 (0.3.23+)
88
+
89
+ `/` 입력 시 🔌로 자동완성됩니다.
90
+
91
+ | 슬래시 | 용도 |
92
+ |---|---|
93
+ | `/loopauto <prompt>` | 명시적 plan + 자동 큐 드레인 |
94
+ | `/cluxion-doctor` | doctor (CLI `cluxion-preprocess doctor`와 동일) |
95
+
96
+ ```
97
+ /loopauto 4000줄 요구사항을 순서대로 구현하고 각 항목 증거를 남겨줘
98
+ /cluxion-doctor
99
+ ```
100
+
101
+ `/loopAuto` prompt prefix는 이제 queue 계약만 만들고, blocking drain은 `loop_auto=true` 또는 전용
102
+ `loop-auto` 명령에서만 실행됩니다.
103
+
87
104
  ## 문제 해결
88
105
 
89
106
  | 증상 | 해결 |
@@ -152,6 +169,23 @@ cluxion-preprocess doctor --json # structured output
152
169
 
153
170
  Also exposed inside Hermes as the `cluxion_doctor` tool.
154
171
 
172
+ ## Hermes slash commands (0.3.23+)
173
+
174
+ Type `/` to see plugin commands with a 🔌 badge.
175
+
176
+ | Slash | Purpose |
177
+ |---|---|
178
+ | `/loopauto <prompt>` | Explicit plan + autonomous queue drain |
179
+ | `/cluxion-doctor` | Run doctor (same as `cluxion-preprocess doctor`) |
180
+
181
+ ```
182
+ /loopauto implement every REQ line and record evidence
183
+ /cluxion-doctor
184
+ ```
185
+
186
+ The `/loopAuto` prompt prefix now only queues work. Blocking drain requires explicit `loop_auto=true`
187
+ or the dedicated `loop-auto` command.
188
+
155
189
  ## Troubleshooting
156
190
 
157
191
  | Problem | Fix |
@@ -52,6 +52,23 @@ cluxion-preprocess doctor --json # 구조화 출력
52
52
 
53
53
  Hermes 안에서는 `cluxion_doctor` 도구로도 노출됩니다.
54
54
 
55
+ ## Hermes 슬래시 커맨드 (0.3.23+)
56
+
57
+ `/` 입력 시 🔌로 자동완성됩니다.
58
+
59
+ | 슬래시 | 용도 |
60
+ |---|---|
61
+ | `/loopauto <prompt>` | 명시적 plan + 자동 큐 드레인 |
62
+ | `/cluxion-doctor` | doctor (CLI `cluxion-preprocess doctor`와 동일) |
63
+
64
+ ```
65
+ /loopauto 4000줄 요구사항을 순서대로 구현하고 각 항목 증거를 남겨줘
66
+ /cluxion-doctor
67
+ ```
68
+
69
+ `/loopAuto` prompt prefix는 이제 queue 계약만 만들고, blocking drain은 `loop_auto=true` 또는 전용
70
+ `loop-auto` 명령에서만 실행됩니다.
71
+
55
72
  ## 문제 해결
56
73
 
57
74
  | 증상 | 해결 |
@@ -120,6 +137,23 @@ cluxion-preprocess doctor --json # structured output
120
137
 
121
138
  Also exposed inside Hermes as the `cluxion_doctor` tool.
122
139
 
140
+ ## Hermes slash commands (0.3.23+)
141
+
142
+ Type `/` to see plugin commands with a 🔌 badge.
143
+
144
+ | Slash | Purpose |
145
+ |---|---|
146
+ | `/loopauto <prompt>` | Explicit plan + autonomous queue drain |
147
+ | `/cluxion-doctor` | Run doctor (same as `cluxion-preprocess doctor`) |
148
+
149
+ ```
150
+ /loopauto implement every REQ line and record evidence
151
+ /cluxion-doctor
152
+ ```
153
+
154
+ The `/loopAuto` prompt prefix now only queues work. Blocking drain requires explicit `loop_auto=true`
155
+ or the dedicated `loop-auto` command.
156
+
123
157
  ## Troubleshooting
124
158
 
125
159
  | Problem | Fix |
@@ -13,6 +13,7 @@ cluxion-preprocess enable # Hermes
13
13
  ## 연결된 AI 연동
14
14
 
15
15
  - Hermes: `cluxion_*` 도구 (plugin enable 후)
16
+ - Hermes 슬래시 (0.3.23+): `/loopauto`, `/cluxion-doctor` — `/` 자동완성
16
17
  - Claude: `adapters/claude/skills/preprocess/SKILL.md`
17
18
  - Codex: `adapters/codex/config-snippet.toml`
18
19
  - 공통: `cluxion-runtime plan --surface <hermes|claude|codex|grok_build>`
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Run Cluxion plugin diagnostics.
3
+ ---
4
+
5
+ Run:
6
+
7
+ ```bash
8
+ cluxion-preprocess doctor
9
+ ```
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Run Cluxion preprocessing and return the JSON contract.
3
+ argument-hint: "<prompt>"
4
+ ---
5
+
6
+ Run:
7
+
8
+ ```bash
9
+ cluxion-runtime plan --surface codex --json-stdin
10
+ ```
11
+
12
+ stdin:
13
+
14
+ ```json
15
+ {"prompt":"$ARGUMENTS","cwd":"$PWD"}
16
+ ```
17
+
18
+ Return the JSON contract to the host flow. Do not run `loop-auto` unless `loop_auto=true` is explicitly present.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Explicitly drain a queued Cluxion work bundle.
3
+ argument-hint: "<work_id>"
4
+ ---
5
+
6
+ Run:
7
+
8
+ ```bash
9
+ cluxion-runtime loop-auto --work-id "$ARGUMENTS" --json-stdin
10
+ ```
11
+
12
+ stdin:
13
+
14
+ ```json
15
+ {"work_id":"$ARGUMENTS"}
16
+ ```
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "cluxion-agentplugin-preprocessing"
7
- version = "0.3.23"
7
+ version = "0.3.25"
8
8
  description = "Universal agent plugin for Cluxion preprocessing, honesty contracts, clarification, Rust work queue, and resource-aware harness handoff."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -67,14 +67,20 @@ packages = ["src/cluxion_agentplugin_preprocessing", "src/cluxion_runtime"]
67
67
  [tool.hatch.build.targets.wheel.force-include]
68
68
  "cluxion-Docs" = "cluxion_agentplugin_docs/cluxion-Docs"
69
69
  ".github/profile/README.md" = "cluxion_agentplugin_docs/github-profile/README.md"
70
- "adapters" = "cluxion_agentplugin_adapters"
70
+ ".claude-plugin" = ".claude-plugin"
71
+ ".codex-plugin" = ".codex-plugin"
72
+ "commands" = "commands"
73
+ "skills" = "skills"
71
74
 
72
75
  [tool.hatch.build.targets.sdist]
73
76
  include = [
74
77
  "src/cluxion_agentplugin_preprocessing",
75
78
  "src/cluxion_runtime",
76
79
  "rust/cluxion_queue",
77
- "adapters",
80
+ ".claude-plugin",
81
+ ".codex-plugin",
82
+ "commands",
83
+ "skills",
78
84
  "tests",
79
85
  "cluxion-Docs",
80
86
  ".github/profile",
@@ -93,4 +99,4 @@ line-length = 120
93
99
  src = ["src", "tests"]
94
100
 
95
101
  [tool.ruff.lint]
96
- select = ["F", "I", "UP", "B", "SIM", "RUF"]
102
+ select = ["F", "I", "UP", "B", "SIM", "RUF"]
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: cluxion-preprocess
3
+ description: Use Cluxion preprocessing before agent work that needs clarification, queueing, loop_auto, doctor checks, or surface-specific JSON contracts.
4
+ ---
5
+
6
+ # Cluxion Preprocess
7
+
8
+ Call the runtime CLI. The plugin returns JSON contracts; the host agent owns model calls and final answers.
9
+
10
+ ## Plan
11
+
12
+ ```bash
13
+ cluxion-runtime plan --surface codex --json-stdin
14
+ ```
15
+
16
+ Use `--surface claude` in Claude Code. Minimum stdin:
17
+
18
+ ```json
19
+ {"prompt":"<user request>","cwd":"<workspace>"}
20
+ ```
21
+
22
+ Rules:
23
+
24
+ 1. If `clarification.required` is true, ask the user before starting work.
25
+ 2. If `host_execution.queue_required` is true, process the queue with `queue-next`, `queue-record`, and `queue-brief`, or call `loop-auto` only when the user or payload explicitly opts in with `loop_auto=true`.
26
+ 3. A `/loopAuto` prompt prefix only requests queueing and is stripped by `plan`; it does not start a blocking drain.
27
+ 4. Never claim checks were run unless the host actually ran them.
28
+
29
+ ## Queue
30
+
31
+ ```bash
32
+ cluxion-runtime queue-next --work-id <work_id>
33
+ cluxion-runtime queue-record --work-id <work_id> --step-id <step_id> --json-stdin
34
+ cluxion-runtime queue-brief --work-id <work_id>
35
+ ```
36
+
37
+ ## Explicit loop_auto
38
+
39
+ ```bash
40
+ cluxion-runtime loop-auto --work-id <work_id> --json-stdin
41
+ ```
42
+
43
+ ## Doctor
44
+
45
+ ```bash
46
+ cluxion-preprocess doctor
47
+ ```
@@ -9,7 +9,7 @@ import sys
9
9
  from pathlib import Path
10
10
  from typing import TYPE_CHECKING
11
11
 
12
- from cluxion_agentplugin_preprocessing import __version__, hermes_config, runner
12
+ from cluxion_agentplugin_preprocessing import __version__, hermes_config, hermes_deliver_patch, runner
13
13
  from cluxion_agentplugin_preprocessing.doctor import (
14
14
  render_json,
15
15
  render_text,
@@ -39,6 +39,8 @@ def main(argv: Sequence[str] | None = None) -> int:
39
39
  return _hermes_config(args)
40
40
  if args.command == "doctor":
41
41
  return _doctor(args)
42
+ if args.command == "hermes-patch":
43
+ return _hermes_patch(args)
42
44
  parser.print_help(sys.stderr)
43
45
  return 2
44
46
 
@@ -83,6 +85,22 @@ def _parser() -> argparse.ArgumentParser:
83
85
  doctor = subparsers.add_parser("doctor", help="Run embedded health checks")
84
86
  doctor.add_argument("--json", action="store_true")
85
87
  doctor.add_argument("--verbose", action="store_true")
88
+ patch = subparsers.add_parser(
89
+ "hermes-patch",
90
+ help="Explicitly apply or verify Hermes deliver=agent patch",
91
+ )
92
+ patch.add_argument("action", nargs="?", choices=("status", "apply"), default="status")
93
+ patch.add_argument(
94
+ "--status",
95
+ action="store_true",
96
+ help="Deprecated alias for: hermes-patch status",
97
+ )
98
+ patch.add_argument("--dry-run", action="store_true")
99
+ patch.add_argument(
100
+ "--hermes-root",
101
+ default=None,
102
+ help="Hermes agent source root (default: auto-detect ~/.hermes/hermes-agent)",
103
+ )
86
104
  return parser
87
105
 
88
106
 
@@ -117,7 +135,8 @@ def _status(args: argparse.Namespace) -> int:
117
135
 
118
136
  def _enable(args: argparse.Namespace) -> int:
119
137
  result = hermes_config.enable_plugin(args.home, dry_run=bool(args.dry_run))
120
- print(json.dumps({"ok": True, **result.to_dict()}, ensure_ascii=False, sort_keys=True))
138
+ payload = {"ok": True, **result.to_dict()}
139
+ print(json.dumps(payload, ensure_ascii=False, sort_keys=True))
121
140
  return 0
122
141
 
123
142
 
@@ -142,6 +161,21 @@ def _hermes_config(args: argparse.Namespace) -> int:
142
161
  return 0 if result.ok else 1
143
162
 
144
163
 
164
+ def _hermes_root_arg(args: argparse.Namespace) -> Path | None:
165
+ raw = getattr(args, "hermes_root", None)
166
+ return Path(raw).expanduser() if raw else None
167
+
168
+
169
+ def _hermes_patch(args: argparse.Namespace) -> int:
170
+ root = _hermes_root_arg(args)
171
+ if args.status or args.action == "status":
172
+ result = hermes_deliver_patch.patch_status(root)
173
+ else:
174
+ result = hermes_deliver_patch.ensure_applied(hermes_root=root, dry_run=bool(args.dry_run))
175
+ print(json.dumps({"ok": result.status == "applied", **result.to_dict()}, ensure_ascii=False, sort_keys=True))
176
+ return 0 if result.status == "applied" else 1
177
+
178
+
145
179
  def _doctor(args: argparse.Namespace) -> int:
146
180
  pkg = "cluxion_agentplugin_preprocessing.doctor"
147
181
  catalog_path = Path(str(importlib.resources.files(pkg).joinpath("catalog.json")))
@@ -513,6 +513,39 @@
513
513
  "change_robust": "Enforce sort_keys=True in all queue/dispatch serialization; add docstring reminding of determinism requirement",
514
514
  "detection_method": "python -c 'import json; d = {\"z\": 1, \"a\": 2}; j1 = json.dumps(d, sort_keys=True); j2 = json.dumps(d, sort_keys=True); assert j1 == j2, f\"{j1} != {j2}\"'"
515
515
  },
516
+ {
517
+ "check_id": "hermes_deliver_patch_status",
518
+ "category": "hermes_contract",
519
+ "severity": "high",
520
+ "what_it_checks": "Hermes deliver=agent source patch is absent, fully applied, or partially applied",
521
+ "failure_symptom": "deliver=agent slash behavior silently does not exist or only some Hermes paths support it",
522
+ "likely_causes": [
523
+ "Hermes source changed and patch anchors no longer match",
524
+ "A previous manual patch only touched some files",
525
+ "HERMES_AGENT_ROOT points at the wrong checkout"
526
+ ],
527
+ "fix_steps": [
528
+ "Run: cluxion-preprocess hermes-patch status",
529
+ "If needed, run: cluxion-preprocess hermes-patch apply",
530
+ "If anchors mismatch, restore or update the Hermes checkout before applying"
531
+ ],
532
+ "change_robust": "Patch is explicit opt-in and reports applied/partial/no-hermes/anchors-mismatch instead of silently editing on session start"
533
+ },
534
+ {
535
+ "check_id": "version_files_synced",
536
+ "category": "install",
537
+ "severity": "high",
538
+ "what_it_checks": "pyproject, plugin.yaml, package plugin.yaml, and Codex/Claude plugin manifests use the same version",
539
+ "failure_symptom": "Marketplace plugin metadata, Hermes adapter metadata, and installed Python distribution report different versions",
540
+ "likely_causes": [
541
+ "Version bumped in pyproject only",
542
+ "Root plugin artifact added without updating package metadata"
543
+ ],
544
+ "fix_steps": [
545
+ "Set every plugin manifest version to pyproject.toml project.version"
546
+ ],
547
+ "change_robust": "Doctor compares repo metadata files directly and fails on any drift"
548
+ },
516
549
  {
517
550
  "check_id": "temp_file_cleanup",
518
551
  "category": "resource",
@@ -9,7 +9,9 @@ import os
9
9
  import shutil
10
10
  import sys
11
11
  import tempfile
12
+ import tomllib
12
13
  from collections.abc import Callable
14
+ from pathlib import Path
13
15
 
14
16
  from .framework import DoctorContext
15
17
 
@@ -306,12 +308,66 @@ def hermes_plugin_enabled(ctx: DoctorContext) -> tuple[str, str]:
306
308
  if n in enabled and n not in disabled:
307
309
  return "pass", f"{n} in enabled"
308
310
  if any(n in enabled for n in names):
309
- return "warn", "present but also disabled?"
310
- return "warn", "not in plugins.enabled"
311
+ return "warn", "present but also disabled; fix: remove it from plugins.disabled"
312
+ return "fail", "not in plugins.enabled; fix: run cluxion-preprocess enable"
311
313
  except Exception as e:
312
314
  return "skip", f"uncertainty: {type(e).__name__}"
313
315
 
314
316
 
317
+ @_register("hermes_deliver_patch_status")
318
+ def hermes_deliver_patch_status(ctx: DoctorContext) -> tuple[str, str]:
319
+ del ctx
320
+ try:
321
+ from cluxion_agentplugin_preprocessing import hermes_deliver_patch
322
+
323
+ result = hermes_deliver_patch.patch_status()
324
+ if result.status == "applied":
325
+ return "pass", "applied"
326
+ if result.status == "no_hermes":
327
+ return "skip", "no Hermes source tree; fix: set HERMES_AGENT_ROOT or skip deliver=agent patch"
328
+ if result.status == "partial":
329
+ return "fail", "partial patch; fix: restore Hermes tree then run cluxion-preprocess hermes-patch apply"
330
+ return "warn", f"{result.status}; fix: run cluxion-preprocess hermes-patch apply"
331
+ except Exception as e:
332
+ return "fail", f"patch status error: {e}; fix: run cluxion-preprocess hermes-patch status"
333
+
334
+
335
+ @_register("version_files_synced")
336
+ def version_files_synced(ctx: DoctorContext) -> tuple[str, str]:
337
+ try:
338
+ pyproject_path = ctx.cwd / "pyproject.toml"
339
+ if not pyproject_path.exists():
340
+ return "skip", "repo files not present"
341
+ version = tomllib.loads(pyproject_path.read_text(encoding="utf-8"))["project"]["version"]
342
+ paths = {
343
+ "plugin.yaml": ctx.cwd / "plugin.yaml",
344
+ "package plugin.yaml": ctx.cwd / "src" / "cluxion_agentplugin_preprocessing" / "plugin.yaml",
345
+ "claude plugin": ctx.cwd / ".claude-plugin" / "plugin.json",
346
+ "codex plugin": ctx.cwd / ".codex-plugin" / "plugin.json",
347
+ }
348
+ drift: list[str] = []
349
+ for label, path in paths.items():
350
+ if not path.exists():
351
+ drift.append(f"{label}=missing")
352
+ continue
353
+ found = _version_from_file(path)
354
+ if found != version:
355
+ drift.append(f"{label}={found}")
356
+ if drift:
357
+ return "fail", f"pyproject={version} drift={'; '.join(drift)}; fix: sync plugin versions"
358
+ return "pass", version
359
+ except Exception as e:
360
+ return "fail", f"version check error: {e}; fix: inspect pyproject/plugin metadata"
361
+
362
+
363
+ def _version_from_file(path: Path) -> str:
364
+ if path.suffix == ".json":
365
+ return str(_json.loads(path.read_text(encoding="utf-8")).get("version", ""))
366
+ import yaml
367
+
368
+ return str(yaml.safe_load(path.read_text(encoding="utf-8")).get("version", ""))
369
+
370
+
315
371
  @_register("env_var_consistency")
316
372
  def env_var_consistency(ctx: DoctorContext) -> tuple[str, str]:
317
373
  try: