@nanocollective/nanocoder 1.13.7 → 1.13.9

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 (139) hide show
  1. package/dist/app.js +6 -6
  2. package/dist/app.js.map +1 -1
  3. package/dist/components/status.d.ts.map +1 -1
  4. package/dist/components/status.js +8 -4
  5. package/dist/components/status.js.map +1 -1
  6. package/dist/components/user-input.d.ts.map +1 -1
  7. package/dist/components/user-input.js +35 -31
  8. package/dist/components/user-input.js.map +1 -1
  9. package/dist/components/user-message.d.ts.map +1 -1
  10. package/dist/components/user-message.js +0 -5
  11. package/dist/components/user-message.js.map +1 -1
  12. package/dist/components/welcome-message.d.ts.map +1 -1
  13. package/dist/components/welcome-message.js +9 -3
  14. package/dist/components/welcome-message.js.map +1 -1
  15. package/dist/hooks/__tests__/test-helpers.d.ts +5 -0
  16. package/dist/hooks/__tests__/test-helpers.d.ts.map +1 -0
  17. package/dist/hooks/__tests__/test-helpers.js +32 -0
  18. package/dist/hooks/__tests__/test-helpers.js.map +1 -0
  19. package/dist/hooks/__tests__/useInputState.deletion.spec.d.ts +2 -0
  20. package/dist/hooks/__tests__/useInputState.deletion.spec.d.ts.map +1 -0
  21. package/dist/hooks/__tests__/useInputState.deletion.spec.js +328 -0
  22. package/dist/hooks/__tests__/useInputState.deletion.spec.js.map +1 -0
  23. package/dist/hooks/__tests__/useInputState.state-management.spec.d.ts +2 -0
  24. package/dist/hooks/__tests__/useInputState.state-management.spec.d.ts.map +1 -0
  25. package/dist/hooks/__tests__/useInputState.state-management.spec.js +367 -0
  26. package/dist/hooks/__tests__/useInputState.state-management.spec.js.map +1 -0
  27. package/dist/hooks/__tests__/useInputState.undo-redo.spec.d.ts +2 -0
  28. package/dist/hooks/__tests__/useInputState.undo-redo.spec.d.ts.map +1 -0
  29. package/dist/hooks/__tests__/useInputState.undo-redo.spec.js +285 -0
  30. package/dist/hooks/__tests__/useInputState.undo-redo.spec.js.map +1 -0
  31. package/dist/hooks/__tests__/useToolHandler.cancellation.spec.d.ts +2 -0
  32. package/dist/hooks/__tests__/useToolHandler.cancellation.spec.d.ts.map +1 -0
  33. package/dist/hooks/__tests__/useToolHandler.cancellation.spec.js +227 -0
  34. package/dist/hooks/__tests__/useToolHandler.cancellation.spec.js.map +1 -0
  35. package/dist/hooks/__tests__/useToolHandler.execution.spec.d.ts +2 -0
  36. package/dist/hooks/__tests__/useToolHandler.execution.spec.d.ts.map +1 -0
  37. package/dist/hooks/__tests__/useToolHandler.execution.spec.js +264 -0
  38. package/dist/hooks/__tests__/useToolHandler.execution.spec.js.map +1 -0
  39. package/dist/hooks/__tests__/useToolHandler.validation.spec.d.ts +2 -0
  40. package/dist/hooks/__tests__/useToolHandler.validation.spec.d.ts.map +1 -0
  41. package/dist/hooks/__tests__/useToolHandler.validation.spec.js +149 -0
  42. package/dist/hooks/__tests__/useToolHandler.validation.spec.js.map +1 -0
  43. package/dist/{app/hooks → hooks}/useAppInitialization.d.ts +5 -5
  44. package/dist/hooks/useAppInitialization.d.ts.map +1 -0
  45. package/dist/{app/hooks → hooks}/useAppInitialization.js +15 -15
  46. package/dist/hooks/useAppInitialization.js.map +1 -0
  47. package/dist/{app/hooks → hooks}/useAppState.d.ts +6 -6
  48. package/dist/hooks/useAppState.d.ts.map +1 -0
  49. package/dist/{app/hooks → hooks}/useAppState.js +2 -2
  50. package/dist/hooks/useAppState.js.map +1 -0
  51. package/dist/{app/hooks → hooks}/useChatHandler.d.ts +2 -2
  52. package/dist/hooks/useChatHandler.d.ts.map +1 -0
  53. package/dist/{app/hooks → hooks}/useChatHandler.js +17 -11
  54. package/dist/hooks/useChatHandler.js.map +1 -0
  55. package/dist/hooks/useDirectoryTrust.d.ts.map +1 -0
  56. package/dist/{app/hooks → hooks}/useDirectoryTrust.js +3 -3
  57. package/dist/hooks/useDirectoryTrust.js.map +1 -0
  58. package/dist/hooks/useInputState.d.ts +10 -3
  59. package/dist/hooks/useInputState.d.ts.map +1 -1
  60. package/dist/hooks/useInputState.js +154 -15
  61. package/dist/hooks/useInputState.js.map +1 -1
  62. package/dist/{app/hooks → hooks}/useModeHandlers.d.ts +2 -2
  63. package/dist/hooks/useModeHandlers.d.ts.map +1 -0
  64. package/dist/{app/hooks → hooks}/useModeHandlers.js +4 -4
  65. package/dist/hooks/useModeHandlers.js.map +1 -0
  66. package/dist/hooks/useTerminalWidth.d.ts +15 -0
  67. package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
  68. package/dist/hooks/useTerminalWidth.js +39 -0
  69. package/dist/hooks/useTerminalWidth.js.map +1 -1
  70. package/dist/{app/hooks → hooks}/useToolHandler.d.ts +2 -2
  71. package/dist/hooks/useToolHandler.d.ts.map +1 -0
  72. package/dist/{app/hooks → hooks}/useToolHandler.js +65 -5
  73. package/dist/hooks/useToolHandler.js.map +1 -0
  74. package/dist/hooks/useUIState.d.ts +0 -2
  75. package/dist/hooks/useUIState.d.ts.map +1 -1
  76. package/dist/hooks/useUIState.js +1 -11
  77. package/dist/hooks/useUIState.js.map +1 -1
  78. package/dist/integration/paste-roundtrip.spec.d.ts +2 -0
  79. package/dist/integration/paste-roundtrip.spec.d.ts.map +1 -0
  80. package/dist/integration/paste-roundtrip.spec.js +327 -0
  81. package/dist/integration/paste-roundtrip.spec.js.map +1 -0
  82. package/dist/prompt-history.d.ts +9 -3
  83. package/dist/prompt-history.d.ts.map +1 -1
  84. package/dist/prompt-history.js +56 -14
  85. package/dist/prompt-history.js.map +1 -1
  86. package/dist/recommendations/model-database.d.ts.map +1 -1
  87. package/dist/recommendations/model-database.js +14 -0
  88. package/dist/recommendations/model-database.js.map +1 -1
  89. package/dist/types/hooks.d.ts +29 -0
  90. package/dist/types/hooks.d.ts.map +1 -1
  91. package/dist/types/hooks.js +10 -1
  92. package/dist/types/hooks.js.map +1 -1
  93. package/dist/utils/atomic-deletion.d.ts +17 -0
  94. package/dist/utils/atomic-deletion.d.ts.map +1 -0
  95. package/dist/utils/atomic-deletion.js +89 -0
  96. package/dist/utils/atomic-deletion.js.map +1 -0
  97. package/dist/utils/atomic-deletion.spec.d.ts +2 -0
  98. package/dist/utils/atomic-deletion.spec.d.ts.map +1 -0
  99. package/dist/utils/atomic-deletion.spec.js +153 -0
  100. package/dist/utils/atomic-deletion.spec.js.map +1 -0
  101. package/dist/utils/paste-detection.d.ts +36 -0
  102. package/dist/utils/paste-detection.d.ts.map +1 -0
  103. package/dist/utils/paste-detection.js +83 -0
  104. package/dist/utils/paste-detection.js.map +1 -0
  105. package/dist/utils/paste-detection.spec.d.ts +2 -0
  106. package/dist/utils/paste-detection.spec.d.ts.map +1 -0
  107. package/dist/utils/paste-detection.spec.js +44 -0
  108. package/dist/utils/paste-detection.spec.js.map +1 -0
  109. package/dist/utils/paste-utils.d.ts +3 -0
  110. package/dist/utils/paste-utils.d.ts.map +1 -0
  111. package/dist/utils/paste-utils.js +33 -0
  112. package/dist/utils/paste-utils.js.map +1 -0
  113. package/dist/utils/paste-utils.spec.d.ts +2 -0
  114. package/dist/utils/paste-utils.spec.d.ts.map +1 -0
  115. package/dist/utils/paste-utils.spec.js +61 -0
  116. package/dist/utils/paste-utils.spec.js.map +1 -0
  117. package/dist/utils/prompt-assembly.spec.d.ts +2 -0
  118. package/dist/utils/prompt-assembly.spec.d.ts.map +1 -0
  119. package/dist/utils/prompt-assembly.spec.js +80 -0
  120. package/dist/utils/prompt-assembly.spec.js.map +1 -0
  121. package/dist/utils/prompt-processor.d.ts +11 -0
  122. package/dist/utils/prompt-processor.d.ts.map +1 -1
  123. package/dist/utils/prompt-processor.js +57 -0
  124. package/dist/utils/prompt-processor.js.map +1 -1
  125. package/package.json +18 -8
  126. package/source/app/prompts/main-prompt.md +18 -0
  127. package/dist/app/hooks/useAppInitialization.d.ts.map +0 -1
  128. package/dist/app/hooks/useAppInitialization.js.map +0 -1
  129. package/dist/app/hooks/useAppState.d.ts.map +0 -1
  130. package/dist/app/hooks/useAppState.js.map +0 -1
  131. package/dist/app/hooks/useChatHandler.d.ts.map +0 -1
  132. package/dist/app/hooks/useChatHandler.js.map +0 -1
  133. package/dist/app/hooks/useDirectoryTrust.d.ts.map +0 -1
  134. package/dist/app/hooks/useDirectoryTrust.js.map +0 -1
  135. package/dist/app/hooks/useModeHandlers.d.ts.map +0 -1
  136. package/dist/app/hooks/useModeHandlers.js.map +0 -1
  137. package/dist/app/hooks/useToolHandler.d.ts.map +0 -1
  138. package/dist/app/hooks/useToolHandler.js.map +0 -1
  139. /package/dist/{app/hooks → hooks}/useDirectoryTrust.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInputState.undo-redo.spec.js","sourceRoot":"","sources":["../../../source/hooks/__tests__/useInputState.undo-redo.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AAEvB,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAG9C,8BAA8B;AAC9B,2EAA2E;AAE3E,2CAA2C;AAC3C,SAAS,eAAe,CACvB,SAAuB,EACvB,SAAuB,EACvB,YAAwB,EACxB,QAAoB;IAMpB,OAAO;QACN,YAAY,EAAE,CAAC,GAAG,SAAS,EAAE,YAAY,CAAC;QAC1C,YAAY,EAAE,EAAE,EAAE,iCAAiC;QACnD,eAAe,EAAE,QAAQ;KACzB,CAAC;AACH,CAAC;AAED,0BAA0B;AAC1B,SAAS,WAAW,CACnB,SAAuB,EACvB,SAAuB,EACvB,YAAwB;IAMxB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5C,OAAO;QACN,YAAY;QACZ,YAAY,EAAE,CAAC,GAAG,SAAS,EAAE,YAAY,CAAC;QAC1C,eAAe,EAAE,aAAa;KAC9B,CAAC;AACH,CAAC;AAED,0BAA0B;AAC1B,SAAS,WAAW,CACnB,SAAuB,EACvB,SAAuB,EACvB,YAAwB;IAMxB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5C,OAAO;QACN,YAAY,EAAE,CAAC,GAAG,SAAS,EAAE,YAAY,CAAC;QAC1C,YAAY;QACZ,eAAe,EAAE,SAAS;KAC1B,CAAC;AACH,CAAC;AAED,IAAI,CAAC,0DAA0D,EAAE,CAAC,CAAC,EAAE;IACpE,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAe;QAChC,YAAY,EAAE,OAAO;QACrB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IACF,MAAM,QAAQ,GAAe,EAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAC,CAAC;IAE9E,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE7E,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,CAAC,CAAC,EAAE;IACpD,MAAM,SAAS,GAAiB;QAC/B,EAAC,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAC;KAC7C,CAAC;IACF,MAAM,SAAS,GAAiB;QAC/B,EAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,EAAC;QACjD,EAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,EAAC;KACjD,CAAC;IACF,MAAM,YAAY,GAAe;QAChC,YAAY,EAAE,SAAS;QACvB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IACF,MAAM,QAAQ,GAAe,EAAC,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE7E,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACvD,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAe;QAChC,YAAY,EAAE,SAAS;QACvB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAE/D,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,CAAC,CAAC,EAAE;IACvE,MAAM,MAAM,GAAe,EAAC,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAC,CAAC;IAC3E,MAAM,MAAM,GAAe,EAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAC,CAAC;IAC5E,MAAM,YAAY,GAAe;QAChC,YAAY,EAAE,OAAO;QACrB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IAEF,MAAM,SAAS,GAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAE/D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,MAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,EAAE,CAAC,MAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC,MAAO,CAAC,eAAe,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,EAAE,CAAC,MAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,EAAE,CAAC,MAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACvD,MAAM,SAAS,GAAiB;QAC/B,EAAC,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAC;KAC7C,CAAC;IACF,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAe;QAChC,YAAY,EAAE,SAAS;QACvB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAE/D,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,CAAC,CAAC,EAAE;IACvE,MAAM,YAAY,GAAe;QAChC,YAAY,EAAE,SAAS;QACvB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IACF,MAAM,SAAS,GAAe,EAAC,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAC,CAAC;IAE7E,MAAM,SAAS,GAAiB;QAC/B,EAAC,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAC;KAC7C,CAAC;IACF,MAAM,SAAS,GAAiB,CAAC,SAAS,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAE/D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,MAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,EAAE,CAAC,MAAO,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,EAAE,CAAC,MAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,EAAE,CAAC,MAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,EAAE;IAC9C,MAAM,oBAAoB,GAAe;QACxC,YAAY,EAAE,yBAAyB;QACvC,kBAAkB,EAAE;YACnB,KAAK,EAAE;gBACN,IAAI,EAAE,eAAe,CAAC,KAAK;gBAC3B,WAAW,EAAE,yBAAyB;gBACtC,OAAO,EAAE,oBAAoB;gBAC7B,YAAY,EAAE,GAAG;aACU;SAC5B;KACD,CAAC;IAEF,MAAM,YAAY,GAAe;QAChC,YAAY,EAAE,SAAS;QACvB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IACF,MAAM,SAAS,GAAiB,CAAC,oBAAoB,CAAC,CAAC;IACvD,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAE/D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,MAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,EAAE;IAC9C,MAAM,oBAAoB,GAAe;QACxC,YAAY,EAAE,yBAAyB;QACvC,kBAAkB,EAAE;YACnB,KAAK,EAAE;gBACN,IAAI,EAAE,eAAe,CAAC,KAAK;gBAC3B,WAAW,EAAE,yBAAyB;gBACtC,OAAO,EAAE,kBAAkB;gBAC3B,YAAY,EAAE,GAAG;aACU;SAC5B;KACD,CAAC;IAEF,MAAM,YAAY,GAAe;QAChC,YAAY,EAAE,SAAS;QACvB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IACF,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,MAAM,SAAS,GAAiB,CAAC,oBAAoB,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAE/D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,MAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,CAAC,CAAC,EAAE;IACtD,MAAM,MAAM,GAAG;QACd,EAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAC;QAChD,EAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAC;QAChD,EAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAC;KAChD,CAAC;IAEF,uDAAuD;IACvD,IAAI,SAAS,GAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,SAAS,GAAiB,EAAE,CAAC;IACjC,IAAI,YAAY,GAAe,MAAM,CAAC,CAAC,CAAC,CAAC;IAEzC,iBAAiB;IACjB,IAAI,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,SAAS,GAAG,MAAO,CAAC,YAAY,CAAC;IACjC,SAAS,GAAG,MAAO,CAAC,YAAY,CAAC;IACjC,YAAY,GAAG,MAAO,CAAC,eAAe,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE1C,iBAAiB;IACjB,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,SAAS,GAAG,MAAO,CAAC,YAAY,CAAC;IACjC,SAAS,GAAG,MAAO,CAAC,YAAY,CAAC;IACjC,YAAY,GAAG,MAAO,CAAC,eAAe,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE1C,iBAAiB;IACjB,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,SAAS,GAAG,MAAO,CAAC,YAAY,CAAC;IACjC,SAAS,GAAG,MAAO,CAAC,YAAY,CAAC;IACjC,YAAY,GAAG,MAAO,CAAC,eAAe,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE1C,iBAAiB;IACjB,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,YAAY,GAAG,MAAO,CAAC,eAAe,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qDAAqD,EAAE,CAAC,CAAC,EAAE;IAC/D,MAAM,MAAM,GAAe,EAAC,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAC,CAAC;IAC3E,MAAM,MAAM,GAAe,EAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAC,CAAC;IAC5E,MAAM,MAAM,GAAe,EAAC,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAC,CAAC;IAE3E,kBAAkB;IAClB,IAAI,SAAS,GAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,SAAS,GAAiB,EAAE,CAAC;IACjC,IAAI,YAAY,GAAe,MAAM,CAAC;IAEtC,iBAAiB;IACjB,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACrB,SAAS,GAAG,UAAW,CAAC,YAAY,CAAC;IACrC,SAAS,GAAG,UAAW,CAAC,YAAY,CAAC;IACrC,YAAY,GAAG,UAAW,CAAC,eAAe,CAAC;IAE3C,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;IAE9D,kBAAkB;IAClB,MAAM,QAAQ,GAAe;QAC5B,YAAY,EAAE,WAAW;QACzB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IACF,MAAM,UAAU,GAAG,eAAe,CACjC,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,CACR,CAAC;IACF,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;IACpC,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;IACpC,YAAY,GAAG,UAAU,CAAC,eAAe,CAAC;IAE1C,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;IAC1D,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,EAAE;IACzD,MAAM,UAAU,GAAe,EAAC,YAAY,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAC,CAAC;IAC1E,MAAM,WAAW,GAAe;QAC/B,YAAY,EAAE,MAAM;QACpB,kBAAkB,EAAE,EAAE;KACtB,CAAC;IAEF,+CAA+C;IAC/C,IAAI,SAAS,GAAiB,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,SAAS,GAAiB,EAAE,CAAC;IACjC,IAAI,YAAY,GAAe,WAAW,CAAC;IAE3C,gBAAgB;IAChB,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACrB,YAAY,GAAG,UAAW,CAAC,eAAe,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEpC,sBAAsB;IACtB,MAAM,UAAU,GAAG,WAAW,CAC7B,UAAW,CAAC,YAAY,EACxB,UAAW,CAAC,YAAY,EACxB,YAAY,CACZ,CAAC;IACF,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC,UAAW,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,EAAE;IACzD,MAAM,wBAAwB,GAAe;QAC5C,YAAY,EAAE,iDAAiD;QAC/D,kBAAkB,EAAE;YACnB,GAAG,EAAE;gBACJ,IAAI,EAAE,eAAe,CAAC,KAAK;gBAC3B,WAAW,EAAE,uBAAuB;gBACpC,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,GAAG;aACU;YAC5B,GAAG,EAAE;gBACJ,IAAI,EAAE,eAAe,CAAC,KAAK;gBAC3B,WAAW,EAAE,uBAAuB;gBACpC,OAAO,EAAE,QAAQ;gBACjB,YAAY,EAAE,GAAG;aACU;SAC5B;KACD,CAAC;IAEF,MAAM,YAAY,GAAe;QAChC,YAAY,EAAE,iBAAiB;QAC/B,kBAAkB,EAAE,EAAE;KACtB,CAAC;IACF,MAAM,SAAS,GAAiB,CAAC,wBAAwB,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAE/D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,MAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,MAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useToolHandler.cancellation.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolHandler.cancellation.spec.d.ts","sourceRoot":"","sources":["../../../source/hooks/__tests__/useToolHandler.cancellation.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,227 @@
1
+ import test from 'ava';
2
+ import { createMockToolCall, createMockConversationContext, } from './test-helpers.js';
3
+ // ============================================================================
4
+ // Tests for Tool Cancellation
5
+ // ============================================================================
6
+ test('tool cancellation creates proper cancellation result for single tool', t => {
7
+ const toolCall = createMockToolCall('call_123', 'search_files', {
8
+ pattern: '**/*',
9
+ });
10
+ const cancellationResults = [toolCall].map(tc => ({
11
+ tool_call_id: tc.id,
12
+ role: 'tool',
13
+ name: tc.function.name,
14
+ content: 'Tool execution was cancelled by the user.',
15
+ }));
16
+ t.is(cancellationResults.length, 1);
17
+ t.is(cancellationResults[0].tool_call_id, 'call_123');
18
+ t.is(cancellationResults[0].role, 'tool');
19
+ t.is(cancellationResults[0].name, 'search_files');
20
+ t.is(cancellationResults[0].content, 'Tool execution was cancelled by the user.');
21
+ });
22
+ test('tool cancellation creates proper cancellation results for multiple tools', t => {
23
+ const toolCalls = [
24
+ createMockToolCall('call_001', 'search_files', { pattern: '**/*.ts' }),
25
+ createMockToolCall('call_002', 'read_file', { path: '/test.ts' }),
26
+ createMockToolCall('call_003', 'execute_bash', { command: 'npm test' }),
27
+ ];
28
+ const cancellationResults = toolCalls.map(tc => ({
29
+ tool_call_id: tc.id,
30
+ role: 'tool',
31
+ name: tc.function.name,
32
+ content: 'Tool execution was cancelled by the user.',
33
+ }));
34
+ t.is(cancellationResults.length, 3);
35
+ for (let i = 0; i < toolCalls.length; i++) {
36
+ t.is(cancellationResults[i].tool_call_id, toolCalls[i].id);
37
+ t.is(cancellationResults[i].name, toolCalls[i].function.name);
38
+ t.is(cancellationResults[i].role, 'tool');
39
+ }
40
+ });
41
+ test('cancellation updates conversation history with assistant message and tool results', t => {
42
+ const toolCall = createMockToolCall('call_456', 'execute_bash', {
43
+ command: 'rm -rf /',
44
+ });
45
+ const context = createMockConversationContext('Delete everything', 'Let me run that command.', [toolCall]);
46
+ const cancellationResults = [toolCall].map(tc => ({
47
+ tool_call_id: tc.id,
48
+ role: 'tool',
49
+ name: tc.function.name,
50
+ content: 'Tool execution was cancelled by the user.',
51
+ }));
52
+ const { updatedMessages, assistantMsg } = context;
53
+ const toolMessages = cancellationResults.map(result => ({
54
+ role: 'tool',
55
+ content: result.content || '',
56
+ tool_call_id: result.tool_call_id,
57
+ name: result.name,
58
+ }));
59
+ const updatedMessagesWithCancellation = [
60
+ ...updatedMessages,
61
+ assistantMsg,
62
+ ...toolMessages,
63
+ ];
64
+ t.is(updatedMessagesWithCancellation.length, 3);
65
+ t.is(updatedMessagesWithCancellation[0].role, 'user');
66
+ t.is(updatedMessagesWithCancellation[1].role, 'assistant');
67
+ t.is(updatedMessagesWithCancellation[2].role, 'tool');
68
+ const assistantMessage = updatedMessagesWithCancellation[1];
69
+ if (assistantMessage.role === 'assistant') {
70
+ t.truthy(assistantMessage.tool_calls);
71
+ t.is(assistantMessage.tool_calls?.length, 1);
72
+ t.is(updatedMessagesWithCancellation[2].tool_call_id, assistantMessage.tool_calls?.[0].id);
73
+ }
74
+ });
75
+ test('tool call IDs match between assistant tool_calls and cancellation results', t => {
76
+ const toolCalls = [
77
+ createMockToolCall('call_abc', 'create_file', { path: '/new.ts' }),
78
+ createMockToolCall('call_def', 'create_file', { path: '/another.ts' }),
79
+ ];
80
+ const cancellationResults = toolCalls.map(tc => ({
81
+ tool_call_id: tc.id,
82
+ role: 'tool',
83
+ name: tc.function.name,
84
+ content: 'Tool execution was cancelled by the user.',
85
+ }));
86
+ for (const toolCall of toolCalls) {
87
+ const matchingResult = cancellationResults.find(r => r.tool_call_id === toolCall.id);
88
+ t.truthy(matchingResult);
89
+ t.is(matchingResult?.name, toolCall.function.name);
90
+ }
91
+ });
92
+ test('cancellation creates results for all pending tools, not just current', t => {
93
+ const toolCalls = [
94
+ createMockToolCall('call_001', 'read_file', { path: '/file1.ts' }),
95
+ createMockToolCall('call_002', 'read_file', { path: '/file2.ts' }),
96
+ createMockToolCall('call_003', 'read_file', { path: '/file3.ts' }),
97
+ ];
98
+ const cancellationResults = toolCalls.map(tc => ({
99
+ tool_call_id: tc.id,
100
+ role: 'tool',
101
+ name: tc.function.name,
102
+ content: 'Tool execution was cancelled by the user.',
103
+ }));
104
+ t.is(cancellationResults.length, 3);
105
+ t.is(cancellationResults[0].tool_call_id, 'call_001');
106
+ t.is(cancellationResults[1].tool_call_id, 'call_002');
107
+ t.is(cancellationResults[2].tool_call_id, 'call_003');
108
+ });
109
+ test('cancellation handles empty tool calls array gracefully', t => {
110
+ const toolCalls = [];
111
+ const cancellationResults = toolCalls.map(tc => ({
112
+ tool_call_id: tc.id,
113
+ role: 'tool',
114
+ name: tc.function.name,
115
+ content: 'Tool execution was cancelled by the user.',
116
+ }));
117
+ t.is(cancellationResults.length, 0);
118
+ t.deepEqual(cancellationResults, []);
119
+ });
120
+ test('cancellation results preserve tool name and ID from original tool call', t => {
121
+ const toolCall = createMockToolCall('call_xyz', 'fetch_url', {
122
+ url: 'https://example.com',
123
+ prompt: 'Get content',
124
+ });
125
+ const cancellationResult = {
126
+ tool_call_id: toolCall.id,
127
+ role: 'tool',
128
+ name: toolCall.function.name,
129
+ content: 'Tool execution was cancelled by the user.',
130
+ };
131
+ t.is(cancellationResult.tool_call_id, 'call_xyz');
132
+ t.is(cancellationResult.name, 'fetch_url');
133
+ t.is(cancellationResult.role, 'tool');
134
+ });
135
+ test('cancellation handles null conversation context gracefully', t => {
136
+ const currentConversationContext = null;
137
+ if (!currentConversationContext) {
138
+ t.pass('Null context handled by early return');
139
+ return;
140
+ }
141
+ t.fail('Should have returned early for null context');
142
+ });
143
+ test('message structure after cancellation matches OpenAI tool calling format', t => {
144
+ const toolCall = createMockToolCall('call_format_test', 'search_files', {
145
+ pattern: '*.ts',
146
+ });
147
+ const cancellationResult = {
148
+ tool_call_id: toolCall.id,
149
+ role: 'tool',
150
+ name: toolCall.function.name,
151
+ content: 'Tool execution was cancelled by the user.',
152
+ };
153
+ const toolMessage = {
154
+ role: 'tool',
155
+ content: cancellationResult.content || '',
156
+ tool_call_id: cancellationResult.tool_call_id,
157
+ name: cancellationResult.name,
158
+ };
159
+ t.is(toolMessage.role, 'tool');
160
+ t.is(typeof toolMessage.content, 'string');
161
+ t.is(toolMessage.tool_call_id, 'call_format_test');
162
+ t.is(toolMessage.name, 'search_files');
163
+ t.is(toolMessage.content, 'Tool execution was cancelled by the user.');
164
+ });
165
+ test('cancellation maintains order of tool calls in results', t => {
166
+ const toolCalls = [
167
+ createMockToolCall('call_1', 'tool_a', {}),
168
+ createMockToolCall('call_2', 'tool_b', {}),
169
+ createMockToolCall('call_3', 'tool_c', {}),
170
+ createMockToolCall('call_4', 'tool_d', {}),
171
+ ];
172
+ const cancellationResults = toolCalls.map(tc => ({
173
+ tool_call_id: tc.id,
174
+ role: 'tool',
175
+ name: tc.function.name,
176
+ content: 'Tool execution was cancelled by the user.',
177
+ }));
178
+ for (let i = 0; i < toolCalls.length; i++) {
179
+ t.is(cancellationResults[i].tool_call_id, toolCalls[i].id);
180
+ t.is(cancellationResults[i].name, toolCalls[i].function.name);
181
+ }
182
+ });
183
+ test('integration: full cancellation flow from tool calls to final message history', t => {
184
+ const userMessage = 'Run npm test';
185
+ const assistantContent = 'I will run npm test for you.';
186
+ const toolCalls = [
187
+ createMockToolCall('call_test', 'execute_bash', { command: 'npm test' }),
188
+ ];
189
+ const context = createMockConversationContext(userMessage, assistantContent, toolCalls);
190
+ const cancellationResults = toolCalls.map(tc => ({
191
+ tool_call_id: tc.id,
192
+ role: 'tool',
193
+ name: tc.function.name,
194
+ content: 'Tool execution was cancelled by the user.',
195
+ }));
196
+ const { updatedMessages, assistantMsg } = context;
197
+ const toolMessages = cancellationResults.map(result => ({
198
+ role: 'tool',
199
+ content: result.content || '',
200
+ tool_call_id: result.tool_call_id,
201
+ name: result.name,
202
+ }));
203
+ const finalMessages = [...updatedMessages, assistantMsg, ...toolMessages];
204
+ t.is(finalMessages.length, 3);
205
+ t.is(finalMessages[0].role, 'user');
206
+ t.is(finalMessages[0].content, userMessage);
207
+ const finalAssistantMsg = finalMessages[1];
208
+ t.is(finalAssistantMsg.role, 'assistant');
209
+ t.is(finalAssistantMsg.content, assistantContent);
210
+ if (finalAssistantMsg.role === 'assistant') {
211
+ t.truthy(finalAssistantMsg.tool_calls);
212
+ t.is(finalAssistantMsg.tool_calls?.length, 1);
213
+ t.is(finalAssistantMsg.tool_calls?.[0].id, 'call_test');
214
+ }
215
+ t.is(finalMessages[2].role, 'tool');
216
+ t.is(finalMessages[2].tool_call_id, 'call_test');
217
+ t.is(finalMessages[2].name, 'execute_bash');
218
+ t.is(finalMessages[2].content, 'Tool execution was cancelled by the user.');
219
+ const assistantToolCallIds = finalAssistantMsg.role === 'assistant'
220
+ ? finalAssistantMsg.tool_calls?.map((tc) => tc.id) || []
221
+ : [];
222
+ const toolResultIds = finalMessages
223
+ .filter(msg => msg.role === 'tool')
224
+ .map(msg => msg.tool_call_id);
225
+ t.deepEqual(assistantToolCallIds, toolResultIds);
226
+ });
227
+ //# sourceMappingURL=useToolHandler.cancellation.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolHandler.cancellation.spec.js","sourceRoot":"","sources":["../../../source/hooks/__tests__/useToolHandler.cancellation.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useToolHandler.execution.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolHandler.execution.spec.d.ts","sourceRoot":"","sources":["../../../source/hooks/__tests__/useToolHandler.execution.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,264 @@
1
+ import test from 'ava';
2
+ import { createMockToolCall, createMockConversationContext, } from './test-helpers.js';
3
+ // ============================================================================
4
+ // Tests for Tool Execution Flow
5
+ // ============================================================================
6
+ test('continueConversationWithToolResults formats tool results as messages', t => {
7
+ const toolResults = [
8
+ {
9
+ tool_call_id: 'call_1',
10
+ role: 'tool',
11
+ name: 'read_file',
12
+ content: 'File contents here',
13
+ },
14
+ {
15
+ tool_call_id: 'call_2',
16
+ role: 'tool',
17
+ name: 'search_files',
18
+ content: 'Found 10 files',
19
+ },
20
+ ];
21
+ const toolMessages = toolResults.map(result => ({
22
+ role: 'tool',
23
+ content: result.content || '',
24
+ tool_call_id: result.tool_call_id,
25
+ name: result.name,
26
+ }));
27
+ t.is(toolMessages.length, 2);
28
+ t.is(toolMessages[0].role, 'tool');
29
+ t.is(toolMessages[0].content, 'File contents here');
30
+ t.is(toolMessages[0].tool_call_id, 'call_1');
31
+ t.is(toolMessages[0].name, 'read_file');
32
+ t.is(toolMessages[1].content, 'Found 10 files');
33
+ });
34
+ test('continueConversationWithToolResults builds complete message history', t => {
35
+ const context = createMockConversationContext('Read a file', 'Reading the file now.', [createMockToolCall('call_123', 'read_file', { path: '/test.ts' })]);
36
+ const toolResults = [
37
+ {
38
+ tool_call_id: 'call_123',
39
+ role: 'tool',
40
+ name: 'read_file',
41
+ content: 'export const test = true;',
42
+ },
43
+ ];
44
+ const { updatedMessages, assistantMsg } = context;
45
+ const toolMessages = toolResults.map(result => ({
46
+ role: 'tool',
47
+ content: result.content || '',
48
+ tool_call_id: result.tool_call_id,
49
+ name: result.name,
50
+ }));
51
+ const updatedMessagesWithTools = [
52
+ ...updatedMessages,
53
+ assistantMsg,
54
+ ...toolMessages,
55
+ ];
56
+ t.is(updatedMessagesWithTools.length, 3);
57
+ t.is(updatedMessagesWithTools[0].role, 'user');
58
+ t.is(updatedMessagesWithTools[1].role, 'assistant');
59
+ t.is(updatedMessagesWithTools[2].role, 'tool');
60
+ t.is(updatedMessagesWithTools[2].content, 'export const test = true;');
61
+ });
62
+ test('continueConversationWithToolResults handles empty content', t => {
63
+ const toolResults = [
64
+ {
65
+ tool_call_id: 'call_empty',
66
+ role: 'tool',
67
+ name: 'some_tool',
68
+ content: '',
69
+ },
70
+ ];
71
+ const toolMessages = toolResults.map(result => ({
72
+ role: 'tool',
73
+ content: result.content || '',
74
+ tool_call_id: result.tool_call_id,
75
+ name: result.name,
76
+ }));
77
+ t.is(toolMessages[0].content, '');
78
+ t.is(toolMessages[0].role, 'tool');
79
+ });
80
+ test('startToolConfirmationFlow initializes tool confirmation state', t => {
81
+ const toolCalls = [
82
+ createMockToolCall('call_1', 'read_file', { path: '/file.ts' }),
83
+ createMockToolCall('call_2', 'search_files', { pattern: '*.ts' }),
84
+ ];
85
+ const userMessage = { role: 'user', content: 'Do stuff' };
86
+ const assistantMsg = {
87
+ role: 'assistant',
88
+ content: 'Doing stuff',
89
+ tool_calls: toolCalls,
90
+ };
91
+ const systemMsg = { role: 'system', content: 'System prompt' };
92
+ const pendingToolCalls = toolCalls;
93
+ const currentToolIndex = 0;
94
+ const completedToolResults = [];
95
+ const currentConversationContext = {
96
+ updatedMessages: [userMessage],
97
+ assistantMsg,
98
+ systemMessage: systemMsg,
99
+ };
100
+ t.deepEqual(pendingToolCalls, toolCalls);
101
+ t.is(currentToolIndex, 0);
102
+ t.deepEqual(completedToolResults, []);
103
+ t.truthy(currentConversationContext);
104
+ t.is(currentConversationContext.assistantMsg.tool_calls?.length, 2);
105
+ });
106
+ test('startToolConfirmationFlow preserves all context information', t => {
107
+ const toolCalls = [createMockToolCall('call_xyz', 'execute_bash', {})];
108
+ const userMsg = { role: 'user', content: 'Run command' };
109
+ const assistantMsg = {
110
+ role: 'assistant',
111
+ content: 'Running',
112
+ tool_calls: toolCalls,
113
+ };
114
+ const systemMsg = { role: 'system', content: 'Sys' };
115
+ const context = {
116
+ updatedMessages: [userMsg],
117
+ assistantMsg,
118
+ systemMessage: systemMsg,
119
+ };
120
+ t.is(context.updatedMessages.length, 1);
121
+ t.is(context.updatedMessages[0].content, 'Run command');
122
+ t.is(context.assistantMsg.content, 'Running');
123
+ t.is(context.systemMessage.content, 'Sys');
124
+ });
125
+ test('multi-tool flow: moving to next tool increments index', t => {
126
+ let currentToolIndex = 0;
127
+ const completedToolResults = [];
128
+ const result1 = {
129
+ tool_call_id: 'call_1',
130
+ role: 'tool',
131
+ name: 'tool_a',
132
+ content: 'Result A',
133
+ };
134
+ completedToolResults.push(result1);
135
+ currentToolIndex++;
136
+ t.is(currentToolIndex, 1);
137
+ t.is(completedToolResults.length, 1);
138
+ const result2 = {
139
+ tool_call_id: 'call_2',
140
+ role: 'tool',
141
+ name: 'tool_b',
142
+ content: 'Result B',
143
+ };
144
+ completedToolResults.push(result2);
145
+ currentToolIndex++;
146
+ t.is(currentToolIndex, 2);
147
+ t.is(completedToolResults.length, 2);
148
+ });
149
+ test('multi-tool flow: last tool triggers conversation continuation', t => {
150
+ const toolCalls = [
151
+ createMockToolCall('call_1', 'tool_a', {}),
152
+ createMockToolCall('call_2', 'tool_b', {}),
153
+ ];
154
+ let currentToolIndex = 0;
155
+ const completedToolResults = [];
156
+ completedToolResults.push({
157
+ tool_call_id: 'call_1',
158
+ role: 'tool',
159
+ name: 'tool_a',
160
+ content: 'A',
161
+ });
162
+ currentToolIndex++;
163
+ const shouldContinueToNextTool = currentToolIndex < toolCalls.length;
164
+ t.true(shouldContinueToNextTool);
165
+ completedToolResults.push({
166
+ tool_call_id: 'call_2',
167
+ role: 'tool',
168
+ name: 'tool_b',
169
+ content: 'B',
170
+ });
171
+ currentToolIndex++;
172
+ const allToolsComplete = currentToolIndex >= toolCalls.length;
173
+ t.true(allToolsComplete);
174
+ t.is(completedToolResults.length, 2);
175
+ });
176
+ test('tool results accumulate correctly across multiple executions', t => {
177
+ const completedToolResults = [];
178
+ const tools = [
179
+ { id: 'call_1', name: 'tool_a', result: 'Result A' },
180
+ { id: 'call_2', name: 'tool_b', result: 'Result B' },
181
+ { id: 'call_3', name: 'tool_c', result: 'Result C' },
182
+ ];
183
+ for (const tool of tools) {
184
+ const newResult = {
185
+ tool_call_id: tool.id,
186
+ role: 'tool',
187
+ name: tool.name,
188
+ content: tool.result,
189
+ };
190
+ completedToolResults.push(newResult);
191
+ }
192
+ t.is(completedToolResults.length, 3);
193
+ t.is(completedToolResults[0].content, 'Result A');
194
+ t.is(completedToolResults[1].content, 'Result B');
195
+ t.is(completedToolResults[2].content, 'Result C');
196
+ });
197
+ test('tool results maintain proper IDs for LLM matching', t => {
198
+ const toolCalls = [
199
+ createMockToolCall('unique_id_1', 'tool_x', {}),
200
+ createMockToolCall('unique_id_2', 'tool_y', {}),
201
+ ];
202
+ const results = toolCalls.map((tc, i) => ({
203
+ tool_call_id: tc.id,
204
+ role: 'tool',
205
+ name: tc.function.name,
206
+ content: `Result ${i}`,
207
+ }));
208
+ t.is(results[0].tool_call_id, 'unique_id_1');
209
+ t.is(results[1].tool_call_id, 'unique_id_2');
210
+ t.is(results[0].name, 'tool_x');
211
+ t.is(results[1].name, 'tool_y');
212
+ });
213
+ test('tool confirmation approval triggers execution state', t => {
214
+ const confirmed = true;
215
+ let isToolConfirmationMode = true;
216
+ let isToolExecuting = false;
217
+ if (confirmed) {
218
+ isToolConfirmationMode = false;
219
+ isToolExecuting = true;
220
+ }
221
+ t.false(isToolConfirmationMode);
222
+ t.true(isToolExecuting);
223
+ });
224
+ test('tool confirmation rejection creates cancellation results', t => {
225
+ const confirmed = false;
226
+ const toolCalls = [
227
+ createMockToolCall('call_reject', 'execute_bash', { command: 'rm -rf /' }),
228
+ ];
229
+ if (!confirmed) {
230
+ const cancellationResults = toolCalls.map(tc => ({
231
+ tool_call_id: tc.id,
232
+ role: 'tool',
233
+ name: tc.function.name,
234
+ content: 'Tool execution was cancelled by the user.',
235
+ }));
236
+ t.is(cancellationResults.length, 1);
237
+ t.is(cancellationResults[0].content, 'Tool execution was cancelled by the user.');
238
+ }
239
+ t.pass();
240
+ });
241
+ test('integration: complete successful tool execution flow', t => {
242
+ const context = createMockConversationContext('Search for TypeScript files', 'Searching now.', [createMockToolCall('call_search', 'search_files', { pattern: '**/*.ts' })]);
243
+ const result = {
244
+ tool_call_id: 'call_search',
245
+ role: 'tool',
246
+ name: 'search_files',
247
+ content: 'Found 25 TypeScript files',
248
+ };
249
+ const { updatedMessages, assistantMsg } = context;
250
+ const toolMessages = [
251
+ {
252
+ role: 'tool',
253
+ content: result.content,
254
+ tool_call_id: result.tool_call_id,
255
+ name: result.name,
256
+ },
257
+ ];
258
+ const finalMessages = [...updatedMessages, assistantMsg, ...toolMessages];
259
+ t.is(finalMessages.length, 3);
260
+ t.is(finalMessages[2].role, 'tool');
261
+ t.is(finalMessages[2].content, 'Found 25 TypeScript files');
262
+ t.is(finalMessages[2].tool_call_id, 'call_search');
263
+ });
264
+ //# sourceMappingURL=useToolHandler.execution.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolHandler.execution.spec.js","sourceRoot":"","sources":["../../../source/hooks/__tests__/useToolHandler.execution.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useToolHandler.validation.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolHandler.validation.spec.d.ts","sourceRoot":"","sources":["../../../source/hooks/__tests__/useToolHandler.validation.spec.ts"],"names":[],"mappings":""}