@kolisachint/hoocode-agent 0.5.23 → 0.5.25

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 (71) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/core/brand.d.ts +1 -0
  3. package/dist/core/brand.d.ts.map +1 -1
  4. package/dist/core/brand.js +1 -0
  5. package/dist/core/brand.js.map +1 -1
  6. package/dist/core/canvas/discovery.d.ts +11 -3
  7. package/dist/core/canvas/discovery.d.ts.map +1 -1
  8. package/dist/core/canvas/discovery.js +18 -3
  9. package/dist/core/canvas/discovery.js.map +1 -1
  10. package/dist/core/canvas/plugin-canvases.d.ts +30 -0
  11. package/dist/core/canvas/plugin-canvases.d.ts.map +1 -0
  12. package/dist/core/canvas/plugin-canvases.js +51 -0
  13. package/dist/core/canvas/plugin-canvases.js.map +1 -0
  14. package/dist/core/canvas/session.d.ts +7 -0
  15. package/dist/core/canvas/session.d.ts.map +1 -1
  16. package/dist/core/canvas/session.js +8 -1
  17. package/dist/core/canvas/session.js.map +1 -1
  18. package/dist/core/canvas/trust.d.ts +4 -5
  19. package/dist/core/canvas/trust.d.ts.map +1 -1
  20. package/dist/core/canvas/trust.js +23 -8
  21. package/dist/core/canvas/trust.js.map +1 -1
  22. package/dist/core/extensions/loader.d.ts.map +1 -1
  23. package/dist/core/extensions/loader.js +25 -11
  24. package/dist/core/extensions/loader.js.map +1 -1
  25. package/dist/core/extensions/plugins/formats/copilot.d.ts +10 -0
  26. package/dist/core/extensions/plugins/formats/copilot.d.ts.map +1 -1
  27. package/dist/core/extensions/plugins/formats/copilot.js +36 -4
  28. package/dist/core/extensions/plugins/formats/copilot.js.map +1 -1
  29. package/dist/core/extensions/plugins/formats/jsonManifest.d.ts.map +1 -1
  30. package/dist/core/extensions/plugins/formats/jsonManifest.js +15 -2
  31. package/dist/core/extensions/plugins/formats/jsonManifest.js.map +1 -1
  32. package/dist/core/extensions/plugins/formats/shared.d.ts +30 -2
  33. package/dist/core/extensions/plugins/formats/shared.d.ts.map +1 -1
  34. package/dist/core/extensions/plugins/formats/shared.js +72 -0
  35. package/dist/core/extensions/plugins/formats/shared.js.map +1 -1
  36. package/dist/core/extensions/plugins/install.d.ts +31 -0
  37. package/dist/core/extensions/plugins/install.d.ts.map +1 -1
  38. package/dist/core/extensions/plugins/install.js +102 -12
  39. package/dist/core/extensions/plugins/install.js.map +1 -1
  40. package/dist/core/extensions/plugins/listing.d.ts.map +1 -1
  41. package/dist/core/extensions/plugins/listing.js +1 -0
  42. package/dist/core/extensions/plugins/listing.js.map +1 -1
  43. package/dist/core/extensions/plugins/manifest.d.ts +18 -0
  44. package/dist/core/extensions/plugins/manifest.d.ts.map +1 -1
  45. package/dist/core/extensions/plugins/manifest.js.map +1 -1
  46. package/dist/core/extensions/plugins/packaging.d.ts.map +1 -1
  47. package/dist/core/extensions/plugins/packaging.js +1 -0
  48. package/dist/core/extensions/plugins/packaging.js.map +1 -1
  49. package/dist/extensions/core/canvas.d.ts.map +1 -1
  50. package/dist/extensions/core/canvas.js +1 -1
  51. package/dist/extensions/core/canvas.js.map +1 -1
  52. package/dist/extensions/core/marketplace.d.ts.map +1 -1
  53. package/dist/extensions/core/marketplace.js +28 -1
  54. package/dist/extensions/core/marketplace.js.map +1 -1
  55. package/dist/extensions/core/scaffold.d.ts +1 -1
  56. package/dist/extensions/core/scaffold.d.ts.map +1 -1
  57. package/dist/extensions/core/scaffold.js +185 -1
  58. package/dist/extensions/core/scaffold.js.map +1 -1
  59. package/dist/modes/interactive/interactive-mode.d.ts +11 -0
  60. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  61. package/dist/modes/interactive/interactive-mode.js +40 -0
  62. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  63. package/dist/modes/interactive/resource-display.d.ts +11 -0
  64. package/dist/modes/interactive/resource-display.d.ts.map +1 -1
  65. package/dist/modes/interactive/resource-display.js +20 -1
  66. package/dist/modes/interactive/resource-display.js.map +1 -1
  67. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  68. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  69. package/examples/extensions/sandbox/package.json +1 -1
  70. package/examples/extensions/with-deps/package.json +1 -1
  71. package/package.json +4 -4
@@ -14,6 +14,9 @@ import { setTerminalOwnedByTui } from "../../core/agent-log.js";
14
14
  import { loadAgentRegistry } from "../../core/agent-registry.js";
15
15
  import { parseSkillBlock } from "../../core/agent-session.js";
16
16
  import { sumAssistantUsage } from "../../core/agent-session-stats.js";
17
+ import { canvasSearchRoots, discoverCanvasExtensions } from "../../core/canvas/discovery.js";
18
+ import { pluginCanvasExtensions } from "../../core/canvas/plugin-canvases.js";
19
+ import { gateCanvasExtensions } from "../../core/canvas/trust.js";
17
20
  import { FooterDataProvider } from "../../core/footer-data-provider.js";
18
21
  import { formatDurationSecs } from "../../core/format-duration.js";
19
22
  import { formatTokens } from "../../core/format-tokens.js";
@@ -853,6 +856,27 @@ export class InteractiveMode {
853
856
  getActiveMode: () => this.footerDataProvider.getActiveMode(),
854
857
  getSubagentEnabled: () => this.footerDataProvider.getSubagentEnabled(),
855
858
  getAgentCount: () => this.getDispatchableAgentCount(),
859
+ // Cheap and fork-free: directory entries plus each installed plugin's
860
+ // resolved canvas dirs. Computed inside the listing branch, so a quiet
861
+ // startup pays nothing for it.
862
+ getCanvases: () => {
863
+ try {
864
+ const cwd = this.sessionManager.getCwd();
865
+ const found = discoverCanvasExtensions(canvasSearchRoots(cwd, os.homedir()), pluginCanvasExtensions(cwd));
866
+ const gated = gateCanvasExtensions(found, cwd);
867
+ return [
868
+ ...gated.runnable.map((e) => ({ id: e.id, scope: e.scope, withheld: false })),
869
+ ...gated.withheld.map((w) => ({
870
+ id: w.extension.id,
871
+ scope: w.extension.scope,
872
+ withheld: true,
873
+ })),
874
+ ];
875
+ }
876
+ catch {
877
+ return [];
878
+ }
879
+ },
856
880
  getAgents: () => {
857
881
  if (!this.footerDataProvider.getSubagentEnabled())
858
882
  return [];
@@ -965,6 +989,10 @@ export class InteractiveMode {
965
989
  this.setupAutocompleteProvider();
966
990
  const extensionRunner = this.session.extensionRunner;
967
991
  this.setupExtensionShortcuts(extensionRunner);
992
+ // The startup path draws the listing here, because it renders messages
993
+ // without clearing. A *rebind* (/new, /resume, /fork) clears the transcript
994
+ // straight afterwards, so `renderCurrentSessionState` draws it again — this
995
+ // call is the one startup keeps.
968
996
  this.showLoadedResources({ force: false, showDiagnosticsWhenQuiet: true });
969
997
  this.showStartupNoticesIfNeeded();
970
998
  }
@@ -1004,6 +1032,17 @@ export class InteractiveMode {
1004
1032
  this.stop();
1005
1033
  process.exit(1);
1006
1034
  }
1035
+ /**
1036
+ * Reset the transcript to whatever the (possibly just-swapped) session holds.
1037
+ *
1038
+ * Every caller — /new, /resume, /fork — reaches here *after* the runtime has
1039
+ * rebound extensions, and rebinding is what renders the loaded-resource
1040
+ * listing. Clearing the chat therefore wiped the listing a moment after it was
1041
+ * drawn, which is why /reload showed skills, agents and plugins and starting a
1042
+ * new session showed nothing. Re-rendering it here is what makes the surface
1043
+ * common: one call site, so a session change of any kind reports the same
1044
+ * capabilities /reload does.
1045
+ */
1007
1046
  renderCurrentSessionState() {
1008
1047
  this.chatContainer.clear();
1009
1048
  this.pendingMessagesContainer.clear();
@@ -1011,6 +1050,7 @@ export class InteractiveMode {
1011
1050
  this.streamingComponent = undefined;
1012
1051
  this.streamingMessage = undefined;
1013
1052
  this.pendingTools.clear();
1053
+ this.showLoadedResources({ force: false, showDiagnosticsWhenQuiet: true });
1014
1054
  this.renderInitialMessages();
1015
1055
  }
1016
1056
  /**