Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
ce5f52b
πŸ“ Define interactive terminal grid architecture (#717)
taras Sep 2, 2026
3a87e87
✨ Describe terminal grids as executable document structure (#729)
taras Sep 2, 2026
cf6c7e6
πŸ“ Shorten the terminal-grid component descriptions (#729)
taras Sep 2, 2026
feb47d3
✨ Add the terminal provider boundary and pane authority (#730)
taras Sep 2, 2026
4ba3f06
✨ Run a terminal grid's panes concurrently through the provider (#730)
taras Sep 2, 2026
df61e96
✨ Run a document's terminal grid panes through the provider (#730)
taras Sep 2, 2026
8ab4952
♻️ Drop an unused parameter from the grid's pane work (#730)
taras Sep 2, 2026
c0f7e52
✨ Give terminal grids an authority boundary and durable pane children…
taras Sep 2, 2026
5ea1249
πŸ› Repair durableSpawn, and put the grid on it (#730)
taras Sep 2, 2026
64ee684
πŸ“ Decide the cancelled-child contract and TG17's replay boundary (#730)
taras Sep 2, 2026
b15d1e4
✨ Implement DEC-040, and complete TG15 and TG17 (#730)
taras Sep 2, 2026
6dde639
πŸ› Make the replay evidence deterministic, and pin DEC-040's boundarie…
taras Sep 2, 2026
0418d9c
♻️ Coordinate the DEC-040 rows by signal, not by duration (#730)
taras Sep 2, 2026
bb5f14b
πŸ› Observe every disposal surface, and make reader close cooperative (…
taras Sep 2, 2026
36206d5
πŸ“ Define reader-close cancellation commit boundary (#730)
taras Sep 2, 2026
6508ec2
✨ Implement the reader-close cancellation commit boundary (#730)
taras Sep 2, 2026
9ccfd29
♻️ Defer the grid owner's cancellation at the live close boundary (#730)
taras Sep 2, 2026
682402b
βœ… Count what TG19 proves: resources, records and the lease (#730)
taras Sep 2, 2026
4aade57
✨ Launch native Agent sessions in independent terminal panes (#731)
taras Sep 3, 2026
152135b
βœ… Complete #731's controlled integration evidence (#731)
taras Sep 3, 2026
ed64b57
♻️ Build the interrupted run's outcome with Err (#731)
taras Sep 3, 2026
d5dee3f
πŸ› Acknowledge session quiescence from the launch's own cleanup (#731)
taras Sep 3, 2026
27974eb
✨ Give the host a way to prove a terminal pane is free (#732)
taras Sep 3, 2026
d1a53d7
✨ Lay a tmux window out in the authored order (#732)
taras Sep 3, 2026
871a0e8
✨ Give a terminal pane a worker and a private channel (#732)
taras Sep 3, 2026
1420dd8
✨ Build the hidden tmux composite for a terminal grid (#732)
taras Sep 3, 2026
13a5458
πŸ› Narrow the visible client, and make teardown prove itself (#732)
taras Sep 3, 2026
091dceb
πŸ› Refuse when the visible client will not stop (#732)
taras Sep 3, 2026
8acedf1
✨ Install the tmux grid provider on the foreground hosts (#732)
taras Sep 3, 2026
d737899
πŸ“ Route pane-native launches through terminal composites (#732)
taras Sep 3, 2026
46567a7
✨ Route a pane's native launch through its own composite (#732)
taras Sep 3, 2026
935474b
✨ Complete the tmux terminal-grid provider (#732)
taras Sep 3, 2026
81b51c3
πŸ› Finish fail-closed observation, teardown, listeners and host eviden…
taras Sep 3, 2026
f5d45e2
πŸ› Finish listener ownership and freeze the combined teardown (#732)
taras Sep 3, 2026
ad4b95f
πŸ› Freeze the foreground-host boundary, and repair what it exposed (#732)
taras Sep 3, 2026
374fc4c
πŸ› Freeze the combined grid teardown, and finish close-request failure…
taras Sep 3, 2026
d725f54
πŸ› Keep the tmux grid suite off the runtimes that register no worker (…
taras Sep 3, 2026
38cdf40
πŸ“ Define terminal package boundary (#717)
taras Sep 4, 2026
5aad719
πŸ“ Remove unshipped terminal compatibility paths (#717)
taras Sep 4, 2026
5d308a5
♻️ Extract the terminal domain and its tmux adapter into packages (#717)
taras Sep 4, 2026
8d6de02
♻️ Split the terminal facets, narrow the tmux root, complete the lock…
taras Sep 5, 2026
8a30171
πŸ› Declare the pane wire format so the adapter can be published (#717)
taras Sep 5, 2026
25aa4fd
πŸ› Keep the hidden control protocol off the reader's terminal (#717)
taras Sep 5, 2026
83be4b2
πŸ› Suppress internal tmux stdio in the scope that owns each child (#717)
taras Sep 5, 2026
cfe2609
πŸ› Name the fixture entrypoints so the test runner does not load them …
taras Sep 5, 2026
1a5400d
πŸ› Keep an installer's linked copies out of the boundary walk (#717)
taras Sep 5, 2026
a73b2d6
πŸ› Give a pane's launched child the terminal it is drawing on (#717)
taras Sep 5, 2026
81c8a4d
πŸ›οΈ Scope native capability advertisement to proved builds
taras Sep 6, 2026
2672935
πŸ”’ Admit a native capability per proved build, not per adapter name
taras Sep 6, 2026
0e171c5
πŸ”’ Prove a launch's own teardown before releasing its session
taras Sep 6, 2026
0876896
πŸ›οΈ Admit native capabilities by observed protocol shape
taras Sep 6, 2026
cef72fd
πŸ›οΈ Admit a native capability by protocol and profile, not by release
taras Sep 6, 2026
bb275f8
πŸ”’ Admit a Claude operation by the value its option takes
taras Sep 6, 2026
3f614b4
πŸ”’ Recognize what a Claude help entry states, not what it mentions
taras Sep 6, 2026
2e27feb
πŸ—οΈ Continue client-native sessions across compatible releases
taras Sep 6, 2026
d74e090
πŸ”“ Continue a client-native session across compatible releases
taras Sep 6, 2026
d1be015
πŸ”’ Pin a V2 route's native protocol to its route contract (#717)
taras Sep 6, 2026
8a736ab
πŸ”’ Settle a client-native route's protocol before the race (#717)
taras Sep 6, 2026
6049184
πŸ—οΈ Compose Codex native launch with terminal grids
taras Sep 6, 2026
2ba2da8
πŸ› Align the extracted terminal package's @effectionx/node pin (#717)
taras Sep 7, 2026
1cc1dad
πŸ› Reconcile the terminal stack with main's renamed surfaces (#717)
taras Sep 7, 2026
44826a9
πŸ› Bind the terminal stack's event listeners to their owners (#717)
taras Sep 7, 2026
c7b2fbb
feat: certify Codex native sessions on the terminal stack (#755)
taras Sep 7, 2026
3347df7
πŸ› Confirm Codex native identity at live ACP reconnect (#755)
taras Sep 7, 2026
fffc286
πŸ› Confirm Codex identity before returning an eager Session (#755)
taras Sep 7, 2026
105e8f9
πŸ› Keep mixed-grid evidence portable to the Node target (#755)
taras Sep 7, 2026
56c40df
πŸ› Stage terminal in the JSR consumer dependency closure (#755)
taras Sep 7, 2026
25d1597
πŸ› Keep terminal workers and package tests portable (#755)
taras Sep 7, 2026
97fda6a
Fix Node terminal grid journey worker startup (#755)
taras Sep 7, 2026
f94f501
πŸ§ͺ Prove black-box terminal REPL messaging (#774)
taras Sep 7, 2026
534147a
πŸ› Fold provider state into REPL convergence and harden the POC (#774)
taras Sep 7, 2026
0105635
πŸ› Fold provider growth into the guard and harden the REPL POC (#774)
taras Sep 7, 2026
11720a1
πŸ”’ Close out the terminal REPL POC as VIEW_ONLY (#774)
taras Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 19 additions & 5 deletions .github/workflows/publish-packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
- name: Validate the manifests declare this version
run: |
VERSION="${{ steps.resolve.outputs.value }}"
for f in packages/durable-streams/deno.json packages/runtime/deno.json packages/core/deno.json packages/acp/deno.json packages/testing/deno.json packages/test-agent/deno.json packages/web/deno.json packages/workflow/deno.json packages/cli/deno.json packages/code-review-agent/deno.json; do
for f in packages/durable-streams/deno.json packages/runtime/deno.json packages/terminal/deno.json packages/core/deno.json packages/acp/deno.json packages/terminal-tmux/deno.json packages/testing/deno.json packages/test-agent/deno.json packages/web/deno.json packages/workflow/deno.json packages/cli/deno.json packages/code-review-agent/deno.json; do
declared="$(jq -r .version "$f")"
if [ "$declared" != "$VERSION" ]; then
echo "::error::$f declares $declared, not $VERSION β€” the tag does not match the manifests"
Expand Down Expand Up @@ -75,20 +75,34 @@ jobs:
package: packages/runtime
version: ${{ needs.version.outputs.value }}

terminal:
needs: [version, durable-streams]
uses: ./.github/workflows/publish-one.yml
with:
package: packages/terminal
version: ${{ needs.version.outputs.value }}

core:
needs: [version, durable-streams, runtime]
needs: [version, durable-streams, runtime, terminal]
uses: ./.github/workflows/publish-one.yml
with:
package: packages/core
version: ${{ needs.version.outputs.value }}

acp:
needs: [version, core, runtime]
needs: [version, core, runtime, terminal]
uses: ./.github/workflows/publish-one.yml
with:
package: packages/acp
version: ${{ needs.version.outputs.value }}

terminal-tmux:
needs: [version, terminal]
uses: ./.github/workflows/publish-one.yml
with:
package: packages/terminal-tmux
version: ${{ needs.version.outputs.value }}

testing:
needs: [version, core, durable-streams, runtime]
uses: ./.github/workflows/publish-one.yml
Expand All @@ -97,7 +111,7 @@ jobs:
version: ${{ needs.version.outputs.value }}

test-agent:
needs: [version, acp, core, durable-streams, runtime, testing]
needs: [version, acp, core, durable-streams, runtime, terminal, testing]
uses: ./.github/workflows/publish-one.yml
with:
package: packages/test-agent
Expand All @@ -118,7 +132,7 @@ jobs:
version: ${{ needs.version.outputs.value }}

cli:
needs: [version, acp, core, durable-streams, runtime, test-agent, testing, web, workflow]
needs: [version, acp, core, durable-streams, runtime, terminal, terminal-tmux, test-agent, testing, web, workflow]
uses: ./.github/workflows/publish-one.yml
with:
package: packages/cli
Expand Down
530 changes: 522 additions & 8 deletions architecture.md

Large diffs are not rendered by default.

46 changes: 45 additions & 1 deletion bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions deno.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
"@executablemd/core": "workspace:*",
"@executablemd/durable-streams": "workspace:*",
"@executablemd/runtime": "workspace:*",
"@executablemd/terminal": "workspace:*",
"@executablemd/terminal-tmux": "workspace:*",
"@executablemd/test-agent": "workspace:*",
"@executablemd/test-support": "workspace:*",
"@executablemd/testing": "workspace:*",
Expand Down
11 changes: 5 additions & 6 deletions packages/acp/THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,14 @@ license.
## acpx

The ACP runtime under `vendor/acpx/generated` is npm `acpx@0.12.0`, carried in
source with one local patch. `vendor/acpx/PROVENANCE.md` states the patch, the
source with local patches. `vendor/acpx/PROVENANCE.md` states each patch, the
upstream release commit it is taken from, and why it exists. dnt inlines this
closure into the npm artifact, so the notice belongs with it.

The snapshot is carried by issue #561 and removed by issue #566,
<https://github.com/taras/executable.md/issues/566>, once a released upstream
package set provides the same scoped, non-retaining transient agent-environment
input the patch supplies and passes that issue's stated removal gate. Until then
the patch is maintained here rather than upstreamed piecemeal.
The patches supply a transient agent environment (#561), completing-turn
metadata (#622), backend-accepted materialization (#648), and canonical native
identity confirmation at reconnect (#755). Their independent upstream removal
gates are recorded in the provenance; removing one does not remove the others.

- Project: <https://github.com/openclaw/acpx>
- Copyright (c) 2025 OpenClaw Team
Expand Down
30 changes: 27 additions & 3 deletions packages/acp/mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,46 @@ export { DEFAULT_AGENT_NAME } from "./src/acpx-runtime.ts";

/**
* Native session launch: the adapters whose resume command shape this package
* knows, and the two separate sets it is willing to use them for β€” handing a
* session to a native UI, and attaching ACP to one a native process made.
* knows, and the separate capabilities each host may admit.
*/
export {
ADVERTISED_CLIENT_NATIVE_ATTACHMENT,
ADVERTISED_NATIVE_LAUNCH,
ADVERTISED_PROVIDER_NATIVE_CONTINUATION,
knownNativeAdapters,
nativeAdapterFor,
nativeCapabilityPolicy,
} from "./src/native-launch.ts";
export { allocatesIdentity } from "./src/native-launch.ts";
export { allocatesIdentity, bindsBuild } from "./src/native-launch.ts";
export type {
ClientAllocatedAdapter,
BoundProviderReturnedAdapter,
BuildBoundAdapter,
MaterializationContract,
NativeAdapter,
NativeBinding,
NativeCapabilityProbe,
ProbedNativeCapabilities,
ProviderReturnedAdapter,
} from "./src/native-launch.ts";

/**
* Which protocol shapes and machines a native capability is admitted on.
*
* Public because the host is what states them: it supplies its own OS and
* architecture beside the coordinator and the observer, and shared provider
* code must not detect either for itself.
*/
export { admitsNativeCapability } from "./src/native-capability.ts";
export type {
NativeCapability,
NativeCapabilityAdmission,
NativeCapabilityHost,
NativeCapabilityPolicy,
ObservedNativeCapability,
ProvedNativeCapability,
} from "./src/native-capability.ts";

/**
* ACPX's own runtime types.
*
Expand Down Expand Up @@ -109,4 +132,5 @@ export type {
AgentSessionRouteStore,
AgentSessionRouteV1,
AgentSessionRouteV2,
AgentSessionRouteV3,
} from "./src/session-route.ts";
1 change: 1 addition & 0 deletions packages/acp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"@agentclientprotocol/sdk": "1.3.0",
"@executablemd/core": "workspace:*",
"@executablemd/runtime": "workspace:*",
"@executablemd/terminal": "workspace:*",
"acpx": "0.12.0",
"effection": "4.1.0"
}
Expand Down
Loading
Loading