pi-orchestrator-config 4.3.7 → 4.3.9

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 (104) hide show
  1. package/README.md +191 -173
  2. package/agents/git-expert.md +30 -1
  3. package/extensions/openai-compatible-discovery/index.ts +204 -0
  4. package/extensions/orchestrator/extended-autocomplete.ts +4 -0
  5. package/extensions/orchestrator/mcpc.ts +172 -0
  6. package/extensions/orchestrator/session-validation.ts +4 -2
  7. package/extensions/pidiff/pidiff-ui/dist/assets/{angular-html-mp_sY19l.js → angular-html-ghA4VuM0.js} +1 -1
  8. package/extensions/pidiff/pidiff-ui/dist/assets/{angular-ts-BG7dz03J.js → angular-ts-BiEwt-Qs.js} +1 -1
  9. package/extensions/pidiff/pidiff-ui/dist/assets/{apl-D0TQH1Y8.js → apl-DmYAGNOL.js} +1 -1
  10. package/extensions/pidiff/pidiff-ui/dist/assets/{astro-cuP4968W.js → astro-Bju7L81l.js} +1 -1
  11. package/extensions/pidiff/pidiff-ui/dist/assets/{blade-ClqnBqi9.js → blade-C_YtSRJN.js} +1 -1
  12. package/extensions/pidiff/pidiff-ui/dist/assets/{c-VbuMUaRD.js → c-DxcP9pmN.js} +1 -1
  13. package/extensions/pidiff/pidiff-ui/dist/assets/{chapel-Cs_P4bPZ.js → chapel-BjVM8zvB.js} +1 -1
  14. package/extensions/pidiff/pidiff-ui/dist/assets/{cobol-B1_QfE_s.js → cobol-CyAifE-8.js} +1 -1
  15. package/extensions/pidiff/pidiff-ui/dist/assets/{coffee-DngpUQ-g.js → coffee-BNW4Zttb.js} +1 -1
  16. package/extensions/pidiff/pidiff-ui/dist/assets/{cpp-BJ9Ee2yy.js → cpp-De6s9lN-.js} +1 -1
  17. package/extensions/pidiff/pidiff-ui/dist/assets/{crystal-ClUiGo15.js → crystal-JzhjW33_.js} +1 -1
  18. package/extensions/pidiff/pidiff-ui/dist/assets/{css-DqTo82CB.js → css-DAnI1EKT.js} +1 -1
  19. package/extensions/pidiff/pidiff-ui/dist/assets/{edge-DNO_p1iz.js → edge-DlbkxEj4.js} +1 -1
  20. package/extensions/pidiff/pidiff-ui/dist/assets/{elixir-D9BFTDA2.js → elixir-BXz6vpDX.js} +1 -1
  21. package/extensions/pidiff/pidiff-ui/dist/assets/{elm-DViZ7oy1.js → elm-CJcSKM6_.js} +1 -1
  22. package/extensions/pidiff/pidiff-ui/dist/assets/{erb-BkoQ4OFP.js → erb-VHOaTR5g.js} +1 -1
  23. package/extensions/pidiff/pidiff-ui/dist/assets/{git-rebase-7gJjIY6i.js → git-rebase-PAYwCVk-.js} +1 -1
  24. package/extensions/pidiff/pidiff-ui/dist/assets/{glimmer-js-BsUtNNHb.js → glimmer-js-CspJJiU_.js} +1 -1
  25. package/extensions/pidiff/pidiff-ui/dist/assets/{glimmer-ts-D-0tIMzg.js → glimmer-ts-CSMIai5o.js} +1 -1
  26. package/extensions/pidiff/pidiff-ui/dist/assets/{glsl-B_FkRuRZ.js → glsl-Cw9yKL2B.js} +1 -1
  27. package/extensions/pidiff/pidiff-ui/dist/assets/{graphql--F2JnwKx.js → graphql-D0OMgGsM.js} +1 -1
  28. package/extensions/pidiff/pidiff-ui/dist/assets/{hack-oDlxgxMa.js → hack-DfiAACVA.js} +1 -1
  29. package/extensions/pidiff/pidiff-ui/dist/assets/{haml-BZwbB22w.js → haml-DU8pAbRK.js} +1 -1
  30. package/extensions/pidiff/pidiff-ui/dist/assets/{handlebars-D5xaEd_e.js → handlebars-CoaiK3xT.js} +1 -1
  31. package/extensions/pidiff/pidiff-ui/dist/assets/{html-DBGhw7-O.js → html-B4C3aTRB.js} +1 -1
  32. package/extensions/pidiff/pidiff-ui/dist/assets/{html-derivative-0H2oo-Br.js → html-derivative-C_NJUsxF.js} +1 -1
  33. package/extensions/pidiff/pidiff-ui/dist/assets/{http-BH6WBJxg.js → http-Cr9w59E3.js} +1 -1
  34. package/extensions/pidiff/pidiff-ui/dist/assets/{hurl-pKbsDPF3.js → hurl-BEScLvfg.js} +1 -1
  35. package/extensions/pidiff/pidiff-ui/dist/assets/index-CcrT73jQ.css +1 -0
  36. package/extensions/pidiff/pidiff-ui/dist/assets/{index-D9FMfzhy.js → index-CisAus9r.js} +10 -10
  37. package/extensions/pidiff/pidiff-ui/dist/assets/{java-DAIRA2DV.js → java-hb-3TTCg.js} +1 -1
  38. package/extensions/pidiff/pidiff-ui/dist/assets/{javascript-0oTH0XMX.js → javascript-Bc0DeQtz.js} +1 -1
  39. package/extensions/pidiff/pidiff-ui/dist/assets/{jinja-Cr2SKvYs.js → jinja-DoEIYL2y.js} +1 -1
  40. package/extensions/pidiff/pidiff-ui/dist/assets/{jison-DkQ5WAwI.js → jison-C2OZYR2e.js} +1 -1
  41. package/extensions/pidiff/pidiff-ui/dist/assets/{json-Dso4xRBa.js → json-DKeabECb.js} +1 -1
  42. package/extensions/pidiff/pidiff-ui/dist/assets/{jsx-6lZH5KCN.js → jsx-Dadu-wAB.js} +1 -1
  43. package/extensions/pidiff/pidiff-ui/dist/assets/{julia-D5nsVlA4.js → julia-CpUr0nh2.js} +1 -1
  44. package/extensions/pidiff/pidiff-ui/dist/assets/{just-BJmCTT8q.js → just-BysHL69Z.js} +1 -1
  45. package/extensions/pidiff/pidiff-ui/dist/assets/{latex-RNBDVFOB.js → latex-iNrlK36R.js} +1 -1
  46. package/extensions/pidiff/pidiff-ui/dist/assets/{liquid-BNfcDoyE.js → liquid-g8x_A5Ru.js} +1 -1
  47. package/extensions/pidiff/pidiff-ui/dist/assets/{lua-C5h0aGmI.js → lua-B4BSWsUC.js} +1 -1
  48. package/extensions/pidiff/pidiff-ui/dist/assets/{marko-DNEK1bML.js → marko-CHSFXjEi.js} +1 -1
  49. package/extensions/pidiff/pidiff-ui/dist/assets/{mdc-B2NVBmGf.js → mdc-js2C5rVG.js} +1 -1
  50. package/extensions/pidiff/pidiff-ui/dist/assets/{nginx-_X9UmOgs.js → nginx-BblTQvRl.js} +1 -1
  51. package/extensions/pidiff/pidiff-ui/dist/assets/{nim-DOS51HeY.js → nim-ChxMAPPZ.js} +1 -1
  52. package/extensions/pidiff/pidiff-ui/dist/assets/{org-Rx4519lx.js → org-CHoj3SWZ.js} +1 -1
  53. package/extensions/pidiff/pidiff-ui/dist/assets/{perl-Daok6kZs.js → perl-3zusLAIc.js} +1 -1
  54. package/extensions/pidiff/pidiff-ui/dist/assets/{php-XTt5v859.js → php-DVx3dbu3.js} +1 -1
  55. package/extensions/pidiff/pidiff-ui/dist/assets/{pug-f7ey1fQl.js → pug-DITNjLsK.js} +1 -1
  56. package/extensions/pidiff/pidiff-ui/dist/assets/{qml-juoUuAUN.js → qml-BYmD788c.js} +1 -1
  57. package/extensions/pidiff/pidiff-ui/dist/assets/{r-BOYZHofT.js → r-Dp_qVPOX.js} +1 -1
  58. package/extensions/pidiff/pidiff-ui/dist/assets/{razor-BcuibiM6.js → razor-DT4CEDjF.js} +1 -1
  59. package/extensions/pidiff/pidiff-ui/dist/assets/{regexp-BMJaNING.js → regexp-DVFGbBOe.js} +1 -1
  60. package/extensions/pidiff/pidiff-ui/dist/assets/{rst-CJY1LueG.js → rst-njZM0E3u.js} +1 -1
  61. package/extensions/pidiff/pidiff-ui/dist/assets/{ruby-r3j2HpTd.js → ruby-gu2hDDCx.js} +1 -1
  62. package/extensions/pidiff/pidiff-ui/dist/assets/{sas-D60aovOU.js → sas-Bo6NwyH7.js} +1 -1
  63. package/extensions/pidiff/pidiff-ui/dist/assets/{scss-DsQ9e_9i.js → scss-COdGMqPA.js} +1 -1
  64. package/extensions/pidiff/pidiff-ui/dist/assets/{shellscript-C0CTDLfP.js → shellscript-DSg7qNC1.js} +1 -1
  65. package/extensions/pidiff/pidiff-ui/dist/assets/{shellsession-CYQ4mhku.js → shellsession-CD1RmUpx.js} +1 -1
  66. package/extensions/pidiff/pidiff-ui/dist/assets/{soy-K7-GBqQU.js → soy-C0QWCEMl.js} +1 -1
  67. package/extensions/pidiff/pidiff-ui/dist/assets/{sql-BPU0aGlV.js → sql-VoWQdTUw.js} +1 -1
  68. package/extensions/pidiff/pidiff-ui/dist/assets/{stata-BBQHbN5d.js → stata-BEj75h4q.js} +1 -1
  69. package/extensions/pidiff/pidiff-ui/dist/assets/{surrealql-DaVLur3e.js → surrealql-Cj1XbW6j.js} +1 -1
  70. package/extensions/pidiff/pidiff-ui/dist/assets/{svelte-CPKe6KLX.js → svelte-HcwCBvjC.js} +1 -1
  71. package/extensions/pidiff/pidiff-ui/dist/assets/{templ-4FsggzCO.js → templ-D775vyzu.js} +1 -1
  72. package/extensions/pidiff/pidiff-ui/dist/assets/{tex-Bz9V0XEc.js → tex-DNmK_71Q.js} +1 -1
  73. package/extensions/pidiff/pidiff-ui/dist/assets/{ts-tags-BAJP-RsL.js → ts-tags-KERjFDJj.js} +1 -1
  74. package/extensions/pidiff/pidiff-ui/dist/assets/{tsx-CaD50Q9K.js → tsx-CMT8AiHA.js} +1 -1
  75. package/extensions/pidiff/pidiff-ui/dist/assets/{twig-Bo_rsqRW.js → twig-B5uxCA6R.js} +1 -1
  76. package/extensions/pidiff/pidiff-ui/dist/assets/{typescript-BTuHo9Ga.js → typescript-5zwf3bJw.js} +1 -1
  77. package/extensions/pidiff/pidiff-ui/dist/assets/{typst-BvQMhY4k.js → typst-xx02l63O.js} +1 -1
  78. package/extensions/pidiff/pidiff-ui/dist/assets/{vue-D8h9s3oH.js → vue-BvvQRkFj.js} +1 -1
  79. package/extensions/pidiff/pidiff-ui/dist/assets/{vue-html-UkoLjlSQ.js → vue-html-BrBDvgBy.js} +1 -1
  80. package/extensions/pidiff/pidiff-ui/dist/assets/{vue-vine-lVry86q7.js → vue-vine-1CllPWUz.js} +1 -1
  81. package/extensions/pidiff/pidiff-ui/dist/assets/{xml-BxyPU0Nr.js → xml-C3nsfg4x.js} +1 -1
  82. package/extensions/pidiff/pidiff-ui/dist/assets/{xsl-BUb2EUMx.js → xsl-DDOShcMh.js} +1 -1
  83. package/extensions/pidiff/pidiff-ui/dist/assets/{yaml-qnjzIwGf.js → yaml-BGNXenqm.js} +1 -1
  84. package/extensions/pidiff/pidiff-ui/dist/index.html +2 -2
  85. package/extensions/pidiff/pidiff-ui/package.json +1 -1
  86. package/extensions/pidiff/pidiff-ui/src/App.tsx +95 -36
  87. package/extensions/pidiff/pidiff-ui/src/hooks/useWebSocket.ts +52 -10
  88. package/extensions/pidiff/pidiff-ui/src/lib/app-reconnect-watch.tsx +32 -0
  89. package/extensions/pidiff/pidiff-ui/src/lib/app-refresh-actions.tsx +47 -0
  90. package/extensions/pidiff/pidiff-ui/src/lib/create-logger.ts +37 -0
  91. package/extensions/pidiff/pidiff-ui/src/lib/file-cache-key.ts +34 -0
  92. package/extensions/pidiff/pidiff-ui/src/lib/refresh-control.tsx +43 -0
  93. package/extensions/pidiff/pidiff-ui/src/lib/request-diffs.ts +91 -0
  94. package/extensions/pidiff/pidiff-ui/src/lib/ws-send.ts +141 -0
  95. package/extensions/shared/openai-compatible-discovery.ts +558 -0
  96. package/package.json +5 -2
  97. package/rules/00-orchestrator-core.md +2 -2
  98. package/rules/15-mcpc.md +35 -0
  99. package/rules/20-code-review-loop.md +11 -1
  100. package/scripts/pidiff-git-ignore.ts +55 -0
  101. package/scripts/pidiff-server.ts +27 -26
  102. package/settings-keys.json +1 -1
  103. package/extensions/pidiff/pidiff-ui/dist/assets/index-CHmSwztf.css +0 -1
  104. package/rules/15-mcp-launchpad.md +0 -46
package/README.md CHANGED
@@ -10,78 +10,79 @@ A [pi package](https://github.com/badlogic/pi-mono) that implements an **orchest
10
10
 
11
11
  Single extension that provides:
12
12
 
13
- | Feature | Description |
14
- |---------|-------------|
15
- | **Subagent tool** | Delegate tasks to specialist agents (single, parallel, chain, async modes); optional `model` param for model override |
16
- | **`list_models`** | List available models and providers for subagent model override |
17
- | **Async background agents** | Spawn agents in background with `async: true` — results surface automatically when complete. Fullscreen overlay dashboard with live output, keyboard nav, and kill support (`/async-status`, `/async-kill`). On **acpx** parents, optional async is coerced to sync; dream/cron need `internal_operations_provider` + `internal_operations_model`. `cli-*` providers support async natively (see `dev-docs/cli-provider.md`) |
18
- | **CLI / ACPX providers** | Optional `cli_agents` / `acpx_agents` register `cli-*` / `acpx-*` via native `createProvider` (pi ≥ 0.84): `/login cli-<agent>` or `/login acpx-<agent>`, model refresh, filter when unavailable. Missing context window / maxTokens / cost filled from models.dev (`~/.pi/pi-config/models.dev.json`, 1-day refresh). Cold-start default restore (#753): gates `startup`\|`new`, empty `enabledModels`, trusted project merge — see `dev-docs/cli-provider.md`. Headless Cursor `--approve-mcps` when `CLI_APPROVE_MCPS` is set (`false` opts out) or the process is a sidecar (`SIDECAR_PORT`; `startSidecar()` stamps it while running and restores it on `close()`). Executable sidecar consumers should call `bindSidecarListenExit()` so bind/`stopped` fatals exit 1. Headless Gemini defaults `GEMINI_CLI_TRUST_WORKSPACE=true` and preserves an explicit parent value (including `false`). |
19
- | **`/btw` command** | Quick side questions without polluting conversation history — ephemeral overlay |
20
- | **`/async-status` command** | Show status of background agents — select one for live output streaming |
21
- | **`/async-kill` command** | Kill async agents (overlay picker or by name/id) |
22
- | **`ask_user` tool** | Structured user input with options and free-text — used by workflows |
23
- | **Python/pip enforcement** | Auto-fixes `python`/`python3` → `uv run python`; blocks `pip`/`pip3` — requires `uv` |
24
- | **Git protection** | Blocks commits/pushes to main/master, merged branches, `--no-verify`, `git add .` |
25
- | **Remote script exec block** | Blocks `curl \| bash`, `eval $(curl)`, etc. Allows safe `VAR=$(curl ...)` variable assignments |
26
- | **Dangerous command gate** | Confirms `rm -rf`, `sudo`, `mkfs`, etc. |
27
- | **Rule injection** | Injects orchestrator routing rules into system prompt |
28
- | **Git status** | Live git status in status line with colored icons — updates after every tool call. Shows clickable `#N` when the branch has an open PR. Last-activity clock `⏱ HH:MM (Xm/Xh ago)` shows time since last response |
29
- | **Desktop notifications** | Notifies via `notify-send` on task completion, waiting for input, and action required |
30
- | **File preview** | Serves generated HTML/frontend files via HTTP for browser preview from container |
31
- | **Pidash dashboard** | Live web dashboard — multi-session monitoring, browser messaging, model switching, live session name updates, reasoning token display |
32
- | **Pidiff viewer** | Per-project diff viewer with review comments — branch diffs, file tree, inline comments, git-based ignore rules |
33
- | **Dreaming** | Background memory consolidation — extracts memories from sessions, deduplicates, maintains topic-based memory |
34
- | **Memory enforcement** | Code-enforced memory entries — triggers on bash/tool/file events, actions: block, run_after, warn. LLM cannot ignore enforced rules. Dreaming-safe via *(enforced)* marker |
35
- | **Upgrade changelog** | Shows release notes on session start after pi-config version upgrade |
36
- | **Task tracking** | Structured task lists for multi-step workflows — live widget, progress tracking, reminder nudges (owned, based on [@tintinweb/pi-tasks](https://github.com/tintinweb/pi-tasks) MIT) |
37
- | **Neovim integration** | Send changed files and review findings to nvim's quickfix list — only active when running inside nvim |
38
- | **Inter-agent communication** | P2P (`/coms`) agent communication — on-demand activation via slash command |
39
- | **Slash commands** | `/pr-review`, `/issue-review`, `/release`, `/review-local`, `/review-status`, `/query-db`, `/btw`, `/async-status`, `/async-kill`, `/status`, `/dream`, `/remember`, `/coms`, `/pi-config-settings` — with autocomplete argument hints |
40
- | **GitHub autocomplete** | Type `#` in the editor to get issue/PR suggestions from the current repo — lazy-loaded, 5min cache |
41
- | **Command arg completions** | Tab-complete arguments for slash commands — providers and models for `/external-ai`, branches for `/review-local`, PR numbers for `/pr-review`, and more |
42
- | **Discord bot** | Control pi sessions from your phone via Discord DMs — send prompts, answer ask_user dialogs, switch sessions |
13
+ | Feature | Description |
14
+ | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
15
+ | **Subagent tool** | Delegate tasks to specialist agents (single, parallel, chain, async modes); optional `model` param for model override |
16
+ | **`list_models`** | List available models and providers for subagent model override |
17
+ | **Async background agents** | Spawn agents in background with `async: true` — results surface automatically when complete. Fullscreen overlay dashboard with live output, keyboard nav, and kill support (`/async-status`, `/async-kill`). On **acpx** parents, optional async is coerced to sync; dream/cron need `internal_operations_provider` + `internal_operations_model`. `cli-*` providers support async natively (see `dev-docs/cli-provider.md`) |
18
+ | **CLI / ACPX providers** | Optional `cli_agents` / `acpx_agents` register `cli-*` / `acpx-*` via native `createProvider` (pi ≥ 0.84): `/login cli-<agent>` or `/login acpx-<agent>`, model refresh, filter when unavailable. Missing context window / maxTokens / cost filled from models.dev (`~/.pi/pi-config/models.dev.json`, 1-day refresh). Cold-start default restore (#753): gates `startup`\|`new`, empty `enabledModels`, trusted project merge — see `dev-docs/cli-provider.md`. Headless Cursor `--approve-mcps` when `CLI_APPROVE_MCPS` is set (`false` opts out) or the process is a sidecar (`SIDECAR_PORT`; `startSidecar()` stamps it while running and restores it on `close()`). Executable sidecar consumers should call `bindSidecarListenExit()` so bind/`stopped` fatals exit 1. Headless Gemini defaults `GEMINI_CLI_TRUST_WORKSPACE=true` and preserves an explicit parent value (including `false`). |
19
+ | **`/btw` command** | Quick side questions without polluting conversation history — ephemeral overlay |
20
+ | **`/async-status` command** | Show status of background agents — select one for live output streaming |
21
+ | **`/async-kill` command** | Kill async agents (overlay picker or by name/id) |
22
+ | **`ask_user` tool** | Structured user input with options and free-text — used by workflows |
23
+ | **Python/pip enforcement** | Auto-fixes `python`/`python3` → `uv run python`; blocks `pip`/`pip3` — requires `uv` |
24
+ | **Git protection** | Blocks commits/pushes to main/master, merged branches, `--no-verify`, `git add .` |
25
+ | **Remote script exec block** | Blocks `curl \| bash`, `eval $(curl)`, etc. Allows safe `VAR=$(curl ...)` variable assignments |
26
+ | **Dangerous command gate** | Confirms `rm -rf`, `sudo`, `mkfs`, etc. |
27
+ | **Rule injection** | Injects orchestrator routing rules into system prompt |
28
+ | **Git status** | Live git status in status line with colored icons — updates after every tool call. Shows clickable `#N` when the branch has an open PR. Last-activity clock `⏱ HH:MM (Xm/Xh ago)` shows time since last response |
29
+ | **Desktop notifications** | Notifies via `notify-send` on task completion, waiting for input, and action required |
30
+ | **File preview** | Serves generated HTML/frontend files via HTTP for browser preview from container |
31
+ | **Pidash dashboard** | Live web dashboard — multi-session monitoring, browser messaging, model switching, live session name updates, reasoning token display |
32
+ | **Pidiff viewer** | Per-project diff viewer with review comments — branch diffs, file tree, inline comments, git-based ignore rules |
33
+ | **Dreaming** | Background memory consolidation — extracts memories from sessions, deduplicates, maintains topic-based memory |
34
+ | **Memory enforcement** | Code-enforced memory entries — triggers on bash/tool/file events, actions: block, run_after, warn. LLM cannot ignore enforced rules. Dreaming-safe via _(enforced)_ marker |
35
+ | **Upgrade changelog** | Shows release notes on session start after pi-config version upgrade |
36
+ | **Task tracking** | Structured task lists for multi-step workflows — live widget, progress tracking, reminder nudges (owned, based on [@tintinweb/pi-tasks](https://github.com/tintinweb/pi-tasks) MIT) |
37
+ | **Neovim integration** | Send changed files and review findings to nvim's quickfix list — only active when running inside nvim |
38
+ | **Inter-agent communication** | P2P (`/coms`) agent communication — on-demand activation via slash command |
39
+ | **Slash commands** | `/pr-review`, `/issue-review`, `/release`, `/review-local`, `/review-status`, `/query-db`, `/btw`, `/async-status`, `/async-kill`, `/status`, `/dream`, `/remember`, `/coms`, `/pi-config-settings`, `/mcpc connect` — with autocomplete argument hints |
40
+ | **GitHub autocomplete** | Type `#` in the editor to get issue/PR suggestions from the current repo — lazy-loaded, 5min cache |
41
+ | **Command arg completions** | Tab-complete arguments for slash commands — providers and models for `/external-ai`, branches for `/review-local`, PR numbers for `/pr-review`, and more |
42
+ | **Discord bot** | Control pi sessions from your phone via Discord DMs — send prompts, answer ask_user dialogs, switch sessions |
43
43
 
44
44
  ### Agents (26)
45
45
 
46
- | Category | Agents |
47
- |----------|--------|
48
- | Languages | python-expert, go-expert, ts-expert, java-expert, bash-expert |
49
- | Infrastructure | docker-expert, kubernetes-expert, jenkins-expert |
50
- | Dev workflow | git-expert, github-expert, test-runner, test-automator, debugger |
51
- | Documentation | technical-documentation-writer, api-documenter, docs-fetcher |
52
- | Code review | code-reviewer-quality, code-reviewer-guidelines, code-reviewer-security, code-reviewer-docs, code-reviewer-spec |
53
- | Security | security-auditor |
54
- | Workflow | scout, planner, worker, reviewer |
46
+ | Category | Agents |
47
+ | -------------- | --------------------------------------------------------------------------------------------------------------- |
48
+ | Languages | python-expert, go-expert, ts-expert, java-expert, bash-expert |
49
+ | Infrastructure | docker-expert, kubernetes-expert, jenkins-expert |
50
+ | Dev workflow | git-expert, github-expert, test-runner, test-automator, debugger |
51
+ | Documentation | technical-documentation-writer, api-documenter, docs-fetcher |
52
+ | Code review | code-reviewer-quality, code-reviewer-guidelines, code-reviewer-security, code-reviewer-docs, code-reviewer-spec |
53
+ | Security | security-auditor |
54
+ | Workflow | scout, planner, worker, reviewer |
55
55
 
56
56
  ### Prompt Templates
57
57
 
58
- | Prompt | Description |
59
- |--------|-------------|
60
- | `/implement <task>` | scout → planner → worker |
61
- | `/scout-and-plan <task>` | scout → planner |
62
- | `/implement-and-review <task>` | worker → 5 reviewers → worker |
63
- | `/pr-review [number\|url]` | Fetch PR diff, check past review comments, review with guidelines, post and track comments |
64
- | `/issue-review` | Review a GitHub issue spec and fix it |
65
- | `/release [flags]` | Create GitHub release with changelog and version bumping |
66
- | `/review-local [branch]` | Review local uncommitted or branch changes |
67
- | `/review-handler [url] [--autorabbit] [--autoqodo]` | Process PR review comments, fix approved items |
68
- | `/domain-model [focus area]` | Scan codebase and build/update a CONTEXT.md domain glossary for consistent AI vocabulary |
69
- | `/refine-review <url>` | Refine and improve existing PR review comments |
70
- | `/coderabbit-rate-limit [number\|url]` | Handle CodeRabbit rate limiting on PRs |
71
- | `/create-coms-feature-manager` | Generate a coms feature-manager prompt customized for the current project (source template: `templates/coms-feature-manager-prompt.md`) |
72
- | `/query-db <command>` | Query the review comments database |
73
- | `/external-ai <agent> [--model <model>] [--session-id <id>] [--fix\|--peer\|--resume] <prompt>` | Run prompts via AI CLIs directly (cursor, claude, gemini) — full model access |
74
- | `/external-ai-models-refresh` | Refresh cached AI CLI models for autocomplete |
75
- | `/dream` | Run memory consolidation — extract, deduplicate, maintain topic-based memory |
76
- | `/remember <what>` | Save a memory for future sessions |
77
- | `/dream-auto` | Toggle automatic memory dreaming (every 3h + session end) |
78
- | `/cron add\|list\|list-all\|remove` | Schedule recurring tasks within the pi session (e.g., `/cron add every 2h check for new issues`, `/cron add at 12:00 /review-handler`). `/cron list` and `/cron list-all` open overlay UI (view / remove; list-all = all sessions). Tasks run while pi is active, survive `/reload`, and stop on exit |
79
- | `/async-kill [name\|id\|all]` | Kill async agents (overlay picker or by name/id) |
80
- | `/pi-config-settings [project\|global]` | Interactive TUI settings editor — browse all pi-config settings with scope indicators, smart pickers for providers/models, and immediate save |
81
- | `/status` | Unified session snapshot — async agents, cron tasks, git branch, context usage |
82
- | `/nvim-changed-files` | Send git changed files to nvim's quickfix list (only inside nvim) |
83
- | `/pidiff start\|stop\|restart\|status` | Manage the pidiff diff viewer server (per-project) |
84
- | `/coms start\|stop\|status` | P2P local agent communication (Unix socket) |
58
+ | Prompt | Description |
59
+ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
60
+ | `/implement <task>` | scout → planner → worker |
61
+ | `/scout-and-plan <task>` | scout → planner |
62
+ | `/implement-and-review <task>` | worker → 5 reviewers → worker |
63
+ | `/pr-review [number\|url]` | Fetch PR diff, check past review comments, review with guidelines, post and track comments |
64
+ | `/issue-review` | Review a GitHub issue spec and fix it |
65
+ | `/release [flags]` | Create GitHub release with changelog and version bumping |
66
+ | `/review-local [branch]` | Review local uncommitted or branch changes |
67
+ | `/review-handler [url] [--autorabbit] [--autoqodo]` | Process PR review comments, fix approved items |
68
+ | `/domain-model [focus area]` | Scan codebase and build/update a CONTEXT.md domain glossary for consistent AI vocabulary |
69
+ | `/refine-review <url>` | Refine and improve existing PR review comments |
70
+ | `/coderabbit-rate-limit [number\|url]` | Handle CodeRabbit rate limiting on PRs |
71
+ | `/create-coms-feature-manager` | Generate a coms feature-manager prompt customized for the current project (source template: `templates/coms-feature-manager-prompt.md`) |
72
+ | `/query-db <command>` | Query the review comments database |
73
+ | `/external-ai <agent> [--model <model>] [--session-id <id>] [--fix\|--peer\|--resume] <prompt>` | Run prompts via AI CLIs directly (cursor, claude, gemini) — full model access |
74
+ | `/external-ai-models-refresh` | Refresh cached AI CLI models for autocomplete |
75
+ | `/dream` | Run memory consolidation — extract, deduplicate, maintain topic-based memory |
76
+ | `/remember <what>` | Save a memory for future sessions |
77
+ | `/dream-auto` | Toggle automatic memory dreaming (every 3h + session end) |
78
+ | `/cron add\|list\|list-all\|remove` | Schedule recurring tasks within the pi session (e.g., `/cron add every 2h check for new issues`, `/cron add at 12:00 /review-handler`). `/cron list` and `/cron list-all` open overlay UI (view / remove; list-all = all sessions). Tasks run while pi is active, survive `/reload`, and stop on exit |
79
+ | `/async-kill [name\|id\|all]` | Kill async agents (overlay picker or by name/id) |
80
+ | `/pi-config-settings [project\|global]` | Interactive TUI settings editor — browse all pi-config settings with scope indicators, smart pickers for providers/models, and immediate save |
81
+ | `/status` | Unified session snapshot — async agents, cron tasks, git branch, context usage |
82
+ | `/nvim-changed-files` | Send git changed files to nvim's quickfix list (only inside nvim) |
83
+ | `/pidiff start\|stop\|restart\|status` | Manage the pidiff diff viewer server (per-project) |
84
+ | `/coms start\|stop\|status` | P2P local agent communication (Unix socket) |
85
+ | `/mcpc connect` | Connect MCP servers from `~/.pi/pi-config/mcp.json` (`mcpc connect --stdio`). Run after editing that file. |
85
86
 
86
87
  ### Inter-Agent Communication (coms)
87
88
 
@@ -97,12 +98,12 @@ Two systems for Pi agents to communicate with each other, activated on-demand vi
97
98
 
98
99
  **Tools available once activated:**
99
100
 
100
- | Tool | Description |
101
- |------|-------------|
102
- | `*_list` | List peer agents with names, models, context usage, queue depth |
103
- | `*_send` | Send a prompt to a peer agent |
104
- | `*_get` | Non-blocking poll for a response |
105
- | `*_await` | Block until response arrives |
101
+ | Tool | Description |
102
+ | --------- | --------------------------------------------------------------- |
103
+ | `*_list` | List peer agents with names, models, context usage, queue depth |
104
+ | `*_send` | Send a prompt to a peer agent |
105
+ | `*_get` | Non-blocking poll for a response |
106
+ | `*_await` | Block until response arrives |
106
107
 
107
108
  Forked from [disler/pi-vs-claude-code](https://github.com/disler/pi-vs-claude-code) coms extensions. We own these files — FIFO message queue, structured task delegation via coms protocol.
108
109
 
@@ -144,8 +145,8 @@ uv run scripts/install.py
144
145
  The installer covers:
145
146
 
146
147
  - **Pi Packages** — pi-config, pi-vertex-claude, pi-web-access, myk-pi-tools, bun
147
- - **Python Tools** — mcp-launchpad (mcpl), prek
148
- - **npm Packages** — acpx, agent-browser
148
+ - **Python Tools** — prek
149
+ - **npm Packages** — mcpc, acpx, agent-browser
149
150
  - **Browser Automation** — playwright + chromium
150
151
  - **Environment Setup** — gitignore configuration
151
152
 
@@ -201,6 +202,7 @@ Add retry logic to the HTTP client in src/api.py
201
202
  /release --dry-run
202
203
  /review-local main
203
204
  /query-db stats
205
+ /mcpc connect
204
206
  ```
205
207
 
206
208
  ### Direct subagent usage
@@ -214,25 +216,44 @@ Run scout and planner in a chain to analyze the auth module
214
216
 
215
217
  ```bash
216
218
  # Discover available models
217
- list_models(provider="litellm")
219
+ list_models(provider="my-provider")
218
220
 
219
221
  # Run agent with explicit model
220
- subagent(agent="worker", task="...", model="litellm/claude-opus-4-6-1m")
222
+ subagent(agent="worker", task="...", model="my-provider/model-id")
221
223
 
222
224
  # Parallel tasks with per-task models
223
- subagent(tasks=[{agent: "worker", task: "...", model: "litellm/claude-opus-4-6-1m", cwd: "..."}])
225
+ subagent(tasks=[{agent: "worker", task: "...", model: "my-provider/model-id", cwd: "..."}])
224
226
  ```
225
227
 
228
+ ### OpenAI-compatible model discovery
229
+
230
+ Set `discoverModels: true` on a static `openai-completions` provider in `models.json` to load
231
+ its `/v1/models` catalog at interactive session start. Discovery never writes `models.json`. It
232
+ augments the configured provider in Pi's runtime registry, so Pi's ordinary `/model` picker
233
+ displays each result under the exact configured provider key, for example
234
+ `chatgpt-image-latest [litellm]`. The selected model keeps that same provider key and streams
235
+ through the configured provider. Existing static models remain available. Only exact duplicate
236
+ returned IDs are deduplicated.
237
+
238
+ After discovery and runtime registration both succeed, Pi appends a durable transcript entry such
239
+ as `Providers: litellm (242)`. The key and count come from that session's configured provider and
240
+ discovery response. Failed discovery or registration appends no entry, so a prior session's count
241
+ is never presented as current.
242
+
243
+ Each returned string ID remains selectable, including opaque, blank, and whitespace-preserved IDs.
244
+ Discovery materializes a complete Pi `Model` object for every result. It uses source metadata for
245
+ `name`, `reasoning`, `input`, `cost`, `contextWindow`, and `maxTokens` when the response provides
246
+ it. Missing or invalid metadata uses Pi's static-model compatibility defaults: `reasoning: false`,
247
+ zero costs, `contextWindow: 128000`, and `maxTokens: 16384`. Unknown input declares
248
+ `['text', 'image']` so Pi can safely inspect `model.input`. That declaration only satisfies Pi's
249
+ model contract. It does not filter discovery results or claim that the endpoint accepts image input.
250
+
226
251
  ## Code Review Loop
227
252
 
228
- After any code change, the orchestrator runs 6 agents **in parallel** (5 reviewers + test-automator):
253
+ `review_loop_enforcement` controls automatic review-agent dispatch and commit enforcement.
229
254
 
230
- 1. **code-reviewer-quality** — Code quality & maintainability
231
- 2. **code-reviewer-guidelines** — Project guidelines adherence
232
- 3. **code-reviewer-security** — Bugs, logic errors, security
233
- 4. **code-reviewer-docs** — Documentation quality, completeness, accuracy
234
- 5. **code-reviewer-spec** — Code/PR/issue spec alignment
235
- 6. **test-automator** — Runs project tests (pytest, node tests, pre-commit)
255
+ - `true` automatically dispatches 6 agents in parallel (5 reviewers + `test-automator`) after code changes and requires a clean review before commits.
256
+ - `false` disables automatic review-agent and test-agent dispatch. Manual reviews and test runs are optional. No review state, cycle, or result is required before commit.
236
257
 
237
258
  When `review_loop_enforcement` is enabled, the loop stops once all reviewers approve with 0 findings and tests pass
238
259
  (`tests_passed: true` in `pi-config-review-state.jsonl`), OR after `review_loop_max_cycles` total cycles (default `3`,
@@ -273,10 +294,10 @@ See `dev-docs/project-settings.md` for the full settings table.
273
294
 
274
295
  These are set automatically by the orchestrator when spawning reviewer agents:
275
296
 
276
- | Variable | Description |
277
- |----------|-------------|
278
- | `PI_REVIEW_BASE_BRANCH` | Base branch for diff comparison (auto-detected from PR or falls back to main) |
279
- | `PI_HAS_PR` | `true` if a PR exists for the current branch, `false` for pre-push reviews. When `false`, reviewers skip Review History and `code-reviewer-spec` runs a reduced flow (issue-only checks) |
297
+ | Variable | Description |
298
+ | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
299
+ | `PI_REVIEW_BASE_BRANCH` | Base branch for diff comparison (auto-detected from PR or falls back to main) |
300
+ | `PI_HAS_PR` | `true` if a PR exists for the current branch, `false` for pre-push reviews. When `false`, reviewers skip Review History and `code-reviewer-spec` runs a reduced flow (issue-only checks) |
280
301
 
281
302
  #### Per-Project Resource Management
282
303
 
@@ -298,11 +319,11 @@ Priority: project > user > package (bundled).
298
319
 
299
320
  The orchestrator loads rules from three directories (later layers override same-filename entries):
300
321
 
301
- | Layer | Path | Scope | Number range |
302
- |-------|------|-------|--------------|
303
- | Package | `<pi-config>/rules/` | All users, all projects | `00-69` |
304
- | User | `~/.pi/agent/rules/` | All projects for this user | `70-89` |
305
- | Project | `<project>/.pi/rules/` | Current project only | `90-99` |
322
+ | Layer | Path | Scope | Number range |
323
+ | ------- | ---------------------- | -------------------------- | ------------ |
324
+ | Package | `<pi-config>/rules/` | All users, all projects | `00-69` |
325
+ | User | `~/.pi/agent/rules/` | All projects for this user | `70-89` |
326
+ | Project | `<project>/.pi/rules/` | Current project only | `90-99` |
306
327
 
307
328
  To add a custom rule, create a `.md` file in the appropriate directory:
308
329
 
@@ -361,10 +382,10 @@ The `generate_image` tool creates images from structured descriptions via Gemini
361
382
 
362
383
  Set `image_model` in `pi-config-settings.json` or use `PI_IMAGE_MODEL` env var.
363
384
 
364
- | Setting / Variable | Description |
365
- |----------|-------------|
366
- | `image_model` / `PI_IMAGE_MODEL` | Google/Gemini image model for `generate_image` (Settings TUI filters to google; empty = disabled). |
367
- | `GEMINI_API_KEY` or `GOOGLE_API_KEY` | Gemini API key (env only) |
385
+ | Setting / Variable | Description |
386
+ | ------------------------------------ | -------------------------------------------------------------------------------------------------- |
387
+ | `image_model` / `PI_IMAGE_MODEL` | Google/Gemini image model for `generate_image` (Settings TUI filters to google; empty = disabled). |
388
+ | `GEMINI_API_KEY` or `GOOGLE_API_KEY` | Gemini API key (env only) |
368
389
 
369
390
  **Usage:** Ask naturally — "generate an image of a sunset" — or use structured params: `subject`, `action`, `scene`, `composition`, `lighting`, `style`, `text`, `aspect_ratio`.
370
391
 
@@ -485,10 +506,6 @@ GH_CONFIG_DIR=/home/youruser/.config/gh
485
506
 
486
507
  # Gemini (optional — required for image generation)
487
508
  GEMINI_API_KEY=xxx
488
-
489
- # mcpl (MCP Launchpad) config path inside the container (must match mount target)
490
- # Use your actual home path — it resolves inside the container via the PI_HOST_USER symlink
491
- MCPL_CONFIG_FILES=/home/youruser/.config/mcpl/mcp.json
492
509
  ```
493
510
 
494
511
  Pass via `--env-file /path/to/.env` in the docker run command.
@@ -503,7 +520,8 @@ files organized by category (lessons, preferences, patterns, decisions, completi
503
520
 
504
521
  The `.pi/memory/` directory is auto-added to the global gitignore in the container
505
522
  (along with `.pi/`, `.worktrees/`, `.cursor/agents/`, `.claude/agents/`, and
506
- `.gemini/agents/`).
523
+ `.gemini/agents/`). This repo's `.gitignore` also ignores those three `*/agents/`
524
+ dirs so `uv build` does not pack local specialist symlinks.
507
525
 
508
526
  For **native** (non-container) usage, add memory (and optionally CLI agent dirs) to your
509
527
  global gitignore:
@@ -602,6 +620,8 @@ Pidiff is a per-project diff viewer that opens in your browser, providing rich b
602
620
 
603
621
  - Branch diff and commit comparison
604
622
  - File tree with search and filtering
623
+ - Header **Refresh** (and the stale-file banner) updates the current diff in place — the file tree and panes stay mounted; only the button spins
624
+ - Refresh is disabled while pidiff is disconnected
605
625
  - Inline review comments on specific lines
606
626
  - Publish review comments back to the pi session
607
627
  - Per-project isolation — no port conflicts between sessions
@@ -628,65 +648,64 @@ PI_PIDIFF_ENABLE=false pi
628
648
 
629
649
  ### Optional mounts
630
650
 
631
- | Mount | Purpose |
632
- |---|---|
633
- | `-v "<PATH_TO_MCPL_CONFIG>":"$HOME/.config/mcpl/mcp.json":ro` | MCP server config for `mcpl` |
634
- | `-v "$HOME/.agents":"$HOME/.agents":rw` | User-level skills (install/uninstall from container) |
635
- | `-v "$HOME/.config/gcloud/application_default_credentials.json":"$HOME/.config/gcloud/application_default_credentials.json":ro` | Google Cloud ADC (for Claude via Vertex AI) |
636
- | `-v "$HOME/.config/cursor/auth.json":"$HOME/.config/cursor/auth.json":ro` | Cursor CLI auth (for acpx-cursor / cli-cursor models) |
637
- | `-v "$HOME/.claude/credentials.json":"$HOME/.claude/credentials.json":ro` | Claude CLI auth (for acpx-claude / cli-claude models) |
638
- | `-v "$HOME/.config/glab-cli":"$HOME/.config/glab-cli":ro` | GitLab CLI config (auth tokens, host settings) |
639
- | `-v "$HOME/.coderabbit":"$HOME/.coderabbit":rw` | CodeRabbit CLI auth and review data |
640
- | `-v "$HOME/screenshots":"$HOME/screenshots"` | Share screenshots/images with the agent |
641
- | `-v /var/run/docker.sock:/var/run/docker.sock:ro` + `--group-add $(stat -c '%g' /var/run/docker.sock)` | Docker container inspection via `docker-safe` |
642
- | `-v /var/run/podman/podman.sock:/var/run/podman/podman.sock:ro` | Podman container inspection via `docker-safe` |
651
+ | Mount | Purpose |
652
+ | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
653
+ | `-v "$HOME/.agents":"$HOME/.agents":rw` | User-level skills (install/uninstall from container) |
654
+ | `-v "$HOME/.config/gcloud/application_default_credentials.json":"$HOME/.config/gcloud/application_default_credentials.json":ro` | Google Cloud ADC (for Claude via Vertex AI) |
655
+ | `-v "$HOME/.config/cursor/auth.json":"$HOME/.config/cursor/auth.json":ro` | Cursor CLI auth (for acpx-cursor / cli-cursor models) |
656
+ | `-v "$HOME/.claude/credentials.json":"$HOME/.claude/credentials.json":ro` | Claude CLI auth (for acpx-claude / cli-claude models) |
657
+ | `-v "$HOME/.config/glab-cli":"$HOME/.config/glab-cli":ro` | GitLab CLI config (auth tokens, host settings) |
658
+ | `-v "$HOME/.coderabbit":"$HOME/.coderabbit":rw` | CodeRabbit CLI auth and review data |
659
+ | `-v "$HOME/screenshots":"$HOME/screenshots"` | Share screenshots/images with the agent |
660
+ | `-v /var/run/docker.sock:/var/run/docker.sock:ro` + `--group-add $(stat -c '%g' /var/run/docker.sock)` | Docker container inspection via `docker-safe` |
661
+ | `-v /var/run/podman/podman.sock:/var/run/podman/podman.sock:ro` | Podman container inspection via `docker-safe` |
643
662
 
644
663
  ### What's in the image
645
664
 
646
- | Tool | Purpose |
647
- |---|---|
648
- | `pi` | Coding agent |
649
- | `git` | Version control |
650
- | `gh` | GitHub CLI (PRs, issues) |
651
- | `glab` | GitLab CLI (MRs, issues, pipelines) — install [gitlab-cli-skills](https://github.com/vince-winkintel/gitlab-cli-skills) for full agent support |
652
- | `gcc` | C compiler — needed for building Python C extensions (e.g. ovirt-engine-sdk-python) |
653
- | `uv` / `uvx` | Python execution (enforced by orchestrator) |
654
- | `go` | Go development and code review |
655
- | `libxml2-dev` | libxml2 headers — needed for building Python C extensions (e.g. ovirt-engine-sdk-python) |
656
- | `mcpl` | MCP server access (search, Jenkins, etc.) |
657
- | `myk-pi-tools` | PR review, release, and other CLI utilities |
658
- | `prek` | Pre-commit hook runner |
659
- | `acpx` | Agent proxy for remote models |
660
- | `kubectl` / `oc` | Kubernetes and OpenShift CLI |
661
- | `agent-browser` | Browser automation CLI (navigate, click, screenshot, forms) |
662
- | `procps` | Process utilities (ps, top, pgrep, pkill) |
663
- | `passwd` | `usermod`/`groupmod` — init remaps user `node` to `PI_HOST_UID`/`PI_HOST_GID` |
664
- | `docker` / `podman` | Container CLIs (used via `docker-safe` read-only wrapper) |
665
- | `docker-safe` | Restricted Docker/Podman wrapper — container only (ps, logs, inspect, top, stats) |
666
- | `jq` | JSON processing |
667
- | `rg` (ripgrep) | Fast recursive search |
668
- | `cr` | CodeRabbit CLI — local AI code reviews |
669
- | `curl` | HTTP requests |
665
+ | Tool | Purpose |
666
+ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
667
+ | `pi` | Coding agent |
668
+ | `git` | Version control |
669
+ | `gh` | GitHub CLI (PRs, issues) |
670
+ | `glab` | GitLab CLI (MRs, issues, pipelines) — install [gitlab-cli-skills](https://github.com/vince-winkintel/gitlab-cli-skills) for full agent support |
671
+ | `gcc` | C compiler — needed for building Python C extensions (e.g. ovirt-engine-sdk-python) |
672
+ | `uv` / `uvx` | Python execution (enforced by orchestrator) |
673
+ | `go` | Go development and code review |
674
+ | `libxml2-dev` | libxml2 headers — needed for building Python C extensions (e.g. ovirt-engine-sdk-python) |
675
+ | `mcpc` | MCP CLI (`npm: @apify/mcpc`). Put servers in `~/.pi/pi-config/mcp.json` (already on the `~/.pi` mount). Pi runs `mcpc connect … --stdio` on start. After editing the file, `/mcpc connect`. `entrypoint.sh` reinstalls `@apify/mcpc` on every start so `PI_HOST_USER` host `.npm-global` mapping does not hide the image copy. |
676
+ | `myk-pi-tools` | PR review, release, and other CLI utilities |
677
+ | `prek` | Pre-commit hook runner |
678
+ | `acpx` | Agent proxy for remote models |
679
+ | `kubectl` / `oc` | Kubernetes and OpenShift CLI |
680
+ | `agent-browser` | Browser automation CLI (navigate, click, screenshot, forms) |
681
+ | `procps` | Process utilities (ps, top, pgrep, pkill) |
682
+ | `passwd` | `usermod`/`groupmod` — init remaps user `node` to `PI_HOST_UID`/`PI_HOST_GID` |
683
+ | `docker` / `podman` | Container CLIs (used via `docker-safe` read-only wrapper) |
684
+ | `docker-safe` | Restricted Docker/Podman wrapper — container only (ps, logs, inspect, top, stats) |
685
+ | `jq` | JSON processing |
686
+ | `rg` (ripgrep) | Fast recursive search |
687
+ | `cr` | CodeRabbit CLI — local AI code reviews |
688
+ | `curl` | HTTP requests |
670
689
 
671
690
  #### `myk-pi-tools` subcommands
672
691
 
673
- | Command | Description |
674
- |---------|-------------|
675
- | `myk-pi-tools pr diff` | Fetch PR diff and metadata |
676
- | `myk-pi-tools pr info` | Fetch PR information as structured JSON |
677
- | `myk-pi-tools pr post-comment` | Post inline comments to a PR |
678
- | `myk-pi-tools pr store-pr-review` | Store posted PR review comments to `pr-reviews.db` |
679
- | `myk-pi-tools pr update-resolution` | Update resolution status for a previously posted review comment. Used by Phase 1c of `/pr-review` to persist LLM evaluation verdicts |
680
- | `myk-pi-tools pr get-review-history` | Return complete review history for a PR as JSON (posted, skipped, resolved findings). Used by reviewers to avoid re-raising dismissed findings |
681
- | `myk-pi-tools pr get-skipped-comments` | Get previously skipped review comments for a PR |
682
- | `myk-pi-tools pr claude-md` | Fetch `CLAUDE.md` and `AGENTS.md` content for a PR's repository |
683
- | `myk-pi-tools release create` | Create a GitHub release with changelog |
684
- | `myk-pi-tools db` | Review database query commands |
685
- | `myk-pi-tools reviews` | Review handling commands |
686
- | `myk-pi-tools memory` | Project memory commands — persistent per-repo learning |
687
- | `myk-pi-tools ai-cli` | AI CLI commands (cursor, claude, gemini) |
688
- | `myk-pi-tools coderabbit` | CodeRabbit commands (check, trigger, retry) |
689
- | `myk-pi-tools settings get [key ...]` | Resolve settings (project → global → env → default). No args = all keys |
692
+ | Command | Description |
693
+ | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
694
+ | `myk-pi-tools pr diff` | Fetch PR diff and metadata |
695
+ | `myk-pi-tools pr info` | Fetch PR information as structured JSON |
696
+ | `myk-pi-tools pr post-comment` | Post inline comments to a PR |
697
+ | `myk-pi-tools pr store-pr-review` | Store posted PR review comments to `pr-reviews.db` |
698
+ | `myk-pi-tools pr update-resolution` | Update resolution status for a previously posted review comment. Used by Phase 1c of `/pr-review` to persist LLM evaluation verdicts |
699
+ | `myk-pi-tools pr get-review-history` | Return complete review history for a PR as JSON (posted, skipped, resolved findings). Used by reviewers to avoid re-raising dismissed findings |
700
+ | `myk-pi-tools pr get-skipped-comments` | Get previously skipped review comments for a PR |
701
+ | `myk-pi-tools pr claude-md` | Fetch `CLAUDE.md` and `AGENTS.md` content for a PR's repository |
702
+ | `myk-pi-tools release create` | Create a GitHub release with changelog |
703
+ | `myk-pi-tools db` | Review database query commands |
704
+ | `myk-pi-tools reviews` | Review handling commands |
705
+ | `myk-pi-tools memory` | Project memory commands — persistent per-repo learning |
706
+ | `myk-pi-tools ai-cli` | AI CLI commands (cursor, claude, gemini) |
707
+ | `myk-pi-tools coderabbit` | CodeRabbit commands (check, trigger, retry) |
708
+ | `myk-pi-tools settings get [key ...]` | Resolve settings (project → global → env → default). No args = all keys |
690
709
 
691
710
  ### What's protected
692
711
 
@@ -702,7 +721,7 @@ PI_PIDIFF_ENABLE=false pi
702
721
  **Network** — `--network host` shares the host network stack,
703
722
  so the container can reach any service your host can (LAN, localhost),
704
723
  and the host can reach services started inside the container.
705
- This is required for local MCP servers, LiteLLM proxy, and file preview
724
+ This is required for local MCP servers, OpenAI-compatible proxy, and file preview
706
725
  (agents serve generated HTML/frontend files via HTTP for browser access).
707
726
  If your LLM provider is cloud-based, you don't use local MCPs,
708
727
  and you don't need file preview, you can omit `--network host`.
@@ -725,7 +744,6 @@ alias pi-docker='docker pull ghcr.io/myk-org/pi-config:latest && \
725
744
  -v "$HOME/.gitignore-global":"$HOME/.gitignore-global":ro \
726
745
  -v "$HOME/.ssh":"$HOME/.ssh":ro \
727
746
  -v "$HOME/.config/gh":"$HOME/.config/gh":ro \
728
- -v "$HOME/.config/mcpl/mcp.json":"$HOME/.config/mcpl/mcp.json":ro \ # adjust host path to your mcpl config location
729
747
  -v "$HOME/.agents":"$HOME/.agents":rw \
730
748
  -v "$HOME/.config/gcloud/application_default_credentials.json":"$HOME/.config/gcloud/application_default_credentials.json":ro \
731
749
  -v "$HOME/.config/cursor/auth.json":"$HOME/.config/cursor/auth.json":ro \
@@ -786,15 +804,15 @@ Control your pi sessions from your phone via Discord DMs.
786
804
 
787
805
  ### Discord Commands
788
806
 
789
- | Command | Description |
790
- |---------|-------------|
791
- | `!sessions` | List active pi sessions |
792
- | `!watch N` | Watch/switch to session N |
793
- | `!status` | Show current session info |
794
- | `!abort` | Abort current operation |
795
- | `!help` | Show commands |
796
- | Any text | Send as prompt to watched session |
797
- | `/command` | Forward slash command to pi session |
807
+ | Command | Description |
808
+ | ----------- | ----------------------------------- |
809
+ | `!sessions` | List active pi sessions |
810
+ | `!watch N` | Watch/switch to session N |
811
+ | `!status` | Show current session info |
812
+ | `!abort` | Abort current operation |
813
+ | `!help` | Show commands |
814
+ | Any text | Send as prompt to watched session |
815
+ | `/command` | Forward slash command to pi session |
798
816
 
799
817
  ### How It Works
800
818
 
@@ -824,10 +842,10 @@ See [DEVELOPMENT.md](DEVELOPMENT.md) for tips on testing extensions locally, run
824
842
 
825
843
  A standalone HTTP sidecar wrapping the Pi SDK, living under `packages/pi-sidecar/`.
826
844
 
827
- | Package | Language | Registry |
828
- |---------|----------|----------|
829
- | `@myk-org/pi-sidecar` | TypeScript | npm |
830
- | `pi-sidecar-client` | Python | PyPI |
845
+ | Package | Language | Registry |
846
+ | --------------------- | ---------- | -------- |
847
+ | `@myk-org/pi-sidecar` | TypeScript | npm |
848
+ | `pi-sidecar-client` | Python | PyPI |
831
849
 
832
850
  CLI commands: `npx pi-sidecar` (start server), `npx pi-sidecar-start` (background start/stop).
833
851
 
@@ -838,9 +856,9 @@ See [`packages/pi-sidecar/CONSUMER-GUIDE.md`](packages/pi-sidecar/CONSUMER-GUIDE
838
856
 
839
857
  Google Vertex AI Claude provider for Pi, living under `packages/pi-vertex-claude/`.
840
858
 
841
- | Package | Language | Registry |
842
- |---------|----------|----------|
843
- | `@myk-org/pi-vertex-claude` | TypeScript | npm |
859
+ | Package | Language | Registry |
860
+ | --------------------------- | ---------- | -------- |
861
+ | `@myk-org/pi-vertex-claude` | TypeScript | npm |
844
862
 
845
863
  See [`packages/pi-vertex-claude/README.md`](packages/pi-vertex-claude/README.md) for full documentation.
846
864