open-multi-agent-kit 0.80.8 → 0.90.3
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 +44 -0
- package/README.md +21 -31
- package/dist/cli/args.d.ts +0 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +2 -7
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +41 -5
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/automation/index.d.ts +359 -0
- package/dist/core/automation/index.d.ts.map +1 -0
- package/dist/core/automation/index.js +665 -0
- package/dist/core/automation/index.js.map +1 -0
- package/dist/core/bang-skill-invocation.d.ts +26 -0
- package/dist/core/bang-skill-invocation.d.ts.map +1 -0
- package/dist/core/bang-skill-invocation.js +59 -0
- package/dist/core/bang-skill-invocation.js.map +1 -0
- package/dist/core/browser-use.d.ts +8 -0
- package/dist/core/browser-use.d.ts.map +1 -1
- package/dist/core/browser-use.js +61 -23
- package/dist/core/browser-use.js.map +1 -1
- package/dist/core/compactor.d.ts.map +1 -1
- package/dist/core/compactor.js +0 -3
- package/dist/core/compactor.js.map +1 -1
- package/dist/core/context-budget-governor-v2.d.ts +2 -1
- package/dist/core/context-budget-governor-v2.d.ts.map +1 -1
- package/dist/core/context-budget-governor-v2.js +1 -0
- package/dist/core/context-budget-governor-v2.js.map +1 -1
- package/dist/core/context-budget-headroom-types.d.ts +8 -0
- package/dist/core/context-budget-headroom-types.d.ts.map +1 -1
- package/dist/core/context-budget-headroom-types.js.map +1 -1
- package/dist/core/context-budget-headroom.d.ts +1 -1
- package/dist/core/context-budget-headroom.d.ts.map +1 -1
- package/dist/core/context-budget-headroom.js +17 -4
- package/dist/core/context-budget-headroom.js.map +1 -1
- package/dist/core/context-budget-system-prompt.d.ts +2 -1
- package/dist/core/context-budget-system-prompt.d.ts.map +1 -1
- package/dist/core/context-budget-system-prompt.js +6 -1
- package/dist/core/context-budget-system-prompt.js.map +1 -1
- package/dist/core/context-budget-v2-cache-hash.d.ts +3 -0
- package/dist/core/context-budget-v2-cache-hash.d.ts.map +1 -0
- package/dist/core/context-budget-v2-cache-hash.js +16 -0
- package/dist/core/context-budget-v2-cache-hash.js.map +1 -0
- package/dist/core/context-budget-v2-cache-keys.d.ts +58 -0
- package/dist/core/context-budget-v2-cache-keys.d.ts.map +1 -0
- package/dist/core/context-budget-v2-cache-keys.js +128 -0
- package/dist/core/context-budget-v2-cache-keys.js.map +1 -0
- package/dist/core/context-budget-v2-cache-provider.d.ts +23 -0
- package/dist/core/context-budget-v2-cache-provider.d.ts.map +1 -0
- package/dist/core/context-budget-v2-cache-provider.js +29 -0
- package/dist/core/context-budget-v2-cache-provider.js.map +1 -0
- package/dist/core/context-budget-v2-cache-telemetry.d.ts +36 -0
- package/dist/core/context-budget-v2-cache-telemetry.d.ts.map +1 -0
- package/dist/core/context-budget-v2-cache-telemetry.js +64 -0
- package/dist/core/context-budget-v2-cache-telemetry.js.map +1 -0
- package/dist/core/context-budget-v2-cache-validation.d.ts +36 -0
- package/dist/core/context-budget-v2-cache-validation.d.ts.map +1 -0
- package/dist/core/context-budget-v2-cache-validation.js +98 -0
- package/dist/core/context-budget-v2-cache-validation.js.map +1 -0
- package/dist/core/context-budget-v2-cache.d.ts +36 -0
- package/dist/core/context-budget-v2-cache.d.ts.map +1 -0
- package/dist/core/context-budget-v2-cache.js +50 -0
- package/dist/core/context-budget-v2-cache.js.map +1 -0
- package/dist/core/context-budget-v2-plan-cache-keys.d.ts +16 -0
- package/dist/core/context-budget-v2-plan-cache-keys.d.ts.map +1 -0
- package/dist/core/context-budget-v2-plan-cache-keys.js +49 -0
- package/dist/core/context-budget-v2-plan-cache-keys.js.map +1 -0
- package/dist/core/context-budget-v2-planner.d.ts.map +1 -1
- package/dist/core/context-budget-v2-planner.js +55 -2
- package/dist/core/context-budget-v2-planner.js.map +1 -1
- package/dist/core/context-budget-v2-representation-cache.d.ts +27 -0
- package/dist/core/context-budget-v2-representation-cache.d.ts.map +1 -0
- package/dist/core/context-budget-v2-representation-cache.js +173 -0
- package/dist/core/context-budget-v2-representation-cache.js.map +1 -0
- package/dist/core/context-budget-v2-selection.d.ts +2 -0
- package/dist/core/context-budget-v2-selection.d.ts.map +1 -1
- package/dist/core/context-budget-v2-selection.js +12 -2
- package/dist/core/context-budget-v2-selection.js.map +1 -1
- package/dist/core/context-budget-v2-types.d.ts +107 -1
- package/dist/core/context-budget-v2-types.d.ts.map +1 -1
- package/dist/core/context-budget-v2-types.js.map +1 -1
- package/dist/core/diagnostics.d.ts +2 -0
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/extensions/builtin/todo-checklist.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todo-checklist.js +3 -0
- package/dist/core/extensions/builtin/todo-checklist.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +3 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +4 -0
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/headroom.d.ts.map +1 -1
- package/dist/core/headroom.js +0 -4
- package/dist/core/headroom.js.map +1 -1
- package/dist/core/hook-inventory.d.ts.map +1 -1
- package/dist/core/hook-inventory.js +6 -0
- package/dist/core/hook-inventory.js.map +1 -1
- package/dist/core/mcp-computer-use-presets.d.ts +64 -0
- package/dist/core/mcp-computer-use-presets.d.ts.map +1 -0
- package/dist/core/mcp-computer-use-presets.js +158 -0
- package/dist/core/mcp-computer-use-presets.js.map +1 -0
- package/dist/core/mcp-public-presets.d.ts +578 -0
- package/dist/core/mcp-public-presets.d.ts.map +1 -0
- package/dist/core/mcp-public-presets.js +647 -0
- package/dist/core/mcp-public-presets.js.map +1 -0
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +1 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -0
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/pi-package-intake-candidates.d.ts +34 -0
- package/dist/core/pi-package-intake-candidates.d.ts.map +1 -0
- package/dist/core/pi-package-intake-candidates.js +291 -0
- package/dist/core/pi-package-intake-candidates.js.map +1 -0
- package/dist/core/pi-package-intake.d.ts +50 -0
- package/dist/core/pi-package-intake.d.ts.map +1 -0
- package/dist/core/pi-package-intake.js +132 -0
- package/dist/core/pi-package-intake.js.map +1 -0
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +1 -0
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +1 -0
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/reverse-skill.d.ts +2 -0
- package/dist/core/reverse-skill.d.ts.map +1 -0
- package/dist/core/reverse-skill.js +7 -0
- package/dist/core/reverse-skill.js.map +1 -0
- package/dist/core/settings-manager.d.ts +3 -3
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +4 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +115 -43
- package/dist/core/skills.js.map +1 -1
- package/dist/core/system-prompt.d.ts +2 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +58 -5
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/todo-runtime-state.d.ts +5 -0
- package/dist/core/todo-runtime-state.d.ts.map +1 -0
- package/dist/core/todo-runtime-state.js +12 -0
- package/dist/core/todo-runtime-state.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts +19 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +39 -15
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-box.d.ts +3 -3
- package/dist/modes/interactive/components/control-panel-box.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel-box.js +10 -10
- package/dist/modes/interactive/components/control-panel-box.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel-gradient-motion.js +2 -1
- package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-layout.d.ts +22 -1
- package/dist/modes/interactive/components/control-panel-layout.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel-layout.js +244 -68
- package/dist/modes/interactive/components/control-panel-layout.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +2 -1
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel-runtime-status.js +20 -1
- package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-sparkles.d.ts +27 -0
- package/dist/modes/interactive/components/control-panel-sparkles.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-sparkles.js +42 -0
- package/dist/modes/interactive/components/control-panel-sparkles.js.map +1 -0
- package/dist/modes/interactive/components/control-panel.d.ts +9 -0
- package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel.js +50 -6
- package/dist/modes/interactive/components/control-panel.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +6 -0
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +2 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +2 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +2 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +70 -15
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +5 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/docs/providers.md +12 -0
- package/docs/skills.md +8 -4
- package/docs/usage.md +4 -3
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/preset.ts +2 -2
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +27 -34
- package/package.json +5 -5
|
@@ -14,6 +14,7 @@ import { CombinedAutocompleteProvider, Container, fuzzyFilter, getCapabilities,
|
|
|
14
14
|
import { APP_NAME, APP_TITLE, getAgentDir, getAuthPath, getDebugLogPath, getDocsPath, getShareViewerUrl, VERSION, } from "../../config.js";
|
|
15
15
|
import { parseSkillBlock } from "../../core/agent-session.js";
|
|
16
16
|
import { SessionImportFileNotFoundError } from "../../core/agent-session-runtime.js";
|
|
17
|
+
import { parseBangInvocation } from "../../core/bang-skill-invocation.js";
|
|
17
18
|
import { FooterDataProvider } from "../../core/footer-data-provider.js";
|
|
18
19
|
import { configureHttpDispatcher, formatHttpIdleTimeoutMs } from "../../core/http-dispatcher.js";
|
|
19
20
|
import { KeybindingsManager } from "../../core/keybindings.js";
|
|
@@ -39,7 +40,8 @@ import { BashExecutionComponent } from "./components/bash-execution.js";
|
|
|
39
40
|
import { BorderedLoader } from "./components/bordered-loader.js";
|
|
40
41
|
import { BranchSummaryMessageComponent } from "./components/branch-summary-message.js";
|
|
41
42
|
import { CompactionSummaryMessageComponent } from "./components/compaction-summary-message.js";
|
|
42
|
-
import { ControlPanelComponent } from "./components/control-panel.js";
|
|
43
|
+
import { ControlPanelComponent, ControlPanelRightPaneComponent } from "./components/control-panel.js";
|
|
44
|
+
import { CONTROL_PANEL_OVERLAY_MIN_WIDTH, CONTROL_PANEL_SIDEBAR_WIDTH } from "./components/control-panel-layout.js";
|
|
43
45
|
import { createControlPanelStatusSnapshot } from "./components/control-panel-runtime-status.js";
|
|
44
46
|
import { CountdownTimer } from "./components/countdown-timer.js";
|
|
45
47
|
import { CustomEditor } from "./components/custom-editor.js";
|
|
@@ -67,6 +69,14 @@ import { getAvailableThemes, getAvailableThemesWithPaths, getEditorTheme, getMar
|
|
|
67
69
|
function isExpandable(obj) {
|
|
68
70
|
return typeof obj === "object" && obj !== null && "setExpanded" in obj && typeof obj.setExpanded === "function";
|
|
69
71
|
}
|
|
72
|
+
function disposeComponent(component) {
|
|
73
|
+
if (typeof component === "object" &&
|
|
74
|
+
component !== null &&
|
|
75
|
+
"dispose" in component &&
|
|
76
|
+
typeof component.dispose === "function") {
|
|
77
|
+
component.dispose();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
70
80
|
class ExpandableText extends Text {
|
|
71
81
|
getCollapsedText;
|
|
72
82
|
getExpandedText;
|
|
@@ -193,7 +203,6 @@ export class InteractiveMode {
|
|
|
193
203
|
// Agent subscription unsubscribe function
|
|
194
204
|
unsubscribe;
|
|
195
205
|
signalCleanupHandlers = [];
|
|
196
|
-
// Track if editor is in bash mode (text starts with !)
|
|
197
206
|
isBashMode = false;
|
|
198
207
|
// Track current bash execution component
|
|
199
208
|
bashComponent = undefined;
|
|
@@ -503,8 +512,8 @@ export class InteractiveMode {
|
|
|
503
512
|
hint("app.thinking.toggle", "to expand thinking"),
|
|
504
513
|
hint("app.editor.external", "for external editor"),
|
|
505
514
|
rawKeyHint("/", "for commands"),
|
|
506
|
-
rawKeyHint("!", "
|
|
507
|
-
rawKeyHint("!!", "
|
|
515
|
+
rawKeyHint("!", "skills/bash"),
|
|
516
|
+
rawKeyHint("!!", "bash(no ctx)"),
|
|
508
517
|
hint("app.message.followUp", "to queue follow-up"),
|
|
509
518
|
hint("app.message.dequeue", "to edit all queued messages"),
|
|
510
519
|
hint("app.clipboard.pasteImage", "to paste image"),
|
|
@@ -514,20 +523,39 @@ export class InteractiveMode {
|
|
|
514
523
|
hint("app.interrupt", "interrupt"),
|
|
515
524
|
rawKeyHint(`${keyText("app.clear")}/${keyText("app.exit")}`, "clear/exit"),
|
|
516
525
|
rawKeyHint("/", "commands"),
|
|
517
|
-
rawKeyHint("!", "bash"),
|
|
526
|
+
rawKeyHint("!", "skills/bash"),
|
|
527
|
+
rawKeyHint("!!", "bash(no ctx)"),
|
|
518
528
|
hint("app.tools.expand", "more"),
|
|
519
529
|
].join(theme.fg("muted", " · "));
|
|
520
|
-
const
|
|
530
|
+
const controlPanelContent = {
|
|
521
531
|
appName: APP_NAME,
|
|
522
532
|
version: this.version,
|
|
523
533
|
compactInstructions,
|
|
524
534
|
expandedInstructions,
|
|
525
535
|
compactOnboarding: () => `Press ${keyText("app.tools.expand")} to show full startup help and loaded resources.`,
|
|
526
536
|
onboarding: () => `OMK can explain its own features and look up its docs. Ask it how to use or extend OMK.`,
|
|
527
|
-
statusSnapshot: () => createControlPanelStatusSnapshot(this.session, this.sessionManager),
|
|
537
|
+
statusSnapshot: () => createControlPanelStatusSnapshot(this.session, this.sessionManager, this.footerDataProvider),
|
|
538
|
+
};
|
|
539
|
+
const controlPanel = new ControlPanelComponent(controlPanelContent, {
|
|
540
|
+
requestRender: () => this.ui.requestRender(),
|
|
541
|
+
isTTY: () => process.stdout.isTTY === true,
|
|
542
|
+
isReducedMotion: () => process.env.OMK_REDUCED_MOTION === "1" || process.env.OMK_REDUCE_MOTION === "1",
|
|
543
|
+
isIdleDriftEnabled: () => process.env.OMK_CONTROL_IDLE_DRIFT !== "0",
|
|
544
|
+
isHeaderVisibleHint: () => this.customHeader === undefined,
|
|
545
|
+
getRenderWidth: () => this.ui.terminal.columns,
|
|
528
546
|
});
|
|
529
547
|
controlPanel.setExpanded(this.getStartupExpansionState());
|
|
530
548
|
this.builtInHeader = controlPanel;
|
|
549
|
+
this.ui.showOverlay(new ControlPanelRightPaneComponent(controlPanelContent), {
|
|
550
|
+
anchor: "top-right",
|
|
551
|
+
width: CONTROL_PANEL_SIDEBAR_WIDTH,
|
|
552
|
+
maxHeight: "100%",
|
|
553
|
+
nonCapturing: true,
|
|
554
|
+
visible: (termWidth, termHeight) => this.customHeader === undefined &&
|
|
555
|
+
this.toolOutputExpanded &&
|
|
556
|
+
termWidth >= CONTROL_PANEL_OVERLAY_MIN_WIDTH &&
|
|
557
|
+
termHeight >= 12,
|
|
558
|
+
});
|
|
531
559
|
// Setup UI layout
|
|
532
560
|
this.headerContainer.addChild(new Spacer(1));
|
|
533
561
|
this.headerContainer.addChild(this.builtInHeader);
|
|
@@ -1043,6 +1071,12 @@ export class InteractiveMode {
|
|
|
1043
1071
|
scope: d.collision.loserScope,
|
|
1044
1072
|
origin: d.collision.loserOrigin,
|
|
1045
1073
|
})} (skipped)`));
|
|
1074
|
+
if (d.collision.resolutionReason) {
|
|
1075
|
+
lines.push(theme.fg("dim", ` reason: ${d.collision.resolutionReason}`));
|
|
1076
|
+
}
|
|
1077
|
+
if (d.collision.resolutionAction) {
|
|
1078
|
+
lines.push(theme.fg("dim", ` action: ${d.collision.resolutionAction}`));
|
|
1079
|
+
}
|
|
1046
1080
|
}
|
|
1047
1081
|
}
|
|
1048
1082
|
}
|
|
@@ -2044,7 +2078,7 @@ export class InteractiveMode {
|
|
|
2044
2078
|
this.defaultEditor.onAction("app.session.resume", () => this.showSessionSelector());
|
|
2045
2079
|
this.defaultEditor.onChange = (text) => {
|
|
2046
2080
|
const wasBashMode = this.isBashMode;
|
|
2047
|
-
this.isBashMode =
|
|
2081
|
+
this.isBashMode = this.isBangBashInput(text);
|
|
2048
2082
|
if (wasBashMode !== this.isBashMode) {
|
|
2049
2083
|
this.updateEditorBorderColor();
|
|
2050
2084
|
}
|
|
@@ -2074,6 +2108,18 @@ export class InteractiveMode {
|
|
|
2074
2108
|
// Silently ignore clipboard errors (may not have permission, etc.)
|
|
2075
2109
|
}
|
|
2076
2110
|
}
|
|
2111
|
+
parseBangInput(text) {
|
|
2112
|
+
return parseBangInvocation(text.trim(), {
|
|
2113
|
+
hasSkill: (name) => this.session.resourceLoader.getSkills().skills.some((skill) => skill.name === name),
|
|
2114
|
+
});
|
|
2115
|
+
}
|
|
2116
|
+
isBangBashInput(text) {
|
|
2117
|
+
const trimmed = text.trimStart();
|
|
2118
|
+
if (!trimmed.startsWith("!")) {
|
|
2119
|
+
return false;
|
|
2120
|
+
}
|
|
2121
|
+
return this.parseBangInput(trimmed).kind === "bash";
|
|
2122
|
+
}
|
|
2077
2123
|
setupEditorSubmitHandler() {
|
|
2078
2124
|
this.defaultEditor.onSubmit = async (text) => {
|
|
2079
2125
|
text = text.trim();
|
|
@@ -2208,18 +2254,25 @@ export class InteractiveMode {
|
|
|
2208
2254
|
await this.shutdown();
|
|
2209
2255
|
return;
|
|
2210
2256
|
}
|
|
2211
|
-
// Handle bash command (! for normal, !! for excluded from context)
|
|
2212
2257
|
if (text.startsWith("!")) {
|
|
2213
|
-
const
|
|
2214
|
-
|
|
2215
|
-
|
|
2258
|
+
const bangInvocation = parseBangInvocation(text, {
|
|
2259
|
+
hasSkill: (name) => this.session.resourceLoader.getSkills().skills.some((skill) => skill.name === name),
|
|
2260
|
+
});
|
|
2261
|
+
if (bangInvocation.kind === "unknownSkill") {
|
|
2262
|
+
this.showWarning(`Unknown skill: ${bangInvocation.skillName}`);
|
|
2263
|
+
this.editor.setText(text);
|
|
2264
|
+
this.isBashMode = false;
|
|
2265
|
+
this.updateEditorBorderColor();
|
|
2266
|
+
return;
|
|
2267
|
+
}
|
|
2268
|
+
if (bangInvocation.kind === "bash") {
|
|
2216
2269
|
if (this.session.isBashRunning) {
|
|
2217
2270
|
this.showWarning("A bash command is already running. Press Esc to cancel it first.");
|
|
2218
2271
|
this.editor.setText(text);
|
|
2219
2272
|
return;
|
|
2220
2273
|
}
|
|
2221
2274
|
this.editor.addToHistory?.(text);
|
|
2222
|
-
await this.handleBashCommand(command,
|
|
2275
|
+
await this.handleBashCommand(bangInvocation.command, !bangInvocation.includeContext);
|
|
2223
2276
|
this.isBashMode = false;
|
|
2224
2277
|
this.updateEditorBorderColor();
|
|
2225
2278
|
return;
|
|
@@ -4650,8 +4703,8 @@ export class InteractiveMode {
|
|
|
4650
4703
|
| \`${dequeue}\` | Restore queued messages |
|
|
4651
4704
|
| \`${pasteImage}\` | Paste image from clipboard |
|
|
4652
4705
|
| \`/\` | Slash commands |
|
|
4653
|
-
| \`!\` |
|
|
4654
|
-
| \`!!\` |
|
|
4706
|
+
| \`!\` | Skills/bash launcher |
|
|
4707
|
+
| \`!!\` | Bash command (excluded from context) |
|
|
4655
4708
|
`;
|
|
4656
4709
|
// Add extension-registered shortcuts
|
|
4657
4710
|
const extensionRunner = this.session.extensionRunner;
|
|
@@ -4837,6 +4890,8 @@ export class InteractiveMode {
|
|
|
4837
4890
|
this.loadingAnimation = undefined;
|
|
4838
4891
|
}
|
|
4839
4892
|
this.clearExtensionTerminalInputListeners();
|
|
4893
|
+
disposeComponent(this.builtInHeader);
|
|
4894
|
+
disposeComponent(this.customHeader);
|
|
4840
4895
|
this.footer.dispose();
|
|
4841
4896
|
this.footerDataProvider.dispose();
|
|
4842
4897
|
if (this.metricsTimer) {
|