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.
- {cluxion_agentplugin_preprocessing-0.3.23/adapters/claude → cluxion_agentplugin_preprocessing-0.3.25}/.claude-plugin/plugin.json +3 -3
- cluxion_agentplugin_preprocessing-0.3.25/.codex-plugin/plugin.json +8 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/Docs/README.md +6 -4
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/PKG-INFO +35 -1
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/README.md +34 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/install-and-operations.md +1 -0
- cluxion_agentplugin_preprocessing-0.3.25/commands/cluxion-doctor.md +9 -0
- cluxion_agentplugin_preprocessing-0.3.25/commands/cluxion-plan.md +18 -0
- cluxion_agentplugin_preprocessing-0.3.25/commands/loop-auto.md +16 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/pyproject.toml +10 -4
- cluxion_agentplugin_preprocessing-0.3.25/skills/preprocess/SKILL.md +47 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/cli.py +36 -2
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/doctor/catalog.json +33 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/doctor/probes.py +58 -2
- cluxion_agentplugin_preprocessing-0.3.25/src/cluxion_agentplugin_preprocessing/hermes_deliver_patch.py +375 -0
- cluxion_agentplugin_preprocessing-0.3.25/src/cluxion_agentplugin_preprocessing/patches/hermes-deliver-agent.patch +89 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/plugin.py +0 -1
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/plugin.yaml +2 -2
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/schemas.py +1 -2
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/slash_commands.py +5 -5
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/cli.py +4 -1
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/loop_auto.py +64 -10
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/guard_daemon_host.py +47 -10
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/guard_bridge.py +125 -43
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/rust_bridge.py +5 -2
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_cluxion_runtime_spine.py +26 -1
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_guard.py +11 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_guard_daemon_host.py +13 -1
- cluxion_agentplugin_preprocessing-0.3.25/tests/runtime/test_loop_auto.py +215 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_doctor.py +20 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_guard_watch.py +18 -0
- cluxion_agentplugin_preprocessing-0.3.25/tests/test_hermes_deliver_patch.py +57 -0
- cluxion_agentplugin_preprocessing-0.3.25/tests/test_packaging_policy.py +40 -0
- cluxion_agentplugin_preprocessing-0.3.23/adapters/claude/skills/preprocess/SKILL.md +0 -33
- cluxion_agentplugin_preprocessing-0.3.23/adapters/codex/config-snippet.toml +0 -5
- cluxion_agentplugin_preprocessing-0.3.23/tests/runtime/test_loop_auto.py +0 -106
- cluxion_agentplugin_preprocessing-0.3.23/tests/test_packaging_policy.py +0 -16
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/.github/profile/README.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/.gitignore +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/LICENSE +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/README.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/architecture.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/harness-logic.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/honesty-preprocessing.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/cluxion-Docs/security.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/Cargo.lock +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/Cargo.toml +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/pyproject.toml +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/context.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/dispatch.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/guard.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/lib.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/main.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/queue.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/src/types.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/rust/cluxion_queue/uv.lock +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/doctor/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/doctor/framework.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/guard_watch.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/hermes_config.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_agentplugin_preprocessing/runner.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/__main__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/contract.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/grok_build.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/hermes.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/adapters/spec.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/bootstrap.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/clarification.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/context_compress.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/dispatch_store.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/harness.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/hybrid_forget.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/intent.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/ledger.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/ledger_codec.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/llm_compress.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/plan_codec.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/preprocess.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/types.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/core/work_queue.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/models/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/models/supervisor.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/models/vllm_mlx.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/py_queue.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/resources/queue_bridge.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/web/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/src/cluxion_runtime/web/browser_bridge.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_auto_compress_middleware.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_bin_resolution.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_browser_bridge.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_clarification.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_context_compress.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_context_compress_llm_forget.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_contract.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_dispatch_store.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_estimate_tokens.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_ledger.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_py_queue_concurrency.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_queue_backends.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_runtime_adapter_cli.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_rust_queue.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/runtime/test_supervisor.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_bootstrap.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_hermes_config.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_plugin.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/tests/test_runner.py +0 -0
- {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.
|
|
4
|
-
"description": "Cluxion preprocessing: honesty, clarification,
|
|
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
|
+
}
|
{cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/Docs/README.md
RENAMED
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
|
|
18
18
|
1. 사용자 요청 수신 → `cluxion_plan` (또는 `cluxion-runtime plan`)
|
|
19
19
|
2. `clarification.required`이면 사용자에게 질문, 작업 보류
|
|
20
|
-
3. `queued`
|
|
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: [`
|
|
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를 사용해 주세요.
|
{cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cluxion-agentplugin-preprocessing
|
|
3
|
-
Version: 0.3.
|
|
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 |
|
{cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/README.md
RENAMED
|
@@ -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,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
|
+
```
|
{cluxion_agentplugin_preprocessing-0.3.23 → cluxion_agentplugin_preprocessing-0.3.25}/pyproject.toml
RENAMED
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cluxion-agentplugin-preprocessing"
|
|
7
|
-
version = "0.3.
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
|
|
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 "
|
|
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:
|