cuelo 0.9.5 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +10 -9
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +2 -2
- package/.next/required-server-files.json +2 -2
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/account/route.js +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/attachment-settings/route.js +1 -1
- package/.next/server/app/api/attachments/[id]/transcription/route.js +2 -2
- package/.next/server/app/api/attachments/draft/route.js +1 -1
- package/.next/server/app/api/attachments/route.js +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 +2 -2
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/display-settings/route.js +1 -1
- package/.next/server/app/api/document-text/route.js +2 -2
- package/.next/server/app/api/experiments/route.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +3 -3
- 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 -0
- package/.next/server/app/api/github/projects/route.js.nft.json +1 -0
- package/.next/server/app/api/github/projects/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/gpt6/handles/route.js +1 -1
- package/.next/server/app/api/gpt6/reply/route.js +1 -1
- package/.next/server/app/api/gpt6/token/route.js +1 -1
- package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/live/call/[callId]/route.js +1 -1
- package/.next/server/app/api/live/character-voice/route.js +1 -1
- package/.next/server/app/api/live/events/route.js +2 -2
- package/.next/server/app/api/live/offer/route.js +1 -1
- package/.next/server/app/api/live/voices/route.js +1 -1
- package/.next/server/app/api/lounge/events/route.js +2 -2
- package/.next/server/app/api/lounge/route.js +1 -1
- package/.next/server/app/api/mcp/route.js +2 -2
- package/.next/server/app/api/model-roles/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +3 -3
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/office-avatars/[id]/route.js +1 -1
- package/.next/server/app/api/office-avatars/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/projects/route.js +1 -1
- package/.next/server/app/api/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/runs/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/search/route.js +1 -1
- package/.next/server/app/api/settings/route.js +1 -1
- package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js +2 -2
- package/.next/server/app/api/skills/route.js +2 -2
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/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 +2 -2
- package/.next/server/app/api/updates/route.js +1 -1
- package/.next/server/app/api/web-access/recovery/route.js +1 -1
- package/.next/server/app/api/web-access/route.js +1 -1
- package/.next/server/app/api/web6/consults/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +6 -6
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +6 -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 +3 -3
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/office/page.js +2 -2
- package/.next/server/app/office/page_client-reference-manifest.js +1 -1
- package/.next/server/app/office-preview/page.js +2 -2
- package/.next/server/app/office-preview/page_client-reference-manifest.js +1 -1
- package/.next/server/app/office-preview.html +1 -1
- package/.next/server/app/office-preview.rsc +3 -3
- package/.next/server/app/office-preview.segments/_full.segment.rsc +3 -3
- package/.next/server/app/office-preview.segments/_head.segment.rsc +1 -1
- package/.next/server/app/office-preview.segments/_index.segment.rsc +3 -3
- package/.next/server/app/office-preview.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/office-preview.segments/office-preview/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/office-preview.segments/office-preview.segment.rsc +1 -1
- package/.next/server/app/office.html +1 -1
- package/.next/server/app/office.rsc +6 -6
- package/.next/server/app/office.segments/_full.segment.rsc +6 -6
- package/.next/server/app/office.segments/_head.segment.rsc +1 -1
- package/.next/server/app/office.segments/_index.segment.rsc +3 -3
- package/.next/server/app/office.segments/_tree.segment.rsc +3 -3
- package/.next/server/app/office.segments/office/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/office.segments/office.segment.rsc +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover/page.js +2 -2
- package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover.html +1 -1
- package/.next/server/app/recover.rsc +3 -3
- package/.next/server/app/recover.segments/_full.segment.rsc +3 -3
- package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
- package/.next/server/app/recover.segments/_index.segment.rsc +3 -3
- package/.next/server/app/recover.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +10 -9
- package/.next/server/chunks/1008.js +2 -2
- package/.next/server/chunks/2651.js +1 -1
- package/.next/server/chunks/3379.js +1 -1
- package/.next/server/chunks/5489.js +12 -12
- package/.next/server/chunks/6429.js +2 -2
- package/.next/server/chunks/7362.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +2 -2
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/6110-9f1e951aafcdd72e.js +1 -0
- package/.next/static/chunks/9575-fe25836fd76b4655.js +22 -0
- package/.next/static/chunks/app/_global-error/{page-6b1496af498bb4fd.js → page-318ea6a550b5034e.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/account/{route-6b1496af498bb4fd.js → route-318ea6a550b5034e.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/{route-6b1496af498bb4fd.js → route-318ea6a550b5034e.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/events/{route-6b1496af498bb4fd.js → route-318ea6a550b5034e.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/attachment-settings/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/attachments/draft/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/attachments/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/display-settings/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/document-text/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/experiments/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/github/projects/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/gpt6/handles/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/gpt6/reply/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/gpt6/token/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/gpt6/web6-session/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/home/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/live/call/[callId]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/live/character-voice/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/live/events/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/live/offer/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/live/voices/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/lounge/events/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/lounge/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/models/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/office-avatars/[id]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/office-avatars/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/projects/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/runs/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/settings/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/skills/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/theme/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/tool-image/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/update-maintenance/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/updates/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/web-access/recovery/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/web-access/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/web6/consults/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/{layout-890e772919e033dc.js → layout-2bf5721b24426873.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/app/office/page-8dc604f9b5e6f220.js +1 -0
- package/.next/static/chunks/app/page-952b1ef4df5ac896.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-318ea6a550b5034e.js +1 -0
- package/.next/static/chunks/{webpack-fe8f1f81562a2b61.js → webpack-68986b211ad38cf1.js} +1 -1
- package/.next/static/css/4fae42750604bc1a.css +1 -0
- package/.next/static/css/7a264466e19eaafd.css +1 -0
- package/.next/static/vrwvD7kuXEjDJZtO0Q3iO/_buildManifest.js +1 -0
- package/.next/trace +108 -108
- package/.next/trace-build +1 -1
- package/.next/types/app/api/github/projects/route.ts +351 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/README.md +10 -3
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +3 -3
- package/Tools/OMP_Global_Config/agent/AGENTS.md +6 -0
- package/Tools/OMP_Global_Config/agent/RULES.md +1 -0
- package/Tools/OMP_Global_Config/agent/TITLE_SYSTEM.md +17 -0
- package/Tools/OMP_Global_Config/agent/agents/maker.md +11 -5
- package/Tools/OMP_Global_Config/agent/extensions/gitnexus-autosync.ts +89 -19
- package/Tools/OMP_Global_Config/agent/extensions/jev-runtime.ts +205 -4
- package/Tools/OMP_Global_Config/agent/extensions/lib/maker-routing.ts +1 -1
- package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +7 -1
- package/Tools/OMP_Global_Config/agent/prompt-copies/RULES.en.md +2 -1
- package/Tools/OMP_Global_Config/agent/rules/harness-policy.json +23 -8
- package/Tools/OMP_Global_Config/agent/rules/subagent.md +16 -2
- package/Tools/OMP_Global_Config/agent/sop/_writer.md +10 -4
- package/Tools/OMP_Global_Config/agent/tools/git-finalizer/finalizer.ps1 +68 -31
- package/Tools/OMP_Global_Config/agent/tools/git-finalizer/index.ts +8 -6
- package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +1277 -164
- package/bin/docker-entrypoint.mjs +19 -0
- package/install.mjs +12 -7
- package/package.json +8 -7
- package/.next/static/b4yL-hhdDIhd8tZ_DFHIS/_buildManifest.js +0 -1
- package/.next/static/chunks/6110-004be57c825af4d9.js +0 -1
- package/.next/static/chunks/9575-9eb94dc1e8bcd130.js +0 -22
- package/.next/static/chunks/app/api/agent/[id]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/attachment-settings/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/attachments/draft/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/attachments/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/display-settings/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/document-text/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/experiments/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/gpt6/handles/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/gpt6/reply/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/gpt6/token/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/gpt6/web6-session/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/home/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/live/call/[callId]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/live/character-voice/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/live/events/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/live/offer/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/live/voices/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/lounge/events/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/lounge/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/models/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/[id]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/projects/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/runs/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/settings/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/skills/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/theme/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/tool-image/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/update-maintenance/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/updates/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/web-access/recovery/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/web-access/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/web6/consults/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/app/office/page-424e244f1c7fcdc6.js +0 -1
- package/.next/static/chunks/app/page-b43b2b8679ed66e2.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-6b1496af498bb4fd.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6b1496af498bb4fd.js +0 -1
- package/.next/static/css/1ffe2d5d654f7eea.css +0 -1
- package/.next/static/css/81a05eb6255ef12e.css +0 -1
- /package/.next/static/{b4yL-hhdDIhd8tZ_DFHIS → vrwvD7kuXEjDJZtO0Q3iO}/_ssgManifest.js +0 -0
|
@@ -104,10 +104,12 @@
|
|
|
104
104
|
an injected message; you have no `wait`, so the checkpoint never blocks the session. Never send a
|
|
105
105
|
diff body, raw output, file contents, or a second message per edit step. Only trigger code is held
|
|
106
106
|
for that reply: keep doing read-only investigation and the non-trigger work in the same slice.
|
|
107
|
-
When independent work runs out before the reply arrives,
|
|
108
|
-
checkpoint
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
When independent work runs out before the reply arrives, use `yield` to report the pending
|
|
108
|
+
checkpoint, completed evidence, and unstarted work as blocked/partial, never as accepted or done.
|
|
109
|
+
Prose alone ends a model turn but leaves the task executor asking for `yield`. A shared-workspace
|
|
110
|
+
Maker resumes on Main's first reply; an isolated worktree is not resumable after terminal yield,
|
|
111
|
+
so preserve the handoff for Main instead of promising a wake. No reply is never approval: trigger
|
|
112
|
+
edits require Main's explicit reply. Main retains the
|
|
111
113
|
approved location and invariants for the final drift check, so a revision that edited trigger
|
|
112
114
|
code without an approved checkpoint cannot be closed. This checkpoint is the first contact point
|
|
113
115
|
of review, not a separate gate: the final judgement covers only deltas not yet reviewed and the
|
|
@@ -146,6 +148,10 @@
|
|
|
146
148
|
build error. Never put a broken intermediate state on the user's screen. Use the user's browser
|
|
147
149
|
only when their live session is genuinely required, or when Main tells you to hand a FINISHED
|
|
148
150
|
surface over for judgement — do not open it on your own initiative.
|
|
151
|
+
Do not launch Chrome/Edge executables directly from bash or eval (including `Bun.spawn`) for
|
|
152
|
+
verification. Use the managed browser helpers or the project's supported verification commands.
|
|
153
|
+
Such commands must use an absolute, isolated profile path: even headless startup can show a
|
|
154
|
+
native desktop error dialog when its profile path is invalid.
|
|
149
155
|
- Run surface checks in the environment Main provides; create a common isolation environment or
|
|
150
156
|
run a full build yourself only when the brief explicitly delegates that run. When you do launch a
|
|
151
157
|
server (delegated, or no environment exists
|
|
@@ -10,6 +10,10 @@ try {
|
|
|
10
10
|
$OutputEncoding = [Console]::OutputEncoding
|
|
11
11
|
} catch {}
|
|
12
12
|
$env:GIT_TERMINAL_PROMPT = '0'
|
|
13
|
+
# PowerShell 5.1 on Windows and PowerShell 7 on Linux share this transaction.
|
|
14
|
+
$isWindowsPlatform = [IO.Path]::DirectorySeparatorChar -eq '\'
|
|
15
|
+
$pathComparison = if ($isWindowsPlatform) { [StringComparison]::OrdinalIgnoreCase } else { [StringComparison]::Ordinal }
|
|
16
|
+
$pathComparer = if ($isWindowsPlatform) { [StringComparer]::OrdinalIgnoreCase } else { [StringComparer]::Ordinal }
|
|
13
17
|
|
|
14
18
|
$stage = 'request'
|
|
15
19
|
$createdCommit = $null
|
|
@@ -58,12 +62,12 @@ function Get-Sha256Hex([string]$Text) {
|
|
|
58
62
|
function Normalize-FullPath([string]$Path) {
|
|
59
63
|
$fullPath = [IO.Path]::GetFullPath($Path)
|
|
60
64
|
$pathRoot = [IO.Path]::GetPathRoot($fullPath)
|
|
61
|
-
if ($fullPath.Equals($pathRoot,
|
|
65
|
+
if ($fullPath.Equals($pathRoot, $pathComparison)) { return $pathRoot }
|
|
62
66
|
return $fullPath.TrimEnd([IO.Path]::DirectorySeparatorChar, [IO.Path]::AltDirectorySeparatorChar)
|
|
63
67
|
}
|
|
64
68
|
|
|
65
69
|
function Test-PathWithin([string]$Path, [string]$Root) {
|
|
66
|
-
if ($Path.Equals($Root,
|
|
70
|
+
if ($Path.Equals($Root, $pathComparison)) { return $true }
|
|
67
71
|
$prefix = $Root
|
|
68
72
|
if (
|
|
69
73
|
-not $prefix.EndsWith([IO.Path]::DirectorySeparatorChar) -and
|
|
@@ -71,7 +75,7 @@ function Test-PathWithin([string]$Path, [string]$Root) {
|
|
|
71
75
|
) {
|
|
72
76
|
$prefix += [IO.Path]::DirectorySeparatorChar
|
|
73
77
|
}
|
|
74
|
-
return $Path.StartsWith($prefix,
|
|
78
|
+
return $Path.StartsWith($prefix, $pathComparison)
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
function Get-NearestExistingDirectory([string]$Path) {
|
|
@@ -97,7 +101,7 @@ function Get-RepositoryRootInPathNamespace([string]$WorkingDirectory) {
|
|
|
97
101
|
}
|
|
98
102
|
|
|
99
103
|
function Convert-ToRepoPath([string]$FullPath, [string]$Root) {
|
|
100
|
-
if ($FullPath.Equals($Root,
|
|
104
|
+
if ($FullPath.Equals($Root, $pathComparison)) { return '' }
|
|
101
105
|
return $FullPath.Substring($Root.Length).TrimStart('\', '/').Replace('\', '/')
|
|
102
106
|
}
|
|
103
107
|
|
|
@@ -108,8 +112,8 @@ function Get-GitPaths([string]$WorkingDirectory, [string[]]$GitArgs) {
|
|
|
108
112
|
}
|
|
109
113
|
|
|
110
114
|
function Assert-ExactPathSet([string[]]$Actual, [string[]]$Expected, [string]$Label) {
|
|
111
|
-
$actualSet = [Collections.Generic.HashSet[string]]::new(
|
|
112
|
-
$expectedSet = [Collections.Generic.HashSet[string]]::new(
|
|
115
|
+
$actualSet = [Collections.Generic.HashSet[string]]::new($pathComparer)
|
|
116
|
+
$expectedSet = [Collections.Generic.HashSet[string]]::new($pathComparer)
|
|
113
117
|
foreach ($path in $Actual) { [void]$actualSet.Add($path) }
|
|
114
118
|
foreach ($path in $Expected) { [void]$expectedSet.Add($path) }
|
|
115
119
|
if (-not $actualSet.SetEquals($expectedSet)) {
|
|
@@ -129,7 +133,7 @@ try {
|
|
|
129
133
|
|
|
130
134
|
$stage = 'repository'
|
|
131
135
|
$resolvedFiles = @()
|
|
132
|
-
$seenFullPaths = [Collections.Generic.HashSet[string]]::new(
|
|
136
|
+
$seenFullPaths = [Collections.Generic.HashSet[string]]::new($pathComparer)
|
|
133
137
|
foreach ($inputFile in $inputFiles) {
|
|
134
138
|
if ($inputFile.IndexOfAny(@([char]0, [char]10, [char]13)) -ge 0) { throw 'File paths cannot contain NUL or newlines.' }
|
|
135
139
|
if ([IO.Path]::IsPathRooted($inputFile)) { throw "Absolute file path is not allowed: $inputFile" }
|
|
@@ -164,8 +168,8 @@ try {
|
|
|
164
168
|
$selectedRepoRoot = $targetRepoRoot
|
|
165
169
|
$selectedCommonDir = $targetCommonDir
|
|
166
170
|
} elseif (
|
|
167
|
-
-not $selectedRepoRoot.Equals($targetRepoRoot,
|
|
168
|
-
-not $selectedCommonDir.Equals($targetCommonDir,
|
|
171
|
+
-not $selectedRepoRoot.Equals($targetRepoRoot, $pathComparison) -or
|
|
172
|
+
-not $selectedCommonDir.Equals($targetCommonDir, $pathComparison)
|
|
169
173
|
) {
|
|
170
174
|
throw "Files belong to different repositories: $($file.Input)"
|
|
171
175
|
}
|
|
@@ -174,11 +178,11 @@ try {
|
|
|
174
178
|
$repoRoot = $selectedRepoRoot
|
|
175
179
|
$commonDir = $selectedCommonDir
|
|
176
180
|
if ($cwdRepoRoot) {
|
|
177
|
-
$targetsBelongToCwdRepository = $commonDir.Equals($cwdCommonDir,
|
|
181
|
+
$targetsBelongToCwdRepository = $commonDir.Equals($cwdCommonDir, $pathComparison)
|
|
178
182
|
if ($targetsBelongToCwdRepository) {
|
|
179
183
|
foreach ($file in $resolvedFiles) {
|
|
180
184
|
$parentPath = [IO.Path]::GetDirectoryName($file.FullPath)
|
|
181
|
-
$isDirectRepoRootChild = $parentPath -and $parentPath.Equals($cwdRepoRoot,
|
|
185
|
+
$isDirectRepoRootChild = $parentPath -and $parentPath.Equals($cwdRepoRoot, $pathComparison)
|
|
182
186
|
if (-not (Test-PathWithin -Path $file.FullPath -Root $cwd) -and -not $isDirectRepoRootChild) {
|
|
183
187
|
throw "File path escapes the session cwd: $($file.Input)"
|
|
184
188
|
}
|
|
@@ -195,10 +199,10 @@ try {
|
|
|
195
199
|
}
|
|
196
200
|
}
|
|
197
201
|
|
|
198
|
-
$seen = [Collections.Generic.HashSet[string]]::new(
|
|
202
|
+
$seen = [Collections.Generic.HashSet[string]]::new($pathComparer)
|
|
199
203
|
foreach ($file in $resolvedFiles) {
|
|
200
204
|
$repoPath = Convert-ToRepoPath -FullPath $file.FullPath -Root $repoRoot
|
|
201
|
-
if (-not $repoPath -or $repoPath -eq '.git' -or $repoPath.StartsWith('.git/',
|
|
205
|
+
if (-not $repoPath -or $repoPath -eq '.git' -or $repoPath.StartsWith('.git/', $pathComparison)) {
|
|
202
206
|
throw "Repository metadata or broad paths are not allowed: $($file.Input)"
|
|
203
207
|
}
|
|
204
208
|
if (-not $seen.Add($repoPath)) { throw "Duplicate file path: $($file.Input)" }
|
|
@@ -235,8 +239,9 @@ try {
|
|
|
235
239
|
$trackingConfigured = [bool]$configuredRemote -and [bool]$configuredUpstreamRef
|
|
236
240
|
|
|
237
241
|
$stage = 'lock'
|
|
238
|
-
$
|
|
239
|
-
$
|
|
242
|
+
$lockDirectory = if ($isWindowsPlatform) { $commonDir.ToLowerInvariant() } else { $commonDir }
|
|
243
|
+
$lockKey = Get-Sha256Hex ($lockDirectory + [char]0 + $remote + [char]0 + $upstreamRef)
|
|
244
|
+
$mutexName = if ($isWindowsPlatform) { "Global\OMP-GitFinalize-$lockKey" } else { "OMP-GitFinalize-$lockKey" }
|
|
240
245
|
$mutex = [Threading.Mutex]::new($false, $mutexName)
|
|
241
246
|
try {
|
|
242
247
|
$ownsMutex = $mutex.WaitOne([TimeSpan]::FromSeconds(120))
|
|
@@ -248,7 +253,7 @@ try {
|
|
|
248
253
|
$stage = 'locked-preflight'
|
|
249
254
|
$lockedCommonDir = Normalize-FullPath (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', '--path-format=absolute', '--git-common-dir')).Output
|
|
250
255
|
$lockedBranch = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', '--abbrev-ref', 'HEAD')).Output
|
|
251
|
-
if (-not $lockedCommonDir.Equals($commonDir,
|
|
256
|
+
if (-not $lockedCommonDir.Equals($commonDir, $pathComparison) -or $lockedBranch -cne $branch) {
|
|
252
257
|
throw 'Repository or branch changed while acquiring the finalizer lock.'
|
|
253
258
|
}
|
|
254
259
|
|
|
@@ -276,22 +281,53 @@ try {
|
|
|
276
281
|
$stagedByFinalizer = $true
|
|
277
282
|
[void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs (@('--literal-pathspecs', 'add', '-A', '--') + $repoPaths))
|
|
278
283
|
$cachedPaths = Get-GitPaths -WorkingDirectory $repoRoot -GitArgs @('-c', 'core.quotepath=false', 'diff', '--cached', '--no-renames', '--name-only')
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
$
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
$
|
|
286
|
-
$
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
284
|
+
# 이전 실행이 커밋은 만들고 push에서 실패했으면 요청 파일이 이미 깨끗하다. 그 파일이 아직 원격에 없는
|
|
285
|
+
# 커밋(upstream..HEAD, 원격 브랜치가 없으면 원격 추적 ref 어디에도 없는 HEAD 커밋)에 들어 있을 때만
|
|
286
|
+
# 그 커밋을 인정하고 새 커밋 없이 다시 보낸다.
|
|
287
|
+
$cachedPaths = @($cachedPaths)
|
|
288
|
+
$cachedSet = [Collections.Generic.HashSet[string]]::new($pathComparer)
|
|
289
|
+
foreach ($path in $cachedPaths) { [void]$cachedSet.Add($path) }
|
|
290
|
+
$alreadyCommitted = @($repoPaths | Where-Object { -not $cachedSet.Contains($_) })
|
|
291
|
+
$resumedPush = $false
|
|
292
|
+
if ($alreadyCommitted.Count -gt 0) {
|
|
293
|
+
if ($upstreamSha -eq $headSha) {
|
|
294
|
+
Assert-ExactPathSet -Actual $cachedPaths -Expected $repoPaths -Label 'Staged path set'
|
|
295
|
+
}
|
|
296
|
+
$pendingRange = if ($upstreamSha) { "${upstreamSha}..${headSha}" } else { "${headSha} not in refs/remotes/$remote" }
|
|
297
|
+
$pendingPaths = if ($upstreamSha) {
|
|
298
|
+
Get-GitPaths -WorkingDirectory $repoRoot -GitArgs @('-c', 'core.quotepath=false', 'diff', '--no-renames', '--name-only', $upstreamSha, $headSha)
|
|
299
|
+
} else {
|
|
300
|
+
Get-GitPaths -WorkingDirectory $repoRoot -GitArgs @('-c', 'core.quotepath=false', 'log', '--no-renames', '--format=', '--name-only', $headSha, '--not', "--remotes=$remote")
|
|
301
|
+
}
|
|
302
|
+
$pendingSet = [Collections.Generic.HashSet[string]]::new($pathComparer)
|
|
303
|
+
foreach ($path in $pendingPaths) { [void]$pendingSet.Add($path) }
|
|
304
|
+
$unpending = @($alreadyCommitted | Where-Object { -not $pendingSet.Contains($_) })
|
|
305
|
+
if ($unpending.Count -gt 0) {
|
|
306
|
+
throw "Staged path set mismatch. Unchanged paths are not in unpushed commits ${pendingRange}: $($unpending -join ', ')"
|
|
307
|
+
}
|
|
308
|
+
$resumedPush = $true
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
if ($cachedPaths.Count -gt 0) {
|
|
312
|
+
Assert-ExactPathSet -Actual $cachedPaths -Expected @($repoPaths | Where-Object { $cachedSet.Contains($_) }) -Label 'Staged path set'
|
|
313
|
+
$stage = 'commit'
|
|
314
|
+
$messageFile = [IO.Path]::GetTempFileName()
|
|
315
|
+
[IO.File]::WriteAllText($messageFile, $message + [Environment]::NewLine, [Text.UTF8Encoding]::new($false))
|
|
316
|
+
[void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('commit', '--file', $messageFile))
|
|
317
|
+
$createdCommit = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', 'HEAD')).Output
|
|
318
|
+
$stagedByFinalizer = $false
|
|
319
|
+
|
|
320
|
+
$stage = 'commit-verify'
|
|
321
|
+
$parentSha = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', "$createdCommit^" )).Output
|
|
322
|
+
if ($parentSha -ne $headSha) {
|
|
323
|
+
throw "Created commit parent does not match the captured HEAD. parent=$parentSha head=$headSha"
|
|
324
|
+
}
|
|
325
|
+
$committedPaths = Get-GitPaths -WorkingDirectory $repoRoot -GitArgs @('-c', 'core.quotepath=false', 'diff-tree', '--no-commit-id', '--no-renames', '--name-only', '-r', $createdCommit)
|
|
326
|
+
Assert-ExactPathSet -Actual $committedPaths -Expected $cachedPaths -Label 'Committed path set'
|
|
327
|
+
} else {
|
|
328
|
+
$stagedByFinalizer = $false
|
|
329
|
+
$createdCommit = $headSha
|
|
292
330
|
}
|
|
293
|
-
$committedPaths = Get-GitPaths -WorkingDirectory $repoRoot -GitArgs @('-c', 'core.quotepath=false', 'diff-tree', '--no-commit-id', '--no-renames', '--name-only', '-r', $createdCommit)
|
|
294
|
-
Assert-ExactPathSet -Actual $committedPaths -Expected $repoPaths -Label 'Committed path set'
|
|
295
331
|
|
|
296
332
|
$stage = 'push'
|
|
297
333
|
[void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('push', $remote, "${createdCommit}:${upstreamRef}"))
|
|
@@ -316,6 +352,7 @@ try {
|
|
|
316
352
|
commitSha = $createdCommit
|
|
317
353
|
remote = $remote
|
|
318
354
|
upstreamRef = $upstreamRef
|
|
355
|
+
resumedPush = $resumedPush
|
|
319
356
|
}
|
|
320
357
|
} catch {
|
|
321
358
|
$exitCode = 1
|
|
@@ -12,6 +12,7 @@ interface FinalizerResult {
|
|
|
12
12
|
commitSha?: string;
|
|
13
13
|
remote?: string;
|
|
14
14
|
upstreamRef?: string;
|
|
15
|
+
resumedPush?: boolean;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
const scriptPath = fileURLToPath(new URL("./finalizer.ps1", import.meta.url));
|
|
@@ -30,6 +31,7 @@ node files/source-build-helper.js verify-source ../.. files/source-integrity.jso
|
|
|
30
31
|
Then include Tools/CUELO_Setup/files/source-integrity.json in the same commit.`;
|
|
31
32
|
const memorySyncScript = "Tools/OMP_Global_Config/memory-sync/sync.ts";
|
|
32
33
|
const memoryTransport = "Tools/OMP_Global_Config/memory-sync/memories.jsonl";
|
|
34
|
+
const pathKey = (value: string) => process.platform === "win32" ? value.toLowerCase() : value;
|
|
33
35
|
|
|
34
36
|
type Exec = (command: string, args: string[], options: { cwd: string }) => Promise<{ code: number; stdout: string; stderr?: string }>;
|
|
35
37
|
|
|
@@ -54,7 +56,7 @@ async function exportMemories(cwd: string, files: string[], exec: Exec): Promise
|
|
|
54
56
|
if (!files.every(inRoot)) return {};
|
|
55
57
|
const transport = relative(cwd, join(root, ...memoryTransport.split("/"))).split(sep).join("/");
|
|
56
58
|
if (transport.startsWith("../")) return { note: "기억 export 생략: 현재 cwd 밖의 파일이라 이 커밋에 넣을 수 없다." };
|
|
57
|
-
if (files.some((file) => file.replace(/\\/g, "/")
|
|
59
|
+
if (files.some((file) => pathKey(file.replace(/\\/g, "/")) === pathKey(transport))) return {};
|
|
58
60
|
const exported = await exec("bun", [join(root, ...memorySyncScript.split("/")), "export", root], { cwd: root });
|
|
59
61
|
if (exported.code !== 0) {
|
|
60
62
|
const reason = (exported.stderr || exported.stdout).trim().split(/\r?\n/).at(-1) || `exit ${exported.code}`;
|
|
@@ -99,7 +101,7 @@ async function checkSourceManifest(
|
|
|
99
101
|
if (!path || path === ".." || path.startsWith("../")) return;
|
|
100
102
|
targets.push({ root, path });
|
|
101
103
|
}
|
|
102
|
-
if (!targets.length || targets.some(({ root }) => root
|
|
104
|
+
if (!targets.length || targets.some(({ root }) => pathKey(root) !== pathKey(targets[0].root))) return;
|
|
103
105
|
|
|
104
106
|
const root = targets[0].root;
|
|
105
107
|
try {
|
|
@@ -108,7 +110,7 @@ async function checkSourceManifest(
|
|
|
108
110
|
if ((error as NodeJS.ErrnoException).code === "ENOENT") return;
|
|
109
111
|
throw error;
|
|
110
112
|
}
|
|
111
|
-
if (targets.some(({ path }) => path
|
|
113
|
+
if (targets.some(({ path }) => pathKey(path) === pathKey(manifestPath))) return;
|
|
112
114
|
|
|
113
115
|
let packagedTools: string[] = [];
|
|
114
116
|
try {
|
|
@@ -165,7 +167,7 @@ const factory: CustomToolFactory = (pi) => ({
|
|
|
165
167
|
label: "Git Finalize",
|
|
166
168
|
loadMode: "essential",
|
|
167
169
|
description:
|
|
168
|
-
"Atomically finalize relative exact files in one repository. Resolve every target from its nearest existing parent. Treat matching git common-dir values as the same repository: restrict those targets to paths inside cwd or an exact direct child file of the cwd repository root, while allowing one distinct repository; reject mixed repositories before staging. Serialize by repository/upstream, verify exact paths and ancestry, commit, then push the created SHA. Main only.",
|
|
170
|
+
"Atomically finalize relative exact files in one repository. Resolve every target from its nearest existing parent. Treat matching git common-dir values as the same repository: restrict those targets to paths inside cwd or an exact direct child file of the cwd repository root, while allowing one distinct repository; reject mixed repositories before staging. Serialize by repository/upstream, verify exact paths and ancestry, commit, then push the created SHA. If an earlier run committed but its push failed, call again with the same files: unchanged files found in unpushed upstream..HEAD commits are accepted and HEAD is pushed without a new commit. Main only.",
|
|
169
171
|
parameters: pi.zod.object({
|
|
170
172
|
files: pi.zod.array(pi.zod.string()),
|
|
171
173
|
message: pi.zod.string(),
|
|
@@ -176,7 +178,6 @@ const factory: CustomToolFactory = (pi) => ({
|
|
|
176
178
|
const message = params.message.trim();
|
|
177
179
|
if (requested.length === 0) throw new Error("git_finalize requires at least one exact file path.");
|
|
178
180
|
if (!message) throw new Error("git_finalize requires a non-empty commit message.");
|
|
179
|
-
if (process.platform !== "win32") throw new Error("git_finalize currently requires Windows PowerShell.");
|
|
180
181
|
|
|
181
182
|
const exec: Exec = (command, args, options) => pi.exec(command, args, { ...options, signal });
|
|
182
183
|
await checkSourceManifest(pi.cwd, requested, exec);
|
|
@@ -193,7 +194,7 @@ const factory: CustomToolFactory = (pi) => ({
|
|
|
193
194
|
try {
|
|
194
195
|
await writeFile(requestPath, JSON.stringify({ cwd: pi.cwd, files, message }), "utf8");
|
|
195
196
|
const result = await pi.exec(
|
|
196
|
-
"powershell.exe",
|
|
197
|
+
process.platform === "win32" ? "powershell.exe" : "pwsh",
|
|
197
198
|
["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", scriptPath, "-Request", requestPath],
|
|
198
199
|
{ cwd: pi.cwd, signal, timeout: 180_000 },
|
|
199
200
|
);
|
|
@@ -207,6 +208,7 @@ const factory: CustomToolFactory = (pi) => ({
|
|
|
207
208
|
{
|
|
208
209
|
type: "text",
|
|
209
210
|
text: `Committed and pushed ${parsed.commitSha} to ${parsed.remote} ${parsed.upstreamRef}.`
|
|
211
|
+
+ (parsed.resumedPush ? " 이미 커밋돼 있던 미전송 커밋을 함께 다시 보냈다." : "")
|
|
210
212
|
+ (memory.file ? ` 기억 transport(${memory.file})를 함께 커밋했다.` : "")
|
|
211
213
|
+ (memory.note ? ` ${memory.note}` : ""),
|
|
212
214
|
},
|