@henlii/pidance 0.1.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 +54 -0
- package/.next/build-manifest.json +20 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +114 -0
- package/.next/required-server-files.json +340 -0
- package/.next/routes-manifest.json +405 -0
- package/.next/server/app/_global-error/page.js +32 -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_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 +20 -0
- package/.next/server/app/_not-found.segments/_full.segment.rsc +20 -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 +5 -0
- package/.next/server/app/api/about/route.js +1 -0
- package/.next/server/app/api/about/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_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_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_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_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/running/events/route.js +3 -0
- package/.next/server/app/api/agent/running/events/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_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent-settings/route.js +2 -0
- package/.next/server/app/api/agent-settings/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/attachments/route.js +1 -0
- package/.next/server/app/api/attachments/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_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_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_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_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_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/ui-session/route.js +1 -0
- package/.next/server/app/api/auth/ui-session/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_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_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_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_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_client-reference-manifest.js +1 -0
- package/.next/server/app/api/git/diff/route.js +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 +1 -0
- package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/home/route.js +1 -0
- package/.next/server/app/api/home/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/route.js +1 -0
- package/.next/server/app/api/models/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models-config/route.js +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_client-reference-manifest.js +1 -0
- package/.next/server/app/api/plugins/route.js +2 -0
- package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/runtime/route.js +1 -0
- package/.next/server/app/api/runtime/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/runtime/switch/route.js +1 -0
- package/.next/server/app/api/runtime/switch/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/archive/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/archive/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +11 -0
- package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/command-entry/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/command-entry/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_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_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/export/route.js +67 -0
- package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/info/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/info/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_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_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/tool-results/[toolCallId]/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/tool-results/[toolCallId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/route.js +1 -0
- package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/search/route.js +26 -0
- package/.next/server/app/api/sessions/search/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_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/install/route.js +1 -0
- package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/route.js +2 -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_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_client-reference-manifest.js +1 -0
- package/.next/server/app/api/subagent-runs/route.js +1 -0
- package/.next/server/app/api/subagent-runs/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/route.js +1 -0
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -0
- package/.next/server/app/icon.png/route.js +1 -0
- package/.next/server/app/icon.png.body +0 -0
- package/.next/server/app/icon.png.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 +7 -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/page.js +26 -0
- package/.next/server/app/page_client-reference-manifest.js +1 -0
- package/.next/server/app-paths-manifest.json +54 -0
- package/.next/server/chunks/1069.js +23 -0
- package/.next/server/chunks/1089.js +1 -0
- package/.next/server/chunks/1130.js +79 -0
- package/.next/server/chunks/1207.js +36 -0
- package/.next/server/chunks/1515.js +1 -0
- package/.next/server/chunks/1570.js +24 -0
- package/.next/server/chunks/1605.js +1 -0
- package/.next/server/chunks/1707.js +93 -0
- package/.next/server/chunks/1734.js +1 -0
- package/.next/server/chunks/1792.js +38 -0
- package/.next/server/chunks/1813.js +1 -0
- package/.next/server/chunks/188.js +1 -0
- package/.next/server/chunks/1965.js +8 -0
- package/.next/server/chunks/2018.js +148 -0
- package/.next/server/chunks/2106.js +1 -0
- package/.next/server/chunks/2155.js +34 -0
- package/.next/server/chunks/2185.js +5 -0
- package/.next/server/chunks/2190.js +1 -0
- package/.next/server/chunks/2325.js +82 -0
- package/.next/server/chunks/2349.js +1 -0
- package/.next/server/chunks/2394.js +1 -0
- package/.next/server/chunks/2537.js +1 -0
- package/.next/server/chunks/2744.js +1 -0
- package/.next/server/chunks/2815.js +1 -0
- package/.next/server/chunks/2817.js +17 -0
- package/.next/server/chunks/2871.js +8 -0
- package/.next/server/chunks/2903.js +1 -0
- package/.next/server/chunks/3115.js +4 -0
- package/.next/server/chunks/319.js +45 -0
- package/.next/server/chunks/3252.js +115 -0
- package/.next/server/chunks/3379.js +1 -0
- package/.next/server/chunks/3504.js +1 -0
- package/.next/server/chunks/3533.js +1293 -0
- package/.next/server/chunks/3603.js +1 -0
- package/.next/server/chunks/3757.js +1 -0
- package/.next/server/chunks/3770.js +1 -0
- package/.next/server/chunks/3776.js +1 -0
- package/.next/server/chunks/3894.js +1 -0
- package/.next/server/chunks/3960.js +1 -0
- package/.next/server/chunks/4030.js +86 -0
- package/.next/server/chunks/4188.js +1 -0
- package/.next/server/chunks/4286.js +1 -0
- package/.next/server/chunks/4309.js +1 -0
- package/.next/server/chunks/4338.js +64 -0
- package/.next/server/chunks/4367.js +1 -0
- package/.next/server/chunks/4372.js +1 -0
- package/.next/server/chunks/4424.js +215 -0
- package/.next/server/chunks/443.js +32 -0
- package/.next/server/chunks/4485.js +1 -0
- package/.next/server/chunks/46.js +62 -0
- package/.next/server/chunks/4674.js +1 -0
- package/.next/server/chunks/4741.js +20 -0
- package/.next/server/chunks/4742.js +80 -0
- package/.next/server/chunks/4796.js +104 -0
- package/.next/server/chunks/4980.js +1 -0
- package/.next/server/chunks/5029.js +1 -0
- package/.next/server/chunks/5198.js +90 -0
- package/.next/server/chunks/5318.js +1 -0
- package/.next/server/chunks/5319.js +1 -0
- package/.next/server/chunks/5461.js +1 -0
- package/.next/server/chunks/5598.js +1 -0
- package/.next/server/chunks/5627.js +1 -0
- package/.next/server/chunks/6192.js +6 -0
- package/.next/server/chunks/6219.js +41 -0
- package/.next/server/chunks/6337.js +1 -0
- package/.next/server/chunks/6454.js +28 -0
- package/.next/server/chunks/6476.js +27 -0
- package/.next/server/chunks/6509.js +153 -0
- package/.next/server/chunks/6949.js +1 -0
- package/.next/server/chunks/6953.js +1 -0
- package/.next/server/chunks/703.js +1 -0
- package/.next/server/chunks/7075.js +1 -0
- package/.next/server/chunks/7129.js +6 -0
- package/.next/server/chunks/7152.js +1 -0
- package/.next/server/chunks/7181.js +160 -0
- package/.next/server/chunks/7233.js +1 -0
- package/.next/server/chunks/7307.js +1 -0
- package/.next/server/chunks/7434.js +77 -0
- package/.next/server/chunks/7527.js +1 -0
- package/.next/server/chunks/7561.js +1 -0
- package/.next/server/chunks/7872.js +1 -0
- package/.next/server/chunks/7914.js +226 -0
- package/.next/server/chunks/8213.js +1 -0
- package/.next/server/chunks/8267.js +24 -0
- package/.next/server/chunks/8294.js +1 -0
- package/.next/server/chunks/835.js +1 -0
- package/.next/server/chunks/8645.js +141 -0
- package/.next/server/chunks/8875.js +2 -0
- package/.next/server/chunks/9071.js +1 -0
- package/.next/server/chunks/9081.js +1 -0
- package/.next/server/chunks/9169.js +1 -0
- package/.next/server/chunks/9280.js +255 -0
- package/.next/server/chunks/940.js +287 -0
- package/.next/server/chunks/9486.js +1 -0
- package/.next/server/chunks/9509.js +1 -0
- package/.next/server/chunks/951.js +8 -0
- package/.next/server/chunks/9784.js +2 -0
- package/.next/server/chunks/981.js +2 -0
- package/.next/server/chunks/9874.js +1 -0
- package/.next/server/chunks/9883.js +2 -0
- package/.next/server/functions-config-manifest.json +21 -0
- package/.next/server/instrumentation.js +1 -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 +18 -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/M5hSQWk4seDK1NGMqmgGY/_buildManifest.js +1 -0
- package/.next/static/M5hSQWk4seDK1NGMqmgGY/_ssgManifest.js +1 -0
- package/.next/static/chunks/050357b0.986bc6597f184c3b.js +62 -0
- package/.next/static/chunks/1212.c32f02f461182c5b.js +226 -0
- package/.next/static/chunks/127.394be8b7a579a747.js +8 -0
- package/.next/static/chunks/1327.09252bb80616cc3a.js +1 -0
- package/.next/static/chunks/1377.e883e13864574c26.js +36 -0
- package/.next/static/chunks/1390.3e7d84d187924556.js +104 -0
- package/.next/static/chunks/1438.d742ea00e0f072ca.js +27 -0
- package/.next/static/chunks/1474.605367a77b6161a0.js +115 -0
- package/.next/static/chunks/1576.93e0666990c12243.js +38 -0
- package/.next/static/chunks/1951.4b73bf47740c2bfb.js +160 -0
- package/.next/static/chunks/2081.47b6e9391094055f.js +1 -0
- package/.next/static/chunks/2178.2adcd2b51553bd50.js +1 -0
- package/.next/static/chunks/2217.4bf1455eb89bdd9b.js +1 -0
- package/.next/static/chunks/2325.23caf22075e51aa5.js +1 -0
- package/.next/static/chunks/2356.52627097a8b56ec1.js +1 -0
- package/.next/static/chunks/2418.b5d9e177e10a686e.js +1 -0
- package/.next/static/chunks/249.973d23a3940a5fc9.js +1 -0
- package/.next/static/chunks/2554.ca4cb2f8bc69f32e.js +86 -0
- package/.next/static/chunks/2566.505384571dedf726.js +79 -0
- package/.next/static/chunks/2646.c653cac657d7b035.js +215 -0
- package/.next/static/chunks/2784.3d8e0d20edb71dcd.js +64 -0
- package/.next/static/chunks/2821.934bcf60fbdc28c6.js +1 -0
- package/.next/static/chunks/2847.b66f6d92e4f5e495.js +23 -0
- package/.next/static/chunks/2866.4ecb766127917d99.js +1 -0
- package/.next/static/chunks/28f0fb3b.5f2b0099c24fbe32.js +122 -0
- package/.next/static/chunks/3308.23eadd1744bb967c.js +73 -0
- package/.next/static/chunks/3316.5c51b238308a838b.js +34 -0
- package/.next/static/chunks/3341.6042c7cb7225d88d.js +41 -0
- package/.next/static/chunks/339.1a094bb1c6eaf9dc.js +1 -0
- package/.next/static/chunks/370.57cfa27da8567918.js +1 -0
- package/.next/static/chunks/3708.81252290870c8487.js +1 -0
- package/.next/static/chunks/3794-907785a527d8128b.js +32 -0
- package/.next/static/chunks/3832.5d713641634c65b5.js +24 -0
- package/.next/static/chunks/4368.e43e952c5535cba6.js +80 -0
- package/.next/static/chunks/4424.fd0c93a807a333e1.js +1 -0
- package/.next/static/chunks/4866.d1060b4faf2ae1e2.js +1 -0
- package/.next/static/chunks/4bd1b696-e356ca5ba0218e27.js +1 -0
- package/.next/static/chunks/5020.9ac8d0dc8390bb6e.js +1 -0
- package/.next/static/chunks/5166.7d3648847337fe52.js +62 -0
- package/.next/static/chunks/5242.7b643c6b3394cac1.js +1 -0
- package/.next/static/chunks/5361.afc00ab2626bacbf.js +1 -0
- package/.next/static/chunks/5460.0337c14f29b9ff9a.js +90 -0
- package/.next/static/chunks/5521.cfdf2cfc6db31407.js +1 -0
- package/.next/static/chunks/5531-66b1a21ff1c52081.js +1 -0
- package/.next/static/chunks/5715.048f1bae2c41fa89.js +1 -0
- package/.next/static/chunks/6121.5b8cb3199531d194.js +1 -0
- package/.next/static/chunks/6294.24f510c0c3e3714c.js +1 -0
- package/.next/static/chunks/6467.b354ed428e3bef01.js +5 -0
- package/.next/static/chunks/66d203d7.3e90bc8f1f096a8e.js +153 -0
- package/.next/static/chunks/6787.a15de946178e8ef7.js +1 -0
- package/.next/static/chunks/7176.2979806e91c0df29.js +1 -0
- package/.next/static/chunks/7256.e07cf52d87d40252.js +1 -0
- package/.next/static/chunks/7543.89f7b805ed0f2901.js +1 -0
- package/.next/static/chunks/776.fe8e64ab3669a915.js +287 -0
- package/.next/static/chunks/8118.f905a690db2b859b.js +148 -0
- package/.next/static/chunks/8233.a465d18b04719c6d.js +141 -0
- package/.next/static/chunks/8249.7a48897e80a16391.js +1 -0
- package/.next/static/chunks/8365.dc22e1ff76d04a3b.js +93 -0
- package/.next/static/chunks/8498.1083c36ddbbedd69.js +1 -0
- package/.next/static/chunks/8511.c7c064a8f58f1355.js +1 -0
- package/.next/static/chunks/869.7152372b662e31af.js +1 -0
- package/.next/static/chunks/8782.9ab86081b5661687.js +77 -0
- package/.next/static/chunks/8863.fa0320ea586efb3b.js +1 -0
- package/.next/static/chunks/8953.e5e7399c7952a1ff.js +1 -0
- package/.next/static/chunks/90542734.b75ad0df50bf68f5.js +1 -0
- package/.next/static/chunks/9165.02dc1f4804b94791.js +24 -0
- package/.next/static/chunks/934.9006461bd0548660.js +1 -0
- package/.next/static/chunks/9522.c7c6e9c330f9ba6b.js +1 -0
- package/.next/static/chunks/9667.f6918525b31688b4.js +1 -0
- package/.next/static/chunks/9705.40a82b97f214e28b.js +1 -0
- package/.next/static/chunks/9780-509b4d1bec6b6e17.js +1 -0
- package/.next/static/chunks/9793.4567af813117ad25.js +1 -0
- package/.next/static/chunks/app/_global-error/page-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/_not-found/page-32c24c2d341ba407.js +1 -0
- package/.next/static/chunks/app/api/about/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/agent/running/events/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/agent-settings/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/attachments/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/auth/ui-session/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/home/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/models/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/runtime/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/runtime/switch/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/archive/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/command-entry/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/info/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/tool-results/[toolCallId]/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/skills/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/subagent-runs/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/app/layout-88764b4be2728d3f.js +1 -0
- package/.next/static/chunks/app/page-f1ebfa55dc4bd91c.js +25 -0
- package/.next/static/chunks/d2c09beb.4f5ff7197b5bbbea.js +1 -0
- package/.next/static/chunks/d3ac728e-7964f816a1ca64e5.js +1 -0
- package/.next/static/chunks/da12927c.00775c0e4542fd3e.js +82 -0
- package/.next/static/chunks/framework-711ef29bc66f648c.js +1 -0
- package/.next/static/chunks/main-8e7ef001ea9dd641.js +5 -0
- package/.next/static/chunks/main-app-06b2b50b226e40d1.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-f351187b7f546530.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-451d6ba79f90a9c4.js +1 -0
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/.next/static/chunks/webpack-9f5e68be126b5e81.js +1 -0
- package/.next/static/css/88714c00e109ce28.css +1 -0
- package/.next/static/css/edecf7d5ab33f0fd.css +1 -0
- package/.next/static/media/15605e25b523335c-s.woff2 +0 -0
- package/.next/static/media/1a3dce5cfb5f7760-s.woff2 +0 -0
- package/.next/static/media/1cdd02902f937a18-s.woff2 +0 -0
- package/.next/static/media/4c4b3b30b6bcb2be-s.woff2 +0 -0
- package/.next/static/media/641a7b8a5800ee0e-s.woff2 +0 -0
- package/.next/static/media/7deddc85b7ffd1dc-s.p.woff2 +0 -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/static/media/ec14413c594b3356-s.p.woff2 +0 -0
- package/LICENSE +22 -0
- package/README.en.md +151 -0
- package/README.md +151 -0
- package/README.zh-CN.md +182 -0
- package/bin/pidance-auth-gate.js +44 -0
- package/bin/pidance-options.js +34 -0
- package/bin/pidance.js +95 -0
- package/package.json +92 -0
- package/public/brand/pidance-banner.svg +45 -0
- package/public/brand/pidance-icon.svg +32 -0
- package/public/brand/pidance-logo.png +0 -0
- package/public/brand/pidance-mark-dark.svg +18 -0
- package/public/brand/pidance-mark-light.svg +18 -0
- package/public/brand/pidance-mark.png +0 -0
- package/public/brand/pidance-preview.svg +279 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 agegr
|
|
4
|
+
Copyright (c) 2026 Henry Li
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
package/README.en.md
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./docs/assets/pidance-banner.png" alt="Pidance — Move with Pi" width="760">
|
|
3
|
+
<p><strong>Let Pi sessions, tools, and project workflows move naturally in the browser.</strong></p>
|
|
4
|
+
<p>
|
|
5
|
+
<a href="./README.md">简体中文</a> ·
|
|
6
|
+
<a href="https://github.com/henlii/pidance/issues">Issues</a> ·
|
|
7
|
+
<a href="./docs/release.md">Release guide</a>
|
|
8
|
+
</p>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
Pidance is an open-source web client for the [Pi](https://github.com/badlogic/pi-mono) coding agent. It reads local Pi session files directly and preserves Pi SDK session and runtime semantics, bringing live chat, project files, Git, worktrees, subagents, and configuration into one browser workspace. Pi remains the source of truth for data and execution semantics; Pidance provides a clearer and more complete interface.
|
|
12
|
+
|
|
13
|
+
> Current version: `0.1.0` · npm package: `@henlii/pidance` · CLI: `pidance`
|
|
14
|
+
|
|
15
|
+
## Preview
|
|
16
|
+
|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
<p align="center"><sub>New-session workspace with project and worktree selectors, model controls, and contextual side panels. The path shown is anonymized.</sub></p>
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
<p align="center"><sub>Appearance settings with Light, Dark, System, Chamber, and Fusion options.</sub></p>
|
|
24
|
+
|
|
25
|
+
## Features
|
|
26
|
+
|
|
27
|
+
- **Project-oriented sessions**: browse a Project → Worktree → Session tree with search, recent sessions, archive/restore, rename, automatic titles, and HTML export.
|
|
28
|
+
- **Live agent chat**: stream responses, thinking, tool calls, ANSI terminal output, compaction, and running state over SSE, with reconciliation after reconnects.
|
|
29
|
+
- **Safe exploration**: continue from an earlier message, create an in-session branch, or fork to an independent `.jsonl` session without conflating those semantics.
|
|
30
|
+
- **Project workspace**: browse and preview source, Markdown, images, audio, PDFs, and DOCX; search files, use `@` mentions, and inspect Git status and diffs.
|
|
31
|
+
- **Git worktree workflow**: select, create, and remove worktrees in the UI while new sessions and the file workspace follow the chosen checkout.
|
|
32
|
+
- **Pi ecosystem integration**: inspect synchronous and asynchronous subagent run status, interact with generic extension UI cards, and view read-only projections of structured todos.
|
|
33
|
+
- **Central configuration**: manage provider authentication, API keys, models and model tests, session defaults, skills, plugins, and project trust.
|
|
34
|
+
- **Polished interface**: responsive desktop/mobile layouts, a command palette, session minimap, completion sound, English and Chinese, plus Light / Dark / System themes.
|
|
35
|
+
- **Explicit security boundaries**: project file allowlists, path and symlink checks, Host and CSRF guards, and mandatory passwords for non-loopback listeners.
|
|
36
|
+
|
|
37
|
+
## Quick start
|
|
38
|
+
|
|
39
|
+
Node.js `>= 20.9.0` is required.
|
|
40
|
+
|
|
41
|
+
### Run without installing
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx @henlii/pidance@latest
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Install globally
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm install -g @henlii/pidance
|
|
51
|
+
pidance
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Open [http://localhost:31415](http://localhost:31415) when the server is ready. The CLI attempts to open the browser by default.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pidance --port 8080
|
|
58
|
+
pidance --hostname 127.0.0.1
|
|
59
|
+
pidance -p 8080 -H 127.0.0.1
|
|
60
|
+
pidance --no-open
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`PORT` and `PIDANCE_NO_OPEN=1` are also supported. Pidance reads `~/.pi/agent` by default; set `PI_CODING_AGENT_DIR` to use another Pi agent directory.
|
|
64
|
+
|
|
65
|
+
### Remote or LAN access
|
|
66
|
+
|
|
67
|
+
Listening on `0.0.0.0`, `::`, a LAN address, or another non-loopback host requires a password. The CLI refuses to start without one:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
PIDANCE_PASSWORD='use-a-strong-password' pidance --hostname 0.0.0.0
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
For local-only use, bind explicitly to `127.0.0.1`. The legacy `PI_WEB_PASSWORD` variable remains compatible; new deployments should prefer `PIDANCE_PASSWORD`.
|
|
74
|
+
|
|
75
|
+
### HTTP proxy
|
|
76
|
+
|
|
77
|
+
Server-side model and API requests honor `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY`:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
HTTPS_PROXY=http://127.0.0.1:7890 \
|
|
81
|
+
NO_PROXY=localhost,127.0.0.1 \
|
|
82
|
+
pidance
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Development and testing
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm install
|
|
89
|
+
npm run dev # http://localhost:31415
|
|
90
|
+
npm run check # typecheck + lint + unit tests
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Additional acceptance checks:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npm run verify:render-bridge # real pi-subagents rendering bridge
|
|
97
|
+
npm run test:browser # browser regression against 31416 by default
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Do **not** run `npm run build` or `next build` during everyday development: it writes to `.next/` and can disrupt the development server. Production builds belong in an isolated release checkout through `npm run release:check`.
|
|
101
|
+
|
|
102
|
+
### Continuous test deployment (31416)
|
|
103
|
+
|
|
104
|
+
After application code changes, deploy the current workspace to the isolated production-mode test service:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
node .agents/skills/pidance-development/scripts/local-deploy.mjs restart
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
| Port | Purpose |
|
|
111
|
+
| --- | --- |
|
|
112
|
+
| **31415** | Pidance product default: CLI, stable installation, `npm run dev` / `npm start` |
|
|
113
|
+
| **31416** | Continuous workspace test build in isolated `.next-public`; never public-proxied |
|
|
114
|
+
| **30141** | Upstream pi-web; this repository never operates it |
|
|
115
|
+
|
|
116
|
+
## Release process
|
|
117
|
+
|
|
118
|
+
Formal releases use a two-stage audit gate: run checks and the build in an isolated checkout, audit the prospective package, explicitly create the tgz, and then audit the real archive. Only that same accepted tgz may be used for installation smoke tests, npm, and the GitHub Release. No script automatically changes versions, creates tags, pushes, or publishes.
|
|
119
|
+
|
|
120
|
+
See [docs/release.md](./docs/release.md) for the complete procedure.
|
|
121
|
+
|
|
122
|
+
## Architecture
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
Browser
|
|
126
|
+
├─ Session / file / Git REST APIs ─▶ Next.js Route Handlers ─▶ local disk and Pi config
|
|
127
|
+
├─ Send message ───────────────────▶ SessionService ──────────▶ AgentSession
|
|
128
|
+
└─ SSE events ◀──────────────────── EventStreamManager ◀───── AgentSession events
|
|
129
|
+
|
|
130
|
+
~/.pi/agent/sessions/*.jsonl always remains the session source of truth
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- **Read-only browsing** parses Pi `.jsonl` sessions without creating an AgentSession.
|
|
134
|
+
- **Sending a message** creates or reuses an in-process AgentSession wrapper on the server.
|
|
135
|
+
- Session service, event streaming, extension UI, project context, and chat composition form one-way seams so the UI cannot bypass session lifecycle rules.
|
|
136
|
+
- File endpoints only expose explicit roots such as selected projects, worktrees, and session working directories.
|
|
137
|
+
|
|
138
|
+
## Documentation
|
|
139
|
+
|
|
140
|
+
- [Git worktrees](./docs/worktrees.md)
|
|
141
|
+
- [Release and package auditing](./docs/release.md)
|
|
142
|
+
- [Interface design system](./docs/ui-redesign/README.md)
|
|
143
|
+
- [Theme tokens](./docs/ui-redesign/theme-tokens.md)
|
|
144
|
+
- [Chat architecture refactor](./docs/chat-refactor-plan.md)
|
|
145
|
+
- [OpenChamber upgrade evaluation](./docs/openchamber-upgrade-evaluation-2026-08-05.md)
|
|
146
|
+
|
|
147
|
+
## Upstream and license
|
|
148
|
+
|
|
149
|
+
Pidance is derived from [agegr/pi-web](https://github.com/agegr/pi-web) and is built around the session and runtime semantics of [badlogic/pi-mono](https://github.com/badlogic/pi-mono). Many thanks to both upstream projects and their contributors.
|
|
150
|
+
|
|
151
|
+
Pidance is available under the [MIT License](./LICENSE). Upstream and derivative-work notices are retained in LICENSE: Copyright © 2026 agegr; Copyright © 2026 Henry Li.
|
package/README.md
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./docs/assets/pidance-banner.png" alt="Pidance — Move with Pi" width="760">
|
|
3
|
+
<p><strong>让 Pi 的会话、工具与项目工作流在浏览器里自然舞动。</strong></p>
|
|
4
|
+
<p>
|
|
5
|
+
<a href="./README.en.md">English</a> ·
|
|
6
|
+
<a href="https://github.com/henlii/pidance/issues">问题反馈</a> ·
|
|
7
|
+
<a href="./docs/release.md">发布说明</a>
|
|
8
|
+
</p>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
Pidance 是面向 [Pi](https://github.com/badlogic/pi-mono) coding agent 的开源 Web 客户端。它直接读取本机 Pi 会话文件,并沿用 Pi SDK 的会话与运行时语义,把实时对话、项目文件、Git、工作树、子代理和配置管理汇集到一个浏览器工作区。Pi 仍是数据与执行语义的事实来源;Pidance 负责提供更清晰、更完整的操作界面。
|
|
12
|
+
|
|
13
|
+
> 当前版本:`0.1.0` · npm 包:`@henlii/pidance` · CLI:`pidance`
|
|
14
|
+
|
|
15
|
+
## 界面预览
|
|
16
|
+
|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
<p align="center"><sub>新会话工作区:项目与工作树选择、模型、思考等级和右侧上下文面板。截图中的路径已脱敏。</sub></p>
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
<p align="center"><sub>外观设置:浅色、深色、跟随系统,以及 Chamber / Fusion 两套主题风格。</sub></p>
|
|
24
|
+
|
|
25
|
+
## 功能特性
|
|
26
|
+
|
|
27
|
+
- **项目化会话空间**:按 Project → Worktree → Session 浏览会话树,支持搜索、最近会话、归档、恢复、重命名、自动命名与 HTML 导出。
|
|
28
|
+
- **实时 Agent 对话**:通过 SSE 呈现流式回复、思考过程、工具调用、终端 ANSI 输出、压缩状态和运行中状态;页面恢复后自动对账。
|
|
29
|
+
- **安全探索不同方向**:从历史消息继续、创建会话内分支,或 fork 为独立 `.jsonl` 会话;两种分支语义清晰分离。
|
|
30
|
+
- **项目工作区**:浏览与预览源码、Markdown、图片、音频、PDF 和 DOCX,支持文件搜索、`@` 引用、Git 状态与 diff。
|
|
31
|
+
- **Git worktree 工作流**:在界面内选择、创建和移除工作树,新会话与文件工作区自动跟随所选 checkout。
|
|
32
|
+
- **Pi 生态集成**:展示同步与异步子代理运行状态、通用扩展 UI 卡片与交互,以及结构化 Todos 的只读投影。
|
|
33
|
+
- **集中配置**:管理供应商认证、API Key、模型与测试、会话默认值、技能、插件和项目信任。
|
|
34
|
+
- **精心打磨的界面**:响应式桌面/移动布局、命令面板、会话 minimap、完成提示音、中英双语,以及 Light / Dark / System 主题。
|
|
35
|
+
- **边界明确的安全设计**:项目文件 allow-list、路径与符号链接检查、Host/CSRF 防护;非回环监听必须配置密码。
|
|
36
|
+
|
|
37
|
+
## 快速开始
|
|
38
|
+
|
|
39
|
+
需要 Node.js `>= 20.9.0`。
|
|
40
|
+
|
|
41
|
+
### 无需安装
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx @henlii/pidance@latest
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 全局安装
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm install -g @henlii/pidance
|
|
51
|
+
pidance
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
服务就绪后访问 [http://localhost:31415](http://localhost:31415)。CLI 默认会尝试打开浏览器。
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pidance --port 8080
|
|
58
|
+
pidance --hostname 127.0.0.1
|
|
59
|
+
pidance -p 8080 -H 127.0.0.1
|
|
60
|
+
pidance --no-open
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
也可使用 `PORT` 与 `PIDANCE_NO_OPEN=1`。Pidance 默认读取 `~/.pi/agent`;可通过 `PI_CODING_AGENT_DIR` 指向其他 Pi agent 目录。
|
|
64
|
+
|
|
65
|
+
### 远程或局域网访问
|
|
66
|
+
|
|
67
|
+
绑定 `0.0.0.0`、`::`、局域网 IP 或其他非回环地址时,必须设置认证密码,否则 CLI 会拒绝启动:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
PIDANCE_PASSWORD='请使用强密码' pidance --hostname 0.0.0.0
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
仅本机访问时建议显式绑定 `127.0.0.1`。兼容旧变量 `PI_WEB_PASSWORD`,新部署优先使用 `PIDANCE_PASSWORD`。
|
|
74
|
+
|
|
75
|
+
### HTTP 代理
|
|
76
|
+
|
|
77
|
+
服务端模型与 API 请求读取标准的 `HTTP_PROXY`、`HTTPS_PROXY` 和 `NO_PROXY`:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
HTTPS_PROXY=http://127.0.0.1:7890 \
|
|
81
|
+
NO_PROXY=localhost,127.0.0.1 \
|
|
82
|
+
pidance
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## 开发与测试
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm install
|
|
89
|
+
npm run dev # http://localhost:31415
|
|
90
|
+
npm run check # typecheck + lint + 单元测试
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
其他验收入口:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npm run verify:render-bridge # 真实 pi-subagents 渲染桥
|
|
97
|
+
npm run test:browser # 浏览器回归,默认访问 31416
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
日常开发**不要**执行 `npm run build` 或 `next build`:它会写入 `.next/` 并干扰开发服务。正式构建只在隔离发布 checkout 中通过 `npm run release:check` 执行。
|
|
101
|
+
|
|
102
|
+
### 持续测试部署(31416)
|
|
103
|
+
|
|
104
|
+
每次应用代码修改完成后,将当前工作区部署到隔离的生产模式测试服务:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
node .agents/skills/pidance-development/scripts/local-deploy.mjs restart
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
| 端口 | 用途 |
|
|
111
|
+
| --- | --- |
|
|
112
|
+
| **31415** | Pidance 产品默认:CLI、稳定安装版、`npm run dev` / `npm start` |
|
|
113
|
+
| **31416** | 当前工作区持续测试版:`.next-public` 隔离生产构建,不对外反代 |
|
|
114
|
+
| **30141** | 上游 pi-web;本仓绝不操作 |
|
|
115
|
+
|
|
116
|
+
## 发布
|
|
117
|
+
|
|
118
|
+
正式发布采用“双审计”门禁:隔离 checkout 中完成质量检查与构建,生成前审计包清单和内容,显式 `npm pack`,再审计真实 tgz;同一份已验收 tgz 才能用于安装冒烟、npm 与 GitHub Release。脚本不会自动改版本、打 tag、push 或 publish。
|
|
119
|
+
|
|
120
|
+
完整步骤见 [docs/release.md](./docs/release.md)。
|
|
121
|
+
|
|
122
|
+
## 架构概览
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
浏览器
|
|
126
|
+
├─ 会话 / 文件 / Git REST API ──▶ Next.js Route Handlers ──▶ 本地磁盘与 Pi 配置
|
|
127
|
+
├─ 发送消息 ───────────────────▶ SessionService ───────────▶ AgentSession
|
|
128
|
+
└─ SSE 事件流 ◀──────────────── EventStreamManager ◀────── AgentSession 事件
|
|
129
|
+
|
|
130
|
+
~/.pi/agent/sessions/*.jsonl 始终是会话事实来源
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- **只读浏览**直接解析 Pi `.jsonl` 会话,不创建 AgentSession。
|
|
134
|
+
- **发送消息**时才在服务端进程内创建或复用 AgentSession wrapper。
|
|
135
|
+
- 会话服务、事件流、扩展 UI、项目上下文和聊天合成器按单向 seam 分层,避免 UI 绕过会话生命周期。
|
|
136
|
+
- 文件端点仅允许访问已选择项目、工作树和会话工作目录等明确根路径。
|
|
137
|
+
|
|
138
|
+
## 文档
|
|
139
|
+
|
|
140
|
+
- [Git worktree 使用说明](./docs/worktrees.zh-CN.md)
|
|
141
|
+
- [发布与制品审计](./docs/release.md)
|
|
142
|
+
- [界面设计与主题规范](./docs/ui-redesign/README.md)
|
|
143
|
+
- [主题 Token](./docs/ui-redesign/theme-tokens.md)
|
|
144
|
+
- [会话系统重构说明](./docs/chat-refactor-plan.md)
|
|
145
|
+
- [OpenChamber 升级评估](./docs/openchamber-upgrade-evaluation-2026-08-05.md)
|
|
146
|
+
|
|
147
|
+
## 上游与许可
|
|
148
|
+
|
|
149
|
+
Pidance 源自 [agegr/pi-web](https://github.com/agegr/pi-web),并围绕 [badlogic/pi-mono](https://github.com/badlogic/pi-mono) 的会话与运行时语义构建。感谢两个上游项目及其贡献者。
|
|
150
|
+
|
|
151
|
+
本项目采用 [MIT License](./LICENSE)。上游版权与派生作品声明保留于 LICENSE:Copyright © 2026 agegr;Copyright © 2026 Henry Li。
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Pidance
|
|
2
|
+
|
|
3
|
+
[English](./README.md)
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
Pidance 是基于 [Pi](https://github.com/badlogic/pi-mono) 的统一 Agent 工作空间上层客户端。它不脱离 Pi,而是读取本机 Pi 会话文件并遵循 Pi 的运行时语义,在浏览器里提供会话管理、实时对话、模型配置、技能管理和项目文件预览。
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
*样例数据产品预览:会话侧边栏、包含工具卡片的对话区与文件工作区。图中内容均为示意样例数据,并非真实运行会话。*
|
|
12
|
+
|
|
13
|
+
## 路线图
|
|
14
|
+
|
|
15
|
+
路线图、实施进度和验收标准统一记录在各阶段 tracking Issue 中:
|
|
16
|
+
|
|
17
|
+
- [第一阶段:架构 seam 与 OpenChamber 风格产品改造](https://github.com/henlii/pidance/issues/1)
|
|
18
|
+
- [第二阶段:补齐 Pi 生态高价值盲区(待办镜像、会话全文搜索、subagent 结果卡片、项目信任)](https://github.com/henlii/pidance/issues/2)
|
|
19
|
+
- [第三阶段:Pi 扩展生态可观测性与 Agent 默认值设置](https://github.com/henlii/pidance/issues/3)
|
|
20
|
+
- [第四阶段:辅助信息面与低频能力(统计、结果浏览、克隆、模板、版本)](https://github.com/henlii/pidance/issues/4)
|
|
21
|
+
|
|
22
|
+
## Upstream / 上游来源
|
|
23
|
+
|
|
24
|
+
Pidance 源自 [agegr/pi-web](https://github.com/agegr/pi-web),遵循 MIT License;底层运行时来自 [badlogic/pi-mono](https://github.com/badlogic/pi-mono)。项目保留 Pi 的会话文件格式与运行时语义,现有 Pi 数据仍是事实来源。上游版权和派生作品说明保留在 [LICENSE](./LICENSE) 中。
|
|
25
|
+
|
|
26
|
+
## 快速开始
|
|
27
|
+
|
|
28
|
+
**无需安装,直接运行:**
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npx @henlii/pidance@latest
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**或全局安装后使用:**
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g @henlii/pidance
|
|
38
|
+
pidance
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
启动后打开 [http://localhost:31415](http://localhost:31415)。命令行版本会在服务就绪后尝试自动打开浏览器。
|
|
42
|
+
|
|
43
|
+
**可选参数:**
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
pidance --port 8080 # 自定义端口
|
|
47
|
+
pidance --hostname 127.0.0.1 # 仅本机访问
|
|
48
|
+
pidance -p 8080 -H 127.0.0.1 # 组合使用
|
|
49
|
+
pidance --no-open # 不自动打开浏览器
|
|
50
|
+
|
|
51
|
+
PORT=8080 pidance # 也支持环境变量
|
|
52
|
+
PIDANCE_NO_OPEN=1 pidance # 不自动打开浏览器(适用于后台服务或开机自启)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## HTTP 代理
|
|
56
|
+
|
|
57
|
+
Pidance 的服务端模型请求和 API 请求会读取标准的 `HTTP_PROXY`、`HTTPS_PROXY` 和 `NO_PROXY` 环境变量。
|
|
58
|
+
|
|
59
|
+
macOS 或 Linux:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
HTTP_PROXY=http://127.0.0.1:7890 \
|
|
63
|
+
HTTPS_PROXY=http://127.0.0.1:7890 \
|
|
64
|
+
NO_PROXY=localhost,127.0.0.1 \
|
|
65
|
+
npx @henlii/pidance@latest
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Windows PowerShell:
|
|
69
|
+
|
|
70
|
+
```powershell
|
|
71
|
+
$env:HTTP_PROXY = "http://127.0.0.1:7890"
|
|
72
|
+
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
|
|
73
|
+
$env:NO_PROXY = "localhost,127.0.0.1"
|
|
74
|
+
npx @henlii/pidance@latest
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 功能介绍
|
|
78
|
+
|
|
79
|
+
- **把历史工作接回来**:打开网页就能按项目找到以前的 pi 对话,不必在终端里翻文件或记住会话路径。
|
|
80
|
+
- **放心试不同方向**:可以从某条历史消息重新开始,也可以复制出一条独立的新路线,探索方案时不怕弄乱原来的对话。
|
|
81
|
+
- **跨分支工作**:在侧边栏切换 Git worktree,让新会话和 Explorer 跟随你选择的 checkout。
|
|
82
|
+
- **边聊边看项目文件**:左侧浏览项目文件,右侧打开源码、文档、图片、音频和 PDF;文件变化会自动刷新,适合边让 agent 改边检查结果。
|
|
83
|
+
- **随时掌握会话状态**:在顶部就能看到上下文占用、花费、压缩结果和系统提示,长会话不再像黑箱。
|
|
84
|
+
- **少离开当前界面**:模型、登录/API key、模型测试和技能开关都能在网页里处理,配置 agent 时不用在多个工具之间来回切换。
|
|
85
|
+
|
|
86
|
+
## 注意事项
|
|
87
|
+
|
|
88
|
+
- **数据目录**:默认读取 `~/.pi/agent/sessions` 下的会话文件。可通过环境变量 `PI_CODING_AGENT_DIR` 指定其他 pi agent 目录。
|
|
89
|
+
- **会话文件**:路径形如 `~/.pi/agent/sessions/<编码后的工作目录>/<时间戳>_<uuid>.jsonl`。
|
|
90
|
+
- **模型配置**:Models 面板读写 pi agent 目录下的 `models.json`,模型列表和默认模型由 pi 的配置解析得到。
|
|
91
|
+
- **文件访问**:文件浏览和预览面向当前选择的项目目录,以及会话中已出现过的工作目录。
|
|
92
|
+
- **Git worktree**:什么时候显示切换器、新建目录在哪里、删除会影响什么,见 [Pidance 里的 Worktree](./docs/worktrees.zh-CN.md)。
|
|
93
|
+
- **Fork 与会话内分支不同**:Fork 会创建新的 `.jsonl` 文件;“Edit from here” 是同一会话文件里的分支。
|
|
94
|
+
|
|
95
|
+
## 开发
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
npm install
|
|
99
|
+
npm run dev
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
本地开发端口为 [http://localhost:31415](http://localhost:31415)(Pidance 产品默认;`30141` 留给上游 pi-web)。
|
|
103
|
+
|
|
104
|
+
| 端口 | 角色 |
|
|
105
|
+
|------|------|
|
|
106
|
+
| **31415** | 产品默认(`npm run dev` / `npm start` / CLI `pidance`) |
|
|
107
|
+
| **31416** | 持续本地测试部署(`local-deploy.mjs`,Next dev,不对公网) |
|
|
108
|
+
| **30141** | 上游 pi-web / 既有服务 — 禁止操作 |
|
|
109
|
+
|
|
110
|
+
常用检查:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
node_modules/.bin/tsc --noEmit
|
|
114
|
+
npm run lint
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
开发时不要运行 `next build` / `npm run build`,它会写入 `.next/`,容易影响正在运行的 dev server。发布流程再执行构建。
|
|
118
|
+
|
|
119
|
+
## 项目结构
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
app/
|
|
123
|
+
api/
|
|
124
|
+
agent/ # 创建/驱动 AgentSession,提供 SSE 事件流和 bash 输出
|
|
125
|
+
auth/ # OAuth 和 API key 管理
|
|
126
|
+
cwd/validate/ # 自定义工作目录校验
|
|
127
|
+
default-cwd/ # 获取 pi 默认工作目录
|
|
128
|
+
files/ # 文件列表、读取、预览、搜索、上传和 watch
|
|
129
|
+
file-index/ # 项目文件索引和 @ 提及搜索
|
|
130
|
+
git/ # 当前项目的 Git diff 和 status
|
|
131
|
+
home/ # 当前用户 home 目录
|
|
132
|
+
models/ # 可用模型、默认模型、thinking levels
|
|
133
|
+
models-config/ # 读写 models.json、测试模型
|
|
134
|
+
plugins/ # package 插件管理
|
|
135
|
+
sessions/ # 会话读取、重命名、自动命名、删除、上下文、状态、延迟 thinking 和 HTML 导出
|
|
136
|
+
skills/ # skills 列表、搜索、安装、更新、检查和启停
|
|
137
|
+
worktrees/ # Git worktree 列表、新建和删除
|
|
138
|
+
components/
|
|
139
|
+
AppShell.tsx # 主布局、URL 状态、顶部面板、文件标签
|
|
140
|
+
SessionSidebar.tsx # 项目选择、会话树、Explorer
|
|
141
|
+
ChatWindow.tsx # 消息区、SSE、拖拽图片、minimap
|
|
142
|
+
ChatInput.tsx # 输入栏、模型/工具/thinking/compact/slash controls
|
|
143
|
+
MessageView.tsx # 消息、thinking、tool call/result 渲染
|
|
144
|
+
ModelsConfig.tsx # 模型和认证配置面板
|
|
145
|
+
SkillsConfig.tsx # 技能管理面板
|
|
146
|
+
FileExplorer.tsx # 文件树
|
|
147
|
+
FileViewer.tsx # 源码、diff、图片、音频、PDF、DOCX 预览
|
|
148
|
+
lib/
|
|
149
|
+
api-types.ts # API 请求和响应的共享类型
|
|
150
|
+
ansi.ts # 终端输出的 ANSI 转义序列处理
|
|
151
|
+
bash-output.ts # bash 命令输出的格式化和解析
|
|
152
|
+
custom-ui-terminal.ts # 自定义 UI 输出的终端适配器
|
|
153
|
+
git-changes.ts # Git diff/变更收集
|
|
154
|
+
git-status.ts # Git status 收集和规范化
|
|
155
|
+
git-types.ts # Git 数据共享类型
|
|
156
|
+
http-dispatcher.ts # 服务端 fetch 的 HTTP(S) 代理配置
|
|
157
|
+
rpc-manager.ts # AgentSessionWrapper 生命周期和全局 registry
|
|
158
|
+
session-reader.ts # 解析 .jsonl 会话文件和分支上下文
|
|
159
|
+
session-file-references.ts # 会话引用文件的检查
|
|
160
|
+
normalize.ts # 规范化 toolCall 字段名
|
|
161
|
+
file-access.ts # 文件读取安全边界和允许的根目录
|
|
162
|
+
file-fuzzy.ts # 文件模糊搜索工具
|
|
163
|
+
file-upload.ts # 文件上传校验和冲突处理
|
|
164
|
+
file-paths.ts # 文件路径编码/相对路径工具
|
|
165
|
+
models-cache.ts # 模型列表和默认值缓存
|
|
166
|
+
session-title.ts # 会话标题和自动命名工具
|
|
167
|
+
skill-updates.ts # 技能更新操作
|
|
168
|
+
skill-lock.ts # 技能更新锁
|
|
169
|
+
terminal-input.ts # 终端输入处理
|
|
170
|
+
worktree.ts # 项目/worktree 解析和 Git 操作
|
|
171
|
+
markdown.ts # Markdown/Mermaid/KaTeX 插件配置
|
|
172
|
+
pi-types.ts # pi 相关类型
|
|
173
|
+
hooks/
|
|
174
|
+
useAgentSession.ts # 会话加载、发送命令、SSE 状态机
|
|
175
|
+
useAudio.ts # 完成提示音
|
|
176
|
+
useDragDrop.ts # 图片拖拽
|
|
177
|
+
useKeyboardShortcuts.ts # 键盘快捷键处理
|
|
178
|
+
useTheme.ts # 主题切换
|
|
179
|
+
bin/
|
|
180
|
+
pidance.js # npm CLI 入口(仅 pidance;pi-web 归上游)
|
|
181
|
+
instrumentation.ts # 初始化服务端 HTTP dispatcher
|
|
182
|
+
```
|