@azure-id/orc 1.9.1 → 1.9.2
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/CHANGELOG.md +69 -0
- package/README-id.md +38 -39
- package/README.md +36 -35
- package/bin/build-agents.js +109 -109
- package/bin/cli.js +35 -33
- package/bin/onboarding-content.js +4 -4
- package/bin/pricing.json +207 -200
- package/bin/verify-contracts.js +2 -2
- package/bin/verify-package.js +7 -7
- package/bin/webui/css/04-motion.css +162 -152
- package/bin/webui/css/panels/knowledge.css +563 -116
- package/bin/webui/fixtures/extra.js +2036 -2036
- package/bin/webui/fixtures/hookui.js +5 -5
- package/bin/webui/fixtures/settings.js +305 -305
- package/bin/webui/i18n/en/knowledge.json +117 -2
- package/bin/webui/i18n/id/knowledge.json +117 -2
- package/bin/webui/js/panels/knowledge.js +552 -7
- package/bin/webui/js/panels/overview.js +13 -4
- package/mock-run/context-combiner.md +100 -100
- package/mock-run/orc-budget.md +534 -534
- package/mock-run/orc-challenge-council.md +262 -262
- package/mock-run/orc-ultra.md +103 -103
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +43 -43
- package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -56
- package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -60
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -58
- package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -75
- package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -110
- package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -114
- package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -112
- package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -132
- package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -109
- package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -109
- package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -90
- package/templates/agents/orc-claude-writer-opus-5-med.md +55 -55
- package/templates/agents/orc-context-combiner-opus-5-high.md +88 -88
- package/templates/agents/orc-doc-checker-opus-5-low.md +108 -108
- package/templates/agents/orc-doc-writer-opus-5-med.md +134 -134
- package/templates/agents/orc-executor-opus-5-high.md +2 -2
- package/templates/agents/orc-executor-opus-5-low.md +2 -2
- package/templates/agents/orc-executor-opus-5-med.md +2 -2
- package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -1
- package/templates/agents/orc-judge-opus-5-xhigh.md +85 -85
- package/templates/agents/orc-learn-writer-opus-5-low.md +73 -73
- package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -65
- package/templates/agents/orc-planner-mini-opus-5-med.md +4 -4
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +1 -1
- package/templates/agents/orc-planner-opus-5-med.md +160 -160
- package/templates/agents/orc-recon-opus-5-low.md +3 -3
- package/templates/agents/orc-retro-opus-5-med.md +3 -3
- package/templates/agents/orc-reviewer-opus-5-med.md +60 -60
- package/templates/agents/orc-scout-opus-5-low.md +40 -40
- package/templates/agents/orc-system-analyst-opus-5-high.md +120 -120
- package/templates/agents/orc-test-author-opus-5-med.md +71 -71
- package/templates/agents/orc-test-designer-opus-5-high.md +158 -158
- package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -130
- package/templates/agents/orc-verifier-opus-5-med.md +69 -69
- package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -81
- package/templates/commands/orc-ultra.md +17 -17
- package/templates/commands/orc-verify.md +11 -11
- package/templates/hooks/README.md +2 -2
- package/templates/hooks/orc-effort-guard.js +178 -178
- package/templates/hooks/orc-statusline.js +6 -6
- package/templates/skills/_shared/code-graph.md +1 -1
- package/templates/skills/_shared/config-precedence.md +198 -198
- package/templates/skills/_shared/extra-dispatch.md +1346 -1346
- package/templates/skills/_shared/opus5-only.md +8 -8
- package/templates/skills/_shared/phases/analyst-gates.md +136 -136
- package/templates/skills/_shared/phases/review.md +1 -1
- package/templates/skills/_shared/phases/trace.md +1 -1
- package/templates/skills/_shared/return-validation.md +1 -1
- package/templates/skills/context-combiner/SKILL.md +1 -1
- package/templates/skills/context-combiner/schemas/combined-report.md +78 -78
- package/templates/skills/orc/README.md +2 -2
- package/templates/skills/orc/SKILL.md +7 -7
- package/templates/skills/orc/config.md +9 -9
- package/templates/skills/orc/examples/full-run-mock.md +73 -73
- package/templates/skills/orc/references/effort-and-mode.md +222 -222
- package/templates/skills/orc/references/preflight-report.md +2 -2
- package/templates/skills/orc/references/ultra-mode.md +3 -3
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +2 -2
- package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -121
- package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -76
- package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -45
- package/templates/skills/orc-analyze/SKILL.md +2 -2
- package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -42
- package/templates/skills/orc-analyze/schemas/report-audit.md +83 -83
- package/templates/skills/orc-analyze/schemas/report-prose.md +63 -63
- package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -78
- package/templates/skills/orc-challenge/README.md +142 -142
- package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -273
- package/templates/skills/orc-challenge/references/council.md +315 -315
- package/templates/skills/orc-challenge/references/intake.md +171 -171
- package/templates/skills/orc-claude/SKILL.md +14 -14
- package/templates/skills/orc-diy/README.md +143 -143
- package/templates/skills/orc-diy/references/flow-schema.md +1 -1
- package/templates/skills/orc-doc/README.md +229 -229
- package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -325
- package/templates/skills/orc-doc/references/chunking.md +527 -527
- package/templates/skills/orc-fast/SKILL.md +1 -1
- package/templates/skills/orc-learn/SKILL.md +14 -14
- package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -61
- package/templates/skills/orc-mini/SKILL.md +3 -3
- package/templates/skills/orc-verify/SKILL.md +15 -15
- package/templates/skills/orc-verify/examples/verify-mock.md +33 -33
- package/templates/skills/orc-wiki/references/extra.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,75 @@ Format: `### v<version> — <title> _(<date>)_`.
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
### v1.9.2 — the code graph gets its own tab, and Opus 5 becomes Opus 5.5 _(2026-09-23)_
|
|
14
|
+
|
|
15
|
+
**Still on the unscoped `orc` package?** Do this once first - your `orc upgrade`
|
|
16
|
+
is the pre-v0.56.0 one and cannot install itself. Full detail in the CAUTION at
|
|
17
|
+
the top of this file.
|
|
18
|
+
|
|
19
|
+
- **Step 1 - release the command from the old package:** `npm uninstall -g orc`
|
|
20
|
+
- **Step 2 - install the current package:** `npm i -g @azure-id/orc`
|
|
21
|
+
- **Step 3 - re-apply it to your project:** `orc update`
|
|
22
|
+
|
|
23
|
+
**Do not use `npm i -g -f`.** Full detail in v0.56.0 below.
|
|
24
|
+
|
|
25
|
+
**The code graph has its own tab.** Before this release the graph was one card
|
|
26
|
+
on the Knowledge ▸ Wiki tab: fourteen rows of exact numbers and no picture of
|
|
27
|
+
what any of them meant. `orc ui` ▸ Knowledge now has a sixth tab, **Code
|
|
28
|
+
graph**, and the card on the Wiki tab is gone. The tab reads top to bottom:
|
|
29
|
+
|
|
30
|
+
- **Where your code graph is now.** The four states `OFF` · `NONE` · `FRESH`
|
|
31
|
+
· `DRIFTED` as a ladder, with the action that moves the graph from one to
|
|
32
|
+
the next on each connector. The current state is lit and sends a ring
|
|
33
|
+
outward. Below it is the ONE action that state needs: the config command for
|
|
34
|
+
OFF (copy-able, never a button), the free `orc graph update` button for NONE
|
|
35
|
+
and DRIFTED, nothing for FRESH. The line a lane prints into the chat
|
|
36
|
+
(`line`) is shown verbatim.
|
|
37
|
+
- **How the code graph works.** Five stations — your code, the parser, the
|
|
38
|
+
map, the questions, the short card — with dots that run between them. The
|
|
39
|
+
first three are marked free; the card is marked as what costs context tokens.
|
|
40
|
+
The optional notes layer, the only part that can cost a model, is a separate
|
|
41
|
+
line with the current `code_graph_notes` value.
|
|
42
|
+
- **What a code graph looks like (an example, not your code).** Four files from
|
|
43
|
+
a made-up shop drawn as an SVG: files, symbols, calls (a pulse runs caller to
|
|
44
|
+
callee), refs and imports. Point at a dot, or Tab to it, and its edges light
|
|
45
|
+
up while a caption says what `orc graph ctx` would answer. A legend names
|
|
46
|
+
every mark.
|
|
47
|
+
- **Your graph, in numbers.** Files, symbols, symbols per file and generation
|
|
48
|
+
as tiles that count up to the CLI's own value; the added · changed · deleted
|
|
49
|
+
counts; and the density as a bar, per language when the CLI sent
|
|
50
|
+
`density.by_lang`.
|
|
51
|
+
- **What the graph cost, and what it probably saved.** `paid` (four stacked
|
|
52
|
+
parts) and `avoided` (solid to its low end, striped to its high end) on ONE
|
|
53
|
+
scale. Every read in `read_set`, in the CLI's order, with its count and one
|
|
54
|
+
line on what it answers; a read never asked keeps its slot, muted.
|
|
55
|
+
- **All the numbers, as the CLI sent them.** The old card, unchanged, minus the
|
|
56
|
+
chip and the button the ladder now carries.
|
|
57
|
+
- **What each word means.** Every term on the tab in four groups.
|
|
58
|
+
|
|
59
|
+
The pictures derive nothing: every number is `orc graph status --json` or
|
|
60
|
+
`orc graph gain --json`, drawn to scale. `prefers-reduced-motion` removes all
|
|
61
|
+
three new infinite animations with `display: none` and every finite one with
|
|
62
|
+
`animation: none`, and the tiles skip their count-up. The `graph-drifted`
|
|
63
|
+
doctor finding on Overview now opens the Code graph tab.
|
|
64
|
+
|
|
65
|
+
**Every Opus 5 agent now runs Opus 5.5 (`claude-opus-5-5`).** Every agent and
|
|
66
|
+
generated executor that shipped as `model: claude-opus-5` now ships as
|
|
67
|
+
`model: claude-opus-5-5`, and the prose that named "Opus 5" now names
|
|
68
|
+
"Opus 5.5". Opus 5.5 is cheaper than Opus 5, so the same pipeline costs less.
|
|
69
|
+
`bin/pricing.json` gains the `claude-opus-5-5` row ($4 input · $5 cache write
|
|
70
|
+
· $0.20 cache read · $20 output per million tokens, from the Claude pricing
|
|
71
|
+
page), and `orc budget` prices its forecasts against it.
|
|
72
|
+
|
|
73
|
+
What did NOT change: the agent NAMES (`orc-executor-opus-5-med` and the rest),
|
|
74
|
+
the `opus5_only` key and its "Opus 5-only" mode name. `claude-opus-5` stays
|
|
75
|
+
in the known-model list and keeps its price row, so an existing config and old
|
|
76
|
+
traces still validate and still price.
|
|
77
|
+
|
|
78
|
+
**What you have to do:** `orc update`, to install the new agent files.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
13
82
|
### v1.9.1 — the graph that was paid for and never asked _(2026-09-23)_
|
|
14
83
|
|
|
15
84
|
**Still on the unscoped `orc` package?** Do this once first - your `orc upgrade`
|
package/README-id.md
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
*Terima permintaan → pahami → rencanakan → beri nilai → kerjakan paralel → periksa → uji → kirim.*
|
|
8
8
|
|
|
9
9
|

|
|
10
|
-

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|

|
|
14
14
|

|
|
15
15
|
|
|
16
|
-
**Versi terbaru: v1.9.
|
|
16
|
+
**Versi terbaru: v1.9.2** · diperbarui 23-09-2026 · [daftar perubahan lengkap](CHANGELOG.md)
|
|
17
17
|
|
|
18
18
|
**Ada di npm: [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc)** — `npm i -g @azure-id/orc`
|
|
19
19
|
|
|
@@ -271,7 +271,7 @@ pemakaian 5 jam, pemakaian mingguan, dan beberapa hal lain.
|
|
|
271
271
|
| Perintah | Kegunaannya | Contoh jalannya |
|
|
272
272
|
|---|---|---|
|
|
273
273
|
| **`/orc`** | Alur penuh: terima → rencana → gelombang paralel bernilai → periksa → uji → kirim. Rajin menyimpan titik simpan; bisa dilanjutkan di sesi baru. | [lihat](mock-run/orc.md) |
|
|
274
|
-
| **`/orc-ultra`** | Sama, ditambah penasihat Opus 5 **xhigh** dan tiga gerbang penilaian. Analisis dalam, pola kode, tes, dan keamanan dipaksa menyala. Memang mahal. | [lihat](mock-run/orc-ultra.md) |
|
|
274
|
+
| **`/orc-ultra`** | Sama, ditambah penasihat Opus 5.5 **xhigh** dan tiga gerbang penilaian. Analisis dalam, pola kode, tes, dan keamanan dipaksa menyala. Memang mahal. | [lihat](mock-run/orc-ultra.md) |
|
|
275
275
|
| **`/orc-mini`** | Satu agen Sonnet 5, satu pemeriksaan build + tes, lalu kirim. Melewati review penuh dan pengujian. Satu baris **pembacaan kompleksitas** berisi angka menawarkan lane penuh kalau perubahannya lebih luas dari satu area. Bisa pindah ke alur penuh di tengah jalan kalau diminta. | [lihat](templates/skills/orc-mini/examples/mini-run-mock.md) |
|
|
276
276
|
| **`/orc-fast`** | Lane tercepat. Butuh wiki yang masih segar **dan** pola kode yang sudah tersimpan; kalau ada, ia melewati tahap analis dan perencana sepenuhnya. Kalau salah satu syarat tidak ada, ia mundur ke `/orc-mini` — obrolan tidak pernah berhenti. | [lihat](mock-run/orc-fast.md) |
|
|
277
277
|
| **`/orc-quick`** | Minta apa saja: perbaikan kecil, pertanyaan, mencari bug, menaikkan versi dependensi, komentar PR. Lihat → tanya sekali → kerjakan. **Selalu bertanya agen mana yang mau dipakai**, dan tidak ada pengaturan yang bisa mengubah itu. Satu **defect direproduksi merah dulu sebelum diperbaiki**. | [lihat](mock-run/orc-quick.md) |
|
|
@@ -786,45 +786,44 @@ Bacalah sebagai catatan putaran itu, bukan sebagai audit terkini:
|
|
|
786
786
|
**Riwayat lengkap: [CHANGELOG.md](CHANGELOG.md)** — atau `orc changelog`, yang
|
|
787
787
|
hanya mencetak yang lebih baru dari versi yang Anda punya.
|
|
788
788
|
|
|
789
|
-
### v1.9.
|
|
790
|
-
|
|
791
|
-
Graf kode
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
**
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
**
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
Vue (di bawah 20 % berkas `.vue` kosong) diukur di proyek Anda sendiri.
|
|
823
|
-
CHANGELOG menyebut setiap batasnya.
|
|
789
|
+
### v1.9.2 - graf kode mendapat tab sendiri, dan Opus 5 menjadi Opus 5.5 _(23-09-2026)_
|
|
790
|
+
|
|
791
|
+
**Graf kode punya tab sendiri.** `orc ui` ▸ Knowledge ▸ **Code graph**
|
|
792
|
+
menggantikan satu kartu di tab Wiki. Tab ini menunjukkan, berurutan:
|
|
793
|
+
|
|
794
|
+
- **Posisi graf Anda sekarang** — empat status (OFF · NONE · FRESH · DRIFTED)
|
|
795
|
+
sebagai tangga. Status saat ini menyala, dan satu tindakan yang dibutuhkan
|
|
796
|
+
ada di bawahnya.
|
|
797
|
+
- **Cara kerja graf kode** — lima langkah beranimasi, dari file Anda sampai
|
|
798
|
+
kartu singkat yang dibaca agent. Tiga langkah pertama gratis.
|
|
799
|
+
- **Seperti apa graf kode** — contoh graf (bukan kode Anda). Arahkan pointer ke
|
|
800
|
+
sebuah titik untuk melihat pemanggil dan yang dipanggilnya.
|
|
801
|
+
- **Graf Anda, dalam angka** — file, simbol, kepadatan per bahasa, dan apa yang
|
|
802
|
+
berubah sejak pembuatan terakhir.
|
|
803
|
+
- **Biaya graf, dan perkiraan hematnya** — dibayar (persis) dan dihindari
|
|
804
|
+
(perkiraan, digambar sebagai rentang) pada satu skala, dan pertanyaan yang
|
|
805
|
+
diajukan lane.
|
|
806
|
+
- **Arti setiap kata** — setiap istilah di tab ini, dengan kata sederhana.
|
|
807
|
+
|
|
808
|
+
Temuan DRIFTED di Overview sekarang membuka tab ini. Reduced motion menghapus
|
|
809
|
+
semua animasi.
|
|
810
|
+
|
|
811
|
+
**Setiap agent Opus 5 sekarang memakai Opus 5.5.** Model id-nya
|
|
812
|
+
`claude-opus-5-5` (sebelumnya `claude-opus-5`): executor, scout, analis,
|
|
813
|
+
planner, reviewer, verifier, judge, dan setiap agent Opus lainnya. Opus 5.5
|
|
814
|
+
lebih murah: $4 input, $5 cache write, $0,20 cache read, dan $20 output per
|
|
815
|
+
sejuta token. `bin/pricing.json` punya baris baru, dan `orc budget`
|
|
816
|
+
memakainya.
|
|
817
|
+
|
|
818
|
+
**Yang harus Anda lakukan:** jalankan `orc update` untuk memasang file agent
|
|
819
|
+
yang baru. NAMA agent tidak berubah, jadi `rubric_bands_override`,
|
|
820
|
+
`fixed_executor` dan `opus5_only` tetap berjalan. Config yang masih menyebut
|
|
821
|
+
`claude-opus-5` tetap valid.
|
|
824
822
|
|
|
825
823
|
<details>
|
|
826
|
-
<summary><strong>Rilis sebelumnya</strong> —
|
|
824
|
+
<summary><strong>Rilis sebelumnya</strong> — 121 rilis, hanya judulnya. Teks lengkapnya (dalam bahasa Inggris) ada di <a href="CHANGELOG.md">CHANGELOG.md</a>.</summary>
|
|
827
825
|
|
|
826
|
+
- **v1.9.1** — the graph that was paid for and never asked · _2026-09-23_
|
|
828
827
|
- **v1.9.0** — the lean lanes learn to look before they leap · _2026-09-21_
|
|
829
828
|
- **v1.8.2** — the map that finds what a grep cannot · _2026-09-21_
|
|
830
829
|
- **v1.8.1** — the guard that only failed on Windows · _2026-09-16_
|
package/README.md
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
*Intake → analyze → plan → score → parallel subagents → review → verify → ship.*
|
|
8
8
|
|
|
9
9
|

|
|
10
|
-

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|

|
|
14
14
|

|
|
15
15
|

|
|
16
16
|
|
|
17
|
-
**Latest: v1.9.
|
|
17
|
+
**Latest: v1.9.2** · updated 2026-09-23 · [full changelog](CHANGELOG.md)
|
|
18
18
|
|
|
19
19
|
**On npm: [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc)** — `npm i -g @azure-id/orc`
|
|
20
20
|
|
|
@@ -250,7 +250,7 @@ ORC have terminal hook to see: Context Window %, 5 Hour usage %, Weekly usage %
|
|
|
250
250
|
| Command | What it does | Mocked run |
|
|
251
251
|
|---|---|---|
|
|
252
252
|
| **`/orc`** | The full pipeline: intake → plan → scored parallel waves → review → verify → ship. Checkpoints eagerly; resumes in a fresh session. | [see it](mock-run/orc.md) |
|
|
253
|
-
| **`/orc-ultra`** | The same, plus an Opus 5 **xhigh** advisor and three judgment gates. Deep analysis, patterns, tests and security forced on. Costly by design. | [see it](mock-run/orc-ultra.md) |
|
|
253
|
+
| **`/orc-ultra`** | The same, plus an Opus 5.5 **xhigh** advisor and three judgment gates. Deep analysis, patterns, tests and security forced on. Costly by design. | [see it](mock-run/orc-ultra.md) |
|
|
254
254
|
| **`/orc-mini`** | One Sonnet 5 executor, a build + test smoke gate, ship. Skips full review and verify. A one-line **complexity read** with counts behind it offers the full lane when the change is wider than one area. Switches to the full flow mid-run on request. | [see it](templates/skills/orc-mini/examples/mini-run-mock.md) |
|
|
255
255
|
| **`/orc-fast`** | The fastest lane. Needs a fresh wiki **and** a cached code pattern; then it skips the analyst and planner entirely. A missing prerequisite falls back to `/orc-mini` — the chat never stops. | [see it](mock-run/orc-fast.md) |
|
|
256
256
|
| **`/orc-quick`** | Ask for anything: a fix, a question, a defect hunt, a dependency bump, PR comments. Look → ask once → do. **It always asks which agent to dispatch**, and no setting can change that. A defect is **reproduced red before it is fixed**. | [see it](mock-run/orc-quick.md) |
|
|
@@ -728,41 +728,42 @@ a current audit: [EVAL-REPORT.md](EVAL-REPORT.md).
|
|
|
728
728
|
**Full history: [CHANGELOG.md](CHANGELOG.md)** — or `orc changelog`, which prints
|
|
729
729
|
only what is newer than the version you have.
|
|
730
730
|
|
|
731
|
-
### v1.9.
|
|
732
|
-
|
|
733
|
-
The code graph
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
**
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
**
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
731
|
+
### v1.9.2 — the code graph gets its own tab, and Opus 5 becomes Opus 5.5 _(2026-09-23)_
|
|
732
|
+
|
|
733
|
+
**The code graph has its own tab.** `orc ui` ▸ Knowledge ▸ **Code graph**
|
|
734
|
+
replaces the one card on the Wiki tab. The tab shows, in this order:
|
|
735
|
+
|
|
736
|
+
- **Where your graph is now** — the four states (OFF · NONE · FRESH · DRIFTED)
|
|
737
|
+
as a ladder. The current state is lit, and the one action it needs is below.
|
|
738
|
+
- **How the code graph works** — five animated steps, from your files to the
|
|
739
|
+
short card an agent reads. The first three are free.
|
|
740
|
+
- **What a code graph looks like** — an example graph (not your code). Put the
|
|
741
|
+
pointer on a dot to see its callers and callees.
|
|
742
|
+
- **Your graph, in numbers** — files, symbols, density per language, and what
|
|
743
|
+
changed since the last build.
|
|
744
|
+
- **What the graph cost, and what it probably saved** — paid (exact) and
|
|
745
|
+
avoided (an estimate, drawn as a range) on one scale, and which reads lanes
|
|
746
|
+
asked.
|
|
747
|
+
- **What each word means** — every term on the tab, in plain words.
|
|
748
|
+
|
|
749
|
+
A DRIFTED finding on Overview now opens this tab. Reduced motion removes every
|
|
750
|
+
animation.
|
|
751
|
+
|
|
752
|
+
**Every Opus 5 agent now runs Opus 5.5.** The model id is `claude-opus-5-5`
|
|
753
|
+
(was `claude-opus-5`): executors, scouts, the analyst, the planner, the
|
|
754
|
+
reviewer, the verifier, the judges and every other Opus agent. Opus 5.5 costs
|
|
755
|
+
less: $4 input, $5 cache write, $0.20 cache read and $20 output per million
|
|
756
|
+
tokens. `bin/pricing.json` has the new row, and `orc budget` uses it.
|
|
757
|
+
|
|
758
|
+
**What you have to do:** run `orc update` to install the new agent files. The
|
|
759
|
+
agent NAMES did not change, so `rubric_bands_override`, `fixed_executor` and
|
|
760
|
+
`opus5_only` keep working. A config that still names `claude-opus-5` is still
|
|
761
|
+
valid.
|
|
762
762
|
|
|
763
763
|
<details>
|
|
764
|
-
<summary><strong>Earlier releases</strong> —
|
|
764
|
+
<summary><strong>Earlier releases</strong> — 121 of them, titles only. Full text in <a href="CHANGELOG.md">CHANGELOG.md</a>.</summary>
|
|
765
765
|
|
|
766
|
+
- **v1.9.1** — the graph that was paid for and never asked · _2026-09-23_
|
|
766
767
|
- **v1.9.0** — the lean lanes learn to look before they leap · _2026-09-21_
|
|
767
768
|
- **v1.8.2** — the map that finds what a grep cannot · _2026-09-21_
|
|
768
769
|
- **v1.8.1** — the guard that only failed on Windows · _2026-09-16_
|
package/bin/build-agents.js
CHANGED
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
/**
|
|
4
|
-
* Executor-agent generator. The 6 executor agent files differ ONLY in
|
|
5
|
-
* frontmatter (name/model/effort + score band); their body is one shared
|
|
6
|
-
* contract. This script is the single source of truth: edit
|
|
7
|
-
* agents-src/executor.template.md (or the VARIANTS table), run
|
|
8
|
-
* `npm run build:agents`, and every copy is stamped out identically.
|
|
9
|
-
*
|
|
10
|
-
* Modes:
|
|
11
|
-
* node bin/build-agents.js write templates/agents/orc-executor-*.md
|
|
12
|
-
* node bin/build-agents.js --check fail if any generated file drifted from
|
|
13
|
-
* the template (runs in `npm run verify`
|
|
14
|
-
* and prepack — a hand-edit to a generated
|
|
15
|
-
* executor file fails the build)
|
|
16
|
-
*/
|
|
17
|
-
const fs = require("fs");
|
|
18
|
-
const path = require("path");
|
|
19
|
-
|
|
20
|
-
const ROOT = path.join(__dirname, "..");
|
|
21
|
-
const TEMPLATE = path.join(ROOT, "agents-src", "executor.template.md");
|
|
22
|
-
const OUT_DIR = path.join(ROOT, "templates", "agents");
|
|
23
|
-
|
|
24
|
-
// Score→model bands mirror templates/agents/MODEL-MAPPING.md and the single
|
|
25
|
-
// score→model table in skills/orc/config.md (documented drift — change
|
|
26
|
-
// together). `effort: null` = a model with NO effort ladder (haiku): the
|
|
27
|
-
// generator omits the `effort:` frontmatter line entirely.
|
|
28
|
-
//
|
|
29
|
-
// v1.0.0 W4 — the table is SIX bands, not eight, and the `opus5_only` ladder is
|
|
30
|
-
// TWO, not three. Four of these agents are named by NO default row:
|
|
31
|
-
// names them, and they ship anyway (D14). They stay reachable through
|
|
32
|
-
// `rubric_bands_override`, `orc diy` `fixed_executor` and `extra_fallback_agent`,
|
|
33
|
-
// and deleting a generated file that no row happens to name today would be a
|
|
34
|
-
// rename-shaped migration for what is only a table change. Their `band` string
|
|
35
|
-
// says so rather than naming a range that no longer exists — a band label that
|
|
36
|
-
// lies is worse than one that admits it is unreachable by default.
|
|
37
|
-
const VARIANTS = [
|
|
38
|
-
{ name: "orc-executor-opus-5-med", model: "claude-opus-5", effort: "medium", band: "highest-complexity [90,100]" },
|
|
39
|
-
{ name: "orc-executor-opus-5-low", model: "claude-opus-5", effort: "low", band: "upper-complexity [65,90)" },
|
|
40
|
-
{ name: "orc-executor-sonnet-5-high", model: "claude-sonnet-5", effort: "high", band: "mid-complexity [55,65)" },
|
|
41
|
-
{ name: "orc-executor-sonnet-4-6-high", model: "claude-sonnet-4-6", effort: "high", band: "low-mid-complexity [40,55)" },
|
|
42
|
-
{ name: "orc-executor-sonnet-4-6-med", model: "claude-sonnet-4-6", effort: "medium", band: "low-complexity [30,40)" },
|
|
43
|
-
{ name: "orc-executor-haiku-4-5", model: "claude-haiku-4-5", effort: null, band: "lowest-complexity [0,30)" },
|
|
44
|
-
// NAMED BY NO BAND since v1.0.0 W4 (D14) — kept on disk, dispatched only when a
|
|
45
|
-
// user names one explicitly.
|
|
46
|
-
{ name: "orc-executor-opus-5-high", model: "claude-opus-5", effort: "high", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
|
|
47
|
-
{ name: "orc-executor-opus-4-8-high", model: "claude-opus-4-8", effort: "high", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
|
|
48
|
-
{ name: "orc-executor-opus-4-7-high", model: "claude-opus-4-7", effort: "high", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
|
|
49
|
-
{ name: "orc-executor-opus-4-7-med", model: "claude-opus-4-7", effort: "medium", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
|
|
50
|
-
];
|
|
51
|
-
|
|
52
|
-
// Line endings are NOT content here: .gitattributes stores these files with LF
|
|
53
|
-
// and checks them out native, so a Windows worktree is CRLF and a Linux one LF.
|
|
54
|
-
// The injected frontmatter line therefore borrows the TEMPLATE's own ending, and
|
|
55
|
-
// --check compares LF-normalized text — otherwise the guard fails on Windows for
|
|
56
|
-
// a difference git itself does not record.
|
|
57
|
-
const eolOf = (s) => (/\r\n/.test(s) ? "\r\n" : "\n");
|
|
58
|
-
const lf = (s) => s.replace(/\r\n/g, "\n");
|
|
59
|
-
|
|
60
|
-
function render(template, v) {
|
|
61
|
-
const effortDesc = v.effort ? `, ${v.effort} effort` : " (no effort ladder)";
|
|
62
|
-
const effortFm = v.effort ? `effort: ${v.effort}${eolOf(template)}` : "";
|
|
63
|
-
return template
|
|
64
|
-
.replace(/\{\{NAME\}\}/g, v.name)
|
|
65
|
-
.replace(/\{\{MODEL\}\}/g, v.model)
|
|
66
|
-
.replace(/\{\{EFFORT_DESC\}\}/g, effortDesc)
|
|
67
|
-
.replace(/\{\{EFFORT_FM\}\}/g, effortFm)
|
|
68
|
-
.replace(/\{\{BAND\}\}/g, v.band);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function main() {
|
|
72
|
-
const checkMode = process.argv.includes("--check");
|
|
73
|
-
const template = fs.readFileSync(TEMPLATE, "utf8");
|
|
74
|
-
if (/\{\{(?!NAME|MODEL|EFFORT_DESC|EFFORT_FM|BAND)\w/.test(template)) {
|
|
75
|
-
console.error("❌ build-agents: unknown {{placeholder}} in executor.template.md");
|
|
76
|
-
process.exit(1);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
let drifted = 0;
|
|
80
|
-
for (const v of VARIANTS) {
|
|
81
|
-
const out = render(template, v);
|
|
82
|
-
const dest = path.join(OUT_DIR, v.name + ".md");
|
|
83
|
-
if (checkMode) {
|
|
84
|
-
const current = fs.existsSync(dest) ? fs.readFileSync(dest, "utf8") : null;
|
|
85
|
-
if (current === null || lf(current) !== lf(out)) {
|
|
86
|
-
drifted++;
|
|
87
|
-
console.error(
|
|
88
|
-
`❌ generated agent drifted: templates/agents/${v.name}.md\n` +
|
|
89
|
-
` Executor agents are GENERATED — edit agents-src/executor.template.md\n` +
|
|
90
|
-
` (or bin/build-agents.js VARIANTS) and run: npm run build:agents`
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
} else {
|
|
94
|
-
fs.writeFileSync(dest, out);
|
|
95
|
-
console.log(` gen templates/agents/${v.name}.md`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (checkMode) {
|
|
100
|
-
if (drifted) process.exit(1);
|
|
101
|
-
console.log(`✅ ORC executor agents OK — ${VARIANTS.length} files match the template.`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Required by test/payload.test.js, which checks the line-ending rule above
|
|
106
|
-
// without writing to templates/agents/.
|
|
107
|
-
module.exports = { VARIANTS, render, lf, eolOf };
|
|
108
|
-
|
|
109
|
-
if (require.main === module) main();
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Executor-agent generator. The 6 executor agent files differ ONLY in
|
|
5
|
+
* frontmatter (name/model/effort + score band); their body is one shared
|
|
6
|
+
* contract. This script is the single source of truth: edit
|
|
7
|
+
* agents-src/executor.template.md (or the VARIANTS table), run
|
|
8
|
+
* `npm run build:agents`, and every copy is stamped out identically.
|
|
9
|
+
*
|
|
10
|
+
* Modes:
|
|
11
|
+
* node bin/build-agents.js write templates/agents/orc-executor-*.md
|
|
12
|
+
* node bin/build-agents.js --check fail if any generated file drifted from
|
|
13
|
+
* the template (runs in `npm run verify`
|
|
14
|
+
* and prepack — a hand-edit to a generated
|
|
15
|
+
* executor file fails the build)
|
|
16
|
+
*/
|
|
17
|
+
const fs = require("fs");
|
|
18
|
+
const path = require("path");
|
|
19
|
+
|
|
20
|
+
const ROOT = path.join(__dirname, "..");
|
|
21
|
+
const TEMPLATE = path.join(ROOT, "agents-src", "executor.template.md");
|
|
22
|
+
const OUT_DIR = path.join(ROOT, "templates", "agents");
|
|
23
|
+
|
|
24
|
+
// Score→model bands mirror templates/agents/MODEL-MAPPING.md and the single
|
|
25
|
+
// score→model table in skills/orc/config.md (documented drift — change
|
|
26
|
+
// together). `effort: null` = a model with NO effort ladder (haiku): the
|
|
27
|
+
// generator omits the `effort:` frontmatter line entirely.
|
|
28
|
+
//
|
|
29
|
+
// v1.0.0 W4 — the table is SIX bands, not eight, and the `opus5_only` ladder is
|
|
30
|
+
// TWO, not three. Four of these agents are named by NO default row:
|
|
31
|
+
// names them, and they ship anyway (D14). They stay reachable through
|
|
32
|
+
// `rubric_bands_override`, `orc diy` `fixed_executor` and `extra_fallback_agent`,
|
|
33
|
+
// and deleting a generated file that no row happens to name today would be a
|
|
34
|
+
// rename-shaped migration for what is only a table change. Their `band` string
|
|
35
|
+
// says so rather than naming a range that no longer exists — a band label that
|
|
36
|
+
// lies is worse than one that admits it is unreachable by default.
|
|
37
|
+
const VARIANTS = [
|
|
38
|
+
{ name: "orc-executor-opus-5-med", model: "claude-opus-5-5", effort: "medium", band: "highest-complexity [90,100]" },
|
|
39
|
+
{ name: "orc-executor-opus-5-low", model: "claude-opus-5-5", effort: "low", band: "upper-complexity [65,90)" },
|
|
40
|
+
{ name: "orc-executor-sonnet-5-high", model: "claude-sonnet-5", effort: "high", band: "mid-complexity [55,65)" },
|
|
41
|
+
{ name: "orc-executor-sonnet-4-6-high", model: "claude-sonnet-4-6", effort: "high", band: "low-mid-complexity [40,55)" },
|
|
42
|
+
{ name: "orc-executor-sonnet-4-6-med", model: "claude-sonnet-4-6", effort: "medium", band: "low-complexity [30,40)" },
|
|
43
|
+
{ name: "orc-executor-haiku-4-5", model: "claude-haiku-4-5", effort: null, band: "lowest-complexity [0,30)" },
|
|
44
|
+
// NAMED BY NO BAND since v1.0.0 W4 (D14) — kept on disk, dispatched only when a
|
|
45
|
+
// user names one explicitly.
|
|
46
|
+
{ name: "orc-executor-opus-5-high", model: "claude-opus-5-5", effort: "high", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
|
|
47
|
+
{ name: "orc-executor-opus-4-8-high", model: "claude-opus-4-8", effort: "high", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
|
|
48
|
+
{ name: "orc-executor-opus-4-7-high", model: "claude-opus-4-7", effort: "high", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
|
|
49
|
+
{ name: "orc-executor-opus-4-7-med", model: "claude-opus-4-7", effort: "medium", band: "no default band — reachable via rubric_bands_override, orc diy fixed_executor, or extra_fallback_agent" },
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
// Line endings are NOT content here: .gitattributes stores these files with LF
|
|
53
|
+
// and checks them out native, so a Windows worktree is CRLF and a Linux one LF.
|
|
54
|
+
// The injected frontmatter line therefore borrows the TEMPLATE's own ending, and
|
|
55
|
+
// --check compares LF-normalized text — otherwise the guard fails on Windows for
|
|
56
|
+
// a difference git itself does not record.
|
|
57
|
+
const eolOf = (s) => (/\r\n/.test(s) ? "\r\n" : "\n");
|
|
58
|
+
const lf = (s) => s.replace(/\r\n/g, "\n");
|
|
59
|
+
|
|
60
|
+
function render(template, v) {
|
|
61
|
+
const effortDesc = v.effort ? `, ${v.effort} effort` : " (no effort ladder)";
|
|
62
|
+
const effortFm = v.effort ? `effort: ${v.effort}${eolOf(template)}` : "";
|
|
63
|
+
return template
|
|
64
|
+
.replace(/\{\{NAME\}\}/g, v.name)
|
|
65
|
+
.replace(/\{\{MODEL\}\}/g, v.model)
|
|
66
|
+
.replace(/\{\{EFFORT_DESC\}\}/g, effortDesc)
|
|
67
|
+
.replace(/\{\{EFFORT_FM\}\}/g, effortFm)
|
|
68
|
+
.replace(/\{\{BAND\}\}/g, v.band);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function main() {
|
|
72
|
+
const checkMode = process.argv.includes("--check");
|
|
73
|
+
const template = fs.readFileSync(TEMPLATE, "utf8");
|
|
74
|
+
if (/\{\{(?!NAME|MODEL|EFFORT_DESC|EFFORT_FM|BAND)\w/.test(template)) {
|
|
75
|
+
console.error("❌ build-agents: unknown {{placeholder}} in executor.template.md");
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
let drifted = 0;
|
|
80
|
+
for (const v of VARIANTS) {
|
|
81
|
+
const out = render(template, v);
|
|
82
|
+
const dest = path.join(OUT_DIR, v.name + ".md");
|
|
83
|
+
if (checkMode) {
|
|
84
|
+
const current = fs.existsSync(dest) ? fs.readFileSync(dest, "utf8") : null;
|
|
85
|
+
if (current === null || lf(current) !== lf(out)) {
|
|
86
|
+
drifted++;
|
|
87
|
+
console.error(
|
|
88
|
+
`❌ generated agent drifted: templates/agents/${v.name}.md\n` +
|
|
89
|
+
` Executor agents are GENERATED — edit agents-src/executor.template.md\n` +
|
|
90
|
+
` (or bin/build-agents.js VARIANTS) and run: npm run build:agents`
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
fs.writeFileSync(dest, out);
|
|
95
|
+
console.log(` gen templates/agents/${v.name}.md`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (checkMode) {
|
|
100
|
+
if (drifted) process.exit(1);
|
|
101
|
+
console.log(`✅ ORC executor agents OK — ${VARIANTS.length} files match the template.`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Required by test/payload.test.js, which checks the line-ending rule above
|
|
106
|
+
// without writing to templates/agents/.
|
|
107
|
+
module.exports = { VARIANTS, render, lf, eolOf };
|
|
108
|
+
|
|
109
|
+
if (require.main === module) main();
|