cuelo 0.5.8 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +7 -6
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +3 -3
- package/.next/required-server-files.json +3 -3
- package/.next/routes-manifest.json +12 -6
- 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 +1 -1
- 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/attachments/route.js +5 -0
- package/.next/server/app/api/attachments/route.js.nft.json +1 -0
- package/.next/server/app/api/attachments/route_client-reference-manifest.js +1 -0
- 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 +2 -2
- package/.next/server/app/api/git/status/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/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/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 +4 -4
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/projects/route.js +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]/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/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/theme/route.js +1 -1
- package/.next/server/app/api/tool-image/route.js +1 -0
- package/.next/server/app/api/tool-image/route.js.nft.json +1 -0
- package/.next/server/app/api/tool-image/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/update-maintenance/route.js +2 -2
- 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 +2 -2
- package/.next/server/app/page.js +20 -14
- 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 +7 -6
- package/.next/server/chunks/2651.js +1 -1
- package/.next/server/chunks/3379.js +1 -1
- package/.next/server/chunks/5582.js +5 -11
- package/.next/server/chunks/6429.js +2 -2
- package/.next/server/chunks/6775.js +1 -1
- package/.next/server/chunks/877.js +1 -1
- package/.next/server/functions-config-manifest.json +1 -0
- 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/chunks/app/_global-error/page-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/account/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/attachments/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/display-settings/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/document-text/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/experiments/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/handles/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/reply/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/token/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/web6-session/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/home/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/live/call/[callId]/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/live/events/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/live/offer/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/live/voices/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/models/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/projects/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/runs/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/settings/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/skills/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/theme/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/tool-image/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/update-maintenance/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/updates/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/web-access/recovery/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/web-access/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/web6/consults/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/{layout-5ffecd9ebe39dbd0.js → layout-31a0bfeae1eece12.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/app/page-ba96ee458de51af9.js +22 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-0c0ee2cbde2b8cfd.js +1 -0
- package/.next/static/css/{0282259eb1a6b95f.css → bbe00993de567f95.css} +1 -1
- package/.next/static/zqQ2BdsFkwRQpfXpTFeIx/_buildManifest.js +1 -0
- package/.next/trace +104 -104
- package/.next/trace-build +1 -1
- package/.next/types/app/api/{gpt6/mcp → attachments}/route.ts +3 -3
- package/.next/types/app/api/tool-image/route.ts +351 -0
- package/.next/types/routes.d.ts +3 -2
- package/.next/types/validator.ts +18 -9
- package/README.md +5 -3
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +5 -5
- package/Tools/OMP_Global_Config/agent/AGENTS.md +1 -0
- package/Tools/OMP_Global_Config/agent/RULES.md +4 -0
- package/Tools/OMP_Global_Config/agent/agents/maker.md +2 -2
- package/Tools/OMP_Global_Config/agent/extensions/character-voice.ts +61 -11
- package/Tools/OMP_Global_Config/agent/extensions/skim.ts +227 -0
- package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +2 -1
- package/Tools/OMP_Global_Config/agent/prompt-copies/RULES.en.md +3 -1
- package/Tools/OMP_Global_Config/agent/rules/harness-policy.json +1 -1
- package/Tools/OMP_Global_Config/agent/rules/subagent.md +2 -0
- package/Tools/OMP_Global_Config/agent/rules/web6-consult.md +7 -8
- package/Tools/OMP_Global_Config/agent/sop/maker.md +1 -1
- package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +191 -57
- package/next.config.ts +7 -0
- package/package.json +7 -7
- package/public/audio/completion/hikari/01.wav +0 -0
- package/public/audio/completion/hikari/02.wav +0 -0
- package/public/audio/completion/hikari/03.wav +0 -0
- package/public/audio/completion/hikari/04.wav +0 -0
- package/public/audio/completion/hikari/05.wav +0 -0
- package/public/audio/completion/hikari/06.wav +0 -0
- package/public/audio/completion/hikari/approval/01.wav +0 -0
- package/public/audio/completion/hikari/approval/02.wav +0 -0
- package/public/audio/completion/hikari/approval/03.wav +0 -0
- package/public/audio/completion/hikari/choice/01.wav +0 -0
- package/public/audio/completion/hikari/choice/02.wav +0 -0
- package/public/audio/completion/hikari/choice/03.wav +0 -0
- package/public/audio/completion/hikari/failed/01.wav +0 -0
- package/public/audio/completion/hikari/failed/02.wav +0 -0
- package/public/audio/completion/hikari/failed/03.wav +0 -0
- package/public/audio/completion/hikari/working/01.wav +0 -0
- package/public/audio/completion/hikari/working/02.wav +0 -0
- package/public/audio/completion/hikari/working/03.wav +0 -0
- package/public/audio/completion/voices.json +198 -0
- package/public/avatars/hikari.webp +0 -0
- package/public/stickers/hikari/approval/01.webp +0 -0
- package/public/stickers/hikari/approval/02.webp +0 -0
- package/public/stickers/hikari/approval/03.webp +0 -0
- package/public/stickers/hikari/choice/01.webp +0 -0
- package/public/stickers/hikari/choice/02.webp +0 -0
- package/public/stickers/hikari/choice/03.webp +0 -0
- package/public/stickers/hikari/done/01.webp +0 -0
- package/public/stickers/hikari/done/02.webp +0 -0
- package/public/stickers/hikari/done/03.webp +0 -0
- package/public/stickers/hikari/failed/01.webp +0 -0
- package/public/stickers/hikari/failed/02.webp +0 -0
- package/public/stickers/hikari/failed/03.webp +0 -0
- package/public/stickers/hikari/working/01.webp +0 -0
- package/.next/server/app/api/gpt6/mcp/route.js +0 -2
- package/.next/server/app/api/gpt6/mcp/route.js.nft.json +0 -1
- package/.next/server/app/api/gpt6/mcp/route_client-reference-manifest.js +0 -1
- package/.next/static/2UGVMAB5iVKLWm-zGiUKj/_buildManifest.js +0 -1
- package/.next/static/chunks/app/_global-error/page-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/account/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/display-settings/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/document-text/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/experiments/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/gpt6/handles/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/gpt6/mcp/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/gpt6/reply/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/gpt6/token/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/gpt6/web6-session/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/home/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/live/call/[callId]/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/live/events/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/live/offer/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/live/voices/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/models/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/projects/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/runs/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/settings/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/skills/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/theme/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/update-maintenance/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/updates/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/web-access/recovery/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/web-access/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/web6/consults/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/app/page-5584cc6078d2573c.js +0 -15
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-a9c51a9353807009.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-a9c51a9353807009.js +0 -1
- /package/.next/static/{2UGVMAB5iVKLWm-zGiUKj → zqQ2BdsFkwRQpfXpTFeIx}/_ssgManifest.js +0 -0
|
@@ -2646,6 +2646,14 @@ const taskItemSchemaIsolated = type({
|
|
|
2646
2646
|
anchor: `import { logger, prompt, sleepLong } from "@oh-my-pi/pi-utils";`,
|
|
2647
2647
|
patched: `import { logger, prompt, sleepLong } from "@oh-my-pi/pi-utils";
|
|
2648
2648
|
import { isUnexpectedSocketCloseMessage } from "@oh-my-pi/pi-utils/fetch-retry";`,
|
|
2649
|
+
// 18.4.2: upstream 이 같은 helper 를 `@oh-my-pi/pi-utils` 에서 직접 import 한다(text stream stall 판별).
|
|
2650
|
+
// 아래 BAI 재시도 항목이 쓰는 이름이 이미 들어와 있으므로 더할 것이 없다.
|
|
2651
|
+
alternates: [{
|
|
2652
|
+
file: "src/session/turn-recovery.ts",
|
|
2653
|
+
marker: `import { isUnexpectedSocketCloseMessage, logger, prompt, sleepLong } from "@oh-my-pi/pi-utils";`,
|
|
2654
|
+
anchor: `import { isUnexpectedSocketCloseMessage, logger, prompt, sleepLong } from "@oh-my-pi/pi-utils";`,
|
|
2655
|
+
patched: `import { isUnexpectedSocketCloseMessage, logger, prompt, sleepLong } from "@oh-my-pi/pi-utils";`,
|
|
2656
|
+
}],
|
|
2649
2657
|
},
|
|
2650
2658
|
{
|
|
2651
2659
|
file: "src/session/turn-recovery.ts",
|
|
@@ -3145,17 +3153,16 @@ import { resolveUsedFraction } from "../usage";`,
|
|
|
3145
3153
|
patched: "import {\n\torderUsageRankedCandidates,\n\tPRIMARY_WINDOW_HOT_FRACTION,\n\tplanPriority,\n",
|
|
3146
3154
|
},
|
|
3147
3155
|
{
|
|
3148
|
-
// 2026-09-
|
|
3149
|
-
// (
|
|
3150
|
-
//
|
|
3151
|
-
//
|
|
3152
|
-
//
|
|
3153
|
-
// 재승격은 이 뒤에
|
|
3154
|
-
// anchor 는 pristine 전용이다. 옛 80% 본문이 적용된 target 에서는 anchor-lost 로 멈춰 이중 적용되지 않는다.
|
|
3156
|
+
// 2026-09-29 사용자 정책: Anthropic 새/cold 재선택은 RIN(저장 순서 0)을 먼저 쓰고, RIN 이 주간 한도의
|
|
3157
|
+
// 하루 구간(사용량 패널 paceOf 와 같은 기준: 지난 날 수 + 1 일치)을 넘으면 MIO 로 넘긴다. 날이 바뀌어
|
|
3158
|
+
// 허용치가 늘면 다시 RIN 이다. 둘 다 넘었으면 덜 넘은 쪽. 옛 "주간 reset 이 빠른 계정 우선"(2026-09-26)을
|
|
3159
|
+
// 대체한다(legacyPatched). 사용량 그림이 완전하고 건강한 후보만, upstream ranking 에서 이미 차지한
|
|
3160
|
+
// 자리들 안에서만 재배열한다. unknown·partial·blocked·reserve·plan 부적격·5h hot 후보는 upstream 자리
|
|
3161
|
+
// 그대로다. exact summon 은 이 앞에서 return 하고 warm/explicit pin·plan pin 재승격은 이 뒤에 온다.
|
|
3155
3162
|
file: "../pi-ai/src/auth/select.ts",
|
|
3156
|
-
marker: "// Prefer
|
|
3163
|
+
marker: "// Prefer RIN (first Anthropic account) while it stays inside its daily slice of the weekly quota.",
|
|
3157
3164
|
anchor: "\t\t\t\t\t}));\n\t\tconst preflightFailures = new Set<OAuthCandidate>();",
|
|
3158
|
-
|
|
3165
|
+
legacyPatched: ` }));
|
|
3159
3166
|
// Prefer the healthy Anthropic account whose weekly window resets first.
|
|
3160
3167
|
// Only candidates with a complete, healthy usage picture move, and only among the slots they
|
|
3161
3168
|
// already hold in the upstream ranking: unknown, partial, blocked, reserve, plan-ineligible or
|
|
@@ -3209,6 +3216,66 @@ import { resolveUsedFraction } from "../usage";`,
|
|
|
3209
3216
|
});
|
|
3210
3217
|
}
|
|
3211
3218
|
const preflightFailures = new Set<OAuthCandidate>();`,
|
|
3219
|
+
patched: ` }));
|
|
3220
|
+
// Prefer RIN (first Anthropic account) while it stays inside its daily slice of the weekly quota.
|
|
3221
|
+
// Only candidates with a complete, healthy usage picture move, and only among the slots they
|
|
3222
|
+
// already hold in the upstream ranking: unknown, partial, blocked, reserve, plan-ineligible or
|
|
3223
|
+
// 5h-hot candidates keep their place. Daily slice = (elapsed whole days + 1) / window days.
|
|
3224
|
+
// Inside the slice: storage order. Over it: smaller overshoot first, then storage order.
|
|
3225
|
+
if (provider === "anthropic" && shouldRank && strategy) {
|
|
3226
|
+
const nowMs = Date.now();
|
|
3227
|
+
const dayMs = 86_400_000;
|
|
3228
|
+
const weekly = candidates.map(candidate => {
|
|
3229
|
+
const usage = candidate.usage;
|
|
3230
|
+
if (!candidate.usageChecked || !usage || candidate.inReserve === true) return undefined;
|
|
3231
|
+
const credential = candidate.selection.credential;
|
|
3232
|
+
if (credential.refresh.trim().length === 0 && nowMs + OAUTH_REFRESH_SKEW_MS >= credential.expires) {
|
|
3233
|
+
return undefined;
|
|
3234
|
+
}
|
|
3235
|
+
if (this.#deps.blocks.isBlocked(provider, providerKey, candidate.selection.index, blockScopes)) {
|
|
3236
|
+
return undefined;
|
|
3237
|
+
}
|
|
3238
|
+
if (planGate && planGate(usage) !== true) return undefined;
|
|
3239
|
+
const limits = reserveUsageLimits(strategy, usage, rankingContext);
|
|
3240
|
+
if (limits.length === 0 || isUsageLimitReached(limits)) return undefined;
|
|
3241
|
+
const measured = limits.every(limit => {
|
|
3242
|
+
const fraction = resolveUsedFraction(limit);
|
|
3243
|
+
return (
|
|
3244
|
+
limit.status !== "unknown" &&
|
|
3245
|
+
typeof fraction === "number" &&
|
|
3246
|
+
Number.isFinite(fraction) &&
|
|
3247
|
+
fraction >= 0 &&
|
|
3248
|
+
fraction < 1
|
|
3249
|
+
);
|
|
3250
|
+
});
|
|
3251
|
+
if (!measured) return undefined;
|
|
3252
|
+
const { primary, secondary } = strategy.findWindowLimits(usage, rankingContext);
|
|
3253
|
+
if (!primary || !secondary || normalizeUsageFraction(primary) >= PRIMARY_WINDOW_HOT_FRACTION) {
|
|
3254
|
+
return undefined;
|
|
3255
|
+
}
|
|
3256
|
+
const resetAt = secondary.window?.resetsAt;
|
|
3257
|
+
const durationMs = secondary.window?.durationMs;
|
|
3258
|
+
const used = resolveUsedFraction(secondary);
|
|
3259
|
+
if (typeof resetAt !== "number" || !Number.isFinite(resetAt) || resetAt <= nowMs) return undefined;
|
|
3260
|
+
if (typeof durationMs !== "number" || !Number.isFinite(durationMs) || durationMs < dayMs) return undefined;
|
|
3261
|
+
if (typeof used !== "number" || !Number.isFinite(used)) return undefined;
|
|
3262
|
+
const elapsedMs = Math.min(durationMs, Math.max(0, durationMs - (resetAt - nowMs)));
|
|
3263
|
+
const allowance = Math.min(1, ((Math.floor(elapsedMs / dayMs) + 1) * dayMs) / durationMs);
|
|
3264
|
+
return { overshoot: Math.max(0, used - allowance), index: candidate.selection.index };
|
|
3265
|
+
});
|
|
3266
|
+
const slots = candidates.flatMap((_candidate, pos) => (weekly[pos] ? [pos] : []));
|
|
3267
|
+
const preferred = [...slots]
|
|
3268
|
+
.sort((left, right) => {
|
|
3269
|
+
const a = weekly[left]!;
|
|
3270
|
+
const b = weekly[right]!;
|
|
3271
|
+
return Number(a.overshoot > 0) - Number(b.overshoot > 0) || a.overshoot - b.overshoot || a.index - b.index;
|
|
3272
|
+
})
|
|
3273
|
+
.map(pos => candidates[pos]!);
|
|
3274
|
+
slots.forEach((pos, order) => {
|
|
3275
|
+
candidates[pos] = preferred[order]!;
|
|
3276
|
+
});
|
|
3277
|
+
}
|
|
3278
|
+
const preflightFailures = new Set<OAuthCandidate>();`,
|
|
3212
3279
|
},
|
|
3213
3280
|
{
|
|
3214
3281
|
// exact OAuth 가 해석되지 않으면 login API 키·env 키로 조용히 넘어가지 않는다.
|
|
@@ -3290,6 +3357,22 @@ import { resolveUsedFraction } from "../usage";`,
|
|
|
3290
3357
|
if (exactAccountLabel) return false;
|
|
3291
3358
|
|
|
3292
3359
|
const deniedModel = AIError.codexChatGPTAccountPolicyModel(error);`,
|
|
3360
|
+
// 18.4.2: rotate() 는 `{ switched }` 를 돌려주고 usage-limit 분기는 `awaitSiblingUnblock` 으로 끝난다.
|
|
3361
|
+
// exact 대상은 markReached(#usage-limit 항목)가 switched·retryAtMs 를 비우므로 sibling 대기 없이
|
|
3362
|
+
// `{ switched: false }` 가 된다. 같은 자리에서 끊어 계정 정책 분기의 두 번째 대기도 타지 않는다.
|
|
3363
|
+
alternates: [{
|
|
3364
|
+
file: "../pi-ai/src/auth/rotation.ts",
|
|
3365
|
+
marker: "\t\t}\n\t\tif (exactAccountLabel) return { switched: false };\n",
|
|
3366
|
+
anchor: ` return awaitSiblingUnblock(mark, options?.signal);
|
|
3367
|
+
}
|
|
3368
|
+
|
|
3369
|
+
const deniedModel = AIError.codexChatGPTAccountPolicyModel(error);`,
|
|
3370
|
+
patched: ` return awaitSiblingUnblock(mark, options?.signal);
|
|
3371
|
+
}
|
|
3372
|
+
if (exactAccountLabel) return { switched: false };
|
|
3373
|
+
|
|
3374
|
+
const deniedModel = AIError.codexChatGPTAccountPolicyModel(error);`,
|
|
3375
|
+
}],
|
|
3293
3376
|
},
|
|
3294
3377
|
{
|
|
3295
3378
|
file: "src/session/turn-recovery.ts",
|
|
@@ -3358,61 +3441,40 @@ import { resolveUsedFraction } from "../usage";`,
|
|
|
3358
3441
|
if (accountPolicyDenial && currentModel) {`,
|
|
3359
3442
|
},
|
|
3360
3443
|
{
|
|
3361
|
-
// 18.
|
|
3362
|
-
//
|
|
3444
|
+
// 18.4.2 재앵커: import 블록 전체를 앵커로 쓰면 버전마다 upstream 이 한두 이름을 더해(18.3.0 `tokenUsage`,
|
|
3445
|
+
// 18.4.2 `Answer`) 매번 깨지고, 적용 결과가 버전 사이에 같아져 alternates 로는 ambiguous 가 된다.
|
|
3446
|
+
// 두 버전에 공통인 이웃 줄에 Vercel adapter 가 쓰는 두 이름만 넣는다. `Answer` 는 adapter 본문에서
|
|
3447
|
+
// `import("@oh-my-pi/pi-ai").Answer` 로 직접 참조해 import 가 필요 없다.
|
|
3448
|
+
// 옛 전체 블록 patched 가 적용된 라이브(18.3.5)에서도 두 marker 가 모두 들어 있어 applied 로 읽힌다.
|
|
3363
3449
|
file: "src/judgment/index.ts",
|
|
3364
|
-
marker: "
|
|
3365
|
-
anchor:
|
|
3366
|
-
|
|
3367
|
-
chatTextBackend,
|
|
3368
|
-
isJudgmentApi,
|
|
3369
|
-
type Judge,
|
|
3370
|
-
type JudgeOptions,
|
|
3371
|
-
type JudgmentRequest,
|
|
3372
|
-
type JudgmentResult,
|
|
3373
|
-
type Model,
|
|
3374
|
-
type Questions,
|
|
3375
|
-
type TextBackend,
|
|
3376
|
-
type TextCompletion,
|
|
3377
|
-
type TextPrompt,
|
|
3378
|
-
TextJudge,
|
|
3379
|
-
TYPESAFE_PROVIDER,
|
|
3380
|
-
TypeSafeJudge,
|
|
3381
|
-
tokenUsage,
|
|
3382
|
-
type Usage,
|
|
3383
|
-
} from "@oh-my-pi/pi-ai";`,
|
|
3384
|
-
patched: `import {
|
|
3385
|
-
type Answer,
|
|
3386
|
-
type ApiKey,
|
|
3387
|
-
type AssistantMessage,
|
|
3388
|
-
chatTextBackend,
|
|
3389
|
-
isJudgmentApi,
|
|
3390
|
-
type Judge,
|
|
3391
|
-
type JudgeOptions,
|
|
3392
|
-
type JudgmentRequest,
|
|
3393
|
-
type JudgmentResult,
|
|
3394
|
-
type Model,
|
|
3395
|
-
type Questions,
|
|
3396
|
-
resolveApiKeyOnce,
|
|
3397
|
-
type TextBackend,
|
|
3398
|
-
type TextCompletion,
|
|
3399
|
-
type TextPrompt,
|
|
3400
|
-
TextJudge,
|
|
3401
|
-
TYPESAFE_PROVIDER,
|
|
3402
|
-
TypeSafeJudge,
|
|
3403
|
-
tokenUsage,
|
|
3404
|
-
type Usage,
|
|
3405
|
-
} from "@oh-my-pi/pi-ai";`,
|
|
3450
|
+
marker: "\ttype ApiKey,\n\ttype AssistantMessage,\n",
|
|
3451
|
+
anchor: "\ttype AssistantMessage,\n\tchatTextBackend,\n",
|
|
3452
|
+
patched: "\ttype ApiKey,\n\ttype AssistantMessage,\n\tchatTextBackend,\n",
|
|
3406
3453
|
},
|
|
3407
3454
|
{
|
|
3408
3455
|
file: "src/judgment/index.ts",
|
|
3409
|
-
marker: "
|
|
3456
|
+
marker: "\ttype Questions,\n\tresolveApiKeyOnce,\n",
|
|
3457
|
+
anchor: "\ttype Questions,\n\ttype TextBackend,\n",
|
|
3458
|
+
patched: "\ttype Questions,\n\tresolveApiKeyOnce,\n\ttype TextBackend,\n",
|
|
3459
|
+
},
|
|
3460
|
+
{
|
|
3461
|
+
file: "src/judgment/index.ts",
|
|
3462
|
+
// marker 는 버전 형태별로 좁힌다. `fetch?: typeof fetch;` 만으로는 Vercel adapter 옵션(아래 항목)에도
|
|
3463
|
+
// 걸리고 18.4.2 후보와도 겹쳐 ambiguous 가 된다. 18.3.5 에서는 interface 끝(`}`) 바로 앞이다.
|
|
3464
|
+
marker: "backend tests. */\n\tfetch?: typeof fetch;\n}",
|
|
3410
3465
|
anchor: ` metadataResolver?: (provider: string) => Record<string, unknown> | undefined;
|
|
3411
3466
|
onUsage?: (usage: JudgmentUsage) => void;`,
|
|
3412
3467
|
patched: ` metadataResolver?: (provider: string) => Record<string, unknown> | undefined;
|
|
3413
3468
|
onUsage?: (usage: JudgmentUsage) => void;
|
|
3414
3469
|
/** Injectable transport for deterministic judgment backend tests. */
|
|
3415
3470
|
fetch?: typeof fetch;`,
|
|
3471
|
+
// 18.4.2: onUsage 위에 doc 주석이 생겼고 바로 아래에 telemetry 가 온다.
|
|
3472
|
+
alternates: [{
|
|
3473
|
+
file: "src/judgment/index.ts",
|
|
3474
|
+
marker: "backend tests. */\n\tfetch?: typeof fetch;\n\t/** Host telemetry",
|
|
3475
|
+
anchor: "\tonUsage?: (usage: JudgmentUsage) => void;\n\t/** Host telemetry",
|
|
3476
|
+
patched: "\tonUsage?: (usage: JudgmentUsage) => void;\n\t/** Injectable transport for deterministic judgment backend tests. */\n\tfetch?: typeof fetch;\n\t/** Host telemetry",
|
|
3477
|
+
}],
|
|
3416
3478
|
},
|
|
3417
3479
|
// RETIRE (2026-09-21, 18.2.7): `JudgeKind` 에 `"vercel"` 을 더하던 항목은 없앴다.
|
|
3418
3480
|
// 18.2.7 은 `export type JudgeKind = "native" | "local" | "online"` 이고 분류는 모델 API 로만
|
|
@@ -3554,7 +3616,7 @@ function parseVercelAnswers<Q extends Questions>(
|
|
|
3554
3616
|
if (!isRecord(value)) throw responseError("answers must be an object");
|
|
3555
3617
|
const questionIds = Object.keys(request.questions);
|
|
3556
3618
|
exactKeys(value, questionIds, "answer");
|
|
3557
|
-
const answers: Record<string, Answer> = {};
|
|
3619
|
+
const answers: Record<string, import("@oh-my-pi/pi-ai").Answer> = {};
|
|
3558
3620
|
for (const id of questionIds) {
|
|
3559
3621
|
const question = request.questions[id];
|
|
3560
3622
|
const answer = value[id];
|
|
@@ -4699,9 +4761,16 @@ import { getActiveRules } from "../capability/rule";`,
|
|
|
4699
4761
|
// 2026-09-25: steering-reply gate가 스트리밍 이벤트 순서에 기대면, 도구가 미리 실행될 때 같은 응답의
|
|
4700
4762
|
// 앞선 답 텍스트를 보지 못해 잘못 막는다. 판정 대상 assistant 메시지를 tool_call 이벤트에 싣는다.
|
|
4701
4763
|
file: "src/session/agent-session.ts",
|
|
4702
|
-
marker: "
|
|
4764
|
+
marker: "\n\t\t\t\tassistantMessage: ctx.assistantMessage, // HANSE: steering gate",
|
|
4703
4765
|
anchor: "\t\t\t\ttype: \"tool_call\",\n\t\t\t\ttoolName: ctx.tool.name,\n\t\t\t\ttoolCallId: ctx.toolCall.id,\n",
|
|
4704
4766
|
patched: "\t\t\t\ttype: \"tool_call\",\n\t\t\t\ttoolName: ctx.tool.name,\n\t\t\t\ttoolCallId: ctx.toolCall.id,\n\t\t\t\tassistantMessage: ctx.assistantMessage, // HANSE: steering gate\n",
|
|
4767
|
+
// 18.4.2: 이벤트에 정규화한 `input` 줄이 붙었다. 그 앞에 넣는다.
|
|
4768
|
+
alternates: [{
|
|
4769
|
+
file: "src/session/agent-session.ts",
|
|
4770
|
+
marker: "\n\t\t\t\t\tassistantMessage: ctx.assistantMessage, // HANSE: steering gate",
|
|
4771
|
+
anchor: "\t\t\t\t\ttoolCallId: ctx.toolCall.id,\n\t\t\t\t\tinput: normalizeToolEventInput(",
|
|
4772
|
+
patched: "\t\t\t\t\ttoolCallId: ctx.toolCall.id,\n\t\t\t\t\tassistantMessage: ctx.assistantMessage, // HANSE: steering gate\n\t\t\t\t\tinput: normalizeToolEventInput(",
|
|
4773
|
+
}],
|
|
4705
4774
|
},
|
|
4706
4775
|
// 2026-09-27: Opus 5.5는 도구 앞 사용자용 문장(progress update)을 별도 서명의 thinking 블록으로 보낸다.
|
|
4707
4776
|
// omitThinking(`display: "omitted"`)은 그 문장까지 비운다(2026-09-26 세션 79개 중 25개 메시지의 답 소실).
|
|
@@ -5087,9 +5156,17 @@ export class LearnTool implements AgentTool<LearnSchema> {`,
|
|
|
5087
5156
|
// 헛턴 하나를 썼다(사흘간 12건). 일반 명령에서는 env 를 명령 앞 `export` 로 바꿔 모든 실행
|
|
5088
5157
|
// 경로(셸·PTY·client terminal)에 같게 적용한다. ready 는 service 전용으로 그대로 둔다.
|
|
5089
5158
|
file: "src/tools/bash.ts",
|
|
5090
|
-
marker: "// HANSE: env without a service name exports into the command",
|
|
5159
|
+
marker: "// HANSE: env without a service name exports into the command\n\t\t\tthrow new ToolError(",
|
|
5091
5160
|
anchor: "\t\t} else if (ready !== undefined || env !== undefined) {\n\t\t\tthrow new ToolError(\"ready and env require a service name.\");\n",
|
|
5092
5161
|
patched: "\t\t} else if (ready !== undefined) {\n\t\t\t// HANSE: env without a service name exports into the command\n\t\t\tthrow new ToolError(\"ready requires a service name.\");\n",
|
|
5162
|
+
// 18.4.2: upstream 이 거절 대신 "Ignored ready and env" 알림으로 바꿨다. ready 는 upstream 대로 알림만
|
|
5163
|
+
// 남기고, env 는 무시하지 않고 아래 항목이 명령 앞 export 로 넣는다.
|
|
5164
|
+
alternates: [{
|
|
5165
|
+
file: "src/tools/bash.ts",
|
|
5166
|
+
marker: "// HANSE: env without a service name exports into the command\n\t\t\tpendingNotices.push(",
|
|
5167
|
+
anchor: "\t\t} else if (ready !== undefined || env !== undefined) {\n\t\t\t// Nothing can honour ready/env without a service to attach them to;\n\t\t\t// running the command the caller did ask for beats failing the call.\n\t\t\tconst ignored = [ready && \"ready\", env && \"env\"].filter(Boolean).join(\" and \");\n\t\t\tpendingNotices.push(`Ignored ${ignored}: service-only, and no service name was given.`);\n",
|
|
5168
|
+
patched: "\t\t} else if (ready !== undefined) {\n\t\t\t// HANSE: env without a service name exports into the command\n\t\t\tpendingNotices.push(\"Ignored ready: service-only, and no service name was given.\");\n",
|
|
5169
|
+
}],
|
|
5093
5170
|
},
|
|
5094
5171
|
{
|
|
5095
5172
|
// 위 항목의 짝. 명령 검사(interceptor)·승인·worktree 재작성이 끝난 원래 명령 앞에만 붙인다.
|
|
@@ -5211,6 +5288,63 @@ export class LearnTool implements AgentTool<LearnSchema> {`,
|
|
|
5211
5288
|
typeof result.source_memory_id !== "string" ||
|
|
5212
5289
|
!recalledOrigins.has(result.source_memory_id),
|
|
5213
5290
|
);
|
|
5291
|
+
`,
|
|
5292
|
+
},
|
|
5293
|
+
{
|
|
5294
|
+
// 2026-09-29 실측: 기억 임베딩 재구축(모델 변경·중단 뒤 재개)이 128건 묶음을 한꺼번에 worker 에
|
|
5295
|
+
// 올렸다. worker 는 요청을 하나씩 처리하는데 요청마다 120초 타이머가 보낸 순간부터 흘러,
|
|
5296
|
+
// CPU multilingual-e5-large 로 긴 기억 102건이 한 묶음이 되자 매 세션 2분 뒤 시간 초과로 worker 가
|
|
5297
|
+
// 죽고 재구축이 끝나지 않았다. 그동안 첫 턴 회상도 같은 worker 줄 뒤에서 최대 2분을 기다렸다.
|
|
5298
|
+
// 묶음을 하나씩 차례로 embed 해 회상이 길어야 묶음 하나만 기다리게 한다. 추적(pendingExtractions)과
|
|
5299
|
+
// 실패 처리(runEmbedding 은 던지지 않고 기록)는 scheduleEmbedding 과 같다.
|
|
5300
|
+
file: "../pi-mnemopi/src/core/beam/helpers.ts",
|
|
5301
|
+
marker: "// HANSE: sequential embedding batches",
|
|
5302
|
+
anchor: "export function scheduleEmbedding(beam: BeamMemoryState, items: readonly EmbedItem[]): void {\n",
|
|
5303
|
+
patched: `// HANSE: sequential embedding batches
|
|
5304
|
+
export function scheduleEmbeddingBatches(beam: BeamMemoryState, items: readonly EmbedItem[], batchSize: number): void {
|
|
5305
|
+
const cleaned = items.filter(item => item.content.trim() !== "");
|
|
5306
|
+
if (cleaned.length === 0) return;
|
|
5307
|
+
const runtimeOptions = getMnemopiRuntimeOptions();
|
|
5308
|
+
const task = withMnemopiRuntimeOptions(runtimeOptions, async () => {
|
|
5309
|
+
for (let offset = 0; offset < cleaned.length; offset += batchSize) {
|
|
5310
|
+
await runEmbedding(beam, cleaned.slice(offset, offset + batchSize));
|
|
5311
|
+
}
|
|
5312
|
+
});
|
|
5313
|
+
const pending = beam.pendingExtractions;
|
|
5314
|
+
if (pending !== undefined) {
|
|
5315
|
+
pending.add(task);
|
|
5316
|
+
void task.finally(() => pending.delete(task));
|
|
5317
|
+
}
|
|
5318
|
+
}
|
|
5319
|
+
|
|
5320
|
+
export function scheduleEmbedding(beam: BeamMemoryState, items: readonly EmbedItem[]): void {
|
|
5321
|
+
`,
|
|
5322
|
+
},
|
|
5323
|
+
{
|
|
5324
|
+
file: "../pi-mnemopi/src/core/beam/store.ts",
|
|
5325
|
+
marker: "scheduleEmbeddingBatches, vecAvailable",
|
|
5326
|
+
anchor: 'import { type EmbedItem, scheduleEmbedding, vecAvailable, vecInsert } from "./helpers";\n',
|
|
5327
|
+
patched: 'import { type EmbedItem, scheduleEmbedding, scheduleEmbeddingBatches, vecAvailable, vecInsert } from "./helpers";\n',
|
|
5328
|
+
},
|
|
5329
|
+
{
|
|
5330
|
+
// 묶음 하나가 120초 제한보다 훨씬 짧도록 16건으로 줄인다(긴 기억은 8192자에서 잘린다).
|
|
5331
|
+
file: "../pi-mnemopi/src/core/beam/store.ts",
|
|
5332
|
+
marker: "// HANSE: rebuild batch 16",
|
|
5333
|
+
anchor: "const EMBED_REBUILD_BATCH = 128;\n",
|
|
5334
|
+
patched: "// HANSE: rebuild batch 16\nconst EMBED_REBUILD_BATCH = 16;\n",
|
|
5335
|
+
},
|
|
5336
|
+
{
|
|
5337
|
+
file: "../pi-mnemopi/src/core/beam/store.ts",
|
|
5338
|
+
marker: "scheduleEmbeddingBatches(beam, items, EMBED_REBUILD_BATCH);",
|
|
5339
|
+
anchor: ` const rebuild = (items: readonly EmbedItem[]): void => {
|
|
5340
|
+
for (let offset = 0; offset < items.length; offset += EMBED_REBUILD_BATCH) {
|
|
5341
|
+
scheduleEmbedding(beam, items.slice(offset, offset + EMBED_REBUILD_BATCH));
|
|
5342
|
+
}
|
|
5343
|
+
};
|
|
5344
|
+
`,
|
|
5345
|
+
patched: ` const rebuild = (items: readonly EmbedItem[]): void => {
|
|
5346
|
+
scheduleEmbeddingBatches(beam, items, EMBED_REBUILD_BATCH);
|
|
5347
|
+
};
|
|
5214
5348
|
`,
|
|
5215
5349
|
},
|
|
5216
5350
|
{
|
package/next.config.ts
CHANGED
|
@@ -64,6 +64,13 @@ const nextConfig: NextConfig = {
|
|
|
64
64
|
// Allow the dev server to be reached over the loopback interface (the
|
|
65
65
|
// browser tab connects to http://127.0.0.1:30141) and from LAN devices.
|
|
66
66
|
allowedDevOrigins: ["127.0.0.1", "192.168.*.*"],
|
|
67
|
+
experimental: {
|
|
68
|
+
// `proxy.ts` matches every `/api/*` request, and Next hands a route only the
|
|
69
|
+
// first `proxyClientMaxBodySize` bytes of a body that passed through the proxy
|
|
70
|
+
// (default 10MB). `/api/files` accepts 100MB per upload and `/api/attachments`
|
|
71
|
+
// 25MB per file, so the proxy must let a full upload through.
|
|
72
|
+
proxyClientMaxBodySize: 101 * 1024 * 1024,
|
|
73
|
+
},
|
|
67
74
|
async headers() {
|
|
68
75
|
return [
|
|
69
76
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cuelo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
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.4.2"
|
|
34
34
|
},
|
|
35
35
|
"engines": {
|
|
36
36
|
"node": ">=22.19.0",
|
|
@@ -86,11 +86,11 @@
|
|
|
86
86
|
"test:coverage": "bun test --coverage ./app ./components ./hooks ./lib ./public ./bin ./install.test.mjs"
|
|
87
87
|
},
|
|
88
88
|
"dependencies": {
|
|
89
|
-
"@oh-my-pi/pi-agent-core": "18.
|
|
90
|
-
"@oh-my-pi/pi-ai": "18.
|
|
91
|
-
"@oh-my-pi/pi-coding-agent": "18.
|
|
92
|
-
"@oh-my-pi/pi-tui": "18.
|
|
93
|
-
"@oh-my-pi/pi-utils": "18.
|
|
89
|
+
"@oh-my-pi/pi-agent-core": "18.4.2",
|
|
90
|
+
"@oh-my-pi/pi-ai": "18.4.2",
|
|
91
|
+
"@oh-my-pi/pi-coding-agent": "18.4.2",
|
|
92
|
+
"@oh-my-pi/pi-tui": "18.4.2",
|
|
93
|
+
"@oh-my-pi/pi-utils": "18.4.2",
|
|
94
94
|
"@seed-design/css": "2.8.0",
|
|
95
95
|
"@seed-design/react": "2.4.1",
|
|
96
96
|
"@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
|
|
@@ -1190,6 +1190,204 @@
|
|
|
1190
1190
|
"tag": "working"
|
|
1191
1191
|
}
|
|
1192
1192
|
]
|
|
1193
|
+
},
|
|
1194
|
+
{
|
|
1195
|
+
"id": "hikari",
|
|
1196
|
+
"speaker": "花音",
|
|
1197
|
+
"style": "ノーマル",
|
|
1198
|
+
"styleId": 1325133120,
|
|
1199
|
+
"modelId": "a670e6b8-0852-45b2-8704-1bc9862f2fe6",
|
|
1200
|
+
"modelVersion": "1.0.0",
|
|
1201
|
+
"source": "https://hub.aivis-project.com/aivm-models/a670e6b8-0852-45b2-8704-1bc9862f2fe6",
|
|
1202
|
+
"license": "# Aivis Common Model License (ACML) 1.0",
|
|
1203
|
+
"creators": [
|
|
1204
|
+
"魔法プログラム (https://hub.aivis-project.com/@MAHOPROGRAM)"
|
|
1205
|
+
],
|
|
1206
|
+
"speedScale": 1.08,
|
|
1207
|
+
"tempoDynamicsScale": 1.1,
|
|
1208
|
+
"pitchScale": 0,
|
|
1209
|
+
"clips": [
|
|
1210
|
+
{
|
|
1211
|
+
"file": "hikari/01.wav",
|
|
1212
|
+
"tag": "done",
|
|
1213
|
+
"text": "見えた!ほら、ちゃんとできてるよ。",
|
|
1214
|
+
"ko": "보였다! 봐, 제대로 됐어.",
|
|
1215
|
+
"bytes": 257818
|
|
1216
|
+
},
|
|
1217
|
+
{
|
|
1218
|
+
"file": "hikari/02.wav",
|
|
1219
|
+
"tag": "done",
|
|
1220
|
+
"text": "はい、完了。見ればわかるでしょ?",
|
|
1221
|
+
"ko": "자, 완료. 보면 알지?",
|
|
1222
|
+
"bytes": 251490
|
|
1223
|
+
},
|
|
1224
|
+
{
|
|
1225
|
+
"file": "hikari/03.wav",
|
|
1226
|
+
"tag": "done",
|
|
1227
|
+
"text": "しーっ、もう終わってるよ。見てみて。",
|
|
1228
|
+
"ko": "쉿, 벌써 끝났어. 봐 봐.",
|
|
1229
|
+
"bytes": 286392
|
|
1230
|
+
},
|
|
1231
|
+
{
|
|
1232
|
+
"file": "hikari/04.wav",
|
|
1233
|
+
"tag": "done",
|
|
1234
|
+
"text": "できた!いいとこ、ちゃんと撮っといた。",
|
|
1235
|
+
"ko": "됐다! 좋은 장면, 제대로 찍어 뒀어.",
|
|
1236
|
+
"bytes": 272062
|
|
1237
|
+
},
|
|
1238
|
+
{
|
|
1239
|
+
"file": "hikari/05.wav",
|
|
1240
|
+
"tag": "done",
|
|
1241
|
+
"text": "終わったよ。ここ、見逃さないでね。",
|
|
1242
|
+
"ko": "끝났어. 여기, 놓치지 마.",
|
|
1243
|
+
"bytes": 264772
|
|
1244
|
+
},
|
|
1245
|
+
{
|
|
1246
|
+
"file": "hikari/06.wav",
|
|
1247
|
+
"tag": "done",
|
|
1248
|
+
"text": "ばっちり!全部見えてるよ。",
|
|
1249
|
+
"ko": "완벽! 다 보여.",
|
|
1250
|
+
"bytes": 201148
|
|
1251
|
+
},
|
|
1252
|
+
{
|
|
1253
|
+
"file": "hikari/working/01.wav",
|
|
1254
|
+
"tag": "working",
|
|
1255
|
+
"text": "よーく見てるから、ちょっと待ってて。",
|
|
1256
|
+
"ko": "잘 보고 있으니까 잠깐 기다려.",
|
|
1257
|
+
"bytes": 244800
|
|
1258
|
+
},
|
|
1259
|
+
{
|
|
1260
|
+
"file": "hikari/working/02.wav",
|
|
1261
|
+
"tag": "working",
|
|
1262
|
+
"text": "いま確かめてる。すぐわかるよ。",
|
|
1263
|
+
"ko": "지금 확인 중이야. 금방 알 거야.",
|
|
1264
|
+
"bytes": 231660
|
|
1265
|
+
},
|
|
1266
|
+
{
|
|
1267
|
+
"file": "hikari/working/03.wav",
|
|
1268
|
+
"tag": "working",
|
|
1269
|
+
"text": "ふむふむ、見えてきた。もう少し!",
|
|
1270
|
+
"ko": "흠흠, 보이기 시작했어. 조금만!",
|
|
1271
|
+
"bytes": 269712
|
|
1272
|
+
},
|
|
1273
|
+
{
|
|
1274
|
+
"file": "hikari/approval/01.wav",
|
|
1275
|
+
"tag": "approval",
|
|
1276
|
+
"text": "ねえ、ここ見て。確認してくれる?",
|
|
1277
|
+
"ko": "저기, 여기 봐. 확인해 줄래?",
|
|
1278
|
+
"bytes": 270474
|
|
1279
|
+
},
|
|
1280
|
+
{
|
|
1281
|
+
"file": "hikari/approval/02.wav",
|
|
1282
|
+
"tag": "approval",
|
|
1283
|
+
"text": "ちょっとストップ。いいか決めて?",
|
|
1284
|
+
"ko": "잠깐 스톱. 괜찮은지 정해 줄래?",
|
|
1285
|
+
"bytes": 207236
|
|
1286
|
+
},
|
|
1287
|
+
{
|
|
1288
|
+
"file": "hikari/approval/03.wav",
|
|
1289
|
+
"tag": "approval",
|
|
1290
|
+
"text": "承認待ちだよ。見たらオーケーしてね。",
|
|
1291
|
+
"ko": "승인 대기야. 보고 OK 해 줘.",
|
|
1292
|
+
"bytes": 272668
|
|
1293
|
+
},
|
|
1294
|
+
{
|
|
1295
|
+
"file": "hikari/failed/01.wav",
|
|
1296
|
+
"tag": "failed",
|
|
1297
|
+
"text": "あっ、見落としてた。ごめん、直すね。",
|
|
1298
|
+
"ko": "앗, 놓쳤어. 미안, 고칠게.",
|
|
1299
|
+
"bytes": 297650
|
|
1300
|
+
},
|
|
1301
|
+
{
|
|
1302
|
+
"file": "hikari/failed/02.wav",
|
|
1303
|
+
"tag": "failed",
|
|
1304
|
+
"text": "失敗しちゃった。原因はもう見えてるよ。",
|
|
1305
|
+
"ko": "실패했어. 원인은 벌써 보여.",
|
|
1306
|
+
"bytes": 279660
|
|
1307
|
+
},
|
|
1308
|
+
{
|
|
1309
|
+
"file": "hikari/failed/03.wav",
|
|
1310
|
+
"tag": "failed",
|
|
1311
|
+
"text": "ごめん、外れた!次はちゃんと当てる。",
|
|
1312
|
+
"ko": "미안, 빗나갔어! 다음엔 제대로 맞힐게.",
|
|
1313
|
+
"bytes": 278654
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"file": "hikari/choice/01.wav",
|
|
1317
|
+
"tag": "choice",
|
|
1318
|
+
"text": "どっちにする?私はもう見当ついてるけど。",
|
|
1319
|
+
"ko": "어느 쪽으로 할래? 난 벌써 짐작 가는데.",
|
|
1320
|
+
"bytes": 311870
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
"file": "hikari/choice/02.wav",
|
|
1324
|
+
"tag": "choice",
|
|
1325
|
+
"text": "二つ並べたよ。好きな方を選んで。",
|
|
1326
|
+
"ko": "둘 나란히 놨어. 좋은 쪽 골라.",
|
|
1327
|
+
"bytes": 264296
|
|
1328
|
+
},
|
|
1329
|
+
{
|
|
1330
|
+
"file": "hikari/choice/03.wav",
|
|
1331
|
+
"tag": "choice",
|
|
1332
|
+
"text": "君ならどっち?選んだら教えて。",
|
|
1333
|
+
"ko": "너라면 어느 쪽? 고르면 알려 줘.",
|
|
1334
|
+
"bytes": 243854
|
|
1335
|
+
}
|
|
1336
|
+
],
|
|
1337
|
+
"stickers": [
|
|
1338
|
+
{
|
|
1339
|
+
"file": "hikari/done/01.webp",
|
|
1340
|
+
"tag": "done"
|
|
1341
|
+
},
|
|
1342
|
+
{
|
|
1343
|
+
"file": "hikari/done/02.webp",
|
|
1344
|
+
"tag": "done"
|
|
1345
|
+
},
|
|
1346
|
+
{
|
|
1347
|
+
"file": "hikari/done/03.webp",
|
|
1348
|
+
"tag": "done"
|
|
1349
|
+
},
|
|
1350
|
+
{
|
|
1351
|
+
"file": "hikari/approval/01.webp",
|
|
1352
|
+
"tag": "approval"
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
"file": "hikari/approval/02.webp",
|
|
1356
|
+
"tag": "approval"
|
|
1357
|
+
},
|
|
1358
|
+
{
|
|
1359
|
+
"file": "hikari/approval/03.webp",
|
|
1360
|
+
"tag": "approval"
|
|
1361
|
+
},
|
|
1362
|
+
{
|
|
1363
|
+
"file": "hikari/choice/01.webp",
|
|
1364
|
+
"tag": "choice"
|
|
1365
|
+
},
|
|
1366
|
+
{
|
|
1367
|
+
"file": "hikari/choice/02.webp",
|
|
1368
|
+
"tag": "choice"
|
|
1369
|
+
},
|
|
1370
|
+
{
|
|
1371
|
+
"file": "hikari/choice/03.webp",
|
|
1372
|
+
"tag": "choice"
|
|
1373
|
+
},
|
|
1374
|
+
{
|
|
1375
|
+
"file": "hikari/failed/01.webp",
|
|
1376
|
+
"tag": "failed"
|
|
1377
|
+
},
|
|
1378
|
+
{
|
|
1379
|
+
"file": "hikari/failed/02.webp",
|
|
1380
|
+
"tag": "failed"
|
|
1381
|
+
},
|
|
1382
|
+
{
|
|
1383
|
+
"file": "hikari/failed/03.webp",
|
|
1384
|
+
"tag": "failed"
|
|
1385
|
+
},
|
|
1386
|
+
{
|
|
1387
|
+
"file": "hikari/working/01.webp",
|
|
1388
|
+
"tag": "working"
|
|
1389
|
+
}
|
|
1390
|
+
]
|
|
1193
1391
|
}
|
|
1194
1392
|
]
|
|
1195
1393
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|