carthagent 1.0.7 → 1.1.0-beta.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/README.md +140 -83
- package/bin/ctg.mjs +14 -732
- package/docs/beta-rewards-e2e-plan.md +48 -0
- package/docs/beta-rewards-e2e-results.md +84 -0
- package/docs/cloud-onboarding-acceptance.md +65 -0
- package/docs/glyph-review/host-chrome-glyph-compatibility-v4.md +83 -0
- package/docs/glyph-review/test-isolation-v1.md +26 -0
- package/docs/glyph-review/typecheck-base.log +1 -0
- package/docs/glyph-review/typecheck-v4.log +1 -0
- package/docs/glyph-review/unicode-inventory-v4.csv +402 -0
- package/docs/help-dispatch-review.md +69 -0
- package/docs/launch-readiness-live-results.md +65 -0
- package/docs/legacy-cli.md +150 -0
- package/docs/live-theme-plugin-api.md +18 -0
- package/docs/native-cli.md +102 -0
- package/docs/native-compatibility.md +16 -0
- package/docs/native-daily-quests.md +132 -0
- package/docs/native-glyph-pty.md +59 -0
- package/docs/native-manual-testing.md +336 -0
- package/docs/native-slash-acceptance-handoff.md +49 -0
- package/docs/native-terminal-paired-failure-2026-10-17.md +40 -0
- package/docs/native-terminal-performance.md +310 -0
- package/docs/native-terminal-semantics-evidence/README.md +25 -0
- package/docs/native-terminal-semantics-evidence/controlled-host-model-selftest.json +16 -0
- package/docs/native-terminal-semantics-evidence/current-acceptance-status.json +59 -0
- package/docs/native-terminal-semantics-evidence/final-binary-focused-85bb44a.json +154 -0
- package/docs/native-terminal-semantics-evidence/final-binary-full-incomplete-85bb44a.json +160 -0
- package/docs/native-terminal-semantics-evidence/final-binary-layout-85bb44a.json +149 -0
- package/docs/native-terminal-semantics-evidence/final-binary-layout-interactive-85bb44a.json +159 -0
- package/docs/native-terminal-semantics-evidence/final-binary-model-picker-escape-unchanged-85bb44a.json +44 -0
- package/docs/native-terminal-semantics-evidence/final-binary-model-picker-exact-identity-85bb44a.json +47 -0
- package/docs/native-terminal-semantics-evidence/final-binary-model-picker-unchanged-model-incomplete-85bb44a.json +58 -0
- package/docs/native-terminal-semantics-evidence/final-binary-model-selftest.json +16 -0
- package/docs/native-terminal-semantics-evidence/final-binary-picker-cancel-incomplete-85bb44a.json +62 -0
- package/docs/native-terminal-semantics-evidence/focused-clipboard-title-stale-binary.json +161 -0
- package/docs/native-terminal-semantics-evidence/layout-stale-binary-observation-not-accepted.json +153 -0
- package/docs/native-terminal-semantics-evidence/picker-latest-incomplete-attempt.json +62 -0
- package/docs/native-terminal-semantics-evidence/picker-previous-probe-pass.json +61 -0
- package/docs/native-terminal-semantics.md +89 -0
- package/docs/native-upgrade.md +175 -0
- package/docs/opencode-composed-source-review.md +89 -0
- package/docs/opencode-migration.md +225 -9
- package/docs/opencode-owned-runtime.md +241 -0
- package/docs/opencode-runtime.md +12 -0
- package/docs/opencode-theme-provider-proof/README.md +55 -0
- package/docs/opencode-theme-provider-proof/live-theme-api-base.patch +122 -0
- package/docs/opencode-theme-provider-proof/plugin-theme-provider.patch +107 -0
- package/docs/opencode-theme-provider-proof/session-ui-base.patch +1217 -0
- package/docs/owned-host-controls-proof.md +39 -0
- package/docs/owned-runtime-release-manifest.md +42 -0
- package/docs/owned-visual-clear-proof.md +40 -0
- package/docs/patches/opencode-v2.0.32-glyph-spinner-test-isolation-v1.patch +50 -0
- package/docs/patches/opencode-v2.0.32-glyphs.patch +3670 -0
- package/docs/patches/opencode-v2.0.32-help-dispatch.patch +156 -0
- package/docs/patches/opencode-v2.0.32-live-theme-api.patch +122 -0
- package/docs/patches/opencode-v2.0.32-session-ui-combined-v1.patch +5272 -0
- package/docs/patches/opencode-v2.0.32-session-ui-combined-v2.patch +6052 -0
- package/docs/patches/opencode-v2.0.32-session-ui-combined-v3.patch +8657 -0
- package/docs/patches/opencode-v2.0.32-session-ui-combined-v4.patch +9928 -0
- package/docs/patches/opencode-v2.0.32-session-ui-combined-v5.patch +13965 -0
- package/docs/patches/opencode-v2.0.32-session-ui.patch +5137 -0
- package/docs/release-notes-beta.1.md +60 -0
- package/docs/release-notes-beta.2.md +60 -0
- package/docs/release-notes-native-draft.md +73 -0
- package/docs/release-notes-preview.10.md +121 -0
- package/docs/release-notes-preview.11.md +76 -0
- package/docs/release-notes-preview.12.md +55 -0
- package/docs/release-notes-preview.13.md +68 -0
- package/docs/release-notes-preview.9.md +130 -0
- package/docs/source-preview.md +120 -0
- package/evaluate.mjs +28 -1
- package/lib/budget.mjs +1 -1
- package/lib/cloud/client.mjs +13 -7
- package/lib/codegraph.mjs +1 -1
- package/lib/delivery-review.mjs +19 -6
- package/lib/delivery.mjs +3 -2
- package/lib/environment.mjs +8 -0
- package/lib/guidance.mjs +1 -1
- package/lib/opencode/cli-runtime.mjs +1188 -0
- package/lib/opencode/cli.mjs +253 -0
- package/lib/opencode/credentials.mjs +63 -8
- package/lib/opencode/demo.mjs +53 -0
- package/lib/opencode/evaluation-budget-plugin/index.ts +3 -0
- package/lib/opencode/evaluation.mjs +32 -12
- package/lib/opencode/headless.mjs +22 -5
- package/lib/opencode/provider-policy.mjs +23 -0
- package/lib/opencode/review.mjs +37 -16
- package/lib/opencode/runtime-artifact.mjs +335 -0
- package/lib/opencode/runtime-github-transport.mjs +121 -0
- package/lib/opencode/runtime-release.json +36 -0
- package/lib/opencode/runtime.mjs +299 -20
- package/lib/opencode/service.mjs +77 -35
- package/lib/opencode/session-options.mjs +6 -2
- package/lib/opencode/update.mjs +222 -0
- package/lib/opencode/workspace.mjs +1 -1
- package/lib/planning-advice.mjs +2 -2
- package/lib/providers/experiential.mjs +2 -2
- package/lib/providers/names.mjs +1 -1
- package/lib/tui/framing.mjs +1 -80
- package/lib/tui/models.mjs +1 -1
- package/lib/update.mjs +10 -1
- package/package.json +33 -7
- package/plugins/carthagent/README.md +23 -0
- package/plugins/carthagent/src/bootstrap.ts +1 -1
- package/plugins/carthagent/src/daily-evidence.mjs +57 -0
- package/plugins/carthagent/src/daily-quests-rpc.ts +50 -0
- package/plugins/carthagent/src/daily-source-rpc.ts +52 -0
- package/plugins/carthagent/src/index.ts +71 -24
- package/plugins/carthagent/src/rpc.ts +51 -6
- package/plugins/carthagent/src/server/codegraph.ts +12 -5
- package/plugins/carthagent/src/server/daily-quests-rpc.ts +277 -0
- package/plugins/carthagent/src/server/daily-source-rpc.ts +243 -0
- package/plugins/carthagent/src/server/delivery.ts +227 -112
- package/plugins/carthagent/src/server/framing.mjs +80 -0
- package/plugins/carthagent/src/server/policy.ts +1 -1
- package/plugins/carthagent/src/server/providers.ts +65 -36
- package/plugins/carthagent/src/server/session-controls.ts +3 -1
- package/plugins/carthagent/src/server/ship-agents.ts +77 -0
- package/plugins/carthagent/src/server/ship-context.mjs +60 -0
- package/plugins/carthagent/src/server/ship-guidance.ts +41 -0
- package/plugins/carthagent/src/server/ship-rpc.ts +71 -0
- package/plugins/carthagent/src/server/voyages-rpc.ts +280 -0
- package/plugins/carthagent/src/testing.ts +5 -0
- package/plugins/carthagent/src/tui.tsx +506 -0
- package/plugins/carthagent/src/ui/client.ts +127 -0
- package/plugins/carthagent/src/ui/commands.ts +70 -0
- package/plugins/carthagent/src/ui/daily-editor-focus.mjs +52 -0
- package/plugins/carthagent/src/ui/daily-editor.mjs +4 -0
- package/plugins/carthagent/src/ui/daily-quests-events.mjs +18 -0
- package/plugins/carthagent/src/ui/daily-quests-state.mjs +218 -0
- package/plugins/carthagent/src/ui/daily-quests.tsx +235 -0
- package/plugins/carthagent/src/ui/host-state.ts +42 -0
- package/plugins/carthagent/src/ui/model-command.ts +32 -0
- package/plugins/carthagent/src/ui/native-navigation.ts +23 -0
- package/plugins/carthagent/src/ui/native-review.d.mts +33 -0
- package/plugins/carthagent/src/ui/native-review.mjs +159 -0
- package/plugins/carthagent/src/ui/resume-session.mjs +34 -0
- package/plugins/carthagent/src/ui/select-mouse.ts +17 -0
- package/plugins/carthagent/src/ui/session-preferences.d.mts +7 -0
- package/plugins/carthagent/src/ui/session-preferences.mjs +14 -0
- package/plugins/carthagent/src/ui/theme-provision.d.mts +3 -0
- package/plugins/carthagent/src/ui/theme-provision.mjs +134 -0
- package/plugins/carthagent/src/ui/voyages-navigation-state.mjs +56 -0
- package/plugins/carthagent/src/ui/voyages-navigation.tsx +131 -0
- package/plugins/carthagent/src/ui/voyages-state.mjs +165 -0
- package/plugins/carthagent/src/ui/voyages.tsx +131 -0
- package/plugins/carthagent/src/ui/workspace-live.ts +61 -0
- package/plugins/carthagent/src/ui/workspace.tsx +379 -0
- package/plugins/carthagent/src/voyages-rpc.ts +64 -0
- package/plugins/carthagent/src/workspace-rpc.ts +36 -0
- package/plugins/carthagent/tests/commands.test.ts +107 -0
- package/plugins/carthagent/tests/session-preferences.test.mjs +41 -0
- package/plugins/carthagent/tests/voyages-navigation.test.tsx +269 -0
- package/plugins/carthagent/themes/carthage.json +67 -0
- package/plugins/carthagent/tui.ts +26 -1
- package/script/ctg/build-owned-runtime.sh +166 -0
- package/tests/budget-engine.test.mjs +4 -3
- package/tests/cli.test.mjs +52 -96
- package/tests/cloud-client.test.mjs +2 -2
- package/tests/daily-evidence.test.mjs +62 -0
- package/tests/delivery-review.test.mjs +57 -2
- package/tests/delivery.test.mjs +22 -1
- package/tests/experiential-extension.test.mjs +2 -2
- package/tests/experiential.test.mjs +1 -1
- package/tests/fixtures/native-discovery-plugin/server.ts +15 -0
- package/tests/generate-owned-runtime-release.test.mjs +354 -0
- package/tests/installed-runtime-contract.test.mjs +43 -0
- package/tests/native-cli-host-smoke.mjs +457 -0
- package/tests/native-daily-editor-focus.test.mjs +213 -0
- package/tests/native-daily-editor.test.mjs +43 -0
- package/tests/native-daily-quests-layout.test.mjs +55 -0
- package/tests/native-daily-quests-rpc.test.mjs +456 -0
- package/tests/native-daily-quests-ui.test.mjs +778 -0
- package/tests/native-daily-source.test.mjs +525 -0
- package/tests/native-demo-ui.test.mjs +48 -0
- package/tests/native-evaluation-admission.test.mjs +24 -0
- package/tests/native-fixture-browser-cleanup.test.mjs +65 -0
- package/tests/native-fixture-runtime.test.mjs +111 -0
- package/tests/native-fixture-stop-diagnostics.test.mjs +67 -0
- package/tests/native-glyph-pty.test.mjs +107 -0
- package/tests/native-manual-projects.test.mjs +170 -0
- package/tests/native-model-command.test.mjs +67 -0
- package/tests/native-owned-runtime-env.test.mjs +140 -0
- package/tests/native-paired-guards.test.mjs +464 -0
- package/tests/native-provider-policy.test.mjs +33 -0
- package/tests/native-pty-invocation.test.mjs +114 -0
- package/tests/native-pty-runtime.test.mjs +45 -0
- package/tests/native-resume-session.test.mjs +46 -0
- package/tests/native-review-consumer.test.mjs +286 -0
- package/tests/native-runtime-identity.test.mjs +214 -0
- package/tests/native-select-mouse.test.mjs +23 -0
- package/tests/native-ship-guidance.test.mjs +16 -0
- package/tests/native-ship-parity.test.mjs +526 -0
- package/tests/native-ship-plan.test.mjs +85 -0
- package/tests/native-ship-rpc.test.mjs +83 -0
- package/tests/native-ui-commands.test.mjs +6 -0
- package/tests/native-voyages-layout.test.mjs +28 -0
- package/tests/native-voyages-navigation.test.mjs +169 -0
- package/tests/native-voyages-rpc.test.mjs +397 -0
- package/tests/native-voyages-ui.test.mjs +307 -0
- package/tests/opencode-atomic-write.test.mjs +55 -0
- package/tests/opencode-cli.test.mjs +1312 -0
- package/tests/opencode-codegraph-plugin.test.mjs +47 -0
- package/tests/opencode-delivery.test.mjs +16 -0
- package/tests/opencode-providers.test.mjs +248 -20
- package/tests/opencode-runtime.test.mjs +597 -8
- package/tests/opencode-session-controls.test.mjs +15 -0
- package/tests/opencode-ship-rpc.test.mjs +71 -0
- package/tests/opencode-update.test.mjs +475 -0
- package/tests/opencode-workspace.test.mjs +51 -2
- package/tests/owned-runtime-publish-workflow.test.mjs +477 -0
- package/tests/release-workflow.test.mjs +46 -0
- package/tests/runtime-artifact.test.mjs +269 -0
- package/tests/runtime-development-trust.test.mjs +231 -0
- package/tests/runtime-github-transport.test.mjs +132 -0
- package/tests/runtime-token-env.test.mjs +23 -0
- package/tests/server.test.mjs +3 -1
- package/tests/ship-telemetry.test.mjs +1 -1
- package/tests/source-preview.test.mjs +253 -0
- package/tests/test_native_terminal_probe.py +76 -0
- package/tests/test_native_terminal_semantics.py +232 -0
- package/tests/tui.test.mjs +2 -2
- package/tests/update.test.mjs +42 -5
- package/tests/verify-draft-runtime-gate.test.mjs +280 -0
- package/tests/verify-owned-runtime-release.test.mjs +371 -0
- package/tests/workspace-live.test.mjs +127 -0
- package/tools/benchmark/diagnose-request.mjs +59 -36
- package/tools/benchmark/eval-common.mjs +3 -3
- package/tools/benchmark/evaluators.test.mjs +4 -4
- package/tools/benchmark/guard.test.mjs +35 -2
- package/tools/benchmark/guard.ts +20 -7
- package/tools/benchmark/planning-startup.test.mjs +30 -34
- package/tools/benchmark/runner.mjs +12 -7
- package/tools/benchmark/runner.test.mjs +23 -7
- package/tools/benchmark/upstream-error.test.mjs +16 -2
- package/tools/generate-owned-runtime-release.mjs +217 -0
- package/tools/installed-runtime-contract.mjs +16 -0
- package/tools/manual-runtime-manifest.mjs +39 -0
- package/tools/native-fixture-browser-cleanup.mjs +59 -0
- package/tools/native-fixture-stop-diagnostics.mjs +45 -0
- package/tools/native-fixture.mjs +199 -40
- package/tools/native-glyph-helpers.py +127 -0
- package/tools/native-glyph-pty.py +144 -0
- package/tools/native-manual-projects.mjs +259 -0
- package/tools/native-manual.mjs +338 -0
- package/tools/native-model-picker-acceptance.py +306 -0
- package/tools/native-owned-runtime-env.sh +47 -0
- package/tools/native-paired-guards.mjs +282 -0
- package/tools/native-paired-manifest.mjs +72 -0
- package/tools/native-paired-orchestration.sh +51 -0
- package/tools/native-plugin-readiness.mjs +33 -0
- package/tools/native-plugin-readiness.test.mjs +53 -0
- package/tools/native-pty-invocation.mjs +26 -0
- package/tools/native-pty-runtime.mjs +83 -0
- package/tools/native-pty-smoke.py +147 -24
- package/tools/native-public-repo-shell-result.mjs +13 -0
- package/tools/native-public-repo-shell-result.test.mjs +28 -0
- package/tools/native-runtime-identity.mjs +201 -0
- package/tools/native-slash-acceptance-env.py +38 -0
- package/tools/native-terminal-semantics.py +882 -0
- package/tools/owned-shell-observer/index.ts +16 -0
- package/tools/owned-shell-observer/package.json +1 -0
- package/tools/owned-visual-clear-env.py +48 -0
- package/tools/owned-visual-clear-model.py +21 -0
- package/tools/pinned-owned-runtime-inputs.mjs +46 -0
- package/tools/prepare-native-manual.mjs +122 -0
- package/tools/run-native-terminal-paired.sh +403 -0
- package/tools/runtime-token-env.mjs +8 -0
- package/tools/seed-native-switch-fixture.mjs +79 -0
- package/tools/test-native-controls.mjs +3 -1
- package/tools/test-native-daily-quests.mjs +65 -0
- package/tools/test-native-default-cli.mjs +106 -0
- package/tools/test-native-delivery-host.mjs +102 -20
- package/tools/test-native-evaluation.mjs +7 -3
- package/tools/test-native-glyph-pty.mjs +94 -0
- package/tools/test-native-host.mjs +91 -65
- package/tools/test-native-outcomes.mjs +3 -1
- package/tools/test-native-package.mjs +206 -38
- package/tools/test-native-performance.mjs +26 -0
- package/tools/test-native-product.mjs +90 -0
- package/tools/test-native-pty.mjs +34 -9
- package/tools/test-native-public-repo.mjs +224 -0
- package/tools/test-native-refresh-reentry.mjs +106 -0
- package/tools/test-native-report.mjs +27 -20
- package/tools/test-native-review.mjs +75 -0
- package/tools/test-native-runtime.mjs +120 -0
- package/tools/test-native-ship-models.mjs +176 -0
- package/tools/test-native-ship-walkthrough.mjs +96 -0
- package/tools/test-native-slash-commands.mjs +125 -0
- package/tools/test-native-slash-commands.py +242 -0
- package/tools/test-native-swe-host.mjs +224 -55
- package/tools/test-native-tasks.mjs +77 -0
- package/tools/test-native-terminal-performance.py +887 -0
- package/tools/test-native-terminal-readiness.sh +85 -0
- package/tools/test-native-terminal-semantics-installed.mjs +38 -0
- package/tools/test-native-visual-clear-installed.mjs +48 -0
- package/tools/test-owned-host-controls.mjs +238 -0
- package/tools/test-owned-opencode-runtime.mjs +35 -0
- package/tools/test-owned-visual-clear-env.py +120 -0
- package/tools/test-owned-visual-clear.py +373 -0
- package/tools/verify-draft-runtime-gate.mjs +138 -0
- package/tools/verify-owned-runtime-release.mjs +114 -0
- package/tools/verify-release-version.mjs +21 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Native Carthagent beta: upgrade and migration guide
|
|
2
|
+
|
|
3
|
+
**1.1.0-beta.1** uses the native console by default. `ctg native` is a compatibility
|
|
4
|
+
alias; `CTG_NATIVE` no longer selects a different console. Stable 1.0.7 remains
|
|
5
|
+
the legacy release. Select the beta explicitly through the beta channel or its
|
|
6
|
+
exact published version.
|
|
7
|
+
|
|
8
|
+
See the [beta.1 release notes](release-notes-beta.1.md) and
|
|
9
|
+
[launch-readiness report](launch-readiness-live-results.md) for current evidence
|
|
10
|
+
and beta limitations.
|
|
11
|
+
|
|
12
|
+
## Before you try it
|
|
13
|
+
|
|
14
|
+
- The native route uses a checksum-pinned CTG-owned runtime compatible with OpenCode **2.0.32**. It
|
|
15
|
+
does not use, install over, update, or borrow authentication from a regular
|
|
16
|
+
OpenCode installation. Selecting the beta release is explicit; no shell-wide routing toggle is needed.
|
|
17
|
+
- Native OpenCode settings, auth, database/sessions, state, and cache belong to
|
|
18
|
+
the CTG profile under `~/.carthagent/opencode/`. `CTG_OPENCODE_HOME` can
|
|
19
|
+
override that profile root. The old CLI's Carthagent data is separate too.
|
|
20
|
+
Project/worktree delivery reports and native task metadata live in their
|
|
21
|
+
respective workspaces; task state is recorded in `.harness/`.
|
|
22
|
+
- Existing Pi sessions are **read-only archives**, not native sessions. There
|
|
23
|
+
is no transcript continuation, conversion, or import. Keep the old
|
|
24
|
+
installation and source data until you have independently confirmed the
|
|
25
|
+
archive contains what you need.
|
|
26
|
+
- Read the exact release notes for installed-package acceptance and platform
|
|
27
|
+
limitations. Earlier migration findings remain in the
|
|
28
|
+
[migration ledger](opencode-migration.md) and
|
|
29
|
+
[terminal evidence](native-terminal-semantics.md); they are historical evidence,
|
|
30
|
+
not a claim that every command or platform has been verified by a live model.
|
|
31
|
+
|
|
32
|
+
## Try the native route from a checkout
|
|
33
|
+
|
|
34
|
+
The default resolver acquires only the platform archive pinned by the packaged
|
|
35
|
+
release manifest, validates source/patch/lock and archive/executable checksums,
|
|
36
|
+
and caches it in the private Carthagent profile. It never falls back to a system
|
|
37
|
+
or upstream binary after selecting the owned runtime. An explicit developer
|
|
38
|
+
artifact is a separate, validated staging path—not an end-user update mechanism.
|
|
39
|
+
|
|
40
|
+
After installing dependencies in a checkout of a published source tag:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
node bin/ctg.mjs --help
|
|
44
|
+
node bin/ctg.mjs
|
|
45
|
+
node bin/ctg.mjs "Investigate the failing tests"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The native service refreshes after a verified owned runtime or launcher update.
|
|
49
|
+
Sessions and credentials remain in the profile; an unauthenticated or foreign
|
|
50
|
+
process is never stopped just because its registration looks stale.
|
|
51
|
+
|
|
52
|
+
The native launcher preserves familiar commands and aliases: `tui`/`ui`/
|
|
53
|
+
`interactive`, `resume`/`sessions`, `continue`, `status`/`s`, `check`/`c`,
|
|
54
|
+
`hash`/`fingerprint`, `login`/`auth`, `account`/`cloud`, `serve`/`web`/`start`,
|
|
55
|
+
and `update`/`upgrade`. See [native CLI](native-cli.md) for implemented flags,
|
|
56
|
+
failure behavior, and unsupported options. In particular, do not assume an old
|
|
57
|
+
flag is enforced merely because its name is accepted: unsupported `--bash-cap`
|
|
58
|
+
and `--isolate` fail closed, and policy/budget flags require enforcement
|
|
59
|
+
capabilities advertised by the active plugin.
|
|
60
|
+
|
|
61
|
+
## Projects, tasks, worktrees, and sessions
|
|
62
|
+
|
|
63
|
+
The native UI is based on OpenCode's project and session model. A CTG task
|
|
64
|
+
creates an OpenCode worktree and a separate root session located in that
|
|
65
|
+
worktree; CTG stores the task/parent relationship in workspace metadata. It
|
|
66
|
+
does not create a nested OpenCode child session. Worktree separation provides
|
|
67
|
+
independent checkout directories, but do not infer that every host, credential,
|
|
68
|
+
or external process behavior is isolated by a worktree.
|
|
69
|
+
|
|
70
|
+
Resume and continue operate on native sessions associated with the current
|
|
71
|
+
workspace. A project workspace view may present known task, worktree, and
|
|
72
|
+
session records together. These do not turn legacy transcripts into sessions.
|
|
73
|
+
Normal project discovery, host UI behavior, and complete cross-platform
|
|
74
|
+
interaction remain acceptance items; consult the ledger rather than assuming a
|
|
75
|
+
preview feature is fully supported.
|
|
76
|
+
|
|
77
|
+
## Legacy archive (read-only)
|
|
78
|
+
|
|
79
|
+
The archive CLI supports list/search/read/export. Configure or retain the
|
|
80
|
+
legacy session archive at its existing location; the native adapter exposes it
|
|
81
|
+
for reading and does not mutate those transcripts:
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
node bin/ctg.mjs archive list
|
|
85
|
+
node bin/ctg.mjs archive search "query"
|
|
86
|
+
node bin/ctg.mjs archive read <archive-id>
|
|
87
|
+
node bin/ctg.mjs archive export <archive-id> --format jsonl
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Archive output is not an import format. Start a new native session and provide
|
|
91
|
+
any context you need yourself; no session identity or execution history is
|
|
92
|
+
carried forward.
|
|
93
|
+
|
|
94
|
+
## Headless commands and JSONL
|
|
95
|
+
|
|
96
|
+
`-p`/`--print` runs a headless task and prints assistant text. `--json` emits
|
|
97
|
+
JSONL lifecycle records for the selected native session, including tool starts,
|
|
98
|
+
tool results, completed assistant messages, and a terminal outcome. `ctg status
|
|
99
|
+
--json` is a separate versioned delivery status snapshot, not execution JSONL.
|
|
100
|
+
Headless invocations need a prompt; when stdout is not a TTY the CLI selects
|
|
101
|
+
headless mode automatically. A resume-picker request in headless mode becomes
|
|
102
|
+
continuation of the latest native session for that workspace.
|
|
103
|
+
|
|
104
|
+
```sh
|
|
105
|
+
node bin/ctg.mjs -p "Summarize this project"
|
|
106
|
+
node bin/ctg.mjs --json -p "Run the declared checks"
|
|
107
|
+
node bin/ctg.mjs status --json
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
JSONL consumers should use the terminal outcome and exit status, not the
|
|
111
|
+
presence of assistant text alone: successful completion requires the completed
|
|
112
|
+
assistant turn and a successful native terminal outcome. Failed, interrupted,
|
|
113
|
+
and unresolved turns are not success. `-p` text is not a live tool-event stream.
|
|
114
|
+
|
|
115
|
+
## Release installation and update
|
|
116
|
+
|
|
117
|
+
Only published releases are installable; a draft is not an update. From an
|
|
118
|
+
installation with channel support:
|
|
119
|
+
|
|
120
|
+
```sh
|
|
121
|
+
ctg update --channel beta --check
|
|
122
|
+
ctg update --channel beta
|
|
123
|
+
ctg
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The exact-version installation form is:
|
|
127
|
+
|
|
128
|
+
```sh
|
|
129
|
+
npm install -g carthagent@1.1.0-beta.1
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`ctg update --check` checks for
|
|
133
|
+
an available release. `lib/opencode/update.mjs` contains the shared,
|
|
134
|
+
release-validated update operation: for npm-installed Carthagent it installs
|
|
135
|
+
the validated exact release spec; for a source clone it requires a clean
|
|
136
|
+
working tree, fetches the selected origin tag into a private ref, resolves that
|
|
137
|
+
fetched tag to a commit, checks out the commit detached, then reinstalls
|
|
138
|
+
dependencies and the global package. It does not overwrite existing local tags
|
|
139
|
+
or proceed with dirty files. The native CLI's current `update` command path is
|
|
140
|
+
separate: it installs the validated release spec for npm installs and refuses
|
|
141
|
+
to check out into its active source tree, including a clean clone. Use the
|
|
142
|
+
non-forced manual procedure below for that source-tree path; do not assume
|
|
143
|
+
uncomposed CLI/UI wiring changes this behavior. Preserve and review local work
|
|
144
|
+
first:
|
|
145
|
+
|
|
146
|
+
```sh
|
|
147
|
+
git status --short
|
|
148
|
+
git diff # review and preserve any edits before proceeding
|
|
149
|
+
git fetch origin --tags
|
|
150
|
+
git checkout --detach v1.1.0-beta.1 # published release; no force option
|
|
151
|
+
npm ci
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Do not discard or overwrite local changes to make this procedure succeed. If
|
|
155
|
+
the checkout has work you need, commit it or preserve it outside the checkout
|
|
156
|
+
before changing revisions; resolve conflicts or recovery deliberately rather
|
|
157
|
+
than using a destructive reset. The updater is Carthagent's updater, not a
|
|
158
|
+
regular OpenCode updater. Beta.1 inherits the native-default CLI from the previews.
|
|
159
|
+
Use `ctg update --channel stable` to return to the legacy stable release; neither
|
|
160
|
+
channel switching nor service refresh deletes profiles or legacy transcripts.
|
|
161
|
+
Do not install a moving branch or guess an unpublished version.
|
|
162
|
+
|
|
163
|
+
## Acceptance status and help
|
|
164
|
+
|
|
165
|
+
The current acceptance contract and evidence are maintained in:
|
|
166
|
+
|
|
167
|
+
- [Preview.9 candidate notes and remaining release gates](release-notes-preview.9.md)
|
|
168
|
+
- [Historical migration delivery ledger](opencode-migration.md#delivery-ledger)
|
|
169
|
+
- [Native runtime acceptance matrix](native-compatibility.md)
|
|
170
|
+
- [Terminal probe and evidence caveats](native-terminal-semantics.md)
|
|
171
|
+
- [Historical native migration draft (not current routing/install guidance)](release-notes-native-draft.md)
|
|
172
|
+
|
|
173
|
+
These documents intentionally distinguish component/test results from complete
|
|
174
|
+
installed-product acceptance. A command's presence, successful unit test, or
|
|
175
|
+
documentation entry does not by itself mark an acceptance gate complete.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Final OpenCode source composition review checkpoint
|
|
2
|
+
|
|
3
|
+
This review checkpoint composes patches on clean upstream OpenCode `v2.0.32`
|
|
4
|
+
source `843a6c514e606b436a7fe713422ace0a93ad3d61`, in this order:
|
|
5
|
+
|
|
6
|
+
1. Session/runtime patch (pre-composition SHA-256
|
|
7
|
+
`36379e0bf4ec0f63929c12b5ac96dfc73df60b124cef9f4adeb36d86287bc92f`).
|
|
8
|
+
2. Approved natural `/help` patch (SHA-256
|
|
9
|
+
`c1ce7d983be8ecdd3481b16da103fb32d144b0ec01f894915a110b46acdc6fe5`).
|
|
10
|
+
3. Approved live-theme API patch (SHA-256
|
|
11
|
+
`0bcb1462688c00a09564e9874c3e01429baf92fe004bfc6400704fb24133c123`).
|
|
12
|
+
4. Approved glyph-v4 patch (SHA-256
|
|
13
|
+
`37d93c0dfd5c52bd4536136fb53618580a29d682644848433f3b2ee4726d98a4`).
|
|
14
|
+
|
|
15
|
+
The approved base combined source patch is
|
|
16
|
+
`docs/patches/opencode-v2.0.32-session-ui.patch`; its SHA-256 is
|
|
17
|
+
`81e86a4c139e02ebd077e1b635a62ea804ec60b6ae20100893cb6d9f73b06d62`. A
|
|
18
|
+
separate combined candidate is recorded at
|
|
19
|
+
`docs/patches/opencode-v2.0.32-session-ui-combined-v3.patch` with SHA-256
|
|
20
|
+
`75d6484112881481b178bde583f9ff4e5d36cbac2fdf19d000339795b9485ce2`; it adds
|
|
21
|
+
the approved spinner test-isolation and real-provider theme proof patches. The
|
|
22
|
+
candidate recipe and packaged runtime identity both pin this digest; the
|
|
23
|
+
historical base recipe/runtime identity remain recorded in Git, and the base
|
|
24
|
+
patch remains unchanged. Frozen
|
|
25
|
+
lockfile installation, TUI typecheck, and the exact combined glyph/keymap/theme/
|
|
26
|
+
provider run passed (19 tests / 188 assertions in one Bun process with
|
|
27
|
+
`--timeout 60000`). The workflow fixture passed all 6 tests with Node 26 after
|
|
28
|
+
updating its patch-path assertion. Independent review approved corrected head
|
|
29
|
+
`0e38142bff30ca2a8b2a66394e5055d541fce489`, including an isolated Windows-style
|
|
30
|
+
checkout-to-recipe handoff reaching Bun installation and dirty-input rejection.
|
|
31
|
+
These source checks do not establish final-artifact acceptance. The three
|
|
32
|
+
standalone review patches remain
|
|
33
|
+
separately published and unchanged. The base composition was
|
|
34
|
+
applied to a clean detached upstream checkout and its reverse-application check
|
|
35
|
+
and `git diff --check` pass. The glyph patch’s two `/help`-overlapping files
|
|
36
|
+
were integrated by applying `/help` first and glyph v4 afterward; the resulting
|
|
37
|
+
autocomplete/prompt imports and keymap test changes are present once in the
|
|
38
|
+
combined patch.
|
|
39
|
+
|
|
40
|
+
Source approvals and author test reports are recorded separately: glyph v4
|
|
41
|
+
source approval (11 tests / 146 assertions), `/help` keymap suite (5/5), and
|
|
42
|
+
live-theme focused tests/typecheck. These do not approve the combined patch and
|
|
43
|
+
do not substitute for an independent composition review. This is a source-review
|
|
44
|
+
checkpoint only: do not build until the exact combined patch is independently
|
|
45
|
+
approved. The previous v1 patch was built on Linux x64 before the Linux runner
|
|
46
|
+
marquee assertion was corrected; that binary is historical and is not an
|
|
47
|
+
artifact for this v2 digest. Final v2 binaries and cross-platform prebuilds,
|
|
48
|
+
theme PTY, glyph matrix, `/help`, and title restoration proofs remain outstanding.
|
|
49
|
+
|
|
50
|
+
The unrelated draft-release asset transport design is intentionally not
|
|
51
|
+
implemented by this composition. A separate review must decide whether a
|
|
52
|
+
repo-scoped, ephemeral CI credential may be used only for authenticated draft
|
|
53
|
+
asset retrieval through the production resolver, preserving the packaged
|
|
54
|
+
manifest/digests and default no-override selection. No credential values or
|
|
55
|
+
transport code were used here.
|
|
56
|
+
|
|
57
|
+
Reproducible workflow fixture coverage lives in
|
|
58
|
+
`tests/owned-runtime-publish-workflow.test.mjs`. It extracts the literal
|
|
59
|
+
validate, verify, and upload Bash blocks from this workflow YAML and executes
|
|
60
|
+
them with bounded temporary fixtures. It verifies review-branch prebuild SHA
|
|
61
|
+
binding and rejects publish validation from a non-default branch; the positive
|
|
62
|
+
publish path verifies five tiny USTAR archives and the packaged trust root,
|
|
63
|
+
then a fake `gh` captures exactly seven assets for byte comparison. Tampered
|
|
64
|
+
archive and stale annotated-tag cases both assert zero captured uploads. This is
|
|
65
|
+
automated mocked workflow coverage, not a real dispatch or release. Although
|
|
66
|
+
the fixture accepts a reviewed-branch prebuild SHA, GitHub only registers
|
|
67
|
+
`workflow_dispatch` for a workflow file present on the default branch. This
|
|
68
|
+
workflow was subsequently registered by reviewed bootstrap #197, merged as
|
|
69
|
+
`bd1292c8c4` after green CI. Parent dispatched real prebuild run `39089640210`
|
|
70
|
+
against exact source `70882269e25ebcb62c843f9265345342b9e6844d` for planned
|
|
71
|
+
version `1.1.0`. Its build results remain pending.
|
|
72
|
+
|
|
73
|
+
This focused TUI candidate verification is not the parent repository's full
|
|
74
|
+
quality run and does not include the separate native CLI test-browser isolation
|
|
75
|
+
change `d4983b57328a187e8be6bc0e2c6bd2dda7518920`; apply or merge that change in
|
|
76
|
+
its applicable parent integration lineage before running or claiming parent
|
|
77
|
+
full quality. It is not part of this upstream OpenCode patch.
|
|
78
|
+
|
|
79
|
+
The release workflow permits a non-publishing prebuild from a reviewed branch
|
|
80
|
+
to avoid requiring product merge before native candidate generation. It binds
|
|
81
|
+
the requested source SHA to that dispatch's exact workflow commit. The publish
|
|
82
|
+
phase remains default-branch-only and compares the candidate with the final
|
|
83
|
+
tagged package trust root; prebuild is not merge or release approval.
|
|
84
|
+
|
|
85
|
+
The pinned external release generator still reads the legacy patch pathname.
|
|
86
|
+
Both candidate-generation calls therefore copy the candidate patch bytes to
|
|
87
|
+
that pathname only inside the disposable CTG checkout used by the workflow;
|
|
88
|
+
the checked-in base patch remains unchanged. Fixture assertions cover both
|
|
89
|
+
adaptation points.
|