@mono-agent/agent-app 0.20.10 → 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.
- package/README.md +33 -18
- package/dist/app-config.d.ts +2 -2
- package/dist/app-controller-channels.d.ts +4 -0
- package/dist/app-controller-channels.d.ts.map +1 -1
- package/dist/app-controller-channels.js +20 -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-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 +7 -17
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +33 -69
- package/dist/app-controller-responder.js.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 +25 -11
- package/dist/app-controller.d.ts.map +1 -1
- package/dist/app-controller.js +36 -1
- package/dist/app-controller.js.map +1 -1
- package/dist/channel-drivers/slack.d.ts.map +1 -1
- package/dist/channel-drivers/slack.js +24 -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 +388 -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 +4 -6
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +16 -36
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +11 -0
- 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 +25 -34
- 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 +5 -49
- package/dist/cli-init-command.js.map +1 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +161 -52
- package/dist/config-reference.js.map +1 -1
- package/dist/configuration-proposal-tool.d.ts.map +1 -1
- package/dist/configuration-proposal-tool.js +3 -11
- package/dist/configuration-proposal-tool.js.map +1 -1
- package/dist/configured-agent.d.ts +18 -3
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +67 -86
- 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/doctor.d.ts +7 -13
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +191 -725
- 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/local-configuration.d.ts.map +1 -1
- package/dist/local-configuration.js +9 -37
- package/dist/local-configuration.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 +24 -0
- package/dist/memory-retrieval.d.ts.map +1 -1
- package/dist/memory-retrieval.js +23 -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 +3 -5
- 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 +6 -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 +207 -0
- package/dist/monitors-command.js.map +1 -0
- package/dist/monitors-config.d.ts +74 -0
- package/dist/monitors-config.d.ts.map +1 -0
- package/dist/monitors-config.js +146 -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 +182 -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 +1665 -0
- package/dist/monitors-service.js.map +1 -0
- package/dist/monitors-store.d.ts +83 -0
- package/dist/monitors-store.d.ts.map +1 -0
- package/dist/monitors-store.js +283 -0
- package/dist/monitors-store.js.map +1 -0
- package/dist/process-jobs-context.d.ts +8 -0
- package/dist/process-jobs-context.d.ts.map +1 -1
- package/dist/process-jobs-context.js +11 -0
- 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 +1 -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 +3 -149
- package/dist/process-jobs-service.js.map +1 -1
- package/dist/process-output-redaction.d.ts +33 -0
- package/dist/process-output-redaction.d.ts.map +1 -0
- package/dist/process-output-redaction.js +149 -0
- package/dist/process-output-redaction.js.map +1 -0
- package/dist/provider-model-catalog.d.ts +78 -0
- package/dist/provider-model-catalog.d.ts.map +1 -0
- package/dist/provider-model-catalog.js +439 -0
- package/dist/provider-model-catalog.js.map +1 -0
- package/dist/provider-setup.d.ts +4 -13
- package/dist/provider-setup.d.ts.map +1 -1
- package/dist/provider-setup.js +5 -115
- 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/request-model-override.d.ts +4 -36
- package/dist/request-model-override.d.ts.map +1 -1
- package/dist/request-model-override.js +58 -146
- package/dist/request-model-override.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/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/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/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 +24 -45
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.d.ts.map +1 -1
- package/dist/wizard/run.js +29 -152
- package/dist/wizard/run.js.map +1 -1
- package/package.json +17 -17
- package/schema/mono-agent.config.schema.json +197 -47
- package/skills/mono-agent-composer/SKILL.md +2 -2
- package/skills/mono-agent-composer/references/config-blueprint.md +45 -40
- package/skills/mono-agent-composer/references/discovery-questions.md +8 -13
- package/skills/mono-agent-composer/references/feature-coverage.md +11 -9
- package/skills/mono-agent-composer/references/package-map.md +22 -16
- package/skills/mono-agent-composer/references/playbooks.md +22 -26
- package/skills/mono-agent-composer/references/validation.md +1 -4
- 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
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
/** Eager, frozen, deterministic provider list. Never throws. */
|
|
56
|
+
listProviders(): readonly TuiProviderInfo[];
|
|
57
|
+
listModels(providerId: string, options?: {
|
|
58
|
+
readonly cursor?: string;
|
|
59
|
+
readonly limit?: number;
|
|
60
|
+
}): {
|
|
61
|
+
readonly models: readonly TuiCatalogModel[];
|
|
62
|
+
readonly nextCursor?: string;
|
|
63
|
+
readonly truncated: boolean;
|
|
64
|
+
};
|
|
65
|
+
searchModels(query: string, limit?: number): readonly TuiCatalogModel[];
|
|
66
|
+
/** Effort/context/provider metadata for the configured-route shortlist. */
|
|
67
|
+
describe(refs: readonly RuntimeModelReference[]): Record<string, TuiModelOption>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Build the provider-widened model catalog once at channel start. The catalog
|
|
71
|
+
* is total by construction: an unknown provider yields an empty page, a
|
|
72
|
+
* built-in listing that throws degrades to zero models, and no code path
|
|
73
|
+
* propagates. Everything is precomputed here so `/v1/info` reads memory only
|
|
74
|
+
* and never awaits network I/O, and the lazy `/v1/models` endpoint only slices
|
|
75
|
+
* already-frozen pages.
|
|
76
|
+
*/
|
|
77
|
+
export declare function buildProviderModelCatalog(input?: ProviderModelCatalogInput): ProviderModelCatalog;
|
|
78
|
+
//# 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,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;AAwBD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,GAAE,yBAA8B,GACpC,oBAAoB,CA6UtB"}
|
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
import { MAX_INFO_PROVIDER_ID_BYTES, MAX_INFO_PROVIDER_LABEL_BYTES, } from "@mono-agent/agent-contracts";
|
|
2
|
+
import { getPiBuiltinModel, listPiBuiltinModels, listPiBuiltinProviders, } from "@mono-agent/agent-runtime";
|
|
3
|
+
import { modelReferenceKey, parseMonoRuntimeModelReference } from "@mono-agent/runtime-adapter";
|
|
4
|
+
import { resolveAdvertisedModelEffort, resolveAdvertisedModelEffortForBuiltin, } from "./model-effort-capabilities.js";
|
|
5
|
+
export const DEFAULT_PAGE_SIZE = 100;
|
|
6
|
+
export const MAX_PAGE_SIZE = 200;
|
|
7
|
+
/**
|
|
8
|
+
* Producer-side length bounds for the CATALOG's own projections
|
|
9
|
+
* (`listProviders`/`listModels`/`searchModels`). Provider ids, model
|
|
10
|
+
* ids and display names are not length-bounded by config validation, and both
|
|
11
|
+
* `/v1/info` and a `/v1/models` page have a body cap to respect: an over-cap
|
|
12
|
+
* `/v1/models` page 500s instead of serving, and an over-cap `/v1/info` body
|
|
13
|
+
* costs the console a whole field at `sendBoundedInfo`'s fence. Oversized
|
|
14
|
+
* entries are skipped rather than truncated, because a truncated id would not
|
|
15
|
+
* resolve anyway.
|
|
16
|
+
*
|
|
17
|
+
* These are display/paging bounds, NOT validity bounds, and that distinction is
|
|
18
|
+
* the whole reason they are safe to keep. The runtime reference parser bounds a
|
|
19
|
+
* reference's CONTENT (no control or formatting code points) and deliberately
|
|
20
|
+
* not its length — what a model may be called is decided by providers, and two
|
|
21
|
+
* attempts at a ceiling each refused a model that really exists. So an id past
|
|
22
|
+
* `MAX_CATALOG_ID_BYTES` is something a local `/v1/models` can genuinely report
|
|
23
|
+
* and this filter genuinely cuts. Cutting it HERE costs a page one row; cutting
|
|
24
|
+
* it at the parser would have cost an operator a route that runs.
|
|
25
|
+
*
|
|
26
|
+
* `/v1/info.models` deliberately does not inherit them (see the `/v1/info`
|
|
27
|
+
* budget note in `channel-drivers/tui.ts`) — reusing them there deleted runnable
|
|
28
|
+
* models from schema-1 clients at a wire schema that cannot be bumped. The TUI
|
|
29
|
+
* has no `/v1/models` call site at all, so a model this filter drops is still
|
|
30
|
+
* selectable in the picker; `tui-channel.test.ts` pins that divergence.
|
|
31
|
+
*
|
|
32
|
+
* PROVIDER ids and labels are bounded by the shared wire contract instead
|
|
33
|
+
* (`MAX_INFO_PROVIDER_ID_BYTES`/`..._LABEL_BYTES` in `@mono-agent/agent-contracts`),
|
|
34
|
+
* because `/v1/info.providers` has a consumer that enforces its own copy of the
|
|
35
|
+
* same numbers. A local bound here and a local bound there is how a 129-byte
|
|
36
|
+
* provider id came to be published by this catalog and discarded by the
|
|
37
|
+
* console. Model ids have no such second enforcer and keep the local bound.
|
|
38
|
+
*/
|
|
39
|
+
export const MAX_CATALOG_ID_BYTES = 256;
|
|
40
|
+
export const MAX_CATALOG_LABEL_BYTES = 256;
|
|
41
|
+
/**
|
|
42
|
+
* The catalog must not advertise a model a turn cannot route to. Byte bounds are
|
|
43
|
+
* a paging concern; they say nothing about content, so a local endpoint reporting
|
|
44
|
+
* an id with a control character passed the length filter, reached `/v1/models`,
|
|
45
|
+
* and was admitted by the console — the operator only discovered it at turn time,
|
|
46
|
+
* when the parser refused the reference. `/v1/info` already guards this by
|
|
47
|
+
* parsing each discovered ref; the paged catalog did not.
|
|
48
|
+
*/
|
|
49
|
+
const isSelectableReference = (providerId, modelId) => {
|
|
50
|
+
try {
|
|
51
|
+
parseMonoRuntimeModelReference(`${providerId}:${modelId}`);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const withinBytes = (value, max) => Buffer.byteLength(value, "utf8") <= max;
|
|
59
|
+
export const DEFAULT_MAX_ADVERTISED_PER_PROVIDER = 100;
|
|
60
|
+
export const MAX_SEARCH_RESULTS = 100;
|
|
61
|
+
/**
|
|
62
|
+
* Producer-side bounds on ONE `describe()` entry's effort ladder.
|
|
63
|
+
*
|
|
64
|
+
* The built-in path is already bounded — `resolveAdvertisedModelEffortForBuiltin`
|
|
65
|
+
* runs every level through the `EFFORT_LEVELS` allowlist. The LOCAL path is not:
|
|
66
|
+
* `resolveModelEffortLevels` returns `capabilities.reasoning_levels` verbatim
|
|
67
|
+
* from `providers.local[].models[].capabilities`, which config validates for
|
|
68
|
+
* neither element length nor count. A single authored megabyte-wide level
|
|
69
|
+
* therefore reached `/v1/info` unmeasured and blew the shared 1 MiB body cap,
|
|
70
|
+
* taking the agent offline rather than degrading it.
|
|
71
|
+
*
|
|
72
|
+
* An over-long level is DROPPED rather than truncated: a truncated effort name
|
|
73
|
+
* would not be accepted by the runtime anyway, so publishing it offers a
|
|
74
|
+
* selection whose next turn fails. When nothing survives, `effortLevels` is
|
|
75
|
+
* omitted entirely and the client falls back to the global effort enum — the
|
|
76
|
+
* same degrade path a cloud model with unknown metadata already takes.
|
|
77
|
+
*/
|
|
78
|
+
const MAX_ADVERTISED_EFFORT_LEVELS = 32;
|
|
79
|
+
const MAX_ADVERTISED_EFFORT_LEVEL_BYTES = 64;
|
|
80
|
+
function boundedEffortLevels(levels) {
|
|
81
|
+
if (levels === undefined)
|
|
82
|
+
return undefined;
|
|
83
|
+
const bounded = levels
|
|
84
|
+
.filter((level) => withinBytes(level, MAX_ADVERTISED_EFFORT_LEVEL_BYTES))
|
|
85
|
+
.slice(0, MAX_ADVERTISED_EFFORT_LEVELS);
|
|
86
|
+
if (bounded.length === 0)
|
|
87
|
+
return undefined;
|
|
88
|
+
return bounded.length === levels.length ? levels : bounded;
|
|
89
|
+
}
|
|
90
|
+
function positiveContextWindow(value) {
|
|
91
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value > 0
|
|
92
|
+
? value
|
|
93
|
+
: undefined;
|
|
94
|
+
}
|
|
95
|
+
function clampPageSize(limit) {
|
|
96
|
+
if (limit === undefined)
|
|
97
|
+
return DEFAULT_PAGE_SIZE;
|
|
98
|
+
if (!Number.isSafeInteger(limit) || limit < 1)
|
|
99
|
+
return DEFAULT_PAGE_SIZE;
|
|
100
|
+
return Math.min(limit, MAX_PAGE_SIZE);
|
|
101
|
+
}
|
|
102
|
+
function compareModelId(left, right) {
|
|
103
|
+
return left.localeCompare(right);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Build the provider-widened model catalog once at channel start. The catalog
|
|
107
|
+
* is total by construction: an unknown provider yields an empty page, a
|
|
108
|
+
* built-in listing that throws degrades to zero models, and no code path
|
|
109
|
+
* propagates. Everything is precomputed here so `/v1/info` reads memory only
|
|
110
|
+
* and never awaits network I/O, and the lazy `/v1/models` endpoint only slices
|
|
111
|
+
* already-frozen pages.
|
|
112
|
+
*/
|
|
113
|
+
export function buildProviderModelCatalog(input = {}) {
|
|
114
|
+
const listBuiltin = input.listBuiltinModels ?? listPiBuiltinModels;
|
|
115
|
+
const providers = input.providers ?? [];
|
|
116
|
+
const localProviders = input.localProviders;
|
|
117
|
+
const configuredRoutes = input.configuredRoutes ?? [];
|
|
118
|
+
const configuredById = new Map(providers.map((provider) => [provider.id, provider]));
|
|
119
|
+
const configuredRouteKeys = new Set(configuredRoutes.map((ref) => modelReferenceKey(ref)));
|
|
120
|
+
// `providers` is the operator's explicit support list, and a route's own
|
|
121
|
+
// provider is supported by construction — you cannot route through a provider
|
|
122
|
+
// you did not mean to use. Either one marks the provider configured, so a
|
|
123
|
+
// provider listed purely to widen selection is still flagged for the UI.
|
|
124
|
+
const supportedProviderIds = new Set([
|
|
125
|
+
...providers.map((provider) => provider.id),
|
|
126
|
+
...configuredRoutes.map((ref) => ref.provider),
|
|
127
|
+
]);
|
|
128
|
+
// The authoritative 39-entry static catalog. The dynamic "radius" gateway is
|
|
129
|
+
// already excluded by the facade.
|
|
130
|
+
let builtinProviders = [];
|
|
131
|
+
try {
|
|
132
|
+
builtinProviders = listPiBuiltinProviders();
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
builtinProviders = [];
|
|
136
|
+
}
|
|
137
|
+
const builtinIds = new Set(builtinProviders.map((provider) => provider.id));
|
|
138
|
+
const providerLabelById = new Map();
|
|
139
|
+
for (const provider of builtinProviders) {
|
|
140
|
+
providerLabelById.set(provider.id, provider.label);
|
|
141
|
+
}
|
|
142
|
+
for (const provider of providers) {
|
|
143
|
+
if (!providerLabelById.has(provider.id))
|
|
144
|
+
providerLabelById.set(provider.id, provider.id);
|
|
145
|
+
}
|
|
146
|
+
const discoveredByProvider = new Map();
|
|
147
|
+
for (const discovered of input.discoveredModels ?? []) {
|
|
148
|
+
const list = discoveredByProvider.get(discovered.providerId) ?? [];
|
|
149
|
+
list.push(discovered);
|
|
150
|
+
discoveredByProvider.set(discovered.providerId, list);
|
|
151
|
+
}
|
|
152
|
+
for (const id of discoveredByProvider.keys()) {
|
|
153
|
+
if (!providerLabelById.has(id))
|
|
154
|
+
providerLabelById.set(id, id);
|
|
155
|
+
}
|
|
156
|
+
// `providers` is a support gate, not a hint: an agent advertises exactly the
|
|
157
|
+
// providers it declared, the providers its own routes use, and whatever local
|
|
158
|
+
// discovery found. A Pi built-in nobody declared is NOT selectable — offering
|
|
159
|
+
// all 39 would let an operator pick a provider the agent holds no credential
|
|
160
|
+
// for, and the failure would only surface at turn time.
|
|
161
|
+
//
|
|
162
|
+
// Deterministic order: declared providers (config order, id-sorted at load),
|
|
163
|
+
// then route providers not already declared (route order), then discovered
|
|
164
|
+
// local providers (alphabetical).
|
|
165
|
+
const orderedIds = [];
|
|
166
|
+
const seen = new Set();
|
|
167
|
+
// `enabled: false` disables the provider everywhere, not just at its endpoint:
|
|
168
|
+
// advertising a disabled provider's models offers a route config validation
|
|
169
|
+
// now rejects.
|
|
170
|
+
const disabled = new Set(providers.filter((provider) => provider.enabled === false).map((provider) => provider.id));
|
|
171
|
+
for (const provider of providers) {
|
|
172
|
+
if (seen.has(provider.id) || disabled.has(provider.id))
|
|
173
|
+
continue;
|
|
174
|
+
seen.add(provider.id);
|
|
175
|
+
orderedIds.push(provider.id);
|
|
176
|
+
}
|
|
177
|
+
for (const ref of configuredRoutes) {
|
|
178
|
+
if (seen.has(ref.provider) || disabled.has(ref.provider))
|
|
179
|
+
continue;
|
|
180
|
+
seen.add(ref.provider);
|
|
181
|
+
orderedIds.push(ref.provider);
|
|
182
|
+
}
|
|
183
|
+
const remainingDiscovered = [...discoveredByProvider.keys()]
|
|
184
|
+
.filter((id) => !seen.has(id))
|
|
185
|
+
.sort(compareModelId);
|
|
186
|
+
for (const id of remainingDiscovered) {
|
|
187
|
+
seen.add(id);
|
|
188
|
+
orderedIds.push(id);
|
|
189
|
+
}
|
|
190
|
+
// Drop oversized provider ids here rather than mid-loop: `orderedIds` drives
|
|
191
|
+
// the final `listProviders()` projection, so an id skipped later would still
|
|
192
|
+
// be dereferenced there.
|
|
193
|
+
const boundedIds = orderedIds.filter((id) => withinBytes(id, MAX_INFO_PROVIDER_ID_BYTES));
|
|
194
|
+
orderedIds.length = 0;
|
|
195
|
+
orderedIds.push(...boundedIds);
|
|
196
|
+
const byProviderId = new Map();
|
|
197
|
+
const builtinCatalogModel = (snapshot, providerLabel) => {
|
|
198
|
+
const effort = resolveAdvertisedModelEffortForBuiltin(snapshot);
|
|
199
|
+
const contextWindow = positiveContextWindow(snapshot.contextWindow);
|
|
200
|
+
return {
|
|
201
|
+
id: snapshot.id,
|
|
202
|
+
name: snapshot.name,
|
|
203
|
+
provider: snapshot.provider,
|
|
204
|
+
providerLabel,
|
|
205
|
+
...(contextWindow === undefined ? {} : { contextWindow }),
|
|
206
|
+
reasoning: effort.reasoning,
|
|
207
|
+
...(effort.reasoningMode === undefined ? {} : { reasoningMode: effort.reasoningMode }),
|
|
208
|
+
...(effort.effortLevels === undefined ? {} : { effortLevels: effort.effortLevels }),
|
|
209
|
+
};
|
|
210
|
+
};
|
|
211
|
+
for (const id of orderedIds) {
|
|
212
|
+
const rawLabel = providerLabelById.get(id) ?? id;
|
|
213
|
+
const providerLabel = withinBytes(rawLabel, MAX_INFO_PROVIDER_LABEL_BYTES) ? rawLabel : id;
|
|
214
|
+
const configured = configuredById.get(id);
|
|
215
|
+
// A configured provider that declares a local `type` OWNS the id, even when
|
|
216
|
+
// Pi ships a built-in under the same name. `runtimeOptionsForLocalProvider`
|
|
217
|
+
// matches on provider id ALONE, so every selection for this id executes
|
|
218
|
+
// against the local endpoint; advertising Pi's built-in list would offer
|
|
219
|
+
// models that endpoint does not serve — selectable in the picker, dead at
|
|
220
|
+
// turn time. The local definition therefore wins the `source` decision and
|
|
221
|
+
// every model-building branch below.
|
|
222
|
+
const localTyped = configured?.type !== undefined;
|
|
223
|
+
const treatAsBuiltin = builtinIds.has(id) && !localTyped;
|
|
224
|
+
const source = treatAsBuiltin
|
|
225
|
+
? "builtin"
|
|
226
|
+
: configured !== undefined
|
|
227
|
+
? "custom"
|
|
228
|
+
: "discovered";
|
|
229
|
+
// `enabled: false` on an allowlist entry withdraws the model, not just its
|
|
230
|
+
// endpoint wiring: doctor reports a route to it as unresolvable, so
|
|
231
|
+
// advertising it offers a selection whose next turn fails. Branch on the
|
|
232
|
+
// DECLARED list, filter for the advertised one — an operator who disabled
|
|
233
|
+
// every entry narrowed the provider to nothing, and must not fall through
|
|
234
|
+
// to the un-narrowed built-in catalog.
|
|
235
|
+
const declaredModels = configured?.models;
|
|
236
|
+
const allowlist = declaredModels?.filter((model) => model.enabled !== false) ?? [];
|
|
237
|
+
const maxAdvertised = configured?.maxAdvertisedModels ?? DEFAULT_MAX_ADVERTISED_PER_PROVIDER;
|
|
238
|
+
let models = [];
|
|
239
|
+
let totalModelCount;
|
|
240
|
+
if (declaredModels !== undefined && declaredModels.length > 0) {
|
|
241
|
+
// An explicit `models` allowlist bypasses the cap and preserves its
|
|
242
|
+
// declared order — the operator narrowed the provider on purpose.
|
|
243
|
+
//
|
|
244
|
+
// For a Pi built-in the allowlist NARROWS the real catalog; it does not
|
|
245
|
+
// replace it. Emitting the declared name verbatim advertised a model Pi
|
|
246
|
+
// cannot resolve when the name was wrong (selectable, then `pi model not
|
|
247
|
+
// found` at turn time) and dropped reasoning/effort metadata when it was
|
|
248
|
+
// right. Resolve against the snapshot, keep the operator's ordering and
|
|
249
|
+
// display overrides, and drop names the provider does not have.
|
|
250
|
+
const builtinByName = new Map();
|
|
251
|
+
if (treatAsBuiltin) {
|
|
252
|
+
try {
|
|
253
|
+
for (const snapshot of listBuiltin(id))
|
|
254
|
+
builtinByName.set(snapshot.id, snapshot);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
builtinByName.clear();
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
models = allowlist.flatMap((model) => {
|
|
261
|
+
const snapshot = builtinByName.get(model.name);
|
|
262
|
+
// Fail closed on the SNAPSHOT, not on its size. Keying the drop off
|
|
263
|
+
// `builtinByName.size > 0` meant a throwing or empty built-in listing
|
|
264
|
+
// advertised every authored name unvalidated — precisely the `pi model
|
|
265
|
+
// not found` outcome this branch exists to prevent. Pi's catalog is a
|
|
266
|
+
// synchronous, version-pinned in-process constant, so "unavailable" is
|
|
267
|
+
// never a transient network blip: an empty listing for a provider Pi
|
|
268
|
+
// claims to own is a real answer, and a throw makes every name
|
|
269
|
+
// unverifiable. The provider still appears with `modelCount: 0` rather
|
|
270
|
+
// than vanishing from the picker.
|
|
271
|
+
if (treatAsBuiltin && snapshot === undefined)
|
|
272
|
+
return [];
|
|
273
|
+
const contextWindow = positiveContextWindow(model.capabilities?.context_window)
|
|
274
|
+
?? positiveContextWindow(model.capabilities?.num_ctx)
|
|
275
|
+
?? (snapshot === undefined ? undefined : positiveContextWindow(snapshot.contextWindow));
|
|
276
|
+
const effort = snapshot === undefined
|
|
277
|
+
? undefined
|
|
278
|
+
: resolveAdvertisedModelEffortForBuiltin(snapshot);
|
|
279
|
+
return [{
|
|
280
|
+
id: model.name,
|
|
281
|
+
name: model.displayName ?? model.alias ?? snapshot?.name ?? model.name,
|
|
282
|
+
provider: id,
|
|
283
|
+
providerLabel,
|
|
284
|
+
...(contextWindow === undefined ? {} : { contextWindow }),
|
|
285
|
+
...(effort === undefined ? {} : {
|
|
286
|
+
reasoning: effort.reasoning,
|
|
287
|
+
...(effort.reasoningMode === undefined ? {} : { reasoningMode: effort.reasoningMode }),
|
|
288
|
+
...(effort.effortLevels === undefined ? {} : { effortLevels: effort.effortLevels }),
|
|
289
|
+
}),
|
|
290
|
+
}];
|
|
291
|
+
});
|
|
292
|
+
totalModelCount = undefined;
|
|
293
|
+
}
|
|
294
|
+
else if (treatAsBuiltin) {
|
|
295
|
+
let snapshots = [];
|
|
296
|
+
try {
|
|
297
|
+
snapshots = [...listBuiltin(id)];
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
snapshots = [];
|
|
301
|
+
}
|
|
302
|
+
const full = snapshots.sort((left, right) => compareModelId(left.id, right.id));
|
|
303
|
+
const capped = full.slice(0, maxAdvertised);
|
|
304
|
+
models = capped.map((snapshot) => builtinCatalogModel(snapshot, providerLabel));
|
|
305
|
+
// Report the pre-cap total only when a cap actually shrank the list.
|
|
306
|
+
totalModelCount = full.length > capped.length ? full.length : undefined;
|
|
307
|
+
}
|
|
308
|
+
else if (discoveredByProvider.has(id)) {
|
|
309
|
+
// Dedupe by canonical ref (last wins) before sorting/capping, so a noisy
|
|
310
|
+
// live /v1/models response cannot double-list a model.
|
|
311
|
+
const discovered = [...new Map((discoveredByProvider.get(id) ?? []).map((model) => [model.ref, model])).values()].sort((left, right) => compareModelId(left.ref, right.ref));
|
|
312
|
+
// The provider's own `maxAdvertisedModels`, not the default: a provider
|
|
313
|
+
// that narrowed its contribution to 10 was still handed 100 live-discovered
|
|
314
|
+
// rows, because only the built-in branch honoured the configured cap.
|
|
315
|
+
const capped = discovered.slice(0, maxAdvertised);
|
|
316
|
+
models = capped.map((discoveredModel) => ({
|
|
317
|
+
id: discoveredModel.ref.slice(discoveredModel.providerId.length + 1),
|
|
318
|
+
name: discoveredModel.label,
|
|
319
|
+
provider: discoveredModel.providerId,
|
|
320
|
+
providerLabel,
|
|
321
|
+
}));
|
|
322
|
+
totalModelCount = discovered.length > capped.length ? discovered.length : undefined;
|
|
323
|
+
}
|
|
324
|
+
// Ids must be unique per provider: the pagination cursor IS the last row's
|
|
325
|
+
// id, and `pageStartIndex` resolves it with `findIndex`. A duplicate id
|
|
326
|
+
// therefore resolves to the FIRST occurrence, the cursor never advances,
|
|
327
|
+
// and the walk serves the same page forever. First declaration wins so an
|
|
328
|
+
// operator's allowlist ordering is preserved.
|
|
329
|
+
const byId = new Map();
|
|
330
|
+
for (const model of models) {
|
|
331
|
+
if (!byId.has(model.id))
|
|
332
|
+
byId.set(model.id, model);
|
|
333
|
+
}
|
|
334
|
+
const frozenModels = Object.freeze([...byId.values()].filter((model) => withinBytes(model.id, MAX_CATALOG_ID_BYTES)
|
|
335
|
+
&& withinBytes(model.name, MAX_CATALOG_LABEL_BYTES)
|
|
336
|
+
&& isSelectableReference(id, model.id)));
|
|
337
|
+
const info = Object.freeze({
|
|
338
|
+
id,
|
|
339
|
+
label: providerLabel,
|
|
340
|
+
modelCount: frozenModels.length,
|
|
341
|
+
...(totalModelCount === undefined ? {} : { totalModelCount }),
|
|
342
|
+
source,
|
|
343
|
+
...(supportedProviderIds.has(id) ? { configured: true } : {}),
|
|
344
|
+
});
|
|
345
|
+
byProviderId.set(id, { info, models: frozenModels });
|
|
346
|
+
}
|
|
347
|
+
const frozenProviders = Object.freeze(orderedIds.map((id) => byProviderId.get(id).info));
|
|
348
|
+
const resolveContextWindow = (ref) => {
|
|
349
|
+
const configuredProvider = localProviders?.find((provider) => provider.id === ref.provider);
|
|
350
|
+
if (configuredProvider !== undefined) {
|
|
351
|
+
const configuredModel = configuredProvider.models?.find((model) => model.name === ref.model || model.alias === ref.model);
|
|
352
|
+
return positiveContextWindow(configuredModel?.capabilities?.context_window)
|
|
353
|
+
?? positiveContextWindow(configuredModel?.capabilities?.num_ctx);
|
|
354
|
+
}
|
|
355
|
+
return positiveContextWindow(getPiBuiltinModel(ref.provider, ref.model)?.contextWindow);
|
|
356
|
+
};
|
|
357
|
+
const describeOne = (ref) => {
|
|
358
|
+
const effort = resolveAdvertisedModelEffort(ref, {
|
|
359
|
+
...(localProviders === undefined ? {} : { localProviders }),
|
|
360
|
+
});
|
|
361
|
+
const contextWindow = resolveContextWindow(ref);
|
|
362
|
+
// `effortLevels` is the ONLY unbounded field in this projection.
|
|
363
|
+
// `provider` and `providerLabel` need no clamp of their own: the label is
|
|
364
|
+
// either a short Pi built-in label or the provider id verbatim, and the id
|
|
365
|
+
// repeats the provider half of this entry's own key — so a pathological one
|
|
366
|
+
// is charged, not hidden, by the caller's per-entry byte measurement.
|
|
367
|
+
const effortLevels = boundedEffortLevels(effort.effortLevels);
|
|
368
|
+
return {
|
|
369
|
+
...(effortLevels === undefined ? {} : { effortLevels }),
|
|
370
|
+
reasoning: effort.reasoning,
|
|
371
|
+
...(effort.reasoningMode === undefined ? {} : { reasoningMode: effort.reasoningMode }),
|
|
372
|
+
...(contextWindow === undefined ? {} : { contextWindow }),
|
|
373
|
+
provider: ref.provider,
|
|
374
|
+
providerLabel: providerLabelById.get(ref.provider) ?? ref.provider,
|
|
375
|
+
};
|
|
376
|
+
};
|
|
377
|
+
return {
|
|
378
|
+
listProviders: () => frozenProviders,
|
|
379
|
+
listModels(providerId, options = {}) {
|
|
380
|
+
const entry = byProviderId.get(providerId);
|
|
381
|
+
const pageSize = clampPageSize(options.limit);
|
|
382
|
+
const models = entry?.models ?? [];
|
|
383
|
+
const start = pageStartIndex(models, options.cursor);
|
|
384
|
+
const page = models.slice(start, start + pageSize);
|
|
385
|
+
const truncated = start + pageSize < models.length;
|
|
386
|
+
const lastModel = page[page.length - 1];
|
|
387
|
+
return {
|
|
388
|
+
models: page,
|
|
389
|
+
...(truncated && lastModel !== undefined ? { nextCursor: lastModel.id } : {}),
|
|
390
|
+
truncated,
|
|
391
|
+
};
|
|
392
|
+
},
|
|
393
|
+
searchModels(query, limit) {
|
|
394
|
+
const needle = query.trim().toLowerCase();
|
|
395
|
+
if (needle.length === 0)
|
|
396
|
+
return [];
|
|
397
|
+
const cap = Math.min(clampPageSize(limit), MAX_SEARCH_RESULTS);
|
|
398
|
+
const results = [];
|
|
399
|
+
for (const provider of frozenProviders) {
|
|
400
|
+
const entry = byProviderId.get(provider.id);
|
|
401
|
+
if (entry === undefined)
|
|
402
|
+
continue;
|
|
403
|
+
for (const model of entry.models) {
|
|
404
|
+
if (!modelMatches(model, needle))
|
|
405
|
+
continue;
|
|
406
|
+
results.push(model);
|
|
407
|
+
if (results.length >= cap)
|
|
408
|
+
return results;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
return results;
|
|
412
|
+
},
|
|
413
|
+
describe(refs) {
|
|
414
|
+
const result = {};
|
|
415
|
+
for (const ref of refs) {
|
|
416
|
+
const entry = describeOne(ref);
|
|
417
|
+
if (Object.keys(entry).length > 0) {
|
|
418
|
+
result[modelReferenceKey(ref)] = entry;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
return result;
|
|
422
|
+
},
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
function pageStartIndex(models, cursor) {
|
|
426
|
+
if (cursor === undefined)
|
|
427
|
+
return 0;
|
|
428
|
+
const index = models.findIndex((model) => model.id === cursor);
|
|
429
|
+
// A stale/unknown cursor terminates the walk (empty page) rather than
|
|
430
|
+
// silently re-serving an earlier slice.
|
|
431
|
+
return index === -1 ? models.length : index + 1;
|
|
432
|
+
}
|
|
433
|
+
function modelMatches(model, needle) {
|
|
434
|
+
return model.id.toLowerCase().includes(needle)
|
|
435
|
+
|| model.name.toLowerCase().includes(needle)
|
|
436
|
+
|| model.provider.toLowerCase().includes(needle)
|
|
437
|
+
|| model.providerLabel.toLowerCase().includes(needle);
|
|
438
|
+
}
|
|
439
|
+
//# sourceMappingURL=provider-model-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-model-catalog.js","sourceRoot":"","sources":["../src/provider-model-catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/provider-setup.d.ts
CHANGED
|
@@ -13,11 +13,6 @@ export interface ProviderSetupPiLoginAction extends ProviderSetupCommandAction {
|
|
|
13
13
|
readonly id: `pi-login:${string}`;
|
|
14
14
|
readonly piAuthPath: string;
|
|
15
15
|
}
|
|
16
|
-
export type CodexLoginMode = "browser" | "device";
|
|
17
|
-
export interface ProviderSetupCodexLoginAction extends ProviderSetupCommandAction {
|
|
18
|
-
readonly id: "codex-login";
|
|
19
|
-
readonly authMode: CodexLoginMode;
|
|
20
|
-
}
|
|
21
16
|
export interface ProviderSetupHttpAction {
|
|
22
17
|
readonly id: string;
|
|
23
18
|
readonly kind: ProviderSetupKind;
|
|
@@ -39,7 +34,7 @@ export interface ProviderSetupPiApiKeyAction {
|
|
|
39
34
|
readonly cwd: string;
|
|
40
35
|
readonly detail: string;
|
|
41
36
|
}
|
|
42
|
-
export type ProviderSetupAction = ProviderSetupPiLoginAction |
|
|
37
|
+
export type ProviderSetupAction = ProviderSetupPiLoginAction | ProviderSetupCommandAction | ProviderSetupHttpAction | ProviderSetupPiApiKeyAction;
|
|
43
38
|
export interface ProviderSetupPlan {
|
|
44
39
|
readonly actions: readonly ProviderSetupAction[];
|
|
45
40
|
/** Auth actions omitted because a credential/sign-in was detected. */
|
|
@@ -75,12 +70,10 @@ export interface PlanProviderSetupOptions {
|
|
|
75
70
|
readonly piAuthPath?: string;
|
|
76
71
|
/** Internal test seam for verifying bundled Pi CLI resolution in packed layouts. */
|
|
77
72
|
readonly piCliPath?: string;
|
|
78
|
-
/** Credential/status observations keyed by
|
|
73
|
+
/** Credential/status observations keyed by provider id or exact model reference. */
|
|
79
74
|
readonly credentialStates?: Readonly<Record<string, ProviderCredentialState | undefined>>;
|
|
80
75
|
/** Explicit repair path: rerun authentication even when a credential was detected. */
|
|
81
76
|
readonly forceAuthentication?: boolean;
|
|
82
|
-
/** Direct Codex never guesses headless mode; callers select this explicitly. */
|
|
83
|
-
readonly codexAuthMode?: CodexLoginMode;
|
|
84
77
|
/** Select OAuth or API-key setup for Pi providers that support both. */
|
|
85
78
|
readonly piAuthMethods?: Readonly<Record<string, "oauth" | "api-key" | undefined>>;
|
|
86
79
|
/** API keys can be used from env without being copied into Pi's secure store. */
|
|
@@ -130,14 +123,12 @@ export declare function piAuthPathForSetup(piAuthPath: string | undefined, cwd?:
|
|
|
130
123
|
* to `verified`.
|
|
131
124
|
*/
|
|
132
125
|
export declare function detectProviderCredentialStates(options: DetectProviderCredentialStatesOptions): Promise<Readonly<Record<string, ProviderCredentialState>>>;
|
|
133
|
-
/** Whether a selected route has a credential in the destination agent's durable environment. */
|
|
134
|
-
export declare function hasDurableProviderEnvironmentCredential(rawModelRef: string, persistedEnv: Readonly<Record<string, string | undefined>>): boolean;
|
|
135
126
|
/**
|
|
136
127
|
* Build the minimal operational environment needed to inspect durable CLI login
|
|
137
128
|
* state. A positive allowlist prevents unrelated shell credentials from being
|
|
138
|
-
* inherited by
|
|
129
|
+
* inherited by provider discovery commands.
|
|
139
130
|
*/
|
|
140
|
-
export declare function credentialNeutralProviderStatusEnvironment(source?: Readonly<Record<string, string | undefined>>,
|
|
131
|
+
export declare function credentialNeutralProviderStatusEnvironment(source?: Readonly<Record<string, string | undefined>>, _durableEnvironment?: Readonly<Record<string, string | undefined>>): Record<string, string | undefined>;
|
|
141
132
|
export interface BoundedProviderCommandResult {
|
|
142
133
|
readonly stdout: string;
|
|
143
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-setup.d.ts","sourceRoot":"","sources":["../src/provider-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA0BrD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,WAAW,CAAC;AAErD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA2B,SAAQ,0BAA0B;IAC5E,QAAQ,CAAC,EAAE,EAAE,YAAY,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"provider-setup.d.ts","sourceRoot":"","sources":["../src/provider-setup.ts"],"names":[],"mappings":"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"}
|