open-multi-agent-kit 0.98.2 → 0.98.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 (286) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +11 -2
  3. package/dist/cli/args.d.ts +1 -0
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +14 -0
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/help.d.ts.map +1 -1
  8. package/dist/cli/help.js +3 -0
  9. package/dist/cli/help.js.map +1 -1
  10. package/dist/cli/mcp-attach.d.ts +3 -3
  11. package/dist/cli/mcp-attach.d.ts.map +1 -1
  12. package/dist/cli/mcp-attach.js +5 -4
  13. package/dist/cli/mcp-attach.js.map +1 -1
  14. package/dist/cli/model-contract.d.ts +5 -0
  15. package/dist/cli/model-contract.d.ts.map +1 -0
  16. package/dist/cli/model-contract.js +45 -0
  17. package/dist/cli/model-contract.js.map +1 -0
  18. package/dist/commands/adaptorch-doctor-cli.d.ts.map +1 -1
  19. package/dist/commands/adaptorch-doctor-cli.js +32 -10
  20. package/dist/commands/adaptorch-doctor-cli.js.map +1 -1
  21. package/dist/commands/init-cli.d.ts +12 -0
  22. package/dist/commands/init-cli.d.ts.map +1 -0
  23. package/dist/commands/init-cli.js +76 -0
  24. package/dist/commands/init-cli.js.map +1 -0
  25. package/dist/commands/provider-sync-cli.d.ts +27 -0
  26. package/dist/commands/provider-sync-cli.d.ts.map +1 -0
  27. package/dist/commands/provider-sync-cli.js +177 -0
  28. package/dist/commands/provider-sync-cli.js.map +1 -0
  29. package/dist/commands/run-command.d.ts +8 -0
  30. package/dist/commands/run-command.d.ts.map +1 -0
  31. package/dist/commands/run-command.js +26 -0
  32. package/dist/commands/run-command.js.map +1 -0
  33. package/dist/core/active-skill-state.d.ts +7 -0
  34. package/dist/core/active-skill-state.d.ts.map +1 -0
  35. package/dist/core/active-skill-state.js +25 -0
  36. package/dist/core/active-skill-state.js.map +1 -0
  37. package/dist/core/advisory-judge-model.d.ts.map +1 -1
  38. package/dist/core/advisory-judge-model.js +8 -1
  39. package/dist/core/advisory-judge-model.js.map +1 -1
  40. package/dist/core/advisory-judge-types.d.ts +18 -1
  41. package/dist/core/advisory-judge-types.d.ts.map +1 -1
  42. package/dist/core/advisory-judge-types.js.map +1 -1
  43. package/dist/core/advisory-judge.d.ts.map +1 -1
  44. package/dist/core/advisory-judge.js +41 -6
  45. package/dist/core/advisory-judge.js.map +1 -1
  46. package/dist/core/agent-session-services.d.ts +2 -0
  47. package/dist/core/agent-session-services.d.ts.map +1 -1
  48. package/dist/core/agent-session-services.js +2 -0
  49. package/dist/core/agent-session-services.js.map +1 -1
  50. package/dist/core/agent-session.d.ts +0 -1
  51. package/dist/core/agent-session.d.ts.map +1 -1
  52. package/dist/core/agent-session.js +30 -85
  53. package/dist/core/agent-session.js.map +1 -1
  54. package/dist/core/codex-chatgpt-web-bridge.d.ts +99 -0
  55. package/dist/core/codex-chatgpt-web-bridge.d.ts.map +1 -0
  56. package/dist/core/codex-chatgpt-web-bridge.js +192 -0
  57. package/dist/core/codex-chatgpt-web-bridge.js.map +1 -0
  58. package/dist/core/codex-chatgpt-web-sync.d.ts +50 -0
  59. package/dist/core/codex-chatgpt-web-sync.d.ts.map +1 -0
  60. package/dist/core/codex-chatgpt-web-sync.js +119 -0
  61. package/dist/core/codex-chatgpt-web-sync.js.map +1 -0
  62. package/dist/core/compaction/compaction-headroom.d.ts +30 -0
  63. package/dist/core/compaction/compaction-headroom.d.ts.map +1 -0
  64. package/dist/core/compaction/compaction-headroom.js +48 -0
  65. package/dist/core/compaction/compaction-headroom.js.map +1 -0
  66. package/dist/core/compaction/compaction.d.ts +2 -29
  67. package/dist/core/compaction/compaction.d.ts.map +1 -1
  68. package/dist/core/compaction/compaction.js +19 -47
  69. package/dist/core/compaction/compaction.js.map +1 -1
  70. package/dist/core/compaction/overflow-retry-guard.d.ts +20 -0
  71. package/dist/core/compaction/overflow-retry-guard.d.ts.map +1 -0
  72. package/dist/core/compaction/overflow-retry-guard.js +38 -0
  73. package/dist/core/compaction/overflow-retry-guard.js.map +1 -0
  74. package/dist/core/context-budget-headroom-types.d.ts.map +1 -1
  75. package/dist/core/context-budget-headroom-types.js +1 -1
  76. package/dist/core/context-budget-headroom-types.js.map +1 -1
  77. package/dist/core/context-budget-token-counter-types.d.ts +27 -0
  78. package/dist/core/context-budget-token-counter-types.d.ts.map +1 -0
  79. package/dist/core/context-budget-token-counter-types.js +2 -0
  80. package/dist/core/context-budget-token-counter-types.js.map +1 -0
  81. package/dist/core/context-budget-token-counter.d.ts +2 -26
  82. package/dist/core/context-budget-token-counter.d.ts.map +1 -1
  83. package/dist/core/context-budget-token-counter.js +2 -0
  84. package/dist/core/context-budget-token-counter.js.map +1 -1
  85. package/dist/core/context-budget-v2-scoring.d.ts.map +1 -1
  86. package/dist/core/context-budget-v2-scoring.js +14 -10
  87. package/dist/core/context-budget-v2-scoring.js.map +1 -1
  88. package/dist/core/domain-router.d.ts.map +1 -1
  89. package/dist/core/domain-router.js +1 -1
  90. package/dist/core/domain-router.js.map +1 -1
  91. package/dist/core/grok-harness-dispatch.d.ts +4 -0
  92. package/dist/core/grok-harness-dispatch.d.ts.map +1 -1
  93. package/dist/core/grok-harness-dispatch.js +20 -3
  94. package/dist/core/grok-harness-dispatch.js.map +1 -1
  95. package/dist/core/grok-harness.d.ts +15 -9
  96. package/dist/core/grok-harness.d.ts.map +1 -1
  97. package/dist/core/grok-harness.js +34 -8
  98. package/dist/core/grok-harness.js.map +1 -1
  99. package/dist/core/mcp/tools.d.ts +2 -2
  100. package/dist/core/mcp/tools.d.ts.map +1 -1
  101. package/dist/core/mcp/tools.js +29 -3
  102. package/dist/core/mcp/tools.js.map +1 -1
  103. package/dist/core/model-registry-schema.d.ts +1081 -0
  104. package/dist/core/model-registry-schema.d.ts.map +1 -0
  105. package/dist/core/model-registry-schema.js +148 -0
  106. package/dist/core/model-registry-schema.js.map +1 -0
  107. package/dist/core/model-registry.d.ts.map +1 -1
  108. package/dist/core/model-registry.js +1 -146
  109. package/dist/core/model-registry.js.map +1 -1
  110. package/dist/core/model-resolver.d.ts +2 -1
  111. package/dist/core/model-resolver.d.ts.map +1 -1
  112. package/dist/core/model-resolver.js +2 -1
  113. package/dist/core/model-resolver.js.map +1 -1
  114. package/dist/core/prompt-preset.d.ts +1 -1
  115. package/dist/core/prompt-preset.d.ts.map +1 -1
  116. package/dist/core/prompt-preset.js +16 -1
  117. package/dist/core/prompt-preset.js.map +1 -1
  118. package/dist/core/provider-display-names.d.ts.map +1 -1
  119. package/dist/core/provider-display-names.js +1 -0
  120. package/dist/core/provider-display-names.js.map +1 -1
  121. package/dist/core/provider-resilience.d.ts +8 -0
  122. package/dist/core/provider-resilience.d.ts.map +1 -1
  123. package/dist/core/provider-resilience.js +20 -3
  124. package/dist/core/provider-resilience.js.map +1 -1
  125. package/dist/core/provider-usage-types.d.ts +42 -0
  126. package/dist/core/provider-usage-types.d.ts.map +1 -0
  127. package/dist/core/provider-usage-types.js +2 -0
  128. package/dist/core/provider-usage-types.js.map +1 -0
  129. package/dist/core/provider-usage.d.ts +2 -31
  130. package/dist/core/provider-usage.d.ts.map +1 -1
  131. package/dist/core/provider-usage.js +4 -0
  132. package/dist/core/provider-usage.js.map +1 -1
  133. package/dist/core/redaction.d.ts.map +1 -1
  134. package/dist/core/redaction.js +18 -2
  135. package/dist/core/redaction.js.map +1 -1
  136. package/dist/core/sandbox/policy-merge.d.ts +6 -0
  137. package/dist/core/sandbox/policy-merge.d.ts.map +1 -0
  138. package/dist/core/sandbox/policy-merge.js +74 -0
  139. package/dist/core/sandbox/policy-merge.js.map +1 -0
  140. package/dist/core/sandbox/policy-paths.d.ts +4 -0
  141. package/dist/core/sandbox/policy-paths.d.ts.map +1 -0
  142. package/dist/core/sandbox/policy-paths.js +21 -0
  143. package/dist/core/sandbox/policy-paths.js.map +1 -0
  144. package/dist/core/sandbox/policy-types.d.ts +75 -0
  145. package/dist/core/sandbox/policy-types.d.ts.map +1 -0
  146. package/dist/core/sandbox/policy-types.js +2 -0
  147. package/dist/core/sandbox/policy-types.js.map +1 -0
  148. package/dist/core/sandbox/policy.d.ts +3 -77
  149. package/dist/core/sandbox/policy.d.ts.map +1 -1
  150. package/dist/core/sandbox/policy.js +3 -98
  151. package/dist/core/sandbox/policy.js.map +1 -1
  152. package/dist/core/sdk-provider-stream.d.ts +14 -0
  153. package/dist/core/sdk-provider-stream.d.ts.map +1 -0
  154. package/dist/core/sdk-provider-stream.js +38 -0
  155. package/dist/core/sdk-provider-stream.js.map +1 -0
  156. package/dist/core/sdk.d.ts +5 -1
  157. package/dist/core/sdk.d.ts.map +1 -1
  158. package/dist/core/sdk.js +17 -33
  159. package/dist/core/sdk.js.map +1 -1
  160. package/dist/core/session-bash-runtime.d.ts +7 -0
  161. package/dist/core/session-bash-runtime.d.ts.map +1 -1
  162. package/dist/core/session-bash-runtime.js +10 -1
  163. package/dist/core/session-bash-runtime.js.map +1 -1
  164. package/dist/core/session-failure-cause.d.ts.map +1 -1
  165. package/dist/core/session-failure-cause.js +10 -3
  166. package/dist/core/session-failure-cause.js.map +1 -1
  167. package/dist/core/session-run-termination.d.ts +18 -0
  168. package/dist/core/session-run-termination.d.ts.map +1 -0
  169. package/dist/core/session-run-termination.js +61 -0
  170. package/dist/core/session-run-termination.js.map +1 -0
  171. package/dist/core/session-termination.d.ts.map +1 -1
  172. package/dist/core/session-termination.js +1 -1
  173. package/dist/core/session-termination.js.map +1 -1
  174. package/dist/core/skill-selector.d.ts +40 -0
  175. package/dist/core/skill-selector.d.ts.map +1 -0
  176. package/dist/core/skill-selector.js +102 -0
  177. package/dist/core/skill-selector.js.map +1 -0
  178. package/dist/core/tools/render-utils.d.ts.map +1 -1
  179. package/dist/core/tools/render-utils.js +2 -4
  180. package/dist/core/tools/render-utils.js.map +1 -1
  181. package/dist/core/turn-metrics-record.d.ts +55 -0
  182. package/dist/core/turn-metrics-record.d.ts.map +1 -0
  183. package/dist/core/turn-metrics-record.js +149 -0
  184. package/dist/core/turn-metrics-record.js.map +1 -0
  185. package/dist/core/turn-metrics.d.ts +4 -56
  186. package/dist/core/turn-metrics.d.ts.map +1 -1
  187. package/dist/core/turn-metrics.js +12 -60
  188. package/dist/core/turn-metrics.js.map +1 -1
  189. package/dist/core/verified-bash-runtime.d.ts +40 -0
  190. package/dist/core/verified-bash-runtime.d.ts.map +1 -1
  191. package/dist/core/verified-bash-runtime.js +60 -13
  192. package/dist/core/verified-bash-runtime.js.map +1 -1
  193. package/dist/guardrails/evidence-system.d.ts +1 -1
  194. package/dist/guardrails/evidence-system.d.ts.map +1 -1
  195. package/dist/guardrails/evidence-system.js +18 -29
  196. package/dist/guardrails/evidence-system.js.map +1 -1
  197. package/dist/guardrails/merge-gate-result.d.ts +4 -0
  198. package/dist/guardrails/merge-gate-result.d.ts.map +1 -0
  199. package/dist/guardrails/merge-gate-result.js +32 -0
  200. package/dist/guardrails/merge-gate-result.js.map +1 -0
  201. package/dist/index.d.ts +2 -0
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +1 -0
  204. package/dist/index.js.map +1 -1
  205. package/dist/main.d.ts.map +1 -1
  206. package/dist/main.js +22 -22
  207. package/dist/main.js.map +1 -1
  208. package/dist/modes/interactive/interactive-login-options.d.ts +27 -0
  209. package/dist/modes/interactive/interactive-login-options.d.ts.map +1 -0
  210. package/dist/modes/interactive/interactive-login-options.js +54 -0
  211. package/dist/modes/interactive/interactive-login-options.js.map +1 -0
  212. package/dist/modes/interactive/interactive-mode.d.ts +7 -4
  213. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  214. package/dist/modes/interactive/interactive-mode.js +138 -140
  215. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  216. package/dist/modes/interactive/interactive-resume-command.d.ts +3 -0
  217. package/dist/modes/interactive/interactive-resume-command.d.ts.map +1 -0
  218. package/dist/modes/interactive/interactive-resume-command.js +24 -0
  219. package/dist/modes/interactive/interactive-resume-command.js.map +1 -0
  220. package/dist/modes/interactive/interactive-tool-result.d.ts +32 -0
  221. package/dist/modes/interactive/interactive-tool-result.d.ts.map +1 -0
  222. package/dist/modes/interactive/interactive-tool-result.js +59 -0
  223. package/dist/modes/interactive/interactive-tool-result.js.map +1 -0
  224. package/dist/modes/print-mode.d.ts.map +1 -1
  225. package/dist/modes/print-mode.js +22 -0
  226. package/dist/modes/print-mode.js.map +1 -1
  227. package/dist/utils/clipboard-image.d.ts.map +1 -1
  228. package/dist/utils/clipboard-image.js +10 -60
  229. package/dist/utils/clipboard-image.js.map +1 -1
  230. package/dist/utils/terminal-links.d.ts +13 -0
  231. package/dist/utils/terminal-links.d.ts.map +1 -0
  232. package/dist/utils/terminal-links.js +68 -0
  233. package/dist/utils/terminal-links.js.map +1 -0
  234. package/dist/utils/windows-clipboard-image.d.ts +16 -0
  235. package/dist/utils/windows-clipboard-image.d.ts.map +1 -0
  236. package/dist/utils/windows-clipboard-image.js +87 -0
  237. package/dist/utils/windows-clipboard-image.js.map +1 -0
  238. package/docs/adaptorch-onboarding.md +80 -0
  239. package/docs/advisory-selection.md +112 -0
  240. package/docs/containerization.md +12 -0
  241. package/docs/context-files.md +97 -0
  242. package/docs/correctness-wall.md +8 -0
  243. package/docs/custom-provider.md +35 -0
  244. package/docs/development.md +18 -3
  245. package/docs/environment-variables.md +2 -0
  246. package/docs/grok-harness.md +4 -0
  247. package/docs/harness-boundaries.md +154 -0
  248. package/docs/harness-improvements.md +90 -0
  249. package/docs/json.md +19 -0
  250. package/docs/keybindings.md +1 -1
  251. package/docs/mcp.md +22 -2
  252. package/docs/metrics.md +66 -16
  253. package/docs/model-catalog-refresh.md +190 -0
  254. package/docs/model-contract.md +168 -0
  255. package/docs/models.md +21 -4
  256. package/docs/provider-resilience.md +5 -3
  257. package/docs/providers.md +68 -1
  258. package/docs/quickstart.md +4 -0
  259. package/docs/release-audit-0.98.3.md +97 -0
  260. package/docs/release-audit-0.98.4.md +112 -0
  261. package/docs/review-bundle-followup.md +195 -0
  262. package/docs/run-protocol.md +3 -1
  263. package/docs/runtime-algorithms.md +38 -2
  264. package/docs/sdk.md +35 -3
  265. package/docs/sessions.md +1 -1
  266. package/docs/settings.md +17 -1
  267. package/docs/skills.md +2 -0
  268. package/docs/tb21-audit.md +131 -0
  269. package/docs/terminal-setup.md +20 -0
  270. package/docs/usage.md +23 -1
  271. package/docs/windows.md +48 -0
  272. package/examples/README.md +4 -0
  273. package/examples/context/AGENTS.md +64 -0
  274. package/examples/context/CLAUDE.md +17 -0
  275. package/examples/context/INTERNET.md +42 -0
  276. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  277. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  278. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  279. package/examples/extensions/gondolin/package-lock.json +2 -2
  280. package/examples/extensions/gondolin/package.json +1 -1
  281. package/examples/extensions/sandbox/package-lock.json +2 -2
  282. package/examples/extensions/sandbox/package.json +1 -1
  283. package/examples/extensions/with-deps/package-lock.json +2 -2
  284. package/examples/extensions/with-deps/package.json +1 -1
  285. package/npm-shrinkwrap.json +18 -18
  286. package/package.json +6 -6
@@ -24,6 +24,7 @@ import { stripFrontmatter } from "../utils/frontmatter.js";
24
24
  import { resolvePath } from "../utils/paths.js";
25
25
  import { getShellConfig } from "../utils/shell.js";
26
26
  import { sleep } from "../utils/sleep.js";
27
+ import { addActiveSkills, createActiveSkillState } from "./active-skill-state.js";
27
28
  import { createAdaptorchBridge } from "./adaptorch-bridge.js";
28
29
  import { applyCategoryTimeoutDefaults, resolveAgentToolSettings, resolveToolTimeoutCategory, } from "./agent-tool-settings.js";
29
30
  import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage } from "./auth-guidance.js";
@@ -43,7 +44,7 @@ import { exportSessionToHtml } from "./export-html/index.js";
43
44
  import { createToolHtmlRenderer } from "./export-html/tool-renderer.js";
44
45
  import { ExtensionRunner, wrapRegisteredTools, } from "./extensions/index.js";
45
46
  import { emitSessionShutdownEvent } from "./extensions/runner.js";
46
- import { assertTextChatModelForCompletion } from "./grok-harness.js";
47
+ import { assertTextChatModelForCompletion, grokHarnessAutoApplyEnabled, isGrokOAuthProvider, selectGrokHarnessSkills, } from "./grok-harness.js";
47
48
  import { grokPlaybookAppendForProvider } from "./grok-playbook.js";
48
49
  import { captureHostResourceSnapshot } from "./host-resource-snapshot.js";
49
50
  import { decideLoadoutAccess } from "./loadout-access-policy.js";
@@ -107,9 +108,10 @@ import { RunResourceLeaseController } from "./run-resource-lease.js";
107
108
  import { SessionBashRuntime } from "./session-bash-runtime.js";
108
109
  import { SessionBashService } from "./session-bash-service.js";
109
110
  import { SessionCompactionService } from "./session-compaction-service.js";
110
- import { preflightFailureCause, providerFailureCause, runtimeFailureCause, terminationMessage, } from "./session-failure-cause.js";
111
+ import { preflightFailureCause, runtimeFailureCause, terminationMessage } from "./session-failure-cause.js";
111
112
  import { CURRENT_SESSION_VERSION, getLatestCompactionEntry } from "./session-manager.js";
112
113
  import { acquireSessionOwnerLeaseSync } from "./session-owner-lease.js";
114
+ import { classifyRunTermination } from "./session-run-termination.js";
113
115
  import { assembleSessionSystemPrompt } from "./session-system-prompt.js";
114
116
  import { classifySessionTermination, } from "./session-termination.js";
115
117
  import { createSyntheticSourceInfo } from "./source-info.js";
@@ -136,17 +138,6 @@ export function parseSkillBlock(text) {
136
138
  userMessage: match[4]?.trim() || undefined,
137
139
  };
138
140
  }
139
- function mergePromptActiveSkillNames(first, second) {
140
- const names = [];
141
- const seen = new Set();
142
- for (const name of [...first, ...second]) {
143
- if (!seen.has(name)) {
144
- seen.add(name);
145
- names.push(name);
146
- }
147
- }
148
- return names;
149
- }
150
141
  const PENDING_TOOL_RESULT_TOKENS = {
151
142
  text: 1024,
152
143
  image: 4096,
@@ -515,64 +506,6 @@ export class AgentSession {
515
506
  });
516
507
  this._appendReplayEvent(event, details);
517
508
  }
518
- _classifyRunTermination(runId, event) {
519
- const timestamp = new Date().toISOString();
520
- let assistant;
521
- for (let index = event.messages.length - 1; index >= 0; index -= 1) {
522
- const message = event.messages[index];
523
- if (message?.role === "assistant") {
524
- assistant = message;
525
- break;
526
- }
527
- }
528
- let cause;
529
- let message;
530
- let sideEffects = this._sessionRiskLevel === "elevated" ? "possible" : "none";
531
- let toolCallId;
532
- let toolName;
533
- if (this._activeRunToolTermination) {
534
- cause = { area: "tool", code: "timeout" };
535
- message = `Tool ${this._activeRunToolTermination.toolName} timed out.`;
536
- toolCallId = this._activeRunToolTermination.toolCallId;
537
- toolName = this._activeRunToolTermination.toolName;
538
- sideEffects = this._activeRunToolTermination.executionStarted ? "possible" : sideEffects;
539
- }
540
- else if (!assistant) {
541
- cause = { area: "internal", code: "unclassified" };
542
- message = "Agent run ended without an assistant result.";
543
- }
544
- else if (assistant.stopReason === "aborted") {
545
- cause = this._userAbortRequested ? { area: "user", code: "abort" } : { area: "provider", code: "abort" };
546
- message = terminationMessage(assistant.errorMessage, this._userAbortRequested ? "The user aborted the run." : "The provider aborted the run.");
547
- }
548
- else if (assistant.stopReason === "error") {
549
- cause = providerFailureCause(assistant, this.model?.contextWindow ?? 0);
550
- message = terminationMessage(assistant.errorMessage, "The provider request failed.");
551
- }
552
- else {
553
- cause = { area: "completed" };
554
- message = "Run completed.";
555
- }
556
- let provider = this.model?.provider;
557
- if (assistant?.provider)
558
- provider = assistant.provider;
559
- let model = this.model?.id;
560
- if (assistant?.model)
561
- model = assistant.model;
562
- return classifySessionTermination({
563
- sessionId: this.sessionId,
564
- runId,
565
- timestamp,
566
- source: "observed",
567
- message,
568
- cause,
569
- sideEffects,
570
- ...(provider ? { provider } : {}),
571
- ...(model ? { model } : {}),
572
- ...(toolCallId ? { toolCallId } : {}),
573
- ...(toolName ? { toolName } : {}),
574
- });
575
- }
576
509
  _publishTermination(termination) {
577
510
  this._lastTermination = termination;
578
511
  this._emit({ type: "session_termination", termination });
@@ -647,11 +580,23 @@ export class AgentSession {
647
580
  }
648
581
  return;
649
582
  }
583
+ if (event.type === "provider_denied" && event.deniedReason === "contract-violation") {
584
+ this._pendingRuntimeTerminationCause = { area: "configuration", code: "invalid" };
585
+ }
650
586
  if (event.type !== "agent_end")
651
587
  return;
652
588
  if (this._activeRunId === null)
653
589
  throw new Error("run journal received agent_end without run_started");
654
- const termination = this._classifyRunTermination(this._activeRunId, event);
590
+ const termination = classifyRunTermination(event.messages, {
591
+ sessionId: this.sessionId,
592
+ runId: this._activeRunId,
593
+ timestamp: new Date().toISOString(),
594
+ model: this.model,
595
+ elevatedRisk: this._sessionRiskLevel === "elevated",
596
+ userAbortRequested: this._userAbortRequested,
597
+ pendingCause: this._pendingRuntimeTerminationCause,
598
+ toolTimeout: this._activeRunToolTermination,
599
+ });
655
600
  try {
656
601
  this._runJournalStore.finish({
657
602
  termination,
@@ -1815,12 +1760,7 @@ export class AgentSession {
1815
1760
  const preflightResult = options?.preflightResult;
1816
1761
  let currentText = redactSensitiveText(text);
1817
1762
  const defaultActiveSkills = this._getDefaultActiveSkills();
1818
- let promptActiveSkillNames = mergePromptActiveSkillNames(defaultActiveSkills, options?.activeSkillNames ?? []);
1819
- let promptActiveSkillSource = defaultActiveSkills.length > 0
1820
- ? options?.activeSkillSource
1821
- ? `settings+${options.activeSkillSource}`
1822
- : "settings"
1823
- : options?.activeSkillSource;
1763
+ let promptSkills = createActiveSkillState(defaultActiveSkills, options?.activeSkillNames ?? [], options?.activeSkillSource);
1824
1764
  let isBangSkillInvocation = false;
1825
1765
  if (expandPromptTemplates) {
1826
1766
  const bangInvocation = parseBangInvocation(text, {
@@ -1831,9 +1771,7 @@ export class AgentSession {
1831
1771
  currentText = bangInvocation.prompt
1832
1772
  ? `/skill:${bangInvocation.skillName} ${bangInvocation.prompt}`
1833
1773
  : `/skill:${bangInvocation.skillName}`;
1834
- promptActiveSkillNames = mergePromptActiveSkillNames(promptActiveSkillNames, bangInvocation.activeSkillNames);
1835
- promptActiveSkillSource =
1836
- defaultActiveSkills.length > 0 ? `settings+${bangInvocation.source}` : bangInvocation.source;
1774
+ promptSkills = addActiveSkills(promptSkills, bangInvocation.activeSkillNames, bangInvocation.source);
1837
1775
  }
1838
1776
  }
1839
1777
  let messages;
@@ -1934,11 +1872,18 @@ export class AgentSession {
1934
1872
  messages.push(msg);
1935
1873
  }
1936
1874
  this._pendingNextTurnMessages = [];
1875
+ if (isGrokOAuthProvider(this.model?.provider) && grokHarnessAutoApplyEnabled(process.env)) {
1876
+ const skillQuery = isBangSkillInvocation ? currentText : expandedText;
1877
+ const grokSkills = selectGrokHarnessSkills(skillQuery, this._resourceLoader.getSkills().skills, {
1878
+ contextPressure: this._computePressureBucket(messages) > 0,
1879
+ });
1880
+ promptSkills = addActiveSkills(promptSkills, grokSkills, "grok-harness");
1881
+ }
1937
1882
  const turnSystemPromptOptions = {
1938
1883
  ...this._baseSystemPromptOptions,
1939
1884
  contextBudget: this._getContextBudgetOptions(expandedText),
1940
- activeSkillNames: promptActiveSkillNames,
1941
- activeSkillSource: promptActiveSkillSource,
1885
+ activeSkillNames: promptSkills.names,
1886
+ activeSkillSource: promptSkills.source,
1942
1887
  };
1943
1888
  const turnSystemPrompt = buildSystemPromptPlan(turnSystemPromptOptions);
1944
1889
  // Emit before_agent_start extension event
@@ -2573,11 +2518,11 @@ export class AgentSession {
2573
2518
  * 1..<0.75, 2..<0.9, 3..>=0.9. The released default pressure coefficient
2574
2519
  * is 1 and participates only after the classifier has prompt evidence.
2575
2520
  */
2576
- _computePressureBucket() {
2521
+ _computePressureBucket(pendingMessages = []) {
2577
2522
  const contextWindow = this.model?.contextWindow ?? 0;
2578
2523
  if (contextWindow <= 0)
2579
2524
  return 0;
2580
- const estimate = estimateProjectedContextTokens(this.agent.state.messages, []);
2525
+ const estimate = estimateProjectedContextTokens(this.agent.state.messages, pendingMessages);
2581
2526
  const pressure = estimate.tokens / contextWindow;
2582
2527
  if (pressure >= 0.9)
2583
2528
  return 3;