open-multi-agent-kit 0.90.0 → 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.
Files changed (168) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +20 -31
  3. package/dist/cli/args.d.ts +0 -2
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +1 -7
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/core/agent-session.d.ts +2 -0
  8. package/dist/core/agent-session.d.ts.map +1 -1
  9. package/dist/core/agent-session.js +41 -5
  10. package/dist/core/agent-session.js.map +1 -1
  11. package/dist/core/bang-skill-invocation.d.ts +26 -0
  12. package/dist/core/bang-skill-invocation.d.ts.map +1 -0
  13. package/dist/core/bang-skill-invocation.js +59 -0
  14. package/dist/core/bang-skill-invocation.js.map +1 -0
  15. package/dist/core/compactor.d.ts.map +1 -1
  16. package/dist/core/compactor.js +0 -3
  17. package/dist/core/compactor.js.map +1 -1
  18. package/dist/core/context-budget-governor-v2.d.ts +2 -1
  19. package/dist/core/context-budget-governor-v2.d.ts.map +1 -1
  20. package/dist/core/context-budget-governor-v2.js +1 -0
  21. package/dist/core/context-budget-governor-v2.js.map +1 -1
  22. package/dist/core/context-budget-headroom-types.d.ts +8 -0
  23. package/dist/core/context-budget-headroom-types.d.ts.map +1 -1
  24. package/dist/core/context-budget-headroom-types.js.map +1 -1
  25. package/dist/core/context-budget-headroom.d.ts +1 -1
  26. package/dist/core/context-budget-headroom.d.ts.map +1 -1
  27. package/dist/core/context-budget-headroom.js +17 -4
  28. package/dist/core/context-budget-headroom.js.map +1 -1
  29. package/dist/core/context-budget-system-prompt.d.ts +2 -1
  30. package/dist/core/context-budget-system-prompt.d.ts.map +1 -1
  31. package/dist/core/context-budget-system-prompt.js +6 -1
  32. package/dist/core/context-budget-system-prompt.js.map +1 -1
  33. package/dist/core/context-budget-v2-cache-hash.d.ts +3 -0
  34. package/dist/core/context-budget-v2-cache-hash.d.ts.map +1 -0
  35. package/dist/core/context-budget-v2-cache-hash.js +16 -0
  36. package/dist/core/context-budget-v2-cache-hash.js.map +1 -0
  37. package/dist/core/context-budget-v2-cache-keys.d.ts +58 -0
  38. package/dist/core/context-budget-v2-cache-keys.d.ts.map +1 -0
  39. package/dist/core/context-budget-v2-cache-keys.js +128 -0
  40. package/dist/core/context-budget-v2-cache-keys.js.map +1 -0
  41. package/dist/core/context-budget-v2-cache-provider.d.ts +23 -0
  42. package/dist/core/context-budget-v2-cache-provider.d.ts.map +1 -0
  43. package/dist/core/context-budget-v2-cache-provider.js +29 -0
  44. package/dist/core/context-budget-v2-cache-provider.js.map +1 -0
  45. package/dist/core/context-budget-v2-cache-telemetry.d.ts +36 -0
  46. package/dist/core/context-budget-v2-cache-telemetry.d.ts.map +1 -0
  47. package/dist/core/context-budget-v2-cache-telemetry.js +64 -0
  48. package/dist/core/context-budget-v2-cache-telemetry.js.map +1 -0
  49. package/dist/core/context-budget-v2-cache-validation.d.ts +36 -0
  50. package/dist/core/context-budget-v2-cache-validation.d.ts.map +1 -0
  51. package/dist/core/context-budget-v2-cache-validation.js +98 -0
  52. package/dist/core/context-budget-v2-cache-validation.js.map +1 -0
  53. package/dist/core/context-budget-v2-cache.d.ts +36 -0
  54. package/dist/core/context-budget-v2-cache.d.ts.map +1 -0
  55. package/dist/core/context-budget-v2-cache.js +50 -0
  56. package/dist/core/context-budget-v2-cache.js.map +1 -0
  57. package/dist/core/context-budget-v2-plan-cache-keys.d.ts +16 -0
  58. package/dist/core/context-budget-v2-plan-cache-keys.d.ts.map +1 -0
  59. package/dist/core/context-budget-v2-plan-cache-keys.js +49 -0
  60. package/dist/core/context-budget-v2-plan-cache-keys.js.map +1 -0
  61. package/dist/core/context-budget-v2-planner.d.ts.map +1 -1
  62. package/dist/core/context-budget-v2-planner.js +55 -2
  63. package/dist/core/context-budget-v2-planner.js.map +1 -1
  64. package/dist/core/context-budget-v2-representation-cache.d.ts +27 -0
  65. package/dist/core/context-budget-v2-representation-cache.d.ts.map +1 -0
  66. package/dist/core/context-budget-v2-representation-cache.js +173 -0
  67. package/dist/core/context-budget-v2-representation-cache.js.map +1 -0
  68. package/dist/core/context-budget-v2-selection.d.ts +2 -0
  69. package/dist/core/context-budget-v2-selection.d.ts.map +1 -1
  70. package/dist/core/context-budget-v2-selection.js +12 -2
  71. package/dist/core/context-budget-v2-selection.js.map +1 -1
  72. package/dist/core/context-budget-v2-types.d.ts +107 -1
  73. package/dist/core/context-budget-v2-types.d.ts.map +1 -1
  74. package/dist/core/context-budget-v2-types.js.map +1 -1
  75. package/dist/core/headroom.d.ts.map +1 -1
  76. package/dist/core/headroom.js +0 -4
  77. package/dist/core/headroom.js.map +1 -1
  78. package/dist/core/hook-inventory.d.ts.map +1 -1
  79. package/dist/core/hook-inventory.js +6 -0
  80. package/dist/core/hook-inventory.js.map +1 -1
  81. package/dist/core/mcp-computer-use-presets.d.ts +64 -0
  82. package/dist/core/mcp-computer-use-presets.d.ts.map +1 -0
  83. package/dist/core/mcp-computer-use-presets.js +158 -0
  84. package/dist/core/mcp-computer-use-presets.js.map +1 -0
  85. package/dist/core/mcp-public-presets.d.ts +578 -0
  86. package/dist/core/mcp-public-presets.d.ts.map +1 -0
  87. package/dist/core/mcp-public-presets.js +647 -0
  88. package/dist/core/mcp-public-presets.js.map +1 -0
  89. package/dist/core/model-registry.d.ts.map +1 -1
  90. package/dist/core/model-registry.js +1 -0
  91. package/dist/core/model-registry.js.map +1 -1
  92. package/dist/core/pi-package-intake-candidates.d.ts +14 -1
  93. package/dist/core/pi-package-intake-candidates.d.ts.map +1 -1
  94. package/dist/core/pi-package-intake-candidates.js +182 -0
  95. package/dist/core/pi-package-intake-candidates.js.map +1 -1
  96. package/dist/core/pi-package-intake.d.ts +8 -1
  97. package/dist/core/pi-package-intake.d.ts.map +1 -1
  98. package/dist/core/pi-package-intake.js +14 -4
  99. package/dist/core/pi-package-intake.js.map +1 -1
  100. package/dist/core/reverse-skill.d.ts +2 -0
  101. package/dist/core/reverse-skill.d.ts.map +1 -0
  102. package/dist/core/reverse-skill.js +7 -0
  103. package/dist/core/reverse-skill.js.map +1 -0
  104. package/dist/core/settings-manager.d.ts +3 -3
  105. package/dist/core/settings-manager.d.ts.map +1 -1
  106. package/dist/core/settings-manager.js.map +1 -1
  107. package/dist/core/system-prompt.d.ts +2 -0
  108. package/dist/core/system-prompt.d.ts.map +1 -1
  109. package/dist/core/system-prompt.js +58 -5
  110. package/dist/core/system-prompt.js.map +1 -1
  111. package/dist/index.d.ts +1 -0
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +1 -0
  114. package/dist/index.js.map +1 -1
  115. package/dist/migrations.d.ts +19 -0
  116. package/dist/migrations.d.ts.map +1 -1
  117. package/dist/migrations.js +39 -15
  118. package/dist/migrations.js.map +1 -1
  119. package/dist/modes/interactive/components/control-panel-box.d.ts +3 -3
  120. package/dist/modes/interactive/components/control-panel-box.d.ts.map +1 -1
  121. package/dist/modes/interactive/components/control-panel-box.js +10 -10
  122. package/dist/modes/interactive/components/control-panel-box.js.map +1 -1
  123. package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -1
  124. package/dist/modes/interactive/components/control-panel-gradient-motion.js +2 -1
  125. package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -1
  126. package/dist/modes/interactive/components/control-panel-layout.d.ts +15 -1
  127. package/dist/modes/interactive/components/control-panel-layout.d.ts.map +1 -1
  128. package/dist/modes/interactive/components/control-panel-layout.js +212 -68
  129. package/dist/modes/interactive/components/control-panel-layout.js.map +1 -1
  130. package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -1
  131. package/dist/modes/interactive/components/control-panel-runtime-status.js +10 -0
  132. package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -1
  133. package/dist/modes/interactive/components/control-panel-sparkles.d.ts +27 -0
  134. package/dist/modes/interactive/components/control-panel-sparkles.d.ts.map +1 -0
  135. package/dist/modes/interactive/components/control-panel-sparkles.js +42 -0
  136. package/dist/modes/interactive/components/control-panel-sparkles.js.map +1 -0
  137. package/dist/modes/interactive/components/control-panel.d.ts +8 -0
  138. package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
  139. package/dist/modes/interactive/components/control-panel.js +40 -8
  140. package/dist/modes/interactive/components/control-panel.js.map +1 -1
  141. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  142. package/dist/modes/interactive/components/settings-selector.js +2 -1
  143. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  144. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  145. package/dist/modes/interactive/components/thinking-selector.js +2 -1
  146. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  147. package/dist/modes/interactive/interactive-mode.d.ts +2 -0
  148. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  149. package/dist/modes/interactive/interactive-mode.js +63 -14
  150. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  151. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  152. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  153. package/dist/modes/interactive/theme/theme.js +2 -0
  154. package/dist/modes/interactive/theme/theme.js.map +1 -1
  155. package/docs/skills.md +8 -4
  156. package/docs/usage.md +4 -3
  157. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  158. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  159. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  160. package/examples/extensions/gondolin/package-lock.json +2 -2
  161. package/examples/extensions/gondolin/package.json +1 -1
  162. package/examples/extensions/preset.ts +2 -2
  163. package/examples/extensions/sandbox/package-lock.json +2 -2
  164. package/examples/extensions/sandbox/package.json +1 -1
  165. package/examples/extensions/with-deps/package-lock.json +2 -2
  166. package/examples/extensions/with-deps/package.json +1 -1
  167. package/npm-shrinkwrap.json +27 -34
  168. package/package.json +5 -5
@@ -20,6 +20,7 @@ import { stripFrontmatter } from "../utils/frontmatter.js";
20
20
  import { resolvePath } from "../utils/paths.js";
21
21
  import { sleep } from "../utils/sleep.js";
22
22
  import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage } from "./auth-guidance.js";
23
+ import { parseBangInvocation } from "./bang-skill-invocation.js";
23
24
  import { executeBashWithOperations } from "./bash-executor.js";
24
25
  import { classifyShellCommand } from "./command-safety.js";
25
26
  import { calculateContextTokens, collectEntriesForBranchSummary, compact, estimateContextTokens, estimateProjectedContextTokens, generateBranchSummary, prepareCompaction, shouldCompact, } from "./compaction/index.js";
@@ -53,6 +54,17 @@ export function parseSkillBlock(text) {
53
54
  userMessage: match[4]?.trim() || undefined,
54
55
  };
55
56
  }
57
+ function mergePromptActiveSkillNames(first, second) {
58
+ const names = [];
59
+ const seen = new Set();
60
+ for (const name of [...first, ...second]) {
61
+ if (!seen.has(name)) {
62
+ seen.add(name);
63
+ names.push(name);
64
+ }
65
+ }
66
+ return names;
67
+ }
56
68
  // ============================================================================
57
69
  // Constants
58
70
  // ============================================================================
@@ -852,12 +864,29 @@ export class AgentSession {
852
864
  async prompt(text, options) {
853
865
  const expandPromptTemplates = options?.expandPromptTemplates ?? true;
854
866
  const preflightResult = options?.preflightResult;
867
+ let currentText = text;
868
+ let promptActiveSkillNames = [...(options?.activeSkillNames ?? [])];
869
+ let promptActiveSkillSource = options?.activeSkillSource;
870
+ let isBangSkillInvocation = false;
871
+ if (expandPromptTemplates) {
872
+ const bangInvocation = parseBangInvocation(text, {
873
+ hasSkill: (name) => this._resourceLoader.getSkills().skills.some((skill) => skill.name === name),
874
+ });
875
+ if (bangInvocation.kind === "skill") {
876
+ isBangSkillInvocation = true;
877
+ currentText = bangInvocation.prompt
878
+ ? `/skill:${bangInvocation.skillName} ${bangInvocation.prompt}`
879
+ : `/skill:${bangInvocation.skillName}`;
880
+ promptActiveSkillNames = mergePromptActiveSkillNames(promptActiveSkillNames, bangInvocation.activeSkillNames);
881
+ promptActiveSkillSource = bangInvocation.source;
882
+ }
883
+ }
855
884
  let messages;
856
885
  try {
857
886
  // Handle extension commands first (execute immediately, even during streaming)
858
887
  // Extension commands manage their own LLM interaction via omk.sendMessage()
859
- if (expandPromptTemplates && text.startsWith("/")) {
860
- const handled = await this._tryExecuteExtensionCommand(text);
888
+ if (expandPromptTemplates && !isBangSkillInvocation && currentText.startsWith("/")) {
889
+ const handled = await this._tryExecuteExtensionCommand(currentText);
861
890
  if (handled) {
862
891
  // Extension command executed, no prompt to send
863
892
  preflightResult?.(true);
@@ -865,7 +894,6 @@ export class AgentSession {
865
894
  }
866
895
  }
867
896
  // Emit input event for extension interception (before skill/template expansion)
868
- let currentText = text;
869
897
  let currentImages = options?.images;
870
898
  if (this._extensionRunner.hasHandlers("input")) {
871
899
  const inputResult = await this._extensionRunner.emitInput(currentText, currentImages, options?.source ?? "interactive", this.isStreaming ? options?.streamingBehavior : undefined);
@@ -943,8 +971,16 @@ export class AgentSession {
943
971
  messages.push(msg);
944
972
  }
945
973
  this._pendingNextTurnMessages = [];
974
+ const turnSystemPromptOptions = promptActiveSkillNames.length > 0
975
+ ? {
976
+ ...this._baseSystemPromptOptions,
977
+ activeSkillNames: promptActiveSkillNames,
978
+ ...(promptActiveSkillSource ? { activeSkillSource: promptActiveSkillSource } : {}),
979
+ }
980
+ : this._baseSystemPromptOptions;
981
+ const turnSystemPrompt = promptActiveSkillNames.length > 0 ? buildSystemPrompt(turnSystemPromptOptions) : this._baseSystemPrompt;
946
982
  // Emit before_agent_start extension event
947
- const result = await this._extensionRunner.emitBeforeAgentStart(expandedText, currentImages, this._baseSystemPrompt, this._baseSystemPromptOptions);
983
+ const result = await this._extensionRunner.emitBeforeAgentStart(expandedText, currentImages, turnSystemPrompt, turnSystemPromptOptions);
948
984
  // Add all custom messages from extensions
949
985
  if (result?.messages) {
950
986
  for (const msg of result.messages) {
@@ -964,7 +1000,7 @@ export class AgentSession {
964
1000
  }
965
1001
  else {
966
1002
  // Ensure we're using the base prompt (in case previous turn had modifications)
967
- this.agent.state.systemPrompt = this._baseSystemPrompt;
1003
+ this.agent.state.systemPrompt = turnSystemPrompt;
968
1004
  }
969
1005
  await this._checkProjectedCompaction(messages);
970
1006
  }