Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
af2a833
fix(daemon): surface AMR OpenCode stall context (#6040)
Siri-Ray Jul 29, 2026
b6b23b7
test(e2e): parallelize restoration group (#6169)
PerishCode Jul 29, 2026
7f5abbd
feat(landing-page): sharpen the Codex agent page for "codex ui" inten…
joeylee12629-star Jul 29, 2026
f9d42f4
Add Clone Audit plugin (#5687)
bestthanapon Jul 29, 2026
00041bc
fix(e2e): bound tools-dev runtime lifecycle (#6204)
PerishCode Jul 29, 2026
30501a2
test(e2e): refresh full-pool UI fixtures (#6211)
PerishCode Jul 29, 2026
7c8c7b7
fix(web): allow skipping required chat questions (#6177)
open-design-crew[bot] Jul 29, 2026
45a3600
docs(tools-pack): add build cache contract (#6207)
PerishCode Jul 29, 2026
7af539b
docs(landing-page): add 0.16.0 release post, localize and re-cover 0.…
joeylee12629-star Jul 29, 2026
809d45f
feat(integrations): add the local Open Design Cloud flow for Codex (#…
open-design-crew[bot] Jul 30, 2026
b323a28
test: strengthen E2E coverage and fixtures (#6150)
AmyShang-alt Jul 30, 2026
4f3a0b3
fix(daemon): continue stalled post-tool sessions (#6237)
Siri-Ray Jul 30, 2026
2097115
fix(tools-pack): carry workspace build key into tarballs (#6235)
PerishCode Jul 30, 2026
8518ec8
fix(amr): recover late login failures and trace auth stages (#5986)
Siri-Ray Jul 30, 2026
176fae3
ci: constrain Actions cache writes (#6270)
PerishCode Jul 30, 2026
9757b25
fix(daemon): auto-mint assistantMessageId when clients omit pin (#6107)
mrcfps Jul 30, 2026
1da4f9e
fix(web): persist browser preview viewport (#4899)
HD-L Jul 30, 2026
4d4a659
fix(daemon): honor Kiro ACP turn completion (#6268)
Siri-Ray Jul 30, 2026
7d7c56a
fix(daemon): isolate plugin-started Local Codex runs (#6273)
open-design-crew[bot] Jul 30, 2026
0d5a972
fix(landing): accept signed Vela team plan leads (#6283)
lefarcen Jul 30, 2026
ebcba70
feat(prompts): introduce on-demand discovery in SP v2.0 (#6223)
open-design-crew[bot] Jul 31, 2026
4a6c2da
fix(web): surface BYOK migration validation errors (#6280)
open-design-crew[bot] Jul 31, 2026
2cbb2e4
fix(ui): improve dark-mode contrast for off-state toggles (#5825)
xxiaoxiong Jul 31, 2026
dac2729
fix(web): keep Azure deployment names editable (#6034)
mturac Jul 31, 2026
0c5f98e
chore(plugin-previews): refresh baked preview manifest (#6293)
open-design-release-bot[bot] Jul 31, 2026
45d1c7f
fix(byok): withdraw Windows DPAPI backend (#6308)
PerishCode Jul 31, 2026
517f39a
fix(web): dismiss stale todo after continuation starts (#6307)
Siri-Ray Jul 31, 2026
0c1b315
Merge main into feat/workspace-team
lefarcen Jul 31, 2026
a7e1f2e
fix(web): preserve shared project update timestamps
lefarcen Jul 31, 2026
555381a
fix(web): reconcile shared timestamps on home
lefarcen Jul 31, 2026
6c66942
fix(web): preserve workspace scope in preview assets
lefarcen Jul 31, 2026
50f9534
fix(collab): avoid unscoped shared cover requests
lefarcen Jul 31, 2026
0e9ca50
fix(web): avoid double-wrapping preview assets
lefarcen Jul 31, 2026
9a526de
fix(web): preserve first prompt across project refresh
lefarcen Jul 31, 2026
90d24a3
test(web): target the active shared project card
lefarcen Jul 31, 2026
12ca770
test(web): keep empty BYOK profile type-safe
lefarcen Aug 1, 2026
5bcec04
test(e2e): require explicit workspace scope
lefarcen Aug 1, 2026
86b01b9
fix(web): finish scoped preview hydration
lefarcen Aug 1, 2026
2ca78c3
test(e2e): align manual edit with current inspector
lefarcen Aug 1, 2026
a18a302
fix(web): reconcile files after event stream readiness
lefarcen Aug 1, 2026
83e975b
fix(web): keep local project creation workspace-independent
lefarcen Aug 1, 2026
f2d4941
fix(web): preserve scoped auth recovery state
lefarcen Aug 1, 2026
ab158d5
test(e2e): assert explicit Personal workspace scope
lefarcen Aug 1, 2026
e985e3e
test(e2e): preserve visual AMR account fixture
lefarcen Aug 1, 2026
30f941d
test(web): await scoped cover source
lefarcen Aug 1, 2026
aa38aaa
UI polish batch: cloud sign-in, onboarding, composer menu (#6281)
wangchenglong0001 Aug 2, 2026
5ecffcb
Merge feat/workspace-team into PR 6320 integration
lefarcen Aug 2, 2026
79558e5
test(e2e): lock design system team partition
lefarcen Aug 1, 2026
99c5ca0
fix(workspace): stabilize scoped project lifecycle
lefarcen Aug 2, 2026
4dbf3bd
test(e2e): stabilize retained workspace transitions
lefarcen Aug 2, 2026
74bee95
fix(workspace): retain exact scope through transient outages
lefarcen Aug 2, 2026
610c668
test(workspace): lock outage identity boundaries
lefarcen Aug 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 14 additions & 2 deletions .github/actions/setup-workspace/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ inputs:
description: JSON array of labels selected for this job's runs-on value
required: false
default: '[]'
save-pnpm-cache:
description: Save a missing pnpm cache after install; trusted main seed jobs only
required: false
default: 'false'

runs:
using: composite
Expand Down Expand Up @@ -62,13 +66,21 @@ runs:
shell: bash
run: echo "path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT"

- name: Cache pnpm store
- name: Restore pnpm store
id: pnpm-cache-restore
if: ${{ steps.persistent-pnpm-store.outputs.enabled != 'true' }}
uses: actions/cache@v5.0.5
uses: actions/cache/restore@v5
with:
path: ${{ steps.pnpm-store.outputs.path }}
key: pnpm-store-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}

- name: Install dependencies
shell: bash
run: pnpm install --frozen-lockfile

- name: Save pnpm store
if: ${{ inputs.save-pnpm-cache == 'true' && steps.persistent-pnpm-store.outputs.enabled != 'true' && steps.pnpm-cache-restore.outputs.cache-hit != 'true' && github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') }}
uses: actions/cache/save@v5
with:
path: ${{ steps.pnpm-store.outputs.path }}
key: pnpm-store-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
68 changes: 68 additions & 0 deletions .github/workflows/cache-maintenance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: cache-maintenance

on:
push:
branches: [main]
paths:
- pnpm-lock.yaml
- .github/actions/setup-workspace/action.yml
- .github/workflows/cache-maintenance.yml
pull_request_target:
types: [closed]
workflow_dispatch:

permissions:
actions: write
contents: read

jobs:
seed-pnpm-windows:
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')
runs-on: windows-latest
timeout-minutes: 15
steps:
- name: Checkout main
uses: actions/checkout@v6.0.2

- name: Seed Windows pnpm cache
uses: ./.github/actions/setup-workspace
with:
save-pnpm-cache: 'true'

clean-closed-pr-buildkit:
if: github.event_name == 'pull_request_target' && github.repository == 'nexu-io/open-design'
runs-on: ubuntu-24.04
timeout-minutes: 5
steps:
- name: Delete closed PR BuildKit caches
env:
CACHE_REF: refs/pull/${{ github.event.pull_request.number }}/merge
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail

cache_rows="$(
gh cache list \
--repo "$GITHUB_REPOSITORY" \
--ref "$CACHE_REF" \
--limit 10000 \
--json id,key,sizeInBytes \
--jq '.[] | select((.key | startswith("buildkit-blob-")) or (.key | startswith("index-buildkit-"))) | [.id, .key, .sizeInBytes] | @tsv'
)"

if [ -z "$cache_rows" ]; then
echo "No closed-PR BuildKit caches found for $CACHE_REF"
exit 0
fi

count=0
bytes=0
while IFS=$'\t' read -r cache_id cache_key cache_size; do
[ -n "$cache_id" ] || continue
echo "Deleting cache id=$cache_id key=$cache_key bytes=$cache_size ref=$CACHE_REF"
gh cache delete "$cache_id" --repo "$GITHUB_REPOSITORY"
count=$((count + 1))
bytes=$((bytes + cache_size))
done <<< "$cache_rows"

echo "Deleted $count closed-PR BuildKit caches ($bytes bytes) for $CACHE_REF"
11 changes: 9 additions & 2 deletions .github/workflows/landing-page-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ jobs:
- name: Setup workspace
uses: ./.github/actions/setup-workspace

- name: Cache generated previews
- name: Restore generated previews
id: previews-cache
uses: actions/cache@v5.0.5
uses: actions/cache/restore@v5
with:
path: apps/landing-page/public/previews
key: landing-page-previews-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'package.json', 'apps/landing-page/package.json', 'apps/landing-page/scripts/generate-previews.ts', 'apps/landing-page/scripts/fallback-preview-card.ts', 'skills/**', 'design-templates/**', 'templates/live-artifacts/**', 'plugins/_official/**') }}
Expand Down Expand Up @@ -125,6 +125,13 @@ jobs:
OD_LANDING_NOINDEX: '1'
run: pnpm --filter @open-design/landing-page build:static

- name: Save generated previews
if: ${{ steps.previews-cache.outputs.cache-hit != 'true' && github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') }}
uses: actions/cache/save@v5
with:
path: apps/landing-page/public/previews
key: landing-page-previews-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'package.json', 'apps/landing-page/package.json', 'apps/landing-page/scripts/generate-previews.ts', 'apps/landing-page/scripts/fallback-preview-card.ts', 'skills/**', 'design-templates/**', 'templates/live-artifacts/**', 'plugins/_official/**') }}

- name: Lint changed blog SEO
# The build above sets OD_LANDING_NOINDEX=1, so every rendered page in
# `out/` carries `noindex`. Pass the same flag through so the SEO linter
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/release-beta-s.yml
Original file line number Diff line number Diff line change
Expand Up @@ -754,7 +754,8 @@ jobs:
-BuildJsonPath "C:\.tmp\runner\od-beta\win_x64\build\build.json" `
-IndexPath "C:\.tmp\runner\od-beta\win_x64\build\index.json" `
-ReportRoot "C:\.tmp\runner\od-beta\win_x64\release-report\win_x64" `
-OutputsPath "C:\.tmp\runner\od-beta\win_x64\build\outputs.json"
-OutputsPath "C:\.tmp\runner\od-beta\win_x64\build\outputs.json" `
-RequireVelaCli
- name: Write win_x64 release report
if: ${{ always() }}
Expand Down
15 changes: 9 additions & 6 deletions .github/workflows/release-beta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,7 @@ jobs:
--app-version "$update_version" \
--mac-compression normal \
--to dmg \
--require-vela-cli \
--json)"
printf '%s\n' "$update_output" > "$update_build_json_path"
{
Expand Down Expand Up @@ -718,7 +719,7 @@ jobs:
run: |
set -euo pipefail
prefix="${{ steps.mac_arm64_tools_pack_cache_key.outputs.prefix }}"
keep=3
keep=1
cache_ids="$(gh cache list --key "$prefix" --sort created_at --order desc --limit 100 --json id,key,createdAt --jq ".[$keep:] | .[].id")"
count=0
while IFS= read -r cache_id; do
Expand Down Expand Up @@ -866,6 +867,7 @@ jobs:
--mac-compression normal
--to "${{ inputs.mac_x64_target }}"
--json
--require-vela-cli
)
case "${{ inputs.mac_x64_sign_mode }}" in
no) ;;
Expand Down Expand Up @@ -899,6 +901,7 @@ jobs:
--mac-compression normal
--to "${{ inputs.mac_x64_target }}"
--json
--require-vela-cli
)
case "${{ inputs.mac_x64_sign_mode }}" in
no) ;;
Expand Down Expand Up @@ -988,7 +991,7 @@ jobs:
run: |
set -euo pipefail
prefix="${{ steps.mac_x64_tools_pack_cache_key.outputs.prefix }}"
keep=3
keep=1
cache_ids="$(gh cache list --key "$prefix" --sort created_at --order desc --limit 100 --json id,key,createdAt --jq ".[$keep:] | .[].id")"
count=0
while IFS= read -r cache_id; do
Expand Down Expand Up @@ -1134,7 +1137,7 @@ jobs:
$ErrorActionPreference = "Stop"
New-Item -ItemType Directory -Force -Path "${{ runner.temp }}\release-build\win_x64" | Out-Null
pnpm.cmd exec tools-pack win cleanup --dir "${{ runner.temp }}\tools-pack" --namespace release-beta-win --json
$buildArgs = @("exec", "tools-pack", "win", "build", "--dir", "${{ runner.temp }}\tools-pack", "--cache-dir", "${{ runner.temp }}\tools-pack-cache", "--namespace", "release-beta-win", "--portable", "--app-version", "${{ needs.metadata.outputs.beta_version }}", "--to", "${{ inputs.win_x64_target }}", "--json")
$buildArgs = @("exec", "tools-pack", "win", "build", "--dir", "${{ runner.temp }}\tools-pack", "--cache-dir", "${{ runner.temp }}\tools-pack-cache", "--namespace", "release-beta-win", "--portable", "--app-version", "${{ needs.metadata.outputs.beta_version }}", "--to", "${{ inputs.win_x64_target }}", "--require-vela-cli", "--json")
if ("${{ inputs.win_x64_sign_mode }}" -eq "on") { $buildArgs += "--signed" }
$buildOutput = pnpm.cmd @buildArgs
if ($LASTEXITCODE -ne 0) { throw "tools-pack win build failed with exit code $LASTEXITCODE" }
Expand All @@ -1153,7 +1156,7 @@ jobs:
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "${{ runner.temp }}\tools-pack-cache"
New-Item -ItemType Directory -Force -Path "${{ runner.temp }}\release-build\win_x64" | Out-Null
pnpm.cmd exec tools-pack win cleanup --dir "${{ runner.temp }}\tools-pack" --namespace release-beta-win --json
$buildArgs = @("exec", "tools-pack", "win", "build", "--dir", "${{ runner.temp }}\tools-pack", "--cache-dir", "${{ runner.temp }}\tools-pack-cache", "--namespace", "release-beta-win", "--portable", "--app-version", "${{ needs.metadata.outputs.beta_version }}", "--to", "${{ inputs.win_x64_target }}", "--json")
$buildArgs = @("exec", "tools-pack", "win", "build", "--dir", "${{ runner.temp }}\tools-pack", "--cache-dir", "${{ runner.temp }}\tools-pack-cache", "--namespace", "release-beta-win", "--portable", "--app-version", "${{ needs.metadata.outputs.beta_version }}", "--to", "${{ inputs.win_x64_target }}", "--require-vela-cli", "--json")
if ("${{ inputs.win_x64_sign_mode }}" -eq "on") { $buildArgs += "--signed" }
$buildOutput = pnpm.cmd @buildArgs
if ($LASTEXITCODE -ne 0) { throw "tools-pack win fallback build failed with exit code $LASTEXITCODE" }
Expand Down Expand Up @@ -1220,7 +1223,7 @@ jobs:
$match = [regex]::Match("${{ needs.metadata.outputs.beta_version }}", "^(?<base>\d+\.\d+\.\d+)-beta\.(?<number>\d+)$")
if (-not $match.Success) { throw "full Windows smoke requires a counted beta version; got ${{ needs.metadata.outputs.beta_version }}" }
$updateVersion = "{0}-beta.{1}" -f $match.Groups["base"].Value, ([int]$match.Groups["number"].Value + 1)
$buildArgs = @("exec", "tools-pack", "win", "build", "--dir", "${{ runner.temp }}\release-work\win_x64\tools-pack-update-fixture", "--cache-dir", "${{ runner.temp }}\tools-pack-cache", "--namespace", "release-beta-win", "--app-version", $updateVersion, "--to", "nsis", "--json")
$buildArgs = @("exec", "tools-pack", "win", "build", "--dir", "${{ runner.temp }}\release-work\win_x64\tools-pack-update-fixture", "--cache-dir", "${{ runner.temp }}\tools-pack-cache", "--namespace", "release-beta-win", "--app-version", $updateVersion, "--to", "nsis", "--require-vela-cli", "--json")
if ("${{ inputs.win_x64_sign_mode }}" -eq "on") { $buildArgs += "--signed" }
$updateOutput = pnpm.cmd @buildArgs
if ($LASTEXITCODE -ne 0) { throw "tools-pack win update fixture failed with exit code $LASTEXITCODE" }
Expand Down Expand Up @@ -1287,7 +1290,7 @@ jobs:
GH_TOKEN: ${{ github.token }}
run: |
$prefix = "${{ steps.win_tools_pack_cache_key.outputs.prefix }}"
$keep = 3
$keep = 1
$caches = @(gh cache list --key $prefix --sort created_at --order desc --limit 100 --json id,key,createdAt | ConvertFrom-Json)
$stale = @($caches | Select-Object -Skip $keep)
foreach ($cache in $stale) { gh cache delete $cache.id }
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release-prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,7 @@ jobs:
run: |
set -euo pipefail
prefix="${{ steps.mac_arm64_tools_pack_cache_key.outputs.prefix }}"
keep=3
keep=1
cache_ids="$(gh cache list --key "$prefix" --sort created_at --order desc --limit 100 --json id,key,createdAt --jq ".[$keep:] | .[].id")"
count=0
while IFS= read -r cache_id; do
Expand Down Expand Up @@ -805,7 +805,7 @@ jobs:
run: |
set -euo pipefail
prefix="${{ steps.mac_x64_tools_pack_cache_key.outputs.prefix }}"
keep=3
keep=1
cache_ids="$(gh cache list --key "$prefix" --sort created_at --order desc --limit 100 --json id,key,createdAt --jq ".[$keep:] | .[].id")"
count=0
while IFS= read -r cache_id; do
Expand Down Expand Up @@ -1051,7 +1051,7 @@ jobs:
GH_TOKEN: ${{ github.token }}
run: |
$prefix = "${{ steps.win_tools_pack_cache_key.outputs.prefix }}"
$keep = 3
$keep = 1
$caches = @(gh cache list --key $prefix --sort created_at --order desc --limit 100 --json id,key,createdAt | ConvertFrom-Json)
$stale = @($caches | Select-Object -Skip $keep)
foreach ($cache in $stale) {
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,7 @@ jobs:
run: |
set -euo pipefail
prefix="${{ steps.mac_arm64_tools_pack_cache_key.outputs.prefix }}"
keep=3
keep=1
cache_ids="$(gh cache list --key "$prefix" --sort created_at --order desc --limit 100 --json id,key,createdAt --jq ".[$keep:] | .[].id")"
count=0
while IFS= read -r cache_id; do
Expand Down Expand Up @@ -771,7 +771,7 @@ jobs:
run: |
set -euo pipefail
prefix="${{ steps.mac_x64_tools_pack_cache_key.outputs.prefix }}"
keep=3
keep=1
cache_ids="$(gh cache list --key "$prefix" --sort created_at --order desc --limit 100 --json id,key,createdAt --jq ".[$keep:] | .[].id")"
count=0
while IFS= read -r cache_id; do
Expand Down Expand Up @@ -1033,7 +1033,7 @@ jobs:
GH_TOKEN: ${{ github.token }}
run: |
$prefix = "${{ steps.win_tools_pack_cache_key.outputs.prefix }}"
$keep = 3
$keep = 1
$caches = @(gh cache list --key $prefix --sort created_at --order desc --limit 100 --json id,key,createdAt | ConvertFrom-Json)
$stale = @($caches | Select-Object -Skip $keep)
foreach ($cache in $stale) {
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -862,7 +862,7 @@ jobs:
GH_TOKEN: ${{ github.token }}
run: |
$prefix = "${{ steps.win_tools_pack_cache_key.outputs.prefix }}"
$keep = 3
$keep = 1
$caches = @(gh cache list --key $prefix --sort created_at --order desc --limit 100 --json id,key,createdAt | ConvertFrom-Json)
$stale = @($caches | Select-Object -Skip $keep)
foreach ($cache in $stale) {
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/visual-baseline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ jobs:

- name: Setup workspace
uses: ./.github/actions/setup-workspace
with:
save-pnpm-cache: 'true'

- name: Setup Playwright
uses: ./.github/actions/setup-playwright
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ This file is the single source of truth for agents entering this repository. Rea
- References and current plans: `docs/references.md`, `docs/code-review-guidelines.md`, `specs/current/maintainability-roadmap.md`, `specs/current/ci.md` (CI scope confidence methodology — required before changing confidence or guard fields in `scripts/scopes.ts`).
- Directory-level agent guidance: `.github/AGENTS.md`, `apps/AGENTS.md`, `packages/AGENTS.md`, `tools/AGENTS.md`, `e2e/AGENTS.md`.
- Packaged auto-update architecture and high-confidence local harness: read `tools/pack/AGENTS.md` section "Packaged auto-update architecture and harness" before touching packaged updater code, release-channel identity, installer behavior, or updater UI.
- Packaged build cache contract: `tools/pack/CACHE.md` (determinant rules, materialization-time parameters, confidence grading — required before changing any build-cache node key).

## Workspace directories

Expand Down
1 change: 1 addition & 0 deletions apps/daemon/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
"@types/express": "5.0.6",
"@types/multer": "2.1.0",
"@types/node": "20.19.39",
"jsdom": "29.1.1",
"typescript": "5.9.3",
"vitest": "4.1.6"
},
Expand Down
13 changes: 13 additions & 0 deletions apps/daemon/src/agent-protocol/acp/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ export interface AttachAcpSessionOptions {
stageTimeoutMs?: number;
executionProfile?: ExecutionProfile;
modelUnavailableErrorCode?: 'AMR_MODEL_UNAVAILABLE';
// Some ACP adapters expose an explicit `turn_end` session update as their
// terminal turn signal instead of returning the pending session/prompt RPC.
// Keep this opt-in so standard ACP adapters still require the response.
completePromptOnTurnEnd?: boolean;
// When set, resume an existing upstream session instead of creating a new
// one: the handshake sends `session/load { sessionId }` (the durable handle
// captured from a prior run via `getDurableSessionId()`) rather than
Expand Down Expand Up @@ -134,6 +138,7 @@ export function attachAcpSession({
stageTimeoutMs = DEFAULT_STAGE_TIMEOUT_MS,
executionProfile = 'filesystem',
modelUnavailableErrorCode,
completePromptOnTurnEnd = false,
resumeSessionId,
onCliReady,
onSessionInit,
Expand Down Expand Up @@ -639,6 +644,14 @@ export function attachAcpSession({
});
emitAcpRawShapeDiagnostic(update);
}
if (
completePromptOnTurnEnd &&
promptRequestId !== null &&
update.sessionUpdate === 'turn_end'
) {
finishCleanPrompt(update.usage);
return;
}
if (update.sessionUpdate === 'agent_thought_chunk') {
emitAcpRawShapeDiagnostic(update);
const text = extractAcpUpdateText(update);
Expand Down
6 changes: 5 additions & 1 deletion apps/daemon/src/agents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@ export {
} from './runtimes/executables.js';
export { applyAgentLaunchEnv, resolveAgentLaunch } from './runtimes/launch.js';
export { resolveAgentBin } from './runtimes/resolution.js';
export { openDesignAmrTraceEnv, spawnEnvForAgent } from './runtimes/env.js';
export {
openDesignAmrRunAttempt,
openDesignAmrTraceEnv,
spawnEnvForAgent,
} from './runtimes/env.js';
export { buildLiveArtifactsMcpServersForAgent } from './runtimes/mcp.js';
export {
checkPromptArgvBudget,
Expand Down
Loading
Loading