@mono-agent/agent-app 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 (369) hide show
  1. package/README.md +260 -98
  2. package/dist/adapter-send-tools.d.ts +3 -2
  3. package/dist/adapter-send-tools.d.ts.map +1 -1
  4. package/dist/adapter-send-tools.js +15 -5
  5. package/dist/adapter-send-tools.js.map +1 -1
  6. package/dist/app-controller-channels.d.ts +6 -0
  7. package/dist/app-controller-channels.d.ts.map +1 -1
  8. package/dist/app-controller-channels.js +29 -2
  9. package/dist/app-controller-channels.js.map +1 -1
  10. package/dist/app-controller-continuation.d.ts.map +1 -1
  11. package/dist/app-controller-continuation.js +2 -3
  12. package/dist/app-controller-continuation.js.map +1 -1
  13. package/dist/app-controller-lifecycle.d.ts +4 -0
  14. package/dist/app-controller-lifecycle.d.ts.map +1 -1
  15. package/dist/app-controller-lifecycle.js +7 -0
  16. package/dist/app-controller-lifecycle.js.map +1 -1
  17. package/dist/app-controller-maintenance.d.ts +3 -1
  18. package/dist/app-controller-maintenance.d.ts.map +1 -1
  19. package/dist/app-controller-maintenance.js +3 -0
  20. package/dist/app-controller-maintenance.js.map +1 -1
  21. package/dist/app-controller-monitors.d.ts +26 -0
  22. package/dist/app-controller-monitors.d.ts.map +1 -0
  23. package/dist/app-controller-monitors.js +127 -0
  24. package/dist/app-controller-monitors.js.map +1 -0
  25. package/dist/app-controller-responder.d.ts +9 -17
  26. package/dist/app-controller-responder.d.ts.map +1 -1
  27. package/dist/app-controller-responder.js +54 -86
  28. package/dist/app-controller-responder.js.map +1 -1
  29. package/dist/app-controller-traceability.d.ts.map +1 -1
  30. package/dist/app-controller-traceability.js +3 -0
  31. package/dist/app-controller-traceability.js.map +1 -1
  32. package/dist/app-controller-types.d.ts +1 -0
  33. package/dist/app-controller-types.d.ts.map +1 -1
  34. package/dist/app-controller-utils.d.ts +1 -5
  35. package/dist/app-controller-utils.d.ts.map +1 -1
  36. package/dist/app-controller-utils.js +4 -21
  37. package/dist/app-controller-utils.js.map +1 -1
  38. package/dist/app-controller.d.ts +26 -10
  39. package/dist/app-controller.d.ts.map +1 -1
  40. package/dist/app-controller.js +39 -1
  41. package/dist/app-controller.js.map +1 -1
  42. package/dist/artifact-retention.js +11 -0
  43. package/dist/artifact-retention.js.map +1 -1
  44. package/dist/background.d.ts +0 -6
  45. package/dist/background.d.ts.map +1 -1
  46. package/dist/background.js +5 -58
  47. package/dist/background.js.map +1 -1
  48. package/dist/channel-drivers/slack.d.ts.map +1 -1
  49. package/dist/channel-drivers/slack.js +18 -0
  50. package/dist/channel-drivers/slack.js.map +1 -1
  51. package/dist/channel-drivers/telegram.d.ts.map +1 -1
  52. package/dist/channel-drivers/telegram.js +26 -0
  53. package/dist/channel-drivers/telegram.js.map +1 -1
  54. package/dist/channel-drivers/tui.d.ts +68 -8
  55. package/dist/channel-drivers/tui.d.ts.map +1 -1
  56. package/dist/channel-drivers/tui.js +407 -89
  57. package/dist/channel-drivers/tui.js.map +1 -1
  58. package/dist/channel-runtime-controls.d.ts +2 -1
  59. package/dist/channel-runtime-controls.d.ts.map +1 -1
  60. package/dist/channel-runtime-controls.js +79 -22
  61. package/dist/channel-runtime-controls.js.map +1 -1
  62. package/dist/cli-args.d.ts +5 -8
  63. package/dist/cli-args.d.ts.map +1 -1
  64. package/dist/cli-args.js +33 -52
  65. package/dist/cli-args.js.map +1 -1
  66. package/dist/cli-background-command.d.ts.map +1 -1
  67. package/dist/cli-background-command.js +4 -0
  68. package/dist/cli-background-command.js.map +1 -1
  69. package/dist/cli-commands.d.ts.map +1 -1
  70. package/dist/cli-commands.js +24 -2
  71. package/dist/cli-commands.js.map +1 -1
  72. package/dist/cli-help.d.ts +26 -0
  73. package/dist/cli-help.d.ts.map +1 -1
  74. package/dist/cli-help.js +58 -53
  75. package/dist/cli-help.js.map +1 -1
  76. package/dist/cli-init-command.d.ts +1 -2
  77. package/dist/cli-init-command.d.ts.map +1 -1
  78. package/dist/cli-init-command.js +31 -71
  79. package/dist/cli-init-command.js.map +1 -1
  80. package/dist/cli-install-skill-command.d.ts.map +1 -1
  81. package/dist/cli-install-skill-command.js +12 -3
  82. package/dist/cli-install-skill-command.js.map +1 -1
  83. package/dist/config-reference.d.ts +1 -0
  84. package/dist/config-reference.d.ts.map +1 -1
  85. package/dist/config-reference.js +217 -60
  86. package/dist/config-reference.js.map +1 -1
  87. package/dist/configured-agent.d.ts +27 -4
  88. package/dist/configured-agent.d.ts.map +1 -1
  89. package/dist/configured-agent.js +159 -112
  90. package/dist/configured-agent.js.map +1 -1
  91. package/dist/conversation-title.d.ts.map +1 -1
  92. package/dist/conversation-title.js +9 -2
  93. package/dist/conversation-title.js.map +1 -1
  94. package/dist/cron-control-store.d.ts.map +1 -1
  95. package/dist/cron-control-store.js +4 -2
  96. package/dist/cron-control-store.js.map +1 -1
  97. package/dist/doctor.d.ts +7 -13
  98. package/dist/doctor.d.ts.map +1 -1
  99. package/dist/doctor.js +406 -770
  100. package/dist/doctor.js.map +1 -1
  101. package/dist/first-run-readiness.d.ts.map +1 -1
  102. package/dist/first-run-readiness.js +0 -6
  103. package/dist/first-run-readiness.js.map +1 -1
  104. package/dist/index.d.ts +2 -0
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +1 -0
  107. package/dist/index.js.map +1 -1
  108. package/dist/interaction-bridge.d.ts +3 -3
  109. package/dist/interaction-bridge.d.ts.map +1 -1
  110. package/dist/interaction-bridge.js +27 -10
  111. package/dist/interaction-bridge.js.map +1 -1
  112. package/dist/launchd.d.ts +2 -0
  113. package/dist/launchd.d.ts.map +1 -1
  114. package/dist/launchd.js +3 -0
  115. package/dist/launchd.js.map +1 -1
  116. package/dist/local-tui-session.d.ts +14 -0
  117. package/dist/local-tui-session.d.ts.map +1 -0
  118. package/dist/local-tui-session.js +100 -0
  119. package/dist/local-tui-session.js.map +1 -0
  120. package/dist/mcp-apps.d.ts.map +1 -1
  121. package/dist/mcp-apps.js +3 -0
  122. package/dist/mcp-apps.js.map +1 -1
  123. package/dist/memory-journal.d.ts +53 -0
  124. package/dist/memory-journal.d.ts.map +1 -0
  125. package/dist/memory-journal.js +586 -0
  126. package/dist/memory-journal.js.map +1 -0
  127. package/dist/memory-recall.d.ts.map +1 -1
  128. package/dist/memory-recall.js +16 -2
  129. package/dist/memory-recall.js.map +1 -1
  130. package/dist/memory-remember.d.ts +49 -0
  131. package/dist/memory-remember.d.ts.map +1 -0
  132. package/dist/memory-remember.js +190 -0
  133. package/dist/memory-remember.js.map +1 -0
  134. package/dist/memory-retrieval.d.ts +33 -0
  135. package/dist/memory-retrieval.d.ts.map +1 -1
  136. package/dist/memory-retrieval.js +43 -0
  137. package/dist/memory-retrieval.js.map +1 -1
  138. package/dist/model-effort-capabilities.d.ts +8 -9
  139. package/dist/model-effort-capabilities.d.ts.map +1 -1
  140. package/dist/model-effort-capabilities.js +17 -35
  141. package/dist/model-effort-capabilities.js.map +1 -1
  142. package/dist/modules/base.d.ts +3 -4
  143. package/dist/modules/base.d.ts.map +1 -1
  144. package/dist/modules/base.js +4 -6
  145. package/dist/modules/base.js.map +1 -1
  146. package/dist/modules/catalog.d.ts.map +1 -1
  147. package/dist/modules/catalog.js +11 -9
  148. package/dist/modules/catalog.js.map +1 -1
  149. package/dist/modules/known-tools.d.ts +2 -2
  150. package/dist/modules/known-tools.d.ts.map +1 -1
  151. package/dist/modules/known-tools.js +7 -0
  152. package/dist/modules/known-tools.js.map +1 -1
  153. package/dist/monitor-channel-routing.d.ts +20 -0
  154. package/dist/monitor-channel-routing.d.ts.map +1 -0
  155. package/dist/monitor-channel-routing.js +73 -0
  156. package/dist/monitor-channel-routing.js.map +1 -0
  157. package/dist/monitors-command.d.ts +23 -0
  158. package/dist/monitors-command.d.ts.map +1 -0
  159. package/dist/monitors-command.js +217 -0
  160. package/dist/monitors-command.js.map +1 -0
  161. package/dist/monitors-config.d.ts +77 -0
  162. package/dist/monitors-config.d.ts.map +1 -0
  163. package/dist/monitors-config.js +150 -0
  164. package/dist/monitors-config.js.map +1 -0
  165. package/dist/monitors-context.d.ts +58 -0
  166. package/dist/monitors-context.d.ts.map +1 -0
  167. package/dist/monitors-context.js +194 -0
  168. package/dist/monitors-context.js.map +1 -0
  169. package/dist/monitors-runtime.d.ts +36 -0
  170. package/dist/monitors-runtime.d.ts.map +1 -0
  171. package/dist/monitors-runtime.js +103 -0
  172. package/dist/monitors-runtime.js.map +1 -0
  173. package/dist/monitors-service.d.ts +71 -0
  174. package/dist/monitors-service.d.ts.map +1 -0
  175. package/dist/monitors-service.js +1796 -0
  176. package/dist/monitors-service.js.map +1 -0
  177. package/dist/monitors-store.d.ts +93 -0
  178. package/dist/monitors-store.d.ts.map +1 -0
  179. package/dist/monitors-store.js +313 -0
  180. package/dist/monitors-store.js.map +1 -0
  181. package/dist/notify-destinations.d.ts +3 -2
  182. package/dist/notify-destinations.d.ts.map +1 -1
  183. package/dist/notify-destinations.js +6 -7
  184. package/dist/notify-destinations.js.map +1 -1
  185. package/dist/posted-reply-history.d.ts.map +1 -1
  186. package/dist/posted-reply-history.js +40 -3
  187. package/dist/posted-reply-history.js.map +1 -1
  188. package/dist/proactive-notify.d.ts +20 -1
  189. package/dist/proactive-notify.d.ts.map +1 -1
  190. package/dist/proactive-notify.js +56 -3
  191. package/dist/proactive-notify.js.map +1 -1
  192. package/dist/process-job-channel-routing.js +2 -1
  193. package/dist/process-job-channel-routing.js.map +1 -1
  194. package/dist/process-job-output-tail.d.ts +53 -0
  195. package/dist/process-job-output-tail.d.ts.map +1 -0
  196. package/dist/process-job-output-tail.js +257 -0
  197. package/dist/process-job-output-tail.js.map +1 -0
  198. package/dist/process-jobs-config.d.ts +1 -1
  199. package/dist/process-jobs-config.js +1 -1
  200. package/dist/process-jobs-config.js.map +1 -1
  201. package/dist/process-jobs-context.d.ts +11 -1
  202. package/dist/process-jobs-context.d.ts.map +1 -1
  203. package/dist/process-jobs-context.js +55 -11
  204. package/dist/process-jobs-context.js.map +1 -1
  205. package/dist/process-jobs-protection.js +1 -1
  206. package/dist/process-jobs-protection.js.map +1 -1
  207. package/dist/process-jobs-runtime.d.ts.map +1 -1
  208. package/dist/process-jobs-runtime.js +15 -12
  209. package/dist/process-jobs-runtime.js.map +1 -1
  210. package/dist/process-jobs-service.d.ts.map +1 -1
  211. package/dist/process-jobs-service.js +118 -172
  212. package/dist/process-jobs-service.js.map +1 -1
  213. package/dist/process-jobs-store.d.ts +3 -1
  214. package/dist/process-jobs-store.d.ts.map +1 -1
  215. package/dist/process-jobs-store.js +4 -1
  216. package/dist/process-jobs-store.js.map +1 -1
  217. package/dist/process-output-redaction.d.ts +58 -0
  218. package/dist/process-output-redaction.d.ts.map +1 -0
  219. package/dist/process-output-redaction.js +311 -0
  220. package/dist/process-output-redaction.js.map +1 -0
  221. package/dist/project-skills.d.ts +11 -5
  222. package/dist/project-skills.d.ts.map +1 -1
  223. package/dist/project-skills.js +88 -39
  224. package/dist/project-skills.js.map +1 -1
  225. package/dist/provider-auth-checks.d.ts +27 -0
  226. package/dist/provider-auth-checks.d.ts.map +1 -0
  227. package/dist/provider-auth-checks.js +349 -0
  228. package/dist/provider-auth-checks.js.map +1 -0
  229. package/dist/provider-auth-observations.d.ts +22 -0
  230. package/dist/provider-auth-observations.d.ts.map +1 -0
  231. package/dist/provider-auth-observations.js +139 -0
  232. package/dist/provider-auth-observations.js.map +1 -0
  233. package/dist/provider-auth-operator.d.ts +19 -0
  234. package/dist/provider-auth-operator.d.ts.map +1 -0
  235. package/dist/provider-auth-operator.js +560 -0
  236. package/dist/provider-auth-operator.js.map +1 -0
  237. package/dist/provider-auth-status.d.ts +20 -0
  238. package/dist/provider-auth-status.d.ts.map +1 -0
  239. package/dist/provider-auth-status.js +235 -0
  240. package/dist/provider-auth-status.js.map +1 -0
  241. package/dist/provider-model-catalog.d.ts +95 -0
  242. package/dist/provider-model-catalog.d.ts.map +1 -0
  243. package/dist/provider-model-catalog.js +550 -0
  244. package/dist/provider-model-catalog.js.map +1 -0
  245. package/dist/provider-setup.d.ts +26 -13
  246. package/dist/provider-setup.d.ts.map +1 -1
  247. package/dist/provider-setup.js +106 -130
  248. package/dist/provider-setup.js.map +1 -1
  249. package/dist/readiness-probe-worker.d.ts +1 -2
  250. package/dist/readiness-probe-worker.d.ts.map +1 -1
  251. package/dist/readiness-probe-worker.js +3 -8
  252. package/dist/readiness-probe-worker.js.map +1 -1
  253. package/dist/readiness-probe.d.ts +1 -1
  254. package/dist/readiness-probe.d.ts.map +1 -1
  255. package/dist/readiness-probe.js +3 -33
  256. package/dist/readiness-probe.js.map +1 -1
  257. package/dist/reply-artifacts.d.ts +3 -1
  258. package/dist/reply-artifacts.d.ts.map +1 -1
  259. package/dist/reply-artifacts.js +45 -10
  260. package/dist/reply-artifacts.js.map +1 -1
  261. package/dist/request-model-override.d.ts +14 -37
  262. package/dist/request-model-override.d.ts.map +1 -1
  263. package/dist/request-model-override.js +105 -143
  264. package/dist/request-model-override.js.map +1 -1
  265. package/dist/request-scoped-mcp.d.ts +3 -0
  266. package/dist/request-scoped-mcp.d.ts.map +1 -1
  267. package/dist/request-scoped-mcp.js +1 -1
  268. package/dist/request-scoped-mcp.js.map +1 -1
  269. package/dist/run-history.d.ts.map +1 -1
  270. package/dist/run-history.js +56 -13
  271. package/dist/run-history.js.map +1 -1
  272. package/dist/runtime-option-extensions.d.ts +2 -4
  273. package/dist/runtime-option-extensions.d.ts.map +1 -1
  274. package/dist/runtime-option-extensions.js +4 -8
  275. package/dist/runtime-option-extensions.js.map +1 -1
  276. package/dist/runtime-routes.d.ts +5 -5
  277. package/dist/runtime-routes.d.ts.map +1 -1
  278. package/dist/runtime-routes.js +29 -18
  279. package/dist/runtime-routes.js.map +1 -1
  280. package/dist/sandbox-settings-cleanup.d.ts +15 -0
  281. package/dist/sandbox-settings-cleanup.d.ts.map +1 -0
  282. package/dist/sandbox-settings-cleanup.js +88 -0
  283. package/dist/sandbox-settings-cleanup.js.map +1 -0
  284. package/dist/seen-conversations.d.ts +4 -3
  285. package/dist/seen-conversations.d.ts.map +1 -1
  286. package/dist/seen-conversations.js +6 -5
  287. package/dist/seen-conversations.js.map +1 -1
  288. package/dist/session-history.d.ts +14 -0
  289. package/dist/session-history.d.ts.map +1 -1
  290. package/dist/session-history.js +120 -5
  291. package/dist/session-history.js.map +1 -1
  292. package/dist/systemd-command.d.ts +8 -0
  293. package/dist/systemd-command.d.ts.map +1 -0
  294. package/dist/systemd-command.js +206 -0
  295. package/dist/systemd-command.js.map +1 -0
  296. package/dist/systemd.d.ts +51 -0
  297. package/dist/systemd.d.ts.map +1 -0
  298. package/dist/systemd.js +299 -0
  299. package/dist/systemd.js.map +1 -0
  300. package/dist/tool-output-artifacts.d.ts +4 -0
  301. package/dist/tool-output-artifacts.d.ts.map +1 -0
  302. package/dist/tool-output-artifacts.js +17 -0
  303. package/dist/tool-output-artifacts.js.map +1 -0
  304. package/dist/trigger-overrides.d.ts +6 -0
  305. package/dist/trigger-overrides.d.ts.map +1 -1
  306. package/dist/trigger-overrides.js +36 -4
  307. package/dist/trigger-overrides.js.map +1 -1
  308. package/dist/tui-command.d.ts +0 -45
  309. package/dist/tui-command.d.ts.map +1 -1
  310. package/dist/tui-command.js +27 -264
  311. package/dist/tui-command.js.map +1 -1
  312. package/dist/untrusted-text.d.ts +36 -0
  313. package/dist/untrusted-text.d.ts.map +1 -0
  314. package/dist/untrusted-text.js +150 -0
  315. package/dist/untrusted-text.js.map +1 -0
  316. package/dist/web-command.d.ts +3 -0
  317. package/dist/web-command.d.ts.map +1 -1
  318. package/dist/web-command.js +112 -7
  319. package/dist/web-command.js.map +1 -1
  320. package/dist/web-request-coordinator.d.ts +19 -0
  321. package/dist/web-request-coordinator.d.ts.map +1 -0
  322. package/dist/web-request-coordinator.js +242 -0
  323. package/dist/web-request-coordinator.js.map +1 -0
  324. package/dist/wizard/answers.d.ts +3 -9
  325. package/dist/wizard/answers.d.ts.map +1 -1
  326. package/dist/wizard/answers.js +11 -36
  327. package/dist/wizard/answers.js.map +1 -1
  328. package/dist/wizard/from-flags.d.ts +1 -2
  329. package/dist/wizard/from-flags.d.ts.map +1 -1
  330. package/dist/wizard/from-flags.js +8 -3
  331. package/dist/wizard/from-flags.js.map +1 -1
  332. package/dist/wizard/model-discovery.d.ts +7 -8
  333. package/dist/wizard/model-discovery.d.ts.map +1 -1
  334. package/dist/wizard/model-discovery.js +58 -431
  335. package/dist/wizard/model-discovery.js.map +1 -1
  336. package/dist/wizard/presets.js +2 -2
  337. package/dist/wizard/presets.js.map +1 -1
  338. package/dist/wizard/prompts.d.ts +13 -12
  339. package/dist/wizard/prompts.d.ts.map +1 -1
  340. package/dist/wizard/prompts.js +25 -45
  341. package/dist/wizard/prompts.js.map +1 -1
  342. package/dist/wizard/run.d.ts.map +1 -1
  343. package/dist/wizard/run.js +30 -153
  344. package/dist/wizard/run.js.map +1 -1
  345. package/package.json +18 -18
  346. package/schema/mono-agent.config.schema.json +301 -53
  347. package/skills/mono-agent-composer/SKILL.md +5 -5
  348. package/skills/mono-agent-composer/references/config-blueprint.md +61 -47
  349. package/skills/mono-agent-composer/references/discovery-questions.md +18 -18
  350. package/skills/mono-agent-composer/references/feature-coverage.md +39 -21
  351. package/skills/mono-agent-composer/references/package-map.md +26 -17
  352. package/skills/mono-agent-composer/references/playbooks.md +39 -28
  353. package/skills/mono-agent-composer/references/validation.md +4 -3
  354. package/dist/codex-model-catalog.d.ts +0 -15
  355. package/dist/codex-model-catalog.d.ts.map +0 -1
  356. package/dist/codex-model-catalog.js +0 -220
  357. package/dist/codex-model-catalog.js.map +0 -1
  358. package/dist/configuration-proposal-main.d.ts +0 -3
  359. package/dist/configuration-proposal-main.d.ts.map +0 -1
  360. package/dist/configuration-proposal-main.js +0 -13
  361. package/dist/configuration-proposal-main.js.map +0 -1
  362. package/dist/configuration-proposal-tool.d.ts +0 -33
  363. package/dist/configuration-proposal-tool.d.ts.map +0 -1
  364. package/dist/configuration-proposal-tool.js +0 -188
  365. package/dist/configuration-proposal-tool.js.map +0 -1
  366. package/dist/local-configuration.d.ts +0 -99
  367. package/dist/local-configuration.d.ts.map +0 -1
  368. package/dist/local-configuration.js +0 -1330
  369. package/dist/local-configuration.js.map +0 -1
@@ -0,0 +1,235 @@
1
+ import { checkPiProviderAuth, describePiProviderAuth, } from "@mono-agent/agent-runtime/ai";
2
+ import { modelReferenceKey, parseMonoRuntimeModelReference, } from "@mono-agent/runtime-adapter";
3
+ import { inspectPiAuthStore } from "./pi-auth-store-inspection.js";
4
+ import { configuredRuntimeModels } from "./runtime-routes.js";
5
+ export async function collectUsedProviderReferences(config, drivers, input) {
6
+ const refs = configuredRuntimeModels(config.runtime).map((ref, index) => ({
7
+ ref,
8
+ usage: {
9
+ kind: index === 0 ? "primary" : "fallback",
10
+ model: modelReferenceKey(ref),
11
+ label: index === 0 ? "Primary model" : `Fallback ${index}`,
12
+ },
13
+ }));
14
+ if (config.memory?.llm?.provider === "agent-host") {
15
+ try {
16
+ const ref = parseMonoRuntimeModelReference(config.memory.llm.model);
17
+ refs.push({ ref, usage: { kind: "memory_llm", model: modelReferenceKey(ref), label: "Memory LLM" } });
18
+ }
19
+ catch {
20
+ // The existing memory validation owns malformed model-reference errors.
21
+ }
22
+ }
23
+ for (const driver of drivers) {
24
+ if (driver.id !== "cron" && driver.id !== "webhook")
25
+ continue;
26
+ let loaded;
27
+ try {
28
+ loaded = await driver.loadConfig(input);
29
+ }
30
+ catch {
31
+ continue;
32
+ }
33
+ if (!record(loaded) || (driver.id === "webhook" && loaded.enabled === false))
34
+ continue;
35
+ const entries = driver.id === "cron" ? loaded.jobs : loaded.endpoints;
36
+ if (!Array.isArray(entries))
37
+ continue;
38
+ for (let index = 0; index < entries.length; index += 1) {
39
+ const entry = entries[index];
40
+ if (!record(entry) || entry.enabled === false || typeof entry.model !== "string")
41
+ continue;
42
+ try {
43
+ const ref = parseMonoRuntimeModelReference(entry.model);
44
+ refs.push({
45
+ ref,
46
+ usage: {
47
+ kind: driver.id,
48
+ model: modelReferenceKey(ref),
49
+ label: `${driver.id}.${driver.id === "cron" ? "jobs" : "endpoints"}[${index}]`,
50
+ },
51
+ });
52
+ }
53
+ catch {
54
+ // The channel config validation owns malformed model-reference errors.
55
+ }
56
+ }
57
+ }
58
+ const seen = new Set();
59
+ return refs.filter(({ usage }) => {
60
+ const key = `${usage.kind}\0${usage.label}\0${usage.model}`;
61
+ if (seen.has(key))
62
+ return false;
63
+ seen.add(key);
64
+ return true;
65
+ });
66
+ }
67
+ export async function providerAuthStatusSnapshot(options) {
68
+ const used = await collectUsedProviderReferences(options.config, options.drivers, options.input);
69
+ const byProvider = new Map();
70
+ for (const item of used) {
71
+ const providerId = item.ref.provider;
72
+ const current = byProvider.get(providerId) ?? { refs: [], usages: [] };
73
+ current.refs.push(item.ref);
74
+ current.usages.push(item.usage);
75
+ byProvider.set(providerId, current);
76
+ }
77
+ options.observations.retainProviders([...byProvider.keys()]);
78
+ const authPath = options.config.providers?.piAuthPath;
79
+ const inspection = authPath === undefined ? { status: "missing" } : await inspectPiAuthStore(authPath);
80
+ const localById = new Map((options.config.providers?.local ?? []).map((provider) => [provider.id, provider]));
81
+ const providers = [];
82
+ for (const [providerId, group] of byProvider) {
83
+ const observation = options.observations.get(providerId);
84
+ const local = localById.get(providerId);
85
+ if (local !== undefined) {
86
+ const keyInEnv = local.apiKeyEnv !== undefined && nonEmpty(options.env[local.apiKeyEnv]);
87
+ const hasKey = keyInEnv || nonEmpty(local.apiKey);
88
+ const keyless = local.apiKeyEnv === undefined && local.apiKey === undefined;
89
+ const state = keyless ? "not_applicable" : hasKey ? "present" : "missing";
90
+ const verifiedAt = state === "present" ? observation?.verifiedAt : undefined;
91
+ providers.push({
92
+ providerId,
93
+ label: providerId,
94
+ usages: group.usages,
95
+ state,
96
+ ...(keyless ? {} : { credentialType: "api_key" }),
97
+ ...(hasKey ? { source: keyInEnv ? "environment" : "config" } : {}),
98
+ verification: keyless ? "not_applicable" : verifiedAt === undefined ? "not_verified" : "verified_by_live_request",
99
+ ...(verifiedAt === undefined ? {} : { verifiedAt }),
100
+ methods: [],
101
+ ...(local.enabled === false
102
+ ? { unavailableReason: "Provider is disabled in providers.local." }
103
+ : keyless ? { unavailableReason: "Keyless local provider." }
104
+ : !hasKey ? { unavailableReason: `Set ${local.apiKeyEnv ?? "the configured API key"} in agent configuration.` } : {}),
105
+ ...(observation?.failure === undefined ? {} : { lastFailure: observation.failure }),
106
+ });
107
+ continue;
108
+ }
109
+ const description = describePiProviderAuth(providerId);
110
+ const entry = inspection.status === "ok" ? inspection.auth[providerId] : undefined;
111
+ let state = "missing";
112
+ let credentialType;
113
+ let source;
114
+ let expiresAt;
115
+ let unavailableReason;
116
+ if (description === undefined || description.methods.length === 0) {
117
+ state = "not_applicable";
118
+ unavailableReason = "This provider does not expose an authentication method through Pi.";
119
+ }
120
+ else {
121
+ const storedType = record(entry) && (entry.type === "oauth" || entry.type === "api_key")
122
+ ? entry.type : undefined;
123
+ const hasStoredEntry = inspection.status === "ok" && entry !== undefined;
124
+ if (inspection.status === "unsafe") {
125
+ unavailableReason = `Pi auth store is unsafe (${inspection.reason}).`;
126
+ }
127
+ else if (hasStoredEntry && storedType === undefined) {
128
+ unavailableReason = "Stored credential type is not supported by this provider.";
129
+ }
130
+ else if (storedType !== undefined && !description.methods.some((method) => method.type === storedType)) {
131
+ state = "missing";
132
+ credentialType = storedType;
133
+ unavailableReason = "Stored credential type is not supported by this provider.";
134
+ }
135
+ else if (record(entry) && entry.type === "oauth") {
136
+ credentialType = "oauth";
137
+ source = "stored";
138
+ if (!nonEmpty(entry.access) && !nonEmpty(entry.refresh)) {
139
+ state = "missing";
140
+ unavailableReason = "Stored OAuth credential is unusable.";
141
+ }
142
+ else if (entry.expires !== undefined && isoFromEpochMillis(entry.expires) === undefined) {
143
+ state = "missing";
144
+ unavailableReason = "Stored OAuth credential has an invalid expiry.";
145
+ }
146
+ else if (typeof entry.expires === "number") {
147
+ expiresAt = isoFromEpochMillis(entry.expires);
148
+ state = entry.expires < Date.now() && !nonEmpty(entry.refresh) ? "expired" : "present";
149
+ }
150
+ else {
151
+ state = "present";
152
+ }
153
+ }
154
+ else {
155
+ const checked = await checkPiProviderAuth(providerId, inspection.status === "ok" ? entry : undefined, options.env).catch(() => undefined);
156
+ if (checked !== undefined && checked.source !== "ambient") {
157
+ credentialType = checked.type;
158
+ source = checked.source;
159
+ state = "present";
160
+ }
161
+ else if (checked?.source === "ambient") {
162
+ unavailableReason = "Ambient credential evidence cannot establish a usable credential.";
163
+ }
164
+ else if (record(entry) && entry.type === "api_key") {
165
+ state = "missing";
166
+ credentialType = "api_key";
167
+ unavailableReason = "Stored API-key credential is unusable.";
168
+ }
169
+ }
170
+ if (record(entry) && entry.type === "api_key" && state === "missing" && unavailableReason === undefined) {
171
+ credentialType = "api_key";
172
+ unavailableReason = "Stored API-key credential is unusable.";
173
+ }
174
+ }
175
+ const verifiedAt = state === "present" ? observation?.verifiedAt : undefined;
176
+ providers.push({
177
+ providerId,
178
+ label: description?.label ?? providerId,
179
+ usages: group.usages,
180
+ state,
181
+ ...(credentialType === undefined ? {} : { credentialType }),
182
+ ...(source === undefined ? {} : { source }),
183
+ ...(expiresAt === undefined ? {} : { expiresAt }),
184
+ verification: state === "not_applicable" ? "not_applicable"
185
+ : verifiedAt === undefined ? "not_verified" : "verified_by_live_request",
186
+ ...(verifiedAt === undefined ? {} : { verifiedAt }),
187
+ methods: description === undefined ? [] : methodsFor(providerId, description.methods),
188
+ ...(unavailableReason === undefined ? {} : { unavailableReason }),
189
+ ...(observation?.failure === undefined ? {} : { lastFailure: observation.failure }),
190
+ });
191
+ }
192
+ return {
193
+ schema: "mono-agent.provider-auth.v1",
194
+ generatedAt: new Date().toISOString(),
195
+ providers,
196
+ };
197
+ }
198
+ function methodsFor(providerId, methods) {
199
+ const result = [];
200
+ for (const method of methods) {
201
+ if (method.type === "api_key") {
202
+ result.push({ authType: method.type, strategy: "api_key_prompt", label: method.label, recommended: methods.length === 1 });
203
+ }
204
+ else if (providerId === "openai-codex") {
205
+ result.push({ authType: method.type, strategy: "device_code", label: `${method.label} (device code)`, recommended: true }, { authType: method.type, strategy: "paste_back", label: `${method.label} (paste redirect)`, recommended: false });
206
+ }
207
+ else if (providerId === "github-copilot") {
208
+ result.push({ authType: method.type, strategy: "device_code", label: method.label, recommended: true });
209
+ }
210
+ else if (providerId === "anthropic") {
211
+ result.push({ authType: method.type, strategy: "paste_back", label: method.label, recommended: true });
212
+ }
213
+ else {
214
+ result.push({ authType: method.type, strategy: "provider_prompt", label: method.label, recommended: methods.length === 1 });
215
+ }
216
+ }
217
+ return result;
218
+ }
219
+ function record(value) {
220
+ return typeof value === "object" && value !== null && !Array.isArray(value);
221
+ }
222
+ function nonEmpty(value) {
223
+ return typeof value === "string" && value.trim().length > 0 && value.length <= 65_536 && !value.includes("\0");
224
+ }
225
+ function isoFromEpochMillis(value) {
226
+ if (typeof value !== "number" || !Number.isFinite(value))
227
+ return undefined;
228
+ try {
229
+ return new Date(value).toISOString();
230
+ }
231
+ catch {
232
+ return undefined;
233
+ }
234
+ }
235
+ //# sourceMappingURL=provider-auth-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-auth-status.js","sourceRoot":"","sources":["../src/provider-auth-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import type { TuiCatalogModel, TuiModelOption, TuiProviderInfo } from "@mono-agent/operator-adapter";
2
+ import { type PiBuiltinModelSnapshot } from "@mono-agent/agent-runtime";
3
+ import type { DiscoveredLocalModel, LocalProviderDefinition, ProviderDefinition, RuntimeModelReference } from "@mono-agent/runtime-adapter";
4
+ export declare const DEFAULT_PAGE_SIZE = 100;
5
+ export declare const MAX_PAGE_SIZE = 200;
6
+ /**
7
+ * Producer-side length bounds for the CATALOG's own projections
8
+ * (`listProviders`/`listModels`/`searchModels`). Provider ids, model
9
+ * ids and display names are not length-bounded by config validation, and both
10
+ * `/v1/info` and a `/v1/models` page have a body cap to respect: an over-cap
11
+ * `/v1/models` page 500s instead of serving, and an over-cap `/v1/info` body
12
+ * costs the console a whole field at `sendBoundedInfo`'s fence. Oversized
13
+ * entries are skipped rather than truncated, because a truncated id would not
14
+ * resolve anyway.
15
+ *
16
+ * These are display/paging bounds, NOT validity bounds, and that distinction is
17
+ * the whole reason they are safe to keep. The runtime reference parser bounds a
18
+ * reference's CONTENT (no control or formatting code points) and deliberately
19
+ * not its length — what a model may be called is decided by providers, and two
20
+ * attempts at a ceiling each refused a model that really exists. So an id past
21
+ * `MAX_CATALOG_ID_BYTES` is something a local `/v1/models` can genuinely report
22
+ * and this filter genuinely cuts. Cutting it HERE costs a page one row; cutting
23
+ * it at the parser would have cost an operator a route that runs.
24
+ *
25
+ * `/v1/info.models` deliberately does not inherit them (see the `/v1/info`
26
+ * budget note in `channel-drivers/tui.ts`) — reusing them there deleted runnable
27
+ * models from schema-1 clients at a wire schema that cannot be bumped. The TUI
28
+ * has no `/v1/models` call site at all, so a model this filter drops is still
29
+ * selectable in the picker; `tui-channel.test.ts` pins that divergence.
30
+ *
31
+ * PROVIDER ids and labels are bounded by the shared wire contract instead
32
+ * (`MAX_INFO_PROVIDER_ID_BYTES`/`..._LABEL_BYTES` in `@mono-agent/agent-contracts`),
33
+ * because `/v1/info.providers` has a consumer that enforces its own copy of the
34
+ * same numbers. A local bound here and a local bound there is how a 129-byte
35
+ * provider id came to be published by this catalog and discarded by the
36
+ * console. Model ids have no such second enforcer and keep the local bound.
37
+ */
38
+ export declare const MAX_CATALOG_ID_BYTES = 256;
39
+ export declare const MAX_CATALOG_LABEL_BYTES = 256;
40
+ export declare const DEFAULT_MAX_ADVERTISED_PER_PROVIDER = 100;
41
+ export declare const MAX_SEARCH_RESULTS = 100;
42
+ export interface ProviderModelCatalogInput {
43
+ /** Configured provider definitions (the canonical `providers.entries` map). */
44
+ readonly providers?: readonly ProviderDefinition[];
45
+ /** Local-provider projection used for precise effort/context resolution. */
46
+ readonly localProviders?: readonly LocalProviderDefinition[];
47
+ /** Configured runtime routes (primary + fallbacks). */
48
+ readonly configuredRoutes?: readonly RuntimeModelReference[];
49
+ /** Live-discovered local models (TUI path only; Slack/Telegram pass none). */
50
+ readonly discoveredModels?: readonly DiscoveredLocalModel[];
51
+ /** Test seam: replaces the Pi built-in model listing call. */
52
+ readonly listBuiltinModels?: (providerId: string) => readonly PiBuiltinModelSnapshot[];
53
+ }
54
+ export interface ProviderModelCatalog {
55
+ /** Whether native local metadata proves this route cannot generate chat. */
56
+ isEmbeddingOnly(ref: RuntimeModelReference): boolean;
57
+ /** Eager, frozen, deterministic provider list. Never throws. */
58
+ listProviders(): readonly TuiProviderInfo[];
59
+ listModels(providerId: string, options?: {
60
+ readonly cursor?: string;
61
+ readonly limit?: number;
62
+ }): {
63
+ readonly models: readonly TuiCatalogModel[];
64
+ readonly nextCursor?: string;
65
+ readonly truncated: boolean;
66
+ };
67
+ searchModels(query: string, limit?: number): readonly TuiCatalogModel[];
68
+ /** Effort/context/provider metadata for the configured-route shortlist. */
69
+ describe(refs: readonly RuntimeModelReference[]): Record<string, TuiModelOption>;
70
+ }
71
+ export interface ProviderAuthCheckModelSelection {
72
+ readonly kind: "selected";
73
+ readonly model: RuntimeModelReference;
74
+ readonly selectionBasis: "catalog_pricing" | "subscription_zero_price" | "sole_candidate_unknown_price";
75
+ }
76
+ export interface ProviderAuthCheckModelUnavailable {
77
+ readonly kind: "unavailable";
78
+ readonly code: "provider_unsupported" | "no_eligible_model" | "pricing_unavailable";
79
+ readonly message: string;
80
+ }
81
+ /**
82
+ * Select one cheapest text-generation model without network discovery. Missing
83
+ * prices are deliberately incomparable unless there is exactly one candidate.
84
+ */
85
+ export declare function selectProviderAuthCheckModel(providerId: string, input?: Pick<ProviderModelCatalogInput, "providers" | "configuredRoutes" | "listBuiltinModels">): ProviderAuthCheckModelSelection | ProviderAuthCheckModelUnavailable;
86
+ /**
87
+ * Build the provider-widened model catalog once at channel start. The catalog
88
+ * is total by construction: an unknown provider yields an empty page, a
89
+ * built-in listing that throws degrades to zero models, and no code path
90
+ * propagates. Everything is precomputed here so `/v1/info` reads memory only
91
+ * and never awaits network I/O, and the lazy `/v1/models` endpoint only slices
92
+ * already-frozen pages.
93
+ */
94
+ export declare function buildProviderModelCatalog(input?: ProviderModelCatalogInput): ProviderModelCatalog;
95
+ //# sourceMappingURL=provider-model-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-model-catalog.d.ts","sourceRoot":"","sources":["../src/provider-model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAOrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAqB3C,eAAO,MAAM,mCAAmC,MAAM,CAAC;AACvD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AA+BtC,MAAM,WAAW,yBAAyB;IACxC,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC7D,uDAAuD;IACvD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC7D,8EAA8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5D,8DAA8D;IAC9D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,sBAAsB,EAAE,CAAC;CACxF;AAED,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,eAAe,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC;IACrD,gEAAgE;IAChE,aAAa,IAAI,SAAS,eAAe,EAAE,CAAC;IAC5C,UAAU,CACR,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9D;QACD,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;QAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CAAC;IACxE,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,SAAS,qBAAqB,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,iBAAiB,GAAG,yBAAyB,GAAG,8BAA8B,CAAC;CACzG;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;IACpF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,IAAI,CAAC,yBAAyB,EAAE,WAAW,GAAG,kBAAkB,GAAG,mBAAmB,CAAM,GAClG,+BAA+B,GAAG,iCAAiC,CA2ErE;AA8BD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,GAAE,yBAA8B,GACpC,oBAAoB,CA0WtB"}