@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.
- package/README.md +260 -98
- package/dist/adapter-send-tools.d.ts +3 -2
- package/dist/adapter-send-tools.d.ts.map +1 -1
- package/dist/adapter-send-tools.js +15 -5
- package/dist/adapter-send-tools.js.map +1 -1
- package/dist/app-controller-channels.d.ts +6 -0
- package/dist/app-controller-channels.d.ts.map +1 -1
- package/dist/app-controller-channels.js +29 -2
- package/dist/app-controller-channels.js.map +1 -1
- package/dist/app-controller-continuation.d.ts.map +1 -1
- package/dist/app-controller-continuation.js +2 -3
- package/dist/app-controller-continuation.js.map +1 -1
- package/dist/app-controller-lifecycle.d.ts +4 -0
- package/dist/app-controller-lifecycle.d.ts.map +1 -1
- package/dist/app-controller-lifecycle.js +7 -0
- package/dist/app-controller-lifecycle.js.map +1 -1
- package/dist/app-controller-maintenance.d.ts +3 -1
- package/dist/app-controller-maintenance.d.ts.map +1 -1
- package/dist/app-controller-maintenance.js +3 -0
- package/dist/app-controller-maintenance.js.map +1 -1
- package/dist/app-controller-monitors.d.ts +26 -0
- package/dist/app-controller-monitors.d.ts.map +1 -0
- package/dist/app-controller-monitors.js +127 -0
- package/dist/app-controller-monitors.js.map +1 -0
- package/dist/app-controller-responder.d.ts +9 -17
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +54 -86
- package/dist/app-controller-responder.js.map +1 -1
- package/dist/app-controller-traceability.d.ts.map +1 -1
- package/dist/app-controller-traceability.js +3 -0
- package/dist/app-controller-traceability.js.map +1 -1
- package/dist/app-controller-types.d.ts +1 -0
- package/dist/app-controller-types.d.ts.map +1 -1
- package/dist/app-controller-utils.d.ts +1 -5
- package/dist/app-controller-utils.d.ts.map +1 -1
- package/dist/app-controller-utils.js +4 -21
- package/dist/app-controller-utils.js.map +1 -1
- package/dist/app-controller.d.ts +26 -10
- package/dist/app-controller.d.ts.map +1 -1
- package/dist/app-controller.js +39 -1
- package/dist/app-controller.js.map +1 -1
- package/dist/artifact-retention.js +11 -0
- package/dist/artifact-retention.js.map +1 -1
- package/dist/background.d.ts +0 -6
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +5 -58
- package/dist/background.js.map +1 -1
- package/dist/channel-drivers/slack.d.ts.map +1 -1
- package/dist/channel-drivers/slack.js +18 -0
- package/dist/channel-drivers/slack.js.map +1 -1
- package/dist/channel-drivers/telegram.d.ts.map +1 -1
- package/dist/channel-drivers/telegram.js +26 -0
- package/dist/channel-drivers/telegram.js.map +1 -1
- package/dist/channel-drivers/tui.d.ts +68 -8
- package/dist/channel-drivers/tui.d.ts.map +1 -1
- package/dist/channel-drivers/tui.js +407 -89
- package/dist/channel-drivers/tui.js.map +1 -1
- package/dist/channel-runtime-controls.d.ts +2 -1
- package/dist/channel-runtime-controls.d.ts.map +1 -1
- package/dist/channel-runtime-controls.js +79 -22
- package/dist/channel-runtime-controls.js.map +1 -1
- package/dist/cli-args.d.ts +5 -8
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +33 -52
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-background-command.d.ts.map +1 -1
- package/dist/cli-background-command.js +4 -0
- package/dist/cli-background-command.js.map +1 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +24 -2
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-help.d.ts +26 -0
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +58 -53
- package/dist/cli-help.js.map +1 -1
- package/dist/cli-init-command.d.ts +1 -2
- package/dist/cli-init-command.d.ts.map +1 -1
- package/dist/cli-init-command.js +31 -71
- package/dist/cli-init-command.js.map +1 -1
- package/dist/cli-install-skill-command.d.ts.map +1 -1
- package/dist/cli-install-skill-command.js +12 -3
- package/dist/cli-install-skill-command.js.map +1 -1
- package/dist/config-reference.d.ts +1 -0
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +217 -60
- package/dist/config-reference.js.map +1 -1
- package/dist/configured-agent.d.ts +27 -4
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +159 -112
- package/dist/configured-agent.js.map +1 -1
- package/dist/conversation-title.d.ts.map +1 -1
- package/dist/conversation-title.js +9 -2
- package/dist/conversation-title.js.map +1 -1
- package/dist/cron-control-store.d.ts.map +1 -1
- package/dist/cron-control-store.js +4 -2
- package/dist/cron-control-store.js.map +1 -1
- package/dist/doctor.d.ts +7 -13
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +406 -770
- package/dist/doctor.js.map +1 -1
- package/dist/first-run-readiness.d.ts.map +1 -1
- package/dist/first-run-readiness.js +0 -6
- package/dist/first-run-readiness.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interaction-bridge.d.ts +3 -3
- package/dist/interaction-bridge.d.ts.map +1 -1
- package/dist/interaction-bridge.js +27 -10
- package/dist/interaction-bridge.js.map +1 -1
- package/dist/launchd.d.ts +2 -0
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +3 -0
- package/dist/launchd.js.map +1 -1
- package/dist/local-tui-session.d.ts +14 -0
- package/dist/local-tui-session.d.ts.map +1 -0
- package/dist/local-tui-session.js +100 -0
- package/dist/local-tui-session.js.map +1 -0
- package/dist/mcp-apps.d.ts.map +1 -1
- package/dist/mcp-apps.js +3 -0
- package/dist/mcp-apps.js.map +1 -1
- package/dist/memory-journal.d.ts +53 -0
- package/dist/memory-journal.d.ts.map +1 -0
- package/dist/memory-journal.js +586 -0
- package/dist/memory-journal.js.map +1 -0
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +16 -2
- package/dist/memory-recall.js.map +1 -1
- package/dist/memory-remember.d.ts +49 -0
- package/dist/memory-remember.d.ts.map +1 -0
- package/dist/memory-remember.js +190 -0
- package/dist/memory-remember.js.map +1 -0
- package/dist/memory-retrieval.d.ts +33 -0
- package/dist/memory-retrieval.d.ts.map +1 -1
- package/dist/memory-retrieval.js +43 -0
- package/dist/memory-retrieval.js.map +1 -1
- package/dist/model-effort-capabilities.d.ts +8 -9
- package/dist/model-effort-capabilities.d.ts.map +1 -1
- package/dist/model-effort-capabilities.js +17 -35
- package/dist/model-effort-capabilities.js.map +1 -1
- package/dist/modules/base.d.ts +3 -4
- package/dist/modules/base.d.ts.map +1 -1
- package/dist/modules/base.js +4 -6
- package/dist/modules/base.js.map +1 -1
- package/dist/modules/catalog.d.ts.map +1 -1
- package/dist/modules/catalog.js +11 -9
- package/dist/modules/catalog.js.map +1 -1
- package/dist/modules/known-tools.d.ts +2 -2
- package/dist/modules/known-tools.d.ts.map +1 -1
- package/dist/modules/known-tools.js +7 -0
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/monitor-channel-routing.d.ts +20 -0
- package/dist/monitor-channel-routing.d.ts.map +1 -0
- package/dist/monitor-channel-routing.js +73 -0
- package/dist/monitor-channel-routing.js.map +1 -0
- package/dist/monitors-command.d.ts +23 -0
- package/dist/monitors-command.d.ts.map +1 -0
- package/dist/monitors-command.js +217 -0
- package/dist/monitors-command.js.map +1 -0
- package/dist/monitors-config.d.ts +77 -0
- package/dist/monitors-config.d.ts.map +1 -0
- package/dist/monitors-config.js +150 -0
- package/dist/monitors-config.js.map +1 -0
- package/dist/monitors-context.d.ts +58 -0
- package/dist/monitors-context.d.ts.map +1 -0
- package/dist/monitors-context.js +194 -0
- package/dist/monitors-context.js.map +1 -0
- package/dist/monitors-runtime.d.ts +36 -0
- package/dist/monitors-runtime.d.ts.map +1 -0
- package/dist/monitors-runtime.js +103 -0
- package/dist/monitors-runtime.js.map +1 -0
- package/dist/monitors-service.d.ts +71 -0
- package/dist/monitors-service.d.ts.map +1 -0
- package/dist/monitors-service.js +1796 -0
- package/dist/monitors-service.js.map +1 -0
- package/dist/monitors-store.d.ts +93 -0
- package/dist/monitors-store.d.ts.map +1 -0
- package/dist/monitors-store.js +313 -0
- package/dist/monitors-store.js.map +1 -0
- package/dist/notify-destinations.d.ts +3 -2
- package/dist/notify-destinations.d.ts.map +1 -1
- package/dist/notify-destinations.js +6 -7
- package/dist/notify-destinations.js.map +1 -1
- package/dist/posted-reply-history.d.ts.map +1 -1
- package/dist/posted-reply-history.js +40 -3
- package/dist/posted-reply-history.js.map +1 -1
- package/dist/proactive-notify.d.ts +20 -1
- package/dist/proactive-notify.d.ts.map +1 -1
- package/dist/proactive-notify.js +56 -3
- package/dist/proactive-notify.js.map +1 -1
- package/dist/process-job-channel-routing.js +2 -1
- package/dist/process-job-channel-routing.js.map +1 -1
- package/dist/process-job-output-tail.d.ts +53 -0
- package/dist/process-job-output-tail.d.ts.map +1 -0
- package/dist/process-job-output-tail.js +257 -0
- package/dist/process-job-output-tail.js.map +1 -0
- package/dist/process-jobs-config.d.ts +1 -1
- package/dist/process-jobs-config.js +1 -1
- package/dist/process-jobs-config.js.map +1 -1
- package/dist/process-jobs-context.d.ts +11 -1
- package/dist/process-jobs-context.d.ts.map +1 -1
- package/dist/process-jobs-context.js +55 -11
- package/dist/process-jobs-context.js.map +1 -1
- package/dist/process-jobs-protection.js +1 -1
- package/dist/process-jobs-protection.js.map +1 -1
- package/dist/process-jobs-runtime.d.ts.map +1 -1
- package/dist/process-jobs-runtime.js +15 -12
- package/dist/process-jobs-runtime.js.map +1 -1
- package/dist/process-jobs-service.d.ts.map +1 -1
- package/dist/process-jobs-service.js +118 -172
- package/dist/process-jobs-service.js.map +1 -1
- package/dist/process-jobs-store.d.ts +3 -1
- package/dist/process-jobs-store.d.ts.map +1 -1
- package/dist/process-jobs-store.js +4 -1
- package/dist/process-jobs-store.js.map +1 -1
- package/dist/process-output-redaction.d.ts +58 -0
- package/dist/process-output-redaction.d.ts.map +1 -0
- package/dist/process-output-redaction.js +311 -0
- package/dist/process-output-redaction.js.map +1 -0
- package/dist/project-skills.d.ts +11 -5
- package/dist/project-skills.d.ts.map +1 -1
- package/dist/project-skills.js +88 -39
- package/dist/project-skills.js.map +1 -1
- package/dist/provider-auth-checks.d.ts +27 -0
- package/dist/provider-auth-checks.d.ts.map +1 -0
- package/dist/provider-auth-checks.js +349 -0
- package/dist/provider-auth-checks.js.map +1 -0
- package/dist/provider-auth-observations.d.ts +22 -0
- package/dist/provider-auth-observations.d.ts.map +1 -0
- package/dist/provider-auth-observations.js +139 -0
- package/dist/provider-auth-observations.js.map +1 -0
- package/dist/provider-auth-operator.d.ts +19 -0
- package/dist/provider-auth-operator.d.ts.map +1 -0
- package/dist/provider-auth-operator.js +560 -0
- package/dist/provider-auth-operator.js.map +1 -0
- package/dist/provider-auth-status.d.ts +20 -0
- package/dist/provider-auth-status.d.ts.map +1 -0
- package/dist/provider-auth-status.js +235 -0
- package/dist/provider-auth-status.js.map +1 -0
- package/dist/provider-model-catalog.d.ts +95 -0
- package/dist/provider-model-catalog.d.ts.map +1 -0
- package/dist/provider-model-catalog.js +550 -0
- package/dist/provider-model-catalog.js.map +1 -0
- package/dist/provider-setup.d.ts +26 -13
- package/dist/provider-setup.d.ts.map +1 -1
- package/dist/provider-setup.js +106 -130
- package/dist/provider-setup.js.map +1 -1
- package/dist/readiness-probe-worker.d.ts +1 -2
- package/dist/readiness-probe-worker.d.ts.map +1 -1
- package/dist/readiness-probe-worker.js +3 -8
- package/dist/readiness-probe-worker.js.map +1 -1
- package/dist/readiness-probe.d.ts +1 -1
- package/dist/readiness-probe.d.ts.map +1 -1
- package/dist/readiness-probe.js +3 -33
- package/dist/readiness-probe.js.map +1 -1
- package/dist/reply-artifacts.d.ts +3 -1
- package/dist/reply-artifacts.d.ts.map +1 -1
- package/dist/reply-artifacts.js +45 -10
- package/dist/reply-artifacts.js.map +1 -1
- package/dist/request-model-override.d.ts +14 -37
- package/dist/request-model-override.d.ts.map +1 -1
- package/dist/request-model-override.js +105 -143
- package/dist/request-model-override.js.map +1 -1
- package/dist/request-scoped-mcp.d.ts +3 -0
- package/dist/request-scoped-mcp.d.ts.map +1 -1
- package/dist/request-scoped-mcp.js +1 -1
- package/dist/request-scoped-mcp.js.map +1 -1
- package/dist/run-history.d.ts.map +1 -1
- package/dist/run-history.js +56 -13
- package/dist/run-history.js.map +1 -1
- package/dist/runtime-option-extensions.d.ts +2 -4
- package/dist/runtime-option-extensions.d.ts.map +1 -1
- package/dist/runtime-option-extensions.js +4 -8
- package/dist/runtime-option-extensions.js.map +1 -1
- package/dist/runtime-routes.d.ts +5 -5
- package/dist/runtime-routes.d.ts.map +1 -1
- package/dist/runtime-routes.js +29 -18
- package/dist/runtime-routes.js.map +1 -1
- package/dist/sandbox-settings-cleanup.d.ts +15 -0
- package/dist/sandbox-settings-cleanup.d.ts.map +1 -0
- package/dist/sandbox-settings-cleanup.js +88 -0
- package/dist/sandbox-settings-cleanup.js.map +1 -0
- package/dist/seen-conversations.d.ts +4 -3
- package/dist/seen-conversations.d.ts.map +1 -1
- package/dist/seen-conversations.js +6 -5
- package/dist/seen-conversations.js.map +1 -1
- package/dist/session-history.d.ts +14 -0
- package/dist/session-history.d.ts.map +1 -1
- package/dist/session-history.js +120 -5
- package/dist/session-history.js.map +1 -1
- package/dist/systemd-command.d.ts +8 -0
- package/dist/systemd-command.d.ts.map +1 -0
- package/dist/systemd-command.js +206 -0
- package/dist/systemd-command.js.map +1 -0
- package/dist/systemd.d.ts +51 -0
- package/dist/systemd.d.ts.map +1 -0
- package/dist/systemd.js +299 -0
- package/dist/systemd.js.map +1 -0
- package/dist/tool-output-artifacts.d.ts +4 -0
- package/dist/tool-output-artifacts.d.ts.map +1 -0
- package/dist/tool-output-artifacts.js +17 -0
- package/dist/tool-output-artifacts.js.map +1 -0
- package/dist/trigger-overrides.d.ts +6 -0
- package/dist/trigger-overrides.d.ts.map +1 -1
- package/dist/trigger-overrides.js +36 -4
- package/dist/trigger-overrides.js.map +1 -1
- package/dist/tui-command.d.ts +0 -45
- package/dist/tui-command.d.ts.map +1 -1
- package/dist/tui-command.js +27 -264
- package/dist/tui-command.js.map +1 -1
- package/dist/untrusted-text.d.ts +36 -0
- package/dist/untrusted-text.d.ts.map +1 -0
- package/dist/untrusted-text.js +150 -0
- package/dist/untrusted-text.js.map +1 -0
- package/dist/web-command.d.ts +3 -0
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +112 -7
- package/dist/web-command.js.map +1 -1
- package/dist/web-request-coordinator.d.ts +19 -0
- package/dist/web-request-coordinator.d.ts.map +1 -0
- package/dist/web-request-coordinator.js +242 -0
- package/dist/web-request-coordinator.js.map +1 -0
- package/dist/wizard/answers.d.ts +3 -9
- package/dist/wizard/answers.d.ts.map +1 -1
- package/dist/wizard/answers.js +11 -36
- package/dist/wizard/answers.js.map +1 -1
- package/dist/wizard/from-flags.d.ts +1 -2
- package/dist/wizard/from-flags.d.ts.map +1 -1
- package/dist/wizard/from-flags.js +8 -3
- package/dist/wizard/from-flags.js.map +1 -1
- package/dist/wizard/model-discovery.d.ts +7 -8
- package/dist/wizard/model-discovery.d.ts.map +1 -1
- package/dist/wizard/model-discovery.js +58 -431
- package/dist/wizard/model-discovery.js.map +1 -1
- package/dist/wizard/presets.js +2 -2
- package/dist/wizard/presets.js.map +1 -1
- package/dist/wizard/prompts.d.ts +13 -12
- package/dist/wizard/prompts.d.ts.map +1 -1
- package/dist/wizard/prompts.js +25 -45
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.d.ts.map +1 -1
- package/dist/wizard/run.js +30 -153
- package/dist/wizard/run.js.map +1 -1
- package/package.json +18 -18
- package/schema/mono-agent.config.schema.json +301 -53
- package/skills/mono-agent-composer/SKILL.md +5 -5
- package/skills/mono-agent-composer/references/config-blueprint.md +61 -47
- package/skills/mono-agent-composer/references/discovery-questions.md +18 -18
- package/skills/mono-agent-composer/references/feature-coverage.md +39 -21
- package/skills/mono-agent-composer/references/package-map.md +26 -17
- package/skills/mono-agent-composer/references/playbooks.md +39 -28
- package/skills/mono-agent-composer/references/validation.md +4 -3
- package/dist/codex-model-catalog.d.ts +0 -15
- package/dist/codex-model-catalog.d.ts.map +0 -1
- package/dist/codex-model-catalog.js +0 -220
- package/dist/codex-model-catalog.js.map +0 -1
- package/dist/configuration-proposal-main.d.ts +0 -3
- package/dist/configuration-proposal-main.d.ts.map +0 -1
- package/dist/configuration-proposal-main.js +0 -13
- package/dist/configuration-proposal-main.js.map +0 -1
- package/dist/configuration-proposal-tool.d.ts +0 -33
- package/dist/configuration-proposal-tool.d.ts.map +0 -1
- package/dist/configuration-proposal-tool.js +0 -188
- package/dist/configuration-proposal-tool.js.map +0 -1
- package/dist/local-configuration.d.ts +0 -99
- package/dist/local-configuration.d.ts.map +0 -1
- package/dist/local-configuration.js +0 -1330
- 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"}
|