@mono-agent/agent-app 0.20.11 → 0.20.14

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 (220) hide show
  1. package/README.md +33 -18
  2. package/dist/app-controller-channels.d.ts +4 -0
  3. package/dist/app-controller-channels.d.ts.map +1 -1
  4. package/dist/app-controller-channels.js +20 -2
  5. package/dist/app-controller-channels.js.map +1 -1
  6. package/dist/app-controller-continuation.d.ts.map +1 -1
  7. package/dist/app-controller-continuation.js +2 -3
  8. package/dist/app-controller-continuation.js.map +1 -1
  9. package/dist/app-controller-lifecycle.d.ts +4 -0
  10. package/dist/app-controller-lifecycle.d.ts.map +1 -1
  11. package/dist/app-controller-lifecycle.js +7 -0
  12. package/dist/app-controller-lifecycle.js.map +1 -1
  13. package/dist/app-controller-monitors.d.ts +26 -0
  14. package/dist/app-controller-monitors.d.ts.map +1 -0
  15. package/dist/app-controller-monitors.js +127 -0
  16. package/dist/app-controller-monitors.js.map +1 -0
  17. package/dist/app-controller-responder.d.ts +7 -17
  18. package/dist/app-controller-responder.d.ts.map +1 -1
  19. package/dist/app-controller-responder.js +33 -69
  20. package/dist/app-controller-responder.js.map +1 -1
  21. package/dist/app-controller-utils.d.ts +1 -5
  22. package/dist/app-controller-utils.d.ts.map +1 -1
  23. package/dist/app-controller-utils.js +4 -21
  24. package/dist/app-controller-utils.js.map +1 -1
  25. package/dist/app-controller.d.ts +24 -10
  26. package/dist/app-controller.d.ts.map +1 -1
  27. package/dist/app-controller.js +36 -1
  28. package/dist/app-controller.js.map +1 -1
  29. package/dist/channel-drivers/slack.d.ts.map +1 -1
  30. package/dist/channel-drivers/slack.js +18 -0
  31. package/dist/channel-drivers/slack.js.map +1 -1
  32. package/dist/channel-drivers/telegram.d.ts.map +1 -1
  33. package/dist/channel-drivers/telegram.js +26 -0
  34. package/dist/channel-drivers/telegram.js.map +1 -1
  35. package/dist/channel-drivers/tui.d.ts +68 -8
  36. package/dist/channel-drivers/tui.d.ts.map +1 -1
  37. package/dist/channel-drivers/tui.js +388 -89
  38. package/dist/channel-drivers/tui.js.map +1 -1
  39. package/dist/channel-runtime-controls.d.ts +2 -1
  40. package/dist/channel-runtime-controls.d.ts.map +1 -1
  41. package/dist/channel-runtime-controls.js +79 -22
  42. package/dist/channel-runtime-controls.js.map +1 -1
  43. package/dist/cli-args.d.ts +4 -6
  44. package/dist/cli-args.d.ts.map +1 -1
  45. package/dist/cli-args.js +16 -36
  46. package/dist/cli-args.js.map +1 -1
  47. package/dist/cli-commands.d.ts.map +1 -1
  48. package/dist/cli-commands.js +11 -0
  49. package/dist/cli-commands.js.map +1 -1
  50. package/dist/cli-help.d.ts +26 -0
  51. package/dist/cli-help.d.ts.map +1 -1
  52. package/dist/cli-help.js +25 -34
  53. package/dist/cli-help.js.map +1 -1
  54. package/dist/cli-init-command.d.ts +1 -2
  55. package/dist/cli-init-command.d.ts.map +1 -1
  56. package/dist/cli-init-command.js +5 -49
  57. package/dist/cli-init-command.js.map +1 -1
  58. package/dist/config-reference.d.ts.map +1 -1
  59. package/dist/config-reference.js +153 -52
  60. package/dist/config-reference.js.map +1 -1
  61. package/dist/configuration-proposal-tool.d.ts.map +1 -1
  62. package/dist/configuration-proposal-tool.js +3 -11
  63. package/dist/configuration-proposal-tool.js.map +1 -1
  64. package/dist/configured-agent.d.ts +18 -3
  65. package/dist/configured-agent.d.ts.map +1 -1
  66. package/dist/configured-agent.js +67 -86
  67. package/dist/configured-agent.js.map +1 -1
  68. package/dist/conversation-title.d.ts.map +1 -1
  69. package/dist/conversation-title.js +9 -2
  70. package/dist/conversation-title.js.map +1 -1
  71. package/dist/doctor.d.ts +7 -13
  72. package/dist/doctor.d.ts.map +1 -1
  73. package/dist/doctor.js +191 -725
  74. package/dist/doctor.js.map +1 -1
  75. package/dist/first-run-readiness.d.ts.map +1 -1
  76. package/dist/first-run-readiness.js +0 -6
  77. package/dist/first-run-readiness.js.map +1 -1
  78. package/dist/local-configuration.d.ts.map +1 -1
  79. package/dist/local-configuration.js +9 -37
  80. package/dist/local-configuration.js.map +1 -1
  81. package/dist/memory-remember.d.ts +49 -0
  82. package/dist/memory-remember.d.ts.map +1 -0
  83. package/dist/memory-remember.js +190 -0
  84. package/dist/memory-remember.js.map +1 -0
  85. package/dist/memory-retrieval.d.ts +24 -0
  86. package/dist/memory-retrieval.d.ts.map +1 -1
  87. package/dist/memory-retrieval.js +23 -0
  88. package/dist/memory-retrieval.js.map +1 -1
  89. package/dist/model-effort-capabilities.d.ts +8 -9
  90. package/dist/model-effort-capabilities.d.ts.map +1 -1
  91. package/dist/model-effort-capabilities.js +17 -35
  92. package/dist/model-effort-capabilities.js.map +1 -1
  93. package/dist/modules/base.d.ts +3 -4
  94. package/dist/modules/base.d.ts.map +1 -1
  95. package/dist/modules/base.js +3 -5
  96. package/dist/modules/base.js.map +1 -1
  97. package/dist/modules/catalog.d.ts.map +1 -1
  98. package/dist/modules/catalog.js +11 -9
  99. package/dist/modules/catalog.js.map +1 -1
  100. package/dist/modules/known-tools.d.ts +2 -2
  101. package/dist/modules/known-tools.d.ts.map +1 -1
  102. package/dist/modules/known-tools.js +6 -0
  103. package/dist/modules/known-tools.js.map +1 -1
  104. package/dist/monitor-channel-routing.d.ts +20 -0
  105. package/dist/monitor-channel-routing.d.ts.map +1 -0
  106. package/dist/monitor-channel-routing.js +73 -0
  107. package/dist/monitor-channel-routing.js.map +1 -0
  108. package/dist/monitors-command.d.ts +23 -0
  109. package/dist/monitors-command.d.ts.map +1 -0
  110. package/dist/monitors-command.js +207 -0
  111. package/dist/monitors-command.js.map +1 -0
  112. package/dist/monitors-config.d.ts +74 -0
  113. package/dist/monitors-config.d.ts.map +1 -0
  114. package/dist/monitors-config.js +146 -0
  115. package/dist/monitors-config.js.map +1 -0
  116. package/dist/monitors-context.d.ts +58 -0
  117. package/dist/monitors-context.d.ts.map +1 -0
  118. package/dist/monitors-context.js +182 -0
  119. package/dist/monitors-context.js.map +1 -0
  120. package/dist/monitors-runtime.d.ts +36 -0
  121. package/dist/monitors-runtime.d.ts.map +1 -0
  122. package/dist/monitors-runtime.js +103 -0
  123. package/dist/monitors-runtime.js.map +1 -0
  124. package/dist/monitors-service.d.ts +71 -0
  125. package/dist/monitors-service.d.ts.map +1 -0
  126. package/dist/monitors-service.js +1665 -0
  127. package/dist/monitors-service.js.map +1 -0
  128. package/dist/monitors-store.d.ts +83 -0
  129. package/dist/monitors-store.d.ts.map +1 -0
  130. package/dist/monitors-store.js +283 -0
  131. package/dist/monitors-store.js.map +1 -0
  132. package/dist/process-jobs-context.d.ts +8 -0
  133. package/dist/process-jobs-context.d.ts.map +1 -1
  134. package/dist/process-jobs-context.js +11 -0
  135. package/dist/process-jobs-context.js.map +1 -1
  136. package/dist/process-jobs-protection.js +1 -1
  137. package/dist/process-jobs-protection.js.map +1 -1
  138. package/dist/process-jobs-runtime.d.ts.map +1 -1
  139. package/dist/process-jobs-runtime.js +1 -12
  140. package/dist/process-jobs-runtime.js.map +1 -1
  141. package/dist/process-jobs-service.d.ts.map +1 -1
  142. package/dist/process-jobs-service.js +3 -149
  143. package/dist/process-jobs-service.js.map +1 -1
  144. package/dist/process-output-redaction.d.ts +33 -0
  145. package/dist/process-output-redaction.d.ts.map +1 -0
  146. package/dist/process-output-redaction.js +149 -0
  147. package/dist/process-output-redaction.js.map +1 -0
  148. package/dist/provider-model-catalog.d.ts +78 -0
  149. package/dist/provider-model-catalog.d.ts.map +1 -0
  150. package/dist/provider-model-catalog.js +439 -0
  151. package/dist/provider-model-catalog.js.map +1 -0
  152. package/dist/provider-setup.d.ts +4 -13
  153. package/dist/provider-setup.d.ts.map +1 -1
  154. package/dist/provider-setup.js +5 -115
  155. package/dist/provider-setup.js.map +1 -1
  156. package/dist/readiness-probe-worker.d.ts +1 -2
  157. package/dist/readiness-probe-worker.d.ts.map +1 -1
  158. package/dist/readiness-probe-worker.js +3 -8
  159. package/dist/readiness-probe-worker.js.map +1 -1
  160. package/dist/readiness-probe.d.ts +1 -1
  161. package/dist/readiness-probe.d.ts.map +1 -1
  162. package/dist/readiness-probe.js +3 -33
  163. package/dist/readiness-probe.js.map +1 -1
  164. package/dist/request-model-override.d.ts +4 -36
  165. package/dist/request-model-override.d.ts.map +1 -1
  166. package/dist/request-model-override.js +58 -146
  167. package/dist/request-model-override.js.map +1 -1
  168. package/dist/runtime-option-extensions.d.ts +2 -4
  169. package/dist/runtime-option-extensions.d.ts.map +1 -1
  170. package/dist/runtime-option-extensions.js +4 -8
  171. package/dist/runtime-option-extensions.js.map +1 -1
  172. package/dist/runtime-routes.d.ts +5 -5
  173. package/dist/runtime-routes.d.ts.map +1 -1
  174. package/dist/runtime-routes.js +29 -18
  175. package/dist/runtime-routes.js.map +1 -1
  176. package/dist/sandbox-settings-cleanup.d.ts +15 -0
  177. package/dist/sandbox-settings-cleanup.d.ts.map +1 -0
  178. package/dist/sandbox-settings-cleanup.js +88 -0
  179. package/dist/sandbox-settings-cleanup.js.map +1 -0
  180. package/dist/trigger-overrides.d.ts +6 -0
  181. package/dist/trigger-overrides.d.ts.map +1 -1
  182. package/dist/trigger-overrides.js +36 -4
  183. package/dist/trigger-overrides.js.map +1 -1
  184. package/dist/untrusted-text.d.ts +36 -0
  185. package/dist/untrusted-text.d.ts.map +1 -0
  186. package/dist/untrusted-text.js +150 -0
  187. package/dist/untrusted-text.js.map +1 -0
  188. package/dist/wizard/answers.d.ts +3 -9
  189. package/dist/wizard/answers.d.ts.map +1 -1
  190. package/dist/wizard/answers.js +11 -36
  191. package/dist/wizard/answers.js.map +1 -1
  192. package/dist/wizard/from-flags.d.ts +1 -2
  193. package/dist/wizard/from-flags.d.ts.map +1 -1
  194. package/dist/wizard/from-flags.js +8 -3
  195. package/dist/wizard/from-flags.js.map +1 -1
  196. package/dist/wizard/model-discovery.d.ts +7 -8
  197. package/dist/wizard/model-discovery.d.ts.map +1 -1
  198. package/dist/wizard/model-discovery.js +58 -431
  199. package/dist/wizard/model-discovery.js.map +1 -1
  200. package/dist/wizard/presets.js +2 -2
  201. package/dist/wizard/presets.js.map +1 -1
  202. package/dist/wizard/prompts.d.ts +13 -12
  203. package/dist/wizard/prompts.d.ts.map +1 -1
  204. package/dist/wizard/prompts.js +24 -45
  205. package/dist/wizard/prompts.js.map +1 -1
  206. package/dist/wizard/run.d.ts.map +1 -1
  207. package/dist/wizard/run.js +29 -152
  208. package/dist/wizard/run.js.map +1 -1
  209. package/package.json +17 -17
  210. package/schema/mono-agent.config.schema.json +183 -47
  211. package/skills/mono-agent-composer/SKILL.md +2 -2
  212. package/skills/mono-agent-composer/references/config-blueprint.md +43 -40
  213. package/skills/mono-agent-composer/references/discovery-questions.md +8 -13
  214. package/skills/mono-agent-composer/references/feature-coverage.md +10 -8
  215. package/skills/mono-agent-composer/references/package-map.md +21 -15
  216. package/skills/mono-agent-composer/references/playbooks.md +19 -23
  217. package/dist/codex-model-catalog.d.ts +0 -15
  218. package/dist/codex-model-catalog.d.ts.map +0 -1
  219. package/dist/codex-model-catalog.js +0 -220
  220. package/dist/codex-model-catalog.js.map +0 -1
@@ -1,36 +1,204 @@
1
1
  import { realpath } from "node:fs/promises";
2
2
  import { resolve } from "node:path";
3
- import { builtinModels } from "@earendil-works/pi-ai/providers/all";
4
- import { discoverClaudeSdkModels, discoverLocalProviderModels, modelReferenceKey, parseMonoRuntimeModelReference, } from "@mono-agent/runtime-adapter";
3
+ import { MAX_INFO_BODY_BYTES, MAX_INFO_PROVIDER_ITEMS } from "@mono-agent/agent-contracts";
4
+ import { resolveConfiguredProviders } from "@mono-agent/config";
5
+ import { discoverLocalProviderModels, discoverLocalProviders, modelReferenceKey, parseMonoRuntimeModelReference, } from "@mono-agent/runtime-adapter";
5
6
  import { ACP_BRIDGE_SOURCE_SCHEMA, ACP_BRIDGE_VERSION, ACP_PROTOCOL_VERSION, deliverWebNotification, } from "@mono-agent/web";
6
7
  import { buildChannelConfigView } from "../channel-config-view.js";
7
- import { codexModelDiscoveryEnvironment, requestCodexModelList, } from "../codex-model-catalog.js";
8
- import { resolveAdvertisedModelEffort, } from "../model-effort-capabilities.js";
9
8
  import { agentAppPackageVersion } from "../package-version.js";
10
- import { configuredRuntimeFallbackModels, configuredRuntimeModels, } from "../runtime-routes.js";
11
- import { createSkillRegistryMonitor } from "../skill-registry.js";
9
+ import { buildProviderModelCatalog } from "../provider-model-catalog.js";
10
+ import { configuredRuntimeModels } from "../runtime-routes.js";
11
+ import { createSkillRegistryMonitor, MAX_SKILL_REGISTRY_BYTES } from "../skill-registry.js";
12
12
  let tuiModule;
13
13
  const loadTuiModule = async () => (tuiModule ??= await import("@mono-agent/operator-adapter"));
14
- const builtinModelCatalog = builtinModels();
15
- function positiveContextWindow(value) {
16
- return typeof value === "number" && Number.isSafeInteger(value) && value > 0
17
- ? value
18
- : undefined;
14
+ /**
15
+ * Producer-side payload budgets for `/v1/info`.
16
+ *
17
+ * `/v1/info` shares ONE 1 MiB body cap ({@link MAX_INFO_BODY_BYTES}) across
18
+ * every field it carries, and `sendBoundedInfo` in the operator adapter is what
19
+ * enforces it: it measures the exact string it is about to send, sheds whole
20
+ * optional fields largest-first, logs the shed at error level, and falls back to
21
+ * a fixed liveness body. That fence is TOTAL — no body leaves this process over
22
+ * the cap whatever these numbers say — so the fence, and only the fence, is what
23
+ * decides that something genuinely cannot ship.
24
+ *
25
+ * What a budget HERE is for is bounding the AGGREGATE growth of a contributor
26
+ * whose size nobody authored, so one such contributor cannot flood the body and
27
+ * cost an unrelated field its place at the fence:
28
+ *
29
+ * discovered model refs 384 KiB advisory: whatever a local endpoint said
30
+ * provider summary 128 KiB advisory tail behind the declared vendors
31
+ * skills 256 KiB `MAX_SKILL_REGISTRY_BYTES`, skill-registry.ts
32
+ *
33
+ * Configured routes get NO budget here, and that is the correction to a defect
34
+ * this file carried through three review rounds. A budget is not an opinion
35
+ * about which content deserves to ship, and a fixed per-contributor slice
36
+ * becomes exactly that the moment one VALID item is bigger than the slice.
37
+ * Round 3 bounded the model projection at 128 KiB and dropped a valid
38
+ * configured fallback; round 4 kept the rule and raised the constant to
39
+ * 512 KiB, and a then-valid 270,000-byte OpenRouter fallback was still dropped —
40
+ * from a body that would have been 540,778 bytes against a 1,048,576-byte cap.
41
+ * No constant was the right one; the shape was wrong. Dropping an authored
42
+ * route served neither purpose a budget has (the body fit, and nothing was
43
+ * being starved), and it cost real function: the TUI never calls `/v1/models`
44
+ * and rebuilds its picker from `info.models` alone, so a withheld route is an
45
+ * unselectable primary or fallback in the operator's own console.
46
+ *
47
+ * Nor is a single reference bounded. Two rounds put a byte ceiling in the
48
+ * reference parser so that no ONE item could be pathological, and both numbers
49
+ * refused a model that really exists — 96 bytes a Hugging Face GGUF repo Ollama
50
+ * serves, 160 bytes an `ollama:<model>:<tag>` reference whose two halves Ollama
51
+ * itself validates at 80 bytes each. A grammar layer does not get to decide what
52
+ * a provider calls a model, so the ceiling is gone and a single reference can be
53
+ * any size again. That changes nothing here, because the rule was never about
54
+ * item size: nothing bounds how MANY routes an operator may declare or how many
55
+ * rows a local `/v1/models` may report either, so a per-contributor slice would
56
+ * still be an opinion about authored content, and configured routes still get
57
+ * none. What it does mean is that the fence below is load-bearing for a case it
58
+ * briefly was not — one authored route larger than the whole cap — which
59
+ * `tui-info-wire.test.ts` drives over a real socket.
60
+ *
61
+ * So every configured route is admitted, and a result that cannot fit is the
62
+ * fence's call, made loudly. Advisory discovery then spends its own aggregate
63
+ * budget on top — but never room the body no longer has
64
+ * ({@link INFO_NON_MODEL_RESERVE_BYTES}) — so discovery can never be the reason
65
+ * the fence fires.
66
+ *
67
+ * The discovery budget is exported because it is the whole contract between
68
+ * authored routes and advisory content, and a test that keeps its own copy of a
69
+ * constant cannot notice that constant changing.
70
+ */
71
+ export const MAX_DISCOVERED_INFO_MODEL_BYTES = 384 * 1024;
72
+ const MAX_INFO_PROVIDER_BYTES = 128 * 1024;
73
+ /**
74
+ * Room the model projections leave for the rest of the body when deciding how
75
+ * much ADVISORY discovery may spend.
76
+ *
77
+ * Reserving against the other contributors' own budgets is sound here precisely
78
+ * because it constrains discovery alone: no authored content is ever measured
79
+ * against it, so a conservative reserve costs at worst a few discovered refs
80
+ * nobody declared. Measuring the real rest-of-body instead is not available —
81
+ * `skills` is re-snapshotted per request while these projections are resolved
82
+ * once at start — and it is not needed, because the fence measures the real
83
+ * thing.
84
+ *
85
+ * The trailing 64 KiB covers the `schema`/`pid`/`capabilities` half of the
86
+ * body: a fixed shape carrying no operator-authored data beyond a short cron
87
+ * status, so it is headroom rather than a budget anything can spend.
88
+ */
89
+ const INFO_NON_MODEL_RESERVE_BYTES = MAX_INFO_PROVIDER_BYTES + MAX_SKILL_REGISTRY_BYTES + 64 * 1024;
90
+ /**
91
+ * JSON framing each projection costs before a single entry is admitted, charged
92
+ * once against the running total exactly as `boundSkillItems`
93
+ * (`skill-registry.ts`) charges its prefix and suffix.
94
+ */
95
+ const INFO_MODEL_FRAME_BYTES = Buffer.byteLength('"models":[],"modelOptions":{},', "utf8");
96
+ const INFO_PROVIDER_FRAME_BYTES = Buffer.byteLength('"providers":[],', "utf8");
97
+ /**
98
+ * The REAL serialized cost of publishing one ref in BOTH `/v1/info` model
99
+ * projections: its JSON string as a `models` element, and its `modelOptions`
100
+ * entry (that same string again as a key, a colon, the materialized option),
101
+ * plus one separating comma in each collection.
102
+ *
103
+ * Measured from the payload that will actually be sent, never estimated ahead
104
+ * of it. An arithmetic estimate over the raw ref is not an upper bound here for
105
+ * two independent, separately proven reasons:
106
+ * - JSON escaping is invisible to it. One C0 byte serializes to six (`\u0000`)
107
+ * in both projections, so a ref of control bytes costs 12x its length while
108
+ * a `4 x length + 512` estimate charges roughly 4x.
109
+ * - The option is not materialized yet. `effortLevels` comes from a local
110
+ * provider's `capabilities.reasoning_levels`; the catalog now bounds it, but
111
+ * only measurement can charge what the bound actually left behind.
112
+ */
113
+ function infoModelEntryBytes(key, option) {
114
+ const keyBytes = Buffer.byteLength(JSON.stringify(key), "utf8");
115
+ // `models` element + comma.
116
+ const arrayBytes = keyBytes + 1;
117
+ // `modelOptions` key + colon + value + comma.
118
+ const optionBytes = option === undefined
119
+ ? 0
120
+ : keyBytes + 1 + Buffer.byteLength(JSON.stringify(option), "utf8") + 1;
121
+ return arrayBytes + optionBytes;
19
122
  }
20
- function resolveContextWindow(ref, providers) {
21
- if (ref.sdk === "codex") {
22
- return positiveContextWindow(builtinModelCatalog.getModel("openai-codex", ref.model)?.contextWindow);
123
+ /**
124
+ * Admit refs into the `/v1/info` model projections, measuring each candidate's
125
+ * materialized payload against the running total.
126
+ *
127
+ * `budgetBytes` is a ceiling on that RUNNING TOTAL and it is OPTIONAL. Omitting
128
+ * it admits every ref, which is what configured routes get: see the budget note
129
+ * above — the fence adjudicates an oversized body, this function does not.
130
+ *
131
+ * `continue`, not `break`, where a ceiling does apply: one pathological entry
132
+ * must cost only itself. The TUI never calls `/v1/models` — there is no call
133
+ * site under `packages/tui/`, and `applyAgentInfo` builds the model picker from
134
+ * `/v1/info.models` alone — so a ref withheld here is UNSELECTABLE, not merely
135
+ * un-paginated. Breaking would delete every runnable ref sitting behind one
136
+ * oversized row.
137
+ */
138
+ function admitInfoModels(refs, describe, into, budgetBytes = Number.POSITIVE_INFINITY) {
139
+ for (const ref of refs) {
140
+ const key = modelReferenceKey(ref);
141
+ if (into.seen.has(key))
142
+ continue;
143
+ const option = describe(ref);
144
+ const cost = infoModelEntryBytes(key, option);
145
+ if (into.bytes + cost > budgetBytes)
146
+ continue;
147
+ into.bytes += cost;
148
+ into.seen.add(key);
149
+ into.keys.push(key);
150
+ if (option !== undefined)
151
+ into.options[key] = option;
23
152
  }
24
- if (ref.sdk !== "pi" || ref.provider === undefined)
25
- return undefined;
26
- const configuredProvider = providers?.find((provider) => provider.id === ref.provider);
27
- if (configuredProvider !== undefined) {
28
- const configuredModel = configuredProvider.models
29
- ?.find((model) => model.name === ref.model || model.alias === ref.model);
30
- return positiveContextWindow(configuredModel?.capabilities?.context_window)
31
- ?? positiveContextWindow(configuredModel?.capabilities?.num_ctx);
153
+ }
154
+ /**
155
+ * Project the `/v1/info` provider summary onto its own measured slice, with the
156
+ * providers the agent's OWN routes use placed where every consumer can see
157
+ * them.
158
+ *
159
+ * Two independent cuts land on this list, and the catalog's order is wrong for
160
+ * both. Route providers sit LAST in it (declared providers, then route
161
+ * providers, then discovered ones), while the byte slice and the console's
162
+ * {@link MAX_INFO_PROVIDER_ITEMS} parse window are both PREFIX cuts. Admitting
163
+ * routes first but emitting in catalog order — which is what this did — put the
164
+ * prioritized entry at position 71 of 71 and let the console throw it away at
165
+ * 64: a probe really did receive `anthropic` and parse 64 vendors without it.
166
+ * Prioritizing at the producer only means something if it survives to the
167
+ * consumer, so the priority has to be expressed as ORDER on the wire.
168
+ *
169
+ * Reordering is not subtractive — no entry is removed and no field changes — so
170
+ * it is legal at a wire schema compared with `!==`. It is also confined to the
171
+ * case that needs it: a catalog that fits both the slice and the window is
172
+ * emitted exactly as the catalog built it, frozen identity included, because
173
+ * `/v1/info` is polled every 5 s and hands back the very same object each time.
174
+ *
175
+ * Unlike the model projections, an aggregate slice is the right shape HERE: one
176
+ * entry's id and label are bounded by the shared wire contract
177
+ * (`MAX_INFO_PROVIDER_ID_BYTES`/`..._LABEL_BYTES`), so no single valid provider
178
+ * can be larger than the slice and the cut can only ever fall on the advisory
179
+ * tail — never on a route provider, which is admitted first.
180
+ */
181
+ function projectInfoProviders(providers, routeProviderIds) {
182
+ const costs = providers.map((provider) => Buffer.byteLength(JSON.stringify(provider), "utf8") + 1);
183
+ const total = costs.reduce((sum, cost) => sum + cost, INFO_PROVIDER_FRAME_BYTES);
184
+ if (total <= MAX_INFO_PROVIDER_BYTES && providers.length <= MAX_INFO_PROVIDER_ITEMS) {
185
+ return providers;
32
186
  }
33
- return positiveContextWindow(builtinModelCatalog.getModel(ref.provider, ref.model)?.contextWindow);
187
+ const admitted = [];
188
+ let bytes = INFO_PROVIDER_FRAME_BYTES;
189
+ for (const routesFirst of [true, false]) {
190
+ for (const [index, provider] of providers.entries()) {
191
+ if (routeProviderIds.has(provider.id) !== routesFirst)
192
+ continue;
193
+ const cost = costs[index];
194
+ // `continue`, not `break`: an entry that does not fit costs only itself.
195
+ if (bytes + cost > MAX_INFO_PROVIDER_BYTES)
196
+ continue;
197
+ bytes += cost;
198
+ admitted.push(provider);
199
+ }
200
+ }
201
+ return Object.freeze(admitted);
34
202
  }
35
203
  const APP_OWNED_TUI_START = Symbol("app-owned-tui-start");
36
204
  const appOwnedTuiDrivers = new WeakSet();
@@ -39,10 +207,10 @@ const appOwnedTuiDrivers = new WeakSet();
39
207
  * private symbol plus exact object identity prevents a plugin or arbitrary
40
208
  * driver named `tui` from opting into the owner path.
41
209
  */
42
- export function startAppOwnedTuiChannel(driver, input, processJobs) {
210
+ export function startAppOwnedTuiChannel(driver, input, processJobs, monitors) {
43
211
  if (!appOwnedTuiDrivers.has(driver))
44
212
  return undefined;
45
- return driver[APP_OWNED_TUI_START](input, processJobs);
213
+ return driver[APP_OWNED_TUI_START](input, processJobs, monitors);
46
214
  }
47
215
  /**
48
216
  * The TUI stream endpoint deviates from the channels-off convention: with no
@@ -69,17 +237,14 @@ export function createTuiChannelDriver(overrides = {}, cronOperator) {
69
237
  return config.enabled ? undefined : "TUI stream endpoint is disabled.";
70
238
  },
71
239
  async start(input) {
72
- return await this[APP_OWNED_TUI_START](input, undefined);
240
+ return await this[APP_OWNED_TUI_START](input, undefined, undefined);
73
241
  },
74
- async [APP_OWNED_TUI_START](input, processJobs) {
242
+ async [APP_OWNED_TUI_START](input, processJobs, monitors) {
75
243
  const adapterModule = await loadTuiModule();
76
244
  const adapterFactory = overrides.adapterFactory ?? adapterModule.startTuiAdapter;
77
245
  const deliverNotification = overrides.deliverNotification ?? deliverWebNotification;
78
246
  const discoverModels = overrides.discoverModels ?? discoverLocalProviderModels;
79
- const discoverClaudeModels = overrides.discoverClaudeModels
80
- ?? ((authoredModelRefs) => discoverClaudeSdkModels({ authoredModelRefs }));
81
- const discoverCodexModels = overrides.discoverCodexModels
82
- ?? (() => requestCodexModelList(1_200, codexModelDiscoveryEnvironment()));
247
+ const discoverProviders = overrides.discoverProviders ?? discoverLocalProviders;
83
248
  const localProviders = input.coreConfig.providers?.local;
84
249
  const skillRegistry = createSkillRegistryMonitor({
85
250
  ...(input.coreConfig.context.skillsRoot === undefined
@@ -96,78 +261,135 @@ export function createTuiChannelDriver(overrides = {}, cronOperator) {
96
261
  // Subsequent /v1/info reads are memory-only and cannot block on skill I/O.
97
262
  await skillRegistry.prime();
98
263
  const configuredRefs = [...configuredRuntimeModels(input.coreConfig.runtime)];
99
- const configModelKeys = [];
100
- for (const ref of configuredRefs) {
101
- const key = modelReferenceKey(ref);
102
- if (!configModelKeys.includes(key)) {
103
- configModelKeys.push(key);
104
- }
105
- }
106
- const directOpenCodeInFallbacks = configuredRuntimeFallbackModels(input.coreConfig.runtime)
107
- .some((ref) => ref.sdk === "opencode");
108
- const claudeRefs = configuredRefs
109
- .filter((ref) => ref.sdk === "claude")
110
- .map((ref) => modelReferenceKey(ref));
111
- const needsCodex = configuredRefs.some((ref) => ref.sdk === "codex");
112
- let claudeCatalog = [];
113
- let codexCatalog = [];
114
- const [claudeResult, codexResult] = await Promise.allSettled([
115
- claudeRefs.length > 0 ? discoverClaudeModels(claudeRefs) : Promise.resolve([]),
116
- needsCodex ? discoverCodexModels() : Promise.resolve([]),
117
- ]);
118
- if (claudeResult.status === "fulfilled")
119
- claudeCatalog = claudeResult.value;
120
- if (codexResult.status === "fulfilled")
121
- codexCatalog = codexResult.value;
122
264
  let discoveredModels = [];
265
+ let discoveredLocalProviders = [];
123
266
  try {
124
- discoveredModels = await discoverModels(localProviders);
267
+ // Two discovery paths, both advisory. `discoverModels` covers every
268
+ // explicitly configured local provider, including custom
269
+ // openai_compat endpoints. `discoverLocalProviders` is the zero-config
270
+ // half: it probes localhost:11434 and localhost:1234 even when nothing
271
+ // is declared, which is the only way `runtime.model: "ollama:..."`
272
+ // works without a `providers` entry. Without it that route validates,
273
+ // advertises nothing, and dies at turn time with `pi model not found`.
274
+ const [configuredModels, probed] = await Promise.all([
275
+ discoverModels(localProviders).catch(() => []),
276
+ discoverProviders({ configured: resolveConfiguredProviders(input.coreConfig).entries })
277
+ .catch(() => []),
278
+ ]);
279
+ discoveredLocalProviders = probed.map(({ models: _models, ...definition }) => definition);
280
+ const byRef = new Map();
281
+ for (const model of configuredModels)
282
+ byRef.set(model.ref, model);
283
+ for (const provider of probed) {
284
+ for (const model of provider.models) {
285
+ const ref = `${provider.id}:${model.name}`;
286
+ if (byRef.has(ref))
287
+ continue;
288
+ byRef.set(ref, {
289
+ ref,
290
+ label: model.displayName ?? model.alias ?? model.name,
291
+ providerId: provider.id,
292
+ });
293
+ }
294
+ }
295
+ discoveredModels = [...byRef.values()];
125
296
  }
126
297
  catch {
127
298
  // Provider discovery is advisory. A failed startup snapshot must not
128
299
  // make /v1/info block or expand unknown capabilities later.
129
300
  }
130
- const buildInfo = async () => {
131
- const labelByRef = new Map(discoveredModels.map((model) => [model.ref, model.label]));
132
- const models = [...configModelKeys];
133
- for (const model of discoveredModels) {
134
- if (!models.includes(model.ref)) {
135
- models.push(model.ref);
136
- }
301
+ // The provider-widened catalog is precomputed once here. `/v1/info` reads
302
+ // the frozen provider list and the configured-route shortlist from memory
303
+ // only; the lazy `/v1/models` endpoint slices already-frozen pages.
304
+ const catalog = buildProviderModelCatalog({
305
+ providers: resolveConfiguredProviders(input.coreConfig).entries,
306
+ ...(localProviders === undefined && discoveredLocalProviders.length === 0
307
+ ? {}
308
+ : { localProviders: [...(localProviders ?? []), ...discoveredLocalProviders] }),
309
+ configuredRoutes: configuredRefs,
310
+ discoveredModels,
311
+ });
312
+ // `/v1/info.models` must keep listing live-discovered local models
313
+ // alongside the configured routes. Narrowing it to configured routes was
314
+ // a SUBTRACTIVE wire change at an unchanged schema: a console that only
315
+ // reads `models` (every client predating `/v1/models`) silently lost the
316
+ // `ollama:*` entry it used to offer, with no skew error to explain it.
317
+ //
318
+ // Bound this projection on its OWN payload budget, never on catalog
319
+ // membership. The catalog's `MAX_CATALOG_ID_BYTES` is a display/paging
320
+ // bound, not a validity bound, and the two answer different questions: a
321
+ // reference that clears the parser is runnable whether or not any page
322
+ // would show it, so gating `models` on `catalog.resolve()` deleted a
323
+ // runnable model from every schema-1 client — subtractive at a schema that
324
+ // cannot be bumped (`TUI_WIRE_SCHEMA` is compared with `!==`).
325
+ // Both divergences are reachable: the per-provider advertised cap, which
326
+ // strands hundreds of live rows outside the page, and an id past
327
+ // `MAX_CATALOG_ID_BYTES`, which a local endpoint can report now that the
328
+ // reference parser has no length rule to refuse it first. Every one of
329
+ // those refs stays selectable here.
330
+ // What genuinely must stay bounded is the ONE 1 MiB body `/v1/info` shares
331
+ // across every field, and `sendBoundedInfo` is what enforces it. So the
332
+ // only reasons a DISCOVERED ref is withheld here are that it names nothing
333
+ // a turn could route to (it does not parse), or that advisory discovery
334
+ // has spent its aggregate budget. A configured route is withheld for
335
+ // neither reason: see the budget note at the top of this file.
336
+ const discoveredRefs = [];
337
+ for (const model of discoveredModels) {
338
+ try {
339
+ discoveredRefs.push(parseMonoRuntimeModelReference(model.ref));
137
340
  }
138
- const modelOptions = {};
139
- for (const ref of models) {
140
- let parsedRef;
141
- try {
142
- parsedRef = parseMonoRuntimeModelReference(ref);
143
- }
144
- catch {
145
- continue;
146
- }
147
- const resolved = resolveAdvertisedModelEffort(parsedRef, {
148
- ...(localProviders === undefined ? {} : { localProviders }),
149
- claudeCatalog,
150
- codexCatalog,
151
- suppressExplicitEffort: parsedRef.sdk === "opencode" || directOpenCodeInFallbacks,
341
+ catch {
342
+ // A provider that reports an unparseable ref is skipped, not fatal.
343
+ }
344
+ }
345
+ // Resolve both /v1/info projections once, here. `/v1/info` is polled every
346
+ // 5s per connected console, and a throwing or slow info provider returns
347
+ // 500 for the WHOLE response — showing the agent offline rather than
348
+ // degraded. Neither projection may run per request.
349
+ const describeModelOption = (ref) => catalog.describe([ref])[modelReferenceKey(ref)];
350
+ const projection = {
351
+ keys: [],
352
+ seen: new Set(),
353
+ options: {},
354
+ bytes: INFO_MODEL_FRAME_BYTES,
355
+ };
356
+ // Every configured route, unconditionally. These are the operator's
357
+ // declared routes; a route the picker cannot offer is a route nobody can
358
+ // run, and no producer-side number gets to decide that a valid one is too
359
+ // big to mention. If the whole body then will not fit, `sendBoundedInfo`
360
+ // sheds a field and logs it — one loud, visible degradation instead of a
361
+ // silent hole in the middle of the picker.
362
+ admitInfoModels(configuredRefs, describeModelOption, projection);
363
+ // Advisory discovery on top: its own aggregate budget, and never room the
364
+ // body no longer has. When authored routes have already spent past the
365
+ // reserve this ceiling sits below the running total and discovery admits
366
+ // nothing, which is the correct order of yielding.
367
+ admitInfoModels(discoveredRefs, describeModelOption, projection, Math.min(projection.bytes + MAX_DISCOVERED_INFO_MODEL_BYTES, MAX_INFO_BODY_BYTES - INFO_NON_MODEL_RESERVE_BYTES));
368
+ const infoModelKeys = Object.freeze(projection.keys);
369
+ const infoModelOptions = Object.freeze(projection.options);
370
+ const infoProviders = projectInfoProviders(catalog.listProviders(), new Set(configuredRefs.map((ref) => ref.provider)));
371
+ const modelCatalog = (request) => {
372
+ if (request.provider !== undefined) {
373
+ return catalog.listModels(request.provider, {
374
+ ...(request.cursor === undefined ? {} : { cursor: request.cursor }),
375
+ limit: request.limit,
152
376
  });
153
- const contextWindow = resolveContextWindow(parsedRef, localProviders);
154
- const label = labelByRef.get(ref);
155
- const entry = {
156
- ...(resolved.effortLevels === undefined ? {} : { effortLevels: resolved.effortLevels }),
157
- reasoning: resolved.reasoning,
158
- ...(resolved.reasoningMode === undefined ? {} : { reasoningMode: resolved.reasoningMode }),
159
- ...(label === undefined ? {} : { label }),
160
- ...(contextWindow === undefined ? {} : { contextWindow }),
377
+ }
378
+ if (request.query !== undefined) {
379
+ return {
380
+ models: catalog.searchModels(request.query, request.limit),
381
+ truncated: false,
161
382
  };
162
- if (Object.keys(entry).length > 0) {
163
- modelOptions[ref] = entry;
164
- }
165
383
  }
384
+ return { models: [], truncated: false };
385
+ };
386
+ const buildInfo = async () => {
166
387
  return {
167
388
  model: modelReferenceKey(input.coreConfig.runtime.model),
168
389
  ...(input.coreConfig.runtime.effort === undefined ? {} : { effort: input.coreConfig.runtime.effort }),
169
- models,
170
- ...(Object.keys(modelOptions).length === 0 ? {} : { modelOptions }),
390
+ models: infoModelKeys,
391
+ modelOptions: infoModelOptions,
392
+ providers: infoProviders,
171
393
  skills: skillRegistry.snapshot(),
172
394
  };
173
395
  };
@@ -188,12 +410,16 @@ export function createTuiChannelDriver(overrides = {}, cronOperator) {
188
410
  ? {}
189
411
  : { requestToolEnvironment: input.config.requestToolEnvironment }),
190
412
  responder: input.responder,
413
+ ...(monitors === undefined
414
+ ? {}
415
+ : { monitors, monitorsBearer: monitors.operatorToken }),
191
416
  ...(processJobs === undefined
192
417
  ? {}
193
418
  : { processJobs, processJobsBearer: processJobs.operatorToken }),
194
419
  ...(input.interaction === undefined ? {} : { interaction: input.interaction }),
195
420
  ...(cronOperator?.configured === true ? { cron: cronOperator } : {}),
196
421
  info: buildInfo,
422
+ modelCatalog,
197
423
  onServerError: (reason) => input.onFailure(reason),
198
424
  ...(input.logger === undefined ? {} : { logger: input.logger }),
199
425
  });
@@ -310,6 +536,79 @@ export function createTuiChannelDriver(overrides = {}, cronOperator) {
310
536
  };
311
537
  },
312
538
  },
539
+ monitors: {
540
+ wake: async ({ conversationId, text, deliveryKey, monitor }) => {
541
+ const threadId = webThreadId(conversationId);
542
+ const expectedConversationId = baseConversationId(monitor.origin.conversationId);
543
+ const expectedDeliveryKey = `monitor:${monitor.monitorId}:${String(monitor.counters.seq)}`;
544
+ if (monitor.origin.channel !== "web"
545
+ || conversationId !== expectedConversationId
546
+ || threadId === undefined
547
+ || deliveryKey !== expectedDeliveryKey) {
548
+ return {
549
+ delivered: false,
550
+ code: "monitor_origin_mismatch",
551
+ reason: "The monitor origin does not match the web destination.",
552
+ retryable: false,
553
+ };
554
+ }
555
+ if (input.sourceId === undefined) {
556
+ return {
557
+ delivered: false,
558
+ code: "destination_channel_unavailable",
559
+ reason: "The web monitor destination is unavailable.",
560
+ retryable: true,
561
+ channelId: "tui",
562
+ };
563
+ }
564
+ let delivered;
565
+ try {
566
+ delivered = await deliverNotification({
567
+ sourceId: input.sourceId,
568
+ triggerKind: "monitor",
569
+ deliveryKey,
570
+ threadId,
571
+ monitor,
572
+ wakePrompt: text,
573
+ });
574
+ }
575
+ catch (error) {
576
+ if (webConsoleErrorCode(error) === "notification_ingress_unavailable") {
577
+ return {
578
+ delivered: false,
579
+ code: "destination_channel_unavailable",
580
+ reason: "The web console notification ingress is unavailable.",
581
+ retryable: true,
582
+ channelId: "tui",
583
+ };
584
+ }
585
+ return {
586
+ delivered: false,
587
+ code: "monitor_wake_failed",
588
+ reason: error instanceof Error ? error.message : String(error),
589
+ retryable: false,
590
+ ambiguous: true,
591
+ channelId: "tui",
592
+ };
593
+ }
594
+ const receipt = delivered.delivery;
595
+ if (receipt === undefined) {
596
+ return {
597
+ delivered: false,
598
+ code: "monitor_wake_failed",
599
+ reason: "The web console returned no Monitor wake receipt.",
600
+ retryable: false,
601
+ ambiguous: true,
602
+ channelId: "tui",
603
+ };
604
+ }
605
+ return {
606
+ ...receipt,
607
+ ...(receipt.delivered ? { code: "delivered", historyRecorded: true } : {}),
608
+ channelId: "tui",
609
+ };
610
+ },
611
+ },
313
612
  notify: async ({ conversationId, text, verbatim, deliveryKey, processJob }) => {
314
613
  if (verbatim === true
315
614
  || deliveryKey === undefined
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/channel-drivers/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/channel-drivers/tui.ts"],"names":[],"mappings":"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"}