pi-daddy 0.32.0 → 0.32.1
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/CHANGELOG.md +9 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +12 -3
- package/dist/cli.js.map +1 -1
- package/dist/executors/herdr-cli.d.ts +1 -1
- package/dist/executors/herdr-cli.js +1 -1
- package/dist/executors/herdr-poll.d.ts +1 -1
- package/dist/executors/herdr-poll.js +1 -1
- package/dist/executors/pane-reaper.d.ts +1 -1
- package/dist/executors/pane-reaper.js +2 -2
- package/dist/executors/pane-reaper.js.map +1 -1
- package/dist/executors/run-herdr.d.ts +3 -3
- package/dist/executors/run-herdr.js +2 -2
- package/dist/governance/ledger-report.d.ts +1 -1
- package/dist/governance/ledger.d.ts +1 -1
- package/dist/governance/ledger.js +1 -1
- package/dist/governance/workspace-lease.js +1 -1
- package/dist/kernel/capabilities.d.ts +2 -2
- package/dist/kernel/capabilities.js +2 -2
- package/dist/kernel/catalog.d.ts +27 -0
- package/dist/kernel/catalog.d.ts.map +1 -1
- package/dist/kernel/catalog.js +59 -1
- package/dist/kernel/catalog.js.map +1 -1
- package/dist/kernel/delegate.d.ts.map +1 -1
- package/dist/kernel/delegate.js +7 -1
- package/dist/kernel/delegate.js.map +1 -1
- package/dist/kernel/grant-env.d.ts +1 -1
- package/dist/kernel/grant-env.js +1 -1
- package/dist/kernel/propagation.d.ts +1 -1
- package/dist/kernel/propagation.js +1 -1
- package/dist/kernel/resolve.d.ts +2 -2
- package/dist/kernel/resolve.js +3 -3
- package/dist/kernel/routing-authority.d.ts +1 -1
- package/dist/kernel/routing-authority.js +1 -1
- package/dist/kernel/skill-packages.d.ts +1 -1
- package/dist/kernel/skill-packages.js +1 -1
- package/dist/kernel/spawn.d.ts +1 -1
- package/dist/kernel/spawn.js +3 -3
- package/dist/kernel/spawn.js.map +1 -1
- package/dist/kernel/workspace.d.ts +1 -1
- package/extensions/execute-child.ts +1 -1
- package/extensions/grants-command.ts +1 -1
- package/extensions/session-report.ts +1 -1
- package/package.json +1 -1
- package/src/cli.ts +13 -3
- package/src/executors/herdr-cli.ts +1 -1
- package/src/executors/herdr-poll.ts +1 -1
- package/src/executors/pane-reaper.ts +2 -2
- package/src/executors/run-herdr.ts +4 -4
- package/src/governance/ledger-report.ts +1 -1
- package/src/governance/ledger.ts +1 -1
- package/src/governance/workspace-lease.ts +1 -1
- package/src/kernel/capabilities.ts +2 -2
- package/src/kernel/catalog.ts +61 -1
- package/src/kernel/delegate.ts +6 -1
- package/src/kernel/grant-env.ts +1 -1
- package/src/kernel/propagation.ts +1 -1
- package/src/kernel/resolve.ts +3 -3
- package/src/kernel/routing-authority.ts +1 -1
- package/src/kernel/skill-packages.ts +1 -1
- package/src/kernel/spawn.ts +3 -3
- package/src/kernel/workspace.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../src/kernel/delegate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAA+C,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,eAAe,EAAuC,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElH,4GAA4G;AAC5G,0GAA0G;AAC1G,+DAA+D;AAC/D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAA4B,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAgB,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAA4C,MAAM,eAAe,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAkD,MAAM,kBAAkB,CAAC;AACpH,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,UAAU,cAAc,CAAC,OAA0B,EAAE,GAAsB;IAC/E,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAE,IAAiB,EAAc,EAAE,CACjE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,qGAAqG;IACrG,mGAAmG;IACnG,iGAAiG;IACjG,oGAAoG;IACpG,uGAAuG;IACvG,sGAAsG;IACtG,mGAAmG;IACnG,oEAAoE;IACpE,IAAI,WAA4C,CAAC;IACjD,IAAI,kBAAiD,CAAC;IACtD,IAAI,CAAC;QACH,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB;YAChB,KAAK,YAAY,iBAAiB;gBAChC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;gBACpG,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,GAAe;QACxB,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,EAAE;QACR,GAAG,EAAE,EAAE;QACP,SAAS,EAAE,EAAE;QACb,UAAU;QACV,SAAS,EAAE,EAAE;QACb,UAAU;QACV,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;KACpG,CAAC;IAEF,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IACvF,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,qCAAqC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,mCAAmC,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC5G,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,EAAE,cAAc,CAAC,CAAC;IAE5G,wGAAwG;IACxG,qGAAqG;IACrG,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,MAAM,CACX;YACE,GAAG,KAAK;YACR,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7G,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,EACD,OAAO,CAAC,IAAI,CACb,CAAC;IACJ,CAAC;IAED,iGAAiG;IACjG,IAAI,SAAuB,CAAC;IAC5B,IAAI,YAAgC,CAAC;IACrC,IAAI,gBAA8C,CAAC;IACnD,sGAAsG;IACtG,IAAI,OAAoC,CAAC;IAEzC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,GAAG,UAAU,CAAC;QACrB,+FAA+F;QAC/F,iGAAiG;QACjG,2BAA2B;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,OAAO,MAAM,CACX;gBACE,GAAG,KAAK;gBACR,MAAM,EACJ,kBAAkB,OAAO,CAAC,KAAK,GAAG;oBAClC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC;aACpG,EACD,oBAAoB,CACrB,CAAC;QACJ,CAAC;QAED,+FAA+F;QAC/F,oGAAoG;QACpG,mGAAmG;QACnG,iFAAiF;QACjF,EAAE;QACF,mGAAmG;QACnG,oGAAoG;QACpG,+FAA+F;QAC/F,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvE,OAAO,MAAM,CACX;gBACE,GAAG,KAAK;gBACR,SAAS,EAAE,CAAC,WAAW,CAAC;gBACxB,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE;gBAClD,MAAM,EACJ,iBAAiB,UAAU,CAAC,IAAI,kCAAkC,WAAW,GAAG;oBAChF,4BAA4B,UAAU,CAAC,MAAM,KAAK;oBAClD,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;wBACd,CAAC,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBACrC,CAAC,CAAC,2CAA2C,WAAW,kCAAkC,CAAC;aAChG,EACD,2BAA2B,CAC5B,CAAC;QACJ,CAAC;QAED,mGAAmG;QACnG,qGAAqG;QACrG,4EAA4E;QAC5E,EAAE;QACF,qGAAqG;QACrG,kGAAkG;QAClG,oGAAoG;QACpG,6DAA6D;QAC7D,gBAAgB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,MAAM,CACX;gBACE,GAAG,KAAK;gBACR,MAAM,EACJ,UAAU,UAAU,CAAC,IAAI,qEAAqE;oBAC9F,MAAM,UAAU,CAAC,MAAM,yEAAyE;aACnG,EACD,kBAAkB,CACnB,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,MAAM,CACX;gBACE,GAAG,KAAK;gBACR,MAAM,EACJ,UAAU,UAAU,CAAC,IAAI,sCAAsC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;oBAC/F,+FAA+F;oBAC/F,wFAAwF;aAC3F,EACD,6BAA6B,CAC9B,CAAC;QACJ,CAAC;QACD,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;QACjC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IAED,oGAAoG;IACpG,2FAA2F;IAC3F,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,+FAA+F;YAC/F,gGAAgG;YAChG,kGAAkG;YAClG,iGAAiG;YACjG,uFAAuF;YACvF,MAAM,KAAK,GAAG,OAAO;iBAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,OAAQ,CAAC,CAAC;gBAC7C,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC;YACzD,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAC1C,OAAO,MAAM,CACX;gBACE,GAAG,KAAK;gBACR,SAAS;gBACT,MAAM,EACJ,oBAAoB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB;oBACjG,2DAA2D;oBAC3D,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrD,EACD,cAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,sGAAsG;IACtG,oGAAoG;IACpG,MAAM,eAAe,GAAG,6BAA6B,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/E,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,yBAAyB,CAAC;QAC7E,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,SAAS;QACT,WAAW,EAAE,GAAG,CAAC,QAAQ;QACzB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO;QACP,gBAAgB;QAChB,WAAW;QACX,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE;KACzC,CAAC,CAAC;IACH,IAAI,eAAe;QAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAE/D,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CACX;YACE,GAAG,KAAK;YACR,SAAS;YACT,MAAM;YACN,MAAM,EAAE,gBAAgB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kEAAkE;SACnH,EACD,uBAAuB,CACxB,CAAC;IACJ,CAAC;IACD,4FAA4F;IAC5F,mGAAmG;IACnG,oGAAoG;IACpG,kGAAkG;IAClG,+FAA+F;IAC/F,IAAI,CAAC;QACH,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+FAA+F;QAC/F,qEAAqE;QACrE,OAAO,MAAM,CACX,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAC/F,oBAAoB,CACrB,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,4EAA4E,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,OAAO,MAAM,CACX,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,MAAM,EAAE,EAAE,EAChH,IAAI,CACL,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,SAAS,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,OAAO,CAAC,IAAI;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,YAAY;QACZ,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KAC3C,CAAC,CAAC;IAEH,mGAAmG;IACnG,kGAAkG;IAClG,oGAAoG;IACpG,gGAAgG;IAChG,6FAA6F;IAC7F,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,MAAM,CACX;YACE,GAAG,KAAK;YACR,SAAS;YACT,MAAM;YACN,MAAM,EACJ,iBAAiB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C;gBAC/F,8BAA8B;SACjC,EACD,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAED,oGAAoG;IACpG,4FAA4F;IAC5F,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAChF,IAAI,QAAQ;QAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE9D,kGAAkG;IAClG,wGAAwG;IACxG,yGAAyG;IACzG,qGAAqG;IACrG,0DAA0D;IAC1D,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,GAAG,GAA2B;QAClC,CAAC,SAAS,CAAC,EAAE,CAAC,iCAAiC,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpF,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;QAC/B,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;KACtC,CAAC;IACF,uGAAuG;IACvG,kGAAkG;IAClG,2CAA2C;IAC3C,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/E,IAAI,GAAG,CAAC,YAAY;QAAE,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;IAC5D,IAAI,GAAG,CAAC,gBAAgB;QAAE,GAAG,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC;IACvE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/D,+FAA+F;IAC/F,qGAAqG;IACrG,mGAAmG;IACnG,oFAAoF;IACpF,qGAAqG;IACrG,wGAAwG;IACxG,uGAAuG;IACvG,4BAA4B;IAC5B,GAAG,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChF,IAAI,GAAG,CAAC,UAAU;QAAE,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;IACrD,mGAAmG;IACnG,oGAAoG;IACpG,sFAAsF;IACtF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5G,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;QACnH,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI;QACJ,GAAG;QACH,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM;QACN,UAAU;QACV,SAAS;QACT,OAAO,EAAE,GAAG,CAAC,YAAY;QACzB,WAAW,EAAE,GAAG,CAAC,gBAAgB;QACjC,UAAU;QACV,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../src/kernel/delegate.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ import { type Capability } from "./resolve.ts";
|
|
|
28
28
|
* - `tool:write`, `tool:edit`, `tool:edit-diff` — mutate the working tree, and **are not gated by default**,
|
|
29
29
|
* so a source-and-go operator would hand them to a child with no dialog at all. That gap is exactly what
|
|
30
30
|
* made "the union is mitigated by gating" untrue (R-76).
|
|
31
|
-
* - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (`
|
|
31
|
+
* - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (probe `pi-fabric-eval`).
|
|
32
32
|
* `assertNarrowing` refuses a grant containing one anyway; leaving it out of the file keeps the operator
|
|
33
33
|
* from ever holding it by accident.
|
|
34
34
|
*/
|
package/dist/kernel/grant-env.js
CHANGED
|
@@ -31,7 +31,7 @@ import { PROJECT_FILES } from "./project-paths.js";
|
|
|
31
31
|
* - `tool:write`, `tool:edit`, `tool:edit-diff` — mutate the working tree, and **are not gated by default**,
|
|
32
32
|
* so a source-and-go operator would hand them to a child with no dialog at all. That gap is exactly what
|
|
33
33
|
* made "the union is mitigated by gating" untrue (R-76).
|
|
34
|
-
* - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (`
|
|
34
|
+
* - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (probe `pi-fabric-eval`).
|
|
35
35
|
* `assertNarrowing` refuses a grant containing one anyway; leaving it out of the file keeps the operator
|
|
36
36
|
* from ever holding it by accident.
|
|
37
37
|
*/
|
|
@@ -102,7 +102,7 @@ export declare const DEFAULT_MAX_DEPTH = 2;
|
|
|
102
102
|
*
|
|
103
103
|
* `bash` is not one capability among others; it is an execution primitive. A child holding it can run
|
|
104
104
|
* `env -u PI_DADDY_GRANT pi …` and obtain a completely **ungoverned** descendant — measured, not
|
|
105
|
-
* theorised (`
|
|
105
|
+
* theorised (probe `g5-bash-escape`). Handing that down silently is the thing worth changing.
|
|
106
106
|
*
|
|
107
107
|
* Subsumption-aware gating (also ADR-0012) means this single entry covers `write`, `edit`, `read`,
|
|
108
108
|
* `grep`, `find` and `ls` as well, since `bash` confers all of them.
|
|
@@ -161,7 +161,7 @@ export const DEFAULT_MAX_DEPTH = 2;
|
|
|
161
161
|
*
|
|
162
162
|
* `bash` is not one capability among others; it is an execution primitive. A child holding it can run
|
|
163
163
|
* `env -u PI_DADDY_GRANT pi …` and obtain a completely **ungoverned** descendant — measured, not
|
|
164
|
-
* theorised (`
|
|
164
|
+
* theorised (probe `g5-bash-escape`). Handing that down silently is the thing worth changing.
|
|
165
165
|
*
|
|
166
166
|
* Subsumption-aware gating (also ADR-0012) means this single entry covers `write`, `edit`, `read`,
|
|
167
167
|
* `grep`, `find` and `ls` as well, since `bash` confers all of them.
|
package/dist/kernel/resolve.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export type Capability = string;
|
|
|
18
18
|
*
|
|
19
19
|
* `ext:pi-fabric/fabric_exec` is here on measured evidence, not suspicion: a child granted
|
|
20
20
|
* `tools: []` (nothing at all) plus `recursive: true` still reached `pi.write` and `pi.bash` and
|
|
21
|
-
* spawned a grandchild that wrote to disk. See
|
|
21
|
+
* spawned a grandchild that wrote to disk. See probe `pi-fabric-eval` (probes 2, 4, 7, 8).
|
|
22
22
|
*/
|
|
23
23
|
export declare const UNIVERSAL_CAPABILITIES: readonly Capability[];
|
|
24
24
|
/**
|
|
@@ -111,7 +111,7 @@ export declare function assertNarrowing(result: ResolveResult, allowUniversal?:
|
|
|
111
111
|
*
|
|
112
112
|
* pi core is the enforcement point — verified: `--tools` and `--no-tools` both hard-block extension
|
|
113
113
|
* tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them
|
|
114
|
-
* (
|
|
114
|
+
* (probe `pi-fabric-eval` probes 9–11). That is why enforcement needs no in-descendant runtime.
|
|
115
115
|
*
|
|
116
116
|
* Returns `null` when the grant contains no callable tools, meaning the caller should pass
|
|
117
117
|
* `--no-tools` rather than an empty `--tools` (an empty list is not a valid allowlist).
|
package/dist/kernel/resolve.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* `ext:pi-fabric/fabric_exec` is here on measured evidence, not suspicion: a child granted
|
|
18
18
|
* `tools: []` (nothing at all) plus `recursive: true` still reached `pi.write` and `pi.bash` and
|
|
19
|
-
* spawned a grandchild that wrote to disk. See
|
|
19
|
+
* spawned a grandchild that wrote to disk. See probe `pi-fabric-eval` (probes 2, 4, 7, 8).
|
|
20
20
|
*/
|
|
21
21
|
export const UNIVERSAL_CAPABILITIES = ["ext:pi-fabric/fabric_exec", "tool:fabric_exec"];
|
|
22
22
|
/**
|
|
@@ -101,7 +101,7 @@ export function resolve(input) {
|
|
|
101
101
|
* ADR-0017 created and ADR-0023's own example uses — was refused with **"capability escalation
|
|
102
102
|
* blocked"**, and recorded as an escalation attempt, in a session that had opted out.
|
|
103
103
|
*
|
|
104
|
-
* `maySpawnDefinition` had always honoured `tool:*` for definition ids and
|
|
104
|
+
* `maySpawnDefinition` had always honoured `tool:*` for definition ids and the README had always
|
|
105
105
|
* claimed it "satisfies any capability". This function disagreed with both, which is R-28's shape: two
|
|
106
106
|
* spellings of one rule, and the enforcing one was wrong.
|
|
107
107
|
*/
|
|
@@ -184,7 +184,7 @@ export function assertNarrowing(result, allowUniversal = false) {
|
|
|
184
184
|
*
|
|
185
185
|
* pi core is the enforcement point — verified: `--tools` and `--no-tools` both hard-block extension
|
|
186
186
|
* tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them
|
|
187
|
-
* (
|
|
187
|
+
* (probe `pi-fabric-eval` probes 9–11). That is why enforcement needs no in-descendant runtime.
|
|
188
188
|
*
|
|
189
189
|
* Returns `null` when the grant contains no callable tools, meaning the caller should pass
|
|
190
190
|
* `--no-tools` rather than an empty `--tools` (an empty list is not a valid allowlist).
|
|
@@ -31,7 +31,7 @@ export interface RoutingRefusal {
|
|
|
31
31
|
* Checked before anything is said about the target, for the reason `maySpawnDefinition` is: it is a
|
|
32
32
|
* governance question about the SESSION. Before ADR-0035 nothing checked it — the registry inherited into
|
|
33
33
|
* every governed child and a child routed to `staging` could route its grandchild to `prod` (R-131, measured
|
|
34
|
-
* in `
|
|
34
|
+
* in probe `g36-workspace-attenuation`).
|
|
35
35
|
*
|
|
36
36
|
* **Well-formedness first, because `workspace_id` is a model-facing tool parameter** and the next step turns
|
|
37
37
|
* it into a capability id. `workspace_id: "prod,tool:bash"` produced a `WORKSPACE_NOT_AUTHORIZED` whose
|
|
@@ -20,7 +20,7 @@ import { WILDCARD } from "./pi-tools.js";
|
|
|
20
20
|
* Checked before anything is said about the target, for the reason `maySpawnDefinition` is: it is a
|
|
21
21
|
* governance question about the SESSION. Before ADR-0035 nothing checked it — the registry inherited into
|
|
22
22
|
* every governed child and a child routed to `staging` could route its grandchild to `prod` (R-131, measured
|
|
23
|
-
* in `
|
|
23
|
+
* in probe `g36-workspace-attenuation`).
|
|
24
24
|
*
|
|
25
25
|
* **Well-formedness first, because `workspace_id` is a model-facing tool parameter** and the next step turns
|
|
26
26
|
* it into a capability id. `workspace_id: "prod,tool:bash"` produced a `WORKSPACE_NOT_AUTHORIZED` whose
|
|
@@ -76,7 +76,7 @@ export declare function isSafeName(name: string): boolean;
|
|
|
76
76
|
* grants), which is right for the enforcement path — the catalog refuses what it does not know — and is
|
|
77
77
|
* exactly why the check has to be here, at the boundary that *generates* rather than the one that enforces.
|
|
78
78
|
*
|
|
79
|
-
* The grammar is the one
|
|
79
|
+
* The grammar is the one the README documents: `tool:<name>`, `skill:<name>`, `agent:<name>`,
|
|
80
80
|
* `workspace:<id>`, and `ext:<pkg>/<tool>` where `<pkg>` may be npm-scoped. No wildcards — those are refused
|
|
81
81
|
* separately and loudly, because "you tried to grant yourself everything" is a different fact from "that is
|
|
82
82
|
* not a name".
|
|
@@ -51,7 +51,7 @@ export function isSafeName(name) {
|
|
|
51
51
|
* grants), which is right for the enforcement path — the catalog refuses what it does not know — and is
|
|
52
52
|
* exactly why the check has to be here, at the boundary that *generates* rather than the one that enforces.
|
|
53
53
|
*
|
|
54
|
-
* The grammar is the one
|
|
54
|
+
* The grammar is the one the README documents: `tool:<name>`, `skill:<name>`, `agent:<name>`,
|
|
55
55
|
* `workspace:<id>`, and `ext:<pkg>/<tool>` where `<pkg>` may be npm-scoped. No wildcards — those are refused
|
|
56
56
|
* separately and loudly, because "you tried to grant yourself everything" is a different fact from "that is
|
|
57
57
|
* not a name".
|
package/dist/kernel/spawn.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The enforcement point is pi core, not this package: `--tools` and `--no-tools` hard-block extension
|
|
5
5
|
* tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them (verified,
|
|
6
|
-
*
|
|
6
|
+
* probe `pi-fabric-eval` probes 9–11). So governance reduces to "compute the allowlist correctly
|
|
7
7
|
* and hand it to pi", with no runtime inside the descendant.
|
|
8
8
|
*/
|
|
9
9
|
import { type Capability } from "./resolve.ts";
|
package/dist/kernel/spawn.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The enforcement point is pi core, not this package: `--tools` and `--no-tools` hard-block extension
|
|
5
5
|
* tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them (verified,
|
|
6
|
-
*
|
|
6
|
+
* probe `pi-fabric-eval` probes 9–11). So governance reduces to "compute the allowlist correctly
|
|
7
7
|
* and hand it to pi", with no runtime inside the descendant.
|
|
8
8
|
*/
|
|
9
9
|
import { toPiToolsAllowlist } from "./resolve.js";
|
|
@@ -34,7 +34,7 @@ export function planSpawn(input) {
|
|
|
34
34
|
args.push("--no-extensions");
|
|
35
35
|
// R-32. `--no-extensions` governs EXTENSIONS ONLY — measured, not assumed: a child spawned with
|
|
36
36
|
// `--tools read` still loaded all eight of the operator's skills and `CLAUDE.md`
|
|
37
|
-
// (`
|
|
37
|
+
// (probe `g16-herdr` §4-5). Skills are injected into the system prompt rather than passed as
|
|
38
38
|
// tools, so `--tools` cannot reach them and the `skill:` namespace enforced nothing at all.
|
|
39
39
|
//
|
|
40
40
|
// `--no-skills` is unconditional and `--skill` is added on top, because that is exactly how pi
|
|
@@ -92,7 +92,7 @@ export function planSpawn(input) {
|
|
|
92
92
|
* - `@…` is resolved as a file and its contents injected into the child's prompt — absolute paths, `~`
|
|
93
93
|
* expansion, no sandbox. This happens in `main.js` before any tool is constructed, so `--tools` and
|
|
94
94
|
* `--no-tools` never apply to it. A child granted nothing at all still reads the file. Verified
|
|
95
|
-
* against pi 0.83.0 (review finding A-C1 / B-C7, and `
|
|
95
|
+
* against pi 0.83.0 (review finding A-C1 / B-C7, and probe `g1-argv`).
|
|
96
96
|
* - `-…` is parsed as a flag, and pi ships `--approve` ("trust project-local files for this run").
|
|
97
97
|
*
|
|
98
98
|
* The task comes from the model, so this is the one place in the package where a model-authored string
|
package/dist/kernel/spawn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/kernel/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAmB,MAAM,cAAc,CAAC;AA8CnE;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;;QAC5D,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE/B,iGAAiG;IACjG,iEAAiE;IACjE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE7B,gGAAgG;IAChG,iFAAiF;IACjF,
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/kernel/spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export interface WorkspaceRegistryFile {
|
|
|
8
8
|
/**
|
|
9
9
|
* Where this was loaded from, carried so a refusal can NAME it.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
11
|
+
* The README claimed an unregistered id is refused "with `WORKSPACE_NOT_REGISTERED`, which names the
|
|
12
12
|
* file", and `catalog.ts` justified exempting the whole namespace from the unknown check on the strength of
|
|
13
13
|
* that — *"a second, weaker check here can only turn that precise refusal into a misleading one"*. The
|
|
14
14
|
* refusal named no file: the registry object had no idea where it came from. Carried on the object rather
|
|
@@ -352,7 +352,7 @@ export async function executePlannedChild(input: {
|
|
|
352
352
|
// NOT strict, and this line is the whole point of R-99. The child has already run: failing
|
|
353
353
|
// closed here prevents nothing and used to discard a completed child's entire output while
|
|
354
354
|
// blaming "ledger" — under `delegate_all` it discarded every sibling's work too. The docstring
|
|
355
|
-
// above,
|
|
355
|
+
// above, the README and the ADR-0034 amendment all promised this; only the comment changed.
|
|
356
356
|
// `capability_decision`, which PROVISIONS, still fails closed.
|
|
357
357
|
strict: false,
|
|
358
358
|
onFailure: (cause) => teardownFailures.push(`child lifecycle record failed: ${String(cause)}`),
|
|
@@ -137,7 +137,7 @@ export const grantsCommand = {
|
|
|
137
137
|
];
|
|
138
138
|
for (const bad of report.corrupt.slice(0, 5)) lines.push(` line ${bad.line}: ${bad.reason}`);
|
|
139
139
|
// ADR-0031, and R-51's lesson applied on the day the field was added rather than a release later: a field
|
|
140
|
-
// the writer sets and no diagnostic reads is one that needs `jq`, and
|
|
140
|
+
// the writer sets and no diagnostic reads is one that needs `jq`, and the README claims the executor is
|
|
141
141
|
// announced "per child in the ledger". `unknown` is shown only when present, because on a fresh ledger it
|
|
142
142
|
// is always zero and a permanent zero is noise; on an upgraded one it is the count of pre-0.16 lines, which
|
|
143
143
|
// is worth seeing.
|
|
@@ -127,7 +127,7 @@ export async function reportSessionStart(session: GrantsSession, ctx: SessionRep
|
|
|
127
127
|
// `agent:*` grants no tools, but it authorises every definition in BOTH skill roots — including
|
|
128
128
|
// `~/.pi/agent/skills/`, which other software installs into, so ADR-0017's "an operator-authored
|
|
129
129
|
// file" is not true of everything it covers. Paired with a shell that is every body on disk running
|
|
130
|
-
// with `bash`.
|
|
130
|
+
// with `bash`. The README calls the combination poor and nothing detected it, which is R-47's
|
|
131
131
|
// shape in a control shipped one day later.
|
|
132
132
|
if (
|
|
133
133
|
session.ownGrant.includes(AGENT_WILDCARD) &&
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-daddy",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.1",
|
|
4
4
|
"description": "Capability governance for pi sub-agents: spawn Agent Skills (SKILL.md) definitions whose allowed-tools becomes a grant that can only narrow going down a delegation tree, enforced by pi's own --tools allowlist, with an append-only ledger.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
package/src/cli.ts
CHANGED
|
@@ -27,6 +27,8 @@ import {
|
|
|
27
27
|
settingsIgnoredByGit,
|
|
28
28
|
} from "./governance/init.ts";
|
|
29
29
|
import { registeredWorkspaceIds } from "./kernel/workspace.ts";
|
|
30
|
+
import { explainDoubledNamespace } from "./kernel/catalog.ts";
|
|
31
|
+
import type { Capability } from "./kernel/resolve.ts";
|
|
30
32
|
import {
|
|
31
33
|
discoverSkillPackages,
|
|
32
34
|
skillPackageRoots,
|
|
@@ -201,7 +203,8 @@ async function init(cwd: string, force: boolean): Promise<number> {
|
|
|
201
203
|
}
|
|
202
204
|
|
|
203
205
|
/** Say what was refused and what the fix is. Each reason has a different one. */
|
|
204
|
-
|
|
206
|
+
/** Exported so the message an operator actually reads can be tested; `init` composes it, nothing else calls it. */
|
|
207
|
+
export function reportRefusal(pkg: SkillPackage, refusal: RefusedSkill): string {
|
|
205
208
|
const head = `REFUSED ${pkg.name}: ${JSON.stringify(refusal.subject)}`;
|
|
206
209
|
switch (refusal.reason) {
|
|
207
210
|
case "unsafe-name":
|
|
@@ -209,12 +212,19 @@ function reportRefusal(pkg: SkillPackage, refusal: RefusedSkill): string {
|
|
|
209
212
|
`${head} cannot be governed — a definition name becomes a capability id in a comma-separated ` +
|
|
210
213
|
`grant, a line in a file you source, and a path. Names must match [A-Za-z0-9][A-Za-z0-9._-]*.`
|
|
211
214
|
);
|
|
212
|
-
case "unsafe-capability":
|
|
215
|
+
case "unsafe-capability": {
|
|
216
|
+
// The one shape of unsafe id that has a known cause worth naming: an `allowed-tools` entry written with a
|
|
217
|
+
// capitalised namespace, which the bare-entry path prefixes a second time. `isSafeCapability` rejects the
|
|
218
|
+
// extra colon, so this refusal — not the spawn refusal and not `planInit`'s cautions — is where a doubled
|
|
219
|
+
// id actually reaches an operator. Measured: a package declaring `Tool:Read` never reaches `planInit`.
|
|
220
|
+
const doubled = refusal.detail.map((id) => explainDoubledNamespace(id as Capability)).filter(Boolean);
|
|
213
221
|
return (
|
|
214
222
|
`${head} declares ${refusal.detail.join(", ")}, which cannot be written into a grant file — a ` +
|
|
215
223
|
`capability id is tool:/skill:/agent:<name> or ext:<pkg>/<tool>. A quote or a separator here ` +
|
|
216
|
-
`would end up in a file you are told to \`source\`.`
|
|
224
|
+
`would end up in a file you are told to \`source\`.` +
|
|
225
|
+
(doubled.length ? `\n ${doubled.join("\n ")}` : "")
|
|
217
226
|
);
|
|
227
|
+
}
|
|
218
228
|
case "wildcard":
|
|
219
229
|
return (
|
|
220
230
|
`${head} declares ${refusal.detail.join(", ")} — that is root authority, not a description of what ` +
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* herdr executor would mean the session imported the thing it was deciding whether to use.
|
|
8
8
|
*
|
|
9
9
|
* Every rule here is tested against an injected `exec`, so the suite stays fast, pi-free and herdr-free. The
|
|
10
|
-
* facts the fakes reproduce were measured against real herdr 0.7.5 (`
|
|
10
|
+
* facts the fakes reproduce were measured against real herdr 0.7.5 (probe `g16-herdr`).
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { execFile } from "node:child_process";
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* *observing* an agent, `run-herdr.ts` is about *starting and cleaning up after* one. Nothing here creates or
|
|
7
7
|
* destroys anything.
|
|
8
8
|
*
|
|
9
|
-
* The two facts it is built on were measured against real herdr 0.7.5 (`
|
|
9
|
+
* The two facts it is built on were measured against real herdr 0.7.5 (probe `g16-herdr`) and both are
|
|
10
10
|
* counter-intuitive enough to be worth the module comment: `agent wait --until idle` matches the state the
|
|
11
11
|
* agent was **already** in, and `agent read` is the one command that does **not** return a JSON envelope.
|
|
12
12
|
*/
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `agent_settled` (async) and at process `exit` (sync backstop).
|
|
8
8
|
*
|
|
9
9
|
* The gap that remains is the one this module was created for. A pi session **killed outright** runs no `exit`
|
|
10
|
-
* handler, so it leaves one pane per tracked child, and `
|
|
10
|
+
* handler, so it leaves one pane per tracked child, and probe `g16-herdr` records that an orphaned pane is
|
|
11
11
|
* not trivially closable afterwards. R-62 was re-rated L×L → M×L when ADR-0031 made panes the default path.
|
|
12
12
|
*
|
|
13
13
|
* **Registered on `exit` only, deliberately — not on SIGINT or SIGTERM.** That is the part worth reading,
|
|
@@ -203,7 +203,7 @@ export function reapOpenPanes(syncExec: (args: string[]) => void = defaultSyncEx
|
|
|
203
203
|
async function closePane(exec: HerdrExec, pane: OpenPane): Promise<boolean> {
|
|
204
204
|
// **No `agent stop`.** It is not a herdr command — measured against 0.7.5, where it prints the usage banner
|
|
205
205
|
// and exits 0, which `defaultExec` reports as success. Two call sites here and one in `run-herdr.ts` issued it
|
|
206
|
-
// for nothing, and `
|
|
206
|
+
// for nothing, and probe `g16-herdr` asserted it worked from a block that was never run. Closing the tab
|
|
207
207
|
// is the only kill herdr offers, and it does kill the child.
|
|
208
208
|
const reply = await exec(["tab", "close", pane.tab]).catch(() => undefined);
|
|
209
209
|
const closed = reply !== undefined && !parseReply(reply).error;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* **Why go through herdr's CLI rather than the third-party `pi-herdr` extension.** That extension exposes
|
|
9
9
|
* `agentArgs` and `env` as MODEL-facing tool parameters (R-30), which hands a model an argv array and the
|
|
10
10
|
* environment variable the grant travels on. Here the model chooses a definition and a task; this package
|
|
11
|
-
* builds the argv. Measured facts this relies on (`
|
|
11
|
+
* builds the argv. Measured facts this relies on (probe `g16-herdr`):
|
|
12
12
|
*
|
|
13
13
|
* - `herdr agent start … -- <args>` delivers argv **verbatim**, echoed back in the reply.
|
|
14
14
|
* - `--tools` is enforced inside a pane exactly as it is for a direct spawn; `--no-tools` yields none.
|
|
@@ -76,7 +76,7 @@ export interface HerdrRunRequest {
|
|
|
76
76
|
* The task, delivered with `herdr agent prompt` rather than as an argv element.
|
|
77
77
|
*
|
|
78
78
|
* This is strictly safer than the direct-spawn path, which has to defend a model-authored string from
|
|
79
|
-
* pi's argv parser by prefixing a space (`neutralisePrompt`, `
|
|
79
|
+
* pi's argv parser by prefixing a space (`neutralisePrompt`, probe `g1-argv`). Here the task never
|
|
80
80
|
* reaches argv at all, so there is no parser in front of it.
|
|
81
81
|
*/
|
|
82
82
|
prompt: string;
|
|
@@ -97,7 +97,7 @@ export interface HerdrRunRequest {
|
|
|
97
97
|
* Leave the pane open after the run so a human can read or resume it.
|
|
98
98
|
*
|
|
99
99
|
* Default **false**: a fan-out that leaks a pane per child fills the operator's workspace, and
|
|
100
|
-
* `
|
|
100
|
+
* probe `g16-herdr` records that panes are not trivially closable once orphaned.
|
|
101
101
|
*/
|
|
102
102
|
keepPane?: boolean;
|
|
103
103
|
exec?: HerdrExec;
|
|
@@ -289,7 +289,7 @@ export async function runHerdrPane(request: HerdrRunRequest): Promise<ChildRunRe
|
|
|
289
289
|
* running descendant."* **`herdr agent stop` does not exist.** Measured against herdr 0.7.5: the `agent`
|
|
290
290
|
* subcommands are `list get read send-keys prompt rename focus wait attach start explain`, and `agent stop`
|
|
291
291
|
* prints the usage banner and exits 0 — which `defaultExec` reports as a success, so nothing ever noticed.
|
|
292
|
-
* `
|
|
292
|
+
* probe `g16-herdr` asserted it worked, in a *How to rerun* block that was never run.
|
|
293
293
|
*
|
|
294
294
|
* So there is exactly one kill available: closing the tab. That forces the distinction below.
|
|
295
295
|
*
|
|
@@ -53,7 +53,7 @@ export interface LedgerReport {
|
|
|
53
53
|
* **Added because the field was written and never read, which is R-51's shape exactly.** R-51 was
|
|
54
54
|
* `definitionDigest`: recorded from the start, absent from every report, so the questions ADR-0018 advertised
|
|
55
55
|
* needed hand-written `jq`. `executor` arrived the same way — `src/governance/ledger.ts` justifies making it *required*
|
|
56
|
-
* with "reading it back is the only reason it exists", and nothing read it back.
|
|
56
|
+
* with "reading it back is the only reason it exists", and nothing read it back. The README claims the
|
|
57
57
|
* executor is "announced three times… per child in the ledger"; without this the third announcement was to
|
|
58
58
|
* `jq` only.
|
|
59
59
|
*
|
package/src/governance/ledger.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Append-only grant ledger.
|
|
3
3
|
*
|
|
4
4
|
* Exists because pi-fabric's persisted execution trace records `args: {}` — it captures *that* a child
|
|
5
|
-
* ran, not *what it was authorised to do* (
|
|
5
|
+
* ran, not *what it was authorised to do* (probe `pi-fabric-eval` probe 5). Without this record
|
|
6
6
|
* you cannot answer "what was this sub-agent permitted to do?" after the fact, which is the whole
|
|
7
7
|
* point of a governance layer.
|
|
8
8
|
*
|
|
@@ -145,7 +145,7 @@ export async function acquireWorkspaceLease(input: {
|
|
|
145
145
|
* the lock file descriptor and holds the lock in its own right — killing only `flock` leaves the
|
|
146
146
|
* lock HELD by an orphan, and every later acquisition then reports WORKSPACE_WRITE_CONFLICT, which
|
|
147
147
|
* is the one message an operator would use to conclude another agent is writing. Measured in
|
|
148
|
-
* `
|
|
148
|
+
* probe `g35-flock-fd-inheritance` (R-99).
|
|
149
149
|
*/
|
|
150
150
|
const hardKill = () => {
|
|
151
151
|
// The GROUP, so this works on the readiness-timeout path too — there `helperPid` is usually still
|
|
@@ -59,7 +59,7 @@ export const DELEGATE_CAPABILITY: Capability = "tool:delegate";
|
|
|
59
59
|
* Consolidating the sites is a separate change, and a count nobody re-derives is the defect this list exists
|
|
60
60
|
* to prevent.
|
|
61
61
|
*
|
|
62
|
-
*
|
|
62
|
+
* The README's grammar section is the prose statement of the same list and is kept in step with it.
|
|
63
63
|
*/
|
|
64
64
|
export const CAPABILITY_NAMESPACE_PREFIXES = ["tool:", "ext:", "skill:", "agent:", "workspace:"] as const;
|
|
65
65
|
|
|
@@ -80,7 +80,7 @@ export function workspaceCapability(workspaceId: string): Capability {
|
|
|
80
80
|
*
|
|
81
81
|
* Mirrors `maySpawnDefinition` deliberately — same shape, same wildcard handling, same reason. Routing was
|
|
82
82
|
* the one governance dimension that did not attenuate (R-131, measured in
|
|
83
|
-
* `
|
|
83
|
+
* probe `g36-workspace-attenuation`): the registry inherited into every child and nothing checked the
|
|
84
84
|
* caller's authority, so a child routed to `staging` could route its grandchild to `prod`.
|
|
85
85
|
*
|
|
86
86
|
* `tool:*` satisfies it because governance is opt-in — an ungoverned session holds the wildcard and must
|
package/src/kernel/catalog.ts
CHANGED
|
@@ -25,7 +25,7 @@ import { loadDefinitions, type SkillDefinition } from "./definitions.ts";
|
|
|
25
25
|
import { PI_BUILTIN_TOOLS, WILDCARD } from "./pi-tools.ts";
|
|
26
26
|
import { AGENT_WILDCARD, WORKSPACE_WILDCARD, type Capability } from "./resolve.ts";
|
|
27
27
|
import { loadWorkspaceRegistry, type WorkspaceRegistryFile } from "./workspace.ts";
|
|
28
|
-
import { isSafeWorkspaceId } from "./capabilities.ts";
|
|
28
|
+
import { CAPABILITY_NAMESPACE_PREFIXES, isSafeWorkspaceId } from "./capabilities.ts";
|
|
29
29
|
import { piProjectDir } from "./project-paths.ts";
|
|
30
30
|
|
|
31
31
|
export type CapabilityKind = "builtin" | "extension" | "skill" | "agentType" | "workspace";
|
|
@@ -295,6 +295,66 @@ export function suggestForUnknown(unknown: Capability, catalog: Catalog): Capabi
|
|
|
295
295
|
return bestDistance <= limit ? best : null;
|
|
296
296
|
}
|
|
297
297
|
|
|
298
|
+
/**
|
|
299
|
+
* Why an id carries two namespaces, said as the mistake that produced it.
|
|
300
|
+
*
|
|
301
|
+
* `ceilingForDefinition` prefixes a BARE entry with `tool:` and recognises an explicit namespace by its literal
|
|
302
|
+
* lower-case prefix, so `allowed-tools: Read` and `allowed-tools: tool:read` are both right. The capitalised
|
|
303
|
+
* spelling the same field invites is not: the frontmatter is copied from Claude Code, where the tool names are
|
|
304
|
+
* `Read` and `Grep`, so an author who also reaches for the namespace writes `Tool:Read` — which misses the prefix
|
|
305
|
+
* test, is lower-cased with the rest of the bare entry, and arrives as `tool:tool:read`. Every namespace has this
|
|
306
|
+
* shape (`Workspace:prod` becomes `tool:workspace:prod`), which is why the prefix is read from the one shared list
|
|
307
|
+
* rather than a second spelling of it.
|
|
308
|
+
*
|
|
309
|
+
* The messages that followed were loud and useless. A spawn refusal said "not present in this session's catalog
|
|
310
|
+
* (typo, or an uninstalled package?)" about an id nobody typed, and `suggestForUnknown` cannot rescue it either:
|
|
311
|
+
* `tool:read` is five edits from `read`, well past a threshold that never exceeds two. `pi-daddy init` refuses the
|
|
312
|
+
* whole definition earlier still, because `isSafeCapability` rejects the extra colon, and named the mangled id too.
|
|
313
|
+
*
|
|
314
|
+
* It names the mistake and does not repair it, for `ceilingForDefinition`'s own reason: a capability this package
|
|
315
|
+
* inferred rather than read is a grant nobody wrote. The author edits the file.
|
|
316
|
+
*
|
|
317
|
+
* **What the suggestion cannot recover.** The doubling happens on the bare-entry path, which lower-cases the whole
|
|
318
|
+
* entry before this function ever sees it, so `Workspace:Prod` and `Workspace:prod` both arrive as
|
|
319
|
+
* `tool:workspace:prod`. For `tool:` that loses nothing, since a pi tool name is lower-case anyway. For the other
|
|
320
|
+
* namespaces the identifier's own capitalisation is already gone, so the suggestion says so rather than implying
|
|
321
|
+
* that copying it verbatim must work. Nor is "or the bare name" offered outside `tool:`: a bare `prod` becomes
|
|
322
|
+
* `tool:prod`, which is a second unknown capability rather than a fix.
|
|
323
|
+
*/
|
|
324
|
+
export function explainDoubledNamespace(unknown: Capability): string | null {
|
|
325
|
+
const intended = undoubleNamespace(unknown);
|
|
326
|
+
if (intended === unknown) return null;
|
|
327
|
+
const prefix = CAPABILITY_NAMESPACE_PREFIXES.find((p) => unknown.slice("tool:".length).toLowerCase().startsWith(p))!;
|
|
328
|
+
const tail =
|
|
329
|
+
prefix === "tool:"
|
|
330
|
+
? ` (or the bare name \`${intended.slice("tool:".length)}\`)`
|
|
331
|
+
: `, whose own capitalisation was folded when the bare entry was read, so restore it if that id has any`;
|
|
332
|
+
return (
|
|
333
|
+
`${unknown} is prefixed twice: \`allowed-tools\` adds \`tool:\` to a bare entry and recognises an ` +
|
|
334
|
+
`explicit \`${prefix}\` prefix only in lower case, so an entry already carrying a namespace was given ` +
|
|
335
|
+
`another — write \`${intended}\`${tail} in the definition`
|
|
336
|
+
);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* The entry the author meant, with every extra `tool:` removed.
|
|
341
|
+
*
|
|
342
|
+
* Recursive, because `tool:tool:tool:read` is one mistake made twice and advising `tool:tool:read` would hand back
|
|
343
|
+
* an id with the same defect. The namespace is matched case-insensitively and re-emitted in lower case, so
|
|
344
|
+
* `tool:Tool:Read` — reachable on the model-chosen `tools:` path, which does not case-fold — suggests `tool:read`
|
|
345
|
+
* rather than the broken spelling it arrived in. A `tool:` name is lower-cased because pi's tool names are; any
|
|
346
|
+
* other identifier is left as it arrived, since its case may be significant and is not this function's to change.
|
|
347
|
+
*/
|
|
348
|
+
function undoubleNamespace(id: Capability): Capability {
|
|
349
|
+
if (!id.startsWith("tool:")) return id;
|
|
350
|
+
const inner = id.slice("tool:".length);
|
|
351
|
+
const prefix = CAPABILITY_NAMESPACE_PREFIXES.find((p) => inner.toLowerCase().startsWith(p));
|
|
352
|
+
// A bare `tool:tool:` names nothing to suggest, so it stays an ordinary unknown capability.
|
|
353
|
+
if (!prefix || inner.length === prefix.length) return id;
|
|
354
|
+
const rest = inner.slice(prefix.length);
|
|
355
|
+
return undoubleNamespace((prefix === "tool:" ? `tool:${rest.toLowerCase()}` : `${prefix}${rest}`) as Capability);
|
|
356
|
+
}
|
|
357
|
+
|
|
298
358
|
/**
|
|
299
359
|
* Skill name -> absolute path, for `planSpawn`'s `--skill` flags (R-32).
|
|
300
360
|
*
|
package/src/kernel/delegate.ts
CHANGED
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
inheritableGrant,
|
|
27
27
|
} from "./propagation.ts";
|
|
28
28
|
import { inheritApprovals, type InheritableApproval } from "./approval.ts";
|
|
29
|
-
import { suggestForUnknown, unknownCapabilities, type Catalog } from "./catalog.ts";
|
|
29
|
+
import { explainDoubledNamespace, suggestForUnknown, unknownCapabilities, type Catalog } from "./catalog.ts";
|
|
30
30
|
import { GovernanceRefusal, refusal, type RefusalCode, type StructuredRefusal } from "./refusals.ts";
|
|
31
31
|
import { digestTask, normaliseCorrelation, type ApprovalBinding, type CorrelationMetadata } from "./correlation.ts";
|
|
32
32
|
import { resolveDelegationApproval } from "./delegation-approval.ts";
|
|
@@ -199,8 +199,13 @@ export function planDelegation(request: DelegationRequest, ctx: DelegationContex
|
|
|
199
199
|
// refusal — correct, and previously unhelpful, because pi's equivalent is `find` and no amount of
|
|
200
200
|
// staring at "not present in this session's catalog" says so. The hint changes nothing about the
|
|
201
201
|
// refusal; it just stops the author having to guess which of nine built-ins was meant.
|
|
202
|
+
// A doubled namespace is answered first and instead: it is not a guess about what the author meant
|
|
203
|
+
// but a statement of what the field did, and "did you mean tool:read?" beside `tool:tool:read` shows
|
|
204
|
+
// the author a correction without ever saying that `allowed-tools` supplies the `tool:` itself.
|
|
202
205
|
const hints = unknown
|
|
203
206
|
.map((c) => {
|
|
207
|
+
const doubled = explainDoubledNamespace(c);
|
|
208
|
+
if (doubled !== null) return doubled;
|
|
204
209
|
const s = suggestForUnknown(c, ctx.catalog!);
|
|
205
210
|
return s === null ? null : `${c} → did you mean ${s}?`;
|
|
206
211
|
})
|
package/src/kernel/grant-env.ts
CHANGED
|
@@ -33,7 +33,7 @@ import { PROJECT_FILES } from "./project-paths.ts";
|
|
|
33
33
|
* - `tool:write`, `tool:edit`, `tool:edit-diff` — mutate the working tree, and **are not gated by default**,
|
|
34
34
|
* so a source-and-go operator would hand them to a child with no dialog at all. That gap is exactly what
|
|
35
35
|
* made "the union is mitigated by gating" untrue (R-76).
|
|
36
|
-
* - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (`
|
|
36
|
+
* - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (probe `pi-fabric-eval`).
|
|
37
37
|
* `assertNarrowing` refuses a grant containing one anyway; leaving it out of the file keeps the operator
|
|
38
38
|
* from ever holding it by accident.
|
|
39
39
|
*/
|
|
@@ -196,7 +196,7 @@ export const DEFAULT_MAX_DEPTH = 2;
|
|
|
196
196
|
*
|
|
197
197
|
* `bash` is not one capability among others; it is an execution primitive. A child holding it can run
|
|
198
198
|
* `env -u PI_DADDY_GRANT pi …` and obtain a completely **ungoverned** descendant — measured, not
|
|
199
|
-
* theorised (`
|
|
199
|
+
* theorised (probe `g5-bash-escape`). Handing that down silently is the thing worth changing.
|
|
200
200
|
*
|
|
201
201
|
* Subsumption-aware gating (also ADR-0012) means this single entry covers `write`, `edit`, `read`,
|
|
202
202
|
* `grep`, `find` and `ls` as well, since `bash` confers all of them.
|
package/src/kernel/resolve.ts
CHANGED
|
@@ -20,7 +20,7 @@ export type Capability = string;
|
|
|
20
20
|
*
|
|
21
21
|
* `ext:pi-fabric/fabric_exec` is here on measured evidence, not suspicion: a child granted
|
|
22
22
|
* `tools: []` (nothing at all) plus `recursive: true` still reached `pi.write` and `pi.bash` and
|
|
23
|
-
* spawned a grandchild that wrote to disk. See
|
|
23
|
+
* spawned a grandchild that wrote to disk. See probe `pi-fabric-eval` (probes 2, 4, 7, 8).
|
|
24
24
|
*/
|
|
25
25
|
export const UNIVERSAL_CAPABILITIES: readonly Capability[] = ["ext:pi-fabric/fabric_exec", "tool:fabric_exec"];
|
|
26
26
|
|
|
@@ -146,7 +146,7 @@ export function resolve(input: ResolveInput): ResolveResult {
|
|
|
146
146
|
* ADR-0017 created and ADR-0023's own example uses — was refused with **"capability escalation
|
|
147
147
|
* blocked"**, and recorded as an escalation attempt, in a session that had opted out.
|
|
148
148
|
*
|
|
149
|
-
* `maySpawnDefinition` had always honoured `tool:*` for definition ids and
|
|
149
|
+
* `maySpawnDefinition` had always honoured `tool:*` for definition ids and the README had always
|
|
150
150
|
* claimed it "satisfies any capability". This function disagreed with both, which is R-28's shape: two
|
|
151
151
|
* spellings of one rule, and the enforcing one was wrong.
|
|
152
152
|
*/
|
|
@@ -242,7 +242,7 @@ export function assertNarrowing(result: ResolveResult, allowUniversal = false):
|
|
|
242
242
|
*
|
|
243
243
|
* pi core is the enforcement point — verified: `--tools` and `--no-tools` both hard-block extension
|
|
244
244
|
* tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them
|
|
245
|
-
* (
|
|
245
|
+
* (probe `pi-fabric-eval` probes 9–11). That is why enforcement needs no in-descendant runtime.
|
|
246
246
|
*
|
|
247
247
|
* Returns `null` when the grant contains no callable tools, meaning the caller should pass
|
|
248
248
|
* `--no-tools` rather than an empty `--tools` (an empty list is not a valid allowlist).
|