@herbertgao/pi-extensions 2026.10.2 → 2026.10.3
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/README.md +5 -12
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +8 -0
- package/node_modules/@herbertgao/pi-subagents/README.md +1 -1
- package/node_modules/@herbertgao/pi-subagents/package.json +4 -5
- package/node_modules/@herbertgao/pi-subagents/src/index.ts +1 -1
- package/node_modules/@herbertgao/pi-subagents/src/invocation-config.ts +1 -1
- package/node_modules/@herbertgao/pi-subagents/src/mention-clone.ts +48 -72
- package/node_modules/@herbertgao/pi-subagents/src/nested-tools.ts +1 -1
- package/node_modules/@herbertgao/pi-subagents/src/output-file.ts +15 -6
- package/node_modules/@herbertgao/pi-subagents/src/workflow/collisions.ts +4 -1
- package/node_modules/@herbertgao/pi-subagents/src/workflow/json-schema.ts +9 -8
- package/node_modules/@narumitw/pi-caffeinate/dist/index.ts +6 -1
- package/node_modules/@narumitw/pi-caffeinate/dist/index.ts.map +2 -2
- package/node_modules/@narumitw/pi-caffeinate/package.json +1 -1
- package/node_modules/@narumitw/pi-caffeinate/src/dbus-inhibit.ts +13 -1
- package/node_modules/pi-lens/CHANGELOG.md +95 -0
- package/node_modules/pi-lens/README.md +1 -0
- package/node_modules/pi-lens/dist/chunk-2FQ62SPM.js +83 -0
- package/node_modules/pi-lens/dist/{chunk-6P62QVEA.js → chunk-2UMYMRI3.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-O6TQT6RI.js → chunk-34OCDWOS.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-XK4CIILI.js → chunk-3FERWMCH.js} +26 -26
- package/node_modules/pi-lens/dist/{chunk-ZAWW3AF6.js → chunk-3JL6IFD7.js} +8 -8
- package/node_modules/pi-lens/dist/{chunk-OAXNDZJ7.js → chunk-3JSEWUWI.js} +8 -4
- package/node_modules/pi-lens/dist/{chunk-RPD5K5NC.js → chunk-3MRXIJ6I.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-IVP5KAB7.js → chunk-3P4PF2BX.js} +14 -14
- package/node_modules/pi-lens/dist/{chunk-5THXD6X5.js → chunk-3PNFWVHT.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-VD4JQCQC.js → chunk-3TTPKMEF.js} +37 -37
- package/node_modules/pi-lens/dist/{chunk-7F72PXY2.js → chunk-5JHXUETW.js} +3 -3
- package/node_modules/pi-lens/dist/{chunk-5ZEJHV35.js → chunk-64LU2OVH.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-ODEEOXPH.js → chunk-6B5I6ICN.js} +11 -11
- package/node_modules/pi-lens/dist/{chunk-5RXBNSW2.js → chunk-6P54TMWL.js} +16 -8
- package/node_modules/pi-lens/dist/{chunk-K6VYLB2U.js → chunk-6UYA642J.js} +12 -12
- package/node_modules/pi-lens/dist/{chunk-V7R425XG.js → chunk-6XX5HCLK.js} +4 -4
- package/node_modules/pi-lens/dist/{chunk-D6QS3U6M.js → chunk-7AXO3ZDF.js} +15 -15
- package/node_modules/pi-lens/dist/{chunk-YGVYKNSN.js → chunk-7BX5DWSA.js} +59 -12
- package/node_modules/pi-lens/dist/{chunk-N3YQJI6O.js → chunk-7ELY2CSM.js} +7 -4
- package/node_modules/pi-lens/dist/{chunk-AWE5TMPO.js → chunk-7M4T5N3V.js} +13 -13
- package/node_modules/pi-lens/dist/{chunk-AJ3QXTRQ.js → chunk-AFZYMAIV.js} +33 -33
- package/node_modules/pi-lens/dist/{chunk-AJXODZY6.js → chunk-ALQRYH6O.js} +12 -12
- package/node_modules/pi-lens/dist/{chunk-AJVLWNFN.js → chunk-AXKPQ6ZI.js} +5 -5
- package/node_modules/pi-lens/dist/{chunk-HWBZIGMJ.js → chunk-BHWHXMQ2.js} +8 -8
- package/node_modules/pi-lens/dist/{chunk-IXEBJSUE.js → chunk-BJF25SUG.js} +10 -10
- package/node_modules/pi-lens/dist/{chunk-GVXA6CCE.js → chunk-BNKLYOOO.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-T4ERT73Y.js → chunk-CBD2B5CP.js} +20 -20
- package/node_modules/pi-lens/dist/{chunk-O5WILGMI.js → chunk-CFYISHUW.js} +5 -5
- package/node_modules/pi-lens/dist/{chunk-EOKRQ3SA.js → chunk-CMU4RMJB.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-YSNFMJKN.js → chunk-CULQYFLU.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-ORTMY4Q4.js → chunk-D65GOCJB.js} +21 -14
- package/node_modules/pi-lens/dist/{chunk-NTUJEGDZ.js → chunk-D6YF5HKX.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-BRJKOBZP.js → chunk-DMS52BEP.js} +17 -6
- package/node_modules/pi-lens/dist/{chunk-NL5GLMFI.js → chunk-ELVWJYRV.js} +11 -11
- package/node_modules/pi-lens/dist/{chunk-4W2PLC4J.js → chunk-EUT3B22Y.js} +12 -12
- package/node_modules/pi-lens/dist/{chunk-GUOGVTCQ.js → chunk-F5VLZHUW.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-I7SPGOWI.js → chunk-FGALODG3.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-Q5U6FMDI.js → chunk-G3RLJYA2.js} +12 -6
- package/node_modules/pi-lens/dist/{chunk-FJNKANOS.js → chunk-GAYGGICG.js} +9 -9
- package/node_modules/pi-lens/dist/{chunk-HVUZXSWK.js → chunk-H2W2AXD3.js} +38 -40
- package/node_modules/pi-lens/dist/{chunk-VHQLPIRJ.js → chunk-H5EV3VMF.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-27BBHSZC.js → chunk-HREZQCT3.js} +3 -3
- package/node_modules/pi-lens/dist/{chunk-TT22N74J.js → chunk-HSIRMK2D.js} +12 -12
- package/node_modules/pi-lens/dist/{chunk-3I5QFT3N.js → chunk-IMSQR4WO.js} +6 -3
- package/node_modules/pi-lens/dist/{chunk-B3I2UUT4.js → chunk-IQZXOZ7S.js} +156 -32
- package/node_modules/pi-lens/dist/{chunk-RIISMHKN.js → chunk-IR6XFA5P.js} +14 -13
- package/node_modules/pi-lens/dist/{chunk-LNAKEO63.js → chunk-IUKPRZER.js} +4 -4
- package/node_modules/pi-lens/dist/{chunk-RUOG5D2C.js → chunk-IUR76K6A.js} +5 -5
- package/node_modules/pi-lens/dist/{chunk-TO6WL3GM.js → chunk-J3FZR3YY.js} +12 -2
- package/node_modules/pi-lens/dist/{chunk-Y4T27COV.js → chunk-J6DFZDFA.js} +4 -4
- package/node_modules/pi-lens/dist/{chunk-E4MAEDPM.js → chunk-J7WJZ6W7.js} +11 -11
- package/node_modules/pi-lens/dist/{chunk-52H5B5TC.js → chunk-JONGANYH.js} +30 -30
- package/node_modules/pi-lens/dist/{chunk-TGPXLY2J.js → chunk-KJCWXUUS.js} +35 -1
- package/node_modules/pi-lens/dist/{chunk-I3R7GKDR.js → chunk-KJN4IOEJ.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-RPD4ZSB7.js → chunk-KMGPUKFD.js} +12 -12
- package/node_modules/pi-lens/dist/{chunk-OQGFCZJ4.js → chunk-LD7WFTRX.js} +13 -13
- package/node_modules/pi-lens/dist/{chunk-DIULIWKU.js → chunk-LNOMA3MP.js} +3 -3
- package/node_modules/pi-lens/dist/{chunk-HHYAELLJ.js → chunk-MGIWSROG.js} +5 -5
- package/node_modules/pi-lens/dist/{chunk-YLF3PPT5.js → chunk-MQA2YBAH.js} +3 -3
- package/node_modules/pi-lens/dist/{chunk-TVN5N6GY.js → chunk-MTDRLSI7.js} +690 -186
- package/node_modules/pi-lens/dist/{chunk-DQ2NZ7C4.js → chunk-N2IRDBZI.js} +44 -6
- package/node_modules/pi-lens/dist/{chunk-AHDW3GPE.js → chunk-N77WFUL7.js} +22 -22
- package/node_modules/pi-lens/dist/{chunk-NXPS2L6U.js → chunk-N7YNJE5R.js} +7 -7
- package/node_modules/pi-lens/dist/{chunk-7FBF7NPR.js → chunk-NFXP47RV.js} +13 -12
- package/node_modules/pi-lens/dist/{chunk-UY752QSN.js → chunk-NJF2X5XF.js} +17 -17
- package/node_modules/pi-lens/dist/{chunk-WONERJTP.js → chunk-O7HZX7CA.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-AS44CFQ4.js → chunk-OC7LYAU5.js} +7 -7
- package/node_modules/pi-lens/dist/{chunk-4RERDEXR.js → chunk-OEX24ECI.js} +30 -30
- package/node_modules/pi-lens/dist/{chunk-6VCD4VKZ.js → chunk-OYOB3ZFG.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-IIXOAGHR.js → chunk-OYTMZXRF.js} +18 -15
- package/node_modules/pi-lens/dist/{chunk-ARFCXG7S.js → chunk-OZJINN4O.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-34U7PLGE.js → chunk-PCHDGUKT.js} +11 -11
- package/node_modules/pi-lens/dist/{chunk-VCSRSYLF.js → chunk-RJFED73B.js} +34 -36
- package/node_modules/pi-lens/dist/chunk-RTQNRM5X.js +27 -0
- package/node_modules/pi-lens/dist/{chunk-PAK6IDME.js → chunk-S6AMWKPC.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-U3VGR4VU.js → chunk-T4QZ6FEH.js} +4 -4
- package/node_modules/pi-lens/dist/{chunk-VN2AXLEX.js → chunk-T54VJRAD.js} +54 -12
- package/node_modules/pi-lens/dist/{chunk-ZMOL6RQC.js → chunk-TA5L5KWQ.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-JOLITGCC.js → chunk-TQFBZVCG.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-VDBPVIKD.js → chunk-U52SAGRM.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-LW6XKDZQ.js → chunk-UEAHAMEI.js} +284 -35
- package/node_modules/pi-lens/dist/{chunk-NMABWBZN.js → chunk-UGSMCQ4D.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-6QIUX4EP.js → chunk-USHG4DLH.js} +7 -7
- package/node_modules/pi-lens/dist/{chunk-LSMJ6KBE.js → chunk-V5MEBST3.js} +16 -16
- package/node_modules/pi-lens/dist/chunk-VGEVL5EQ.js +29 -0
- package/node_modules/pi-lens/dist/{chunk-47D2BO4S.js → chunk-VPWKF3GN.js} +10 -10
- package/node_modules/pi-lens/dist/{chunk-UK3CMEAL.js → chunk-VSMJK3ZJ.js} +1 -1
- package/node_modules/pi-lens/dist/{chunk-22AVIGXS.js → chunk-VYKKMYVT.js} +7 -7
- package/node_modules/pi-lens/dist/{chunk-OS32RNR2.js → chunk-VZHJS6DR.js} +15 -15
- package/node_modules/pi-lens/dist/{chunk-E2WFBRHM.js → chunk-WATC3IQR.js} +3 -3
- package/node_modules/pi-lens/dist/chunk-WPE5FPGR.js +54 -0
- package/node_modules/pi-lens/dist/{chunk-V5PXFSZK.js → chunk-WSEWKCXU.js} +4 -4
- package/node_modules/pi-lens/dist/{chunk-NKOUFPQF.js → chunk-WW5BLB74.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-PWFHBTSF.js → chunk-XGUL4SLQ.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-F3P7VQ7H.js → chunk-XHSCVSOL.js} +3 -3
- package/node_modules/pi-lens/dist/{chunk-DFVMIKMQ.js → chunk-YLN4K6WD.js} +45 -9
- package/node_modules/pi-lens/dist/{chunk-VNMT7C64.js → chunk-Z6BB4JLQ.js} +2 -2
- package/node_modules/pi-lens/dist/{chunk-NTHH2J74.js → chunk-Z7QQA2KT.js} +12 -12
- package/node_modules/pi-lens/dist/{chunk-F3AU2TMM.js → chunk-ZETYB3XG.js} +15 -15
- package/node_modules/pi-lens/dist/{chunk-XECLWQZN.js → chunk-ZMOMPX2Z.js} +12 -10
- package/node_modules/pi-lens/dist/{chunk-C2AUYXQH.js → chunk-ZOEYVXSV.js} +4 -4
- package/node_modules/pi-lens/dist/{chunk-TLGFBM3F.js → chunk-ZZUFZUQZ.js} +68 -64
- package/node_modules/pi-lens/dist/index.js +30113 -28398
- package/node_modules/pi-lens/dist/mcp/analyze-cli.js +8 -8
- package/node_modules/pi-lens/dist/mcp/cli.js +37 -37
- package/node_modules/pi-lens/dist/mcp/server.js +257 -158
- package/node_modules/pi-lens/dist/mcp/worker.js +55 -55
- package/node_modules/pi-lens/dist/probes/installer.js +19 -19
- package/node_modules/pi-lens/docs/ast-grep_rules_catalog.md +2 -2
- package/node_modules/pi-lens/docs/configuration.md +9 -2
- package/node_modules/pi-lens/docs/custom-rules.md +25 -2
- package/node_modules/pi-lens/docs/environment-variables.md +34 -6
- package/node_modules/pi-lens/docs/features.md +37 -1
- package/node_modules/pi-lens/docs/globalconfig.md +1 -1
- package/node_modules/pi-lens/docs/lsp-capability-matrix.md +2 -1
- package/node_modules/pi-lens/docs/lsp-idle-eviction.md +1 -1
- package/node_modules/pi-lens/docs/pi-lens-fixer.md +9 -5
- package/node_modules/pi-lens/docs/pi-lens-merge-policy.md +43 -1
- package/node_modules/pi-lens/docs/pi-lens-monitor.md +3 -1
- package/node_modules/pi-lens/docs/pi-lens-reviewer.md +4 -3
- package/node_modules/pi-lens/docs/schema/pi-lens-config-v1.json +530 -0
- package/node_modules/pi-lens/docs/servercapabilities.md +4 -1
- package/node_modules/pi-lens/docs/word-index.md +6 -0
- package/node_modules/pi-lens/package.json +1 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-identity-operator-on-literals-test.yml +12 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/throw-new-error-js-test.yml +2 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/throw-new-error-test.yml +2 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-identity-operator-on-literals.yml +20 -12
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/throw-new-error-js.yml +2 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/throw-new-error.yml +2 -2
- package/node_modules/pi-web-access/CHANGELOG.md +28 -0
- package/node_modules/pi-web-access/README.md +10 -6
- package/node_modules/pi-web-access/ceramic.ts +219 -0
- package/node_modules/pi-web-access/curator-page.ts +3 -1
- package/node_modules/pi-web-access/curator-server.ts +1 -0
- package/node_modules/pi-web-access/dist/index.js +846 -588
- package/node_modules/pi-web-access/dist/mcp-cli.js +725 -516
- package/node_modules/pi-web-access/gemini-search.ts +8 -4
- package/node_modules/pi-web-access/github-extract.ts +34 -2
- package/node_modules/pi-web-access/index.ts +72 -30
- package/node_modules/pi-web-access/openai-search.ts +3 -3
- package/node_modules/pi-web-access/package.json +2 -2
- package/node_modules/pi-web-access/page-query.ts +6 -9
- package/node_modules/pi-web-access/parallel-mcp.ts +2 -0
- package/node_modules/pi-web-access/query-rewrite.ts +2 -2
- package/node_modules/pi-web-access/storage.ts +49 -0
- package/node_modules/pi-web-access/summary-review.ts +7 -6
- package/node_modules/pi-web-access/utils.ts +21 -6
- package/node_modules/pi-web-access/web-tool-core.ts +1 -0
- package/package.json +7 -12
- package/node_modules/pi-lens/dist/chunk-54B42YRX.js +0 -27
- package/node_modules/pi-lens/dist/chunk-CGGAIP7J.js +0 -29
- package/node_modules/pi-lens/dist/chunk-HMFXILPV.js +0 -83
- package/node_modules/pi-lens/dist/chunk-T6D4Q4AQ.js +0 -54
- package/node_modules/pi-web-access/opencode-session-headers.ts +0 -24
- package/node_modules/remote-pi/LICENSE +0 -21
- package/node_modules/remote-pi/README.md +0 -675
- package/node_modules/remote-pi/dist/actions/handlers.d.ts +0 -122
- package/node_modules/remote-pi/dist/actions/handlers.js +0 -160
- package/node_modules/remote-pi/dist/actions/handlers.js.map +0 -1
- package/node_modules/remote-pi/dist/actions/registry.d.ts +0 -39
- package/node_modules/remote-pi/dist/actions/registry.js +0 -58
- package/node_modules/remote-pi/dist/actions/registry.js.map +0 -1
- package/node_modules/remote-pi/dist/bin/supervisord.d.ts +0 -2
- package/node_modules/remote-pi/dist/bin/supervisord.js +0 -86
- package/node_modules/remote-pi/dist/bin/supervisord.js.map +0 -1
- package/node_modules/remote-pi/dist/commands/builtin_mirror.d.ts +0 -58
- package/node_modules/remote-pi/dist/commands/builtin_mirror.js +0 -71
- package/node_modules/remote-pi/dist/commands/builtin_mirror.js.map +0 -1
- package/node_modules/remote-pi/dist/commands/list_commands.d.ts +0 -60
- package/node_modules/remote-pi/dist/commands/list_commands.js +0 -73
- package/node_modules/remote-pi/dist/commands/list_commands.js.map +0 -1
- package/node_modules/remote-pi/dist/config.d.ts +0 -62
- package/node_modules/remote-pi/dist/config.js +0 -115
- package/node_modules/remote-pi/dist/config.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/client.d.ts +0 -20
- package/node_modules/remote-pi/dist/daemon/client.js +0 -131
- package/node_modules/remote-pi/dist/daemon/client.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/control_protocol.d.ts +0 -176
- package/node_modules/remote-pi/dist/daemon/control_protocol.js +0 -63
- package/node_modules/remote-pi/dist/daemon/control_protocol.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/cron_log.d.ts +0 -45
- package/node_modules/remote-pi/dist/daemon/cron_log.js +0 -72
- package/node_modules/remote-pi/dist/daemon/cron_log.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/cron_registry.d.ts +0 -80
- package/node_modules/remote-pi/dist/daemon/cron_registry.js +0 -194
- package/node_modules/remote-pi/dist/daemon/cron_registry.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/id.d.ts +0 -24
- package/node_modules/remote-pi/dist/daemon/id.js +0 -36
- package/node_modules/remote-pi/dist/daemon/id.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/install.d.ts +0 -170
- package/node_modules/remote-pi/dist/daemon/install.js +0 -547
- package/node_modules/remote-pi/dist/daemon/install.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/registry.d.ts +0 -63
- package/node_modules/remote-pi/dist/daemon/registry.js +0 -153
- package/node_modules/remote-pi/dist/daemon/registry.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/rpc_child.d.ts +0 -194
- package/node_modules/remote-pi/dist/daemon/rpc_child.js +0 -389
- package/node_modules/remote-pi/dist/daemon/rpc_child.js.map +0 -1
- package/node_modules/remote-pi/dist/daemon/supervisor.d.ts +0 -93
- package/node_modules/remote-pi/dist/daemon/supervisor.js +0 -596
- package/node_modules/remote-pi/dist/daemon/supervisor.js.map +0 -1
- package/node_modules/remote-pi/dist/extension_ui_bridge.d.ts +0 -26
- package/node_modules/remote-pi/dist/extension_ui_bridge.js +0 -341
- package/node_modules/remote-pi/dist/extension_ui_bridge.js.map +0 -1
- package/node_modules/remote-pi/dist/index.d.ts +0 -213
- package/node_modules/remote-pi/dist/index.js +0 -4996
- package/node_modules/remote-pi/dist/index.js.map +0 -1
- package/node_modules/remote-pi/dist/mcp/mesh_result.d.ts +0 -10
- package/node_modules/remote-pi/dist/mcp/mesh_result.js +0 -42
- package/node_modules/remote-pi/dist/mcp/mesh_result.js.map +0 -1
- package/node_modules/remote-pi/dist/mcp/mesh_server.d.ts +0 -16
- package/node_modules/remote-pi/dist/mcp/mesh_server.js +0 -327
- package/node_modules/remote-pi/dist/mcp/mesh_server.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/canonical.d.ts +0 -30
- package/node_modules/remote-pi/dist/mesh/canonical.js +0 -61
- package/node_modules/remote-pi/dist/mesh/canonical.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/client.d.ts +0 -18
- package/node_modules/remote-pi/dist/mesh/client.js +0 -125
- package/node_modules/remote-pi/dist/mesh/client.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/encoding.d.ts +0 -38
- package/node_modules/remote-pi/dist/mesh/encoding.js +0 -216
- package/node_modules/remote-pi/dist/mesh/encoding.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/self_revoke.d.ts +0 -73
- package/node_modules/remote-pi/dist/mesh/self_revoke.js +0 -401
- package/node_modules/remote-pi/dist/mesh/self_revoke.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/siblings.d.ts +0 -49
- package/node_modules/remote-pi/dist/mesh/siblings.js +0 -159
- package/node_modules/remote-pi/dist/mesh/siblings.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/types.d.ts +0 -34
- package/node_modules/remote-pi/dist/mesh/types.js +0 -11
- package/node_modules/remote-pi/dist/mesh/types.js.map +0 -1
- package/node_modules/remote-pi/dist/mesh/verify.d.ts +0 -17
- package/node_modules/remote-pi/dist/mesh/verify.js +0 -86
- package/node_modules/remote-pi/dist/mesh/verify.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/crypto.d.ts +0 -8
- package/node_modules/remote-pi/dist/pairing/crypto.js +0 -22
- package/node_modules/remote-pi/dist/pairing/crypto.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/handshake.d.ts +0 -28
- package/node_modules/remote-pi/dist/pairing/handshake.js +0 -113
- package/node_modules/remote-pi/dist/pairing/handshake.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/noise-sha256.d.ts +0 -16
- package/node_modules/remote-pi/dist/pairing/noise-sha256.js +0 -103
- package/node_modules/remote-pi/dist/pairing/noise-sha256.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/qr.d.ts +0 -59
- package/node_modules/remote-pi/dist/pairing/qr.js +0 -125
- package/node_modules/remote-pi/dist/pairing/qr.js.map +0 -1
- package/node_modules/remote-pi/dist/pairing/storage.d.ts +0 -120
- package/node_modules/remote-pi/dist/pairing/storage.js +0 -604
- package/node_modules/remote-pi/dist/pairing/storage.js.map +0 -1
- package/node_modules/remote-pi/dist/protocol/codec.d.ts +0 -7
- package/node_modules/remote-pi/dist/protocol/codec.js +0 -49
- package/node_modules/remote-pi/dist/protocol/codec.js.map +0 -1
- package/node_modules/remote-pi/dist/protocol/types.d.ts +0 -393
- package/node_modules/remote-pi/dist/protocol/types.js +0 -2
- package/node_modules/remote-pi/dist/protocol/types.js.map +0 -1
- package/node_modules/remote-pi/dist/rooms.d.ts +0 -29
- package/node_modules/remote-pi/dist/rooms.js +0 -57
- package/node_modules/remote-pi/dist/rooms.js.map +0 -1
- package/node_modules/remote-pi/dist/session/address.d.ts +0 -49
- package/node_modules/remote-pi/dist/session/address.js +0 -58
- package/node_modules/remote-pi/dist/session/address.js.map +0 -1
- package/node_modules/remote-pi/dist/session/agent_bridge.d.ts +0 -55
- package/node_modules/remote-pi/dist/session/agent_bridge.js +0 -146
- package/node_modules/remote-pi/dist/session/agent_bridge.js.map +0 -1
- package/node_modules/remote-pi/dist/session/bridge.d.ts +0 -37
- package/node_modules/remote-pi/dist/session/bridge.js +0 -130
- package/node_modules/remote-pi/dist/session/bridge.js.map +0 -1
- package/node_modules/remote-pi/dist/session/broker.d.ts +0 -189
- package/node_modules/remote-pi/dist/session/broker.js +0 -507
- package/node_modules/remote-pi/dist/session/broker.js.map +0 -1
- package/node_modules/remote-pi/dist/session/broker_remote.d.ts +0 -74
- package/node_modules/remote-pi/dist/session/broker_remote.js +0 -583
- package/node_modules/remote-pi/dist/session/broker_remote.js.map +0 -1
- package/node_modules/remote-pi/dist/session/cwd_lock.d.ts +0 -33
- package/node_modules/remote-pi/dist/session/cwd_lock.js +0 -126
- package/node_modules/remote-pi/dist/session/cwd_lock.js.map +0 -1
- package/node_modules/remote-pi/dist/session/envelope.d.ts +0 -33
- package/node_modules/remote-pi/dist/session/envelope.js +0 -117
- package/node_modules/remote-pi/dist/session/envelope.js.map +0 -1
- package/node_modules/remote-pi/dist/session/global_config.d.ts +0 -33
- package/node_modules/remote-pi/dist/session/global_config.js +0 -73
- package/node_modules/remote-pi/dist/session/global_config.js.map +0 -1
- package/node_modules/remote-pi/dist/session/ipc.d.ts +0 -27
- package/node_modules/remote-pi/dist/session/ipc.js +0 -22
- package/node_modules/remote-pi/dist/session/ipc.js.map +0 -1
- package/node_modules/remote-pi/dist/session/leader_election.d.ts +0 -32
- package/node_modules/remote-pi/dist/session/leader_election.js +0 -106
- package/node_modules/remote-pi/dist/session/leader_election.js.map +0 -1
- package/node_modules/remote-pi/dist/session/local_config.d.ts +0 -55
- package/node_modules/remote-pi/dist/session/local_config.js +0 -157
- package/node_modules/remote-pi/dist/session/local_config.js.map +0 -1
- package/node_modules/remote-pi/dist/session/mesh_message.d.ts +0 -20
- package/node_modules/remote-pi/dist/session/mesh_message.js +0 -28
- package/node_modules/remote-pi/dist/session/mesh_message.js.map +0 -1
- package/node_modules/remote-pi/dist/session/mesh_node.d.ts +0 -116
- package/node_modules/remote-pi/dist/session/mesh_node.js +0 -573
- package/node_modules/remote-pi/dist/session/mesh_node.js.map +0 -1
- package/node_modules/remote-pi/dist/session/peer.d.ts +0 -139
- package/node_modules/remote-pi/dist/session/peer.js +0 -451
- package/node_modules/remote-pi/dist/session/peer.js.map +0 -1
- package/node_modules/remote-pi/dist/session/peer_inventory.d.ts +0 -13
- package/node_modules/remote-pi/dist/session/peer_inventory.js +0 -48
- package/node_modules/remote-pi/dist/session/peer_inventory.js.map +0 -1
- package/node_modules/remote-pi/dist/session/peer_limits.d.ts +0 -9
- package/node_modules/remote-pi/dist/session/peer_limits.js +0 -21
- package/node_modules/remote-pi/dist/session/peer_limits.js.map +0 -1
- package/node_modules/remote-pi/dist/session/setup_wizard.d.ts +0 -39
- package/node_modules/remote-pi/dist/session/setup_wizard.js +0 -63
- package/node_modules/remote-pi/dist/session/setup_wizard.js.map +0 -1
- package/node_modules/remote-pi/dist/session/tool_gate.d.ts +0 -5
- package/node_modules/remote-pi/dist/session/tool_gate.js +0 -11
- package/node_modules/remote-pi/dist/session/tool_gate.js.map +0 -1
- package/node_modules/remote-pi/dist/session/tools.d.ts +0 -24
- package/node_modules/remote-pi/dist/session/tools.js +0 -252
- package/node_modules/remote-pi/dist/session/tools.js.map +0 -1
- package/node_modules/remote-pi/dist/session/wizard.d.ts +0 -13
- package/node_modules/remote-pi/dist/session/wizard.js +0 -20
- package/node_modules/remote-pi/dist/session/wizard.js.map +0 -1
- package/node_modules/remote-pi/dist/settings.d.ts +0 -15
- package/node_modules/remote-pi/dist/settings.js +0 -52
- package/node_modules/remote-pi/dist/settings.js.map +0 -1
- package/node_modules/remote-pi/dist/transport/peer_channel.d.ts +0 -37
- package/node_modules/remote-pi/dist/transport/peer_channel.js +0 -98
- package/node_modules/remote-pi/dist/transport/peer_channel.js.map +0 -1
- package/node_modules/remote-pi/dist/transport/pi_forward_client.d.ts +0 -29
- package/node_modules/remote-pi/dist/transport/pi_forward_client.js +0 -62
- package/node_modules/remote-pi/dist/transport/pi_forward_client.js.map +0 -1
- package/node_modules/remote-pi/dist/transport/relay_client.d.ts +0 -91
- package/node_modules/remote-pi/dist/transport/relay_client.js +0 -206
- package/node_modules/remote-pi/dist/transport/relay_client.js.map +0 -1
- package/node_modules/remote-pi/dist/ui/footer.d.ts +0 -32
- package/node_modules/remote-pi/dist/ui/footer.js +0 -34
- package/node_modules/remote-pi/dist/ui/footer.js.map +0 -1
- package/node_modules/remote-pi/docs/daemon.md +0 -289
- package/node_modules/remote-pi/package.json +0 -92
- package/node_modules/remote-pi/service-templates/launchd.plist.template +0 -35
- package/node_modules/remote-pi/service-templates/systemd.service.template +0 -19
- package/node_modules/remote-pi/service-templates/task-launcher.vbs.template +0 -10
- package/node_modules/remote-pi/service-templates/task-scheduler.xml.template +0 -38
- package/node_modules/remote-pi/skills/agent-network/SKILL.md +0 -310
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ The package bundles 5 active `@herbertgao/*` child packages—`pi-agency`, `pi-b
|
|
|
24
24
|
- `@dietrichgebert/ponytail@5.1.0`
|
|
25
25
|
- `@juicesharp/rpiv-ask-user-question@2.12.0`
|
|
26
26
|
- `@narumitw/pi-btw@0.61.1`
|
|
27
|
-
- `@narumitw/pi-caffeinate@0.49.
|
|
27
|
+
- `@narumitw/pi-caffeinate@0.49.11`
|
|
28
28
|
- `@pi-plugins/fast-mode@0.1.13`
|
|
29
29
|
- `@tifan/pi-copy-response@0.2.7`
|
|
30
30
|
- `@tifan/pi-handoff@2.2.2`
|
|
@@ -37,9 +37,8 @@ The package bundles 5 active `@herbertgao/*` child packages—`pi-agency`, `pi-b
|
|
|
37
37
|
- `pi-multi-account@1.24.0`
|
|
38
38
|
- `pi-next-cue@1.0.7`
|
|
39
39
|
- `pi-jev-auto-mode@0.5.0`
|
|
40
|
-
- `pi-lens@4.4.
|
|
41
|
-
- `pi-web-access@0.
|
|
42
|
-
- `remote-pi@0.7.0`
|
|
40
|
+
- `pi-lens@4.4.1`
|
|
41
|
+
- `pi-web-access@0.38.0`
|
|
43
42
|
- `resume-from@0.4.1`
|
|
44
43
|
|
|
45
44
|
Pi loads their extensions and skills through `node_modules/` paths inside one package root. The upstream companions are pinned and bundled, not forked or renamed.
|
|
@@ -56,11 +55,11 @@ The locally customized CC and SoL-Pi packages now follow complete upstream basel
|
|
|
56
55
|
|
|
57
56
|
`@herbertgao/pi-bark` sends localized Bark pushes when a user-facing Pi run fully settles or `@juicesharp/rpiv-ask-user-question` needs an answer. Notifications include emoji-labeled machine/path metadata and support the bundled official Pi badge through Bark's `icon` parameter. Configure it in `$PI_CODING_AGENT_DIR/bark.json` (normally `~/.pi/agent/bark.json`); see the [package README](../pi-bark/README.md). Without a valid endpoint it stays inactive.
|
|
58
57
|
|
|
59
|
-
`@narumitw/pi-caffeinate@0.49.
|
|
58
|
+
`@narumitw/pi-caffeinate@0.49.11` uses the host platform's sleep inhibitor during each Pi agent run. On macOS, `/caffeinate sleep` keeps the system awake while allowing the display to sleep; `/caffeinate display` also keeps the display awake. It releases the inhibitor when the run or session ends. Its D-Bus dependency remains on the normal socket transport under Node; Bun on Linux/macOS can use FFI and an in-process reader thread for Unix file-descriptor transport, falling back when unavailable. No daemon or build step is added.
|
|
60
59
|
|
|
61
60
|
`pi-jev-auto-mode@0.5.0` adds fail-closed Jev safety gates for shell commands and file changes. `pi-typesafe@0.9.1` provides `/typesafe` and `typesafe_evaluate` for explicit structured decisions; `/typesafe enable` or `PI_TYPESAFE_ENABLED=1` is still required for agent tool calls. The Pi extension continues to use the TypeSafe API, not Liquid. The package's programmatic client additionally supports Liquid with its own API key and free or paid models; existing usage accounting now merges writes under a short-lived file lock (up to 200ms synchronous wait under contention).
|
|
62
61
|
|
|
63
|
-
`resume-from@0.4.1` continues sessions across Pi, Claude Code, and Codex; it keeps a Claude Code session matched to its start directory when the active transcript later moves into a nested cwd. `@herbertgao/sol-pi` adds opt-in Action Fusion, ObservationPack, Evidence-Preserving Reducer, and Online Context Compact; see its [configuration guide](../sol-pi/docs/configuration.md). `pi-lens@4.4.
|
|
62
|
+
`resume-from@0.4.1` continues sessions across Pi, Claude Code, and Codex; it keeps a Claude Code session matched to its start directory when the active transcript later moves into a nested cwd. `@herbertgao/sol-pi` adds opt-in Action Fusion, ObservationPack, Evidence-Preserving Reducer, and Online Context Compact; see its [configuration guide](../sol-pi/docs/configuration.md). `pi-lens@4.4.1` publishes a public LSP config schema, reads user-level custom rule directories (project before user before built-in), normalizes argv-style server entries, downgrades `throw-new-error` to a warning, and counts Docker, JSON, and Jedi servers in idle eviction; language routing and the retained multi-root diagnostic facts are unchanged. `pi-web-access@0.38.0` provides configurable web search and fetch tools; its `toolActivation` defaults to `auto`, choosing eager or dynamic tool activation per model. It adds structured search/fetch data for codemode and an optional, manually started `pi-web-access-mcp` stdio CLI; installing the aggregate does not start that server. Degoog, Keenable, and the new Ceramic provider are explicit-only, excluded from automatic and `all` selection. OpenAI search now defaults to `gpt-6-luna`, results and clone cleanup are scoped per extension instance, and the promoted `@modelcontextprotocol/sdk@^1.32.1` moves the bundle off GHSA-6qxp-vccf-f47h. Perplexity search now uses the Search API's ranked pages and snippets rather than a Sonar-generated answer; requests requiring prose still use Sonar. `pi-antigravity@0.10.0` reads Pi 0.86+ transcript system messages, so Antigravity requests carry Pi's system prompt and tools; it also registers `google_search` and `generate_image` tools that use the signed-in Antigravity account. Preferred Thinking 1.0.2 preserves an explicit subagent `--thinking` choice. Deprecated `@tifan/pi-titlebar-spinner` is no longer bundled; Rename remains the single owner of Herdr tab naming.
|
|
64
63
|
|
|
65
64
|
`pi-stash` is no longer bundled: `/btw` already preserves the main editor draft while handling side questions outside the main conversation. Prior `@herbertgao/pi-stash` releases remain available but are no longer maintained here.
|
|
66
65
|
|
|
@@ -85,12 +84,6 @@ For the intended compact status text, merge the optional pi-lens widget setting
|
|
|
85
84
|
|
|
86
85
|
Pi 0.85.1 or newer should use native `fullscreen` TUI mode.
|
|
87
86
|
|
|
88
|
-
### Remote Pi trust boundary
|
|
89
|
-
|
|
90
|
-
Configure `REMOTE_PI_RELAY` to a private relay, preferably reachable only through Tailscale or another private network, **before** first running `/remote-pi`. TLS/Tailscale protects traffic in transit but the relay process can read routed content; `remote-pi@0.7.0` is not end-to-end encrypted.
|
|
91
|
-
|
|
92
|
-
Known accepted `0.7.0` limitations: pairing URI/token data is persisted in Pi session data and may enter model context during its short validity window; local broker/supervisor IPC trusts processes running as the same OS user; cancelling first-time setup can retain its cwd lock until Pi exits. Do not use the public relay or run untrusted local processes if those boundaries are unacceptable.
|
|
93
|
-
|
|
94
87
|
See the [repository README](https://github.com/HerbertGao/pi-extensions#readme) for the complete package list and provenance.
|
|
95
88
|
|
|
96
89
|
## License
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -62,7 +62,7 @@ SOFTWARE.
|
|
|
62
62
|
|
|
63
63
|
## `@narumitw/pi-caffeinate`
|
|
64
64
|
|
|
65
|
-
The aggregate bundles [`@narumitw/pi-caffeinate`](https://github.com/narumiruna/pi-extensions/tree/main/packages/pi-caffeinate) version 0.49.
|
|
65
|
+
The aggregate bundles [`@narumitw/pi-caffeinate`](https://github.com/narumiruna/pi-extensions/tree/main/packages/pi-caffeinate) version 0.49.11 under its original MIT license:
|
|
66
66
|
|
|
67
67
|
MIT License
|
|
68
68
|
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.19.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#273](https://github.com/HerbertGao/pi-extensions/pull/273) [`e6ee379`](https://github.com/HerbertGao/pi-extensions/commit/e6ee379393c9f5dde67955d4c28da650835d857f) Thanks [@HerbertGao](https://github.com/HerbertGao)! - Rebase `@herbertgao/pi-subagents` onto upstream v0.20.0 (`13106ab`) and adopt upstream's own mention-clone rewrite: the clone takes its history through `SessionManager.inMemory` and receives the live system prompt through a `DefaultResourceLoader` override instead of the previous context-projection path. The local behavior that hands the spawn the main session's context augmented with the clone's `tools` and `executeTool` is retained, so mentioned agents keep Pi 1.x tool-call capabilities while staying attributed to the main session.
|
|
8
|
+
|
|
9
|
+
Two local patches remain because their upstream pull requests are still open: preserving a worktree when cleanup fails (`tintinweb/pi-subagents#268`, with the refused `--no-gpg-sign` preservation commit) and retaining unconsumed terminal results past the automatic cleanup timer (`tintinweb/pi-subagents#348`). Upstream now declares `typebox` as a host-provided peer and drops `@sinclair/typebox` from runtime dependencies. No installed configuration, credentials, or sessions are migrated.
|
|
10
|
+
|
|
3
11
|
## 0.18.5
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -47,7 +47,7 @@ Or load directly for development:
|
|
|
47
47
|
pi -e ./src/index.ts
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Requires pi **
|
|
50
|
+
Requires pi **1.1.0 or newer**: pi 0.86 and 0.87 moved the system prompt and conversation history into the session transcript, and the `@handle` conversation clone and the agent transcript files are built on that model. The `peerDependencies` range declares it, so npm flags an older pi at install time.
|
|
51
51
|
|
|
52
52
|
### Other hosts
|
|
53
53
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@herbertgao/pi-subagents",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "Claude Code-style autonomous subagents and workflow orchestration for Pi, with HerbertGao-maintained UI extensions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent",
|
|
@@ -55,7 +55,6 @@
|
|
|
55
55
|
"@earendil-works/pi-ai": "*",
|
|
56
56
|
"@earendil-works/pi-coding-agent": "*",
|
|
57
57
|
"@earendil-works/pi-tui": "*",
|
|
58
|
-
"@sinclair/typebox": "*",
|
|
59
58
|
"typebox": "*"
|
|
60
59
|
},
|
|
61
60
|
"engines": {
|
|
@@ -70,9 +69,9 @@
|
|
|
70
69
|
},
|
|
71
70
|
"x-upstream": {
|
|
72
71
|
"package": "@tintinweb/pi-subagents",
|
|
73
|
-
"version": "0.
|
|
74
|
-
"reviewedVersion": "0.
|
|
72
|
+
"version": "0.20.0",
|
|
73
|
+
"reviewedVersion": "0.20.0",
|
|
75
74
|
"repository": "https://github.com/tintinweb/pi-subagents",
|
|
76
|
-
"commit": "
|
|
75
|
+
"commit": "13106ab6f608b3acc54185da5299ee7fbaabb6b9"
|
|
77
76
|
}
|
|
78
77
|
}
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
Spacer,
|
|
36
36
|
Text,
|
|
37
37
|
} from "@earendil-works/pi-tui"
|
|
38
|
-
import { Type } from "
|
|
38
|
+
import { Type } from "typebox"
|
|
39
39
|
import { abortable } from "./abortable.js"
|
|
40
40
|
import { hasAgentBadge, renderAgentName } from "./agent-color.js"
|
|
41
41
|
import {
|
|
@@ -12,31 +12,23 @@
|
|
|
12
12
|
* So the turn happens somewhere else. The conversation is cloned into a
|
|
13
13
|
* throwaway in-memory session — same messages, same system prompt, same model —
|
|
14
14
|
* and that copy takes the turn off-screen. A literal clone: the session's own
|
|
15
|
-
* entries,
|
|
16
|
-
*
|
|
15
|
+
* entries, not `inherit_context`'s text rendering of them.
|
|
16
|
+
*
|
|
17
|
+
* Pi builds every request from the session manager, so that is where the
|
|
18
|
+
* clone's history goes: the parent's root-to-leaf entries, handed to
|
|
19
|
+
* `SessionManager.inMemory`. The clone projects them itself, compaction and
|
|
20
|
+
* branch summaries included, so a long conversation clones as what the main
|
|
21
|
+
* model is actually working from. A conversation with nothing in it yet clones
|
|
22
|
+
* to nothing in it yet, which is the correct answer rather than a failure.
|
|
17
23
|
*
|
|
18
24
|
* Cloned from memory rather than from the session file, which cannot be relied
|
|
19
25
|
* on: `SessionManager._persist` withholds every write until the first assistant
|
|
20
26
|
* message lands, so a fork taken before then reads an empty file and throws.
|
|
21
|
-
* `buildSessionContext()` has no such timing, and is compaction-aware — it walks
|
|
22
|
-
* the leaf path and substitutes the summary for entries folded into it, so a
|
|
23
|
-
* long conversation clones as what the main model is actually working from. A
|
|
24
|
-
* conversation with nothing in it yet clones to nothing in it yet, which is the
|
|
25
|
-
* correct answer rather than a failure.
|
|
26
|
-
*
|
|
27
|
-
* It is also the oldest of the equivalent Pi APIs — `buildContextEntries` on
|
|
28
|
-
* ReadonlySessionManager and the `sessionEntryToContextMessages` export both
|
|
29
|
-
* arrived in 0.80.5 — where this one has been exported unchanged from before
|
|
30
|
-
* the declared peer floor, and is the same code path (`byId` is only an index
|
|
31
|
-
* cache, so passing it or not cannot change the result). Keeping the floor
|
|
32
|
-
* honest costs nothing here: see the `compat-floor-pi` job.
|
|
33
27
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* field instead lets `createAgentSession` resolve it from settings, which is
|
|
39
|
-
* that real level.
|
|
28
|
+
* The system prompt cannot ride along in those entries. Pi rebuilds it from the
|
|
29
|
+
* session's own options on every request and patches the difference over the
|
|
30
|
+
* transcript, so the parent's prompt would be replaced by the clone's. It goes
|
|
31
|
+
* in through the resource loader's prompt override instead.
|
|
40
32
|
*
|
|
41
33
|
* Three details make the spawn belong to the real session rather than the
|
|
42
34
|
* clone:
|
|
@@ -63,8 +55,6 @@
|
|
|
63
55
|
|
|
64
56
|
import type { Model } from "@earendil-works/pi-ai"
|
|
65
57
|
import {
|
|
66
|
-
buildSessionContext,
|
|
67
|
-
convertToLlm,
|
|
68
58
|
createAgentSession,
|
|
69
59
|
DefaultResourceLoader,
|
|
70
60
|
type ExtensionContext,
|
|
@@ -74,7 +64,7 @@ import {
|
|
|
74
64
|
} from "@earendil-works/pi-coding-agent"
|
|
75
65
|
import { runInChildSessionContext } from "./child-context.js"
|
|
76
66
|
import { agentMentionReminder } from "./mention.js"
|
|
77
|
-
import type { SubagentType
|
|
67
|
+
import type { SubagentType } from "./types.js"
|
|
78
68
|
|
|
79
69
|
export interface MentionCloneOptions {
|
|
80
70
|
/** The MAIN session's context — what the spawn is attributed to, and the
|
|
@@ -156,54 +146,40 @@ export async function runMentionClone(
|
|
|
156
146
|
const parentModelRuntime = (
|
|
157
147
|
ctx.modelRegistry as unknown as { runtime?: unknown }
|
|
158
148
|
).runtime
|
|
159
|
-
//
|
|
160
|
-
//
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
)
|
|
165
|
-
//
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
for (const message of convertToLlm([entry]))
|
|
182
|
-
sessionManager.appendMessage(message)
|
|
183
|
-
} else {
|
|
184
|
-
sessionManager.appendMessage(entry)
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
const systemPrompt = ctx.getSystemPrompt?.()
|
|
188
|
-
const created = await runInChildSessionContext(async () => {
|
|
189
|
-
const resourceLoader = new DefaultResourceLoader({
|
|
190
|
-
cwd: ctx.cwd,
|
|
191
|
-
agentDir: getAgentDir(),
|
|
192
|
-
extensionFactories: [
|
|
193
|
-
(pi) => {
|
|
194
|
-
pi.on("before_agent_start", () =>
|
|
195
|
-
systemPrompt ? { systemPrompt } : undefined,
|
|
196
|
-
)
|
|
197
|
-
},
|
|
198
|
-
],
|
|
199
|
-
})
|
|
200
|
-
await resourceLoader.reload()
|
|
201
|
-
return createAgentSession({
|
|
149
|
+
// Absent when the session has no level of its own; the clone then takes the
|
|
150
|
+
// settings level, which is what a session that never ran `/think` is on.
|
|
151
|
+
const thinkingLevel = ctx.thinkingLevel
|
|
152
|
+
// The live system prompt, not the one the clone would build from cwd and
|
|
153
|
+
// agentDir — extensions contribute to it per turn. Everything the loader
|
|
154
|
+
// would add on top (AGENTS.md, skills, APPEND_SYSTEM.md) is already in the
|
|
155
|
+
// rendered prompt, so it is suppressed, as agent-runner does.
|
|
156
|
+
const systemPrompt = ctx.getSystemPrompt()
|
|
157
|
+
const loader = new DefaultResourceLoader({
|
|
158
|
+
cwd: ctx.cwd,
|
|
159
|
+
agentDir: getAgentDir(),
|
|
160
|
+
noExtensions: true,
|
|
161
|
+
noSkills: true,
|
|
162
|
+
noPromptTemplates: true,
|
|
163
|
+
noThemes: true,
|
|
164
|
+
noContextFiles: true,
|
|
165
|
+
systemPromptOverride: (base: string | undefined) => systemPrompt || base,
|
|
166
|
+
appendSystemPromptOverride: () => [],
|
|
167
|
+
})
|
|
168
|
+
await runInChildSessionContext(() => loader.reload())
|
|
169
|
+
const created = await runInChildSessionContext(() =>
|
|
170
|
+
createAgentSession({
|
|
202
171
|
cwd: ctx.cwd,
|
|
203
|
-
//
|
|
204
|
-
//
|
|
205
|
-
|
|
206
|
-
|
|
172
|
+
// The parent's root-to-leaf path, which the clone projects itself:
|
|
173
|
+
// compaction applied, branch summaries substituted. Not `getEntries()`,
|
|
174
|
+
// whose last entry is not the leaf after `/tree` navigation. In memory,
|
|
175
|
+
// so nothing about the copy is persisted and the real session stays
|
|
176
|
+
// untouched.
|
|
177
|
+
sessionManager: SessionManager.inMemory(
|
|
178
|
+
ctx.cwd,
|
|
179
|
+
undefined,
|
|
180
|
+
ctx.sessionManager.getBranch(),
|
|
181
|
+
),
|
|
182
|
+
resourceLoader: loader,
|
|
207
183
|
model: ctx.model as Model<never> | undefined,
|
|
208
184
|
...(thinkingLevel && { thinkingLevel }),
|
|
209
185
|
modelRegistry: ctx.modelRegistry,
|
|
@@ -220,8 +196,8 @@ export async function runMentionClone(
|
|
|
220
196
|
// agent-runner's `tools: sessionTools` beside its nested `customTools`.
|
|
221
197
|
tools: [cloneAgentTool.name],
|
|
222
198
|
customTools: [cloneAgentTool],
|
|
223
|
-
} as Parameters<typeof createAgentSession>[0])
|
|
224
|
-
|
|
199
|
+
} as Parameters<typeof createAgentSession>[0]),
|
|
200
|
+
)
|
|
225
201
|
session = created.session
|
|
226
202
|
|
|
227
203
|
// User text first, reminder after — the order Claude Code's attachment
|
|
@@ -122,17 +122,27 @@ export function streamToOutputFile(
|
|
|
122
122
|
cwd: string,
|
|
123
123
|
startIndex?: number,
|
|
124
124
|
): () => void {
|
|
125
|
-
// Index of the first message this stream is responsible for. A
|
|
126
|
-
// messages[0] as the initial prompt entry, so it starts at 1. A resume hands
|
|
125
|
+
// Index of the first message this stream is responsible for. A resume hands
|
|
127
126
|
// in the session's length as of just before the run: the session already
|
|
128
127
|
// holds every prior turn, and re-emitting those would duplicate history that
|
|
129
|
-
// is already in the file.
|
|
130
|
-
|
|
128
|
+
// is already in the file. A spawn has already written its prompt as the
|
|
129
|
+
// initial entry, so it starts after the first user message — found on the
|
|
130
|
+
// first flush, because pi puts a system message ahead of it and adds both
|
|
131
|
+
// only once the prompt runs.
|
|
132
|
+
let writtenCount = startIndex
|
|
131
133
|
|
|
132
134
|
const flush = () => {
|
|
133
135
|
const messages = session.messages
|
|
136
|
+
if (writtenCount === undefined) {
|
|
137
|
+
const prompt = messages.findIndex((m) => m.role === "user")
|
|
138
|
+
if (prompt === -1) return
|
|
139
|
+
writtenCount = prompt + 1
|
|
140
|
+
}
|
|
134
141
|
while (writtenCount < messages.length) {
|
|
135
|
-
const msg = messages[writtenCount]
|
|
142
|
+
const msg = messages[writtenCount++]
|
|
143
|
+
// Pi's prompt and tool-loadout records; a Claude Code transcript has no
|
|
144
|
+
// such entry.
|
|
145
|
+
if (msg.role === "system") continue
|
|
136
146
|
const entry = {
|
|
137
147
|
isSidechain: true,
|
|
138
148
|
agentId,
|
|
@@ -151,7 +161,6 @@ export function streamToOutputFile(
|
|
|
151
161
|
} catch {
|
|
152
162
|
/* ignore write errors */
|
|
153
163
|
}
|
|
154
|
-
writtenCount++
|
|
155
164
|
}
|
|
156
165
|
}
|
|
157
166
|
|
|
@@ -46,11 +46,14 @@ import { SUBAGENT_TOOL_NAMES } from "../agent-runner.js"
|
|
|
46
46
|
*
|
|
47
47
|
* Our own name, because pi resolves a duplicate registration silently, and
|
|
48
48
|
* Claude Code's bare `Workflow`, because a port of that tool is what a second
|
|
49
|
-
* workflow extension most likely calls itself.
|
|
49
|
+
* workflow extension most likely calls itself. Lowercase `workflow` is the same
|
|
50
|
+
* tool by pi convention: it is what `@quintinshaw/pi-dynamic-workflows`
|
|
51
|
+
* registers, and the match here is exact, so the case has to be listed by hand.
|
|
50
52
|
*/
|
|
51
53
|
export const FOREIGN_WORKFLOW_TOOL_NAMES: ReadonlySet<string> = new Set([
|
|
52
54
|
SUBAGENT_TOOL_NAMES.WORKFLOW,
|
|
53
55
|
"Workflow",
|
|
56
|
+
"workflow",
|
|
54
57
|
])
|
|
55
58
|
|
|
56
59
|
/** The fields of a registered tool this decision reads. */
|
|
@@ -7,14 +7,15 @@
|
|
|
7
7
|
*
|
|
8
8
|
* ## Which typebox
|
|
9
9
|
*
|
|
10
|
-
* **`typebox`, not `@sinclair/typebox`.** They are different packages
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* both roles with no
|
|
10
|
+
* **`typebox`, not `@sinclair/typebox`.** They are different packages.
|
|
11
|
+
* `@sinclair/typebox` (0.34) dispatches on a `Kind` symbol that a schema
|
|
12
|
+
* arriving over the wire does not carry, so `Value.Check` throws `Unknown type`
|
|
13
|
+
* on a plain JSON Schema — and `Type.Unsafe` does not help, it stamps a `Kind`
|
|
14
|
+
* that is not registered. `typebox` v1 is a standards JSON Schema validator and
|
|
15
|
+
* takes the schema as-is. It is also the package pi itself types
|
|
16
|
+
* `ToolDefinition.parameters` against and supplies to extensions at runtime
|
|
17
|
+
* (a peer dependency here), so the same schema object serves both roles with no
|
|
18
|
+
* conversion.
|
|
18
19
|
*
|
|
19
20
|
* ## Why we validate at all
|
|
20
21
|
*
|
|
@@ -12,7 +12,12 @@ var INHIBIT_APPLICATION_NAME = "pi-caffeinate";
|
|
|
12
12
|
var SCREENSAVER_OBJECT_PATHS = ["/org/freedesktop/ScreenSaver", "/ScreenSaver"];
|
|
13
13
|
var DBUS_CALL_TIMEOUT_MS = 2e3;
|
|
14
14
|
async function defaultDbusScreenSaverFactory() {
|
|
15
|
-
const
|
|
15
|
+
const dbus = await import("dbus-native");
|
|
16
|
+
const namespaceSessionBus = "sessionBus" in dbus ? dbus.sessionBus : void 0;
|
|
17
|
+
const sessionBus = typeof namespaceSessionBus === "function" ? namespaceSessionBus : dbus.default?.sessionBus;
|
|
18
|
+
if (typeof sessionBus !== "function") {
|
|
19
|
+
throw new Error("dbus-native did not export sessionBus");
|
|
20
|
+
}
|
|
16
21
|
return new NativeScreenSaverClient(sessionBus());
|
|
17
22
|
}
|
|
18
23
|
var NativeScreenSaverClient = class {
|