carthagent 1.0.7 → 1.1.0-preview.12
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 +80 -79
- package/bin/ctg.mjs +14 -732
- 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/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 +314 -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 +177 -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.patch +5137 -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.9.md +130 -0
- package/evaluate.mjs +28 -1
- package/lib/budget.mjs +1 -1
- package/lib/codegraph.mjs +1 -1
- package/lib/delivery.mjs +3 -2
- package/lib/environment.mjs +8 -0
- package/lib/guidance.mjs +1 -1
- package/lib/opencode/cli-runtime.mjs +1171 -0
- package/lib/opencode/cli.mjs +252 -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 +8 -4
- 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 +298 -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/tui/framing.mjs +1 -80
- 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 +197 -0
- package/plugins/carthagent/src/server/delivery.ts +217 -106
- 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 +58 -30
- 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 +39 -0
- package/plugins/carthagent/src/server/ship-rpc.ts +69 -0
- package/plugins/carthagent/src/server/voyages-rpc.ts +223 -0
- package/plugins/carthagent/src/testing.ts +5 -0
- package/plugins/carthagent/src/tui.tsx +492 -0
- package/plugins/carthagent/src/ui/client.ts +125 -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 +232 -0
- package/plugins/carthagent/src/ui/host-state.ts +42 -0
- package/plugins/carthagent/src/ui/native-navigation.ts +23 -0
- package/plugins/carthagent/src/ui/native-review.d.mts +31 -0
- package/plugins/carthagent/src/ui/native-review.mjs +154 -0
- package/plugins/carthagent/src/ui/resume-session.mjs +34 -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 +122 -0
- package/plugins/carthagent/src/ui/voyages-state.mjs +142 -0
- package/plugins/carthagent/src/ui/voyages.tsx +127 -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 +60 -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 +258 -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/daily-evidence.test.mjs +62 -0
- package/tests/delivery.test.mjs +22 -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 +53 -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 +426 -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-owned-runtime-env.test.mjs +140 -0
- package/tests/native-paired-guards.test.mjs +464 -0
- package/tests/native-provider-policy.test.mjs +31 -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 +267 -0
- package/tests/native-runtime-identity.test.mjs +214 -0
- package/tests/native-ship-parity.test.mjs +526 -0
- package/tests/native-ship-plan.test.mjs +75 -0
- package/tests/native-ship-rpc.test.mjs +71 -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 +395 -0
- package/tests/native-voyages-ui.test.mjs +277 -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-providers.test.mjs +245 -18
- package/tests/opencode-runtime.test.mjs +546 -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 +230 -0
- package/tests/runtime-github-transport.test.mjs +132 -0
- package/tests/runtime-token-env.test.mjs +23 -0
- package/tests/test_native_terminal_probe.py +76 -0
- package/tests/test_native_terminal_semantics.py +232 -0
- package/tests/update.test.mjs +36 -0
- 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 +43 -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 +876 -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 +100 -18
- package/tools/test-native-evaluation.mjs +7 -3
- package/tools/test-native-glyph-pty.mjs +94 -0
- package/tools/test-native-host.mjs +83 -61
- 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,73 @@
|
|
|
1
|
+
# Draft release notes: native OpenCode migration
|
|
2
|
+
|
|
3
|
+
> **UNRELEASED — draft only.** Planned version: **1.1.0**. No tag or release
|
|
4
|
+
> has been published.
|
|
5
|
+
> This document is not a release announcement and does not imply that the
|
|
6
|
+
> native default switch or full product acceptance is complete. The packaged
|
|
7
|
+
> five-platform runtime manifest is a reviewed candidate; publishing assets
|
|
8
|
+
> and passing release gates are still pending.
|
|
9
|
+
|
|
10
|
+
## Proposed highlights (subject to acceptance)
|
|
11
|
+
|
|
12
|
+
- Native OpenCode project, task, worktree, and session workflow with Carthagent
|
|
13
|
+
delivery status and workspace context.
|
|
14
|
+
- Carthagent-owned OpenCode runtime and profile, isolated from the user's normal
|
|
15
|
+
OpenCode configuration, service, credentials, data, and sessions.
|
|
16
|
+
- Headless execution with text output or selected-session JSONL lifecycle
|
|
17
|
+
events, plus workspace delivery status in JSON.
|
|
18
|
+
- Read-only access to legacy Pi transcripts through archive list, search, read,
|
|
19
|
+
and export commands. No transcript import or continuation is provided.
|
|
20
|
+
- Existing command names and aliases retained where supported by the native
|
|
21
|
+
CLI compatibility layer.
|
|
22
|
+
|
|
23
|
+
## Migration and compatibility notes
|
|
24
|
+
|
|
25
|
+
- In this candidate, native execution remains opt-in with `CTG_NATIVE=1`.
|
|
26
|
+
Without the variable, the existing CLI remains the default. Making native
|
|
27
|
+
execution the default is pending UI tests and the remaining migration and
|
|
28
|
+
release acceptance gates; do not set the variable persistently unless that
|
|
29
|
+
routing is intentional.
|
|
30
|
+
- The native runtime uses the package-owned OpenCode 2.0.32 executable and CTG's
|
|
31
|
+
isolated profile. It does not update or reuse regular OpenCode installations
|
|
32
|
+
or credentials.
|
|
33
|
+
- Legacy Pi session files are read-only archives; they cannot be resumed,
|
|
34
|
+
continued, or imported as native OpenCode sessions.
|
|
35
|
+
- Unsupported options fail closed. In the current adapter, `--bash-cap` and
|
|
36
|
+
`--isolate` are unsupported, and budget or policy options require advertised
|
|
37
|
+
enforcement capabilities.
|
|
38
|
+
- Acceptance is not complete. See the [migration ledger](opencode-migration.md),
|
|
39
|
+
[compatibility matrix](native-compatibility.md), and
|
|
40
|
+
[terminal evidence status](native-terminal-semantics.md#evidence-status-pr-162)
|
|
41
|
+
for unresolved gates. Do not describe this migration as generally available
|
|
42
|
+
until release ownership confirms those gates and the installed product.
|
|
43
|
+
|
|
44
|
+
## Install/update (for a future published release only)
|
|
45
|
+
|
|
46
|
+
After the planned release passes acceptance and is published, the
|
|
47
|
+
documented exact-tag npm installation form is:
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
npm install -g --install-links=true github:B-icy/Carthagent#vX.Y.Z
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Replace the placeholder only with the real published release tag. Version
|
|
54
|
+
`1.1.0` is planned, but no final tag has been created. This candidate packages
|
|
55
|
+
the reviewed immutable owned-runtime manifest for five platforms, pinned to
|
|
56
|
+
OpenCode source revision `843a6c514e606b436a7fe713422ace0a93ad3d61` and runtime
|
|
57
|
+
identity `0.0.0-ctg.2.0.32`. The assets still need to accompany a draft release
|
|
58
|
+
and pass final release verification and installed acceptance. The composed
|
|
59
|
+
preview resolves upstream `@opencode/cli@2.0.32` through Node's package resolver,
|
|
60
|
+
including npm-hoisted layouts; that preview dependency is distinct from CTG's
|
|
61
|
+
owned runtime identity. Performance, UI tests, native-default acceptance, and
|
|
62
|
+
full installed acceptance remain open in the
|
|
63
|
+
[migration ledger](opencode-migration.md#delivery-ledger).
|
|
64
|
+
The shared native update operation supports npm-installed packages and clean
|
|
65
|
+
source clones: for a clone it fetches the selected origin tag into a private ref
|
|
66
|
+
before checking out its resolved commit, and refuses dirty clones. Do not infer
|
|
67
|
+
that every native command surface is wired to this operation. `ctg update`
|
|
68
|
+
updates Carthagent, not a user's regular OpenCode installation, and does not
|
|
69
|
+
change the native opt-in default. See the
|
|
70
|
+
[upgrade guide](native-upgrade.md#release-installation-and-update) for the
|
|
71
|
+
current command-path distinction. Native migration acceptance remains open; do
|
|
72
|
+
not infer completion of unrelated CLI, UI, or transport follow-ups not yet
|
|
73
|
+
composed here.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# 1.1.0-preview.10 release candidate
|
|
2
|
+
|
|
3
|
+
> **NOT YET PUBLISHED — candidate guidance, not a release announcement.**
|
|
4
|
+
> Published preview.9 remains immutable. This candidate still needs its final
|
|
5
|
+
> tag, draft/assets, exact-tag installed default-resolver acceptance, public
|
|
6
|
+
> release, and anonymous public default-resolver acceptance. No stable release
|
|
7
|
+
> or stable control-plane update is part of this candidate.
|
|
8
|
+
|
|
9
|
+
## What changes
|
|
10
|
+
|
|
11
|
+
Native remains the default `ctg` interface; `ctg native` is a compatibility
|
|
12
|
+
alias. Ship retains approval, checks, review, repair, recovery and resume; Lite
|
|
13
|
+
remains direct execution. Stable 1.0.7 retains the legacy console, and legacy
|
|
14
|
+
Pi transcripts remain read-only archives. The owned native profile remains
|
|
15
|
+
separate from other coding-tool credentials and sessions.
|
|
16
|
+
|
|
17
|
+
**Native daily coding quests (PR #227)** are available through `/voyages` →
|
|
18
|
+
**Daily coding quests**, using normal Carthagent Ship device sign-in:
|
|
19
|
+
|
|
20
|
+
- Select a server assignment and individual evidence from an owned session's
|
|
21
|
+
exact active Ship report, or supply a clearly labeled manual claim. Nothing
|
|
22
|
+
is selected by default. Edit/redact sensitive text yourself; there is no
|
|
23
|
+
automatic secret-scrubbing guarantee or whole-project/transcript upload.
|
|
24
|
+
- Inspect the complete canonical outbound JSON. Editing invalidates that exact
|
|
25
|
+
preview. Submission requires fresh, explicit consent for this request and
|
|
26
|
+
disclosure of external **JEV** processing. Login or completing local delivery
|
|
27
|
+
is not consent; cancel does not send. Identity/connection/location invalidation
|
|
28
|
+
clears the draft/consent and returns the action selection to **Refresh**.
|
|
29
|
+
- The exact request and stable submission ID are durably journaled before send.
|
|
30
|
+
Recover an uncertain send by **GET/status first**; read-only refresh/poll never
|
|
31
|
+
replays. Any explicit replay uses the saved ID and exact body, not a new ID.
|
|
32
|
+
Journal failure fails closed; accepted IDs remain usable across restart.
|
|
33
|
+
- Acceptance is not completion. Local raw payloads are erased on known
|
|
34
|
+
acceptance; unknown-send payloads expire after up to 24 hours on journal
|
|
35
|
+
access, not a background timer. Explicit local erasure retains polling IDs
|
|
36
|
+
and cannot withdraw evidence already sent. Backend raw evidence is erased
|
|
37
|
+
on terminal processing (pending up to 24 hours; outages can delay cleanup);
|
|
38
|
+
metadata retention is 90 days. Immediate provider/backup deletion is not promised.
|
|
39
|
+
- Graded decisions assess submitted evidence, **not independent verification**.
|
|
40
|
+
Scores are not calibrated confidence. There are **no coins, XP, distance,
|
|
41
|
+
inventory or other rewards**; personal quests remain separate.
|
|
42
|
+
|
|
43
|
+
See [native daily quest guidance](native-daily-quests.md) for schema, privacy,
|
|
44
|
+
retention, consent and recovery details.
|
|
45
|
+
|
|
46
|
+
## Candidate provenance
|
|
47
|
+
|
|
48
|
+
| Input | Exact value |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| Package candidate | `1.1.0-preview.10` |
|
|
51
|
+
| Feature source head | `5e759c4c4d21b1df10ecdcd130ad59cd377bcc15` |
|
|
52
|
+
| Original prebuild source | `7a9d49fe7e2dcc8358a4c28e3539479df5be55a1` |
|
|
53
|
+
| Prebuild workflow run | `40950483282` |
|
|
54
|
+
| Full manifest SHA-256 | `2d4adee543f5dec37abf8a67c677cecfc5de294031a1c37d23fea43bc90fe757` |
|
|
55
|
+
| Upstream revision | `843a6c514e606b436a7fe713422ace0a93ad3d61` |
|
|
56
|
+
| CTG patch SHA-256 | `b4238d77827d7ccf8f87fb0326551eaa62268d9387cd89e29bd0cf12bd6dafaa` |
|
|
57
|
+
| Lock SHA-256 | `9d78379cd264584a495440a217b9d2ecab524c9a56f7f8b4b5bed3926daa330d` |
|
|
58
|
+
| Runtime / compatibility | `0.0.0-ctg.2.0.32` / `2.0.32` |
|
|
59
|
+
|
|
60
|
+
All five prebuilds succeeded: Linux x64/arm64, macOS x64/arm64 and Windows x64.
|
|
61
|
+
The original **13-file bundle** was independently verified through the
|
|
62
|
+
production acquirer, with byte-identical manifest regeneration. Runtime,
|
|
63
|
+
upstream, patch and lock identities are unchanged, but this manifest pins the
|
|
64
|
+
**fresh five-platform archive and executable hashes**, not preview.9 hashes.
|
|
65
|
+
Prebuild provenance is not final package identity or installed acceptance.
|
|
66
|
+
|
|
67
|
+
## Recorded evidence and limits
|
|
68
|
+
|
|
69
|
+
These are supplied source/development-runtime results, not tests rerun by this
|
|
70
|
+
version/docs preparation and not exact-candidate installed acceptance.
|
|
71
|
+
|
|
72
|
+
- **Source quality at `5e759c4`: 1,069 passed, 0 failed, 5 skipped.** The first
|
|
73
|
+
historical quality run had 1,068 passed, 1 failed, 5 skipped: a legacy
|
|
74
|
+
dashboard 401-versus-403 assertion of unknown cause. Isolated and serial runs
|
|
75
|
+
passed; that does not establish a causal fix. Feature-head normal
|
|
76
|
+
[PR CI40951839410](https://github.com/B-icy/Carthagent/actions/runs/40951839410)
|
|
77
|
+
and [push CI40951831992](https://github.com/B-icy/Carthagent/actions/runs/40951831992)
|
|
78
|
+
both passed all eight jobs. Release-candidate CI remains a separate gate.
|
|
79
|
+
- **Actual native daily flow:** one authorized provider attempt reached graded
|
|
80
|
+
`needs_evidence`, not quest completion or rewards. Raw-payload erasure and
|
|
81
|
+
read-only polling after an actual client restart passed. Genuine background
|
|
82
|
+
cancellation notice, reset to Refresh, and delayed Enter behavior passed.
|
|
83
|
+
Unknown network-send replay was not forced live; that coverage is offline only.
|
|
84
|
+
- **Actual native wallet flow:** fresh normal device approval; cancel made no
|
|
85
|
+
purchase and left 50 coins. One explicitly authorized 40-coin `bottoms:shorts`
|
|
86
|
+
purchase left 10 coins, owned items 9 → 10 and profile version v1 → v2.
|
|
87
|
+
Actual client restart preserved it; equipment was unchanged. This is not a
|
|
88
|
+
daily-quest reward or proof of live unknown-response purchase replay.
|
|
89
|
+
- **Website browser E2E blocked:** Chrome was missing and one install attempt
|
|
90
|
+
failed because Linux ARM64 was unavailable. Public Voyages HTTP 200 is not
|
|
91
|
+
signed-in browser proof.
|
|
92
|
+
- **Native-host CI caveat:** the initial `7a9d49f` PR macOS Node 24 service-stop
|
|
93
|
+
5,000 ms timeout is not causally fixed. New failure-only diagnostics leave
|
|
94
|
+
deadlines and assertions unchanged; review returned no findings (`[]`) and
|
|
95
|
+
Linux native-host passed. Both later feature-head CI runs passed, including
|
|
96
|
+
macOS Node 22/24; that is gate evidence, not a causal shutdown fix or full
|
|
97
|
+
cross-platform interactive UI proof.
|
|
98
|
+
|
|
99
|
+
## Trying it and remaining gates
|
|
100
|
+
|
|
101
|
+
Before publication, use only reviewed artifacts with the
|
|
102
|
+
[explicit manual-kit method](native-manual-testing.md); do not weaken hashes or
|
|
103
|
+
expect the public default resolver to find unpublished assets. No claim is made
|
|
104
|
+
that this exact candidate has passed installed-package acceptance.
|
|
105
|
+
|
|
106
|
+
Only **after publication** of the final tag and reviewed assets:
|
|
107
|
+
|
|
108
|
+
```sh
|
|
109
|
+
npm install -g --install-links=true github:B-icy/Carthagent#v1.1.0-preview.10
|
|
110
|
+
# Or select published experimental releases (possibly a later preview):
|
|
111
|
+
ctg update --channel experimental --check
|
|
112
|
+
ctg update --channel experimental
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Drafts are not updates. Experimental releases never advance the stable pointer.
|
|
116
|
+
Final package/manifest review, final CI, tag/draft/assets, exact-tag installed
|
|
117
|
+
acceptance with the normal resolver, publication and anonymous public installed
|
|
118
|
+
acceptance remain release gates. See the [upgrade guide](native-upgrade.md) for
|
|
119
|
+
profile preservation and stable-channel recovery. Historical
|
|
120
|
+
[preview.9 notes](release-notes-preview.9.md) are retained unchanged, not current
|
|
121
|
+
candidate status or evidence that immutable preview.9 gains these changes.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# 1.1.0-preview.11 experimental release
|
|
2
|
+
|
|
3
|
+
Experimental preview. Install it explicitly with the experimental channel;
|
|
4
|
+
stable 1.0.7 is unchanged and published preview.10 remains immutable.
|
|
5
|
+
|
|
6
|
+
## What changes
|
|
7
|
+
|
|
8
|
+
**Projects / Voyages left pane (PR #230).** On a wide enough terminal the left
|
|
9
|
+
rail has two modes, **Projects** (the existing session list) and **Voyages**.
|
|
10
|
+
|
|
11
|
+
- Switching modes keeps the current page. It does not create, interrupt, or
|
|
12
|
+
close a coding session, and it does not change the session or draft.
|
|
13
|
+
- The Voyages navigator shows read-only profile and daily assignment
|
|
14
|
+
summaries. Select an entry explicitly to open its detail page. Opening a
|
|
15
|
+
quest does not compose evidence or grant consent. **Return to coding** opens
|
|
16
|
+
the selected session, or Home when no session is selected.
|
|
17
|
+
- Each mode keeps its own selection and scroll position, and the chosen mode
|
|
18
|
+
is restored after a normal restart (without reopening a detail page).
|
|
19
|
+
- **Focus pane** (or the configured shortcut) moves keyboard focus into the
|
|
20
|
+
pane; `Escape` returns focus to the page. Clicking a page control while the
|
|
21
|
+
pane is focused keeps focus on that control.
|
|
22
|
+
- The compact rail uses `Q` (quests), `P` (profile), `E` (equipment),
|
|
23
|
+
`R` (refresh), `S` (sign in) and `B` (return to coding); numbered rows are
|
|
24
|
+
actual assignments. When the terminal is too narrow for the rail, use the
|
|
25
|
+
command palette, `/voyages`, or `/quests`.
|
|
26
|
+
- Badges and friends have no native views yet. The pane never invents links or
|
|
27
|
+
data the server did not return.
|
|
28
|
+
|
|
29
|
+
**Dialog resize fix.** Select dialogs no longer register one terminal-resize
|
|
30
|
+
listener per row, which produced `MaxListenersExceededWarning` in large lists.
|
|
31
|
+
|
|
32
|
+
Daily coding quests, Ship, Lite and the native default `ctg` interface behave
|
|
33
|
+
as in preview.10. Assessments still award no coins, XP, or other rewards.
|
|
34
|
+
|
|
35
|
+
## Provenance
|
|
36
|
+
|
|
37
|
+
| Input | Exact value |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| Package | `1.1.0-preview.11` |
|
|
40
|
+
| Prebuild source | `47fe2a6d52492f5f614a704605486ec6e8ed9f79` |
|
|
41
|
+
| Prebuild workflow run | [41145521256](https://github.com/B-icy/Carthagent/actions/runs/41145521256) |
|
|
42
|
+
| Full manifest SHA-256 | `6afe56eff1d2d08e798c7e329e817a980f7184a47bbb771c2a3e231eb3687862` |
|
|
43
|
+
| Upstream revision | `843a6c514e606b436a7fe713422ace0a93ad3d61` |
|
|
44
|
+
| CTG patch (combined-v4) SHA-256 | `1f2309bb3a31dfb8e8a0827a6a1144a1f76a005abff58f6f48857639ec02478a` |
|
|
45
|
+
| Lock SHA-256 | `9d78379cd264584a495440a217b9d2ecab524c9a56f7f8b4b5bed3926daa330d` |
|
|
46
|
+
| Runtime / compatibility | `0.0.0-ctg.2.0.32` / `2.0.32` |
|
|
47
|
+
|
|
48
|
+
All five native prebuilds (Linux x64/arm64, macOS x64/arm64, Windows x64)
|
|
49
|
+
passed the full runtime typecheck and the build recipe's test list in one run.
|
|
50
|
+
|
|
51
|
+
Two tests that are timing-sensitive on CI were hardened. Neither change touches
|
|
52
|
+
product code:
|
|
53
|
+
|
|
54
|
+
- `navigation-rail`: waits for the pane's status text to refresh on the next
|
|
55
|
+
render pass instead of reading it immediately after a click.
|
|
56
|
+
- `plugin-source` (real watchers): confirms the helper watch is live before
|
|
57
|
+
the atomic save. On the current `macos-15-arm64` runner image, a macOS file
|
|
58
|
+
watcher can miss a write made immediately after it starts.
|
|
59
|
+
|
|
60
|
+
## Trying it
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
ctg update --channel experimental --check
|
|
64
|
+
ctg update --channel experimental
|
|
65
|
+
ctg --version # 1.1.0-preview.11
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Or install the exact tag:
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
npm install -g --install-links=true github:B-icy/Carthagent#v1.1.0-preview.11
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
`ctg update --channel stable` returns to stable 1.0.7 without `--force`. See
|
|
75
|
+
the [upgrade guide](native-upgrade.md) for profile preservation. Historical
|
|
76
|
+
[preview.10 notes](release-notes-preview.10.md) are retained unchanged.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 1.1.0-preview.12 experimental release
|
|
2
|
+
|
|
3
|
+
Experimental preview. Install it explicitly with the experimental channel;
|
|
4
|
+
stable 1.0.7 is unchanged and published preview.11 remains immutable.
|
|
5
|
+
|
|
6
|
+
## What changes
|
|
7
|
+
|
|
8
|
+
**npm package keeps the `ctg` command.** Preview.11 declared its command as
|
|
9
|
+
`./bin/ctg.mjs`. npm 11 treats that path as invalid and removes it during
|
|
10
|
+
`npm publish`, so a registry copy of preview.11 would have installed without a
|
|
11
|
+
`ctg` command. Preview.11 was therefore published on GitHub only. Preview.12
|
|
12
|
+
declares `bin/ctg.mjs` and normalizes the repository URL, so `npm publish` makes
|
|
13
|
+
no corrections to the manifest.
|
|
14
|
+
|
|
15
|
+
**Release check.** `tools/verify-release-version.mjs` (run by the release
|
|
16
|
+
workflow before anything is uploaded) now runs `npm publish --dry-run` and
|
|
17
|
+
fails if npm would auto-correct or remove any field, if `bin.ctg` is not a
|
|
18
|
+
plain relative path, or if the packed package lacks an executable
|
|
19
|
+
`bin/ctg.mjs`.
|
|
20
|
+
|
|
21
|
+
Product behaviour, the Projects / Voyages left pane, the native runtime source,
|
|
22
|
+
and the CTG patch are identical to
|
|
23
|
+
[preview.11](release-notes-preview.11.md). The runtime is rebuilt only because
|
|
24
|
+
each runtime manifest is bound to its exact package version.
|
|
25
|
+
|
|
26
|
+
## Provenance
|
|
27
|
+
|
|
28
|
+
| Input | Exact value |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| Package | `1.1.0-preview.12` |
|
|
31
|
+
| Prebuild source | `5c2c8730e140435a5a4f003ff30089efec006453` |
|
|
32
|
+
| Prebuild workflow run | [41156564357](https://github.com/B-icy/Carthagent/actions/runs/41156564357) |
|
|
33
|
+
| Full manifest SHA-256 | `b29fb261d88d052593421a42d4100d515b6b48454ca687ebdeceef9b32743742` |
|
|
34
|
+
| Upstream revision | `843a6c514e606b436a7fe713422ace0a93ad3d61` |
|
|
35
|
+
| CTG patch (combined-v4) SHA-256 | `1f2309bb3a31dfb8e8a0827a6a1144a1f76a005abff58f6f48857639ec02478a` |
|
|
36
|
+
| Lock SHA-256 | `9d78379cd264584a495440a217b9d2ecab524c9a56f7f8b4b5bed3926daa330d` |
|
|
37
|
+
| Runtime / compatibility | `0.0.0-ctg.2.0.32` / `2.0.32` |
|
|
38
|
+
|
|
39
|
+
## Trying it
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
ctg update --channel experimental --check
|
|
43
|
+
ctg update --channel experimental
|
|
44
|
+
ctg --version # 1.1.0-preview.12
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Or install the exact version from npm or the exact tag:
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
npm install -g carthagent@1.1.0-preview.12
|
|
51
|
+
npm install -g --install-links=true github:B-icy/Carthagent#v1.1.0-preview.12
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`ctg update --channel stable` returns to stable 1.0.7 without `--force`. See
|
|
55
|
+
the [upgrade guide](native-upgrade.md) for profile preservation.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# 1.1.0-preview.9 release candidate
|
|
2
|
+
|
|
3
|
+
> **UNPUBLISHED — candidate guidance, not a release announcement.** No tag,
|
|
4
|
+
> draft creation, asset upload, or publication is part of candidate preparation.
|
|
5
|
+
> Published-channel updates cannot install this prebuild. Final-tag acceptance
|
|
6
|
+
> and release-owner approval remain required before publication.
|
|
7
|
+
|
|
8
|
+
## What this candidate contains
|
|
9
|
+
|
|
10
|
+
- **Native by default**, inherited from preview.8. `ctg native` remains a
|
|
11
|
+
compatibility alias; `CTG_NATIVE` no longer selects another console. Stable
|
|
12
|
+
1.0.7 remains the legacy release. The owned runtime and private CTG profile
|
|
13
|
+
remain separate from regular OpenCode installations and credentials. Legacy
|
|
14
|
+
Pi sessions remain read-only archives, not resumable native sessions.
|
|
15
|
+
- **Ship versus Lite:** Ship retains approval, checks, review, repair, recovery,
|
|
16
|
+
and resume delivery workflow; Lite is direct execution. This is not a claim of
|
|
17
|
+
complete behavioral parity across all interfaces or platforms.
|
|
18
|
+
- **Native Voyages (PR #225):** `/voyages` exposes profile customization, wallet,
|
|
19
|
+
equipment and shop. Normal `/login` browser device approval binds the CLI to
|
|
20
|
+
the approving user's existing web player, which remains authoritative. There
|
|
21
|
+
is no separate CLI wallet, cookie import, paid-model requirement, or coding
|
|
22
|
+
coin award. Older account-only credentials may need a new device sign-in.
|
|
23
|
+
- **Explicit mutations:** customization and equipment changes require
|
|
24
|
+
confirmation. A paid purchase requires a server quote with price and expiry,
|
|
25
|
+
followed by explicit confirmation. Cancel does not purchase. Ownership,
|
|
26
|
+
funds, eligibility and profile version are checked by the server; refresh on
|
|
27
|
+
conflicts rather than overwriting another client. Equip separately after
|
|
28
|
+
purchase. An uncertain purchase retains its pending request across restart:
|
|
29
|
+
recover using the same quote and request key, not a new purchase or deleted
|
|
30
|
+
profile state. Signed-out/unavailable data is not a saved balance.
|
|
31
|
+
- **Credential refresh identity and coordination fixes** preserve account
|
|
32
|
+
identity boundaries and coordinate refreshed credentials rather than treating
|
|
33
|
+
unrelated identity or stale state as a successful refresh.
|
|
34
|
+
- **PTY and Windows cleanup fixes** preserve full-duplex terminal input and
|
|
35
|
+
coherent paint snapshots, and verify fixture browser cleanup against captured
|
|
36
|
+
process identities. Passing source tests is not proof
|
|
37
|
+
of every physical terminal or operating-system UI interaction.
|
|
38
|
+
|
|
39
|
+
## Candidate provenance
|
|
40
|
+
|
|
41
|
+
| Input | Exact value |
|
|
42
|
+
| --- | --- |
|
|
43
|
+
| Package candidate | `1.1.0-preview.9` |
|
|
44
|
+
| Prebuild source | `c51c5ae11293e63b658df297abc732db88d9109a` |
|
|
45
|
+
| Prebuild workflow run | `40151970983` |
|
|
46
|
+
| Candidate manifest SHA-256 | `aa5de65b633219423d21b1cc645945028a2d5565714b71760cbcc18badc5f4e5` |
|
|
47
|
+
| Upstream revision | `843a6c514e606b436a7fe713422ace0a93ad3d61` |
|
|
48
|
+
| CTG patch SHA-256 | `b4238d77827d7ccf8f87fb0326551eaa62268d9387cd89e29bd0cf12bd6dafaa` |
|
|
49
|
+
| Lock SHA-256 | `9d78379cd264584a495440a217b9d2ecab524c9a56f7f8b4b5bed3926daa330d` |
|
|
50
|
+
| Detached runtime version | `0.0.0-ctg.2.0.32` (compatibility `2.0.32`) |
|
|
51
|
+
|
|
52
|
+
All five native builds (Linux x64/arm64, macOS x64/arm64, Windows x64) and
|
|
53
|
+
assembly succeeded. The **original 13-file prebuild bundle** was independently
|
|
54
|
+
verified through the production acquirer; manifest regeneration was
|
|
55
|
+
byte-identical. Upstream, patch, lock, and detached runtime identity are
|
|
56
|
+
unchanged from preview.8. The prebuild source above is not the final release
|
|
57
|
+
package commit: package/lock, complete generated manifest, and candidate docs
|
|
58
|
+
must be reviewed together before any final tag is selected.
|
|
59
|
+
|
|
60
|
+
Archive/provenance verification is not execution acceptance. The new Linux
|
|
61
|
+
ARM64 bytes passed isolated staged native-host and Ship-model probes, including
|
|
62
|
+
plugin/RPC contracts, device-flow start/cancel, model discovery, service stop,
|
|
63
|
+
and fixture cleanup. These use an explicit reviewed-artifact selector, not the
|
|
64
|
+
installed package's default resolver. Independent execution on the other four
|
|
65
|
+
targets and full final-tag installed acceptance remain pending. Earlier preview.8
|
|
66
|
+
source and artifact evidence remains historical and is not blanket acceptance
|
|
67
|
+
for preview.8 or preview.9.
|
|
68
|
+
|
|
69
|
+
## Recorded acceptance and its limits
|
|
70
|
+
|
|
71
|
+
The following supplied source/development-runtime results precede final-tag
|
|
72
|
+
release acceptance; they are not a claim that candidate-document edits reran CI.
|
|
73
|
+
|
|
74
|
+
| Scope | Recorded outcome |
|
|
75
|
+
| --- | --- |
|
|
76
|
+
| Final source quality, Linux | 934 tests: 929 passed, 5 skipped |
|
|
77
|
+
| Windows-only cases | Four of the Linux-skipped cases actually passed Windows CI |
|
|
78
|
+
| Python | 28 passed |
|
|
79
|
+
| Local ARM full required-owned/default-resolver gate | 28 probes, 0 failures, 0 skips |
|
|
80
|
+
| Exact source PR CI and main CI | All eight checks passed in each |
|
|
81
|
+
|
|
82
|
+
The local ARM result does not establish independent execution of the new
|
|
83
|
+
preview.9 prebuild bundle or its future final-tag public assets.
|
|
84
|
+
|
|
85
|
+
Live **actual TUI development-runtime** testing covered browser device approval,
|
|
86
|
+
name cancellation and save, owned Beanie equip, restart, web persistence,
|
|
87
|
+
expiry recovery, and revocation. The web player was authoritative. The user's
|
|
88
|
+
wallet contained **10 coins**, with no affordable paid quote: **no live paid
|
|
89
|
+
debit or paid-request replay was proven**. Do not turn pending-recovery test
|
|
90
|
+
coverage into a claim of a real paid purchase.
|
|
91
|
+
|
|
92
|
+
Actual **60x12** terminal navigation was functional, not model-based visual
|
|
93
|
+
approval. Physical clipboard behavior is not proven. Full cross-OS UI and
|
|
94
|
+
controlled paired performance remain unknown. There is no full behavior-parity,
|
|
95
|
+
lower-token/cost, or paid-model benchmark claim.
|
|
96
|
+
|
|
97
|
+
## Trying the candidate and remaining release gates
|
|
98
|
+
|
|
99
|
+
Before publication, use the matching prebuild archives and independently pinned
|
|
100
|
+
candidate manifest through the [explicit manual-kit artifact method](native-manual-testing.md).
|
|
101
|
+
Do not replace trust hashes to accept other bytes or expect the public default
|
|
102
|
+
resolver to find unpublished assets. Provider-free fixtures are scripted, not
|
|
103
|
+
model-quality evidence; live provider use requires deliberate credential and
|
|
104
|
+
spending authorization.
|
|
105
|
+
|
|
106
|
+
Only **after** `v1.1.0-preview.9` and its reviewed runtime assets are published:
|
|
107
|
+
|
|
108
|
+
```sh
|
|
109
|
+
npm install -g --install-links=true github:B-icy/Carthagent#v1.1.0-preview.9
|
|
110
|
+
# Or, from an installation supporting channels:
|
|
111
|
+
ctg update --channel experimental --check
|
|
112
|
+
ctg update --channel experimental
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Experimental selection follows published semantic versions and may select a
|
|
116
|
+
later release; use the exact tag when reproducing preview.9. Drafts are never
|
|
117
|
+
updates, and prereleases do not advance the stable control-plane pointer.
|
|
118
|
+
See the [upgrade guide](native-upgrade.md) for non-destructive source checkout,
|
|
119
|
+
profile preservation, and stable-channel recovery.
|
|
120
|
+
|
|
121
|
+
Still pending: independently execute the other four platform outputs; review the final
|
|
122
|
+
package and manifest; obtain separate approval for the tag/draft/upload steps;
|
|
123
|
+
run full final-tag required-owned installed acceptance against the draft using
|
|
124
|
+
the normal resolver; obtain publication approval; then prove anonymous public
|
|
125
|
+
default-resolver installed acceptance. No backend edits or publication actions
|
|
126
|
+
are included in this version/pins/documentation candidate update.
|
|
127
|
+
|
|
128
|
+
The [older native migration draft](release-notes-native-draft.md) is preserved
|
|
129
|
+
unchanged as historical planning material, including its old opt-in routing and
|
|
130
|
+
unreleased-version assumptions. It is not current candidate installation guidance.
|
package/evaluate.mjs
CHANGED
|
@@ -23,7 +23,33 @@ const { values: args } = parseArgs({ options: {
|
|
|
23
23
|
timeout: { type: 'string', default: '600' }, 'max-turns': { type: 'string', default: '100' }, 'max-cost': { type: 'string', default: '3' },
|
|
24
24
|
python: { type: 'string' }, 'seed-from': { type: 'string' }, 'allow-live': { type: 'boolean', default: false },
|
|
25
25
|
'dry-run': { type: 'boolean', default: false },
|
|
26
|
+
help: { type: 'boolean', short: 'h', default: false },
|
|
26
27
|
} });
|
|
28
|
+
if (args.help) {
|
|
29
|
+
console.log(`Usage: ctg eval [options]
|
|
30
|
+
|
|
31
|
+
Opt-in live A/B evaluation of baseline vs custom configurations against a
|
|
32
|
+
scenario manifest under scenarios/<name>/. Live calls spend API credit and
|
|
33
|
+
generated code runs with your permissions, so a run must be explicit.
|
|
34
|
+
|
|
35
|
+
Options:
|
|
36
|
+
--mode baseline|custom|both What to evaluate (default both)
|
|
37
|
+
--task <name> Scenario short name (default cli)
|
|
38
|
+
--scenario <name> Scenario directory (overrides --task)
|
|
39
|
+
--model <id> Model id
|
|
40
|
+
--provider <name> Provider name; needs <PROVIDER>_API_KEY
|
|
41
|
+
--thinking <level> Thinking level (default medium)
|
|
42
|
+
--timeout <seconds> Per-run timeout, max 3600 (default 600)
|
|
43
|
+
--max-turns <n> Turn budget, max 1000 (default 100)
|
|
44
|
+
--max-cost <usd> Cost budget (default 3)
|
|
45
|
+
--python <path> Python executable for scenarios that need it
|
|
46
|
+
--seed-from <dir> Continue from a previous candidate directory
|
|
47
|
+
--allow-live Confirm live provider calls
|
|
48
|
+
--dry-run Assemble and preview without calling a provider
|
|
49
|
+
--help, -h Show this help
|
|
50
|
+
`);
|
|
51
|
+
process.exit(0);
|
|
52
|
+
}
|
|
27
53
|
if (!args['allow-live'] && !args['dry-run']) throw Error('Live calls spend API credit and generated code runs with your permissions. Use --allow-live explicitly (or --dry-run to preview the assembled run without calling a provider).');
|
|
28
54
|
if (!['baseline', 'custom', 'both'].includes(args.mode)) throw Error('Use --mode baseline|custom|both');
|
|
29
55
|
for (const key of ['timeout', 'max-turns', 'max-cost']) if (!(Number(args[key]) > 0 && Number.isFinite(Number(args[key])))) throw Error(`Invalid ${key}`);
|
|
@@ -197,7 +223,8 @@ for (const mode of args.mode === 'both' ? ['baseline', 'custom'] : [args.mode])
|
|
|
197
223
|
cwd,
|
|
198
224
|
evidenceSchema: 2,
|
|
199
225
|
runtime: NATIVE_EVALUATION_RUNTIME,
|
|
200
|
-
|
|
226
|
+
compatibilityVersion: result.compatibilityVersion,
|
|
227
|
+
runtimeVersion: result.runtimeVersion,
|
|
201
228
|
exitCode: result.exitCode,
|
|
202
229
|
timedOut: result.timedOut,
|
|
203
230
|
budgetReason: result.budgetReason,
|
package/lib/budget.mjs
CHANGED
|
@@ -22,7 +22,7 @@ export function budgetReason(budget, action, now = Date.now()) {
|
|
|
22
22
|
|
|
23
23
|
export function validateBudgetOptions(opts, { allowWithoutDelivery = false } = {}) {
|
|
24
24
|
const keys = ['maxTools', 'maxSeconds', 'maxRepairs'];
|
|
25
|
-
|
|
25
|
+
if (!allowWithoutDelivery && opts.delivery === false && keys.some(key => opts[key] !== undefined)) {
|
|
26
26
|
throw Error('Budget options require the delivery extension');
|
|
27
27
|
}
|
|
28
28
|
budgetLimits(flag => opts[{ 'delivery-max-tools': 'maxTools', 'delivery-max-seconds': 'maxSeconds', 'delivery-max-repairs': 'maxRepairs' }[flag]]);
|
package/lib/codegraph.mjs
CHANGED
|
@@ -153,7 +153,7 @@ const parsers = new Map(); // lang -> dedicated parser (setLanguage once; concur
|
|
|
153
153
|
async function parserFor(lang) {
|
|
154
154
|
if (!runtimePromise) {
|
|
155
155
|
runtimePromise = (async () => {
|
|
156
|
-
const Parser = require_('web-tree-sitter');
|
|
156
|
+
const Parser = require_('web-tree-sitter-legacy');
|
|
157
157
|
await Parser.init();
|
|
158
158
|
const wasmDir = require_.resolve('tree-sitter-wasms/package.json').replace(/package\.json$/, 'out');
|
|
159
159
|
const languages = new Map();
|
package/lib/delivery.mjs
CHANGED
|
@@ -4,6 +4,7 @@ import { createHash, randomUUID } from 'node:crypto';
|
|
|
4
4
|
import { existsSync, lstatSync, readdirSync, readFileSync, mkdirSync, writeFileSync, renameSync, openSync, writeSync, closeSync } from 'node:fs';
|
|
5
5
|
import { resolve, relative, isAbsolute, join, dirname, basename } from 'node:path';
|
|
6
6
|
import { spawn } from 'node:child_process';
|
|
7
|
+
import { withoutRuntimeGithubToken } from './environment.mjs';
|
|
7
8
|
|
|
8
9
|
// Generic dependency/cache/output directories excluded from the source fingerprint.
|
|
9
10
|
// Scenarios or projects can add more via the manifest; these are the common defaults.
|
|
@@ -425,7 +426,7 @@ export function atomicJson(path, data) {
|
|
|
425
426
|
export function killTree(child) {
|
|
426
427
|
if (!child.pid) return;
|
|
427
428
|
if (process.platform === 'win32') {
|
|
428
|
-
const killer = spawn('taskkill.exe', ['/pid', String(child.pid), '/t', '/f'], { windowsHide: true, stdio: 'ignore' });
|
|
429
|
+
const killer = spawn('taskkill.exe', ['/pid', String(child.pid), '/t', '/f'], { windowsHide: true, stdio: 'ignore', env: withoutRuntimeGithubToken() });
|
|
429
430
|
killer.on('error', () => child.kill());
|
|
430
431
|
} else {
|
|
431
432
|
try { process.kill(-child.pid, 'SIGKILL'); } catch { child.kill('SIGKILL'); }
|
|
@@ -443,7 +444,7 @@ export async function runCommand(argv, { cwd, timeoutSeconds = 60, signal, logPa
|
|
|
443
444
|
const started = Date.now();
|
|
444
445
|
return new Promise(resolveResult => {
|
|
445
446
|
let tail = '', written = 0, timedOut = false, cancelled = false, outputLimit = false;
|
|
446
|
-
const child = spawn(argv[0], argv.slice(1), { cwd, shell: false, windowsHide: true, detached: process.platform !== 'win32', stdio: ['ignore', 'pipe', 'pipe'] });
|
|
447
|
+
const child = spawn(argv[0], argv.slice(1), { cwd, env: withoutRuntimeGithubToken(), shell: false, windowsHide: true, detached: process.platform !== 'win32', stdio: ['ignore', 'pipe', 'pipe'] });
|
|
447
448
|
const stop = () => killTree(child);
|
|
448
449
|
const abort = () => { cancelled = true; stop(); };
|
|
449
450
|
const timer = setTimeout(() => { timedOut = true; stop(); }, timeoutSeconds * 1000);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Return a copy of an environment without the optional runtime transport token. */
|
|
2
|
+
export function withoutRuntimeGithubToken(env = process.env) {
|
|
3
|
+
const clean = { ...env };
|
|
4
|
+
for (const key of Object.keys(clean)) {
|
|
5
|
+
if (key.toUpperCase() === 'CTG_RUNTIME_GITHUB_TOKEN') delete clean[key];
|
|
6
|
+
}
|
|
7
|
+
return clean;
|
|
8
|
+
}
|
package/lib/guidance.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
2
2
|
import { dirname, join, resolve } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { unframe } from '
|
|
4
|
+
import { unframe } from '../plugins/carthagent/src/server/framing.mjs';
|
|
5
5
|
|
|
6
6
|
const root = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
7
7
|
export const DEFAULT_PROFILE_DIR = join(root, 'guidance', 'profiles');
|