open-multi-agent-kit 0.90.3 → 0.90.4

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 (171) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +16 -14
  3. package/dist/config.d.ts +3 -6
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +27 -19
  6. package/dist/config.js.map +1 -1
  7. package/dist/core/adaptorch-bridge.d.ts +257 -0
  8. package/dist/core/adaptorch-bridge.d.ts.map +1 -0
  9. package/dist/core/adaptorch-bridge.js +473 -0
  10. package/dist/core/adaptorch-bridge.js.map +1 -0
  11. package/dist/core/agent-session.d.ts +130 -0
  12. package/dist/core/agent-session.d.ts.map +1 -1
  13. package/dist/core/agent-session.js +286 -0
  14. package/dist/core/agent-session.js.map +1 -1
  15. package/dist/core/bang-skill-invocation.d.ts.map +1 -1
  16. package/dist/core/bang-skill-invocation.js +149 -0
  17. package/dist/core/bang-skill-invocation.js.map +1 -1
  18. package/dist/core/compaction/utils.d.ts.map +1 -1
  19. package/dist/core/compaction/utils.js +15 -2
  20. package/dist/core/compaction/utils.js.map +1 -1
  21. package/dist/core/domain-loadouts.d.ts.map +1 -1
  22. package/dist/core/domain-loadouts.js +1 -1
  23. package/dist/core/domain-loadouts.js.map +1 -1
  24. package/dist/core/reasoning-router-bias.d.ts +119 -0
  25. package/dist/core/reasoning-router-bias.d.ts.map +1 -0
  26. package/dist/core/reasoning-router-bias.js +287 -0
  27. package/dist/core/reasoning-router-bias.js.map +1 -0
  28. package/dist/core/reasoning-router-v2.d.ts +94 -0
  29. package/dist/core/reasoning-router-v2.d.ts.map +1 -0
  30. package/dist/core/reasoning-router-v2.js +288 -0
  31. package/dist/core/reasoning-router-v2.js.map +1 -0
  32. package/dist/core/reasoning-router-v3.d.ts +15 -0
  33. package/dist/core/reasoning-router-v3.d.ts.map +1 -0
  34. package/dist/core/reasoning-router-v3.js +193 -0
  35. package/dist/core/reasoning-router-v3.js.map +1 -0
  36. package/dist/core/reasoning-router-v4-weights.d.ts +124 -0
  37. package/dist/core/reasoning-router-v4-weights.d.ts.map +1 -0
  38. package/dist/core/reasoning-router-v4-weights.js +112 -0
  39. package/dist/core/reasoning-router-v4-weights.js.map +1 -0
  40. package/dist/core/reasoning-router-v4.d.ts +163 -0
  41. package/dist/core/reasoning-router-v4.d.ts.map +1 -0
  42. package/dist/core/reasoning-router-v4.js +683 -0
  43. package/dist/core/reasoning-router-v4.js.map +1 -0
  44. package/dist/core/reasoning-router-weights.d.ts +155 -0
  45. package/dist/core/reasoning-router-weights.d.ts.map +1 -0
  46. package/dist/core/reasoning-router-weights.js +204 -0
  47. package/dist/core/reasoning-router-weights.js.map +1 -0
  48. package/dist/core/reasoning-router.d.ts +44 -0
  49. package/dist/core/reasoning-router.d.ts.map +1 -0
  50. package/dist/core/reasoning-router.js +138 -0
  51. package/dist/core/reasoning-router.js.map +1 -0
  52. package/dist/core/router-feedback-collector.d.ts +101 -0
  53. package/dist/core/router-feedback-collector.d.ts.map +1 -0
  54. package/dist/core/router-feedback-collector.js +239 -0
  55. package/dist/core/router-feedback-collector.js.map +1 -0
  56. package/dist/core/settings-manager.d.ts +28 -0
  57. package/dist/core/settings-manager.d.ts.map +1 -1
  58. package/dist/core/settings-manager.js +16 -0
  59. package/dist/core/settings-manager.js.map +1 -1
  60. package/dist/core/slash-commands.d.ts.map +1 -1
  61. package/dist/core/slash-commands.js +4 -1
  62. package/dist/core/slash-commands.js.map +1 -1
  63. package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +15 -0
  64. package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -1
  65. package/dist/modes/interactive/components/control-panel-runtime-status.js +95 -5
  66. package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -1
  67. package/dist/modes/interactive/interactive-mode.d.ts +4 -0
  68. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  69. package/dist/modes/interactive/interactive-mode.js +143 -18
  70. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  71. package/docs/loadout-domains/README.md +8 -6
  72. package/docs/loadout-domains/ai-agent-ops.md +3 -2
  73. package/docs/loadout-domains/backend-api.md +3 -2
  74. package/docs/loadout-domains/data-science.md +3 -2
  75. package/docs/loadout-domains/devops-infra.md +2 -1
  76. package/docs/loadout-domains/docs-writing.md +7 -2
  77. package/docs/loadout-domains/frontend-ui.md +42 -11
  78. package/docs/loadout-domains/korean-document.md +83 -0
  79. package/docs/loadout-domains/mobile.md +1 -1
  80. package/docs/loadout-domains/qa-testing.md +4 -2
  81. package/docs/loadout-domains/security-audit.md +2 -1
  82. package/docs/loadout-domains/visual-qa.md +94 -0
  83. package/docs/skills.md +4 -1
  84. package/docs/usage.md +37 -3
  85. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  86. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  87. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  88. package/examples/extensions/gondolin/package-lock.json +2 -2
  89. package/examples/extensions/gondolin/package.json +1 -1
  90. package/examples/extensions/sandbox/package-lock.json +2 -2
  91. package/examples/extensions/sandbox/package.json +1 -1
  92. package/examples/extensions/with-deps/package-lock.json +2 -2
  93. package/examples/extensions/with-deps/package.json +1 -1
  94. package/npm-shrinkwrap.json +12 -12
  95. package/package.json +4 -4
  96. package/dist/agents/jailbreak/index.d.ts +0 -7
  97. package/dist/agents/jailbreak/index.d.ts.map +0 -1
  98. package/dist/agents/jailbreak/index.js +0 -7
  99. package/dist/agents/jailbreak/index.js.map +0 -1
  100. package/dist/agents/jailbreak/subagent-f.d.ts +0 -44
  101. package/dist/agents/jailbreak/subagent-f.d.ts.map +0 -1
  102. package/dist/agents/jailbreak/subagent-f.js +0 -60
  103. package/dist/agents/jailbreak/subagent-f.js.map +0 -1
  104. package/dist/cli/jailbreak-args.d.ts +0 -26
  105. package/dist/cli/jailbreak-args.d.ts.map +0 -1
  106. package/dist/cli/jailbreak-args.js +0 -86
  107. package/dist/cli/jailbreak-args.js.map +0 -1
  108. package/dist/commands/jailbreak.d.ts +0 -49
  109. package/dist/commands/jailbreak.d.ts.map +0 -1
  110. package/dist/commands/jailbreak.js +0 -201
  111. package/dist/commands/jailbreak.js.map +0 -1
  112. package/dist/encoding/index.d.ts +0 -6
  113. package/dist/encoding/index.d.ts.map +0 -1
  114. package/dist/encoding/index.js +0 -6
  115. package/dist/encoding/index.js.map +0 -1
  116. package/dist/encoding/l4-encoder.d.ts +0 -96
  117. package/dist/encoding/l4-encoder.d.ts.map +0 -1
  118. package/dist/encoding/l4-encoder.js +0 -474
  119. package/dist/encoding/l4-encoder.js.map +0 -1
  120. package/dist/fuzzing/index.d.ts +0 -6
  121. package/dist/fuzzing/index.d.ts.map +0 -1
  122. package/dist/fuzzing/index.js +0 -6
  123. package/dist/fuzzing/index.js.map +0 -1
  124. package/dist/fuzzing/mutation-engine.d.ts +0 -93
  125. package/dist/fuzzing/mutation-engine.d.ts.map +0 -1
  126. package/dist/fuzzing/mutation-engine.js +0 -244
  127. package/dist/fuzzing/mutation-engine.js.map +0 -1
  128. package/dist/jailbreak-extension.d.ts +0 -48
  129. package/dist/jailbreak-extension.d.ts.map +0 -1
  130. package/dist/jailbreak-extension.js +0 -47
  131. package/dist/jailbreak-extension.js.map +0 -1
  132. package/dist/modules/index.d.ts +0 -8
  133. package/dist/modules/index.d.ts.map +0 -1
  134. package/dist/modules/index.js +0 -7
  135. package/dist/modules/index.js.map +0 -1
  136. package/dist/modules/lrl-bypass.d.ts +0 -40
  137. package/dist/modules/lrl-bypass.d.ts.map +0 -1
  138. package/dist/modules/lrl-bypass.js +0 -84
  139. package/dist/modules/lrl-bypass.js.map +0 -1
  140. package/dist/modules/lrl-deps.d.ts +0 -38
  141. package/dist/modules/lrl-deps.d.ts.map +0 -1
  142. package/dist/modules/lrl-deps.js +0 -128
  143. package/dist/modules/lrl-deps.js.map +0 -1
  144. package/dist/multiturn/easl-chain.d.ts +0 -113
  145. package/dist/multiturn/easl-chain.d.ts.map +0 -1
  146. package/dist/multiturn/easl-chain.js +0 -351
  147. package/dist/multiturn/easl-chain.js.map +0 -1
  148. package/dist/multiturn/index.d.ts +0 -6
  149. package/dist/multiturn/index.d.ts.map +0 -1
  150. package/dist/multiturn/index.js +0 -6
  151. package/dist/multiturn/index.js.map +0 -1
  152. package/dist/routing/fallback-router.d.ts +0 -123
  153. package/dist/routing/fallback-router.d.ts.map +0 -1
  154. package/dist/routing/fallback-router.js +0 -355
  155. package/dist/routing/fallback-router.js.map +0 -1
  156. package/dist/routing/index.d.ts +0 -6
  157. package/dist/routing/index.d.ts.map +0 -1
  158. package/dist/routing/index.js +0 -6
  159. package/dist/routing/index.js.map +0 -1
  160. package/dist/types/jailbreak.d.ts +0 -246
  161. package/dist/types/jailbreak.d.ts.map +0 -1
  162. package/dist/types/jailbreak.js +0 -8
  163. package/dist/types/jailbreak.js.map +0 -1
  164. package/dist/utils/jailbreak/common.d.ts +0 -63
  165. package/dist/utils/jailbreak/common.d.ts.map +0 -1
  166. package/dist/utils/jailbreak/common.js +0 -130
  167. package/dist/utils/jailbreak/common.js.map +0 -1
  168. package/dist/utils/jailbreak/index.d.ts +0 -7
  169. package/dist/utils/jailbreak/index.d.ts.map +0 -1
  170. package/dist/utils/jailbreak/index.js +0 -7
  171. package/dist/utils/jailbreak/index.js.map +0 -1
@@ -12,7 +12,7 @@ import { spawn, spawnSync } from "child_process";
12
12
  import { getProviders, } from "omk-ai";
13
13
  import { CombinedAutocompleteProvider, Container, fuzzyFilter, getCapabilities, hyperlink, Loader, Markdown, matchesKey, ProcessTerminal, Spacer, setKeybindings, Text, TruncatedText, TUI, visibleWidth, } from "omk-tui";
14
14
  import { APP_NAME, APP_TITLE, getAgentDir, getAuthPath, getDebugLogPath, getDocsPath, getShareViewerUrl, VERSION, } from "../../config.js";
15
- import { parseSkillBlock } from "../../core/agent-session.js";
15
+ import { parseSkillBlock, } from "../../core/agent-session.js";
16
16
  import { SessionImportFileNotFoundError } from "../../core/agent-session-runtime.js";
17
17
  import { parseBangInvocation } from "../../core/bang-skill-invocation.js";
18
18
  import { FooterDataProvider } from "../../core/footer-data-provider.js";
@@ -97,6 +97,18 @@ class ExpandableText extends Text {
97
97
  }
98
98
  }
99
99
  const DEAD_TERMINAL_ERROR_CODES = new Set(["EIO", "EPIPE", "ENOTCONN"]);
100
+ /**
101
+ * Pseudo-entries for the thinking selector/autocomplete representing auto mode.
102
+ * "auto", "auto-v2", "auto-v3", and "auto-v4" are thinking MODES (per-task
103
+ * routing), not ThinkingLevel values; the selector renders plain strings, so
104
+ * they are injected as pseudo-level entries and intercepted before reaching
105
+ * the session level API.
106
+ */
107
+ const AUTO_THINKING_ENTRY = "auto";
108
+ const AUTO_V1_THINKING_ENTRY = "auto-v1";
109
+ const AUTO_V2_THINKING_ENTRY = "auto-v2";
110
+ const AUTO_V3_THINKING_ENTRY = "auto-v3";
111
+ const AUTO_V4_THINKING_ENTRY = "auto-v4";
100
112
  function isDeadTerminalError(error) {
101
113
  if (!error || typeof error !== "object" || !("code" in error)) {
102
114
  return false;
@@ -337,15 +349,45 @@ export class InteractiveMode {
337
349
  const thinkCommand = slashCommands.find((command) => command.name === "think");
338
350
  if (thinkCommand) {
339
351
  thinkCommand.getArgumentCompletions = (prefix) => {
340
- const levels = this.session.getAvailableThinkingLevels();
341
- const filtered = fuzzyFilter(levels, prefix, (level) => level);
352
+ const isAutoMode = this.session.thinkingMode === "auto";
353
+ const currentAutoVersion = this.session.thinkingRouterVersion;
354
+ const choices = [
355
+ AUTO_THINKING_ENTRY,
356
+ AUTO_V1_THINKING_ENTRY,
357
+ AUTO_V2_THINKING_ENTRY,
358
+ AUTO_V3_THINKING_ENTRY,
359
+ AUTO_V4_THINKING_ENTRY,
360
+ ...this.session.getAvailableThinkingLevels(),
361
+ ];
362
+ const filtered = fuzzyFilter(choices, prefix, (choice) => choice);
342
363
  if (filtered.length === 0)
343
364
  return null;
344
- return filtered.map((level) => ({
345
- value: level,
346
- label: level,
347
- description: level === this.session.thinkingLevel ? "current" : undefined,
348
- }));
365
+ return filtered.map((choice) => {
366
+ let description;
367
+ if (choice === AUTO_THINKING_ENTRY) {
368
+ description = `route level per task${isAutoMode ? ` (current: ${currentAutoVersion})` : ""}`;
369
+ }
370
+ else if (choice === AUTO_V1_THINKING_ENTRY) {
371
+ description = `route level per task with v1 router${isAutoMode && currentAutoVersion === "v1" ? " (current)" : ""}`;
372
+ }
373
+ else if (choice === AUTO_V2_THINKING_ENTRY) {
374
+ description = `route level per task with v2 router${isAutoMode && currentAutoVersion === "v2" ? " (current)" : ""}`;
375
+ }
376
+ else if (choice === AUTO_V3_THINKING_ENTRY) {
377
+ description = `route level per task with v3 router${isAutoMode && currentAutoVersion === "v3" ? " (current)" : ""}`;
378
+ }
379
+ else if (choice === AUTO_V4_THINKING_ENTRY) {
380
+ description = `route level per task with v4 router${isAutoMode && currentAutoVersion === "v4" ? " (current)" : ""}`;
381
+ }
382
+ else if (!isAutoMode && choice === this.session.thinkingLevel) {
383
+ description = "current";
384
+ }
385
+ return {
386
+ value: choice,
387
+ label: choice,
388
+ description,
389
+ };
390
+ });
349
391
  };
350
392
  }
351
393
  const modelCommand = slashCommands.find((command) => command.name === "model");
@@ -3037,6 +3079,8 @@ export class InteractiveMode {
3037
3079
  this.showStatus("Current model does not support thinking");
3038
3080
  }
3039
3081
  else {
3082
+ // Cycling picks a concrete level: an explicit user override back to manual mode.
3083
+ this.session.setThinkingMode("manual");
3040
3084
  this.footer.invalidate();
3041
3085
  this.updateEditorBorderColor();
3042
3086
  this.showStatus(`Thinking level: ${newLevel}`);
@@ -3387,8 +3431,8 @@ export class InteractiveMode {
3387
3431
  followUpMode: this.session.followUpMode,
3388
3432
  transport: this.settingsManager.getTransport(),
3389
3433
  httpIdleTimeoutMs: this.settingsManager.getHttpIdleTimeoutMs(),
3390
- thinkingLevel: this.session.thinkingLevel,
3391
- availableThinkingLevels: this.session.getAvailableThinkingLevels(),
3434
+ thinkingLevel: this.getThinkingSelectorValue(),
3435
+ availableThinkingLevels: this.getThinkingSelectorLevels(),
3392
3436
  currentTheme: this.settingsManager.getTheme() || "dark",
3393
3437
  availableThemes: getAvailableThemes(),
3394
3438
  hideThinkingBlock: this.hideThinkingBlock,
@@ -3450,9 +3494,7 @@ export class InteractiveMode {
3450
3494
  this.showStatus(`HTTP idle timeout: ${formatHttpIdleTimeoutMs(timeoutMs)}`);
3451
3495
  },
3452
3496
  onThinkingLevelChange: (level) => {
3453
- this.session.setThinkingLevel(level);
3454
- this.footer.invalidate();
3455
- this.updateEditorBorderColor();
3497
+ this.applyThinkingSelection(level);
3456
3498
  },
3457
3499
  onThemeChange: (themeName) => {
3458
3500
  const result = setTheme(themeName, true);
@@ -3536,19 +3578,102 @@ export class InteractiveMode {
3536
3578
  this.showThinkingSelector();
3537
3579
  return;
3538
3580
  }
3581
+ const normalizedLevel = level.replace(/\s+/g, " ");
3582
+ switch (normalizedLevel) {
3583
+ case AUTO_THINKING_ENTRY:
3584
+ case "auto v1":
3585
+ case AUTO_V1_THINKING_ENTRY:
3586
+ case "auto:v1":
3587
+ this.enableAutoThinkingMode("v1");
3588
+ return;
3589
+ case "auto v2":
3590
+ case AUTO_V2_THINKING_ENTRY:
3591
+ case "auto:v2":
3592
+ this.enableAutoThinkingMode("v2");
3593
+ return;
3594
+ case "auto v3":
3595
+ case AUTO_V3_THINKING_ENTRY:
3596
+ case "auto:v3":
3597
+ this.enableAutoThinkingMode("v3");
3598
+ return;
3599
+ case "auto v4":
3600
+ case AUTO_V4_THINKING_ENTRY:
3601
+ case "auto:v4":
3602
+ this.enableAutoThinkingMode("v4");
3603
+ return;
3604
+ }
3539
3605
  const availableLevels = this.session.getAvailableThinkingLevels();
3540
- if (!availableLevels.includes(level)) {
3541
- this.showError(`Thinking level "${level}" is not available. Available: ${availableLevels.join(", ")}`);
3606
+ if (!availableLevels.includes(normalizedLevel)) {
3607
+ this.showError(`Thinking level "${level}" is not available. Available: auto, auto-v1, auto-v2, auto-v3, auto-v4, ${availableLevels.join(", ")}`);
3608
+ return;
3609
+ }
3610
+ this.applyThinkingLevel(normalizedLevel);
3611
+ }
3612
+ applyThinkingSelection(level) {
3613
+ if (level === AUTO_THINKING_ENTRY) {
3614
+ this.enableAutoThinkingMode("v1");
3615
+ return;
3616
+ }
3617
+ if (level === AUTO_V2_THINKING_ENTRY) {
3618
+ this.enableAutoThinkingMode("v2");
3619
+ return;
3620
+ }
3621
+ if (level === AUTO_V3_THINKING_ENTRY) {
3622
+ this.enableAutoThinkingMode("v3");
3623
+ return;
3624
+ }
3625
+ if (level === AUTO_V4_THINKING_ENTRY) {
3626
+ this.enableAutoThinkingMode("v4");
3542
3627
  return;
3543
3628
  }
3544
3629
  this.applyThinkingLevel(level);
3545
3630
  }
3631
+ enableAutoThinkingMode(version) {
3632
+ this.session.setThinkingRouterVersion(version);
3633
+ this.session.setThinkingMode("auto");
3634
+ this.footer.invalidate();
3635
+ this.updateEditorBorderColor();
3636
+ const label = version === "v1"
3637
+ ? AUTO_THINKING_ENTRY
3638
+ : version === "v2"
3639
+ ? AUTO_V2_THINKING_ENTRY
3640
+ : version === "v3"
3641
+ ? AUTO_V3_THINKING_ENTRY
3642
+ : AUTO_V4_THINKING_ENTRY;
3643
+ this.showStatus(`Thinking: ${label} (${version} router, level routed per task)`);
3644
+ }
3546
3645
  applyThinkingLevel(level) {
3646
+ // A concrete level is an explicit user override: always return to manual mode.
3647
+ this.session.setThinkingMode("manual");
3547
3648
  this.session.setThinkingLevel(level);
3548
3649
  this.footer.invalidate();
3549
3650
  this.updateEditorBorderColor();
3550
3651
  this.showStatus(`Thinking: ${this.session.thinkingLevel}`);
3551
3652
  }
3653
+ getThinkingSelectorValue() {
3654
+ if (this.session.thinkingMode !== "auto") {
3655
+ return this.session.thinkingLevel;
3656
+ }
3657
+ if (this.session.thinkingRouterVersion === "v2") {
3658
+ return AUTO_V2_THINKING_ENTRY;
3659
+ }
3660
+ if (this.session.thinkingRouterVersion === "v3") {
3661
+ return AUTO_V3_THINKING_ENTRY;
3662
+ }
3663
+ if (this.session.thinkingRouterVersion === "v4") {
3664
+ return AUTO_V4_THINKING_ENTRY;
3665
+ }
3666
+ return AUTO_THINKING_ENTRY;
3667
+ }
3668
+ getThinkingSelectorLevels() {
3669
+ return [
3670
+ AUTO_THINKING_ENTRY,
3671
+ AUTO_V2_THINKING_ENTRY,
3672
+ AUTO_V3_THINKING_ENTRY,
3673
+ AUTO_V4_THINKING_ENTRY,
3674
+ ...this.session.getAvailableThinkingLevels(),
3675
+ ];
3676
+ }
3552
3677
  async handleModelCommand(searchTerm) {
3553
3678
  if (!searchTerm) {
3554
3679
  this.showModelSelector();
@@ -3625,11 +3750,11 @@ export class InteractiveMode {
3625
3750
  showThinkingSelector() {
3626
3751
  this.showSelector((done) => {
3627
3752
  const selector = new ThinkingSelectorComponent({
3628
- thinkingLevel: this.session.thinkingLevel,
3629
- availableThinkingLevels: this.session.getAvailableThinkingLevels(),
3753
+ thinkingLevel: this.getThinkingSelectorValue(),
3754
+ availableThinkingLevels: this.getThinkingSelectorLevels(),
3630
3755
  }, {
3631
3756
  onThinkingLevelChange: (level) => {
3632
- this.applyThinkingLevel(level);
3757
+ this.applyThinkingSelection(level);
3633
3758
  },
3634
3759
  onSelectComplete: () => {
3635
3760
  done();