cuelo 0.10.11 → 0.10.13
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 +10 -9
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +2 -2
- package/.next/required-server-files.json +2 -2
- package/.next/routes-manifest.json +6 -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]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/attachment-settings/route.js +1 -1
- package/.next/server/app/api/attachments/[id]/transcription/route.js +2 -2
- package/.next/server/app/api/attachments/draft/route.js +1 -1
- package/.next/server/app/api/attachments/route.js +2 -2
- 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/default-cwd/route.js +1 -1
- package/.next/server/app/api/display-settings/route.js +1 -1
- package/.next/server/app/api/document-text/route.js +2 -2
- 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/files/[...path]/route.js +1 -1
- package/.next/server/app/api/git/diff/route.js +1 -1
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/github/projects/route.js +1 -1
- package/.next/server/app/api/gpt6/handles/route.js +1 -1
- package/.next/server/app/api/gpt6/reply/route.js +1 -1
- package/.next/server/app/api/gpt6/token/route.js +1 -1
- package/.next/server/app/api/gpt6/web6-session/route.js +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/character-voice/route.js +1 -1
- package/.next/server/app/api/live/events/route.js +2 -2
- package/.next/server/app/api/live/offer/route.js +1 -1
- package/.next/server/app/api/live/voices/route.js +1 -1
- package/.next/server/app/api/lounge/events/route.js +2 -2
- package/.next/server/app/api/lounge/route.js +1 -1
- package/.next/server/app/api/mcp/route.js +2 -2
- package/.next/server/app/api/model-roles/route.js +1 -1
- package/.next/server/app/api/models/route.js +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 +3 -3
- 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/project-docs/route.js +1 -0
- package/.next/server/app/api/project-docs/route.js.nft.json +1 -0
- package/.next/server/app/api/project-docs/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/projects/route.js +2 -2
- 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]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/search/route.js +1 -1
- package/.next/server/app/api/settings/route.js +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/install/route.js +2 -2
- package/.next/server/app/api/skills/route.js +2 -2
- 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/subagents/eta/route.js +1 -1
- package/.next/server/app/api/theme/route.js +1 -1
- package/.next/server/app/api/tool-image/route.js +1 -1
- package/.next/server/app/api/update-maintenance/route.js +3 -3
- 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/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 +1 -1
- 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 +10 -9
- package/.next/server/chunks/5431.js +1 -1
- package/.next/server/chunks/5489.js +3 -3
- package/.next/server/chunks/7362.js +1 -1
- package/.next/server/chunks/9108.js +1 -1
- package/.next/server/chunks/9280.js +3 -3
- package/.next/server/middleware-build-manifest.js +1 -1
- 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/B90WNxaFZ8Tg4XO_DiNPQ/_buildManifest.js +1 -0
- package/.next/static/chunks/6110-1db5217d11d7c23b.js +1 -0
- package/.next/static/chunks/{9575-4d5fd3e3172f7444.js → 9575-f75f250a07112d4d.js} +11 -11
- package/.next/static/chunks/app/_global-error/{page-c6b67b5743edc755.js → page-2fe6bfb5aa68a2a2.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/account/{route-c6b67b5743edc755.js → route-2fe6bfb5aa68a2a2.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/{route-c6b67b5743edc755.js → route-2fe6bfb5aa68a2a2.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/events/{route-c6b67b5743edc755.js → route-2fe6bfb5aa68a2a2.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/attachment-settings/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/attachments/draft/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/attachments/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/display-settings/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/document-text/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/experiments/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/github/projects/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/gpt6/handles/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/gpt6/reply/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/gpt6/token/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/gpt6/web6-session/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/home/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/live/call/[callId]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/live/character-voice/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/live/events/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/live/offer/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/live/voices/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/lounge/events/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/lounge/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/models/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/office-avatars/[id]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/office-avatars/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/project-docs/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/projects/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/runs/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/settings/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/skills/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/subagents/eta/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/theme/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/tool-image/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/update-maintenance/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/updates/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/web-access/recovery/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/web-access/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/web6/consults/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/app/{layout-41f95749f2546cbb.js → layout-4c592bc979a40fac.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2fe6bfb5aa68a2a2.js +1 -0
- package/.next/static/css/{b7c4c1d5acb6c7ea.css → 27857d8746871d52.css} +1 -1
- package/.next/trace +108 -108
- package/.next/trace-build +1 -1
- package/.next/types/app/api/project-docs/route.ts +351 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/README.md +6 -1
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +3 -3
- package/Tools/OMP_Global_Config/agent/RULES.md +4 -1
- package/Tools/OMP_Global_Config/agent/prompt-copies/RULES.en.md +3 -2
- package/Tools/OMP_Global_Config/agent/rules/docs-handoff.md +2 -2
- package/Tools/OMP_Global_Config/agent/tools/git-finalizer/index.ts +58 -4
- package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +356 -0
- package/install.mjs +1 -0
- package/package.json +7 -7
- package/public/audio/completion/mitsu/01.wav +0 -0
- package/public/audio/completion/mitsu/02.wav +0 -0
- package/public/audio/completion/mitsu/03.wav +0 -0
- package/public/audio/completion/mitsu/04.wav +0 -0
- package/public/audio/completion/mitsu/05.wav +0 -0
- package/public/audio/completion/mitsu/06.wav +0 -0
- package/public/audio/completion/mitsu/approval/01.wav +0 -0
- package/public/audio/completion/mitsu/approval/02.wav +0 -0
- package/public/audio/completion/mitsu/approval/03.wav +0 -0
- package/public/audio/completion/mitsu/choice/01.wav +0 -0
- package/public/audio/completion/mitsu/choice/02.wav +0 -0
- package/public/audio/completion/mitsu/choice/03.wav +0 -0
- package/public/audio/completion/mitsu/failed/01.wav +0 -0
- package/public/audio/completion/mitsu/failed/02.wav +0 -0
- package/public/audio/completion/mitsu/failed/03.wav +0 -0
- package/public/audio/completion/mitsu/working/01.wav +0 -0
- package/public/audio/completion/mitsu/working/02.wav +0 -0
- package/public/audio/completion/mitsu/working/03.wav +0 -0
- package/public/avatars/mitsu.webp +0 -0
- package/public/stickers/mitsu/approval/01.webp +0 -0
- package/public/stickers/mitsu/approval/02.webp +0 -0
- package/public/stickers/mitsu/approval/03.webp +0 -0
- package/public/stickers/mitsu/choice/01.webp +0 -0
- package/public/stickers/mitsu/choice/02.webp +0 -0
- package/public/stickers/mitsu/choice/03.webp +0 -0
- package/public/stickers/mitsu/done/01.webp +0 -0
- package/public/stickers/mitsu/done/02.webp +0 -0
- package/public/stickers/mitsu/done/03.webp +0 -0
- package/public/stickers/mitsu/failed/01.webp +0 -0
- package/public/stickers/mitsu/failed/02.webp +0 -0
- package/public/stickers/mitsu/failed/03.webp +0 -0
- package/public/stickers/mitsu/working/01.webp +0 -0
- package/.next/static/7oFCc2ps2NBdX6L9v5ko3/_buildManifest.js +0 -1
- package/.next/static/chunks/6110-b6abad0258e1cf13.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/attachment-settings/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/attachments/draft/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/attachments/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/display-settings/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/document-text/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/experiments/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/github/projects/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/gpt6/handles/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/gpt6/reply/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/gpt6/token/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/gpt6/web6-session/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/home/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/live/call/[callId]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/live/character-voice/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/live/events/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/live/offer/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/live/voices/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/lounge/events/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/lounge/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/models/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/[id]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/projects/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/runs/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/settings/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/skills/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/subagents/eta/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/theme/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/tool-image/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/update-maintenance/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/updates/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/web-access/recovery/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/web-access/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/web6/consults/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-c6b67b5743edc755.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c6b67b5743edc755.js +0 -1
- /package/.next/static/{7oFCc2ps2NBdX6L9v5ko3 → B90WNxaFZ8Tg4XO_DiNPQ}/_ssgManifest.js +0 -0
|
@@ -4439,6 +4439,320 @@ import { resolveUsedFraction } from "../usage";`,
|
|
|
4439
4439
|
throw new Error(\`[CharacterSummonRuntime] \${exactOAuthLabel}의 지정 OAuth 계정이 현재 사용할 수 없습니다.\`);
|
|
4440
4440
|
}`,
|
|
4441
4441
|
},
|
|
4442
|
+
// 2026-10-13 사용자 결정: Anthropic 구독 좌석이 모두 주간(7d) 한도로 막혔을 때만 API 키로 요청을 넘긴다. 키 출처는
|
|
4443
|
+
// `<agentDir>/anthropic-fallback-api-key`(한 줄, trim) 파일 하나뿐이다. 주간 소진 판정이 참인 순간에만 읽고, env 에 넣거나
|
|
4444
|
+
// 캐시하지 않는다. env·config fallback·login tier 는 이 판정에 쓰지 않는다(env tier 는 키가 모든 자식 셸에 상속되고
|
|
4445
|
+
// affinity.ts activeOAuth 의 env 가드가 pin 없는 세션의 귀속을 끈다). 파일이 없거나 비었거나 못 읽으면 다른 키가
|
|
4446
|
+
// 설정돼 있어도 upstream last-resort(막힌 좌석으로 요청해 wire 의 usage-limit 의미를 받는다) 그대로다. 5h 단독 소진·
|
|
4447
|
+
// 인증·transient refresh·plan 실패도 그대로. restricted·exact summon(캐릭터 pin) 세션은 대상이 아니다. api_key affinity 를
|
|
4448
|
+
// 남기지 않으므로 좌석 block 이 끝나거나(reset) heal 되면 다음 resolve 의 strict pass 가 다시 OAuth 를 고른다. 폴백 중인
|
|
4449
|
+
// 세션은 affinity 표식으로 OAuth account_uuid 귀속에서 빠지고, 표식은 파일 키나 OAuth 를 실제로 돌려줄 때만 바뀐다.
|
|
4450
|
+
// 항목: select 판정 메서드·passes 진입점, cascade import·helper/공개 메서드·resolveOAuth 호출·OAuth 반환·파일 키 반환·
|
|
4451
|
+
// resolver() lastChance, affinity 표식·가드, 타입 두 곳, coding-agent resolver lastChance·registry 타입.
|
|
4452
|
+
// 검증: core-weekly-fallback-test.ts.
|
|
4453
|
+
{
|
|
4454
|
+
file: "../pi-ai/src/auth/select.ts",
|
|
4455
|
+
marker: "async cueloWeeklyExhausted(",
|
|
4456
|
+
anchor: "\t#syncOAuthSelectionFromStore(\n",
|
|
4457
|
+
patched: ` /**
|
|
4458
|
+
* CUELO: true when every OAuth seat this session may use for an Anthropic request is
|
|
4459
|
+
* blocked AND its usage report shows an exhausted weekly (7d) window, scoped to the
|
|
4460
|
+
* request model, whose reset is still ahead. 5h-only exhaustion, auth/refresh/plan
|
|
4461
|
+
* failures, or a missing report answer false so the upstream last-resort ladder runs.
|
|
4462
|
+
* The answer is re-validated after the report awaits: the same eligible seats (by durable
|
|
4463
|
+
* row id), all still blocked and all still inside their exhausted week.
|
|
4464
|
+
*/
|
|
4465
|
+
async cueloWeeklyExhausted(
|
|
4466
|
+
provider: string,
|
|
4467
|
+
sessionId: string | undefined,
|
|
4468
|
+
options?: AuthApiKeyOptions,
|
|
4469
|
+
): Promise<boolean> {
|
|
4470
|
+
if (provider !== "anthropic") return false;
|
|
4471
|
+
const strategy = this.#deps.strategies(provider);
|
|
4472
|
+
if (!strategy) return false;
|
|
4473
|
+
const nowMs = Date.now();
|
|
4474
|
+
await this.#deps.pool.adoptExternalChanges();
|
|
4475
|
+
type CueloSeat = { id: number; credential: OAuthCredential; index: number };
|
|
4476
|
+
const eligibleSeats = (): CueloSeat[] =>
|
|
4477
|
+
this.#deps.pool
|
|
4478
|
+
.entries(provider)
|
|
4479
|
+
.map((entry, index) => ({ id: entry.id, credential: entry.credential, index }))
|
|
4480
|
+
.filter(
|
|
4481
|
+
(seat): seat is CueloSeat =>
|
|
4482
|
+
seat.credential.type === "oauth" && this.#deps.affinity.allows(provider, sessionId, seat.credential),
|
|
4483
|
+
);
|
|
4484
|
+
const seats = eligibleSeats();
|
|
4485
|
+
if (seats.length === 0) return false;
|
|
4486
|
+
const providerKey = providerTypeKey(provider, "oauth");
|
|
4487
|
+
const rankingContext: CredentialRankingContext = { modelId: options?.modelId };
|
|
4488
|
+
const blockScopes = credentialBlockScopesForRequest(
|
|
4489
|
+
provider,
|
|
4490
|
+
strategy,
|
|
4491
|
+
rankingContext,
|
|
4492
|
+
strategy.blockScope?.(rankingContext),
|
|
4493
|
+
);
|
|
4494
|
+
const allBlocked = (current: CueloSeat[]) =>
|
|
4495
|
+
current.every(seat => this.#deps.blocks.isBlocked(provider, providerKey, seat.index, blockScopes));
|
|
4496
|
+
if (!allBlocked(seats)) return false;
|
|
4497
|
+
// Latest exhausted-week reset per seat, kept for the re-check below (no refetch).
|
|
4498
|
+
const weeklyResets: number[] = [];
|
|
4499
|
+
for (const seat of seats) {
|
|
4500
|
+
const usage = await this.#deps.usage.report(provider, seat.credential, {
|
|
4501
|
+
...options,
|
|
4502
|
+
timeoutMs: this.#deps.usage.requestTimeoutMs,
|
|
4503
|
+
});
|
|
4504
|
+
if (!usage) return false;
|
|
4505
|
+
let weeklyResetAt: number | undefined;
|
|
4506
|
+
for (const limit of scopedUsageLimits(strategy, usage, rankingContext)) {
|
|
4507
|
+
const resetsAt = limit.window?.resetsAt;
|
|
4508
|
+
if (
|
|
4509
|
+
(limit.scope.windowId === "7d" || limit.window?.id === "7d") &&
|
|
4510
|
+
isUsageLimitReached([limit]) &&
|
|
4511
|
+
typeof resetsAt === "number" &&
|
|
4512
|
+
resetsAt > nowMs
|
|
4513
|
+
) {
|
|
4514
|
+
weeklyResetAt = Math.max(weeklyResetAt ?? resetsAt, resetsAt);
|
|
4515
|
+
}
|
|
4516
|
+
}
|
|
4517
|
+
if (weeklyResetAt === undefined) return false;
|
|
4518
|
+
weeklyResets.push(weeklyResetAt);
|
|
4519
|
+
}
|
|
4520
|
+
// The awaits may have outlived a weekly reset, a block, or a pool change (seat added,
|
|
4521
|
+
// removed or replaced): any of them leaves the decision to the next resolve.
|
|
4522
|
+
const recheckNowMs = Date.now();
|
|
4523
|
+
if (weeklyResets.some(resetsAt => resetsAt <= recheckNowMs)) return false;
|
|
4524
|
+
const current = eligibleSeats();
|
|
4525
|
+
const probedIds = new Set(seats.map(seat => seat.id));
|
|
4526
|
+
if (current.length !== seats.length || current.some(seat => !probedIds.has(seat.id))) return false;
|
|
4527
|
+
return allBlocked(current);
|
|
4528
|
+
}
|
|
4529
|
+
|
|
4530
|
+
#syncOAuthSelectionFromStore(
|
|
4531
|
+
`,
|
|
4532
|
+
},
|
|
4533
|
+
{
|
|
4534
|
+
file: "../pi-ai/src/auth/select.ts",
|
|
4535
|
+
marker: "options?.cueloOnWeeklyExhausted !== undefined &&",
|
|
4536
|
+
anchor: ` for (const pass of passes) {
|
|
4537
|
+
for (const candidate of pass.allowBlocked ? lastResortCandidates : candidates) {`,
|
|
4538
|
+
patched: ` for (const pass of passes) {
|
|
4539
|
+
// CUELO: the strict pass found nothing. A weekly-exhausted Anthropic pool hands the
|
|
4540
|
+
// request to the cascade's fallback key file, when the cascade read a key from it,
|
|
4541
|
+
// instead of a last-resort blocked seat.
|
|
4542
|
+
if (
|
|
4543
|
+
pass === passes[1] &&
|
|
4544
|
+
options?.cueloOnWeeklyExhausted !== undefined &&
|
|
4545
|
+
(await this.cueloWeeklyExhausted(provider, sessionId, options)) &&
|
|
4546
|
+
options.cueloOnWeeklyExhausted()
|
|
4547
|
+
) {
|
|
4548
|
+
return undefined;
|
|
4549
|
+
}
|
|
4550
|
+
for (const candidate of pass.allowBlocked ? lastResortCandidates : candidates) {`,
|
|
4551
|
+
},
|
|
4552
|
+
{
|
|
4553
|
+
file: "../pi-ai/src/auth/cascade.ts",
|
|
4554
|
+
marker: 'import { $env, $envExact, getAgentDir, logger } from "@oh-my-pi/pi-utils";',
|
|
4555
|
+
anchor: 'import { $env, $envExact, logger } from "@oh-my-pi/pi-utils";\n',
|
|
4556
|
+
patched: `import * as fs from "node:fs";
|
|
4557
|
+
import * as path from "node:path";
|
|
4558
|
+
import { $env, $envExact, getAgentDir, logger } from "@oh-my-pi/pi-utils";
|
|
4559
|
+
`,
|
|
4560
|
+
},
|
|
4561
|
+
{
|
|
4562
|
+
file: "../pi-ai/src/auth/cascade.ts",
|
|
4563
|
+
marker: "cueloOnWeeklyExhausted: () => {",
|
|
4564
|
+
anchor: "\t\ttry {\n\t\t\toauthResolved = await this.#deps.selector.resolveOAuth(provider, sessionId, options);\n",
|
|
4565
|
+
patched: ` // CUELO: the fallback key file is read only when the selector confirms the weekly decision.
|
|
4566
|
+
let cueloFileKey: string | undefined;
|
|
4567
|
+
try {
|
|
4568
|
+
oauthResolved = await this.#deps.selector.resolveOAuth(
|
|
4569
|
+
provider,
|
|
4570
|
+
sessionId,
|
|
4571
|
+
this.#cueloWeeklyFallbackAllowed(provider, sessionId)
|
|
4572
|
+
? {
|
|
4573
|
+
...options,
|
|
4574
|
+
cueloOnWeeklyExhausted: () => {
|
|
4575
|
+
cueloFileKey = this.#cueloReadFallbackKeyFile();
|
|
4576
|
+
return cueloFileKey !== undefined;
|
|
4577
|
+
},
|
|
4578
|
+
}
|
|
4579
|
+
: options,
|
|
4580
|
+
);
|
|
4581
|
+
`,
|
|
4582
|
+
},
|
|
4583
|
+
{
|
|
4584
|
+
file: "../pi-ai/src/auth/cascade.ts",
|
|
4585
|
+
marker: "this.#deps.affinity.cueloMarkKeyFallback(provider, sessionId, false);",
|
|
4586
|
+
anchor: "\t\tif (oauthResolved) {\n\t\t\tif (onCredentialId && oauthResolved.credentialId !== undefined) {\n",
|
|
4587
|
+
patched: ` if (oauthResolved) {
|
|
4588
|
+
// CUELO: OAuth actually serves this session again, so it is OAuth-attributed again.
|
|
4589
|
+
this.#deps.affinity.cueloMarkKeyFallback(provider, sessionId, false);
|
|
4590
|
+
if (onCredentialId && oauthResolved.credentialId !== undefined) {
|
|
4591
|
+
`,
|
|
4592
|
+
},
|
|
4593
|
+
{
|
|
4594
|
+
file: "../pi-ai/src/auth/cascade.ts",
|
|
4595
|
+
marker: "if (cueloFileKey !== undefined) {",
|
|
4596
|
+
anchor: "\t\tconst loginApiKeySelection = await this.#deps.selector.selectApiKey(\n",
|
|
4597
|
+
patched: ` if (cueloFileKey !== undefined) {
|
|
4598
|
+
// CUELO: weekly-exhausted pool served by the fallback key file. Leave OAuth without an
|
|
4599
|
+
// api_key sticky and keep this session out of OAuth account attribution.
|
|
4600
|
+
if (sessionId) this.#deps.affinity.forget(provider, sessionId);
|
|
4601
|
+
this.#deps.affinity.cueloMarkKeyFallback(provider, sessionId, true);
|
|
4602
|
+
return cueloFileKey;
|
|
4603
|
+
}
|
|
4604
|
+
const loginApiKeySelection = await this.#deps.selector.selectApiKey(
|
|
4605
|
+
`,
|
|
4606
|
+
},
|
|
4607
|
+
{
|
|
4608
|
+
file: "../pi-ai/src/auth/cascade.ts",
|
|
4609
|
+
marker: "async cueloWeeklyApiKeyFallback(",
|
|
4610
|
+
anchor: "\tasync #resolve(\n",
|
|
4611
|
+
patched: ` /** CUELO: \`<agentDir>/anthropic-fallback-api-key\`, the weekly fallback's only key source. */
|
|
4612
|
+
#cueloFallbackKeyPath(): string {
|
|
4613
|
+
return path.join(getAgentDir(), "anthropic-fallback-api-key");
|
|
4614
|
+
}
|
|
4615
|
+
|
|
4616
|
+
/**
|
|
4617
|
+
* CUELO: an Anthropic session that may leave OAuth for the fallback key file — not
|
|
4618
|
+
* restricted, no exact character pin, and the file exists (stat only; the key is read
|
|
4619
|
+
* after the weekly decision). Without the file every path stays upstream.
|
|
4620
|
+
*/
|
|
4621
|
+
#cueloWeeklyFallbackAllowed(provider: string, sessionId: string | undefined): boolean {
|
|
4622
|
+
if (provider !== "anthropic") return false;
|
|
4623
|
+
if (this.#deps.affinity.isRestricted(provider, sessionId)) return false;
|
|
4624
|
+
if (this.#deps.affinity.exactLabel(provider, sessionId)) return false;
|
|
4625
|
+
return fs.existsSync(this.#cueloFallbackKeyPath());
|
|
4626
|
+
}
|
|
4627
|
+
|
|
4628
|
+
/**
|
|
4629
|
+
* CUELO: the fallback key file's one trimmed line. Undefined when missing, empty or
|
|
4630
|
+
* unreadable. Read per decision, never cached and never copied into the process environment.
|
|
4631
|
+
*/
|
|
4632
|
+
#cueloReadFallbackKeyFile(): string | undefined {
|
|
4633
|
+
try {
|
|
4634
|
+
return fs.readFileSync(this.#cueloFallbackKeyPath(), "utf8").trim() || undefined;
|
|
4635
|
+
} catch {
|
|
4636
|
+
return undefined;
|
|
4637
|
+
}
|
|
4638
|
+
}
|
|
4639
|
+
|
|
4640
|
+
/**
|
|
4641
|
+
* CUELO: the answer for a usage-limit retry with no OAuth sibling. Returns the fallback
|
|
4642
|
+
* key file's key, read once after the weekly decision holds, and never an OAuth bearer;
|
|
4643
|
+
* otherwise undefined, so the caller keeps the upstream no-sibling backoff.
|
|
4644
|
+
*/
|
|
4645
|
+
async cueloWeeklyApiKeyFallback(
|
|
4646
|
+
provider: string,
|
|
4647
|
+
sessionId?: string,
|
|
4648
|
+
options?: AuthApiKeyOptions,
|
|
4649
|
+
): Promise<ResolvedApiKey | undefined> {
|
|
4650
|
+
if (!this.#cueloWeeklyFallbackAllowed(provider, sessionId)) return undefined;
|
|
4651
|
+
if (!(await this.#deps.selector.cueloWeeklyExhausted(provider, sessionId, options))) return undefined;
|
|
4652
|
+
const apiKey = this.#cueloReadFallbackKeyFile();
|
|
4653
|
+
if (apiKey === undefined) return undefined;
|
|
4654
|
+
if (sessionId) this.#deps.affinity.forget(provider, sessionId);
|
|
4655
|
+
this.#deps.affinity.cueloMarkKeyFallback(provider, sessionId, true);
|
|
4656
|
+
return { apiKey };
|
|
4657
|
+
}
|
|
4658
|
+
|
|
4659
|
+
async #resolve(
|
|
4660
|
+
`,
|
|
4661
|
+
},
|
|
4662
|
+
{
|
|
4663
|
+
file: "../pi-ai/src/auth/affinity.ts",
|
|
4664
|
+
marker: "\tcueloMarkKeyFallback(provider: string, sessionId: string | undefined, active: boolean): void {\n",
|
|
4665
|
+
anchor: "\tactiveOAuth(provider: string, sessionId?: string): OAuthCredential | undefined {\n",
|
|
4666
|
+
patched: ` /** CUELO: provider → sessions whose latest bearer is the weekly-fallback key file's key. */
|
|
4667
|
+
#cueloKeyFallbackSessions = new Map<string, Set<string>>();
|
|
4668
|
+
|
|
4669
|
+
/** CUELO: mark or clear a session as served by the weekly-exhaustion API key (no OAuth attribution). */
|
|
4670
|
+
cueloMarkKeyFallback(provider: string, sessionId: string | undefined, active: boolean): void {
|
|
4671
|
+
if (!sessionId) return;
|
|
4672
|
+
const sessions = this.#cueloKeyFallbackSessions.get(provider);
|
|
4673
|
+
if (active) {
|
|
4674
|
+
if (sessions) sessions.add(sessionId);
|
|
4675
|
+
else this.#cueloKeyFallbackSessions.set(provider, new Set([sessionId]));
|
|
4676
|
+
return;
|
|
4677
|
+
}
|
|
4678
|
+
sessions?.delete(sessionId);
|
|
4679
|
+
if (sessions?.size === 0) this.#cueloKeyFallbackSessions.delete(provider);
|
|
4680
|
+
}
|
|
4681
|
+
|
|
4682
|
+
activeOAuth(provider: string, sessionId?: string): OAuthCredential | undefined {
|
|
4683
|
+
`,
|
|
4684
|
+
},
|
|
4685
|
+
{
|
|
4686
|
+
file: "../pi-ai/src/auth/affinity.ts",
|
|
4687
|
+
marker: "this.#cueloKeyFallbackSessions.get(provider)?.has(sessionId ?? \"\")",
|
|
4688
|
+
anchor: "\t\tif (!restricted && !sessionPref && getEnvApiKey(provider)) return undefined;\n",
|
|
4689
|
+
patched: ` // CUELO: this session's latest bearer is the weekly-fallback key file's key. The mark wins over
|
|
4690
|
+
// a persisted OAuth pin (which forget() does not drop) and is cleared once OAuth serves again.
|
|
4691
|
+
if (this.#cueloKeyFallbackSessions.get(provider)?.has(sessionId ?? "")) return undefined;
|
|
4692
|
+
if (!restricted && !sessionPref && getEnvApiKey(provider)) return undefined;
|
|
4693
|
+
`,
|
|
4694
|
+
},
|
|
4695
|
+
{
|
|
4696
|
+
file: "../pi-ai/src/auth/cascade.ts",
|
|
4697
|
+
marker: "return this.cueloWeeklyApiKeyFallback(provider, sessionId, { baseUrl, modelId, signal });",
|
|
4698
|
+
anchor: "\t\t\t\t\tif (AIError.isUsageLimit(error) || isUsageLimitOutcome(status, message)) return undefined;\n",
|
|
4699
|
+
patched: ` if (AIError.isUsageLimit(error) || isUsageLimitOutcome(status, message)) {
|
|
4700
|
+
// CUELO: a weekly-exhausted pool finishes on the fallback key file's key.
|
|
4701
|
+
return this.cueloWeeklyApiKeyFallback(provider, sessionId, { baseUrl, modelId, signal });
|
|
4702
|
+
}
|
|
4703
|
+
`,
|
|
4704
|
+
},
|
|
4705
|
+
{
|
|
4706
|
+
file: "../pi-ai/src/auth/types.ts",
|
|
4707
|
+
marker: "\tcueloOnWeeklyExhausted?: () => boolean;\n",
|
|
4708
|
+
anchor: "\trecordAffinity?: boolean;\n};\n",
|
|
4709
|
+
patched: ` recordAffinity?: boolean;
|
|
4710
|
+
/**
|
|
4711
|
+
* CUELO: set by KeyCascade. Called once the selector finds every OAuth seat weekly-exhausted;
|
|
4712
|
+
* true means the cascade read a key from its fallback key file, so the selector skips its
|
|
4713
|
+
* last-resort blocked seat.
|
|
4714
|
+
*/
|
|
4715
|
+
cueloOnWeeklyExhausted?: () => boolean;
|
|
4716
|
+
};
|
|
4717
|
+
`,
|
|
4718
|
+
},
|
|
4719
|
+
{
|
|
4720
|
+
file: "../pi-ai/src/auth/types.ts",
|
|
4721
|
+
marker: "\tcueloWeeklyApiKeyFallback?(\n",
|
|
4722
|
+
anchor: "\tresolver(provider: string, options?: { sessionId?: string; baseUrl?: string; modelId?: string }): ApiKeyResolver;\n}\n",
|
|
4723
|
+
patched: ` resolver(provider: string, options?: { sessionId?: string; baseUrl?: string; modelId?: string }): ApiKeyResolver;
|
|
4724
|
+
/**
|
|
4725
|
+
* CUELO: the fallback key file's key for a usage-limit retry when every OAuth seat this
|
|
4726
|
+
* session may use is blocked by an exhausted weekly window; undefined otherwise.
|
|
4727
|
+
*/
|
|
4728
|
+
cueloWeeklyApiKeyFallback?(
|
|
4729
|
+
provider: string,
|
|
4730
|
+
sessionId?: string,
|
|
4731
|
+
options?: AuthApiKeyOptions,
|
|
4732
|
+
): Promise<ResolvedApiKey | undefined>;
|
|
4733
|
+
}
|
|
4734
|
+
`,
|
|
4735
|
+
},
|
|
4736
|
+
{
|
|
4737
|
+
file: "src/config/api-key-resolver.ts",
|
|
4738
|
+
marker: "registry.authStorage.keys?.cueloWeeklyApiKeyFallback?.(",
|
|
4739
|
+
anchor: "\t\t\t\tif (AIError.isUsageLimit(error) || isUsageLimitOutcome(status, message)) return undefined;\n",
|
|
4740
|
+
patched: ` if (AIError.isUsageLimit(error) || isUsageLimitOutcome(status, message)) {
|
|
4741
|
+
// CUELO: a weekly-exhausted Anthropic pool finishes on the fallback key file's key.
|
|
4742
|
+
return registry.authStorage.keys?.cueloWeeklyApiKeyFallback?.(provider, sessionId, {
|
|
4743
|
+
baseUrl,
|
|
4744
|
+
modelId,
|
|
4745
|
+
signal,
|
|
4746
|
+
});
|
|
4747
|
+
}
|
|
4748
|
+
`,
|
|
4749
|
+
},
|
|
4750
|
+
{
|
|
4751
|
+
file: "src/config/api-key-resolver.ts",
|
|
4752
|
+
marker: "\tauthStorage: Pick<AuthStorage, \"limits\"> & { readonly keys?: Pick<AuthStorage[\"keys\"], \"cueloWeeklyApiKeyFallback\"> };\n",
|
|
4753
|
+
anchor: "\tauthStorage: Pick<AuthStorage, \"limits\">;\n",
|
|
4754
|
+
patched: "\tauthStorage: Pick<AuthStorage, \"limits\"> & { readonly keys?: Pick<AuthStorage[\"keys\"], \"cueloWeeklyApiKeyFallback\"> };\n",
|
|
4755
|
+
},
|
|
4442
4756
|
{
|
|
4443
4757
|
// usage-limit 표시: exact 대상은 block 을 기록하되 sibling 전환 가능으로 보고하지 않는다.
|
|
4444
4758
|
file: "../pi-ai/src/auth/rotation.ts",
|
|
@@ -9007,6 +9321,15 @@ interface ComputerInputTarget {
|
|
|
9007
9321
|
type(text: string, options?: ComputerInputOptions): Promise<ComputerActionResult>;
|
|
9008
9322
|
/** Key chord such as \`"cmd+shift+p"\` or \`["cmd", "shift", "p"]\`. */
|
|
9009
9323
|
press(chord: string | string[], options?: ComputerInputOptions): Promise<ComputerActionResult>;`,
|
|
9324
|
+
}, {
|
|
9325
|
+
// 2026-10-14 18.10.4 RETIRE: declarations.d.ts는 Codex Code Mode 설명(eval.ts #codeModeDescription의
|
|
9326
|
+
// codeModeDeclarations)만 읽던 파일이고, 18.10.4가 Code Mode와 함께 지웠다. 모델이 보는 결과·재획득·목표 대기
|
|
9327
|
+
// 규칙은 computer.md 항목이 그대로 싣는다. 이 판에는 대상이 없으므로 prelude 자산 목록(codeModeDeclarations가
|
|
9328
|
+
// 빠진 판에만 있는 줄)의 no-op으로 둔다. 아래 raise()·wait 항목도 같은 후보를 쓴다.
|
|
9329
|
+
file: "src/tools/computer/prelude-definition.ts",
|
|
9330
|
+
marker: "\tpython: computerPython,\n} as const;",
|
|
9331
|
+
anchor: "\tpython: computerPython,\n} as const;",
|
|
9332
|
+
patched: "\tpython: computerPython,\n} as const;",
|
|
9010
9333
|
}],
|
|
9011
9334
|
},
|
|
9012
9335
|
{
|
|
@@ -9014,6 +9337,13 @@ interface ComputerInputTarget {
|
|
|
9014
9337
|
marker: "\traise(): Promise<ComputerActionResult>;",
|
|
9015
9338
|
anchor: "\traise(): Promise<void>;",
|
|
9016
9339
|
patched: "\traise(): Promise<ComputerActionResult>;",
|
|
9340
|
+
// 2026-10-14 18.10.4 RETIRE: declarations.d.ts 삭제(위 ComputerActionResult 항목 참고). 같은 no-op 후보.
|
|
9341
|
+
alternates: [{
|
|
9342
|
+
file: "src/tools/computer/prelude-definition.ts",
|
|
9343
|
+
marker: "\tpython: computerPython,\n} as const;",
|
|
9344
|
+
anchor: "\tpython: computerPython,\n} as const;",
|
|
9345
|
+
patched: "\tpython: computerPython,\n} as const;",
|
|
9346
|
+
}],
|
|
9017
9347
|
},
|
|
9018
9348
|
{
|
|
9019
9349
|
// 모델 지시: 재획득 규칙과 결과 필드를 읽는 법. 기존 takeover 규칙(다음 줄)은 그대로 둔다.
|
|
@@ -9240,6 +9570,13 @@ function goalProbeRefusal(method: string): ToolError {
|
|
|
9240
9570
|
interval?: number;
|
|
9241
9571
|
},
|
|
9242
9572
|
) => Promise<unknown>;`,
|
|
9573
|
+
// 2026-10-14 18.10.4 RETIRE: declarations.d.ts 삭제(ComputerActionResult 항목 참고). 같은 no-op 후보.
|
|
9574
|
+
alternates: [{
|
|
9575
|
+
file: "src/tools/computer/prelude-definition.ts",
|
|
9576
|
+
marker: "\tpython: computerPython,\n} as const;",
|
|
9577
|
+
anchor: "\tpython: computerPython,\n} as const;",
|
|
9578
|
+
patched: "\tpython: computerPython,\n} as const;",
|
|
9579
|
+
}],
|
|
9243
9580
|
},
|
|
9244
9581
|
{
|
|
9245
9582
|
// 모델 지시: 행동은 한 번, 목표는 wait(predicate)로 읽고, 미달이면 다시 누르지 않는다.
|
|
@@ -10931,6 +11268,12 @@ function parentSubagentServiceTiers(
|
|
|
10931
11268
|
marker: '{"source":"classes/anthropic.kdl:215","class":"anthropic","family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsForcedToolChoice":false},"thinking":{"prefixBinding":true}}',
|
|
10932
11269
|
anchor: '{"source":"classes/anthropic.kdl:215","class":"anthropic","family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsForcedToolChoice":false},"thinking":{"prefixBinding":true}}',
|
|
10933
11270
|
patched: '{"source":"classes/anthropic.kdl:215","class":"anthropic","family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsForcedToolChoice":false},"thinking":{"prefixBinding":true}}',
|
|
11271
|
+
}, {
|
|
11272
|
+
// 2026-10-14 18.10.4: 출처 줄만 kdl:218로 이동했으며 prefixBinding 의미는 동일하다(no-op).
|
|
11273
|
+
file: "../pi-catalog/src/compat/rules.json",
|
|
11274
|
+
marker: '{"source":"classes/anthropic.kdl:218","class":"anthropic","family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsForcedToolChoice":false},"thinking":{"prefixBinding":true}}',
|
|
11275
|
+
anchor: '{"source":"classes/anthropic.kdl:218","class":"anthropic","family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsForcedToolChoice":false},"thinking":{"prefixBinding":true}}',
|
|
11276
|
+
patched: '{"source":"classes/anthropic.kdl:218","class":"anthropic","family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsForcedToolChoice":false},"thinking":{"prefixBinding":true}}',
|
|
10934
11277
|
}],
|
|
10935
11278
|
},
|
|
10936
11279
|
{
|
|
@@ -10998,6 +11341,12 @@ function parentSubagentServiceTiers(
|
|
|
10998
11341
|
marker: '{"source":"classes/anthropic.kdl:328","class":"anthropic","providers":["anthropic","cloudflare-ai-gateway"],"family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsThinkingBindingControls":true}}',
|
|
10999
11342
|
anchor: '{"source":"classes/anthropic.kdl:328","class":"anthropic","providers":["anthropic","cloudflare-ai-gateway"],"family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsThinkingBindingControls":true}}',
|
|
11000
11343
|
patched: '{"source":"classes/anthropic.kdl:328","class":"anthropic","providers":["anthropic","cloudflare-ai-gateway"],"family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsThinkingBindingControls":true}}',
|
|
11344
|
+
}, {
|
|
11345
|
+
// 2026-10-14 18.10.4: 출처 줄만 kdl:331로 이동했으며 provider·revision 경계도 동일하다(no-op).
|
|
11346
|
+
file: "../pi-catalog/src/compat/rules.json",
|
|
11347
|
+
marker: '{"source":"classes/anthropic.kdl:331","class":"anthropic","providers":["anthropic","cloudflare-ai-gateway"],"family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsThinkingBindingControls":true}}',
|
|
11348
|
+
anchor: '{"source":"classes/anthropic.kdl:331","class":"anthropic","providers":["anthropic","cloudflare-ai-gateway"],"family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsThinkingBindingControls":true}}',
|
|
11349
|
+
patched: '{"source":"classes/anthropic.kdl:331","class":"anthropic","providers":["anthropic","cloudflare-ai-gateway"],"family":"opus","revision":[{"op":">=","revision":"5.5.0"},{"op":"<","revision":"6.0.0"}],"wire":{"supportsThinkingBindingControls":true}}',
|
|
11001
11350
|
}],
|
|
11002
11351
|
},
|
|
11003
11352
|
// 위 세 항목과 짝: modelOverrides의 thinking은 buildModel이 규칙으로 채운 thinking을 통째로 덮어써서, override가
|
|
@@ -11288,6 +11637,13 @@ function parentSubagentServiceTiers(
|
|
|
11288
11637
|
marker: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||Gxe(a))continue;let l=a.slice(0,-6),',
|
|
11289
11638
|
anchor: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||Gxe(a))continue;let l=a.slice(0,-6),',
|
|
11290
11639
|
patched: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||Gxe(a))continue;let l=a.slice(0,-6),',
|
|
11640
|
+
}, {
|
|
11641
|
+
// 2026-10-14 18.10.4: pve는 같은 isAdvisorTranscriptName 함수다(`e===uve||e.startsWith(\`${lve}.\`)&&e.endsWith(Cae)`,
|
|
11642
|
+
// lve="__advisor"). minified 이름만 바뀌었고 upstream 제외는 그대로다(RETIRE 유지).
|
|
11643
|
+
file: "dist/cli.js",
|
|
11644
|
+
marker: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||pve(a))continue;let l=a.slice(0,-6),',
|
|
11645
|
+
anchor: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||pve(a))continue;let l=a.slice(0,-6),',
|
|
11646
|
+
patched: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||pve(a))continue;let l=a.slice(0,-6),',
|
|
11291
11647
|
}],
|
|
11292
11648
|
},
|
|
11293
11649
|
// 18.4.5 는 /ratchet 을 새로 넣으면서 `src/ratchet/prelude.ts`(코드)와 `prelude.js`(eval 텍스트 자산)를 같은 stem 으로
|
package/install.mjs
CHANGED
|
@@ -178,6 +178,7 @@ export const PROFILE_DEFAULTS = {
|
|
|
178
178
|
eager: "preferred",
|
|
179
179
|
maxEffort: "xhigh",
|
|
180
180
|
isolation: { enabled: true },
|
|
181
|
+
structured: true,
|
|
181
182
|
disabledAgents: ["scout", "sonic", "task", "reviewer", "security-reviewer"],
|
|
182
183
|
},
|
|
183
184
|
eval: { autoBackground: { enabled: true } },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cuelo",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.13",
|
|
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.10.
|
|
33
|
+
"coreVersion": "18.10.4"
|
|
34
34
|
},
|
|
35
35
|
"engines": {
|
|
36
36
|
"node": ">=22.19.0",
|
|
@@ -89,11 +89,11 @@
|
|
|
89
89
|
"test:coverage": "bun test --coverage ./app ./components ./hooks ./lib ./public ./bin ./install.test.mjs"
|
|
90
90
|
},
|
|
91
91
|
"dependencies": {
|
|
92
|
-
"@oh-my-pi/pi-agent-core": "18.10.
|
|
93
|
-
"@oh-my-pi/pi-ai": "18.10.
|
|
94
|
-
"@oh-my-pi/pi-coding-agent": "18.10.
|
|
95
|
-
"@oh-my-pi/pi-tui": "18.10.
|
|
96
|
-
"@oh-my-pi/pi-utils": "18.10.
|
|
92
|
+
"@oh-my-pi/pi-agent-core": "18.10.4",
|
|
93
|
+
"@oh-my-pi/pi-ai": "18.10.4",
|
|
94
|
+
"@oh-my-pi/pi-coding-agent": "18.10.4",
|
|
95
|
+
"@oh-my-pi/pi-tui": "18.10.4",
|
|
96
|
+
"@oh-my-pi/pi-utils": "18.10.4",
|
|
97
97
|
"@seed-design/css": "2.8.0",
|
|
98
98
|
"@seed-design/react": "2.4.1",
|
|
99
99
|
"@seed-design/tailwind4-theme": "2.4.0",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:65,errorRate:1e-4,numBits:1247,numHashes:14,bitArray:[1,0,0,1,1,1,0,1,0,0,0,0,1,0,1,0,0,1,1,1,1,0,1,1,0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,0,0,1,0,1,1,0,1,1,1,0,1,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,1,1,0,0,1,1,1,0,0,0,1,0,1,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,0,1,0,1,0,0,1,1,0,0,1,1,1,1,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,1,1,0,0,1,1,1,0,0,1,0,1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,1,1,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,0,1,1,1,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,1,0,0,1,1,0,0,0,1,1,1,1,1,0,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,0,0,1,1,0,0,0,0,1,1,0,1,1,1,1,1,0,1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,1,0,1,0,1,1,0,0,0,1,0,1,1,0,0,0,0,0,1,1,0,1,1,0,1,0,1,0,1,0,1,1,0,1,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,1,0,0,0,0,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,0,1,1,1,0,1,0,1,0,0,0,1,1,1,1,0,1,1,0,0,0,1,1,0,1,0,1,1,0,0,1,1,0,1,1,1,1,1,0,0,1,0,1,0,0,1,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,0,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,1,0,0,0,0,1,0,1,0,1,1,1,0,1,1,0,0,0,0,1,1,1,1,0,1,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,1,1,0,1,1,1,0,1,0,0,1,1,0,0,1,0,0,0,1,1,0,1,1,1,1,0,1,1,0,1,0,0,0,0,0,1,1,0,1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,0,1,1,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,0,1,0,1,0,1,0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,1,1,0,0,1,0,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,0,0,1,1,0,1,0,0,0,1,0,1,1,0,1,0,0,1,1,1,1,0,1,0,1,0,0,1,0,1,1,0,1,1,0,1,0,1,0]},__routerFilterDynamic:{numItems:11,errorRate:1e-4,numBits:211,numHashes:14,bitArray:[0,0,0,0,1,0,0,1,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,1,1,0,0,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,1,0,1,1,1,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1,0,1,0,1,0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1,1,1,1,0,1,0,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,1,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,1,0]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|