@nuvin/agent-core 0.2.0-rc.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/VERSION +2 -2
  2. package/dist/agent/index.js +1 -1
  3. package/dist/chunk-D5IVWJHX.js +1 -1
  4. package/dist/chunk-FFIZ6TKW.js +1 -1
  5. package/dist/chunk-GAZGO6N7.js +1 -0
  6. package/dist/chunk-IUZALP6K.js +1 -1
  7. package/dist/chunk-KIIEBXJF.js +1 -0
  8. package/dist/chunk-LIE76IJA.js +1 -1
  9. package/dist/chunk-X7VAACWY.js +1 -1
  10. package/dist/chunk-YNOIG4FD.js +1 -1
  11. package/dist/formats/index.js +1 -1
  12. package/dist/hooks/index.js +1 -1
  13. package/dist/models/index.d.ts +1 -0
  14. package/dist/models/index.js +1 -1
  15. package/dist/shared/index.js +1 -1
  16. package/dist/shared/types.d.ts +25 -7
  17. package/dist/tools/{internal-tool-runtime.d.ts → core/internal-tool-runtime.d.ts} +1 -1
  18. package/dist/tools/core/mock-tool-runtime.d.ts +3 -0
  19. package/dist/tools/core/runtime-manager-tools.d.ts +132 -0
  20. package/dist/tools/{tool-output-offload.d.ts → core/tool-output-offload.d.ts} +1 -1
  21. package/dist/tools/{tools.d.ts → core/tools.d.ts} +1 -1
  22. package/dist/tools/file-editing/anchored-file-edit.d.ts +53 -0
  23. package/dist/tools/file-editing/anchored-file-errors.d.ts +5 -0
  24. package/dist/tools/file-editing/anchored-file-operations.d.ts +38 -0
  25. package/dist/tools/file-editing/anchored-file-read.d.ts +37 -0
  26. package/dist/tools/file-editing/atomic-file-write.d.ts +19 -0
  27. package/dist/tools/file-editing/file-edit-tool.d.ts +166 -0
  28. package/dist/tools/file-editing/file-mutation-coordinator.d.ts +13 -0
  29. package/dist/tools/{file-new-tool.d.ts → file-editing/file-new-tool.d.ts} +5 -2
  30. package/dist/tools/file-editing/file-observation-store.d.ts +40 -0
  31. package/dist/tools/{file-read-tool.d.ts → file-editing/file-read-tool.d.ts} +8 -2
  32. package/dist/tools/file-editing/file-snapshot.d.ts +16 -0
  33. package/dist/tools/file-editing/hashline-file-edit-adapter.d.ts +19 -0
  34. package/dist/tools/file-editing/structured-file-edit-adapter.d.ts +94 -0
  35. package/dist/tools/file-editing/workspace-paths.d.ts +20 -0
  36. package/dist/tools/index.d.ts +43 -34
  37. package/dist/tools/index.js +1 -1
  38. package/dist/tools/{mcp-connection-generation.d.ts → mcp/mcp-connection-generation.d.ts} +1 -1
  39. package/dist/tools/mcp/mcp-tool-adapter.d.ts +72 -0
  40. package/dist/tools/{glob-tool.d.ts → search/glob-tool.d.ts} +2 -2
  41. package/dist/tools/{grep-tool.d.ts → search/grep-tool.d.ts} +2 -2
  42. package/dist/tools/{ls-tool.d.ts → search/ls-tool.d.ts} +2 -2
  43. package/dist/tools/{view-file-tool.d.ts → search/view-file-tool.d.ts} +2 -2
  44. package/dist/tools/{ask-user-tool.d.ts → session/ask-user-tool.d.ts} +4 -4
  45. package/dist/tools/{lsp-tool.d.ts → session/lsp-tool.d.ts} +5 -5
  46. package/dist/tools/{skill-tool.d.ts → session/skill-tool.d.ts} +2 -2
  47. package/dist/tools/{todo-write-tool.d.ts → session/todo-write-tool.d.ts} +2 -2
  48. package/dist/tools/session/update-topic-tool.d.ts +12 -0
  49. package/dist/tools/{bash-output-tool.d.ts → shell/bash-output-tool.d.ts} +2 -2
  50. package/dist/tools/{bash-tool.d.ts → shell/bash-tool.d.ts} +5 -5
  51. package/dist/tools/{command-tool.d.ts → shell/command-tool.d.ts} +2 -2
  52. package/dist/tools/{kill-shell-tool.d.ts → shell/kill-shell-tool.d.ts} +2 -2
  53. package/dist/tools/{web-fetch-tool.d.ts → web/web-fetch-tool.d.ts} +2 -2
  54. package/dist/tools/{web-search-tool.d.ts → web/web-search-tool.d.ts} +2 -2
  55. package/package.json +3 -2
  56. package/dist/chunk-A4CS4HLK.js +0 -1
  57. package/dist/tools/file-edit-tool.d.ts +0 -34
  58. package/dist/tools/mcp-tool-adapter.d.ts +0 -72
  59. package/dist/tools/mock-tool-runtime.d.ts +0 -3
  60. package/dist/tools/runtime-manager-tools.d.ts +0 -79
  61. package/dist/tools/update-topic-tool.d.ts +0 -12
  62. package/dist/tools/workspace-paths.d.ts +0 -5
  63. /package/dist/tools/{file-mutation.d.ts → file-editing/file-mutation.d.ts} +0 -0
  64. /package/dist/tools/{mcp-oauth-provider.d.ts → mcp/mcp-oauth-provider.d.ts} +0 -0
  65. /package/dist/tools/{mcp-safe-error-provenance.d.ts → mcp/mcp-safe-error-provenance.d.ts} +0 -0
  66. /package/dist/tools/{mcp-safe-error.d.ts → mcp/mcp-safe-error.d.ts} +0 -0
  67. /package/dist/tools/{mcp-server-manager.d.ts → mcp/mcp-server-manager.d.ts} +0 -0
  68. /package/dist/tools/{grep-engine.d.ts → search/grep-engine.d.ts} +0 -0
  69. /package/dist/tools/{ripgrep.d.ts → search/ripgrep.d.ts} +0 -0
  70. /package/dist/tools/{background-process-registry.d.ts → shell/background-process-registry.d.ts} +0 -0
  71. /package/dist/tools/{bash-internals.d.ts → shell/bash-internals.d.ts} +0 -0
  72. /package/dist/tools/{process-tree-termination.d.ts → shell/process-tree-termination.d.ts} +0 -0
  73. /package/dist/tools/{terminal-output-normalizer.d.ts → shell/terminal-output-normalizer.d.ts} +0 -0
  74. /package/dist/tools/{safe-fetch.d.ts → web/safe-fetch.d.ts} +0 -0
@@ -1 +1 @@
1
- (function(_0x428978,_0x24cdac){const _0x32d11a={_0x25d884:0x27d,_0xd49c93:0x283,_0x4fa62b:0x280,_0xe7488a:0x283,_0x5e5cae:0x286,_0x19e0f5:0x281,_0x2db678:0x290,_0x5b6ecd:0xa8,_0x3d4b3d:0xb6,_0x398cb9:0xb7,_0x269045:0x290,_0x2488bf:0xab,_0x42da32:0x28a,_0x2ce87d:0x27f,_0x2d47c9:0x28d,_0x291ee6:0x291},_0x4175cd={_0x21a23:0x23},_0x4c0493={_0x16150d:0x318},_0x5eccf9=_0x428978();function _0x8ef9ec(_0x5828e3,_0x3754ff,_0x482fd7,_0x56dd01){return _0x1e6e(_0x3754ff- -_0x4c0493._0x16150d,_0x482fd7);}function _0x1b5710(_0x5bba50,_0x16ca45,_0x48b04c,_0x4713d2){return _0x1e6e(_0x48b04c-_0x4175cd._0x21a23,_0x5bba50);}while(!![]){try{const _0x35dd26=parseInt(_0x8ef9ec(-0x27f,-0x281,-_0x32d11a._0x25d884,-_0x32d11a._0xd49c93))/0x1*(-parseInt(_0x8ef9ec(-_0x32d11a._0x4fa62b,-_0x32d11a._0xe7488a,-_0x32d11a._0x5e5cae,-_0x32d11a._0x19e0f5))/0x2)+-parseInt(_0x8ef9ec(-_0x32d11a._0x2db678,-0x293,-0x28f,-0x28b))/0x3*(-parseInt(_0x1b5710(_0x32d11a._0x5b6ecd,0xb1,0xb2,0xab))/0x4)+parseInt(_0x1b5710(0xb7,_0x32d11a._0x3d4b3d,_0x32d11a._0x398cb9,0xb6))/0x5*(parseInt(_0x8ef9ec(-0x28a,-0x285,-0x282,-_0x32d11a._0x269045))/0x6)+-parseInt(_0x1b5710(0xb2,0xa4,0xaf,_0x32d11a._0x2488bf))/0x7+-parseInt(_0x8ef9ec(-0x286,-0x288,-0x285,-0x292))/0x8+-parseInt(_0x8ef9ec(-_0x32d11a._0x42da32,-0x287,-0x284,-_0x32d11a._0x2ce87d))/0x9+parseInt(_0x8ef9ec(-_0x32d11a._0x2d47c9,-0x28f,-_0x32d11a._0x291ee6,-0x290))/0xa*(parseInt(_0x8ef9ec(-0x28f,-_0x32d11a._0x5e5cae,-_0x32d11a._0x291ee6,-0x27d))/0xb);if(_0x35dd26===_0x24cdac)break;else _0x5eccf9['push'](_0x5eccf9['shift']());}catch(_0x5cb6c5){_0x5eccf9['push'](_0x5eccf9['shift']());}}}(_0x4f5c,0x28bfb));import{modelIdentityFromParts}from'../chunk-D5IVWJHX.js';import{resolveAnthropicReasoningConfig,resolveOpenAiReasoningConfig}from'../chunk-IUZALP6K.js';function _0x1e6e(_0x7bb52,_0x26b348){_0x7bb52=_0x7bb52-0x84;const _0x4f5cab=_0x4f5c();let _0x1e6efd=_0x4f5cab[_0x7bb52];if(_0x1e6e['SnflGK']===undefined){var _0x192347=function(_0x1883f6){const _0x1f3ab1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4f9108='',_0x140652='';for(let _0x2bb637=0x0,_0x1f925f,_0x510391,_0xd2890b=0x0;_0x510391=_0x1883f6['charAt'](_0xd2890b++);~_0x510391&&(_0x1f925f=_0x2bb637%0x4?_0x1f925f*0x40+_0x510391:_0x510391,_0x2bb637++%0x4)?_0x4f9108+=String['fromCharCode'](0xff&_0x1f925f>>(-0x2*_0x2bb637&0x6)):0x0){_0x510391=_0x1f3ab1['indexOf'](_0x510391);}for(let _0x268250=0x0,_0x32c540=_0x4f9108['length'];_0x268250<_0x32c540;_0x268250++){_0x140652+='%'+('00'+_0x4f9108['charCodeAt'](_0x268250)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x140652);};_0x1e6e['ezxuRL']=_0x192347,_0x1e6e['wJiYeW']={},_0x1e6e['SnflGK']=!![];}const _0x3f418f=_0x4f5cab[0x0],_0x18ae93=_0x7bb52+_0x3f418f,_0x257044=_0x1e6e['wJiYeW'][_0x18ae93];return!_0x257044?(_0x1e6efd=_0x1e6e['ezxuRL'](_0x1e6efd),_0x1e6e['wJiYeW'][_0x18ae93]=_0x1e6efd):_0x1e6efd=_0x257044,_0x1e6efd;}import{TurnFailedError}from'../chunk-FFIZ6TKW.js';import{OperationAbortedError,addAbortListener,isAbortError,throwIfAborted,toAbortError}from'../chunk-X7VAACWY.js';function createAbortAwareSemaphore(_0x4f9108){const _0x282656={_0xa904dc:0x29,_0x2ed539:0x2d,_0x57b7e1:0x1dd,_0xd2e9e:0x1d6,_0x42f04d:0x1dc},_0x34ec02={_0x58a3f0:0x45c,_0x3dee4b:0x451,_0x47df99:0x467,_0x3e7b7e:0x46e,_0x46eb78:0x46c,_0x1904a0:0x462,_0x3b2d70:0x45a},_0x3d37c3={_0x4586c3:0x248,_0x33fd65:0x24b,_0x8c0e85:0x22d,_0x5f3e6d:0x238,_0xcecd4d:0x232,_0x2f38cf:0x393,_0x5c69c0:0x389},_0x192c33={_0x5a179b:0xe0,_0x1a05dc:0x88,_0x12316a:0x56e},_0x46f33b={_0x25a4d5:0x266},_0x1d0074={_0x4a09a3:0x57};if(!Number[_0x557e2c(_0x282656._0xa904dc,_0x282656._0x2ed539,0x2b,0x34)](_0x4f9108)||!Number[_0x205482(-_0x282656._0x57b7e1,-0x1d7,-_0x282656._0xd2e9e,-_0x282656._0x42f04d)](_0x4f9108)||_0x4f9108<=0x0)throw new Error('maxConcurrency\x20must\x20be\x20a\x20finite\x20positive\x20integer');function _0x557e2c(_0xeaf149,_0x3dbd40,_0x1b3388,_0x152073){return _0x1e6e(_0x3dbd40- -_0x1d0074._0x4a09a3,_0x152073);}let _0x140652=0x0;function _0x205482(_0x3c9a05,_0x3c842a,_0x6eb1a9,_0x5025ec){return _0x1e6e(_0x5025ec- -_0x46f33b._0x25a4d5,_0x3c9a05);}const _0x2bb637=[],_0x1f925f=()=>{let _0xd2890b=![];return()=>{if(_0xd2890b)return;_0xd2890b=!![],_0x140652-=0x1,_0x510391();};},_0x510391=()=>{const _0x57d3cd={_0x5b5b5b:0x172,_0xdeb178:0x272,_0x1bdbdf:0x12d};function _0x265b5f(_0x3168d3,_0x5e18f7,_0x2d3454,_0x158299){return _0x557e2c(_0x3168d3-_0x57d3cd._0x5b5b5b,_0x158299- -_0x57d3cd._0xdeb178,_0x2d3454-_0x57d3cd._0x1bdbdf,_0x2d3454);}function _0x46bdd4(_0x4d53d6,_0x3c7c18,_0x6c4069,_0x442482){return _0x205482(_0x442482,_0x3c7c18-_0x192c33._0x5a179b,_0x6c4069-_0x192c33._0x1a05dc,_0x6c4069-_0x192c33._0x12316a);}while(_0x2bb637[_0x265b5f(-0x238,-_0x3d37c3._0x4586c3,-_0x3d37c3._0x33fd65,-0x242)]>0x0){const _0x268250=_0x2bb637[_0x265b5f(-_0x3d37c3._0x8c0e85,-_0x3d37c3._0x5f3e6d,-_0x3d37c3._0xcecd4d,-0x230)]();if(!_0x268250||_0x268250[_0x46bdd4(_0x3d37c3._0x2f38cf,0x39e,0x393,0x39e)])continue;_0x268250['cancelled']=!![],_0x268250['removeAbortListener'](),_0x140652+=0x1,_0x268250[_0x46bdd4(0x398,0x38b,0x38e,_0x3d37c3._0x5c69c0)](_0x1f925f());return;}};return{'acquire'(_0x32c540){const _0x178e24={_0x86e920:0x3,_0x1b8ea2:0xd,_0x291829:0x8,_0x33084c:0x2,_0x56b70d:0x9,_0xb232fc:0x4},_0x25c96c={_0x7a443f:0x1e4,_0xab5a64:0x1f4,_0x4a18af:0x1f1,_0x52ec6d:0x1ee,_0x4659e2:0x1ec,_0x387242:0x1f2,_0x26b5cc:0x2db,_0x2e12ca:0x2dd},_0x18fa99={_0x94f320:0x464,_0x472e52:0x3},_0x2f3e08={_0xa27e4c:0x15e},_0x26b1b8={_0x258bfd:0x2de,_0x143e85:0x164};function _0x38af2e(_0x3d8583,_0x5ef3d1,_0x5b9e19,_0x2a64a4){return _0x557e2c(_0x3d8583-0x1d1,_0x2a64a4-_0x26b1b8._0x258bfd,_0x5b9e19-_0x26b1b8._0x143e85,_0x5b9e19);}if(_0x32c540?.['aborted'])return Promise[_0x341fa8(0x456,_0x34ec02._0x58a3f0,_0x34ec02._0x3dee4b,_0x34ec02._0x47df99)](toAbortError(_0x32c540[_0x341fa8(_0x34ec02._0x3e7b7e,_0x34ec02._0x46eb78,_0x34ec02._0x1904a0,0x46e)]));function _0x341fa8(_0x553976,_0x2cb7a9,_0x4102cb,_0x5ba33a){return _0x205482(_0x5ba33a,_0x2cb7a9-0xd0,_0x4102cb-_0x2f3e08._0xa27e4c,_0x2cb7a9-0x63a);}if(_0x140652<_0x4f9108)return _0x140652+=0x1,Promise[_0x341fa8(_0x34ec02._0x58a3f0,_0x34ec02._0x3b2d70,0x451,0x451)](_0x1f925f());return new Promise((_0x17322c,_0x2371aa)=>{function _0x954e77(_0x3630c2,_0x47800f,_0x3f686b,_0x63169b){return _0x341fa8(_0x3630c2-0x1bf,_0x47800f- -_0x18fa99._0x94f320,_0x3f686b-_0x18fa99._0x472e52,_0x63169b);}const _0x564e2e={'resolve':_0x17322c,'reject':_0x2371aa,'cancelled':![],'removeAbortListener':()=>{}};_0x2bb637[_0x954e77(0x2,-_0x178e24._0x86e920,-_0x178e24._0x1b8ea2,-0x8)](_0x564e2e);function _0x5e0c06(_0x5d09cd,_0x9ccc06,_0x29f24a,_0xd43e1f){return _0x341fa8(_0x5d09cd-0x76,_0x5d09cd- -0x154,_0x29f24a-0x73,_0x9ccc06);}_0x564e2e[_0x954e77(_0x178e24._0x291829,-_0x178e24._0x33084c,-_0x178e24._0x56b70d,-_0x178e24._0xb232fc)]=addAbortListener(_0x32c540,()=>{const _0x27fefc={_0x2003d3:0x25},_0xed0a87={_0x2efa3b:0x1a7,_0x16d561:0xd8};if(_0x564e2e[_0x2d4850(-0x1e8,-0x1ef,-_0x25c96c._0x7a443f,-_0x25c96c._0xab5a64)])return;_0x564e2e[_0x2d4850(-_0x25c96c._0x4a18af,-0x1ef,-0x1eb,-0x1e8)]=!![],_0x564e2e[_0x2d4850(-_0x25c96c._0x52ec6d,-_0x25c96c._0x4659e2,-0x1e8,-_0x25c96c._0x387242)]();const _0x1004b4=_0x2bb637[_0x52e933(0x2e6,0x2d9,_0x25c96c._0x26b5cc,0x2e3)](_0x564e2e);function _0x52e933(_0x4d52a1,_0x4138a4,_0x430609,_0x4b496f){return _0x954e77(_0x4d52a1-_0xed0a87._0x2efa3b,_0x430609-0x2d5,_0x430609-_0xed0a87._0x16d561,_0x4b496f);}if(_0x1004b4>=0x0)_0x2bb637['splice'](_0x1004b4,0x1);function _0x2d4850(_0x471c0b,_0x126e92,_0x3d0a3d,_0x2dea71){return _0x5e0c06(_0x126e92- -0x4fa,_0x2dea71,_0x3d0a3d-_0x27fefc._0x2003d3,_0x2dea71-0x168);}_0x564e2e[_0x2d4850(-0x1fa,-0x1f2,-_0x25c96c._0x4a18af,-0x1e8)](toAbortError(_0x32c540?.[_0x52e933(0x2e5,0x2e8,_0x25c96c._0x2e12ca,_0x25c96c._0x2e12ca)]));});});}};}export{OperationAbortedError,TurnFailedError,addAbortListener,createAbortAwareSemaphore,isAbortError,modelIdentityFromParts,resolveAnthropicReasoningConfig,resolveOpenAiReasoningConfig,throwIfAborted,toAbortError};function _0x4f5c(){const _0xa5556c=['ndK5mZbQBu5ny3q','AxnjBNrLz2vY','y2fUy2vSBgvK','mtC0ntGWn29sz1jdtq','ChvZAa','CMvTB3zLqwjVCNrmAxn0zw5LCG','mZq3ndi4thfJrg5p','ndu5mJGWB093z2HA','nZC3otG3EM5orMvX','oteZueD2uejJ','mtHdAxfZsxm','mJK0nJeWrufbB2H6','mJm1nZyYzwLrAwTq','Aw5KzxHpzG','mwngvwrrAG','CMvHC29U','C2HPzNq','AxngAw5PDgu','m29WA2jUDq','CMvZB2X2zq','BgvUz3rO','CMvQzwn0'];_0x4f5c=function(){return _0xa5556c;};return _0x4f5c();}
1
+ (function(_0x26ff1a,_0x289c81){const _0x397676={_0x40615f:0xe8,_0x41a750:0xe7,_0x353743:0xe0,_0xa5ffd0:0xe1,_0x2543d2:0x479,_0x4a2857:0xf7,_0x18cc06:0xf1,_0x7d2aed:0x46b,_0xa7175a:0x458,_0x10f36f:0xe4,_0x1eba56:0xea,_0x224c7d:0x46d,_0x9f0269:0x473},_0x4e519a={_0xf85db6:0x3c8},_0x9121d5={_0x3b372b:0x18d};function _0x3cc5c9(_0x4b5400,_0x56e1fc,_0x1cb1a6,_0x510978){return _0x24d9(_0x4b5400- -_0x9121d5._0x3b372b,_0x56e1fc);}const _0x1f5b93=_0x26ff1a();function _0x156eae(_0x5aadb3,_0x1c022b,_0x3a2d41,_0x223733){return _0x24d9(_0x3a2d41-_0x4e519a._0xf85db6,_0x5aadb3);}while(!![]){try{const _0x3456b8=-parseInt(_0x3cc5c9(-_0x397676._0x40615f,-_0x397676._0x41a750,-_0x397676._0x353743,-_0x397676._0xa5ffd0))/0x1+parseInt(_0x156eae(_0x397676._0x2543d2,0x473,0x474,0x47b))/0x2+-parseInt(_0x3cc5c9(-0xf0,-_0x397676._0x40615f,-_0x397676._0x4a2857,-_0x397676._0x18cc06))/0x3*(parseInt(_0x156eae(0x46c,_0x397676._0x7d2aed,0x468,0x467))/0x4)+parseInt(_0x156eae(_0x397676._0xa7175a,0x460,0x462,0x466))/0x5+parseInt(_0x3cc5c9(-_0x397676._0x10f36f,-_0x397676._0x1eba56,-0xdb,-0xe8))/0x6+parseInt(_0x3cc5c9(-0xe9,-0xe8,-0xdf,-0xe9))/0x7+parseInt(_0x156eae(0x46c,0x467,0x467,0x46a))/0x8*(parseInt(_0x156eae(0x477,_0x397676._0x224c7d,_0x397676._0x9f0269,0x46c))/0x9);if(_0x3456b8===_0x289c81)break;else _0x1f5b93['push'](_0x1f5b93['shift']());}catch(_0x31097e){_0x1f5b93['push'](_0x1f5b93['shift']());}}}(_0x3222,0x3c762));import{modelIdentityFromParts}from'../chunk-D5IVWJHX.js';function _0x24d9(_0x5a9121,_0x275fd1){_0x5a9121=_0x5a9121-0x9a;const _0x322244=_0x3222();let _0x24d943=_0x322244[_0x5a9121];if(_0x24d9['ApGnul']===undefined){var _0x352f70=function(_0x69bb97){const _0x451100='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x418d85='',_0x16febf='';for(let _0x24fb75=0x0,_0xcb0c63,_0x295dda,_0x29cb62=0x0;_0x295dda=_0x69bb97['charAt'](_0x29cb62++);~_0x295dda&&(_0xcb0c63=_0x24fb75%0x4?_0xcb0c63*0x40+_0x295dda:_0x295dda,_0x24fb75++%0x4)?_0x418d85+=String['fromCharCode'](0xff&_0xcb0c63>>(-0x2*_0x24fb75&0x6)):0x0){_0x295dda=_0x451100['indexOf'](_0x295dda);}for(let _0x54d39c=0x0,_0x443488=_0x418d85['length'];_0x54d39c<_0x443488;_0x54d39c++){_0x16febf+='%'+('00'+_0x418d85['charCodeAt'](_0x54d39c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x16febf);};_0x24d9['RMVWeh']=_0x352f70,_0x24d9['pXKqSB']={},_0x24d9['ApGnul']=!![];}const _0x25ebce=_0x322244[0x0],_0x43d619=_0x5a9121+_0x25ebce,_0x1ede3f=_0x24d9['pXKqSB'][_0x43d619];return!_0x1ede3f?(_0x24d943=_0x24d9['RMVWeh'](_0x24d943),_0x24d9['pXKqSB'][_0x43d619]=_0x24d943):_0x24d943=_0x1ede3f,_0x24d943;}function _0x3222(){const _0x13fea=['ntK0nZC2ruPpvNbk','mZCYmtu0sfPTuwjZ','CMvZB2X2zq','CMvHC29U','ChvZAa','mtKXody2mLndB2vVtW','AxngAw5PDgu','nte1ndnmCu56AhK','ndi0mdz6zMPOu3e','ode4mJe1yNDfrMTm','C3bSAwnL','CMvTB3zLqwjVCNrmAxn0zw5LCG','otGXotLnC0DsBMm','C2HPzNq','nda4wxfxtMno','mZjLA0zdAgO','ywjVCNrLza','y2fUy2vSBgvK','Aw5KzxHpzG'];_0x3222=function(){return _0x13fea;};return _0x3222();}import{resolveAnthropicReasoningConfig,resolveOpenAiReasoningConfig}from'../chunk-IUZALP6K.js';import{TurnFailedError}from'../chunk-FFIZ6TKW.js';import{OperationAbortedError,addAbortListener,isAbortError,throwIfAborted,toAbortError}from'../chunk-X7VAACWY.js';function createAbortAwareSemaphore(_0x418d85){const _0x174853={_0x2a77d5:0x231},_0xab26eb={_0x34ce67:0x48e,_0x3806f9:0x485},_0xbd5bad={_0x5e775a:0xff,_0x54193c:0x262,_0x10ff3b:0x158},_0x21b548={_0x1bbe83:0x8,_0xf1ae38:0x9,_0x30fd53:0x11,_0x55c8d6:0x5,_0x7a6d64:0xb},_0x31fed8={_0x1ae3d7:0x1b9};if(!Number[_0x33c326(_0x174853._0x2a77d5,0x239,0x23d,0x230)](_0x418d85)||!Number['isInteger'](_0x418d85)||_0x418d85<=0x0)throw new Error('maxConcurrency\x20must\x20be\x20a\x20finite\x20positive\x20integer');let _0x16febf=0x0;const _0x24fb75=[];function _0x33c326(_0x29a3ec,_0x41f1ec,_0x24a95a,_0x3b8447){return _0x24d9(_0x41f1ec-0x18f,_0x3b8447);}const _0xcb0c63=()=>{let _0x29cb62=![];return()=>{if(_0x29cb62)return;_0x29cb62=!![],_0x16febf-=0x1,_0x295dda();};},_0x295dda=()=>{const _0x513670={_0x33f1f3:0x16f,_0xa9ec3b:0x222,_0xcd865c:0x161};function _0x48ab7b(_0x335619,_0x4f95c1,_0x3a8af7,_0x2aaefa){return _0x33c326(_0x335619-_0x513670._0x33f1f3,_0x4f95c1- -_0x513670._0xa9ec3b,_0x3a8af7-_0x513670._0xcd865c,_0x2aaefa);}function _0x3cf211(_0x2e9bb0,_0x22ac69,_0x1ace7f,_0x15548e){return _0x33c326(_0x2e9bb0-_0x31fed8._0x1ae3d7,_0x22ac69- -0xb0,_0x1ace7f-0x11b,_0x15548e);}while(_0x24fb75['length']>0x0){const _0x54d39c=_0x24fb75[_0x48ab7b(0x12,0xb,0x7,_0x21b548._0x1bbe83)]();if(!_0x54d39c||_0x54d39c['cancelled'])continue;_0x54d39c[_0x48ab7b(0xa,0xf,_0x21b548._0xf1ae38,_0x21b548._0x30fd53)]=!![],_0x54d39c[_0x48ab7b(_0x21b548._0x55c8d6,0x9,0x8,_0x21b548._0x7a6d64)](),_0x16febf+=0x1,_0x54d39c[_0x48ab7b(0xc,0x13,0x10,0xc)](_0xcb0c63());return;}};return{'acquire'(_0x443488){const _0x58075a={_0x101b6b:0x2c0,_0x1c422a:0x1d0,_0x1b9f73:0x1d6},_0x83632c={_0x2ee822:0x110,_0x3dc952:0x119,_0x4c14d8:0x10d,_0x22e9ac:0x269,_0x92155a:0x271,_0x5ec57a:0x275,_0x924143:0x11b,_0x215bc0:0x110,_0x2b64c6:0x113},_0xe04a0d={_0x155202:0x150};if(_0x443488?.[_0x275a35(_0xab26eb._0x34ce67,0x48a,0x487,0x488)])return Promise['reject'](toAbortError(_0x443488['reason']));function _0x275a35(_0x8693e5,_0x464c14,_0x1d480d,_0x5683be){return _0x33c326(_0x8693e5-0x13e,_0x5683be-0x258,_0x1d480d-0x9a,_0x464c14);}if(_0x16febf<_0x418d85)return _0x16febf+=0x1,Promise[_0x275a35(0x48b,_0xab26eb._0x3806f9,0x493,0x48d)](_0xcb0c63());function _0x2696d8(_0x39b4ec,_0x57af20,_0x417400,_0x228bfa){return _0x33c326(_0x39b4ec-_0xbd5bad._0x5e775a,_0x417400- -_0xbd5bad._0x54193c,_0x417400-_0xbd5bad._0x10ff3b,_0x228bfa);}return new Promise((_0x2621f7,_0x4d1dce)=>{const _0x29565a={_0x3afff0:0xd5},_0x1a7d49={'resolve':_0x2621f7,'reject':_0x4d1dce,'cancelled':![],'removeAbortListener':()=>{}};_0x24fb75[_0x59b0f5(0x2b6,0x2c5,_0x58075a._0x101b6b,0x2bc)](_0x1a7d49);function _0x59b0f5(_0x5e9cb4,_0x5d58ef,_0x53098a,_0x51d0fa){return _0x275a35(_0x5e9cb4-0x155,_0x5d58ef,_0x53098a-_0xe04a0d._0x155202,_0x51d0fa- -0x1d3);}function _0x33b2ab(_0x30a5e9,_0x20c4bd,_0x43f686,_0x24d1f6){return _0x2696d8(_0x30a5e9-0x156,_0x20c4bd-_0x29565a._0x3afff0,_0x43f686-0x20d,_0x20c4bd);}_0x1a7d49[_0x33b2ab(_0x58075a._0x1c422a,0x1e0,_0x58075a._0x1b9f73,0x1ce)]=addAbortListener(_0x443488,()=>{const _0x198a9d={_0x2302f6:0x196,_0x60383b:0x13},_0x496f1c={_0x4961bb:0x13b,_0x455112:0xcf};if(_0x1a7d49[_0x41c919(-_0x83632c._0x2ee822,-_0x83632c._0x3dc952,-0x114,-_0x83632c._0x4c14d8)])return;function _0x56061a(_0x4920f3,_0x19fdb3,_0x20eb40,_0x275eed){return _0x33b2ab(_0x4920f3-_0x496f1c._0x4961bb,_0x275eed,_0x20eb40-0x93,_0x275eed-_0x496f1c._0x455112);}function _0x41c919(_0x29ae47,_0x477dc1,_0x3161b2,_0x6ebf7c){return _0x59b0f5(_0x29ae47-_0x198a9d._0x2302f6,_0x477dc1,_0x3161b2-_0x198a9d._0x60383b,_0x3161b2- -0x3ca);}_0x1a7d49['cancelled']=!![],_0x1a7d49[_0x56061a(0x264,0x265,0x269,0x261)]();const _0x33c15b=_0x24fb75[_0x56061a(_0x83632c._0x22e9ac,_0x83632c._0x92155a,0x270,_0x83632c._0x5ec57a)](_0x1a7d49);if(_0x33c15b>=0x0)_0x24fb75[_0x41c919(-0x116,-_0x83632c._0x924143,-0x11b,-0x120)](_0x33c15b,0x1);_0x1a7d49['reject'](toAbortError(_0x443488?.[_0x41c919(-_0x83632c._0x215bc0,-0x105,-0x10f,-_0x83632c._0x2b64c6)]));});});}};}export{OperationAbortedError,TurnFailedError,addAbortListener,createAbortAwareSemaphore,isAbortError,modelIdentityFromParts,resolveAnthropicReasoningConfig,resolveOpenAiReasoningConfig,throwIfAborted,toAbortError};
@@ -4,9 +4,10 @@ export interface JsonObject {
4
4
  }
5
5
  export type JsonValue = JsonObject | JsonPrimitive | JsonValue[];
6
6
  export type JsonSchemaType = "array" | "boolean" | "number" | "object" | "string";
7
- export interface JsonSchemaString {
7
+ export interface JsonSchemaString<TEnum extends readonly string[] | undefined = readonly string[] | undefined> {
8
8
  type: "string";
9
9
  description?: string;
10
+ enum?: TEnum;
10
11
  }
11
12
  export interface JsonSchemaNumber {
12
13
  type: "number";
@@ -22,8 +23,12 @@ export interface JsonSchemaObject<TProperties extends Record<string, JsonSchema>
22
23
  type: "object";
23
24
  properties: TProperties;
24
25
  required?: TRequired;
26
+ additionalProperties?: boolean;
25
27
  }
26
- export type JsonSchema = JsonSchemaArray | JsonSchemaBoolean | JsonSchemaNumber | JsonSchemaObject | JsonSchemaString;
28
+ export interface JsonSchemaAnyOf<TVariants extends readonly JsonSchema[] = readonly JsonSchema[]> {
29
+ anyOf: TVariants;
30
+ }
31
+ export type JsonSchema = JsonSchemaAnyOf | JsonSchemaArray | JsonSchemaBoolean | JsonSchemaNumber | JsonSchemaObject | JsonSchemaString;
27
32
  export interface TextBlock {
28
33
  type: "text";
29
34
  text: string;
@@ -272,6 +277,9 @@ export interface OpenAiReasoningSummaryDeltaChunk {
272
277
  outputIndex: number;
273
278
  summaryIndex: number;
274
279
  }
280
+ export interface ProviderStreamResetChunk {
281
+ type: "provider_stream_reset";
282
+ }
275
283
  export interface ProviderRetryChunk {
276
284
  type: "provider_retry";
277
285
  attempt: number;
@@ -285,7 +293,7 @@ export interface DoneChunk {
285
293
  type: "done";
286
294
  response: ChatResponse;
287
295
  }
288
- export type ChatResponseChunk = AnthropicSignatureDeltaChunk | AnthropicThinkingDeltaChunk | ContentDeltaChunk | DoneChunk | OpenAiReasoningDeltaChunk | OpenAiReasoningSummaryDeltaChunk | ProviderRetryChunk | ToolUseDeltaChunk;
296
+ export type ChatResponseChunk = AnthropicSignatureDeltaChunk | AnthropicThinkingDeltaChunk | ContentDeltaChunk | DoneChunk | OpenAiReasoningDeltaChunk | OpenAiReasoningSummaryDeltaChunk | ProviderStreamResetChunk | ProviderRetryChunk | ToolUseDeltaChunk;
289
297
  export interface ModelLimits {
290
298
  contextWindow?: number;
291
299
  maxOutput?: number;
@@ -549,8 +557,14 @@ export interface AgentTurnCompleteEvent {
549
557
  state: TurnState;
550
558
  }
551
559
  export interface AgentProviderRetryEvent extends ProviderRetryChunk {
560
+ assistantMessageId: string;
561
+ }
562
+ export interface AgentProviderStreamResetEvent {
563
+ type: "provider_stream_reset";
564
+ assistantMessageId: string;
565
+ reasoningMessageId: string;
552
566
  }
553
- export type AgentLifecycleEvent = AgentAssistantChunkEvent | AgentAssistantMessageEvent | AgentFinalMessageEvent | AgentModelRequestEvent | AgentModelResponseEvent | AgentProviderRetryEvent | AgentReasoningChunkEvent | AgentReasoningMessageEvent | AgentToolCallEvent | AgentToolUseChunkEvent | AgentToolUseMessageEvent | AgentToolResultEvent | AgentToolResultMessageEvent | AgentTurnCompleteEvent | AgentUserMessageEvent;
567
+ export type AgentLifecycleEvent = AgentAssistantChunkEvent | AgentAssistantMessageEvent | AgentFinalMessageEvent | AgentModelRequestEvent | AgentModelResponseEvent | AgentProviderRetryEvent | AgentProviderStreamResetEvent | AgentReasoningChunkEvent | AgentReasoningMessageEvent | AgentToolCallEvent | AgentToolUseChunkEvent | AgentToolUseMessageEvent | AgentToolResultEvent | AgentToolResultMessageEvent | AgentTurnCompleteEvent | AgentUserMessageEvent;
554
568
  export type AgentEvent = AgentLifecycleEvent | ToolRuntimeEvent;
555
569
  export type ToolRuntimeDispatchDecision = {
556
570
  action: "reject";
@@ -579,10 +593,14 @@ export interface ToolRuntime {
579
593
  executeCalls(toolCalls: ToolUseBlock[], ctx: ToolExecutionContext): Promise<ToolResult[]>;
580
594
  execute(toolCall: ToolUseBlock, ctx: ToolExecutionContext): Promise<ToolResult>;
581
595
  }
582
- export type InferJsonSchema<TSchema extends JsonSchema> = TSchema extends JsonSchemaString ? string : TSchema extends JsonSchemaNumber ? number : TSchema extends JsonSchemaBoolean ? boolean : TSchema extends JsonSchemaArray<infer TItem> ? InferJsonSchema<TItem>[] : TSchema extends JsonSchemaObject<infer TProperties, infer TRequired> ? Expand<RequiredProperties<TProperties, TRequired> & OptionalProperties<TProperties, TRequired>> : never;
596
+ export type InferJsonSchema<TSchema extends JsonSchema> = TSchema extends JsonSchemaAnyOf<infer TVariants> ? JsonSchema extends TVariants[number] ? JsonValue : InferJsonSchemaAnyOf<TVariants> : TSchema extends JsonSchemaString<infer TEnum> ? TEnum extends readonly string[] ? TEnum[number] : string : TSchema extends JsonSchemaNumber ? number : TSchema extends JsonSchemaBoolean ? boolean : TSchema extends JsonSchemaArray<infer TItem> ? InferJsonSchema<TItem>[] : TSchema extends JsonSchemaObject<infer TProperties, infer TRequired> ? Expand<RequiredProperties<TProperties, TRequired> & OptionalProperties<TProperties, TRequired>> : never;
583
597
  type Expand<TValue> = TValue extends infer TObject ? {
584
598
  [TKey in keyof TObject]: TObject[TKey];
585
599
  } : never;
600
+ type JsonSchemaObjectPropertyKeys<TSchema extends JsonSchema> = TSchema extends JsonSchemaObject<infer TProperties> ? Extract<keyof TProperties, string> : never;
601
+ type InferJsonSchemaAnyOfVariant<TVariant extends JsonSchema, TAllVariants extends JsonSchema> = TVariant extends JsonSchemaObject<infer TProperties, infer TRequired> ? Expand<RequiredProperties<TProperties, TRequired> & OptionalProperties<TProperties, TRequired> & (TVariant["additionalProperties"] extends false ? Partial<Record<Exclude<JsonSchemaObjectPropertyKeys<TAllVariants>, keyof TProperties>, never>> : Record<never, never>)> : InferJsonSchema<TVariant>;
602
+ type InferJsonSchemaAnyOfVariants<TVariant extends JsonSchema, TAllVariants extends JsonSchema> = TVariant extends JsonSchema ? InferJsonSchemaAnyOfVariant<TVariant, TAllVariants> : never;
603
+ type InferJsonSchemaAnyOf<TVariants extends readonly JsonSchema[]> = InferJsonSchemaAnyOfVariants<TVariants[number], TVariants[number]>;
586
604
  type RequiredKeyUnion<TRequired extends readonly string[] | undefined> = TRequired extends readonly string[] ? TRequired[number] : never;
587
605
  type OptionalKeyUnion<TProperties extends Record<string, JsonSchema>, TRequired extends readonly string[] | undefined> = Exclude<keyof TProperties, RequiredKeyUnion<TRequired>>;
588
606
  type RequiredProperties<TProperties extends Record<string, JsonSchema>, TRequired extends readonly string[] | undefined> = {
@@ -597,7 +615,7 @@ export type ToolGenerator<TYield extends ToolOutputValue = ToolOutputValue, TRet
597
615
  export interface ToolDefinitionLifecycle {
598
616
  acquire(): () => void;
599
617
  }
600
- export interface ToolDefinition<TInput extends JsonObject = JsonObject, TYield extends ToolOutputValue = ToolOutputValue, TReturn extends ToolOutputValue | undefined = ToolOutputValue | undefined, TSchema extends JsonSchemaObject = JsonSchemaObject> {
618
+ export interface ToolDefinition<TInput extends object = JsonObject, TYield extends ToolOutputValue = ToolOutputValue, TReturn extends ToolOutputValue | undefined = ToolOutputValue | undefined, TSchema extends JsonSchemaObject = JsonSchemaObject> {
601
619
  name: string;
602
620
  description: string;
603
621
  inputSchema: TSchema;
@@ -605,7 +623,7 @@ export interface ToolDefinition<TInput extends JsonObject = JsonObject, TYield e
605
623
  internalLifecycle?: ToolDefinitionLifecycle;
606
624
  execute(input: TInput, ctx: ToolExecutionContext): ToolGenerator<TYield, TReturn>;
607
625
  }
608
- export type AnyToolDefinition = ToolDefinition<JsonObject, ToolOutputValue, ToolOutputValue | undefined, JsonSchemaObject>;
626
+ export type AnyToolDefinition = ToolDefinition<object, ToolOutputValue, ToolOutputValue | undefined, JsonSchemaObject>;
609
627
  export type TransformableStage = "afterModelResponse" | "afterToolResult" | "beforeAssistantAppend" | "beforeFinalOutput" | "beforeModelRequest" | "beforeToolExecution" | "beforeToolResultAppend" | "onUserMessage";
610
628
  export type ObserverOnlyStage = "afterMessageAppend" | "afterTurnComplete";
611
629
  export type Stage = ObserverOnlyStage | TransformableStage;
@@ -1,4 +1,4 @@
1
- import type { AnyToolDefinition, ToolRuntime, ToolRuntimeEventHandler, ToolRuntimeToolCallHandler } from "../shared/types.ts";
1
+ import type { AnyToolDefinition, ToolRuntime, ToolRuntimeEventHandler, ToolRuntimeToolCallHandler } from "../../shared/types.ts";
2
2
  interface InternalToolRuntimeOptions {
3
3
  onEvent?: ToolRuntimeEventHandler;
4
4
  onToolCall?: ToolRuntimeToolCallHandler;
@@ -0,0 +1,3 @@
1
+ import type { ToolRuntime } from "../../shared/types.ts";
2
+ export declare function createMockToolRuntime(): ToolRuntime;
3
+ //# sourceMappingURL=mock-tool-runtime.d.ts.map
@@ -0,0 +1,132 @@
1
+ import { Agent } from "../../agent/agent.ts";
2
+ import type { AbortAwareSemaphore } from "../../shared/abort-aware-semaphore.ts";
3
+ import type { AgentDefinitionFactoryContext, AgentOptions } from "../../shared/types.ts";
4
+ export declare const MODEL_TIERS: readonly ["fast", "balanced", "powerful"];
5
+ export type ModelTier = (typeof MODEL_TIERS)[number];
6
+ export interface DelegatedAgentFactoryContext extends AgentDefinitionFactoryContext {
7
+ parentSessionId: string;
8
+ runId: string;
9
+ signal: AbortSignal;
10
+ modelTier?: ModelTier;
11
+ }
12
+ export type DelegatedRoutingMetadata = {
13
+ requestedModelTier: ModelTier;
14
+ agentModelSet?: string;
15
+ resolvedModelIdentity: string;
16
+ };
17
+ export type DelegatedAgentResolution = {
18
+ options: AgentOptions;
19
+ routing?: DelegatedRoutingMetadata;
20
+ };
21
+ export declare class DelegatedResolutionError extends Error {
22
+ readonly requestedModelTier: ModelTier;
23
+ readonly agentModelSet?: string;
24
+ readonly selector?: string;
25
+ constructor(message: string, metadata: {
26
+ requestedModelTier: ModelTier;
27
+ agentModelSet?: string;
28
+ selector?: string;
29
+ }, options?: ErrorOptions);
30
+ }
31
+ type DelegatedAgentFactoryResult = AgentOptions | DelegatedAgentResolution;
32
+ export type DelegatedRunOutcome = Readonly<{
33
+ status: "completed" | "failed" | "aborted";
34
+ errorMessage?: string;
35
+ }>;
36
+ export interface DelegatedRunLifecycleHooks {
37
+ start(agent: Agent, context: DelegatedAgentFactoryContext): Promise<void>;
38
+ finish(context: DelegatedAgentFactoryContext, outcome: DelegatedRunOutcome): Promise<void>;
39
+ }
40
+ export type DelegatedAgentDefinition = AgentOptions | ((ctx: DelegatedAgentFactoryContext) => DelegatedAgentFactoryResult | Promise<DelegatedAgentFactoryResult>);
41
+ export interface CreateDelegationToolsOptions {
42
+ agents?: Record<string, DelegatedAgentDefinition>;
43
+ lifecycle?: DelegatedRunLifecycleHooks;
44
+ semaphore?: AbortAwareSemaphore;
45
+ /** Register an active child for shared tool refresh; returns its cleanup callback. */
46
+ registerActiveAgent?: (agent: Agent, context: DelegatedAgentFactoryContext) => () => void;
47
+ registerActiveRun?: (entry: {
48
+ runId: string;
49
+ abortController: AbortController;
50
+ completion: Promise<void>;
51
+ }) => () => void;
52
+ /** Render a resolved child prompt immediately before constructing its Agent. */
53
+ renderSystemPrompt?: (systemPrompt: string) => string;
54
+ /**
55
+ * Idempotent delegated-resource release (e.g. the run's observation store),
56
+ * invoked from the outer `finally` on EVERY terminal path: success, abort,
57
+ * factory rejection, `Agent` construction failure, and registration failure.
58
+ * The runtime wires this to its idempotent per-run store release, so the
59
+ * delegation factory's own failure-release may safely converge here.
60
+ */
61
+ releaseAgentResources?: (context: DelegatedAgentFactoryContext) => void;
62
+ }
63
+ export declare function resolveDelegatedAgentOptions(definition: DelegatedAgentDefinition, ctx: DelegatedAgentFactoryContext): Promise<DelegatedAgentResolution>;
64
+ export declare function createAssignTaskTool(options: CreateDelegationToolsOptions): import("../../shared/types.ts").ToolDefinition<{
65
+ description: string;
66
+ agentId: string;
67
+ nickname: string;
68
+ task: string;
69
+ modelTier: "fast" | "balanced" | "powerful";
70
+ }, import("../../shared/types.ts").ToolOutputEnvelope, import("../../shared/types.ts").ToolOutputEnvelope, {
71
+ type: "object";
72
+ properties: {
73
+ agentId: {
74
+ type: "string";
75
+ description: string;
76
+ };
77
+ description: {
78
+ type: "string";
79
+ description: string;
80
+ };
81
+ nickname: {
82
+ type: "string";
83
+ description: string;
84
+ };
85
+ task: {
86
+ type: "string";
87
+ description: string;
88
+ };
89
+ modelTier: {
90
+ type: "string";
91
+ enum: ("fast" | "balanced" | "powerful")[];
92
+ description: string;
93
+ };
94
+ };
95
+ required: string[];
96
+ }>;
97
+ export declare const createDelegateToAgentTool: typeof createAssignTaskTool;
98
+ export declare function createDelegationTools(options: CreateDelegationToolsOptions): import("../../shared/types.ts").ToolDefinition<{
99
+ description: string;
100
+ agentId: string;
101
+ nickname: string;
102
+ task: string;
103
+ modelTier: "fast" | "balanced" | "powerful";
104
+ }, import("../../shared/types.ts").ToolOutputEnvelope, import("../../shared/types.ts").ToolOutputEnvelope, {
105
+ type: "object";
106
+ properties: {
107
+ agentId: {
108
+ type: "string";
109
+ description: string;
110
+ };
111
+ description: {
112
+ type: "string";
113
+ description: string;
114
+ };
115
+ nickname: {
116
+ type: "string";
117
+ description: string;
118
+ };
119
+ task: {
120
+ type: "string";
121
+ description: string;
122
+ };
123
+ modelTier: {
124
+ type: "string";
125
+ enum: ("fast" | "balanced" | "powerful")[];
126
+ description: string;
127
+ };
128
+ };
129
+ required: string[];
130
+ }>[];
131
+ export {};
132
+ //# sourceMappingURL=runtime-manager-tools.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { ToolResult } from "../shared/types.ts";
1
+ import type { ToolResult } from "../../shared/types.ts";
2
2
  export interface ToolOutputOffloadOptions {
3
3
  maxBytes: number;
4
4
  sessionDir?: string;
@@ -1,4 +1,4 @@
1
- import type { AnyToolDefinition, InferJsonSchema, JsonObject, JsonSchemaObject, JsonValue, ToolDefinition, ToolDefinitionLifecycle, ToolExecutionContext, ToolOutputEnvelope, ToolOutputValue, ToolPermissionClass, ToolResultChunk, ToolResultContent, ToolSchema } from "../shared/types.ts";
1
+ import type { AnyToolDefinition, InferJsonSchema, JsonObject, JsonSchemaObject, JsonValue, ToolDefinition, ToolDefinitionLifecycle, ToolExecutionContext, ToolOutputEnvelope, ToolOutputValue, ToolPermissionClass, ToolResultChunk, ToolResultContent, ToolSchema } from "../../shared/types.ts";
2
2
  export declare function normalizeToolOutputValue(output: ToolOutputValue): ToolResultChunk;
3
3
  export declare function createToolOutput(output: string, structured?: JsonObject, content?: ToolResultContent): ToolOutputEnvelope;
4
4
  export declare class ToolExecutionError extends Error {
@@ -0,0 +1,53 @@
1
+ import type { Stats } from "node:fs";
2
+ import type { ToolExecutionContext, ToolOutputEnvelope } from "../../shared/types.ts";
3
+ import { type CanonicalFileEditBlock, type CanonicalFileOperation } from "./anchored-file-operations.ts";
4
+ import type { FileMutationCoordinator } from "./file-mutation-coordinator.ts";
5
+ import type { FileObservationStore } from "./file-observation-store.ts";
6
+ import { type AnchoredFileEditMode } from "./structured-file-edit-adapter.ts";
7
+ /**
8
+ * Upper bound on the canonical preview text an edit may produce. Authored
9
+ * replacement content is already bounded by the adapters; this bound also
10
+ * caps source-derived `oldText` when a huge range is deleted/replaced so the
11
+ * approval preview stays small enough to audit.
12
+ */
13
+ export declare const MAX_ANCHORED_PREVIEW_BYTES: number;
14
+ export interface CanonicalFileEditPreview {
15
+ mode: AnchoredFileEditMode;
16
+ filePath: string;
17
+ canonicalPath: string;
18
+ tag: string;
19
+ digest: string;
20
+ operationCount: number;
21
+ operations: readonly CanonicalFileOperation[];
22
+ blocks: readonly CanonicalFileEditBlock[];
23
+ }
24
+ export interface AnchoredFileEditEnvironment {
25
+ defaultCwd: string;
26
+ allowedDirs: readonly string[];
27
+ observations: FileObservationStore;
28
+ mutations: FileMutationCoordinator;
29
+ outputBudgetBytes: number;
30
+ }
31
+ export interface AnchoredFileEditStructuredResult {
32
+ preview: CanonicalFileEditPreview;
33
+ beforeDigest: string;
34
+ afterDigest: string;
35
+ beforeTag: string;
36
+ afterTag: string;
37
+ bytesWritten: number;
38
+ dryRun: boolean;
39
+ operationCount: number;
40
+ tokenClassification: "edit";
41
+ }
42
+ /**
43
+ * Filesystem seams for under-lock execution tests. Production callers omit the
44
+ * argument and receive the default Node filesystem backed by `atomicReplaceFile`.
45
+ */
46
+ export interface AnchoredFileEditFileSystem {
47
+ readFile(path: string): Promise<Buffer>;
48
+ stat(path: string): Promise<Stats>;
49
+ atomicWrite(target: string, bytes: Uint8Array, mode: number): Promise<void>;
50
+ }
51
+ export declare function prepareAnchoredFileEditApproval(mode: AnchoredFileEditMode, input: unknown, sessionId: string, environment: Omit<AnchoredFileEditEnvironment, "mutations">): Promise<CanonicalFileEditPreview>;
52
+ export declare function executeAnchoredFileEdit(mode: AnchoredFileEditMode, input: unknown, context: ToolExecutionContext, environment: AnchoredFileEditEnvironment, fileSystem?: AnchoredFileEditFileSystem): Promise<ToolOutputEnvelope>;
53
+ //# sourceMappingURL=anchored-file-edit.d.ts.map
@@ -0,0 +1,5 @@
1
+ import type { JsonValue } from "../../shared/types.ts";
2
+ import { ToolExecutionError } from "../core/tools.ts";
3
+ export type AnchoredFileErrorCode = "invalid_patch" | "unknown_snapshot" | "ambiguous_snapshot_tag" | "stale_snapshot" | "unseen_lines" | "invalid_range" | "overlapping_operations" | "no_change" | "write_failed" | "post_write_drift";
4
+ export declare function createAnchoredFileError(code: AnchoredFileErrorCode, message: string, structured?: Record<string, JsonValue>): ToolExecutionError;
5
+ //# sourceMappingURL=anchored-file-errors.d.ts.map
@@ -0,0 +1,38 @@
1
+ import type { NormalizedFileSnapshot } from "./file-snapshot.ts";
2
+ export type CanonicalFileOperation = {
3
+ operation: "replace";
4
+ startLine: number;
5
+ endLine: number;
6
+ content: string;
7
+ } | {
8
+ operation: "delete";
9
+ startLine: number;
10
+ endLine: number;
11
+ } | {
12
+ operation: "insert";
13
+ position: "before" | "after";
14
+ line: number;
15
+ content: string;
16
+ };
17
+ export interface FileEditLineNumbers {
18
+ oldStartLine: number;
19
+ oldEndLine: number;
20
+ newStartLine: number;
21
+ newEndLine: number;
22
+ oldLineCount: number;
23
+ newLineCount: number;
24
+ }
25
+ export interface CanonicalFileEditBlock {
26
+ oldText: string;
27
+ newText: string;
28
+ lineNumbers: FileEditLineNumbers;
29
+ }
30
+ export interface PreparedCanonicalFileEdit {
31
+ afterText: string;
32
+ operations: readonly CanonicalFileOperation[];
33
+ blocks: readonly CanonicalFileEditBlock[];
34
+ requiredLines: readonly number[];
35
+ payloadDigest: string;
36
+ }
37
+ export declare function prepareCanonicalFileEdit(snapshot: NormalizedFileSnapshot, observedLines: ReadonlySet<number>, operations: readonly CanonicalFileOperation[]): PreparedCanonicalFileEdit;
38
+ //# sourceMappingURL=anchored-file-operations.d.ts.map
@@ -0,0 +1,37 @@
1
+ import type { NormalizedFileSnapshot } from "./file-snapshot.ts";
2
+ export interface AnchoredReadFormatRequest {
3
+ displayPath: string;
4
+ snapshot: NormalizedFileSnapshot;
5
+ lineStart?: number;
6
+ lineEnd?: number;
7
+ maxBytes: number;
8
+ }
9
+ export interface AnchoredReadFormatResult {
10
+ output: string;
11
+ displayedLines: readonly number[];
12
+ lineStart?: number;
13
+ lineEnd?: number;
14
+ truncated: boolean;
15
+ nextLineStart?: number;
16
+ }
17
+ /**
18
+ * Format a normalized snapshot as byte-bounded `N:text` rows under a
19
+ * `[displayPath#TAG]` header.
20
+ *
21
+ * Bytes for the header and the deterministic truncation guidance are reserved
22
+ * before any numbered row is accepted, so the returned text never grows large
23
+ * enough for a later output-offload transformer to remove rows. Rows are never
24
+ * split: a row is accepted only when it and the worst-case guidance fit the
25
+ * budget. The displayed range follows exact FileRead's clamping/ordering.
26
+ * Provenance is returned separately (`displayedLines`) so the caller records
27
+ * exactly what the model saw after final formatting.
28
+ */
29
+ export declare function formatAnchoredFileRead(request: AnchoredReadFormatRequest): AnchoredReadFormatResult;
30
+ /**
31
+ * True when `text` renders within `maxColumns` terminal display columns.
32
+ * Width is measured with `string-width` (grapheme-aware display width), never
33
+ * JavaScript string length, so CJK, combining marks, and emoji sequences are
34
+ * counted the way a terminal renders them.
35
+ */
36
+ export declare function isWithinDisplayColumns(text: string, maxColumns: number): boolean;
37
+ //# sourceMappingURL=anchored-file-read.d.ts.map
@@ -0,0 +1,19 @@
1
+ export interface AtomicFileSystem {
2
+ writeFile(path: string, bytes: Uint8Array, options: {
3
+ mode: number;
4
+ }): Promise<void>;
5
+ chmod(path: string, mode: number): Promise<void>;
6
+ rename(from: string, to: string): Promise<void>;
7
+ rm(path: string, options: {
8
+ force: true;
9
+ }): Promise<void>;
10
+ }
11
+ /**
12
+ * Atomically replace `target` with `bytes`, preserving permission mode.
13
+ *
14
+ * Writes an unguessable same-directory temporary file, applies `mode & 0o7777`,
15
+ * renames it over the target, and unconditionally removes the temporary path
16
+ * in `finally` so every write/chmod/rename failure still cleans up.
17
+ */
18
+ export declare function atomicReplaceFile(target: string, bytes: Uint8Array, mode: number, fileSystem?: AtomicFileSystem): Promise<void>;
19
+ //# sourceMappingURL=atomic-file-write.d.ts.map
@@ -0,0 +1,166 @@
1
+ import type { FileMutationCoordinator } from "./file-mutation-coordinator.ts";
2
+ import type { FileObservationStore } from "./file-observation-store.ts";
3
+ import { type FileEditMode } from "./structured-file-edit-adapter.ts";
4
+ export interface FileEditToolOptions {
5
+ allowedDirs?: readonly string[];
6
+ defaultCwd?: string;
7
+ name?: string;
8
+ mode?: FileEditMode;
9
+ observations?: FileObservationStore;
10
+ mutations?: FileMutationCoordinator;
11
+ outputBudgetBytes?: number;
12
+ }
13
+ export declare function createFileEditTool(options?: FileEditToolOptions): import("../../shared/types.ts").ToolDefinition<{
14
+ tag: string;
15
+ filePath: string;
16
+ operations: ({
17
+ content: string;
18
+ operation: "replace";
19
+ startLine: number;
20
+ endLine: number;
21
+ line?: undefined;
22
+ position?: undefined;
23
+ } | {
24
+ operation: "delete";
25
+ startLine: number;
26
+ endLine: number;
27
+ content?: undefined;
28
+ line?: undefined;
29
+ position?: undefined;
30
+ } | {
31
+ content: string;
32
+ line: number;
33
+ position: "before" | "after";
34
+ operation: "insert";
35
+ startLine?: undefined;
36
+ endLine?: undefined;
37
+ })[];
38
+ description?: string | undefined;
39
+ dryRun?: boolean | undefined;
40
+ } | {
41
+ patch: string;
42
+ description?: string | undefined;
43
+ dryRun?: boolean | undefined;
44
+ }, import("../../shared/types.ts").ToolOutputEnvelope, undefined, {
45
+ readonly type: "object";
46
+ readonly properties: {
47
+ readonly filePath: {
48
+ readonly type: "string";
49
+ };
50
+ readonly tag: {
51
+ readonly type: "string";
52
+ };
53
+ readonly description: {
54
+ readonly type: "string";
55
+ };
56
+ readonly operations: {
57
+ readonly type: "array";
58
+ readonly items: {
59
+ readonly anyOf: readonly [{
60
+ readonly type: "object";
61
+ readonly properties: {
62
+ readonly operation: {
63
+ readonly type: "string";
64
+ readonly enum: readonly ["replace"];
65
+ };
66
+ readonly startLine: {
67
+ readonly type: "number";
68
+ };
69
+ readonly endLine: {
70
+ readonly type: "number";
71
+ };
72
+ readonly content: {
73
+ readonly type: "string";
74
+ };
75
+ };
76
+ readonly required: readonly ["operation", "startLine", "endLine", "content"];
77
+ readonly additionalProperties: false;
78
+ }, {
79
+ readonly type: "object";
80
+ readonly properties: {
81
+ readonly operation: {
82
+ readonly type: "string";
83
+ readonly enum: readonly ["delete"];
84
+ };
85
+ readonly startLine: {
86
+ readonly type: "number";
87
+ };
88
+ readonly endLine: {
89
+ readonly type: "number";
90
+ };
91
+ };
92
+ readonly required: readonly ["operation", "startLine", "endLine"];
93
+ readonly additionalProperties: false;
94
+ }, {
95
+ readonly type: "object";
96
+ readonly properties: {
97
+ readonly operation: {
98
+ readonly type: "string";
99
+ readonly enum: readonly ["insert"];
100
+ };
101
+ readonly position: {
102
+ readonly type: "string";
103
+ readonly enum: readonly ["before", "after"];
104
+ };
105
+ readonly line: {
106
+ readonly type: "number";
107
+ };
108
+ readonly content: {
109
+ readonly type: "string";
110
+ };
111
+ };
112
+ readonly required: readonly ["operation", "position", "line", "content"];
113
+ readonly additionalProperties: false;
114
+ }];
115
+ };
116
+ };
117
+ readonly dryRun: {
118
+ readonly type: "boolean";
119
+ };
120
+ };
121
+ readonly required: readonly ["filePath", "tag", "operations"];
122
+ readonly additionalProperties: false;
123
+ } | {
124
+ readonly type: "object";
125
+ readonly properties: {
126
+ readonly patch: {
127
+ readonly type: "string";
128
+ };
129
+ readonly description: {
130
+ readonly type: "string";
131
+ };
132
+ readonly dryRun: {
133
+ readonly type: "boolean";
134
+ };
135
+ };
136
+ readonly required: readonly ["patch"];
137
+ readonly additionalProperties: false;
138
+ }> | import("../../shared/types.ts").ToolDefinition<{
139
+ filePath: string;
140
+ oldText: string;
141
+ newText: string;
142
+ description?: string | undefined;
143
+ dryRun?: boolean | undefined;
144
+ }, import("../../shared/types.ts").ToolOutputEnvelope, undefined, {
145
+ type: "object";
146
+ properties: {
147
+ filePath: {
148
+ type: "string";
149
+ };
150
+ description: {
151
+ type: "string";
152
+ description: string;
153
+ };
154
+ oldText: {
155
+ type: "string";
156
+ };
157
+ newText: {
158
+ type: "string";
159
+ };
160
+ dryRun: {
161
+ type: "boolean";
162
+ };
163
+ };
164
+ required: readonly ["filePath", "oldText", "newText"];
165
+ }>;
166
+ //# sourceMappingURL=file-edit-tool.d.ts.map