centaurus-cli 2.9.1 → 2.9.2

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 (127) hide show
  1. package/dist/cli-adapter.d.ts +70 -0
  2. package/dist/cli-adapter.d.ts.map +1 -1
  3. package/dist/cli-adapter.js +349 -156
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/config/mcp-config-manager.d.ts +21 -0
  6. package/dist/config/mcp-config-manager.d.ts.map +1 -1
  7. package/dist/config/mcp-config-manager.js +184 -1
  8. package/dist/config/mcp-config-manager.js.map +1 -1
  9. package/dist/config/models.d.ts +1 -0
  10. package/dist/config/models.d.ts.map +1 -1
  11. package/dist/config/models.js +7 -2
  12. package/dist/config/models.js.map +1 -1
  13. package/dist/config/slash-commands.d.ts.map +1 -1
  14. package/dist/config/slash-commands.js +4 -3
  15. package/dist/config/slash-commands.js.map +1 -1
  16. package/dist/index.js +60 -11
  17. package/dist/index.js.map +1 -1
  18. package/dist/mcp/mcp-command-handler.d.ts +34 -3
  19. package/dist/mcp/mcp-command-handler.d.ts.map +1 -1
  20. package/dist/mcp/mcp-command-handler.js +171 -83
  21. package/dist/mcp/mcp-command-handler.js.map +1 -1
  22. package/dist/mcp/mcp-server-manager.d.ts.map +1 -1
  23. package/dist/mcp/mcp-server-manager.js +9 -23
  24. package/dist/mcp/mcp-server-manager.js.map +1 -1
  25. package/dist/mcp/mcp-tool-wrapper.d.ts.map +1 -1
  26. package/dist/mcp/mcp-tool-wrapper.js +42 -5
  27. package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
  28. package/dist/services/api-client.d.ts +9 -0
  29. package/dist/services/api-client.d.ts.map +1 -1
  30. package/dist/services/api-client.js +25 -0
  31. package/dist/services/api-client.js.map +1 -1
  32. package/dist/services/input-detection-agent.d.ts +40 -0
  33. package/dist/services/input-detection-agent.d.ts.map +1 -0
  34. package/dist/services/input-detection-agent.js +213 -0
  35. package/dist/services/input-detection-agent.js.map +1 -0
  36. package/dist/services/input-requirement-detector.d.ts +28 -0
  37. package/dist/services/input-requirement-detector.d.ts.map +1 -0
  38. package/dist/services/input-requirement-detector.js +203 -0
  39. package/dist/services/input-requirement-detector.js.map +1 -0
  40. package/dist/services/monitored-shell-manager.d.ts +120 -0
  41. package/dist/services/monitored-shell-manager.d.ts.map +1 -0
  42. package/dist/services/monitored-shell-manager.js +239 -0
  43. package/dist/services/monitored-shell-manager.js.map +1 -0
  44. package/dist/services/shell-input-agent.d.ts +89 -0
  45. package/dist/services/shell-input-agent.d.ts.map +1 -0
  46. package/dist/services/shell-input-agent.js +361 -0
  47. package/dist/services/shell-input-agent.js.map +1 -0
  48. package/dist/services/sub-agent-manager.d.ts +139 -0
  49. package/dist/services/sub-agent-manager.d.ts.map +1 -0
  50. package/dist/services/sub-agent-manager.js +517 -0
  51. package/dist/services/sub-agent-manager.js.map +1 -0
  52. package/dist/tools/background-command.d.ts.map +1 -1
  53. package/dist/tools/background-command.js +33 -13
  54. package/dist/tools/background-command.js.map +1 -1
  55. package/dist/tools/command.d.ts.map +1 -1
  56. package/dist/tools/command.js +64 -1
  57. package/dist/tools/command.js.map +1 -1
  58. package/dist/tools/file-ops.d.ts.map +1 -1
  59. package/dist/tools/file-ops.js +33 -19
  60. package/dist/tools/file-ops.js.map +1 -1
  61. package/dist/tools/get-diff.js +1 -1
  62. package/dist/tools/get-diff.js.map +1 -1
  63. package/dist/tools/grep-search.d.ts.map +1 -1
  64. package/dist/tools/grep-search.js +41 -15
  65. package/dist/tools/grep-search.js.map +1 -1
  66. package/dist/tools/plan-mode.js +3 -3
  67. package/dist/tools/plan-mode.js.map +1 -1
  68. package/dist/tools/registry.js +1 -1
  69. package/dist/tools/registry.js.map +1 -1
  70. package/dist/tools/sub-agent.d.ts +9 -0
  71. package/dist/tools/sub-agent.d.ts.map +1 -0
  72. package/dist/tools/sub-agent.js +232 -0
  73. package/dist/tools/sub-agent.js.map +1 -0
  74. package/dist/tools/task-complete.d.ts.map +1 -1
  75. package/dist/tools/task-complete.js +14 -26
  76. package/dist/tools/task-complete.js.map +1 -1
  77. package/dist/ui/components/App.d.ts +43 -0
  78. package/dist/ui/components/App.d.ts.map +1 -1
  79. package/dist/ui/components/App.js +560 -94
  80. package/dist/ui/components/App.js.map +1 -1
  81. package/dist/ui/components/CircularSelectInput.d.ts +24 -0
  82. package/dist/ui/components/CircularSelectInput.d.ts.map +1 -0
  83. package/dist/ui/components/CircularSelectInput.js +71 -0
  84. package/dist/ui/components/CircularSelectInput.js.map +1 -0
  85. package/dist/ui/components/ErrorBoundary.d.ts +3 -2
  86. package/dist/ui/components/ErrorBoundary.d.ts.map +1 -1
  87. package/dist/ui/components/ErrorBoundary.js +29 -1
  88. package/dist/ui/components/ErrorBoundary.js.map +1 -1
  89. package/dist/ui/components/InputBox.d.ts +2 -0
  90. package/dist/ui/components/InputBox.d.ts.map +1 -1
  91. package/dist/ui/components/InputBox.js +23 -3
  92. package/dist/ui/components/InputBox.js.map +1 -1
  93. package/dist/ui/components/InteractiveShell.d.ts +6 -0
  94. package/dist/ui/components/InteractiveShell.d.ts.map +1 -1
  95. package/dist/ui/components/InteractiveShell.js +57 -6
  96. package/dist/ui/components/InteractiveShell.js.map +1 -1
  97. package/dist/ui/components/MCPAddScreen.d.ts +13 -0
  98. package/dist/ui/components/MCPAddScreen.d.ts.map +1 -0
  99. package/dist/ui/components/MCPAddScreen.js +54 -0
  100. package/dist/ui/components/MCPAddScreen.js.map +1 -0
  101. package/dist/ui/components/MCPListScreen.d.ts +17 -0
  102. package/dist/ui/components/MCPListScreen.d.ts.map +1 -0
  103. package/dist/ui/components/MCPListScreen.js +50 -0
  104. package/dist/ui/components/MCPListScreen.js.map +1 -0
  105. package/dist/ui/components/MCPServerListScreen.d.ts +16 -0
  106. package/dist/ui/components/MCPServerListScreen.d.ts.map +1 -0
  107. package/dist/ui/components/MCPServerListScreen.js +59 -0
  108. package/dist/ui/components/MCPServerListScreen.js.map +1 -0
  109. package/dist/ui/components/MonitorModeAIPanel.d.ts +23 -0
  110. package/dist/ui/components/MonitorModeAIPanel.d.ts.map +1 -0
  111. package/dist/ui/components/MonitorModeAIPanel.js +69 -0
  112. package/dist/ui/components/MonitorModeAIPanel.js.map +1 -0
  113. package/dist/ui/components/MultiLineInput.d.ts +13 -0
  114. package/dist/ui/components/MultiLineInput.d.ts.map +1 -0
  115. package/dist/ui/components/MultiLineInput.js +223 -0
  116. package/dist/ui/components/MultiLineInput.js.map +1 -0
  117. package/dist/ui/components/StatusBar.d.ts +2 -0
  118. package/dist/ui/components/StatusBar.d.ts.map +1 -1
  119. package/dist/ui/components/StatusBar.js +33 -2
  120. package/dist/ui/components/StatusBar.js.map +1 -1
  121. package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
  122. package/dist/ui/components/ToolExecutionMessage.js +226 -12
  123. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  124. package/dist/ui/components/VersionUpdatePrompt.d.ts.map +1 -1
  125. package/dist/ui/components/VersionUpdatePrompt.js +3 -2
  126. package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
  127. package/package.json +2 -1
@@ -395,6 +395,31 @@ class ApiClient {
395
395
  async deleteSyncData() {
396
396
  await this.getClient().delete('/sync');
397
397
  }
398
+ // ==================== Token Counting Methods ====================
399
+ /**
400
+ * Count tokens for a given model and messages
401
+ * Uses backend's accurate token counting (Vertex AI countTokens API)
402
+ * @param model - Model name (e.g., gemini-2.5-flash)
403
+ * @param messages - Array of conversation messages
404
+ * @returns Total token count including system prompt
405
+ */
406
+ async countTokens(model, messages) {
407
+ try {
408
+ const response = await this.getClient().post('/ai/count-tokens', { model, messages });
409
+ return response.data.data?.tokenCount || 0;
410
+ }
411
+ catch (error) {
412
+ logError('Failed to count tokens via API', error);
413
+ // Fallback to character-based estimation
414
+ const totalCharacters = messages.reduce((sum, msg) => {
415
+ const content = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
416
+ return sum + content.length;
417
+ }, 0);
418
+ // Add system prompt estimate (roughly 14000 characters)
419
+ // Use 1 token ≈ 4 characters for Gemini models
420
+ return Math.ceil((totalCharacters + 14000) / 4);
421
+ }
422
+ }
398
423
  // ==================== Health Check ====================
399
424
  /**
400
425
  * Check backend service health
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,IAAI,EAAW,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAyI9C;;GAEG;AACH,MAAM,SAAS;IACL,MAAM,GAAyB,IAAI,CAAC;IACpC,YAAY,GAAkB,IAAI,CAAC;IACnC,UAAU,CAAS;IACnB,SAAS,CAAS;IAE1B;QACE,yDAAyD;QACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEvD,qCAAqC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,uDAAuD;QACvD,uDAAuD;IACzD,CAAC;IAED;;;OAGG;IACK,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,mEAAmE;YACnE,+EAA+E;YAE/E,wEAAwE;YACxE,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAExE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBACzB,OAAO;gBACP,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,wEAAwE;YACxE,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CACvC,CAAC,MAAM,EAAE,EAAE;gBACT,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC/D,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACR,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,CACF,CAAC;YAEF,oEAAoE;YACpE,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACxC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,KAAK,EAAE,KAAiB,EAAE,EAAE;gBAC1B,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;oBACnC,wBAAwB;oBACxB,IAAI,CAAC,YAAY,EAAE,CAAC;oBAEpB,oCAAoC;oBACpC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;oBACtE,SAAS,CAAC,IAAI,GAAG,qBAAqB,CAAC;oBACvC,MAAM,SAAS,CAAC;gBAClB,CAAC;gBAED,mEAAmE;gBACnE,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAmB,CAAC;oBACpD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;wBACnB,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACtD,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;wBACvC,MAAM,WAAW,CAAC;oBACpB,CAAC;gBACH,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC,CACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6DAA6D;YAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAa,EAAE,SAAkB;QACnD,IAAI,CAAC;YACH,iCAAiC;YACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,oBAAoB;YACpB,MAAM,WAAW,GAAG;gBAClB,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,SAAS,IAAI,IAAI;gBAC5B,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC;YAEF,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9E,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,wBAAwB,EAAE,KAAc,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACpC,CAAC;IAED,mEAAmE;IAEnE;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,WAAmB;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1C,mBAAmB,EACnB,EAAE,WAAW,EAAE,CAChB,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,KAAa;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1C,uBAAuB,EACvB,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;QAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE5D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,YAAoB,EAAE,IAAU;QAC9C,0CAA0C;QAC1C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAE5C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1C,eAAe,CAChB,CAAC;QAEF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAElE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;gBAAS,CAAC;YACT,qDAAqD;YACrD,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAA2B,UAAU,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED,iEAAiE;IAEjE;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAA+B;QACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1C,gBAAgB,EAChB,IAAI,CACL,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAKtB;QACC,MAAM,WAAW,GAAQ;YACvB,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC;YACvB,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;SAC3B,CAAC;QAEF,IAAI,MAAM,EAAE,eAAe,KAAK,SAAS,EAAE,CAAC;YAC1C,WAAW,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QACvD,CAAC;QAED,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CACzC,gBAAgB,EAChB,EAAE,MAAM,EAAE,WAAW,EAAE,CACxB,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CACzC,kBAAkB,cAAc,EAAE,CACnC,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CACtB,cAAsB,EACtB,IAA+B;QAE/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CACzC,kBAAkB,cAAc,EAAE,EAClC,IAAI,CACL,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,cAAsB;QAC7C,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,kBAAkB,cAAc,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,4DAA4D;IAE5D;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,cAAsB,EACtB,OAA6B;QAE7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1C,kBAAkB,cAAc,WAAW,EAC3C,OAAO,CACR,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CACf,cAAsB,EACtB,MAA0C;QAE1C,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC;YACvB,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;SAC3B,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CACzC,kBAAkB,cAAc,WAAW,EAC3C,EAAE,MAAM,EAAE,WAAW,EAAE,CACxB,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,6DAA6D;IAE7D;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAA4B,WAAW,CAAC,CAAC;QACpF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,QAA+B;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CACzC,WAAW,EACX,QAAQ,CACT,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED,yEAAyE;IAEzE;;;;OAIG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAA4B,gBAAgB,CAAC,CAAC;QACzF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED,8EAA8E;IAE9E;;;;OAIG;IACH,KAAK,CAAC,mBAAmB;QAMvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAKvC,sBAAsB,CAAC,CAAC;QAC5B,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED,mEAAmE;IAEnE;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1C,WAAW,EACX,EAAE,IAAI,EAAE,CACT,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uDAAuD;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,gEAAgE;IAEhE;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CACd,cAAsB,EACtB,QAAgB,EAChB,QAAgB,EAChB,QAAgB;QAWhB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CASxC,eAAe,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1F,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,uBAAuB,CAAC,cAAsB;QAClD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2EAA2E;YAC3E,uEAAuE;QACzE,CAAC;IACH,CAAC;IAED,yDAAyD;IAEzD;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,QAAa;QAKhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAIxC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QAOf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAMvC,OAAO,CAAC,CAAC;YACb,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,yDAAyD;IAEzD;;;OAGG;IACH,KAAK,CAAC,WAAW;QAMf,mDAAmD;QACnD,gDAAgD;QAChD,oDAAoD;QACpD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACxE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAmB,SAAS,CAAC,CAAC;QAC9D,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC;IAC7B,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Input Detection Agent Service
3
+ *
4
+ * A lightweight AI agent using gemini-2.0-flash-lite that detects when a shell
5
+ * is waiting for user input. Polls shell output and returns YES/NO.
6
+ *
7
+ * When input is detected, triggers the ShellInputAgent to provide the actual input.
8
+ */
9
+ declare class InputDetectionAgentClass {
10
+ private sessions;
11
+ /**
12
+ * Start polling for a shell session
13
+ * Call updateOutput() to push new shell output to this session
14
+ */
15
+ startPolling(shellId: string, initialOutput: string, command: string, cwd: string): void;
16
+ /**
17
+ * Update the shell output for a session
18
+ * This should be called from App.tsx whenever shellState.output changes
19
+ */
20
+ updateOutput(shellId: string, output: string): void;
21
+ /**
22
+ * Stop polling for a shell session
23
+ */
24
+ stopPolling(shellId: string): void;
25
+ /**
26
+ * Core detection function - calls AI to determine if waiting for input
27
+ */
28
+ private detectInputRequired;
29
+ /**
30
+ * Check if polling is active for a shell
31
+ */
32
+ isPolling(shellId: string): boolean;
33
+ /**
34
+ * Stop all polling sessions
35
+ */
36
+ stopAll(): void;
37
+ }
38
+ export declare const InputDetectionAgent: InputDetectionAgentClass;
39
+ export {};
40
+ //# sourceMappingURL=input-detection-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-detection-agent.d.ts","sourceRoot":"","sources":["../../src/services/input-detection-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmDH,cAAM,wBAAwB;IAC1B,OAAO,CAAC,QAAQ,CAA4C;IAE5D;;;OAGG;IACH,YAAY,CACR,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACZ,IAAI;IAiGP;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAWnD;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgBlC;;OAEG;YACW,mBAAmB;IA4DjC;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,OAAO,IAAI,IAAI;CAKlB;AAGD,eAAO,MAAM,mBAAmB,0BAAiC,CAAC"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Input Detection Agent Service
3
+ *
4
+ * A lightweight AI agent using gemini-2.0-flash-lite that detects when a shell
5
+ * is waiting for user input. Polls shell output and returns YES/NO.
6
+ *
7
+ * When input is detected, triggers the ShellInputAgent to provide the actual input.
8
+ */
9
+ import { aiServiceClient } from './ai-service-client.js';
10
+ import { quickLog } from '../utils/conversation-logger.js';
11
+ import { ShellInputAgent } from './shell-input-agent.js';
12
+ import { extractPromptContext } from './input-requirement-detector.js';
13
+ // ==================== Constants ====================
14
+ const MODEL = 'gemini-2.0-flash-lite'; // Fast, cheap model for classification
15
+ const POLLING_INTERVAL_MS = 500; // How often to poll when enabled
16
+ const MAX_OUTPUT_CHARS = 2000; // How much shell output to include in prompt
17
+ // ==================== Detection System Prompt ====================
18
+ const DETECTION_SYSTEM_PROMPT = `You are a shell input detector. Your ONLY job is to determine if a running command is WAITING for user input.
19
+
20
+ Answer ONLY with "YES" or "NO" - no other text.
21
+
22
+ Examples of WAITING for input (answer YES):
23
+ - "Enter your name: " (ends with colon, expecting text)
24
+ - "Continue? (y/n)" (yes/no question)
25
+ - "Password: " (password prompt)
26
+ - "Press any key to continue..."
27
+ - "[sudo] password for user:"
28
+ - "Select option [1/2/3]:"
29
+
30
+ Examples of NOT waiting (answer NO):
31
+ - "Installing packages..." (still processing)
32
+ - "Building project..." (active work)
33
+ - "Downloading file 50%..." (progress indicator)
34
+ - Empty shell prompt like "PS C:\\>" or "user@host:~$"
35
+ - Just finished printing output (no prompt visible)`;
36
+ // ==================== InputDetectionAgent Class ====================
37
+ class InputDetectionAgentClass {
38
+ sessions = new Map();
39
+ /**
40
+ * Start polling for a shell session
41
+ * Call updateOutput() to push new shell output to this session
42
+ */
43
+ startPolling(shellId, initialOutput, command, cwd) {
44
+ // Stop any existing polling for this shell
45
+ this.stopPolling(shellId);
46
+ const abortController = new AbortController();
47
+ const session = {
48
+ shellId,
49
+ intervalId: null,
50
+ currentOutput: initialOutput,
51
+ lastOutputLength: 0,
52
+ lastDetectionResult: false,
53
+ lastTriggerOutputLength: 0,
54
+ isPolling: true,
55
+ abortController,
56
+ lastOutputTimestamp: Date.now(),
57
+ lastProcessedLength: 0
58
+ };
59
+ quickLog(`[${new Date().toISOString()}] [InputDetectionAgent] Starting polling for ${shellId}\n`);
60
+ // Start the polling loop - checks session.currentOutput which is updated externally
61
+ session.intervalId = setInterval(async () => {
62
+ if (!session.isPolling || abortController.signal.aborted) {
63
+ return;
64
+ }
65
+ const currentOutput = session.currentOutput;
66
+ const now = Date.now();
67
+ const timeSinceLastUpdate = now - session.lastOutputTimestamp;
68
+ // CORE LOGIC: Debounce
69
+ // 1. Check if output is stable (hasn't changed for 2 seconds)
70
+ // 2. Check if we haven't already processed this exact output content (length check)
71
+ if (timeSinceLastUpdate < 2000) {
72
+ // Output is still changing (or just changed), wait for stability
73
+ return;
74
+ }
75
+ if (currentOutput.length === session.lastProcessedLength) {
76
+ // We already checked this exact output state, don't spam the AI
77
+ return;
78
+ }
79
+ // Update processed length immediately to prevent re-entry while async runs
80
+ session.lastProcessedLength = currentOutput.length;
81
+ session.lastOutputLength = currentOutput.length;
82
+ // If we previously triggered AND new output has arrived since then,
83
+ // reset the detection flag so we can trigger again on the next prompt
84
+ if (session.lastDetectionResult && currentOutput.length > session.lastTriggerOutputLength + 10) {
85
+ // New output appeared after our last trigger - the ShellInputAgent likely responded
86
+ // Reset so we can detect the next prompt
87
+ quickLog(`[${new Date().toISOString()}] [InputDetectionAgent] Resetting detection (output grew from ${session.lastTriggerOutputLength} to ${currentOutput.length})\n`);
88
+ session.lastDetectionResult = false;
89
+ }
90
+ try {
91
+ const isWaiting = await this.detectInputRequired(currentOutput, abortController.signal);
92
+ quickLog(`[${new Date().toISOString()}] [InputDetectionAgent] Detection result: ${isWaiting ? 'YES' : 'NO'} (stable for ${timeSinceLastUpdate}ms)\n`);
93
+ // Only trigger if newly detected (prevent duplicate triggers within same prompt)
94
+ if (isWaiting && !session.lastDetectionResult) {
95
+ session.lastDetectionResult = true;
96
+ session.lastTriggerOutputLength = currentOutput.length; // Record when we triggered
97
+ // Extract context for ShellInputAgent
98
+ const promptContext = extractPromptContext(currentOutput);
99
+ const inputType = 'text input'; // AI-detected, generic type
100
+ quickLog(`[${new Date().toISOString()}] [InputDetectionAgent] Triggering ShellInputAgent for ${shellId}\n`);
101
+ // Trigger the input agent
102
+ if (ShellInputAgent.isSessionActive(shellId)) {
103
+ ShellInputAgent.handleInputPrompt(shellId, currentOutput, promptContext, inputType, 'high' // AI detection = high confidence
104
+ );
105
+ }
106
+ }
107
+ else if (!isWaiting) {
108
+ session.lastDetectionResult = false;
109
+ }
110
+ }
111
+ catch (error) {
112
+ if (error.name !== 'AbortError') {
113
+ quickLog(`[${new Date().toISOString()}] [InputDetectionAgent] Detection error: ${error.message}\n`);
114
+ }
115
+ }
116
+ }, POLLING_INTERVAL_MS);
117
+ this.sessions.set(shellId, session);
118
+ }
119
+ /**
120
+ * Update the shell output for a session
121
+ * This should be called from App.tsx whenever shellState.output changes
122
+ */
123
+ updateOutput(shellId, output) {
124
+ const session = this.sessions.get(shellId);
125
+ if (session) {
126
+ // Only update if content actually changed
127
+ if (output.length !== session.currentOutput.length || output !== session.currentOutput) {
128
+ session.currentOutput = output;
129
+ session.lastOutputTimestamp = Date.now(); // Reset stability timer
130
+ }
131
+ }
132
+ }
133
+ /**
134
+ * Stop polling for a shell session
135
+ */
136
+ stopPolling(shellId) {
137
+ const session = this.sessions.get(shellId);
138
+ if (session) {
139
+ quickLog(`[${new Date().toISOString()}] [InputDetectionAgent] Stopping polling for ${shellId}\n`);
140
+ session.isPolling = false;
141
+ session.abortController.abort();
142
+ if (session.intervalId) {
143
+ clearInterval(session.intervalId);
144
+ }
145
+ this.sessions.delete(shellId);
146
+ }
147
+ }
148
+ /**
149
+ * Core detection function - calls AI to determine if waiting for input
150
+ */
151
+ async detectInputRequired(shellOutput, signal) {
152
+ // Truncate output to last N characters
153
+ const truncatedOutput = shellOutput.length > MAX_OUTPUT_CHARS
154
+ ? '...' + shellOutput.slice(-MAX_OUTPUT_CHARS)
155
+ : shellOutput;
156
+ const userPrompt = `SHELL OUTPUT:\n${truncatedOutput}\n\nIs this shell WAITING for user input? Answer YES or NO only.`;
157
+ // Build messages with system prompt embedded in first user message
158
+ const messages = [
159
+ { role: 'user', content: DETECTION_SYSTEM_PROMPT + '\n\n' + userPrompt }
160
+ ];
161
+ // Stream AI response and collect text
162
+ let responseText = '';
163
+ try {
164
+ for await (const chunk of aiServiceClient.streamChat(MODEL, messages, [], // No tools needed - just text response
165
+ {
166
+ cwd: '.',
167
+ platform: process.platform,
168
+ shell: 'cmd.exe',
169
+ os: 'windows',
170
+ homeDir: ''
171
+ }, undefined, undefined, signal)) {
172
+ if (signal.aborted) {
173
+ throw new Error('AbortError');
174
+ }
175
+ if (chunk.type === 'text') {
176
+ responseText += chunk.content;
177
+ }
178
+ // Early exit if we have enough to determine YES/NO
179
+ if (responseText.length >= 3) {
180
+ break;
181
+ }
182
+ }
183
+ }
184
+ catch (error) {
185
+ if (error.message === 'AbortError' || error.name === 'AbortError') {
186
+ const abortError = new Error('AbortError');
187
+ abortError.name = 'AbortError';
188
+ throw abortError;
189
+ }
190
+ throw error;
191
+ }
192
+ // Parse response - look for YES or NO
193
+ const isYes = responseText.toUpperCase().includes('YES');
194
+ return isYes;
195
+ }
196
+ /**
197
+ * Check if polling is active for a shell
198
+ */
199
+ isPolling(shellId) {
200
+ return this.sessions.has(shellId) && this.sessions.get(shellId).isPolling;
201
+ }
202
+ /**
203
+ * Stop all polling sessions
204
+ */
205
+ stopAll() {
206
+ for (const shellId of this.sessions.keys()) {
207
+ this.stopPolling(shellId);
208
+ }
209
+ }
210
+ }
211
+ // Export singleton
212
+ export const InputDetectionAgent = new InputDetectionAgentClass();
213
+ //# sourceMappingURL=input-detection-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-detection-agent.js","sourceRoot":"","sources":["../../src/services/input-detection-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface InputDetectionResult {
2
+ requiresInput: boolean;
3
+ confidence: 'high' | 'medium' | 'low';
4
+ matchedPattern?: string;
5
+ lastLine: string;
6
+ }
7
+ /**
8
+ * Default timeout in ms to consider output as "stalled" (waiting for input)
9
+ */
10
+ export declare const DEFAULT_STALL_TIMEOUT_MS = 2000;
11
+ export declare function detectInputRequirement(output: string, timeSinceLastOutput?: number, stallTimeoutMs?: number): InputDetectionResult;
12
+ /**
13
+ * Get a human-readable description of what type of input is likely required.
14
+ * This is useful for constructing the AI prompt.
15
+ *
16
+ * @param result - The detection result
17
+ * @returns Description of the expected input type
18
+ */
19
+ export declare function getInputTypeDescription(result: InputDetectionResult): string;
20
+ /**
21
+ * Extract the prompt question from the output for context.
22
+ * This helps the AI understand what is being asked.
23
+ *
24
+ * @param output - The complete shell output
25
+ * @returns The prompt/question being asked
26
+ */
27
+ export declare function extractPromptContext(output: string): string;
28
+ //# sourceMappingURL=input-requirement-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-requirement-detector.d.ts","sourceRoot":"","sources":["../../src/services/input-requirement-detector.ts"],"names":[],"mappings":"AAgFA,MAAM,WAAW,oBAAoB;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAmB7C,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,MAAM,EACd,mBAAmB,CAAC,EAAE,MAAM,EAC5B,cAAc,GAAE,MAAiC,GAClD,oBAAoB,CAwEtB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAwB5E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkB3D"}
@@ -0,0 +1,203 @@
1
+ import stripAnsi from 'strip-ansi';
2
+ /**
3
+ * Input Requirement Detector Service
4
+ *
5
+ * Monitors shell output and detects when user input is required.
6
+ * Used by the agent control mode to know when to prompt the AI for input.
7
+ */
8
+ // Common patterns that indicate input is required
9
+ const INPUT_PATTERNS = [
10
+ // Password prompts
11
+ /password\s*[:\>]/i,
12
+ /enter\s+password/i,
13
+ /\[sudo\]\s+password/i,
14
+ /passphrase/i,
15
+ // Y/N confirmations
16
+ /\[y\/n\]/i,
17
+ /\[yes\/no\]/i,
18
+ /\(y\/n\)/i,
19
+ /\(yes\/no\)/i,
20
+ /continue\s*\?/i,
21
+ /proceed\s*\?/i,
22
+ /are\s+you\s+sure\s*\?/i,
23
+ /overwrite\s*\?/i,
24
+ /replace\s*\?/i,
25
+ /delete\s*\?/i,
26
+ /confirm\s*[:\?]/i,
27
+ // Generic input prompts (ending with : or ? followed by whitespace or end)
28
+ /:\s*$/,
29
+ /\?\s*$/,
30
+ // npm init and similar prompts
31
+ /^\s*name:\s*\(/i,
32
+ /^\s*version:\s*\(/i,
33
+ /^\s*description:\s*$/i,
34
+ /^\s*entry\s+point:\s*\(/i,
35
+ /^\s*test\s+command:\s*$/i,
36
+ /^\s*git\s+repository:\s*$/i,
37
+ /^\s*keywords:\s*$/i,
38
+ /^\s*author:\s*$/i,
39
+ /^\s*license:\s*\(/i,
40
+ /is\s+this\s+ok\s*\?/i,
41
+ // Read-Host in PowerShell
42
+ /Read-Host/i,
43
+ // Git prompts
44
+ /username\s+for/i,
45
+ /password\s+for/i,
46
+ // SSH prompts
47
+ /are\s+you\s+sure\s+you\s+want\s+to\s+continue\s+connecting/i,
48
+ /\(yes\/no\/\[fingerprint\]\)/i,
49
+ // Press any key / press enter
50
+ /press\s+(any\s+key|enter|return)/i,
51
+ // Choice prompts
52
+ /choice\s*[:\>]/i,
53
+ /select\s+(option|choice)\s*[:\>]/i,
54
+ /\[\d+\]\s+.*:\s*$/i, // Numbered menu items ending with :
55
+ ];
56
+ // Patterns that indicate the command is still producing output (not waiting)
57
+ const ACTIVE_OUTPUT_PATTERNS = [
58
+ /\.\.\./, // Progress indicator
59
+ /downloading/i,
60
+ /installing/i,
61
+ /compiling/i,
62
+ /building/i,
63
+ /running/i,
64
+ /starting/i,
65
+ /processing/i,
66
+ /%/, // Percentage progress
67
+ /\[\s*=+\s*\]/, // Progress bar
68
+ ];
69
+ /**
70
+ * Default timeout in ms to consider output as "stalled" (waiting for input)
71
+ */
72
+ export const DEFAULT_STALL_TIMEOUT_MS = 2000;
73
+ /**
74
+ * Detects if the shell output indicates that user input is required.
75
+ *
76
+ * @param output - The complete shell output so far
77
+ * @param timeSinceLastOutput - Time in ms since last output was received (optional)
78
+ * @param stallTimeoutMs - Timeout in ms to consider output stalled (default: 2000)
79
+ * @returns Detection result with confidence level
80
+ */
81
+ // Patterns that should be IGNORED even if they look like prompts (e.g. system shell prompts)
82
+ const IGNORED_PATTERNS = [
83
+ /PS\s+[A-Z]:\\.*>\s*$/i, // PowerShell prompt: PS C:\path>
84
+ /^[A-Z]:\\.*>\s*$/i, // CMD prompt: C:\path>
85
+ /^\s*>\s*$/, // Single chevron prompt often seen in transitions
86
+ /user@.*[:\$]\s*$/i, // Bash style: user@host:$
87
+ /bash-[\d\.]+\$\s*$/i, // Bash prompt
88
+ ];
89
+ export function detectInputRequirement(output, timeSinceLastOutput, stallTimeoutMs = DEFAULT_STALL_TIMEOUT_MS) {
90
+ // Get the last few lines of output for analysis
91
+ const lines = output.split('\n').filter(line => line.trim());
92
+ // Safety check for empty lines
93
+ if (lines.length === 0) {
94
+ return { requiresInput: false, confidence: 'low', lastLine: '' };
95
+ }
96
+ // Get raw last line
97
+ const rawLastLine = lines[lines.length - 1];
98
+ // Sanitize: strip ANSI codes and trim whitespace
99
+ const cleanLastLine = stripAnsi(rawLastLine).trim();
100
+ // Check against IGNORED patterns first
101
+ if (IGNORED_PATTERNS.some(pattern => pattern.test(cleanLastLine))) {
102
+ return { requiresInput: false, confidence: 'low', lastLine: cleanLastLine };
103
+ }
104
+ // Get last 3 lines, stripped of ANSI
105
+ const last3LinesRaw = lines.slice(-3).join('\n');
106
+ const cleanLast3Lines = stripAnsi(last3LinesRaw);
107
+ const lastLine = cleanLastLine; // Use cleaned version for matching
108
+ const last3Lines = cleanLast3Lines;
109
+ // Check if output appears to be actively producing content
110
+ const isActiveOutput = ACTIVE_OUTPUT_PATTERNS.some(pattern => pattern.test(last3Lines));
111
+ // Check for explicit input patterns with high confidence in last line
112
+ for (const pattern of INPUT_PATTERNS) {
113
+ if (pattern.test(lastLine)) {
114
+ return {
115
+ requiresInput: true,
116
+ confidence: 'high',
117
+ matchedPattern: pattern.toString(),
118
+ lastLine
119
+ };
120
+ }
121
+ }
122
+ // Check the last 3 lines for patterns (slightly lower confidence)
123
+ for (const pattern of INPUT_PATTERNS) {
124
+ if (pattern.test(last3Lines)) {
125
+ return {
126
+ requiresInput: true,
127
+ confidence: 'medium',
128
+ matchedPattern: pattern.toString(),
129
+ lastLine
130
+ };
131
+ }
132
+ }
133
+ // If output has stalled and no active patterns, might be waiting for input
134
+ if (timeSinceLastOutput !== undefined && timeSinceLastOutput > stallTimeoutMs && !isActiveOutput) {
135
+ // Check if last line looks like a prompt (ends with common prompt characters)
136
+ if (/[:\>\?\$\#]\s*$/.test(lastLine)) {
137
+ return {
138
+ requiresInput: true,
139
+ confidence: 'low',
140
+ matchedPattern: 'stall_with_prompt_ending',
141
+ lastLine
142
+ };
143
+ }
144
+ }
145
+ return {
146
+ requiresInput: false,
147
+ confidence: 'high',
148
+ lastLine
149
+ };
150
+ }
151
+ /**
152
+ * Get a human-readable description of what type of input is likely required.
153
+ * This is useful for constructing the AI prompt.
154
+ *
155
+ * @param result - The detection result
156
+ * @returns Description of the expected input type
157
+ */
158
+ export function getInputTypeDescription(result) {
159
+ if (!result.requiresInput || !result.matchedPattern) {
160
+ return 'unknown input';
161
+ }
162
+ const pattern = result.matchedPattern.toLowerCase();
163
+ if (pattern.includes('password') || pattern.includes('passphrase')) {
164
+ return 'password or passphrase';
165
+ }
166
+ if (pattern.includes('y/n') || pattern.includes('yes/no') || pattern.includes('sure')) {
167
+ return 'yes/no confirmation';
168
+ }
169
+ if (pattern.includes('continue') || pattern.includes('proceed') || pattern.includes('confirm')) {
170
+ return 'confirmation to proceed';
171
+ }
172
+ if (pattern.includes('press')) {
173
+ return 'key press (enter or any key)';
174
+ }
175
+ if (pattern.includes('choice') || pattern.includes('select')) {
176
+ return 'selection from options';
177
+ }
178
+ return 'text input';
179
+ }
180
+ /**
181
+ * Extract the prompt question from the output for context.
182
+ * This helps the AI understand what is being asked.
183
+ *
184
+ * @param output - The complete shell output
185
+ * @returns The prompt/question being asked
186
+ */
187
+ export function extractPromptContext(output) {
188
+ const lines = output.split('\n').filter(line => line.trim());
189
+ // Get last 5 lines for context
190
+ const contextLines = lines.slice(-5);
191
+ // Find the line that looks most like a prompt
192
+ for (let i = contextLines.length - 1; i >= 0; i--) {
193
+ const line = stripAnsi(contextLines[i]).trim();
194
+ // If line ends with a prompt character and isn't empty
195
+ if (line && /[:\>\?\$\#]\s*$/.test(line)) {
196
+ return line;
197
+ }
198
+ }
199
+ // Just return the last non-empty line
200
+ const lastLine = contextLines[contextLines.length - 1] || '';
201
+ return stripAnsi(lastLine).trim();
202
+ }
203
+ //# sourceMappingURL=input-requirement-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-requirement-detector.js","sourceRoot":"","sources":["../../src/services/input-requirement-detector.ts"],"names":[],"mappings":"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"}