@iowarp/clio-coder 0.4.5 → 0.4.6
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 +24 -0
- package/CONTRIBUTING.md +14 -9
- package/NOTICE +16 -0
- package/README.md +312 -685
- package/dist/{acp-H3CU2HBQ.js → acp-UVEVWSDL.js} +6 -6
- package/dist/{agents-IXQQZ7BD.js → agents-VWY37DTK.js} +31 -30
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-R7KYF7N3.js → auth-PCV2XQDV.js} +6 -6
- package/dist/{builtins-CRFDQUVP.js → builtins-PD652MTK.js} +3 -3
- package/dist/{chunk-SDWNDICN.js → chunk-24T2YZ7A.js} +58 -56
- package/dist/{chunk-FSTIBAGM.js → chunk-2AKYFREM.js} +7 -7
- package/dist/{chunk-SE4ZKILO.js → chunk-3BJGMT2D.js} +30 -9
- package/dist/{chunk-GVYWZNRK.js → chunk-3HQVBIKD.js} +2 -2
- package/dist/{chunk-EWD5P3GK.js → chunk-3JLFK5MW.js} +4 -4
- package/dist/{chunk-O2RQ7LCK.js → chunk-3O2ZAUGQ.js} +2 -2
- package/dist/{chunk-GXCCHKN6.js → chunk-3QKXHCGS.js} +4 -4
- package/dist/{chunk-YEJIG7LN.js → chunk-3WBALRQH.js} +7 -7
- package/dist/{chunk-I7VLWRK2.js → chunk-4DU2TVI4.js} +5 -5
- package/dist/{chunk-TEG3RYVZ.js → chunk-4U4TKZFR.js} +3 -3
- package/dist/{chunk-EHCPSZJF.js → chunk-4VMV6OS6.js} +2 -2
- package/dist/{chunk-T7FDXNRU.js → chunk-536HXRFE.js} +4 -4
- package/dist/{chunk-ZMZQEBKI.js → chunk-5QRX7SLS.js} +8 -8
- package/dist/{chunk-RXIOCVBZ.js → chunk-6HAO6X5B.js} +4 -4
- package/dist/{chunk-HGSLRG33.js → chunk-6OII3LOK.js} +2 -2
- package/dist/{chunk-U2JOLB7O.js → chunk-6RYDAVQT.js} +32 -32
- package/dist/{chunk-T53XI6I7.js → chunk-6VRRJT7L.js} +2 -2
- package/dist/{chunk-RLTT5GVY.js → chunk-7JSSKXG2.js} +4 -4
- package/dist/{chunk-633EXGZA.js → chunk-ACCKVSHU.js} +3 -3
- package/dist/{chunk-6SYEGZI3.js → chunk-B3MOMLJ4.js} +2 -2
- package/dist/{chunk-UXAC2FX4.js → chunk-BLTEAUCB.js} +3 -3
- package/dist/{chunk-DRD2A54W.js → chunk-BT7HGDOX.js} +15 -15
- package/dist/{chunk-F34AR6O3.js → chunk-DXLUVUD4.js} +5 -5
- package/dist/{chunk-HR3HPQ76.js → chunk-E7RF4KBO.js} +2 -2
- package/dist/chunk-EM2WNQS2.js +93 -0
- package/dist/{chunk-KYKNBD4Y.js → chunk-F5Z7EWMN.js} +953 -233
- package/dist/{chunk-VLPTKCKT.js → chunk-GLYBJ4RQ.js} +3 -3
- package/dist/{chunk-KDWLXVMN.js → chunk-HPTJF6DG.js} +16 -39
- package/dist/{chunk-6CDNRHWH.js → chunk-HZ2T2YED.js} +2 -2
- package/dist/{chunk-UTUNT5QL.js → chunk-HZFBVU5X.js} +7 -7
- package/dist/{chunk-KF6GFW6O.js → chunk-I2K2NCZQ.js} +7 -7
- package/dist/{chunk-5DDOTTG4.js → chunk-IGLVVNEG.js} +2 -2
- package/dist/{chunk-4SVIVOMC.js → chunk-IKRWLEDA.js} +5 -5
- package/dist/{chunk-R6MAYTMS.js → chunk-JMPL7NUB.js} +3 -3
- package/dist/{chunk-5ZMXGW7P.js → chunk-KAFMW7WM.js} +4 -85
- package/dist/{chunk-R6MICQYU.js → chunk-LIN2K3EL.js} +4 -4
- package/dist/{chunk-QEQISF75.js → chunk-LK2FN5JY.js} +1 -1
- package/dist/{chunk-YYB3MC65.js → chunk-N2OKBREN.js} +2 -2
- package/dist/{chunk-XXBQKW32.js → chunk-NNWJYUNO.js} +4 -4
- package/dist/{chunk-TZ7MFRG4.js → chunk-P5JMBPDJ.js} +22 -20
- package/dist/{chunk-WFKDPU7U.js → chunk-P6M7RKMI.js} +2 -2
- package/dist/{chunk-MDU3C27C.js → chunk-PZN2LQY6.js} +5 -5
- package/dist/{chunk-S32UQ5GL.js → chunk-Q7NNUHQV.js} +15 -15
- package/dist/{chunk-U7VQ4NI4.js → chunk-QCOV5DFY.js} +5 -5
- package/dist/{chunk-MC3JSVR6.js → chunk-QJMRYTCX.js} +7 -7
- package/dist/{chunk-DIMRLNIC.js → chunk-QNWRHOMF.js} +3 -3
- package/dist/{chunk-ILJ7DWGE.js → chunk-QXFBABFJ.js} +4 -4
- package/dist/chunk-R2CT5YDO.js +66 -0
- package/dist/{chunk-E3BQTQUP.js → chunk-RGZNQ5CT.js} +3 -3
- package/dist/{chunk-SBZX6ARC.js → chunk-SXQKNKRA.js} +7 -7
- package/dist/{chunk-WLMSOT73.js → chunk-TJFDL26W.js} +3 -3
- package/dist/{chunk-EQEJJ53P.js → chunk-VAHLPXPY.js} +2 -2
- package/dist/{chunk-7TKWWPD7.js → chunk-VANN3GDP.js} +3 -23
- package/dist/{chunk-GNQRWTMY.js → chunk-VHMX7SXF.js} +2 -2
- package/dist/{chunk-UL36QJX6.js → chunk-WKUYQBCG.js} +6 -6
- package/dist/{chunk-FKIOX6DS.js → chunk-WNGF5AJX.js} +9 -4
- package/dist/{chunk-ICO4TQ2F.js → chunk-WV6TDAPN.js} +36 -20
- package/dist/{chunk-K6RDB7IA.js → chunk-X3BI7HTV.js} +9 -9
- package/dist/{chunk-NY6IWDVU.js → chunk-XWMSPJYN.js} +2 -2
- package/dist/{chunk-7HBHHVCK.js → chunk-YPRSNUTC.js} +2 -2
- package/dist/{chunk-ONRTXOZY.js → chunk-ZS43Y2FT.js} +2 -2
- package/dist/cli/index.js +27 -27
- package/dist/{clio-5I2IBFYL.js → clio-QQCMTUZE.js} +6 -6
- package/dist/{code-nav-YXIAEZVS.js → code-nav-GUPM6766.js} +8 -8
- package/dist/{config-Y2JDJ3JJ.js → config-IIM7YOD3.js} +42 -41
- package/dist/{configure-SML6UBZ5.js → configure-4ZM5HWJX.js} +28 -10
- package/dist/{context-S2EEC3EJ.js → context-44BZLJ3J.js} +12 -12
- package/dist/{context-P5YSEO55.js → context-AIDVQKMW.js} +34 -33
- package/dist/{context-QQ53HSGJ.js → context-OL5P3HEP.js} +25 -24
- package/dist/{context-clear-TMEQCOTH.js → context-clear-OQV76MYP.js} +34 -33
- package/dist/{context-working-set-CNLSQN5K.js → context-working-set-ZUW3EGLS.js} +10 -9
- package/dist/{detail-5572VLBO.js → detail-UXPWRANG.js} +35 -34
- package/dist/{dispatch-runner-FRHD6P2O.js → dispatch-runner-P3ZW6G77.js} +38 -37
- package/dist/{doctor-N3LCM2LG.js → doctor-JJVGPZWT.js} +18 -17
- package/dist/{eval-BUU3ZOUZ.js → eval-V2RTN3UH.js} +26 -25
- package/dist/{evidence-DTGEN456.js → evidence-35PYWGSO.js} +34 -33
- package/dist/{evidence-SQ5DNFEN.js → evidence-CIGGKI6J.js} +36 -35
- package/dist/{evolve-IJNUFZDS.js → evolve-33SM3NJP.js} +34 -33
- package/dist/{fleet-ZNNVSYFO.js → fleet-LFO7SIPC.js} +62 -61
- package/dist/{fleet-commands-5YE7NPJL.js → fleet-commands-RLK72GU3.js} +9 -9
- package/dist/fleet-decisions-3SBSCTCW.js +1 -1
- package/dist/{fleet-graph-6HHPWF5T.js → fleet-graph-JZIBCGMW.js} +11 -11
- package/dist/{fleet-inspect-JEYMGCGC.js → fleet-inspect-2L5YGGZJ.js} +35 -34
- package/dist/{fleet-validate-4PM4GDDL.js → fleet-validate-LIAVKDUU.js} +12 -12
- package/dist/{fleet-verify-NJDTHTO3.js → fleet-verify-JIK3OQZR.js} +34 -33
- package/dist/{fleet-view-UP2BWQQY.js → fleet-view-IWHYGQKK.js} +35 -34
- package/dist/{init-S3GZQ5ZF.js → init-NJEDOTQW.js} +46 -45
- package/dist/{interop-YOTGXFJM.js → interop-RVCAYECG.js} +4 -4
- package/dist/{inventory-K2OZ36YJ.js → inventory-74UL7UHU.js} +35 -34
- package/dist/{library-GJI6W6OK.js → library-CTKZA7K3.js} +10 -10
- package/dist/{memory-OQOXQGYD.js → memory-I76I5VUH.js} +34 -33
- package/dist/{models-3IK2Y5WE.js → models-D4YDIQZQ.js} +19 -18
- package/dist/{monitor-FTJLTKCQ.js → monitor-NKVD55HX.js} +40 -39
- package/dist/{orchestrator-N47O7SFD.js → orchestrator-I6OATVPK.js} +658 -1092
- package/dist/{preload-65U34NG6.js → preload-EJAWJEIO.js} +34 -33
- package/dist/{reset-MUVQDLNL.js → reset-4XMQKDNZ.js} +5 -3
- package/dist/{resources-LM76COAO.js → resources-TVYVXK3Q.js} +10 -10
- package/dist/{run-3VFZQ33N.js → run-OWQNNSJU.js} +61 -60
- package/dist/{share-4JUB4BL7.js → share-NPZZMUXG.js} +11 -11
- package/dist/{skills-S36AAJHU.js → skills-OXFEAWMT.js} +12 -12
- package/dist/{skills-eval-G6T57L7M.js → skills-eval-J5TCKSJA.js} +38 -37
- package/dist/{skills-inventory-WLM46PJH.js → skills-inventory-7II4DM57.js} +10 -10
- package/dist/{slash-commands-GBARG3Y7.js → slash-commands-MDSDSWYF.js} +26 -25
- package/dist/{targets-N5REUETU.js → targets-KILZEOCE.js} +36 -20
- package/dist/{tasks-6BVY5YZF.js → tasks-R6P6OV22.js} +7 -7
- package/dist/{terminal-lease-57UEOJKS.js → terminal-lease-LZCG2KN3.js} +2 -2
- package/dist/{upgrade-4HD5HAIV.js → upgrade-D2OZH6IQ.js} +9 -9
- package/dist/{usage-4GWM2WWP.js → usage-PIASNUS4.js} +40 -39
- package/dist/{verifiers-GSKWKWVG.js → verifiers-LTHUY2PX.js} +9 -9
- package/dist/{verify-3AS3ULCY.js → verify-HYF7KBVE.js} +7 -7
- package/dist/{wiki-generate-7BV7XWIY.js → wiki-generate-RK7JQ5NP.js} +51 -50
- package/dist/worker/entry.js +41 -39
- package/docs/architecture/context-engine.md +1 -1
- package/docs/architecture/tui-design.md +45 -30
- package/docs/guide/commands-and-modes.md +26 -25
- package/docs/guide/configuration-and-targets.md +122 -27
- package/docs/guide/configuration-reference.md +9 -4
- package/docs/guide/fleet-dispatch.md +1 -6
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/installation-and-lifecycle.md +44 -11
- package/docs/process/development-pipeline.md +1 -1
- package/docs/process/documentation-coverage.md +1 -1
- package/docs/process/release-cut-checklist.md +18 -6
- package/package.json +1 -1
- package/src/cli/ask.ts +10 -10
- package/src/cli/configure-editor.ts +51 -0
- package/src/cli/configure-interop.ts +1 -1
- package/src/cli/configure-oauth.ts +1 -1
- package/src/cli/configure-onboarding.ts +232 -96
- package/src/cli/configure-prompts.ts +76 -0
- package/src/cli/configure-quick.ts +274 -0
- package/src/cli/configure-target.ts +14 -2
- package/src/cli/configure.ts +413 -174
- package/src/cli/oauth-manual-input.ts +1 -1
- package/src/cli/reset.ts +2 -0
- package/src/cli/select.ts +35 -4
- package/src/cli/upgrade.ts +2 -2
- package/src/core/config.ts +6 -1
- package/src/core/defaults.ts +33 -11
- package/src/{interactive → core}/external-editor.ts +4 -4
- package/src/domains/config/classify.ts +1 -1
- package/src/domains/config/keybindings.ts +3 -31
- package/src/domains/providers/probe/fingerprint.ts +13 -6
- package/src/domains/providers/probe/reasoning.ts +2 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +23 -7
- package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +7 -2
- package/src/domains/providers/runtimes/protocol/openai-compat.ts +10 -4
- package/src/interactive/application-controller.ts +1 -31
- package/src/interactive/chat-panel.ts +163 -637
- package/src/interactive/chat-renderer.ts +13 -30
- package/src/interactive/dispatch-board.ts +1 -3
- package/src/interactive/editor-submit.ts +8 -31
- package/src/interactive/footer/dashboard.ts +8 -3
- package/src/interactive/footer/widgets.ts +50 -91
- package/src/interactive/interactive-application.ts +16 -42
- package/src/interactive/interactive-event-projection.ts +2 -44
- package/src/interactive/interactive-input-runtime.ts +3 -28
- package/src/interactive/interactive-presentation.ts +30 -9
- package/src/interactive/interactive-slash-runtime.ts +3 -40
- package/src/interactive/layout.ts +29 -4
- package/src/interactive/overlay-general-openers.ts +2 -0
- package/src/interactive/overlay-lifecycle.ts +1 -0
- package/src/interactive/overlay-session-lifecycle.ts +1 -1
- package/src/interactive/overlays/settings.ts +9 -8
- package/src/interactive/renderers/preview.ts +16 -0
- package/src/interactive/renderers/tool-execution.ts +67 -160
- package/src/interactive/renderers/worker-entry.ts +57 -41
- package/src/interactive/slash-autocomplete.ts +1 -6
- package/src/interactive/slash-commands.ts +7 -39
- package/src/interactive/status/controller.ts +0 -5
- package/src/interactive/status/state-machine.ts +44 -26
- package/src/interactive/status/types.ts +3 -0
- package/src/interactive/status/verbs.ts +13 -12
- package/src/interactive/transcript-detail.ts +50 -112
- package/src/interactive/view/artifacts.ts +4 -0
- package/src/interactive/view/view-overlay.ts +44 -34
- package/src/tools/presentation.ts +1 -1
- package/src/tools/registry.ts +1 -1
- package/src/tools/verify/numeric.ts +4 -4
|
@@ -15,6 +15,29 @@ consumers install the built package and do not need the repository toolchain.
|
|
|
15
15
|
This guide describes the default directories, file purposes, permissions, and
|
|
16
16
|
lifecycle operations.
|
|
17
17
|
|
|
18
|
+
### Start, change settings, or recover
|
|
19
|
+
|
|
20
|
+
| Task | Command | Result |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| Set up a new installation | `clio-coder configure` | Quick Connect: endpoint, key if needed, model, Connect; then start `clio-coder`. |
|
|
23
|
+
| Change a connection | `clio-coder configure --section targets` | Add or edit endpoints, credentials, and models; choose role defaults. |
|
|
24
|
+
| Change any setting or repair YAML | `clio-coder configure --edit` | Edit a draft, validate, and save with a backup. |
|
|
25
|
+
| Diagnose the installation | `clio-coder doctor` | Read-only diagnosis. `clio-coder doctor --fix` repairs structure and permissions. |
|
|
26
|
+
| Finish a package-manager update | `clio-coder upgrade --post-install` | Apply local migrations and installation checks. |
|
|
27
|
+
| Start configuration over | `clio-coder reset --config` | Reset settings, preserve credentials and history, then run `clio-coder configure`. |
|
|
28
|
+
| Emulate a fresh user | `clio-coder reset --all` | Remove all four user roots, recreate defaults, then run `clio-coder configure`. |
|
|
29
|
+
| Remove user state | `clio-coder uninstall` | Remove the selected user roots; remove the package with the manager that installed it. |
|
|
30
|
+
|
|
31
|
+
Reset and uninstall preview their scope and ask for confirmation. Use
|
|
32
|
+
`--dry-run` to inspect without changing anything. A bare `reset` clears session
|
|
33
|
+
state, so use `--config` when your intent is to start model setup over. Project
|
|
34
|
+
`.clio-coder/` directories survive these user-level operations.
|
|
35
|
+
|
|
36
|
+
The source installer prepares the launcher and directory structure, then points
|
|
37
|
+
you to `clio-coder configure`. It does not ask you to configure delegation peers
|
|
38
|
+
before your primary model is set up. Upgrading preserves settings and
|
|
39
|
+
credentials; reinstalling the package alone does not reset them.
|
|
40
|
+
|
|
18
41
|
### Optional dependency: the Claude Agent SDK
|
|
19
42
|
|
|
20
43
|
`@anthropic-ai/claude-agent-sdk` is an `optionalDependencies` entry, not a hard dependency. Its platform package carries a proprietary binary of roughly 224MB per platform, and only the `claude-sdk` runtime uses it. Skip it with:
|
|
@@ -296,7 +319,7 @@ Key lifecycle and operational updates in v0.3.7:
|
|
|
296
319
|
- Fullscreen TUI mode (`interface.mode`, `interface.fullscreenScrollbar`) is
|
|
297
320
|
available through `/settings interface` and requires a restart. Adaptive
|
|
298
321
|
presentation pacing is the live `interface.smoothStreaming` setting; it
|
|
299
|
-
defaults to `
|
|
322
|
+
defaults to conservative `auto`, with `off` and explicit `on` available from
|
|
300
323
|
the same area.
|
|
301
324
|
- Interactive launch paints a measured Stage 0 shell on the same terminal and editor that Stage 1 hydrates. Typing, queued submits, resize, and Ctrl+C remain live during hydration; set `CLIO_CODER_INSTANT_SHELL=0` for the legacy fully hydrated first-frame path.
|
|
302
325
|
- Turn settlement is enforced on `/new`, `/resume`, `/tree`, and `/fork` to cleanly commit in-flight streams before session writer replacement (#114).
|
|
@@ -408,18 +431,20 @@ or release the handle, then run the identical command again and it resumes from
|
|
|
408
431
|
whatever is left. A partial delete never reports global success.
|
|
409
432
|
|
|
410
433
|
### E. Interactive Configuration (`clio-coder configure`)
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
434
|
+
|
|
435
|
+
The interactive launcher starts with **Quick Connect**, followed by **Settings**
|
|
436
|
+
and **Diagnostics**. Quick Connect asks for an endpoint URL, a key when needed,
|
|
437
|
+
and a model when several are available. Review and **Connect**; the recommended
|
|
438
|
+
defaults handle the rest. An unconfigured interactive `clio-coder` opens this
|
|
439
|
+
same launcher and continues into chat after a successful setup.
|
|
414
440
|
|
|
415
441
|
```bash
|
|
416
|
-
clio-coder configure
|
|
442
|
+
clio-coder configure
|
|
443
|
+
clio-coder configure --quick
|
|
444
|
+
clio-coder configure --settings
|
|
417
445
|
```
|
|
418
446
|
|
|
419
|
-
|
|
420
|
-
model target), it routes immediately to the target category selection menu. Once
|
|
421
|
-
targets are configured, launching `clio-coder configure` presents the 8 top-level
|
|
422
|
-
runtime sections:
|
|
447
|
+
**Settings** contains the nine advanced sections:
|
|
423
448
|
|
|
424
449
|
1. **Targets & Auth**: manage providers, endpoints, credentials, and models.
|
|
425
450
|
2. **Models & Thinking**: default models, thinking levels, model favorites, cycle set.
|
|
@@ -429,14 +454,22 @@ runtime sections:
|
|
|
429
454
|
6. **Panes & Layout**: terminal panes capability, dock layout, TUI display mode, notifications.
|
|
430
455
|
7. **Skills & Extensions**: trust project imports, external ACP agents, plugins, library sync.
|
|
431
456
|
8. **Diagnostics**: version information, resolved directories, doctor check, raw settings inspection.
|
|
457
|
+
9. **All Settings**: validated file editor for the complete settings schema.
|
|
432
458
|
|
|
433
459
|
Every section header indicates the exact settings file path being modified
|
|
434
460
|
(`Source: ~/.config/clio-coder/settings.yaml`), prints the current active values,
|
|
435
|
-
and provides
|
|
461
|
+
and provides arrow-key navigation with Escape to go back and `q` to quit. The
|
|
462
|
+
parent menu remembers your selected row. Dumb terminals use numbered menus
|
|
463
|
+
with `b` for Back and `q` to quit.
|
|
436
464
|
|
|
437
465
|
The `--section <name>` flag jumps directly into any section (e.g.,
|
|
438
466
|
`clio-coder configure --section models` or `clio-coder configure --section fleet`).
|
|
439
|
-
The `--json` flag emits
|
|
467
|
+
The `--json` flag emits user settings with defaults in formatted JSON for scripting.
|
|
468
|
+
`--edit` opens a temporary settings draft in `VISUAL`/`EDITOR`, validates it before
|
|
469
|
+
saving, and keeps the previous file as `settings.yaml.bak`. It can repair a file
|
|
470
|
+
that is too malformed to open the regular menu. See the
|
|
471
|
+
[configuration guide](configuration-and-targets.md#first-run-flow) for the complete
|
|
472
|
+
new-user, add-target, edit-target, and cancellation paths.
|
|
440
473
|
|
|
441
474
|
---
|
|
442
475
|
|
|
@@ -59,7 +59,7 @@ closed. The reusable [`branch-closeout`](../../skills/git/branch-closeout/) skil
|
|
|
59
59
|
`refs/heads/main`; every survivor needs an owner and purpose.
|
|
60
60
|
|
|
61
61
|
Maintainer release candidates are local-only and use a compact branch name
|
|
62
|
-
that cannot collide with their tag: branch `
|
|
62
|
+
that cannot collide with their tag: branch `v046`, tag `v0.4.6`. Gate the exact
|
|
63
63
|
candidate, require fetched `origin/main` to be its ancestor, fast-forward local
|
|
64
64
|
`main`, fetch again, and push only `refs/heads/main:refs/heads/main` with
|
|
65
65
|
explicit authorization. After CI passes, push only the fully qualified
|
|
@@ -56,7 +56,7 @@ preserves that audit-time state.
|
|
|
56
56
|
| `guide/exit-codes-and-output.md` | `src/cli/**`; `src/entry/**`; CLI smoke tests | `html/exit_codes_blueprint.html` | The JSON event table is described too broadly; full mode can pass additional `clio_coder_*` tool, permission, and plan frames. Core process exit codes are correct. |
|
|
57
57
|
| `guide/extensions-and-sharing.md` | `src/domains/extensions/**`; `src/domains/resources/**`; `src/domains/share/**`; extension and share CLIs | `html/extensions_blueprint.html` | Extensions discover skills, prompts, agents, fleets, and reserved themes, not only prompts and skills. Judge eval arms are not full-auto. Share archives use `clio-coder-share-archive`, `clio-coder.share.v1`, and `clioCoderVersion`; old names are compatibility inputs. The exported settings fragment contains current v2 leaves rather than the documented old scope. |
|
|
58
58
|
| `process/fleet-demo-runbook.md` | `src/domains/dispatch/**`; `src/domains/scheduling/**`; `src/cli/doctor.ts` | No; parity gap. | Current receipts use integrity v20, not v16, and older versions are retired rather than universally failing verification. |
|
|
59
|
-
| `guide/fleet-dispatch.md` | `src/domains/dispatch/**`; `src/domains/scheduling/**`; dispatch tools | `html/fleet_dispatch_blueprint.html` | Current receipts use v20, not v19. Older receipts are retired and never read as evidence.
|
|
59
|
+
| `guide/fleet-dispatch.md` | `src/domains/dispatch/**`; `src/domains/scheduling/**`; dispatch tools | `html/fleet_dispatch_blueprint.html` | Current receipts use v20, not v19. Older receipts are retired and never read as evidence. Output styles use `clio-coder.output.cycle`; worker previews follow the same preset regardless of origin. Agent-ledger citations point into the former dispatch monolith rather than `dispatch-runner.ts`. |
|
|
60
60
|
| `process/git-commit-provenance.md` | `src/core/commit-attribution.ts`; `src/core/git-commit-attribution.ts`; `src/core/defaults.ts`; dispatch attribution tests | No; parity gap. | Canonical configuration is `integrations.git.commitAttribution`; `attribution.gitCommits` is migration-only. Commit trailers recognize and emit `receipt-v20`, not v19. |
|
|
61
61
|
| `guide/glossary.md` | Owning types in `src/domains/dispatch/**`, `src/domains/session/**`, `src/domains/context/**`, and `src/tools/**` | `html/glossary_blueprint.html` | Receipt integrity is v20. Dispatch run and session IDs are 12-character random base36 identifiers, while session turn and entry IDs use UUIDv7. Route candidates contain more identity and policy fields than the four-field definition. Council is a current topology. `internal` is a dispatch request origin, not a worker run origin. Context ledger buckets are incomplete. |
|
|
62
62
|
| `guide/installation-and-lifecycle.md` | `src/cli/upgrade.ts`; `src/cli/doctor.ts`; `src/cli/reset.ts`; `src/cli/uninstall.ts`; `src/domains/lifecycle/**`; `src/core/xdg.ts` | `html/lifecycle_blueprint.html` | Install metadata omits `repairedAt` and overgeneralizes preexisting-home detection beyond config, data, and state. The upgrade section presents a stale 0.3.x sequence as current and claims one migration, while the current registry has five migrations and 0.4.2 emits a generic notice. |
|
|
@@ -13,18 +13,21 @@ canonical remote state or publishes immutable packages.
|
|
|
13
13
|
## Part 1: Candidate Preparation on a Local Compact Branch
|
|
14
14
|
|
|
15
15
|
Maintainers prepare release candidates on a local-only compact branch named after
|
|
16
|
-
the version without punctuation, such as `
|
|
17
|
-
names like `v0.4.
|
|
16
|
+
the version without punctuation, such as `v046` for version `0.4.6`. Dotted branch
|
|
17
|
+
names like `v0.4.6` are forbidden because dotted names belong exclusively to immutable
|
|
18
18
|
tags. The canonical repository hosts only `main`, and no release candidate branch is
|
|
19
19
|
ever pushed to canonical origin.
|
|
20
20
|
|
|
21
21
|
1. Ensure the working tree is clean and updated from canonical origin:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
git checkout -b
|
|
24
|
+
git checkout -b v046 origin/main
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
2. Update `version` in `package.json` to the
|
|
27
|
+
2. Update `version` in `package.json` and `assets/acp-registry/agent.json` to the
|
|
28
|
+
release version. Update the README's source-install tag and remove any
|
|
29
|
+
development-only notices. Keep historical release records, protocol schema
|
|
30
|
+
versions, dependency versions, and migration fixtures unchanged.
|
|
28
31
|
|
|
29
32
|
3. Retitle the active changelog section in `CHANGELOG.md` from `## Unreleased` to
|
|
30
33
|
`## <version> - YYYY-MM-DD`. The release gate in `scripts/check-release.mjs` requires
|
|
@@ -112,7 +115,7 @@ an immutable package. Do not execute any of them without explicit maintainer aut
|
|
|
112
115
|
|
|
113
116
|
```bash
|
|
114
117
|
git checkout main
|
|
115
|
-
git merge --ff-only
|
|
118
|
+
git merge --ff-only v046
|
|
116
119
|
```
|
|
117
120
|
|
|
118
121
|
4. Verify that local `main` matches the reviewed candidate SHA exactly.
|
|
@@ -150,6 +153,15 @@ an immutable package. Do not execute any of them without explicit maintainer aut
|
|
|
150
153
|
|
|
151
154
|
5. Inspect the GitHub Actions workflow run and confirm the GitHub release is published.
|
|
152
155
|
|
|
156
|
+
6. Reconcile the release milestone against the tagged commits and each ticket's
|
|
157
|
+
acceptance evidence. `Fixes #123` or `Resolves #123` in a commit closes that
|
|
158
|
+
ticket when the commit reaches default-branch `main`; a bare `#123`, changelog
|
|
159
|
+
mention, tag, or GitHub release does not. Verify the resulting issue state.
|
|
160
|
+
Explicitly close completed tickets missed by automatic closure and retain
|
|
161
|
+
their implementing commit and validation references. Carry incomplete work
|
|
162
|
+
forward with its remaining criteria, then close the reconciled milestone.
|
|
163
|
+
Never infer completion from a release-note mention alone.
|
|
164
|
+
|
|
153
165
|
## Part 6: Package Publication to npm
|
|
154
166
|
|
|
155
167
|
Publishing to npm is a manual maintainer step performed from the tagged commit.
|
|
@@ -195,7 +207,7 @@ Publishing to npm is a manual maintainer step performed from the tagged commit.
|
|
|
195
207
|
3. Remove the local compact candidate branch:
|
|
196
208
|
|
|
197
209
|
```bash
|
|
198
|
-
git branch -d
|
|
210
|
+
git branch -d v046
|
|
199
211
|
```
|
|
200
212
|
|
|
201
213
|
The canonical repository remains in its steady state containing only `main` and immutable tags.
|
package/package.json
CHANGED
package/src/cli/ask.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { createInterface } from "node:readline/promises";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
label: string,
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
type QuestionReader = Pick<ReturnType<typeof createInterface>, "question"> & {
|
|
4
|
+
interactive?: boolean;
|
|
5
|
+
text?: (label: string, initial?: string) => Promise<string>;
|
|
6
|
+
choose?: (label: string, choices: ReadonlyArray<string>, current: string) => Promise<string>;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export async function ask(rl: QuestionReader, label: string, defaultValue?: string): Promise<string | null> {
|
|
10
|
+
if (rl.text) return rl.text(label, defaultValue);
|
|
8
11
|
const suffix = defaultValue && defaultValue.length > 0 ? ` [${defaultValue}]` : "";
|
|
9
12
|
try {
|
|
10
13
|
const answer = (await rl.question(`${label}${suffix}: `)).trim();
|
|
@@ -16,11 +19,8 @@ export async function ask(
|
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
|
|
19
|
-
export async function askYesNo(
|
|
20
|
-
rl:
|
|
21
|
-
label: string,
|
|
22
|
-
defaultValue: boolean,
|
|
23
|
-
): Promise<boolean> {
|
|
22
|
+
export async function askYesNo(rl: QuestionReader, label: string, defaultValue: boolean): Promise<boolean> {
|
|
23
|
+
if (rl.choose && rl.interactive) return (await rl.choose(label, ["yes", "no"], defaultValue ? "yes" : "no")) === "yes";
|
|
24
24
|
const marker = defaultValue ? "Y/n" : "y/N";
|
|
25
25
|
for (;;) {
|
|
26
26
|
const answer = await ask(rl, `${label} [${marker}]`);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { parse } from "yaml";
|
|
3
|
+
import { SettingsValidationError, settingsPath, validateSettings, withSettingsLock } from "../core/config.js";
|
|
4
|
+
import { DEFAULT_SETTINGS_YAML } from "../core/defaults.js";
|
|
5
|
+
import { editTextExternally, resolveExternalEditor } from "../core/external-editor.js";
|
|
6
|
+
import { safeResourceWrite } from "../core/safe-resource-write.js";
|
|
7
|
+
import type { ConfigurePrompts } from "./configure-prompts.js";
|
|
8
|
+
|
|
9
|
+
/** Edit a draft, validate it, then replace the file only if it has not changed meanwhile. */
|
|
10
|
+
export async function editSettings(prompts: ConfigurePrompts): Promise<boolean> {
|
|
11
|
+
const file = settingsPath();
|
|
12
|
+
const original = existsSync(file) ? readFileSync(file, "utf8") : null;
|
|
13
|
+
let draft = original ?? DEFAULT_SETTINGS_YAML;
|
|
14
|
+
const editor = resolveExternalEditor();
|
|
15
|
+
for (;;) {
|
|
16
|
+
const result = editTextExternally(draft, editor, ".yaml");
|
|
17
|
+
if (!result.ok || result.text === undefined) throw new Error(result.error ?? "Editor did not return a draft");
|
|
18
|
+
draft = `${result.text}\n`;
|
|
19
|
+
if (draft === original) {
|
|
20
|
+
prompts.output.write("Settings unchanged.\n");
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const validated = validateSettings(parse(draft));
|
|
25
|
+
if (validated.issues.length) throw new SettingsValidationError(validated.issues);
|
|
26
|
+
} catch (error) {
|
|
27
|
+
prompts.output.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
28
|
+
if (
|
|
29
|
+
(await prompts.choose("Invalid draft", ["Return to editor", "Discard draft"], "Return to editor")) ===
|
|
30
|
+
"Return to editor"
|
|
31
|
+
)
|
|
32
|
+
continue;
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
const choice = await prompts.choose(
|
|
36
|
+
"Save validated settings?",
|
|
37
|
+
["Save", "Return to editor", "Discard draft"],
|
|
38
|
+
"Save",
|
|
39
|
+
);
|
|
40
|
+
if (choice === "Return to editor") continue;
|
|
41
|
+
if (choice !== "Save") return false;
|
|
42
|
+
withSettingsLock(() => {
|
|
43
|
+
const current = existsSync(file) ? readFileSync(file, "utf8") : null;
|
|
44
|
+
if (current !== original)
|
|
45
|
+
throw new Error("Settings changed while the editor was open. Reopen the editor to keep those changes.");
|
|
46
|
+
safeResourceWrite(file, draft, { encoding: "utf8", mode: 0o644, backup: original !== null });
|
|
47
|
+
});
|
|
48
|
+
prompts.output.write(`Settings saved to ${file}${original === null ? "" : `; previous file: ${file}.bak`}\n`);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -48,7 +48,7 @@ export interface InteropReviewStreams {
|
|
|
48
48
|
|
|
49
49
|
export interface InteropReviewIo {
|
|
50
50
|
/** Readline interface for the numbered fallback. Null means nothing can answer. */
|
|
51
|
-
rl: ReturnType<typeof createInterface> | null;
|
|
51
|
+
rl: Pick<ReturnType<typeof createInterface>, "question"> | null;
|
|
52
52
|
streams?: InteropReviewStreams;
|
|
53
53
|
/** Rail to draw on when the caller already owns one. */
|
|
54
54
|
presenter?: LifecyclePresenter;
|
|
@@ -15,7 +15,7 @@ import { promptOAuthSelection } from "./oauth-select.js";
|
|
|
15
15
|
import { credentialWriteFailed, printError, printOk } from "./shared.js";
|
|
16
16
|
|
|
17
17
|
export async function loginOAuthRuntime(
|
|
18
|
-
rl: ReturnType<typeof createInterface>,
|
|
18
|
+
rl: Pick<ReturnType<typeof createInterface>, "question">,
|
|
19
19
|
runtime: RuntimeDescriptor,
|
|
20
20
|
): Promise<boolean> {
|
|
21
21
|
const auth = openAuthStorage();
|