docks-kit 0.16.2 → 0.16.3
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/AGENTS.md +4 -0
- package/README.md +5 -4
- package/cli/docs/omp-models.md +176 -0
- package/cli/src/commands/docs.ts +3 -1
- package/cli/src/generated/sotPayload.ts +4 -4
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -64,6 +64,10 @@ omp SoT notes:
|
|
|
64
64
|
- `SoT/.omp/AGENTS.md`, `config.yml`, and `mcp.json` deploy to `~/.omp/agent/`.
|
|
65
65
|
- `SoT/.omp/intercom.json` deploys to `$PI_CODING_AGENT_DIR/intercom/config.json`. The default root is `~/.pi/agent`.
|
|
66
66
|
- `ompSync.ts syncConfig` deep-merges `config.yml` through `mergeOmpConfig`.
|
|
67
|
+
- `cycleOrder` ends with the `fable` role (`modelRoles.fable` = `anthropic/claude-fable-5-1:medium`, `modelTags.fable` visible, `retry.fallbackChains.fable` empty), so the model switcher reaches Fable 5.1 as its fourth stop and never falls back off it. The hidden `switch_fable` role points at the same model and level.
|
|
68
|
+
- `modelRoles.task` is `openai-codex/gpt-6-astra:low`, chosen for 2.60 s TTFT and 4k output tokens per task at cost parity with the previous `gpt-5.6-sol:high`. The four reviewer agents in `task.agentModelOverrides` inherit `@task`, and Artificial Analysis publishes no per-level Astra Coding Agent Index score, so reviewer output is the signal to watch.
|
|
69
|
+
- `SoT/.omp/AGENTS.md` carries the rule `Please remove all mannered prose.` Anthropic's Fable 5.1 prompting guide documents mannered prose as a Fable 5.1 behavior and gives that sentence as its short-version fix: https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-1
|
|
70
|
+
- `cli/docs/omp-models.md` (topic `omp-models`) records the role map rationale and the Artificial Analysis snapshot behind it. Model choices change with published benchmarks, so update that topic in the same commit as a role change.
|
|
67
71
|
- Sync registers the `docks` marketplace. It installs or upgrades `docks@docks` and `plan-lifecycle@docks` at user scope.
|
|
68
72
|
- Sync installs `pi-intercom` at the verified version from `SoT/toolchain.json`.
|
|
69
73
|
- The omp CLI is upstream-owned and self-updating through `omp update`. Sync never installs or upgrades the CLI.
|
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ docks-kit toolchain [check|ensure <tool>] verified-version floors for exte
|
|
|
52
52
|
docks-kit status [--json] deployed-vs-SoT drift + toolchain + counts
|
|
53
53
|
docks-kit plugins list [--json] enabledPlugins tri-state vs installed
|
|
54
54
|
docks-kit skills list [--json] universal skills vs manifest
|
|
55
|
-
docks-kit docs [topic] self-documentation (
|
|
55
|
+
docks-kit docs [topic] self-documentation (10 topics)
|
|
56
56
|
--help --version --wizard --completions built-in
|
|
57
57
|
```
|
|
58
58
|
|
|
@@ -145,13 +145,14 @@ release. npm publishes the exact package tarball through trusted publishing
|
|
|
145
145
|
with OIDC provenance.
|
|
146
146
|
Published binaries, checksums, and release notes are available on
|
|
147
147
|
[GitHub Releases](https://github.com/DocksDocks/public/releases).
|
|
148
|
-
|
|
148
|
+
Each `docks-kit` npm release bundles the CLI + generated payload, so releases
|
|
149
149
|
are versioned config snapshots without shipping the authoring `SoT/` tree.
|
|
150
150
|
|
|
151
151
|
## Deeper docs
|
|
152
152
|
|
|
153
|
-
- `docks-kit docs <topic>`
|
|
154
|
-
toolchain, plugins, install, platforms (works offline, bundled
|
|
153
|
+
- `docks-kit docs <topic>` - overview, sync-layers, flags, modifiers, models,
|
|
154
|
+
omp-models, toolchain, plugins, install, platforms (works offline, bundled
|
|
155
|
+
with the CLI)
|
|
155
156
|
- [`AGENTS.md`](AGENTS.md) — engineering rules for agents working on the kit
|
|
156
157
|
- [`CLAUDE.md`](CLAUDE.md) — Claude Code specifics: env vars, session
|
|
157
158
|
management, permission mode, open concerns
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# omp models
|
|
2
|
+
|
|
3
|
+
Why `SoT/.omp/config.yml` points each omp role at a specific model and thinking
|
|
4
|
+
level, and the Artificial Analysis (AA) measurements the choices were weighed
|
|
5
|
+
against.
|
|
6
|
+
|
|
7
|
+
## Role map
|
|
8
|
+
|
|
9
|
+
| Role | Model | Level | Index | Cost/task | TTFT | Coding Agent Index |
|
|
10
|
+
|---|---|---|---:|---:|---:|---:|
|
|
11
|
+
| `default` | `anthropic/claude-opus-5` | high | 48 | $3.61 | 16.96 s | 66 (Claude Code) |
|
|
12
|
+
| `slow` | `anthropic/claude-opus-5` | xhigh | 50 | $4.88 | 28.65 s | 68 (Claude Code) |
|
|
13
|
+
| `plan` | `anthropic/claude-opus-5` | xhigh | 50 | $4.88 | 28.65 s | 68 (Claude Code) |
|
|
14
|
+
| `task` | `openai-codex/gpt-6-astra` | low | 46 | $0.82 | 2.60 s | n/a |
|
|
15
|
+
| `advisor` | `openai-codex/gpt-5.6-sol` | medium | 39 | $0.50 | 4.90 s | 62 (Codex) |
|
|
16
|
+
| `designer` | `anthropic/claude-opus-5` | high | 48 | $3.61 | 16.96 s | 66 (Claude Code) |
|
|
17
|
+
| `vision` | `anthropic/claude-opus-5` | medium | 45 | $2.19 | 3.79 s | 64 (Claude Code) |
|
|
18
|
+
| `smol` / `commit` | `openai-codex/gpt-5.6-luna` | medium | 26 | n/a | 2.18 s | 42 (Codex) |
|
|
19
|
+
| `tiny` | `openai-codex/gpt-5.6-luna` | low | 22 | n/a | 1.78 s | 25 (Codex) |
|
|
20
|
+
| `fable` | `anthropic/claude-fable-5-1` | medium | 49 | $2.98 | 9.65 s | n/a |
|
|
21
|
+
| `switch_fable` | `anthropic/claude-fable-5-1` | medium | 49 | $2.98 | 9.65 s | n/a |
|
|
22
|
+
|
|
23
|
+
The table reports the measured Artificial Analysis figures for each assigned
|
|
24
|
+
model and level. It states no motive that the config or omp's own
|
|
25
|
+
documentation does not establish. AA lists no cost per task for Luna medium
|
|
26
|
+
and low, and no Coding Agent Index for any Astra or Fable 5.1 level except
|
|
27
|
+
max.
|
|
28
|
+
|
|
29
|
+
What omp's settings catalog establishes about these roles:
|
|
30
|
+
|
|
31
|
+
- `cycleOrder` lists the roles the model switcher cycles, so `fable` is the
|
|
32
|
+
fourth `Ctrl+P` stop.
|
|
33
|
+
- `tiny` overrides the model for lightweight background tasks: titles, memory,
|
|
34
|
+
auto-thinking, and unexpected-stop detection.
|
|
35
|
+
- `modelTags` carries role metadata and can introduce roles; `hidden: true`
|
|
36
|
+
keeps `switch_fable` out of the switcher list.
|
|
37
|
+
|
|
38
|
+
`task.agentModelOverrides` maps `reviewer`, `security-reviewer`,
|
|
39
|
+
`code-reviewer`, and `plan-reviewer` to `@task`, so all four inherit whatever
|
|
40
|
+
`task` resolves to. `retry.fallbackChains.task` keeps
|
|
41
|
+
`anthropic/claude-opus-5:high` as a cross-vendor fallback.
|
|
42
|
+
|
|
43
|
+
## Artificial Analysis snapshot
|
|
44
|
+
|
|
45
|
+
Source: `https://artificialanalysis.ai`, read on 2026-09-08. Every score below
|
|
46
|
+
comes from one snapshot: Intelligence Index v4.3 and Coding Agent Index v1.4,
|
|
47
|
+
taken from each family's release page, its per-level model pages, and the
|
|
48
|
+
harness comparison pages. The v4.1.1-era figures in AA's Astra launch article
|
|
49
|
+
are excluded, because index composition changed in v4.2 and again in v4.3, so
|
|
50
|
+
mixing them would invalidate every ratio here. The head-to-head rows come from
|
|
51
|
+
the direct `gpt-6-astra-low-vs-gpt-5-6-sol-high` comparison page, not from a
|
|
52
|
+
comparison against another Sol level.
|
|
53
|
+
|
|
54
|
+
Column meanings:
|
|
55
|
+
|
|
56
|
+
- **Intelligence Index** - AA's weighted aggregate across its evaluation set.
|
|
57
|
+
Comparable only inside one index version.
|
|
58
|
+
- **Coding Agent Index** - agentic coding score inside a named harness. AA
|
|
59
|
+
publishes it per harness, and for most effort levels it publishes nothing.
|
|
60
|
+
- **Cost per Index task** - weighted average USD to run one index task,
|
|
61
|
+
including input, cache, reasoning, and answer tokens.
|
|
62
|
+
- **Index output tokens** - total output tokens the model spends to complete the
|
|
63
|
+
whole index run. This is the token-efficiency signal.
|
|
64
|
+
- **TTFT** - seconds to the first answer token, so reasoning time counts.
|
|
65
|
+
|
|
66
|
+
### GPT-6 Astra (OpenAI) - `openai-codex/gpt-6-astra`
|
|
67
|
+
|
|
68
|
+
| Level | Intelligence Index | Coding Agent Index | Cost per Index task | Index output tokens | Output speed t/s | TTFT s |
|
|
69
|
+
|---|---:|---:|---:|---:|---:|---:|
|
|
70
|
+
| max | 53 | 67 (Codex) | $3.26 | 60M | 59 | 322.48 |
|
|
71
|
+
| xhigh | 53 | n/a | $2.31 | 38M | 57 | 161.65 |
|
|
72
|
+
| high | 51 | n/a | $1.72 | 26M | 55 | 45.63 |
|
|
73
|
+
| medium | 50 | n/a | $1.54 | 19M | 53 | 5.42 |
|
|
74
|
+
| low | 46 | n/a | $0.82 | 10M | 53 | 2.60 |
|
|
75
|
+
| non-reasoning | 45 | n/a | $1.71 | 12M | n/a | n/a |
|
|
76
|
+
|
|
77
|
+
Price: $10.00 in, $50.00 out, $1.00 cache read, $12.50 cache write per 1M.
|
|
78
|
+
Context 1M. Knowledge cutoff 2026-04-30.
|
|
79
|
+
AA lists non-reasoning above low on cost per task.
|
|
80
|
+
|
|
81
|
+
### Claude Fable 5.1 (Anthropic) - `anthropic/claude-fable-5-1`
|
|
82
|
+
|
|
83
|
+
| Level | Intelligence Index | Coding Agent Index | Cost per Index task | Index output tokens | Output speed t/s | TTFT s |
|
|
84
|
+
|---|---:|---:|---:|---:|---:|---:|
|
|
85
|
+
| max | 54 (estimated) | 70 (Claude Code) | n/a | n/a | 70 | 277.47 |
|
|
86
|
+
| xhigh | 53 | n/a | $5.98 | n/a | 60 | 124.87 |
|
|
87
|
+
| high | 51 | n/a | $3.91 | n/a | 57 | 23.70 |
|
|
88
|
+
| medium | 49 | n/a | $2.98 | n/a | 56 | 9.65 |
|
|
89
|
+
| low | 47 | n/a | $2.37 | n/a | 53 | 6.55 |
|
|
90
|
+
|
|
91
|
+
Price: $10.00 in, $50.00 out, $0.25 cache read per 1M; no published cache-write
|
|
92
|
+
price. Context 1M. All levels run with fallback.
|
|
93
|
+
AA publishes per-task output tokens instead of index totals here: low 22k,
|
|
94
|
+
medium 28k, high 38k, xhigh 61k. AA marks the max index score as estimated.
|
|
95
|
+
|
|
96
|
+
### Claude Opus 5 (Anthropic) - `anthropic/claude-opus-5`
|
|
97
|
+
|
|
98
|
+
| Level | Intelligence Index | Coding Agent Index | Cost per Index task | Index output tokens | Output speed t/s | TTFT s |
|
|
99
|
+
|---|---:|---:|---:|---:|---:|---:|
|
|
100
|
+
| max | 51 | 67 (Claude Code) | $5.86 | 140M | 54.3 | 69.92 |
|
|
101
|
+
| xhigh | 50 | 68 (Claude Code) | $4.88 | 110M | 53.0 | 28.65 |
|
|
102
|
+
| high | 48 | 66 (Claude Code) | $3.61 | 81M | 54.0 | 16.96 |
|
|
103
|
+
| medium | 45 | 64 (Claude Code) | $2.19 | 49M | 53.6 | 3.79 |
|
|
104
|
+
| low | 40 | 59 (Claude Code) | $1.10 | 26M | 53.2 | 2.32 |
|
|
105
|
+
|
|
106
|
+
Price: $5.00 in, $25.00 out, $0.50 cache read, $6.25 cache write per 1M, with a
|
|
107
|
+
5-minute cache TTL. Context 1M.
|
|
108
|
+
AA reports that its Opus 5 index run fell back to Opus 4.8 for part of the set.
|
|
109
|
+
|
|
110
|
+
### GPT-5.6 Sol (OpenAI) - `openai-codex/gpt-5.6-sol`
|
|
111
|
+
|
|
112
|
+
| Level | Intelligence Index | Coding Agent Index | Cost per Index task | Index output tokens | Output speed t/s | TTFT s |
|
|
113
|
+
|---|---:|---:|---:|---:|---:|---:|
|
|
114
|
+
| max | 47 | 65 (Codex) | $1.99 | 90M | 69.8 | 132.10 |
|
|
115
|
+
| xhigh | 44 | 63 (Codex) | $1.18 | 51M | 64.8 | 50.59 |
|
|
116
|
+
| high | 42 | 64 (Codex) | $0.81 | 34M | 67.8 | 11.26 |
|
|
117
|
+
| medium | 39 | 62 (Codex) | $0.50 | 21M | 66.6 | 4.90 |
|
|
118
|
+
| low | 34 | 55 (Codex) | $0.26 | 13M | 67.1 | 2.69 |
|
|
119
|
+
| non-reasoning | 28 | 43 (Codex) | n/a | n/a | 65.6 | 1.13 |
|
|
120
|
+
|
|
121
|
+
Price: $4.00 in, $20.00 out per 1M, with a 90% cache-read discount and no
|
|
122
|
+
published numeric cache price. Context 1M.
|
|
123
|
+
|
|
124
|
+
### GPT-5.6 Luna (OpenAI) - `openai-codex/gpt-5.6-luna`
|
|
125
|
+
|
|
126
|
+
| Level | Intelligence Index | Coding Agent Index | Cost per Index task | Index output tokens | Output speed t/s | TTFT s |
|
|
127
|
+
|---|---:|---:|---:|---:|---:|---:|
|
|
128
|
+
| max | 38 | 57 (Codex) | $0.18 | n/a | 121 | 168.22 |
|
|
129
|
+
| xhigh | 35 | 53 (Codex) | $0.09 | n/a | 113 | 60.22 |
|
|
130
|
+
| high | 33 | 52 (Codex) | n/a | n/a | 120 | 9.62 |
|
|
131
|
+
| medium | 26 | 42 (Codex) | n/a | n/a | 110 | 2.18 |
|
|
132
|
+
| low | 22 | 25 (Codex) | n/a | n/a | 119 | 1.78 |
|
|
133
|
+
| non-reasoning | 17 | 19 (Codex) | n/a | n/a | 120 | 0.76 |
|
|
134
|
+
|
|
135
|
+
Price: $0.20 in, $1.20 out, $0.02 cache read per 1M; no published cache-write
|
|
136
|
+
price. Context 1M. AA lists cost per task only for max and xhigh.
|
|
137
|
+
|
|
138
|
+
## Why `task` runs Astra low
|
|
139
|
+
|
|
140
|
+
| Metric | Astra low | Sol high | Sol max | Opus 5 high |
|
|
141
|
+
|---|---:|---:|---:|---:|
|
|
142
|
+
| Intelligence Index | 46 | 42 | 47 | 48 |
|
|
143
|
+
| Cost per Index task | $0.82 | $0.81 | $1.99 | $3.61 |
|
|
144
|
+
| Output tokens per task | 4k | 13k | 29k | 46k |
|
|
145
|
+
| Index output tokens | 10M | 34M | 90M | 81M |
|
|
146
|
+
| Answer TTFT | 2.60 s | 11.26 s | 132.10 s | 16.96 s |
|
|
147
|
+
| End-to-end latency | 11.99 s | 18.64 s | 139.27 s | 26.22 s |
|
|
148
|
+
| Time per task | 84.45 s | 195.67 s | 411.54 s | 525.57 s |
|
|
149
|
+
| Terminal-Bench v4.0 | 42% | 21% | 40% | 46% |
|
|
150
|
+
| AA-Briefcase | 1253 | 1361 | 1475 | 1557 |
|
|
151
|
+
| AA-Omniscience | 41 | 20 | 22 | 34 |
|
|
152
|
+
|
|
153
|
+
Astra low beats the previous `task` model, Sol high, on intelligence, latency,
|
|
154
|
+
and token use at the same cost per task. Astra costs 2.5× per token and spends
|
|
155
|
+
about one third the tokens, so the price rise and the efficiency gain cancel:
|
|
156
|
+
this is a latency and token-budget win, not a cost saving.
|
|
157
|
+
|
|
158
|
+
Sol medium is the cheaper measured alternative, and it was not chosen: index
|
|
159
|
+
39, Coding Agent Index 62 (Codex), $0.50 per task, 4.90 s TTFT. Against it,
|
|
160
|
+
Astra low costs 64% more per task and scores 7 index points higher, with no
|
|
161
|
+
published Astra coding-agent score at that level.
|
|
162
|
+
|
|
163
|
+
Two risks come with it. Astra low loses AA-Briefcase, the eval closest to this
|
|
164
|
+
kit's agent workload, and AA publishes no Coding Agent Index score for any Astra
|
|
165
|
+
level except max. Watch reviewer output, because the four reviewer agents
|
|
166
|
+
inherit `@task`. If review quality drops, pin those four agents to
|
|
167
|
+
`anthropic/claude-opus-5:high` rather than reverting the whole role.
|
|
168
|
+
|
|
169
|
+
## Maintenance
|
|
170
|
+
|
|
171
|
+
- Refresh the snapshot from the AA release page of each family
|
|
172
|
+
(`/models/releases/<slug>`), the per-level model pages, and the harness
|
|
173
|
+
comparison pages under `/agents/coding-agents/comparisons/`.
|
|
174
|
+
- Record the index version with the numbers. AA changes index composition
|
|
175
|
+
between versions, so a score from another version is not a comparison.
|
|
176
|
+
- Update the capture date in the same commit as any number.
|
package/cli/src/commands/docs.ts
CHANGED
|
@@ -10,6 +10,7 @@ import plugins from "../../docs/plugins.md" with { type: "text" }
|
|
|
10
10
|
import syncLayers from "../../docs/sync-layers.md" with { type: "text" }
|
|
11
11
|
import install from "../../docs/install.md" with { type: "text" }
|
|
12
12
|
import platforms from "../../docs/platforms.md" with { type: "text" }
|
|
13
|
+
import ompModels from "../../docs/omp-models.md" with { type: "text" }
|
|
13
14
|
|
|
14
15
|
const TOPICS: Record<string, { summary: string; body: string }> = {
|
|
15
16
|
"overview": { summary: "What docks-kit is and how the pieces fit", body: overview },
|
|
@@ -20,7 +21,8 @@ const TOPICS: Record<string, { summary: string; body: string }> = {
|
|
|
20
21
|
"toolchain": { summary: "Verified-version floors and the doctor table", body: toolchain },
|
|
21
22
|
"plugins": { summary: "enabledPlugins tri-state + optional plugin opt-ins", body: plugins },
|
|
22
23
|
"install": { summary: "Install paths: repo checkout, bun add -g, POSIX/Windows installers", body: install },
|
|
23
|
-
"platforms": { summary: "Platform support: Linux, macOS, and Windows on x64 and arm64", body: platforms }
|
|
24
|
+
"platforms": { summary: "Platform support: Linux, macOS, and Windows on x64 and arm64", body: platforms },
|
|
25
|
+
"omp-models": { summary: "omp role map and the Artificial Analysis snapshot behind it", body: ompModels }
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
const topic = Argument.string("topic").pipe(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Generated by cli/scripts/generate-sot-payload.ts. DO NOT EDIT.
|
|
2
2
|
// Edit SoT/, notification.mp3, or package.json, then run: bun cli/scripts/generate-sot-payload.ts
|
|
3
3
|
|
|
4
|
-
export const GENERATED_PACKAGE_VERSION = "0.16.
|
|
4
|
+
export const GENERATED_PACKAGE_VERSION = "0.16.3"
|
|
5
5
|
|
|
6
6
|
export const GENERATED_PAYLOAD_TEXT = {
|
|
7
7
|
"SoT/.agents/skills.txt": "# Universal AI-agent skill manifest intentionally empty.\n# Global skill discovery is opt-in: add one <owner>/<repo> slug per line.\n# EngineNative ignores comments and blank lines.\n",
|
|
@@ -17,8 +17,8 @@ export const GENERATED_PAYLOAD_TEXT = {
|
|
|
17
17
|
"SoT/.codex/config.toml": "model = \"gpt-5.6-sol\"\nmodel_reasoning_effort = \"high\"\nplan_mode_reasoning_effort = \"high\"\nmodel_reasoning_summary = \"concise\"\nmodel_verbosity = \"low\"\npersonality = \"pragmatic\"\nweb_search = \"live\"\nproject_doc_max_bytes = 131072\napproval_policy = \"on-request\"\nsandbox_mode = \"workspace-write\"\napprovals_reviewer = \"auto_review\"\n\n[sandbox_workspace_write]\nnetwork_access = true\n\n[windows]\nsandbox = \"elevated\"\n\n[features]\nmemories = true\n\n[memories]\ndedicated_tools = true\nmax_rollout_age_days = 30\n\n[agents]\nmax_threads = 12\nmax_depth = 2\n\n[tui]\nstatus_line_use_colors = true\nstatus_line = [\n \"model-with-reasoning\",\n \"current-dir\",\n \"git-branch\",\n \"context-used\",\n \"five-hour-limit\",\n \"weekly-limit\",\n]\n\n[plugins.\"docks@docks\"]\nenabled = true\n\n[plugins.\"plan-lifecycle@docks\"]\nenabled = true\n",
|
|
18
18
|
"SoT/.codex/plugins/marketplace.json": "{\n \"name\": \"docks\",\n \"interface\": {\n \"displayName\": \"DocksDocks\"\n },\n \"plugins\": [\n {\n \"name\": \"docks\",\n \"source\": {\n \"source\": \"git-subdir\",\n \"url\": \"https://github.com/DocksDocks/docks.git\",\n \"path\": \"./plugins/docks\",\n \"ref\": \"main\"\n },\n \"policy\": {\n \"installation\": \"AVAILABLE\",\n \"authentication\": \"ON_INSTALL\"\n },\n \"category\": \"Productivity\"\n },\n {\n \"name\": \"plan-lifecycle\",\n \"source\": {\n \"source\": \"git-subdir\",\n \"url\": \"https://github.com/DocksDocks/docks.git\",\n \"path\": \"./plugins/plan-lifecycle\",\n \"ref\": \"main\"\n },\n \"policy\": {\n \"installation\": \"AVAILABLE\",\n \"authentication\": \"ON_INSTALL\"\n },\n \"category\": \"Productivity\"\n }\n ]\n}\n",
|
|
19
19
|
"SoT/.codex/rules/docks.rules": "prefix_rule(pattern=[\"pwd\"], decision=\"allow\")\nprefix_rule(pattern=[\"ls\"], decision=\"allow\")\nprefix_rule(pattern=[\"cat\"], decision=\"allow\")\nprefix_rule(pattern=[\"head\"], decision=\"allow\")\nprefix_rule(pattern=[\"tail\"], decision=\"allow\")\nprefix_rule(pattern=[\"wc\"], decision=\"allow\")\nprefix_rule(pattern=[\"nl\"], decision=\"allow\")\nprefix_rule(pattern=[\"grep\"], decision=\"allow\")\nprefix_rule(pattern=[\"sort\"], decision=\"allow\")\nprefix_rule(pattern=[\"uniq\"], decision=\"allow\")\nprefix_rule(pattern=[\"diff\"], decision=\"allow\")\nprefix_rule(pattern=[\"which\"], decision=\"allow\")\nprefix_rule(pattern=[\"date\"], decision=\"allow\")\nprefix_rule(pattern=[\"basename\"], decision=\"allow\")\nprefix_rule(pattern=[\"dirname\"], decision=\"allow\")\nprefix_rule(pattern=[\"realpath\"], decision=\"allow\")\nprefix_rule(pattern=[\"readlink\"], decision=\"allow\")\nprefix_rule(pattern=[\"jq\"], decision=\"allow\")\nprefix_rule(pattern=[\"tree\"], decision=\"allow\")\nprefix_rule(pattern=[\"cut\"], decision=\"allow\")\nprefix_rule(pattern=[\"tr\"], decision=\"allow\")\nprefix_rule(pattern=[\"echo\"], decision=\"allow\")\nprefix_rule(pattern=[\"printf\"], decision=\"allow\")\nprefix_rule(pattern=[\"printenv\"], decision=\"allow\")\nprefix_rule(pattern=[\"uname\"], decision=\"allow\")\nprefix_rule(pattern=[\"file\"], decision=\"allow\")\nprefix_rule(pattern=[\"stat\"], decision=\"allow\")\nprefix_rule(pattern=[\"du\"], decision=\"allow\")\nprefix_rule(pattern=[\"id\"], decision=\"allow\")\nprefix_rule(pattern=[\"whoami\"], decision=\"allow\")\n\nprefix_rule(pattern=[\"git\", \"status\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"diff\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"log\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"show\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"blame\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"rev-parse\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"ls-files\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"grep\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"ls-tree\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"branch\", \"--show-current\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"branch\", \"-vv\"], decision=\"allow\")\nprefix_rule(pattern=[\"git\", \"mv\"], decision=\"allow\")\n\nprefix_rule(pattern=[\"gh\", \"pr\", \"view\"], decision=\"allow\")\nprefix_rule(pattern=[\"gh\", \"pr\", \"list\"], decision=\"allow\")\nprefix_rule(pattern=[\"gh\", \"pr\", \"diff\"], decision=\"allow\")\nprefix_rule(pattern=[\"gh\", \"pr\", \"status\"], decision=\"allow\")\nprefix_rule(pattern=[\"gh\", \"pr\", \"checks\"], decision=\"allow\")\n\nprefix_rule(pattern=[\"docker\", \"ps\"], decision=\"allow\")\n\nprefix_rule(pattern=[\"git\", \"push\"], decision=\"prompt\")\nprefix_rule(pattern=[\"git\", \"reset\"], decision=\"prompt\")\nprefix_rule(pattern=[\"git\", \"clean\"], decision=\"prompt\")\nprefix_rule(pattern=[\"git\", \"merge\"], decision=\"prompt\")\nprefix_rule(pattern=[\"git\", \"rebase\"], decision=\"prompt\")\nprefix_rule(pattern=[\"git\", \"checkout\"], decision=\"prompt\")\n\nprefix_rule(pattern=[\"rm\"], decision=\"prompt\")\nprefix_rule(pattern=[\"mv\"], decision=\"prompt\")\nprefix_rule(pattern=[\"chmod\"], decision=\"prompt\")\nprefix_rule(pattern=[\"chown\"], decision=\"prompt\")\nprefix_rule(pattern=[\"kill\"], decision=\"prompt\")\nprefix_rule(pattern=[\"pkill\"], decision=\"prompt\")\n\nprefix_rule(pattern=[\"npm\", \"install\"], decision=\"prompt\")\nprefix_rule(pattern=[\"npm\", \"uninstall\"], decision=\"prompt\")\nprefix_rule(pattern=[\"pnpm\", \"add\"], decision=\"prompt\")\nprefix_rule(pattern=[\"pnpm\", \"remove\"], decision=\"prompt\")\nprefix_rule(pattern=[\"yarn\", \"add\"], decision=\"prompt\")\nprefix_rule(pattern=[\"yarn\", \"remove\"], decision=\"prompt\")\nprefix_rule(pattern=[\"pip\", \"install\"], decision=\"prompt\")\nprefix_rule(pattern=[\"pip\", \"uninstall\"], decision=\"prompt\")\nprefix_rule(pattern=[\"pip3\", \"install\"], decision=\"prompt\")\nprefix_rule(pattern=[\"pip3\", \"uninstall\"], decision=\"prompt\")\n\nprefix_rule(pattern=[\"docker\", \"run\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker\", \"rm\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker\", \"stop\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker\", \"volume\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker\", \"system\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker\", \"compose\", \"up\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker\", \"compose\", \"down\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker\", \"compose\", \"rm\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker\", \"compose\", \"stop\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker-compose\", \"up\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker-compose\", \"down\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker-compose\", \"rm\"], decision=\"prompt\")\nprefix_rule(pattern=[\"docker-compose\", \"stop\"], decision=\"prompt\")\n\n# `tail -f`/`--follow` never returns and hangs the agent (bare `tail` stays allowed above).\nprefix_rule(pattern=[\"tail\", \"-f\"], decision=\"prompt\")\nprefix_rule(pattern=[\"tail\", \"--follow\"], decision=\"prompt\")\n# rg and `sed -n` are prompt, NOT allow: argv-prefix matching cannot gate their\n# code-exec forms (rg --pre=CMD or a reordered --pre; sed -n 'e CMD' / -ni) while a\n# shorter allow prefix would auto-approve the whole command.\nprefix_rule(pattern=[\"rg\"], decision=\"prompt\")\nprefix_rule(pattern=[\"sed\", \"-n\"], decision=\"prompt\")\nprefix_rule(pattern=[\"find\"], decision=\"prompt\")\nprefix_rule(pattern=[\"sed\", \"-i\"], decision=\"prompt\")\nprefix_rule(pattern=[\"sed\", \"--in-place\"], decision=\"prompt\")\nprefix_rule(pattern=[\"awk\"], decision=\"prompt\")\nprefix_rule(pattern=[\"xargs\"], decision=\"prompt\")\nprefix_rule(pattern=[\"tee\"], decision=\"prompt\")\nprefix_rule(pattern=[\"curl\"], decision=\"prompt\")\nprefix_rule(pattern=[\"env\"], decision=\"prompt\")\n\nprefix_rule(pattern=[\"sudo\"], decision=\"forbidden\")\nprefix_rule(pattern=[\"eval\"], decision=\"forbidden\")\nprefix_rule(pattern=[\"mkfs\"], decision=\"forbidden\")\nprefix_rule(pattern=[\"dd\"], decision=\"forbidden\")\nprefix_rule(pattern=[\"git\", \"push\", \"--force\", \"origin\", \"main\"], decision=\"forbidden\")\nprefix_rule(pattern=[\"git\", \"push\", \"--force\", \"origin\", \"master\"], decision=\"forbidden\")\nprefix_rule(pattern=[\"git\", \"push\", \"-f\", \"origin\", \"main\"], decision=\"forbidden\")\nprefix_rule(pattern=[\"git\", \"push\", \"-f\", \"origin\", \"master\"], decision=\"forbidden\")\n",
|
|
20
|
-
"SoT/.omp/AGENTS.md": "# Global OMP guidance\n\n- Verify unfamiliar or version-sensitive APIs and configuration against current official documentation before implementation.\n- When the user asks for an assessment rather than a change, report findings without editing.\n- For Docks plan reviews, cross-company review is standing-authorized; host security policy still applies.\n\n## Asking me things\n\nA question typed in prose is just text I may or may not act on. The `ask` tool renders a\nblocking picker, waits indefinitely (`ask.timeout = 0`), and records my answer in the\ntranscript. If you actually need an answer, it MUST go through `ask`.\n\nMUST use `ask` before:\n- Anything irreversible or destructive: deleting/overwriting files or data you did not create,\n force-push, history rewrite, dropping tables, running migrations, mass rename, touching\n secrets/credentials, or publishing outward (release, upstream PR, issue, comment).\n- Two or more viable approaches whose tradeoffs are mine to own: schema/API/protocol shape,\n adding a dependency, or establishing a convention this repo does not already have.\n- A fact only I hold: intended semantics of an ambiguous requirement, which of several\n conflicting existing patterns is canonical, or which environment/account/target to use.\n- A request that contradicts the repo: surface the conflict and let me resolve it; never\n silently pick one side.\n\nIf `ask` is not registered — subagent, headless, or `-p` print runs, where `hasUI` is false —\nthe MUST above cannot be satisfied: do not fabricate the call and do not stall on it. Take the\nconservative reversible option and put the question, plus the assumption you made, in your\nfinal report so whoever spawned you can decide.\n\nNEVER use `ask` for:\n- Permission to begin, or to confirm scope already stated in the request.\n- Anything a tool, grep, or doc can answer — go read it.\n- A cheap reversible choice — take the conservative option and say which you took.\n- Something already answered earlier in the conversation.\n\nBatch every open question into one `ask` call with multiple questions; do not serialize\nround trips. Being overruled ends the discussion — execute my call without relitigating.\n\n## Output Standard\n\nApply Simplified Technical English to all agent text. This includes responses, messages,\ndocumentation, comments, and interface text.\n\nReply in the language I use, and apply every rule below to that language.\n\nA rule that names English grammar applies only to English. The contraction ban is one\nsuch rule. In another language, follow the normal grammar of that language. Portuguese,\nSpanish, French, Italian, and German merge a preposition with an article, and that merge\nis required, not optional.\n\nTreat the word limits as approximate outside English. Some languages need more words to\ncarry the same content.\n\n- Use the simplest precise technical term.\n- Use each term consistently.\n- Expand an abbreviation at its first occurrence.\n- Explain a technical term when I ask for an explanation.\n- Write complete and grammatically correct sentences.\n- Use active voice and identify the actor.\n- Use the imperative form for instructions.\n- Put only one action in each instruction sentence.\n- Put a necessary condition before its instruction.\n- Use simple verb tenses.\n- Do not use contractions, idioms, or slang. Avoid humor and rhetorical questions.\n- Keep procedural sentences to 20 words or fewer.\n- Keep descriptive sentences to 25 words or fewer.\n- Keep each paragraph to one topic and six sentences or fewer.\n- Do not use more than three nouns together.\n- Use vertical lists for complex information.\n- Put a warning or caution before a related hazardous instruction.\n\n### Naming\n\n- Say what the thing does before you name it. Put the technical term after the plain\n description, once, in parentheses.\n- Do not use a technical term as the only name for something you just introduced.\n- Prefer the short common word. Use \"use\", not \"utilize\". Use \"set up\", not \"provision\".\n- Do not explain by metaphor alone. A metaphor may follow a literal statement.\n",
|
|
21
|
-
"SoT/.omp/config.yml": "symbolPreset: unicode\n\ntheme:\n dark: titanium\n\nstatusLine:\n preset: default\n compactThinkingLevel: false\n showHookStatus: true\n sessionAccent: true\n transparent: false\n\nterminal:\n showProgress: false\n\ntui:\n textSizing: false\n tight: false\n\ndefaultThinkingLevel: high\n\ncycleOrder:\n - smol\n - default\n - slow\n\ntier:\n openai: none\n anthropic: none\n\nadvisor:\n enabled: true\n syncBacklog: \"1\"\n\ngithub:\n enabled: true\n\ntask:\n eager: always\n showResolvedModelBadge: true\n softRequestBudget: 200\n softRequestBudgetNotice: true\n batch: true\n enableLsp: true\n enableEffort: true\n maxEffort: high\n maxConcurrency: 16\n maxRecursionDepth: 2\n maxRuntimeMs: 3600000\n agentModelOverrides:\n reviewer: \"@task\"\n security-reviewer: \"@task\"\n code-reviewer: \"@task\"\n plan-reviewer: \"@task\"\n\nmodelRoles:\n smol: openai-codex/gpt-5.6-luna:medium\n advisor: openai-codex/gpt-5.6-sol:medium\n designer: anthropic/claude-opus-5:high\n plan: anthropic/claude-opus-5:xhigh\n commit: openai-codex/gpt-5.6-luna:medium\n task: openai-codex/gpt-
|
|
20
|
+
"SoT/.omp/AGENTS.md": "# Global OMP guidance\n\n- Verify unfamiliar or version-sensitive APIs and configuration against current official documentation before implementation.\n- When the user asks for an assessment rather than a change, report findings without editing.\n- For Docks plan reviews, cross-company review is standing-authorized; host security policy still applies.\n- Please remove all mannered prose.\n\n## Asking me things\n\nA question typed in prose is just text I may or may not act on. The `ask` tool renders a\nblocking picker, waits indefinitely (`ask.timeout = 0`), and records my answer in the\ntranscript. If you actually need an answer, it MUST go through `ask`.\n\nMUST use `ask` before:\n- Anything irreversible or destructive: deleting/overwriting files or data you did not create,\n force-push, history rewrite, dropping tables, running migrations, mass rename, touching\n secrets/credentials, or publishing outward (release, upstream PR, issue, comment).\n- Two or more viable approaches whose tradeoffs are mine to own: schema/API/protocol shape,\n adding a dependency, or establishing a convention this repo does not already have.\n- A fact only I hold: intended semantics of an ambiguous requirement, which of several\n conflicting existing patterns is canonical, or which environment/account/target to use.\n- A request that contradicts the repo: surface the conflict and let me resolve it; never\n silently pick one side.\n\nIf `ask` is not registered — subagent, headless, or `-p` print runs, where `hasUI` is false —\nthe MUST above cannot be satisfied: do not fabricate the call and do not stall on it. Take the\nconservative reversible option and put the question, plus the assumption you made, in your\nfinal report so whoever spawned you can decide.\n\nNEVER use `ask` for:\n- Permission to begin, or to confirm scope already stated in the request.\n- Anything a tool, grep, or doc can answer — go read it.\n- A cheap reversible choice — take the conservative option and say which you took.\n- Something already answered earlier in the conversation.\n\nBatch every open question into one `ask` call with multiple questions; do not serialize\nround trips. Being overruled ends the discussion — execute my call without relitigating.\n\n## Output Standard\n\nApply Simplified Technical English to all agent text. This includes responses, messages,\ndocumentation, comments, and interface text.\n\nReply in the language I use, and apply every rule below to that language.\n\nA rule that names English grammar applies only to English. The contraction ban is one\nsuch rule. In another language, follow the normal grammar of that language. Portuguese,\nSpanish, French, Italian, and German merge a preposition with an article, and that merge\nis required, not optional.\n\nTreat the word limits as approximate outside English. Some languages need more words to\ncarry the same content.\n\n- Use the simplest precise technical term.\n- Use each term consistently.\n- Expand an abbreviation at its first occurrence.\n- Explain a technical term when I ask for an explanation.\n- Write complete and grammatically correct sentences.\n- Use active voice and identify the actor.\n- Use the imperative form for instructions.\n- Put only one action in each instruction sentence.\n- Put a necessary condition before its instruction.\n- Use simple verb tenses.\n- Do not use contractions, idioms, or slang. Avoid humor and rhetorical questions.\n- Keep procedural sentences to 20 words or fewer.\n- Keep descriptive sentences to 25 words or fewer.\n- Keep each paragraph to one topic and six sentences or fewer.\n- Do not use more than three nouns together.\n- Use vertical lists for complex information.\n- Put a warning or caution before a related hazardous instruction.\n\n### Naming\n\n- Say what the thing does before you name it. Put the technical term after the plain\n description, once, in parentheses.\n- Do not use a technical term as the only name for something you just introduced.\n- Prefer the short common word. Use \"use\", not \"utilize\". Use \"set up\", not \"provision\".\n- Do not explain by metaphor alone. A metaphor may follow a literal statement.\n",
|
|
21
|
+
"SoT/.omp/config.yml": "symbolPreset: unicode\n\ntheme:\n dark: titanium\n\nstatusLine:\n preset: default\n compactThinkingLevel: false\n showHookStatus: true\n sessionAccent: true\n transparent: false\n\nterminal:\n showProgress: false\n\ntui:\n textSizing: false\n tight: false\n\ndefaultThinkingLevel: high\n\ncycleOrder:\n - smol\n - default\n - slow\n - fable\n\ntier:\n openai: none\n anthropic: none\n\nadvisor:\n enabled: true\n syncBacklog: \"1\"\n\ngithub:\n enabled: true\n\ntask:\n eager: always\n showResolvedModelBadge: true\n softRequestBudget: 200\n softRequestBudgetNotice: true\n batch: true\n enableLsp: true\n enableEffort: true\n maxEffort: high\n maxConcurrency: 16\n maxRecursionDepth: 2\n maxRuntimeMs: 3600000\n agentModelOverrides:\n reviewer: \"@task\"\n security-reviewer: \"@task\"\n code-reviewer: \"@task\"\n plan-reviewer: \"@task\"\n\nmodelRoles:\n smol: openai-codex/gpt-5.6-luna:medium\n advisor: openai-codex/gpt-5.6-sol:medium\n designer: anthropic/claude-opus-5:high\n plan: anthropic/claude-opus-5:xhigh\n commit: openai-codex/gpt-5.6-luna:medium\n task: openai-codex/gpt-6-astra:low\n vision: anthropic/claude-opus-5:medium\n tiny: openai-codex/gpt-5.6-luna:low\n default: anthropic/claude-opus-5:high\n slow: anthropic/claude-opus-5:xhigh\n fable: anthropic/claude-fable-5-1:medium\n switch_fable: anthropic/claude-fable-5-1:medium\n\nmodelTags:\n fable:\n name: Fable 5.1\n switch_fable:\n name: Fable switch default\n hidden: true\n\ndisplay:\n shimmer: classic\n showTokenUsage: true\n\nproviders:\n anthropic:\n serverSideFallback: false\n fetch: auto\n webSearchTimeoutSeconds: 30\n webSearchOrder:\n - firecrawl\n - exa\n - perplexity\n - gemini\n - codex\n\nretry:\n usageAwareFallback: true\n fallbackChains:\n default:\n - openai-codex/gpt-5.6-sol:high\n advisor:\n - anthropic/claude-opus-5:medium\n task:\n - anthropic/claude-opus-5:high\n vision:\n - openai-codex/gpt-5.6-sol:medium\n smol:\n - anthropic/claude-opus-5:low\n tiny:\n - anthropic/claude-opus-5:low\n commit:\n - anthropic/claude-opus-5:medium\n switch_fable: []\n fable: []\n\nomitThinking: false\nincludeWorkspaceTree: false\nautocompleteMaxVisible: 10\nemojiAutocomplete: true\n\nbranchSummary:\n enabled: true\n\nreadLineNumbers: false\n\ncommands:\n enableOpencodeProject: false\n enableOpencodeUser: false\n\nskills:\n enableClaudeUser: false\n enableCodexUser: false\n enableAgentsUser: true\n\nsteeringMode: all\ninterruptMode: immediate\n\ndev:\n autoqa: false\n autoqaConsent: denied\n\ncompaction:\n thresholdTokens: 231200\n idleEnabled: true\n handoffSaveToDisk: true\n\ndoubleEscapeAction: tree\nhideThinkingBlock: false\nautoResume: false\ntextVerbosity: low\n\nfeatures:\n unexpectedStopDetection: smart\n\ncodexResets:\n autoRedeem: \"no\"\n\nstartup:\n quiet: true\n changelogMode: summary\n\ntools:\n approvalMode: yolo\n",
|
|
22
22
|
"SoT/.omp/intercom.json": "{\n \"brokerCommand\": \"bun\",\n \"brokerArgs\": []\n}\n",
|
|
23
23
|
"SoT/.omp/mcp.json": "{\n \"$schema\": \"https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/coding-agent/src/config/mcp-schema.json\",\n \"disabledServers\": [\n \"chrome-devtools\",\n \"context7:context7\",\n \"openaiDeveloperDocs\"\n ]\n}\n"
|
|
24
24
|
} as const
|
|
@@ -48,4 +48,4 @@ export const GENERATED_PAYLOAD_PATHS = [
|
|
|
48
48
|
"notification.mp3"
|
|
49
49
|
] as const
|
|
50
50
|
|
|
51
|
-
export const GENERATED_PAYLOAD_HASH = "
|
|
51
|
+
export const GENERATED_PAYLOAD_HASH = "7239d3bb7d220a735d0688c439b95349c0cb10ba4baca9108829f0e5e0f54982"
|
package/package.json
CHANGED