@qt4798/pi-web 0.10.5 → 0.10.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +11 -11
- package/.next/build-manifest.json +2 -2
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +1 -1
- package/.next/server/app/api/agent/running/events/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/subagents/transcript/route.js +1 -1
- package/.next/server/app/api/tasks/settings/route.js +1 -1
- package/.next/server/app/api/usage/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page.js +13 -13
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +11 -11
- package/.next/server/chunks/1499.js +7 -7
- package/.next/server/chunks/4253.js +7 -7
- package/.next/server/chunks/5582.js +2 -2
- package/.next/server/chunks/6429.js +1 -1
- package/.next/server/chunks/7915.js +1 -1
- package/.next/server/functions-config-manifest.json +2 -10
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +2 -2
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/6049-f3857747b04cfc1d.js +1 -0
- package/.next/static/chunks/app/page-ad0ed57b98b86121.js +47 -0
- package/.next/static/chunks/{main-e9857f44fcf8c636.js → main-425c48afc83a1949.js} +1 -1
- package/.next/trace +9 -9
- package/.next/trace-build +1 -1
- package/README.md +3 -0
- package/bin/pi-web-options.js +24 -1
- package/bin/pi-web.js +15 -9
- package/package.json +1 -1
- package/.next/static/chunks/266-afbb4abec8f065f2.js +0 -1
- package/.next/static/chunks/app/page-1f553bf2c117387b.js +0 -47
- /package/.next/static/{kWqylj4DXUQD6uvs2QXWr → nawYHsRT9tos_eI6-jhCH}/_buildManifest.js +0 -0
- /package/.next/static/{kWqylj4DXUQD6uvs2QXWr → nawYHsRT9tos_eI6-jhCH}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"55100","name":"*","chunks":[],"async":false}},"
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"55100","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78044":{"*":{"id":"98031","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86343":{"*":{"id":"67809","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/components/ErrorBoundary.tsx":{"id":86343,"name":"*","chunks":["7177","static/chunks/app/layout-a5e7239bae5ff472.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/katex/dist/katex.min.css":{"id":84559,"name":"*","chunks":["7177","static/chunks/app/layout-a5e7239bae5ff472.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-a5e7239bae5ff472.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/index.css":{"id":26408,"name":"*","chunks":["7177","static/chunks/app/layout-a5e7239bae5ff472.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/400-italic.css":{"id":8057,"name":"*","chunks":["7177","static/chunks/app/layout-a5e7239bae5ff472.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/700.css":{"id":35279,"name":"*","chunks":["7177","static/chunks/app/layout-a5e7239bae5ff472.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/700-italic.css":{"id":48276,"name":"*","chunks":["7177","static/chunks/app/layout-a5e7239bae5ff472.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/lilex/index.css":{"id":12043,"name":"*","chunks":["7177","static/chunks/app/layout-a5e7239bae5ff472.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/components/AppShell.tsx":{"id":78044,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6049","static/chunks/6049-f3857747b04cfc1d.js","8974","static/chunks/app/page-ad0ed57b98b86121.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/hooks/useI18n.tsx":{"id":39247,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6049","static/chunks/6049-f3857747b04cfc1d.js","8974","static/chunks/app/page-ad0ed57b98b86121.js"],"async":false}},"entryCSSFiles":{"/Volumes/1T 原装/项目研发/pi-web-QT/":[],"/Volumes/1T 原装/项目研发/pi-web-QT/app/layout":[{"inlined":false,"path":"static/css/3790610024d16435.css"},{"inlined":false,"path":"static/css/11cd851a9acbcc96.css"}],"/Volumes/1T 原装/项目研发/pi-web-QT/app/page":[]},"rscModuleMapping":{"8057":{"*":{"id":"17","name":"*","chunks":[],"async":false}},"12043":{"*":{"id":"47561","name":"*","chunks":[],"async":false}},"26408":{"*":{"id":"77222","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"35279":{"*":{"id":"10289","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"73884","name":"*","chunks":[],"async":false}},"48276":{"*":{"id":"64388","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78044":{"*":{"id":"35790","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"84559":{"*":{"id":"25319","name":"*","chunks":[],"async":false}},"86343":{"*":{"id":"24387","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
|
|
@@ -36,20 +36,20 @@
|
|
|
36
36
|
"/api/agent/[id]/bash-output/route": "app/api/agent/[id]/bash-output/route.js",
|
|
37
37
|
"/api/agent/running/events/route": "app/api/agent/running/events/route.js",
|
|
38
38
|
"/api/agent/running/route": "app/api/agent/running/route.js",
|
|
39
|
-
"/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
|
|
40
39
|
"/api/auth/all-providers/route": "app/api/auth/all-providers/route.js",
|
|
40
|
+
"/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
|
|
41
41
|
"/api/auth/combined/route": "app/api/auth/combined/route.js",
|
|
42
42
|
"/api/auth/api-key/[provider]/route": "app/api/auth/api-key/[provider]/route.js",
|
|
43
|
-
"/api/auth/providers/route": "app/api/auth/providers/route.js",
|
|
44
43
|
"/api/auth/logout/[provider]/route": "app/api/auth/logout/[provider]/route.js",
|
|
44
|
+
"/api/auth/providers/route": "app/api/auth/providers/route.js",
|
|
45
45
|
"/api/backup/export/route": "app/api/backup/export/route.js",
|
|
46
46
|
"/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
|
|
47
47
|
"/api/events/route": "app/api/events/route.js",
|
|
48
48
|
"/api/features/route": "app/api/features/route.js",
|
|
49
49
|
"/api/deepseek/balance/route": "app/api/deepseek/balance/route.js",
|
|
50
50
|
"/api/backup/import/route": "app/api/backup/import/route.js",
|
|
51
|
-
"/api/git/diff/route": "app/api/git/diff/route.js",
|
|
52
51
|
"/api/git/push/route": "app/api/git/push/route.js",
|
|
52
|
+
"/api/git/diff/route": "app/api/git/diff/route.js",
|
|
53
53
|
"/api/git/status/route": "app/api/git/status/route.js",
|
|
54
54
|
"/api/git/stash/route": "app/api/git/stash/route.js",
|
|
55
55
|
"/api/mcp/restart/route": "app/api/mcp/restart/route.js",
|
|
@@ -58,31 +58,31 @@
|
|
|
58
58
|
"/api/models-config/catalog/route": "app/api/models-config/catalog/route.js",
|
|
59
59
|
"/api/models-config/route": "app/api/models-config/route.js",
|
|
60
60
|
"/api/models-config/discover/route": "app/api/models-config/discover/route.js",
|
|
61
|
-
"/api/models-config/test/route": "app/api/models-config/test/route.js",
|
|
62
61
|
"/api/models-config/builtin/route": "app/api/models-config/builtin/route.js",
|
|
63
|
-
"/api/models/route": "app/api/models/route.js",
|
|
62
|
+
"/api/models-config/test/route": "app/api/models-config/test/route.js",
|
|
64
63
|
"/api/modes/route": "app/api/modes/route.js",
|
|
64
|
+
"/api/models/route": "app/api/models/route.js",
|
|
65
65
|
"/api/project-aliases/route": "app/api/project-aliases/route.js",
|
|
66
66
|
"/api/project-state/route": "app/api/project-state/route.js",
|
|
67
|
+
"/api/proxy/route": "app/api/proxy/route.js",
|
|
67
68
|
"/api/project-trust/route": "app/api/project-trust/route.js",
|
|
68
69
|
"/api/proxy/test/route": "app/api/proxy/test/route.js",
|
|
69
|
-
"/api/proxy/route": "app/api/proxy/route.js",
|
|
70
70
|
"/api/settings/title-model/route": "app/api/settings/title-model/route.js",
|
|
71
|
-
"/api/skills/check/route": "app/api/skills/check/route.js",
|
|
72
71
|
"/api/sessions/[id]/export/route": "app/api/sessions/[id]/export/route.js",
|
|
72
|
+
"/api/skills/check/route": "app/api/skills/check/route.js",
|
|
73
|
+
"/api/plugins/route": "app/api/plugins/route.js",
|
|
73
74
|
"/api/skills/install/route": "app/api/skills/install/route.js",
|
|
74
75
|
"/api/skills/route": "app/api/skills/route.js",
|
|
75
76
|
"/api/snippets/[id]/route": "app/api/snippets/[id]/route.js",
|
|
76
|
-
"/api/plugins/route": "app/api/plugins/route.js",
|
|
77
|
-
"/api/snippets/route": "app/api/snippets/route.js",
|
|
78
77
|
"/api/skills/update/route": "app/api/skills/update/route.js",
|
|
78
|
+
"/api/snippets/route": "app/api/snippets/route.js",
|
|
79
79
|
"/api/skills/search/route": "app/api/skills/search/route.js",
|
|
80
80
|
"/api/subagents/transcript/route": "app/api/subagents/transcript/route.js",
|
|
81
|
-
"/api/tasks/[id]/changed-files/route": "app/api/tasks/[id]/changed-files/route.js",
|
|
82
81
|
"/api/subagents/agents/[name]/route": "app/api/subagents/agents/[name]/route.js",
|
|
82
|
+
"/api/tasks/[id]/changed-files/route": "app/api/tasks/[id]/changed-files/route.js",
|
|
83
83
|
"/api/tasks/events/route": "app/api/tasks/events/route.js",
|
|
84
|
-
"/api/vision-config/route": "app/api/vision-config/route.js",
|
|
85
84
|
"/api/subagents/route": "app/api/subagents/route.js",
|
|
85
|
+
"/api/vision-config/route": "app/api/vision-config/route.js",
|
|
86
86
|
"/api/usage/route": "app/api/usage/route.js",
|
|
87
87
|
"/page": "app/page.js"
|
|
88
88
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";exports.id=1499,exports.ids=[1499],exports.modules={6835:(a,b,c)=>{c.d(b,{os:()=>d});function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}},46583:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AI:()=>H,D2:()=>E,Mx:()=>z,Q1:()=>A,Rv:()=>D,_o:()=>w,_s:()=>C,bT:()=>y,dm:()=>B,eG:()=>G,fd:()=>x,h6:()=>v,jf:()=>F,k9:()=>I,listTaskProjects:()=>r,z1:()=>m});var e=c(29021),f=c(33873),g=c(75430),h=c(8102),i=c(50593),j=c(6835),k=a([g]);function l(){return(0,f.join)((0,g.getAgentDir)(),"tasks")}function m(a){return(0,f.join)(l(),(0,i.A0)(a).replace(/^\/+/,"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("--")||"root")}function n(a){return(0,f.join)(m(a),"tasks.jsonl")}function o(a){return(0,f.join)(m(a),"events.jsonl")}function p(){return(0,f.join)(l(),"settings.json")}function q(){return(0,f.join)(l(),"templates.jsonl")}function r(){let a=l();return(0,e.existsSync)(a)?(0,e.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&"__engine__"!==a.name).map(a=>{var b;return b=a.name,"/"+b.split("--").map(a=>decodeURIComponent(a)).join("/")}):[]}function s(a){(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0,mode:448})}function t(a){if(!(0,e.existsSync)(a))return[];let b=(0,e.readFileSync)(a,"utf8"),c=[];for(let a of b.split("\n")){let b=a.trim();if(b)try{c.push(JSON.parse(b))}catch{}}return c}function u(a,b){s(a.substring(0,a.lastIndexOf("/")));let c=b.map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.$)(a,c)}g=(k.then?(await k)():k)[0];let J="__piTaskStore";function v(a){return t(n(a)).sort((a,b)=>a.sortOrder-b.sortOrder||a.id-b.id)}function w(a,b){return v(a).find(a=>a.id===b)??null}function x(a){let b=n(a.projectRoot),c=v(a.projectRoot),d=c.findIndex(b=>b.id===a.id),e={...a,updatedAt:new Date().toISOString()};d>=0?c[d]=e:c.push(e),u(b,c)}function y(a,b){let c=n(a),d=v(a).filter(a=>a.id!==b);u(c,d)}function z(a,b){let c,d,g=((c=globalThis)[J]||(c[J]={nextId:1}),(d=c[J]).nextId<=1&&(d.nextId=function(){let a=l();if(!(0,e.existsSync)(a))return 1;let b=0;for(let c of(0,e.readdirSync)(a,{withFileTypes:!0})){if(!c.isDirectory())continue;let d=(0,f.join)(a,c.name,"tasks.jsonl");if((0,e.existsSync)(d))for(let a of t(d))a.id>b&&(b=a.id)}return b+1}()),d.nextId++),h=new Date().toISOString(),i={...b(g,h),projectRoot:a};return x(i),i}function A(a,b){let c=o(a),d=t(c).reduce((a,b)=>Math.max(a,b.id),0)+1,f={...b,payload:b.payload??null,id:d,createdAt:new Date().toISOString()};return s(c.substring(0,c.lastIndexOf("/"))),(0,e.writeFileSync)(c,JSON.stringify(f)+"\n",{encoding:"utf8",flag:"a",mode:384}),f}function B(a,b,c=500){return t(o(a)).filter(a=>a.taskId===b).slice(-c)}function C(a){let b=p();if(!(0,e.existsSync)(b))return null;try{return JSON.parse((0,e.readFileSync)(b,"utf8"))[a]??null}catch{return null}}function D(a){let b=C(a),c=function(){let a=p();if(!(0,e.existsSync)(a))return(0,j.os)();try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return{...(0,j.os)(),...b._global??{}}}catch{return(0,j.os)()}}();return b?{...c,...b,configValues:{...c.configValues,...b.configValues??{}}}:c}function E(a,b){let c=p(),d={};if((0,e.existsSync)(c))try{d=JSON.parse((0,e.readFileSync)(c,"utf8"))}catch{d={}}d[a]=b,s(l()),(0,h.$)(c,JSON.stringify(d,null,2))}function F(a){let b=p();if((0,e.existsSync)(b))try{let c=JSON.parse((0,e.readFileSync)(b,"utf8"));delete c[a],(0,h.$)(b,JSON.stringify(c,null,2))}catch{}}function G(){return t(q())}function H(a){let b=G(),c=b.findIndex(b=>b.id===a.id);c>=0?b[c]=a:b.push(a),u(q(),b)}function I(a){let b=G().filter(b=>b.id!==a);u(q(),b)}d()}catch(a){d(a)}})},50593:(a,b,c)=>{c.d(b,{A0:()=>d});function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):a}},66544:(a,b,c)=>{c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function h(a){try{return new URL(a).origin}catch{return null}}let i=new Set(["POST","PUT","PATCH","DELETE"]);function j(a,b=g()){return!!function(a,b=g()){let c=a.headers.get("host"),h=c?f(c):null;return!!h&&(!!("localhost"===h||h.endsWith(".localhost")||(0,d.isIP)(h))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===h}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||(a.headers.has("origin")||a.headers.has("sec-fetch-site")?function(a){let b,c;if("cross-site"===a.headers.get("sec-fetch-site"))return!1;let d=a.headers.get("origin");if(!d)return!0;let e=(b=new URL(a.url),(c=a.headers.get("host"))?h(`${b.protocol}//${c}`):null);return null!==e&&h(d)===e}(a):!i.has((a.method??"GET").toUpperCase())))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},80154:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{KG:()=>F,Kx:()=>u,MR:()=>J,Me:()=>N,Q$:()=>M,Rt:()=>O,UT:()=>q,YC:()=>P,gc:()=>E,lC:()=>r,m5:()=>L,oM:()=>K,r5:()=>k,vq:()=>s,yX:()=>I});var e=c(29021);c(33873);var f=c(79646),g=c(23808),h=c(46583),i=c(56429),j=a([h,i]);[h,i]=j.then?(await j)():j;let R=new Set;function k(a){return R.add(a),()=>R.delete(a)}function l(a){for(let b of R)b(a)}function m(){return globalThis.__piTaskEngine??null}function n(){let a=m();if(!a)throw Error("task engine not running");return a}function o(){return new Date().toISOString()}function p(a,b,c="engine",d){(0,h.fd)(a),b&&(0,h.Q1)(a.projectRoot,{taskId:a.id,kind:b,actor:c,payload:d??null}),l({type:"upsert",id:a.id})}function q(a){let b=(0,h.Mx)(a.projectRoot,(b,c)=>({id:b,projectRoot:a.projectRoot,title:a.title,config:a.config,status:"todo",failureReason:null,lastError:null,runSeq:0,sortOrder:(0,h.h6)(a.projectRoot).length,worktreePath:null,conversationId:null,sessionFile:null,baseBranch:null,workBranch:null,verdict:null,resultSummary:null,userNote:null,filesChanged:null,additions:null,deletions:null,mergeCommit:null,preflight:null,archivedAt:null,createdAt:c,updatedAt:c,startedAt:null,settledAt:null,finishedAt:null}));return(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"created",actor:"user",payload:{title:b.title}}),l({type:"upsert",id:b.id}),u(b.projectRoot),b}function r(a,b){let c=(0,h._o)(b.projectRoot,a);if(!c)return null;let d={...c,title:b.title,config:b.config};return p(d,"updated","user"),u(d.projectRoot),d}function s(a,b,c){let d=(0,h._o)(b,a);if(!d)return;d.worktreePath&&d.workBranch&&c&&(async()=>{try{await (0,g.IL)(b,d.worktreePath,!0)}catch{}try{await C(b,`git branch -D ${JSON.stringify(d.workBranch)}`)}catch{}})();let e=m(),f=e?.byTask.get(a);f&&(f.session.send({type:"abort"}).catch(()=>void 0),e?.live.delete(f.connectionId),e?.byTask.delete(a)),(0,h.bT)(b,a),l({type:"delete",id:a})}function t(a,b,c,d,f){let g=function(a){for(let b of m()?.byTask.values()??[])if(b.taskId===a)return(0,h._o)(b.projectRoot,a)??null;let b=(0,h.z1)("__engine__").replace(/__engine__$/,"");if(!(0,e.existsSync)(b))return null;for(let c of(0,e.readdirSync)(b,{withFileTypes:!0})){if(!c.isDirectory()||"__engine__"===c.name)continue;let b=(0,h._o)(H(c.name),a);if(b)return b}return null}(a);if(!g||g.runSeq!==b||!c.includes(g.status))return null;let i={...g,...f,status:d,updatedAt:o()};return p(i),i}function u(a){m()&&v(a)}async function v(a){let b=n(),c=(b.pumpLocks.get(a)??Promise.resolve()).then(()=>w(a));b.pumpLocks.set(a,c.catch(()=>void 0)),await c}async function w(a){let b=n();if(b.stopped)return;let c=(0,h.Rv)(a);if(!c.autoProcess)return;let d=(0,h.h6)(a),e=[...b.byTask.values()].filter(b=>b.projectRoot===a).length,f=c.maxConcurrent>0?c.maxConcurrent:1/0;if(!(e>=f))for(let c of d.filter(a=>"queued"===a.status).sort((a,b)=>a.sortOrder-b.sortOrder)){if(e>=f)break;!b.launching.has(c.id)&&await x(c.id,a)&&(e+=1)}}async function x(a,b){let c=n(),d=(0,h._o)(b,a);if(!d||"queued"!==d.status)return!1;let e=globalThis,f=e.__taskLaunchToken=(e.__taskLaunchToken??0)+1;if(c.launching.set(a,f),!t(a,d.runSeq,["queued"],"preparing",{startedAt:o()}))return c.launching.delete(a),!1;(0,h.Q1)(b,{taskId:a,kind:"preparing",actor:"engine"});try{var i,j,k;let e,f,l,m,p,q,r=await (0,g.KI)(b);if(!r.projectRoot)throw Error("Not a git repository");let s=`task/${a}-${d.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}`,u=null;try{u=(await (0,g.l)(r.projectRoot,s)).path}catch(b){let a=await y(r.projectRoot,s);if(!a)throw b;u=a}let v=r.branch??null,w=(0,h.Rv)(b);w.initCommand&&await C(u,w.initCommand);let{session:x}=await z(d,u),B={taskId:a,runSeq:d.runSeq,connectionId:x.sessionId,projectRoot:b,session:x,pendingRequests:new Set};if(c.live.set(x.sessionId,B),c.byTask.set(a,B),(i=B).session.onEvent(a=>{let b=a.type;(async()=>{var c,d;let e=n().live.get(i.connectionId);if(!e||e.taskId!==i.taskId)return;let f=(0,h._o)(i.projectRoot,i.taskId);if(f&&("running"===f.status||"awaiting_input"===f.status||"merging"===f.status))switch(b){case"extension_ui_request":{let b=a.method,c=a.id;b&&c&&["confirm","input","select","editor"].includes(b)&&(i.pendingRequests.add(c),"running"===f.status&&(t(i.taskId,i.runSeq,["running"],"awaiting_input"),(0,h.Q1)(f.projectRoot,{taskId:i.taskId,kind:"awaiting_input",actor:"engine",payload:{method:b,id:c}})));break}case"extension_ui_response":{let b=a.id;b&&i.pendingRequests.delete(b)&&0===i.pendingRequests.size&&"awaiting_input"===f.status&&t(i.taskId,i.runSeq,["awaiting_input"],"running");break}case"agent_end":if(i.pendingRequests.size>0)break;if("merging"===f.status){let a;c=i,(a=(0,h._o)(c.projectRoot,c.taskId))&&"merging"===a.status&&D(c.session.cwd,"git rev-parse --short HEAD").then(a=>a.output.trim()).catch(()=>null).then(async a=>{let b=(0,h._o)(c.projectRoot,c.taskId);if(b){t(b.id,b.runSeq,["merging"],"done",{mergeCommit:a,finishedAt:o()}),(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"merged",actor:"engine",payload:{commit:a}});try{b.worktreePath&&await (0,g.IL)(c.projectRoot,b.worktreePath,!0).catch(()=>void 0),b.workBranch&&await C(c.projectRoot,`git branch -D ${JSON.stringify(b.workBranch)}`).catch(()=>void 0)}catch{}}});break}A(i,f);break;case"prompt_error":{let b,c=a.errorMessage??"agent error";t(i.taskId,i.runSeq,["running","awaiting_input"],"failed",{failureReason:"agent_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,h.Q1)(f.projectRoot,{taskId:i.taskId,kind:"failed",actor:"engine",payload:{reason:"agent_error",message:c}}),d=i,(b=n()).live.delete(d.connectionId),b.byTask.delete(d.taskId);break}case"agent_start":"awaiting_input"===f.status&&0===i.pendingRequests.size&&t(i.taskId,i.runSeq,["awaiting_input"],"running")}})()}),!t(a,d.runSeq,["preparing"],"running",{worktreePath:u,workBranch:s,baseBranch:v,conversationId:x.sessionId,sessionFile:x.sessionFile,runSeq:d.runSeq}))return c.live.delete(x.sessionId),c.byTask.delete(a),x.shutdown().catch(()=>void 0),!1;(0,h.Q1)(b,{taskId:a,kind:"started",actor:"engine",payload:{runSeq:d.runSeq,branch:s}});let E=(j=d,k=w,e=j.config?.prompt??j.title,f=k.stagePrompts?.work??k.stagePrompts?.all??"",l=j.config?.agentType??k.defaultAgentType,m=`You are working on task "${j.title}" in a git worktree branch.
|
|
2
|
-
`+(
|
|
1
|
+
"use strict";exports.id=1499,exports.ids=[1499],exports.modules={6835:(a,b,c)=>{c.d(b,{os:()=>d});function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}},46583:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AI:()=>H,D2:()=>E,Mx:()=>z,Q1:()=>A,Rv:()=>D,_o:()=>w,_s:()=>C,bT:()=>y,dm:()=>B,eG:()=>G,fd:()=>x,h6:()=>v,jf:()=>F,k9:()=>I,listTaskProjects:()=>r,z1:()=>m});var e=c(29021),f=c(33873),g=c(75430),h=c(8102),i=c(50593),j=c(6835),k=a([g]);function l(){return(0,f.join)((0,g.getAgentDir)(),"tasks")}function m(a){return(0,f.join)(l(),(0,i.A0)(a).replace(/^\/+/,"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("--")||"root")}function n(a){return(0,f.join)(m(a),"tasks.jsonl")}function o(a){return(0,f.join)(m(a),"events.jsonl")}function p(){return(0,f.join)(l(),"settings.json")}function q(){return(0,f.join)(l(),"templates.jsonl")}function r(){let a=l();return(0,e.existsSync)(a)?(0,e.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&"__engine__"!==a.name).map(a=>{var b;return b=a.name,"/"+b.split("--").map(a=>decodeURIComponent(a)).join("/")}):[]}function s(a){(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0,mode:448})}function t(a){if(!(0,e.existsSync)(a))return[];let b=(0,e.readFileSync)(a,"utf8"),c=[];for(let a of b.split("\n")){let b=a.trim();if(b)try{c.push(JSON.parse(b))}catch{}}return c}function u(a,b){s(a.substring(0,a.lastIndexOf("/")));let c=b.map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.$)(a,c)}g=(k.then?(await k)():k)[0];let J="__piTaskStore";function v(a){return t(n(a)).sort((a,b)=>a.sortOrder-b.sortOrder||a.id-b.id)}function w(a,b){return v(a).find(a=>a.id===b)??null}function x(a){let b=n(a.projectRoot),c=v(a.projectRoot),d=c.findIndex(b=>b.id===a.id),e={...a,updatedAt:new Date().toISOString()};d>=0?c[d]=e:c.push(e),u(b,c)}function y(a,b){let c=n(a),d=v(a).filter(a=>a.id!==b);u(c,d)}function z(a,b){let c,d,g=((c=globalThis)[J]||(c[J]={nextId:1}),(d=c[J]).nextId<=1&&(d.nextId=function(){let a=l();if(!(0,e.existsSync)(a))return 1;let b=0;for(let c of(0,e.readdirSync)(a,{withFileTypes:!0})){if(!c.isDirectory())continue;let d=(0,f.join)(a,c.name,"tasks.jsonl");if((0,e.existsSync)(d))for(let a of t(d))a.id>b&&(b=a.id)}return b+1}()),d.nextId++),h=new Date().toISOString(),i={...b(g,h),projectRoot:a};return x(i),i}function A(a,b){let c=o(a),d=t(c).reduce((a,b)=>Math.max(a,b.id),0)+1,f={...b,payload:b.payload??null,id:d,createdAt:new Date().toISOString()};return s(c.substring(0,c.lastIndexOf("/"))),(0,e.writeFileSync)(c,JSON.stringify(f)+"\n",{encoding:"utf8",flag:"a",mode:384}),f}function B(a,b,c=500){return t(o(a)).filter(a=>a.taskId===b).slice(-c)}function C(a){let b=p();if(!(0,e.existsSync)(b))return null;try{return JSON.parse((0,e.readFileSync)(b,"utf8"))[a]??null}catch{return null}}function D(a){let b=C(a),c=function(){let a=p();if(!(0,e.existsSync)(a))return(0,j.os)();try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return{...(0,j.os)(),...b._global??{}}}catch{return(0,j.os)()}}();return b?{...c,...b,configValues:{...c.configValues,...b.configValues??{}}}:c}function E(a,b){let c=p(),d={};if((0,e.existsSync)(c))try{d=JSON.parse((0,e.readFileSync)(c,"utf8"))}catch{d={}}d[a]=b,s(l()),(0,h.$)(c,JSON.stringify(d,null,2))}function F(a){let b=p();if((0,e.existsSync)(b))try{let c=JSON.parse((0,e.readFileSync)(b,"utf8"));delete c[a],(0,h.$)(b,JSON.stringify(c,null,2))}catch{}}function G(){return t(q())}function H(a){let b=G(),c=b.findIndex(b=>b.id===a.id);c>=0?b[c]=a:b.push(a),u(q(),b)}function I(a){let b=G().filter(b=>b.id!==a);u(q(),b)}d()}catch(a){d(a)}})},50593:(a,b,c)=>{c.d(b,{A0:()=>d});function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):a}},66544:(a,b,c)=>{c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function h(a){try{return new URL(a).origin}catch{return null}}let i=new Set(["POST","PUT","PATCH","DELETE"]);function j(a,b=g()){return!!function(a,b=g()){let c=a.headers.get("host"),h=c?f(c):null;return!!h&&(!!("localhost"===h||h.endsWith(".localhost")||(0,d.isIP)(h))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===h}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||(a.headers.has("origin")||a.headers.has("sec-fetch-site")?function(a){let b,c;if("cross-site"===a.headers.get("sec-fetch-site"))return!1;let d=a.headers.get("origin");if(!d)return!0;let e=(b=new URL(a.url),(c=a.headers.get("host"))?h(`${b.protocol}//${c}`):null);return null!==e&&h(d)===e}(a):!i.has((a.method??"GET").toUpperCase())))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},80154:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{KG:()=>F,Kx:()=>u,MR:()=>J,Me:()=>N,Q$:()=>M,Rt:()=>O,UT:()=>q,YC:()=>P,gc:()=>E,lC:()=>r,m5:()=>L,oM:()=>K,r5:()=>k,vq:()=>s,yX:()=>I});var e=c(29021);c(33873);var f=c(79646),g=c(24923),h=c(46583),i=c(56429),j=a([h,i]);[h,i]=j.then?(await j)():j;let R=new Set;function k(a){return R.add(a),()=>R.delete(a)}function l(a){for(let b of R)b(a)}function m(){return globalThis.__piTaskEngine??null}function n(){let a=m();if(!a)throw Error("task engine not running");return a}function o(){return new Date().toISOString()}function p(a,b,c="engine",d){(0,h.fd)(a),b&&(0,h.Q1)(a.projectRoot,{taskId:a.id,kind:b,actor:c,payload:d??null}),l({type:"upsert",id:a.id})}function q(a){let b=(0,h.Mx)(a.projectRoot,(b,c)=>({id:b,projectRoot:a.projectRoot,title:a.title,config:a.config,status:"todo",failureReason:null,lastError:null,runSeq:0,sortOrder:(0,h.h6)(a.projectRoot).length,worktreePath:null,conversationId:null,sessionFile:null,baseBranch:null,workBranch:null,verdict:null,resultSummary:null,userNote:null,filesChanged:null,additions:null,deletions:null,mergeCommit:null,preflight:null,archivedAt:null,createdAt:c,updatedAt:c,startedAt:null,settledAt:null,finishedAt:null}));return(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"created",actor:"user",payload:{title:b.title}}),l({type:"upsert",id:b.id}),u(b.projectRoot),b}function r(a,b){let c=(0,h._o)(b.projectRoot,a);if(!c)return null;let d={...c,title:b.title,config:b.config};return p(d,"updated","user"),u(d.projectRoot),d}function s(a,b,c){let d=(0,h._o)(b,a);if(!d)return;d.worktreePath&&d.workBranch&&c&&(async()=>{try{await (0,g.IL)(b,d.worktreePath,!0)}catch{}try{await C(b,["branch","-D",d.workBranch])}catch{}})();let e=m(),f=e?.byTask.get(a);f&&(f.session.send({type:"abort"}).catch(()=>void 0),e?.live.delete(f.connectionId),e?.byTask.delete(a)),(0,h.bT)(b,a),l({type:"delete",id:a})}function t(a,b,c,d,f){let g=function(a){for(let b of m()?.byTask.values()??[])if(b.taskId===a)return(0,h._o)(b.projectRoot,a)??null;let b=(0,h.z1)("__engine__").replace(/__engine__$/,"");if(!(0,e.existsSync)(b))return null;for(let c of(0,e.readdirSync)(b,{withFileTypes:!0})){if(!c.isDirectory()||"__engine__"===c.name)continue;let b=(0,h._o)(H(c.name),a);if(b)return b}return null}(a);if(!g||g.runSeq!==b||!c.includes(g.status))return null;let i={...g,...f,status:d,updatedAt:o()};return p(i),i}function u(a){m()&&v(a)}async function v(a){let b=n(),c=(b.pumpLocks.get(a)??Promise.resolve()).then(()=>w(a));b.pumpLocks.set(a,c.catch(()=>void 0)),await c}async function w(a){let b=n();if(b.stopped)return;let c=(0,h.Rv)(a);if(!c.autoProcess)return;let d=(0,h.h6)(a),e=[...b.byTask.values()].filter(b=>b.projectRoot===a).length,f=c.maxConcurrent>0?c.maxConcurrent:1/0;if(!(e>=f))for(let c of d.filter(a=>"queued"===a.status).sort((a,b)=>a.sortOrder-b.sortOrder)){if(e>=f)break;!b.launching.has(c.id)&&await x(c.id,a)&&(e+=1)}}async function x(a,b){let c=n(),d=(0,h._o)(b,a);if(!d||"queued"!==d.status)return!1;let e=globalThis,i=e.__taskLaunchToken=(e.__taskLaunchToken??0)+1;if(c.launching.set(a,i),!t(a,d.runSeq,["queued"],"preparing",{startedAt:o()}))return c.launching.delete(a),!1;(0,h.Q1)(b,{taskId:a,kind:"preparing",actor:"engine"});try{var j,k,l,m,p;let e,i,q,r,s,u,v=await (0,g.KI)(b);if(!v.projectRoot)throw Error("Not a git repository");let w=`task/${a}-${d.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}`,x=null;try{x=(await (0,g.l)(v.projectRoot,w)).path}catch(b){let a=await y(v.projectRoot,w);if(!a)throw b;x=a}let B=v.branch??null,E=(0,h.Rv)(b);E.initCommand&&await (j=x,k=E.initCommand,new Promise((a,b)=>{let c=(0,f.spawn)(k,{cwd:j,shell:!0,stdio:"ignore"});c.on("error",b),c.on("exit",c=>{0===c?a():b(Error(`init command exited with code ${c??"null"}`))})}));let{session:F}=await z(d,x),G={taskId:a,runSeq:d.runSeq,connectionId:F.sessionId,projectRoot:b,session:F,pendingRequests:new Set};if(c.live.set(F.sessionId,G),c.byTask.set(a,G),(l=G).session.onEvent(a=>{let b=a.type;(async()=>{var c,d;let e=n().live.get(l.connectionId);if(!e||e.taskId!==l.taskId)return;let f=(0,h._o)(l.projectRoot,l.taskId);if(f&&("running"===f.status||"awaiting_input"===f.status||"merging"===f.status))switch(b){case"extension_ui_request":{let b=a.method,c=a.id;b&&c&&["confirm","input","select","editor"].includes(b)&&(l.pendingRequests.add(c),"running"===f.status&&(t(l.taskId,l.runSeq,["running"],"awaiting_input"),(0,h.Q1)(f.projectRoot,{taskId:l.taskId,kind:"awaiting_input",actor:"engine",payload:{method:b,id:c}})));break}case"extension_ui_response":{let b=a.id;b&&l.pendingRequests.delete(b)&&0===l.pendingRequests.size&&"awaiting_input"===f.status&&t(l.taskId,l.runSeq,["awaiting_input"],"running");break}case"agent_end":if(l.pendingRequests.size>0)break;if("merging"===f.status){let a;c=l,(a=(0,h._o)(c.projectRoot,c.taskId))&&"merging"===a.status&&D(c.session.cwd,["rev-parse","--short","HEAD"]).then(a=>a.output.trim()).catch(()=>null).then(async a=>{let b=(0,h._o)(c.projectRoot,c.taskId);if(b){t(b.id,b.runSeq,["merging"],"done",{mergeCommit:a,finishedAt:o()}),(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"merged",actor:"engine",payload:{commit:a}});try{b.worktreePath&&await (0,g.IL)(c.projectRoot,b.worktreePath,!0).catch(()=>void 0),b.workBranch&&await C(c.projectRoot,["branch","-D",b.workBranch]).catch(()=>void 0)}catch{}}});break}A(l,f);break;case"prompt_error":{let b,c=a.errorMessage??"agent error";t(l.taskId,l.runSeq,["running","awaiting_input"],"failed",{failureReason:"agent_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,h.Q1)(f.projectRoot,{taskId:l.taskId,kind:"failed",actor:"engine",payload:{reason:"agent_error",message:c}}),d=l,(b=n()).live.delete(d.connectionId),b.byTask.delete(d.taskId);break}case"agent_start":"awaiting_input"===f.status&&0===l.pendingRequests.size&&t(l.taskId,l.runSeq,["awaiting_input"],"running")}})()}),!t(a,d.runSeq,["preparing"],"running",{worktreePath:x,workBranch:w,baseBranch:B,conversationId:F.sessionId,sessionFile:F.sessionFile,runSeq:d.runSeq}))return c.live.delete(F.sessionId),c.byTask.delete(a),F.shutdown().catch(()=>void 0),!1;(0,h.Q1)(b,{taskId:a,kind:"started",actor:"engine",payload:{runSeq:d.runSeq,branch:w}});let H=(m=d,p=E,e=m.config?.prompt??m.title,i=p.stagePrompts?.work??p.stagePrompts?.all??"",q=m.config?.agentType??p.defaultAgentType,r=`You are working on task "${m.title}" in a git worktree branch.
|
|
2
|
+
`+(q?`Agent: ${q}
|
|
3
3
|
`:"")+`Complete the work described below.
|
|
4
4
|
|
|
5
5
|
`+`IMPORTANT RULES:
|
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
`+`- Do NOT modify files outside this worktree.
|
|
9
9
|
`+`- When you are done, write a short "Result summary" paragraph describing what you changed.
|
|
10
10
|
|
|
11
|
-
`,
|
|
12
|
-
${
|
|
11
|
+
`,u=(s=m.userNote?.trim())?`User note on this (re)start:
|
|
12
|
+
${s}
|
|
13
13
|
|
|
14
|
-
`:"",
|
|
14
|
+
`:"",r+u+e+(i?`
|
|
15
15
|
|
|
16
|
-
${
|
|
16
|
+
${i}`:""));return await F.send({type:"prompt",message:H}),!0}catch(e){let c=e instanceof Error?e.message:String(e),d=(0,h._o)(b,a);return d&&("preparing"===d.status||"queued"===d.status)&&(t(a,d.runSeq,[d.status],"failed",{failureReason:"setup_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,h.Q1)(b,{taskId:a,kind:"failed",actor:"engine",payload:{reason:"setup_error",message:c}})),!1}finally{c.launching.delete(a)}}async function y(a,b){try{let c=(await (0,g.P9)(a)).find(a=>a.branch===b);return c?.path??null}catch{return null}}async function z(a,b){let c=`task-${a.id}`,{session:d}=await (0,i.OF)(c,"",b,{});return{session:d}}async function A(a,b){let c=n().live.get(a.connectionId);if(!c||c.taskId!==a.taskId||!t(a.taskId,a.runSeq,["running","awaiting_input"],"review",{settledAt:o()}))return;(0,h.Q1)(b.projectRoot,{taskId:a.taskId,kind:"review",actor:"engine"});let d=(0,h.Rv)(b.projectRoot);d.preflightCommand&&await B(a,d.preflightCommand)}async function B(a,b){let c=(0,h._o)(a.projectRoot,a.taskId);if(c){p({...c,preflight:{status:"running",command:b}},"preflight_start","engine",{command:b});try{var d,e;let c=await (d=a.session.cwd,e=b,new Promise(a=>{let b=(0,f.spawn)(e,{cwd:d,shell:!0}),c="";b.stdout?.on("data",a=>{c+=a.toString()}),b.stderr?.on("data",a=>{c+=a.toString()}),b.on("error",()=>a({code:1,output:c})),b.on("exit",b=>a({code:b,output:c}))})),g=(0,h._o)(a.projectRoot,a.taskId);if(!g)return;p({...g,preflight:{status:0===c.code?"passed":"failed",command:b,exitCode:c.code,outputTail:0===c.code?null:c.output.slice(-4e3)}},0===c.code?"preflight_passed":"preflight_failed","engine",{command:b,exitCode:c.code})}catch(d){let c=(0,h._o)(a.projectRoot,a.taskId);if(!c)return;p({...c,preflight:{status:"failed",command:b,outputTail:d instanceof Error?d.message:String(d)}},"preflight_failed","engine",{command:b})}}}function C(a,b){return new Promise((c,d)=>{let e=(0,f.spawn)("git",b,{cwd:a,stdio:"ignore"});e.on("error",d),e.on("exit",a=>{0===a?c():d(Error(`git ${b[0]??""} exited with code ${a??"null"}`))})})}function D(a,b){return new Promise(c=>{let d=(0,f.spawn)("git",b,{cwd:a}),e="";d.stdout?.on("data",a=>{e+=a.toString()}),d.stderr?.on("data",a=>{e+=a.toString()}),d.on("error",()=>c({code:1,output:e})),d.on("exit",a=>c({code:a,output:e}))})}async function E(a,b){let c=(0,h._o)(b,a);if(!c||"todo"!==c.status)return;let d={...c,status:"queued",runSeq:c.runSeq+1};p(d,"queued","user"),u(b)}async function F(a){let b=a?[a]:await G(),c=0;for(let a of b){for(let b of(0,h.h6)(a).filter(a=>"todo"===a.status)){let a={...b,status:"queued",runSeq:b.runSeq+1};p(a,"queued","user"),c+=1}u(a)}return c}async function G(){let a=(0,h.z1)("__engine__").replace(/__engine__$/,"");return(0,e.existsSync)(a)?(0,e.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&"__engine__"!==a.name).map(a=>H(a.name)):[]}function H(a){return"/"+a.split("--").map(a=>decodeURIComponent(a)).join("/")}async function I(a,b,c){let d=(0,h._o)(b,a);if(!d)return;let e=m(),f=e?.byTask.get(a);f&&e?(await f.session.send({type:"abort"}).catch(()=>void 0),t(a,f.runSeq,["running","awaiting_input","preparing","queued"],"canceled",{settledAt:o(),finishedAt:o()}),e.live.delete(f.connectionId),e.byTask.delete(a)):t(a,d.runSeq,["todo","queued","preparing"],"canceled",{settledAt:o(),finishedAt:o()}),(0,h.Q1)(b,{taskId:a,kind:"canceled",actor:"user",payload:c?{reason:c}:null})}async function J(a,b,c){let d=(0,h._o)(b,a);if(!d||"failed"!==d.status)return;let e={...d,status:"queued",runSeq:d.runSeq+1,lastError:null,failureReason:null,userNote:c??d.userNote};p(e,"queued","user",{retry:!0,note:c??null}),u(b)}async function K(a,b,c){let d=(0,h._o)(b,a);if(!d||"canceled"!==d.status)return;let e={...d,status:"todo",lastError:null,failureReason:null,userNote:c??d.userNote};p(e,"requeued","user",{note:c??null}),u(b)}async function L(a,b,c){let d=(0,h._o)(b,a);if(!d||"review"!==d.status)return;let e={...d,status:"queued",runSeq:d.runSeq+1,preflight:null};p(e,"returned","user",{feedback:c}),(0,h.Q1)(b,{taskId:a,kind:"return_feedback",actor:"user",payload:{feedback:c}}),u(b)}async function M(a,b,c){let d=(0,h._o)(b,a);if(!d)return;let e={...d,archivedAt:c?o():null};p(e,c?"archived":"unarchived","user")}async function N(a,b){let c=(0,h.h6)(a),d=new Map(c.map(a=>[a.id,a])),e=[];b.forEach((a,b)=>{let c=d.get(a);c&&e.push({...c,sortOrder:b})});let f=new Set(b),g=b.length;for(let a of c)f.has(a.id)||e.push({...a,sortOrder:g++});for(let a of e)(0,h.fd)(a);e.length>0&&l({type:"upsert",id:e[0].id})}async function O(a,b,c){let d=(0,h._o)(b,a);if(d&&"review"===d.status){if(0!==d.filesChanged)throw Error("Task has changes to merge; use merge instead");if(t(a,d.runSeq,["review"],"done",{finishedAt:o()}),(0,h.Q1)(b,{taskId:a,kind:"completed",actor:"user",payload:{deleteWorktree:c}}),c)try{d.worktreePath&&await (0,g.IL)(b,d.worktreePath,!0).catch(()=>void 0),d.workBranch&&await C(b,["branch","-D",d.workBranch]).catch(()=>void 0)}catch{}}}async function P(a,b,c,d){let e=(0,h._o)(b,a);if(!e||"review"!==e.status)return;let f=m(),g=f?.byTask.get(a),i={...e,status:"merging"};p(i,"merging","user",{message:c,deleteWorktree:d}),(0,h.Q1)(b,{taskId:a,kind:"merge_requested",actor:"user",payload:{message:c,deleteWorktree:d}});try{if(g){let a=`Merge your changes into the base branch (${e.baseBranch??"the current base"}).
|
|
17
17
|
Rules:
|
|
18
18
|
- Work ONLY in this worktree; run git merge/commit from this worktree directory.
|
|
19
19
|
- Do NOT commit unrelated changes that exist in other checkouts — commit only the files your task changed.
|
|
20
20
|
- Do NOT touch or push other branches.
|
|
21
21
|
`+(c?`Use this commit message: "${c}"
|
|
22
|
-
`:"Write a concise commit message yourself.\n")+(d?"After merging, the worktree may be cleaned up.":"Keep the worktree after merging.");await g.session.send({type:"prompt",message:a})}else await Q(b,e,c,d)}catch(e){let c=e instanceof Error?e.message:String(e),d=(0,h._o)(b,a);d&&"merging"===d.status&&(t(a,d.runSeq,["merging"],"review",{lastError:`Merge failed: ${c}`}),(0,h.Q1)(b,{taskId:a,kind:"merge_failed",actor:"engine",payload:{message:c}}))}}async function Q(a,b,c,d){if(!b.worktreePath||!b.workBranch)throw Error("No worktree to merge");if((await D(a,"
|
|
22
|
+
`:"Write a concise commit message yourself.\n")+(d?"After merging, the worktree may be cleaned up.":"Keep the worktree after merging.");await g.session.send({type:"prompt",message:a})}else await Q(b,e,c,d)}catch(e){let c=e instanceof Error?e.message:String(e),d=(0,h._o)(b,a);d&&"merging"===d.status&&(t(a,d.runSeq,["merging"],"review",{lastError:`Merge failed: ${c}`}),(0,h.Q1)(b,{taskId:a,kind:"merge_failed",actor:"engine",payload:{message:c}}))}}async function Q(a,b,c,d){if(!b.worktreePath||!b.workBranch)throw Error("No worktree to merge");if((await D(a,["status","--porcelain"])).output.trim().length>0)throw Error("Main checkout has uncommitted changes; the agent-driven merge cannot run. Commit or stash them first.");let e=null!=c;if(await C(a,["merge",e?"--squash":"--no-ff",b.workBranch]),e){let d=c||`Merge task ${b.id}: ${b.title}`;await C(a,["commit","-m",d])}let f=await D(a,["rev-parse","--short","HEAD"]);t(b.id,b.runSeq,["merging"],"done",{mergeCommit:f.output.trim(),finishedAt:o()}),(0,h.Q1)(a,{taskId:b.id,kind:"merged",actor:"engine",payload:{commit:f.output.trim()}}),d&&b.worktreePath&&await (0,g.IL)(a,b.worktreePath,!0).catch(()=>void 0),d&&b.workBranch&&await C(a,["branch","-D",b.workBranch]).catch(()=>void 0)}d()}catch(a){d(a)}})}};
|