@mono-agent/agent-runtime 0.20.11 → 0.21.0

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 (148) hide show
  1. package/ARCHITECTURE.md +50 -11
  2. package/MIGRATION.md +288 -26
  3. package/README.md +352 -477
  4. package/package.json +13 -44
  5. package/src/agent/tool-bloat.js +145 -9
  6. package/src/agent/tools/agent-tool.js +108 -9
  7. package/src/agent/tools/bash.js +11 -26
  8. package/src/agent/tools/codex-subscription-search.js +123 -29
  9. package/src/agent/tools/exec.js +10 -2
  10. package/src/agent/tools/index.js +7 -0
  11. package/src/agent/tools/monitor.js +149 -0
  12. package/src/agent/tools/pi-bridge.js +123 -19
  13. package/src/agent/tools/shared/bash-environment.js +31 -0
  14. package/src/agent/tools/shared/monitors.js +293 -0
  15. package/src/agent/tools/shared/path-resolver.js +25 -6
  16. package/src/agent/tools/shared/process-jobs.js +6 -1
  17. package/src/agent/tools/shared/process-runner.js +26 -6
  18. package/src/agent/tools/shared/tool-context.js +8 -0
  19. package/src/agent/tools/web-access-interstitial.js +70 -0
  20. package/src/agent/tools/web-browser-render.js +83 -58
  21. package/src/agent/tools/web-controller.js +112 -21
  22. package/src/agent/tools/web-document-extractor.js +379 -0
  23. package/src/agent/tools/web-fetch.js +271 -243
  24. package/src/agent/tools/web-request.js +65 -0
  25. package/src/agent/tools/web-search-output.js +165 -0
  26. package/src/agent/tools/web-search-state.js +75 -0
  27. package/src/agent/tools/web-search.js +532 -71
  28. package/src/ai/cost.js +13 -68
  29. package/src/ai/failure.js +3 -3
  30. package/src/ai/index.js +5 -17
  31. package/src/ai/observer.js +8 -0
  32. package/src/ai/pi-interop.js +221 -1
  33. package/src/ai/pi-oauth-compat.js +1 -1
  34. package/src/ai/provider-check.js +131 -0
  35. package/src/ai/providers/codex/app-server-client.js +592 -0
  36. package/src/ai/providers/pi-models.js +18 -10
  37. package/src/ai/providers/pi-native/compaction-driver.js +94 -42
  38. package/src/ai/providers/pi-native/compaction-summary.js +140 -0
  39. package/src/ai/providers/pi-native/harness-adapter.js +376 -0
  40. package/src/ai/providers/pi-native/prompt-cache-diagnostics.js +103 -0
  41. package/src/ai/providers/pi-native/provider-attribution.js +102 -0
  42. package/src/ai/providers/pi-native/result-builder.js +38 -14
  43. package/src/ai/providers/pi-native/session-lifecycle.js +253 -55
  44. package/src/ai/providers/pi-native/stream-subscriber.js +52 -6
  45. package/src/ai/providers/pi-native/terminal-recovery.js +40 -0
  46. package/src/ai/providers/pi-native/turn-runner.js +279 -28
  47. package/src/ai/providers/pi-native.js +206 -61
  48. package/src/ai/runtime/capabilities.js +11 -56
  49. package/src/ai/runtime/live-input-events.js +250 -54
  50. package/src/ai/runtime/model-refs.js +118 -153
  51. package/src/ai/runtime/registry.js +22 -56
  52. package/src/ai/runtime/router.js +76 -417
  53. package/src/ai/runtime/session-liveness.js +3 -4
  54. package/src/ai/runtime/sessions.js +4 -5
  55. package/src/ai/runtime/tool-policy.js +0 -2
  56. package/src/ai/tool-lifecycle.js +32 -18
  57. package/src/ai/types.js +37 -112
  58. package/src/index.js +0 -6
  59. package/src/runtime.js +29 -16
  60. package/types/agent/tool-bloat.d.ts +1 -1
  61. package/types/agent/tools/agent-tool.d.ts +4 -2
  62. package/types/agent/tools/bash.d.ts +5 -3
  63. package/types/agent/tools/codex-subscription-search.d.ts +7 -3
  64. package/types/agent/tools/exec.d.ts +5 -3
  65. package/types/agent/tools/index.d.ts +1 -0
  66. package/types/agent/tools/monitor.d.ts +47 -0
  67. package/types/agent/tools/pi-bridge.d.ts +7 -4
  68. package/types/agent/tools/shared/bash-environment.d.ts +4 -0
  69. package/types/agent/tools/shared/monitors.d.ts +98 -0
  70. package/types/agent/tools/shared/process-jobs.d.ts +5 -1
  71. package/types/agent/tools/shared/process-runner.d.ts +14 -4
  72. package/types/agent/tools/shared/tool-context.d.ts +2 -0
  73. package/types/agent/tools/web-access-interstitial.d.ts +23 -0
  74. package/types/agent/tools/web-browser-render.d.ts +4 -1
  75. package/types/agent/tools/web-controller.d.ts +4 -2
  76. package/types/agent/tools/web-document-extractor.d.ts +27 -0
  77. package/types/agent/tools/web-fetch.d.ts +19 -24
  78. package/types/agent/tools/web-request.d.ts +20 -0
  79. package/types/agent/tools/web-search-output.d.ts +31 -0
  80. package/types/agent/tools/web-search-state.d.ts +21 -0
  81. package/types/agent/tools/web-search.d.ts +10 -45
  82. package/types/ai/cost.d.ts +1 -2
  83. package/types/ai/index.d.ts +2 -4
  84. package/types/ai/observer.d.ts +6 -0
  85. package/types/ai/pi-interop.d.ts +81 -0
  86. package/types/ai/provider-check.d.ts +53 -0
  87. package/types/ai/providers/codex/app-server-client.d.ts +37 -0
  88. package/types/ai/providers/pi-native/compaction-driver.d.ts +2 -1
  89. package/types/ai/providers/pi-native/compaction-summary.d.ts +19 -0
  90. package/types/ai/providers/pi-native/harness-adapter.d.ts +58 -0
  91. package/types/ai/providers/pi-native/prompt-cache-diagnostics.d.ts +3 -0
  92. package/types/ai/providers/pi-native/provider-attribution.d.ts +26 -0
  93. package/types/ai/providers/pi-native/result-builder.d.ts +14 -4
  94. package/types/ai/providers/pi-native/session-lifecycle.d.ts +25 -6
  95. package/types/ai/providers/pi-native/stream-subscriber.d.ts +2 -2
  96. package/types/ai/providers/pi-native/terminal-recovery.d.ts +2 -0
  97. package/types/ai/providers/pi-native/turn-runner.d.ts +68 -10
  98. package/types/ai/providers/pi-native.d.ts +21 -4
  99. package/types/ai/runtime/capabilities.d.ts +21 -70
  100. package/types/ai/runtime/live-input-events.d.ts +32 -8
  101. package/types/ai/runtime/model-refs.d.ts +0 -24
  102. package/types/ai/runtime/router.d.ts +3 -10
  103. package/types/ai/runtime/tool-policy.d.ts +0 -2
  104. package/types/ai/tool-lifecycle.d.ts +4 -3
  105. package/types/ai/types.d.ts +162 -256
  106. package/types/index.d.ts +0 -1
  107. package/src/ai/providers/acp-client.js +0 -1149
  108. package/src/ai/providers/acp-privacy.js +0 -124
  109. package/src/ai/providers/acp-public.js +0 -21
  110. package/src/ai/providers/acp-session-tokens.js +0 -282
  111. package/src/ai/providers/acp-transport.js +0 -356
  112. package/src/ai/providers/acp.js +0 -543
  113. package/src/ai/providers/claude-cli.js +0 -883
  114. package/src/ai/providers/claude-sandbox.js +0 -71
  115. package/src/ai/providers/claude-sdk-discovery-worker.js +0 -53
  116. package/src/ai/providers/claude-sdk-discovery.js +0 -352
  117. package/src/ai/providers/claude-sdk.js +0 -1127
  118. package/src/ai/providers/claude-subagent-activity.js +0 -719
  119. package/src/ai/providers/claude-subagents.js +0 -88
  120. package/src/ai/providers/codex-app.js +0 -2946
  121. package/src/ai/providers/opencode-app.js +0 -1109
  122. package/src/ai/providers/opencode-discovery.js +0 -39
  123. package/src/ai/providers/opencode-server.js +0 -508
  124. package/src/ai/runtime/context-windows.js +0 -46
  125. package/src/ai/runtime/fast-mode.js +0 -8
  126. package/src/ai/streaming/codex-events.js +0 -146
  127. package/src/ai/streaming/opencode-events.js +0 -59
  128. package/types/ai/providers/acp-client.d.ts +0 -227
  129. package/types/ai/providers/acp-privacy.d.ts +0 -25
  130. package/types/ai/providers/acp-public.d.ts +0 -7
  131. package/types/ai/providers/acp-session-tokens.d.ts +0 -41
  132. package/types/ai/providers/acp-transport.d.ts +0 -45
  133. package/types/ai/providers/acp.d.ts +0 -93
  134. package/types/ai/providers/claude-cli.d.ts +0 -305
  135. package/types/ai/providers/claude-sandbox.d.ts +0 -79
  136. package/types/ai/providers/claude-sdk-discovery-worker.d.ts +0 -1
  137. package/types/ai/providers/claude-sdk-discovery.d.ts +0 -97
  138. package/types/ai/providers/claude-sdk.d.ts +0 -138
  139. package/types/ai/providers/claude-subagent-activity.d.ts +0 -53
  140. package/types/ai/providers/claude-subagents.d.ts +0 -18
  141. package/types/ai/providers/codex-app.d.ts +0 -151
  142. package/types/ai/providers/opencode-app.d.ts +0 -96
  143. package/types/ai/providers/opencode-discovery.d.ts +0 -4
  144. package/types/ai/providers/opencode-server.d.ts +0 -20
  145. package/types/ai/runtime/context-windows.d.ts +0 -9
  146. package/types/ai/runtime/fast-mode.d.ts +0 -2
  147. package/types/ai/streaming/codex-events.d.ts +0 -40
  148. package/types/ai/streaming/opencode-events.d.ts +0 -42
@@ -1,6 +1,6 @@
1
1
  // @ts-check
2
2
 
3
- import { COMMON_CAPABILITIES, runtimeCapabilities } from "./capabilities.js";
3
+ import { runtimeCapabilities } from "./capabilities.js";
4
4
 
5
5
  /**
6
6
  * `RuntimeModelRef` is referenced inline (not aliased with a top-level
@@ -20,64 +20,19 @@ import { COMMON_CAPABILITIES, runtimeCapabilities } from "./capabilities.js";
20
20
  * @property {(options?: Object) => Promise<RuntimeBridge>} load
21
21
  */
22
22
 
23
- // CLI bridges are checked first when execution_mode='cli'. Without that flag
24
- // the resolver falls through to the SDK bridges below, preserving the
25
- // pre-Phase-2 behaviour for any agent that hasn't opted in.
26
23
  /** @type {Object<string, BridgeSpec>} */
27
24
  const builtinBridgeSpecs = {
28
- "acp-stdio": {
29
- id: "acp-stdio",
30
- supports: (ref, options) => ref?.sdk === "acp" && options?.executionMode === "acp",
31
- capabilities: () => runtimeCapabilities("acp"),
32
- load: async () => (await import("../providers/acp.js")).acpRuntimeBridge,
33
- },
34
- "claude-code": {
35
- id: "claude-code",
36
- supports: (ref, options) => ref?.sdk === "claude" && options?.executionMode === "cli",
37
- // The claude CLI resumes prior sessions via `--resume <sessionId>`.
38
- capabilities: () => ({
39
- kind: "claude-code",
40
- runtime: "cli",
41
- ...COMMON_CAPABILITIES,
42
- supports_session_resume: true,
43
- // The one-shot CLI bridge has no bidirectional stdin steering channel.
44
- supports_live_input: false,
45
- }),
46
- load: async () => (await import("../providers/claude-cli.js")).claudeCodeRuntimeBridge,
47
- },
48
- "codex-app": {
49
- id: "codex-app",
50
- supports: (ref, options) => ref?.sdk === "codex" && options?.executionMode === "cli",
51
- // The codex-app bridge keeps the app-server subprocess + thread alive
52
- // across turns when options.sessionKeepAlive is set.
53
- capabilities: () => {
54
- const { kind: _sdkKind, ...capabilities } = runtimeCapabilities("codex");
55
- return { kind: "codex-app", ...capabilities };
56
- },
57
- load: async () => (await import("../providers/codex-app.js")).codexAppRuntimeBridge,
58
- },
59
- "opencode-app": {
60
- id: "opencode-app",
61
- supports: (ref, options) => ref?.sdk === "opencode" && options?.executionMode === "cli",
62
- capabilities: () => {
63
- const { kind: _sdkKind, ...capabilities } = runtimeCapabilities("opencode");
64
- return { kind: "opencode-app", ...capabilities };
65
- },
66
- load: async () => (await import("../providers/opencode-app.js")).opencodeAppRuntimeBridge,
67
- },
68
- claude: {
69
- id: "claude",
70
- supports: (ref) => ref?.sdk === "claude",
71
- capabilities: () => runtimeCapabilities("claude"),
72
- load: async () => (await import("../providers/claude-sdk.js")).claudeRuntimeBridge,
73
- },
74
25
  pi: {
75
26
  id: "pi",
76
- supports: (ref) => ref?.sdk === "pi",
77
- capabilities: () => runtimeCapabilities("pi"),
78
- // The pi-native AgentHarness bridge is the sole pi runtime path. The
79
- // hand-rolled pi-sdk bridge was removed once native reached parity.
80
- load: async () => (await import("../providers/pi-native.js")).piNativeRuntimeBridge,
27
+ supports: () => true,
28
+ capabilities: () => runtimeCapabilities(),
29
+ load: async () => {
30
+ const { piNativeRuntimeBridge } = await import("../providers/pi-native.js");
31
+ // JavaScript widens the bridge object's `id` property to string. Keep the
32
+ // literal-safe registry contract here so the Pi provider module remains
33
+ // untouched by this bridge-removal work package.
34
+ return /** @type {RuntimeBridge} */ (piNativeRuntimeBridge);
35
+ },
81
36
  },
82
37
  };
83
38
 
@@ -98,10 +53,21 @@ export function listRuntimeBridges() {
98
53
  * @returns {Promise<RuntimeBridge>}
99
54
  */
100
55
  export async function resolveRuntimeBridge(modelRef, options = {}) {
56
+ // Direct kernel callers may bypass the parser, so malformed references must
57
+ // still fail before the sole bridge receives them.
58
+ if (
59
+ typeof modelRef?.provider !== "string"
60
+ || modelRef.provider.length === 0
61
+ || typeof modelRef.model !== "string"
62
+ || modelRef.model.length === 0
63
+ || modelRef.reference !== `${modelRef.provider}:${modelRef.model}`
64
+ ) {
65
+ throw new Error("unsupported model reference: expected <provider>:<model>");
66
+ }
101
67
  for (const spec of Object.values(builtinBridgeSpecs)) {
102
68
  if (spec.supports(modelRef, options)) return spec.load(options);
103
69
  }
104
- throw new Error(`unsupported sdk: ${modelRef?.sdk || "unknown"}`);
70
+ throw new Error(`unsupported model reference: ${modelRef.reference}`);
105
71
  }
106
72
 
107
73
  export { RUNTIME_CAPABILITIES, runtimeCapabilities } from "./capabilities.js";