omp-conductor 0.3.11 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -35
- package/package.json +1 -1
- package/skills/conductor-onboarding/SKILL.md +7 -6
- package/src/brief-upgrade.ts +505 -60
- package/src/briefs/orchestrator.md +40 -123
- package/src/briefs/policy.md +89 -0
- package/src/cli.ts +140 -24
- package/src/daemon.ts +1 -1
- package/src/orchestrator-tick.ts +48 -6
- package/src/plugin.ts +77 -16
- package/src/setup.ts +104 -41
package/README.md
CHANGED
|
@@ -270,45 +270,32 @@ the question, which is the safer way to leave one alone.
|
|
|
270
270
|
|
|
271
271
|
### Keeping a brief current
|
|
272
272
|
|
|
273
|
-
|
|
274
|
-
worth knowing exactly which half of that sentence is true.
|
|
273
|
+
The standing prompt is two layers:
|
|
275
274
|
|
|
276
|
-
|
|
|
277
|
-
| --- | --- |
|
|
278
|
-
| `
|
|
279
|
-
| `
|
|
280
|
-
| `
|
|
281
|
-
|
|
|
282
|
-
|
|
283
|
-
That last row is the point. Once the wizard renders your brief, nothing in this
|
|
284
|
-
package reads it back or rewrites it, so a later version that ships a new protocol
|
|
285
|
-
above the `YOURS TO EDIT` banner is invisible to every fleet already running:
|
|
275
|
+
| Layer | File | Updates how? |
|
|
276
|
+
| --- | --- | --- |
|
|
277
|
+
| Package floor | `src/briefs/orchestrator.md` | Every tick recomposes it into `ORCHESTRATOR.md` from the installed package. `npm install` + restart is enough. |
|
|
278
|
+
| Fleet policy | `POLICY.md` | Yours. Setup writes the scaffold once; the Learning loop edits only this file. |
|
|
279
|
+
| Composed view | `ORCHESTRATOR.md` | Regenerated from floor + `POLICY.md` on each tick (and at setup). Do not hand-amend it for durable policy. |
|
|
280
|
+
| Worker brief | `src/briefs/worker.md` | Read per run from the package. |
|
|
281
|
+
| Onboarding skill | `skills/conductor-onboarding/SKILL.md` | Read from the installed package. |
|
|
286
282
|
|
|
287
283
|
```bash
|
|
288
|
-
omp-conductor brief-upgrade
|
|
289
|
-
omp-conductor brief-upgrade --
|
|
284
|
+
omp-conductor brief-upgrade # report overlay / legacy state
|
|
285
|
+
omp-conductor brief-upgrade --migrate # dry-run: bannered ORCHESTRATOR.md → POLICY.md
|
|
286
|
+
omp-conductor brief-upgrade --migrate --apply
|
|
287
|
+
omp-conductor brief-upgrade --retrofit # #20: propose YOURS TO EDIT cut on a hand-written brief
|
|
288
|
+
omp-conductor brief-upgrade --retrofit --apply
|
|
290
289
|
```
|
|
291
290
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
- **Your brief has no banner** (hand-written, or predating the split). There is no
|
|
298
|
-
way to tell which lines are yours, so it lists the sections the template has and
|
|
299
|
-
yours does not, and leaves the file alone. Retitled sections count as present, so
|
|
300
|
-
`## Reporting (low noise)` is not reported as a missing `## Reporting`.
|
|
301
|
-
- **No config resolved**, so the template still carries its `{{PLACEHOLDER}}`
|
|
302
|
-
coordinates. Merging it would write those literals into a live prompt.
|
|
303
|
-
- **Nothing changed.** It says so and exits.
|
|
291
|
+
- **Overlay already active** (`POLICY.md` present): protocol updates need no brief-upgrade.
|
|
292
|
+
- **Legacy bannered brief**: `--migrate` lifts the owned half into `POLICY.md` and recomposes, with backups.
|
|
293
|
+
- **Hand-written brief** (no banner): `--retrofit` inserts the banner before the first Releases / Project context / Reporting / Amendments heading; then `--migrate`.
|
|
294
|
+
- **Legacy `--apply`**: still merges a bannered single-file brief when you need the old path.
|
|
304
295
|
|
|
305
|
-
`--file PATH` checks a brief that is not where the wizard would have put it
|
|
306
|
-
is the normal case on a dedicated fleet host: the supervising session runs from its
|
|
307
|
-
own directory, and that host may never have configured a dispatch daemon.
|
|
296
|
+
`--file PATH` checks a brief that is not where the wizard would have put it.
|
|
308
297
|
|
|
309
|
-
|
|
310
|
-
from it can propose the missing sections itself, as a diff, for you to approve with
|
|
311
|
-
a yes over Telegram, which is the same protocol it uses for any other amendment.
|
|
298
|
+
The **Learning loop** proposes diffs against `POLICY.md` for you to approve over Telegram.
|
|
312
299
|
|
|
313
300
|
## Quick start
|
|
314
301
|
|
|
@@ -1101,7 +1088,7 @@ omp-conductor daemon [--once] [--port N] [--project NAME]
|
|
|
1101
1088
|
omp-conductor pause
|
|
1102
1089
|
omp-conductor resume
|
|
1103
1090
|
omp-conductor graph-setup [--project NAME] [--write]
|
|
1104
|
-
omp-conductor brief-upgrade [--apply] [--file PATH] [--project NAME]
|
|
1091
|
+
omp-conductor brief-upgrade [--migrate|--retrofit] [--apply] [--file PATH] [--project NAME]
|
|
1105
1092
|
omp-conductor help
|
|
1106
1093
|
```
|
|
1107
1094
|
|
|
@@ -1121,8 +1108,10 @@ omp-conductor help
|
|
|
1121
1108
|
| `resume` | Allow claiming again. |
|
|
1122
1109
|
| `graph-setup` | Print how to set up the code-graph indexes workers query instead of grepping: a `git clone` for every index-only clone that does not exist yet, the one-shot index command per repo, and a `cbm-reindex.service` + `cbm-reindex.timer` pair generated from the project's own repos and branches. Reads only, so it is safe on a host where you are not root. Exits `1` when no repo in the project has [`graphProject`](#configuration) set, because the fix is a wizard answer rather than a flag. See [Code-graph discovery](#code-graph-discovery). |
|
|
1123
1110
|
| `--write` | Only for `graph-setup`. Writes the refresh script into the state directory and the two units into `/etc/systemd/system`, then prints the exact `systemctl daemon-reload && systemctl enable --now cbm-reindex.timer` to run. It never runs `systemctl` itself and never enables anything: that needs root, and a package that enables system timers behind your back is one you cannot audit by reading its output. |
|
|
1124
|
-
| `brief-upgrade` |
|
|
1125
|
-
| `--
|
|
1111
|
+
| `brief-upgrade` | Inspect the package-floor + `POLICY.md` overlay. Reports by default; see [Keeping a brief current](#keeping-a-brief-current). |
|
|
1112
|
+
| `--migrate` | Only for `brief-upgrade`. Lift a bannered `ORCHESTRATOR.md` owned half into `POLICY.md` and recompose. Dry-run unless `--apply`. |
|
|
1113
|
+
| `--retrofit` | Only for `brief-upgrade`. Propose (or with `--apply`, write) a `YOURS TO EDIT` banner before the first owned-topic heading on a hand-written brief. |
|
|
1114
|
+
| `--apply` | Only for `brief-upgrade`. Confirms `--migrate` / `--retrofit`, or legacy single-file merge above the banner. |
|
|
1126
1115
|
| `--file PATH` | Only for `brief-upgrade`. Check a brief that is not where the wizard would have put it, on a host that may have no config at all. |
|
|
1127
1116
|
| `help`, `--help`, `-h` | Print usage. An unknown or missing verb prints it too, and exits `2`. |
|
|
1128
1117
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omp-conductor",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.13",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "A 24/7 dispatcher that takes ready GitHub issues to green, mergeable PRs using omp coding sessions, with tiered escalation first to an orchestrator session and then to a human.",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: conductor-onboarding
|
|
3
|
-
description: Interview-driven onboarding for omp-conductor. Use when the user wants to set up conductor, onboard a new fleet or project, configure the fleet, asks for conductor setup help, asks what belongs in ORCHESTRATOR.md, or wants an agent's release and merge authority scoped and written down. Interviews the operator on release policy, escalation taste and reporting scope, reads each routing repo's CI to propose the real pre-push gates, learns the product and roadmap the fleet will groom, scaffolds the release procedure from the repo's own release workflows rather than from the operator's memory, tailors ORCHESTRATOR.md from the shipped
|
|
3
|
+
description: Interview-driven onboarding for omp-conductor. Use when the user wants to set up conductor, onboard a new fleet or project, configure the fleet, asks for conductor setup help, asks what belongs in POLICY.md / ORCHESTRATOR.md, or wants an agent's release and merge authority scoped and written down. Interviews the operator on release policy, escalation taste and reporting scope, reads each routing repo's CI to propose the real pre-push gates, learns the product and roadmap the fleet will groom, scaffolds the release procedure from the repo's own release workflows rather than from the operator's memory, tailors POLICY.md (and the composed ORCHESTRATOR.md view) from the shipped templates, verifies the worker brief's assumptions against the actual repos, finishes through the deterministic /conductor setup wizard, then builds the code-graph indexes workers query instead of grepping.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Onboarding a conductor fleet
|
|
@@ -51,8 +51,9 @@ cat ~/.omp/conductor/config.json # honours $OMP_CONDUCTOR_HOME
|
|
|
51
51
|
- **`gh` missing `repo` or `project`?** Say so now. The wizard warns at the
|
|
52
52
|
confirm, but a token that cannot label issues means every claim fails, and it
|
|
53
53
|
is cheaper to fix before the interview than after.
|
|
54
|
-
- **
|
|
55
|
-
(default `~/.omp/conductor/worktrees
|
|
54
|
+
- **A `POLICY.md` or `ORCHESTRATOR.md` already exists** under `<workspaceRoot>/`
|
|
55
|
+
(default `~/.omp/conductor/worktrees/`)? Read `POLICY.md` first when present —
|
|
56
|
+
that is the editable fleet policy. Otherwise read `ORCHESTRATOR.md`. It is the
|
|
56
57
|
operator's accumulated policy, and it outranks the shipped template. Your job
|
|
57
58
|
becomes amending it, and you must warn that a wizard re-run offers to overwrite
|
|
58
59
|
it.
|
|
@@ -228,7 +229,7 @@ Two honesty notes to pass on:
|
|
|
228
229
|
- **Neither scope is an outbound filter.** Nothing inspects the orchestrator's
|
|
229
230
|
messages and drops the ones the scope did not ask for. It is a constraint handed
|
|
230
231
|
to the model each turn, not a gate it is held to.
|
|
231
|
-
- **Changing the scope later does not rewrite an existing `
|
|
232
|
+
- **Changing the scope later does not rewrite an existing `POLICY.md`.** The
|
|
232
233
|
tick line changes; the brief does not. Whoever changes it must edit the brief's
|
|
233
234
|
Reporting section too, or the session is carrying two versions of the policy.
|
|
234
235
|
|
|
@@ -553,7 +554,7 @@ proposal, in `cmd @ cwd` form); whether to add another repo; whether to set up
|
|
|
553
554
|
**code-graph discovery** and the root its clones live under (Step 8); caps; the
|
|
554
555
|
authority confirms; the worker model; the Telegram chat id for tier 2; the
|
|
555
556
|
escalation fallback; whether an orchestrator session already runs elsewhere; the
|
|
556
|
-
report scope; and finally whether to write `ORCHESTRATOR.md`.
|
|
557
|
+
report scope; and finally whether to write `ORCHESTRATOR.md` + `POLICY.md`.
|
|
557
558
|
|
|
558
559
|
Two things about the end of it that you must not smooth over:
|
|
559
560
|
|
|
@@ -567,7 +568,7 @@ Two things about the end of it that you must not smooth over:
|
|
|
567
568
|
no state database, no arm. If they decline, the machine is untouched. Never
|
|
568
569
|
answer that confirm on their behalf.
|
|
569
570
|
|
|
570
|
-
Say yes to writing `ORCHESTRATOR.md`, then **immediately apply the edits you
|
|
571
|
+
Say yes to writing `ORCHESTRATOR.md` + `POLICY.md`, then **immediately apply the edits you
|
|
571
572
|
drafted in Steps 3, 4 and 5** to the file it wrote, and tell them the path. Note
|
|
572
573
|
the trap for later: a future `/conductor setup` re-run offers to overwrite that
|
|
573
574
|
file, and accepting loses every tailored word. Their brief is now a file worth
|