cuelo 0.10.37 โ 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 +9 -13
- 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 +9 -13
- 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-22c6797cb59f5311.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 +1 -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/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-ec11fee3e3e9227a.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/static/pfQaxPnAiAJ4YIe8Fr0ft/_buildManifest.js +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/{pfQaxPnAiAJ4YIe8Fr0ft โ Hnj-vLLVhpk85eE5EC5YJ}/_ssgManifest.js +0 -0
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-webpack","duration":
|
|
1
|
+
[{"name":"run-webpack","duration":112526253,"timestamp":741304,"id":14,"parentId":1,"tags":{},"startTime":1792418315748,"traceId":"149c6ec28f45fea2"},{"name":"run-typescript","duration":19849705,"timestamp":113633289,"id":10954,"parentId":1,"tags":{},"startTime":1792418428640,"traceId":"149c6ec28f45fea2"},{"name":"static-check","duration":4307052,"timestamp":133592769,"id":10957,"parentId":1,"tags":{},"startTime":1792418448600,"traceId":"149c6ec28f45fea2"},{"name":"static-generation","duration":14069821,"timestamp":138019663,"id":11125,"parentId":1,"tags":{},"startTime":1792418453027,"traceId":"149c6ec28f45fea2"},{"name":"collect-build-traces","duration":23733590,"timestamp":137978930,"id":11122,"parentId":1,"tags":{},"startTime":1792418452986,"traceId":"149c6ec28f45fea2"},{"name":"telemetry-flush","duration":82,"timestamp":161717301,"id":11134,"parentId":1,"tags":{},"startTime":1792418476725,"traceId":"149c6ec28f45fea2"},{"name":"next-build","duration":161087546,"timestamp":629859,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1792418315637,"traceId":"149c6ec28f45fea2"}]
|
package/.next/types/routes.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// This file is generated automatically by Next.js
|
|
2
2
|
// Do not edit this file manually
|
|
3
3
|
|
|
4
|
-
type AppRoutes = "/" | "/
|
|
5
|
-
type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/account" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/new" | "/api/agent/running" | "/api/attachment-settings" | "/api/attachments" | "/api/attachments/[id]/transcription" | "/api/attachments/draft" | "/api/auth/all-providers" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/display-settings" | "/api/document-text" | "/api/experiments" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/github/projects" | "/api/gpt6/handles" | "/api/gpt6/reply" | "/api/gpt6/token" | "/api/gpt6/web6-session" | "/api/home" | "/api/live/call/[callId]" | "/api/live/events" | "/api/live/interpret" | "/api/live/offer" | "/api/live/voices" | "/api/mcp" | "/api/model-roles" | "/api/models" | "/api/models-config" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/
|
|
4
|
+
type AppRoutes = "/" | "/recover"
|
|
5
|
+
type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/account" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/new" | "/api/agent/running" | "/api/attachment-settings" | "/api/attachments" | "/api/attachments/[id]/transcription" | "/api/attachments/draft" | "/api/auth/all-providers" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/display-settings" | "/api/document-text" | "/api/experiments" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/github/projects" | "/api/gpt6/handles" | "/api/gpt6/reply" | "/api/gpt6/token" | "/api/gpt6/web6-session" | "/api/home" | "/api/live/call/[callId]" | "/api/live/events" | "/api/live/interpret" | "/api/live/offer" | "/api/live/voices" | "/api/mcp" | "/api/model-roles" | "/api/models" | "/api/models-config" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/plugins" | "/api/project-docs" | "/api/project-trust" | "/api/projects" | "/api/runs" | "/api/runs/[runId]" | "/api/runs/[runId]/prelude" | "/api/runs/[runId]/turns" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/export" | "/api/sessions/[id]/state" | "/api/sessions/search" | "/api/settings" | "/api/sidecars/[service]/[...path]" | "/api/skills" | "/api/skills/check" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/subagents/eta" | "/api/theme" | "/api/tool-image" | "/api/update-maintenance" | "/api/updates" | "/api/web-access" | "/api/web-access/recovery" | "/api/web6/consults" | "/api/worktrees"
|
|
6
6
|
type PageRoutes = never
|
|
7
7
|
type LayoutRoutes = "/"
|
|
8
8
|
type RedirectRoutes = never
|
|
@@ -55,8 +55,6 @@ interface ParamMap {
|
|
|
55
55
|
"/api/models-config/catalog": {}
|
|
56
56
|
"/api/models-config/discover": {}
|
|
57
57
|
"/api/models-config/test": {}
|
|
58
|
-
"/api/office-avatars": {}
|
|
59
|
-
"/api/office-avatars/[id]": { "id": string; }
|
|
60
58
|
"/api/plugins": {}
|
|
61
59
|
"/api/project-docs": {}
|
|
62
60
|
"/api/project-trust": {}
|
|
@@ -89,8 +87,6 @@ interface ParamMap {
|
|
|
89
87
|
"/api/web-access/recovery": {}
|
|
90
88
|
"/api/web6/consults": {}
|
|
91
89
|
"/api/worktrees": {}
|
|
92
|
-
"/office": {}
|
|
93
|
-
"/office-preview": {}
|
|
94
90
|
"/recover": {}
|
|
95
91
|
}
|
|
96
92
|
|
package/.next/types/validator.ts
CHANGED
|
@@ -47,24 +47,6 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
// Validate ../../app/office-preview/page.tsx
|
|
51
|
-
{
|
|
52
|
-
type __IsExpected<Specific extends AppPageConfig<"/office-preview">> = Specific
|
|
53
|
-
const handler = {} as typeof import("../../app/office-preview/page.js")
|
|
54
|
-
type __Check = __IsExpected<typeof handler>
|
|
55
|
-
// @ts-ignore
|
|
56
|
-
type __Unused = __Check
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Validate ../../app/office/page.tsx
|
|
60
|
-
{
|
|
61
|
-
type __IsExpected<Specific extends AppPageConfig<"/office">> = Specific
|
|
62
|
-
const handler = {} as typeof import("../../app/office/page.js")
|
|
63
|
-
type __Check = __IsExpected<typeof handler>
|
|
64
|
-
// @ts-ignore
|
|
65
|
-
type __Unused = __Check
|
|
66
|
-
}
|
|
67
|
-
|
|
68
50
|
// Validate ../../app/page.tsx
|
|
69
51
|
{
|
|
70
52
|
type __IsExpected<Specific extends AppPageConfig<"/">> = Specific
|
|
@@ -470,24 +452,6 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
470
452
|
type __Unused = __Check
|
|
471
453
|
}
|
|
472
454
|
|
|
473
|
-
// Validate ../../app/api/office-avatars/[id]/route.ts
|
|
474
|
-
{
|
|
475
|
-
type __IsExpected<Specific extends RouteHandlerConfig<"/api/office-avatars/[id]">> = Specific
|
|
476
|
-
const handler = {} as typeof import("../../app/api/office-avatars/[id]/route.js")
|
|
477
|
-
type __Check = __IsExpected<typeof handler>
|
|
478
|
-
// @ts-ignore
|
|
479
|
-
type __Unused = __Check
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
// Validate ../../app/api/office-avatars/route.ts
|
|
483
|
-
{
|
|
484
|
-
type __IsExpected<Specific extends RouteHandlerConfig<"/api/office-avatars">> = Specific
|
|
485
|
-
const handler = {} as typeof import("../../app/api/office-avatars/route.js")
|
|
486
|
-
type __Check = __IsExpected<typeof handler>
|
|
487
|
-
// @ts-ignore
|
|
488
|
-
type __Unused = __Check
|
|
489
|
-
}
|
|
490
|
-
|
|
491
455
|
// Validate ../../app/api/plugins/route.ts
|
|
492
456
|
{
|
|
493
457
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/plugins">> = Specific
|
package/README.md
CHANGED
|
@@ -100,9 +100,6 @@ Anthropic ๊ตฌ๋
๊ณ์ ์ด ๋ชจ๋ ์ฃผ๊ฐ ํ๋์ ๋ฟ์ผ๋ฉด, ๋ฏธ๋ฆฌ ๋ ์๋น
|
|
|
100
100
|
- ๋ํ๊ฐ ์์ถ๋ผ๋ ์๋ธ์์ด์ ํธ ์นด๋ยท์งํ์ค๊ณผ ํ ์ผ ๋ชฉ๋ก์ ํ์ฌ ๋ถ๊ธฐ์ ๊ธฐ๋ก์ ์ด์ด์ ๋ณด์ฌ ์ค๋๋ค. ์์ถ์ผ๋ก ์๋ ๋ต๋ณ์ด ๊ฐ๋ ค์ง ์นด๋๋ ์์ถ ์ง์ ์์ ๋ค์ ์ด ์ ์์ผ๋ฉฐ, ์๋ก๊ณ ์นจํด๋ ๋ณต์๋ฉ๋๋ค. ์ดํ ์คํ ์ํ์ ๊ฒ์ ํ์ ์ ์ ๊ด์ธก์ ๋ง์ถฐ ๊ฐฑ์ ๋ฉ๋๋ค.
|
|
101
101
|
- ๋๋ ํด์ ๋ง์ง๋ง ๋ต๋ณ ์๋์ ๋ณ๊ฒฝ ํ์ผยท๊ฒ์ฌยท์คํจยท๋ฏธํ์ธ ๊ฐ์๋ฅผ ํ ์ค๋ก ์์ฝํ๊ณ , ํผ์น๋ฉด ํ์ผ๊ณผ ๊ฒ์ฌ ๋ช
๋ นยท๊ฒฐ๊ณผ๋ฅผ ๋ด
๋๋ค.
|
|
102
102
|
- ์คํ ์ค์ ๋ณด๋ธ ์
๋ ฅ์ ใ์ง๊ธ ์ง์ใ์ ใ์๋ฃ ํ ์์ฒญใ์ผ๋ก ๋๋์ด, ์ ์ยท์ ๋ฌ ๋๊ธฐยท๋ํ์ ๋ค์ด๊ฐ ๋จ๊ณ๋ฅผ ๋ฐ๋ก ๋ณด์ฌ ์ค๋๋ค. ์ ๋ฌ์ ํ์ธํ์ง ๋ชปํ๋ฉด ๊ทธ๋ ๋ค๊ณ ํ์ํฉ๋๋ค. ์คํฌ๋ฆฐ์ท๋ง ๋ณด๋ธ ์
๋ ฅ๋ ใ์ด๋ฏธ์ง N๊ฐใ๋ก ํ์ํฉ๋๋ค. ๊ธฐ๋ณธ ๋ชฉ๋ก์๋ ์ต๊ทผ 4๊ฐ๋ง ๋ณด์ด๊ณ , ใ์ด์ N๊ฐ ๋ ๋ณด๊ธฐใ๋ก ๋๋จธ์ง๋ฅผ ํผ์น ์ ์์ต๋๋ค. ์ค์ ๋๊ธฐ ์ค์ธ ์
๋ ฅ์ ๋ชฉ๋ก์์ ์จ๊ฒจ์ ธ๋ ์ ์ง๋๋ฉฐ, ํผ์น ๋ชฉ๋ก์์ ๊ฑฐ๋ ์ ์์ต๋๋ค.
|
|
103
|
-
- ์คํผ์ค ํ๋ฉด: ๋ํ ํ๋ฉด์ ใ์คํผ์คใ๋ฅผ ๋๋ฅด๋ฉด 3D ์ฌ๋ฌด์ค ์ ์ฉ ํ๋ฉด(`/office`)์ด ์ ํญ์์ ์ด๋ฆฝ๋๋ค. ์๋ ํญ์ ์ฃผ์ยท์ ํํ ์ธ์
ยท์์ฑ ์ค์ธ ์ด์ยท์งํ ์ค์ธ ์๋ต์ ๊ทธ๋๋ก ๋จ๊ณ , ์คํผ์ค ํญ๋ ๊ฐ์ ์ธ์
์ฃผ์(`?session=`)๋ฅผ ์ฐ๋ฏ๋ก ์ง์ ์ด๊ฑฐ๋ ์๋ก๊ณ ์นจํด๋ ๊ฐ์ ์ธ์
์ด ์ด๋ฆฝ๋๋ค. ์ฌ๋ฌด์ค์ด ํ๋ฉด ํญ์ ๋ค ์ฐ๊ณ , Main๊ณผ ์ฐธ์ฌํ Maker๊ฐ ๊ฐ์ ์บ๋ฆญํฐ๋ก ์๋ฆฌ์ ์์ ์ค์ ์คํ ์ํ๋๋ก ์ผํ๊ฑฐ๋ ์ฑ
์ ๊ณ์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ, ์คํ์ด ๋๋๋ฉด ์ฌ๋ ์๋ฆฌ๋ก ๋์๊ฐ๋๋ค. ์คํ ์๋ฃ๋ Main์ ์์ฉ์ผ๋ก ํ์ํ์ง ์์ต๋๋ค. ์ด ์ธ์
์ ์ฐธ์ฌํ์ง ์์ ์บ๋ฆญํฐ๋ ํด๊ฒ ๊ตฌ์ญ์์ ์ฌ๋ฉฐ, ๊ฐ๋ฆฌํค๋ฉด ใ์ฐธ์ฌ ์ ํจใ์ด ๋ณด์
๋๋ค. ์ค๋ฅธ์ชฝ ์ ๋ฒํผ์ผ๋ก ํ๋ยท์ถ์ยท์ ์ฒด ๋ณด๊ธฐ๋ฅผ ํ๊ณ , ํ๋ํ ๋ค์๋ ์ฅ๋ฉด์ ๋๊ฑฐ๋ ํ์ดํ ๋ฒํผ์ผ๋ก ๋๋ฌ๋ด
๋๋ค. ์ฐธ์ฌ์ ์บ๋ฆญํฐ๋ ๋จธ๋ฆฌ ์ ๋งํ์ , ์๋ ์ฐธ์ฌ์ ์ค์ ๋๋ฅด๋ฉด ์ฌ๋ฌด์ค ๋์ ๊ทธ ๋์์ ๋ํ๋ ์์
๊ธฐ๋กยทํ์ผ์ด ํ๋ฉด์ ๋ค ์ฐ๊ณ , ์ฐธ์ฌ์ ์ค์ ใ์ฌ๋ฌด์คใ๋ก ๋์์ต๋๋ค. ์ฐฝ์ด ๋ฎ์ผ๋ฉด ์ค์ฌ ๋ง์ถ์ง ์๊ณ ์ธ๋ก๋ก ์คํฌ๋กคํฉ๋๋ค. Maker ๊ธฐ๋ก์ ์กฐํ ์ ์ฉ์ด๊ณ ์
๋ ฅ์ ๋ Main์๊ฒ ๊ฐ๋๋ค. ๊ณ ๋ฅด๊ธฐ๋ง ํด์๋ ๋ชจ๋ธยท๊ณ์ ์ด ๋ฐ๋๊ฑฐ๋ ๋ฉ์์ง๊ฐ ๋ค๋ฅธ ๋์์ผ๋ก ๊ฐ์ง ์์ต๋๋ค. ์คํผ์ค ํญ์ ใ๋ํ ํ๋ฉดใ์ ๊ฐ์ ์ธ์
์ ๋ํ ํ๋ฉด์ผ๋ก ๋์๊ฐ๋๋ค. ๋ ํญ์ด ๊ฐ์ ์ธ์
์ ์ด์ด ๋๋ฉด ์๋ฃ ์๋ฆผยท์๋ฆฌ๊ฐ ํญ๋ง๋ค ๋ ์ ์์ต๋๋ค. WebGL์ ์ธ ์ ์๊ฑฐ๋ ์ฅ๋ฉด์ ๋ฐ์ง ๋ชปํ๋ฉด ์๋ฆฌ ์นด๋๋ก ๋ณด์ฌ ์ฃผ๊ณ ๋ค์ ์๋ํ ์ ์์ต๋๋ค. ์บ๋ฆญํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๋๋ก ๊ทธ๋ฆฌ๊ณ , ๋ฐฉ์ ๊ฐ๊ตฌ๋ KayKitยทKenney์ CC0 ๋ชจ๋ธ์ ์คํผ์ค๋ฅผ ์ด ๋๋ง ๋ฐ์ต๋๋ค. ๊ฐ๊ตฌ๋ฅผ ๋ฐ์ง ๋ชปํ๋ฉด ์ฝ๋๋ก ๊ทธ๋ฆฐ ๋ฐฉ์ ๋ณด์ฌ ์ค๋๋ค([`public/office3d/ASSETS.md`](./public/office3d/ASSETS.md)).
|
|
104
|
-
- ๊ฐ์ธ ์บ๋ฆญํฐ ๋ชจ๋ธ(์ ํ): agent ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ(๊ธฐ๋ณธ `~/.omp/agent`) ์๋ `office-avatars/`์ `rin.vrm`ยท`mio.vrm`ยท`nova.vrm`ยท`yuki.vrm`ยท`isana.vrm`ยท`shion.vrm`ยท`hikari.vrm`์ ๋๋ฉด ๊ทธ ์บ๋ฆญํฐ๋ฅผ VRM ๋ชจ๋ธ๋ก ๊ทธ๋ฆฝ๋๋ค. ํ์ผ ์ด๋ฆ์ ์ด ์ผ๊ณฑ ๊ฐ๋ง ์ฐ๋ฉฐ, ์๋ฒ๋ ์ด ๊ณ ์ ์ด๋ฆ์ ํ์ผ๋ง ๊ธฐ์กด ์ ์ ๋ณดํธ(ํธ์คํธ ํ์ธยท๋น๋ฐ๋ฒํธ ์ ๊ธ)๋ฅผ ๊ฑฐ์น `/api/office-avatars/<์ด๋ฆ>`์ผ๋ก ๋ด์ฃผ๊ณ ๋ค๋ฅธ ๊ฒฝ๋ก๋ ๋ฐ์ง ์์ต๋๋ค. ๋ชจ๋ธ์ ์ ์ฅ์ยทnpm ํจํค์งยท`public/`์ ๋ค์ด ์์ง ์์ต๋๋ค. ํ์ผ์ด ์๋ ์บ๋ฆญํฐ์ ์บ๋ฆญํฐ๋ฅผ ํน์ ํ์ง ๋ชปํ ์ฐธ์ฌ์๋ ์ฝ๋๋ก ๊ทธ๋ฆฐ ์บ๋ฆญํฐ ๊ทธ๋๋ก์ด๊ณ , ํ์ผ์ด ์๋๋ฐ ๋ฐ๊ฑฐ๋ ์ฝ์ง ๋ชปํ๋ฉด ์ค๋ฅ๋ฅผ ์จ๊ธฐ์ง ์๊ณ ์๋ฆฌ ์นด๋์ ใ๋ค์ ์๋ใ๋ก ๋์ด๊ฐ๋๋ค. ํ์ผ์ ๋ฃ๊ฑฐ๋ ๋ฐ๊พผ ๋ค์๋ ์คํผ์ค๋ฅผ ๋ค์ ์ด๋ฉด ๋ฉ๋๋ค.
|
|
105
|
-
- ํ ์บ๋ฆญํฐ๋ ์์
์ด ๋ช ๊ฐ๋ ์ฌ๋ฌด์ค์ ํ ๋ช
๋ง ์ญ๋๋ค. Main๊ณผ ๊ฐ์ ์บ๋ฆญํฐ์ Maker, ๊ฐ์ ๊ณ์ ์ Maker ์ฌ๋ฟ์ ํ ๋ชธ์ ๋ชจ์ด๊ณ , ๋จธ๋ฆฌ ์ ๋งํ์ ์ ์์
๋ง๋ค ํ ์ค(์ด๋ฆยท์ํ)์ด ๋ณด์ฌ ์คํจยท๋๊ธฐ ์์
๋ ๊ฐ๋ ค์ง์ง ์์ต๋๋ค. ๊ทธ ์บ๋ฆญํฐ๋ฅผ ๋๋ฅด๋ฉด ์์
์ด ํ๋์ผ ๋๋ ๋ฐ๋ก ์ด๋ฆฌ๊ณ , ์ฌ๋ฟ์ผ ๋๋ ๋งํ์ ์ ์ฒซ ์ค๋ก ์ด์ ์ด ๊ฐ์ ์ค๋ง๋ค ๊ณจ๋ผ ์ฝ๋๋ค. ๋ชธ์ ์๋ฆฌ์ ๋์์ ์ผํ๋ ์์
โ ๊ธฐ๋ค๋ฆฌ๋ ์์
โ ์ฌ๋์ ๋ถ๋ฅด๊ฑฐ๋ ์คํจํ ์์
โ ์ฌ๊ฑฐ๋ ๋๋ ์์
์์ผ๋ก ๊ณ ๋ฅธ ๋ํ ์์
์ ๋ฐ๋ฆ
๋๋ค. ํ๋จ ์ฐธ์ฌ์ ์ค๊ณผ ์๋ฆฌ ์นด๋๋ ๊ณ์ ์์
๋ง๋ค ๋ฐ๋ก ๋ณด์
๋๋ค. Maker์ ์บ๋ฆญํฐ๋ ์คํผ์ค๋ฅผ ์ด๋ฉด ๊ฐ Maker ๊ธฐ๋ก์ ๋ง์ง๋ง ๋ต์ ๋จ์ ๊ณ์ ์ผ๋ก ๋ฐ๋ก ์ ํด์ง๊ณ , ๊ณ์ ๊ทผ๊ฑฐ๊ฐ ์๋ ์ฐธ์ฌ์๋ ๋ค๋ฅธ ์บ๋ฆญํฐ์ ํฉ์น์ง ์๊ณ ํ์ ใ์ด๋ฆ ์๋ ์ฐธ์ฌ์ใ๋ก ๋ฐ๋ก ์ญ๋๋ค.
|
|
106
103
|
- ์์ ์์ด์ ํธ์ ๋ฐํ๊ฐ ํด๋น ํด ์๋ ๋ํ ํ๋ฆ์ ๋ผ์ด๋ค์ด ๋๊ฐ ๋ฌด์จ ๋ง์ ํ๋์ง ์ด์ด์ ์ฝํ๋๋ค.
|
|
107
104
|
- ๊ณต๊ฐ ํ๋ค์ค๋ ์์์ ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ์ฌ์์
์ค์ธ ์์ด์ ํธ์๊ฒ ๊ฐ์ ํ์ผ์ ์ค๋ณต ๋ฐฐ์ ํ์ง ์๋๋ก ํ์ธํฉ๋๋ค. ์๋ชป๋ ์์
์ ํ์ ๋ฐ์ฃผ ์ค๋น ๋จ๊ณ์์ ์๋ ค์ฃผ๋ฉฐ, ์์ด์ ํธ ์ญํ ์ ์๋ตํ๋ฉด ๋ฉ์ด์ปค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋ฃ ๊ฒฐ๊ณผ์ Main์ด ๊ฒ์ํ ๊ฒฐ๊ณผ์ ์ถ์ฒ๋ฅผ ๊ตฌ๋ถํ๊ณ , ์ฌ์์
์ด๋ ฅ๊ณผ ์ต์ข
์์ฉ์ ๋ฐ๋ก ๋จ๊น๋๋ค. ์ ์ฉ ๊ฒฝ๊ณ๋ [ํ๋ค์ค ์๋ด](./docs/harness.md#๋ฐ์ฃผ์-๊ฒ์-๊ณ์ฝ)๋ฅผ ๋ฐ๋ฆ
๋๋ค.
|
|
108
105
|
- ์ฌ๋ฌ ์์
์ ํ๊บผ๋ฒ์ ๋งก๊ธธ ๋ ๊ณตํต ์ค๋น ํ์ธ์ ๋ฐ๋ณต์ ์ค์์ต๋๋ค. ์์
๋ณ ๋ด๋น ๊ฒฝ๋ก์ ์ถฉ๋ ํ์ธ์ ์ ์งํ๋ฉฐ, ๋ค์ ๋ฐ์ฃผ์์๋ ๋ฐ๋ ์กฐ๊ฑด์ ๋ค์ ํ์ธํฉ๋๋ค.
|
|
@@ -145,6 +142,7 @@ Anthropic ๊ตฌ๋
๊ณ์ ์ด ๋ชจ๋ ์ฃผ๊ฐ ํ๋์ ๋ฟ์ผ๋ฉด, ๋ฏธ๋ฆฌ ๋ ์๋น
|
|
|
145
142
|
- Main์ด OpenAI ๋ชจ๋ธ์์ Fast๋ฅผ ์ผ๋ฉด ์๋ก ๋ง๋๋ OpenAI ๊ณ์ด SubAgent๋ Fast๋ก ์์ฒญํฉ๋๋ค. AnthropicยทGoogle SubAgent์๋ Fast๋ฅผ ์๋์ผ๋ก ๋๊ธฐ์ง ์๊ณ , Fast๊ฐ ๊บผ์ ธ ์์ผ๋ฉด SubAgent๋ ํ์ค ์ฒ๋ฆฌ๋ก ์์ฒญํฉ๋๋ค.
|
|
146
143
|
- ๋ค์ดํฐ๋ธ ์ฐฝ์ ๋ค๋ฃจ๋ `computer.run`์์ ๋ฒํผ์ ํ ๋ฒ ๋๋ฅธ ๋ค, ์ํ๋ ํยท๋ฌธ๊ตฌยท๊ฐ์ด ๋ํ๋ ๋๊น์ง ๋ก์ปฌ ์ฝ๊ธฐ๋ก๋ง ๋ค์ ํ์ธํ๊ณ ๊ฒฐ๊ณผ๋ง ๋๋ ค์ค๋๋ค. ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋ค์ ๋๋ฅด์ง ์์ผ๋ฉฐ, ์ ํ ์๊ฐ ์ด๊ณผยท์ทจ์ยท์ฝ๊ธฐ ์ค๋ฅ๋ฅผ ์๋ก ๊ตฌ๋ถํด ์๋ฆฝ๋๋ค. ์ ์ฅยท์ ์ก์ฒ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋จ๋ ํด๋ฆญ์ ์น์ธ ์ ์ฐจ๋ ๋ฐ๋์ง ์์ต๋๋ค([์ฌ์ฉ๋ฒ](./docs/harness.md#typed-judgment-routing-jev)).
|
|
147
144
|
- provider ๋ก๊ทธ์ธยทAPI ํค, `models.yml`, ํ๋ฌ๊ทธ์ธ, ์คํฌ์ ์น์์ ๊ด๋ฆฌํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ ๋นํ์ฑํ ์ค์ ์ ์ ์ฅํด๋ ์ด๋ฏธ ๋ถ๋ฌ์จ ํ๋ฌ๊ทธ์ธ์ CUELO ๋ฐํ์์ ์ฌ์์ํด์ผ ๋ฉ์ถฅ๋๋ค. ใ์ธ์
๋ค์ ๋ถ๋ฌ์ค๊ธฐใ๋ ํ๋ฌ๊ทธ์ธ์ ํด์ ํ์ง ์์ต๋๋ค.
|
|
145
|
+
- ์คํฌ ๊ฒ์์ ๊ฒ์ ์๋น์ค ์ค๋ฅ์ ์ ์์ ์ธ ๊ฒ์ ๊ฒฐ๊ณผ ์์์ ๊ตฌ๋ถํด ์๋ดํฉ๋๋ค. ๋ณด์กฐ ๊ฒ์ ๊ฒฝ๋ก์์๋ ์ค์น ์๊ฐ 0ํยท1ํ์ธ ์คํฌ์ ๋น ๋จ๋ฆฌ์ง ์์ต๋๋ค.
|
|
148
146
|
- ํ๋ก์ ํธ ํ์ผ ํ์๊ณผ ์์คยท๋ฌธ์ยท์ด๋ฏธ์งยท์ค๋์คยทPDF ๋ฏธ๋ฆฌ๋ณด๊ธฐ, Git worktree ์ ํ. ํ์ผยท์๋ธ์์ด์ ํธยท์์
๋ก๊ทธ ํจ๋์ ๊ฐ์ ํ ์ค ๋จธ๋ฆฌ์ค์ ์ฐ๊ณ , ์ค๋ฅธ์ชฝ์ ๊ณ ์ ํ ๋ณด์กฐ ํจ๋์ ๋๊ฒ ๋ดค๋ค๊ฐ Escape๋ก ์๋ ํฌ๊ธฐ๋ก ๋์์ต๋๋ค. ์ด๋ ํ์ผ ๋ณด๊ธฐ ๋ฐฉ์๊ณผ ์คํฌ๋กค ์์น๊ฐ ์ ์ง๋ฉ๋๋ค.
|
|
149
147
|
- ํ์ผ ํจ๋์ ์ด๋ฆฐ ํ์ผ์ด ์์ผ๋ฉด, ์ ํํ ํ๋ก์ ํธ์ ํ์ฌ ์ํ(`HANDOFF.md`)ยท๋ฌธ์ ์ง๋(`doc/README.md`)ยท์ต๊ทผ ์์
๊ธฐ๋ก(`doc/history`) ๋ฐ๋ก๊ฐ๊ธฐ๋ฅผ ๋ณด์ฌ ์ค๋๋ค. ์๋ ๋ฌธ์๋ง ์ด ์ ์๊ณ , ์์ยท์ฝ๊ธฐ ๊ถํ ๋ฐยทํ๋ก์ ํธ ๋ฏธ์ ํ์ ๊ตฌ๋ถํด ํ์ํ๋ฉฐ ํ์ผ์ ์๋ก ๋ง๋ค์ง ์์ต๋๋ค.
|
|
150
148
|
- ํ๋ก์ ํธ ์ ๋ขฐ: ์ค์ ์์ ํ๋ก์ ํธ๋ณ ์น์ธ์ ๊ด๋ฆฌยทํด์ ํ๊ณ , ์คํ ์ค์๋ ์์
์ ๋์ง ์๊ณ ์ ๋ขฐ ์น์ธ์ ์์ฝํฉ๋๋ค. ์ ๋ขฐํ์ง ์์ ์ ์ฅ์์ ํ์ฅยทํ
ยท๋๊ตฌยทMCP๋ ์คํํ์ง ์์ต๋๋ค([docs/project-trust.md](./docs/project-trust.md)).
|
|
@@ -256,8 +254,6 @@ bun run test:coverage # ์ฑยท์ค์น๊ธฐ ํ
์คํธ + ์ปค๋ฒ๋ฆฌ์ง ํ
|
|
|
256
254
|
|
|
257
255
|
์์กด์ฑ์ ๋ค์ ์ค์นํ๊ฑฐ๋ ๊ฐฑ์ ํ ๋ค์๋ `bun run prepare:source`๋ฅผ ๋ค์ ์คํํ์ธ์. ์ด๋ฏธ ์ค์น๋ ์์
์ฌ๋ณธ์์๋ `bun install`์ ํจ์น๋ SDK ํจํค์ง๋ฅผ ์๋ณธ์ผ๋ก ๋ค์ ๊น๊ธฐ ๋๋ฌธ์, ์ค๋น ๋จ๊ณ๋ฅผ ๋นผ๋ฉด ํธํ ํจ์น๊ฐ ๋น ์ง ์ฑ๋ก ์คํ๋ฉ๋๋ค. ์ด ์ค๋น ๋จ๊ณ๋ ์์
์ฌ๋ณธ์ SDK๋ง ๋ค๋ฃจ๋ฉฐ ์ฌ์ฉ์ ํ๋กํ์ด๋ ์คํ ์ค์ธ ์ค์น๋ณธ์ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค.
|
|
258
256
|
|
|
259
|
-
3D ์คํผ์ค ์ฅ๋ฉด๋ง ๊ณ ์น ๋๋ `bun run dev:verify`๋ก ๋์ด ๋ค `http://127.0.0.1:30163/office-preview`๋ฅผ ์ฌ์ธ์. ์ค์ ์ฅ๋ฉด ์ฝ๋์ ๊ณ ์ ๋ ์ํ(๋๊ธฐยท์์
ยท์ฃผ์ยท์ฌ๋ฌ ์ฐธ์ฌ์ ๋ฑ)์ ํ๋ฉด ํญ์ ๊ณจ๋ผ ๋ฃ๋ ๊ฐ๋ฐ ์ ์ฉ ํ๋ฉด์ด๋ฉฐ, ์ธ์
์ด๋ ๊ณ์ ์ ๋ง๋ค์ง ์์ต๋๋ค. production ๋น๋์์๋ ์ด ๊ฒฝ๋ก๊ฐ ์ด๋ฆฌ์ง ์์ต๋๋ค. ์ค์ ์ํ ์ฐ๊ฒฐ๊ณผ ๋ํ ํ๋ฉดยท์คํผ์ค ํญ ์ฌ์ด์ ์ธ์
ยท์ด์ ๋ณด์กด์ ์ ์ฒด ์ฑ(`/`์ `/office`)์์ ํ์ธํ์ธ์.
|
|
260
|
-
|
|
261
257
|
์ฐธ๊ณ ๋ฌธ์: [OMP ํ๋ค์ค](./docs/harness.md) ยท [์ธ์ฆ](./docs/authentication.md) ยท [ํ๋ก์ ํธ ์ ๋ขฐ](./docs/project-trust.md) ยท [worktree](./docs/worktrees.md) ยท [๋ค๊ตญ์ด](./docs/i18n.md) ยท [Docker](./docs/docker.md) ยท [WindowsยทWSL ๋๊ตฌ ์๋ ๋น๊ต](./docs/wsl-tool-speed.md) ยท [Maker ์ฝ๋ ํ์ง ํ๊ฐ](./docs/maker-quality.md)
|
|
262
258
|
|
|
263
259
|
## ๊ณ๋ณด์ ๋ผ์ด์ ์ค
|
|
@@ -9,7 +9,7 @@ const MEMORY_RE = /(const phase1Model = await resolveMemoryModel\(\{[^}]*?fallba
|
|
|
9
9
|
const MEMORY_DONE = /const phase1Model = await resolveMemoryModel\(\{[^}]*?fallbackRole: "smol"/;
|
|
10
10
|
const EXPECTED = {
|
|
11
11
|
name: 'cuelo',
|
|
12
|
-
version: '0.10.
|
|
12
|
+
version: '0.10.39',
|
|
13
13
|
distribution: 'cuelo',
|
|
14
14
|
coreVersion: '18.12.2',
|
|
15
15
|
};
|
|
@@ -122,7 +122,7 @@ tool-capable ํธ์ถ์ ์ผ๋ฐ task child ํ๋์ ์ ์ linkage๋ฅผ ์ฌ์ฉํ
|
|
|
122
122
|
|
|
123
123
|
Childยท๋ค๋ฅธ ๋ชจ๋ธ์ ์ฐ๋ ํด์ ์ญํ ยท๊ฐ์ยท์ด์ ๋ฅผ ์๋ฆฌ๊ณ , ์๋ฃ ๋ณด๊ณ ์ ์ค์ ์ฌ์ฉ ์ญํ ยท์ฐ์ถ๋ฌผ ๊ธฐ์ฌยท๊ฒ์ฆ ์ฆ๊ฑฐยท๋จ์ ์ํ์ ์ ๋๋ค. `eval`์ `agent()`ยท`workpool()`ยท`completion(model=โฆ)` ๋ฑ๋ ๊ณ ์งํ๋ค. ํจ์จ ๋ถ์๊ณผ ๊ฒ์ฆ๋ ์คํ ๊ตํ์ `rule://verdict`๋ฅผ ๋ฐ๋ฅธ๋ค. ์ฌ์ฉ์ ๋๋ parser๊ฐ ์๊ตฌํ์ง ์์ผ๋ฉด ๊ณ ์ `FINAL`ยท`OWNER` ํ์์ ๋ง์์ฐ์ง ์๋๋ค.
|
|
124
124
|
|
|
125
|
-
๊ธฐ๋ก๋ ์์น์
|
|
125
|
+
๊ธฐ๋ก๋ ์์น์ ๋น๊ตยท์ถ์ดยท๋ถํด๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ฉด Mermaid ์ฐจํธ(`xychart-beta` ๋ง๋, `gantt` ์๊ฐ์ ๋ฑ) ํ๋๋ฅผ ํ๋ ๋ฌธ์ฅ ์์ ๋ฃ๋๋ค. ์ ํ ์ธก์ , ์คํ ์๊ฐ, ๋จ๊ณ๋ณ ์์, ํต๊ณผยท์คํจ ์ ๊ฐ์ ๊ฐ์ด ์
์ด์์ด๋ฉด ๊ทธ ๊ฒฝ์ฐ๋ค(์ฌ์ฉ์ ๊ฒฐ์ , 2026-10-19). ์ต์ข
๋ณด๊ณ ๋ง์ด ์๋๋ค. ์งํ ์ค ์ค๊ฐ ๋ณด๊ณ , ํ ๋ฌธ์ฅ ์์ ๋์ดํ ์์น, `ask` ์ง๋ฌธ ์ ๊ทผ๊ฑฐ ๋ฌธ์ฅ๋ ํฌํจํ๋ฉฐ, ์์น๋ฅผ ๊ทผ๊ฑฐ๋ก ๊ฒฐ์ ์ ๋ฌผ์ ๋๋ ์ฐจํธ๋ฅผ ๋จผ์ ๋ณด์ด๊ณ ๋ฌป๋๋ค(2026-10-19 ๋๋ฝ ๋ค ๋ณด๊ฐ). ๊ฐ์ ๋๊ตฌ ์ถ๋ ฅยท์คํ ๊ธฐ๋กยท์ธก์ ์ฐ์ถ๋ฌผ์์ ์จ ๊ฒ๋ง ์ฐ๊ณ ์ถ์ฒ๋ฅผ ์ ๋๋ค. ์ฐ๋ฌธ์์ ์ถ์ ํ๊ฑฐ๋ ์ง์ด๋ธ ์์น๋ก ๊ทธ๋ฆฌ์ง ์๋๋ค. ์ฐจํธ๋ `RULES.md`์ ์ธก์ ํ์ยทํธ์ฐจ ๋ณด๊ณ ๋ฅผ ๋์ ํ์ง ์๋๋ค. ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ `visual-report` ์คํฌ์ ๋ฐ๋ฅธ๋ค. ๊ฐ์ ์ข
๋ฅ ์์น ์
์ด์์ด ์ฐจํธ ์์ด ๋๊ฐ๋ฉด `report-chart-guard`๊ฐ ์๋ฆฐ๋ค. ๋ต์ด ๋๋ฌ์ผ๋ฉด ๋ฐ๋ก ์ด์ด ๋ถ์ด๊ฒ ํ๊ณ , ๊ฐ์ ์๋ต์ `ask`๋ ํ ๋ฒ ๋ง๋๋ค.
|
|
126
126
|
|
|
127
127
|
## ์ธ์ ๋ฌด์์ ์ฌ๋๊ฐ
|
|
128
128
|
|
|
@@ -84,6 +84,7 @@ export interface CrossReviewParams {
|
|
|
84
84
|
highRisk?: boolean;
|
|
85
85
|
previousReviewId?: string;
|
|
86
86
|
references?: string[];
|
|
87
|
+
probeResults?: { findingId: string; command: string; exitCode: number; output: string }[];
|
|
87
88
|
reviewId?: string;
|
|
88
89
|
resolutions?: { id: string; status: string; evidence: string }[];
|
|
89
90
|
}
|
|
@@ -94,7 +95,7 @@ export async function executeCrossReview(params: CrossReviewParams, ctx: Extensi
|
|
|
94
95
|
if (params.action === "review") {
|
|
95
96
|
const input: ReviewInput = {
|
|
96
97
|
files: params.files ?? [], acceptance: params.acceptance ?? "", authors: params.authors ?? [],
|
|
97
|
-
highRisk: params.highRisk, previousReviewId: params.previousReviewId, references: params.references,
|
|
98
|
+
highRisk: params.highRisk, previousReviewId: params.previousReviewId, references: params.references, probeResults: params.probeResults,
|
|
98
99
|
};
|
|
99
100
|
return runReview(input, deps, signal);
|
|
100
101
|
}
|
|
@@ -110,7 +111,7 @@ export default function crossReview(pi: ExtensionAPI): void {
|
|
|
110
111
|
const z = pi.zod;
|
|
111
112
|
pi.registerTool({
|
|
112
113
|
name: "cross_review", label: "Cross Review", loadMode: "essential", approval: "read",
|
|
113
|
-
description: "Main ์ ์ฉ ๊ณ์ด ๊ต์ฐจ๊ฒ์ฆ. action=review: files(cwd ๊ธฐ์ค ์๋ ๊ฒฝ๋ก)์ ๋ณ๊ฒฝ์ ๋ฐ๋ ๊ณ์ด reviewer(Anthropic ์ ์โAstra, OpenAIยท๊ทธ ๋ฐ์ ์ ์โOpus)๊ฐ acceptance ๊ธฐ์ค์ผ๋ก ์ ๋์ ์ผ๋ก ์ฝ๊ณ {reviewId, reviewer ๋ชจ๋ธ, round, triggers, findings[]}๋ฅผ ๋๋ ค์ค๋ค. authors๋ ์ฝ๋๋ฅผ ์ด ๋ชจ๋ธ selector ๋๋ \"main\"์ด๋ฉฐ ๋ ๊ณ์ด์ด๋ฉด ๋ ๋ค ๋๋ฆฐ๋ค. previousReviewId๋ฅผ ์ฃผ๋ฉด
|
|
114
|
+
description: "Main ์ ์ฉ ๊ณ์ด ๊ต์ฐจ๊ฒ์ฆ. action=review: files(cwd ๊ธฐ์ค ์๋ ๊ฒฝ๋ก)์ ๋ณ๊ฒฝ์ ๋ฐ๋ ๊ณ์ด reviewer(Anthropic ์ ์โAstra, OpenAIยท๊ทธ ๋ฐ์ ์ ์โOpus)๊ฐ acceptance ๊ธฐ์ค์ผ๋ก ์ ๋์ ์ผ๋ก ์ฝ๊ณ {reviewId, reviewer ๋ชจ๋ธ, round, triggers, findings[]}๋ฅผ ๋๋ ค์ค๋ค. authors๋ ์ฝ๋๋ฅผ ์ด ๋ชจ๋ธ selector ๋๋ \"main\"์ด๋ฉฐ ๋ ๊ณ์ด์ด๋ฉด ๋ ๋ค ๋๋ฆฐ๋ค. previousReviewId๋ฅผ ์ฃผ๋ฉด ๋ค์ ๋ผ์ด๋์ด๊ณ ์ฒด์ธ์ ์ต๋ 3ํ(probe ๋ผ์ด๋ 1ํ + probe๊ฐ ์๋ ๋ผ์ด๋ 2ํ)๋ค: probe๊ฐ ์๋ ๋ผ์ด๋๋ ์ง์ ๋ผ์ด๋๊ฐ ๋ณธ ๋ด์ฉ ์ดํ์ delta๋ง ๋ณด๋ฉฐ ๋ฐ๋ ๊ฒ์ด ์์ผ๋ฉด ๊ฑฐ์ ํ๋ค. reviewer๋ ์ฝ๋๋ง์ผ๋ก ๊ฐ๋ฆด ์ ์๋ ์์ฌ์ finding.probe{steps, expectIfReal, expectIfNot?}(์ฌํ ์คํ)๋ฅผ ๋ถ์ผ ์ ์๋ค. Main์ด๋ ๊ธฐ์กด Maker๊ฐ ๊ทธ ์คํ์ ๋๋ฆฐ ๋ค previousReviewId์ probeResults[{findingId, command, exitCode, output}]๋ฅผ ์ฃผ๋ฉด probe ๋ผ์ด๋๊ฐ ๋์ด ์ฝ๋ ๋ณ๊ฒฝ์ด ์์ด๋ ์คํ ๊ฒฐ๊ณผ๋ก ํ ๋ฒ ๋ ํ๋จ๋ฐ๊ณ , reviewer๊ฐ finding๋ง๋ค verdicts{confirmed|withdrawn|unresolved}๋ฅผ ๋ธ๋ค(ํ๋จ์ด ๋น ์ง๋ฉด unresolved). ์ฒด์ธ์ ์๋ findingIdยท์ค๋ณต ๊ฒฐ๊ณผยท๋ ๋ฒ์งธ probe ๋ผ์ด๋ยท๊ฐ์ธํค ๋ธ๋ก์ด ๋ ๊ฒฐ๊ณผ๋ ๊ฑฐ์ ํ๋ฉฐ, output์ ๋ฐ์ท๋ก ๊ฒฐ๊ณผ๋น 8KB(๋์ผ๋ฉด ์๋ค๋ง ๋จ๊น)ยทํฉ๊ณ 40KB(๋์ผ๋ฉด ๊ฑฐ์ )์ด๊ณ ๋น๋ฐ ๊ฐ์ ๊ฐ๋ ค ์ ๋ขฐํ์ง ์๋ ์๋ฃ๋ก ์ ๋ฌํ๋ค. verdict๋ ์๋ฌธ์ผ ๋ฟ finding์ ์๋์ผ๋ก ๋ซ๊ฑฐ๋ ํต๊ณผ์ํค์ง ์๋๋ค. references(์ ํ, ์ต๋ 10๊ฐ)๋ ์ฌ์ฌ ๋์์ด ์๋ ๋งฅ๋ฝ์ฉ ๊ธฐ์กดยท์ ๊ท ํ์ผ(์: ์์
๊ธฐ๋ก, ๊ณ์ฝ ํ์ผ)์ ํ์ฌ ๋ด์ฉ์ ๋ณ๊ฒฝ ๋ค์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฃ๋๋ค. ๋ช
์ํ ๊ฒฝ๋ก๋ง์ด๋ฉฐ ํต๊ณผ ์ง๋ฌธ์ ๋ฎ์ง ์๊ณ references๋ง์ผ๋ก๋ ์ฌ์ฌํ์ง ์๋๋ค. ๋น๋ฐ ๊ฒฝ๋กยทgitignoreยท์ฌ๋ณผ๋ฆญ ๋งํฌยท๋ฐ์ด๋๋ฆฌยทํ์ผ๋น 64KB/ํฉ๊ณ 100KB ์ด๊ณผ, ์ฝ๋ ๋์ ์ด๋ฆฐ ํ์ผ์ ์ค์ ๊ฒฝ๋ก๊ฐ ๊ณ ์ ํ ์ ์ฅ์ ๋ฃจํธ ์๋ ์์ฒญ ๊ฒฝ๋ก์ ๋ฌ๋ผ์ง ๊ฒฝ์ฐ๋ ๋น ์ง๊ณ skippedReferences์ ์ด์ ๊ฐ ๋์จ๋ค. ์ด ๊ฒฝ๋ก ํ์ธ์ Linux(WSL ํฌํจ)์ /proc/self/fd์ ์์กดํ๋ฏ๋ก native Windows/macOS์์๋ references๋ฅผ ์ฝ์ง ์๊ณ skippedReferences์ unsupported ์ด์ ๋ฅผ ๋จ๊ธด๋ค(๋ณ๊ฒฝ ํ์ผ ์ฌ์ฌ๋ ๊ทธ๋๋ก). ํ์ผ ๋ด์ฉ์ OpenAI ๋๋ Anthropic์ผ๋ก ์ ์ก๋๋ฉฐ ๋น๋ฐ ์ด๋ฆยท๋ด์ฉยท๋ฐ์ด๋๋ฆฌยทํฐ ์
๋ ฅ์ ๊ฑฐ์ /์ ์ธํ๋ค. action=resolve: reviewId ์ฒด์ธ์ ๋ชจ๋ finding์ {id, status fixed|refuted|limit, evidence}๊ฐ ์์ด์ผ pass:true์ด๊ณ ๊ทธ ์์ ํ์ผ ๋ด์ฉ(git blob)์ด ํต๊ณผ ์ง๋ฌธ์ผ๋ก ๊ธฐ๋ก๋๋ค(withdrawn ํ๋จ๋ ์๋์ผ๋ก ๋ซ์ง ์๋๋ค). git_finalize๋ triggerยทํ๋ณธ์ ๊ฑธ๋ฆฐ ์ฝ๋ ํ์ผ์ ์ด ํต๊ณผ ๊ธฐ๋ก์ ์๊ตฌํ๋ค. reviewer์ PASS ํํ์ ๊ทผ๊ฑฐ๊ฐ ์๋๋ค.",
|
|
114
115
|
parameters: z.object({
|
|
115
116
|
action: z.string(),
|
|
116
117
|
files: z.array(z.string()).optional(),
|
|
@@ -119,6 +120,7 @@ export default function crossReview(pi: ExtensionAPI): void {
|
|
|
119
120
|
highRisk: z.boolean().optional(),
|
|
120
121
|
previousReviewId: z.string().optional(),
|
|
121
122
|
references: z.array(z.string()).optional(),
|
|
123
|
+
probeResults: z.array(z.object({ findingId: z.string(), command: z.string(), exitCode: z.number(), output: z.string() })).optional(),
|
|
122
124
|
reviewId: z.string().optional(),
|
|
123
125
|
resolutions: z.array(z.object({ id: z.string(), status: z.string(), evidence: z.string() })).optional(),
|
|
124
126
|
}) as never,
|
|
@@ -5,7 +5,9 @@ import { onSessionLifecycle } from "./lib/session-identity";
|
|
|
5
5
|
/**
|
|
6
6
|
* ์๋ต ์ธ์ด ๊ฐ๋. Main์ด ์์ด ๋ธ๋ฆฌํ๋ฅผ ์ฐ๋ค ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ์งํ ๋ฌธ์ฅ๊น์ง ์์ด๋ก ์๋ ์ผ(2026-10-02)์ ๋ง๋๋ค.
|
|
7
7
|
* 1) ๊ฐ์ง: ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ์ฐ๋ฌธ์์ ์๋ฌธ ๋ณด์กด ๋์(์ฝ๋ยทURLยท๊ฒฝ๋กยท์๋ณ์)์ ๋บ ๊ธ์ ์ค ํ๊ธ ๋น์จ์ด ๋ฎ์ผ๋ฉด ๋๋ฆฌํํธ.
|
|
8
|
-
* 2) ๊ต์ :
|
|
8
|
+
* 2) ๊ต์ : ๋๋ฆฌํํธํ ์๋ต๋ง๋ค ๋ค์ ์์ฒญ์ ํ๊ตญ์ด ๋ณต๊ท ์๋ฆผ์ ๋ฃ๋๋ค(๋ชจ๋ธ ํธ์ถ ์์). ๋ชจ๋ธ ๋ฌธ๋งฅ์๋ ๋ง์ง๋ง ์๋ฆผ๋ง ๋จ๊ธด๋ค.
|
|
9
|
+
* 2026-10-19 ์ฌ๋ฌด์ค ์ธ์
์์ ์๋ฆผ ๋ค ํ ์๋ต๋ง ํ๊ตญ์ด๋ก ๋์์ค๊ณ ๋ค์ ์์ด๋ก ๋น ์ก๋๋ฐ, ์๋ฆผ์ด ์์ด ๊ตฌ๊ฐ๋น ํ ๋ฒ์ด๋ผ
|
|
10
|
+
* ๋ง์ง๋ง ์๋ฆผ ๋ค ์์ด ์๋ต 40์ฌ ๊ฐ(์ต์ข
๋ณด๊ณ ํฌํจ)๊ฐ ์๋ฆผ ์์ด ๋๊ฐ๋ค.
|
|
9
11
|
* 3) ๋ฒ์ญ: ๋๋ฆฌํํธํ ๋ฉ์์ง๋ ์ฒซ ๋ฒ์งธ๋ถํฐ @tiny(HIKARI)๋ก ๋ฒ์ญํด ์๋ฌธ ์๋์ ํ์ํ๋ค(๋ชจ๋ธ ๋ฌธ๋งฅ ์ ์ธ).
|
|
10
12
|
* ์ด๋ฏธ ๋๊ฐ ์์ด ๋ฌธ์ฅ์ ๊ทธ๋๋ก ๋์ง ์๋๋ค(2026-10-09 ์ฌ์ฉ์ ์์ฒญ: ๋ค์ ๋ต๋ง ํ๊ตญ์ด๋ก ๋์์ค๋ ๊ฒ์ผ๋ก๋ ๋ถ์กฑํ๋ค).
|
|
11
13
|
*/
|
|
@@ -29,7 +31,7 @@ const SEEN_LIMIT = 50;
|
|
|
29
31
|
const SECRET_PATTERN = /(?:^|[\s"'`:])(?:password|passwd|api[_ -]?key|bearer|secret|token|credential|client[_ -]?secret)\b|(?:๋น๋ฐ๋ฒํธ|์๊ฒฉ์ฆ๋ช
|์ธ์ฆํค|ํ ํฐ)|(?:sk-[A-Za-z0-9_-]{12,})|-----BEGIN [A-Z ]*PRIVATE KEY-----|\b(?:gh[opusr]_|github_pat_)[A-Za-z0-9_-]{12,}/i;
|
|
30
32
|
const ENGLISH_REQUEST = /(?:in\s+english|answer\s+in\s+english|reply\s+in\s+english|์์ด๋ก|์๋ฌธ์ผ๋ก|์์ด\s*(?:๋ต|์๋ต|๋ฒ์ญ))/i;
|
|
31
33
|
|
|
32
|
-
type Message = { role?: string; content?: unknown; synthetic?: boolean; attribution?: string };
|
|
34
|
+
type Message = { role?: string; content?: unknown; synthetic?: boolean; attribution?: string; timestamp?: number };
|
|
33
35
|
export type DriftKind = "drift" | "korean" | "neutral";
|
|
34
36
|
|
|
35
37
|
function textOf(content: unknown): string {
|
|
@@ -100,21 +102,27 @@ export async function translateWithTiny(text: string, ctx: ExtensionContext, sig
|
|
|
100
102
|
|
|
101
103
|
export function createKoreanReplyGuard(translate: TranslateReply = translateWithTiny) {
|
|
102
104
|
return function koreanReplyGuard(pi: ExtensionAPI): void {
|
|
103
|
-
let reminded = false;
|
|
104
105
|
let skipEnglish = false;
|
|
106
|
+
// ๋ฒ์ญ ํธ์ถ ์ต์ (ํ
์คํธ ๊ธฐ์ค, ์ธ์
๋์)์ ์๋ฆผ ์ค๋ณต ์ต์ (๊ฐ์ ๋ฉ์์ง์ ์ฌ์ ๋ฌ)๋ ๋ค๋ฅด๋ค. 2026-10-19 ์ด์ #39:
|
|
107
|
+
// ํ ์งํฉ์ผ๋ก ๋ ๋ค ๋ง์ ํ๊ตญ์ด ๋ณต๊ทยท์ ์ฌ์ฉ์ ์์ฒญ ๋ค ๊ฐ์ ๋ฌธ๊ตฌ์ ๋ณ๋ ์์ด ์๋ต์ ์๋ฆผ์ด ๋น ์ก๋ค.
|
|
105
108
|
const translated = new Set<string>();
|
|
106
109
|
const pending = new Set<AbortController>();
|
|
110
|
+
// ์ง์ message_end๊ฐ ์ด ๋๋ฆฌํํธ ์๋ต์ด์๋์ง. ์ฌ์ด์ ๋ค๋ฅธ ๋ฉ์์ง ์ด๋ฒคํธ๊ฐ ์ค๋ฉด ๋น์ฐ๋ฏ๋ก, ๋จ์ ์์ ๋ ๊ฐ์
|
|
111
|
+
// hashยทtimestamp๊ฐ ๋ค์ ์ค๋ฉด ๊ฐ์ ๋ฉ์์ง์ ์ฌ์ ๋ฌ์ด๋ค. timestamp ํ๋๋ง์ผ๋ก ์๋ต์ ๊ตฌ๋ณํ์ง ์๋๋ค.
|
|
112
|
+
let lastDrift: { key: string; timestamp: number | undefined } | undefined;
|
|
107
113
|
|
|
108
114
|
const reset = () => {
|
|
109
115
|
for (const controller of pending) controller.abort();
|
|
110
116
|
pending.clear();
|
|
111
|
-
reminded = false;
|
|
112
117
|
skipEnglish = false;
|
|
113
118
|
translated.clear();
|
|
119
|
+
lastDrift = undefined;
|
|
114
120
|
};
|
|
115
|
-
|
|
121
|
+
// details๋ ํ๋ฉด์ด ๋ฒ์ญ์ ์๋ฌธ ๋งํ์ ์ ๋ถ์ด๋ ์ฐ๊ฒฐ์ด๋ค. ๋ฒ์ญ์ ์์๊ฐ ๋ค๋ฐ๋์ด ๋์ฐฉํ ์ ์์ด ์์น๋ก ์ง์ง์ง ์๋๋ค.
|
|
122
|
+
// sourceHash๋ ์๋ฌธ ํ
์คํธ ๋ธ๋ก์ "\n"์ผ๋ก ์ด์ ๊ฐ์ hash()์ด๋ฉฐ CUELO lib/reply-translation.ts๊ฐ ๊ฐ์ ์์ผ๋ก ๋ค์ ๊ณ์ฐํ๋ค.
|
|
123
|
+
const show = (ctx: ExtensionContext, content: string, source: { sourceTimestamp: number | undefined; sourceHash: string }) => {
|
|
116
124
|
pi.sendMessage(
|
|
117
|
-
{ customType: TRANSLATION_TYPE, content, display: true, attribution: "agent" },
|
|
125
|
+
{ customType: TRANSLATION_TYPE, content, display: true, attribution: "agent", details: source },
|
|
118
126
|
ctx.isIdle() ? undefined : { deliverAs: "aside" },
|
|
119
127
|
);
|
|
120
128
|
};
|
|
@@ -124,36 +132,40 @@ export function createKoreanReplyGuard(translate: TranslateReply = translateWith
|
|
|
124
132
|
pi.on("message_start", (event) => {
|
|
125
133
|
const message = event.message as Message;
|
|
126
134
|
if (message.role !== "user" || message.synthetic === true || message.attribution === "agent") return;
|
|
135
|
+
lastDrift = undefined;
|
|
127
136
|
const text = textOf(message.content);
|
|
128
137
|
if (text.trim()) skipEnglish = userWroteEnglish(text);
|
|
129
138
|
});
|
|
130
|
-
// ๋ฒ์ญ์ ์ฌ๋์ด ์ฝ๋
|
|
139
|
+
// ๋ฒ์ญ์ ์ฌ๋์ด ์ฝ๋ ํ์์ฉ์ด๋ผ ๋ชจ๋ธ ๋ฌธ๋งฅ์์ ๋บ๋ค(autolearn-saved์ ๊ฐ์ ์ทจ๊ธ). ์๋ฆผ์ ์๋ต๋ง๋ค ์์ด๋ฏ๋ก ๋ง์ง๋ง ๊ฒ๋ง ๋จ๊ธด๋ค.
|
|
131
140
|
pi.on("context", (event) => {
|
|
132
141
|
const messages = event.messages as { role?: string; customType?: string }[];
|
|
133
|
-
const
|
|
142
|
+
const isCustom = (m: { role?: string; customType?: string }, type: string) => m.role === "custom" && m.customType === type;
|
|
143
|
+
const lastReminder = messages.findLastIndex((m) => isCustom(m, REMINDER_TYPE));
|
|
144
|
+
const kept = messages.filter((m, i) => !isCustom(m, TRANSLATION_TYPE) && (i === lastReminder || !isCustom(m, REMINDER_TYPE)));
|
|
134
145
|
return kept.length === messages.length ? undefined : { messages: kept as typeof event.messages };
|
|
135
146
|
});
|
|
136
147
|
pi.on("message_end", (event, ctx) => {
|
|
137
148
|
const message = event.message as Message;
|
|
149
|
+
const previous = lastDrift;
|
|
150
|
+
lastDrift = undefined;
|
|
138
151
|
if (message.role !== "assistant" || ctx.agent.kind !== "main" || skipEnglish) return;
|
|
139
152
|
const text = textOf(message.content);
|
|
140
|
-
|
|
141
|
-
if (kind === "korean") { reminded = false; return; }
|
|
142
|
-
if (kind !== "drift") return;
|
|
143
|
-
if (!reminded) {
|
|
144
|
-
reminded = true;
|
|
145
|
-
const hasToolCall = Array.isArray(message.content) && message.content.some((b) => b?.type === "toolCall");
|
|
146
|
-
pi.sendMessage(
|
|
147
|
-
{ customType: REMINDER_TYPE, content: REMINDER_TEXT, display: false, attribution: "agent" },
|
|
148
|
-
{ deliverAs: hasToolCall ? "aside" : "nextTurn" },
|
|
149
|
-
);
|
|
150
|
-
}
|
|
153
|
+
if (classify(text) !== "drift") return;
|
|
151
154
|
const key = hash(text);
|
|
155
|
+
const timestamp = typeof message.timestamp === "number" ? message.timestamp : undefined;
|
|
156
|
+
lastDrift = { key, timestamp };
|
|
157
|
+
if (previous?.key === key && previous.timestamp === timestamp) return;
|
|
158
|
+
const hasToolCall = Array.isArray(message.content) && message.content.some((b) => b?.type === "toolCall");
|
|
159
|
+
pi.sendMessage(
|
|
160
|
+
{ customType: REMINDER_TYPE, content: REMINDER_TEXT, display: false, attribution: "agent" },
|
|
161
|
+
{ deliverAs: hasToolCall ? "aside" : "nextTurn" },
|
|
162
|
+
);
|
|
152
163
|
if (translated.has(key)) return;
|
|
153
164
|
translated.add(key);
|
|
154
165
|
if (translated.size > SEEN_LIMIT) translated.delete(translated.values().next().value as string);
|
|
166
|
+
const source = { sourceTimestamp: typeof message.timestamp === "number" ? message.timestamp : undefined, sourceHash: key };
|
|
155
167
|
if (SECRET_PATTERN.test(text)) {
|
|
156
|
-
show(ctx, "[๋ฒ์ญ ์๋ต] ๋ฏผ๊ฐ ์ ๋ณด์ฒ๋ผ ๋ณด์ด๋ ๋ด์ฉ์ด ์์ด ์ธ๋ถ ๋ชจ๋ธ๋ก ๋ณด๋ด์ง ์์๋ค. ์๋ฌธ๋ง ํ์๋๋ค.");
|
|
168
|
+
show(ctx, "[๋ฒ์ญ ์๋ต] ๋ฏผ๊ฐ ์ ๋ณด์ฒ๋ผ ๋ณด์ด๋ ๋ด์ฉ์ด ์์ด ์ธ๋ถ ๋ชจ๋ธ๋ก ๋ณด๋ด์ง ์์๋ค. ์๋ฌธ๋ง ํ์๋๋ค.", source);
|
|
157
169
|
return;
|
|
158
170
|
}
|
|
159
171
|
const controller = new AbortController();
|
|
@@ -163,9 +175,9 @@ export function createKoreanReplyGuard(translate: TranslateReply = translateWith
|
|
|
163
175
|
void (async () => {
|
|
164
176
|
try {
|
|
165
177
|
const result = await translate(text.trim(), ctx, controller.signal);
|
|
166
|
-
if (pending.has(controller)) show(ctx, `[ํ๊ตญ์ด ๋ฒ์ญ]\n${result}
|
|
178
|
+
if (pending.has(controller)) show(ctx, `[ํ๊ตญ์ด ๋ฒ์ญ]\n${result}`, source);
|
|
167
179
|
} catch {
|
|
168
|
-
if (pending.has(controller)) show(ctx, "[๋ฒ์ญ ์คํจ] ํ๊ตญ์ด ๋ฒ์ญ์ ์ป์ง ๋ชปํ๋ค. ์๋ฌธ๋ง ํ์๋๋ค.");
|
|
180
|
+
if (pending.has(controller)) show(ctx, "[๋ฒ์ญ ์คํจ] ํ๊ตญ์ด ๋ฒ์ญ์ ์ป์ง ๋ชปํ๋ค. ์๋ฌธ๋ง ํ์๋๋ค.", source);
|
|
169
181
|
} finally {
|
|
170
182
|
clearTimeout(timer);
|
|
171
183
|
pending.delete(controller);
|