maestro-agent-sdk 0.1.21 → 0.1.23

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.
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,cAAc,EAEd,eAAe,EACf,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;AAC1D,CAAC;AA+DD,gFAAgF;AAChF,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB,8EAA8E;AAC9E,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,CAA6B,CAAC,OAAO,KAAK,CAAC,CAAC;AAC7F,CAAC;AAED,oEAAoE;AACpE,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAsB,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,MAAM,KAAK,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,MAAyB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EACxB,+DAA+D,CAChE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,2CAA2C,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAwBD;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,SAAiB,EAAE,KAA2B;IAC/D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,IAAI,GAAuB;QAC/B,OAAO,EAAE,CAAC;QACV,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,QAAQ,EAAE,GAAG,IAAI,EAAE;QACrC,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC7E,UAAU,EAAE,mBAAmB;KAChC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM,CAAC;IAChD,IAAI,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS,CAAC;IACzD,IAAI,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC;IACtD,IAAI,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC;IACtD,IAAI,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACrD,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,QAAQ,EAAE,eAAe,CAAC;IAC3E,IAAI,eAAe,KAAK,SAAS;QAAE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,oBAAoB,IAAI,QAAQ,EAAE,oBAAoB,CAAC;IAC9E,IAAI,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;IACjE,sEAAsE;IACtE,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,oEAAoE;IACpE,oEAAoE;IACpE,iEAAiE;IACjE,iDAAiD;IACjD,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,EAAE,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpF,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,QAA2B,EAC3B,IAA2B;IAE3B,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACnD,uEAAuE;IACvE,wEAAwE;IACxE,mEAAmE;IACnE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvB,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC9D,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,IAAI,CAAC;QACH,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAK,CAA2B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,kDAAkD,CAAC,CAAC;YACvF,uEAAuE;YACvE,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAChC,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAChC,0EAA0E;IAC1E,mEAAmE;IACnE,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAyCD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAAC,IAA0B;IACtD,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,iDAAiD,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChE,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,CAAC,YAAY,0BAA0B,cAAc,CAAC,MAAM,EAAE,CAClG,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,UAAU,EAAE,CAAC;IACvD,cAAc,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC7C,IAAI,YAAY,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,iEAAiE;IACjE,8DAA8D;IAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC;IAC9C,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,MAAM,SAAS,GAAyB;QACtC,GAAG;QACH,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,oBAAoB,EAAE,OAAO,CAAC,MAAM;KACrC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,MAAM,CAAC;IACjD,IAAI,MAAM,KAAK,SAAS;QAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;IACpD,IAAI,UAAU,EAAE,SAAS,KAAK,SAAS;QAAE,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACpF,IAAI,UAAU,EAAE,QAAQ,KAAK,SAAS;QAAE,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACjF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,SAAS,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC7E,CAAC;SAAM,IAAI,UAAU,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC9C,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC3C,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC9C,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,CACT;QACE,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,YAAY;QACZ,cAAc,EAAE,IAAI,CAAC,YAAY;QACjC,YAAY,EAAE,OAAO,CAAC,MAAM;KAC7B,EACD,+BAA+B,CAChC,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACzF,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,KAAiB;IACxC,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAwBD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA2B;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;IACjD,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACvC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAyB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACpE,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7C,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,IAAI,CACT,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,EACxC,+CAA+C,CAChD,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAQ,CAA0B,CAAC,IAAI,KAAK,QAAQ,CAC1F,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA2B;IAC1D,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1B,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC/B,0DAA0D;QAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC7D,GAAG,EAAE,CAAC;YACN,SAAS;QACX,CAAC;QACD,mEAAmE;QACnE,oEAAoE;QACpE,kCAAkC;QAClC,EAAE;QACF,qEAAqE;QACrE,uEAAuE;QACvE,qEAAqE;QACrE,gEAAgE;QAChE,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAA0B,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAC7F,IAAI,UAAU,EAAE,CAAC;gBACf,GAAG,EAAE,CAAC;gBACN,SAAS;YACX,CAAC;QACH,CAAC;QACD,oEAAoE;QACpE,oEAAoE;QACpE,8BAA8B;QAC9B,MAAM;IACR,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAmB,8BAA8B;IAI3F,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,yEAAyE;QACzE,sBAAsB;QACtB,IAAK,CAA2B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,6CAA6C,CAAC,CAAC;QAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACpC,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvC,OAAO,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,wEAAwE;QACxE,oEAAoE;QACpE,uEAAuE;QACvE,gBAAgB;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM;gBAAE,SAAS;YACrC,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC;YACV,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAChC,2EAA2E;YAC3E,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAA2B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAChB,kEAAkE,CACnE,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,oDAAoD;gBACpD,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBAChC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,69 @@
1
+ import type { ToolHandler, ToolRegistry } from "../../tools/registry.js";
2
+ /**
3
+ * ToolSearch — claude-SDK-style deferred-tool activation.
4
+ *
5
+ * v0.1.22+ ships maestro with a two-tier tool surface:
6
+ *
7
+ * - **Always-loaded tools** — built-ins like Read/Write/Bash/Grep ride
8
+ * every wire body unconditionally. Their schemas live in the prompt
9
+ * cache prefix and the model can call them at any time.
10
+ *
11
+ * - **Deferred tools** — typically MCP tools registered via the pool
12
+ * (auto-defer when `AgentQueryOptions.enableToolSearch` is set).
13
+ * They show up in the system-reminder as `name + 60-char summary`
14
+ * but their full JSON Schema is NOT shipped on the wire. The model
15
+ * learns they exist from the catalog but can't call them yet.
16
+ *
17
+ * `ToolSearch` is the bridge: the model invokes it with either an exact
18
+ * name list ("select:Foo,Bar") or a keyword query, the registry promotes
19
+ * the matched deferred tools to active, and from the NEXT turn onward
20
+ * their schemas ride the wire — the model can call them like any other
21
+ * tool.
22
+ *
23
+ * ## Why both modes exist
24
+ *
25
+ * - **`select:` mode** — used when the model already knows the exact
26
+ * tool name from the catalog (one line per tool name in the reminder).
27
+ * Deterministic: each comma-separated name is looked up verbatim;
28
+ * no fuzzy matching that could promote the wrong tool.
29
+ *
30
+ * - **Keyword mode** — used when the model knows what it wants to do
31
+ * ("upload a file to Google Drive") but doesn't remember the exact
32
+ * tool name. Substring-matches the query against both name and
33
+ * description, case-insensitive, returns the top N by relevance.
34
+ *
35
+ * Two modes also map to two distinct claude-SDK behaviors documented in
36
+ * the ToolSearch system reminders shipped in Claude Code conversations —
37
+ * keeping behavioral parity means a model trained on those transcripts
38
+ * uses the right mode without prompting tricks.
39
+ *
40
+ * ## Response shape
41
+ *
42
+ * Returns a plain-text response listing each requested name and one of:
43
+ *
44
+ * - `OK` — promoted from deferred → active. Schema follows so the model
45
+ * can call it next turn even without re-reading the catalog. The
46
+ * surrounding format mirrors claude-SDK's `<functions>{...}</functions>`
47
+ * wrapper so model parsing instincts trained on Claude Code transcripts
48
+ * transfer cleanly.
49
+ * - `ALREADY_ACTIVE` — was already promoted earlier this session. No-op,
50
+ * model can call directly.
51
+ * - `NOT_FOUND` — name not registered as deferred (or not registered at
52
+ * all). Doesn't error the call — model retries with a different name
53
+ * or keyword.
54
+ *
55
+ * Plain text instead of JSON is deliberate: the schema dump itself is
56
+ * already JSON-flavored and wrapping it in another JSON layer just adds
57
+ * escaping noise the model has to parse through.
58
+ *
59
+ * ## Always-loaded
60
+ *
61
+ * ToolSearch itself is never deferred — it has to be available for the
62
+ * model to discover anything else. Registered as a plain `tools.register(t)`
63
+ * in `provider.ts` whenever `enableToolSearch` is true.
64
+ */
65
+ export declare const TOOL_SEARCH_NAME: "ToolSearch";
66
+ export declare function createToolSearchTool(opts: {
67
+ registry: ToolRegistry;
68
+ }): ToolHandler;
69
+ //# sourceMappingURL=tool_search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool_search.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/tool_search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,eAAO,MAAM,gBAAgB,EAAG,YAAqB,CAAC;AAYtD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAA;CAAE,GAAG,WAAW,CAsFlF"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * ToolSearch — claude-SDK-style deferred-tool activation.
3
+ *
4
+ * v0.1.22+ ships maestro with a two-tier tool surface:
5
+ *
6
+ * - **Always-loaded tools** — built-ins like Read/Write/Bash/Grep ride
7
+ * every wire body unconditionally. Their schemas live in the prompt
8
+ * cache prefix and the model can call them at any time.
9
+ *
10
+ * - **Deferred tools** — typically MCP tools registered via the pool
11
+ * (auto-defer when `AgentQueryOptions.enableToolSearch` is set).
12
+ * They show up in the system-reminder as `name + 60-char summary`
13
+ * but their full JSON Schema is NOT shipped on the wire. The model
14
+ * learns they exist from the catalog but can't call them yet.
15
+ *
16
+ * `ToolSearch` is the bridge: the model invokes it with either an exact
17
+ * name list ("select:Foo,Bar") or a keyword query, the registry promotes
18
+ * the matched deferred tools to active, and from the NEXT turn onward
19
+ * their schemas ride the wire — the model can call them like any other
20
+ * tool.
21
+ *
22
+ * ## Why both modes exist
23
+ *
24
+ * - **`select:` mode** — used when the model already knows the exact
25
+ * tool name from the catalog (one line per tool name in the reminder).
26
+ * Deterministic: each comma-separated name is looked up verbatim;
27
+ * no fuzzy matching that could promote the wrong tool.
28
+ *
29
+ * - **Keyword mode** — used when the model knows what it wants to do
30
+ * ("upload a file to Google Drive") but doesn't remember the exact
31
+ * tool name. Substring-matches the query against both name and
32
+ * description, case-insensitive, returns the top N by relevance.
33
+ *
34
+ * Two modes also map to two distinct claude-SDK behaviors documented in
35
+ * the ToolSearch system reminders shipped in Claude Code conversations —
36
+ * keeping behavioral parity means a model trained on those transcripts
37
+ * uses the right mode without prompting tricks.
38
+ *
39
+ * ## Response shape
40
+ *
41
+ * Returns a plain-text response listing each requested name and one of:
42
+ *
43
+ * - `OK` — promoted from deferred → active. Schema follows so the model
44
+ * can call it next turn even without re-reading the catalog. The
45
+ * surrounding format mirrors claude-SDK's `<functions>{...}</functions>`
46
+ * wrapper so model parsing instincts trained on Claude Code transcripts
47
+ * transfer cleanly.
48
+ * - `ALREADY_ACTIVE` — was already promoted earlier this session. No-op,
49
+ * model can call directly.
50
+ * - `NOT_FOUND` — name not registered as deferred (or not registered at
51
+ * all). Doesn't error the call — model retries with a different name
52
+ * or keyword.
53
+ *
54
+ * Plain text instead of JSON is deliberate: the schema dump itself is
55
+ * already JSON-flavored and wrapping it in another JSON layer just adds
56
+ * escaping noise the model has to parse through.
57
+ *
58
+ * ## Always-loaded
59
+ *
60
+ * ToolSearch itself is never deferred — it has to be available for the
61
+ * model to discover anything else. Registered as a plain `tools.register(t)`
62
+ * in `provider.ts` whenever `enableToolSearch` is true.
63
+ */
64
+ export const TOOL_SEARCH_NAME = "ToolSearch";
65
+ /**
66
+ * Bound the keyword-mode result size. 5 matches the system-reminder's
67
+ * catalog density: pulling more than ~5 tools into active per turn defeats
68
+ * the budget-tightening purpose of deferral. Callers can raise via
69
+ * `max_results` input if they really want more, capped at 25 (above which
70
+ * the result text gets unwieldy for the model to parse).
71
+ */
72
+ const DEFAULT_MAX_RESULTS = 5;
73
+ const MAX_MAX_RESULTS = 25;
74
+ export function createToolSearchTool(opts) {
75
+ const { registry } = opts;
76
+ return {
77
+ parallelSafe: true,
78
+ schema: {
79
+ name: TOOL_SEARCH_NAME,
80
+ description: "Activate one or more deferred tools so you can call them on subsequent turns. " +
81
+ "Deferred tools are listed by name+summary in the system-reminder; their full " +
82
+ "schema is only sent on the wire after you ToolSearch for them. " +
83
+ "Two query forms: 'select:Name1,Name2,...' for exact name selection (use this " +
84
+ "when you already know the tool name from the catalog), or any other string " +
85
+ "treated as a keyword search across deferred tool names + descriptions. " +
86
+ "Returns one OK/ALREADY_ACTIVE/NOT_FOUND line per requested name plus the " +
87
+ "activated tool schemas so you can call them immediately on the next turn. " +
88
+ "ToolSearch is always available — you do not need to activate it.",
89
+ input_schema: {
90
+ type: "object",
91
+ properties: {
92
+ query: {
93
+ type: "string",
94
+ description: "Either 'select:Name1,Name2,...' for exact selection or a keyword query.",
95
+ },
96
+ max_results: {
97
+ type: "number",
98
+ description: "Maximum number of matches returned in keyword mode. Default 5, max 25. " +
99
+ "Ignored in 'select:' mode (every named tool is processed).",
100
+ },
101
+ },
102
+ required: ["query"],
103
+ },
104
+ },
105
+ async execute(input) {
106
+ const queryRaw = typeof input.query === "string" ? input.query : "";
107
+ const query = queryRaw.trim();
108
+ if (query.length === 0) {
109
+ return JSON.stringify({ error: "ToolSearch: query is required and must be non-empty" });
110
+ }
111
+ const rawMax = typeof input.max_results === "number" ? input.max_results : DEFAULT_MAX_RESULTS;
112
+ const maxResults = Math.max(1, Math.min(MAX_MAX_RESULTS, Math.floor(rawMax)));
113
+ if (query.startsWith("select:")) {
114
+ const names = query
115
+ .slice("select:".length)
116
+ .split(",")
117
+ .map((s) => s.trim())
118
+ .filter((s) => s.length > 0);
119
+ if (names.length === 0) {
120
+ return JSON.stringify({
121
+ error: "ToolSearch: 'select:' query must list at least one comma-separated name",
122
+ });
123
+ }
124
+ return renderActivationResult(registry, names);
125
+ }
126
+ // Keyword mode: substring-match the query against deferred tool name +
127
+ // description (case-insensitive). Score = name match (higher weight) +
128
+ // description match. Stable sort: ties resolve by registration order
129
+ // (catalog order) so the response is deterministic.
130
+ const catalog = registry.deferredCatalog();
131
+ const lowered = query.toLowerCase();
132
+ const scored = [];
133
+ catalog.forEach((entry, idx) => {
134
+ const nameMatch = entry.name.toLowerCase().includes(lowered);
135
+ const descMatch = entry.summary.toLowerCase().includes(lowered);
136
+ if (!nameMatch && !descMatch)
137
+ return;
138
+ // Name match weighted 2x because that's the field the model
139
+ // referenced when it typed the keyword (descriptions are
140
+ // surfaced for ambiguous cases).
141
+ const score = (nameMatch ? 2 : 0) + (descMatch ? 1 : 0);
142
+ scored.push({ name: entry.name, score, order: idx });
143
+ });
144
+ scored.sort((a, b) => b.score - a.score || a.order - b.order);
145
+ const picked = scored.slice(0, maxResults).map((s) => s.name);
146
+ if (picked.length === 0) {
147
+ return (`ToolSearch: no deferred tools match keyword "${query}". ` +
148
+ `Try 'select:ExactName' from the deferred-catalog section of the system-reminder, ` +
149
+ `or refine the keyword.`);
150
+ }
151
+ return renderActivationResult(registry, picked);
152
+ },
153
+ };
154
+ }
155
+ /**
156
+ * Run a list of requested names through the registry's activation surface
157
+ * and render the per-name status + activated schemas as a model-friendly
158
+ * text block.
159
+ *
160
+ * The schemas are emitted in claude-SDK's `<functions>{...}</functions>`
161
+ * wrapper because that's the format the model's pretrained Claude Code
162
+ * transcripts use when ToolSearch surfaces a new tool — keeping the same
163
+ * envelope means the model recognizes the activation pattern without us
164
+ * having to reinvent another shape.
165
+ */
166
+ function renderActivationResult(registry, names) {
167
+ const statusLines = [];
168
+ const schemaBlocks = [];
169
+ for (const name of names) {
170
+ const schema = registry.schemaFor(name);
171
+ if (!schema) {
172
+ statusLines.push(`- ${name}: NOT_FOUND`);
173
+ continue;
174
+ }
175
+ const promoted = registry.markActive(name);
176
+ if (promoted) {
177
+ statusLines.push(`- ${name}: OK`);
178
+ schemaBlocks.push(`<function>${JSON.stringify(schema)}</function>`);
179
+ }
180
+ else {
181
+ statusLines.push(`- ${name}: ALREADY_ACTIVE`);
182
+ }
183
+ }
184
+ const head = statusLines.join("\n");
185
+ if (schemaBlocks.length === 0) {
186
+ return `${head}\n\n(no schemas attached — every requested name was already active or not found)`;
187
+ }
188
+ return `${head}\n\n<functions>\n${schemaBlocks.join("\n")}\n</functions>`;
189
+ }
190
+ //# sourceMappingURL=tool_search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool_search.js","sourceRoot":"","sources":["../../../src/tools/builtin/tool_search.ts"],"names":[],"mappings":"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"}
@@ -87,10 +87,56 @@ export interface ToolHandler {
87
87
  parallelSafe?: boolean;
88
88
  execute(input: Record<string, unknown>): Promise<ToolExecuteResult>;
89
89
  }
90
+ /**
91
+ * v0.1.22+: per-registration options. Currently the only knob is `deferred`
92
+ * but the shape is open so future extensions (per-tool max-iter cost,
93
+ * cost class, etc.) can land non-breaking.
94
+ */
95
+ export interface RegisterOptions {
96
+ /**
97
+ * When true, the tool is registered but its schema is NOT wired into the
98
+ * `schemas()` slice the loop sends to the provider until something calls
99
+ * `markActive(name)`. The intended activator is the `ToolSearch` built-in
100
+ * (model calls it with a name or keyword → registry promotes the match
101
+ * to active).
102
+ *
103
+ * Two reasons a tool ships deferred:
104
+ * 1. Token budget — a topic with many MCP servers can easily declare
105
+ * 200+ tools; sending every schema every turn would burn 50K+
106
+ * input tokens before the conversation starts.
107
+ * 2. Selection accuracy — the model picks better tools when the menu
108
+ * is short; deferred tools live in the system-reminder catalog (one
109
+ * line per tool: name + 60-char summary) so the model still knows
110
+ * they exist and can fetch the schema on demand via ToolSearch.
111
+ *
112
+ * Default false — pre-v0.1.22 callers see no behavior change.
113
+ */
114
+ deferred?: boolean;
115
+ }
90
116
  export declare class ToolRegistry {
91
117
  private readonly tools;
92
118
  private readonly hooks;
93
- register(handler: ToolHandler): void;
119
+ /**
120
+ * v0.1.22+: names of tools registered with `{deferred:true}`. Membership in
121
+ * this set means the schema is hidden from `schemas()` until either:
122
+ * - `markActive(name)` is called (typically from the ToolSearch tool), OR
123
+ * - `restoreActive(names[])` rehydrates a previously-saved active set
124
+ * after a session resume.
125
+ *
126
+ * Once a name is "promoted" (moved from `deferredNames` → `activeDeferred`)
127
+ * it stays active for the rest of the loop's lifetime; persisting +
128
+ * restoring is handled at the session-store layer so a multi-turn
129
+ * conversation doesn't have to re-search the same tools every resume.
130
+ */
131
+ private readonly deferredNames;
132
+ /**
133
+ * Names of deferred tools that have been activated this loop. Distinct from
134
+ * `deferredNames` so the catalog rendering (system-reminder) can still
135
+ * surface the still-deferred subset while `schemas()` exposes the active
136
+ * subset on the wire.
137
+ */
138
+ private readonly activeDeferred;
139
+ register(handler: ToolHandler, options?: RegisterOptions): void;
94
140
  /**
95
141
  * Register a hook pair (pre and/or post). Hooks fire in registration
96
142
  * order — pre forward, post forward. "Last in, last to react" beats a
@@ -102,7 +148,66 @@ export declare class ToolRegistry {
102
148
  /** Diagnostic: count of registered hooks. */
103
149
  __hookCount(): number;
104
150
  has(name: string): boolean;
151
+ /**
152
+ * Tool schemas the loop should send on this turn's wire body. v0.1.22+:
153
+ * deferred tools are excluded unless `markActive(name)` (or
154
+ * `restoreActive([…])`) has already promoted them. Always-loaded tools
155
+ * (`register(t)` without `{deferred:true}`) are unconditionally included.
156
+ *
157
+ * Ordering: always-loaded first, then active-deferred — keeps the
158
+ * always-loaded prefix byte-stable across turns regardless of which
159
+ * deferred tools the model has activated, so Anthropic's prompt cache
160
+ * doesn't churn every time the model promotes a new tool.
161
+ */
105
162
  schemas(): ProviderToolSchema[];
163
+ /**
164
+ * Promote a deferred tool to active so its schema starts riding the wire.
165
+ * Idempotent — calling on an already-active or unknown name is a no-op.
166
+ * Returns true on a state change (deferred → active), false otherwise so
167
+ * the `ToolSearch` tool can tell the model exactly which selections took
168
+ * effect vs were already active / unknown.
169
+ */
170
+ markActive(name: string): boolean;
171
+ /**
172
+ * The deferred tools the model can still discover this turn. The result
173
+ * is `{name, summary}` pairs sized for the system-reminder catalog —
174
+ * `summary` is the first 80 chars of the schema description, clipped on
175
+ * a word boundary when possible. Activated tools are excluded (they're
176
+ * already visible via `schemas()`) so the catalog only ever advertises
177
+ * what hasn't been pulled in yet.
178
+ */
179
+ deferredCatalog(): Array<{
180
+ name: string;
181
+ summary: string;
182
+ }>;
183
+ /**
184
+ * Look up a deferred tool's full schema by name. Used by `ToolSearch` to
185
+ * render the activated tool's schema back to the model in the same turn
186
+ * (Claude-Code-style — once selected, the model sees the schema in the
187
+ * tool result and can call it next turn).
188
+ *
189
+ * Returns `null` for unknown names so callers can render a "not found"
190
+ * line per requested name instead of throwing.
191
+ */
192
+ schemaFor(name: string): ProviderToolSchema | null;
193
+ /** Snapshot of currently-active deferred-tool names (for session-store
194
+ * persistence). Stable iteration order so JSONL diffs stay clean. */
195
+ serializeActive(): string[];
196
+ /**
197
+ * Rehydrate the active-deferred set after a session resume. Names that
198
+ * aren't currently registered as deferred are silently skipped — that
199
+ * covers the legitimate cases where the host shut down an MCP server
200
+ * between turns or renamed a tool. Idempotent: repeated calls converge
201
+ * to the supplied set's intersection with `deferredNames`.
202
+ */
203
+ restoreActive(names: readonly string[]): void;
204
+ /** True when the tool is registered AND currently deferred (not yet
205
+ * activated). Exported so tests and ToolSearch can branch cleanly. */
206
+ isDeferred(name: string): boolean;
207
+ /** True when the registry has any deferred tools at all (active or not).
208
+ * Used by the system-reminder builder to decide whether to render the
209
+ * deferred-catalog section. */
210
+ hasDeferred(): boolean;
106
211
  /**
107
212
  * Dispatch through the full hook chain:
108
213
  * 1. Pre hooks in order. First `block` wins → wrapped as {error}; skip
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,sBAAsB,EAAE,CAAC;AAElE;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,GACrB;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACtD;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,iBAAiB,KACnB,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,kBAAkB,KACpB,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,kBAAkB,CAAC;IAC3B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAEhD,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAQpC;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAIhC,6CAA6C;IAC7C,WAAW,IAAI,MAAM;IAIrB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,OAAO,IAAI,kBAAkB,EAAE;IAI/B;;;;;;;;;;;;;;;;OAgBG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuDxF;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGtC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,35 @@
1
1
  export class ToolRegistry {
2
2
  tools = new Map();
3
3
  hooks = [];
4
- register(handler) {
4
+ /**
5
+ * v0.1.22+: names of tools registered with `{deferred:true}`. Membership in
6
+ * this set means the schema is hidden from `schemas()` until either:
7
+ * - `markActive(name)` is called (typically from the ToolSearch tool), OR
8
+ * - `restoreActive(names[])` rehydrates a previously-saved active set
9
+ * after a session resume.
10
+ *
11
+ * Once a name is "promoted" (moved from `deferredNames` → `activeDeferred`)
12
+ * it stays active for the rest of the loop's lifetime; persisting +
13
+ * restoring is handled at the session-store layer so a multi-turn
14
+ * conversation doesn't have to re-search the same tools every resume.
15
+ */
16
+ deferredNames = new Set();
17
+ /**
18
+ * Names of deferred tools that have been activated this loop. Distinct from
19
+ * `deferredNames` so the catalog rendering (system-reminder) can still
20
+ * surface the still-deferred subset while `schemas()` exposes the active
21
+ * subset on the wire.
22
+ */
23
+ activeDeferred = new Set();
24
+ register(handler, options) {
5
25
  const name = handler.schema.name;
6
26
  if (this.tools.has(name)) {
7
27
  throw new Error(`Maestro ToolRegistry: tool '${name}' is already registered`);
8
28
  }
9
29
  this.tools.set(name, handler);
30
+ if (options?.deferred) {
31
+ this.deferredNames.add(name);
32
+ }
10
33
  }
11
34
  /**
12
35
  * Register a hook pair (pre and/or post). Hooks fire in registration
@@ -25,8 +48,101 @@ export class ToolRegistry {
25
48
  has(name) {
26
49
  return this.tools.has(name);
27
50
  }
51
+ /**
52
+ * Tool schemas the loop should send on this turn's wire body. v0.1.22+:
53
+ * deferred tools are excluded unless `markActive(name)` (or
54
+ * `restoreActive([…])`) has already promoted them. Always-loaded tools
55
+ * (`register(t)` without `{deferred:true}`) are unconditionally included.
56
+ *
57
+ * Ordering: always-loaded first, then active-deferred — keeps the
58
+ * always-loaded prefix byte-stable across turns regardless of which
59
+ * deferred tools the model has activated, so Anthropic's prompt cache
60
+ * doesn't churn every time the model promotes a new tool.
61
+ */
28
62
  schemas() {
29
- return Array.from(this.tools.values()).map((h) => h.schema);
63
+ const out = [];
64
+ for (const [name, h] of this.tools) {
65
+ if (this.deferredNames.has(name) && !this.activeDeferred.has(name))
66
+ continue;
67
+ out.push(h.schema);
68
+ }
69
+ return out;
70
+ }
71
+ /**
72
+ * Promote a deferred tool to active so its schema starts riding the wire.
73
+ * Idempotent — calling on an already-active or unknown name is a no-op.
74
+ * Returns true on a state change (deferred → active), false otherwise so
75
+ * the `ToolSearch` tool can tell the model exactly which selections took
76
+ * effect vs were already active / unknown.
77
+ */
78
+ markActive(name) {
79
+ if (!this.deferredNames.has(name))
80
+ return false;
81
+ if (this.activeDeferred.has(name))
82
+ return false;
83
+ this.activeDeferred.add(name);
84
+ return true;
85
+ }
86
+ /**
87
+ * The deferred tools the model can still discover this turn. The result
88
+ * is `{name, summary}` pairs sized for the system-reminder catalog —
89
+ * `summary` is the first 80 chars of the schema description, clipped on
90
+ * a word boundary when possible. Activated tools are excluded (they're
91
+ * already visible via `schemas()`) so the catalog only ever advertises
92
+ * what hasn't been pulled in yet.
93
+ */
94
+ deferredCatalog() {
95
+ const out = [];
96
+ for (const name of this.deferredNames) {
97
+ if (this.activeDeferred.has(name))
98
+ continue;
99
+ const handler = this.tools.get(name);
100
+ if (!handler)
101
+ continue;
102
+ out.push({ name, summary: clipSummary(handler.schema.description) });
103
+ }
104
+ return out;
105
+ }
106
+ /**
107
+ * Look up a deferred tool's full schema by name. Used by `ToolSearch` to
108
+ * render the activated tool's schema back to the model in the same turn
109
+ * (Claude-Code-style — once selected, the model sees the schema in the
110
+ * tool result and can call it next turn).
111
+ *
112
+ * Returns `null` for unknown names so callers can render a "not found"
113
+ * line per requested name instead of throwing.
114
+ */
115
+ schemaFor(name) {
116
+ return this.tools.get(name)?.schema ?? null;
117
+ }
118
+ /** Snapshot of currently-active deferred-tool names (for session-store
119
+ * persistence). Stable iteration order so JSONL diffs stay clean. */
120
+ serializeActive() {
121
+ return Array.from(this.activeDeferred).sort();
122
+ }
123
+ /**
124
+ * Rehydrate the active-deferred set after a session resume. Names that
125
+ * aren't currently registered as deferred are silently skipped — that
126
+ * covers the legitimate cases where the host shut down an MCP server
127
+ * between turns or renamed a tool. Idempotent: repeated calls converge
128
+ * to the supplied set's intersection with `deferredNames`.
129
+ */
130
+ restoreActive(names) {
131
+ for (const name of names) {
132
+ if (this.deferredNames.has(name))
133
+ this.activeDeferred.add(name);
134
+ }
135
+ }
136
+ /** True when the tool is registered AND currently deferred (not yet
137
+ * activated). Exported so tests and ToolSearch can branch cleanly. */
138
+ isDeferred(name) {
139
+ return this.deferredNames.has(name) && !this.activeDeferred.has(name);
140
+ }
141
+ /** True when the registry has any deferred tools at all (active or not).
142
+ * Used by the system-reminder builder to decide whether to render the
143
+ * deferred-catalog section. */
144
+ hasDeferred() {
145
+ return this.deferredNames.size > 0;
30
146
  }
31
147
  /**
32
148
  * Dispatch through the full hook chain:
@@ -119,6 +235,32 @@ export class ToolRegistry {
119
235
  * structured payload themselves once we expose the array to post hooks
120
236
  * in a future iteration.
121
237
  */
238
+ /**
239
+ * Clip a tool description to a short one-line summary for the deferred-
240
+ * catalog block inside `<system-reminder>`. v0.1.22+.
241
+ *
242
+ * Target length: 80 chars. We prefer a word boundary so the truncation
243
+ * doesn't fall mid-token (the line is what the model uses to decide
244
+ * whether to ToolSearch the full schema; a clean ellipsis reads better
245
+ * than a sliced word).
246
+ *
247
+ * Newlines collapse to spaces — tool descriptions sometimes contain
248
+ * multi-line docblocks and we want every catalog entry to be exactly
249
+ * one line.
250
+ */
251
+ function clipSummary(description) {
252
+ const flat = description.replace(/\s+/g, " ").trim();
253
+ if (flat.length <= 80)
254
+ return flat;
255
+ // Find the last word boundary inside the budget so the truncation lands
256
+ // on a space, not a token. Fall back to a hard slice if no space exists
257
+ // inside the budget (rare — tool descriptions are written prose).
258
+ const slice = flat.slice(0, 80);
259
+ const lastSpace = slice.lastIndexOf(" ");
260
+ if (lastSpace > 40)
261
+ return `${slice.slice(0, lastSpace)}…`;
262
+ return `${slice}…`;
263
+ }
122
264
  function previewOfBlocks(blocks) {
123
265
  return blocks
124
266
  .map((b) => {