@kolisachint/hoocode-agent 0.4.155 → 0.4.157
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/CHANGELOG.md +73 -0
- package/dist/core/context-files.d.ts +14 -4
- package/dist/core/context-files.d.ts.map +1 -1
- package/dist/core/context-files.js +7 -4
- package/dist/core/context-files.js.map +1 -1
- package/dist/core/format-tokens.d.ts +9 -0
- package/dist/core/format-tokens.d.ts.map +1 -0
- package/dist/core/format-tokens.js +19 -0
- package/dist/core/format-tokens.js.map +1 -0
- package/dist/core/mcp-status.d.ts +32 -0
- package/dist/core/mcp-status.d.ts.map +1 -0
- package/dist/core/mcp-status.js +27 -0
- package/dist/core/mcp-status.js.map +1 -0
- package/dist/core/mode-prompts.d.ts.map +1 -1
- package/dist/core/mode-prompts.js +3 -1
- package/dist/core/mode-prompts.js.map +1 -1
- package/dist/core/resource-loader.d.ts +6 -16
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/wordmark.d.ts +2 -2
- package/dist/core/wordmark.d.ts.map +1 -1
- package/dist/core/wordmark.js +4 -4
- package/dist/core/wordmark.js.map +1 -1
- package/dist/extensions/core/hoo-core.d.ts +3 -0
- package/dist/extensions/core/hoo-core.d.ts.map +1 -1
- package/dist/extensions/core/hoo-core.js +3 -0
- package/dist/extensions/core/hoo-core.js.map +1 -1
- package/dist/extensions/core/loop.d.ts +22 -0
- package/dist/extensions/core/loop.d.ts.map +1 -1
- package/dist/extensions/core/loop.js +36 -6
- package/dist/extensions/core/loop.js.map +1 -1
- package/dist/extensions/core/mcp-loader.d.ts.map +1 -1
- package/dist/extensions/core/mcp-loader.js +27 -3
- package/dist/extensions/core/mcp-loader.js.map +1 -1
- package/dist/extensions/core/modes.d.ts +52 -1
- package/dist/extensions/core/modes.d.ts.map +1 -1
- package/dist/extensions/core/modes.js +221 -18
- package/dist/extensions/core/modes.js.map +1 -1
- package/dist/init-templates.generated.d.ts.map +1 -1
- package/dist/init-templates.generated.js +1 -1
- package/dist/init-templates.generated.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -11
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/task-panel.d.ts.map +1 -1
- package/dist/modes/interactive/components/task-panel.js +1 -9
- package/dist/modes/interactive/components/task-panel.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +14 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +50 -1
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/model-controller.d.ts +6 -0
- package/dist/modes/interactive/model-controller.d.ts.map +1 -1
- package/dist/modes/interactive/model-controller.js +33 -14
- package/dist/modes/interactive/model-controller.js.map +1 -1
- package/dist/modes/interactive/resource-display.d.ts +22 -0
- package/dist/modes/interactive/resource-display.d.ts.map +1 -1
- package/dist/modes/interactive/resource-display.js +73 -16
- package/dist/modes/interactive/resource-display.js.map +1 -1
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +4 -4
- package/templates/modes/plan/system.md +4 -1
|
@@ -10,6 +10,7 @@ import { createCompactionSummaryMessage } from "@kolisachint/hoocode-agent-core"
|
|
|
10
10
|
import { CombinedAutocompleteProvider, Container, fuzzyFilter, getCapabilities, hyperlink, Loader, Markdown, matchesKey, ProcessTerminal, Spacer, setKeybindings, Text, TUI, } from "@kolisachint/hoocode-tui";
|
|
11
11
|
import { spawnSync } from "child_process";
|
|
12
12
|
import { APP_NAME, APP_TITLE, VERSION } from "../../config.js";
|
|
13
|
+
import { loadAgentRegistry } from "../../core/agent-registry.js";
|
|
13
14
|
import { parseSkillBlock } from "../../core/agent-session.js";
|
|
14
15
|
import { FooterDataProvider } from "../../core/footer-data-provider.js";
|
|
15
16
|
import { KeybindingsManager } from "../../core/keybindings.js";
|
|
@@ -25,6 +26,7 @@ import { killTrackedDetachedChildren } from "../../utils/shell.js";
|
|
|
25
26
|
import { ensureTool } from "../../utils/tools-manager.js";
|
|
26
27
|
import { checkForNewHooCodeVersion } from "../../utils/version-check.js";
|
|
27
28
|
import { BashExecutionController } from "./bash-execution-controller.js";
|
|
29
|
+
import { SEGMENT_SEP } from "./brand.js";
|
|
28
30
|
import { CommandExecutor } from "./command-executor.js";
|
|
29
31
|
import { BELL, CompletionChime } from "./completion-chime.js";
|
|
30
32
|
import { AssistantMessageComponent } from "./components/assistant-message.js";
|
|
@@ -50,7 +52,7 @@ import { ExtensionDialogs } from "./extension-dialogs.js";
|
|
|
50
52
|
import { LoginController } from "./login-controller.js";
|
|
51
53
|
import { MessageQueueController } from "./message-queue-controller.js";
|
|
52
54
|
import { ModelController } from "./model-controller.js";
|
|
53
|
-
import { ExpandableText, formatDisplayPath, isExpandable, showLoadedResources as renderLoadedResources, } from "./resource-display.js";
|
|
55
|
+
import { ExpandableText, formatDisplayPath, isExpandable, showLoadedResources as renderLoadedResources, willShowResourceListing, } from "./resource-display.js";
|
|
54
56
|
import { checkForPackageUpdates, checkTmuxKeyboardSetup, getChangelogForDisplay } from "./startup-checks.js";
|
|
55
57
|
import { TeamFocusController } from "./team-focus.js";
|
|
56
58
|
import { getAvailableThemes, getAvailableThemesWithPaths, getEditorTheme, getMarkdownTheme, getThemeByName, initTheme, onThemeChange, setRegisteredThemes, setTheme, setThemeInstance, stopThemeWatcher, Theme, theme, } from "./theme/theme.js";
|
|
@@ -151,6 +153,8 @@ export class InteractiveMode {
|
|
|
151
153
|
lastEscapeTime = 0;
|
|
152
154
|
changelogMarkdown = undefined;
|
|
153
155
|
startupNoticesShown = false;
|
|
156
|
+
/** Billing caveat folded into the startup state line, once resolved. */
|
|
157
|
+
startupAuthNote = undefined;
|
|
154
158
|
// Status line tracking (for mutating immediately-sequential status updates)
|
|
155
159
|
lastStatusSpacer = undefined;
|
|
156
160
|
lastStatusText = undefined;
|
|
@@ -819,12 +823,48 @@ export class InteractiveMode {
|
|
|
819
823
|
getExtensionRunner: () => this.session.extensionRunner,
|
|
820
824
|
getActiveMode: () => this.footerDataProvider.getActiveMode(),
|
|
821
825
|
getSubagentEnabled: () => this.footerDataProvider.getSubagentEnabled(),
|
|
826
|
+
getAgentCount: () => this.getDispatchableAgentCount(),
|
|
827
|
+
getStateLine: () => this.buildSessionStateLine(),
|
|
822
828
|
quietStartup: () => this.settingsManager.getQuietStartup(),
|
|
823
829
|
verbose: this.options.verbose ?? false,
|
|
824
830
|
isExpanded: () => this.getStartupExpansionState(),
|
|
825
831
|
getBuiltInCommandConflictDiagnostics: (runner) => this.getBuiltInCommandConflictDiagnostics(runner),
|
|
826
832
|
}, options);
|
|
827
833
|
}
|
|
834
|
+
/**
|
|
835
|
+
* Agents the model can actually dispatch. Zero when the Task tool is off, so
|
|
836
|
+
* the summary never advertises a capability the session cannot use.
|
|
837
|
+
*/
|
|
838
|
+
getDispatchableAgentCount() {
|
|
839
|
+
if (!this.footerDataProvider.getSubagentEnabled())
|
|
840
|
+
return 0;
|
|
841
|
+
try {
|
|
842
|
+
return loadAgentRegistry({ cwd: this.sessionManager.getCwd() }).list().length;
|
|
843
|
+
}
|
|
844
|
+
catch {
|
|
845
|
+
return 0;
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
/**
|
|
849
|
+
* One line of session state for the startup summary: the model, its thinking
|
|
850
|
+
* level, and any billing caveat. The footer carries the same facts for the
|
|
851
|
+
* rest of the session, so this replaces the separate status lines that used
|
|
852
|
+
* to be emitted for each of them.
|
|
853
|
+
*/
|
|
854
|
+
buildSessionStateLine() {
|
|
855
|
+
const model = this.session.model;
|
|
856
|
+
if (!model)
|
|
857
|
+
return undefined;
|
|
858
|
+
const segments = [theme.fg("muted", model.id)];
|
|
859
|
+
const thinkingLevel = this.session.thinkingLevel;
|
|
860
|
+
if (model.reasoning && thinkingLevel && thinkingLevel !== "off") {
|
|
861
|
+
segments.push(theme.fg("dim", `thinking ${thinkingLevel}`));
|
|
862
|
+
}
|
|
863
|
+
if (this.startupAuthNote) {
|
|
864
|
+
segments.push(theme.fg("warning", this.startupAuthNote));
|
|
865
|
+
}
|
|
866
|
+
return segments.join(theme.fg("muted", ` ${SEGMENT_SEP} `));
|
|
867
|
+
}
|
|
828
868
|
/**
|
|
829
869
|
* Initialize the extension system with TUI-based UI context.
|
|
830
870
|
*/
|
|
@@ -906,6 +946,15 @@ export class InteractiveMode {
|
|
|
906
946
|
this.setupAutocompleteProvider();
|
|
907
947
|
const extensionRunner = this.session.extensionRunner;
|
|
908
948
|
this.setupExtensionShortcuts(extensionRunner);
|
|
949
|
+
// Resolved before the summary renders so the billing caveat lands on the
|
|
950
|
+
// state line instead of arriving as a late, separate warning. Skipped on a
|
|
951
|
+
// quiet startup, where the full warning still fires from run().
|
|
952
|
+
if (willShowResourceListing({
|
|
953
|
+
verbose: this.options.verbose ?? false,
|
|
954
|
+
quietStartup: () => this.settingsManager.getQuietStartup(),
|
|
955
|
+
})) {
|
|
956
|
+
this.startupAuthNote = await this.modelController.getAnthropicSubscriptionNote();
|
|
957
|
+
}
|
|
909
958
|
this.showLoadedResources({ force: false, showDiagnosticsWhenQuiet: true });
|
|
910
959
|
this.showStartupNoticesIfNeeded();
|
|
911
960
|
}
|