cuelo 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +72 -0
- package/.next/build-manifest.json +20 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/export-marker.json +6 -0
- package/.next/images-manifest.json +68 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +138 -0
- package/.next/react-loadable-manifest.json +2370 -0
- package/.next/required-server-files.js +350 -0
- package/.next/required-server-files.json +350 -0
- package/.next/routes-manifest.json +537 -0
- package/.next/server/app/_global-error/page.js +32 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_global-error.html +1 -0
- package/.next/server/app/_global-error.meta +16 -0
- package/.next/server/app/_global-error.rsc +14 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/server/app/_not-found/page.js +2 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_not-found.html +1 -0
- package/.next/server/app/_not-found.meta +16 -0
- package/.next/server/app/_not-found.rsc +18 -0
- package/.next/server/app/_not-found.segments/_full.segment.rsc +18 -0
- package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
- package/.next/server/app/_not-found.segments/_index.segment.rsc +7 -0
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/api/agent/[id]/account/route.js +1 -0
- package/.next/server/app/api/agent/[id]/account/route.js.nft.json +1 -0
- package/.next/server/app/api/agent/[id]/account/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -0
- package/.next/server/app/api/agent/[id]/bash-output/route.js.nft.json +1 -0
- package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/[id]/events/route.js +3 -0
- package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -0
- package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/[id]/route.js +1 -0
- package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/new/route.js +1 -0
- package/.next/server/app/api/agent/new/route.js.nft.json +1 -0
- package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/running/route.js +1 -0
- package/.next/server/app/api/agent/running/route.js.nft.json +1 -0
- package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/all-providers/route.js +1 -0
- package/.next/server/app/api/auth/all-providers/route.js.nft.json +1 -0
- package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -0
- package/.next/server/app/api/auth/api-key/[provider]/route.js.nft.json +1 -0
- package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/login/[provider]/route.js +3 -0
- package/.next/server/app/api/auth/login/[provider]/route.js.nft.json +1 -0
- package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -0
- package/.next/server/app/api/auth/logout/[provider]/route.js.nft.json +1 -0
- package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/providers/route.js +1 -0
- package/.next/server/app/api/auth/providers/route.js.nft.json +1 -0
- package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cwd/browse/route.js +1 -0
- package/.next/server/app/api/cwd/browse/route.js.nft.json +1 -0
- package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cwd/validate/route.js +1 -0
- package/.next/server/app/api/cwd/validate/route.js.nft.json +1 -0
- package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/default-cwd/route.js +1 -0
- package/.next/server/app/api/default-cwd/route.js.nft.json +1 -0
- package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/display-settings/route.js +1 -0
- package/.next/server/app/api/display-settings/route.js.nft.json +1 -0
- package/.next/server/app/api/display-settings/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/document-text/route.js +4 -0
- package/.next/server/app/api/document-text/route.js.nft.json +1 -0
- package/.next/server/app/api/document-text/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/experiments/route.js +1 -0
- package/.next/server/app/api/experiments/route.js.nft.json +1 -0
- package/.next/server/app/api/experiments/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/file-index/route.js +1 -0
- package/.next/server/app/api/file-index/route.js.nft.json +1 -0
- package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/files/[...path]/route.js +49 -0
- package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -0
- package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/git/diff/route.js +6 -0
- package/.next/server/app/api/git/diff/route.js.nft.json +1 -0
- package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/git/status/route.js +6 -0
- package/.next/server/app/api/git/status/route.js.nft.json +1 -0
- package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/gpt6/handles/route.js +1 -0
- package/.next/server/app/api/gpt6/handles/route.js.nft.json +1 -0
- package/.next/server/app/api/gpt6/handles/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/gpt6/mcp/route.js +2 -0
- package/.next/server/app/api/gpt6/mcp/route.js.nft.json +1 -0
- package/.next/server/app/api/gpt6/mcp/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/gpt6/reply/route.js +1 -0
- package/.next/server/app/api/gpt6/reply/route.js.nft.json +1 -0
- package/.next/server/app/api/gpt6/reply/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/gpt6/token/route.js +1 -0
- package/.next/server/app/api/gpt6/token/route.js.nft.json +1 -0
- package/.next/server/app/api/gpt6/token/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/gpt6/web6-session/route.js +1 -0
- package/.next/server/app/api/gpt6/web6-session/route.js.nft.json +1 -0
- package/.next/server/app/api/gpt6/web6-session/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/home/route.js +1 -0
- package/.next/server/app/api/home/route.js.nft.json +1 -0
- package/.next/server/app/api/home/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/live/call/[callId]/route.js +1 -0
- package/.next/server/app/api/live/call/[callId]/route.js.nft.json +1 -0
- package/.next/server/app/api/live/call/[callId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/live/events/route.js +3 -0
- package/.next/server/app/api/live/events/route.js.nft.json +1 -0
- package/.next/server/app/api/live/events/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/live/offer/route.js +1 -0
- package/.next/server/app/api/live/offer/route.js.nft.json +1 -0
- package/.next/server/app/api/live/offer/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/live/voices/route.js +1 -0
- package/.next/server/app/api/live/voices/route.js.nft.json +1 -0
- package/.next/server/app/api/live/voices/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/route.js +2 -0
- package/.next/server/app/api/mcp/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/model-roles/route.js +1 -0
- package/.next/server/app/api/model-roles/route.js.nft.json +1 -0
- package/.next/server/app/api/model-roles/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/route.js +1 -0
- package/.next/server/app/api/models/route.js.nft.json +1 -0
- package/.next/server/app/api/models/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models-config/catalog/route.js +1 -0
- package/.next/server/app/api/models-config/catalog/route.js.nft.json +1 -0
- package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models-config/discover/route.js +1 -0
- package/.next/server/app/api/models-config/discover/route.js.nft.json +1 -0
- package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models-config/route.js +25 -0
- package/.next/server/app/api/models-config/route.js.nft.json +1 -0
- package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models-config/test/route.js +1 -0
- package/.next/server/app/api/models-config/test/route.js.nft.json +1 -0
- package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/plugins/route.js +1 -0
- package/.next/server/app/api/plugins/route.js.nft.json +1 -0
- package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/project-trust/route.js +1 -0
- package/.next/server/app/api/project-trust/route.js.nft.json +1 -0
- package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/projects/route.js +2 -0
- package/.next/server/app/api/projects/route.js.nft.json +1 -0
- package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/runs/[runId]/route.js +1 -0
- package/.next/server/app/api/runs/[runId]/route.js.nft.json +1 -0
- package/.next/server/app/api/runs/[runId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/runs/route.js +1 -0
- package/.next/server/app/api/runs/route.js.nft.json +1 -0
- package/.next/server/app/api/runs/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/auto-name/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/export/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/state/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/route.js +1 -0
- package/.next/server/app/api/sessions/route.js.nft.json +1 -0
- package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/settings/route.js +1 -0
- package/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/.next/server/app/api/settings/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -0
- package/.next/server/app/api/sidecars/[service]/[...path]/route.js.nft.json +1 -0
- package/.next/server/app/api/sidecars/[service]/[...path]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/check/route.js +1 -0
- package/.next/server/app/api/skills/check/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/install/route.js +2 -0
- package/.next/server/app/api/skills/install/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/route.js +6 -0
- package/.next/server/app/api/skills/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/search/route.js +1 -0
- package/.next/server/app/api/skills/search/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/update/route.js +1 -0
- package/.next/server/app/api/skills/update/route.js.nft.json +1 -0
- package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/theme/route.js +1 -0
- package/.next/server/app/api/theme/route.js.nft.json +1 -0
- package/.next/server/app/api/theme/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/update-maintenance/route.js +556 -0
- package/.next/server/app/api/update-maintenance/route.js.nft.json +1 -0
- package/.next/server/app/api/update-maintenance/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/updates/route.js +1 -0
- package/.next/server/app/api/updates/route.js.nft.json +1 -0
- package/.next/server/app/api/updates/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/web-access/recovery/route.js +1 -0
- package/.next/server/app/api/web-access/recovery/route.js.nft.json +1 -0
- package/.next/server/app/api/web-access/recovery/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/web-access/route.js +1 -0
- package/.next/server/app/api/web-access/route.js.nft.json +1 -0
- package/.next/server/app/api/web-access/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/web6/consults/route.js +1 -0
- package/.next/server/app/api/web6/consults/route.js.nft.json +1 -0
- package/.next/server/app/api/web6/consults/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/route.js +1 -0
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -0
- package/.next/server/app/favicon.ico/route.js +1 -0
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
- package/.next/server/app/favicon.ico.body +0 -0
- package/.next/server/app/favicon.ico.meta +1 -0
- package/.next/server/app/index.html +1 -0
- package/.next/server/app/index.meta +14 -0
- package/.next/server/app/index.rsc +20 -0
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/index.segments/_full.segment.rsc +20 -0
- package/.next/server/app/index.segments/_head.segment.rsc +6 -0
- package/.next/server/app/index.segments/_index.segment.rsc +7 -0
- package/.next/server/app/index.segments/_tree.segment.rsc +5 -0
- package/.next/server/app/manifest.webmanifest/route.js +16 -0
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -0
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -0
- package/.next/server/app/page.js +22 -0
- package/.next/server/app/page.js.nft.json +1 -0
- package/.next/server/app/page_client-reference-manifest.js +1 -0
- package/.next/server/app/recover/page.js +2 -0
- package/.next/server/app/recover/page.js.nft.json +1 -0
- package/.next/server/app/recover/page_client-reference-manifest.js +1 -0
- package/.next/server/app/recover.html +1 -0
- package/.next/server/app/recover.meta +15 -0
- package/.next/server/app/recover.rsc +23 -0
- package/.next/server/app/recover.segments/_full.segment.rsc +23 -0
- package/.next/server/app/recover.segments/_head.segment.rsc +6 -0
- package/.next/server/app/recover.segments/_index.segment.rsc +7 -0
- package/.next/server/app/recover.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +10 -0
- package/.next/server/app/recover.segments/recover.segment.rsc +5 -0
- package/.next/server/app-paths-manifest.json +72 -0
- package/.next/server/chunks/11.js +1 -0
- package/.next/server/chunks/1286.js +1 -0
- package/.next/server/chunks/1412.js +38 -0
- package/.next/server/chunks/1517.js +19 -0
- package/.next/server/chunks/1605.js +1 -0
- package/.next/server/chunks/169.js +1 -0
- package/.next/server/chunks/18.js +86 -0
- package/.next/server/chunks/1813.js +1 -0
- package/.next/server/chunks/2022.js +1 -0
- package/.next/server/chunks/2156.js +1 -0
- package/.next/server/chunks/2157.js +1 -0
- package/.next/server/chunks/2325.js +82 -0
- package/.next/server/chunks/2651.js +2 -0
- package/.next/server/chunks/2838.js +1 -0
- package/.next/server/chunks/2897.js +79 -0
- package/.next/server/chunks/2958.js +90 -0
- package/.next/server/chunks/319.js +45 -0
- package/.next/server/chunks/3227.js +1 -0
- package/.next/server/chunks/3229.js +2 -0
- package/.next/server/chunks/3266.js +1 -0
- package/.next/server/chunks/3379.js +1 -0
- package/.next/server/chunks/3428.js +32 -0
- package/.next/server/chunks/3479.js +1 -0
- package/.next/server/chunks/367.js +115 -0
- package/.next/server/chunks/3698.js +93 -0
- package/.next/server/chunks/3709.js +148 -0
- package/.next/server/chunks/3759.js +34 -0
- package/.next/server/chunks/4107.js +62 -0
- package/.next/server/chunks/4741.js +20 -0
- package/.next/server/chunks/4755.js +153 -0
- package/.next/server/chunks/5002.js +1 -0
- package/.next/server/chunks/5112.js +1 -0
- package/.next/server/chunks/5289.js +8 -0
- package/.next/server/chunks/5318.js +1 -0
- package/.next/server/chunks/5452.js +23 -0
- package/.next/server/chunks/5453.js +1 -0
- package/.next/server/chunks/5582.js +20 -0
- package/.next/server/chunks/5749.js +27 -0
- package/.next/server/chunks/5782.js +36 -0
- package/.next/server/chunks/6163.js +104 -0
- package/.next/server/chunks/6169.js +64 -0
- package/.next/server/chunks/6208.js +172 -0
- package/.next/server/chunks/6399.js +24 -0
- package/.next/server/chunks/6429.js +10 -0
- package/.next/server/chunks/6496.js +1 -0
- package/.next/server/chunks/6775.js +6 -0
- package/.next/server/chunks/6823.js +215 -0
- package/.next/server/chunks/6888.js +1 -0
- package/.next/server/chunks/7245.js +77 -0
- package/.next/server/chunks/7307.js +1 -0
- package/.next/server/chunks/7372.js +287 -0
- package/.next/server/chunks/7384.js +226 -0
- package/.next/server/chunks/7516.js +1 -0
- package/.next/server/chunks/7531.js +24 -0
- package/.next/server/chunks/7591.js +1 -0
- package/.next/server/chunks/7755.js +138 -0
- package/.next/server/chunks/7916.js +1 -0
- package/.next/server/chunks/8078.js +94 -0
- package/.next/server/chunks/8253.js +41 -0
- package/.next/server/chunks/8635.js +1 -0
- package/.next/server/chunks/8688.js +1 -0
- package/.next/server/chunks/877.js +1 -0
- package/.next/server/chunks/8872.js +1 -0
- package/.next/server/chunks/9006.js +1 -0
- package/.next/server/chunks/9018.js +1 -0
- package/.next/server/chunks/9047.js +1 -0
- package/.next/server/chunks/9108.js +1 -0
- package/.next/server/chunks/9280.js +256 -0
- package/.next/server/chunks/9419.js +1 -0
- package/.next/server/chunks/9430.js +1 -0
- package/.next/server/chunks/9586.js +1 -0
- package/.next/server/chunks/9775.js +1 -0
- package/.next/server/chunks/9910.js +1 -0
- package/.next/server/chunks/992.js +1 -0
- package/.next/server/chunks/9926.js +1 -0
- package/.next/server/functions-config-manifest.json +25 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/middleware.js +45 -0
- package/.next/server/middleware.js.nft.json +1 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +1 -0
- package/.next/server/pages/404.html +1 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages-manifest.json +4 -0
- package/.next/server/prefetch-hints.json +1 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-runtime.js +1 -0
- package/.next/static/MvC-CM1U-UMEzpaGIsCuQ/_buildManifest.js +1 -0
- package/.next/static/MvC-CM1U-UMEzpaGIsCuQ/_ssgManifest.js +1 -0
- package/.next/static/chunks/1213.e5c6e70a79b5f7e6.js +24 -0
- package/.next/static/chunks/1519.2f596e5f5af9ef57.js +62 -0
- package/.next/static/chunks/1966.b8f83f7ba376c962.js +1 -0
- package/.next/static/chunks/1974.885c9a133b86d8a4.js +32 -0
- package/.next/static/chunks/2280.6a7f540787704698.js +1 -0
- package/.next/static/chunks/2521.7f745f50d30076e7.js +77 -0
- package/.next/static/chunks/2585.4d6aa847c780c666.js +1 -0
- package/.next/static/chunks/2589.1aad68c09021b1ac.js +1 -0
- package/.next/static/chunks/2600.45ba17a0f756fc31.js +1 -0
- package/.next/static/chunks/2619.9aac8983f30c7c8a.js +1 -0
- package/.next/static/chunks/26d302b2.b77b53a34ca944aa.js +122 -0
- package/.next/static/chunks/2768.305914f7900745b6.js +1 -0
- package/.next/static/chunks/3016.406e568aa95ff867.js +1 -0
- package/.next/static/chunks/3022.972047558a20553a.js +172 -0
- package/.next/static/chunks/3064.3a2a1e7cd4fdca5f.js +1 -0
- package/.next/static/chunks/3174.03fbed7b7d7a8256.js +1 -0
- package/.next/static/chunks/3189.b048866768087750.js +1 -0
- package/.next/static/chunks/3217.1a053843c58b70b5.js +24 -0
- package/.next/static/chunks/3308.34ea31e24088c85f.js +74 -0
- package/.next/static/chunks/331.fc5d78e1e91daf43.js +1 -0
- package/.next/static/chunks/3510.5d4d1c79533e080c.js +1 -0
- package/.next/static/chunks/364.ce5400a9dd70b9dc.js +1 -0
- package/.next/static/chunks/370.57cfa27da8567918.js +1 -0
- package/.next/static/chunks/3789.c418b69121761983.js +1 -0
- package/.next/static/chunks/3794-1b03b52e3112452e.js +32 -0
- package/.next/static/chunks/3831.25ae62d10dccc27a.js +1 -0
- package/.next/static/chunks/3899.3f761f7e3a944e8c.js +1 -0
- package/.next/static/chunks/3a7aa434.93dbd20997cfd24f.js +82 -0
- package/.next/static/chunks/4020.3cc19c463c49f969.js +23 -0
- package/.next/static/chunks/4035.0acc428926d5c8dd.js +1 -0
- package/.next/static/chunks/405.0902e4f6eb7bd9a2.js +215 -0
- package/.next/static/chunks/4159.49ae537ff687bdc6.js +138 -0
- package/.next/static/chunks/4208.384b381ca2757643.js +287 -0
- package/.next/static/chunks/4263.ffa8d9bd8a0faaae.js +1 -0
- package/.next/static/chunks/4592.d0f37bc216b9d988.js +93 -0
- package/.next/static/chunks/4799.0dc7aa21bff2fd2a.js +1 -0
- package/.next/static/chunks/4bd1b696-e356ca5ba0218e27.js +1 -0
- package/.next/static/chunks/514.b804c51b26f5e126.js +1 -0
- package/.next/static/chunks/5270.28592864d38e881c.js +1 -0
- package/.next/static/chunks/52733464.3870f99cc446f9ff.js +1 -0
- package/.next/static/chunks/5312.4828d88ccc66f057.js +41 -0
- package/.next/static/chunks/5354.b559c717a607dc5c.js +1 -0
- package/.next/static/chunks/5413.1f8eeba1c502f3e9.js +34 -0
- package/.next/static/chunks/5448.d3972d9fb464b54f.js +38 -0
- package/.next/static/chunks/587.d52737d7288c11b4.js +1 -0
- package/.next/static/chunks/5909.9e37f7b495b11995.js +115 -0
- package/.next/static/chunks/5949.5504b3545fcc3d34.js +104 -0
- package/.next/static/chunks/6361.893d04ac34fa1b49.js +148 -0
- package/.next/static/chunks/6379-7da431a165ac5d41.js +7 -0
- package/.next/static/chunks/6774.8cd53427dbf32cac.js +86 -0
- package/.next/static/chunks/6968.b80277c724dbc96e.js +1 -0
- package/.next/static/chunks/7113.4b9e7ea870aa300a.js +8 -0
- package/.next/static/chunks/7236.55a9728d35f5b8a6.js +1 -0
- package/.next/static/chunks/7390.dde9b5bc2f6e24b8.js +1 -0
- package/.next/static/chunks/7806.a903780fcfa3a30e.js +1 -0
- package/.next/static/chunks/7997.be57e92e583fe635.js +1 -0
- package/.next/static/chunks/8216.64a72d4d35ea7be0.js +1 -0
- package/.next/static/chunks/830.5d5274d7ad1cb58e.js +1 -0
- package/.next/static/chunks/8378.fa91de3406f554c9.js +226 -0
- package/.next/static/chunks/8501.cd06aa1b0c7e1c6a.js +79 -0
- package/.next/static/chunks/8663.6ec5792fb4952e45.js +27 -0
- package/.next/static/chunks/872.96937e758ddce860.js +1 -0
- package/.next/static/chunks/8803.75bde095fe3613f5.js +1 -0
- package/.next/static/chunks/8863.72f5dbb820a0e4c3.js +1 -0
- package/.next/static/chunks/889.ff9934ce4324e448.js +90 -0
- package/.next/static/chunks/90542734.b88b1467ff8248c7.js +1 -0
- package/.next/static/chunks/9379.5bc9c9343ec5a16c.js +64 -0
- package/.next/static/chunks/9389.906fe7aa9cd6a170.js +1 -0
- package/.next/static/chunks/9472.8818ee52cfa931a4.js +94 -0
- package/.next/static/chunks/966.d6babbf8119162cc.js +1 -0
- package/.next/static/chunks/9884.839b23ae397c150e.js +36 -0
- package/.next/static/chunks/app/_global-error/page-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/_not-found/page-d3f2ac234e6fd3b6.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/account/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/display-settings/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/document-text/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/experiments/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/gpt6/handles/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/gpt6/mcp/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/gpt6/reply/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/gpt6/token/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/gpt6/web6-session/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/home/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/live/call/[callId]/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/live/events/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/live/offer/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/live/voices/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/models/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/projects/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/runs/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/settings/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/skills/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/theme/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/update-maintenance/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/updates/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/web-access/recovery/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/web-access/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/web6/consults/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/layout-95725ad1abf3cb75.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/app/page-26a4df181c1d562c.js +15 -0
- package/.next/static/chunks/app/recover/page-770a1de1ff4ded56.js +1 -0
- package/.next/static/chunks/c16f53c3-7916593d74747bde.js +1 -0
- package/.next/static/chunks/d3ac728e-7964f816a1ca64e5.js +1 -0
- package/.next/static/chunks/e413bedd.3a12a8cb02e28fdf.js +153 -0
- package/.next/static/chunks/ea233666.f00b64a7d99b4950.js +62 -0
- package/.next/static/chunks/framework-32a7466d5cae4a81.js +1 -0
- package/.next/static/chunks/main-50999e6ee5708e08.js +5 -0
- package/.next/static/chunks/main-app-0dc38ffe862cd588.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-070571d2fa580e7d.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-a9c51a9353807009.js +1 -0
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/.next/static/chunks/webpack-4094d78ef0b4c382.js +1 -0
- package/.next/static/css/2f46e0db0d4a3aed.css +1 -0
- package/.next/static/css/792a9d55c2fd2c0c.css +1 -0
- package/.next/static/css/92023589aa455863.css +1 -0
- package/.next/static/css/bb6b220f400250d8.css +1 -0
- package/.next/static/css/bc8f2da9192ea16d.css +1 -0
- package/.next/static/media/KaTeX_AMS-Regular.1608a09b.woff +0 -0
- package/.next/static/media/KaTeX_AMS-Regular.4aafdb68.ttf +0 -0
- package/.next/static/media/KaTeX_AMS-Regular.a79f1c31.woff2 +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Bold.b6770918.woff +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Bold.cce5b8ec.ttf +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Bold.ec17d132.woff2 +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Regular.07ef19e7.ttf +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Regular.55fac258.woff2 +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Regular.dad44a7f.woff +0 -0
- package/.next/static/media/KaTeX_Fraktur-Bold.9f256b85.woff +0 -0
- package/.next/static/media/KaTeX_Fraktur-Bold.b18f59e1.ttf +0 -0
- package/.next/static/media/KaTeX_Fraktur-Bold.d42a5579.woff2 +0 -0
- package/.next/static/media/KaTeX_Fraktur-Regular.7c187121.woff +0 -0
- package/.next/static/media/KaTeX_Fraktur-Regular.d3c882a6.woff2 +0 -0
- package/.next/static/media/KaTeX_Fraktur-Regular.ed38e79f.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Bold.b74a1a8b.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Bold.c3fb5ac2.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-Bold.d181c465.woff +0 -0
- package/.next/static/media/KaTeX_Main-BoldItalic.6f2bb1df.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-BoldItalic.70d8b0a5.ttf +0 -0
- package/.next/static/media/KaTeX_Main-BoldItalic.e3f82f9d.woff +0 -0
- package/.next/static/media/KaTeX_Main-Italic.47373d1e.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Italic.8916142b.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-Italic.9024d815.woff +0 -0
- package/.next/static/media/KaTeX_Main-Regular.0462f03b.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-Regular.7f51fe03.woff +0 -0
- package/.next/static/media/KaTeX_Main-Regular.b7f8fe9b.ttf +0 -0
- package/.next/static/media/KaTeX_Math-BoldItalic.572d331f.woff2 +0 -0
- package/.next/static/media/KaTeX_Math-BoldItalic.a879cf83.ttf +0 -0
- package/.next/static/media/KaTeX_Math-BoldItalic.f1035d8d.woff +0 -0
- package/.next/static/media/KaTeX_Math-Italic.5295ba48.woff +0 -0
- package/.next/static/media/KaTeX_Math-Italic.939bc644.ttf +0 -0
- package/.next/static/media/KaTeX_Math-Italic.f28c23ac.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Bold.8c5b5494.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Bold.94e1e8dc.ttf +0 -0
- package/.next/static/media/KaTeX_SansSerif-Bold.bf59d231.woff +0 -0
- package/.next/static/media/KaTeX_SansSerif-Italic.3b1e59b3.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Italic.7c9bc82b.woff +0 -0
- package/.next/static/media/KaTeX_SansSerif-Italic.b4c20c84.ttf +0 -0
- package/.next/static/media/KaTeX_SansSerif-Regular.74048478.woff +0 -0
- package/.next/static/media/KaTeX_SansSerif-Regular.ba21ed5f.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Regular.d4d7ba48.ttf +0 -0
- package/.next/static/media/KaTeX_Script-Regular.03e9641d.woff2 +0 -0
- package/.next/static/media/KaTeX_Script-Regular.07505710.woff +0 -0
- package/.next/static/media/KaTeX_Script-Regular.fe9cbbe1.ttf +0 -0
- package/.next/static/media/KaTeX_Size1-Regular.e1e279cb.woff +0 -0
- package/.next/static/media/KaTeX_Size1-Regular.eae34984.woff2 +0 -0
- package/.next/static/media/KaTeX_Size1-Regular.fabc004a.ttf +0 -0
- package/.next/static/media/KaTeX_Size2-Regular.57727022.woff +0 -0
- package/.next/static/media/KaTeX_Size2-Regular.5916a24f.woff2 +0 -0
- package/.next/static/media/KaTeX_Size2-Regular.d6b476ec.ttf +0 -0
- package/.next/static/media/KaTeX_Size3-Regular.9acaf01c.woff +0 -0
- package/.next/static/media/KaTeX_Size3-Regular.a144ef58.ttf +0 -0
- package/.next/static/media/KaTeX_Size3-Regular.b4230e7e.woff2 +0 -0
- package/.next/static/media/KaTeX_Size4-Regular.10d95fd3.woff2 +0 -0
- package/.next/static/media/KaTeX_Size4-Regular.7a996c9d.woff +0 -0
- package/.next/static/media/KaTeX_Size4-Regular.fbccdabe.ttf +0 -0
- package/.next/static/media/KaTeX_Typewriter-Regular.6258592b.woff +0 -0
- package/.next/static/media/KaTeX_Typewriter-Regular.a8709e36.woff2 +0 -0
- package/.next/static/media/KaTeX_Typewriter-Regular.d97aaf4a.ttf +0 -0
- package/.next/trace +8 -0
- package/.next/trace-build +1 -0
- package/.next/types/app/api/agent/[id]/account/route.ts +351 -0
- package/.next/types/app/api/agent/[id]/bash-output/route.ts +351 -0
- package/.next/types/app/api/agent/[id]/events/route.ts +351 -0
- package/.next/types/app/api/agent/[id]/route.ts +351 -0
- package/.next/types/app/api/agent/new/route.ts +351 -0
- package/.next/types/app/api/agent/running/route.ts +351 -0
- package/.next/types/app/api/auth/all-providers/route.ts +351 -0
- package/.next/types/app/api/auth/api-key/[provider]/route.ts +351 -0
- package/.next/types/app/api/auth/login/[provider]/route.ts +351 -0
- package/.next/types/app/api/auth/logout/[provider]/route.ts +351 -0
- package/.next/types/app/api/auth/providers/route.ts +351 -0
- package/.next/types/app/api/cwd/browse/route.ts +351 -0
- package/.next/types/app/api/cwd/validate/route.ts +351 -0
- package/.next/types/app/api/default-cwd/route.ts +351 -0
- package/.next/types/app/api/display-settings/route.ts +351 -0
- package/.next/types/app/api/document-text/route.ts +351 -0
- package/.next/types/app/api/experiments/route.ts +351 -0
- package/.next/types/app/api/file-index/route.ts +351 -0
- package/.next/types/app/api/files/[...path]/route.ts +351 -0
- package/.next/types/app/api/git/diff/route.ts +351 -0
- package/.next/types/app/api/git/status/route.ts +351 -0
- package/.next/types/app/api/gpt6/handles/route.ts +351 -0
- package/.next/types/app/api/gpt6/mcp/route.ts +351 -0
- package/.next/types/app/api/gpt6/reply/route.ts +351 -0
- package/.next/types/app/api/gpt6/token/route.ts +351 -0
- package/.next/types/app/api/gpt6/web6-session/route.ts +351 -0
- package/.next/types/app/api/home/route.ts +351 -0
- package/.next/types/app/api/live/call/[callId]/route.ts +351 -0
- package/.next/types/app/api/live/events/route.ts +351 -0
- package/.next/types/app/api/live/offer/route.ts +351 -0
- package/.next/types/app/api/live/voices/route.ts +351 -0
- package/.next/types/app/api/mcp/route.ts +351 -0
- package/.next/types/app/api/model-roles/route.ts +351 -0
- package/.next/types/app/api/models/route.ts +351 -0
- package/.next/types/app/api/models-config/catalog/route.ts +351 -0
- package/.next/types/app/api/models-config/discover/route.ts +351 -0
- package/.next/types/app/api/models-config/route.ts +351 -0
- package/.next/types/app/api/models-config/test/route.ts +351 -0
- package/.next/types/app/api/plugins/route.ts +351 -0
- package/.next/types/app/api/project-trust/route.ts +351 -0
- package/.next/types/app/api/projects/route.ts +351 -0
- package/.next/types/app/api/runs/[runId]/route.ts +351 -0
- package/.next/types/app/api/runs/route.ts +351 -0
- package/.next/types/app/api/sessions/[id]/auto-name/route.ts +351 -0
- package/.next/types/app/api/sessions/[id]/context/route.ts +351 -0
- package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +351 -0
- package/.next/types/app/api/sessions/[id]/export/route.ts +351 -0
- package/.next/types/app/api/sessions/[id]/route.ts +351 -0
- package/.next/types/app/api/sessions/[id]/state/route.ts +351 -0
- package/.next/types/app/api/sessions/route.ts +351 -0
- package/.next/types/app/api/settings/route.ts +351 -0
- package/.next/types/app/api/sidecars/[service]/[...path]/route.ts +351 -0
- package/.next/types/app/api/skills/check/route.ts +351 -0
- package/.next/types/app/api/skills/install/route.ts +351 -0
- package/.next/types/app/api/skills/route.ts +351 -0
- package/.next/types/app/api/skills/search/route.ts +351 -0
- package/.next/types/app/api/skills/update/route.ts +351 -0
- package/.next/types/app/api/theme/route.ts +351 -0
- package/.next/types/app/api/update-maintenance/route.ts +351 -0
- package/.next/types/app/api/updates/route.ts +351 -0
- package/.next/types/app/api/web-access/recovery/route.ts +351 -0
- package/.next/types/app/api/web-access/route.ts +351 -0
- package/.next/types/app/api/web6/consults/route.ts +351 -0
- package/.next/types/app/api/worktrees/route.ts +351 -0
- package/.next/types/app/layout.ts +87 -0
- package/.next/types/app/page.ts +87 -0
- package/.next/types/app/recover/page.ts +87 -0
- package/.next/types/cache-life.d.ts +145 -0
- package/.next/types/package.json +1 -0
- package/.next/types/routes.d.ts +137 -0
- package/.next/types/validator.ts +655 -0
- package/LICENSE +22 -0
- package/README.md +174 -0
- package/Tools/CUELO_Setup/files/btw-server.js +343 -0
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +349 -0
- package/Tools/CUELO_Setup/files/subagent-server.js +587 -0
- package/Tools/CUELO_Setup/files/usage-server.js +896 -0
- package/Tools/OMP_Global_Config/agent/AGENTS.md +122 -0
- package/Tools/OMP_Global_Config/agent/RULES.md +75 -0
- package/Tools/OMP_Global_Config/agent/WATCHDOG.md +55 -0
- package/Tools/OMP_Global_Config/agent/agents/maker.md +390 -0
- package/Tools/OMP_Global_Config/agent/extensions/character-voice.ts +718 -0
- package/Tools/OMP_Global_Config/agent/extensions/command-guard/index.ts +899 -0
- package/Tools/OMP_Global_Config/agent/extensions/command-guard/matcher.ts +1227 -0
- package/Tools/OMP_Global_Config/agent/extensions/command-guard/task-guard.ts +890 -0
- package/Tools/OMP_Global_Config/agent/extensions/jev-runtime.ts +1567 -0
- package/Tools/OMP_Global_Config/agent/extensions/lib/maker-routing.ts +1020 -0
- package/Tools/OMP_Global_Config/agent/extensions/lib/prepared-task.ts +204 -0
- package/Tools/OMP_Global_Config/agent/extensions/lib/routing-ledger.ts +289 -0
- package/Tools/OMP_Global_Config/agent/extensions/lib/task-progress.ts +492 -0
- package/Tools/OMP_Global_Config/agent/extensions/prompt-compact.ts +67 -0
- package/Tools/OMP_Global_Config/agent/extensions/steering-reply-gate.ts +92 -0
- package/Tools/OMP_Global_Config/agent/extensions/todo-nudge.ts +56 -0
- package/Tools/OMP_Global_Config/agent/extensions/turn-end-guard.ts +154 -0
- package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +125 -0
- package/Tools/OMP_Global_Config/agent/prompt-copies/RULES.en.md +28 -0
- package/Tools/OMP_Global_Config/agent/rules/docs-handoff.md +36 -0
- package/Tools/OMP_Global_Config/agent/rules/frontend.md +63 -0
- package/Tools/OMP_Global_Config/agent/rules/harness-policy.json +1080 -0
- package/Tools/OMP_Global_Config/agent/rules/legacy-encoding.md +21 -0
- package/Tools/OMP_Global_Config/agent/rules/meta-harness.md +45 -0
- package/Tools/OMP_Global_Config/agent/rules/omp-harness.md +143 -0
- package/Tools/OMP_Global_Config/agent/rules/subagent.md +543 -0
- package/Tools/OMP_Global_Config/agent/rules/task-guard.md +54 -0
- package/Tools/OMP_Global_Config/agent/rules/verdict.md +183 -0
- package/Tools/OMP_Global_Config/agent/rules/web6-consult.md +84 -0
- package/Tools/OMP_Global_Config/agent/sop/_common.md +130 -0
- package/Tools/OMP_Global_Config/agent/sop/_writer.md +242 -0
- package/Tools/OMP_Global_Config/agent/sop/maker.md +9 -0
- package/Tools/OMP_Global_Config/agent/tools/git-finalizer/finalizer.ps1 +340 -0
- package/Tools/OMP_Global_Config/agent/tools/git-finalizer/index.ts +83 -0
- package/Tools/OMP_Global_Config/notices/orchestrate.md +26 -0
- package/Tools/OMP_Global_Config/notices/ultrathink.md +9 -0
- package/Tools/OMP_Global_Config/notices/workflow.md +16 -0
- package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +5005 -0
- package/Tools/OMP_Global_Config/patches/apply-notices.mjs +135 -0
- package/bin/cuelo-options.js +38 -0
- package/bin/cuelo.js +268 -0
- package/bin/password-prompt.js +100 -0
- package/bin/prepare-runtime.js +81 -0
- package/bin/runtime.js +134 -0
- package/bin/web-auth-store.d.ts +104 -0
- package/bin/web-auth-store.js +593 -0
- package/install.mjs +393 -0
- package/next.config.ts +96 -0
- package/package.json +134 -0
- package/public/audio/completion/isana/01.wav +0 -0
- package/public/audio/completion/isana/02.wav +0 -0
- package/public/audio/completion/isana/03.wav +0 -0
- package/public/audio/completion/isana/04.wav +0 -0
- package/public/audio/completion/isana/05.wav +0 -0
- package/public/audio/completion/isana/06.wav +0 -0
- package/public/audio/completion/isana/approval/01.wav +0 -0
- package/public/audio/completion/isana/approval/02.wav +0 -0
- package/public/audio/completion/isana/approval/03.wav +0 -0
- package/public/audio/completion/isana/choice/01.wav +0 -0
- package/public/audio/completion/isana/choice/02.wav +0 -0
- package/public/audio/completion/isana/choice/03.wav +0 -0
- package/public/audio/completion/isana/failed/01.wav +0 -0
- package/public/audio/completion/isana/failed/02.wav +0 -0
- package/public/audio/completion/isana/failed/03.wav +0 -0
- package/public/audio/completion/isana/working/01.wav +0 -0
- package/public/audio/completion/isana/working/02.wav +0 -0
- package/public/audio/completion/isana/working/03.wav +0 -0
- package/public/audio/completion/mio/01.wav +0 -0
- package/public/audio/completion/mio/02.wav +0 -0
- package/public/audio/completion/mio/03.wav +0 -0
- package/public/audio/completion/mio/04.wav +0 -0
- package/public/audio/completion/mio/05.wav +0 -0
- package/public/audio/completion/mio/06.wav +0 -0
- package/public/audio/completion/mio/approval/01.wav +0 -0
- package/public/audio/completion/mio/approval/02.wav +0 -0
- package/public/audio/completion/mio/approval/03.wav +0 -0
- package/public/audio/completion/mio/choice/01.wav +0 -0
- package/public/audio/completion/mio/choice/02.wav +0 -0
- package/public/audio/completion/mio/choice/03.wav +0 -0
- package/public/audio/completion/mio/failed/01.wav +0 -0
- package/public/audio/completion/mio/failed/02.wav +0 -0
- package/public/audio/completion/mio/failed/03.wav +0 -0
- package/public/audio/completion/mio/working/01.wav +0 -0
- package/public/audio/completion/mio/working/02.wav +0 -0
- package/public/audio/completion/mio/working/03.wav +0 -0
- package/public/audio/completion/nova/01.wav +0 -0
- package/public/audio/completion/nova/02.wav +0 -0
- package/public/audio/completion/nova/03.wav +0 -0
- package/public/audio/completion/nova/04.wav +0 -0
- package/public/audio/completion/nova/05.wav +0 -0
- package/public/audio/completion/nova/06.wav +0 -0
- package/public/audio/completion/nova/approval/01.wav +0 -0
- package/public/audio/completion/nova/approval/02.wav +0 -0
- package/public/audio/completion/nova/approval/03.wav +0 -0
- package/public/audio/completion/nova/choice/01.wav +0 -0
- package/public/audio/completion/nova/choice/02.wav +0 -0
- package/public/audio/completion/nova/choice/03.wav +0 -0
- package/public/audio/completion/nova/failed/01.wav +0 -0
- package/public/audio/completion/nova/failed/02.wav +0 -0
- package/public/audio/completion/nova/failed/03.wav +0 -0
- package/public/audio/completion/nova/working/01.wav +0 -0
- package/public/audio/completion/nova/working/02.wav +0 -0
- package/public/audio/completion/nova/working/03.wav +0 -0
- package/public/audio/completion/rin/01.wav +0 -0
- package/public/audio/completion/rin/02.wav +0 -0
- package/public/audio/completion/rin/03.wav +0 -0
- package/public/audio/completion/rin/04.wav +0 -0
- package/public/audio/completion/rin/05.wav +0 -0
- package/public/audio/completion/rin/06.wav +0 -0
- package/public/audio/completion/rin/approval/01.wav +0 -0
- package/public/audio/completion/rin/approval/02.wav +0 -0
- package/public/audio/completion/rin/approval/03.wav +0 -0
- package/public/audio/completion/rin/choice/01.wav +0 -0
- package/public/audio/completion/rin/choice/02.wav +0 -0
- package/public/audio/completion/rin/choice/03.wav +0 -0
- package/public/audio/completion/rin/failed/01.wav +0 -0
- package/public/audio/completion/rin/failed/02.wav +0 -0
- package/public/audio/completion/rin/failed/03.wav +0 -0
- package/public/audio/completion/rin/working/01.wav +0 -0
- package/public/audio/completion/rin/working/02.wav +0 -0
- package/public/audio/completion/rin/working/03.wav +0 -0
- package/public/audio/completion/shion/01.wav +0 -0
- package/public/audio/completion/shion/02.wav +0 -0
- package/public/audio/completion/shion/03.wav +0 -0
- package/public/audio/completion/shion/04.wav +0 -0
- package/public/audio/completion/shion/05.wav +0 -0
- package/public/audio/completion/shion/06.wav +0 -0
- package/public/audio/completion/shion/approval/01.wav +0 -0
- package/public/audio/completion/shion/approval/02.wav +0 -0
- package/public/audio/completion/shion/approval/03.wav +0 -0
- package/public/audio/completion/shion/choice/01.wav +0 -0
- package/public/audio/completion/shion/choice/02.wav +0 -0
- package/public/audio/completion/shion/choice/03.wav +0 -0
- package/public/audio/completion/shion/failed/01.wav +0 -0
- package/public/audio/completion/shion/failed/02.wav +0 -0
- package/public/audio/completion/shion/failed/03.wav +0 -0
- package/public/audio/completion/shion/working/01.wav +0 -0
- package/public/audio/completion/shion/working/02.wav +0 -0
- package/public/audio/completion/shion/working/03.wav +0 -0
- package/public/audio/completion/voices.json +1195 -0
- package/public/audio/completion/yuki/01.wav +0 -0
- package/public/audio/completion/yuki/02.wav +0 -0
- package/public/audio/completion/yuki/03.wav +0 -0
- package/public/audio/completion/yuki/04.wav +0 -0
- package/public/audio/completion/yuki/05.wav +0 -0
- package/public/audio/completion/yuki/06.wav +0 -0
- package/public/audio/completion/yuki/approval/01.wav +0 -0
- package/public/audio/completion/yuki/approval/02.wav +0 -0
- package/public/audio/completion/yuki/approval/03.wav +0 -0
- package/public/audio/completion/yuki/choice/01.wav +0 -0
- package/public/audio/completion/yuki/choice/02.wav +0 -0
- package/public/audio/completion/yuki/choice/03.wav +0 -0
- package/public/audio/completion/yuki/failed/01.wav +0 -0
- package/public/audio/completion/yuki/failed/02.wav +0 -0
- package/public/audio/completion/yuki/failed/03.wav +0 -0
- package/public/audio/completion/yuki/working/01.wav +0 -0
- package/public/audio/completion/yuki/working/02.wav +0 -0
- package/public/audio/completion/yuki/working/03.wav +0 -0
- package/public/avatars/isana.webp +0 -0
- package/public/avatars/mio.webp +0 -0
- package/public/avatars/nova.webp +0 -0
- package/public/avatars/rin.webp +0 -0
- package/public/avatars/shion.webp +0 -0
- package/public/avatars/yuki.webp +0 -0
- package/public/icons/apple-touch-icon.png +0 -0
- package/public/icons/catppuccin/LICENSE +22 -0
- package/public/icons/catppuccin/README.md +8 -0
- package/public/icons/catppuccin/latte/_file.svg +3 -0
- package/public/icons/catppuccin/latte/_folder.svg +3 -0
- package/public/icons/catppuccin/latte/_folder_open.svg +3 -0
- package/public/icons/catppuccin/latte/bash.svg +7 -0
- package/public/icons/catppuccin/latte/bun-lock.svg +8 -0
- package/public/icons/catppuccin/latte/config.svg +3 -0
- package/public/icons/catppuccin/latte/css.svg +6 -0
- package/public/icons/catppuccin/latte/database.svg +3 -0
- package/public/icons/catppuccin/latte/docker.svg +3 -0
- package/public/icons/catppuccin/latte/env.svg +3 -0
- package/public/icons/catppuccin/latte/eslint.svg +6 -0
- package/public/icons/catppuccin/latte/git.svg +6 -0
- package/public/icons/catppuccin/latte/go.svg +3 -0
- package/public/icons/catppuccin/latte/graphql.svg +3 -0
- package/public/icons/catppuccin/latte/html.svg +6 -0
- package/public/icons/catppuccin/latte/javascript-react.svg +8 -0
- package/public/icons/catppuccin/latte/javascript.svg +6 -0
- package/public/icons/catppuccin/latte/json.svg +3 -0
- package/public/icons/catppuccin/latte/lock.svg +3 -0
- package/public/icons/catppuccin/latte/markdown.svg +3 -0
- package/public/icons/catppuccin/latte/ms-word.svg +6 -0
- package/public/icons/catppuccin/latte/next.svg +6 -0
- package/public/icons/catppuccin/latte/npm-lock.svg +7 -0
- package/public/icons/catppuccin/latte/pdf.svg +3 -0
- package/public/icons/catppuccin/latte/python.svg +8 -0
- package/public/icons/catppuccin/latte/rust.svg +6 -0
- package/public/icons/catppuccin/latte/sass.svg +3 -0
- package/public/icons/catppuccin/latte/terraform.svg +3 -0
- package/public/icons/catppuccin/latte/toml.svg +3 -0
- package/public/icons/catppuccin/latte/typescript-react.svg +8 -0
- package/public/icons/catppuccin/latte/typescript.svg +6 -0
- package/public/icons/catppuccin/latte/yaml.svg +3 -0
- package/public/icons/catppuccin/mocha/_file.svg +3 -0
- package/public/icons/catppuccin/mocha/_folder.svg +3 -0
- package/public/icons/catppuccin/mocha/_folder_open.svg +3 -0
- package/public/icons/catppuccin/mocha/bash.svg +7 -0
- package/public/icons/catppuccin/mocha/bun-lock.svg +8 -0
- package/public/icons/catppuccin/mocha/config.svg +3 -0
- package/public/icons/catppuccin/mocha/css.svg +6 -0
- package/public/icons/catppuccin/mocha/database.svg +3 -0
- package/public/icons/catppuccin/mocha/docker.svg +3 -0
- package/public/icons/catppuccin/mocha/env.svg +3 -0
- package/public/icons/catppuccin/mocha/eslint.svg +6 -0
- package/public/icons/catppuccin/mocha/git.svg +6 -0
- package/public/icons/catppuccin/mocha/go.svg +3 -0
- package/public/icons/catppuccin/mocha/graphql.svg +3 -0
- package/public/icons/catppuccin/mocha/html.svg +6 -0
- package/public/icons/catppuccin/mocha/javascript-react.svg +8 -0
- package/public/icons/catppuccin/mocha/javascript.svg +6 -0
- package/public/icons/catppuccin/mocha/json.svg +3 -0
- package/public/icons/catppuccin/mocha/lock.svg +3 -0
- package/public/icons/catppuccin/mocha/markdown.svg +3 -0
- package/public/icons/catppuccin/mocha/ms-word.svg +6 -0
- package/public/icons/catppuccin/mocha/next.svg +6 -0
- package/public/icons/catppuccin/mocha/npm-lock.svg +7 -0
- package/public/icons/catppuccin/mocha/pdf.svg +3 -0
- package/public/icons/catppuccin/mocha/python.svg +8 -0
- package/public/icons/catppuccin/mocha/rust.svg +6 -0
- package/public/icons/catppuccin/mocha/sass.svg +3 -0
- package/public/icons/catppuccin/mocha/terraform.svg +3 -0
- package/public/icons/catppuccin/mocha/toml.svg +3 -0
- package/public/icons/catppuccin/mocha/typescript-react.svg +8 -0
- package/public/icons/catppuccin/mocha/typescript.svg +6 -0
- package/public/icons/catppuccin/mocha/yaml.svg +3 -0
- package/public/icons/icon-192.png +0 -0
- package/public/icons/icon-512.png +0 -0
- package/public/offline.html +145 -0
- package/public/stickers/isana/approval/01.webp +0 -0
- package/public/stickers/isana/approval/02.webp +0 -0
- package/public/stickers/isana/approval/03.webp +0 -0
- package/public/stickers/isana/choice/01.webp +0 -0
- package/public/stickers/isana/choice/02.webp +0 -0
- package/public/stickers/isana/choice/03.webp +0 -0
- package/public/stickers/isana/done/01.webp +0 -0
- package/public/stickers/isana/done/02.webp +0 -0
- package/public/stickers/isana/done/03.webp +0 -0
- package/public/stickers/isana/failed/01.webp +0 -0
- package/public/stickers/isana/failed/02.webp +0 -0
- package/public/stickers/isana/failed/03.webp +0 -0
- package/public/stickers/isana/working/01.webp +0 -0
- package/public/stickers/mio/approval/01.webp +0 -0
- package/public/stickers/mio/approval/02.webp +0 -0
- package/public/stickers/mio/approval/03.webp +0 -0
- package/public/stickers/mio/choice/01.webp +0 -0
- package/public/stickers/mio/choice/02.webp +0 -0
- package/public/stickers/mio/choice/03.webp +0 -0
- package/public/stickers/mio/done/01.webp +0 -0
- package/public/stickers/mio/done/02.webp +0 -0
- package/public/stickers/mio/done/03.webp +0 -0
- package/public/stickers/mio/failed/01.webp +0 -0
- package/public/stickers/mio/failed/02.webp +0 -0
- package/public/stickers/mio/failed/03.webp +0 -0
- package/public/stickers/mio/working/01.webp +0 -0
- package/public/stickers/nova/approval/01.webp +0 -0
- package/public/stickers/nova/approval/02.webp +0 -0
- package/public/stickers/nova/approval/03.webp +0 -0
- package/public/stickers/nova/choice/01.webp +0 -0
- package/public/stickers/nova/choice/02.webp +0 -0
- package/public/stickers/nova/choice/03.webp +0 -0
- package/public/stickers/nova/done/01.webp +0 -0
- package/public/stickers/nova/done/02.webp +0 -0
- package/public/stickers/nova/done/03.webp +0 -0
- package/public/stickers/nova/failed/01.webp +0 -0
- package/public/stickers/nova/failed/02.webp +0 -0
- package/public/stickers/nova/failed/03.webp +0 -0
- package/public/stickers/nova/working/01.webp +0 -0
- package/public/stickers/rin/approval/01.webp +0 -0
- package/public/stickers/rin/approval/02.webp +0 -0
- package/public/stickers/rin/approval/03.webp +0 -0
- package/public/stickers/rin/choice/01.webp +0 -0
- package/public/stickers/rin/choice/02.webp +0 -0
- package/public/stickers/rin/choice/03.webp +0 -0
- package/public/stickers/rin/done/01.webp +0 -0
- package/public/stickers/rin/done/02.webp +0 -0
- package/public/stickers/rin/done/03.webp +0 -0
- package/public/stickers/rin/failed/01.webp +0 -0
- package/public/stickers/rin/failed/02.webp +0 -0
- package/public/stickers/rin/failed/03.webp +0 -0
- package/public/stickers/rin/working/01.webp +0 -0
- package/public/stickers/shion/approval/01.webp +0 -0
- package/public/stickers/shion/approval/02.webp +0 -0
- package/public/stickers/shion/approval/03.webp +0 -0
- package/public/stickers/shion/choice/01.webp +0 -0
- package/public/stickers/shion/choice/02.webp +0 -0
- package/public/stickers/shion/choice/03.webp +0 -0
- package/public/stickers/shion/done/01.webp +0 -0
- package/public/stickers/shion/done/02.webp +0 -0
- package/public/stickers/shion/done/03.webp +0 -0
- package/public/stickers/shion/failed/01.webp +0 -0
- package/public/stickers/shion/failed/02.webp +0 -0
- package/public/stickers/shion/failed/03.webp +0 -0
- package/public/stickers/shion/working/01.webp +0 -0
- package/public/stickers/yuki/approval/01.webp +0 -0
- package/public/stickers/yuki/approval/02.webp +0 -0
- package/public/stickers/yuki/approval/03.webp +0 -0
- package/public/stickers/yuki/choice/01.webp +0 -0
- package/public/stickers/yuki/choice/02.webp +0 -0
- package/public/stickers/yuki/choice/03.webp +0 -0
- package/public/stickers/yuki/done/01.webp +0 -0
- package/public/stickers/yuki/done/02.webp +0 -0
- package/public/stickers/yuki/done/03.webp +0 -0
- package/public/stickers/yuki/failed/01.webp +0 -0
- package/public/stickers/yuki/failed/02.webp +0 -0
- package/public/stickers/yuki/failed/03.webp +0 -0
- package/public/stickers/yuki/working/01.webp +0 -0
- package/public/sw.js +124 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
## Maker Contract
|
|
2
|
+
|
|
3
|
+
- Inspect existing implementations and callers before editing; reuse established patterns. When a
|
|
4
|
+
language server serves the file, `lsp` is the way you find definitions, references, and
|
|
5
|
+
implementations and the way you rename a symbol across files; text search plus hand edits drops
|
|
6
|
+
callsites it cannot see. Fall back to `grep`/`glob` when no server answers for that language.
|
|
7
|
+
- Prefer `ast_grep` and `ast_edit` over text hacks for structural code search and edits. Use
|
|
8
|
+
`debug` only to inspect runtime state and breakpoints in the program named by the brief. Attaching
|
|
9
|
+
outside the brief boundary, to production or external processes, or invoking `write_memory` is
|
|
10
|
+
allowed only when the brief names the exact target and action and applicable user approval exists.
|
|
11
|
+
- Use `web_search` to discover current external information, then use `read` on the primary source.
|
|
12
|
+
- Use `todo` only when the work has three or more steps. If you invoke `checkpoint`, invoke the
|
|
13
|
+
runtime-paired `rewind` before yielding.
|
|
14
|
+
- In that same first investigation, cross-check the brief itself: does changing the assigned
|
|
15
|
+
location actually move the user's acceptance condition? Confirm the real execution path between
|
|
16
|
+
the cause and the observed surface inside your boundary. When it matches, continue and do not
|
|
17
|
+
ask Main to confirm. Only when evidence contradicts the brief, report the differing assumption,
|
|
18
|
+
the evidence behind it, and the scope adjustment you need, then follow Main's decision. Being
|
|
19
|
+
unverified is never by itself a reason to stop. `agent/rules/harness-policy.json`
|
|
20
|
+
`routing.dispatchAssumptionCheck` is authoritative.
|
|
21
|
+
- Implement the complete requested behavior with the smallest maintainable change.
|
|
22
|
+
- Add or update tests only when the changed observable contract requires them.
|
|
23
|
+
- Run a pre-change baseline command only when you need it to tell an existing failure apart from
|
|
24
|
+
a new one, or to reproduce the regression you are fixing. When reliable failure evidence for
|
|
25
|
+
the target scope already exists, reuse it instead of rerunning. When the brief authorizes no
|
|
26
|
+
commands, record from the available evidence what is already failing.
|
|
27
|
+
- After the change, run the checks the change actually needs, because
|
|
28
|
+
`implementationOwnership.writerValidation` fixes the end condition per change kind: a docs,
|
|
29
|
+
comment, or non-behavioral description change closes on a diff or format check; screen text
|
|
30
|
+
first decides whether layout or accessibility is affected instead of being treated as equal to
|
|
31
|
+
docs; local logic starts from a focused behavior check; and build config, server connection,
|
|
32
|
+
session, auth, or data meaning follow their actual impact, where a small diff never skips a
|
|
33
|
+
required check. That means the focused build, test, lint, or type-check over the paths you
|
|
34
|
+
changed plus the browser, native, or CLI smoke that proves the surface you changed actually
|
|
35
|
+
behaves, using `eval` for browser observation and a `bash` service (`name` set) for processes that
|
|
36
|
+
must stay up. Give that service a name unique to your session - core 18.3.0 stops and replaces a
|
|
37
|
+
live service of the same name regardless of who started it - read it with `read proc://<name>`
|
|
38
|
+
and stop it with `write proc://<name>/kill`. Reuse
|
|
39
|
+
a suitable same-revision build, server, or result first and redo only what a rework invalidated;
|
|
40
|
+
an isolated server and a full production build are never the default. Build no separate
|
|
41
|
+
environment for these checks: `implementationOwnership.writerValidation` puts the common isolation
|
|
42
|
+
environment and any needed full build, integration, or acceptance check with Main, so request or
|
|
43
|
+
reuse that artifact instead of producing your own, and never close a change with no check at all.
|
|
44
|
+
Never hand this validation
|
|
45
|
+
to someone else and never invent a validator handoff. A later failure must be classifiable as
|
|
46
|
+
pre-existing or newly introduced.
|
|
47
|
+
- An explicit command prohibition in the brief and your role's tool limits win over this
|
|
48
|
+
validation duty. When a check is prohibited, unavailable, or blocked, name the exact command a
|
|
49
|
+
later authorized pass must run.
|
|
50
|
+
|
|
51
|
+
## Writer Rules
|
|
52
|
+
|
|
53
|
+
- You own the assigned problem end to end inside the brief's allowed boundary: edit it there,
|
|
54
|
+
rework your own failures in one pass, and never pause between steps to ask Main for
|
|
55
|
+
permission or fresh input. Never hand back a list of files for someone else to change. Changes
|
|
56
|
+
unrelated to the direct cause, to the regression your change could introduce, or to the
|
|
57
|
+
original acceptance criteria stay out.
|
|
58
|
+
- Compare the result against the acceptance criteria, and check the callers, error paths, and
|
|
59
|
+
boundary values that the change actually depends on. Defects you find inside the boundary are
|
|
60
|
+
yours to fix and verify before you return — this is not a mandate to audit the whole project.
|
|
61
|
+
- Answer every finding that names your change with the fix you made and the raw output of the check
|
|
62
|
+
that now covers it, keeping the same finding id — no separate messenger or new reporting stage.
|
|
63
|
+
Never weaken an expectation, relax a fixture, or hide a failure to make validation pass.
|
|
64
|
+
- 관련 Skill을 먼저 읽고 이번 조치에 적용되는 주의사항만 이름·절/locator·위험 요약으로 추린다.
|
|
65
|
+
첫 예상 밖 실패 뒤 재시도 경계에서 런타임이 실패 도구·오류 분류·입력 변경·사이 도구 호출이라는
|
|
66
|
+
관측 사실만으로 이미 advisory를 낸다. 그것을 읽고 런타임이 관측하지 못하는 것 — Skill 충돌·적용
|
|
67
|
+
불가, 승인 필요, 관측 불가 판단 — 만 보충한다. 같은 관측 질문을 다시 batched `judge()`로
|
|
68
|
+
호출하지 않는다.
|
|
69
|
+
Skill 원문·소스·로그·비밀은 보내지 않는다. 단순 보충·새 근거 없는 동일 질문은 반복하지 않는다.
|
|
70
|
+
검증 약화나 Skill 충돌·적용 불가가 나오면 문제 된 조치만 보류하고 기존 blocker/조향 DM으로
|
|
71
|
+
원문 오류 locator·Skill locator·제안 조치·보존할 수용 조건을 Main에 보낸다. 독립 작업은 계속한다.
|
|
72
|
+
Jev는 통지할 위험을 찾는 보조 수단이며 검사 생략 승인자가 아니다. 필수 검사 비활성화·기대치
|
|
73
|
+
완화는 Jev가 안전하다고 하거나 응답하지 못해도 Main의 사전 판단 없이 실행하지 않는다.
|
|
74
|
+
환경 오류는 생성물 위치의 모듈 해석·경로·런타임 같은 가벼운 확인으로 먼저 좁힌 뒤 무거운 검사를
|
|
75
|
+
다시 실행한다. `routing.typedJudgmentRouting`의 기존 placement와 통신 경계를 유지한다.
|
|
76
|
+
- Capture original source, contracts, impact-bearing caller locators, and before/after evidence
|
|
77
|
+
during implementation for the review packet. Hand the confirmed delta and that evidence to Main,
|
|
78
|
+
who owns the mid-flight and final review and assembles it with your command evidence without
|
|
79
|
+
repeating your investigation. A terminal delta rides the yield - never send a second DM for it.
|
|
80
|
+
A delta you keep working past gets exactly one `write agent://Main` message per frozen revision: revision id, changed
|
|
81
|
+
paths, validation state with the owner of each pending check, and evidence locators - never a diff
|
|
82
|
+
body, raw output, or per-step progress. Carry them in the existing yield/outputSchema/artifacts
|
|
83
|
+
as revision, changed_paths, behavior_change, validation, evidence_locators, unresolved,
|
|
84
|
+
risk_changes; no new engine. `mainLane.workerReview.deliveryGuarantee` is authoritative.
|
|
85
|
+
- Before your first edit in a slice, send exactly one `write agent://Main` message as the pre-edit steering
|
|
86
|
+
checkpoint, carrying five items: the location locator; the invariants to preserve as a locator
|
|
87
|
+
plus the enumerated list; the behaviour change in one line; the check command you plan to
|
|
88
|
+
run; and one line naming the choice you are most likely to have got wrong. This is required
|
|
89
|
+
when the changed code matches `routing.high-risk.materialRiskDefinition.codeNatureTriggers`,
|
|
90
|
+
when the slice has integration risk, or when its target or contract assumption remains unresolved.
|
|
91
|
+
Model identity and effort never decide this duty. A clear, location-pinned small change without
|
|
92
|
+
these risks, or a documentation-only change, needs no checkpoint. Write each item under the label the
|
|
93
|
+
analyzer recognizes, because a label it cannot read makes the whole DM invalid. Five lines in the
|
|
94
|
+
DM body, never inside a code fence (a fenced body is rejected as an inline raw body):
|
|
95
|
+
|
|
96
|
+
- `위치: src/plc.ts:42-58`
|
|
97
|
+
- `불변식:` with one or more items on their own following lines, each starting with `-`, `*`,
|
|
98
|
+
`•`, `1.` or `1)` — for example `- keep the existing timeout constant`
|
|
99
|
+
- `동작 변화: linear reconnect backoff instead of exponential`
|
|
100
|
+
- `검사 명령: node --test tests/reconnect.test.mjs`
|
|
101
|
+
- `틀릴 것 같은 지점: 재연결 핸들러가 아니라 송신 루프를 고르는 것`
|
|
102
|
+
|
|
103
|
+
Labels: `위치:` or `LOCATION:` (an `artifact://`, `agent://` or `local://` url, or a file path
|
|
104
|
+
with a selector such as `src/plc.ts:42-58`); `불변식:` or `INVARIANTS:`; `동작 변화:` or `동작:` or
|
|
105
|
+
`BEHAVIOUR CHANGE:` or `BEHAVIOR:`; `검사 명령:` or `검사:` or `CHECK COMMAND:` or `CHECK:`;
|
|
106
|
+
`틀릴 것 같은 지점:` or `SELF-DOUBT:`.
|
|
107
|
+
Main answers in one line - approved, retarget, or scope - and that reply arrives in your session as
|
|
108
|
+
an injected message; you have no `wait`, so the checkpoint never blocks the session. Never send a
|
|
109
|
+
diff body, raw output, file contents, or a second message per edit step. Only trigger code is held
|
|
110
|
+
for that reply: keep doing read-only investigation and the non-trigger work in the same slice.
|
|
111
|
+
When independent work runs out before the reply arrives, say in prose that you are holding for the
|
|
112
|
+
checkpoint reply and end the turn; Main's message wakes you in a new turn. No reply is never
|
|
113
|
+
approval - there is no implicit or time-based approval, and trigger edits proceed only on Main's
|
|
114
|
+
explicit reply. Main retains the
|
|
115
|
+
approved location and invariants for the final drift check, so a revision that edited trigger
|
|
116
|
+
code without an approved checkpoint cannot be closed. This checkpoint is the first contact point
|
|
117
|
+
of review, not a separate gate: the final judgement covers only deltas not yet reviewed and the
|
|
118
|
+
drift check, so a scope Main approved here is never re-explained from scratch at the end.
|
|
119
|
+
`mainLane.workerReview.steeringCheckpoint` (with `composition` and `finalScope`) and
|
|
120
|
+
`routing.high-risk.mainIntervention.preEditContract` are authoritative.
|
|
121
|
+
- Report `validation` as an acceptance-condition map, not only a per-file or per-command result:
|
|
122
|
+
for each acceptance condition in the brief give `met` with the observed behavior and the raw
|
|
123
|
+
log or screen evidence locator, or `unverified` with the blocker and the check still needed,
|
|
124
|
+
plus the revision it covers. Point at evidence that already exists; never re-copy the same log,
|
|
125
|
+
rerun a check that already passed, or invent a new report format.
|
|
126
|
+
`routing.reviewPacket.acceptanceEvidenceMap` is authoritative.
|
|
127
|
+
- Leave your own record in the project's existing `doc/history/YYYY/MM/DD-주제/maker-<name>.md`: what you
|
|
128
|
+
changed, the validation commands with cwd and exit codes, shareable evidence locators, and what stays
|
|
129
|
+
unverified. Start it, right after the title, with the search header the map greps for:
|
|
130
|
+
`RECORD:` / `DATE:` / `SCOPE:` (topic keywords) / `PATHS:` (the paths this record covers) / `STATUS:`
|
|
131
|
+
(`accepted` | `pending-user-device-check` | `partial` | `superseded-by <path>`). The header is a
|
|
132
|
+
lookup key, not the report — the body still carries the judgement, evidence, and open boundaries.
|
|
133
|
+
If a project has another documented root, follow that project's map instead of inventing
|
|
134
|
+
a new one. Main puts that record and its `evidence/` path inside `OWNED_PATHS` at dispatch, so write
|
|
135
|
+
only your own file — never Main's `main.md`, never another Maker's record, and never the shared
|
|
136
|
+
`doc/README.md` map unless Main explicitly assigns it to you. Main or one designated owner updates
|
|
137
|
+
that shared map; report only the necessary link target (path, topic, revision). Put long diffs and logs in that work folder's
|
|
138
|
+
`evidence/` and link them instead of pasting them, and keep secrets, raw conversation text, and auth
|
|
139
|
+
databases out.
|
|
140
|
+
When you need prior context, look it up in the fixed order — `HANDOFF.md`, then the `doc/README.md`
|
|
141
|
+
map, then a `grep` over record headers (`SCOPE`/`PATHS`) newest first, then only the matched
|
|
142
|
+
sections by line range. Nothing indexes or embeds these files, and `doc/history` is not long-term
|
|
143
|
+
memory. Use the locators Main already put in the brief before searching again, and do not add a
|
|
144
|
+
judge call, index, or wiki for document lookup.
|
|
145
|
+
`agent/AGENTS.md` 「프로젝트 문서 지도와 기록」 is authoritative.
|
|
146
|
+
- Verify web surfaces in HEADLESS Chromium (`app.relay: false`). Localhost, isolated verification
|
|
147
|
+
servers, and build output all qualify — that is nearly every check you run. `browser.relay: true`
|
|
148
|
+
is the profile default, so OMITTING `app.relay: false` opens a tab in the USER'S OWN browser; a
|
|
149
|
+
maker once exposed a server whose every stylesheet failed to parse and the user stared at the
|
|
150
|
+
build error. Never put a broken intermediate state on the user's screen. Use the user's browser
|
|
151
|
+
only when their live session is genuinely required, or when Main tells you to hand a FINISHED
|
|
152
|
+
surface over for judgement — do not open it on your own initiative.
|
|
153
|
+
- Run surface checks in the environment Main provides. Creating a new common isolation environment
|
|
154
|
+
or running a full build is Main's by default; do it yourself only when Main explicitly delegated
|
|
155
|
+
that run to you in the brief. When you do launch a server (delegated, or no environment exists
|
|
156
|
+
and your slice needs one), start it from the project's own `package.json` script, changing only
|
|
157
|
+
the port. Hand-reassembling the command drops bundler or runtime flags and breaks the whole
|
|
158
|
+
dependency graph. When an existing environment already reflects your revision, confirm its
|
|
159
|
+
revision, input, and config and reuse it instead of starting a new server — an old operational
|
|
160
|
+
screen is never verification of the changed revision, and shared output, port, or database
|
|
161
|
+
conflicts must not be created. If a new server is genuinely needed and the dev pipeline cannot
|
|
162
|
+
serve the tree, use the supported production path. A `ready` process and an HTTP 200 are NOT
|
|
163
|
+
screen verification: a process can report `ready` while every stylesheet fails to parse. Only a
|
|
164
|
+
rendered page and a clean console count as evidence.
|
|
165
|
+
- Some verification only a human can do. Do not imitate it: build the runnable state and own
|
|
166
|
+
everything text-observable (console errors, DOM presence, HTTP status, exit codes), then hand the
|
|
167
|
+
judgement over. When the user can see the same surface directly - a relay work page in the user's
|
|
168
|
+
own browser - the user's own observation is preferred for aesthetics or layout feel, real
|
|
169
|
+
equipment behaviour, and login or permission gated external connections; screenshot it yourself
|
|
170
|
+
only when the user is absent or the check must be repeated as a regression. Hand over in at most
|
|
171
|
+
three lines: what to open, what order to click, the pass criterion. Never idle waiting for the
|
|
172
|
+
user - continue other allowed work and carry the item as pending, and report unverified items as
|
|
173
|
+
pending user observation, never as passed.
|
|
174
|
+
`implementationOwnership.writerValidation.userObservation` is authoritative.
|
|
175
|
+
- Real equipment, real IO, or real production data: finish all code, build, and text-observable
|
|
176
|
+
validation first, then submit the handoff packet - what to power on, in what order, what appears
|
|
177
|
+
when correct, what means stop immediately (safety), and how to revert. Report the item with
|
|
178
|
+
`state: pending-user-device-check`, explicitly not passed. The user's observation is ground truth
|
|
179
|
+
and closes it, never re-verified by you; a failure report comes back as a finding on the owning
|
|
180
|
+
slice, never a fresh investigation. Never live-promote a trigger-code change before that check.
|
|
181
|
+
`implementationOwnership.writerValidation.deviceVerificationHandoff` is authoritative.
|
|
182
|
+
- Treat edits that must preserve an existing CP949/BOM encoding as HIGH-RISK compatibility
|
|
183
|
+
work. The brief must assign that risk explicitly, and your report must include byte/decoding
|
|
184
|
+
evidence for Main's review.
|
|
185
|
+
- Legacy sources (`.vb`, `.frm`, `.bas`, `.cfg`, `.csv`, `.resx`): determine the encoding from
|
|
186
|
+
evidence before editing — the BOM (`EF BB BF` means UTF-8), the file's and project's existing
|
|
187
|
+
convention, the reader contract in the consuming code, and a strict decode/re-encode round
|
|
188
|
+
trip. No BOM does not by itself mean CP949, since BOM-less UTF-8 exists and ASCII-only or
|
|
189
|
+
otherwise ambiguous bytes decode cleanly under several encodings. Write the file back in the
|
|
190
|
+
encoding you established, preserving the BOM state and line endings, and never convert
|
|
191
|
+
encodings or reflow untouched regions. Configuration files the program reads with
|
|
192
|
+
`Encoding.Default` stay CP949. If the evidence stays ambiguous and the choice creates a real
|
|
193
|
+
compatibility risk, stop and report instead of guessing.
|
|
194
|
+
- Material risk is a consequence, never a technology name. It is only: an irreversible change to
|
|
195
|
+
data, schema or configuration (loss, corruption, destructive migration, deletion), a result that
|
|
196
|
+
leaves the system (deployment, payment, a real device or output, an outbound transmission),
|
|
197
|
+
a computation, verdict, threshold or calibration coefficient that defines product meaning, a
|
|
198
|
+
compatibility break for existing consumers, data, configuration or an API contract, and physical
|
|
199
|
+
safety interlocks or outputs. Read-only PLC access, monitoring, display, logging, packet parsing,
|
|
200
|
+
address translation, ordinary protocol handling, timeout, retry, reconnect, and simple write
|
|
201
|
+
forwarding that decides nothing are not material risk by technology alone: state the real
|
|
202
|
+
consequence instead.
|
|
203
|
+
- VB6, COM/OCX, 32-bit, and Windows XP targets do not raise material risk on their own; their
|
|
204
|
+
compatibility and the CP949/BOM protection above stay required. Authentication, authorization,
|
|
205
|
+
and secret changes are `integration-risk` review, not repository material risk: the
|
|
206
|
+
`trust-boundary` class attaches the watch only.
|
|
207
|
+
- The nature of the edited code classifies the work, not the runtime it happens to run in. That
|
|
208
|
+
classification is domain neutral: `irreversible-state-change`, `external-side-effect`,
|
|
209
|
+
`correctness-defines-product-meaning`, `state-machine-transition`, `trust-boundary`,
|
|
210
|
+
`compatibility-break`, and `artifact-representation` are HIGH-RISK even when the target is a
|
|
211
|
+
fixture, a mock, or an eval case. A fake target never lowers the class, and a real project never
|
|
212
|
+
raises a change that triggers none of them. A project repository's `AGENTS.md` maps this
|
|
213
|
+
classification onto that domain's concrete list, and a domain list is never copied into this
|
|
214
|
+
global file (`materialRiskDefinition.projectOverlay`). Scale is a separate axis: a small
|
|
215
|
+
single-owner change is an argument for routine, never a high-risk waiver, and a large consequence
|
|
216
|
+
is never a grade raise. When several modes apply, high-risk wins. See
|
|
217
|
+
`routing.high-risk.materialRiskDefinition.codeNatureTriggers`.
|
|
218
|
+
- `agent/rules/harness-policy.json` `routing.high-risk.materialRiskDefinition` is the single
|
|
219
|
+
authoritative definition shared with Main and the eval expectations. When the
|
|
220
|
+
brief does not assign the applicable consequence and approval, stop and report instead of
|
|
221
|
+
reclassifying the work yourself.
|
|
222
|
+
- Your session may not be resumable: an isolated run is merged or captured and torn down when it
|
|
223
|
+
ends. When Main routes a rework you cannot continue in this session, the new spawn carries the
|
|
224
|
+
cause, the existing diff or artifact locator, the unresolved findings with their ids and
|
|
225
|
+
acceptance, and the current validation state - never assume this session resumes and never redo
|
|
226
|
+
completed work.
|
|
227
|
+
- Main may take over a small, settled correction whose cause and fix review already decided and
|
|
228
|
+
whose contract does not change, including document wording, state, and links, without waiting
|
|
229
|
+
for repeated failures; that takeover is the explicit-ownership path in
|
|
230
|
+
`implementationOwnership.reworkRouting.mainTakeover`, never a blanket handoff. When asked to hand
|
|
231
|
+
off, stop writing that scope and return the frozen delta, active jobs, valid evidence, and
|
|
232
|
+
remaining work, and let Main name the ownership change; never edit concurrently.
|
|
233
|
+
- Assignment in a brief never substitutes for explicit user approval. Before any destructive,
|
|
234
|
+
external, costly, or compatibility-breaking action, stop and report unless the user has
|
|
235
|
+
explicitly approved that action for the current task.
|
|
236
|
+
- NEVER commit, push, or run destructive commands (`rm -rf`, branch/tag deletion,
|
|
237
|
+
`git reset --hard`, database writes). Report what you changed and let the caller commit.
|
|
238
|
+
- If a git command fails on `index.lock` or a worktree lock, never delete the lock file —
|
|
239
|
+
another agent may be working in the same repository. Re-analyze, wait briefly, and retry at
|
|
240
|
+
most once; if the identical lock failure appears a second time, stop and report it to Main.
|
|
241
|
+
- You have **no verdict authority**. Never report `PASS`/`FAIL` on someone else's work; report
|
|
242
|
+
facts and let the caller judge.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: maker
|
|
3
|
+
description: Delegated end-to-end implementation agent that investigates, edits, repairs, validates its own slice, and verifies the actual surface it changed.
|
|
4
|
+
model: "@implSol"
|
|
5
|
+
tools: [read, bash, edit, write, grep, glob, lsp, eval, generate_image, ast_grep, ast_edit, debug, todo, web_search, checkpoint]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are the delegated implementation Maker on the default `modelRoles.implSol` slot. A delegated slice
|
|
9
|
+
is yours end to end.
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
[CmdletBinding()]
|
|
2
|
+
param(
|
|
3
|
+
[Parameter(Mandatory = $true)]
|
|
4
|
+
[string]$Request
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
$ErrorActionPreference = 'Stop'
|
|
8
|
+
try {
|
|
9
|
+
[Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)
|
|
10
|
+
$OutputEncoding = [Console]::OutputEncoding
|
|
11
|
+
} catch {}
|
|
12
|
+
$env:GIT_TERMINAL_PROMPT = '0'
|
|
13
|
+
|
|
14
|
+
$stage = 'request'
|
|
15
|
+
$createdCommit = $null
|
|
16
|
+
$repoRoot = $null
|
|
17
|
+
$repoPaths = @()
|
|
18
|
+
$stagedByFinalizer = $false
|
|
19
|
+
$mutex = $null
|
|
20
|
+
$ownsMutex = $false
|
|
21
|
+
$messageFile = $null
|
|
22
|
+
$result = $null
|
|
23
|
+
$exitCode = 0
|
|
24
|
+
|
|
25
|
+
function Invoke-Git {
|
|
26
|
+
param(
|
|
27
|
+
[Parameter(Mandatory = $true)][string]$WorkingDirectory,
|
|
28
|
+
[Parameter(Mandatory = $true)][string[]]$GitArgs,
|
|
29
|
+
[int[]]$AllowedExitCodes = @(0)
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
$previousErrorActionPreference = $ErrorActionPreference
|
|
33
|
+
$ErrorActionPreference = 'Continue'
|
|
34
|
+
try {
|
|
35
|
+
$output = @(& git -c credential.interactive=false -C $WorkingDirectory @GitArgs 2>&1)
|
|
36
|
+
$code = $LASTEXITCODE
|
|
37
|
+
} finally {
|
|
38
|
+
$ErrorActionPreference = $previousErrorActionPreference
|
|
39
|
+
}
|
|
40
|
+
$text = ($output | Out-String).Trim()
|
|
41
|
+
if ($AllowedExitCodes -notcontains $code) {
|
|
42
|
+
if (-not $text) { $text = "git exited with code $code" }
|
|
43
|
+
throw $text
|
|
44
|
+
}
|
|
45
|
+
return [pscustomobject]@{ Code = $code; Output = $text }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function Get-Sha256Hex([string]$Text) {
|
|
49
|
+
$sha = [Security.Cryptography.SHA256]::Create()
|
|
50
|
+
try {
|
|
51
|
+
$bytes = [Text.Encoding]::UTF8.GetBytes($Text)
|
|
52
|
+
return ([BitConverter]::ToString($sha.ComputeHash($bytes))).Replace('-', '').ToLowerInvariant()
|
|
53
|
+
} finally {
|
|
54
|
+
$sha.Dispose()
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function Normalize-FullPath([string]$Path) {
|
|
59
|
+
$fullPath = [IO.Path]::GetFullPath($Path)
|
|
60
|
+
$pathRoot = [IO.Path]::GetPathRoot($fullPath)
|
|
61
|
+
if ($fullPath.Equals($pathRoot, [StringComparison]::OrdinalIgnoreCase)) { return $pathRoot }
|
|
62
|
+
return $fullPath.TrimEnd([IO.Path]::DirectorySeparatorChar, [IO.Path]::AltDirectorySeparatorChar)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function Test-PathWithin([string]$Path, [string]$Root) {
|
|
66
|
+
if ($Path.Equals($Root, [StringComparison]::OrdinalIgnoreCase)) { return $true }
|
|
67
|
+
$prefix = $Root
|
|
68
|
+
if (
|
|
69
|
+
-not $prefix.EndsWith([IO.Path]::DirectorySeparatorChar) -and
|
|
70
|
+
-not $prefix.EndsWith([IO.Path]::AltDirectorySeparatorChar)
|
|
71
|
+
) {
|
|
72
|
+
$prefix += [IO.Path]::DirectorySeparatorChar
|
|
73
|
+
}
|
|
74
|
+
return $Path.StartsWith($prefix, [StringComparison]::OrdinalIgnoreCase)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function Get-NearestExistingDirectory([string]$Path) {
|
|
78
|
+
$candidate = [IO.Path]::GetDirectoryName($Path)
|
|
79
|
+
while ($candidate -and -not (Test-Path -LiteralPath $candidate -PathType Container)) {
|
|
80
|
+
$candidate = [IO.Path]::GetDirectoryName($candidate)
|
|
81
|
+
}
|
|
82
|
+
if (-not $candidate) { throw "No existing parent directory found for file path: $Path" }
|
|
83
|
+
return Normalize-FullPath $candidate
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function Get-RepositoryRootInPathNamespace([string]$WorkingDirectory) {
|
|
87
|
+
[void](Invoke-Git -WorkingDirectory $WorkingDirectory -GitArgs @('rev-parse', '--show-toplevel'))
|
|
88
|
+
$prefix = (Invoke-Git -WorkingDirectory $WorkingDirectory -GitArgs @('rev-parse', '--show-prefix')).Output.Trim('/')
|
|
89
|
+
$root = Normalize-FullPath $WorkingDirectory
|
|
90
|
+
if ($prefix) {
|
|
91
|
+
foreach ($segment in ($prefix -split '/' | Where-Object { $_ })) {
|
|
92
|
+
$root = [IO.Path]::GetDirectoryName($root)
|
|
93
|
+
if (-not $root) { throw "Could not reconstruct repository root from prefix: $prefix" }
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return Normalize-FullPath $root
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function Convert-ToRepoPath([string]$FullPath, [string]$Root) {
|
|
100
|
+
if ($FullPath.Equals($Root, [StringComparison]::OrdinalIgnoreCase)) { return '' }
|
|
101
|
+
return $FullPath.Substring($Root.Length).TrimStart('\', '/').Replace('\', '/')
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function Get-GitPaths([string]$WorkingDirectory, [string[]]$GitArgs) {
|
|
105
|
+
$response = Invoke-Git -WorkingDirectory $WorkingDirectory -GitArgs $GitArgs
|
|
106
|
+
if (-not $response.Output) { return @() }
|
|
107
|
+
return @($response.Output -split "`r?`n" | ForEach-Object { $_.Trim().Replace('\', '/') } | Where-Object { $_ })
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function Assert-ExactPathSet([string[]]$Actual, [string[]]$Expected, [string]$Label) {
|
|
111
|
+
$actualSet = [Collections.Generic.HashSet[string]]::new([StringComparer]::OrdinalIgnoreCase)
|
|
112
|
+
$expectedSet = [Collections.Generic.HashSet[string]]::new([StringComparer]::OrdinalIgnoreCase)
|
|
113
|
+
foreach ($path in $Actual) { [void]$actualSet.Add($path) }
|
|
114
|
+
foreach ($path in $Expected) { [void]$expectedSet.Add($path) }
|
|
115
|
+
if (-not $actualSet.SetEquals($expectedSet)) {
|
|
116
|
+
throw "$Label mismatch. expected=[$($Expected -join ', ')] actual=[$($Actual -join ', ')]"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
try {
|
|
121
|
+
if (-not (Test-Path -LiteralPath $Request -PathType Leaf)) { throw "Request file not found: $Request" }
|
|
122
|
+
$payload = Get-Content -LiteralPath $Request -Raw -Encoding UTF8 | ConvertFrom-Json
|
|
123
|
+
$cwd = Normalize-FullPath ([string]$payload.cwd)
|
|
124
|
+
$message = ([string]$payload.message).Trim()
|
|
125
|
+
$inputFiles = @($payload.files | ForEach-Object { ([string]$_).Trim() } | Where-Object { $_ })
|
|
126
|
+
if (-not (Test-Path -LiteralPath $cwd -PathType Container)) { throw "Session cwd does not exist: $cwd" }
|
|
127
|
+
if (-not $message) { throw 'Commit message is empty.' }
|
|
128
|
+
if ($inputFiles.Count -eq 0) { throw 'At least one exact file path is required.' }
|
|
129
|
+
|
|
130
|
+
$stage = 'repository'
|
|
131
|
+
$resolvedFiles = @()
|
|
132
|
+
$seenFullPaths = [Collections.Generic.HashSet[string]]::new([StringComparer]::OrdinalIgnoreCase)
|
|
133
|
+
foreach ($inputFile in $inputFiles) {
|
|
134
|
+
if ($inputFile.IndexOfAny(@([char]0, [char]10, [char]13)) -ge 0) { throw 'File paths cannot contain NUL or newlines.' }
|
|
135
|
+
if ([IO.Path]::IsPathRooted($inputFile)) { throw "Absolute file path is not allowed: $inputFile" }
|
|
136
|
+
$fullPath = Normalize-FullPath (Join-Path $cwd $inputFile)
|
|
137
|
+
if (Test-Path -LiteralPath $fullPath -PathType Container) { throw "Directories are not allowed; list exact files: $inputFile" }
|
|
138
|
+
if (-not $seenFullPaths.Add($fullPath)) { throw "Duplicate file path: $inputFile" }
|
|
139
|
+
$resolvedFiles += [pscustomobject]@{ Input = $inputFile; FullPath = $fullPath }
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
$cwdRepoRoot = $null
|
|
143
|
+
$cwdCommonDir = $null
|
|
144
|
+
try {
|
|
145
|
+
$cwdRepoRoot = Get-RepositoryRootInPathNamespace $cwd
|
|
146
|
+
$cwdCommonDir = Normalize-FullPath (Invoke-Git -WorkingDirectory $cwdRepoRoot -GitArgs @('rev-parse', '--path-format=absolute', '--git-common-dir')).Output
|
|
147
|
+
} catch {
|
|
148
|
+
$cwdRepoRoot = $null
|
|
149
|
+
$cwdCommonDir = $null
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
$selectedRepoRoot = $null
|
|
153
|
+
$selectedCommonDir = $null
|
|
154
|
+
foreach ($file in $resolvedFiles) {
|
|
155
|
+
|
|
156
|
+
$probeDirectory = Get-NearestExistingDirectory $file.FullPath
|
|
157
|
+
$targetRepoRoot = Get-RepositoryRootInPathNamespace $probeDirectory
|
|
158
|
+
$targetCommonDir = Normalize-FullPath (Invoke-Git -WorkingDirectory $targetRepoRoot -GitArgs @('rev-parse', '--path-format=absolute', '--git-common-dir')).Output
|
|
159
|
+
if (-not (Test-PathWithin -Path $file.FullPath -Root $targetRepoRoot)) {
|
|
160
|
+
throw "File path escapes the repository: $($file.Input)"
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (-not $selectedRepoRoot) {
|
|
164
|
+
$selectedRepoRoot = $targetRepoRoot
|
|
165
|
+
$selectedCommonDir = $targetCommonDir
|
|
166
|
+
} elseif (
|
|
167
|
+
-not $selectedRepoRoot.Equals($targetRepoRoot, [StringComparison]::OrdinalIgnoreCase) -or
|
|
168
|
+
-not $selectedCommonDir.Equals($targetCommonDir, [StringComparison]::OrdinalIgnoreCase)
|
|
169
|
+
) {
|
|
170
|
+
throw "Files belong to different repositories: $($file.Input)"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
$repoRoot = $selectedRepoRoot
|
|
175
|
+
$commonDir = $selectedCommonDir
|
|
176
|
+
if ($cwdRepoRoot) {
|
|
177
|
+
$targetsBelongToCwdRepository = $commonDir.Equals($cwdCommonDir, [StringComparison]::OrdinalIgnoreCase)
|
|
178
|
+
if ($targetsBelongToCwdRepository) {
|
|
179
|
+
foreach ($file in $resolvedFiles) {
|
|
180
|
+
$parentPath = [IO.Path]::GetDirectoryName($file.FullPath)
|
|
181
|
+
$isDirectRepoRootChild = $parentPath -and $parentPath.Equals($cwdRepoRoot, [StringComparison]::OrdinalIgnoreCase)
|
|
182
|
+
if (-not (Test-PathWithin -Path $file.FullPath -Root $cwd) -and -not $isDirectRepoRootChild) {
|
|
183
|
+
throw "File path escapes the session cwd: $($file.Input)"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
} else {
|
|
188
|
+
foreach ($file in $resolvedFiles) {
|
|
189
|
+
if (-not (Test-PathWithin -Path $file.FullPath -Root $cwd)) {
|
|
190
|
+
throw "File path escapes the session cwd: $($file.Input)"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (-not (Test-PathWithin -Path $repoRoot -Root $cwd)) {
|
|
194
|
+
throw "Discovered repository escapes the session cwd: $repoRoot"
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
$seen = [Collections.Generic.HashSet[string]]::new([StringComparer]::OrdinalIgnoreCase)
|
|
199
|
+
foreach ($file in $resolvedFiles) {
|
|
200
|
+
$repoPath = Convert-ToRepoPath -FullPath $file.FullPath -Root $repoRoot
|
|
201
|
+
if (-not $repoPath -or $repoPath -eq '.git' -or $repoPath.StartsWith('.git/', [StringComparison]::OrdinalIgnoreCase)) {
|
|
202
|
+
throw "Repository metadata or broad paths are not allowed: $($file.Input)"
|
|
203
|
+
}
|
|
204
|
+
if (-not $seen.Add($repoPath)) { throw "Duplicate file path: $($file.Input)" }
|
|
205
|
+
$repoPaths += $repoPath
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
$stage = 'remote'
|
|
209
|
+
$branch = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', '--abbrev-ref', 'HEAD')).Output
|
|
210
|
+
if (-not $branch -or $branch -eq 'HEAD') { throw 'Detached HEAD is not supported.' }
|
|
211
|
+
$configuredRemote = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('config', '--get', "branch.$branch.remote") -AllowedExitCodes @(0, 1)).Output
|
|
212
|
+
$configuredUpstreamRef = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('config', '--get', "branch.$branch.merge") -AllowedExitCodes @(0, 1)).Output
|
|
213
|
+
$configuredRemotes = @((Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('remote')).Output -split "`r?`n" | ForEach-Object { $_.Trim() } | Where-Object { $_ })
|
|
214
|
+
if ($configuredRemote) {
|
|
215
|
+
if ($configuredRemote -eq '.') { throw "Branch '$branch' tracks the local repository and has no pushable remote." }
|
|
216
|
+
if ($configuredRemotes -cnotcontains $configuredRemote) {
|
|
217
|
+
throw "Branch '$branch' is configured to push to '$configuredRemote', which is not a configured remote."
|
|
218
|
+
}
|
|
219
|
+
$remote = $configuredRemote
|
|
220
|
+
} elseif ($configuredRemotes.Count -eq 0) {
|
|
221
|
+
throw "Branch '$branch' has no configured remote to push to."
|
|
222
|
+
} elseif ($configuredRemotes -ccontains 'origin') {
|
|
223
|
+
$remote = 'origin'
|
|
224
|
+
} elseif ($configuredRemotes.Count -eq 1) {
|
|
225
|
+
$remote = $configuredRemotes[0]
|
|
226
|
+
} else {
|
|
227
|
+
throw "Branch '$branch' has no tracked remote and the repository has multiple remotes: $($configuredRemotes -join ', ')"
|
|
228
|
+
}
|
|
229
|
+
if ($configuredUpstreamRef) {
|
|
230
|
+
if ($configuredUpstreamRef -notmatch '^refs/heads/.+') { throw "Unsupported upstream ref: $configuredUpstreamRef" }
|
|
231
|
+
$upstreamRef = $configuredUpstreamRef
|
|
232
|
+
} else {
|
|
233
|
+
$upstreamRef = "refs/heads/$branch"
|
|
234
|
+
}
|
|
235
|
+
$trackingConfigured = [bool]$configuredRemote -and [bool]$configuredUpstreamRef
|
|
236
|
+
|
|
237
|
+
$stage = 'lock'
|
|
238
|
+
$lockKey = Get-Sha256Hex ($commonDir.ToLowerInvariant() + [char]0 + $remote + [char]0 + $upstreamRef)
|
|
239
|
+
$mutexName = "Global\OMP-GitFinalize-$lockKey"
|
|
240
|
+
$mutex = [Threading.Mutex]::new($false, $mutexName)
|
|
241
|
+
try {
|
|
242
|
+
$ownsMutex = $mutex.WaitOne([TimeSpan]::FromSeconds(120))
|
|
243
|
+
} catch [Threading.AbandonedMutexException] {
|
|
244
|
+
$ownsMutex = $true
|
|
245
|
+
}
|
|
246
|
+
if (-not $ownsMutex) { throw "Timed out waiting for repository finalizer lock: $mutexName" }
|
|
247
|
+
|
|
248
|
+
$stage = 'locked-preflight'
|
|
249
|
+
$lockedCommonDir = Normalize-FullPath (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', '--path-format=absolute', '--git-common-dir')).Output
|
|
250
|
+
$lockedBranch = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', '--abbrev-ref', 'HEAD')).Output
|
|
251
|
+
if (-not $lockedCommonDir.Equals($commonDir, [StringComparison]::OrdinalIgnoreCase) -or $lockedBranch -ne $branch) {
|
|
252
|
+
throw 'Repository or branch changed while acquiring the finalizer lock.'
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
$stage = 'remote-probe'
|
|
256
|
+
$probe = Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('ls-remote', '--exit-code', '--refs', $remote, $upstreamRef) -AllowedExitCodes @(0, 2)
|
|
257
|
+
$upstreamExists = $probe.Code -eq 0
|
|
258
|
+
|
|
259
|
+
$stage = 'fetch'
|
|
260
|
+
$headSha = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', 'HEAD')).Output
|
|
261
|
+
$upstreamSha = $null
|
|
262
|
+
if ($upstreamExists) {
|
|
263
|
+
[void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('fetch', '--no-tags', $remote, $upstreamRef))
|
|
264
|
+
$upstreamSha = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', 'FETCH_HEAD')).Output
|
|
265
|
+
$ancestry = Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('merge-base', '--is-ancestor', $upstreamSha, $headSha) -AllowedExitCodes @(0, 1)
|
|
266
|
+
if ($ancestry.Code -ne 0) {
|
|
267
|
+
throw "HEAD is behind or diverged from the fetched upstream. HEAD=$headSha upstream=$upstreamSha"
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
$stage = 'index-preflight'
|
|
272
|
+
$indexState = Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('diff', '--cached', '--quiet', '--exit-code') -AllowedExitCodes @(0, 1)
|
|
273
|
+
if ($indexState.Code -ne 0) { throw 'The shared Git index already contains staged changes.' }
|
|
274
|
+
|
|
275
|
+
$stage = 'stage'
|
|
276
|
+
$stagedByFinalizer = $true
|
|
277
|
+
[void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs (@('--literal-pathspecs', 'add', '-A', '--') + $repoPaths))
|
|
278
|
+
$cachedPaths = Get-GitPaths -WorkingDirectory $repoRoot -GitArgs @('-c', 'core.quotepath=false', 'diff', '--cached', '--no-renames', '--name-only')
|
|
279
|
+
Assert-ExactPathSet -Actual $cachedPaths -Expected $repoPaths -Label 'Staged path set'
|
|
280
|
+
|
|
281
|
+
$stage = 'commit'
|
|
282
|
+
$messageFile = [IO.Path]::GetTempFileName()
|
|
283
|
+
[IO.File]::WriteAllText($messageFile, $message + [Environment]::NewLine, [Text.UTF8Encoding]::new($false))
|
|
284
|
+
[void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('commit', '--file', $messageFile))
|
|
285
|
+
$createdCommit = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', 'HEAD')).Output
|
|
286
|
+
$stagedByFinalizer = $false
|
|
287
|
+
|
|
288
|
+
$stage = 'commit-verify'
|
|
289
|
+
$parentSha = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('rev-parse', "$createdCommit^" )).Output
|
|
290
|
+
if ($parentSha -ne $headSha) {
|
|
291
|
+
throw "Created commit parent does not match the captured HEAD. parent=$parentSha head=$headSha"
|
|
292
|
+
}
|
|
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
|
+
|
|
296
|
+
$stage = 'push'
|
|
297
|
+
[void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('push', $remote, "${createdCommit}:${upstreamRef}"))
|
|
298
|
+
|
|
299
|
+
$stage = 'remote-verify'
|
|
300
|
+
$remoteLine = (Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('ls-remote', '--refs', $remote, $upstreamRef)).Output
|
|
301
|
+
$remoteSha = (($remoteLine -split '\s+')[0]).Trim()
|
|
302
|
+
if ($remoteSha -ne $createdCommit) {
|
|
303
|
+
throw "Remote ref verification failed. expected=$createdCommit actual=$remoteSha"
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
if (-not $trackingConfigured) {
|
|
307
|
+
$stage = 'tracking'
|
|
308
|
+
[void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('config', "branch.$branch.remote", $remote))
|
|
309
|
+
[void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs @('config', "branch.$branch.merge", $upstreamRef))
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
$stage = 'complete'
|
|
313
|
+
$result = [ordered]@{
|
|
314
|
+
ok = $true
|
|
315
|
+
stage = $stage
|
|
316
|
+
commitSha = $createdCommit
|
|
317
|
+
remote = $remote
|
|
318
|
+
upstreamRef = $upstreamRef
|
|
319
|
+
}
|
|
320
|
+
} catch {
|
|
321
|
+
$exitCode = 1
|
|
322
|
+
$result = [ordered]@{
|
|
323
|
+
ok = $false
|
|
324
|
+
stage = $stage
|
|
325
|
+
error = $_.Exception.Message
|
|
326
|
+
commitSha = $createdCommit
|
|
327
|
+
}
|
|
328
|
+
} finally {
|
|
329
|
+
if ($stagedByFinalizer -and $repoRoot -and $repoPaths.Count -gt 0) {
|
|
330
|
+
try { [void](Invoke-Git -WorkingDirectory $repoRoot -GitArgs (@('--literal-pathspecs', 'restore', '--staged', '--') + $repoPaths)) } catch {}
|
|
331
|
+
}
|
|
332
|
+
if ($messageFile) { Remove-Item -LiteralPath $messageFile -Force -ErrorAction SilentlyContinue }
|
|
333
|
+
if ($ownsMutex -and $mutex) {
|
|
334
|
+
try { $mutex.ReleaseMutex() } catch {}
|
|
335
|
+
}
|
|
336
|
+
if ($mutex) { $mutex.Dispose() }
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
[Console]::Out.WriteLine(($result | ConvertTo-Json -Compress))
|
|
340
|
+
exit $exitCode
|