cuelo 0.10.38 → 0.10.39
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 -11
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -51
- package/.next/react-loadable-manifest.json +3 -14
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +0 -26
- package/.next/server/app/_global-error/page.js +2 -2
- 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 +3 -3
- 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 +1 -1
- 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 +1 -1
- 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/events/route.js +2 -2
- package/.next/server/app/api/live/interpret/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 +1 -1
- 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/plugins/route.js +1 -1
- package/.next/server/app/api/project-docs/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]/prelude/route.js +1 -1
- package/.next/server/app/api/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/runs/[runId]/turns/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 +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/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 -6
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -4
- package/.next/server/app/index.segments/_full.segment.rsc +5 -6
- 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 -3
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/page.js +32 -2
- package/.next/server/app/page.js.nft.json +1 -1
- 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 -11
- package/.next/server/functions-config-manifest.json +0 -4
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +4 -4
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/Hnj-vLLVhpk85eE5EC5YJ/_buildManifest.js +1 -0
- package/.next/static/chunks/2619.9aac8983f30c7c8a.js +1 -0
- package/.next/static/chunks/{3308.8b94b38809d1b8b6.js → 3308.34ea31e24088c85f.js} +1 -1
- package/.next/static/chunks/52733464.3870f99cc446f9ff.js +1 -0
- package/.next/static/chunks/app/_global-error/page-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/account/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/attachment-settings/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/attachments/draft/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/attachments/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/display-settings/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/document-text/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/experiments/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/github/projects/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/gpt6/handles/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/gpt6/reply/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/gpt6/token/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/gpt6/web6-session/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/home/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/live/call/[callId]/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/live/events/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/live/interpret/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/live/offer/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/live/voices/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/models/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/project-docs/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/projects/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/prelude/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/turns/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/runs/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/settings/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/skills/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/subagents/eta/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/theme/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/tool-image/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/update-maintenance/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/updates/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/web-access/recovery/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/web-access/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/web6/consults/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/{layout-31adbf190d20135c.js → layout-b55ad6b60182cd98.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/app/page-b358723ff38b0fd2.js +26 -0
- package/.next/static/chunks/{framework-e405bc515d75023a.js → framework-32a7466d5cae4a81.js} +1 -1
- package/.next/static/chunks/{main-26b32c580fb6231f.js → main-1ddb405481ce21f6.js} +3 -3
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-0975ca1ea02edd84.js +1 -0
- package/.next/static/chunks/webpack-5e1ebce946df08c7.js +1 -0
- package/.next/static/css/{bd5a7fe85955c5e5.css → f9ae9aa15286f229.css} +1 -1
- package/.next/trace +107 -108
- package/.next/trace-build +1 -1
- package/.next/types/routes.d.ts +2 -6
- package/.next/types/validator.ts +0 -36
- package/README.md +0 -5
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
- package/Tools/OMP_Global_Config/agent/AGENTS.md +1 -1
- package/Tools/OMP_Global_Config/agent/extensions/cross-review.ts +4 -2
- package/Tools/OMP_Global_Config/agent/extensions/korean-reply-guard.ts +34 -22
- package/Tools/OMP_Global_Config/agent/extensions/lib/cross-review.ts +261 -42
- package/Tools/OMP_Global_Config/agent/extensions/lib/maker-routing.ts +5 -3
- package/Tools/OMP_Global_Config/agent/extensions/lib/routing-ledger.ts +31 -1
- package/Tools/OMP_Global_Config/agent/extensions/report-chart-guard.ts +102 -0
- package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +2 -2
- package/Tools/OMP_Global_Config/agent/rules/harness-policy.json +36 -3
- package/Tools/OMP_Global_Config/agent/rules/subagent.md +38 -3
- package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +135 -2
- package/package.json +1 -5
- package/.next/server/app/api/office-avatars/[id]/route.js +0 -1
- package/.next/server/app/api/office-avatars/[id]/route.js.nft.json +0 -1
- package/.next/server/app/api/office-avatars/[id]/route_client-reference-manifest.js +0 -1
- package/.next/server/app/api/office-avatars/route.js +0 -1
- package/.next/server/app/api/office-avatars/route.js.nft.json +0 -1
- package/.next/server/app/api/office-avatars/route_client-reference-manifest.js +0 -1
- package/.next/server/app/office/page.js +0 -2
- package/.next/server/app/office/page.js.nft.json +0 -1
- package/.next/server/app/office/page_client-reference-manifest.js +0 -1
- package/.next/server/app/office-preview/page.js +0 -2
- package/.next/server/app/office-preview/page.js.nft.json +0 -1
- package/.next/server/app/office-preview/page_client-reference-manifest.js +0 -1
- package/.next/server/app/office-preview.html +0 -1
- package/.next/server/app/office-preview.meta +0 -16
- package/.next/server/app/office-preview.rsc +0 -21
- package/.next/server/app/office-preview.segments/_full.segment.rsc +0 -21
- package/.next/server/app/office-preview.segments/_head.segment.rsc +0 -6
- package/.next/server/app/office-preview.segments/_index.segment.rsc +0 -8
- package/.next/server/app/office-preview.segments/_tree.segment.rsc +0 -5
- package/.next/server/app/office-preview.segments/office-preview/__PAGE__.segment.rsc +0 -7
- package/.next/server/app/office-preview.segments/office-preview.segment.rsc +0 -5
- package/.next/server/app/office.html +0 -1
- package/.next/server/app/office.meta +0 -15
- package/.next/server/app/office.rsc +0 -24
- package/.next/server/app/office.segments/_full.segment.rsc +0 -24
- package/.next/server/app/office.segments/_head.segment.rsc +0 -6
- package/.next/server/app/office.segments/_index.segment.rsc +0 -8
- package/.next/server/app/office.segments/_tree.segment.rsc +0 -7
- package/.next/server/app/office.segments/office/__PAGE__.segment.rsc +0 -10
- package/.next/server/app/office.segments/office.segment.rsc +0 -5
- package/.next/server/chunks/5489.js +0 -25
- package/.next/server/chunks/6137.js +0 -7
- package/.next/server/chunks/6432.js +0 -353
- package/.next/server/chunks/7362.js +0 -1
- package/.next/static/6Ye1oAX1ZDpTBW_o9tyNb/_buildManifest.js +0 -1
- package/.next/static/chunks/52733464.85a1551044fef357.js +0 -1
- package/.next/static/chunks/6110-0762189a59a0ff14.js +0 -1
- package/.next/static/chunks/726.66a45469e1fb0093.js +0 -1
- package/.next/static/chunks/9304.1f940d490ea5c972.js +0 -1
- package/.next/static/chunks/9575-87af221fbf48d9e4.js +0 -26
- package/.next/static/chunks/9703.36cc00cc10e10f45.js +0 -1
- package/.next/static/chunks/app/_global-error/page-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/account/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/attachment-settings/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/attachments/draft/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/attachments/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/display-settings/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/document-text/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/experiments/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/github/projects/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/gpt6/handles/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/gpt6/reply/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/gpt6/token/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/gpt6/web6-session/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/home/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/live/call/[callId]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/live/events/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/live/interpret/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/live/offer/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/live/voices/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/models/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/[id]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/project-docs/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/projects/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/prelude/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/turns/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/runs/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/settings/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/skills/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/subagents/eta/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/theme/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/tool-image/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/update-maintenance/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/updates/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/web-access/recovery/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/web-access/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/web6/consults/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/app/office/page-a237492b750463b7.js +0 -1
- package/.next/static/chunks/app/office-preview/page-d11ce602c2d80ddd.js +0 -1
- package/.next/static/chunks/app/page-756dbb8ce3c1cb9e.js +0 -1
- package/.next/static/chunks/b536a0f1.f7e390612229faa9.js +0 -342
- package/.next/static/chunks/bd904a5c.b74776e0b23d0607.js +0 -1
- package/.next/static/chunks/c9cb82ce.18c8cafa64d76bc3.js +0 -1
- package/.next/static/chunks/f5ef5e1c.14b6095722ff4f0b.js +0 -12
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ee0da967a5fed113.js +0 -1
- package/.next/static/chunks/webpack-2bdefe555a609a48.js +0 -1
- package/.next/static/css/8cdfcac889e08fd3.css +0 -1
- package/.next/types/app/api/office-avatars/[id]/route.ts +0 -351
- package/.next/types/app/api/office-avatars/route.ts +0 -351
- package/.next/types/app/office/page.ts +0 -87
- package/.next/types/app/office-preview/page.ts +0 -87
- package/public/office3d/ASSETS.md +0 -55
- package/public/office3d/office-kit.glb +0 -0
- /package/.next/static/{6Ye1oAX1ZDpTBW_o9tyNb → Hnj-vLLVhpk85eE5EC5YJ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { ExtensionAPI } from "@oh-my-pi/pi-coding-agent";
|
|
2
|
+
import { onSessionLifecycle } from "./lib/session-identity";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 보고 차트 누락 알림. 2026-10-19 사용자 결정(전역 `AGENTS.md` 「사용자 보고」): 기록 수치의 비교·추이·분해에 값이
|
|
6
|
+
* 셋 이상이면 Mermaid 차트 하나를 붙인다. 같은 날 Main이 조각 세 개의 실행 시간(20.8분·34.6분·42.0분)을 `ask` 바로 앞
|
|
7
|
+
* 한 문장에 적고 차트를 빠뜨렸다. 규칙은 문맥에 있었으므로 문구만 고쳐서는 재발을 막지 못한다고 보고, 본문에서 같은 종류의
|
|
8
|
+
* 수치 셋 이상을 결정론적으로 찾아 한 번 일깨운다. 차트를 그릴지는 모델이 수치의 출처·비교 여부로 정한다(알림은 차단이 아니다).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export const REMINDER_TYPE = "report-chart-guard";
|
|
12
|
+
export const MIN_VALUES = 3;
|
|
13
|
+
|
|
14
|
+
type Message = { role?: string; content?: unknown; synthetic?: boolean; attribution?: string };
|
|
15
|
+
|
|
16
|
+
// 단위를 같은 종류로 묶는다. 시간끼리, 크기끼리는 단위가 달라도 같은 축에 놓일 수 있다.
|
|
17
|
+
// 셈 단위(건·회)는 서로 다른 것을 세는 일이 많아 따로 묶는다(2026-10-19 재생: "1건, 11회, 2건" 같은 나열 오탐).
|
|
18
|
+
const UNIT_KIND: Readonly<Record<string, string>> = {
|
|
19
|
+
ms: "time", s: "time", "초": "time", "분": "time", "시간": "time",
|
|
20
|
+
"%": "percent", "배": "ratio", "건": "count-건", "회": "count-회",
|
|
21
|
+
KB: "size", MB: "size", GB: "size", KiB: "size", MiB: "size", GiB: "size",
|
|
22
|
+
};
|
|
23
|
+
// 버전(0.10.38)·시각(04:48)·날짜(10-19)·경로 조각 안의 숫자는 수치로 보지 않는다(앞뒤 문자 경계).
|
|
24
|
+
// 단위 바로 뒤에 다른 낱말이 붙으면(배포·분석·회의·초기·건너…) 단위가 아니다.
|
|
25
|
+
const QUANTITY =
|
|
26
|
+
/(?<![\d.:/\-A-Za-z_])(\d+(?:\.\d+)?)\s?(ms|s|초|분|시간|%|배|건|회|KiB|MiB|GiB|KB|MB|GB)(?![A-Za-z\d])(?!(?:포|치|열|석|류|기|화|의|수|복|너|당|위|면|산|간|리|야|장|별)[가-힣])/g;
|
|
27
|
+
|
|
28
|
+
function textOf(content: unknown): string {
|
|
29
|
+
if (typeof content === "string") return content;
|
|
30
|
+
if (!Array.isArray(content)) return "";
|
|
31
|
+
return content
|
|
32
|
+
.filter((block): block is { type: string; text: string } => block?.type === "text" && typeof block.text === "string")
|
|
33
|
+
.map((block) => block.text)
|
|
34
|
+
.join("\n");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** 값이 셋 이상인 같은 종류의 수치 묶음. 없으면 null. Mermaid 블록이 이미 있으면 판정하지 않는다. */
|
|
38
|
+
export function chartCandidate(text: string): { kind: string; values: string[] } | null {
|
|
39
|
+
if (/```\s*mermaid\b/i.test(text)) return null;
|
|
40
|
+
const groups = new Map<string, string[]>();
|
|
41
|
+
// 코드 블록·인라인 코드 안의 수치(명령·로그)는 보고 수치로 세지 않는다.
|
|
42
|
+
const prose = text.replace(/```[\s\S]*?(?:```|$)/g, "\n").replace(/`[^`\n]*`/g, " ");
|
|
43
|
+
for (const match of prose.matchAll(QUANTITY)) {
|
|
44
|
+
const kind = UNIT_KIND[match[2]!];
|
|
45
|
+
if (!kind) continue;
|
|
46
|
+
const value = `${match[1]}${match[2]}`;
|
|
47
|
+
const list = groups.get(kind) ?? [];
|
|
48
|
+
if (!list.includes(value)) list.push(value);
|
|
49
|
+
groups.set(kind, list);
|
|
50
|
+
}
|
|
51
|
+
let best: { kind: string; values: string[] } | null = null;
|
|
52
|
+
for (const [kind, values] of groups) {
|
|
53
|
+
if (values.length >= MIN_VALUES && (!best || values.length > best.values.length)) best = { kind, values };
|
|
54
|
+
}
|
|
55
|
+
return best;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function reminderText(candidate: { values: string[] }): string {
|
|
59
|
+
const shown = candidate.values.slice(0, 6).join(", ");
|
|
60
|
+
return `직전 사용자 표시 문장에 같은 종류의 수치가 ${candidate.values.length}개 있었다(${shown}). 그런데 Mermaid 차트가 없었다. `
|
|
61
|
+
+ "이 값들이 도구 출력·실행 기록·측정 산출물에서 온 비교·추이·분해라면, 바로 다음 응답에 출처와 함께 차트 하나(`xychart-beta` 막대, `gantt` 시간선 등)를 붙인다. "
|
|
62
|
+
+ "`ask` 질문 앞 근거 문장, 진행 중 중간 보고도 보고다. 비교가 아니거나(서로 무관한 값의 나열) 추정치라면 차트를 그리지 않는다. 그때 답이 이미 끝났다면 아무 문장도 덧붙이지 말고 끝내고, 어느 경우든 이 알림을 사용자에게 언급하지 않는다.";
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export default function reportChartGuard(pi: ExtensionAPI): void {
|
|
66
|
+
let reminded = false;
|
|
67
|
+
// 같은 응답의 `ask` 호출을 막을 때 쓰는 알림. 수치를 보여 주고 바로 결정을 묻는 경우는 차트 없이 결정하게 두지 않는다.
|
|
68
|
+
let askHold: string | undefined;
|
|
69
|
+
const reset = () => { reminded = false; askHold = undefined; };
|
|
70
|
+
onSessionLifecycle(pi, { start: reset });
|
|
71
|
+
pi.on("session_shutdown", reset);
|
|
72
|
+
// 사용자 직접 입력 하나에 한 번만 알린다. 알림이 만든 이어 가기 응답이 다시 차트 없이 끝나도 반복하지 않는다.
|
|
73
|
+
pi.on("message_start", (event) => {
|
|
74
|
+
const message = event.message as Message;
|
|
75
|
+
if (message.role === "user" && message.synthetic !== true && message.attribution !== "agent") reset();
|
|
76
|
+
});
|
|
77
|
+
pi.on("message_end", (event, ctx) => {
|
|
78
|
+
const message = event.message as Message;
|
|
79
|
+
if (reminded || message.role !== "assistant" || ctx.agent.kind !== "main") return;
|
|
80
|
+
const candidate = chartCandidate(textOf(message.content));
|
|
81
|
+
if (!candidate) return;
|
|
82
|
+
reminded = true;
|
|
83
|
+
const calls = Array.isArray(message.content)
|
|
84
|
+
? message.content.filter((block): block is { type: string; name?: string } => block?.type === "toolCall")
|
|
85
|
+
: [];
|
|
86
|
+
if (calls.some((call) => call.name === "ask")) {
|
|
87
|
+
askHold = `[report-chart-guard] 질문을 보내지 않았다. ${reminderText(candidate)} 차트가 필요하면 차트를 붙인 응답에서 같은 질문을 다시 보낸다. 필요 없으면 같은 질문을 그대로 다시 보낸다.`;
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
// 도구를 부르는 중이면 다음 단계 경계에서, 답이 끝났으면 바로 이어 가는 내부 continuation으로 전달한다.
|
|
91
|
+
pi.sendMessage(
|
|
92
|
+
{ customType: REMINDER_TYPE, content: reminderText(candidate), display: false, attribution: "agent" },
|
|
93
|
+
calls.length > 0 ? { deliverAs: "aside" } : { deliverAs: "nextTurn", triggerTurn: true },
|
|
94
|
+
);
|
|
95
|
+
});
|
|
96
|
+
pi.on("tool_call", (event) => {
|
|
97
|
+
if (event.toolName !== "ask" || askHold === undefined) return;
|
|
98
|
+
const reason = askHold;
|
|
99
|
+
askHold = undefined;
|
|
100
|
+
return { block: true, reason };
|
|
101
|
+
});
|
|
102
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- source-fingerprint:
|
|
1
|
+
<!-- source-fingerprint: a23e3904aee81900 -->
|
|
2
2
|
# Global Agent Instructions
|
|
3
3
|
|
|
4
4
|
(Model-facing English copy of the Korean source `AGENTS.md`. All user-facing prose stays Korean.)
|
|
@@ -125,7 +125,7 @@ Roles of `HANDOFF.md`·README·`doc/history`, record ownership, and search/heade
|
|
|
125
125
|
|
|
126
126
|
In a turn that uses children or other models, state their role, count, and reason; in the completion report, state the roles actually used, their artifact contributions, verification evidence, and remaining risk. Also disclose `eval`'s `agent()`·`workpool()`·`completion(model=…)`. Efficiency analysis and verified lessons: `rule://verdict`. Never impose fixed `FINAL`·`OWNER` formats unless the user or a parser requires them.
|
|
127
127
|
|
|
128
|
-
When a
|
|
128
|
+
When you show the user a comparison, trend or breakdown of recorded numbers, add one Mermaid chart (`xychart-beta` bars, `gantt` timeline, etc.) next to the table or sentence. This applies whenever there are three or more values, such as before/after measurements, run times, per-step durations or pass/fail counts (user decision, 2026-10-19). It covers not only the final report but also progress reports, numbers listed inside one sentence, and the evidence sentence before an `ask` question; when numbers are the basis for a decision you ask, show the chart first and then ask (tightened after a 2026-10-19 miss). Plot only values from tool output, run records or measurement artifacts, and name the source. Never chart numbers estimated from prose or invented. A chart does not replace the run-count and spread reporting in `RULES.md`. How to draw: `visual-report` skill. When three or more same-kind numbers go out without a chart, `report-chart-guard` reminds you: after a finished answer it makes you append the chart right away, and it blocks an `ask` in the same response once.
|
|
129
129
|
|
|
130
130
|
## What to open when
|
|
131
131
|
|
|
@@ -269,7 +269,7 @@
|
|
|
269
269
|
"exclusions": "documentation-comments-and-tests-are-excluded",
|
|
270
270
|
"reviewerInput": "clean-input-the-frozen-diff-and-the-acceptance-conditions-without-profile-or-persona-text",
|
|
271
271
|
"pass": "every-finding-is-closed-by-main-as-fixed-refuted-or-limit-with-evidence-through-cross_review-resolve",
|
|
272
|
-
"rounds": "at-most-
|
|
272
|
+
"rounds": "at-most-three-per-chain-with-at-most-one-probe-round-and-at-most-two-non-probe-rounds-a-probe-round-is-any-round-submitted-with-non-empty-probeResults-even-when-it-also-carries-a-code-delta-a-non-probe-later-round-reviews-only-the-delta-since-the-latest-content-the-reviewer-was-shown-and-is-refused-when-nothing-changed-a-probe-round-carries-the-results-of-experiments-the-reviewer-proposed-through-finding-probe-may-have-no-code-change-and-returns-a-confirmed-withdrawn-or-unresolved-verdict-per-submitted-result-that-is-advisory-only-and-never-closes-a-finding",
|
|
273
273
|
"gate": "git_finalize-stage-cross-review-runs-before-the-commit-and-blocks-a-required-change-without-a-passing-record",
|
|
274
274
|
"waiver": "only-on-an-explicit-user-instruction-through-crossReviewWaiver-and-recorded-in-the-ledger-never-chosen-by-main-or-a-maker-on-its-own",
|
|
275
275
|
"ledger": "cross-review-cross-review-resolve-and-cross-review-waiver-records",
|
|
@@ -781,6 +781,39 @@
|
|
|
781
781
|
"redirectPreservesUsage": true,
|
|
782
782
|
"concurrencyIsSeparate": true
|
|
783
783
|
},
|
|
784
|
+
"competingCandidates": {
|
|
785
|
+
"owner": "main-user-decision-2026-10-19-main-judges-the-conditions-there-is-no-automatic-detector-new-tool-new-agent-role-or-permanent-gate",
|
|
786
|
+
"purpose": "for-a-problem-that-already-failed-once-and-observation-cannot-separate-run-two-captured-candidate-patches-and-let-requirement-derived-executable-tests-choose-one-never-a-default-way-to-implement-and-never-a-vote",
|
|
787
|
+
"trigger": {
|
|
788
|
+
"allRequired": [
|
|
789
|
+
"the-same-problem-already-failed-once-a-rework-of-the-same-FINDING_ID-failed-again-or-a-regression-appeared-right-after-a-fix",
|
|
790
|
+
"two-or-more-causes-or-designs-remain-and-observation-cannot-separate-them",
|
|
791
|
+
"the-correct-behaviour-can-be-expressed-as-executable-tests-such-as-async-cancel-state-transition-or-parser-and-not-ui-feel-real-equipment-or-environment-bound-behaviour"
|
|
792
|
+
],
|
|
793
|
+
"evidence": "the-brief-and-the-routing-reason-cite-the-observed-evidence-for-each-of-the-three-conditions",
|
|
794
|
+
"neverBy": "the-hard-or-difficulty-score-alone-or-by-two-conditions-out-of-three"
|
|
795
|
+
},
|
|
796
|
+
"run": {
|
|
797
|
+
"candidates": "exactly-two-makers-with-the-same-brief-and-acceptance-in-one-task-batch-each-with-isolated-capture-and-neither-sees-the-other-no-third-candidate",
|
|
798
|
+
"isolation": "isolated-capture-runs-in-a-worktree-keeps-the-patch-or-branch-artifact-and-never-applies-it-to-the-parent-checkout-core-task-isolation-apply-and-merge-defaults-stay-unchanged-the-parent-result-names-the-root-patch-path-or-branch",
|
|
799
|
+
"model": "prefer-two-different-model-families-among-the-available-code-candidates-and-state-the-pair-in-ROUTING_REASON",
|
|
800
|
+
"deliverable": "each-candidate-delivers-its-patch-and-the-boundary-tests-it-wrote-named-in-its-report",
|
|
801
|
+
"budget": "counts-as-two-primary-makers-in-routing.taskBudget",
|
|
802
|
+
"workspaceScope": "capture-is-an-isolated-workspace-so-two-candidates-with-identical-OWNED_PATHS-are-not-a-shared-workspace-overlap"
|
|
803
|
+
},
|
|
804
|
+
"select": {
|
|
805
|
+
"crossMatrix": "main-applies-each-captured-patch-in-a-scratch-worktree-outside-the-repository-and-runs-every-candidate-s-tests-and-the-existing-focused-checks-against-both-patches",
|
|
806
|
+
"disagreement": "where-results-differ-main-first-judges-whether-each-disagreeing-test-matches-the-user-requirement-or-acceptance-a-test-that-encodes-one-implementation-s-choice-is-discarded-with-its-reason",
|
|
807
|
+
"discriminatingTests": "main-adds-tests-derived-from-the-requirement-never-from-either-implementation-if-the-requirement-itself-is-ambiguous-ask-the-user-without-autoSelectRecommended",
|
|
808
|
+
"choice": "the-one-patch-that-passes-all-requirement-valid-tests-on-a-tie-prefer-the-smaller-diff-never-by-test-count-majority-requirement-valid-tests-from-the-other-candidate-may-be-kept-with-the-chosen-patch"
|
|
809
|
+
},
|
|
810
|
+
"finish": {
|
|
811
|
+
"apply": "main-git-applies-the-chosen-patch-to-the-parent-checkout-then-runs-the-normal-acceptance-checks-and-cross_review",
|
|
812
|
+
"record": "the-matrix-the-discarded-tests-with-reasons-and-the-choice-go-into-doc-history-and-scratch-worktrees-are-cleaned",
|
|
813
|
+
"bothFail": "if-both-candidates-fail-there-is-no-third-candidate-return-to-diagnosis"
|
|
814
|
+
},
|
|
815
|
+
"observation": "each-use-records-the-trigger-evidence-wall-time-tokens-if-observable-the-outcome-and-later-regressions-so-the-user-can-judge-whether-it-pays-off"
|
|
816
|
+
},
|
|
784
817
|
"effortSelection": {
|
|
785
818
|
"owner": "user-decision-2026-10-08-the-dispatched-maker-child-auto-classifier-chooses-the-level-main-chooses-only-the-candidate-model-and-never-a-concrete-maker-effort",
|
|
786
819
|
"mechanism": "tasks-item-model-is-the-candidate-selector-with-the-auto-suffix-task-enableEffort-false-keeps-coarse-effort-from-overriding-it-and-the-task-hook-blocks-a-concrete-suffix-or-coarse-effort",
|
|
@@ -887,12 +920,12 @@
|
|
|
887
920
|
"UNKNOWN": "insufficient-evidence-for-dominant-judgment-main-decides-and-records-why-no-automatic-dual-dispatch"
|
|
888
921
|
},
|
|
889
922
|
"uiUxBoundaryCriteria": "remaining-UI-or-UX-judgment-in-layout-responsive-behavior-information-hierarchy-visual-design-accessibility-focus-touch-targets-or-user-interaction-including-mixed-code-and-design-work-even-when-code-is-dominant-not-file-extension-alone-or-copying-already-settled-wording",
|
|
890
|
-
"mainWaitsCriteria": "main-must-
|
|
923
|
+
"mainWaitsCriteria": "main-waits-when-it-must-use-this-slice-result-to-finish-the-current-user-request-including-integrating-reviewing-committing-publishing-deploying-or-reporting-it-in-the-same-request-even-while-main-or-sibling-slices-work-in-parallel-true-when-the-facts-say-the-next-step-or-the-final-answer-depends-on-it-false-only-when-the-facts-say-the-current-request-finishes-without-this-result-such-as-a-detached-background-or-long-batch-job-like-eval-reruns-or-bulk-classification-whose-result-is-reported-later-parallel-work-or-a-longer-sibling-alone-is-not-such-a-fact-user-decision-2026-10-19-no-such-fact-means-main-waits",
|
|
891
924
|
"normalAllocation": {
|
|
892
925
|
"selection": "UI-UX-boundary-selects-NORMAL_OPUS-independently-of-difficulty-never-promote-to-HARD-to-use-Opus-otherwise-recommend-NORMAL_SONNET-for-non-UI-NORMAL-by-default-and-NORMAL_DEEPSEEK-first-when-a-deepSeekTriggers-entry-fires-user-decision-2026-10-18-revoking-the-2026-10-11-always-Sonnet-rule-no-per-task-model-suitability-judgment-NORMAL_SOL-resolves-to-the-configured-code-candidate-and-is-only-the-last-substitute-after-NORMAL_SONNET-then-NORMAL_DEEPSEEK-user-decision-2026-10-18-when-each-is-not-an-available-candidate-or-its-provider-limit-exhaustion-is-observed-all-unavailable-means-null-profile-choosing-NORMAL_SOL-while-NORMAL_SONNET-or-NORMAL_DEEPSEEK-is-usable-is-a-recommendation-change-that-needs-ROUTING_REASON-no-quota-percentage-balancing-or-historical-success-rate-superiority-inference-unobserved-quota-is-never-exhaustion",
|
|
893
926
|
"deepSeekTriggers": {
|
|
894
927
|
"rework": "a-FINDING_ID-rework-linked-in-the-routing-ledger-to-an-assignment-whose-last-attempt-dispatch-row-chosenModel-is-a-Sonnet-model-chosenModel-is-the-only-model-the-ledger-records-so-a-core-retry-chain-swap-from-Sonnet-to-the-fallback-model-is-invisible-and-an-unobserved-previous-model-keeps-Sonnet",
|
|
895
|
-
"offCriticalPath": "the-pre-dispatch-mainWaits-question-answers-below-0.5-main-states-the-
|
|
928
|
+
"offCriticalPath": "the-pre-dispatch-mainWaits-question-answers-below-0.5-main-states-through-assessment-facts-that-the-current-request-finishes-without-this-result-never-a-task-guard-field-or-a-task-argument-parallel-work-alone-keeps-Sonnet-a-judge-failure-or-a-missing-answer-keeps-Sonnet",
|
|
896
929
|
"anthropicOverShare": "every-observed-anthropic-account-has-a-live-7d-shared-window-with-usedFraction-greater-than-the-core-selector-day-share-min-1-floor-elapsed-days-plus-1-over-7-measured-from-resetsAt-and-any-unobserved-or-under-share-account-keeps-Sonnet",
|
|
897
930
|
"precedence": "UI-UX-NORMAL_OPUS-first-HARD-unchanged-a-fired-trigger-orders-NORMAL_DEEPSEEK-then-NORMAL_SONNET-then-NORMAL_SOL-and-normalAllocation.reason-names-the-trigger",
|
|
898
931
|
"override": "choosing-NORMAL_DEEPSEEK-when-a-trigger-fired-needs-no-ROUTING_REASON-choosing-another-candidate-does"
|
|
@@ -48,7 +48,7 @@ description: SubAgent 위임 판단, 병렬 실행, 검수 계약과 Git·통신
|
|
|
48
48
|
아래 셋 중 하나가 걸리면 `NORMAL_DEEPSEEK`(Hive의 DeepSeek 1017)를 먼저 추천하고, `normalAllocation.reason`이 걸린 트리거를 적는다.
|
|
49
49
|
DeepSeek는 Sonnet과 통과 품질이 같았지만 벽시계 시간이 중앙값 약 4.5배라(SJF eval, 소표본) 아무도 기다리지 않는 조각에만 쓴다.
|
|
50
50
|
(1) Sonnet이 맡았던 이전 attempt의 `FINDING_ID` 재작업: 원장 dispatch row의 `chosenModel`이 Sonnet일 때다. 원장이 기록하는 모델은 이 값뿐이라 core retry 체인이 실행 중 Sonnet을 Hive로 바꾼 경우는 보이지 않고, 이전 모델을 모르면 Sonnet을 유지한다.
|
|
51
|
-
(2) `maker_route`의 `mainWaits` 질문이 0.5 미만: Main이 이 조각의 결과를 기다리지 않는다는 판단이다.
|
|
51
|
+
(2) `maker_route`의 `mainWaits` 질문이 0.5 미만: Main이 이 조각의 결과를 기다리지 않는다는 판단이다. 이번 요청이 이 결과 없이 끝나는 백그라운드·장시간 배치 작업(결과는 나중에 보고)만 해당하며, 그 사실을 assessment `facts`에 적는다(TASK_GUARD 필드나 task 인자는 없다). 같은 요청에서 Main이 그 결과를 통합·검수·커밋·게시·보고해야 하면 병렬로 돌거나 다른 조각이 더 오래 걸려도 기다리는 조각이다(2026-10-19 사용자 결정). Jev 불가·답 없음은 Sonnet 유지다.
|
|
52
52
|
(3) 관측된 Anthropic 계정이 모두 7일 공유 구간에서 core 계정 선택기와 같은 오늘 몫(`(경과 일수+1)/7`, 최대 1)을 넘김. 계정 하나라도 미관측이거나 몫 이내면 Sonnet 유지다.
|
|
53
53
|
`SOL`·`NORMAL_SOL`·`implSol`은 기존 계약의 식별자로 유지하지만, 2026-10-11 사용자 지시로 그 Maker 슬롯의 실제 모델은 `openai-codex/gpt-6-astra:auto`다. Sol의 과거 평가 수치를 Astra의 성능 증거로 옮기지 않는다.
|
|
54
54
|
Sonnet이 후보로 쓸 수 없거나 그 provider의 한도 소진이 관측되면 `NORMAL_DEEPSEEK`(Hive의 DeepSeek 1017, 2026-10-18 사용자 결정)를 대체로 추천하고,
|
|
@@ -358,6 +358,33 @@ Task Guard lock·budget·소유권·`FINDING_ID`, exit status, 파일·권한·
|
|
|
358
358
|
patch로 보존한 뒤 작업공간을 정리하므로 그 session은 재개·메시지 대상이 아니고, 비격리
|
|
359
359
|
idle/parked child만 후속 지시를 받는다. dispatch마다 실제 `isolated`, 작업공간 또는 patch
|
|
360
360
|
locator, 재개 가능 여부, 재작업이 새 spawn인지를 기록한다. 격리를 일괄 해제하지 않는다.
|
|
361
|
+
- **경쟁 후보 실행(2026-10-19 사용자 결정, 정본 `harness-policy.json`의 `routing.competingCandidates`).** 아래
|
|
362
|
+
조건 셋이 모두 맞는 난제에서만, Main이 판단해 같은 문제를 후보 Maker 2명에게 패치 보존(capture) 격리로
|
|
363
|
+
맡기고 테스트로 하나를 고른다. 자동 감지기·새 도구·새 역할·영구 gate는 두지 않고 난이도·HARD 점수만으로는
|
|
364
|
+
절대 발동하지 않는다. 일반 격리(`isolated: true`)·전역 `task.isolation.apply`/`merge` 기본값은 그대로다.
|
|
365
|
+
- **발동(셋 모두, 브리프와 ROUTING_REASON이 각 조건의 관측 증거를 인용한다).** (1) 같은 문제가 이미 한 번
|
|
366
|
+
실패했다: 같은 FINDING_ID의 재작업이 다시 실패했거나 수정 직후 회귀가 나왔다. (2) 원인이나 설계가 둘 이상
|
|
367
|
+
남았고 관측으로는 가를 수 없다. (3) 올바른 동작을 실행 가능한 테스트로 쓸 수 있다(비동기·취소·상태 전이·
|
|
368
|
+
파서 등. UI 감각·실장비·환경 의존 동작은 아니다). 둘만 맞으면 발동하지 않는다.
|
|
369
|
+
- **실행.** 후보는 정확히 2명이다. 같은 브리프·수용 조건으로 한 task 배치에 `isolated: "capture"`를 줘 함께
|
|
370
|
+
낸다. 서로의 존재를 모른다. 사용 가능한 코드 후보 중 서로 다른 모델 계열 둘을 우선하고 ROUTING_REASON에
|
|
371
|
+
그 쌍을 적는다. 각 후보는 패치와 직접 쓴 경계 테스트를 보고에 이름으로 적어 넘긴다. 예산에서는 primary
|
|
372
|
+
Maker 둘로 센다. `"capture"`는 격리 worktree에서 돌리고 patch(branch 모드면 branch)를 보존하되 부모
|
|
373
|
+
checkout에는 적용하지 않으며, 부모 결과에 root patch 경로(또는 branch)가 나온다. OWNED_PATHS가 같아도
|
|
374
|
+
별도 작업공간이므로 한 배치의 공유 작업공간 겹침 거절 대상이 아니다. 후보는 격리 run이라 끝나면 재개·메시지
|
|
375
|
+
대상이 아니다.
|
|
376
|
+
- **선택.** Main이 저장소 밖 scratch worktree에 후보 패치를 각각 적용하고, 각 후보의 테스트와 기존 focused
|
|
377
|
+
check를 두 패치 모두에 돌려 교차 행렬을 만든다. 결과가 갈리는 테스트는 먼저 그 테스트가 사용자 요구·수용
|
|
378
|
+
조건에 맞는지 Main이 판단하고, 한 구현의 선택을 못 박은 테스트는 이유와 함께 버린다. Main이 요구에서
|
|
379
|
+
도출한 판별 테스트를 더한다(어느 구현에서도 따오지 않는다). 요구 자체가 모호하면 사용자에게 묻는다
|
|
380
|
+
(`autoSelectRecommended` 금지). 요구에 맞는 테스트를 모두 통과하는 패치 하나를 고르고, 동률이면 diff가
|
|
381
|
+
작은 쪽이다. 테스트 개수의 다수결로 고르지 않는다. 다른 후보의 요구 유효 테스트는 고른 패치에 함께 남길 수
|
|
382
|
+
있다.
|
|
383
|
+
- **마무리.** Main이 고른 패치를 `git apply`로 부모 checkout에 적용하고 평소 수용 검사와 `cross_review`를
|
|
384
|
+
돌린다. 행렬·버린 테스트와 이유·선택을 `doc/history`에 남기고 scratch worktree를 정리한다. 둘 다 실패하면
|
|
385
|
+
셋째 후보 없이 진단으로 돌아간다.
|
|
386
|
+
- **관측.** 사용할 때마다 발동 증거·소요 시간·(관측되면) 토큰·결과·이후 회귀를 기록해, 사용자가 이 방식이
|
|
387
|
+
값을 하는지 판단할 수 있게 한다.
|
|
361
388
|
- 결과는 완료 시 자동 전달된다. `wait`는 top-level Main 전용이다(core 18.3.0은 SubAgent에 `wait`를
|
|
362
389
|
주지 않고, SubAgent가 띄운 job 결과는 그 세션을 자동으로 다시 깨운다). Main은 독립 판단이 없고
|
|
363
390
|
남은 일도 없을 때만 실제 barrier에서 인자 없는 `wait`를 부른다. `wait`는 큐의 메시지·미전달 완료
|
|
@@ -584,9 +611,17 @@ evidence locator·이유를 남긴다. `held`는 같은 identity와 보류 이
|
|
|
584
611
|
`cross_review` `review`를 호출하며(reviewer 입력은 diff와 수용 조건뿐, 프로필·persona 문구 없음) 이것은
|
|
585
612
|
되살린 reviewer 역할이 아니라 도구다. reviewer의 finding은 자문 증거이므로 Main이 코드로 확인한 뒤
|
|
586
613
|
각각 `cross_review` `resolve`로 `fixed`·`refuted`·`limit` 중 하나와 근거를 남겨 닫는다. 통과는 모든
|
|
587
|
-
finding이 닫힌 상태이고 깨끗한 검토도 PASS 판정이 아니다. 최대
|
|
614
|
+
finding이 닫힌 상태이고 깨끗한 검토도 PASS 판정이 아니다. 한 체인은 최대 3회이며 probe 라운드는 그중 하나,
|
|
615
|
+
probe가 아닌 라운드는 둘이다. probe가 아닌 후속 라운드는 직전에 reviewer가 본 내용 이후의 delta만 본다.
|
|
616
|
+
reviewer는 코드만으로 가릴 수 없는 의심에 finding의 `probe`(재현 절차와 `expectIfReal`)를 붙일 수 있다.
|
|
617
|
+
그 의심은 Main이 직접 또는 기존 Maker(새 역할 없음)로 실험해 결과를 `cross_review`의 `probeResults`
|
|
618
|
+
(`findingId`·`command`·`exitCode`·`output`)로 `previousReviewId`와 함께 되돌린다. 이것이 probe 라운드이고
|
|
619
|
+
코드가 그대로여도 되며, reviewer가 결과를 받은 finding마다 `confirmed`·`withdrawn`·`unresolved` verdict를 낸다.
|
|
620
|
+
`output`은 발췌(결과당 8 KB, 합계 40 KB)이고 비밀 값은 가려진다. verdict는 자문이다: `withdrawn`도 finding을
|
|
621
|
+
자동으로 닫지 않으므로 Main이 실험 근거로 `refuted`를 `resolve`에 남긴다. 흐름은 reviewer 의심 → 실험 →
|
|
622
|
+
probe 라운드 → `confirmed`만 수정 → delta 라운드다.
|
|
588
623
|
`fixed`로 닫은 finding은 owner에게 `finding_id=<review가 준 ID>`를 붙인 기존 `REWORK` 주문으로 보내고
|
|
589
|
-
Main이 새 revision의 delta를 검토한다(
|
|
624
|
+
Main이 새 revision의 delta를 검토한다(후속 `cross_review`는 선택이며 필수가 아니다). 통과 지문은 `resolve` 시점
|
|
590
625
|
파일 내용의 blob이므로, 마지막 `fixed` 수정이 reviewer에게 보이지 않았다면 그 delta 검토는 Main의 몫이다.
|
|
591
626
|
사용자의 명시 지시 없이는 `crossReviewWaiver`를 쓰지 않는다. 정본은
|
|
592
627
|
`mainLane.workerReview.crossFamilyReview`다.
|
|
@@ -2286,10 +2286,14 @@ function createRunPageScope(page: Page, restoreInterception: () => Promise<void>
|
|
|
2286
2286
|
patched: "- NEVER acquire control to work around `BackgroundUnavailable` or a background no-op: retry that one call with `{ takeover: true }`, which needs no confirmation. Acquire only when the user asks for sustained foreground control.\n- `computer.control.acquire({reason})` requires live human confirmation for task-scoped foreground control;",
|
|
2287
2287
|
},
|
|
2288
2288
|
{
|
|
2289
|
+
// 2026-10-19 사용자 결정: 프로필이 `computer.backgroundFallback: refuse`라 동작별 takeover 재시도는 늘 거절된다.
|
|
2290
|
+
// takeover가 호출 사이 포커스를 사용자 창으로 돌려주며 입력이 그 창으로 샜기 때문이다. 오류가 알려 주는 설정을 따르게 한다.
|
|
2291
|
+
// 같은 날 집계: 14일 computer eval 셀 353개 중 judge() 사용 2개. 규칙 문장만으로는 쓰이지 않아 한 셀 확인 순서를 여기 적는다.
|
|
2289
2292
|
file: "src/prompts/system/computer-use.md",
|
|
2290
|
-
marker: "
|
|
2293
|
+
marker: "follow the setting the error names",
|
|
2291
2294
|
anchor: "- Task-scoped control requires live human confirmation; release it when finished.",
|
|
2292
|
-
|
|
2295
|
+
legacyPatched: "- Per-call `takeover: true` after `BackgroundUnavailable` needs no confirmation; use it instead of `computer.control.acquire`. Acquired control requires live human confirmation; acquire only on user request and release it when finished.",
|
|
2296
|
+
patched: "- After `BackgroundUnavailable`, follow the setting the error names. Under `takeover`, a per-call `takeover: true` needs no confirmation; use it instead of `computer.control.acquire`. Under `refuse` nothing was sent, and `takeover: true`, `raise()` and `control.acquire` are refused too: drive web pages through `browser` (relay) and controls through AX, or hand that step to the user. Acquired control requires live human confirmation; acquire only on user request and release it when finished.\n- Check the outcome in the same eval cell as the action: `wait()` for exact AX/DOM text or properties first. Only when the wording varies, pass the relevant AX text (not a screenshot) to `judge(state, {outcome: {type: \"choice\", instructions, criteria: {done, not_done, unknown}}})` instead of spending a model turn; treat `unknown` or low confidence as not done. Never let `judge()` decide focus, window or process identity, permissions, or whether input may be sent; those come from the OS and tool results.",
|
|
2293
2297
|
},
|
|
2294
2298
|
{
|
|
2295
2299
|
// 빚의 정체(어느 steer 메시지인가)를 표현하는 최소 타입.
|
|
@@ -14998,6 +15002,109 @@ function createSubagentRunMonitor(args: RunMonitorArgs): SubagentRunMonitor {`,
|
|
|
14998
15002
|
anchor: '{value:"spruce",label:"Spruce"},{value:"vale",label:"Vale"}]',
|
|
14999
15003
|
patched: `{value:"spruce",label:"Spruce"},{value:"vale",label:"Vale"}${CODEX_V3_LIVE_VOICES.map(([value, label]) => `,{value:"${value}",label:"${label}"}`).join("")}]`,
|
|
15000
15004
|
},
|
|
15005
|
+
// 2026-10-19 경쟁 후보(capture 격리): task 도구의 `isolated` 가 `true | false | "capture"` 를 받는다. "capture" 는 격리 실행하되
|
|
15006
|
+
// 변경을 부모 체크아웃에 적용하지 않고 patch·branch 산출물만 남긴다(structured-subagent 가 request.isolation.apply=false 를 이미
|
|
15007
|
+
// 처리하고 describeCapturedChanges 가 root patch 경로를 부모 결과에 싣는다). 전역 task.isolation.apply 는 true 로 두어야 해서
|
|
15008
|
+
// (격리 실행이 이미 쓰이고 있다) 호출별로만 apply=false 를 건다. 대상은 아래 묶음이다.
|
|
15009
|
+
// (1) types.ts 정적 schema 두 곳과 동적 schema(item·단일) 두 곳. 동적 batch item 줄은 위 model 항목(entry 92)의 marker 가
|
|
15010
|
+
// 품고 있어 파일 끝 "isolated 마커 단축" 블록이 그 marker 를 줄 앞에서 자른다. (2) index.ts 요청 두 곳(원본 줄은 두고 새 줄을
|
|
15011
|
+
// 덧붙여 다른 항목의 marker 와 겹치지 않게 했다), (3) index.ts follow-up 힌트, (4) task.md 안내 한 줄,
|
|
15012
|
+
// (5) pi-tui 렌더러의 isolated 배지·타입(소스 task.ts 와 타입 소비자가 읽는 dist/types/tools/task.d.ts 둘 다).
|
|
15013
|
+
{
|
|
15014
|
+
file: "src/task/types.ts",
|
|
15015
|
+
marker: '\t"isolated?": "boolean | \'capture\'",\n\t"+": "delete",\n});\n\nexport const taskSchema = type({',
|
|
15016
|
+
anchor: '\t"isolated?": "boolean",\n\t"+": "delete",\n});\n\nexport const taskSchema = type({',
|
|
15017
|
+
patched: '\t"isolated?": "boolean | \'capture\'",\n\t"+": "delete",\n});\n\nexport const taskSchema = type({',
|
|
15018
|
+
},
|
|
15019
|
+
{
|
|
15020
|
+
file: "src/task/types.ts",
|
|
15021
|
+
marker: '\t"isolated?": "boolean | \'capture\'",\n\t"+": "delete",\n});\nconst taskSchemaNoIsolation = type({',
|
|
15022
|
+
anchor: '\t"isolated?": "boolean",\n\t"+": "delete",\n});\nconst taskSchemaNoIsolation = type({',
|
|
15023
|
+
patched: '\t"isolated?": "boolean | \'capture\'",\n\t"+": "delete",\n});\nconst taskSchemaNoIsolation = type({',
|
|
15024
|
+
},
|
|
15025
|
+
{
|
|
15026
|
+
file: "src/task/types.ts",
|
|
15027
|
+
marker: '\n\t\t\t\t"isolated?": "boolean | \'capture\'",\n\t\t\t\t"+": "delete",',
|
|
15028
|
+
anchor: '\n\t\t\t\t"isolated?": "boolean",\n\t\t\t\t"+": "delete",',
|
|
15029
|
+
patched: '\n\t\t\t\t"isolated?": "boolean | \'capture\'",\n\t\t\t\t"+": "delete",',
|
|
15030
|
+
},
|
|
15031
|
+
{
|
|
15032
|
+
file: "src/task/types.ts",
|
|
15033
|
+
marker: '\n\t\t\t"isolated?": "boolean | \'capture\'",\n\t\t\t"+": "delete",',
|
|
15034
|
+
anchor: '\n\t\t\t"isolated?": "boolean",\n\t\t\t"+": "delete",',
|
|
15035
|
+
patched: '\n\t\t\t"isolated?": "boolean | \'capture\'",\n\t\t\t"+": "delete",',
|
|
15036
|
+
},
|
|
15037
|
+
{
|
|
15038
|
+
// 원본 `{ requested: params.isolated }` 를 그대로 두고 줄을 덧붙이면 params.isolated 의 넓어진 타입(boolean | "capture")이
|
|
15039
|
+
// 원본 줄로 흘러 StructuredSubagentIsolationControls.requested(boolean)와 어긋난다(TS2345). 그래서 줄 자체를 바꿔 capture 분기에서
|
|
15040
|
+
// 타입이 좁혀지게 한다. boolean 요청의 런타임 결과는 같다. 이 줄을 marker 로 품은 기존 no-op 후보는 파일 끝 블록이 줄 앞에서 자른다.
|
|
15041
|
+
file: "src/task/index.ts",
|
|
15042
|
+
marker: '\n\t\t\t...("isolated" in params ? { isolation: params.isolated === "capture" ? { requested: true, apply: false } : { requested: params.isolated } } : {}),',
|
|
15043
|
+
anchor: '\n\t\t\t...("isolated" in params ? { isolation: { requested: params.isolated } } : {}),',
|
|
15044
|
+
patched: '\n\t\t\t...("isolated" in params ? { isolation: params.isolated === "capture" ? { requested: true, apply: false } : { requested: params.isolated } } : {}),',
|
|
15045
|
+
},
|
|
15046
|
+
{
|
|
15047
|
+
file: "src/task/index.ts",
|
|
15048
|
+
marker: '\n\t\t\t\t...("isolated" in params ? { isolation: params.isolated === "capture" ? { requested: true, apply: false } : { requested: params.isolated } } : {}),',
|
|
15049
|
+
anchor: '\n\t\t\t\t...("isolated" in params ? { isolation: { requested: params.isolated } } : {}),',
|
|
15050
|
+
patched: '\n\t\t\t\t...("isolated" in params ? { isolation: params.isolated === "capture" ? { requested: true, apply: false } : { requested: params.isolated } } : {}),',
|
|
15051
|
+
},
|
|
15052
|
+
{
|
|
15053
|
+
file: "src/task/index.ts",
|
|
15054
|
+
marker: 'const isolated = spawnParams.isolated === true || spawnParams.isolated === "capture";',
|
|
15055
|
+
anchor: "const isolated = spawnParams.isolated === true;",
|
|
15056
|
+
patched: 'const isolated = spawnParams.isolated === true || spawnParams.isolated === "capture";',
|
|
15057
|
+
},
|
|
15058
|
+
{
|
|
15059
|
+
file: "src/prompts/tools/task.md",
|
|
15060
|
+
marker: 'changes retained, not applied.\n{{/if}}`isolated: "capture"`',
|
|
15061
|
+
anchor: "changes retained, not applied.\n{{/if}}{{/if}}Children start blank;",
|
|
15062
|
+
patched: 'changes retained, not applied.\n{{/if}}`isolated: "capture"`: worktree; keeps the candidate patch without applying it; the caller applies the chosen one.\n{{/if}}Children start blank;',
|
|
15063
|
+
},
|
|
15064
|
+
{
|
|
15065
|
+
file: "../pi-tui/src/tools/task.ts",
|
|
15066
|
+
marker: '\tisolated?: boolean | "capture";\n}\n\n/**\n * Runtime params union',
|
|
15067
|
+
anchor: "\tisolated?: boolean;\n}\n\n/**\n * Runtime params union",
|
|
15068
|
+
patched: '\tisolated?: boolean | "capture";\n}\n\n/**\n * Runtime params union',
|
|
15069
|
+
},
|
|
15070
|
+
{
|
|
15071
|
+
file: "../pi-tui/src/tools/task.ts",
|
|
15072
|
+
marker: '\t/** Run in an isolated worktree (flat form; per-item in batch form). */\n\tisolated?: boolean | "capture";',
|
|
15073
|
+
anchor: "\t/** Run in an isolated worktree (flat form; per-item in batch form). */\n\tisolated?: boolean;",
|
|
15074
|
+
patched: '\t/** Run in an isolated worktree (flat form; per-item in batch form). */\n\tisolated?: boolean | "capture";',
|
|
15075
|
+
},
|
|
15076
|
+
{
|
|
15077
|
+
file: "../pi-tui/src/tools/task.ts",
|
|
15078
|
+
marker: 'if (item?.isolated === true || item?.isolated === "capture") {',
|
|
15079
|
+
anchor: "if (item?.isolated === true) {",
|
|
15080
|
+
patched: 'if (item?.isolated === true || item?.isolated === "capture") {',
|
|
15081
|
+
},
|
|
15082
|
+
{
|
|
15083
|
+
file: "../pi-tui/src/tools/task.ts",
|
|
15084
|
+
marker: 'const showIsolated = "isolated" in args && (args.isolated === true || args.isolated === "capture");',
|
|
15085
|
+
anchor: 'const showIsolated = "isolated" in args && args.isolated === true;',
|
|
15086
|
+
patched: 'const showIsolated = "isolated" in args && (args.isolated === true || args.isolated === "capture");',
|
|
15087
|
+
},
|
|
15088
|
+
{
|
|
15089
|
+
file: "../pi-tui/src/tools/task.ts",
|
|
15090
|
+
marker: 'badges: agentBadges(false, isolated === true || isolated === "capture"),',
|
|
15091
|
+
anchor: "badges: agentBadges(false, isolated === true),",
|
|
15092
|
+
patched: 'badges: agentBadges(false, isolated === true || isolated === "capture"),',
|
|
15093
|
+
},
|
|
15094
|
+
{
|
|
15095
|
+
// 타입 소비자(task/index.ts 의 params.isolated === "capture" 비교)는 pi-tui 의 소스가 아니라 dist/types 선언을 읽는다
|
|
15096
|
+
// (package.json exports.types). 소스만 넓히면 TS2367(boolean 과 "capture" 가 겹치지 않음)이 새로 생기므로 선언도 같이 넓힌다.
|
|
15097
|
+
file: "../pi-tui/dist/types/tools/task.d.ts",
|
|
15098
|
+
marker: '/** Run this spawn in an isolated worktree (batch form; flat form carries it top-level). */\n isolated?: boolean | "capture";',
|
|
15099
|
+
anchor: "/** Run this spawn in an isolated worktree (batch form; flat form carries it top-level). */\n isolated?: boolean;",
|
|
15100
|
+
patched: '/** Run this spawn in an isolated worktree (batch form; flat form carries it top-level). */\n isolated?: boolean | "capture";',
|
|
15101
|
+
},
|
|
15102
|
+
{
|
|
15103
|
+
file: "../pi-tui/dist/types/tools/task.d.ts",
|
|
15104
|
+
marker: '/** Run in an isolated worktree (flat form; per-item in batch form). */\n isolated?: boolean | "capture";',
|
|
15105
|
+
anchor: "/** Run in an isolated worktree (flat form; per-item in batch form). */\n isolated?: boolean;",
|
|
15106
|
+
patched: '/** Run in an isolated worktree (flat form; per-item in batch form). */\n isolated?: boolean | "capture";',
|
|
15107
|
+
},
|
|
15001
15108
|
];
|
|
15002
15109
|
// EDITS 문자열의 줄 끝을 LF로 통일한다. 이 파일의 작업 사본이 CRLF여도 core 파일(LF)과
|
|
15003
15110
|
// 비교·치환이 어긋나지 않는다. core 파일 자체의 줄 끝은 건드리지 않는다.
|
|
@@ -17349,6 +17456,32 @@ for (const update of EDITS.splice(watchFollowupStart, watchFollowupEnd - watchFo
|
|
|
17349
17456
|
owner.legacyPatched ??= owner.patched;
|
|
17350
17457
|
owner.patched = owner.patched.replace(update.anchor, update.patched);
|
|
17351
17458
|
}
|
|
17459
|
+
// 2026-10-19 isolated 마커 단축: task schema·요청의 `isolated` 줄을 넓히는 항목(위 capture 묶음)이 기존 항목의 marker 와 같은 줄을 바꾼다.
|
|
17460
|
+
// (1) 동적 task schema(batch item)의 `"isolated?": "boolean"` 줄은 model 항목(entry 92)의 marker 가 줄 끝까지 품고 있다. 후보 marker 는
|
|
17461
|
+
// "이미 적용됨"을 가르는 앞부분(`"model?": "string",` 이후 `...toolsField,`)이면 충분하므로 isolated 줄 앞에서 자른다.
|
|
17462
|
+
// patched·anchor 는 그대로라 적용·복원 경로가 변하지 않는다.
|
|
17463
|
+
// (2) index.ts 의 model 전달 no-op 후보(upstream 이 이미 model 줄을 가진 판용, marker=anchor=patched)는 끝에 원본 `isolation` 줄을
|
|
17464
|
+
// 품는다. 세 문자열이 같은 no-op 이므로 그 줄만 셋 다에서 잘라도 의미가 같고, capture 항목이 줄을 바꾼 뒤에도 applied 로 읽힌다.
|
|
17465
|
+
// 주 후보(model 줄을 우리가 넣는 판)의 marker 는 `...("isolated" in params` 까지만이라 이미 영향이 없다.
|
|
17466
|
+
{
|
|
17467
|
+
const ISOLATED_BOOLEAN = '"isolated?": "boolean"';
|
|
17468
|
+
const ISOLATION_REQUEST_TAIL = /\n\t+\.\.\.\("isolated" in params \? \{ isolation: \{ requested: params\.isolated \} \} : \{\}\),$/;
|
|
17469
|
+
let cutSchema = 0;
|
|
17470
|
+
let cutRequest = 0;
|
|
17471
|
+
for (const entry of EDITS) {
|
|
17472
|
+
for (const candidate of [entry, ...(entry.alternates ?? [])]) {
|
|
17473
|
+
if (candidate.file === "src/task/types.ts" && candidate.marker.includes(ISOLATED_BOOLEAN)) {
|
|
17474
|
+
candidate.marker = candidate.marker.slice(0, candidate.marker.indexOf(ISOLATED_BOOLEAN)).trimEnd();
|
|
17475
|
+
cutSchema++;
|
|
17476
|
+
} else if (candidate.file === "src/task/index.ts" && candidate.anchor === candidate.patched && candidate.marker === candidate.anchor && ISOLATION_REQUEST_TAIL.test(candidate.marker)) {
|
|
17477
|
+
candidate.anchor = candidate.patched = candidate.marker = candidate.marker.replace(ISOLATION_REQUEST_TAIL, "");
|
|
17478
|
+
cutRequest++;
|
|
17479
|
+
}
|
|
17480
|
+
}
|
|
17481
|
+
}
|
|
17482
|
+
if (cutSchema === 0) throw new Error("isolated 마커 단축: schema 대상 후보가 없다");
|
|
17483
|
+
if (cutRequest === 0) throw new Error("isolated 마커 단축: 요청 no-op 후보가 없다");
|
|
17484
|
+
}
|
|
17352
17485
|
|
|
17353
17486
|
|
|
17354
17487
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cuelo",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.39",
|
|
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": {
|
|
@@ -112,8 +112,6 @@
|
|
|
112
112
|
},
|
|
113
113
|
"devDependencies": {
|
|
114
114
|
"@lobehub/icons": "^5.16.0",
|
|
115
|
-
"@pixiv/three-vrm": "^3.5.5",
|
|
116
|
-
"@react-three/fiber": "^9.8.1",
|
|
117
115
|
"@tailwindcss/postcss": "^4.3.3",
|
|
118
116
|
"@types/bun": "^1.4.0",
|
|
119
117
|
"@types/busboy": "1.5.4",
|
|
@@ -122,7 +120,6 @@
|
|
|
122
120
|
"@types/react": "^19.2.18",
|
|
123
121
|
"@types/react-dom": "^19.2.5",
|
|
124
122
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
125
|
-
"@types/three": "^0.186.0",
|
|
126
123
|
"eslint": "^9.39.5",
|
|
127
124
|
"eslint-config-next": "16.2.12",
|
|
128
125
|
"jiti": "^2.7.0",
|
|
@@ -138,7 +135,6 @@
|
|
|
138
135
|
"remark-gfm": "^4.0.1",
|
|
139
136
|
"remark-math": "^6.0.0",
|
|
140
137
|
"tailwindcss": "^4.3.3",
|
|
141
|
-
"three": "^0.186.1",
|
|
142
138
|
"typescript": "^5.9.3",
|
|
143
139
|
"typescript-language-server": "^6.0.1"
|
|
144
140
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(()=>{var a={};a.id=6327,a.ids=[6327],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},26438:(a,b,c)=>{"use strict";c.d(b,{Fp:()=>e,Q8:()=>d,cf:()=>f});let d=["rin","mio","nova","yuki","isana","shion","hikari"],e="office-avatars";function f(a){return d.includes(a)?a:null}},28251:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(53586),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/office-avatars/[id]/route",pathname:"/api/office-avatars/[id]",filename:"route",bundlePath:"app/api/office-avatars/[id]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"D:\\a\\CUELO\\CUELO\\app\\api\\office-avatars\\[id]\\route.ts",nextConfigOutput:"",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/office-avatars/[id]/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||z.isDev||A||(L=F,L="/index"===L?"/":L);let M=!0===z.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,x,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await z.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},34069:a=>{"use strict";a.exports=import("@oh-my-pi/pi-utils")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53586:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>k,dynamic:()=>l});var e=c(73024),f=c(23211),g=c(26438),h=c(66544),i=c(84089),j=a([i]);i=(j.then?(await j)():j)[0];let l="force-dynamic";async function k(a,{params:b}){if(!(0,h.EN)(a))return f.NextResponse.json({error:"Untrusted API request"},{status:403});let c=(0,g.cf)((await b).id);if(!c)return f.NextResponse.json({error:"Unknown office avatar"},{status:404});try{let b=await (0,i.F)(c);if(!b)return f.NextResponse.json({error:"Office avatar is not installed"},{status:404});let d={"Cache-Control":"private, no-cache",ETag:`"${b.size.toString(36)}-${Math.trunc(b.mtimeMs).toString(36)}"`};if(a.headers.get("if-none-match")===d.ETag)return new Response(null,{status:304,headers:d});return new Response(await (0,e.openAsBlob)(b.path),{headers:{...d,"Content-Type":"model/gltf-binary"}})}catch(a){return f.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}}d()}catch(a){d(a)}})},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66544:(a,b,c)=>{"use strict";c.d(b,{E2:()=>k,EN:()=>j,e9:()=>i});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(){return[process.env.CUELO_HOSTNAME,...process.env.CUELO_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function h(a){try{return new URL(a).origin}catch{return null}}function i(a,b=g()){let c=a.headers.get("host"),h=c?f(c):null;return!!h&&(!!("localhost"===h||h.endsWith(".localhost")||(0,d.isIP)(h))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===h}))}function j(a,b=g()){return!!i(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c,d=a.headers.get("origin");if("cross-site"===a.headers.get("sec-fetch-site"))return!1;if(!d)return!0;let e=(b=new URL(a.url),(c=a.headers.get("host"))?h(`${b.protocol}//${c}`):null);return null!==e&&h(d)===e}(a))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},73024:a=>{"use strict";a.exports=require("node:fs")},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},78335:()=>{},84089:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{F:()=>j});var e=c(51455),f=c(76760),g=c(34069),h=c(26438),i=a([g]);async function j(a){let b=(0,f.join)((0,g.getAgentDir)(),h.Fp,`${a}.vrm`);try{let a=await (0,e.stat)(b);return a.isFile()?{path:b,size:a.size,mtimeMs:a.mtimeMs}:null}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;throw b}}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813],()=>b(b.s=28251));module.exports=c})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"files":["../../../../../../node_modules/@oh-my-pi/pi-utils/package.json","../../../../../../node_modules/@oh-my-pi/pi-utils/src/index.ts","../../../../../../node_modules/@opentelemetry/api/build/src/api/context.js","../../../../../../node_modules/@opentelemetry/api/build/src/api/diag.js","../../../../../../node_modules/@opentelemetry/api/build/src/api/metrics.js","../../../../../../node_modules/@opentelemetry/api/build/src/api/propagation.js","../../../../../../node_modules/@opentelemetry/api/build/src/api/trace.js","../../../../../../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js","../../../../../../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js","../../../../../../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js","../../../../../../node_modules/@opentelemetry/api/build/src/baggage/utils.js","../../../../../../node_modules/@opentelemetry/api/build/src/context-api.js","../../../../../../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js","../../../../../../node_modules/@opentelemetry/api/build/src/context/context.js","../../../../../../node_modules/@opentelemetry/api/build/src/diag-api.js","../../../../../../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js","../../../../../../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js","../../../../../../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js","../../../../../../node_modules/@opentelemetry/api/build/src/diag/types.js","../../../../../../node_modules/@opentelemetry/api/build/src/index.js","../../../../../../node_modules/@opentelemetry/api/build/src/internal/global-utils.js","../../../../../../node_modules/@opentelemetry/api/build/src/internal/semver.js","../../../../../../node_modules/@opentelemetry/api/build/src/metrics-api.js","../../../../../../node_modules/@opentelemetry/api/build/src/metrics/Metric.js","../../../../../../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js","../../../../../../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js","../../../../../../node_modules/@opentelemetry/api/build/src/propagation-api.js","../../../../../../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js","../../../../../../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace-api.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/context-utils.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/span_kind.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/status.js","../../../../../../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js","../../../../../../node_modules/@opentelemetry/api/build/src/version.js","../../../../../../node_modules/@opentelemetry/api/package.json","../../../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../../../node_modules/@swc/helpers/package.json","../../../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../../../node_modules/next/dist/client/lib/console.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../../../node_modules/next/dist/compiled/ws/index.js","../../../../../../node_modules/next/dist/compiled/ws/package.json","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/picocolors.js","../../../../../../node_modules/next/dist/lib/scheduler.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../../../node_modules/next/dist/server/node-environment.js","../../../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../../../node_modules/next/dist/server/require-hook.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../../../node_modules/react/cjs/react.development.js","../../../../../../node_modules/react/cjs/react.production.js","../../../../../../node_modules/react/index.js","../../../../../../node_modules/react/package.json","../../../../../../package.json","../../../../../package.json","../../../../chunks/1813.js","../../../../chunks/4741.js","../../../../webpack-runtime.js","route_client-reference-manifest.js"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/office-avatars/[id]/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"D:\\a\\CUELO\\CUELO\\app\\api\\office-avatars\\[id]\\route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(()=>{var a={};a.id=9947,a.ids=[9947],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},26438:(a,b,c)=>{"use strict";c.d(b,{Fp:()=>e,Q8:()=>d,cf:()=>f});let d=["rin","mio","nova","yuki","isana","shion","hikari"],e="office-avatars";function f(a){return d.includes(a)?a:null}},27355:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(78202),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/office-avatars/route",pathname:"/api/office-avatars",filename:"route",bundlePath:"app/api/office-avatars/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"D:\\a\\CUELO\\CUELO\\app\\api\\office-avatars\\route.ts",nextConfigOutput:"",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/office-avatars/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||z.isDev||A||(L=F,L="/index"===L?"/":L);let M=!0===z.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,x,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await z.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},34069:a=>{"use strict";a.exports=import("@oh-my-pi/pi-utils")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66544:(a,b,c)=>{"use strict";c.d(b,{E2:()=>k,EN:()=>j,e9:()=>i});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(){return[process.env.CUELO_HOSTNAME,...process.env.CUELO_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function h(a){try{return new URL(a).origin}catch{return null}}function i(a,b=g()){let c=a.headers.get("host"),h=c?f(c):null;return!!h&&(!!("localhost"===h||h.endsWith(".localhost")||(0,d.isIP)(h))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===h}))}function j(a,b=g()){return!!i(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c,d=a.headers.get("origin");if("cross-site"===a.headers.get("sec-fetch-site"))return!1;if(!d)return!0;let e=(b=new URL(a.url),(c=a.headers.get("host"))?h(`${b.protocol}//${c}`):null);return null!==e&&h(d)===e}(a))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},78202:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>j,dynamic:()=>k});var e=c(23211),f=c(26438),g=c(66544),h=c(84089),i=a([h]);h=(i.then?(await i)():i)[0];let k="force-dynamic";async function j(a){if(!(0,g.EN)(a))return e.NextResponse.json({error:"Untrusted API request"},{status:403});try{let a=await Promise.all(f.Q8.map(h.F)),b={available:f.Q8.filter((b,c)=>null!==a[c])};return e.NextResponse.json(b,{headers:{"Cache-Control":"no-store"}})}catch(a){return e.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}}d()}catch(a){d(a)}})},78335:()=>{},84089:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{F:()=>j});var e=c(51455),f=c(76760),g=c(34069),h=c(26438),i=a([g]);async function j(a){let b=(0,f.join)((0,g.getAgentDir)(),h.Fp,`${a}.vrm`);try{let a=await (0,e.stat)(b);return a.isFile()?{path:b,size:a.size,mtimeMs:a.mtimeMs}:null}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;throw b}}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813],()=>b(b.s=27355));module.exports=c})();
|