@qt4798/pi-web 0.18.4 → 0.18.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 +18 -18
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- 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/_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 +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/app-update/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/git/diff/route.js +1 -1
- package/.next/server/app/api/git/push/route.js +1 -1
- package/.next/server/app/api/git/stash/route.js +1 -1
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/import/discover/route.js +1 -1
- package/.next/server/app/api/logs/route.js +1 -1
- package/.next/server/app/api/mcp/restart/route.js +1 -1
- package/.next/server/app/api/mcp/route.js +1 -1
- package/.next/server/app/api/models-config/builtin/route.js +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/project-state/route.js +1 -1
- package/.next/server/app/api/projects/visibility/route.js +1 -1
- package/.next/server/app/api/provider-usage/query/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/settings/title-model/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/snippets/[id]/route.js +1 -1
- package/.next/server/app/api/snippets/route.js +1 -1
- package/.next/server/app/api/subagents/settings/route.js +1 -1
- package/.next/server/app/api/tools/extension-tools/route.js +1 -1
- package/.next/server/app/api/tools/settings/route.js +1 -1
- package/.next/server/app/api/vision-config/route.js +1 -1
- package/.next/server/app/api/web-auth/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/page.js +10 -8
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +18 -18
- package/.next/server/chunks/154.js +12 -11
- package/.next/server/chunks/4253.js +14 -11
- package/.next/server/chunks/440.js +1 -1
- package/.next/server/chunks/5725.js +1 -1
- package/.next/server/chunks/6429.js +8 -5
- package/.next/server/chunks/7915.js +1 -1
- package/.next/server/chunks/9332.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/app/{page-bd73baeec065cb84.js → page-3d2a6181302c97c6.js} +10 -8
- package/.next/static/css/2f7c89d02f957732.css +1 -0
- package/.next/trace +8 -83
- package/.next/trace-build +1 -1
- package/package.json +1 -1
- package/.next/static/css/5418f5ea5454ad72.css +0 -1
- /package/.next/static/{I_FDqLx_bV7v2QRYgPTtm → cehSWrMOmfjQYl29EblqZ}/_buildManifest.js +0 -0
- /package/.next/static/{I_FDqLx_bV7v2QRYgPTtm → cehSWrMOmfjQYl29EblqZ}/_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}},"42309":{"*":{"id":"28447","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}},"
|
|
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}},"42309":{"*":{"id":"28447","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}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"85822":{"*":{"id":"37020","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-9aea218f73c7fe87.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/katex/dist/katex.min.css":{"id":84559,"name":"*","chunks":["7177","static/chunks/app/layout-9aea218f73c7fe87.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-9aea218f73c7fe87.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/app/settings.css":{"id":39979,"name":"*","chunks":["7177","static/chunks/app/layout-9aea218f73c7fe87.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/app/theme-presets.css":{"id":5332,"name":"*","chunks":["7177","static/chunks/app/layout-9aea218f73c7fe87.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-9aea218f73c7fe87.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-9aea218f73c7fe87.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-9aea218f73c7fe87.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-9aea218f73c7fe87.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/lilex/index.css":{"id":12043,"name":"*","chunks":["7177","static/chunks/app/layout-9aea218f73c7fe87.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/components/AppShell.tsx":{"id":85822,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","7650","static/chunks/7650-4f948821e59fd720.js","9247","static/chunks/9247-dcc0a4a11fc397aa.js","8974","static/chunks/app/page-3d2a6181302c97c6.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/hooks/useI18n.tsx":{"id":39247,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","7650","static/chunks/7650-4f948821e59fd720.js","9247","static/chunks/9247-dcc0a4a11fc397aa.js","8974","static/chunks/app/page-3d2a6181302c97c6.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/app/login/page.tsx":{"id":42309,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Volumes/1T 原装/项目研发/pi-web-QT/":[],"/Volumes/1T 原装/项目研发/pi-web-QT/app/layout":[{"inlined":false,"path":"static/css/2f46e0db0d4a3aed.css"},{"inlined":false,"path":"static/css/2f7c89d02f957732.css"},{"inlined":false,"path":"static/css/452ea33c857da08e.css"}],"/Volumes/1T 原装/项目研发/pi-web-QT/app/page":[]},"rscModuleMapping":{"5332":{"*":{"id":"39612","name":"*","chunks":[],"async":false}},"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}},"39979":{"*":{"id":"77261","name":"*","chunks":[],"async":false}},"42309":{"*":{"id":"69613","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}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"84559":{"*":{"id":"25319","name":"*","chunks":[],"async":false}},"85822":{"*":{"id":"35790","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":{}};
|
|
@@ -35,67 +35,67 @@
|
|
|
35
35
|
"/icon.png/route": "app/icon.png/route.js",
|
|
36
36
|
"/icon.svg/route": "app/icon.svg/route.js",
|
|
37
37
|
"/api/agent/[id]/bash-output/route": "app/api/agent/[id]/bash-output/route.js",
|
|
38
|
-
"/api/agent/running/route": "app/api/agent/running/route.js",
|
|
39
38
|
"/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
|
|
39
|
+
"/api/agent/running/route": "app/api/agent/running/route.js",
|
|
40
40
|
"/api/agent/running/events/route": "app/api/agent/running/events/route.js",
|
|
41
41
|
"/api/app-update/route": "app/api/app-update/route.js",
|
|
42
|
-
"/api/auth/combined/route": "app/api/auth/combined/route.js",
|
|
43
42
|
"/api/auth/api-key/[provider]/route": "app/api/auth/api-key/[provider]/route.js",
|
|
43
|
+
"/api/auth/combined/route": "app/api/auth/combined/route.js",
|
|
44
44
|
"/api/auth/logout/[provider]/route": "app/api/auth/logout/[provider]/route.js",
|
|
45
|
-
"/api/auth/providers/route": "app/api/auth/providers/route.js",
|
|
46
45
|
"/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
|
|
46
|
+
"/api/auth/providers/route": "app/api/auth/providers/route.js",
|
|
47
47
|
"/api/backup/export/route": "app/api/backup/export/route.js",
|
|
48
48
|
"/api/events/route": "app/api/events/route.js",
|
|
49
49
|
"/api/features/route": "app/api/features/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",
|
|
53
|
-
"/api/git/
|
|
52
|
+
"/api/git/diff/route": "app/api/git/diff/route.js",
|
|
54
53
|
"/api/git/stash/route": "app/api/git/stash/route.js",
|
|
54
|
+
"/api/git/status/route": "app/api/git/status/route.js",
|
|
55
55
|
"/api/logs/route": "app/api/logs/route.js",
|
|
56
56
|
"/api/mcp/restart/route": "app/api/mcp/restart/route.js",
|
|
57
57
|
"/api/mcp/route": "app/api/mcp/route.js",
|
|
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
|
-
"/api/models-config/discover/route": "app/api/models-config/discover/route.js",
|
|
61
|
-
"/api/models/route": "app/api/models/route.js",
|
|
62
|
-
"/api/modes/route": "app/api/modes/route.js",
|
|
63
60
|
"/api/models-config/builtin/route": "app/api/models-config/builtin/route.js",
|
|
61
|
+
"/api/models-config/discover/route": "app/api/models-config/discover/route.js",
|
|
62
|
+
"/api/models-config/test/route": "app/api/models-config/test/route.js",
|
|
64
63
|
"/api/plugins/check/route": "app/api/plugins/check/route.js",
|
|
64
|
+
"/api/modes/route": "app/api/modes/route.js",
|
|
65
65
|
"/api/project-aliases/route": "app/api/project-aliases/route.js",
|
|
66
|
-
"/api/models
|
|
66
|
+
"/api/models/route": "app/api/models/route.js",
|
|
67
67
|
"/api/project-state/route": "app/api/project-state/route.js",
|
|
68
|
-
"/api/project-trust/route": "app/api/project-trust/route.js",
|
|
69
68
|
"/api/provider-usage/query/route": "app/api/provider-usage/query/route.js",
|
|
69
|
+
"/api/project-trust/route": "app/api/project-trust/route.js",
|
|
70
70
|
"/api/projects/visibility/route": "app/api/projects/visibility/route.js",
|
|
71
71
|
"/api/proxy/test/route": "app/api/proxy/test/route.js",
|
|
72
72
|
"/api/proxy/route": "app/api/proxy/route.js",
|
|
73
|
-
"/api/plugins/route": "app/api/plugins/route.js",
|
|
74
|
-
"/api/sessions/route": "app/api/sessions/route.js",
|
|
75
73
|
"/api/sessions/[id]/export/route": "app/api/sessions/[id]/export/route.js",
|
|
76
74
|
"/api/sessions/search/route": "app/api/sessions/search/route.js",
|
|
75
|
+
"/api/sessions/route": "app/api/sessions/route.js",
|
|
76
|
+
"/api/plugins/route": "app/api/plugins/route.js",
|
|
77
77
|
"/api/settings/title-model/route": "app/api/settings/title-model/route.js",
|
|
78
78
|
"/api/skills/check/route": "app/api/skills/check/route.js",
|
|
79
79
|
"/api/skills/install/route": "app/api/skills/install/route.js",
|
|
80
80
|
"/api/skills/route": "app/api/skills/route.js",
|
|
81
|
-
"/api/skills/
|
|
82
|
-
"/api/sessions/[id]/route": "app/api/sessions/[id]/route.js",
|
|
81
|
+
"/api/skills/update/route": "app/api/skills/update/route.js",
|
|
83
82
|
"/api/snippets/[id]/route": "app/api/snippets/[id]/route.js",
|
|
83
|
+
"/api/skills/search/route": "app/api/skills/search/route.js",
|
|
84
84
|
"/api/snippets/route": "app/api/snippets/route.js",
|
|
85
|
-
"/api/
|
|
85
|
+
"/api/sessions/[id]/route": "app/api/sessions/[id]/route.js",
|
|
86
86
|
"/api/subagents/[id]/route": "app/api/subagents/[id]/route.js",
|
|
87
|
-
"/api/subagents/settings/route": "app/api/subagents/settings/route.js",
|
|
88
87
|
"/api/tasks/[id]/changed-files/route": "app/api/tasks/[id]/changed-files/route.js",
|
|
89
88
|
"/api/subagents/profiles/route": "app/api/subagents/profiles/route.js",
|
|
89
|
+
"/api/subagents/settings/route": "app/api/subagents/settings/route.js",
|
|
90
90
|
"/api/tasks/events/route": "app/api/tasks/events/route.js",
|
|
91
91
|
"/api/terminal/[id]/events/route": "app/api/terminal/[id]/events/route.js",
|
|
92
|
-
"/api/terminal/route": "app/api/terminal/route.js",
|
|
93
92
|
"/api/terminal/[id]/route": "app/api/terminal/[id]/route.js",
|
|
93
|
+
"/api/terminal/route": "app/api/terminal/route.js",
|
|
94
94
|
"/api/tools/extension-tools/route": "app/api/tools/extension-tools/route.js",
|
|
95
95
|
"/api/tools/settings/route": "app/api/tools/settings/route.js",
|
|
96
96
|
"/api/vision-config/route": "app/api/vision-config/route.js",
|
|
97
|
-
"/api/web-auth/route": "app/api/web-auth/route.js",
|
|
98
97
|
"/api/usage/route": "app/api/usage/route.js",
|
|
98
|
+
"/api/web-auth/route": "app/api/web-auth/route.js",
|
|
99
99
|
"/page": "app/page.js",
|
|
100
100
|
"/login/page": "app/login/page.js"
|
|
101
101
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";exports.id=154,exports.ids=[154],exports.modules={80154:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{KG:()=>
|
|
2
|
-
`+(
|
|
1
|
+
"use strict";exports.id=154,exports.ids=[154],exports.modules={80154:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{KG:()=>I,Kx:()=>u,MR:()=>M,Me:()=>Q,Q$:()=>P,Rt:()=>R,UT:()=>q,YC:()=>S,gc:()=>H,lC:()=>r,m5:()=>O,oM:()=>N,r5:()=>k,vq:()=>s,yX:()=>L});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 ab=new Set;function k(a){return ab.add(a),()=>ab.delete(a)}function l(a){for(let b of ab)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{var a,c;await (a=b,c=["branch","-D",d.workBranch],new Promise((b,d)=>{let e=(0,f.spawn)("git",c,{cwd:a,stdio:"ignore"});e.on("error",d),e.on("exit",a=>{0===a?b():d(Error(`git ${c[0]??""} exited with code ${a??"null"}`))})}))}catch{}})();let e=m(),i=e?.byTask.get(a);i&&(i.session.send({type:"abort"}).catch(()=>void 0),e?.live.delete(i.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)(K(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;let e,i,n,o,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 (j=u,k=w.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:x}=await z(d,u),A={taskId:a,runSeq:d.runSeq,connectionId:x.sessionId,projectRoot:b,session:x,pendingRequests:new Set},B=c.byTask.get(a);if(B&&G(B),c.live.set(x.sessionId,A),c.byTask.set(a,A),D(A),!t(a,d.runSeq,["preparing"],"running",{worktreePath:u,workBranch:s,baseBranch:v,conversationId:x.sessionId,sessionFile:x.sessionFile,runSeq:d.runSeq}))return G(A),x.shutdown().catch(()=>void 0),!1;(0,h.Q1)(b,{taskId:a,kind:"started",actor:"engine",payload:{runSeq:d.runSeq,branch:s}});let C=(l=d,m=w,e=l.config?.prompt??l.title,i=m.stagePrompts?.work??m.stagePrompts?.all??"",n=l.config?.agentType??m.defaultAgentType,o=`You are working on task "${l.title}" in a git worktree branch.
|
|
2
|
+
`+(n?`Agent: ${n}
|
|
3
3
|
`:"")+`Complete the work described below.
|
|
4
4
|
|
|
5
5
|
`+`IMPORTANT RULES:
|
|
@@ -8,15 +8,16 @@
|
|
|
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
|
+
`,q=(p=l.userNote?.trim())?`User note on this (re)start:
|
|
12
|
+
${p}
|
|
13
13
|
|
|
14
|
-
`:"",
|
|
14
|
+
`:"",o+q+e+(i?`
|
|
15
15
|
|
|
16
|
-
${i}`:""));return await
|
|
16
|
+
${i}`:""));return await x.send({type:"prompt",message:C}),!0}catch(i){let e=i instanceof Error?i.message:String(i),f=(0,h._o)(b,a),g=c.byTask.get(a);return g?.runSeq===d.runSeq&&f?.status==="running"?B(g,e):f?.runSeq===d.runSeq&&("preparing"===f.status||"queued"===f.status)&&(t(a,d.runSeq,[f.status],"failed",{failureReason:"setup_error",lastError:e,settledAt:o(),finishedAt:o()}),(0,h.Q1)(b,{taskId:a,kind:"failed",actor:"engine",payload:{reason:"setup_error",message:e}})),!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}}function A(a){let b=m();if(b?.live.get(a.connectionId)!==a||b.byTask.get(a.taskId)!==a)return null;let c=(0,h._o)(a.projectRoot,a.taskId);return c?.runSeq===a.runSeq?c:null}function B(a,b){let c=A(a);if(c){if("merging"===c.status){T(c,b),a.mergeIntent=void 0;return}t(a.taskId,a.runSeq,["running","awaiting_input"],"failed",{failureReason:"agent_error",lastError:b,settledAt:o(),finishedAt:o()})&&((0,h.Q1)(c.projectRoot,{taskId:a.taskId,kind:"failed",actor:"engine",payload:{reason:"agent_error",message:b}}),G(a))}}function C(a){let b=A(a);if(!b||!["running","awaiting_input","merging"].includes(b.status)||a.settling||a.session.isRunning())return;let c=a.promptError??(a.lastAssistant?.stopReason==="error"||a.lastAssistant?.stopReason==="aborted"?a.lastAssistant.errorMessage||`Agent ended with ${a.lastAssistant.stopReason}`:void 0);if(c)return void B(a,c);if(!a.pendingRequests.size&&!a.retrying){if(!a.lastAssistant||"stop"!==a.lastAssistant.stopReason)return void B(a,`Agent did not finish successfully (${a.lastAssistant?.stopReason??"no assistant result"})`);a.settling=("merging"===b.status?aa(a):E(a,b)).catch(b=>B(a,b instanceof Error?b.message:String(b))).finally(()=>{a.settling=void 0})}}function D(a){a.unsubscribe=a.session.onEvent(b=>{let c=A(a);if(c&&["running","awaiting_input","merging"].includes(c.status))switch(b.type){case"extension_ui_request":{let d=b.method,e=b.id;d&&e&&["confirm","input","select","editor"].includes(d)&&(a.pendingRequests.add(e),t(a.taskId,a.runSeq,["running"],"awaiting_input")&&(0,h.Q1)(c.projectRoot,{taskId:a.taskId,kind:"awaiting_input",actor:"engine",payload:{method:d,id:e}}));break}case"extension_ui_response":{let c=b.id;c&&a.pendingRequests.delete(c)&&0===a.pendingRequests.size&&t(a.taskId,a.runSeq,["awaiting_input"],"running");break}case"message_end":{let c=b.message;c?.role==="assistant"&&(a.lastAssistant=c);break}case"agent_end":{let c=b.messages,d=c?.findLast(a=>"assistant"===a.role);d&&(a.lastAssistant=d),a.retrying=!0===b.willRetry;break}case"auto_retry_start":a.retrying=!0;break;case"auto_retry_end":a.retrying=!1,!1===b.success&&(a.promptError=String(b.finalError??"Agent retry failed"));break;case"prompt_error":a.promptError=String(b.errorMessage??"agent error"),C(a);break;case"prompt_done":case"agent_settled":C(a);break;case"agent_start":a.lastAssistant=void 0,a.promptError=void 0,a.retrying=!1,0===a.pendingRequests.size&&t(a.taskId,a.runSeq,["awaiting_input"],"running")}})}async function E(a,b){if(!A(a)||!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 c=(0,h.Rv)(b.projectRoot);c.preflightCommand&&await F(a,c.preflightCommand)}async function F(a,b){let c=A(a);if(c&&"review"===c.status){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=A(a);if(!g||"review"!==g.status)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=A(a);if(!c||"review"!==c.status)return;p({...c,preflight:{status:"failed",command:b,outputTail:d instanceof Error?d.message:String(d)}},"preflight_failed","engine",{command:b})}}}function G(a){a.unsubscribe?.(),a.unsubscribe=void 0;let b=m();b?.live.get(a.connectionId)===a&&b.live.delete(a.connectionId),b?.byTask.get(a.taskId)===a&&b.byTask.delete(a.taskId)}async function H(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 I(a){let b=a?[a]:await J(),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 J(){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=>K(a.name)):[]}function K(a){return"/"+a.split("--").map(a=>decodeURIComponent(a)).join("/")}async function L(a,b,c){let d=(0,h._o)(b,a);if(!d)return;let e=m(),f=e?.byTask.get(a);if(f&&e){if(!t(a,f.runSeq,["running","awaiting_input","preparing","queued","merging"],"canceled",{settledAt:o(),finishedAt:o()}))return;G(f),await f.session.send({type:"abort"}).catch(()=>void 0)}else if(!t(a,d.runSeq,["todo","queued","preparing","merging"],"canceled",{settledAt:o(),finishedAt:o()}))return;e?.merging?.get(a)?.runSeq===d.runSeq&&e.merging.delete(a),(0,h.Q1)(b,{taskId:a,kind:"canceled",actor:"user",payload:c?{reason:c}:null})}async function M(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 N(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 O(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 P(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 Q(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 R(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");await Y(b,async()=>{let e=V(()=>U(d,"review")),{base:f,source:g}=await X(d,e),i=await e(b,["merge-base","--is-ancestor",g,f],[0,1]);if(0!==i.code)throw Error("Task has committed changes to merge; use merge instead");if(!t(a,d.runSeq,["review"],"done",{finishedAt:o()}))return;(0,h.Q1)(b,{taskId:a,kind:"completed",actor:"user",payload:{deleteWorktree:c}});let j=m()?.byTask.get(a);j?.runSeq===d.runSeq&&G(j),c&&await _(d,g,f)})}}async function S(a,b,c,d){let e,f=(0,h._o)(b,a);if(!f||"review"!==f.status)return;let g=m(),i=g?.byTask.get(a);if(i?.session.isAlive()&&i.session.isRunning())throw Error("Task session is still running");let j={message:c,deleteWorktree:d,strategy:(0,h.Rv)(b).mergeStrategy},k=t(a,f.runSeq,["review"],"merging",{runSeq:f.runSeq+1,lastError:null,mergeCommit:null,finishedAt:null});if(k){(0,h.Q1)(b,{taskId:a,kind:"merge_requested",actor:"user",payload:{...j,baseBranch:f.baseBranch}});try{if(i&&g&&i.runSeq===f.runSeq&&i.session.isAlive()){G(i),e={...i,runSeq:k.runSeq,pendingRequests:new Set,lastAssistant:void 0,promptError:void 0,retrying:!1,settling:void 0,mergeIntent:j},g.live.set(e.connectionId,e),g.byTask.set(a,e),D(e);let b=`Prepare your task changes for integration into the base branch (${f.baseBranch??"unknown"}).
|
|
17
17
|
Rules:
|
|
18
|
-
- Work ONLY in this worktree
|
|
19
|
-
-
|
|
20
|
-
- Do NOT
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
- Work ONLY in this worktree on branch ${f.workBranch}.
|
|
19
|
+
- Review and commit only the files changed for this task; do not commit unrelated work.
|
|
20
|
+
- Do NOT merge, switch, update, push, or delete other branches or worktrees.
|
|
21
|
+
- The engine will merge your committed task branch into the recorded base after you finish successfully.
|
|
22
|
+
`+(c?`Use this commit message: ${JSON.stringify(c)}
|
|
23
|
+
`:"Write a concise commit message yourself.\n")+(d?"The engine may remove the clean worktree after verified integration.":"Keep the worktree after integration.");await e.session.send({type:"prompt",message:b})}else i&&G(i),await Z(k,j)}catch(a){T(k,a instanceof Error?a.message:String(a)),e&&(e.mergeIntent=void 0)}}}function T(a,b){t(a.id,a.runSeq,["merging"],"review",{lastError:`Merge failed: ${b}`})&&(0,h.Q1)(a.projectRoot,{taskId:a.id,kind:"merge_failed",actor:"engine",payload:{message:b}})}function U(a,b){let c=(0,h._o)(a.projectRoot,a.id);return c?.runSeq===a.runSeq&&c.status===b}function V(a){return async(b,c,d=[0])=>{if(!a())throw Error("Task run was superseded");let e=await new Promise(a=>{let d=(0,f.spawn)("git",c,{cwd:b}),e="";d.stdout?.on("data",a=>{e+=a.toString()}),d.stderr?.on("data",a=>{e+=a.toString()}),d.on("error",()=>a({code:1,output:e})),d.on("exit",b=>a({code:b,output:e}))});if(!a())throw Error("Task run was superseded");if(!d.includes(e.code??-1))throw Error(e.output.trim()||`git ${c[0]} failed (${e.code})`);return{...e,output:e.output.trim()}}}async function W(a,b,c=!1){if((await a(b,["status","--porcelain=v1","--untracked-files=all",...c?["--ignored"]:[]])).output)throw Error(`Checkout has uncommitted or untracked changes: ${b}`)}async function X(a,b){if(!a.worktreePath||!a.workBranch||!a.baseBranch)throw Error("A worktree and explicit base/work branch are required");let c=`refs/heads/${a.baseBranch}`,d=`refs/heads/${a.workBranch}`;if(c===d)throw Error("Task branch must differ from the base branch");if((await b(a.projectRoot,["symbolic-ref","-q","HEAD"])).output!==c)throw Error(`Base checkout must be on branch ${a.baseBranch}; refusing to merge another branch`);if((await b(a.worktreePath,["symbolic-ref","-q","HEAD"])).output!==d)throw Error(`Worktree must be on branch ${a.workBranch}`);await W(b,a.projectRoot),await W(b,a.worktreePath);let e=(await b(a.projectRoot,["rev-parse","--verify",`${c}^{commit}`])).output,f=(await b(a.projectRoot,["rev-parse","--verify",`${d}^{commit}`])).output;return{baseRef:c,workRef:d,base:e,source:f}}async function Y(a,b){let c=globalThis,d=c.__piTaskMergeLocks??=new Map,e=(d.get(a)??Promise.resolve()).catch(()=>void 0).then(b);d.set(a,e);try{await e}finally{d.get(a)===e&&d.delete(a)}}async function Z(a,b,c){let d=m(),e=d?d.merging??=new Map:void 0,f={projectRoot:a.projectRoot,runSeq:a.runSeq};if(U(a,"merging")){e?.set(a.id,f);try{await Y(a.projectRoot,()=>$(a,b,c,()=>!e||e.get(a.id)===f))}finally{e?.get(a.id)===f&&e.delete(a.id)}}}async function $(a,b,c,d){let e,f=V(()=>d()&&U(a,"merging")&&(!c||!!A(c))),{baseRef:g,workRef:i,base:j,source:k}=await X(a,f),l=await f(a.projectRoot,["merge-base","--is-ancestor",k,j],[0,1]);if(0!==l.code){let c=b.message||`Merge task ${a.id}: ${a.title}`;if("squash"===b.strategy){await f(a.projectRoot,["merge","--squash","--no-commit",k]),e=(await f(a.projectRoot,["write-tree"])).output;let b=await f(a.projectRoot,["diff","--cached","--quiet"],[0,1]);1===b.code&&await f(a.projectRoot,["commit","-m",c])}else await f(a.projectRoot,["merge","--no-ff","--no-edit","-m",c,k])}let m=(await f(a.projectRoot,["rev-parse","--verify",`${g}^{commit}`])).output;if((await f(a.projectRoot,["symbolic-ref","-q","HEAD"])).output!==g)throw Error("Base branch changed during merge");if((await f(a.projectRoot,["rev-parse","--verify",`${i}^{commit}`])).output!==k)throw Error("Task branch changed during merge; keeping the worktree");if(await f(a.projectRoot,["merge-base","--is-ancestor",j,m]),e){if((await f(a.projectRoot,["rev-parse",`${m}^{tree}`])).output!==e)throw Error("Base commit does not contain the verified squash result")}else await f(a.projectRoot,["merge-base","--is-ancestor",k,m]);await W(f,a.projectRoot),await W(f,a.worktreePath),t(a.id,a.runSeq,["merging"],"done",{mergeCommit:m,lastError:null,finishedAt:o()})&&((0,h.Q1)(a.projectRoot,{taskId:a.id,kind:"merged",actor:"engine",payload:{commit:m,baseBranch:a.baseBranch}}),c&&G(c),b.deleteWorktree&&await _(a,k,m))}async function _(a,b,c){let d=V(()=>U(a,"done"));try{let e=`refs/heads/${a.workBranch}`;if((await d(a.projectRoot,["rev-parse","--verify",e])).output!==b)throw Error("Task branch changed after merge");if(await d(a.projectRoot,["merge-base","--is-ancestor",c,`refs/heads/${a.baseBranch}`]),await W(d,a.worktreePath,!0),!U(a,"done")||(await (0,g.IL)(a.projectRoot,a.worktreePath),!U(a,"done")))return;if((await (0,g.P9)(a.projectRoot)).some(b=>b.branch===a.workBranch))throw Error("Task branch is still checked out; keeping it");await d(a.projectRoot,["update-ref","-d",e,b])}catch(d){let b=(0,h._o)(a.projectRoot,a.id);if(!b||b.runSeq!==a.runSeq||"done"!==b.status)return;let c=d instanceof Error?d.message:String(d);p({...b,lastError:`Merged, but cleanup failed: ${c}`},"cleanup_failed","engine",{message:c})}}async function aa(a){let b=A(a);b&&"merging"===b.status&&a.mergeIntent&&await Z(b,a.mergeIntent,a)}d()}catch(a){d(a)}})}};
|