@circuitwall/jarela 2.2.1 → 2.4.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 +2 -1
- 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 +100 -93
- package/.next/standalone/.next/server/app/api/v1/access/route.js +176 -169
- package/.next/standalone/.next/server/app/api/v1/agents/[id]/compact/route.js +89 -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 +139 -127
- package/.next/standalone/.next/server/app/api/v1/agents/[id]/route.js +107 -100
- package/.next/standalone/.next/server/app/api/v1/agents/[id]/thread/route.js +765 -753
- package/.next/standalone/.next/server/app/api/v1/agents/route.js +72 -65
- package/.next/standalone/.next/server/app/api/v1/allowed-sites/[hostname]/route.js +371 -364
- package/.next/standalone/.next/server/app/api/v1/allowed-sites/route.js +809 -802
- package/.next/standalone/.next/server/app/api/v1/artifacts/lifecycle/route.js +9 -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 +583 -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 +41 -30
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/ignores/route.js +48 -37
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/lookup/route.js +697 -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 +703 -136
- 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 +796 -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 +762 -746
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/routes/route.js +1050 -1034
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/status/route.js +673 -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 +811 -804
- package/.next/standalone/.next/server/app/api/v1/bridges/kinds/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/route.js +718 -706
- package/.next/standalone/.next/server/app/api/v1/bridges/route.js.nft.json +1 -1
- 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 +796 -784
- package/.next/standalone/.next/server/app/api/v1/dashboard/pricing/route.js +30 -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 +385 -378
- package/.next/standalone/.next/server/app/api/v1/documents/settings/route.js +51 -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 +375 -368
- package/.next/standalone/.next/server/app/api/v1/env-sync/route.js +51 -44
- package/.next/standalone/.next/server/app/api/v1/events/route.js +745 -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 +51 -44
- package/.next/standalone/.next/server/app/api/v1/extension/browser/foreground/route.js +16 -9
- package/.next/standalone/.next/server/app/api/v1/extension/browser/history/route.js +72 -65
- package/.next/standalone/.next/server/app/api/v1/extension/browser/poll/route.js +41 -34
- package/.next/standalone/.next/server/app/api/v1/extension/browser/progress/route.js +211 -204
- package/.next/standalone/.next/server/app/api/v1/extension/browser/result/route.js +140 -133
- package/.next/standalone/.next/server/app/api/v1/extension/browser/retry/route.js +113 -106
- package/.next/standalone/.next/server/app/api/v1/extension/browser/status/route.js +121 -114
- package/.next/standalone/.next/server/app/api/v1/extension/browser/tabs/route.js +141 -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 +228 -221
- package/.next/standalone/.next/server/app/api/v1/harnesses/default/route.js +65 -58
- package/.next/standalone/.next/server/app/api/v1/harnesses/route.js +79 -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 +783 -771
- package/.next/standalone/.next/server/app/api/v1/integrations/[name]/route.js +140 -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 +370 -363
- package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/start/route.js +240 -233
- package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/status/route.js +689 -682
- package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/callback/route.js +886 -879
- package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/start/route.js +115 -108
- package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/status/route.js +955 -948
- package/.next/standalone/.next/server/app/api/v1/integrations/route.js +223 -216
- package/.next/standalone/.next/server/app/api/v1/lifecycle/adoption/route.js +876 -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 +79 -72
- package/.next/standalone/.next/server/app/api/v1/mcp-servers/[name]/route.js +991 -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 +19 -7
- package/.next/standalone/.next/server/app/api/v1/memory/[namespace]/[key]/route.js +539 -532
- package/.next/standalone/.next/server/app/api/v1/memory/policy/route.js +86 -79
- package/.next/standalone/.next/server/app/api/v1/memory/route.js +58 -51
- package/.next/standalone/.next/server/app/api/v1/memory/search/route.js +138 -131
- package/.next/standalone/.next/server/app/api/v1/models/[name]/compact-threads/route.js +381 -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 +150 -143
- package/.next/standalone/.next/server/app/api/v1/models/route.js +634 -627
- 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 +529 -514
- 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 +37 -30
- package/.next/standalone/.next/server/app/api/v1/profile/route.js +171 -164
- package/.next/standalone/.next/server/app/api/v1/providers/[provider]/models/route.js +51 -44
- package/.next/standalone/.next/server/app/api/v1/providers/[provider]/probe/route.js +15 -8
- package/.next/standalone/.next/server/app/api/v1/providers/github-copilot/auth/route.js +171 -164
- package/.next/standalone/.next/server/app/api/v1/providers/route.js +101 -94
- package/.next/standalone/.next/server/app/api/v1/proxy-config/route.js +457 -450
- package/.next/standalone/.next/server/app/api/v1/redaction/init/route.js +44 -37
- package/.next/standalone/.next/server/app/api/v1/redaction/route.js +65 -58
- package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/[id]/route.js +617 -605
- 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 +739 -732
- package/.next/standalone/.next/server/app/api/v1/security/idle-timeout/route.js +329 -322
- package/.next/standalone/.next/server/app/api/v1/security/pin/route.js +204 -197
- package/.next/standalone/.next/server/app/api/v1/security/state/route.js +58 -51
- package/.next/standalone/.next/server/app/api/v1/security/unlock/route.js +183 -176
- package/.next/standalone/.next/server/app/api/v1/security/verify-pin/route.js +194 -187
- 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 +776 -769
- package/.next/standalone/.next/server/app/api/v1/skills/repos/[id]/route.js +122 -115
- package/.next/standalone/.next/server/app/api/v1/skills/repos/route.js +334 -327
- package/.next/standalone/.next/server/app/api/v1/skills/route.js +873 -866
- 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 +122 -115
- package/.next/standalone/.next/server/app/api/v1/tasks/route.js +30 -23
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/activity/route.js +1436 -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 +638 -631
- 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 +60 -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 -173
- 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 +925 -913
- 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 +241 -229
- package/.next/standalone/.next/server/app/api/v1/voice/tts/route.js +989 -977
- package/.next/standalone/.next/server/app/api/v1/watchers/[id]/route.js +40 -28
- 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 +1179 -743
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup/page.js +99 -91
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +2 -1
- package/.next/standalone/.next/server/chunks/{424.js → 1388.js} +441 -1022
- 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/2068.js +47 -10
- package/.next/standalone/.next/server/chunks/210.js +3 -3
- 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/2447.js +10 -5
- 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 +24 -16
- package/.next/standalone/.next/server/chunks/{4540.js → 309.js} +104 -38
- package/.next/standalone/.next/server/chunks/{2350.js → 3272.js} +104 -37
- package/.next/standalone/.next/server/chunks/3399.js +526 -526
- package/.next/standalone/.next/server/chunks/3524.js +150 -67
- 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/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 +78 -28
- package/.next/standalone/.next/server/chunks/466.js +12 -0
- 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/5908.js +63 -42
- package/.next/standalone/.next/server/chunks/6142.js +10 -2
- 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 +24 -17
- 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 +4 -3
- package/.next/standalone/.next/server/chunks/{2563.js → 9164.js} +33389 -31418
- package/.next/standalone/.next/server/chunks/9237.js +396 -396
- package/.next/standalone/.next/server/chunks/{9640.js → 9304.js} +1672 -575
- package/.next/standalone/.next/server/chunks/9406.js +1 -1
- package/.next/standalone/.next/server/chunks/9590.js +68 -18
- 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 +486 -415
- 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-a340fb0a345382a4.js → 1395-e4a99912b8f83044.js} +13 -1
- 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-7017f07f8a7a083c.js → page-04748847c6ff866f.js} +1013 -585
- 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 → 2669e8744cc8c212.css} +2 -2
- package/.next/standalone/docs/adoption/changesets.json +358 -0
- package/.next/standalone/lib/skills/builtins/memory-organization/SKILL.md +16 -0
- package/.next/standalone/package.json +3 -3
- package/CHANGELOG.md +44 -0
- package/api/client.ts +9 -0
- package/api/types.ts +29 -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/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/app/api/v1/threads/[thread_id]/run/route.ts +0 -1
- 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/MessageBubble.tsx +12 -0
- 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/integrations/NetworkSection.tsx +2 -2
- package/components/ui/BootScreen.tsx +17 -0
- package/components/ui/WorkflowChecklist.tsx +71 -33
- package/hooks/useSSE.ts +28 -3
- package/lib/agents/citation-checker.test.ts +40 -2
- package/lib/agents/citation-checker.ts +56 -11
- package/lib/agents/compaction-pipeline.test.ts +202 -0
- package/lib/agents/compaction-pipeline.ts +483 -0
- package/lib/agents/context-boundary.ts +5 -6
- package/lib/agents/conversation-summary.ts +37 -21
- package/lib/agents/instruction-edits.test.ts +120 -0
- package/lib/agents/instruction-edits.ts +65 -42
- 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 -2
- package/lib/agents/prepare/system-prompt.test.ts +49 -0
- package/lib/agents/prepare/system-prompt.ts +16 -5
- 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/proposals.test.ts +76 -0
- package/lib/agents/proposals.ts +13 -5
- package/lib/agents/run-registry.test.ts +22 -0
- package/lib/agents/run-registry.ts +29 -0
- package/lib/agents/run-thread.auto-boundary.test.ts +125 -5
- package/lib/agents/run-thread.retry.test.ts +67 -1
- package/lib/agents/run-thread.ts +110 -10
- package/lib/agents/sqlite-checkpoint-saver.test.ts +91 -0
- 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 +219 -5
- package/lib/agents/warm-summary-background.ts +346 -143
- package/lib/agents/warm-topics.test.ts +191 -0
- package/lib/agents/warm-topics.ts +317 -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/bridges/dispatcher.ts +1 -0
- package/lib/bridges/message-role.test.ts +81 -0
- package/lib/bridges/message-role.ts +23 -10
- package/lib/bridges/types.ts +6 -0
- package/lib/bridges/whatsapp-link.test.ts +32 -0
- package/lib/bridges/whatsapp-link.ts +21 -0
- package/lib/bridges/whatsapp.inbound.test.ts +239 -0
- package/lib/bridges/whatsapp.sender.test.ts +80 -1
- package/lib/bridges/whatsapp.ts +76 -38
- package/lib/db/migrations.ts +5 -0
- package/lib/env/config.ts +2 -0
- package/lib/env/schema.ts +12 -0
- 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/pricing/snapshot.test.ts +70 -0
- package/lib/pricing/snapshot.ts +10 -2
- package/lib/providers/external.ts +0 -2
- package/lib/proxy/dispatcher.test.ts +119 -1
- package/lib/proxy/dispatcher.ts +22 -9
- package/lib/skills/builtins/memory-organization/SKILL.md +16 -0
- package/lib/stores/agent-configs.ts +10 -5
- package/lib/stores/bridges.test.ts +81 -0
- package/lib/stores/bridges.ts +9 -8
- package/lib/stores/proxy-config.test.ts +120 -0
- package/lib/stores/proxy-config.ts +22 -4
- package/lib/stores/threads.test.ts +9 -0
- package/lib/stores/threads.ts +33 -19
- 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/calendar.test.ts +43 -2
- package/lib/tools/communications/calendar.ts +2 -0
- package/lib/tools/communications/gmail.test.ts +51 -1
- package/lib/tools/communications/gmail.ts +44 -2
- package/lib/tools/communications/ms-todo.ts +0 -7
- package/lib/tools/communications/outlook-calendar.ts +2 -0
- package/lib/tools/communications/outlook.test.ts +33 -2
- package/lib/tools/communications/outlook.ts +2 -0
- package/lib/tools/filesystem/edit-match.test.ts +133 -0
- package/lib/tools/filesystem/edit-match.ts +7 -2
- 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/tools/support/result-refs.test.ts +131 -0
- package/lib/tools/support/result-refs.ts +41 -9
- package/lib/triggers/registry.ts +0 -4
- package/lib/utils/source-link.test.ts +51 -0
- package/lib/utils/source-link.ts +45 -0
- 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/{NUrC9xax1sp1Q70nlFqS6 → hwujW4hR1b-r3k5WdMxZO}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{NUrC9xax1sp1Q70nlFqS6 → hwujW4hR1b-r3k5WdMxZO}/_ssgManifest.js +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
exports.id =
|
|
3
|
-
exports.ids = [
|
|
2
|
+
exports.id = 309;
|
|
3
|
+
exports.ids = [309];
|
|
4
4
|
exports.modules = {
|
|
5
5
|
|
|
6
|
-
/***/
|
|
6
|
+
/***/ 70309:
|
|
7
7
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8
8
|
|
|
9
9
|
|
|
@@ -203,6 +203,26 @@ function safeBridgeId(id) {
|
|
|
203
203
|
return baseDir();
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
+
;// ./lib/bridges/whatsapp-link.ts
|
|
207
|
+
/**
|
|
208
|
+
* WhatsApp click-to-chat link for a Baileys JID.
|
|
209
|
+
*
|
|
210
|
+
* WhatsApp has no permalink to a group or to a single message, so only 1:1
|
|
211
|
+
* chats with a phone-number JID get a link: `https://wa.me/<digits>` opens
|
|
212
|
+
* that chat in the WhatsApp app or WhatsApp Web. `@lid` ids hide the phone
|
|
213
|
+
* number, and groups, channels and broadcasts have no public chat URL.
|
|
214
|
+
*/ // E.164 numbers are at most 15 digits; the shortest real ones are 7–8.
|
|
215
|
+
const E164_DIGITS = /^[1-9]\d{6,14}$/;
|
|
216
|
+
function whatsappChatLink(jid) {
|
|
217
|
+
if (!jid) return null;
|
|
218
|
+
const at = jid.lastIndexOf("@");
|
|
219
|
+
if (at < 0) return null;
|
|
220
|
+
const host = jid.slice(at + 1);
|
|
221
|
+
if (host !== "s.whatsapp.net" && host !== "c.us") return null;
|
|
222
|
+
const digits = jid.slice(0, at).split(":")[0];
|
|
223
|
+
return E164_DIGITS.test(digits) ? `https://wa.me/${digits}` : null;
|
|
224
|
+
}
|
|
225
|
+
|
|
206
226
|
// EXTERNAL MODULE: ./lib/utils/error.ts
|
|
207
227
|
var error = __webpack_require__(22032);
|
|
208
228
|
;// ./lib/bridges/whatsapp.ts
|
|
@@ -235,6 +255,7 @@ var error = __webpack_require__(22032);
|
|
|
235
255
|
|
|
236
256
|
|
|
237
257
|
|
|
258
|
+
|
|
238
259
|
class WhatsAppBridgeAdapter {
|
|
239
260
|
static{
|
|
240
261
|
this.SENT_IDS_MAX = 500;
|
|
@@ -458,10 +479,10 @@ class WhatsAppBridgeAdapter {
|
|
|
458
479
|
// adapter should re-deliver to agents) and the legacy
|
|
459
480
|
// `replace`/`update` events that arrive via messages.update.
|
|
460
481
|
if (payload.type !== "notify" && payload.type !== "append") return;
|
|
461
|
-
// On a fresh adapter boot the
|
|
462
|
-
// persisted. Read
|
|
463
|
-
//
|
|
464
|
-
const
|
|
482
|
+
// On a fresh adapter boot the watermarks are whatever the last run
|
|
483
|
+
// persisted. Read them once per batch (one cheap SQLite call) so old
|
|
484
|
+
// appends are rejected without per-message queries.
|
|
485
|
+
const watermarks = payload.type === "append" ? (0,bridges/* getRouteLastSeenTsMap */.gH)(this.bridge_id) : null;
|
|
465
486
|
for (const raw of payload.messages ?? []){
|
|
466
487
|
const m = raw;
|
|
467
488
|
if (!m.key?.remoteJid) continue;
|
|
@@ -488,18 +509,20 @@ class WhatsAppBridgeAdapter {
|
|
|
488
509
|
// "real" the moment we see any message from it, even one whose
|
|
489
510
|
// body we end up unable to represent (e.g. reactions, polls).
|
|
490
511
|
const ts = typeof m.messageTimestamp === "number" ? m.messageTimestamp * 1000 : (m.messageTimestamp?.low ?? 0) * 1000 || Date.now();
|
|
491
|
-
// Watermark gate: on `append` batches, skip anything
|
|
492
|
-
//
|
|
493
|
-
//
|
|
494
|
-
//
|
|
495
|
-
//
|
|
496
|
-
|
|
497
|
-
if (
|
|
512
|
+
// Watermark gate: on `append` batches, skip anything at or below
|
|
513
|
+
// this chat's own persisted watermark. This prevents the server's
|
|
514
|
+
// reconnect replay from re-delivering messages we already routed in
|
|
515
|
+
// a previous process lifetime. `notify` events skip this check —
|
|
516
|
+
// they're live and may legitimately arrive out of order.
|
|
517
|
+
const watermark = watermarks?.get(remote_jid) ?? 0;
|
|
518
|
+
if (watermark > 0 && ts > 0 && ts <= watermark) {
|
|
498
519
|
continue;
|
|
499
520
|
}
|
|
500
|
-
//
|
|
501
|
-
//
|
|
502
|
-
|
|
521
|
+
// pushName names the *sender*: in groups that's a participant, and on
|
|
522
|
+
// fromMe messages it's the user's own name. Only a counterpart's
|
|
523
|
+
// pushName in a 1:1 chat is a valid label for the chat itself.
|
|
524
|
+
const chatPushName = is_group || m.key.fromMe ? null : m.pushName ?? null;
|
|
525
|
+
this.observeChat(remote_jid, chatPushName, ts);
|
|
503
526
|
// Unwrap protocol envelopes (view-once, ephemeral, etc.) so we can
|
|
504
527
|
// see the underlying payload uniformly, then turn it into a text
|
|
505
528
|
// body + ContentPart attachments the agent can consume.
|
|
@@ -517,7 +540,7 @@ class WhatsAppBridgeAdapter {
|
|
|
517
540
|
// chats it's undefined — the sender == remote_jid. Normalize so the
|
|
518
541
|
// dispatcher gets a routable user JID, not the legacy @c.us form.
|
|
519
542
|
const participant_jid = is_group && m.key.participant ? normalizeUserJid(m.key.participant) : null;
|
|
520
|
-
const chat_name = this.chats.get(remote_jid)?.name ??
|
|
543
|
+
const chat_name = this.chats.get(remote_jid)?.name ?? chatPushName;
|
|
521
544
|
const sender = resolveWhatsAppSender({
|
|
522
545
|
fromMe: m.key.fromMe === true,
|
|
523
546
|
isGroup: is_group,
|
|
@@ -575,7 +598,11 @@ class WhatsAppBridgeAdapter {
|
|
|
575
598
|
const ct = raw;
|
|
576
599
|
const chatJid = pickContactChatJid(ct);
|
|
577
600
|
if (!chatJid) continue;
|
|
578
|
-
const name =
|
|
601
|
+
const name = [
|
|
602
|
+
ct.name,
|
|
603
|
+
ct.verifiedName,
|
|
604
|
+
ct.notify
|
|
605
|
+
].find((n)=>n?.trim()) ?? null;
|
|
579
606
|
this.observeChat(chatJid, name, null);
|
|
580
607
|
}
|
|
581
608
|
});
|
|
@@ -600,7 +627,11 @@ class WhatsAppBridgeAdapter {
|
|
|
600
627
|
for (const ct of list){
|
|
601
628
|
const chatJid = pickContactChatJid(ct);
|
|
602
629
|
if (!chatJid) continue;
|
|
603
|
-
this.observeChat(chatJid,
|
|
630
|
+
this.observeChat(chatJid, [
|
|
631
|
+
ct.name,
|
|
632
|
+
ct.verifiedName,
|
|
633
|
+
ct.notify
|
|
634
|
+
].find((n)=>n?.trim()) ?? null, null);
|
|
604
635
|
}
|
|
605
636
|
});
|
|
606
637
|
// Group profile/settings updates (subject/description/permissions/etc.).
|
|
@@ -709,6 +740,9 @@ class WhatsAppBridgeAdapter {
|
|
|
709
740
|
error: null
|
|
710
741
|
});
|
|
711
742
|
}
|
|
743
|
+
chatLink(remote_jid) {
|
|
744
|
+
return whatsappChatLink(remote_jid);
|
|
745
|
+
}
|
|
712
746
|
async sendText(remote_jid, text) {
|
|
713
747
|
// Hard guard: refuse to send to any chat whose route is in silent_mode.
|
|
714
748
|
// The dispatcher already short-circuits before calling sendText, but
|
|
@@ -965,7 +999,10 @@ class WhatsAppBridgeAdapter {
|
|
|
965
999
|
});
|
|
966
1000
|
attachments.push(ref);
|
|
967
1001
|
const sizeKb = Math.max(1, Math.round(buf.length / 1024));
|
|
968
|
-
|
|
1002
|
+
// Sender-supplied document names can carry newlines or brackets;
|
|
1003
|
+
// describe the attachment by the store's sanitized name.
|
|
1004
|
+
const shownName = oneLine("filename" in ref && ref.filename || filename);
|
|
1005
|
+
text = (text ? text + "\n" : "") + `[Attached ${label}: ${shownName} (${mime}, ${sizeKb} KB); retained as a Jarela file reference.]`;
|
|
969
1006
|
} catch (err) {
|
|
970
1007
|
const m = (0,error/* errorMessage */.g)(err);
|
|
971
1008
|
console.warn(`[bridge ${this.bridge_id}] failed to spill ${label} from ${remote_jid}: ${m}`);
|
|
@@ -1020,8 +1057,8 @@ class WhatsAppBridgeAdapter {
|
|
|
1020
1057
|
`lat=${degreesLatitude ?? "?"}`,
|
|
1021
1058
|
`lng=${degreesLongitude ?? "?"}`
|
|
1022
1059
|
];
|
|
1023
|
-
if (name) parts.push(`name
|
|
1024
|
-
if (address) parts.push(`address
|
|
1060
|
+
if (name) parts.push(`name=${JSON.stringify(oneLine(name))}`);
|
|
1061
|
+
if (address) parts.push(`address=${JSON.stringify(oneLine(address))}`);
|
|
1025
1062
|
text = (text ? text + "\n" : "") + `[location: ${parts.join(" ")}]`;
|
|
1026
1063
|
}
|
|
1027
1064
|
if (inner.liveLocationMessage) {
|
|
@@ -1029,12 +1066,12 @@ class WhatsAppBridgeAdapter {
|
|
|
1029
1066
|
text = (text ? text + "\n" : "") + `[live-location: lat=${degreesLatitude ?? "?"} lng=${degreesLongitude ?? "?"}]`;
|
|
1030
1067
|
}
|
|
1031
1068
|
if (inner.contactMessage) {
|
|
1032
|
-
const name = inner.contactMessage.displayName ?? "unknown";
|
|
1033
|
-
const vcard = inner.contactMessage.vcard ?? "";
|
|
1069
|
+
const name = oneLine(inner.contactMessage.displayName ?? "") || "unknown";
|
|
1070
|
+
const vcard = stripVcardBinary(inner.contactMessage.vcard ?? "");
|
|
1034
1071
|
text = (text ? text + "\n" : "") + `[contact: ${name}]\n${vcard}`;
|
|
1035
1072
|
}
|
|
1036
1073
|
if (inner.contactsArrayMessage) {
|
|
1037
|
-
const names = (inner.contactsArrayMessage.contacts ?? []).map((c)=>c?.displayName ?? "unknown").join(", ");
|
|
1074
|
+
const names = (inner.contactsArrayMessage.contacts ?? []).map((c)=>oneLine(c?.displayName ?? "") || "unknown").join(", ");
|
|
1038
1075
|
text = (text ? text + "\n" : "") + `[contacts: ${names}]`;
|
|
1039
1076
|
}
|
|
1040
1077
|
return {
|
|
@@ -1046,8 +1083,9 @@ class WhatsAppBridgeAdapter {
|
|
|
1046
1083
|
if (!remote_jid) return;
|
|
1047
1084
|
const existing = this.chats.get(remote_jid);
|
|
1048
1085
|
// Prefer the most recently-observed name (group subjects rename; users
|
|
1049
|
-
// change push names). Don't overwrite a known name with
|
|
1050
|
-
|
|
1086
|
+
// change push names). Don't overwrite a known name with a missing or
|
|
1087
|
+
// blank one.
|
|
1088
|
+
const nextName = name?.trim() || existing?.name || null;
|
|
1051
1089
|
const nextTs = ts && (!existing?.last_message_at || ts > existing.last_message_at) ? ts : existing?.last_message_at ?? null;
|
|
1052
1090
|
this.chats.set(remote_jid, {
|
|
1053
1091
|
remote_jid,
|
|
@@ -1064,6 +1102,27 @@ class WhatsAppBridgeAdapter {
|
|
|
1064
1102
|
return this.currentStatus;
|
|
1065
1103
|
}
|
|
1066
1104
|
}
|
|
1105
|
+
function oneLine(value) {
|
|
1106
|
+
return value.replace(/[\s\u0085\u2028\u2029]+/g, " ").trim();
|
|
1107
|
+
}
|
|
1108
|
+
/**
|
|
1109
|
+
* Phones embed contact photos and logos as base64 vCard properties, often
|
|
1110
|
+
* tens of KB of noise in the agent's context. Drop those properties,
|
|
1111
|
+
* including their folded continuation lines (RFC 6350 §3.2), and keep the
|
|
1112
|
+
* readable fields.
|
|
1113
|
+
*/ function stripVcardBinary(vcard) {
|
|
1114
|
+
const out = [];
|
|
1115
|
+
let skipping = false;
|
|
1116
|
+
for (const line of vcard.split(/\r\n|\r|\n/)){
|
|
1117
|
+
if (/^[ \t]/.test(line)) {
|
|
1118
|
+
if (!skipping) out.push(line);
|
|
1119
|
+
continue;
|
|
1120
|
+
}
|
|
1121
|
+
skipping = /^(?:[\w-]+\.)?(?:PHOTO|LOGO|SOUND|KEY)[;:]/i.test(line);
|
|
1122
|
+
if (!skipping) out.push(line);
|
|
1123
|
+
}
|
|
1124
|
+
return out.join("\n").trim();
|
|
1125
|
+
}
|
|
1067
1126
|
// Minimal pino-compatible silent logger. Baileys uses `logger.child()`
|
|
1068
1127
|
// chaining internally, so we return ourselves for every child call.
|
|
1069
1128
|
function makeSilentLogger() {
|
|
@@ -1177,6 +1236,9 @@ function sanitizeMediaType(raw, kind, fallback) {
|
|
|
1177
1236
|
return primary;
|
|
1178
1237
|
}
|
|
1179
1238
|
function resolveWhatsAppSender(input) {
|
|
1239
|
+
// Platforms send blank display names ("" or whitespace) for contacts that
|
|
1240
|
+
// never set one; treat those as missing so the fallbacks still apply.
|
|
1241
|
+
const named = (...names)=>names.find((n)=>!!n && n.trim().length > 0)?.trim();
|
|
1180
1242
|
if (input.fromMe) {
|
|
1181
1243
|
return {
|
|
1182
1244
|
senderJid: input.selfJid ?? "me",
|
|
@@ -1187,12 +1249,12 @@ function resolveWhatsAppSender(input) {
|
|
|
1187
1249
|
const senderJid = input.participantJid ?? input.remoteJid;
|
|
1188
1250
|
return {
|
|
1189
1251
|
senderJid,
|
|
1190
|
-
senderName: input.participantName
|
|
1252
|
+
senderName: named(input.participantName, input.pushName) ?? senderJid
|
|
1191
1253
|
};
|
|
1192
1254
|
}
|
|
1193
1255
|
return {
|
|
1194
1256
|
senderJid: input.remoteJid,
|
|
1195
|
-
senderName: input.pushName
|
|
1257
|
+
senderName: named(input.pushName, input.chatName) ?? input.remoteJid
|
|
1196
1258
|
};
|
|
1197
1259
|
}
|
|
1198
1260
|
/**
|
|
@@ -1319,8 +1381,8 @@ function listBridgeModules() {
|
|
|
1319
1381
|
/* harmony export */ X9: () => (/* binding */ listBridges),
|
|
1320
1382
|
/* harmony export */ aM: () => (/* binding */ getRoute),
|
|
1321
1383
|
/* harmony export */ e1: () => (/* binding */ getBridge),
|
|
1384
|
+
/* harmony export */ gH: () => (/* binding */ getRouteLastSeenTsMap),
|
|
1322
1385
|
/* harmony export */ kZ: () => (/* binding */ listIgnores),
|
|
1323
|
-
/* harmony export */ mp: () => (/* binding */ getMaxRouteLastSeenTs),
|
|
1324
1386
|
/* harmony export */ nE: () => (/* binding */ removeIgnore),
|
|
1325
1387
|
/* harmony export */ pi: () => (/* binding */ isIgnored),
|
|
1326
1388
|
/* harmony export */ po: () => (/* binding */ updateBridge),
|
|
@@ -1453,12 +1515,16 @@ function bumpRouteLastSeenTs(bridgeId, remoteJid, ts) {
|
|
|
1453
1515
|
if (!Number.isFinite(ts) || ts <= 0) return;
|
|
1454
1516
|
(0,_lib_db__WEBPACK_IMPORTED_MODULE_1__/* .getDb */ .Lf)().prepare("UPDATE bridge_routes SET last_seen_ts=? WHERE bridge_id=? AND remote_jid=? AND (last_seen_ts IS NULL OR last_seen_ts < ?)").run(ts, bridgeId, remoteJid, ts);
|
|
1455
1517
|
}
|
|
1456
|
-
//
|
|
1457
|
-
//
|
|
1458
|
-
//
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1518
|
+
// Per-chat watermarks for every explicitly routed chat on a bridge, loaded
|
|
1519
|
+
// once per upsert batch. Each chat is gated only by its own progress: a
|
|
1520
|
+
// bridge-wide maximum would drop chat B's offline backlog as soon as a newer
|
|
1521
|
+
// message from chat A had been delivered.
|
|
1522
|
+
function getRouteLastSeenTsMap(bridgeId) {
|
|
1523
|
+
const rows = (0,_lib_db__WEBPACK_IMPORTED_MODULE_1__/* .getDb */ .Lf)().prepare("SELECT remote_jid, last_seen_ts FROM bridge_routes WHERE bridge_id=? AND last_seen_ts IS NOT NULL").all(bridgeId);
|
|
1524
|
+
return new Map(rows.map((r)=>[
|
|
1525
|
+
r.remote_jid,
|
|
1526
|
+
r.last_seen_ts
|
|
1527
|
+
]));
|
|
1462
1528
|
}
|
|
1463
1529
|
// ---------------------------------------------------------------------------
|
|
1464
1530
|
// Ignore-list CRUD (per-bridge chat blocklist)
|
|
@@ -1504,4 +1570,4 @@ function removeIgnore(bridgeId, remoteJid) {
|
|
|
1504
1570
|
|
|
1505
1571
|
};
|
|
1506
1572
|
;
|
|
1507
|
-
//# sourceMappingURL=
|
|
1573
|
+
//# sourceMappingURL=309.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
exports.id =
|
|
3
|
-
exports.ids = [
|
|
2
|
+
exports.id = 3272;
|
|
3
|
+
exports.ids = [3272];
|
|
4
4
|
exports.modules = {
|
|
5
5
|
|
|
6
|
-
/***/
|
|
6
|
+
/***/ 63272:
|
|
7
7
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8
8
|
|
|
9
9
|
|
|
@@ -144,12 +144,16 @@ function bumpRouteLastSeenTs(bridgeId, remoteJid, ts) {
|
|
|
144
144
|
if (!Number.isFinite(ts) || ts <= 0) return;
|
|
145
145
|
(0,db/* getDb */.L)().prepare("UPDATE bridge_routes SET last_seen_ts=? WHERE bridge_id=? AND remote_jid=? AND (last_seen_ts IS NULL OR last_seen_ts < ?)").run(ts, bridgeId, remoteJid, ts);
|
|
146
146
|
}
|
|
147
|
-
//
|
|
148
|
-
//
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
147
|
+
// Per-chat watermarks for every explicitly routed chat on a bridge, loaded
|
|
148
|
+
// once per upsert batch. Each chat is gated only by its own progress: a
|
|
149
|
+
// bridge-wide maximum would drop chat B's offline backlog as soon as a newer
|
|
150
|
+
// message from chat A had been delivered.
|
|
151
|
+
function getRouteLastSeenTsMap(bridgeId) {
|
|
152
|
+
const rows = (0,db/* getDb */.L)().prepare("SELECT remote_jid, last_seen_ts FROM bridge_routes WHERE bridge_id=? AND last_seen_ts IS NOT NULL").all(bridgeId);
|
|
153
|
+
return new Map(rows.map((r)=>[
|
|
154
|
+
r.remote_jid,
|
|
155
|
+
r.last_seen_ts
|
|
156
|
+
]));
|
|
153
157
|
}
|
|
154
158
|
// ---------------------------------------------------------------------------
|
|
155
159
|
// Ignore-list CRUD (per-bridge chat blocklist)
|
|
@@ -302,6 +306,7 @@ var automation_activity = __webpack_require__(21783);
|
|
|
302
306
|
role: msg.role,
|
|
303
307
|
sender_id: senderJid,
|
|
304
308
|
sender_name: senderName,
|
|
309
|
+
chat_link: adapter.chatLink?.(msg.remote_jid) ?? null,
|
|
305
310
|
text: msg.text,
|
|
306
311
|
silent,
|
|
307
312
|
event: msg.event
|
|
@@ -615,6 +620,26 @@ function safeBridgeId(id) {
|
|
|
615
620
|
return baseDir();
|
|
616
621
|
}
|
|
617
622
|
|
|
623
|
+
;// ./lib/bridges/whatsapp-link.ts
|
|
624
|
+
/**
|
|
625
|
+
* WhatsApp click-to-chat link for a Baileys JID.
|
|
626
|
+
*
|
|
627
|
+
* WhatsApp has no permalink to a group or to a single message, so only 1:1
|
|
628
|
+
* chats with a phone-number JID get a link: `https://wa.me/<digits>` opens
|
|
629
|
+
* that chat in the WhatsApp app or WhatsApp Web. `@lid` ids hide the phone
|
|
630
|
+
* number, and groups, channels and broadcasts have no public chat URL.
|
|
631
|
+
*/ // E.164 numbers are at most 15 digits; the shortest real ones are 7–8.
|
|
632
|
+
const E164_DIGITS = /^[1-9]\d{6,14}$/;
|
|
633
|
+
function whatsappChatLink(jid) {
|
|
634
|
+
if (!jid) return null;
|
|
635
|
+
const at = jid.lastIndexOf("@");
|
|
636
|
+
if (at < 0) return null;
|
|
637
|
+
const host = jid.slice(at + 1);
|
|
638
|
+
if (host !== "s.whatsapp.net" && host !== "c.us") return null;
|
|
639
|
+
const digits = jid.slice(0, at).split(":")[0];
|
|
640
|
+
return E164_DIGITS.test(digits) ? `https://wa.me/${digits}` : null;
|
|
641
|
+
}
|
|
642
|
+
|
|
618
643
|
// EXTERNAL MODULE: ./lib/utils/error.ts
|
|
619
644
|
var error = __webpack_require__(4379);
|
|
620
645
|
;// ./lib/bridges/whatsapp.ts
|
|
@@ -647,6 +672,7 @@ var error = __webpack_require__(4379);
|
|
|
647
672
|
|
|
648
673
|
|
|
649
674
|
|
|
675
|
+
|
|
650
676
|
class WhatsAppBridgeAdapter {
|
|
651
677
|
static{
|
|
652
678
|
this.SENT_IDS_MAX = 500;
|
|
@@ -870,10 +896,10 @@ class WhatsAppBridgeAdapter {
|
|
|
870
896
|
// adapter should re-deliver to agents) and the legacy
|
|
871
897
|
// `replace`/`update` events that arrive via messages.update.
|
|
872
898
|
if (payload.type !== "notify" && payload.type !== "append") return;
|
|
873
|
-
// On a fresh adapter boot the
|
|
874
|
-
// persisted. Read
|
|
875
|
-
//
|
|
876
|
-
const
|
|
899
|
+
// On a fresh adapter boot the watermarks are whatever the last run
|
|
900
|
+
// persisted. Read them once per batch (one cheap SQLite call) so old
|
|
901
|
+
// appends are rejected without per-message queries.
|
|
902
|
+
const watermarks = payload.type === "append" ? getRouteLastSeenTsMap(this.bridge_id) : null;
|
|
877
903
|
for (const raw of payload.messages ?? []){
|
|
878
904
|
const m = raw;
|
|
879
905
|
if (!m.key?.remoteJid) continue;
|
|
@@ -900,18 +926,20 @@ class WhatsAppBridgeAdapter {
|
|
|
900
926
|
// "real" the moment we see any message from it, even one whose
|
|
901
927
|
// body we end up unable to represent (e.g. reactions, polls).
|
|
902
928
|
const ts = typeof m.messageTimestamp === "number" ? m.messageTimestamp * 1000 : (m.messageTimestamp?.low ?? 0) * 1000 || Date.now();
|
|
903
|
-
// Watermark gate: on `append` batches, skip anything
|
|
904
|
-
//
|
|
905
|
-
//
|
|
906
|
-
//
|
|
907
|
-
//
|
|
908
|
-
|
|
909
|
-
if (
|
|
929
|
+
// Watermark gate: on `append` batches, skip anything at or below
|
|
930
|
+
// this chat's own persisted watermark. This prevents the server's
|
|
931
|
+
// reconnect replay from re-delivering messages we already routed in
|
|
932
|
+
// a previous process lifetime. `notify` events skip this check —
|
|
933
|
+
// they're live and may legitimately arrive out of order.
|
|
934
|
+
const watermark = watermarks?.get(remote_jid) ?? 0;
|
|
935
|
+
if (watermark > 0 && ts > 0 && ts <= watermark) {
|
|
910
936
|
continue;
|
|
911
937
|
}
|
|
912
|
-
//
|
|
913
|
-
//
|
|
914
|
-
|
|
938
|
+
// pushName names the *sender*: in groups that's a participant, and on
|
|
939
|
+
// fromMe messages it's the user's own name. Only a counterpart's
|
|
940
|
+
// pushName in a 1:1 chat is a valid label for the chat itself.
|
|
941
|
+
const chatPushName = is_group || m.key.fromMe ? null : m.pushName ?? null;
|
|
942
|
+
this.observeChat(remote_jid, chatPushName, ts);
|
|
915
943
|
// Unwrap protocol envelopes (view-once, ephemeral, etc.) so we can
|
|
916
944
|
// see the underlying payload uniformly, then turn it into a text
|
|
917
945
|
// body + ContentPart attachments the agent can consume.
|
|
@@ -929,7 +957,7 @@ class WhatsAppBridgeAdapter {
|
|
|
929
957
|
// chats it's undefined — the sender == remote_jid. Normalize so the
|
|
930
958
|
// dispatcher gets a routable user JID, not the legacy @c.us form.
|
|
931
959
|
const participant_jid = is_group && m.key.participant ? normalizeUserJid(m.key.participant) : null;
|
|
932
|
-
const chat_name = this.chats.get(remote_jid)?.name ??
|
|
960
|
+
const chat_name = this.chats.get(remote_jid)?.name ?? chatPushName;
|
|
933
961
|
const sender = resolveWhatsAppSender({
|
|
934
962
|
fromMe: m.key.fromMe === true,
|
|
935
963
|
isGroup: is_group,
|
|
@@ -987,7 +1015,11 @@ class WhatsAppBridgeAdapter {
|
|
|
987
1015
|
const ct = raw;
|
|
988
1016
|
const chatJid = pickContactChatJid(ct);
|
|
989
1017
|
if (!chatJid) continue;
|
|
990
|
-
const name =
|
|
1018
|
+
const name = [
|
|
1019
|
+
ct.name,
|
|
1020
|
+
ct.verifiedName,
|
|
1021
|
+
ct.notify
|
|
1022
|
+
].find((n)=>n?.trim()) ?? null;
|
|
991
1023
|
this.observeChat(chatJid, name, null);
|
|
992
1024
|
}
|
|
993
1025
|
});
|
|
@@ -1012,7 +1044,11 @@ class WhatsAppBridgeAdapter {
|
|
|
1012
1044
|
for (const ct of list){
|
|
1013
1045
|
const chatJid = pickContactChatJid(ct);
|
|
1014
1046
|
if (!chatJid) continue;
|
|
1015
|
-
this.observeChat(chatJid,
|
|
1047
|
+
this.observeChat(chatJid, [
|
|
1048
|
+
ct.name,
|
|
1049
|
+
ct.verifiedName,
|
|
1050
|
+
ct.notify
|
|
1051
|
+
].find((n)=>n?.trim()) ?? null, null);
|
|
1016
1052
|
}
|
|
1017
1053
|
});
|
|
1018
1054
|
// Group profile/settings updates (subject/description/permissions/etc.).
|
|
@@ -1121,6 +1157,9 @@ class WhatsAppBridgeAdapter {
|
|
|
1121
1157
|
error: null
|
|
1122
1158
|
});
|
|
1123
1159
|
}
|
|
1160
|
+
chatLink(remote_jid) {
|
|
1161
|
+
return whatsappChatLink(remote_jid);
|
|
1162
|
+
}
|
|
1124
1163
|
async sendText(remote_jid, text) {
|
|
1125
1164
|
// Hard guard: refuse to send to any chat whose route is in silent_mode.
|
|
1126
1165
|
// The dispatcher already short-circuits before calling sendText, but
|
|
@@ -1377,7 +1416,10 @@ class WhatsAppBridgeAdapter {
|
|
|
1377
1416
|
});
|
|
1378
1417
|
attachments.push(ref);
|
|
1379
1418
|
const sizeKb = Math.max(1, Math.round(buf.length / 1024));
|
|
1380
|
-
|
|
1419
|
+
// Sender-supplied document names can carry newlines or brackets;
|
|
1420
|
+
// describe the attachment by the store's sanitized name.
|
|
1421
|
+
const shownName = oneLine("filename" in ref && ref.filename || filename);
|
|
1422
|
+
text = (text ? text + "\n" : "") + `[Attached ${label}: ${shownName} (${mime}, ${sizeKb} KB); retained as a Jarela file reference.]`;
|
|
1381
1423
|
} catch (err) {
|
|
1382
1424
|
const m = (0,error/* errorMessage */.g)(err);
|
|
1383
1425
|
console.warn(`[bridge ${this.bridge_id}] failed to spill ${label} from ${remote_jid}: ${m}`);
|
|
@@ -1432,8 +1474,8 @@ class WhatsAppBridgeAdapter {
|
|
|
1432
1474
|
`lat=${degreesLatitude ?? "?"}`,
|
|
1433
1475
|
`lng=${degreesLongitude ?? "?"}`
|
|
1434
1476
|
];
|
|
1435
|
-
if (name) parts.push(`name
|
|
1436
|
-
if (address) parts.push(`address
|
|
1477
|
+
if (name) parts.push(`name=${JSON.stringify(oneLine(name))}`);
|
|
1478
|
+
if (address) parts.push(`address=${JSON.stringify(oneLine(address))}`);
|
|
1437
1479
|
text = (text ? text + "\n" : "") + `[location: ${parts.join(" ")}]`;
|
|
1438
1480
|
}
|
|
1439
1481
|
if (inner.liveLocationMessage) {
|
|
@@ -1441,12 +1483,12 @@ class WhatsAppBridgeAdapter {
|
|
|
1441
1483
|
text = (text ? text + "\n" : "") + `[live-location: lat=${degreesLatitude ?? "?"} lng=${degreesLongitude ?? "?"}]`;
|
|
1442
1484
|
}
|
|
1443
1485
|
if (inner.contactMessage) {
|
|
1444
|
-
const name = inner.contactMessage.displayName ?? "unknown";
|
|
1445
|
-
const vcard = inner.contactMessage.vcard ?? "";
|
|
1486
|
+
const name = oneLine(inner.contactMessage.displayName ?? "") || "unknown";
|
|
1487
|
+
const vcard = stripVcardBinary(inner.contactMessage.vcard ?? "");
|
|
1446
1488
|
text = (text ? text + "\n" : "") + `[contact: ${name}]\n${vcard}`;
|
|
1447
1489
|
}
|
|
1448
1490
|
if (inner.contactsArrayMessage) {
|
|
1449
|
-
const names = (inner.contactsArrayMessage.contacts ?? []).map((c)=>c?.displayName ?? "unknown").join(", ");
|
|
1491
|
+
const names = (inner.contactsArrayMessage.contacts ?? []).map((c)=>oneLine(c?.displayName ?? "") || "unknown").join(", ");
|
|
1450
1492
|
text = (text ? text + "\n" : "") + `[contacts: ${names}]`;
|
|
1451
1493
|
}
|
|
1452
1494
|
return {
|
|
@@ -1458,8 +1500,9 @@ class WhatsAppBridgeAdapter {
|
|
|
1458
1500
|
if (!remote_jid) return;
|
|
1459
1501
|
const existing = this.chats.get(remote_jid);
|
|
1460
1502
|
// Prefer the most recently-observed name (group subjects rename; users
|
|
1461
|
-
// change push names). Don't overwrite a known name with
|
|
1462
|
-
|
|
1503
|
+
// change push names). Don't overwrite a known name with a missing or
|
|
1504
|
+
// blank one.
|
|
1505
|
+
const nextName = name?.trim() || existing?.name || null;
|
|
1463
1506
|
const nextTs = ts && (!existing?.last_message_at || ts > existing.last_message_at) ? ts : existing?.last_message_at ?? null;
|
|
1464
1507
|
this.chats.set(remote_jid, {
|
|
1465
1508
|
remote_jid,
|
|
@@ -1476,6 +1519,27 @@ class WhatsAppBridgeAdapter {
|
|
|
1476
1519
|
return this.currentStatus;
|
|
1477
1520
|
}
|
|
1478
1521
|
}
|
|
1522
|
+
function oneLine(value) {
|
|
1523
|
+
return value.replace(/[\s\u0085\u2028\u2029]+/g, " ").trim();
|
|
1524
|
+
}
|
|
1525
|
+
/**
|
|
1526
|
+
* Phones embed contact photos and logos as base64 vCard properties, often
|
|
1527
|
+
* tens of KB of noise in the agent's context. Drop those properties,
|
|
1528
|
+
* including their folded continuation lines (RFC 6350 §3.2), and keep the
|
|
1529
|
+
* readable fields.
|
|
1530
|
+
*/ function stripVcardBinary(vcard) {
|
|
1531
|
+
const out = [];
|
|
1532
|
+
let skipping = false;
|
|
1533
|
+
for (const line of vcard.split(/\r\n|\r|\n/)){
|
|
1534
|
+
if (/^[ \t]/.test(line)) {
|
|
1535
|
+
if (!skipping) out.push(line);
|
|
1536
|
+
continue;
|
|
1537
|
+
}
|
|
1538
|
+
skipping = /^(?:[\w-]+\.)?(?:PHOTO|LOGO|SOUND|KEY)[;:]/i.test(line);
|
|
1539
|
+
if (!skipping) out.push(line);
|
|
1540
|
+
}
|
|
1541
|
+
return out.join("\n").trim();
|
|
1542
|
+
}
|
|
1479
1543
|
// Minimal pino-compatible silent logger. Baileys uses `logger.child()`
|
|
1480
1544
|
// chaining internally, so we return ourselves for every child call.
|
|
1481
1545
|
function makeSilentLogger() {
|
|
@@ -1589,6 +1653,9 @@ function sanitizeMediaType(raw, kind, fallback) {
|
|
|
1589
1653
|
return primary;
|
|
1590
1654
|
}
|
|
1591
1655
|
function resolveWhatsAppSender(input) {
|
|
1656
|
+
// Platforms send blank display names ("" or whitespace) for contacts that
|
|
1657
|
+
// never set one; treat those as missing so the fallbacks still apply.
|
|
1658
|
+
const named = (...names)=>names.find((n)=>!!n && n.trim().length > 0)?.trim();
|
|
1592
1659
|
if (input.fromMe) {
|
|
1593
1660
|
return {
|
|
1594
1661
|
senderJid: input.selfJid ?? "me",
|
|
@@ -1599,12 +1666,12 @@ function resolveWhatsAppSender(input) {
|
|
|
1599
1666
|
const senderJid = input.participantJid ?? input.remoteJid;
|
|
1600
1667
|
return {
|
|
1601
1668
|
senderJid,
|
|
1602
|
-
senderName: input.participantName
|
|
1669
|
+
senderName: named(input.participantName, input.pushName) ?? senderJid
|
|
1603
1670
|
};
|
|
1604
1671
|
}
|
|
1605
1672
|
return {
|
|
1606
1673
|
senderJid: input.remoteJid,
|
|
1607
|
-
senderName: input.pushName
|
|
1674
|
+
senderName: named(input.pushName, input.chatName) ?? input.remoteJid
|
|
1608
1675
|
};
|
|
1609
1676
|
}
|
|
1610
1677
|
/**
|
|
@@ -1887,4 +1954,4 @@ async function stopAllBridges() {
|
|
|
1887
1954
|
|
|
1888
1955
|
};
|
|
1889
1956
|
;
|
|
1890
|
-
//# sourceMappingURL=
|
|
1957
|
+
//# sourceMappingURL=3272.js.map
|