cuelo 0.8.3 → 0.9.1
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/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +9 -6
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +5 -3
- package/.next/required-server-files.json +5 -3
- package/.next/routes-manifest.json +20 -0
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/account/route.js +1 -1
- package/.next/server/app/api/agent/[id]/account/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/agent/running/route.js.nft.json +1 -1
- package/.next/server/app/api/attachment-settings/route.js +1 -0
- package/.next/server/app/api/attachment-settings/route.js.nft.json +1 -0
- package/.next/server/app/api/attachment-settings/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/attachments/[id]/transcription/route.js +2 -0
- package/.next/server/app/api/attachments/[id]/transcription/route.js.nft.json +1 -0
- package/.next/server/app/api/attachments/[id]/transcription/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/attachments/draft/route.js +1 -0
- package/.next/server/app/api/attachments/draft/route.js.nft.json +1 -0
- package/.next/server/app/api/attachments/draft/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/attachments/route.js +28 -5
- package/.next/server/app/api/attachments/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js.nft.json +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/default-cwd/route.js.nft.json +1 -1
- package/.next/server/app/api/display-settings/route.js +1 -1
- package/.next/server/app/api/display-settings/route.js.nft.json +1 -1
- package/.next/server/app/api/document-text/route.js +4 -4
- package/.next/server/app/api/experiments/route.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/file-index/route.js.nft.json +1 -1
- package/.next/server/app/api/files/[...path]/route.js +2 -2
- package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/git/diff/route.js +2 -2
- package/.next/server/app/api/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/git/status/route.js +2 -2
- package/.next/server/app/api/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/gpt6/handles/route.js +1 -1
- package/.next/server/app/api/gpt6/handles/route.js.nft.json +1 -1
- package/.next/server/app/api/gpt6/reply/route.js +1 -1
- package/.next/server/app/api/gpt6/reply/route.js.nft.json +1 -1
- package/.next/server/app/api/gpt6/token/route.js +1 -1
- package/.next/server/app/api/gpt6/token/route.js.nft.json +1 -1
- package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
- package/.next/server/app/api/gpt6/web6-session/route.js.nft.json +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/live/call/[callId]/route.js +1 -1
- package/.next/server/app/api/live/call/[callId]/route.js.nft.json +1 -1
- package/.next/server/app/api/live/character-voice/route.js +1 -1
- package/.next/server/app/api/live/character-voice/route.js.nft.json +1 -1
- package/.next/server/app/api/live/events/route.js +2 -2
- package/.next/server/app/api/live/events/route.js.nft.json +1 -1
- package/.next/server/app/api/live/offer/route.js +1 -1
- package/.next/server/app/api/live/offer/route.js.nft.json +1 -1
- package/.next/server/app/api/live/voices/route.js +1 -1
- package/.next/server/app/api/live/voices/route.js.nft.json +1 -1
- package/.next/server/app/api/lounge/events/route.js +2 -2
- package/.next/server/app/api/lounge/events/route.js.nft.json +1 -1
- package/.next/server/app/api/lounge/route.js +1 -1
- package/.next/server/app/api/lounge/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js +2 -2
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/model-roles/route.js +1 -1
- package/.next/server/app/api/model-roles/route.js.nft.json +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +4 -4
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/office-avatars/[id]/route.js +1 -1
- package/.next/server/app/api/office-avatars/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route.js.nft.json +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/project-trust/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/route.js +1 -1
- package/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/server/app/api/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/runs/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/search/route.js +1 -1
- package/.next/server/app/api/sessions/search/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route.js +1 -1
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/install/route.js +2 -2
- package/.next/server/app/api/skills/install/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +2 -2
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js.nft.json +1 -1
- package/.next/server/app/api/theme/route.js +1 -1
- package/.next/server/app/api/theme/route.js.nft.json +1 -1
- package/.next/server/app/api/tool-image/route.js +1 -1
- package/.next/server/app/api/tool-image/route.js.nft.json +1 -1
- package/.next/server/app/api/update-maintenance/route.js +3 -3
- package/.next/server/app/api/update-maintenance/route.js.nft.json +1 -1
- package/.next/server/app/api/updates/route.js +1 -1
- package/.next/server/app/api/web-access/recovery/route.js +1 -1
- package/.next/server/app/api/web-access/route.js +1 -1
- package/.next/server/app/api/web6/consults/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +5 -5
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +5 -5
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/office/page.js +2 -2
- package/.next/server/app/office/page_client-reference-manifest.js +1 -1
- package/.next/server/app/office-preview/page.js +2 -2
- package/.next/server/app/office-preview/page_client-reference-manifest.js +1 -1
- package/.next/server/app/office-preview.html +1 -1
- package/.next/server/app/office-preview.rsc +3 -3
- package/.next/server/app/office-preview.segments/_full.segment.rsc +3 -3
- package/.next/server/app/office-preview.segments/_head.segment.rsc +1 -1
- package/.next/server/app/office-preview.segments/_index.segment.rsc +3 -3
- package/.next/server/app/office-preview.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/office-preview.segments/office-preview/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/office-preview.segments/office-preview.segment.rsc +1 -1
- package/.next/server/app/office.html +1 -1
- package/.next/server/app/office.rsc +5 -5
- package/.next/server/app/office.segments/_full.segment.rsc +5 -5
- package/.next/server/app/office.segments/_head.segment.rsc +1 -1
- package/.next/server/app/office.segments/_index.segment.rsc +3 -3
- package/.next/server/app/office.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/office.segments/office/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/office.segments/office.segment.rsc +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover/page.js +2 -2
- package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover.html +1 -1
- package/.next/server/app/recover.rsc +3 -3
- package/.next/server/app/recover.segments/_full.segment.rsc +3 -3
- package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
- package/.next/server/app/recover.segments/_index.segment.rsc +3 -3
- package/.next/server/app/recover.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +9 -6
- package/.next/server/chunks/1517.js +1 -1
- package/.next/server/chunks/2651.js +1 -1
- package/.next/server/chunks/4649.js +1 -1
- package/.next/server/chunks/5270.js +8 -0
- package/.next/server/chunks/5489.js +14 -14
- package/.next/server/chunks/5582.js +6 -6
- package/.next/server/chunks/7121.js +4 -0
- package/.next/server/chunks/7362.js +1 -1
- package/.next/server/chunks/8741.js +1 -0
- package/.next/server/chunks/877.js +1 -1
- package/.next/server/functions-config-manifest.json +9 -2
- package/.next/server/instrumentation.js +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +4 -4
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/A-KXZPM3YkTqPPzKrND64/_buildManifest.js +1 -0
- package/.next/static/chunks/6110-691c0f77641fc07e.js +1 -0
- package/.next/static/chunks/9575-916cd5a97ceda30f.js +22 -0
- package/.next/static/chunks/app/_global-error/page-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/account/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/attachment-settings/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/attachments/draft/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/attachments/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/display-settings/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/document-text/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/experiments/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/handles/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/reply/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/token/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/web6-session/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/home/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/call/[callId]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/character-voice/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/events/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/offer/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/voices/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/lounge/events/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/lounge/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/office-avatars/[id]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/office-avatars/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/projects/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/runs/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/settings/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/theme/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/tool-image/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/update-maintenance/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/updates/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/web-access/recovery/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/web-access/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/web6/consults/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/{layout-427af3ea4f595064.js → layout-eb09a412f4f55812.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/{main-2603b128da53b28c.js → main-26b32c580fb6231f.js} +3 -3
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6b1496af498bb4fd.js +1 -0
- package/.next/static/css/81a05eb6255ef12e.css +1 -0
- package/.next/trace +107 -107
- package/.next/trace-build +1 -1
- package/.next/types/app/api/attachment-settings/route.ts +351 -0
- package/.next/types/app/api/attachments/[id]/transcription/route.ts +351 -0
- package/.next/types/app/api/attachments/draft/route.ts +351 -0
- package/.next/types/routes.d.ts +4 -1
- package/.next/types/validator.ts +27 -0
- package/README.md +5 -2
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +3 -3
- package/Tools/CUELO_Setup/files/usage-server.js +56 -3
- package/Tools/OMP_Global_Config/agent/AGENTS.md +2 -0
- package/Tools/OMP_Global_Config/agent/agents/maker.md +3 -1
- package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +3 -1
- package/Tools/OMP_Global_Config/agent/rules/omp-harness.md +5 -0
- package/Tools/OMP_Global_Config/agent/rules/subagent.md +15 -0
- package/Tools/OMP_Global_Config/agent/sop/_writer.md +2 -0
- package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +296 -0
- package/next.config.ts +1 -0
- package/package.json +10 -7
- package/.next/static/A6e8vaM_XsMnaMJbdHUo9/_buildManifest.js +0 -1
- package/.next/static/chunks/6110-46b1b16915b39e5b.js +0 -1
- package/.next/static/chunks/9575-7c8d686e116aef58.js +0 -22
- package/.next/static/chunks/app/_global-error/page-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/account/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/attachments/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/display-settings/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/document-text/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/experiments/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/gpt6/handles/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/gpt6/reply/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/gpt6/token/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/gpt6/web6-session/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/home/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/call/[callId]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/character-voice/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/events/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/offer/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/voices/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/lounge/events/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/lounge/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/[id]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/projects/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/runs/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/settings/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/theme/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/tool-image/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/update-maintenance/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/updates/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/web-access/recovery/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/web-access/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/web6/consults/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b73c548944bb1320.js +0 -1
- package/.next/static/css/67b6e19482963224.css +0 -1
- /package/.next/static/{A6e8vaM_XsMnaMJbdHUo9 → A-KXZPM3YkTqPPzKrND64}/_ssgManifest.js +0 -0
|
@@ -295,6 +295,21 @@ Task Guard lock·budget·소유권·`FINDING_ID`, exit status, 파일·권한·
|
|
|
295
295
|
- 조각 간 인터페이스·시그니처·파일 소유권·출력 형식은 배치 `context`에 미리 확정한다.
|
|
296
296
|
- 짧은 결정·변경분과 artifact 링크로 충분하면 전체 대화나 상류 보고서를 복사하지 않는다.
|
|
297
297
|
|
|
298
|
+
### Skill 인계
|
|
299
|
+
|
|
300
|
+
- Main은 자신이 읽고 활용한 Skill 중 맡길 조각과 관련된 것만 브리프에 인계한다. `skill://이름`과
|
|
301
|
+
필요한 절·문서 locator, 적용한 판단, 아직 불명확한 점을 짧게 적는다. 원문 전체나 설치된 Skill
|
|
302
|
+
목록을 복사하지 않는다.
|
|
303
|
+
- 현재 규칙·작업에 따라 필수인 참조와 선택적인 참고를 구분한다. Maker는 필수 Skill을 관련
|
|
304
|
+
작업에 착수하기 전에 직접 읽는다. Main의 요약·원문을 읽었다는 설명은 Maker의 직접 참조를
|
|
305
|
+
대체하지 않는다. 같은 조각에서 이미 읽은 원문과 locator는 재사용한다.
|
|
306
|
+
- 적용 방법이 헷갈리거나 Main의 요약과 현재 코드·규칙이 어긋나면 해당 Skill의 필요한 절을
|
|
307
|
+
다시 확인한다. “헷갈릴 때 참조”는 필수 선독을 생략하는 조건이 아니다. 원문을 확인해도
|
|
308
|
+
승인·보존 계약과 충돌하면 그 지점만 Main에게 근거와 함께 알리고 독립 작업은 계속한다.
|
|
309
|
+
- Maker는 적용한 판단과 해당 변경·검증 근거를 기존 보고에 연결한다. Main은 그 근거로
|
|
310
|
+
적용 여부를 확인하며, 브리프에 이름을 적었다는 사실만으로 사용했다고 보고하지 않는다.
|
|
311
|
+
이 절은 새 자동 차단 gate나 관계없는 Skill까지 읽는 의무를 만들지 않는다.
|
|
312
|
+
|
|
298
313
|
## 병렬과 대기
|
|
299
314
|
|
|
300
315
|
- `task.maxConcurrency`는 ceiling이다. ready인 진짜 독립 조각을 빈 슬롯까지 `tasks[]` feed로
|
|
@@ -59,6 +59,8 @@
|
|
|
59
59
|
- Answer every finding that names your change with the fix you made and the raw output of the check
|
|
60
60
|
that now covers it, keeping the same finding id — no separate messenger or new reporting stage.
|
|
61
61
|
Never weaken an expectation, relax a fixture, or hide a failure to make validation pass.
|
|
62
|
+
- Follow `rule://subagent` 「Skill 인계」 for relevant skills handed over in the brief:
|
|
63
|
+
required direct reading before implementation, reuse of known locators, and reconsultation when unclear.
|
|
62
64
|
- 관련 Skill을 먼저 읽고 이번 조치에 적용되는 주의사항만 이름·절/locator·위험 요약으로 추린다.
|
|
63
65
|
pre-retry advisory를 보충하다가(Common Rules) 검증 약화나 Skill 충돌·적용 불가가 나오면 문제 된
|
|
64
66
|
조치만 보류하고 기존 blocker/조향 DM으로 원문 오류 locator·Skill locator·제안 조치·보존할 수용
|
|
@@ -5967,6 +5967,87 @@ export class LearnTool implements AgentTool<LearnSchema> {`,
|
|
|
5967
5967
|
);
|
|
5968
5968
|
`,
|
|
5969
5969
|
},
|
|
5970
|
+
{
|
|
5971
|
+
// 2026-10-04 한국어 회상 측정(.omp/memory-eval, 190문항, multilingual-e5-large): baseline hit@8 19.4%.
|
|
5972
|
+
// 정답 원문 learn/retain 은 상위 8칸 1,520칸 중 79칸뿐이었고, 세 원인이 겹쳐 있었다. 하나만 고치면 다른
|
|
5973
|
+
// 원인이 빈자리를 채워 효과가 없었고(13.9~26.7%), 셋을 함께 고치면 57.8%다(영어 fixture MRR 0.695→0.872).
|
|
5974
|
+
// (1) FTS5 unicode61 은 어절을 통째로 토큰으로 삼아 `배포를`·`배포는` 이 서로 맞지 않는다(질의 어절 2,879개
|
|
5975
|
+
// 중 정답 원문에 그대로 있는 것 521, 조사를 떼면 761). 한글로만 된 어절은 조사·어미를 뗀 어간을 어휘 그룹에
|
|
5976
|
+
// 더하고 FTS 는 그 어간의 접두 질의로 찾는다. 사전 없이 끝 음절만 자르므로 어간은 늘 원 어절의 접두다.
|
|
5977
|
+
file: "../pi-mnemopi/src/core/beam/recall.ts",
|
|
5978
|
+
marker: "// HANSE: korean particle stem",
|
|
5979
|
+
anchor: "const FLAT_FACT_SEARCH_NOISE: Record<string, true> = { entity: true, fact: true };\n",
|
|
5980
|
+
patched: `const FLAT_FACT_SEARCH_NOISE: Record<string, true> = { entity: true, fact: true };
|
|
5981
|
+
|
|
5982
|
+
// HANSE: korean particle stem
|
|
5983
|
+
const HANGUL_WORD = /^[\\uac00-\\ud7af]+$/;
|
|
5984
|
+
/** 긴 것부터 맞춘다. 떼고 남는 어간이 두 음절보다 짧으면 떼지 않는다. */
|
|
5985
|
+
const KOREAN_SUFFIXES = [
|
|
5986
|
+
"에서는", "에서도", "으로는", "으로도", "에게서", "이라는", "이라고", "했는데", "됐는데", "하나요", "되나요", "인가요", "하려면", "입니다", "합니다",
|
|
5987
|
+
"에서", "으로", "에게", "한테", "까지", "부터", "처럼", "보다", "마다", "라는", "라고", "에는", "로는", "이나", "이며", "이고", "하고", "해줘",
|
|
5988
|
+
"해야", "하는", "했다", "하면", "해서", "하게", "하지", "되는", "된다", "인데", "이다", "인지",
|
|
5989
|
+
"와", "과", "을", "를", "이", "가", "은", "는", "에", "의", "도", "만", "로", "나", "랑", "한", "할", "해", "된",
|
|
5990
|
+
];
|
|
5991
|
+
function koreanStem(token: string): string {
|
|
5992
|
+
if (!HANGUL_WORD.test(token)) return token;
|
|
5993
|
+
for (const suffix of KOREAN_SUFFIXES) {
|
|
5994
|
+
if (token.endsWith(suffix) && token.length - suffix.length >= 2) return token.slice(0, -suffix.length);
|
|
5995
|
+
}
|
|
5996
|
+
return token;
|
|
5997
|
+
}
|
|
5998
|
+
`,
|
|
5999
|
+
},
|
|
6000
|
+
{
|
|
6001
|
+
file: "../pi-mnemopi/src/core/beam/recall.ts",
|
|
6002
|
+
marker: "if (stem !== token) seen.add(stem);",
|
|
6003
|
+
anchor: "\t\tfor (const variant of recallSynonyms(token, useSynonyms)) {\n\t\t\tfor (const part of tokenize(variant)) seen.add(part);\n\t\t}\n\t\tif (seen.size > 0) groups.push([...seen]);\n",
|
|
6004
|
+
patched: "\t\tfor (const variant of recallSynonyms(token, useSynonyms)) {\n\t\t\tfor (const part of tokenize(variant)) seen.add(part);\n\t\t}\n\t\tconst stem = koreanStem(token);\n\t\tif (stem !== token) seen.add(stem);\n\t\tif (seen.size > 0) groups.push([...seen]);\n",
|
|
6005
|
+
},
|
|
6006
|
+
{
|
|
6007
|
+
file: "../pi-mnemopi/src/core/beam/recall.ts",
|
|
6008
|
+
marker: "ftsPhrase(koreanStem(token))}*",
|
|
6009
|
+
anchor: '\treturn tokens.map(ftsPhrase).join(" OR ");\n',
|
|
6010
|
+
patched: '\treturn tokens.map(token => (koreanStem(token) === token ? ftsPhrase(token) : `${ftsPhrase(koreanStem(token))}*`)).join(" OR ");\n',
|
|
6011
|
+
},
|
|
6012
|
+
{
|
|
6013
|
+
// (2) sleep 은 같은 출처의 working 행을 ` | ` 로 이어 aaak 로 줄인 에피소드를 만든다(CUELO 평균 11,180자, 최대
|
|
6014
|
+
// 99,932자). 원본 행은 consolidated_at 만 찍히고 남아 그 자체로 후보다. 그래서 에피소드는 사본인데, 병합 문서의
|
|
6015
|
+
// 임베딩이 여러 질의에 두루 가깝고 episodic 점수가 dense 를 working(0.2)보다 크게(0.5) 쳐서 상위 8칸 중
|
|
6016
|
+
// 718칸을 차지했다. 원본이 모두 살아 있는(지워지거나 superseded 되지 않은) 에피소드만 후보에서 뺀다.
|
|
6017
|
+
// 원본이 하나라도 없으면 그 에피소드가 유일한 사본이므로 지금처럼 남긴다. 30일·180일 열화로 에피소드
|
|
6018
|
+
// 뒤쪽 교훈이 잘리는 손실(226개 중 127·155개)도 원본이 남은 에피소드에는 회상 손실이 되지 않는다.
|
|
6019
|
+
file: "../pi-mnemopi/src/core/beam/recall.ts",
|
|
6020
|
+
marker: "// HANSE: skip sleep episodes whose sources are live",
|
|
6021
|
+
anchor: "\tif (candidates.length === 0) return candidates;\n\tvoid useSynonyms;\n\treturn candidates;\n",
|
|
6022
|
+
patched: ` if (candidates.length === 0) return candidates;
|
|
6023
|
+
void useSynonyms;
|
|
6024
|
+
// HANSE: skip sleep episodes whose sources are live
|
|
6025
|
+
return candidates.filter(candidate => {
|
|
6026
|
+
if (candidate.tierLabel !== "episodic" || asString(candidate.row.source) !== "sleep_consolidation") return true;
|
|
6027
|
+
const ids = asString(candidate.row.summary_of)
|
|
6028
|
+
.split(",")
|
|
6029
|
+
.map(id => id.trim())
|
|
6030
|
+
.filter(id => id.length > 0);
|
|
6031
|
+
if (ids.length === 0) return true;
|
|
6032
|
+
const live = queryGet(
|
|
6033
|
+
beam,
|
|
6034
|
+
\`SELECT COUNT(*) AS n FROM working_memory WHERE id IN (\${placeholders(ids.length)}) AND superseded_by IS NULL\`,
|
|
6035
|
+
ids,
|
|
6036
|
+
);
|
|
6037
|
+
return asNumber(live?.n) !== ids.length;
|
|
6038
|
+
});
|
|
6039
|
+
`,
|
|
6040
|
+
},
|
|
6041
|
+
{
|
|
6042
|
+
// (3) learn/retain 은 의도적 기록인데 veracity "tool" 로 저장되고(learn.ts·memory-retain.ts) 회상 가중이 0.5 라,
|
|
6043
|
+
// "unknown"(0.8)인 자동 transcript 아래로 밀렸다(정답 원문 fts=1 이어도 순위 25위). omp 에서 "tool" 을 쓰는
|
|
6044
|
+
// 곳은 이 둘뿐이다. 회상 점수의 가중만 1.0 으로 올린다. 저장 데이터와 veracity-consolidation 가중은 그대로다.
|
|
6045
|
+
// config.ts 의 MNEMOPI_TOOL_WEIGHT(toolWeight)는 어디서도 읽지 않아 이 경로를 바꾸지 못한다.
|
|
6046
|
+
file: "../pi-mnemopi/src/core/beam/recall.ts",
|
|
6047
|
+
marker: "// HANSE: deliberate learn/retain weight",
|
|
6048
|
+
anchor: "\ttool: 0.5,\n\tfalse: 0,\n",
|
|
6049
|
+
patched: "\t// HANSE: deliberate learn/retain weight\n\ttool: 1.0,\n\tfalse: 0,\n",
|
|
6050
|
+
},
|
|
5970
6051
|
{
|
|
5971
6052
|
// 2026-09-29 실측: 기억 임베딩 재구축(모델 변경·중단 뒤 재개)이 128건 묶음을 한꺼번에 worker 에
|
|
5972
6053
|
// 올렸다. worker 는 요청을 하나씩 처리하는데 요청마다 120초 타이머가 보낸 순간부터 흘러,
|
|
@@ -8810,6 +8891,12 @@ function parentSubagentServiceTiers(
|
|
|
8810
8891
|
marker: 'if(!i.endsWith(".jsonl")||i.includes(".bak")||ERe(i))continue;let a=i.slice(0,-6),',
|
|
8811
8892
|
anchor: 'if(!i.endsWith(".jsonl")||i.includes(".bak")||ERe(i))continue;let a=i.slice(0,-6),',
|
|
8812
8893
|
patched: 'if(!i.endsWith(".jsonl")||i.includes(".bak")||ERe(i))continue;let a=i.slice(0,-6),',
|
|
8894
|
+
}, {
|
|
8895
|
+
// 18.6.0 번들의 같은 upstream 조건(_Re = isAdvisorTranscriptName) no-op. 이름만 바뀌었다.
|
|
8896
|
+
file: "dist/cli.js",
|
|
8897
|
+
marker: 'if(!i.endsWith(".jsonl")||i.includes(".bak")||_Re(i))continue;let a=i.slice(0,-6),',
|
|
8898
|
+
anchor: 'if(!i.endsWith(".jsonl")||i.includes(".bak")||_Re(i))continue;let a=i.slice(0,-6),',
|
|
8899
|
+
patched: 'if(!i.endsWith(".jsonl")||i.includes(".bak")||_Re(i))continue;let a=i.slice(0,-6),',
|
|
8813
8900
|
}],
|
|
8814
8901
|
},
|
|
8815
8902
|
// 18.4.5 는 /ratchet 을 새로 넣으면서 `src/ratchet/prelude.ts`(코드)와 `prelude.js`(eval 텍스트 자산)를 같은 stem 으로
|
|
@@ -9341,6 +9428,215 @@ class HarmonyLeakInterruption extends Error {`,
|
|
|
9341
9428
|
anchor: "\t\tconst attribution = options?.attribution ?? \"user\";\n",
|
|
9342
9429
|
patched: "\t\tconst attribution = options?.attribution ?? \"user\";\n\t\tif (mode !== \"aside\") this.#raiseAutoThinkingForQueuedInput(text, attribution);\n",
|
|
9343
9430
|
},
|
|
9431
|
+
// CUELO 계정 자리(2026-10-04). upstream oauth.accounts()의 position은 활성 credential 배열 index라서,
|
|
9432
|
+
// 한 계정이 인증 실패로 비활성화되면 뒤 계정이 앞 자리로 당겨진다(RIN 자리 0이 비면 MIO 계정이 RIN이 된다).
|
|
9433
|
+
// 재로그인도 새 행을 만들고 tombstone을 지우므로 [11, 12]처럼 순서가 뒤집힌다. 자리 = (활성 OAuth id ∪
|
|
9434
|
+
// 인증 실패로 자리를 지키는 tombstone id) 오름차순 index로 바꾸고, 같은 identity의 재로그인은 그
|
|
9435
|
+
// tombstone 행을 같은 id로 되살린다. 로그아웃(deleted by user)·교체(replaced by)는 자리를 반납한다.
|
|
9436
|
+
// accounts()는 계속 활성 계정만 돌려주므로 position과 배열 index가 다를 수 있다.
|
|
9437
|
+
{
|
|
9438
|
+
file: "../pi-ai/src/auth/sqlite-credential-store.ts",
|
|
9439
|
+
marker: "function holdsOAuthSeat(row: AuthRow): boolean {",
|
|
9440
|
+
anchor: "\nfunction matchesReplacementCredential(\n",
|
|
9441
|
+
patched: `
|
|
9442
|
+
/**
|
|
9443
|
+
* CUELO: a tombstone that keeps its account seat (\`oauth.accounts\` position) — an OAuth row
|
|
9444
|
+
* disabled by an auth failure. Replacement and logout tombstones give their seat up.
|
|
9445
|
+
*/
|
|
9446
|
+
function holdsOAuthSeat(row: AuthRow): boolean {
|
|
9447
|
+
return (
|
|
9448
|
+
row.credential_type !== "api_key" &&
|
|
9449
|
+
row.disabled_cause !== null &&
|
|
9450
|
+
!/^(replaced by|deleted by user)/i.test(row.disabled_cause)
|
|
9451
|
+
);
|
|
9452
|
+
}
|
|
9453
|
+
|
|
9454
|
+
function matchesReplacementCredential(
|
|
9455
|
+
`,
|
|
9456
|
+
},
|
|
9457
|
+
{
|
|
9458
|
+
file: "../pi-ai/src/auth/sqlite-credential-store.ts",
|
|
9459
|
+
marker: "\t\t\t// CUELO: an auth-failed account that logs in again revives its own tombstone in place",
|
|
9460
|
+
anchor: "\t\t\t\tthis.#deleteStmt.run(\"replaced by newer credential\", row.id);\n\t\t\t}\n\n\t\t\tif (targetId === null) {\n\t\t\t\tconst row = this.#insertStmt.get(\n",
|
|
9461
|
+
patched: `\t\t\t\tthis.#deleteStmt.run("replaced by newer credential", row.id);
|
|
9462
|
+
\t\t\t}
|
|
9463
|
+
|
|
9464
|
+
\t\t\t// CUELO: an auth-failed account that logs in again revives its own tombstone in place
|
|
9465
|
+
\t\t\t// instead of getting a new row, so its credential id, account seat and the session pins
|
|
9466
|
+
\t\t\t// that name it survive re-authentication. Upstream's replacement matcher decides identity:
|
|
9467
|
+
\t\t\t// another member of the same org never claims the row. Blocks on the id stay as they were.
|
|
9468
|
+
\t\t\tif (targetId === null && item.type === "oauth") {
|
|
9469
|
+
\t\t\t\tfor (const row of this.#listDisabledByProviderStmt.all(providerName) as AuthRow[]) {
|
|
9470
|
+
\t\t\t\t\tif (!holdsOAuthSeat(row)) continue;
|
|
9471
|
+
\t\t\t\t\tconst identityKey = resolveRowCredentialIdentityKey(providerName, row);
|
|
9472
|
+
\t\t\t\t\tif (!matchesReplacementCredential(providerName, deserializeCredential(row), identityKey, item)) continue;
|
|
9473
|
+
\t\t\t\t\tconst revived = this.#db
|
|
9474
|
+
\t\t\t\t\t\t.query(
|
|
9475
|
+
\t\t\t\t\t\t\t\`UPDATE auth_credentials SET credential_type = ?, data = ?, identity_key = ?, disabled_cause = NULL, updated_at = \${SQLITE_NOW_EPOCH} WHERE id = ? AND disabled_cause IS NOT NULL\`,
|
|
9476
|
+
\t\t\t\t\t\t)
|
|
9477
|
+
\t\t\t\t\t\t.run(serialized.credentialType, serialized.data, serialized.identityKey, row.id) as { changes: number };
|
|
9478
|
+
\t\t\t\t\tif (revived.changes > 0) {
|
|
9479
|
+
\t\t\t\t\t\ttargetId = row.id;
|
|
9480
|
+
\t\t\t\t\t\tbreak;
|
|
9481
|
+
\t\t\t\t\t}
|
|
9482
|
+
\t\t\t\t}
|
|
9483
|
+
\t\t\t}
|
|
9484
|
+
|
|
9485
|
+
\t\t\tif (targetId === null) {
|
|
9486
|
+
\t\t\t\tconst row = this.#insertStmt.get(
|
|
9487
|
+
`,
|
|
9488
|
+
},
|
|
9489
|
+
{
|
|
9490
|
+
file: "../pi-ai/src/auth/sqlite-credential-store.ts",
|
|
9491
|
+
marker: "\tlistOAuthSeatHolderIds(provider: string): number[] {",
|
|
9492
|
+
anchor: "\tasync listDisabledCredentials(provider?: string): Promise<DisabledCredentialSummary[]> {\n",
|
|
9493
|
+
patched: `\t/**
|
|
9494
|
+
\t * CUELO: ids of \`provider\` tombstones that keep their account seat — auth failures whose
|
|
9495
|
+
\t * identity no active row has taken over (the superseded-tombstone purge's own rule).
|
|
9496
|
+
\t */
|
|
9497
|
+
\tlistOAuthSeatHolderIds(provider: string): number[] {
|
|
9498
|
+
\t\tconst active: AuthCredential[] = [];
|
|
9499
|
+
\t\tfor (const row of this.#listActiveByProviderStmt.all(provider) as AuthRow[]) {
|
|
9500
|
+
\t\t\tconst credential = deserializeCredential(row);
|
|
9501
|
+
\t\t\tif (credential?.type === "oauth") active.push(credential);
|
|
9502
|
+
\t\t}
|
|
9503
|
+
\t\tconst ids: number[] = [];
|
|
9504
|
+
\t\tfor (const row of this.#listDisabledByProviderStmt.all(provider) as AuthRow[]) {
|
|
9505
|
+
\t\t\tif (!holdsOAuthSeat(row)) continue;
|
|
9506
|
+
\t\t\tconst credential = deserializeCredential(row);
|
|
9507
|
+
\t\t\tif (credential === null) continue;
|
|
9508
|
+
\t\t\tconst identityKey = resolveRowCredentialIdentityKey(provider, row);
|
|
9509
|
+
\t\t\tif (active.some(current => matchesReplacementCredential(provider, credential, identityKey, current))) continue;
|
|
9510
|
+
\t\t\tids.push(row.id);
|
|
9511
|
+
\t\t}
|
|
9512
|
+
\t\treturn ids;
|
|
9513
|
+
\t}
|
|
9514
|
+
|
|
9515
|
+
\tasync listDisabledCredentials(provider?: string): Promise<DisabledCredentialSummary[]> {
|
|
9516
|
+
`,
|
|
9517
|
+
},
|
|
9518
|
+
{
|
|
9519
|
+
file: "../pi-ai/src/auth/store.ts",
|
|
9520
|
+
marker: "\tlistOAuthSeatHolderIds?(provider: string): number[];",
|
|
9521
|
+
anchor: "\tlistDisabledCredentials?(provider?: string, signal?: AbortSignal): Promise<DisabledCredentialSummary[]>;\n",
|
|
9522
|
+
patched: "\tlistDisabledCredentials?(provider?: string, signal?: AbortSignal): Promise<DisabledCredentialSummary[]>;\n\t/** CUELO: ids of tombstones that keep their account seat. Local stores only; others keep upstream's compacted order. */\n\tlistOAuthSeatHolderIds?(provider: string): number[];\n",
|
|
9523
|
+
},
|
|
9524
|
+
{
|
|
9525
|
+
file: "../pi-ai/src/auth/pool.ts",
|
|
9526
|
+
marker: "\toauthSeatIds(provider: string): number[] {",
|
|
9527
|
+
anchor: "\t/**\n\t * Disabled credential tombstones for display surfaces (`omp usage`,\n\t * broker `GET /v1/credentials/disabled`). Empty when the backing store\n\t * keeps no tombstones or the remote broker predates the endpoint.\n\t */\n\tasync listDisabled(",
|
|
9528
|
+
patched: `\t/**
|
|
9529
|
+
\t * CUELO: the account seats of \`provider\` — active OAuth rows plus tombstones that keep their
|
|
9530
|
+
\t * seat, by id. \`oauth.accounts\` reports an account's index here as its \`position\`, so an
|
|
9531
|
+
\t * auth-failed account leaves its seat empty instead of shifting every later account.
|
|
9532
|
+
\t */
|
|
9533
|
+
\toauthSeatIds(provider: string): number[] {
|
|
9534
|
+
\t\tconst ids = new Set<number>();
|
|
9535
|
+
\t\tfor (const entry of this.entries(provider)) if (entry.credential.type === "oauth") ids.add(entry.id);
|
|
9536
|
+
\t\tfor (const id of this.#store.listOAuthSeatHolderIds?.(provider) ?? []) ids.add(id);
|
|
9537
|
+
\t\treturn [...ids].sort((a, b) => a - b);
|
|
9538
|
+
\t}
|
|
9539
|
+
|
|
9540
|
+
\t/**
|
|
9541
|
+
\t * Disabled credential tombstones for display surfaces (\`omp usage\`,
|
|
9542
|
+
\t * broker \`GET /v1/credentials/disabled\`). Empty when the backing store
|
|
9543
|
+
\t * keeps no tombstones or the remote broker predates the endpoint.
|
|
9544
|
+
\t */
|
|
9545
|
+
\tasync listDisabled(`,
|
|
9546
|
+
},
|
|
9547
|
+
{
|
|
9548
|
+
file: "../pi-ai/src/auth/types.ts",
|
|
9549
|
+
marker: "\toauthSeatIds(provider: string): number[];",
|
|
9550
|
+
anchor: "\tlistDisabled(provider?: string, signal?: AbortSignal): Promise<DisabledCredentialSummary[]>;\n",
|
|
9551
|
+
patched: "\tlistDisabled(provider?: string, signal?: AbortSignal): Promise<DisabledCredentialSummary[]>;\n\t/** CUELO: account seats by id — active OAuth rows plus auth-failed tombstones awaiting re-login. A seat's index is `OAuthAccountSummary.position`. */\n\toauthSeatIds(provider: string): number[];\n",
|
|
9552
|
+
},
|
|
9553
|
+
{
|
|
9554
|
+
file: "../pi-ai/src/auth/types.ts",
|
|
9555
|
+
marker: " * Returned by {@link AuthStorage.oauth.accounts}; `position` (0-based) is the\n * account seat.",
|
|
9556
|
+
anchor: " * Returned by {@link AuthStorage.oauth.accounts}; `position` (0-based) is the\n * selector accepted by {@link AuthStorage.oauth.accessById}.\n",
|
|
9557
|
+
patched: " * Returned by {@link AuthStorage.oauth.accounts}; `position` (0-based) is the\n * account seat. CUELO: an auth-failed account keeps its seat until it logs in again, so\n * positions can have gaps — select by `position` or `credentialId`, never by array index.\n",
|
|
9558
|
+
},
|
|
9559
|
+
{
|
|
9560
|
+
file: "../pi-ai/src/auth/types.ts",
|
|
9561
|
+
marker: "\t * order, WITHOUT refreshing any token. Each account's `position` (0-based) is its\n\t * account seat",
|
|
9562
|
+
anchor: "\t * order, WITHOUT refreshing any token. The array position (0-based) is the\n\t * selector accepted by {@link AuthStorage.oauth.accessById}; a \"pick the Nth\n\t * account\" UI should render `position + 1`.\n",
|
|
9563
|
+
patched: "\t * order, WITHOUT refreshing any token. Each account's `position` (0-based) is its\n\t * account seat; a \"pick the Nth account\" UI should render `position + 1`. CUELO: an\n\t * auth-failed account keeps its seat empty, so positions can have gaps.\n",
|
|
9564
|
+
},
|
|
9565
|
+
{
|
|
9566
|
+
file: "../pi-ai/src/auth/oauth.ts",
|
|
9567
|
+
marker: "\t * order, WITHOUT refreshing any token. Each account's `position` (0-based) is its\n\t * account seat",
|
|
9568
|
+
anchor: "\t * order, WITHOUT refreshing any token. The array position (0-based) is the\n\t * selector displayed by a \"pick the Nth account\" UI as `position + 1`.\n",
|
|
9569
|
+
patched: "\t * order, WITHOUT refreshing any token. Each account's `position` (0-based) is its\n\t * account seat, displayed by a \"pick the Nth account\" UI as `position + 1`. CUELO: an\n\t * auth-failed account keeps its seat empty, so positions can have gaps.\n",
|
|
9570
|
+
},
|
|
9571
|
+
{
|
|
9572
|
+
file: "../pi-ai/src/auth/oauth.ts",
|
|
9573
|
+
marker: "\t\tconst seats = this.#deps.pool.oauthSeatIds(provider);",
|
|
9574
|
+
anchor: "\t\treturn this.#getStoredOAuthSelections(provider).map((selection, position) => {\n\t\t\tconst active = selection.credentialId === activeCredentialId;\n\t\t\treturn {\n\t\t\t\tposition,\n",
|
|
9575
|
+
patched: `\t\t// CUELO: \`position\` is the account seat (CredentialPool.oauthSeatIds), not the index in this
|
|
9576
|
+
\t\t// active-only list, so a later account is never renumbered into an auth-failed account's seat.
|
|
9577
|
+
\t\tconst seats = this.#deps.pool.oauthSeatIds(provider);
|
|
9578
|
+
\t\treturn this.#getStoredOAuthSelections(provider).map(selection => {
|
|
9579
|
+
\t\t\tconst active = selection.credentialId === activeCredentialId;
|
|
9580
|
+
\t\t\treturn {
|
|
9581
|
+
\t\t\t\tposition: seats.indexOf(selection.credentialId),
|
|
9582
|
+
`,
|
|
9583
|
+
},
|
|
9584
|
+
{
|
|
9585
|
+
// 같은 org의 다른 사람 tombstone을 활성 계정이 숨기던 판정. upstream 주석("neither email nor
|
|
9586
|
+
// accountId contradicts")대로 email·accountId가 다르면 org가 같아도 다른 identity다.
|
|
9587
|
+
file: "src/cli/usage-cli.ts",
|
|
9588
|
+
marker: "\t\tif (summaryEmail && accountEmail) return summaryEmail === accountEmail;",
|
|
9589
|
+
anchor: "\t\tif (summaryEmail && accountEmail && summaryEmail === accountEmail) return true;\n\t\tif (summaryAccountId && accountAccountId && summaryAccountId === accountAccountId) return true;\n",
|
|
9590
|
+
patched: "\t\t// CUELO: a differing email or accountId is another person even inside one org (or a shared\n\t\t// Codex workspace id), so that member's auth failure stays visible.\n\t\tif (summaryEmail && accountEmail) return summaryEmail === accountEmail;\n\t\tif (summaryAccountId && accountAccountId) return summaryAccountId === accountAccountId;\n",
|
|
9591
|
+
},
|
|
9592
|
+
{
|
|
9593
|
+
// --list 가 position + 1 로 번호를 보여 주므로 --account 도 같은 번호(자리)로 고른다.
|
|
9594
|
+
file: "src/commands/token.ts",
|
|
9595
|
+
marker: "\t\t\t\tconst selected = n === undefined ? undefined : accounts.find(acct => acct.position === n - 1);",
|
|
9596
|
+
anchor: `\t\t\t\tconst n = flags.account;
|
|
9597
|
+
\t\t\t\tif (n === undefined || n < 1 || n > accounts.length) {
|
|
9598
|
+
\t\t\t\t\tprocess.stderr.write(
|
|
9599
|
+
\t\t\t\t\t\t\`\${chalk.red(\`Invalid --account \${n ?? "(missing)"}.\`)} Provider "\${providerName}" has \${accounts.length} OAuth account(s) (1-\${accounts.length}).\\n\`,
|
|
9600
|
+
\t\t\t\t\t);
|
|
9601
|
+
\t\t\t\t\tprocess.exitCode = 1;
|
|
9602
|
+
\t\t\t\t\treturn;
|
|
9603
|
+
\t\t\t\t}
|
|
9604
|
+
\t\t\t\tconst resolution = managedMcpOAuth
|
|
9605
|
+
\t\t\t\t\t? await resolveManagedMcpOAuthToken(authStorage, provider, {
|
|
9606
|
+
\t\t\t\t\t\t\tcredentialId: accounts[n - 1]?.credentialId,
|
|
9607
|
+
\t\t\t\t\t\t\tforceRefresh: flags["force-refresh"],
|
|
9608
|
+
\t\t\t\t\t\t})
|
|
9609
|
+
\t\t\t\t\t: await authStorage.oauth.accessById(provider, accounts[n - 1]!.credentialId, {
|
|
9610
|
+
`,
|
|
9611
|
+
patched: `\t\t\t\tconst n = flags.account;
|
|
9612
|
+
\t\t\t\t// CUELO: account numbers are seats (\`position + 1\`, as --list prints them); an auth-failed
|
|
9613
|
+
\t\t\t\t// account leaves its number empty instead of shifting the others.
|
|
9614
|
+
\t\t\t\tconst selected = n === undefined ? undefined : accounts.find(acct => acct.position === n - 1);
|
|
9615
|
+
\t\t\t\tif (n === undefined || selected === undefined) {
|
|
9616
|
+
\t\t\t\t\tprocess.stderr.write(
|
|
9617
|
+
\t\t\t\t\t\t\`\${chalk.red(\`Invalid --account \${n ?? "(missing)"}.\`)} Provider "\${providerName}" has OAuth account(s) \${accounts.map(acct => acct.position + 1).join(", ")}.\\n\`,
|
|
9618
|
+
\t\t\t\t\t);
|
|
9619
|
+
\t\t\t\t\tprocess.exitCode = 1;
|
|
9620
|
+
\t\t\t\t\treturn;
|
|
9621
|
+
\t\t\t\t}
|
|
9622
|
+
\t\t\t\tconst resolution = managedMcpOAuth
|
|
9623
|
+
\t\t\t\t\t? await resolveManagedMcpOAuthToken(authStorage, provider, {
|
|
9624
|
+
\t\t\t\t\t\t\tcredentialId: selected.credentialId,
|
|
9625
|
+
\t\t\t\t\t\t\tforceRefresh: flags["force-refresh"],
|
|
9626
|
+
\t\t\t\t\t\t})
|
|
9627
|
+
\t\t\t\t\t: await authStorage.oauth.accessById(provider, selected.credentialId, {
|
|
9628
|
+
`,
|
|
9629
|
+
},
|
|
9630
|
+
{
|
|
9631
|
+
// 첫 줄이 read 예산보다 크면 hashline 모드는 그 줄을 한 바이트도 내지 않고 거부 문구만 낸다. 그런데
|
|
9632
|
+
// upstream은 preview 크기를 전달량으로 보고해 "[Showing line 1 (partial, 150.0KB of 195.3KB)]"처럼
|
|
9633
|
+
// 모델이 받은 적 없는 150KB를 받았다고 말한다(2026-10-04 실측). 전달량은 본문에 실제로 실린 것만 센다.
|
|
9634
|
+
// :raw·hashline을 끈 모드의 preview, 재개 offset 미제공, 수집 예산은 그대로다.
|
|
9635
|
+
file: "src/tools/read.ts",
|
|
9636
|
+
marker: "\t\t\t\t\t// CUELO: hashline mode refuses the oversized line outright",
|
|
9637
|
+
anchor: "\t\t\t\t\tconst previewBytes = firstLineExceedsLimit ? (firstLinePreview?.bytes ?? 0) : 0;\n",
|
|
9638
|
+
patched: "\t\t\t\t\t// CUELO: hashline mode refuses the oversized line outright and delivers none of it, so its\n\t\t\t\t\t// notice must report 0 bytes shown, not the preview it never rendered.\n\t\t\t\t\tconst previewBytes =\n\t\t\t\t\t\tfirstLineExceedsLimit && (rawSelector || !displayMode.hashLines) ? (firstLinePreview?.bytes ?? 0) : 0;\n",
|
|
9639
|
+
},
|
|
9344
9640
|
];
|
|
9345
9641
|
// EDITS 문자열의 줄 끝을 LF로 통일한다. 이 파일의 작업 사본이 CRLF여도 core 파일(LF)과
|
|
9346
9642
|
// 비교·치환이 어긋나지 않는다. core 파일 자체의 줄 끝은 건드리지 않는다.
|
package/next.config.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cuelo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "CUELO — open-source AI coding agent workspace and harness for omp (oh-my-pi)",
|
|
5
5
|
"homepage": "https://github.com/gim47656-ship-it/CUELO#readme",
|
|
6
6
|
"repository": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"cueloBuild": {
|
|
32
32
|
"distribution": "cuelo",
|
|
33
|
-
"coreVersion": "18.
|
|
33
|
+
"coreVersion": "18.6.0"
|
|
34
34
|
},
|
|
35
35
|
"engines": {
|
|
36
36
|
"node": ">=22.19.0",
|
|
@@ -88,14 +88,16 @@
|
|
|
88
88
|
"test:coverage": "bun test --coverage ./app ./components ./hooks ./lib ./public ./bin ./install.test.mjs"
|
|
89
89
|
},
|
|
90
90
|
"dependencies": {
|
|
91
|
-
"@oh-my-pi/pi-agent-core": "18.
|
|
92
|
-
"@oh-my-pi/pi-ai": "18.
|
|
93
|
-
"@oh-my-pi/pi-coding-agent": "18.
|
|
94
|
-
"@oh-my-pi/pi-tui": "18.
|
|
95
|
-
"@oh-my-pi/pi-utils": "18.
|
|
91
|
+
"@oh-my-pi/pi-agent-core": "18.6.0",
|
|
92
|
+
"@oh-my-pi/pi-ai": "18.6.0",
|
|
93
|
+
"@oh-my-pi/pi-coding-agent": "18.6.0",
|
|
94
|
+
"@oh-my-pi/pi-tui": "18.6.0",
|
|
95
|
+
"@oh-my-pi/pi-utils": "18.6.0",
|
|
96
96
|
"@seed-design/css": "2.8.0",
|
|
97
97
|
"@seed-design/react": "2.4.1",
|
|
98
98
|
"@seed-design/tailwind4-theme": "2.4.0",
|
|
99
|
+
"busboy": "1.6.0",
|
|
100
|
+
"ffmpeg-static": "5.3.0",
|
|
99
101
|
"js-yaml": "^5.4.1",
|
|
100
102
|
"next": "16.2.12",
|
|
101
103
|
"react": "^19.2.8",
|
|
@@ -113,6 +115,7 @@
|
|
|
113
115
|
"@react-three/fiber": "^9.8.1",
|
|
114
116
|
"@tailwindcss/postcss": "^4.3.3",
|
|
115
117
|
"@types/bun": "^1.4.0",
|
|
118
|
+
"@types/busboy": "1.5.4",
|
|
116
119
|
"@types/js-yaml": "^4.0.9",
|
|
117
120
|
"@types/node": "^25.9.5",
|
|
118
121
|
"@types/react": "^19.2.18",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:61,errorRate:1e-4,numBits:1170,numHashes:14,bitArray:[1,1,0,0,1,0,0,1,1,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,1,0,1,0,1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,1,0,1,1,1,0,0,0,0,0,1,1,0,1,1,0,1,0,1,1,0,0,0,1,1,0,1,0,0,0,1,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1,0,1,0,1,0,0,0,1,0,0,0,0,1,0,1,1,0,0,1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,1,0,1,0,1,0,1,0,1,0,0,1,1,0,0,1,0,0,0,1,0,1,1,0,1,1,0,1,1,0,1,0,1,1,1,1,0,1,0,1,1,0,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,1,1,0,1,0,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,1,1,0,1,1,1,0,0,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,0,0,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,0,0,1,1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,1,0,1,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,1,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,1,0,1,1,1,0,1,1,1,1,0,0,1,0,1,1,0,0,1,0,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,1,0,0,0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,0,1,1,0,1,0,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,1,0,1,1,0,0,0,1,1,1,0,1,1,0,1,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,0,0,0,1,0,0,1,0,1,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,0,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,0,0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,1,1,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1,0,0,1,1,1,0,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,0,0,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,1,1,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,1,1,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,1,0,1,0,1,1,1,0,1,0,0,1,1,1,0,1,1,0,0,0,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0,1,0,0,1,1,1,0,1,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0]},__routerFilterDynamic:{numItems:10,errorRate:1e-4,numBits:192,numHashes:14,bitArray:[1,1,0,0,1,0,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,0,1,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,0,0,1,1,0,1,1,1,1,1,1,0,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,0,1,1,1,1,0,0,1,0,0,0,0,1,1,1,1,1,1,0,1,1,1,0,1,1]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|