@akagilnc/pi-workflow-roles 0.1.5127 → 0.1.5139

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.
package/README.md CHANGED
@@ -25,7 +25,7 @@ ak-role judge --model <provider/model[:thinking]> --attach ./plan.md "Review thi
25
25
 
26
26
  Exit status reports lifecycle honesty, not business success: every lawful typed result (including `audit_escalation`) exits zero; a failure without a lawful result exits nonzero, and its Terminal carries the Error Artifact ref and original cause instead of a fabricated receipt.
27
27
 
28
- `ak-role resume <runId> [message]` reopens that run under the **current seat table** for model / host / engine — the same resolution as starting a new leg (model: `--model` → persistent seat → officer inherit; still none → error. host: `--host` → persistent seat host → package default `pi`). Configure seats first with `ak-role config set <seat> <provider/model[:thinking]>` or pass `--model` per invocation. Standard chain after a role `escalate`s: take the owner ruling and feed it back with `ak-role resume <runId> "<ruling>"` so the same run continues to a terminal. For every callable seat, including Notary/符宝郎, the optional `message` after `runId` is passed through unchanged as the continuation prompt (opaque: not parsed as flags); when omitted, the package adds no continuation text. Notary's separate explicit `new` command still accepts only its source-run locator, not a caller prompt. Global `--model` / `--thinking` / `--host` / `--engine` override the table for that resume only — place them before `<runId>` (either before `resume` or between `resume` and `<runId>`, e.g. `ak-role --model xai/grok-4.5 resume 01abc…` or `ak-role resume --model xai/grok-4.5 01abc…`); the one argv after `<runId>` is always the opaque message, never a flag (#471). On a real host switch (live seat host differs from the previous invocation host), prior native records of the previous host are delivered once as context to the target host; same-host resume does not re-inject. Each host writes only its native volume (Pi: `session/session.jsonl`; Grok CLI journals stay in the operator grok home, factory dossier is sitian records on the run), with unified ledger entries recorded in 司天台 (Sitian). Whether to resume is the caller's decision: the command does not require a typed HTTP 429 or a `resumable` state. Unknown run IDs and missing session principals are rejected. Every callable role accepts manual resume; Countersign and Gleaner-Left gained it in #599, Collector, Doctor, Notary, and Inspector in #633.
28
+ `ak-role resume <runId> [message]` reopens that run under the **current seat table** for model / host / engine — the same resolution as starting a new leg (model: `--model` → persistent seat → officer inherit; still none → error. host: `--host` → persistent seat host → package default `pi`). Configure seats first with `ak-role config set <seat> <provider/model[:thinking]>` or pass `--model` per invocation. Standard chain after a role `escalate`s: take the owner ruling and feed it back with `ak-role resume <runId> "<ruling>"` so the same run continues to a terminal. For every callable seat, including Notary/符宝郎, the optional `message` after `runId` is passed through unchanged as the continuation prompt (opaque: not parsed as flags); when omitted, the package adds no continuation text. Notary's separate explicit `new` command still accepts only its source-run locator, not a caller prompt. Global `--model` / `--thinking` / `--host` / `--engine` override the table for that resume only — place them before `<runId>` (either before `resume` or between `resume` and `<runId>`, e.g. `ak-role --model xai/grok-4.5 resume 01abc…` or `ak-role resume --model xai/grok-4.5 01abc…`); the one argv after `<runId>` is always the opaque message, never a flag (#471). On a real host switch (live seat host differs from the previous invocation host), prior native records of the previous host are delivered once as context to the target host; same-host resume does not re-inject. Each host writes only its native volume (Pi: `session/session.jsonl`; Grok CLI journals stay in the operator grok home, factory dossier is sitian records on the run), with unified ledger entries recorded in 司天台 (Sitian). Whether to resume is the caller's decision: the command does not require a typed HTTP 429 or a `resumable` state. Unknown run IDs are rejected. Any other resume failure prints one line pointing at that attempt's error record (`续跑失败,当次错误记录:<path>`); open the file for the cause. Every callable role accepts manual resume; Countersign and Gleaner-Left gained it in #599, Collector, Doctor, Notary, and Inspector in #633.
29
29
 
30
30
  All callable roles also retry a non-lawful LLM call in place (same `runId` and session) up to `autoResumeLimit` times. Unset defaults to 2; `ak-role config set-auto-resume-limit <N>` writes the ceiling (`0` disables). Lawful typed terminals (`accepted`, `audit_escalation`, `no_receipt`) stop immediately. Manual `ak-role resume` stays available.
31
31
 
@@ -40,8 +40,8 @@ ak-role config set inspector <provider/model[:thinking]>
40
40
  ak-role config set notary <provider/model[:thinking]>
41
41
  ak-role config unset gatekeeper
42
42
  # persistent labor engine (callable roles); one-shot override remains --engine
43
- # optional model id for multi-model engines (cursor/opencode/agy); omit for name-is-model engines
44
- ak-role config set-engine judge opus
43
+ # optional model id is a separate coordinate from the CLI engine name
44
+ ak-role config set-engine judge claude-code
45
45
  ak-role config set-engine coder cursor cursor-grok-4.6-high
46
46
  ak-role config set-engine-model coder cursor-grok-4.6-high
47
47
  ak-role config unset-engine-model coder
package/README.zh-CN.md CHANGED
@@ -25,7 +25,7 @@ ak-role judge --model <provider/model[:thinking]> --attach ./plan.md "Review thi
25
25
 
26
26
  退出码报的是生命周期诚实,不是业务成败:一切合法 typed 终态(含 `audit_escalation`)退出零;无合法终态的失败退出非零,其 Terminal 携带 Error Artifact 引用与原始原因,不伪造回执。
27
27
 
28
- `ak-role resume <runId> [message]` 按**现行席位表**的 model / host / engine 续跑该次运行——与新起角色腿同一解析(model:`--model` → 席位持久 → 官席继承;仍无则报错。host:`--host` → 席位持久 host → 包默认 `pi`)。先 `ak-role config set <seat> <provider/model[:thinking]>` 配席,或逐次带 `--model`。角色 `escalate`(直通御前)后拿到 owner 裁定,标准续跑是 `ak-role resume <runId> "<裁定>"`——把裁定喂回同一 run,角色继续走到终局。所有可调用席位(包括 Notary/符宝郎)都会将 `runId` 后可选的 `message` 原样作为续跑 prompt(opaque:不进全局旗标语法);省略时包不会添加续跑文本。Notary 另行的显式 `new` 命令仍只接受 source-run locator,不接受 caller prompt。全局 `--model` / `--thinking` / `--host` / `--engine` 仅覆盖本次 resume——须置于 `<runId>` 之前(放 `resume` 之前或 `resume` 与 `<runId>` 之间均可,例如 `ak-role --model xai/grok-4.5 resume 01abc…` 或 `ak-role resume --model xai/grok-4.5 01abc…`);`<runId>` 之后的那一个 argv 恒为原样透传的 message,绝非旗位(#471)。真实换宿主时(现行席位 host 与上一次 invocation host 不同),将前序宿主原生卷宗一次性作为 context 交付目标宿主;同宿主续跑不重复注入。各宿主仅直写自身原生卷宗(Pi:`session/session.jsonl`;Grok CLI 原始会话留在操作员 grok 家,工厂卷宗为该 run 的司天台记录),统一账目归入司天台。要不要续跑由调用者决定:不再要求 typed HTTP 429,也不要求 `resumable` 状态。未知 run ID、session 主体不在则拒绝。所有可调用角色均可手动 resume:给事中、左拾遗始于 #599,通进司、太医署、符宝郎、台院始于 #633。
28
+ `ak-role resume <runId> [message]` 按**现行席位表**的 model / host / engine 续跑该次运行——与新起角色腿同一解析(model:`--model` → 席位持久 → 官席继承;仍无则报错。host:`--host` → 席位持久 host → 包默认 `pi`)。先 `ak-role config set <seat> <provider/model[:thinking]>` 配席,或逐次带 `--model`。角色 `escalate`(直通御前)后拿到 owner 裁定,标准续跑是 `ak-role resume <runId> "<裁定>"`——把裁定喂回同一 run,角色继续走到终局。所有可调用席位(包括 Notary/符宝郎)都会将 `runId` 后可选的 `message` 原样作为续跑 prompt(opaque:不进全局旗标语法);省略时包不会添加续跑文本。Notary 另行的显式 `new` 命令仍只接受 source-run locator,不接受 caller prompt。全局 `--model` / `--thinking` / `--host` / `--engine` 仅覆盖本次 resume——须置于 `<runId>` 之前(放 `resume` 之前或 `resume` 与 `<runId>` 之间均可,例如 `ak-role --model xai/grok-4.5 resume 01abc…` 或 `ak-role resume --model xai/grok-4.5 01abc…`);`<runId>` 之后的那一个 argv 恒为原样透传的 message,绝非旗位(#471)。真实换宿主时(现行席位 host 与上一次 invocation host 不同),将前序宿主原生卷宗一次性作为 context 交付目标宿主;同宿主续跑不重复注入。各宿主仅直写自身原生卷宗(Pi:`session/session.jsonl`;Grok CLI 原始会话留在操作员 grok 家,工厂卷宗为该 run 的司天台记录),统一账目归入司天台。要不要续跑由调用者决定:不再要求 typed HTTP 429,也不要求 `resumable` 状态。未知 run ID 则拒绝;其余续跑失败只输出一行指向当次错误记录的指针(`续跑失败,当次错误记录:<path>`),原因看该文件。所有可调用角色均可手动 resume:给事中、左拾遗始于 #599,通进司、太医署、符宝郎、台院始于 #633。
29
29
 
30
30
  全部可调用角色在单次调用内对非 lawful LLM 终态原地续跑(同一 `runId` 与 session),次数上限为 `autoResumeLimit`。缺键默认 2;`ak-role config set-auto-resume-limit <N>` 写入(`0` 关闭自动续)。lawful typed 终态(`accepted` / `audit_escalation` / `no_receipt`)立即停止。手动 `ak-role resume` 仍可用。
31
31
 
@@ -40,8 +40,8 @@ ak-role config set inspector <provider/model[:thinking]>
40
40
  ak-role config set notary <provider/model[:thinking]>
41
41
  ak-role config unset gatekeeper
42
42
  # 持久劳务引擎(可调用角色);一次性覆盖仍用 --engine
43
- # 多模型引擎(cursor/opencode/agy)可附型号;名字即模型的引擎可省略
44
- ak-role config set-engine judge opus
43
+ # 可选型号是独立坐标,与 CLI 引擎名分开指定
44
+ ak-role config set-engine judge claude-code
45
45
  ak-role config set-engine coder cursor cursor-grok-4.6-high
46
46
  ak-role config set-engine-model coder cursor-grok-4.6-high
47
47
  ak-role config unset-engine-model coder
@@ -10542,7 +10542,7 @@ var init_option_definitions = __esm({
10542
10542
  examples: [
10543
10543
  "ak-role config set judge openai-codex/gpt-5.6-sol:high",
10544
10544
  "ak-role config unset gatekeeper",
10545
- "ak-role config set-engine judge opus",
10545
+ "ak-role config set-engine judge claude-code",
10546
10546
  "ak-role config set-engine coder cursor cursor-grok-4.6-high",
10547
10547
  "ak-role config set-engine-model coder cursor-grok-4.6-high",
10548
10548
  "ak-role config set-host judge grok-build",
@@ -10003,7 +10003,7 @@ var init_option_definitions = __esm({
10003
10003
  examples: [
10004
10004
  "ak-role config set judge openai-codex/gpt-5.6-sol:high",
10005
10005
  "ak-role config unset gatekeeper",
10006
- "ak-role config set-engine judge opus",
10006
+ "ak-role config set-engine judge claude-code",
10007
10007
  "ak-role config set-engine coder cursor cursor-grok-4.6-high",
10008
10008
  "ak-role config set-engine-model coder cursor-grok-4.6-high",
10009
10009
  "ak-role config set-host judge grok-build",
@@ -15802,7 +15802,7 @@ var init_option_definitions = __esm({
15802
15802
  examples: [
15803
15803
  "ak-role config set judge openai-codex/gpt-5.6-sol:high",
15804
15804
  "ak-role config unset gatekeeper",
15805
- "ak-role config set-engine judge opus",
15805
+ "ak-role config set-engine judge claude-code",
15806
15806
  "ak-role config set-engine coder cursor cursor-grok-4.6-high",
15807
15807
  "ak-role config set-engine-model coder cursor-grok-4.6-high",
15808
15808
  "ak-role config set-host judge grok-build",
@@ -19808,7 +19808,7 @@ var init_option_definitions = __esm({
19808
19808
  examples: [
19809
19809
  "ak-role config set judge openai-codex/gpt-5.6-sol:high",
19810
19810
  "ak-role config unset gatekeeper",
19811
- "ak-role config set-engine judge opus",
19811
+ "ak-role config set-engine judge claude-code",
19812
19812
  "ak-role config set-engine coder cursor cursor-grok-4.6-high",
19813
19813
  "ak-role config set-engine-model coder cursor-grok-4.6-high",
19814
19814
  "ak-role config set-host judge grok-build",
@@ -1082,7 +1082,7 @@ const SUPPORT_COMMAND_HELP = {
1082
1082
  examples: [
1083
1083
  "ak-role config set judge openai-codex/gpt-5.6-sol:high",
1084
1084
  "ak-role config unset gatekeeper",
1085
- "ak-role config set-engine judge opus",
1085
+ "ak-role config set-engine judge claude-code",
1086
1086
  "ak-role config set-engine coder cursor cursor-grok-4.6-high",
1087
1087
  "ak-role config set-engine-model coder cursor-grok-4.6-high",
1088
1088
  "ak-role config set-host judge grok-build",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akagilnc/pi-workflow-roles",
3
- "version": "0.1.5127",
3
+ "version": "0.1.5139",
4
4
  "description": "Soul-bound workflow roles for Pi",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -1,29 +1,29 @@
1
- # opus engine method material
1
+ # claude-code engine method material
2
2
 
3
- This file is packaged technical material for the `opus` labor engine
4
- (Claude Code CLI on the host).
3
+ This file is packaged technical material for labor using the Claude Code CLI
4
+ on the host.
5
5
 
6
6
  Before invoking the engine, read `../engine-dispatch.md`, resolving that path
7
- relative to this note. This note only covers this engine's CLI technical
8
- parameters.
7
+ relative to this note. This note only covers this CLI's technical parameters.
9
8
 
10
9
  ## Invocation examples (local Claude Code CLI)
11
10
 
12
- The machine entrypoint is `claude`. Run from the role project root. Non-interactive
13
- print mode (`-p` / `--print`) is verified available on this host.
11
+ The machine entrypoint is `claude`. Run from the role project root.
12
+ Non-interactive print mode (`-p` / `--print`) is verified available on this
13
+ host.
14
14
 
15
- Print mode (`-p`) with `--output-format text` returns the labor body on stdout;
16
- stderr carries banners only. Measured with separate fd redirects (`1>` / `2>`).
15
+ Print mode with `--output-format text` returns the labor body on stdout;
16
+ stderr carries banners only. Measured with separate fd redirects (`1>` / `2>`):
17
17
 
18
18
  ```bash
19
- claude -p --output-format text "YOUR_LABOR_PROMPT"
19
+ claude -p --dangerously-skip-permissions --output-format text "YOUR_LABOR_PROMPT"
20
20
  ```
21
21
 
22
- Pin the Opus model explicitly (`--model opus` verified accepted on this host;
23
- init event reports `claude-opus-5`):
22
+ Pass the model requested by the labor mandate through `--model` when one is
23
+ specified:
24
24
 
25
25
  ```bash
26
- claude -p --model opus --output-format text "YOUR_LABOR_PROMPT"
26
+ claude -p --dangerously-skip-permissions --model <MODEL_ID> --output-format text "YOUR_LABOR_PROMPT"
27
27
  ```
28
28
 
29
29
  Use `--output-format text` (the default): stdout is the labor body and nothing
@@ -31,8 +31,9 @@ else. Never use `--output-format=stream-json` / `--verbose` for labor — the
31
31
  returned body goes back into the seat's context, and the event stream is noise:
32
32
  measured 2026-09-06 on this host, the same one-sentence task returned 382 bytes
33
33
  as `text` and 45,028 bytes as `stream-json --verbose` (118×); a 12-minute labor
34
- returned 957k chars and killed the seat with a 712k-token request (#675). Progress observability belongs to the runner's
35
- process watch, not to the returned body.
34
+ returned 957k chars and killed the seat with a 712k-token request (#675).
35
+ Progress observability belongs to the runner's process watch, not to the
36
+ returned body.
36
37
 
37
38
  ## Headless permissions
38
39
 
@@ -42,7 +43,7 @@ particular, reading any path outside the project root — such as frozen
42
43
  attachments under `~/.ak-roles/books/<book>/runs/<run>/attachments/` — is
43
44
  refused without the flag ("The read was not permitted — I don't have access to
44
45
  that file outside the current worktree") and succeeds with it (host-verified
45
- 2026-08-28, both directions).
46
+ 2026-08-28).
46
47
 
47
- Prefer `claude --help` on the host over any remembered flag set. Do not wrap this
48
- engine behind `ak-role` flags.
48
+ Prefer `claude --help` on the host over any remembered flag set. Do not wrap
49
+ this engine behind `ak-role` flags.
@@ -11,12 +11,20 @@ parameters.
11
11
 
12
12
  The machine entrypoint is `codex`. Run from the role project root. Non-interactive
13
13
  labor uses `codex exec` (alias `e`). Always pass `--skip-git-repo-check` so the
14
- labor subprocess can start outside a Git work tree when needed:
14
+ labor subprocess can start outside a Git work tree when needed. When the dispatch
15
+ order specifies a model, pass it with `-m` / `--model`:
15
16
 
16
17
  ```bash
17
18
  codex exec --skip-git-repo-check "YOUR_LABOR_PROMPT"
18
19
  ```
19
20
 
21
+ ```bash
22
+ codex exec --skip-git-repo-check -m <MODEL_ID> "YOUR_LABOR_PROMPT"
23
+ ```
24
+
25
+ When no model is specified in the dispatch order, omit `-m` and let Codex use
26
+ its configured default.
27
+
20
28
  For concurrent or disposable labor turns, add `--ephemeral` so session files are
21
29
  not persisted to disk:
22
30
 
@@ -33,7 +41,7 @@ codex exec --skip-git-repo-check --ephemeral -C "$PROJECT_ROOT" "YOUR_LABOR_PROM
33
41
  Default (non-`--json`) mode prints the session banner and progress on stderr
34
42
  (measured on this host). Collect the labor body from stdout so that stderr log
35
43
  noise is not mixed into the returned body. Never use `--json` for labor: its
36
- JSONL event rows go back into the seat's context as noise (see `opus.md` for the
44
+ JSONL event rows go back into the seat's context as noise (see `claude-code.md` for the
37
45
  measured ratio).
38
46
 
39
47
  Prefer `codex exec --help` on the host over any remembered flag set. Do not wrap
@@ -20,31 +20,22 @@ the Grok Build balance is exhausted).
20
20
  Run from the role project root. Non-interactive print mode; `-f/--force`
21
21
  allows command execution headlessly; `-p` prints responses for scripts:
22
22
 
23
+ ```bash
24
+ cursor-agent -p -f --output-format text "YOUR_LABOR_PROMPT"
25
+ ```
26
+
27
+ When the dispatch order specifies a model, pass it verbatim via `--model`:
28
+
23
29
  ```bash
24
30
  cursor-agent -p -f --output-format text --model <MODEL_ID> "YOUR_LABOR_PROMPT"
25
31
  ```
26
32
 
27
- - Model ids come from `cursor-agent models`. Effort tiers are encoded in the
28
- id itself (e.g. `cursor-grok-4.6-low`, `cursor-grok-4.6-medium`,
29
- `cursor-grok-4.6-high`, plus `-fast` variants); some models also accept a
30
- bracket override form (`'claude-opus-4-8[context=1m,effort=high]'` — see
31
- `cursor-agent --help`).
32
- - This note does not pin a model id. The dispatch order (owner pool
33
- directive) names the model to pass verbatim via `--model`. If `--model
34
- <MODEL_ID>` is not provided, please uses `cursor-grok-4.6-high`.
33
+ - Model ids come from `cursor-agent models`. Effort tiers may be encoded in
34
+ the id; see `cursor-agent --help` for supported model-specific forms.
35
+ - This note does not pin a model id. Without one in the dispatch order, omit
36
+ `--model` and let the CLI use its configured default.
35
37
  - Always `--output-format text`; never `stream-json` (the event stream goes back
36
- into the seat's context as noise — see `opus.md`).
38
+ into the seat's context as noise — see `claude-code.md`).
37
39
 
38
40
  Prefer `cursor-agent --help` on the host over any remembered flag set. Do not
39
41
  wrap this engine behind `ak-role` flags.
40
-
41
- ## Smoke test (run before first labor leg of a session)
42
-
43
- ```bash
44
- cursor-agent -p -f --output-format text --model <MODEL_ID> "Reply with exactly one word: OK"
45
- ```
46
-
47
- Expected: stdout ends with exactly `OK`, exit code 0. Mechanics verified
48
- 2026-08-28 on this host (Cursor subscription login) with a dispatch-order
49
- model id substituted for `<MODEL_ID>`. If it asks about directory trust, the
50
- `-f` flag (or `--trust`) is missing.
@@ -0,0 +1,74 @@
1
+ # grok engine method material
2
+
3
+ This file is packaged technical material for labor using the Grok CLI on the
4
+ host.
5
+
6
+ Before invoking the engine, read `../engine-dispatch.md`, resolving that path
7
+ relative to this note. This note only covers this CLI's technical parameters.
8
+
9
+ ## Invocation examples (local Grok CLI)
10
+
11
+ The machine entrypoint is `grok`. Run from the role project root.
12
+ Non-interactive labor reads the prompt from a file and prints plain output:
13
+
14
+ ```bash
15
+ grok --trust --prompt-file /path/to/labor-prompt.md --always-approve --output-format plain
16
+ ```
17
+
18
+ When the dispatch order specifies a model, pass it with `-m`:
19
+
20
+ ```bash
21
+ grok --trust --prompt-file /path/to/labor-prompt.md -m <MODEL_ID> --always-approve --output-format plain
22
+ ```
23
+
24
+ When the dispatch order (or seat ordered thinking tier) supplies an effort
25
+ tier, pass it with `--reasoning-effort` (alias `--effort`):
26
+
27
+ ```bash
28
+ grok --trust --prompt-file /path/to/labor-prompt.md --reasoning-effort <EFFORT> --always-approve --output-format plain
29
+ ```
30
+
31
+ - `-m <MODEL_ID>` selects the model; `grok models` lists valid ids. Without a
32
+ model in the dispatch order, omit `-m` and let the CLI use its configured
33
+ default.
34
+ - `--reasoning-effort <low|medium|high>` is optional (`grok --help`). Pass it
35
+ only when the dispatch order or seat ordered thinking tier supplies a tier;
36
+ omit the flag otherwise. Do not invent a default effort or require seat
37
+ config to fill one (verified live 2026-08-21: flag exists; a low-tier run
38
+ completed correctly when a tier was ordered).
39
+ - `--always-approve` (equivalently `--yolo` or `--permission-mode
40
+ bypassPermissions`) keeps the run non-interactive (documented). Headless
41
+ permissions otherwise default to interactive approval, where an `ask`
42
+ decision has no UI to answer; alternatively, use an explicit permission
43
+ setup that auto-approves the required call.
44
+ - Official docs list `-p/--single` as the canonical headless prompt input;
45
+ `--prompt-file` exists in the installed CLI (`--help`) and is smoke-verified
46
+ on this host — prefer it for long prompts, fall back to `-p` if absent.
47
+ - `--output-format plain` keeps stdout clean for capture and is the only
48
+ format to use for labor. Do not use `streaming-json`: its NDJSON deltas go
49
+ back into the seat's context as noise (see `claude-code.md` for the measured
50
+ ratio); progress observability belongs to the runner's process watch, not to
51
+ the returned body.
52
+ - Feeding raw JSON directly through `--prompt-file` is rejected by the CLI as
53
+ non-ACP JSON (`JSON object must have a type field`; live-verified
54
+ 2026-08-21).
55
+
56
+ ## MCP host behavior
57
+
58
+ - Repository MCP entries live under `[mcp_servers.<name>]` in `.grok/config.toml`.
59
+ They take effect only after the folder is trusted; pass `--trust` on
60
+ unattended/headless invocations. Without it, the project server may be absent
61
+ even though the file is present (`live-1787838141494`), and `grok mcp doctor`
62
+ reports `folder untrusted…re-run with --trust` (`live-1787838491136`).
63
+ - Diagnose server startup with `grok mcp doctor [<server>]`, then inspect
64
+ `~/.grok/logs/mcp/<server>.stderr.log`; Grok truncates that stderr log on
65
+ each stdio server launch.
66
+ - MCP tools are exposed to the model as `<server>__<tool>` (for example,
67
+ `ak_489_coder__ak_coder_output`). Use the fully qualified name in prompts;
68
+ a bare tool name relies on the host's loose discovery/matching behavior.
69
+ - The headless permission setting described above also covers MCP calls.
70
+ - Grok launches a stdio server from the task cwd. Make `command` and `args`
71
+ cwd-independent: use absolute entrypoint paths and do not rely on resolving
72
+ a task-local `node_modules` binary. A cwd-dependent `tsx` launcher failed in
73
+ `live-1787838491136`; the absolute-path form completed the MCP route in
74
+ `live-1787838776163`.
@@ -67,17 +67,3 @@ hermes -z "YOUR_LABOR_PROMPT" --in /path/to/project --no-restore-cwd \
67
67
  01a046ec-*/01a046f4-*, 14:55-15:04 window).
68
68
  No concurrency ceiling has been measured beyond this observation; policy on
69
69
  concurrency and retries is the dispatcher's call, not this note's.
70
-
71
- ## Smoke test (run before first labor leg of a session)
72
-
73
- ```bash
74
- hermes -z "Reply with exactly one word: OK" --no-restore-cwd
75
- # long-prompt form used by labor legs:
76
- printf 'Reply with exactly one word: OK' > /tmp/smoke.txt
77
- hermes -z "$(cat /tmp/smoke.txt)" --no-restore-cwd
78
- ```
79
-
80
- Expected: stdout is exactly `OK`, exit code 0. Verified 2026-08-28 on this
81
- host (model `poolside/laguna-s-2.1:free`, Nous Portal). If it fails, check
82
- `hermes status` (model/provider block) and `~/.hermes/provider_models_cache.json`
83
- for the current catalog; the interactive picker is `hermes model`.
@@ -1,7 +1,7 @@
1
- # kimi engine method material
1
+ # kimi-code engine method material
2
2
 
3
- This file is packaged technical material for the `kimi` labor engine
4
- (Kimi Code CLI on the host).
3
+ This file is packaged technical material for labor using the Kimi Code CLI on
4
+ the host.
5
5
 
6
6
  Before invoking the engine, read `../engine-dispatch.md`, resolving that path
7
7
  relative to this note. This note only covers this engine's CLI technical
@@ -22,16 +22,16 @@ those flags to prompt-mode argv:
22
22
  kimi -p "YOUR_LABOR_PROMPT"
23
23
  ```
24
24
 
25
- Pin a model alias configured in the host `config.toml` when the seat needs a
26
- known Kimi model id (example alias shape measured: `kimi-code/k3-256k`):
25
+ Pass the model requested by the labor mandate through `-m` when one is
26
+ specified:
27
27
 
28
28
  ```bash
29
- kimi -m <model-alias> -p "YOUR_LABOR_PROMPT"
29
+ kimi -m <MODEL_ID> -p "YOUR_LABOR_PROMPT"
30
30
  ```
31
31
 
32
32
  Use `--output-format text` (the default). Do not use `stream-json` for labor:
33
33
  the returned body goes back into the seat's context and the event stream is
34
- noise (see `opus.md` for the measured ratio). Progress observability belongs to
34
+ noise (see `claude-code.md` for the measured ratio). Progress observability belongs to
35
35
  the runner's process watch, not to the returned body. Measured on this host
36
36
  with separate fd redirects (`1>` / `2>`): stdout is the labor answer body;
37
37
  stderr carries the version line, thinking bullets, and the trailing
@@ -10,12 +10,21 @@ parameters.
10
10
  ## Invocation examples (local OpenCode CLI)
11
11
 
12
12
  The machine entrypoint is `opencode`. Run from the role project root.
13
- Non-interactive labor uses `run` with `--auto` and an explicit model:
13
+ Non-interactive labor uses `run` with `--auto`. When the labor order specifies
14
+ an engine model, pass it with `-m`:
14
15
 
15
16
  ```bash
16
17
  opencode run --auto -m <MODEL_ID> "YOUR_LABOR_PROMPT"
17
18
  ```
18
19
 
20
+ When no engine model is specified, omit `-m` and let OpenCode choose: it uses
21
+ the model configured in OpenCode, then the last-used model, then its internally
22
+ prioritized first model.
23
+
24
+ ```bash
25
+ opencode run --auto "YOUR_LABOR_PROMPT"
26
+ ```
27
+
19
28
  - `--auto` is required: it auto-approves permissions that are not explicitly
20
29
  denied. Without it, any `ask` permission (e.g. `external_directory` when the
21
30
  labor reads the case dossier outside the project root) is auto-rejected in a
@@ -19,25 +19,27 @@ zcode --prompt 'YOUR_LABOR_PROMPT' --cwd /path/to/worktree
19
19
  `--prompt` defaults to permission mode `yolo` (no TTY permission stalls).
20
20
  Useful extras measured from `zcode --help`: `--attach <path>` (repeatable),
21
21
  `--mode build|edit|plan|yolo`, `--resume <sess_...>`. Never `--json` for
22
- labor (the returned body goes back into the seat's context as plain text). Prefer `zcode --help` on the host over any remembered flag set.
22
+ labor (the returned body goes back into the seat's context as plain text). The
23
+ headless CLI help exposes no per-invocation model flag; do not translate a
24
+ requested model into a config edit or invent a CLI flag. Report that capability
25
+ gap through the existing path. Prefer `zcode --help` on the host over any
26
+ remembered flag set.
23
27
 
24
- ## Realm and model traps (host-verified 2026-08-29, all three hit in sequence)
28
+ ## Historical realm and model observations (host-verified 2026-08-29)
29
+
30
+ These are dated observations, not model or dispatch recommendations. Model
31
+ choice remains with the dispatch order; this note does not prescribe a model.
25
32
 
26
33
  - Missing `~/.zcode/cli/config.json` → hard error `Model config is missing`.
27
34
  The desktop app's login is NOT shared with the CLI.
28
35
  - `zcode login` signs into the **overseas Z.AI realm only**. An account on the
29
36
  mainland BigModel realm then fails with
30
37
  `[1113][Insufficient balance or no resource package]`.
31
- - The scaffolded config defaults `model.main` to `zai/glm-5.2`, which is not
32
- in the coding plan — same 1113 failure even with a valid plan.
33
-
34
- Working mainland configuration (per official docs
35
- `docs.bigmodel.cn/cn/coding-plan/quick-start`): in
36
- `~/.zcode/cli/config.json`, provider kind `anthropic` with
37
- `baseURL: https://open.bigmodel.cn/api/anthropic`, `options.apiKey` = the
38
- coding-plan key (host keychain: service `glm-key`, account `akagilnc`), and
39
- `model.main: zai/glm-5.3`, `model.lite: zai/glm-5.3-flash`. With that config
40
- the smoke prompt returns normally.
38
+ - At that time, the scaffolded config defaulted `model.main` to `zai/glm-5.2`,
39
+ which was not included in the coding plan and returned the same 1113 failure.
40
+ - A mainland configuration using the Anthropic-compatible endpoint and
41
+ `zai/glm-5.3` / `zai/glm-5.3-flash` returned normally with the tested key at
42
+ that time. This is a historical result, not a suggested fixed configuration.
41
43
 
42
44
  ## Quota facts (owner-provided, 2026-08-28)
43
45
 
@@ -45,7 +47,7 @@ Plan quotas are daily and per-model (GLM-5.3 3M/day, Flash 5M/day on the
45
47
  current plan; a weekend event granted a larger temporary pool). Whether cached
46
48
  tokens count toward quota is unverified.
47
49
 
48
- ## Lane status: PARKED (host-verified 2026-08-29)
50
+ ## Historical funding observations (host-verified 2026-08-29)
49
51
 
50
52
  The "working" configuration above drew from a new-user gift resource package
51
53
  (2M general-model tokens), not from any plan. Once that package expired,
@@ -59,5 +61,7 @@ app's OAuth connection ("Start Plan" connection mode); the CLI's
59
61
  the desktop app; no env override exists — only `BIGMODEL_*_API_BASE_URL`).
60
62
  The plan page issues exactly one API key and it is the key tested above.
61
63
 
62
- Net: this engine lane has no funded model until a key with actual balance or
63
- an in-plan API path exists. Do not dispatch `--engine zcode` until then.
64
+ The later tests found that the tested key had no funded model after the gift
65
+ resource package expired. Current funding and model availability were not
66
+ established by those tests; report an actual invocation failure through the
67
+ existing path and leave any seat change to the caller.
@@ -1298,7 +1298,7 @@ const SUPPORT_COMMAND_HELP = {
1298
1298
  examples: [
1299
1299
  "ak-role config set judge openai-codex/gpt-5.6-sol:high",
1300
1300
  "ak-role config unset gatekeeper",
1301
- "ak-role config set-engine judge opus",
1301
+ "ak-role config set-engine judge claude-code",
1302
1302
  "ak-role config set-engine coder cursor cursor-grok-4.6-high",
1303
1303
  "ak-role config set-engine-model coder cursor-grok-4.6-high",
1304
1304
  "ak-role config set-host judge grok-build",
@@ -1,63 +0,0 @@
1
- # grok-4.6 engine method material
2
-
3
- This file is packaged technical material for the `grok-4.6` labor
4
- engine (Grok CLI on the host).
5
-
6
- Before invoking the engine, read `../engine-dispatch.md`, resolving that path
7
- relative to this note. This note only covers this engine's CLI technical
8
- parameters.
9
-
10
- ## Invocation examples (local Grok CLI)
11
-
12
- The machine entrypoint is `grok` (NOT `grok-4.6` — the engine name is the model
13
- id, not the executable). Run from the role project root. Non-interactive labor
14
- reads the prompt from a file and prints plain output:
15
-
16
- ```bash
17
- grok --prompt-file /path/to/labor-prompt.md -m grok-4.6 --always-approve --output-format plain
18
- ```
19
-
20
- - `-m grok-4.6` selects the model; `grok models` lists valid ids (currently
21
- `grok-4.6` default, `grok-4.5`).
22
- - `--always-approve` (equivalently `--yolo` or `--permission-mode
23
- bypassPermissions`) keeps the run non-interactive (documented). Headless
24
- permissions otherwise default to interactive approval, where an `ask`
25
- decision has no UI to answer; alternatively, use an explicit permission
26
- setup that auto-approves the required call.
27
- - Official docs list `-p/--single` as the canonical headless prompt input;
28
- `--prompt-file` exists in the installed CLI (`--help`) and is smoke-verified
29
- on this host — prefer it for long prompts, fall back to `-p` if absent.
30
- - `--output-format plain` keeps stdout clean for capture and is the only
31
- format to use for labor. Do not use `streaming-json`: its NDJSON deltas go
32
- back into the seat's context as noise (see `opus.md` for the measured ratio);
33
- progress observability belongs to the runner's process watch, not to the
34
- returned body.
35
- - **Always pass `--reasoning-effort <low|medium|high>`** matching the effort
36
- tier ordered in the labor mandate (verified live 2026-08-21: flag exists,
37
- alias `--effort`; a low-tier run completed correctly). If the mandate names
38
- no tier, use the seat's ordered thinking tier; never omit the flag — the
39
- CLI default is not guaranteed to match the ordered tier.
40
- - Feeding raw JSON directly through `--prompt-file` is rejected by the CLI as
41
- non-ACP JSON (`JSON object must have a type field`; live-verified
42
- 2026-08-21).
43
-
44
- ## MCP host behavior
45
-
46
- - Repository MCP entries live under `[mcp_servers.<name>]` in
47
- `.grok/config.toml`. They take effect only after the folder is trusted; pass
48
- `--trust` on unattended/headless invocations. Without it, the project server
49
- may be absent even though the file is present (`live-1787838141494`), and
50
- `grok mcp doctor` reports `folder untrusted…re-run with --trust`
51
- (`live-1787838491136`).
52
- - Diagnose server startup with `grok mcp doctor [<server>]`, then inspect
53
- `~/.grok/logs/mcp/<server>.stderr.log`; Grok truncates that stderr log on
54
- each stdio server launch.
55
- - MCP tools are exposed to the model as `<server>__<tool>` (for example,
56
- `ak_489_coder__ak_coder_output`). Use the fully qualified name in prompts;
57
- a bare tool name relies on the host's loose discovery/matching behavior.
58
- - The headless permission setting described above also covers MCP calls.
59
- - Grok launches a stdio server from the task cwd. Make `command` and `args`
60
- cwd-independent: use absolute entrypoint paths and do not rely on resolving
61
- a task-local `node_modules` binary. A cwd-dependent `tsx` launcher failed in
62
- `live-1787838491136`; the absolute-path form completed the MCP route in
63
- `live-1787838776163`.
@@ -1,44 +0,0 @@
1
- # ox-alpha engine method material
2
-
3
- This file is packaged technical material for the `ox-alpha` labor
4
- engine (OpenRouter stealth preview model, reached via OpenCode CLI).
5
-
6
- Before invoking the engine, read `../engine-dispatch.md`, resolving that path
7
- relative to this note. This note only covers this engine's CLI technical
8
- parameters.
9
-
10
- ## Identity and warnings
11
-
12
- - Model id: `stealth/ox-alpha` on OpenRouter (listed 2026-08-20). Anonymous
13
- vendor, preview-period pricing $0. Specs claimed by the listing: 1M ctx /
14
- 131K out, text+image+video in, tool calling, reasoning.
15
- - **Retention**: the provider retains prompts/completions (stated not used for
16
- training). Time-boxed experiment — may be delisted or re-priced at any time.
17
- - Free-tier rate limit (official ~20 req/min).
18
- - Quality role (live exam 2026-08-21/22): control / hardening seat, not a
19
- substitute for the main-court engine. On a standard-answer tool-idle-clock
20
- final exam it caught all 7 residual shells at every effort tier (medium 59s
21
- best); sol low missed `converged`, grok-4.6 low also caught 7 but took 979s.
22
-
23
- ## Invocation examples
24
-
25
- ### Recommended: agentic via OpenCode CLI
26
-
27
- The machine entrypoint is `opencode` with the OpenRouter-routed model id.
28
- Key is on this host's keychain under label `openrouter` (smoke-verified
29
- 2026-08-21/22). Run from the role project root:
30
-
31
- ```bash
32
- OPENROUTER_API_KEY=$(security find-generic-password -l openrouter -w) \
33
- opencode run -m openrouter/stealth/ox-alpha '<task>'
34
- ```
35
-
36
- Smoke: prompt `只回两个字:收到` → `收到` (agentic leg usable).
37
-
38
- - `-m openrouter/stealth/ox-alpha` selects the model; confirm the current id
39
- with `opencode models` before long labor — stealth ids can vanish.
40
- - Effort tier: align with the labor mandate's ordered tier (`low` / `medium` /
41
- `high`). Live wall-times on the same 148KB grading payload:
42
- low 73s / medium 59s / high 228s — all produced correct three-state verdicts.
43
- Prefer the ordered tier; when the mandate is silent, medium was the
44
- fastest correct run on that payload.
@@ -1,26 +0,0 @@
1
- # sonnet engine method material
2
-
3
- This file is packaged technical material for the `sonnet` labor engine
4
- (Claude Code CLI on the host, pinned to the Sonnet model).
5
-
6
- Before invoking the engine, read `../engine-dispatch.md`, resolving that path
7
- relative to this note. This note only covers this engine's CLI technical
8
- parameters.
9
-
10
- ## Invocation
11
-
12
- Same host CLI as the `opus` engine: the machine entrypoint is `claude`, and all
13
- CLI mechanics (print mode, `--output-format text`, fd layout) are documented in `../opus.md` — read that
14
- note for them; they are not duplicated here.
15
-
16
- The only difference is the model pin:
17
-
18
- ```bash
19
- claude -p --model sonnet --output-format text "YOUR_LABOR_PROMPT"
20
- ```
21
-
22
- `--model sonnet` is verified accepted on this host (Claude Code 2.1.233); the
23
- `json` init metadata reports `claude-sonnet-5` (host-verified 2026-08-28).
24
-
25
- Prefer `claude --help` on the host over any remembered flag set. Do not wrap
26
- this engine behind `ak-role` flags.