Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
6f088a2
✨ Add the terminal provider boundary and pane authority (#730)
taras Sep 2, 2026
259520e
✨ Run a terminal grid's panes concurrently through the provider (#730)
taras Sep 2, 2026
9bfbf18
✨ Run a document's terminal grid panes through the provider (#730)
taras Sep 2, 2026
75bdb27
♻️ Drop an unused parameter from the grid's pane work (#730)
taras Sep 2, 2026
08c275f
✨ Give terminal grids an authority boundary and durable pane children…
taras Sep 2, 2026
14ae876
🐛 Repair durableSpawn, and put the grid on it (#730)
taras Sep 2, 2026
271c627
📝 Decide the cancelled-child contract and TG17's replay boundary (#730)
taras Sep 2, 2026
de092e7
✨ Implement DEC-040, and complete TG15 and TG17 (#730)
taras Sep 2, 2026
871c9bd
🐛 Make the replay evidence deterministic, and pin DEC-040's boundarie…
taras Sep 2, 2026
ce6a37a
♻️ Coordinate the DEC-040 rows by signal, not by duration (#730)
taras Sep 2, 2026
64292a4
🐛 Observe every disposal surface, and make reader close cooperative (…
taras Sep 2, 2026
4cb91ed
📝 Define reader-close cancellation commit boundary (#730)
taras Sep 2, 2026
4f22ff4
✨ Implement the reader-close cancellation commit boundary (#730)
taras Sep 2, 2026
824d2f0
♻️ Defer the grid owner's cancellation at the live close boundary (#730)
taras Sep 2, 2026
5b51988
✅ Count what TG19 proves: resources, records and the lease (#730)
taras Sep 2, 2026
1018291
📝 Make PaneTerminal the pane-work boundary (#730)
taras Sep 11, 2026
4b1bf53
♻️ Make PaneTerminal the only capability pane work receives (#730)
taras Sep 11, 2026
bb5c125
♻️ Give one owner the grids a terminal installation issued (#730)
taras Sep 11, 2026
0828774
♻️ Present a provider's grid as a resource, and make acquisition read…
taras Sep 11, 2026
55b1784
📝 Define one-directional terminal grid UI (#717)
taras Sep 11, 2026
69157e4
📝 Define terminal grid state convergence (#717)
taras Sep 11, 2026
6496818
♻️ Converge terminal grids on one immutable state (#730)
taras Sep 11, 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
11 changes: 9 additions & 2 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/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,8 +75,15 @@ 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
Expand Down
692 changes: 589 additions & 103 deletions architecture.md

Large diffs are not rendered by default.

48 changes: 41 additions & 7 deletions bun.lock

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

35 changes: 35 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 @@ -45,6 +45,7 @@
"remark": "15",
"remend": "^1.2.2",
"semver": "^7.8.5",
"starfx": "0.16.1",
"zod": "^4.3.6",
"unist-util-select": "^5",
"mdast-util-to-string": "^4"
Expand All @@ -57,6 +58,7 @@
"@executablemd/core": "workspace:*",
"@executablemd/durable-streams": "workspace:*",
"@executablemd/runtime": "workspace:*",
"@executablemd/terminal": "workspace:*",
"@executablemd/test-agent": "workspace:*",
"@executablemd/test-support": "workspace:*",
"@executablemd/testing": "workspace:*",
Expand Down
2 changes: 1 addition & 1 deletion packages/acp/src/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ import {
AgentSessionRecoveryRequired,
cwd,
ExecutableObservationError,
nativeLaunch,
} from "@executablemd/runtime";
import { nativeLaunch } from "@executablemd/terminal";
import type {
AgentSessionCoordinator,
AgentSessionKey,
Expand Down
6 changes: 4 additions & 2 deletions packages/acp/tests/native-launch.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@ import type {
PreparedLaunchRecord,
Session,
} from "@executablemd/core";
import { flushOutput, installControlledLauncher, reserveTerminal } from "@executablemd/runtime";
import type { AgentSessionCoordinator, NativeLaunchRequest } from "@executablemd/runtime";
import { flushOutput, reserveTerminal } from "@executablemd/terminal";
import { installControlledLauncher } from "@executablemd/terminal/test";
import type { NativeLaunchRequest } from "@executablemd/terminal";
import type { AgentSessionCoordinator } from "@executablemd/runtime";
import { createAcpxProvider } from "../src/provider.ts";
import type { AcpxProviderDependencies } from "../src/provider.ts";
import {
Expand Down
3 changes: 2 additions & 1 deletion packages/cli/src/agent-stack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ import {
registerAgentProvider,
} from "@executablemd/core";
import type { AgentProviderFactory, PermissionMode } from "@executablemd/core";
import { installForegroundLauncher, env as readEnv } from "@executablemd/runtime";
import { env as readEnv } from "@executablemd/runtime";
import { installForegroundLauncher } from "@executablemd/terminal/posix";
import { createAcpxProvider, DEFAULT_AGENT_NAME } from "@executablemd/acp";
import type { AcpxProviderDependencies } from "@executablemd/acp";
// A separate entrypoint because the embedded adapters are temporary (#636) and
Expand Down
5 changes: 3 additions & 2 deletions packages/cli/tests/agent-session-coordinator.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ import {
API,
createDenoAgentSessionCoordinator,
hasDenoAgentSessionCoordinator,
installControlledLauncher,
} from "@executablemd/runtime";
import { installControlledLauncher } from "@executablemd/terminal/test";
import type { AgentSessionCoordinator } from "@executablemd/runtime";
import {
ADVERTISED_CLIENT_NATIVE_ATTACHMENT,
Expand All @@ -39,7 +39,8 @@ import {
createMemorySessionRouteStore,
} from "@executablemd/acp";
import type { AgentSessionRouteStore, NativeAdapter, NativeBinding } from "@executablemd/acp";
import type { ExecutableObserver, NativeLaunchRequest } from "@executablemd/runtime";
import type { ExecutableObserver } from "@executablemd/runtime";
import type { NativeLaunchRequest } from "@executablemd/terminal";
import { createFakeObserver } from "../../acp/tests/helpers.ts";
import {
sessionCoordinatorRoot,
Expand Down
3 changes: 2 additions & 1 deletion packages/cli/tests/run-composition-deno.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ import { exists, readTextFile } from "@effectionx/fs";
import { spawnSync } from "node:child_process";
import { join } from "node:path";
import process from "node:process";
import { API, NativeLauncher, useHostFiles } from "@executablemd/runtime";
import { API, useHostFiles } from "@executablemd/runtime";
import { NativeLauncher } from "@executablemd/terminal";
import { InMemoryStream } from "@executablemd/durable-streams";
import {
Agent,
Expand Down
7 changes: 7 additions & 0 deletions packages/core/mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,13 @@ export { DocumentOutput } from "./src/api.ts";
export type { DocumentOutputApi } from "./src/api.ts";
export { useNormalizedOutput } from "./src/output/normalize.ts";
export { useTerminalOutput } from "./src/output/terminal.ts";
// A host reaches the whole terminal-grid capability through
// `installTerminalGridProfile`; the contracts a provider composes against live
// in `@executablemd/terminal` and are imported from there.
export { installTerminalGridProfile } from "./src/terminal/profile.ts";
export type { TerminalGridProfileOptions } from "./src/terminal/profile.ts";
export { createTerminalGridJournal } from "./src/terminal/journal.ts";
export type { GridIdentity } from "./src/terminal/journal.ts";

export { execute, Execution } from "./src/execute.ts";
export type {
Expand Down
Loading
Loading