Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
346 commits
Select commit Hold shift + click to select a range
866ec1f
fix(backlog): persist tasks before dependencies to avoid FK violation…
sabbour Jul 25, 2026
0c2debd
fix(agenthost): flip api/worker client RequireMtls to match AgentHost…
sabbour Jul 25, 2026
dd9f01f
fix(runs): resolve coordinator-phase suffixed run ids for tool-approv…
sabbour Jul 25, 2026
539a9a3
docs: record harness findings from staging investigation (#507)
sabbour Jul 25, 2026
06007b7
fix(auth): propagate rate-limited public-members fallback as Inconclu…
sabbour Jul 25, 2026
da0b2f4
chore(release): sync 0.11.1 metadata to dev (#509)
sabbour Jul 25, 2026
6026c89
chore(release): prepare v0.11.2
sabbour Jul 25, 2026
6d7d9aa
fix(coordinator): persist assembly review row before status flip to c…
sabbour Jul 25, 2026
1cd2078
fix(agenthost): surface unhandled /configure exceptions instead of em…
sabbour Jul 26, 2026
bc50c1c
fix(web): clarify blocked Ready tasks on board (#515)
sabbour Jul 26, 2026
27ea216
fix(agenthost): thread per-turn ApiBaseUrl/ApiKey to tool providers (…
sabbour Jul 26, 2026
d40fabd
chore(release): prepare v0.11.3 (#519)
sabbour Jul 26, 2026
3234ada
fix(azure): require explicit KEYVAULT_NAME and fail fast on nonexiste…
sabbour Jul 26, 2026
143aea4
chore(sandbox): upgrade agent-sandbox to 0.5.3 (#487); re-assess volu…
sabbour Jul 26, 2026
e6578b1
docs: log UI harness empty-storageState bug in learnings (#496)
sabbour Jul 26, 2026
c49fc95
fix(sandbox): use python3 instead of python for preview entrypoint (#…
sabbour Jul 26, 2026
c8ed32c
fix(523): stop-gap stale-token bypass at build-test gate; merge-block…
sabbour Jul 26, 2026
83415a6
chore(release): prepare v0.11.4 (#525)
sabbour Jul 26, 2026
47d7496
fix(sandbox): start_preview 403s for the run's own agent callback in …
sabbour Jul 26, 2026
9ffe0e0
fix(#527): auto-commit dirty tracked content before merge-safety chec…
sabbour Jul 26, 2026
6f299ae
fix(agenthost): log durable, redacted telemetry for start_preview too…
sabbour Jul 26, 2026
b17823e
chore(release): sync v0.11.5 metadata to dev
sabbour Jul 26, 2026
5c80d8a
fix: re-fit workflow editor viewport when a node is added (#540) (#548)
sabbour Jul 27, 2026
013e578
fix(ui-harness): permit full github.com origin during manual OAuth lo…
sabbour Jul 27, 2026
7a87fe6
fix(board): clamp long task prompts on RunCard instead of rendering t…
sabbour Jul 27, 2026
31402e8
fix(preview): LLM fallback for run-command discovery (#541) (#544)
sabbour Jul 27, 2026
6a4a97b
fix(observability): anchor execute_tool span duration to SDK event ti…
sabbour Jul 27, 2026
9a06ea2
fix(memory): persist team ledger to repo worktree and report export f…
sabbour Jul 27, 2026
e74a8dd
fix(preview): keep sandbox pod alive while a live preview is active (…
sabbour Jul 27, 2026
a117005
docs(skills): add verified playwright-cli + ui-harness demo recording…
sabbour Jul 27, 2026
5ff4fc8
fix(web): enable drag-to-connect in Visual Workflow Editor (#555) (#556)
sabbour Jul 27, 2026
a066e0a
fix(web): group + dedupe the Visual Workflow Editor 'Add node' palett…
sabbour Jul 27, 2026
78fac61
fix(webhooks): fire event triggers for URL-form GitHub project origin…
sabbour Jul 27, 2026
6bd3967
feat(web): add suggested prompt buttons to Assistant Run page (#563)
sabbour Jul 27, 2026
ab06270
fix(sandbox): renew backing claim TTL while a live preview is active …
sabbour Jul 27, 2026
dcb45aa
chore(release): sync v0.11.6 metadata to dev (#566)
sabbour Jul 27, 2026
7b4f8f6
chore(release): sync v0.12.0 metadata to dev (#568)
sabbour Jul 27, 2026
ab5133b
fix(k8s): grant patch/update on sandboxclaims to agentweaver-api-sand…
sabbour Jul 27, 2026
de10154
chore(release): sync v0.12.1 metadata to dev (#573)
sabbour Jul 27, 2026
607992b
fix(sandbox): pin live preview pods against autoscaler scale-down (#5…
sabbour Jul 27, 2026
7c87944
chore(release): sync v0.12.2 metadata to dev
sabbour Jul 27, 2026
145b1ae
fix(web): number run timeline steps sequentially instead of all showi…
sabbour Jul 27, 2026
9d2baab
docs: refresh stale model IDs, index new specs, document workflow pal…
sabbour Jul 27, 2026
089e38f
fix: apply agenthost MCP network policy (#584)
sabbour Jul 27, 2026
4775ce9
fix(web): avoid substring tool-category collisions (#583)
sabbour Jul 27, 2026
f546ca1
test(oauth): fix statistically flaky opaque-code uniqueness assertion…
sabbour Jul 27, 2026
e9868bf
fix(runtime): steer model to run_command to cut wasted native-shell r…
sabbour Jul 27, 2026
391afc6
fix(sandbox): make worker heartbeat reaper preview-aware (#578) (#586)
sabbour Jul 27, 2026
d2a7554
fix(web): reset assistant route for new sessions (#590) (#596)
sabbour Jul 28, 2026
7591d9b
fix(web): shorten the footer version badge (#592) (#599)
sabbour Jul 28, 2026
351dcc8
fix(web): preserve child run timeline steps (#595) (#603)
sabbour Jul 28, 2026
1e3f210
fix(web): focus composer after prompt pick (#591) (#598)
sabbour Jul 28, 2026
1aed605
fix(web): surface preview near run actions (#593) (#600)
sabbour Jul 28, 2026
a100e95
fix(api): materialize selected workflows in run worktrees (#597) (#601)
sabbour Jul 28, 2026
9d3b8de
fix(api): re-arm repeated review notifications (#594) (#602)
sabbour Jul 28, 2026
7f1d7ed
fix(web): allow GitHub avatars in project picker CSP (#605)
sabbour Jul 28, 2026
91e06d9
fix(web): contain footer version badge overflow (#592) (#606)
sabbour Jul 28, 2026
4454699
fix(api): keep coordinator dispatch inline (#607) (#608)
sabbour Jul 28, 2026
71578dc
fix(demo-recording): fix zoom-on-modal + audio sync bugs, commit reus…
sabbour Jul 28, 2026
07a8286
chore(gitignore): track final assembled demo videos, keep intermediat…
sabbour Jul 28, 2026
d183bfe
docs(demo): add assembled blueprint-demo walkthrough video (#613)
sabbour Jul 28, 2026
e0d3533
Add Azure/AKS live-repo deep demo video + beat plan (#616)
sabbour Jul 28, 2026
0cb2748
Fix blueprint-demo capture pipeline root causes + correct beat specs …
sabbour Jul 28, 2026
91a2466
fix(web): stop tool-approval card overlapping the run activity feed (…
sabbour Jul 29, 2026
6329e0b
Recapture blueprint-demo video with 14 review defects fixed (#620)
sabbour Jul 29, 2026
e9d701a
fix: make preview approval timeout configurable (#617)
sabbour Jul 29, 2026
136d7a9
Fix generic 'AI Assistant' role label on Observability Traces page (#…
sabbour Jul 29, 2026
0b93925
fix: relabel denied native shell calls (#619)
sabbour Jul 29, 2026
6b1cb0e
fix(cluster): correct cluster health checks (#625)
sabbour Jul 29, 2026
a325ea9
Fix #621: externalize Squad state consolidation from per-run branch m…
sabbour Jul 29, 2026
c7e8c26
Hotfix: add missing Project fields to ObservabilityPages test fixture…
sabbour Jul 29, 2026
2eb6ea8
fix: clean up cluster page diagnostics (#627)
sabbour Jul 29, 2026
5b2cc4f
fix: widen ACR provenance polling window (#628)
sabbour Jul 29, 2026
46fab80
docs(demo): add transaction-trace view to blueprint-demo Beat 2.7 (#629)
sabbour Jul 29, 2026
ef8b4cd
docs(demo): add Cluster page beat to both demo videos (#632)
sabbour Jul 29, 2026
f32abde
feat(auth): switch org authz to team-membership rule list (needs 2nd …
sabbour Jul 29, 2026
154c532
fix: preserve alumni role labels in observability breakdown (#630)
sabbour Jul 29, 2026
6661ae4
Patch Azure AKS demo skill import (#635)
sabbour Jul 29, 2026
6c91732
fix(demo): auto-approve stalled tool gates (#634)
sabbour Jul 29, 2026
fbf2ae1
fix: expose source_repository in MCP project_create (#636)
sabbour Jul 29, 2026
9e84663
fix: strengthen skill generation prompt (#633)
sabbour Jul 29, 2026
b1d2119
fix: dockerignore doesn't match prefixed worktree directories, causin…
sabbour Jul 29, 2026
21e1f4a
feat: add backend workflow trigger predicates (#645)
sabbour Jul 30, 2026
dffbe9e
fix: integrate workflow trigger predicates end-to-end (#647)
sabbour Jul 30, 2026
e576c7b
feat: add DOM-based demo creative-direction pipeline (#649)
sabbour Jul 30, 2026
60699a3
feat(auth): Entra ID dual-mode authn/authz overhaul (Tier-1 App Roles…
sabbour Jul 30, 2026
b634bd6
chore(squad): log PR #640 merge/deploy closure (#650)
sabbour Jul 30, 2026
7b9aba5
fix(ui-harness): allow Entra login redirects (#651)
sabbour Jul 30, 2026
6f74bcd
feat: add demo direction compositor (#652)
sabbour Jul 30, 2026
1bbcfa6
feat(auth): implement Entra ID browser sign-in (authorize + callback)…
sabbour Jul 30, 2026
207d929
chore(release): sync v0.13.0 metadata to dev (#655)
sabbour Jul 30, 2026
0e52eb0
feat(auth): support PKCE-only Entra sign-in when client secret unavai…
sabbour Jul 30, 2026
36da8d4
docs(demo): land locked demo scenario scripts for all three scenarios…
sabbour Jul 30, 2026
b4c3fc1
feat(deploy): wire Auth:Mode and Auth:Entra:* through AKS deploy pipe…
sabbour Jul 30, 2026
520b6ea
fix(azure): make installer image phases observable
sabbour Aug 1, 2026
3ec039f
ci: publish Agentweaver images to GitHub Container Registry per stage…
Copilot Aug 1, 2026
db1beb0
demo: recapture blueprint-demo against v0.13.0 staging (#639)
sabbour Aug 2, 2026
73ee8cd
chore(release): sync v0.14.0 metadata to dev (#675)
sabbour Aug 2, 2026
10087fe
feat: import provisioned images from GHCR (#676)
sabbour Aug 2, 2026
71527a1
chore(release): sync v0.15.0 metadata to dev (#678)
sabbour Aug 2, 2026
d0d6b99
feat: allow overriding Postgres server name to avoid name collisions …
sabbour Aug 2, 2026
b7bcfb3
feat: allow overriding Postgres HA mode; fix server-name length valid…
sabbour Aug 2, 2026
e7e2a4a
feat(azure): make AKS node VM size configurable (#681)
sabbour Aug 2, 2026
bfeb12d
feat(azure): support cross-region postgres provisioning (#683)
sabbour Aug 2, 2026
e3fdb53
feat: add custom qualified Azure installer image refs (#682)
sabbour Aug 2, 2026
adf22a5
chore(release): sync v0.16.0 metadata to dev (#685)
sabbour Aug 2, 2026
7797a39
fix(azure): use FQDN-based Cilium egress for public-mode Postgres (#686)
sabbour Aug 2, 2026
1295cfb
fix(azure): parse list-skus array shape in Postgres SKU pre-flight (#…
sabbour Aug 2, 2026
6314349
fix(auth): server/info endpoint 401s and omits auth_mode, breaking En…
sabbour Aug 2, 2026
073d9f9
fix(auth): add missing GET /api/auth/session endpoint, surface Entra …
sabbour Aug 2, 2026
20b4aae
feat(demo): add Azure AKS capture plan (#698)
sabbour Aug 2, 2026
30380e1
docs: add Scenario 1 demo capture plan (#699)
sabbour Aug 2, 2026
07c3598
fix(api): add missing Postgres migration for dismissed_notifications …
sabbour Aug 2, 2026
78051cc
chore(release): sync v0.16.1 metadata to dev (#703)
sabbour Aug 2, 2026
9c2eecb
fix(auth): resolve the active linked GitHub account's token, and allo…
Copilot Aug 3, 2026
5f4892b
fix(demo): use regional Speech synthesis endpoint (#700)
sabbour Aug 9, 2026
3a202ae
fix(deploy): wire AUTH_MODE/ENTRA_CLIENT_ID/ENTRA_TENANT_ID through p…
sabbour Aug 9, 2026
f71de27
chore(release): sync v0.16.2 metadata to dev (#708)
sabbour Aug 9, 2026
c832c0e
feat(azure): add --image-source ghcr to deploy-from-release (#709)
sabbour Aug 9, 2026
082b216
fix(ui-harness): reject auth loading captures (#720)
sabbour Aug 10, 2026
256bdc7
test(preview): cover direct-backed retention lifecycle (#560) (#732)
sabbour Aug 10, 2026
71b040e
docs(auth): architecture plan for retiring hardcoded auth-middleware …
sabbour Aug 11, 2026
6caa057
fix(demo): require Edge Default for Entra recording (#710)
sabbour Aug 11, 2026
75a2acb
fix(webhooks): provision GitHub webhooks automatically (#722)
sabbour Aug 11, 2026
d6d5c7c
fix(assistant): propagate Entra identity to MCP (#723)
sabbour Aug 11, 2026
04c8cfb
fix(release): share publish cleanliness policy (#725)
sabbour Aug 11, 2026
56e3544
docs(sandbox): specify secure rootless BuildKit image builds (#726)
sabbour Aug 11, 2026
0bf2e14
fix(azure): select supported monitoring location (#727)
sabbour Aug 11, 2026
6493f7b
fix(sandbox): allow contained absolute preview cwd (#728)
sabbour Aug 11, 2026
9ac9a97
fix(a2a): structure terminal failures across remoted roles (#734)
sabbour Aug 11, 2026
41975fa
fix(auth): recover preview credential tombstones (#735)
sabbour Aug 11, 2026
75d5b9c
fix(web): preserve sidebar identity beside versions (#737)
sabbour Aug 11, 2026
5962680
fix(runtime): recover AgentHost auth and reaped pods (#738)
sabbour Aug 11, 2026
75314ba
fix(memory): enforce provenance trust boundary (#745)
sabbour Aug 11, 2026
2845206
fix(release): synchronize package-lock during prepare (#747)
sabbour Aug 11, 2026
87d8d7e
chore(release): sync v0.17.0 metadata to dev (#750)
sabbour Aug 11, 2026
73b1940
fix(release): validate both package-lock version mirrors (#749)
sabbour Aug 11, 2026
cac2e20
perf(ci): stack 1/3 — share safe worktree dependencies (#743)
sabbour Aug 11, 2026
85f76da
fix(ci): correct #743 cache invalidation generation (#752)
sabbour Aug 11, 2026
28ef024
docs: clarify agent-turn failures and memory trust (#753)
sabbour Aug 11, 2026
d47df1c
feat(ui-harness): add pointer drag primitive (#729)
sabbour Aug 12, 2026
bbb6dac
fix(sandbox): consolidate preview lifecycle protection (#731)
sabbour Aug 12, 2026
a0bfd98
fix(workflows): support multiple automation triggers (#724)
sabbour Aug 12, 2026
0d6aa2c
fix(sandbox): isolate Kata AgentHost child mounts (#744)
sabbour Aug 12, 2026
adbd83f
feat(preview): make approval timeout configurable and retryable (#742)
sabbour Aug 12, 2026
7db4f17
fix(workflows): surface schedules in visual editor (#730)
sabbour Aug 12, 2026
615266f
fix(auth): authorize project runs through project roles (#721)
sabbour Aug 12, 2026
47f6405
fix(ui-harness): persist browser sessions across actions (#733)
sabbour Aug 12, 2026
a476cc9
fix(web): switch linked GitHub accounts successfully (#719)
sabbour Aug 12, 2026
857910e
fix(workflows): align editor node types (#670) (#736)
sabbour Aug 12, 2026
ee2848c
chore(release): sync v0.18.0 metadata to dev
sabbour Aug 12, 2026
3cae2ee
fix(sandbox): unblock AgentHost warm pool on real AKS Kata with a har…
sabbour Aug 13, 2026
6568b87
feat(sandbox): give Kata runs a real Linux developer toolchain (apt, …
sabbour Aug 13, 2026
b41803a
chore(release): sync v0.18.1 metadata to dev (#765)
sabbour Aug 13, 2026
f0c53da
fix(web): GitHub account filter + Edge Default harness login (#766)
sabbour Aug 14, 2026
7c6e24c
fix(web): shell approval Allow once — correct isShell detection, coor…
sabbour Aug 14, 2026
9bb5e85
chore(release): sync v0.18.2 metadata to dev (#769)
sabbour Aug 14, 2026
8637ad2
chore(release): drop changesets already shipped in v0.18.2 (#770)
sabbour Aug 14, 2026
1d83edf
fix(projects): shallow clone GitHub project creation (#772)
sabbour Aug 17, 2026
e2f64da
docs(demo): add Azure capture retry handoff (#773)
sabbour Aug 17, 2026
d5be13e
docs(demo): codify Blueprint clean-run readiness (#775)
sabbour Aug 17, 2026
f2d84c3
fix(harness): diagnose Entra auth failures (#778)
sabbour Aug 18, 2026
0ecfbd3
fix(ci): cover demo recording tests (#781)
sabbour Aug 18, 2026
1c3c608
fix(demo): repair Blueprint recording continuity (#779)
sabbour Aug 18, 2026
dd56e0f
fix(demo): allow measured Blueprint planning duration (#782)
sabbour Aug 18, 2026
fdca93e
fix(demo): bound Blueprint staging timing variance (#783)
sabbour Aug 18, 2026
cff3d6b
fix: stabilize latency duration unit rounding (#788)
sabbour Aug 18, 2026
1eec73b
fix(demo): isolate Entra handoff capture (#793)
sabbour Aug 18, 2026
cd69c71
fix(demo): enforce 2.2 promotion confirmation order (#786)
sabbour Aug 18, 2026
052afa1
fix(demo): target Blueprint cadence combobox (#794)
sabbour Aug 18, 2026
54bb87b
fix(demo): enforce AKS fixture capture order (#795)
sabbour Aug 18, 2026
0d44d59
docs: define recorder Entra boundary (#799)
sabbour Aug 18, 2026
89d48e6
fix(demo): scope capture prerequisites to selected beats (#801)
sabbour Aug 18, 2026
dfa9cf6
fix(demo): defer Bug Fix PR resolution (#798)
sabbour Aug 18, 2026
801945a
fix(demo-recording): keep Entra sign-in shell available (#803)
sabbour Aug 18, 2026
ee319dc
fix(demo): gate sabbour/AKS capture sequence (#790)
sabbour Aug 19, 2026
1c85db3
fix(demo): isolate final fixture takes (#791)
sabbour Aug 19, 2026
aaf4900
fix(workflows): reject verdict nodes as workflow starts (#771)
sabbour Aug 19, 2026
73beffa
fix(squad): align repository casting layout (#780)
sabbour Aug 19, 2026
c679cf5
fix(demo): isolate recording profile authentication (#776)
sabbour Aug 19, 2026
795a1ba
fix: persist terminal WorkPlan status when coordinator run already st…
sabbour Aug 19, 2026
c27c4fd
fix(demo): harden recording capture integration (#805)
sabbour Aug 20, 2026
4cc099d
fix: surface GitHub token expiry prominently and improve renewal fail…
sabbour Aug 20, 2026
1de7c3f
fix(release): allow demo recording artifacts in clean-tree guard (#813)
sabbour Aug 20, 2026
b8ab020
feat(auth): GitHubLegacy adopt-session-token endpoint (#814)
sabbour Aug 20, 2026
9054667
fix(deploy): auto-load params.<username>.json for deploy-from-local (…
sabbour Aug 20, 2026
8e482b3
fix(auth): treat 401/403 Copilot probe as inconclusive, not unentitle…
sabbour Aug 20, 2026
23e0732
fix: null-guard legacy history.json deserialization (NullReferenceExc…
sabbour Aug 20, 2026
35953f5
fix: correct stale changeset package name (@agentweaver/api to agentw…
sabbour Aug 20, 2026
8dfbc88
fix(deploy): guard against empty Entra config in buildRuntimeConfigLi…
sabbour Aug 20, 2026
38ce83f
fix(skills): shallow-clone GitHub tree URLs for faster skill import (…
sabbour Aug 21, 2026
dd74a30
demo: blueprint capture plan fixes + api.mjs baseUrl fallback (#825)
sabbour Aug 21, 2026
5ba08d6
demo: fix beat 2.5 run-card selector + beat 2.2 Direct-mode cleanup (…
sabbour Aug 21, 2026
8a3434c
demo: remove auto-approve from beat 2.2, fix beat 2.5 startUrl + prer…
sabbour Aug 21, 2026
41d54c0
fix: use project URL template for beats 2.6-3.2 startUrl (#828)
sabbour Aug 21, 2026
3e31251
fix: resolve blueprint-demo capture plan merge conflict (expand beats…
sabbour Aug 21, 2026
a10cf89
fix(demo): beat 5.1 navigate to Account settings for mcp-server-url (…
sabbour Aug 21, 2026
4c7dc00
fix(demo): beats 3.1+3.2 use non-built-in workflow copies (#831)
sabbour Aug 21, 2026
acb84b5
feat: copy-on-write for built-in workflows (edit/schedule/event) (#834)
sabbour Aug 21, 2026
79d5073
fix: shallow-clone + NullRef guard for skill import speed (#833)
sabbour Aug 21, 2026
dadeac7
fix(demo): aks plan story gaps (#835)
sabbour Aug 21, 2026
e007ee1
fix(demo): blueprint plan - beat 2.1/2.5/2.7/3.x/4.2 content and sele…
sabbour Aug 21, 2026
57c6299
fix(demo): blueprint beat 2.2 - add Confirm plan button click after A…
sabbour Aug 21, 2026
2ec55b6
fix(demo): auto-switch to approval panel + simplify beat 2.5 plan (#838)
sabbour Aug 22, 2026
3556ffe
fix(demo): beat capture fixes and narration scripts (#839)
sabbour Aug 22, 2026
a8d1924
fix(demo-recording): extend hold time on beats 2.4, 4.2, 4.3 to meet …
sabbour Aug 22, 2026
bc9c903
fix(demo-recording): replace hardcoded staging IDs with env-var place…
sabbour Aug 22, 2026
362e98b
fix(demo-recording): allow template placeholder startUrls in assertPl…
sabbour Aug 22, 2026
0575d91
fix: preview runner crash (#844)
sabbour Aug 24, 2026
fc47339
fix: protect preview runners from Node OOM kills (#846)
sabbour Aug 24, 2026
295f0c1
fix(sandbox): increase shell watchdog grace and default timeout for K…
sabbour Aug 24, 2026
ef2de84
Trace view: show tool arguments/output and AIC cost per span (#853)
sabbour Aug 24, 2026
71869ee
feat: add Change option to Human review approval card (#855) (#856)
sabbour Aug 24, 2026
78e8890
fix: show display name instead of GUID in confirmedBy fields (#854)
sabbour Aug 24, 2026
f520f12
chore: add Dependabot configuration (#858)
sabbour Aug 24, 2026
02a5c12
chore(deps): Bump actions/setup-node from 4 to 7 (#859)
dependabot[bot] Aug 24, 2026
7627e63
chore(deps): Bump @types/node from 26.1.1 to 26.2.0 (#864)
dependabot[bot] Aug 24, 2026
f7790f5
chore(deps): Bump the npm_and_yarn group across 3 directories with 5 …
dependabot[bot] Aug 24, 2026
2583d3c
chore(deps): Bump postcss from 8.5.17 to 8.5.26 in /apps/web (#877)
dependabot[bot] Aug 24, 2026
a415cac
fix(sandbox): block spawn until sidecar confirms start to fix observe…
sabbour Aug 24, 2026
07e669d
chore(deps): Bump @testing-library/user-event from 14.6.1 to 14.6.4 i…
dependabot[bot] Aug 24, 2026
89e964a
fix(api): install GitHub CLI in runtime image (#851)
sabbour Aug 24, 2026
f06ddae
chore(deps): Bump actions/github-script from 7 to 9 (#865)
dependabot[bot] Aug 24, 2026
237fd73
chore(deps): Bump coverlet.collector from 6.0.2 to 10.0.1 (#875)
dependabot[bot] Aug 24, 2026
fed9389
chore(deps): Bump the npm_and_yarn group across 1 directory with 3 up…
dependabot[bot] Aug 24, 2026
642ad1b
fix(ci): update deprecated CodeQL action to v4 (#883)
sabbour Aug 24, 2026
ab10166
chore(deps): Bump playwright from 1.61.1 to 1.62.1 (#862)
dependabot[bot] Aug 24, 2026
abe1b07
chore(deps): Bump @changesets/cli from 2.31.0 to 3.0.0 (#866)
dependabot[bot] Aug 24, 2026
2995a39
chore(deps): Bump @vitejs/plugin-react from 6.0.3 to 6.0.5 in /apps/w…
dependabot[bot] Aug 24, 2026
ddb4244
chore(deps): Bump happy-dom from 20.10.6 to 20.11.2 in /apps/web (#871)
dependabot[bot] Aug 24, 2026
ab0c6c7
chore(deps): Bump the react-ecosystem group in /apps/web with 5 updat…
dependabot[bot] Aug 24, 2026
94578c3
chore(deps): Bump react-router and react-router-dom in /apps/web (#884)
dependabot[bot] Aug 24, 2026
77e3f06
chore(deps): Bump actions/upload-pages-artifact from 3 to 5 (#861)
dependabot[bot] Aug 24, 2026
dbaf866
chore(deps): Bump actions/setup-dotnet from 4 to 6 (#863)
dependabot[bot] Aug 24, 2026
501d756
chore(deps): Bump actions/cache from 4 to 6 (#860)
dependabot[bot] Aug 24, 2026
0986261
chore(release): sync v0.19.0 release metadata to dev (#885)
sabbour Aug 24, 2026
28d34d3
fix: keep Trivy SARIF uploads healthy (#879)
sabbour Aug 24, 2026
ffcd870
fix(ux): replace raw identity GUID with display name in outcome plan …
sabbour Aug 25, 2026
9643764
chore(deps): Bump the fluent-ui group in /apps/web with 2 updates (#868)
dependabot[bot] Aug 25, 2026
13d25a1
fix(ux): correct trace summary latest date, sort runs newest-first, a…
sabbour Aug 25, 2026
7c8a89a
fix(sandbox): raise handshake timeout to exceed writable-root wait; a…
sabbour Aug 25, 2026
d4418dd
chore(deps): Bump Microsoft.AspNetCore.Mvc.Testing and 9 others (#872)
dependabot[bot] Aug 25, 2026
b0d1307
chore(deps): Bump the azure-sdk group with 5 updates (#873)
dependabot[bot] Aug 25, 2026
367b0ac
chore(deps): Bump the opentelemetry group with 2 updates (#874)
dependabot[bot] Aug 25, 2026
453675a
fix(observability): record tool call arguments and output in trace sp…
sabbour Aug 25, 2026
b4a1eaa
fix(tests): sync deploy-render CPU expectations with PR #886 rebalanc…
sabbour Aug 25, 2026
8dd0559
chore(release): sync v0.19.1 release metadata to dev (#893)
sabbour Aug 25, 2026
96ad613
fix(web): handle tool.approval_context in timeline reducer (#894)
sabbour Aug 25, 2026
205e648
chore(release): prepare v0.19.2
Copilot Aug 25, 2026
49d27d9
chore: merge main into release/v0.19.2 to resolve version divergence
Copilot Aug 25, 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
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Changelog

## 0.19.2

### Patch Changes

- b4a1eaa: Fix `deploy-render.test.mjs` CPU resource expectations to match the AgentHost/exec
resource rebalance from #886 (agent-host 400m/1000m -> 300m/800m, exec
600m/1000m -> 700m/1200m). The Node toolchain tests job is path-conditional and
didn't run for that k8s-only change, so the stale expectations went undetected
until the v0.19.1 release PR touched a triggering path.
- 96ad613: Fix the `tool.approval_context` SSE event not being handled by the frontend
timeline reducer, so approval context is now correctly applied to the
coordinator run model instead of being silently dropped.

## 0.19.1

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.19.1
0.19.2
37 changes: 37 additions & 0 deletions apps/web/src/__tests__/timelineReducer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,43 @@ describe('timelineReducer', () => {
expect(card.childRunId).toBeNull();
});

// DurableToolApprovalGate emits "tool.approval_context" (not "tool.approval_required")
// with PascalCase keys. Verify the reducer builds a pending ApprovalRequestItem so
// the "Needs input:" banner can appear for HITL gates like start_preview.
it('tool.approval_context (PascalCase payload) creates pending approval card', () => {
const s = fold([
makeEvent('agent.turn.start', { turnId: 'T1' }),
makeEvent('tool.approval_context', {
RequestId: 'ctx-req-001',
ToolName: 'start_preview',
Url: 'sandbox-preview:3423',
}),
]);
const turn = s.items[0] as TurnGroupItem;
expect(turn.steps).toHaveLength(1);
const card = turn.steps[0] as ApprovalRequestItem;
expect(card.kind).toBe('approval-request');
expect(card.requestId).toBe('ctx-req-001');
expect(card.toolName).toBe('start_preview');
expect(card.url).toBe('sandbox-preview:3423');
expect(card.resolved).toBe(false);
expect(card.childRunId).toBeNull();
expect(s.pendingApprovals.has('ctx-req-001')).toBe(true);
});

it('tool.approval_context then tool.approval_resolved resolves the card', () => {
const s = fold([
makeEvent('agent.turn.start', { turnId: 'T1' }),
makeEvent('tool.approval_context', { RequestId: 'ctx-req-002', ToolName: 'start_preview', Url: 'sandbox-preview:3423' }),
makeEvent('tool.approval_resolved', { requestId: 'ctx-req-002', approved: true, expired: false }),
]);
const turn = s.items[0] as TurnGroupItem;
const card = turn.steps[0] as ApprovalRequestItem;
expect(card.resolved).toBe(true);
expect(card.resolvedScope).toBe('once');
expect(s.pendingApprovals.has('ctx-req-002')).toBe(false);
});

// T-14: tool.approval_resolved with expired=true marks the card expired
it('tool.approval_resolved (expired) marks pending approval as expired', () => {
const s = fold([
Expand Down
1 change: 1 addition & 0 deletions apps/web/src/api/sse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ export type EventType =
| 'tool.output'
| 'tool.exec_result'
| 'shell.approval_required'
| 'tool.approval_context'
| 'tool.approval_required'
| 'sandbox.selected'
| 'sandbox.warning'
Expand Down
2 changes: 1 addition & 1 deletion apps/web/src/hooks/useCoordinatorRunModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ export function useCoordinatorRunModel(runId: string, runStatus?: string): Coord
}
} else if (item.kind === 'lifecycle') {
const t = item.event.type;
if (t === 'tool.approval_required' || t === 'coordinator.child_approval_required' || t === 'shell.approval_required') {
if (t === 'tool.approval_context' || t === 'tool.approval_required' || t === 'coordinator.child_approval_required' || t === 'shell.approval_required') {
openApprovalCount += 1; // conservative; Timeline pairs resolution for display
}
}
Expand Down
18 changes: 14 additions & 4 deletions apps/web/src/timeline/reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -536,13 +536,23 @@ function processEvent(

// A coordinator bubbles a child subtask's tool approval as this type; its payload carries the
// owning child run id so approve/deny can target it (issue #196). Handled identically here.
// tool.approval_context is the DurableToolApprovalGate event type for HITL gates (e.g.
// start_preview); it carries the same requestId/toolName/url payload as tool.approval_required
// but uses PascalCase keys. Both must produce an ApprovalRequestItem so the "Needs input:"
// banner appears and the operator can allow/deny.
case 'tool.approval_context':
// falls through
case 'tool.approval_required':
// falls through
case 'coordinator.child_approval_required': {
// Server emits camelCase (requestId, toolName); accept both for resilience.
const requestId = String(event.payload['request_id'] ?? event.payload['requestId'] ?? '');
const toolName = String(event.payload['tool_name'] ?? event.payload['toolName'] ?? '');
const url = event.payload['url'] != null ? String(event.payload['url']) : null;
// Server emits camelCase (requestId, toolName); tool.approval_context from
// DurableToolApprovalGate uses PascalCase (RequestId, ToolName, Url) because
// the payload is serialized from a C# record. Accept all forms for resilience.
const requestId = String(event.payload['request_id'] ?? event.payload['requestId'] ?? event.payload['RequestId'] ?? '');
const toolName = String(event.payload['tool_name'] ?? event.payload['toolName'] ?? event.payload['ToolName'] ?? '');
const url = (event.payload['url'] ?? event.payload['Url']) != null
? String(event.payload['url'] ?? event.payload['Url'])
: null;
const childRunId = event.payload['childRunId'] ?? event.payload['child_run_id'];
const approvalItem: ApprovalRequestItem = {
kind: 'approval-request',
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

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

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,5 @@
"@types/node": "^26.2.0",
"playwright": "^1.62.1"
},
"version": "0.19.1"
"version": "0.19.2"
}
Loading