@hecer/yoke 1.10.0 → 1.12.0

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.
@@ -0,0 +1,142 @@
1
+ # Qwen Code, DeepSeek and Kimi
2
+
3
+ Validated against Qwen Code 0.23.0 on 2026-09-08. Yoke's execution provider remains
4
+ `qwen`: Qwen Code supplies the coding tools and connects to the selected model API.
5
+ DeepSeek and Kimi do not require imaginary `deepseek` or `kimi` executables.
6
+
7
+ ## Setup
8
+
9
+ Install Qwen Code and configure/authenticate the account you want to use. For an
10
+ existing Qwen Code model configuration:
11
+
12
+ ```sh
13
+ yoke setup . --yes --agent=qwen
14
+ ```
15
+
16
+ The default `qwen-standard` routing worker uses Qwen Code's configured model. It
17
+ no longer assumes an account can access four particular Qwen API models or calls
18
+ the same model different intelligence tiers. Existing custom workers are kept.
19
+ Use `--routing-preset` to explicitly reset old generated workers; otherwise edit
20
+ `.yoke/config.yaml` to retain your own measured profiles. A single standard profile
21
+ cannot satisfy stronger prepared assessments: add suitable explicit workers before
22
+ running those tasks, or choose an appropriate configured routing fallback.
23
+
24
+ For the opt-in DeepSeek and/or Kimi API presets:
25
+
26
+ ```sh
27
+ yoke setup . --yes --agent=qwen --runner=qwen --model-provider=deepseek,kimi
28
+ ```
29
+
30
+ Provide `DEEPSEEK_API_KEY` and `MOONSHOT_API_KEY` in the environment of the Qwen
31
+ process. Setup stores only their **variable names**, never key values, in
32
+ `.qwen/settings.json`. These are separate API accounts/billing; the Kimi preset
33
+ uses Moonshot's platform API, not Kimi Code subscription credentials. Select only
34
+ providers whose credentials you have configured. Setup does not contact either API
35
+ or prove authentication. Commit the generated project configuration and skills
36
+ before using isolated Git worktrees so the worker receives them.
37
+
38
+ | Preset | Models installed | Endpoint | Key variable |
39
+ | --- | --- | --- | --- |
40
+ | `deepseek` | `deepseek-v4-flash`, `deepseek-v4-pro` | `https://api.deepseek.com/v1` | `DEEPSEEK_API_KEY` |
41
+ | `kimi` | `kimi-k2.6`, `kimi-k2.7-code`, `kimi-k3` | `https://api.moonshot.ai/v1` | `MOONSHOT_API_KEY` |
42
+
43
+ New API workers use `openai::MODEL` in Yoke. The adapter translates this to Qwen's
44
+ `--auth-type openai --model MODEL`, selecting the model's endpoint and environment
45
+ key together even when Qwen's default login uses another protocol. Plain model IDs
46
+ keep their existing behavior. The same explicit selector syntax supports `anthropic`,
47
+ `gemini`, `vertex-ai` and `qwen-oauth` when configured in Qwen Code; only DeepSeek and
48
+ Kimi have new automatic API presets.
49
+
50
+ Example runner or routing worker:
51
+
52
+ ```yaml
53
+ runner:
54
+ agent: qwen
55
+ model: openai::kimi-k3
56
+ routing:
57
+ enabled: true
58
+ strategy: capability
59
+ maxCandidates: 3
60
+ workers:
61
+ - id: deepseek-standard
62
+ agent: qwen
63
+ model: openai::deepseek-v4-flash
64
+ tier: standard
65
+ costTier: low
66
+ capabilities: [implementation]
67
+ - id: kimi-frontier
68
+ agent: qwen
69
+ model: openai::kimi-k3
70
+ tier: frontier
71
+ costTier: high
72
+ capabilities: [implementation]
73
+ ```
74
+
75
+ Setup preserves existing endpoint/key/generation settings for a matching model ID,
76
+ existing custom worker IDs and an existing runner unless explicitly changed. It
77
+ adds missing preset entries and creates backups for changed settings. Regional or
78
+ self-hosted endpoints can be configured directly in Qwen's `modelProviders.openai`.
79
+ Avoid ambiguous duplicate model IDs across endpoints when selecting with `--model`.
80
+ Worker tiers and cost tiers are editable starting hypotheses, not measured rankings
81
+ or prices. Yoke accepts up to 32 configured profiles; this does not increase the
82
+ parallel execution limit.
83
+
84
+ ## Reasoning and permissions
85
+
86
+ Yoke does not pass a nonexistent Qwen `--effort` flag. Configure model-specific
87
+ reasoning in the matching Qwen `modelProviders` entry's `generationConfig` using
88
+ Qwen's supported parameters. Qwen Code owns streaming, tool execution and replay
89
+ of `reasoning_content` between tool calls. Supported thinking controls differ by
90
+ model and endpoint; no identical thinking levels or benchmark quality is implied.
91
+
92
+ - `safe`: `--approval-mode auto-edit --sandbox --allowed-tools run_shell_command`.
93
+ The explicit shell allowance enables headless test/build commands inside the
94
+ required Qwen sandbox. It is not a command-by-command human approval flow.
95
+ A working Qwen sandbox backend must be installed; Yoke never silently removes it.
96
+ - `read-only`: plan approval mode plus sandbox, without the shell allowance.
97
+ - `unsafe`: explicit `--yolo`, with no sandbox requested by Yoke.
98
+ - When Yoke owns worker slots, the Qwen `agent`/legacy `task`, `create_sub_session`,
99
+ `team_create` and `send_message` tools are excluded. This controls native
100
+ delegation tools, not arbitrary programs invoked from a permitted shell.
101
+ - `bare`, `reasoningEffort` and enabling native multi-agent execution remain
102
+ explicitly unsupported selections for Qwen.
103
+
104
+ The RTK hook uses native `PreToolUse` denial plus a retry instruction for simple,
105
+ supported commands. Qwen's documented `updatedInput` is not consumed by the
106
+ 0.23.0 execution path, so the hook does not claim transparent argument rewriting.
107
+ It never executes commands or grants permission. Existing RTK commands and complex
108
+ shell expressions are left alone; the generated context also supplies RTK guidance.
109
+ RTK must be installed in the execution environment, including the sandbox.
110
+ Re-running setup/retrofit removes only the obsolete Yoke `BeforeTool` entry,
111
+ preserves unrelated hooks and backs up the original settings.
112
+
113
+ ## Validation and limits
114
+
115
+ Regression tests cover native result/text/structured-result envelopes, nested
116
+ results, failures, cumulative token/model statistics, safe invocation and native
117
+ worker exclusions, manual skill policy, host/project detection, automatic review
118
+ selection, hook migration, all-agent configuration and idempotent API setup.
119
+
120
+ Reproduce the manual transport check after building:
121
+
122
+ ```sh
123
+ node scripts/qwen-contract-smoke.mjs /path/to/installed/qwen-code/cli-entry.js
124
+ ```
125
+
126
+ A manual contract smoke test used the **real Qwen Code 0.23.0 CLI** against a local
127
+ synthetic OpenAI-compatible SSE server. Qwen, DeepSeek and Kimi model selections
128
+ completed a read-file tool roundtrip, preserved reasoning content in the subsequent
129
+ request and returned parseable results with cumulative token usage. This local
130
+ transport check used explicit unsafe mode only in a scratch fixture; it does not
131
+ validate a real provider account, model quality, billing, rate limits, Windows or
132
+ a production sandbox backend. No authenticated provider benchmark was performed.
133
+
134
+ ## Primary references
135
+
136
+ - [Qwen headless output and permissions](https://qwenlm.github.io/qwen-code-docs/en/users/features/headless/)
137
+ - [Qwen model providers and generation configuration](https://qwenlm.github.io/qwen-code-docs/en/users/configuration/model-providers/)
138
+ - [Qwen source](https://github.com/QwenLM/qwen-code): native output adapters,
139
+ `toolHookTriggers.ts`, `coreToolScheduler.ts`, configuration and provider presets.
140
+ - [DeepSeek API models and endpoints](https://api-docs.deepseek.com/)
141
+ - [DeepSeek thinking tool calls](https://api-docs.deepseek.com/guides/thinking_mode/)
142
+ - [Kimi API models and endpoints](https://platform.kimi.ai/docs/overview)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yoke",
3
- "version": "1.10.0",
3
+ "version": "1.12.0",
4
4
  "description": "Cross-agent coding harness: curated skill canon, mechanical safety gates, autonomous loop with proof artifacts. CLI: npm i -g @hecer/yoke",
5
5
  "contextFileName": "GEMINI-EXTENSION.md"
6
6
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hecer/yoke",
3
- "version": "1.10.0",
4
- "description": "One harness, three agents, zero trust in \"done\" — cross-agent coding harness for Claude Code, Codex CLI, and Gemini CLI: one skill canon, mechanical safety gates, an autonomous loop with screenshot/video proofs.",
3
+ "version": "1.12.0",
4
+ "description": "One harness, four agents, zero trust in \"done\" — cross-agent coding harness for Claude Code, Codex CLI, Gemini CLI, and Qwen Code: one skill canon, mechanical safety gates, an autonomous loop with screenshot/video proofs.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "yoke": "dist/cli.js"