@kolisachint/hoocode-agent 0.4.7 → 0.4.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 (52) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/core/footer-data-provider.d.ts +6 -1
  3. package/dist/core/footer-data-provider.d.ts.map +1 -1
  4. package/dist/core/footer-data-provider.js +12 -0
  5. package/dist/core/footer-data-provider.js.map +1 -1
  6. package/dist/core/lifeguard.d.ts +45 -0
  7. package/dist/core/lifeguard.d.ts.map +1 -0
  8. package/dist/core/lifeguard.js +214 -0
  9. package/dist/core/lifeguard.js.map +1 -0
  10. package/dist/core/output-verifier.d.ts +19 -0
  11. package/dist/core/output-verifier.d.ts.map +1 -0
  12. package/dist/core/output-verifier.js +110 -0
  13. package/dist/core/output-verifier.js.map +1 -0
  14. package/dist/core/resource-loader.d.ts +2 -0
  15. package/dist/core/resource-loader.d.ts.map +1 -1
  16. package/dist/core/resource-loader.js +3 -0
  17. package/dist/core/resource-loader.js.map +1 -1
  18. package/dist/core/subagent-pool.d.ts +23 -0
  19. package/dist/core/subagent-pool.d.ts.map +1 -1
  20. package/dist/core/subagent-pool.js +182 -6
  21. package/dist/core/subagent-pool.js.map +1 -1
  22. package/dist/core/subagent.d.ts.map +1 -1
  23. package/dist/core/subagent.js +3 -0
  24. package/dist/core/subagent.js.map +1 -1
  25. package/dist/core/token-budget.d.ts +59 -0
  26. package/dist/core/token-budget.d.ts.map +1 -0
  27. package/dist/core/token-budget.js +161 -0
  28. package/dist/core/token-budget.js.map +1 -0
  29. package/dist/core/tools/subagent.d.ts +3 -0
  30. package/dist/core/tools/subagent.d.ts.map +1 -1
  31. package/dist/core/tools/subagent.js +23 -0
  32. package/dist/core/tools/subagent.js.map +1 -1
  33. package/dist/core/wordmark.d.ts.map +1 -1
  34. package/dist/core/wordmark.js +9 -9
  35. package/dist/core/wordmark.js.map +1 -1
  36. package/dist/extensions/core/hoo-core.d.ts +5 -2
  37. package/dist/extensions/core/hoo-core.d.ts.map +1 -1
  38. package/dist/extensions/core/hoo-core.js +3 -1
  39. package/dist/extensions/core/hoo-core.js.map +1 -1
  40. package/dist/main.d.ts.map +1 -1
  41. package/dist/main.js +5 -1
  42. package/dist/main.js.map +1 -1
  43. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  44. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  45. package/dist/modes/interactive/interactive-mode.js +28 -1
  46. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  47. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  48. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  49. package/examples/extensions/sandbox/package.json +1 -1
  50. package/examples/extensions/with-deps/package.json +1 -1
  51. package/examples/sdk/12-full-control.ts +1 -0
  52. package/package.json +4 -4
@@ -233,11 +233,13 @@ export class InteractiveMode {
233
233
  autocompleteMaxVisible,
234
234
  });
235
235
  this.editor = this.defaultEditor;
236
+ this.editor.promptPrefix = ">";
236
237
  this.editorContainer = new Container();
237
238
  this.editorContainer.addChild(this.editor);
238
239
  this.footerDataProvider = new FooterDataProvider(this.sessionManager.getCwd());
239
240
  this.footer = new FooterComponent(this.session, this.footerDataProvider);
240
241
  this.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);
242
+ this.footerDataProvider.setSubagentEnabled(this.session.getActiveToolNames().includes("subagent"));
241
243
  this.taskPanel = new TaskPanelComponent();
242
244
  // Load hide thinking block setting
243
245
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
@@ -1004,9 +1006,16 @@ export class InteractiveMode {
1004
1006
  const loadedThemes = themesResult.themes;
1005
1007
  const customThemes = loadedThemes.filter((t) => t.sourcePath);
1006
1008
  const totalItems = contextFiles.length + skills.length + templates.length + extensions.length + customThemes.length;
1009
+ // Meta items: active mode and subagent system prompt (always shown)
1010
+ const metaItems = [];
1011
+ const rawMode = this.footerDataProvider.getActiveMode().replace(" + subagent", "");
1012
+ metaItems.push(`mode/${rawMode}`);
1013
+ if (this.footerDataProvider.getSubagentEnabled()) {
1014
+ metaItems.push("subagent_system_prompt");
1015
+ }
1007
1016
  if (totalItems > 0 && totalItems <= 5) {
1008
1017
  this.chatContainer.addChild(new Spacer(1));
1009
- const allCompactItems = [];
1018
+ const allCompactItems = [...metaItems];
1010
1019
  if (contextFiles.length > 0) {
1011
1020
  allCompactItems.push(...contextFiles.map((contextFile) => this.formatContextPath(contextFile.path)));
1012
1021
  }
@@ -1024,7 +1033,13 @@ export class InteractiveMode {
1024
1033
  }
1025
1034
  addLoadedSection("Resources", formatCompactList(allCompactItems), formatCompactList(allCompactItems));
1026
1035
  }
1036
+ else if (totalItems === 0) {
1037
+ this.chatContainer.addChild(new Spacer(1));
1038
+ addLoadedSection("Resources", formatCompactList(metaItems), formatCompactList(metaItems));
1039
+ }
1027
1040
  else {
1041
+ this.chatContainer.addChild(new Spacer(1));
1042
+ addLoadedSection("Resources", formatCompactList(metaItems), formatCompactList(metaItems));
1028
1043
  if (contextFiles.length > 0) {
1029
1044
  this.chatContainer.addChild(new Spacer(1));
1030
1045
  const contextList = contextFiles
@@ -1955,6 +1970,7 @@ export class InteractiveMode {
1955
1970
  this.isBashMode = text.trimStart().startsWith("!");
1956
1971
  if (wasBashMode !== this.isBashMode) {
1957
1972
  this.updateEditorBorderColor();
1973
+ this.updateEditorPromptPrefix();
1958
1974
  }
1959
1975
  };
1960
1976
  // Handle clipboard image paste (triggered on Ctrl+V)
@@ -2814,6 +2830,17 @@ export class InteractiveMode {
2814
2830
  }
2815
2831
  this.ui.requestRender();
2816
2832
  }
2833
+ updateEditorPromptPrefix() {
2834
+ if (this.isBashMode) {
2835
+ this.editor.promptPrefix = "!";
2836
+ this.editor.promptColor = theme.getBashModeBorderColor();
2837
+ }
2838
+ else {
2839
+ this.editor.promptPrefix = ">";
2840
+ this.editor.promptColor = (s) => s;
2841
+ }
2842
+ this.ui.requestRender();
2843
+ }
2817
2844
  cycleThinkingLevel() {
2818
2845
  const newLevel = this.session.cycleThinkingLevel();
2819
2846
  if (newLevel === undefined) {