open-multi-agent-kit 0.90.3 → 0.90.5
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 +38 -0
- package/README.md +16 -14
- package/dist/config.d.ts +3 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -19
- package/dist/config.js.map +1 -1
- package/dist/core/adaptorch-bridge.d.ts +250 -0
- package/dist/core/adaptorch-bridge.d.ts.map +1 -0
- package/dist/core/adaptorch-bridge.js +466 -0
- package/dist/core/adaptorch-bridge.js.map +1 -0
- package/dist/core/agent-session.d.ts +97 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +194 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/bang-skill-invocation.d.ts.map +1 -1
- package/dist/core/bang-skill-invocation.js +149 -0
- package/dist/core/bang-skill-invocation.js.map +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +15 -2
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/context-budget-v2-planner.d.ts.map +1 -1
- package/dist/core/context-budget-v2-planner.js +10 -2
- package/dist/core/context-budget-v2-planner.js.map +1 -1
- package/dist/core/context-budget-v2-types.d.ts +7 -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/domain-loadouts.d.ts.map +1 -1
- package/dist/core/domain-loadouts.js +1 -1
- package/dist/core/domain-loadouts.js.map +1 -1
- package/dist/core/reasoning-router-bias.d.ts +107 -0
- package/dist/core/reasoning-router-bias.d.ts.map +1 -0
- package/dist/core/reasoning-router-bias.js +278 -0
- package/dist/core/reasoning-router-bias.js.map +1 -0
- package/dist/core/reasoning-router-resolver.d.ts +44 -0
- package/dist/core/reasoning-router-resolver.d.ts.map +1 -0
- package/dist/core/reasoning-router-resolver.js +79 -0
- package/dist/core/reasoning-router-resolver.js.map +1 -0
- package/dist/core/reasoning-router-v4-weights.d.ts +80 -0
- package/dist/core/reasoning-router-v4-weights.d.ts.map +1 -0
- package/dist/core/reasoning-router-v4-weights.js +68 -0
- package/dist/core/reasoning-router-v4-weights.js.map +1 -0
- package/dist/core/reasoning-router-v4.d.ts +118 -0
- package/dist/core/reasoning-router-v4.d.ts.map +1 -0
- package/dist/core/reasoning-router-v4.js +585 -0
- package/dist/core/reasoning-router-v4.js.map +1 -0
- package/dist/core/router-feedback-collector.d.ts +98 -0
- package/dist/core/router-feedback-collector.d.ts.map +1 -0
- package/dist/core/router-feedback-collector.js +236 -0
- package/dist/core/router-feedback-collector.js.map +1 -0
- package/dist/core/settings-manager.d.ts +28 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +16 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +4 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +15 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel-runtime-status.js +95 -5
- package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +4 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +60 -17
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/docs/loadout-domains/README.md +8 -6
- package/docs/loadout-domains/ai-agent-ops.md +3 -2
- package/docs/loadout-domains/backend-api.md +3 -2
- package/docs/loadout-domains/data-science.md +3 -2
- package/docs/loadout-domains/devops-infra.md +2 -1
- package/docs/loadout-domains/docs-writing.md +7 -2
- package/docs/loadout-domains/frontend-ui.md +42 -11
- package/docs/loadout-domains/korean-document.md +83 -0
- package/docs/loadout-domains/mobile.md +1 -1
- package/docs/loadout-domains/qa-testing.md +4 -2
- package/docs/loadout-domains/security-audit.md +2 -1
- package/docs/loadout-domains/visual-qa.md +94 -0
- package/docs/skills.md +4 -1
- package/docs/usage.md +36 -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/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/subagent/agent-capability-router.test.ts +123 -0
- package/examples/extensions/subagent/agent-capability-router.ts +274 -0
- package/examples/extensions/subagent/agents/planner.md +3 -0
- package/examples/extensions/subagent/agents/reviewer.md +3 -0
- package/examples/extensions/subagent/agents/scout.md +3 -0
- package/examples/extensions/subagent/agents/worker.md +2 -0
- package/examples/extensions/subagent/agents.ts +14 -0
- package/examples/extensions/subagent/capabilities.ts +368 -0
- package/examples/extensions/subagent/domain-profiles.ts +1089 -0
- package/examples/extensions/subagent/index.ts +71 -3
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/sdk/12-full-control.ts +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
- package/dist/agents/jailbreak/index.d.ts +0 -7
- package/dist/agents/jailbreak/index.d.ts.map +0 -1
- package/dist/agents/jailbreak/index.js +0 -7
- package/dist/agents/jailbreak/index.js.map +0 -1
- package/dist/agents/jailbreak/subagent-f.d.ts +0 -44
- package/dist/agents/jailbreak/subagent-f.d.ts.map +0 -1
- package/dist/agents/jailbreak/subagent-f.js +0 -60
- package/dist/agents/jailbreak/subagent-f.js.map +0 -1
- package/dist/cli/jailbreak-args.d.ts +0 -26
- package/dist/cli/jailbreak-args.d.ts.map +0 -1
- package/dist/cli/jailbreak-args.js +0 -86
- package/dist/cli/jailbreak-args.js.map +0 -1
- package/dist/commands/jailbreak.d.ts +0 -49
- package/dist/commands/jailbreak.d.ts.map +0 -1
- package/dist/commands/jailbreak.js +0 -201
- package/dist/commands/jailbreak.js.map +0 -1
- package/dist/core/compactor.d.ts +0 -42
- package/dist/core/compactor.d.ts.map +0 -1
- package/dist/core/compactor.js +0 -128
- package/dist/core/compactor.js.map +0 -1
- package/dist/core/token-optimizer.d.ts +0 -58
- package/dist/core/token-optimizer.d.ts.map +0 -1
- package/dist/core/token-optimizer.js +0 -179
- package/dist/core/token-optimizer.js.map +0 -1
- package/dist/encoding/index.d.ts +0 -6
- package/dist/encoding/index.d.ts.map +0 -1
- package/dist/encoding/index.js +0 -6
- package/dist/encoding/index.js.map +0 -1
- package/dist/encoding/l4-encoder.d.ts +0 -96
- package/dist/encoding/l4-encoder.d.ts.map +0 -1
- package/dist/encoding/l4-encoder.js +0 -474
- package/dist/encoding/l4-encoder.js.map +0 -1
- package/dist/fuzzing/index.d.ts +0 -6
- package/dist/fuzzing/index.d.ts.map +0 -1
- package/dist/fuzzing/index.js +0 -6
- package/dist/fuzzing/index.js.map +0 -1
- package/dist/fuzzing/mutation-engine.d.ts +0 -93
- package/dist/fuzzing/mutation-engine.d.ts.map +0 -1
- package/dist/fuzzing/mutation-engine.js +0 -244
- package/dist/fuzzing/mutation-engine.js.map +0 -1
- package/dist/jailbreak-extension.d.ts +0 -48
- package/dist/jailbreak-extension.d.ts.map +0 -1
- package/dist/jailbreak-extension.js +0 -47
- package/dist/jailbreak-extension.js.map +0 -1
- package/dist/modules/index.d.ts +0 -8
- package/dist/modules/index.d.ts.map +0 -1
- package/dist/modules/index.js +0 -7
- package/dist/modules/index.js.map +0 -1
- package/dist/modules/lrl-bypass.d.ts +0 -40
- package/dist/modules/lrl-bypass.d.ts.map +0 -1
- package/dist/modules/lrl-bypass.js +0 -84
- package/dist/modules/lrl-bypass.js.map +0 -1
- package/dist/modules/lrl-deps.d.ts +0 -38
- package/dist/modules/lrl-deps.d.ts.map +0 -1
- package/dist/modules/lrl-deps.js +0 -128
- package/dist/modules/lrl-deps.js.map +0 -1
- package/dist/multiturn/easl-chain.d.ts +0 -113
- package/dist/multiturn/easl-chain.d.ts.map +0 -1
- package/dist/multiturn/easl-chain.js +0 -351
- package/dist/multiturn/easl-chain.js.map +0 -1
- package/dist/multiturn/index.d.ts +0 -6
- package/dist/multiturn/index.d.ts.map +0 -1
- package/dist/multiturn/index.js +0 -6
- package/dist/multiturn/index.js.map +0 -1
- package/dist/routing/fallback-router.d.ts +0 -123
- package/dist/routing/fallback-router.d.ts.map +0 -1
- package/dist/routing/fallback-router.js +0 -355
- package/dist/routing/fallback-router.js.map +0 -1
- package/dist/routing/index.d.ts +0 -6
- package/dist/routing/index.d.ts.map +0 -1
- package/dist/routing/index.js +0 -6
- package/dist/routing/index.js.map +0 -1
- package/dist/types/jailbreak.d.ts +0 -246
- package/dist/types/jailbreak.d.ts.map +0 -1
- package/dist/types/jailbreak.js +0 -8
- package/dist/types/jailbreak.js.map +0 -1
- package/dist/utils/jailbreak/common.d.ts +0 -63
- package/dist/utils/jailbreak/common.d.ts.map +0 -1
- package/dist/utils/jailbreak/common.js +0 -130
- package/dist/utils/jailbreak/common.js.map +0 -1
- package/dist/utils/jailbreak/index.d.ts +0 -7
- package/dist/utils/jailbreak/index.d.ts.map +0 -1
- package/dist/utils/jailbreak/index.js +0 -7
- package/dist/utils/jailbreak/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../../src/core/slash-commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../../src/core/slash-commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,mBAAmB,CA0BrE,CAAC","sourcesContent":["import { APP_NAME } from \"../config.ts\";\nimport type { SourceInfo } from \"./source-info.ts\";\n\nexport type SlashCommandSource = \"extension\" | \"prompt\" | \"skill\";\n\nexport interface SlashCommandInfo {\n\tname: string;\n\tdescription?: string;\n\tsource: SlashCommandSource;\n\tsourceInfo: SourceInfo;\n}\n\nexport interface BuiltinSlashCommand {\n\tname: string;\n\tdescription: string;\n}\n\nexport const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [\n\t{ name: \"settings\", description: \"Open settings menu\" },\n\t{\n\t\tname: \"think\",\n\t\tdescription: \"Select thinking level (auto routes per task through v4)\",\n\t},\n\t{ name: \"model\", description: \"Select model (opens selector UI, then thinking selector)\" },\n\t{ name: \"scoped-models\", description: \"Enable/disable models for Ctrl+P cycling\" },\n\t{ name: \"export\", description: \"Export session (HTML default, or specify path: .html/.jsonl)\" },\n\t{ name: \"import\", description: \"Import and resume a session from a JSONL file\" },\n\t{ name: \"share\", description: \"Share session as a secret GitHub gist\" },\n\t{ name: \"copy\", description: \"Copy last agent message to clipboard\" },\n\t{ name: \"name\", description: \"Set session display name\" },\n\t{ name: \"session\", description: \"Show session info and stats\" },\n\t{ name: \"changelog\", description: \"Show changelog entries\" },\n\t{ name: \"hotkeys\", description: \"Show all keyboard shortcuts\" },\n\t{ name: \"fork\", description: \"Create a new fork from a previous user message\" },\n\t{ name: \"clone\", description: \"Duplicate the current session at the current position\" },\n\t{ name: \"tree\", description: \"Navigate session tree (switch branches)\" },\n\t{ name: \"login\", description: \"Configure provider authentication\" },\n\t{ name: \"logout\", description: \"Remove provider authentication\" },\n\t{ name: \"new\", description: \"Start a new session\" },\n\t{ name: \"compact\", description: \"Manually compact the session context\" },\n\t{ name: \"resume\", description: \"Resume a different session\" },\n\t{ name: \"reload\", description: \"Reload keybindings, extensions, skills, prompts, and themes\" },\n\t{ name: \"quit\", description: `Quit ${APP_NAME}` },\n];\n"]}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { APP_NAME } from "../config.js";
|
|
2
2
|
export const BUILTIN_SLASH_COMMANDS = [
|
|
3
3
|
{ name: "settings", description: "Open settings menu" },
|
|
4
|
-
{
|
|
4
|
+
{
|
|
5
|
+
name: "think",
|
|
6
|
+
description: "Select thinking level (auto routes per task through v4)",
|
|
7
|
+
},
|
|
5
8
|
{ name: "model", description: "Select model (opens selector UI, then thinking selector)" },
|
|
6
9
|
{ name: "scoped-models", description: "Enable/disable models for Ctrl+P cycling" },
|
|
7
10
|
{ name: "export", description: "Export session (HTML default, or specify path: .html/.jsonl)" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../../src/core/slash-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAiBxC,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACzE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE;IACvD,
|
|
1
|
+
{"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../../src/core/slash-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAiBxC,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACzE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE;IACvD;QACC,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yDAAyD;KACtE;IACD,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,0DAA0D,EAAE;IAC1F,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,0CAA0C,EAAE;IAClF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE;IAC/F,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;IAChF,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACvE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE;IACrE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACzD,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE;IAC5D,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gDAAgD,EAAE;IAC/E,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uDAAuD,EAAE;IACvF,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACxE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,mCAAmC,EAAE;IACnE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;IACjE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,sCAAsC,EAAE;IACxE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC7D,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;IAC9F,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,QAAQ,EAAE,EAAE;CACjD,CAAC","sourcesContent":["import { APP_NAME } from \"../config.ts\";\nimport type { SourceInfo } from \"./source-info.ts\";\n\nexport type SlashCommandSource = \"extension\" | \"prompt\" | \"skill\";\n\nexport interface SlashCommandInfo {\n\tname: string;\n\tdescription?: string;\n\tsource: SlashCommandSource;\n\tsourceInfo: SourceInfo;\n}\n\nexport interface BuiltinSlashCommand {\n\tname: string;\n\tdescription: string;\n}\n\nexport const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [\n\t{ name: \"settings\", description: \"Open settings menu\" },\n\t{\n\t\tname: \"think\",\n\t\tdescription: \"Select thinking level (auto routes per task through v4)\",\n\t},\n\t{ name: \"model\", description: \"Select model (opens selector UI, then thinking selector)\" },\n\t{ name: \"scoped-models\", description: \"Enable/disable models for Ctrl+P cycling\" },\n\t{ name: \"export\", description: \"Export session (HTML default, or specify path: .html/.jsonl)\" },\n\t{ name: \"import\", description: \"Import and resume a session from a JSONL file\" },\n\t{ name: \"share\", description: \"Share session as a secret GitHub gist\" },\n\t{ name: \"copy\", description: \"Copy last agent message to clipboard\" },\n\t{ name: \"name\", description: \"Set session display name\" },\n\t{ name: \"session\", description: \"Show session info and stats\" },\n\t{ name: \"changelog\", description: \"Show changelog entries\" },\n\t{ name: \"hotkeys\", description: \"Show all keyboard shortcuts\" },\n\t{ name: \"fork\", description: \"Create a new fork from a previous user message\" },\n\t{ name: \"clone\", description: \"Duplicate the current session at the current position\" },\n\t{ name: \"tree\", description: \"Navigate session tree (switch branches)\" },\n\t{ name: \"login\", description: \"Configure provider authentication\" },\n\t{ name: \"logout\", description: \"Remove provider authentication\" },\n\t{ name: \"new\", description: \"Start a new session\" },\n\t{ name: \"compact\", description: \"Manually compact the session context\" },\n\t{ name: \"resume\", description: \"Resume a different session\" },\n\t{ name: \"reload\", description: \"Reload keybindings, extensions, skills, prompts, and themes\" },\n\t{ name: \"quit\", description: `Quit ${APP_NAME}` },\n];\n"]}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import type { AgentSession } from "../../../core/agent-session.ts";
|
|
2
2
|
import type { ReadonlyFooterDataProvider } from "../../../core/footer-data-provider.ts";
|
|
3
|
+
import { type McpServerEntry } from "../../../core/mcp-inventory.ts";
|
|
3
4
|
import type { SessionManager } from "../../../core/session-manager.ts";
|
|
4
5
|
import type { ControlPanelStatusSnapshot } from "./control-panel-layout.ts";
|
|
6
|
+
interface McpStabilityInput {
|
|
7
|
+
readonly commandSummary: string;
|
|
8
|
+
readonly overriddenBy?: string;
|
|
9
|
+
readonly networkDecision: Pick<McpServerEntry["networkDecision"], "rule">;
|
|
10
|
+
readonly capabilityDecision: Pick<McpServerEntry["capabilityDecision"], "malformed" | "unknownCapabilities">;
|
|
11
|
+
readonly authDecision: Pick<McpServerEntry["authDecision"], "rule">;
|
|
12
|
+
}
|
|
13
|
+
export declare function formatHeadroomStatusLabel(): string;
|
|
14
|
+
export declare function countRoutableNonHubSkills(skills: readonly {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
}[]): number;
|
|
17
|
+
export declare function countStableMcpServers(entries: readonly McpStabilityInput[]): number;
|
|
18
|
+
export declare function parseHeadroomVersionOutput(output: string): string | null;
|
|
5
19
|
export declare function createControlPanelStatusSnapshot(session: AgentSession, sessionManager: SessionManager, footerData?: ReadonlyFooterDataProvider): ControlPanelStatusSnapshot;
|
|
20
|
+
export {};
|
|
6
21
|
//# sourceMappingURL=control-panel-runtime-status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-panel-runtime-status.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/control-panel-runtime-status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"control-panel-runtime-status.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/control-panel-runtime-status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AA0B5E,UAAU,iBAAiB;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1E,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,WAAW,GAAG,qBAAqB,CAAC,CAAC;IAC7G,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;CACpE;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAGlD;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAE9F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,MAAM,CAEnF;AAiDD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGxE;AAED,wBAAgB,gCAAgC,CAC/C,OAAO,EAAE,YAAY,EACrB,cAAc,EAAE,cAAc,EAC9B,UAAU,CAAC,EAAE,0BAA0B,GACrC,0BAA0B,CAiC5B","sourcesContent":["import { spawnSync } from \"node:child_process\";\nimport type { AgentSession } from \"../../../core/agent-session.ts\";\nimport { getHeadroomRuntimeStatus } from \"../../../core/context-budget-headroom.ts\";\nimport type { ReadonlyFooterDataProvider } from \"../../../core/footer-data-provider.ts\";\nimport { loadMcpInventory, type McpServerEntry } from \"../../../core/mcp-inventory.ts\";\nimport { evaluatePiPackageIntake } from \"../../../core/pi-package-intake.ts\";\nimport type { SessionManager } from \"../../../core/session-manager.ts\";\nimport { getCurrentTodoState } from \"../../../core/todo-runtime-state.ts\";\nimport type { ControlPanelStatusSnapshot } from \"./control-panel-layout.ts\";\nimport { formatCwdForFooter } from \"./footer.ts\";\n\nconst OMK_HUB_SKILL_NAMES = new Set([\n\t\"omk-skills\",\n\t\"omk-engineering\",\n\t\"omk-backend-data\",\n\t\"omk-security\",\n\t\"omk-devops-release\",\n\t\"omk-research-docs\",\n\t\"omk-design-media\",\n\t\"omk-agent-ops\",\n\t\"omk-product-ops\",\n\t\"omk-workspace-ops\",\n\t\"omk-frontend\",\n\t\"omk-loop\",\n\t\"omk-plan\",\n]);\n\nconst INVALID_MCP_NETWORK_RULES = new Set([\"mcp.network.invalid_mode\", \"mcp.network.empty_allowlist\"]);\nconst PRIVILEGED_MCP_COMMANDS = new Set([\"sudo\", \"su\"]);\nconst VERSION_COMMAND_TIMEOUT_MS = 750;\nconst HEADROOM_PYTHON_DISTRIBUTIONS = [\"headroom\", \"headroom-ai\"] as const;\n\nlet cachedHeadroomVersion: string | null | undefined;\n\ninterface McpStabilityInput {\n\treadonly commandSummary: string;\n\treadonly overriddenBy?: string;\n\treadonly networkDecision: Pick<McpServerEntry[\"networkDecision\"], \"rule\">;\n\treadonly capabilityDecision: Pick<McpServerEntry[\"capabilityDecision\"], \"malformed\" | \"unknownCapabilities\">;\n\treadonly authDecision: Pick<McpServerEntry[\"authDecision\"], \"rule\">;\n}\n\nexport function formatHeadroomStatusLabel(): string {\n\tconst version = getInstalledHeadroomVersion();\n\treturn version ? `headroom:${version}` : getHeadroomRuntimeStatus().policyId;\n}\n\nexport function countRoutableNonHubSkills(skills: readonly { readonly name: string }[]): number {\n\treturn skills.filter((skill) => !OMK_HUB_SKILL_NAMES.has(skill.name)).length;\n}\n\nexport function countStableMcpServers(entries: readonly McpStabilityInput[]): number {\n\treturn entries.filter(isStableMcpEntry).length;\n}\n\nfunction isStableMcpEntry(entry: McpStabilityInput): boolean {\n\tif (entry.overriddenBy) return false;\n\tif (entry.commandSummary === \"<unknown>\") return false;\n\tif (entry.authDecision.rule === \"mcp.auth.invalid\") return false;\n\tif (INVALID_MCP_NETWORK_RULES.has(entry.networkDecision.rule)) return false;\n\tif (entry.capabilityDecision.malformed || entry.capabilityDecision.unknownCapabilities.length > 0) return false;\n\tconst command = entry.commandSummary.split(/\\s+/, 1)[0] ?? \"\";\n\treturn !PRIVILEGED_MCP_COMMANDS.has(command);\n}\n\nfunction getInstalledHeadroomVersion(): string | null {\n\tif (cachedHeadroomVersion !== undefined) return cachedHeadroomVersion;\n\tcachedHeadroomVersion = readVersionFromCommand(\"headroom\", [\"--version\"]);\n\tif (cachedHeadroomVersion) return cachedHeadroomVersion;\n\tcachedHeadroomVersion = readVersionFromCommand(\"headroom\", [\"version\"]);\n\tif (cachedHeadroomVersion) return cachedHeadroomVersion;\n\tfor (const distribution of HEADROOM_PYTHON_DISTRIBUTIONS) {\n\t\tcachedHeadroomVersion = readPythonDistributionVersion(distribution);\n\t\tif (cachedHeadroomVersion) return cachedHeadroomVersion;\n\t}\n\tcachedHeadroomVersion = null;\n\treturn cachedHeadroomVersion;\n}\n\nfunction readPythonDistributionVersion(distribution: (typeof HEADROOM_PYTHON_DISTRIBUTIONS)[number]): string | null {\n\treturn readVersionFromCommand(\"python3\", [\n\t\t\"-c\",\n\t\t`import importlib.metadata as m; print(m.version('${distribution}'))`,\n\t]);\n}\n\nfunction readVersionFromCommand(command: string, args: readonly string[]): string | null {\n\ttry {\n\t\tconst result = spawnSync(command, [...args], {\n\t\t\tencoding: \"utf8\",\n\t\t\ttimeout: VERSION_COMMAND_TIMEOUT_MS,\n\t\t\tshell: false,\n\t\t\twindowsHide: true,\n\t\t\tenv: { PATH: process.env.PATH ?? \"\" },\n\t\t});\n\t\tif (result.error || result.status !== 0) return null;\n\t\treturn parseHeadroomVersionOutput(`${result.stdout}\\n${result.stderr}`);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function parseHeadroomVersionOutput(output: string): string | null {\n\tconst match = /\\bv?(\\d+\\.\\d+(?:\\.\\d+)?(?:[-+][0-9A-Za-z.-]+)?)\\b/.exec(output);\n\treturn match?.[1] ?? null;\n}\n\nexport function createControlPanelStatusSnapshot(\n\tsession: AgentSession,\n\tsessionManager: SessionManager,\n\tfooterData?: ReadonlyFooterDataProvider,\n): ControlPanelStatusSnapshot {\n\tconst contextUsage = session.getContextUsage();\n\tconst contextWindow = contextUsage?.contextWindow ?? session.state.model?.contextWindow ?? 0;\n\tconst mcpInventory = loadMcpInventory(sessionManager.getCwd());\n\tconst loadedSkills = session.resourceLoader.getSkills().skills;\n\tconst packageIntake = evaluatePiPackageIntake().summary;\n\tconst ansiColorState = process.env.NO_COLOR ? \"off\" : \"on\";\n\tconst cwdLabel = formatCwdForFooter(sessionManager.getCwd(), process.env.HOME || process.env.USERPROFILE);\n\treturn {\n\t\tmodelId: session.state.model?.id,\n\t\tmodelProvider: session.state.model?.provider,\n\t\tthinkingLevel: session.state.thinkingLevel ?? \"off\",\n\t\tcontextPercent: contextUsage?.percent ?? null,\n\t\tcontextWindowTokens: contextWindow,\n\t\tcontextTokens: contextUsage?.tokens ?? null,\n\t\theadroomStatus: formatHeadroomStatusLabel(),\n\t\toptimizerPolicy: getHeadroomRuntimeStatus().selector,\n\t\tmcpCount: countStableMcpServers(mcpInventory.entries),\n\t\tskillCount: countRoutableNonHubSkills(loadedSkills),\n\t\tpackageIntake,\n\t\tcwdLabel,\n\t\tgitBranch: footerData?.getGitBranch(),\n\t\ttodoState: getCurrentTodoState(),\n\t\truntimeState: \"ready\",\n\t\trouteState: \"active\",\n\t\tevidenceState: \"tracking\",\n\t\tcontrolState: \"ready\",\n\t\tdagOrchestrationState: \"DAG:omk-parallel-orchestrator\",\n\t\tansiColorState,\n\t\tstartupState: \"linked\",\n\t\tlinkState: \"ready\",\n\t\tsidebarState: \"pinned\",\n\t};\n}\n"]}
|
|
@@ -1,12 +1,102 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
1
2
|
import { getHeadroomRuntimeStatus } from "../../../core/context-budget-headroom.js";
|
|
2
3
|
import { loadMcpInventory } from "../../../core/mcp-inventory.js";
|
|
3
4
|
import { evaluatePiPackageIntake } from "../../../core/pi-package-intake.js";
|
|
4
5
|
import { getCurrentTodoState } from "../../../core/todo-runtime-state.js";
|
|
5
6
|
import { formatCwdForFooter } from "./footer.js";
|
|
7
|
+
const OMK_HUB_SKILL_NAMES = new Set([
|
|
8
|
+
"omk-skills",
|
|
9
|
+
"omk-engineering",
|
|
10
|
+
"omk-backend-data",
|
|
11
|
+
"omk-security",
|
|
12
|
+
"omk-devops-release",
|
|
13
|
+
"omk-research-docs",
|
|
14
|
+
"omk-design-media",
|
|
15
|
+
"omk-agent-ops",
|
|
16
|
+
"omk-product-ops",
|
|
17
|
+
"omk-workspace-ops",
|
|
18
|
+
"omk-frontend",
|
|
19
|
+
"omk-loop",
|
|
20
|
+
"omk-plan",
|
|
21
|
+
]);
|
|
22
|
+
const INVALID_MCP_NETWORK_RULES = new Set(["mcp.network.invalid_mode", "mcp.network.empty_allowlist"]);
|
|
23
|
+
const PRIVILEGED_MCP_COMMANDS = new Set(["sudo", "su"]);
|
|
24
|
+
const VERSION_COMMAND_TIMEOUT_MS = 750;
|
|
25
|
+
const HEADROOM_PYTHON_DISTRIBUTIONS = ["headroom", "headroom-ai"];
|
|
26
|
+
let cachedHeadroomVersion;
|
|
27
|
+
export function formatHeadroomStatusLabel() {
|
|
28
|
+
const version = getInstalledHeadroomVersion();
|
|
29
|
+
return version ? `headroom:${version}` : getHeadroomRuntimeStatus().policyId;
|
|
30
|
+
}
|
|
31
|
+
export function countRoutableNonHubSkills(skills) {
|
|
32
|
+
return skills.filter((skill) => !OMK_HUB_SKILL_NAMES.has(skill.name)).length;
|
|
33
|
+
}
|
|
34
|
+
export function countStableMcpServers(entries) {
|
|
35
|
+
return entries.filter(isStableMcpEntry).length;
|
|
36
|
+
}
|
|
37
|
+
function isStableMcpEntry(entry) {
|
|
38
|
+
if (entry.overriddenBy)
|
|
39
|
+
return false;
|
|
40
|
+
if (entry.commandSummary === "<unknown>")
|
|
41
|
+
return false;
|
|
42
|
+
if (entry.authDecision.rule === "mcp.auth.invalid")
|
|
43
|
+
return false;
|
|
44
|
+
if (INVALID_MCP_NETWORK_RULES.has(entry.networkDecision.rule))
|
|
45
|
+
return false;
|
|
46
|
+
if (entry.capabilityDecision.malformed || entry.capabilityDecision.unknownCapabilities.length > 0)
|
|
47
|
+
return false;
|
|
48
|
+
const command = entry.commandSummary.split(/\s+/, 1)[0] ?? "";
|
|
49
|
+
return !PRIVILEGED_MCP_COMMANDS.has(command);
|
|
50
|
+
}
|
|
51
|
+
function getInstalledHeadroomVersion() {
|
|
52
|
+
if (cachedHeadroomVersion !== undefined)
|
|
53
|
+
return cachedHeadroomVersion;
|
|
54
|
+
cachedHeadroomVersion = readVersionFromCommand("headroom", ["--version"]);
|
|
55
|
+
if (cachedHeadroomVersion)
|
|
56
|
+
return cachedHeadroomVersion;
|
|
57
|
+
cachedHeadroomVersion = readVersionFromCommand("headroom", ["version"]);
|
|
58
|
+
if (cachedHeadroomVersion)
|
|
59
|
+
return cachedHeadroomVersion;
|
|
60
|
+
for (const distribution of HEADROOM_PYTHON_DISTRIBUTIONS) {
|
|
61
|
+
cachedHeadroomVersion = readPythonDistributionVersion(distribution);
|
|
62
|
+
if (cachedHeadroomVersion)
|
|
63
|
+
return cachedHeadroomVersion;
|
|
64
|
+
}
|
|
65
|
+
cachedHeadroomVersion = null;
|
|
66
|
+
return cachedHeadroomVersion;
|
|
67
|
+
}
|
|
68
|
+
function readPythonDistributionVersion(distribution) {
|
|
69
|
+
return readVersionFromCommand("python3", [
|
|
70
|
+
"-c",
|
|
71
|
+
`import importlib.metadata as m; print(m.version('${distribution}'))`,
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
74
|
+
function readVersionFromCommand(command, args) {
|
|
75
|
+
try {
|
|
76
|
+
const result = spawnSync(command, [...args], {
|
|
77
|
+
encoding: "utf8",
|
|
78
|
+
timeout: VERSION_COMMAND_TIMEOUT_MS,
|
|
79
|
+
shell: false,
|
|
80
|
+
windowsHide: true,
|
|
81
|
+
env: { PATH: process.env.PATH ?? "" },
|
|
82
|
+
});
|
|
83
|
+
if (result.error || result.status !== 0)
|
|
84
|
+
return null;
|
|
85
|
+
return parseHeadroomVersionOutput(`${result.stdout}\n${result.stderr}`);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export function parseHeadroomVersionOutput(output) {
|
|
92
|
+
const match = /\bv?(\d+\.\d+(?:\.\d+)?(?:[-+][0-9A-Za-z.-]+)?)\b/.exec(output);
|
|
93
|
+
return match?.[1] ?? null;
|
|
94
|
+
}
|
|
6
95
|
export function createControlPanelStatusSnapshot(session, sessionManager, footerData) {
|
|
7
96
|
const contextUsage = session.getContextUsage();
|
|
8
97
|
const contextWindow = contextUsage?.contextWindow ?? session.state.model?.contextWindow ?? 0;
|
|
9
|
-
const
|
|
98
|
+
const mcpInventory = loadMcpInventory(sessionManager.getCwd());
|
|
99
|
+
const loadedSkills = session.resourceLoader.getSkills().skills;
|
|
10
100
|
const packageIntake = evaluatePiPackageIntake().summary;
|
|
11
101
|
const ansiColorState = process.env.NO_COLOR ? "off" : "on";
|
|
12
102
|
const cwdLabel = formatCwdForFooter(sessionManager.getCwd(), process.env.HOME || process.env.USERPROFILE);
|
|
@@ -17,10 +107,10 @@ export function createControlPanelStatusSnapshot(session, sessionManager, footer
|
|
|
17
107
|
contextPercent: contextUsage?.percent ?? null,
|
|
18
108
|
contextWindowTokens: contextWindow,
|
|
19
109
|
contextTokens: contextUsage?.tokens ?? null,
|
|
20
|
-
headroomStatus:
|
|
21
|
-
optimizerPolicy:
|
|
22
|
-
mcpCount:
|
|
23
|
-
skillCount:
|
|
110
|
+
headroomStatus: formatHeadroomStatusLabel(),
|
|
111
|
+
optimizerPolicy: getHeadroomRuntimeStatus().selector,
|
|
112
|
+
mcpCount: countStableMcpServers(mcpInventory.entries),
|
|
113
|
+
skillCount: countRoutableNonHubSkills(loadedSkills),
|
|
24
114
|
packageIntake,
|
|
25
115
|
cwdLabel,
|
|
26
116
|
gitBranch: footerData?.getGitBranch(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-panel-runtime-status.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/control-panel-runtime-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,gCAAgC,CAC/C,OAAqB,EACrB,cAA8B,EAC9B,UAAuC,EACV;IAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,YAAY,EAAE,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,uBAAuB,EAAE,CAAC,OAAO,CAAC;IACxD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1G,OAAO;QACN,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE;QAChC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ;QAC5C,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK;QACnD,cAAc,EAAE,YAAY,EAAE,OAAO,IAAI,IAAI;QAC7C,mBAAmB,EAAE,aAAa;QAClC,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,IAAI;QAC3C,cAAc,EAAE,QAAQ,CAAC,QAAQ;QACjC,eAAe,EAAE,QAAQ,CAAC,QAAQ;QAClC,QAAQ,EAAE,gBAAgB,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;QAClE,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,MAAM;QAC5D,aAAa;QACb,QAAQ;QACR,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE;QACrC,SAAS,EAAE,mBAAmB,EAAE;QAChC,YAAY,EAAE,OAAO;QACrB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,UAAU;QACzB,YAAY,EAAE,OAAO;QACrB,qBAAqB,EAAE,+BAA+B;QACtD,cAAc;QACd,YAAY,EAAE,QAAQ;QACtB,SAAS,EAAE,OAAO;QAClB,YAAY,EAAE,QAAQ;KACtB,CAAC;AAAA,CACF","sourcesContent":["import type { AgentSession } from \"../../../core/agent-session.ts\";\nimport { getHeadroomRuntimeStatus } from \"../../../core/context-budget-headroom.ts\";\nimport type { ReadonlyFooterDataProvider } from \"../../../core/footer-data-provider.ts\";\nimport { loadMcpInventory } from \"../../../core/mcp-inventory.ts\";\nimport { evaluatePiPackageIntake } from \"../../../core/pi-package-intake.ts\";\nimport type { SessionManager } from \"../../../core/session-manager.ts\";\nimport { getCurrentTodoState } from \"../../../core/todo-runtime-state.ts\";\nimport type { ControlPanelStatusSnapshot } from \"./control-panel-layout.ts\";\nimport { formatCwdForFooter } from \"./footer.ts\";\n\nexport function createControlPanelStatusSnapshot(\n\tsession: AgentSession,\n\tsessionManager: SessionManager,\n\tfooterData?: ReadonlyFooterDataProvider,\n): ControlPanelStatusSnapshot {\n\tconst contextUsage = session.getContextUsage();\n\tconst contextWindow = contextUsage?.contextWindow ?? session.state.model?.contextWindow ?? 0;\n\tconst headroom = getHeadroomRuntimeStatus();\n\tconst packageIntake = evaluatePiPackageIntake().summary;\n\tconst ansiColorState = process.env.NO_COLOR ? \"off\" : \"on\";\n\tconst cwdLabel = formatCwdForFooter(sessionManager.getCwd(), process.env.HOME || process.env.USERPROFILE);\n\treturn {\n\t\tmodelId: session.state.model?.id,\n\t\tmodelProvider: session.state.model?.provider,\n\t\tthinkingLevel: session.state.thinkingLevel ?? \"off\",\n\t\tcontextPercent: contextUsage?.percent ?? null,\n\t\tcontextWindowTokens: contextWindow,\n\t\tcontextTokens: contextUsage?.tokens ?? null,\n\t\theadroomStatus: headroom.policyId,\n\t\toptimizerPolicy: headroom.selector,\n\t\tmcpCount: loadMcpInventory(sessionManager.getCwd()).entries.length,\n\t\tskillCount: session.resourceLoader.getSkills().skills.length,\n\t\tpackageIntake,\n\t\tcwdLabel,\n\t\tgitBranch: footerData?.getGitBranch(),\n\t\ttodoState: getCurrentTodoState(),\n\t\truntimeState: \"ready\",\n\t\trouteState: \"active\",\n\t\tevidenceState: \"tracking\",\n\t\tcontrolState: \"ready\",\n\t\tdagOrchestrationState: \"DAG:omk-parallel-orchestrator\",\n\t\tansiColorState,\n\t\tstartupState: \"linked\",\n\t\tlinkState: \"ready\",\n\t\tsidebarState: \"pinned\",\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"control-panel-runtime-status.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/control-panel-runtime-status.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawnSync } from \"node:child_process\";\nimport type { AgentSession } from \"../../../core/agent-session.ts\";\nimport { getHeadroomRuntimeStatus } from \"../../../core/context-budget-headroom.ts\";\nimport type { ReadonlyFooterDataProvider } from \"../../../core/footer-data-provider.ts\";\nimport { loadMcpInventory, type McpServerEntry } from \"../../../core/mcp-inventory.ts\";\nimport { evaluatePiPackageIntake } from \"../../../core/pi-package-intake.ts\";\nimport type { SessionManager } from \"../../../core/session-manager.ts\";\nimport { getCurrentTodoState } from \"../../../core/todo-runtime-state.ts\";\nimport type { ControlPanelStatusSnapshot } from \"./control-panel-layout.ts\";\nimport { formatCwdForFooter } from \"./footer.ts\";\n\nconst OMK_HUB_SKILL_NAMES = new Set([\n\t\"omk-skills\",\n\t\"omk-engineering\",\n\t\"omk-backend-data\",\n\t\"omk-security\",\n\t\"omk-devops-release\",\n\t\"omk-research-docs\",\n\t\"omk-design-media\",\n\t\"omk-agent-ops\",\n\t\"omk-product-ops\",\n\t\"omk-workspace-ops\",\n\t\"omk-frontend\",\n\t\"omk-loop\",\n\t\"omk-plan\",\n]);\n\nconst INVALID_MCP_NETWORK_RULES = new Set([\"mcp.network.invalid_mode\", \"mcp.network.empty_allowlist\"]);\nconst PRIVILEGED_MCP_COMMANDS = new Set([\"sudo\", \"su\"]);\nconst VERSION_COMMAND_TIMEOUT_MS = 750;\nconst HEADROOM_PYTHON_DISTRIBUTIONS = [\"headroom\", \"headroom-ai\"] as const;\n\nlet cachedHeadroomVersion: string | null | undefined;\n\ninterface McpStabilityInput {\n\treadonly commandSummary: string;\n\treadonly overriddenBy?: string;\n\treadonly networkDecision: Pick<McpServerEntry[\"networkDecision\"], \"rule\">;\n\treadonly capabilityDecision: Pick<McpServerEntry[\"capabilityDecision\"], \"malformed\" | \"unknownCapabilities\">;\n\treadonly authDecision: Pick<McpServerEntry[\"authDecision\"], \"rule\">;\n}\n\nexport function formatHeadroomStatusLabel(): string {\n\tconst version = getInstalledHeadroomVersion();\n\treturn version ? `headroom:${version}` : getHeadroomRuntimeStatus().policyId;\n}\n\nexport function countRoutableNonHubSkills(skills: readonly { readonly name: string }[]): number {\n\treturn skills.filter((skill) => !OMK_HUB_SKILL_NAMES.has(skill.name)).length;\n}\n\nexport function countStableMcpServers(entries: readonly McpStabilityInput[]): number {\n\treturn entries.filter(isStableMcpEntry).length;\n}\n\nfunction isStableMcpEntry(entry: McpStabilityInput): boolean {\n\tif (entry.overriddenBy) return false;\n\tif (entry.commandSummary === \"<unknown>\") return false;\n\tif (entry.authDecision.rule === \"mcp.auth.invalid\") return false;\n\tif (INVALID_MCP_NETWORK_RULES.has(entry.networkDecision.rule)) return false;\n\tif (entry.capabilityDecision.malformed || entry.capabilityDecision.unknownCapabilities.length > 0) return false;\n\tconst command = entry.commandSummary.split(/\\s+/, 1)[0] ?? \"\";\n\treturn !PRIVILEGED_MCP_COMMANDS.has(command);\n}\n\nfunction getInstalledHeadroomVersion(): string | null {\n\tif (cachedHeadroomVersion !== undefined) return cachedHeadroomVersion;\n\tcachedHeadroomVersion = readVersionFromCommand(\"headroom\", [\"--version\"]);\n\tif (cachedHeadroomVersion) return cachedHeadroomVersion;\n\tcachedHeadroomVersion = readVersionFromCommand(\"headroom\", [\"version\"]);\n\tif (cachedHeadroomVersion) return cachedHeadroomVersion;\n\tfor (const distribution of HEADROOM_PYTHON_DISTRIBUTIONS) {\n\t\tcachedHeadroomVersion = readPythonDistributionVersion(distribution);\n\t\tif (cachedHeadroomVersion) return cachedHeadroomVersion;\n\t}\n\tcachedHeadroomVersion = null;\n\treturn cachedHeadroomVersion;\n}\n\nfunction readPythonDistributionVersion(distribution: (typeof HEADROOM_PYTHON_DISTRIBUTIONS)[number]): string | null {\n\treturn readVersionFromCommand(\"python3\", [\n\t\t\"-c\",\n\t\t`import importlib.metadata as m; print(m.version('${distribution}'))`,\n\t]);\n}\n\nfunction readVersionFromCommand(command: string, args: readonly string[]): string | null {\n\ttry {\n\t\tconst result = spawnSync(command, [...args], {\n\t\t\tencoding: \"utf8\",\n\t\t\ttimeout: VERSION_COMMAND_TIMEOUT_MS,\n\t\t\tshell: false,\n\t\t\twindowsHide: true,\n\t\t\tenv: { PATH: process.env.PATH ?? \"\" },\n\t\t});\n\t\tif (result.error || result.status !== 0) return null;\n\t\treturn parseHeadroomVersionOutput(`${result.stdout}\\n${result.stderr}`);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function parseHeadroomVersionOutput(output: string): string | null {\n\tconst match = /\\bv?(\\d+\\.\\d+(?:\\.\\d+)?(?:[-+][0-9A-Za-z.-]+)?)\\b/.exec(output);\n\treturn match?.[1] ?? null;\n}\n\nexport function createControlPanelStatusSnapshot(\n\tsession: AgentSession,\n\tsessionManager: SessionManager,\n\tfooterData?: ReadonlyFooterDataProvider,\n): ControlPanelStatusSnapshot {\n\tconst contextUsage = session.getContextUsage();\n\tconst contextWindow = contextUsage?.contextWindow ?? session.state.model?.contextWindow ?? 0;\n\tconst mcpInventory = loadMcpInventory(sessionManager.getCwd());\n\tconst loadedSkills = session.resourceLoader.getSkills().skills;\n\tconst packageIntake = evaluatePiPackageIntake().summary;\n\tconst ansiColorState = process.env.NO_COLOR ? \"off\" : \"on\";\n\tconst cwdLabel = formatCwdForFooter(sessionManager.getCwd(), process.env.HOME || process.env.USERPROFILE);\n\treturn {\n\t\tmodelId: session.state.model?.id,\n\t\tmodelProvider: session.state.model?.provider,\n\t\tthinkingLevel: session.state.thinkingLevel ?? \"off\",\n\t\tcontextPercent: contextUsage?.percent ?? null,\n\t\tcontextWindowTokens: contextWindow,\n\t\tcontextTokens: contextUsage?.tokens ?? null,\n\t\theadroomStatus: formatHeadroomStatusLabel(),\n\t\toptimizerPolicy: getHeadroomRuntimeStatus().selector,\n\t\tmcpCount: countStableMcpServers(mcpInventory.entries),\n\t\tskillCount: countRoutableNonHubSkills(loadedSkills),\n\t\tpackageIntake,\n\t\tcwdLabel,\n\t\tgitBranch: footerData?.getGitBranch(),\n\t\ttodoState: getCurrentTodoState(),\n\t\truntimeState: \"ready\",\n\t\trouteState: \"active\",\n\t\tevidenceState: \"tracking\",\n\t\tcontrolState: \"ready\",\n\t\tdagOrchestrationState: \"DAG:omk-parallel-orchestrator\",\n\t\tansiColorState,\n\t\tstartupState: \"linked\",\n\t\tlinkState: \"ready\",\n\t\tsidebarState: \"pinned\",\n\t};\n}\n"]}
|
|
@@ -328,7 +328,11 @@ export declare class InteractiveMode {
|
|
|
328
328
|
private showSelector;
|
|
329
329
|
private showSettingsSelector;
|
|
330
330
|
private handleThinkCommand;
|
|
331
|
+
private applyThinkingSelection;
|
|
332
|
+
private enableAutoThinkingMode;
|
|
331
333
|
private applyThinkingLevel;
|
|
334
|
+
private getThinkingSelectorValue;
|
|
335
|
+
private getThinkingSelectorLevels;
|
|
332
336
|
private handleModelCommand;
|
|
333
337
|
private findExactModelMatch;
|
|
334
338
|
private getModelCandidates;
|