@circuitwall/jarela 2.2.0 → 2.3.0
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +4 -3
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +8 -0
- package/.next/standalone/.next/server/app/_global-error/page.js +68 -68
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +76 -76
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/v1/access/[identity]/route.js +93 -93
- package/.next/standalone/.next/server/app/api/v1/access/route.js +169 -169
- package/.next/standalone/.next/server/app/api/v1/agents/[id]/compact/route.js +82 -56
- package/.next/standalone/.next/server/app/api/v1/agents/[id]/compact/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/agents/[id]/display-filters/route.js +122 -122
- package/.next/standalone/.next/server/app/api/v1/agents/[id]/route.js +100 -100
- package/.next/standalone/.next/server/app/api/v1/agents/[id]/thread/route.js +753 -753
- package/.next/standalone/.next/server/app/api/v1/agents/route.js +65 -65
- package/.next/standalone/.next/server/app/api/v1/allowed-sites/[hostname]/route.js +364 -364
- package/.next/standalone/.next/server/app/api/v1/allowed-sites/route.js +802 -802
- package/.next/standalone/.next/server/app/api/v1/artifacts/lifecycle/route.js +2 -2
- package/.next/standalone/.next/server/app/api/v1/attachments/files/route.js +49 -49
- package/.next/standalone/.next/server/app/api/v1/attachments/images/route.js +910 -910
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/chats/route.js +589 -16
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/chats/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/ignores/[remote_jid]/route.js +23 -23
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/ignores/route.js +30 -30
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/lookup/route.js +703 -130
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/lookup/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/pair/route.js +708 -135
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/pair/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/route.js +802 -229
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/routes/[route_id]/route.js +739 -739
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/routes/route.js +1035 -1035
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/status/route.js +679 -106
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/kinds/route.js +804 -804
- package/.next/standalone/.next/server/app/api/v1/bridges/route.js +700 -700
- package/.next/standalone/.next/server/app/api/v1/builtin-tools/route.js +9 -9
- package/.next/standalone/.next/server/app/api/v1/builtin-tools/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/config/route.js +85 -85
- package/.next/standalone/.next/server/app/api/v1/credentials/[id]/route.js +709 -709
- package/.next/standalone/.next/server/app/api/v1/credentials/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/credentials/route.js +2 -2
- package/.next/standalone/.next/server/app/api/v1/credentials/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/dashboard/currency/route.js +10 -10
- package/.next/standalone/.next/server/app/api/v1/dashboard/metrics/route.js +784 -784
- package/.next/standalone/.next/server/app/api/v1/dashboard/pricing/route.js +23 -23
- package/.next/standalone/.next/server/app/api/v1/dashboard/pricing-task/route.js +86 -86
- package/.next/standalone/.next/server/app/api/v1/dashboard/pricing-task/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/delegations/codex/[job_id]/route.js +57 -57
- package/.next/standalone/.next/server/app/api/v1/delegations/codex/[job_id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/documents/search/route.js +523 -523
- package/.next/standalone/.next/server/app/api/v1/documents/settings/route.js +44 -44
- package/.next/standalone/.next/server/app/api/v1/documents/sources/[id]/reindex/route.js +65 -65
- package/.next/standalone/.next/server/app/api/v1/documents/sources/[id]/reindex/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/documents/sources/[id]/route.js +122 -122
- package/.next/standalone/.next/server/app/api/v1/documents/sources/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/documents/sources/route.js +37 -37
- package/.next/standalone/.next/server/app/api/v1/documents/sources/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/env/route.js +9 -9
- package/.next/standalone/.next/server/app/api/v1/env-sync/allowlist/route.js +368 -368
- package/.next/standalone/.next/server/app/api/v1/env-sync/route.js +44 -44
- package/.next/standalone/.next/server/app/api/v1/events/route.js +751 -178
- package/.next/standalone/.next/server/app/api/v1/events/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/events/test/route.js +77 -77
- package/.next/standalone/.next/server/app/api/v1/extension/agents/route.js +763 -763
- package/.next/standalone/.next/server/app/api/v1/extension/agents/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/extension/browser/activate/route.js +44 -44
- package/.next/standalone/.next/server/app/api/v1/extension/browser/foreground/route.js +9 -9
- package/.next/standalone/.next/server/app/api/v1/extension/browser/history/route.js +65 -65
- package/.next/standalone/.next/server/app/api/v1/extension/browser/poll/route.js +34 -34
- package/.next/standalone/.next/server/app/api/v1/extension/browser/progress/route.js +204 -204
- package/.next/standalone/.next/server/app/api/v1/extension/browser/result/route.js +133 -133
- package/.next/standalone/.next/server/app/api/v1/extension/browser/retry/route.js +106 -106
- package/.next/standalone/.next/server/app/api/v1/extension/browser/status/route.js +114 -114
- package/.next/standalone/.next/server/app/api/v1/extension/browser/tabs/route.js +134 -134
- package/.next/standalone/.next/server/app/api/v1/extension/fill/route.js +690 -690
- package/.next/standalone/.next/server/app/api/v1/extension/fill/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/extension/refine/route.js +93 -93
- package/.next/standalone/.next/server/app/api/v1/extension/refine/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/extension/turn/route.js +9 -9
- package/.next/standalone/.next/server/app/api/v1/extension/turn/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/extensions/route.js +185 -185
- package/.next/standalone/.next/server/app/api/v1/extensions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/config/route.js +171 -171
- package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/route.js +396 -396
- package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/secrets/route.js +212 -212
- package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/secrets/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/files/[name]/route.js +235 -235
- package/.next/standalone/.next/server/app/api/v1/fs/browse/route.js +26 -26
- package/.next/standalone/.next/server/app/api/v1/harnesses/[id]/route.js +221 -221
- package/.next/standalone/.next/server/app/api/v1/harnesses/default/route.js +58 -58
- package/.next/standalone/.next/server/app/api/v1/harnesses/route.js +72 -72
- package/.next/standalone/.next/server/app/api/v1/health/probes/route.js +9 -9
- package/.next/standalone/.next/server/app/api/v1/health/probes/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/health/route.js +772 -772
- package/.next/standalone/.next/server/app/api/v1/integrations/[name]/route.js +133 -133
- package/.next/standalone/.next/server/app/api/v1/integrations/[name]/test/route.js +9 -9
- package/.next/standalone/.next/server/app/api/v1/integrations/[name]/test/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/callback/route.js +363 -363
- package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/start/route.js +233 -233
- package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/status/route.js +682 -682
- package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/callback/route.js +879 -879
- package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/start/route.js +108 -108
- package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/status/route.js +952 -952
- package/.next/standalone/.next/server/app/api/v1/integrations/route.js +216 -216
- package/.next/standalone/.next/server/app/api/v1/lifecycle/adoption/route.js +864 -847
- package/.next/standalone/.next/server/app/api/v1/lifecycle/adoption/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/local-file/route.js +26 -26
- package/.next/standalone/.next/server/app/api/v1/logs/route.js +70 -70
- package/.next/standalone/.next/server/app/api/v1/maps/embed/route.js +72 -72
- package/.next/standalone/.next/server/app/api/v1/mcp-servers/[name]/route.js +979 -979
- package/.next/standalone/.next/server/app/api/v1/mcp-servers/registry/route.js +196 -196
- package/.next/standalone/.next/server/app/api/v1/mcp-servers/route.js +2 -2
- package/.next/standalone/.next/server/app/api/v1/memory/[namespace]/[key]/route.js +381 -381
- package/.next/standalone/.next/server/app/api/v1/memory/policy/route.js +79 -79
- package/.next/standalone/.next/server/app/api/v1/memory/route.js +51 -51
- package/.next/standalone/.next/server/app/api/v1/memory/search/route.js +131 -131
- package/.next/standalone/.next/server/app/api/v1/models/[name]/compact-threads/route.js +374 -369
- package/.next/standalone/.next/server/app/api/v1/models/[name]/compact-threads/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/models/[name]/route.js +204 -163
- package/.next/standalone/.next/server/app/api/v1/models/route.js +548 -546
- package/.next/standalone/.next/server/app/api/v1/packages/catalog/route.js +445 -445
- package/.next/standalone/.next/server/app/api/v1/packages/defaults/[id]/route.js +120 -120
- package/.next/standalone/.next/server/app/api/v1/packages/defaults/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/packages/install/[id]/route.js +234 -234
- package/.next/standalone/.next/server/app/api/v1/packages/install/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/packages/install/route.js +407 -407
- package/.next/standalone/.next/server/app/api/v1/packages/install/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/packages/manifests/[name]/enabled/route.js +37 -37
- package/.next/standalone/.next/server/app/api/v1/packages/manifests/[name]/enabled/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/packages/manifests/[name]/route.js +107 -107
- package/.next/standalone/.next/server/app/api/v1/packages/manifests/[name]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/packages/manifests/route.js +228 -228
- package/.next/standalone/.next/server/app/api/v1/packages/manifests/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/packages/reload/route.js +9 -9
- package/.next/standalone/.next/server/app/api/v1/packages/reload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/packages/route.js +148 -148
- package/.next/standalone/.next/server/app/api/v1/packages/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/page-capture/route.js +787 -787
- package/.next/standalone/.next/server/app/api/v1/page-capture/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/pending-actions/[id]/approve/route.js +507 -507
- package/.next/standalone/.next/server/app/api/v1/pending-actions/[id]/approve/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/pending-actions/[id]/deny/route.js +181 -181
- package/.next/standalone/.next/server/app/api/v1/pending-actions/[id]/deny/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/pending-actions/route.js +258 -258
- package/.next/standalone/.next/server/app/api/v1/pending-actions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/profile/location/route.js +30 -30
- package/.next/standalone/.next/server/app/api/v1/profile/route.js +164 -164
- package/.next/standalone/.next/server/app/api/v1/providers/[provider]/models/route.js +71 -68
- package/.next/standalone/.next/server/app/api/v1/providers/[provider]/probe/route.js +9 -9
- package/.next/standalone/.next/server/app/api/v1/providers/github-copilot/auth/route.js +164 -164
- package/.next/standalone/.next/server/app/api/v1/providers/route.js +94 -94
- package/.next/standalone/.next/server/app/api/v1/proxy-config/route.js +450 -450
- package/.next/standalone/.next/server/app/api/v1/redaction/init/route.js +37 -37
- package/.next/standalone/.next/server/app/api/v1/redaction/route.js +58 -58
- package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/[id]/route.js +600 -600
- package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/[id]/run/route.js +44 -44
- package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/[id]/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/route.js +732 -732
- package/.next/standalone/.next/server/app/api/v1/security/idle-timeout/route.js +359 -359
- package/.next/standalone/.next/server/app/api/v1/security/pin/route.js +197 -197
- package/.next/standalone/.next/server/app/api/v1/security/state/route.js +51 -51
- package/.next/standalone/.next/server/app/api/v1/security/unlock/route.js +176 -176
- package/.next/standalone/.next/server/app/api/v1/security/verify-pin/route.js +190 -190
- package/.next/standalone/.next/server/app/api/v1/setup/test-key/route.js +26 -26
- package/.next/standalone/.next/server/app/api/v1/skills/[id]/route.js +770 -770
- package/.next/standalone/.next/server/app/api/v1/skills/repos/[id]/route.js +115 -115
- package/.next/standalone/.next/server/app/api/v1/skills/repos/route.js +327 -327
- package/.next/standalone/.next/server/app/api/v1/skills/route.js +870 -870
- package/.next/standalone/.next/server/app/api/v1/system/abort/route.js +838 -808
- package/.next/standalone/.next/server/app/api/v1/system/restart/route.js +177 -177
- package/.next/standalone/.next/server/app/api/v1/system/restart/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/tailscale/route.js +164 -164
- package/.next/standalone/.next/server/app/api/v1/tasks/[agent_id]/route.js +115 -115
- package/.next/standalone/.next/server/app/api/v1/tasks/route.js +23 -23
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/activity/route.js +1429 -0
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/activity/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/activity/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/context-pin/route.js +635 -634
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/context-pin/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/route.js +53 -439
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js +172 -172
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/threads/route.js +908 -908
- package/.next/standalone/.next/server/app/api/v1/tools/route.js +2 -2
- package/.next/standalone/.next/server/app/api/v1/tools/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/update/apply/route.js +17 -17
- package/.next/standalone/.next/server/app/api/v1/update/apply/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/update/route.js +570 -570
- package/.next/standalone/.next/server/app/api/v1/voice/transcribe/route.js +224 -224
- package/.next/standalone/.next/server/app/api/v1/voice/tts/route.js +975 -975
- package/.next/standalone/.next/server/app/api/v1/watchers/[id]/route.js +23 -23
- package/.next/standalone/.next/server/app/api/v1/watchers/[id]/run/route.js +72 -72
- package/.next/standalone/.next/server/app/api/v1/watchers/[id]/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/watchers/reaction-scripts/route.js +128 -128
- package/.next/standalone/.next/server/app/api/v1/watchers/route.js +164 -164
- package/.next/standalone/.next/server/app/api/v1/watchers/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/icon.svg/route.js +62 -62
- package/.next/standalone/.next/server/app/manifest.webmanifest/route.js +436 -436
- package/.next/standalone/.next/server/app/page.js +1170 -719
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup/page.js +91 -91
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +4 -3
- package/.next/standalone/.next/server/chunks/{424.js → 1388.js} +345 -991
- package/.next/standalone/.next/server/chunks/1433.js +1 -1
- package/.next/standalone/.next/server/chunks/1638.js +1 -2
- package/.next/standalone/.next/server/chunks/1738.js +1 -1
- package/.next/standalone/.next/server/chunks/210.js +6 -6
- package/.next/standalone/.next/server/chunks/2151.js +31 -1
- package/.next/standalone/.next/server/chunks/2207.js +1 -0
- package/.next/standalone/.next/server/chunks/2471.js +45 -45
- package/.next/standalone/.next/server/chunks/2504.js +1 -1
- package/.next/standalone/.next/server/chunks/2695.js +17 -17
- package/.next/standalone/.next/server/chunks/3042.js +14 -8
- package/.next/standalone/.next/server/chunks/3399.js +10695 -10695
- package/.next/standalone/.next/server/chunks/3524.js +5 -33
- package/.next/standalone/.next/server/chunks/3566.js +1 -1
- package/.next/standalone/.next/server/chunks/4189.js +946 -0
- package/.next/standalone/.next/server/chunks/{9590.js → 423.js} +116 -49
- package/.next/standalone/.next/server/chunks/4433.js +146 -146
- package/.next/standalone/.next/server/chunks/4508.js +3 -3
- package/.next/standalone/.next/server/chunks/4588.js +1 -0
- package/.next/standalone/.next/server/chunks/46.js +116 -46
- package/.next/standalone/.next/server/chunks/466.js +100 -13
- package/.next/standalone/.next/server/chunks/4868.js +206 -206
- package/.next/standalone/.next/server/chunks/4992.js +13 -0
- package/.next/standalone/.next/server/chunks/5120.js +963 -0
- package/.next/standalone/.next/server/chunks/5701.js +1 -1
- package/.next/standalone/.next/server/chunks/5900.js +1 -1
- package/.next/standalone/.next/server/chunks/6210.js +1 -0
- package/.next/standalone/.next/server/chunks/6213.js +1 -1
- package/.next/standalone/.next/server/chunks/6649.js +3 -3
- package/.next/standalone/.next/server/chunks/6703.js +3 -3
- package/.next/standalone/.next/server/chunks/7445.js +1 -0
- package/.next/standalone/.next/server/chunks/8067.js +12 -0
- package/.next/standalone/.next/server/chunks/8461.js +14 -9
- package/.next/standalone/.next/server/chunks/8558.js +1 -1
- package/.next/standalone/.next/server/chunks/8724.js +1 -1
- package/.next/standalone/.next/server/chunks/8849.js +91 -91
- package/.next/standalone/.next/server/chunks/9032.js +6 -5
- package/.next/standalone/.next/server/chunks/{2563.js → 9164.js} +33106 -31420
- package/.next/standalone/.next/server/chunks/9237.js +396 -396
- package/.next/standalone/.next/server/chunks/{9640.js → 9304.js} +1628 -573
- package/.next/standalone/.next/server/chunks/9406.js +1 -1
- package/.next/standalone/.next/server/chunks/9824.js +98 -98
- package/.next/standalone/.next/server/chunks/9826.js +1 -0
- package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
- package/.next/standalone/.next/server/middleware.js +519 -442
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/preview-props.json +3 -3
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{1395-f201e3e2e1f57715.js → 1395-e4a99912b8f83044.js} +101 -14
- package/.next/standalone/.next/static/chunks/{4576-13f7546a145a3624.js → 7045-8bc2f14e430ca661.js} +58 -2
- package/.next/standalone/.next/static/chunks/app/_global-error/{page-36cb8b428b38b26a.js → page-6fc5f8e744c81802.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/access/[identity]/{route-36cb8b428b38b26a.js → route-6fc5f8e744c81802.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/access/{route-36cb8b428b38b26a.js → route-6fc5f8e744c81802.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/compact/{route-36cb8b428b38b26a.js → route-6fc5f8e744c81802.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/display-filters/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/thread/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/agents/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/allowed-sites/[hostname]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/allowed-sites/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/artifacts/lifecycle/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/attachments/files/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/attachments/images/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/chats/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/ignores/[remote_jid]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/ignores/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/lookup/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/pair/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/routes/[route_id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/routes/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/status/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/kinds/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/builtin-tools/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/config/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/credentials/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/credentials/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/currency/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/metrics/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/pricing/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/pricing-task/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/delegations/codex/[job_id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/search/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/settings/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/[id]/reindex/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/env/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/env-sync/allowlist/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/env-sync/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/events/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/events/test/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/agents/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/activate/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/foreground/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/history/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/poll/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/progress/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/result/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/retry/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/status/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/tabs/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/fill/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/refine/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/turn/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extensions/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/config/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/secrets/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/files/[name]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/fs/browse/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/default/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/health/probes/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/health/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/[name]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/[name]/test/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/callback/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/start/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/status/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/callback/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/start/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/status/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/lifecycle/adoption/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/local-file/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/logs/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/maps/embed/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/[name]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/registry/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/memory/[namespace]/[key]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/memory/policy/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/memory/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/memory/search/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/models/[name]/compact-threads/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/models/[name]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/models/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/catalog/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/defaults/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/install/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/install/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/[name]/enabled/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/[name]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/reload/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/page-capture/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/[id]/approve/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/[id]/deny/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/profile/location/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/profile/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/providers/[provider]/models/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/providers/[provider]/probe/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/providers/github-copilot/auth/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/providers/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/proxy-config/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/redaction/init/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/redaction/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/[id]/run/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/security/idle-timeout/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/security/pin/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/security/state/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/security/unlock/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/security/verify-pin/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/setup/test-key/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/skills/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/skills/repos/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/skills/repos/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/skills/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/system/abort/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/system/restart/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/tailscale/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/tasks/[agent_id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/tasks/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/activity/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/context-pin/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/run/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/threads/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/tools/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/update/apply/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/update/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/voice/transcribe/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/voice/tts/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/watchers/[id]/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/watchers/[id]/run/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/watchers/reaction-scripts/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/watchers/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/app/{page-c6e972a7fd13dae8.js → page-213a623b37226452.js} +1012 -604
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6fc5f8e744c81802.js +17 -0
- package/.next/standalone/.next/static/css/{d80058f0b9b41c09.css → 312542a5725ba0d5.css} +2 -2
- package/.next/standalone/docs/adoption/changesets.json +309 -0
- package/.next/standalone/lib/skills/builtins/memory-organization/SKILL.md +16 -0
- package/.next/standalone/package.json +3 -3
- package/CHANGELOG.md +33 -0
- package/api/client.models.test.ts +31 -0
- package/api/client.ts +25 -1
- package/api/types.ts +37 -0
- package/app/api/v1/lifecycle/adoption/route.ts +14 -2
- package/app/api/v1/models/[name]/compact-threads/route.ts +14 -11
- package/app/api/v1/models/[name]/route.test.ts +89 -0
- package/app/api/v1/models/[name]/route.ts +54 -3
- package/app/api/v1/models/route.ts +4 -2
- package/app/api/v1/providers/[provider]/models/route.test.ts +53 -0
- package/app/api/v1/providers/[provider]/models/route.ts +27 -16
- package/app/api/v1/threads/[thread_id]/activity/route.ts +19 -0
- package/app/api/v1/threads/[thread_id]/context-pin/route.test.ts +1 -0
- package/app/api/v1/threads/[thread_id]/context-pin/route.ts +2 -1
- package/app/api/v1/threads/[thread_id]/route.ts +5 -1
- package/components/agents/agent-editor/AdvancedSection.tsx +8 -2
- package/components/agents/agent-editor/ModelSection.tsx +6 -3
- package/components/chat/ChatView.tsx +52 -11
- package/components/chat/ContextBoundary.test.tsx +68 -1
- package/components/chat/ContextBoundary.tsx +92 -13
- package/components/chat/MessageList.test.tsx +31 -0
- package/components/chat/MessageList.tsx +49 -28
- package/components/chat/ToolList.test.tsx +92 -16
- package/components/chat/ToolList.tsx +59 -4
- package/components/chat/chat-helpers.test.tsx +24 -1
- package/components/chat/chat-helpers.ts +47 -4
- package/components/chat/useThreadActivity.test.tsx +113 -0
- package/components/chat/useThreadActivity.ts +94 -0
- package/components/chat/useThreadData.ts +16 -16
- package/components/chat/workflow-step-retry.ts +25 -0
- package/components/models/ModelEditor.tsx +1 -1
- package/components/models/ModelsPanel.tsx +34 -8
- package/components/models/model-editor/GitHubCopilotAuth.tsx +1 -1
- package/components/models/model-editor/save-helpers.ts +2 -2
- package/components/models/model-editor/useModelEditorForm.ts +1 -1
- package/components/models/model-editor/useModelSaveHandlers.ts +1 -1
- package/components/setup/wizard/StepCredentials.tsx +1 -1
- package/components/setup/wizard/StepModel.tsx +3 -8
- package/components/ui/BootScreen.tsx +17 -0
- package/components/ui/WorkflowChecklist.tsx +71 -33
- package/hooks/useModels.ts +17 -1
- package/hooks/useSSE.ts +28 -3
- package/lib/agents/compaction-pipeline.test.ts +202 -0
- package/lib/agents/compaction-pipeline.ts +483 -0
- package/lib/agents/conversation-summary.ts +37 -21
- package/lib/agents/effective-model.test.ts +45 -0
- package/lib/agents/effective-model.ts +11 -5
- package/lib/agents/llm.ts +2 -2
- package/lib/agents/prepare/history-window.test.ts +18 -0
- package/lib/agents/prepare/history-window.ts +11 -2
- package/lib/agents/prepare/request.ts +4 -0
- package/lib/agents/prepare/system-prompt.test.ts +39 -0
- package/lib/agents/prepare/system-prompt.ts +8 -3
- package/lib/agents/prompt-registry.test.ts +5 -140
- package/lib/agents/prompt-registry.ts +45 -1
- package/lib/agents/prompt-variants.ts +146 -0
- package/lib/agents/run-registry.test.ts +22 -0
- package/lib/agents/run-registry.ts +29 -0
- package/lib/agents/run-thread.retry.test.ts +67 -1
- package/lib/agents/run-thread.ts +96 -6
- package/lib/agents/thread-activity.test.ts +31 -0
- package/lib/agents/thread-activity.ts +27 -0
- package/lib/agents/thread-compaction-state.test.ts +82 -0
- package/lib/agents/thread-compaction-state.ts +121 -0
- package/lib/agents/thread-compaction.test.ts +83 -4
- package/lib/agents/thread-compaction.ts +34 -11
- package/lib/agents/warm-summary-background.test.ts +220 -7
- package/lib/agents/warm-summary-background.ts +329 -149
- package/lib/agents/warm-topics.test.ts +37 -0
- package/lib/agents/warm-topics.ts +297 -0
- package/lib/agents/workflow-step-retry.test.ts +96 -0
- package/lib/agents/workflow-step-retry.ts +216 -0
- package/lib/api/browser-control.ts +0 -3
- package/lib/db/migrations.ts +15 -0
- package/lib/env/config.ts +2 -0
- package/lib/env/schema.ts +12 -0
- package/lib/health/probes.test.ts +8 -11
- package/lib/health/probes.ts +5 -31
- package/lib/lifecycle/changeset-build.test.ts +93 -0
- package/lib/lifecycle/changeset-build.ts +210 -0
- package/lib/lifecycle/changesets.test.ts +101 -0
- package/lib/lifecycle/changesets.ts +166 -0
- package/lib/lifecycle/surface-collect.test.ts +88 -0
- package/lib/lifecycle/surface-collect.ts +64 -0
- package/lib/lifecycle/surface-snapshot.test.ts +104 -0
- package/lib/lifecycle/surface-snapshot.ts +210 -0
- package/lib/memory/record.ts +0 -2
- package/lib/models/editor-payload.ts +1 -1
- package/lib/providers/external.ts +0 -2
- package/lib/providers/github-copilot-auth.ts +2 -3
- package/lib/providers/github-copilot.test.ts +27 -0
- package/lib/providers/github-copilot.ts +21 -44
- package/lib/skills/builtins/memory-organization/SKILL.md +16 -0
- package/lib/stores/integrations.test.ts +7 -0
- package/lib/stores/integrations.ts +4 -4
- package/lib/stores/model-config.test.ts +88 -0
- package/lib/stores/model-config.ts +90 -8
- package/lib/stores/threads.test.ts +9 -0
- package/lib/stores/threads.ts +21 -11
- package/lib/stores/version-adoption.test.ts +96 -0
- package/lib/stores/version-adoption.ts +239 -26
- package/lib/stores/workflow-progress.ts +3 -0
- package/lib/tools/communications/ms-todo.ts +0 -7
- package/lib/tools/general/memory.ts +1 -1
- package/lib/tools/general/workflow-progress.ts +2 -0
- package/lib/tools/runtime/catalog.ts +1 -25
- package/lib/triggers/registry.ts +0 -4
- package/package.json +3 -3
- package/scripts/install-to-system.ps1 +39 -11
- package/scripts/install-to-system.sh +37 -3
- package/.next/standalone/.next/server/chunks/3979.js +0 -581
- package/.next/standalone/.next/server/chunks/5936.js +0 -594
- package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/display-filters/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/thread/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/agents/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/allowed-sites/[hostname]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/allowed-sites/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/artifacts/lifecycle/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/attachments/files/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/attachments/images/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/chats/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/ignores/[remote_jid]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/ignores/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/lookup/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/pair/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/routes/[route_id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/routes/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/status/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/kinds/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/bridges/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/builtin-tools/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/config/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/credentials/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/credentials/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/currency/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/metrics/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/pricing/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/pricing-task/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/delegations/codex/[job_id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/search/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/settings/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/[id]/reindex/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/env/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/env-sync/allowlist/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/env-sync/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/events/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/events/test/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/agents/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/activate/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/foreground/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/history/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/poll/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/progress/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/result/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/retry/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/status/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/tabs/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/fill/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/refine/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extension/turn/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extensions/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/config/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/secrets/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/files/[name]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/fs/browse/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/default/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/health/probes/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/health/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/[name]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/[name]/test/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/callback/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/start/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/status/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/callback/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/start/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/status/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/integrations/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/lifecycle/adoption/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/local-file/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/logs/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/maps/embed/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/[name]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/registry/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/memory/[namespace]/[key]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/memory/policy/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/memory/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/memory/search/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/models/[name]/compact-threads/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/models/[name]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/models/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/catalog/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/defaults/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/install/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/install/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/[name]/enabled/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/[name]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/reload/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/packages/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/page-capture/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/[id]/approve/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/[id]/deny/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/profile/location/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/profile/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/providers/[provider]/models/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/providers/[provider]/probe/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/providers/github-copilot/auth/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/providers/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/proxy-config/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/redaction/init/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/redaction/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/[id]/run/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/security/idle-timeout/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/security/pin/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/security/state/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/security/unlock/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/security/verify-pin/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/setup/test-key/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/skills/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/skills/repos/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/skills/repos/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/skills/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/system/abort/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/system/restart/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/tailscale/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/tasks/[agent_id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/tasks/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/context-pin/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/run/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/threads/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/tools/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/update/apply/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/update/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/voice/transcribe/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/voice/tts/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/watchers/[id]/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/watchers/[id]/run/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/watchers/reaction-scripts/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/api/v1/watchers/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-36cb8b428b38b26a.js +0 -17
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-36cb8b428b38b26a.js +0 -17
- /package/.next/standalone/.next/static/{e2NV1wk6mWg3SIeELXevg → bMRK5y3ruT7c3WtBfCQOG}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{e2NV1wk6mWg3SIeELXevg → bMRK5y3ruT7c3WtBfCQOG}/_ssgManifest.js +0 -0
|
@@ -498,6 +498,7 @@ function runMigrations(db) {
|
|
|
498
498
|
ensureCredentialsTable(db);
|
|
499
499
|
ensureCredentialsLabelAndDefaultColumns(db);
|
|
500
500
|
ensureModelConfigCredentialIdColumn(db);
|
|
501
|
+
ensureModelConfigEnabledColumn(db);
|
|
501
502
|
ensureAgentConfigsToolCredentialsColumn(db);
|
|
502
503
|
seedAgentConfigs(db);
|
|
503
504
|
backfillDeveloperInteractiveTerminalTools(db);
|
|
@@ -662,6 +663,11 @@ function ensureThreadChannelSummariesTable(db) {
|
|
|
662
663
|
if (!cols.some((column)=>column.name === "summary_before_seq")) {
|
|
663
664
|
db.exec("ALTER TABLE thread_channel_summaries ADD COLUMN summary_before_seq INTEGER");
|
|
664
665
|
}
|
|
666
|
+
// Stored topic segments (JSON array) so the next compaction can merge new
|
|
667
|
+
// activity into them instead of re-summarising the channel from scratch.
|
|
668
|
+
if (!cols.some((column)=>column.name === "topics")) {
|
|
669
|
+
db.exec("ALTER TABLE thread_channel_summaries ADD COLUMN topics TEXT");
|
|
670
|
+
}
|
|
665
671
|
}
|
|
666
672
|
// ADR-0041. Immutable per-assistant-turn snapshot of LLM usage. Written once
|
|
667
673
|
// alongside addMessage(...,"assistant",...) and never updated, so the
|
|
@@ -1484,6 +1490,14 @@ function ensureModelConfigCredentialIdColumn(db) {
|
|
|
1484
1490
|
db.exec("ALTER TABLE model_configs ADD COLUMN credential_id TEXT");
|
|
1485
1491
|
}
|
|
1486
1492
|
}
|
|
1493
|
+
// ADR-0102: disabled model configs stay saved but are hidden from model
|
|
1494
|
+
// selection, routing, and default fallback. Existing rows default to enabled.
|
|
1495
|
+
function ensureModelConfigEnabledColumn(db) {
|
|
1496
|
+
const cols = db.prepare("PRAGMA table_info(model_configs)").all();
|
|
1497
|
+
if (!cols.some((c)=>c.name === "enabled")) {
|
|
1498
|
+
db.exec("ALTER TABLE model_configs ADD COLUMN enabled INTEGER NOT NULL DEFAULT 1");
|
|
1499
|
+
}
|
|
1500
|
+
}
|
|
1487
1501
|
// Idempotent backfill: for each model_config still carrying an inline
|
|
1488
1502
|
// `api_key` (and no `credential_id` yet), create a credential row and
|
|
1489
1503
|
// link by id. Strips the api_key / base_url / extra_headers fields from
|
|
@@ -7315,17 +7329,17 @@ function pickGitHubCompatOptions(params) {
|
|
|
7315
7329
|
return out;
|
|
7316
7330
|
}
|
|
7317
7331
|
const tokenCache = new Map();
|
|
7318
|
-
function
|
|
7319
|
-
return token.startsWith("ghp_") || token.startsWith("github_pat_")
|
|
7332
|
+
function isGitHubPat(token) {
|
|
7333
|
+
return token.startsWith("ghp_") || token.startsWith("github_pat_");
|
|
7320
7334
|
}
|
|
7321
|
-
async function
|
|
7322
|
-
if (!
|
|
7323
|
-
const cached = tokenCache.get(
|
|
7335
|
+
async function exchangeCopilotSessionToken(githubToken) {
|
|
7336
|
+
if (!githubToken) throw new Error("GitHub Copilot: no API key configured for token exchange.");
|
|
7337
|
+
const cached = tokenCache.get(githubToken);
|
|
7324
7338
|
if (cached && cached.expiresAt - Date.now() > 60000) return cached.token;
|
|
7325
|
-
tokenCache.delete(
|
|
7339
|
+
tokenCache.delete(githubToken);
|
|
7326
7340
|
const res = await fetch("https://api.github.com/copilot_internal/v2/token", {
|
|
7327
7341
|
headers: {
|
|
7328
|
-
Authorization: `token ${
|
|
7342
|
+
Authorization: `token ${githubToken}`,
|
|
7329
7343
|
"User-Agent": "Jarela/1.0"
|
|
7330
7344
|
},
|
|
7331
7345
|
signal: AbortSignal.timeout(30000)
|
|
@@ -7333,17 +7347,17 @@ async function getCopilotToken(pat) {
|
|
|
7333
7347
|
if (!res.ok) {
|
|
7334
7348
|
const body = await (0,error/* readErrorBody */.N)(res);
|
|
7335
7349
|
if (res.status === 401) {
|
|
7336
|
-
throw new Error(`GitHub Copilot: token exchange failed (401). ` + `
|
|
7350
|
+
throw new Error(`GitHub Copilot: token exchange failed (401). ` + `Check that this GitHub account has an active Copilot subscription and the credential is valid. ` + `Details: ${body}`);
|
|
7337
7351
|
}
|
|
7338
7352
|
if (res.status === 404) {
|
|
7339
|
-
throw new Error("GitHub Copilot
|
|
7353
|
+
throw new Error("GitHub Copilot could not exchange this credential for a session token. " + "Use the in-app device-flow sign-in or set params.copilot_session_token.");
|
|
7340
7354
|
}
|
|
7341
7355
|
throw new Error(`GitHub Copilot: token exchange failed (${res.status}): ${body}`);
|
|
7342
7356
|
}
|
|
7343
7357
|
const json = await res.json();
|
|
7344
7358
|
if (!json.token) throw new Error("GitHub Copilot: token exchange returned no token");
|
|
7345
7359
|
const expiresAt = json.expires_at ? new Date(json.expires_at).getTime() : Date.now() + 28 * 60000;
|
|
7346
|
-
tokenCache.set(
|
|
7360
|
+
tokenCache.set(githubToken, {
|
|
7347
7361
|
token: json.token,
|
|
7348
7362
|
expiresAt
|
|
7349
7363
|
});
|
|
@@ -7374,7 +7388,6 @@ async function resolveCopilotAuth(params) {
|
|
|
7374
7388
|
const explicitSessionToken = params.copilot_session_token?.trim();
|
|
7375
7389
|
if (explicitSessionToken && explicitSessionToken.length > 0) {
|
|
7376
7390
|
return {
|
|
7377
|
-
kind: "copilot-api",
|
|
7378
7391
|
baseURL: params.base_url ?? "https://api.githubcopilot.com",
|
|
7379
7392
|
apiKey: explicitSessionToken,
|
|
7380
7393
|
headers: {
|
|
@@ -7384,9 +7397,8 @@ async function resolveCopilotAuth(params) {
|
|
|
7384
7397
|
}
|
|
7385
7398
|
const oauthToken = (0,github_copilot_auth.getStoredOAuthToken)();
|
|
7386
7399
|
if (oauthToken) {
|
|
7387
|
-
const token = await
|
|
7400
|
+
const token = await exchangeCopilotSessionToken(oauthToken);
|
|
7388
7401
|
return {
|
|
7389
|
-
kind: "copilot-api",
|
|
7390
7402
|
baseURL: params.base_url ?? "https://api.githubcopilot.com",
|
|
7391
7403
|
apiKey: token,
|
|
7392
7404
|
headers: {
|
|
@@ -7394,23 +7406,14 @@ async function resolveCopilotAuth(params) {
|
|
|
7394
7406
|
}
|
|
7395
7407
|
};
|
|
7396
7408
|
}
|
|
7397
|
-
if (apiKey &&
|
|
7398
|
-
|
|
7399
|
-
kind: "models-rest",
|
|
7400
|
-
baseURL: params.base_url ?? "https://models.github.ai/inference",
|
|
7401
|
-
apiKey,
|
|
7402
|
-
headers: {
|
|
7403
|
-
Accept: "application/vnd.github+json",
|
|
7404
|
-
"X-GitHub-Api-Version": "2026-03-10"
|
|
7405
|
-
}
|
|
7406
|
-
};
|
|
7409
|
+
if (apiKey && isGitHubPat(apiKey)) {
|
|
7410
|
+
throw new Error("GitHub Copilot: this provider's GitHub PAT route used GitHub Models, which has been retired. " + "Use the in-app device-flow sign-in or set copilot_session_token.");
|
|
7407
7411
|
}
|
|
7408
7412
|
if (!apiKey) {
|
|
7409
7413
|
throw new Error("GitHub Copilot: not signed in. Use the in-app device-flow login, or set api_key / copilot_session_token.");
|
|
7410
7414
|
}
|
|
7411
|
-
const token = await
|
|
7415
|
+
const token = await exchangeCopilotSessionToken(apiKey);
|
|
7412
7416
|
return {
|
|
7413
|
-
kind: "copilot-api",
|
|
7414
7417
|
baseURL: params.base_url ?? "https://api.githubcopilot.com",
|
|
7415
7418
|
apiKey: token,
|
|
7416
7419
|
headers: {
|
|
@@ -7421,14 +7424,9 @@ async function resolveCopilotAuth(params) {
|
|
|
7421
7424
|
// Anthropic SDK client pointed at Copilot's native `/v1/messages` endpoint.
|
|
7422
7425
|
// Copilot accepts the Anthropic request shape (including `cache_control`
|
|
7423
7426
|
// ephemeral breakpoints) for Claude-family models when called with a
|
|
7424
|
-
// session token.
|
|
7425
|
-
// this endpoint, so we surface a clear error there instead of silently
|
|
7426
|
-
// downgrading to a path that strips the cache markers.
|
|
7427
|
+
// Copilot session token.
|
|
7427
7428
|
async function resolvedAnthropicClient(params) {
|
|
7428
7429
|
const auth = await resolveCopilotAuth(params);
|
|
7429
|
-
if (auth.kind !== "copilot-api") {
|
|
7430
|
-
throw new Error("GitHub Copilot: Claude models require a Copilot session token (OAuth or copilot_session_token). " + "Personal Access Tokens route to GitHub Models REST, which does not expose the native Messages API.");
|
|
7431
|
-
}
|
|
7432
7430
|
return new client/* Anthropic */.NB({
|
|
7433
7431
|
// The SDK requires an apiKey field; we authenticate via authToken
|
|
7434
7432
|
// (Authorization: Bearer ...) per Copilot's contract. The empty
|
|
@@ -9481,14 +9479,14 @@ const INTEGRATIONS = {
|
|
|
9481
9479
|
"github-copilot": {
|
|
9482
9480
|
label: "GitHub Copilot",
|
|
9483
9481
|
category: "llm",
|
|
9484
|
-
description: "Routes chat-completion requests through your Copilot subscription.
|
|
9482
|
+
description: "Routes chat-completion requests through your Copilot subscription. Use the device-flow " + "sign-in in the Models panel; legacy GitHub PAT authentication is no longer supported.",
|
|
9485
9483
|
fields: [
|
|
9486
9484
|
{
|
|
9487
9485
|
key: "api_key",
|
|
9488
|
-
label: "GitHub PAT",
|
|
9489
|
-
placeholder: "
|
|
9486
|
+
label: "Legacy GitHub PAT (unsupported)",
|
|
9487
|
+
placeholder: "Use Models panel sign-in",
|
|
9490
9488
|
secret: true,
|
|
9491
|
-
required:
|
|
9489
|
+
required: false
|
|
9492
9490
|
}
|
|
9493
9491
|
]
|
|
9494
9492
|
},
|
|
@@ -9758,6 +9756,7 @@ function saveIntegration(name, incoming) {
|
|
|
9758
9756
|
if (f.required && !v.trim()) return {
|
|
9759
9757
|
error: `"${f.key}" cannot be empty`
|
|
9760
9758
|
};
|
|
9759
|
+
if (!v.trim()) continue;
|
|
9761
9760
|
merged[f.key] = v;
|
|
9762
9761
|
if (existing[f.key] !== v) touched.push(f.key);
|
|
9763
9762
|
}
|
|
@@ -9904,11 +9903,17 @@ function isRetryableProviderStreamError(msg) {
|
|
|
9904
9903
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9905
9904
|
/* harmony export */ Ac: () => (/* binding */ getModelConfig),
|
|
9906
9905
|
/* harmony export */ D1: () => (/* binding */ listModelConfigs),
|
|
9906
|
+
/* harmony export */ FO: () => (/* binding */ isModelConfigEnabled),
|
|
9907
9907
|
/* harmony export */ JI: () => (/* binding */ deleteModelConfig),
|
|
9908
|
+
/* harmony export */ LZ: () => (/* binding */ ModelConfigStateError),
|
|
9908
9909
|
/* harmony export */ TN: () => (/* binding */ upsertModelConfig),
|
|
9910
|
+
/* harmony export */ Z1: () => (/* binding */ setModelConfigEnabled),
|
|
9911
|
+
/* harmony export */ dj: () => (/* binding */ setDefaultModelConfig),
|
|
9909
9912
|
/* harmony export */ h5: () => (/* binding */ withModelConfigMutation),
|
|
9913
|
+
/* harmony export */ "if": () => (/* binding */ listEnabledModelConfigs),
|
|
9910
9914
|
/* harmony export */ lB: () => (/* binding */ getDefaultModelConfig),
|
|
9911
|
-
/* harmony export */ mN: () => (/* binding */ getModelParams)
|
|
9915
|
+
/* harmony export */ mN: () => (/* binding */ getModelParams),
|
|
9916
|
+
/* harmony export */ np: () => (/* binding */ resolveRunnableModelConfig)
|
|
9912
9917
|
/* harmony export */ });
|
|
9913
9918
|
/* harmony import */ var _lib_db__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46);
|
|
9914
9919
|
/* harmony import */ var _lib_crypto_envelope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10938);
|
|
@@ -9924,6 +9929,14 @@ const now = ()=>new Date().toISOString();
|
|
|
9924
9929
|
function withModelConfigMutation(name, operation) {
|
|
9925
9930
|
return (0,_lib_utils_keyed_mutation__WEBPACK_IMPORTED_MODULE_4__/* .withKeyedMutation */ .m)(`model-config:${name}`, operation);
|
|
9926
9931
|
}
|
|
9932
|
+
class ModelConfigStateError extends Error {
|
|
9933
|
+
constructor(message, status){
|
|
9934
|
+
super(message), this.status = status;
|
|
9935
|
+
}
|
|
9936
|
+
}
|
|
9937
|
+
function isModelConfigEnabled(cfg) {
|
|
9938
|
+
return !!cfg && cfg.enabled !== 0;
|
|
9939
|
+
}
|
|
9927
9940
|
// `params` holds the provider API key alongside hyperparameters and is
|
|
9928
9941
|
// stored encrypted at rest (ADR-0005). Decrypt before returning rows.
|
|
9929
9942
|
function decryptRow(row) {
|
|
@@ -9936,18 +9949,74 @@ function listModelConfigs() {
|
|
|
9936
9949
|
const rows = (0,_lib_db__WEBPACK_IMPORTED_MODULE_0__/* .getDb */ .Lf)().prepare("SELECT * FROM model_configs ORDER BY is_default DESC, name ASC").all();
|
|
9937
9950
|
return rows.map(decryptRow);
|
|
9938
9951
|
}
|
|
9952
|
+
/** Model configs that may be offered for selection or routing. */ function listEnabledModelConfigs() {
|
|
9953
|
+
return listModelConfigs().filter(isModelConfigEnabled);
|
|
9954
|
+
}
|
|
9939
9955
|
function getModelConfig(name) {
|
|
9940
9956
|
const row = (0,_lib_db__WEBPACK_IMPORTED_MODULE_0__/* .getDb */ .Lf)().prepare("SELECT * FROM model_configs WHERE name=?").get(name) ?? null;
|
|
9941
9957
|
return row ? decryptRow(row) : null;
|
|
9942
9958
|
}
|
|
9943
9959
|
function getDefaultModelConfig() {
|
|
9944
9960
|
const db = (0,_lib_db__WEBPACK_IMPORTED_MODULE_0__/* .getDb */ .Lf)();
|
|
9945
|
-
const row = db.prepare("SELECT * FROM model_configs WHERE is_default=1 LIMIT 1").get() ?? null;
|
|
9961
|
+
const row = db.prepare("SELECT * FROM model_configs WHERE is_default=1 AND enabled=1 LIMIT 1").get() ?? null;
|
|
9946
9962
|
if (row) return decryptRow(row);
|
|
9947
|
-
const fallback = db.prepare("SELECT * FROM model_configs ORDER BY name ASC LIMIT 1").get() ?? null;
|
|
9963
|
+
const fallback = db.prepare("SELECT * FROM model_configs WHERE enabled=1 ORDER BY name ASC LIMIT 1").get() ?? null;
|
|
9948
9964
|
return fallback ? decryptRow(fallback) : null;
|
|
9949
9965
|
}
|
|
9950
|
-
|
|
9966
|
+
/**
|
|
9967
|
+
* Resolve the config a run should use: the named config when it exists and is
|
|
9968
|
+
* enabled, otherwise the workspace default. A disabled assignment therefore
|
|
9969
|
+
* falls back without being cleared, so re-enabling restores it.
|
|
9970
|
+
*/ function resolveRunnableModelConfig(name) {
|
|
9971
|
+
const named = name ? getModelConfig(name) : null;
|
|
9972
|
+
if (named && isModelConfigEnabled(named)) return named;
|
|
9973
|
+
return getDefaultModelConfig();
|
|
9974
|
+
}
|
|
9975
|
+
/** Atomically make `name` the only default model config. */ function setDefaultModelConfig(name) {
|
|
9976
|
+
return (0,_lib_db_transaction__WEBPACK_IMPORTED_MODULE_3__/* .withDbTransaction */ .J)(()=>{
|
|
9977
|
+
const db = (0,_lib_db__WEBPACK_IMPORTED_MODULE_0__/* .getDb */ .Lf)();
|
|
9978
|
+
const target = getModelConfig(name);
|
|
9979
|
+
if (!target) throw new ModelConfigStateError(`Model config "${name}" not found`, 404);
|
|
9980
|
+
if (!isModelConfigEnabled(target)) {
|
|
9981
|
+
throw new ModelConfigStateError(`Model config "${name}" is disabled; enable it before making it the default`, 409);
|
|
9982
|
+
}
|
|
9983
|
+
const t = now();
|
|
9984
|
+
db.prepare("UPDATE model_configs SET is_default=0, updated_at=? WHERE is_default=1 AND name<>?").run(t, name);
|
|
9985
|
+
db.prepare("UPDATE model_configs SET is_default=1, updated_at=? WHERE name=?").run(t, name);
|
|
9986
|
+
return getModelConfig(name);
|
|
9987
|
+
});
|
|
9988
|
+
}
|
|
9989
|
+
/**
|
|
9990
|
+
* Enable or disable a model config. Disabling the default promotes the
|
|
9991
|
+
* alphabetically-first other enabled config in the same transaction, and the
|
|
9992
|
+
* last enabled config cannot be disabled so runs always have a model.
|
|
9993
|
+
*/ function setModelConfigEnabled(name, enabled) {
|
|
9994
|
+
return (0,_lib_db_transaction__WEBPACK_IMPORTED_MODULE_3__/* .withDbTransaction */ .J)(()=>{
|
|
9995
|
+
const db = (0,_lib_db__WEBPACK_IMPORTED_MODULE_0__/* .getDb */ .Lf)();
|
|
9996
|
+
const target = getModelConfig(name);
|
|
9997
|
+
if (!target) throw new ModelConfigStateError(`Model config "${name}" not found`, 404);
|
|
9998
|
+
if (isModelConfigEnabled(target) === enabled) return target;
|
|
9999
|
+
const t = now();
|
|
10000
|
+
if (enabled) {
|
|
10001
|
+
db.prepare("UPDATE model_configs SET enabled=1, updated_at=? WHERE name=?").run(t, name);
|
|
10002
|
+
return getModelConfig(name);
|
|
10003
|
+
}
|
|
10004
|
+
const next = db.prepare("SELECT name FROM model_configs WHERE enabled=1 AND name<>? ORDER BY name ASC LIMIT 1").get(name);
|
|
10005
|
+
if (!next?.name) {
|
|
10006
|
+
throw new ModelConfigStateError("At least one model config must stay enabled", 409);
|
|
10007
|
+
}
|
|
10008
|
+
db.prepare("UPDATE model_configs SET enabled=0, is_default=0, updated_at=? WHERE name=?").run(t, name);
|
|
10009
|
+
if (target.is_default === 1) {
|
|
10010
|
+
db.prepare("UPDATE model_configs SET is_default=1, updated_at=? WHERE name=?").run(t, next.name);
|
|
10011
|
+
}
|
|
10012
|
+
return getModelConfig(name);
|
|
10013
|
+
});
|
|
10014
|
+
}
|
|
10015
|
+
/**
|
|
10016
|
+
* Insert or update a model config. `is_default` undefined keeps the current
|
|
10017
|
+
* flag (false for new rows); true atomically clears every other default and
|
|
10018
|
+
* re-enables the row, because the default must always be selectable.
|
|
10019
|
+
*/ function upsertModelConfig(name, provider, model_id, params, is_default, credential_id = null) {
|
|
9951
10020
|
return (0,_lib_db_transaction__WEBPACK_IMPORTED_MODULE_3__/* .withDbTransaction */ .J)(()=>{
|
|
9952
10021
|
const t = now();
|
|
9953
10022
|
const existing = getModelConfig(name);
|
|
@@ -9963,9 +10032,11 @@ function upsertModelConfig(name, provider, model_id, params, is_default, credent
|
|
|
9963
10032
|
...decodeInlineParams(existing),
|
|
9964
10033
|
...params
|
|
9965
10034
|
};
|
|
10035
|
+
const finalDefault = is_default ?? existing?.is_default === 1;
|
|
10036
|
+
const finalEnabled = finalDefault || !existing || isModelConfigEnabled(existing);
|
|
9966
10037
|
const db = (0,_lib_db__WEBPACK_IMPORTED_MODULE_0__/* .getDb */ .Lf)();
|
|
9967
|
-
if (
|
|
9968
|
-
db.prepare("INSERT OR REPLACE INTO model_configs (name,provider,model_id,params,is_default,credential_id,created_at,updated_at) VALUES (
|
|
10038
|
+
if (finalDefault) db.prepare("UPDATE model_configs SET is_default=0 WHERE name<>?").run(name);
|
|
10039
|
+
db.prepare("INSERT OR REPLACE INTO model_configs (name,provider,model_id,params,is_default,enabled,credential_id,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?)").run(name, provider, model_id, (0,_lib_crypto_envelope__WEBPACK_IMPORTED_MODULE_1__/* .encrypt */ .w)(JSON.stringify(mergedParams)), finalDefault ? 1 : 0, finalEnabled ? 1 : 0, finalCredId, created_at, t);
|
|
9969
10040
|
return getModelConfig(name);
|
|
9970
10041
|
});
|
|
9971
10042
|
}
|
|
@@ -9978,10 +10049,10 @@ function deleteModelConfig(name) {
|
|
|
9978
10049
|
// Automatically reset any agent pointing to this deleted model config to NULL (automatic / default model)
|
|
9979
10050
|
db.prepare("UPDATE agent_configs SET model_config_name = NULL WHERE model_config_name = ?").run(name);
|
|
9980
10051
|
// Avoid the "no default" state: if the deleted row was the default and any
|
|
9981
|
-
// other rows remain, promote the alphabetically-first
|
|
10052
|
+
// other enabled rows remain, promote the alphabetically-first one so
|
|
9982
10053
|
// agents that fall back to the default keep working.
|
|
9983
10054
|
if (wasDefault) {
|
|
9984
|
-
const next = db.prepare("SELECT name FROM model_configs ORDER BY name ASC LIMIT 1").get();
|
|
10055
|
+
const next = db.prepare("SELECT name FROM model_configs WHERE enabled=1 ORDER BY name ASC LIMIT 1").get();
|
|
9985
10056
|
if (next?.name) db.prepare("UPDATE model_configs SET is_default=1 WHERE name=?").run(next.name);
|
|
9986
10057
|
}
|
|
9987
10058
|
return true;
|
|
@@ -10482,9 +10553,8 @@ function isStructuredMemoryEligible(record, policy) {
|
|
|
10482
10553
|
/* unused harmony export storeOAuthToken */
|
|
10483
10554
|
/* harmony import */ var _lib_stores_memory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80956);
|
|
10484
10555
|
/* harmony import */ var _lib_utils_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22032);
|
|
10485
|
-
// GitHub Copilot device-flow login.
|
|
10486
|
-
//
|
|
10487
|
-
// Copilot session token and gets rate-limited on the Models REST API).
|
|
10556
|
+
// GitHub Copilot device-flow login. The legacy PAT path depended on GitHub
|
|
10557
|
+
// Models, which has been retired; use this flow for Copilot Chat access.
|
|
10488
10558
|
//
|
|
10489
10559
|
// Flow (RFC 8628):
|
|
10490
10560
|
// 1. POST github.com/login/device/code with the VS Code Copilot client_id.
|
|
@@ -124,6 +124,54 @@ exports.modules = {
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
|
|
127
|
+
/***/ }),
|
|
128
|
+
|
|
129
|
+
/***/ 3872:
|
|
130
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
131
|
+
|
|
132
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
133
|
+
/* harmony export */ Fu: () => (/* binding */ resolveAgentModel),
|
|
134
|
+
/* harmony export */ b_: () => (/* binding */ isModelEnabled),
|
|
135
|
+
/* harmony export */ xu: () => (/* binding */ agentModelStatus)
|
|
136
|
+
/* harmony export */ });
|
|
137
|
+
/**
|
|
138
|
+
* Resolve which `ModelConfig` will actually be used for an agent at runtime.
|
|
139
|
+
*
|
|
140
|
+
* Mirrors what `lib/agents/llm.ts` does server-side: when an agent has an
|
|
141
|
+
* enabled `model_config_name`, that wins; otherwise the workspace-wide
|
|
142
|
+
* default among enabled models is used. Both client (BridgeEditor, AgentEditor capability hints)
|
|
143
|
+
* and server need the same logic — this is the single source of truth.
|
|
144
|
+
*
|
|
145
|
+
* Returns `null` only when neither the requested config nor the default
|
|
146
|
+
* exists in the provided list (typically: no models configured yet).
|
|
147
|
+
*/ function resolveAgentModel(agent, models) {
|
|
148
|
+
const enabled = models.filter(isModelEnabled);
|
|
149
|
+
const defaultModel = enabled.find((m)=>m.is_default) ?? enabled[0] ?? null;
|
|
150
|
+
if (!agent?.model_config_name) return defaultModel;
|
|
151
|
+
return enabled.find((m)=>m.name === agent.model_config_name) ?? defaultModel;
|
|
152
|
+
}
|
|
153
|
+
/** Disabled configs stay stored but are skipped by runtime resolution. */ function isModelEnabled(model) {
|
|
154
|
+
return model.enabled !== false;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Diagnose whether an agent has a runnable model RIGHT NOW. Used by the
|
|
158
|
+
* Scheduled Tasks and Watchers panels to surface model-availability issues
|
|
159
|
+
* before an unattended run silently no-ops with `no_model`.
|
|
160
|
+
*/ function agentModelStatus(agent, models) {
|
|
161
|
+
if (!agent) return {
|
|
162
|
+
state: "no-agent"
|
|
163
|
+
};
|
|
164
|
+
const effectiveModel = resolveAgentModel(agent, models);
|
|
165
|
+
if (effectiveModel) return {
|
|
166
|
+
state: "ok",
|
|
167
|
+
model: effectiveModel
|
|
168
|
+
};
|
|
169
|
+
return {
|
|
170
|
+
state: "no-model"
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
|
|
127
175
|
/***/ }),
|
|
128
176
|
|
|
129
177
|
/***/ 4990:
|
|
@@ -707,6 +755,11 @@ async function request(path, init) {
|
|
|
707
755
|
"Content-Type": "application/json",
|
|
708
756
|
...fetchInit.headers
|
|
709
757
|
},
|
|
758
|
+
// The in-memory list/value caches above are the client cache layer
|
|
759
|
+
// and are invalidated on writes. The browser HTTP cache would honor
|
|
760
|
+
// the server's short max-age and serve a stale list right after a
|
|
761
|
+
// save, so bypass it unless a caller opts in.
|
|
762
|
+
cache: "no-store",
|
|
710
763
|
...fetchInit,
|
|
711
764
|
signal: timeoutCtrl.signal
|
|
712
765
|
});
|
|
@@ -816,6 +869,14 @@ const api = {
|
|
|
816
869
|
action
|
|
817
870
|
}),
|
|
818
871
|
cache: "no-store"
|
|
872
|
+
}),
|
|
873
|
+
retryItem: (itemId)=>request("/lifecycle/adoption", {
|
|
874
|
+
method: "POST",
|
|
875
|
+
body: JSON.stringify({
|
|
876
|
+
action: "retry",
|
|
877
|
+
item_id: itemId
|
|
878
|
+
}),
|
|
879
|
+
cache: "no-store"
|
|
819
880
|
})
|
|
820
881
|
}
|
|
821
882
|
},
|
|
@@ -997,6 +1058,10 @@ const api = {
|
|
|
997
1058
|
delete: (thread_id)=>request(`/threads/${thread_id}`, {
|
|
998
1059
|
method: "DELETE"
|
|
999
1060
|
}),
|
|
1061
|
+
// What the thread is doing now (run phase, queued turns, compaction).
|
|
1062
|
+
activity: (thread_id)=>request(`/threads/${thread_id}/activity`, {
|
|
1063
|
+
cache: "no-store"
|
|
1064
|
+
}),
|
|
1000
1065
|
// Abort the active agent run on this thread. The server's stream loop
|
|
1001
1066
|
// catches the resulting AbortError and emits an `error` + `done` so
|
|
1002
1067
|
// any UI queue-drain hook (e.g. ChatView) still fires.
|
|
@@ -1120,6 +1185,17 @@ const api = {
|
|
|
1120
1185
|
if (false) {}
|
|
1121
1186
|
return updated;
|
|
1122
1187
|
},
|
|
1188
|
+
patch: async (name, data)=>{
|
|
1189
|
+
const updated = await request(`/models/${encodeURIComponent(name)}`, {
|
|
1190
|
+
method: "PATCH",
|
|
1191
|
+
body: JSON.stringify(data)
|
|
1192
|
+
});
|
|
1193
|
+
// Enabling/disabling or setting the default can move the default flag
|
|
1194
|
+
// on other rows, so drop the cached list instead of patching one row.
|
|
1195
|
+
invalidateModelListCache();
|
|
1196
|
+
if (false) {}
|
|
1197
|
+
return updated;
|
|
1198
|
+
},
|
|
1123
1199
|
delete: async (name)=>{
|
|
1124
1200
|
const res = await request(`/models/${encodeURIComponent(name)}`, {
|
|
1125
1201
|
method: "DELETE"
|
|
@@ -1239,7 +1315,10 @@ const api = {
|
|
|
1239
1315
|
}
|
|
1240
1316
|
},
|
|
1241
1317
|
dashboard: {
|
|
1242
|
-
|
|
1318
|
+
// Read-only aggregates: the server's 30s HTTP cache is intended here.
|
|
1319
|
+
metrics: (days = 30)=>request(`/dashboard/metrics?days=${encodeURIComponent(String(days))}`, {
|
|
1320
|
+
cache: "default"
|
|
1321
|
+
}),
|
|
1243
1322
|
pricingTask: ()=>request("/dashboard/pricing-task"),
|
|
1244
1323
|
setupPricingTask: ()=>request("/dashboard/pricing-task", {
|
|
1245
1324
|
method: "POST",
|
|
@@ -2669,6 +2748,8 @@ function IconPicker({ form }) {
|
|
|
2669
2748
|
});
|
|
2670
2749
|
}
|
|
2671
2750
|
|
|
2751
|
+
// EXTERNAL MODULE: ./lib/agents/effective-model.ts
|
|
2752
|
+
var effective_model = __webpack_require__(3872);
|
|
2672
2753
|
// EXTERNAL MODULE: ./lib/providers/capabilities.ts
|
|
2673
2754
|
var capabilities = __webpack_require__(46069);
|
|
2674
2755
|
// EXTERNAL MODULE: ./components/models/CapBadges.tsx
|
|
@@ -2688,10 +2769,13 @@ var feature_readiness = __webpack_require__(34974);
|
|
|
2688
2769
|
|
|
2689
2770
|
|
|
2690
2771
|
|
|
2772
|
+
|
|
2691
2773
|
function ModelSection({ form, models, integrations, onClose }) {
|
|
2692
2774
|
const { dispatch } = (0,AppContext/* useAppContext */.U)();
|
|
2693
|
-
const
|
|
2694
|
-
const
|
|
2775
|
+
const enabledModels = models.filter(effective_model/* isModelEnabled */.b_);
|
|
2776
|
+
const defaultModel = enabledModels.find((m)=>m.is_default) ?? enabledModels[0];
|
|
2777
|
+
const forcedModel = enabledModels.find((m)=>m.name === form.modelConfigName);
|
|
2778
|
+
const selectedModel = forcedModel ?? defaultModel;
|
|
2695
2779
|
const readiness = (0,feature_readiness/* computeFeatureReadiness */.s)({
|
|
2696
2780
|
models,
|
|
2697
2781
|
integrations,
|
|
@@ -2746,7 +2830,7 @@ function ModelSection({ form, models, integrations, onClose }) {
|
|
|
2746
2830
|
className: "text-[11px] text-amber-700 dark:text-amber-400",
|
|
2747
2831
|
children: "No default fallback model is configured yet."
|
|
2748
2832
|
}),
|
|
2749
|
-
|
|
2833
|
+
forcedModel && /*#__PURE__*/ (0,react_jsx_runtime.jsx)("p", {
|
|
2750
2834
|
className: "text-[11px] text-sky-700 dark:text-sky-400",
|
|
2751
2835
|
children: "This agent currently has a forced model override. Clear it in Advanced settings to return to router-driven selection."
|
|
2752
2836
|
})
|
|
@@ -4485,6 +4569,7 @@ function ToolCredentialRow({ tool, options, selectedId, onChange }) {
|
|
|
4485
4569
|
|
|
4486
4570
|
|
|
4487
4571
|
|
|
4572
|
+
|
|
4488
4573
|
const Divider = ()=>/*#__PURE__*/ (0,react_jsx_runtime.jsx)("hr", {
|
|
4489
4574
|
className: "border-border/60 my-2"
|
|
4490
4575
|
});
|
|
@@ -4509,7 +4594,7 @@ function AdvancedSection({ form, models, integrations, isFullMode, onClose }) {
|
|
|
4509
4594
|
value: "",
|
|
4510
4595
|
children: "Automatic routing (recommended)"
|
|
4511
4596
|
}),
|
|
4512
|
-
models.map((m)=>{
|
|
4597
|
+
models.filter((m)=>(0,effective_model/* isModelEnabled */.b_)(m) || m.name === form.modelConfigName).map((m)=>{
|
|
4513
4598
|
const vision = (0,capabilities/* modelSupportsImages */.Q5)(m.provider, m.model_id);
|
|
4514
4599
|
return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("option", {
|
|
4515
4600
|
value: m.name,
|
|
@@ -4519,12 +4604,17 @@ function AdvancedSection({ form, models, integrations, isFullMode, onClose }) {
|
|
|
4519
4604
|
" \xb7 ",
|
|
4520
4605
|
m.provider,
|
|
4521
4606
|
" / ",
|
|
4522
|
-
m.model_id
|
|
4607
|
+
m.model_id,
|
|
4608
|
+
(0,effective_model/* isModelEnabled */.b_)(m) ? "" : " (disabled)"
|
|
4523
4609
|
]
|
|
4524
4610
|
}, m.name);
|
|
4525
4611
|
})
|
|
4526
4612
|
]
|
|
4527
4613
|
}),
|
|
4614
|
+
selectedModel && !(0,effective_model/* isModelEnabled */.b_)(selectedModel) && /*#__PURE__*/ (0,react_jsx_runtime.jsx)("p", {
|
|
4615
|
+
className: "text-[11px] text-amber-700 dark:text-amber-400",
|
|
4616
|
+
children: "This model is disabled, so the agent uses automatic routing until it is enabled again."
|
|
4617
|
+
}),
|
|
4528
4618
|
selectedModel && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(SelectedModelDescription, {
|
|
4529
4619
|
model: selectedModel,
|
|
4530
4620
|
prefix: "Forced"
|
|
@@ -5698,7 +5788,7 @@ function StepCredentials({ definitions, integrations, onChanged }) {
|
|
|
5698
5788
|
}),
|
|
5699
5789
|
eyebrow: "Step 2 \xb7 Credentials",
|
|
5700
5790
|
title: "Connect provider credentials in the UI first",
|
|
5701
|
-
description: "Use the built-in credential forms as the main setup path
|
|
5791
|
+
description: "Use the built-in credential forms as the main setup path for Claude, GPT, Gemini, and other providers. GitHub Copilot uses device-flow sign-in in the Models panel.",
|
|
5702
5792
|
children: [
|
|
5703
5793
|
/*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
|
|
5704
5794
|
className: "rounded-xl border border-accent/30 bg-accent/5 px-3 py-2.5 text-xs text-fg",
|
|
@@ -5902,10 +5992,7 @@ function StepModel({ models, onChanged }) {
|
|
|
5902
5992
|
}
|
|
5903
5993
|
async function handleSetDefault(m) {
|
|
5904
5994
|
try {
|
|
5905
|
-
await client/* api */.FH.models.
|
|
5906
|
-
provider: m.provider,
|
|
5907
|
-
model_id: m.model_id,
|
|
5908
|
-
params: m.params,
|
|
5995
|
+
await client/* api */.FH.models.patch(m.name, {
|
|
5909
5996
|
is_default: true
|
|
5910
5997
|
});
|
|
5911
5998
|
onChanged();
|
|
@@ -6040,7 +6127,7 @@ function StepModel({ models, onChanged }) {
|
|
|
6040
6127
|
/*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
|
|
6041
6128
|
className: "flex shrink-0 items-center gap-0.5",
|
|
6042
6129
|
children: [
|
|
6043
|
-
!m.is_default && /*#__PURE__*/ (0,react_jsx_runtime.jsx)("button", {
|
|
6130
|
+
!m.is_default && m.enabled !== false && /*#__PURE__*/ (0,react_jsx_runtime.jsx)("button", {
|
|
6044
6131
|
type: "button",
|
|
6045
6132
|
onClick: (e)=>{
|
|
6046
6133
|
e.stopPropagation();
|
|
@@ -8796,7 +8883,7 @@ function AuthHeader({ status, polling, onSignIn, onSignOut }) {
|
|
|
8796
8883
|
}),
|
|
8797
8884
|
/*#__PURE__*/ (0,react_jsx_runtime.jsx)("p", {
|
|
8798
8885
|
className: "text-fg-faint mt-0.5",
|
|
8799
|
-
children: "
|
|
8886
|
+
children: "Required for Copilot models; GitHub PAT authentication is no longer supported."
|
|
8800
8887
|
})
|
|
8801
8888
|
]
|
|
8802
8889
|
}),
|