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.
- package/dist/cli-adapter.d.ts +70 -0
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +349 -156
- package/dist/cli-adapter.js.map +1 -1
- package/dist/config/mcp-config-manager.d.ts +21 -0
- package/dist/config/mcp-config-manager.d.ts.map +1 -1
- package/dist/config/mcp-config-manager.js +184 -1
- package/dist/config/mcp-config-manager.js.map +1 -1
- package/dist/config/models.d.ts +1 -0
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +7 -2
- package/dist/config/models.js.map +1 -1
- package/dist/config/slash-commands.d.ts.map +1 -1
- package/dist/config/slash-commands.js +4 -3
- package/dist/config/slash-commands.js.map +1 -1
- package/dist/index.js +60 -11
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp-command-handler.d.ts +34 -3
- package/dist/mcp/mcp-command-handler.d.ts.map +1 -1
- package/dist/mcp/mcp-command-handler.js +171 -83
- package/dist/mcp/mcp-command-handler.js.map +1 -1
- package/dist/mcp/mcp-server-manager.d.ts.map +1 -1
- package/dist/mcp/mcp-server-manager.js +9 -23
- package/dist/mcp/mcp-server-manager.js.map +1 -1
- package/dist/mcp/mcp-tool-wrapper.d.ts.map +1 -1
- package/dist/mcp/mcp-tool-wrapper.js +42 -5
- package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
- package/dist/services/api-client.d.ts +9 -0
- package/dist/services/api-client.d.ts.map +1 -1
- package/dist/services/api-client.js +25 -0
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/input-detection-agent.d.ts +40 -0
- package/dist/services/input-detection-agent.d.ts.map +1 -0
- package/dist/services/input-detection-agent.js +213 -0
- package/dist/services/input-detection-agent.js.map +1 -0
- package/dist/services/input-requirement-detector.d.ts +28 -0
- package/dist/services/input-requirement-detector.d.ts.map +1 -0
- package/dist/services/input-requirement-detector.js +203 -0
- package/dist/services/input-requirement-detector.js.map +1 -0
- package/dist/services/monitored-shell-manager.d.ts +120 -0
- package/dist/services/monitored-shell-manager.d.ts.map +1 -0
- package/dist/services/monitored-shell-manager.js +239 -0
- package/dist/services/monitored-shell-manager.js.map +1 -0
- package/dist/services/shell-input-agent.d.ts +89 -0
- package/dist/services/shell-input-agent.d.ts.map +1 -0
- package/dist/services/shell-input-agent.js +361 -0
- package/dist/services/shell-input-agent.js.map +1 -0
- package/dist/services/sub-agent-manager.d.ts +139 -0
- package/dist/services/sub-agent-manager.d.ts.map +1 -0
- package/dist/services/sub-agent-manager.js +517 -0
- package/dist/services/sub-agent-manager.js.map +1 -0
- package/dist/tools/background-command.d.ts.map +1 -1
- package/dist/tools/background-command.js +33 -13
- package/dist/tools/background-command.js.map +1 -1
- package/dist/tools/command.d.ts.map +1 -1
- package/dist/tools/command.js +64 -1
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/file-ops.d.ts.map +1 -1
- package/dist/tools/file-ops.js +33 -19
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/get-diff.js +1 -1
- package/dist/tools/get-diff.js.map +1 -1
- package/dist/tools/grep-search.d.ts.map +1 -1
- package/dist/tools/grep-search.js +41 -15
- package/dist/tools/grep-search.js.map +1 -1
- package/dist/tools/plan-mode.js +3 -3
- package/dist/tools/plan-mode.js.map +1 -1
- package/dist/tools/registry.js +1 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/sub-agent.d.ts +9 -0
- package/dist/tools/sub-agent.d.ts.map +1 -0
- package/dist/tools/sub-agent.js +232 -0
- package/dist/tools/sub-agent.js.map +1 -0
- package/dist/tools/task-complete.d.ts.map +1 -1
- package/dist/tools/task-complete.js +14 -26
- package/dist/tools/task-complete.js.map +1 -1
- package/dist/ui/components/App.d.ts +43 -0
- package/dist/ui/components/App.d.ts.map +1 -1
- package/dist/ui/components/App.js +560 -94
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/CircularSelectInput.d.ts +24 -0
- package/dist/ui/components/CircularSelectInput.d.ts.map +1 -0
- package/dist/ui/components/CircularSelectInput.js +71 -0
- package/dist/ui/components/CircularSelectInput.js.map +1 -0
- package/dist/ui/components/ErrorBoundary.d.ts +3 -2
- package/dist/ui/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/ui/components/ErrorBoundary.js +29 -1
- package/dist/ui/components/ErrorBoundary.js.map +1 -1
- package/dist/ui/components/InputBox.d.ts +2 -0
- package/dist/ui/components/InputBox.d.ts.map +1 -1
- package/dist/ui/components/InputBox.js +23 -3
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/InteractiveShell.d.ts +6 -0
- package/dist/ui/components/InteractiveShell.d.ts.map +1 -1
- package/dist/ui/components/InteractiveShell.js +57 -6
- package/dist/ui/components/InteractiveShell.js.map +1 -1
- package/dist/ui/components/MCPAddScreen.d.ts +13 -0
- package/dist/ui/components/MCPAddScreen.d.ts.map +1 -0
- package/dist/ui/components/MCPAddScreen.js +54 -0
- package/dist/ui/components/MCPAddScreen.js.map +1 -0
- package/dist/ui/components/MCPListScreen.d.ts +17 -0
- package/dist/ui/components/MCPListScreen.d.ts.map +1 -0
- package/dist/ui/components/MCPListScreen.js +50 -0
- package/dist/ui/components/MCPListScreen.js.map +1 -0
- package/dist/ui/components/MCPServerListScreen.d.ts +16 -0
- package/dist/ui/components/MCPServerListScreen.d.ts.map +1 -0
- package/dist/ui/components/MCPServerListScreen.js +59 -0
- package/dist/ui/components/MCPServerListScreen.js.map +1 -0
- package/dist/ui/components/MonitorModeAIPanel.d.ts +23 -0
- package/dist/ui/components/MonitorModeAIPanel.d.ts.map +1 -0
- package/dist/ui/components/MonitorModeAIPanel.js +69 -0
- package/dist/ui/components/MonitorModeAIPanel.js.map +1 -0
- package/dist/ui/components/MultiLineInput.d.ts +13 -0
- package/dist/ui/components/MultiLineInput.d.ts.map +1 -0
- package/dist/ui/components/MultiLineInput.js +223 -0
- package/dist/ui/components/MultiLineInput.js.map +1 -0
- package/dist/ui/components/StatusBar.d.ts +2 -0
- package/dist/ui/components/StatusBar.d.ts.map +1 -1
- package/dist/ui/components/StatusBar.js +33 -2
- package/dist/ui/components/StatusBar.js.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.js +226 -12
- package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
- package/dist/ui/components/VersionUpdatePrompt.d.ts.map +1 -1
- package/dist/ui/components/VersionUpdatePrompt.js +3 -2
- package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
- 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":"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"}
|
|
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;AA0I9C;;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,mEAAmE;IAEnE;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,QAAe;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1C,kBAAkB,EAClB,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,gCAAgC,EAAE,KAAc,CAAC,CAAC;YAE3D,yCAAyC;YACzC,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACnD,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5F,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,CAAC,EAAE,CAAC,CAAC,CAAC;YAEN,wDAAwD;YACxD,+CAA+C;YAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,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"}
|
|
@@ -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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"}
|