@assemblyline-agents/pi 1.0.0 → 3.0.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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 OpenEve contributors
3
+ Copyright (c) 2026 Assembly Line contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  The canonical Pi agent loop for Assembly Line, packaged behind the framework's internal `AgentHarness` runtime contract.
4
4
 
5
- It adapts the Pi agent engine (`@earendil-works/pi-agent-core` / `@earendil-works/pi-ai`) to Assembly Line's harness interface: model resolution and defaults, tool descriptors, continuations, media inputs, and usage accounting. OpenRouter calls retain the provider generation ID and reconcile native input/output/cache/reasoning tokens plus the charged credit receipt; local catalog-price calculations are discarded rather than reported as spend. The Assembly Line runtime uses this harness to drive agent turns; it is included automatically when you install the umbrella `@assemblyline-agents/sdk` package.
5
+ It adapts the Pi agent engine (`@earendil-works/pi-agent-core` / `@earendil-works/pi-ai`) to Assembly Line's harness interface: provider-owned model resolution, build-frozen capability metadata, tool descriptors, continuations, media inputs, and usage accounting. OpenRouter models resolve through its models API, with Pi's bundled catalog used only when discovery is offline. OpenRouter calls retain the provider generation ID and reconcile native input/output/cache/reasoning tokens plus the charged credit receipt; local catalog-price calculations are discarded rather than reported as spend. The Assembly Line runtime uses this harness to drive agent turns; it is included automatically when you install the umbrella `@assemblyline-agents/sdk` package.
6
6
 
7
7
  ## Install
8
8
 
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  import { type AgentHarness, type HarnessContinuation, type JsonObject } from "@assemblyline-agents/core";
2
- export { assistantText, createDefaultPiModels, injectOpenRouterVideoInputs, listPiModelSpecs, openRouterGenerationAccounting, openRouterModelInputModalities, piMessageAccounting, PiHarnessRunError, piUsageToRuntime, resolvePiModel, runPiAgentLoop, type RunPiAgentLoopOptions, type RunPiAgentLoopResult, type OpenRouterGenerationAccountingOptions, type PiMessageAccounting } from "./pi-harness.js";
2
+ import type { ResolvedModelMetadata } from "@assemblyline-agents/core";
3
+ export { assistantText, createDefaultPiModels, injectOpenRouterVideoInputs, listPiModelSpecs, openRouterGenerationAccounting, piMessageAccounting, PiHarnessRunError, piUsageToRuntime, isSyntheticStopMessage, resolvePiModel, runPiAgentLoop, type RunPiAgentLoopOptions, type RunPiAgentLoopResult, type OpenRouterGenerationAccountingOptions, type PiMessageAccounting } from "./pi-harness.js";
4
+ export { fetchOpenRouterModelMetadata, installResolvedModelMetadata, resolvePiModelMetadata, type ModelMetadataResolutionOptions } from "./model-metadata.js";
3
5
  export { classifyModelError, resolveModelRetryConfig, streamSimpleWithRetry, type ModelRetryConfig, type ModelRetryEventInfo, type ModelStreamOutcome } from "./model-stream-retry.js";
4
6
  export { boundModelOutput } from "@assemblyline-agents/core";
5
7
  export { capPiToolResults, compactPiTranscript, estimateTranscriptTokens, isSummaryMessage, transcriptContextWindow, DEFAULT_TRANSCRIPT_CONTEXT_WINDOW, TRANSCRIPT_SUMMARY_PREFIX, type PiTranscriptCapResult, type PiTranscriptCompactionInput } from "./transcript-trim.js";
6
8
  export declare const PI_HARNESS_ID = "pi";
7
9
  export declare const PI_CONTINUATION_VERSION = 1;
8
10
  /**
9
- * Default OpenEve {@link AgentHarness} wrapping the Pi agent loop. All
11
+ * Default Assembly Line {@link AgentHarness} wrapping the Pi agent loop. All
10
12
  * Pi-specific behavior lives here: AgentTool adaptation, the terminate
11
13
  * stop-signal on pause, usage mapping, `mode: "continue"` resume, and
12
14
  * continuation transcript splicing. `@earendil-works` code is loaded lazily.
@@ -14,6 +16,7 @@ export declare const PI_CONTINUATION_VERSION = 1;
14
16
  export declare function piAgentHarness(options?: {
15
17
  models?: unknown;
16
18
  fetch?: typeof fetch;
19
+ resolvedModels?: ResolvedModelMetadata[];
17
20
  }): AgentHarness;
18
21
  /** Up-convert a legacy flat `pi.continuation` payload into the opaque envelope form. */
19
22
  export declare function legacyPiContinuation(data: JsonObject): HarnessContinuation;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,YAAY,EAMjB,KAAK,mBAAmB,EAMxB,KAAK,UAAU,EAEhB,MAAM,2BAA2B,CAAC;AASnC,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,EAChB,8BAA8B,EAC9B,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,qCAAqC,EAC1C,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EACjC,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAAG,YAAY,CAsMrG;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,mBAAmB,CAI1E;AAaD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;CACnB,GAAG,MAAM,GAAG,SAAS,CAgBrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,YAAY,EAMjB,KAAK,mBAAmB,EAMxB,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAWvE,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,EAChB,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,qCAAqC,EAC1C,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,8BAA8B,EACpC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EACjC,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,cAAc,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACrC,GAAG,YAAY,CA6OpB;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,mBAAmB,CAI1E;AAaD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;CACnB,GAAG,MAAM,GAAG,SAAS,CAgBrB"}
package/dist/index.js CHANGED
@@ -1,13 +1,16 @@
1
- import { boundModelOutput } from "@assemblyline-agents/core";
1
+ import { boundModelOutput, providerSafeToolName } from "@assemblyline-agents/core";
2
+ import { installResolvedModelMetadata } from "./model-metadata.js";
3
+ import { isSyntheticStopMessage } from "./pi-harness.js";
2
4
  import { capPiToolResults, compactPiTranscript, estimateTranscriptTokens, transcriptContextWindow } from "./transcript-trim.js";
3
- export { assistantText, createDefaultPiModels, injectOpenRouterVideoInputs, listPiModelSpecs, openRouterGenerationAccounting, openRouterModelInputModalities, piMessageAccounting, PiHarnessRunError, piUsageToRuntime, resolvePiModel, runPiAgentLoop } from "./pi-harness.js";
5
+ export { assistantText, createDefaultPiModels, injectOpenRouterVideoInputs, listPiModelSpecs, openRouterGenerationAccounting, piMessageAccounting, PiHarnessRunError, piUsageToRuntime, isSyntheticStopMessage, resolvePiModel, runPiAgentLoop } from "./pi-harness.js";
6
+ export { fetchOpenRouterModelMetadata, installResolvedModelMetadata, resolvePiModelMetadata } from "./model-metadata.js";
4
7
  export { classifyModelError, resolveModelRetryConfig, streamSimpleWithRetry } from "./model-stream-retry.js";
5
8
  export { boundModelOutput } from "@assemblyline-agents/core";
6
9
  export { capPiToolResults, compactPiTranscript, estimateTranscriptTokens, isSummaryMessage, transcriptContextWindow, DEFAULT_TRANSCRIPT_CONTEXT_WINDOW, TRANSCRIPT_SUMMARY_PREFIX } from "./transcript-trim.js";
7
10
  export const PI_HARNESS_ID = "pi";
8
11
  export const PI_CONTINUATION_VERSION = 1;
9
12
  /**
10
- * Default OpenEve {@link AgentHarness} wrapping the Pi agent loop. All
13
+ * Default Assembly Line {@link AgentHarness} wrapping the Pi agent loop. All
11
14
  * Pi-specific behavior lives here: AgentTool adaptation, the terminate
12
15
  * stop-signal on pause, usage mapping, `mode: "continue"` resume, and
13
16
  * continuation transcript splicing. `@earendil-works` code is loaded lazily.
@@ -19,7 +22,10 @@ export function piAgentHarness(options = {}) {
19
22
  return options.models;
20
23
  if (!defaultModels) {
21
24
  const { createDefaultPiModels } = await import("./pi-harness.js");
22
- defaultModels = await createDefaultPiModels(env);
25
+ defaultModels = await createDefaultPiModels(env, options.fetch ?? globalThis.fetch);
26
+ if (options.resolvedModels) {
27
+ installResolvedModelMetadata(defaultModels, options.resolvedModels);
28
+ }
23
29
  }
24
30
  return defaultModels;
25
31
  };
@@ -33,21 +39,43 @@ export function piAgentHarness(options = {}) {
33
39
  let pendingToolCallId;
34
40
  let continuationMedia = [];
35
41
  const pauseState = { paused: false };
36
- const buildTools = async () => (await ctx.tools()).map((tool) => piAgentTool(tool, ctx, pauseState, (toolCallId) => {
37
- // First pause wins: the run parks on the first paused call in a
38
- // batch, and resume splices its result at that placeholder.
39
- if (pauseState.paused)
40
- return;
41
- pauseState.paused = true;
42
- pendingToolCallId = toolCallId;
43
- }));
42
+ const buildTools = async () => {
43
+ const wireNames = new Map();
44
+ return (await ctx.tools()).map((tool) => {
45
+ const wireName = providerSafeToolName(tool.name);
46
+ const existing = wireNames.get(wireName);
47
+ if (existing && existing !== tool.name) {
48
+ throw new Error(`Pi tool wire-name collision: ${existing} and ${tool.name} both map to ${wireName}.`);
49
+ }
50
+ wireNames.set(wireName, tool.name);
51
+ return piAgentTool(tool, wireName, ctx, pauseState, (toolCallId) => {
52
+ // First pause wins: the run parks on the first paused call in a
53
+ // batch, and resume splices its result at that placeholder.
54
+ if (pauseState.paused)
55
+ return;
56
+ pauseState.paused = true;
57
+ pendingToolCallId = toolCallId;
58
+ });
59
+ });
60
+ };
44
61
  const loopOptions = {
45
62
  models,
46
63
  modelSpec: ctx.modelSpec,
47
64
  systemPrompt: ctx.systemPrompt,
48
65
  recentHistory: [],
49
66
  tools: buildTools,
67
+ ...(ctx.refreshCapabilities ? {
68
+ refreshCapabilities: async () => {
69
+ const refreshed = await ctx.refreshCapabilities();
70
+ return {
71
+ modelSpec: refreshed.modelSpec,
72
+ systemPrompt: refreshed.systemPrompt,
73
+ ...(refreshed.reasoning ? { reasoning: refreshed.reasoning } : {})
74
+ };
75
+ }
76
+ } : {}),
50
77
  env: ctx.env,
78
+ ...(options.resolvedModels ? { resolvedModels: options.resolvedModels } : {}),
51
79
  sessionId: ctx.sessionId,
52
80
  // Once any call in a batch pauses, stamp terminate onto every later
53
81
  // finalized call so the batch stops; shouldStop backstops the case
@@ -91,16 +119,34 @@ export function piAgentHarness(options = {}) {
91
119
  return;
92
120
  }
93
121
  if (event.type === "message_end") {
94
- trackedMessages.push(event.message);
122
+ // Synthetic stop messages have no model request behind them:
123
+ // keeping one in the transcript would persist an empty assistant
124
+ // message into checkpoints and continuations.
125
+ if (!isSyntheticStopMessage(event.message)) {
126
+ trackedMessages.push(event.message);
127
+ if (event.message.role === "assistant") {
128
+ const text = collectContentText(event.message.content);
129
+ const hasToolCalls = event.message.content.some((block) => block.type === "toolCall");
130
+ if (text && hasToolCalls) {
131
+ await ctx.emit({
132
+ type: "assistant_message_completed",
133
+ iteration: state.requestIteration,
134
+ text
135
+ });
136
+ }
137
+ }
138
+ }
95
139
  return;
96
140
  }
97
141
  if (event.type !== "turn_end" || event.message.role !== "assistant")
98
142
  return;
99
- const accounting = await piMessageAccounting(event.message, {
100
- env: ctx.env,
101
- ...(options.fetch ? { fetch: options.fetch } : {})
102
- });
103
- await ctx.emit(responseCompletedEvent(event.message, state.requestIteration, accounting, ctx.captureContent === true));
143
+ if (!isSyntheticStopMessage(event.message)) {
144
+ const accounting = await piMessageAccounting(event.message, {
145
+ env: ctx.env,
146
+ ...(options.fetch ? { fetch: options.fetch } : {})
147
+ });
148
+ await ctx.emit(responseCompletedEvent(event.message, state.requestIteration, accounting, ctx.captureContent === true));
149
+ }
104
150
  if (ctx.onIterationCheckpoint) {
105
151
  await ctx.onIterationCheckpoint(piContinuation(trackedMessages, pendingToolCallId, continuationMedia));
106
152
  }
@@ -112,8 +158,6 @@ export function piAgentHarness(options = {}) {
112
158
  loopOptions.maxIterations = ctx.maxIterations;
113
159
  if (ctx.signal)
114
160
  loopOptions.signal = ctx.signal;
115
- if (options.fetch)
116
- loopOptions.fetch = options.fetch;
117
161
  if (input.kind === "resume") {
118
162
  const state = piContinuationState(input.continuation.state);
119
163
  continuationMedia = state.media;
@@ -259,10 +303,10 @@ function piContinuationState(state) {
259
303
  out.pendingToolCallId = state.pendingToolCallId;
260
304
  return out;
261
305
  }
262
- function piAgentTool(tool, ctx, pauseState, onPause) {
306
+ function piAgentTool(tool, wireName, ctx, pauseState, onPause) {
263
307
  const agentTool = {
264
- name: tool.name,
265
- label: tool.name,
308
+ name: wireName,
309
+ label: wireName,
266
310
  description: tool.description,
267
311
  parameters: tool.inputSchema,
268
312
  execute: async (toolCallId, params) => {
@@ -272,7 +316,12 @@ function piAgentTool(tool, ctx, pauseState, onPause) {
272
316
  // batch stops.
273
317
  return piToolResult({ skipped: true, reason: "The run paused before this tool executed; it did not run." }, true);
274
318
  }
275
- const outcome = await ctx.executeTool({ toolCallId, name: tool.name, input: params });
319
+ const outcome = await ctx.executeTool({
320
+ toolCallId,
321
+ name: tool.name,
322
+ input: params,
323
+ ...(ctx.signal ? { signal: ctx.signal } : {})
324
+ });
276
325
  if (outcome.kind === "pause") {
277
326
  // Track pi's own model call id — it matches the transcript's pause
278
327
  // placeholder, so resume can replace it with the real tool result.
@@ -457,7 +506,13 @@ function replacePiToolResult(messages, toolCallId, toolName, value, media) {
457
506
  };
458
507
  if (targetIndex >= 0) {
459
508
  next[targetIndex] = replacement;
460
- return next.slice(0, targetIndex + 1);
509
+ // Keep the batch's sibling tool results — their toolCall blocks live in
510
+ // the same assistant message, and dropping them would leave dangling
511
+ // tool_use blocks the provider rejects. Cut only after the last one.
512
+ let end = targetIndex;
513
+ while (end + 1 < next.length && isToolResultMessage(next[end + 1]))
514
+ end += 1;
515
+ return next.slice(0, end + 1);
461
516
  }
462
517
  next.push(replacement);
463
518
  return next;
@@ -494,7 +549,7 @@ function toolVideoNotice(media) {
494
549
  return [];
495
550
  return [{
496
551
  type: "text",
497
- text: `[OpenEve: ${videos.length} video tool result(s) were not sent as native Pi tool-result content. No frames were extracted. Use a video-capable attachment turn or explicitly request a frame-based review.]`
552
+ text: `[Assembly Line: ${videos.length} video tool result(s) were not sent as native Pi tool-result content. No frames were extracted. Use a video-capable attachment turn or explicitly request a frame-based review.]`
498
553
  }];
499
554
  }
500
555
  function jsonClone(value) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAejB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,EAChB,8BAA8B,EAC9B,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,EAKf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EAItB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,EAG1B,MAAM,sBAAsB,CAAC;AAG9B,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,UAAsD,EAAE;IACrF,IAAI,aAAiC,CAAC;IACtC,MAAM,aAAa,GAAG,KAAK,EAAE,GAAuC,EAAmB,EAAE;QACvF,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAgB,CAAC;QACpD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAClE,aAAa,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IACF,OAAO;QACL,EAAE,EAAE,aAAa;QACjB,mBAAmB,EAAE,uBAAuB;QAC5C,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;YACtB,MAAM,EACJ,mBAAmB,EACnB,cAAc,EACf,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,eAAe,GAAmB,EAAE,CAAC;YAC3C,IAAI,iBAAqC,CAAC;YAC1C,IAAI,iBAAiB,GAAwB,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,KAAK,IAA+B,EAAE,CACvD,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE;gBAChD,gEAAgE;gBAChE,4DAA4D;gBAC5D,IAAI,UAAU,CAAC,MAAM;oBAAE,OAAO;gBAC9B,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;gBACzB,iBAAiB,GAAG,UAAU,CAAC;YACjC,CAAC,CAAC,CACH,CAAC;YACJ,MAAM,WAAW,GAA0B;gBACzC,MAAM;gBACN,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,aAAa,EAAE,EAAE;gBACjB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,oEAAoE;gBACpE,mEAAmE;gBACnE,0DAA0D;gBAC1D,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChF,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,KAAK,CAAC;gBACpE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;oBAClC,MAAM,GAAG,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,KAAK,CAAC,gBAAgB;wBACjC,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9D,CAAC,CAAC;gBACL,CAAC;gBACD,gBAAgB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE;oBACpD,MAAM,OAAO,GAAsB;wBACjC,IAAI,EAAE,iBAAiB;wBACvB,SAAS,EAAE,KAAK,CAAC,gBAAgB;wBACjC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;wBACxD,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,WAAW,EAAE,SAAS;qBACvB,CAAC;oBACF,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;wBACvB,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;wBACpE,4BAA4B,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;wBACjE,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;oBAC5C,CAAC;oBACD,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,KAAiB,EAAE,KAAK,EAAE,EAAE;oBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,qBAAqB,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBACzF,iEAAiE;wBACjE,mCAAmC;wBACnC,MAAM,GAAG,CAAC,IAAI,CAAC;4BACb,IAAI,EAAE,gBAAgB;4BACtB,SAAS,EAAE,KAAK,CAAC,gBAAgB;4BACjC,KAAK,EAAE,KAAK,CAAC,qBAAqB,CAAC,KAAK;yBACzC,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBACjC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACpC,OAAO;oBACT,CAAC;oBACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW;wBAAE,OAAO;oBAC5E,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE;wBAC1D,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnD,CAAC,CAAC;oBACH,MAAM,GAAG,CAAC,IAAI,CACZ,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,gBAAgB,EAAE,UAAU,EAAE,GAAG,CAAC,cAAc,KAAK,IAAI,CAAC,CACvG,CAAC;oBACF,IAAI,GAAG,CAAC,qBAAqB,EAAE,CAAC;wBAC9B,MAAM,GAAG,CAAC,qBAAqB,CAAC,cAAc,CAAC,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;oBACzG,CAAC;gBACH,CAAC;aACF,CAAC;YACF,IAAI,GAAG,CAAC,SAAS;gBAAE,WAAW,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YACzD,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS;gBAAE,WAAW,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;YACnF,IAAI,GAAG,CAAC,MAAM;gBAAE,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAChD,IAAI,OAAO,CAAC,KAAK;gBAAE,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACrD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC5D,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC;gBAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC9B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBACrB,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,UAAU,CAAC,QAAQ,EACzB,KAAK,CAAC,UAAU,CAAC,MAAM,EACvB,KAAK,CAAC,UAAU,CAAC,KAAK,CACvB,CAAC;gBACJ,CAAC;gBACD,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAClC,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAChC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAChC,0EAA0E;oBAC1E,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;oBACpC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;oBACxC,iBAAiB,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;oBACrG,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;wBAAE,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC5D,WAAW,CAAC,IAAI,GAAG,UAAU,CAAC;gBAChC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAgB,EAAE,CAAC,CAAC;oBAC1E,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oBAC1C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC,CAAC,CAAC;gBACJ,eAAe,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;gBACzC,WAAW,CAAC,QAAQ,GAAG,eAAe,CAAC;gBACvC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBACpC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBAChC,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAoB;gBAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;aAClF,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACvB,CAAC;iBAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC9B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAC5C,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,gBAAgB,CACpB,YAAiC,EACjC,MAA+B,EAC/B,GAAyF;YAEzF,IAAI,YAAY,CAAC,OAAO,KAAK,aAAa;gBAAE,OAAO,SAAS,CAAC;YAC7D,MAAM,KAAK,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACpG,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC/B,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,YAAgC,CAAC;YACrC,uEAAuE;YACvE,sEAAsE;YACtE,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,GAAG,CAAC;gBAC7C,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC;gBACpC,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9D,IAAI,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC/C,MAAM,iBAAiB,GAAG,MAAM,mBAAmB,CAAC;oBAClD,QAAQ;oBACR,MAAM;oBACN,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;gBACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;gBACzF,CAAC;gBACD,QAAQ,GAAG,iBAAiB,CAAC;gBAC7B,SAAS,GAAG,IAAI,CAAC;gBACjB,YAAY,GAAG,UAAU,CAAC;YAC5B,CAAC;YACD,wEAAwE;YACxE,yEAAyE;YACzE,OAAO;gBACL,YAAY,EAAE,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC;gBACrD,SAAS;gBACT,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,IAAgB;IACnD,MAAM,KAAK,GAAe,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1F,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ;QAAE,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACjG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,cAAc,CACrB,QAAwB,EACxB,iBAAqC,EACrC,QAA6B,EAAE;IAE/B,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAa,CAAe,CAAC;IAC/D,IAAI,iBAAiB;QAAE,KAAK,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IACnE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAU,CAAC;IAC9D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,YAI7C;IACC,IAAI,YAAY,CAAC,OAAO,KAAK,aAAa;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACzF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;aACtB,MAAM,CAAC,CAAC,KAAK,EAA2C,EAAE,CACzD,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAA4B,CAAC,IAAI,KAAK,MAAM;YAC5F,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ,CAAC;aACxD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAiB;IAEjB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,QAAsC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACtC,CAAC,CAAE,KAAK,CAAC,KAAmB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvF,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,GAAG,GAAyF;QAChG,QAAQ;QACR,KAAK;KACN,CAAC;IACF,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ;QAAE,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACjG,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAClB,IAA2B,EAC3B,GAAwB,EACxB,UAA+B,EAC/B,OAAiD;IAEjD,MAAM,SAAS,GAAmB;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,WAAoB;QACrC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAqC,EAAE;YACvE,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,oEAAoE;gBACpE,gEAAgE;gBAChE,eAAe;gBACf,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,2DAA2D,EAAE,EAAE,IAAI,CAAC,CAAC;YACpH,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACtF,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,mEAAmE;gBACnE,mEAAmE;gBACnE,mEAAmE;gBACnE,OAAO,CAAC,UAAU,CAAC,CAAC;gBACpB,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;IACF,wEAAwE;IACxE,0EAA0E;IAC1E,eAAe;IACf,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY;QAAE,SAAS,CAAC,aAAa,GAAG,YAAY,CAAC;IAC5E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAA2B,EAC3B,SAAiB,EACjB,UAKC,EACD,cAAuB;IAEvB,MAAM,KAAK,GAAsB;QAC/B,IAAI,EAAE,oBAAoB;QAC1B,SAAS;QACT,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM;QAClF,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,WAAW,EAAE,UAAU,CAAC,WAAW;KACpC,CAAC;IACF,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAC9E,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACtE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;IAC7D,IAAI,aAAa,KAAK,SAAS;QAAE,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;IACrE,IAAI,UAAU,CAAC,iBAAiB;QAAE,KAAK,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC;IACzF,IAAI,UAAU,CAAC,eAAe;QAAE,KAAK,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;IACnF,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,eAAe,GAA4D,EAAE,CAAC;QACpF,IAAI,IAAI;YAAE,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC;QAChE,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,IAAI,eAAe,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClF,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAUD,kFAAkF;AAClF,SAAS,mBAAmB,CAAC,QAAkC;IAC7D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAsB;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1G,MAAM,GAAG,GAA0B,EAAE,IAAI,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IACxC,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IACpD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACjD,GAAG,CAAC,UAAU;YACZ,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACrG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAgB;IAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnF,MAAM,IAAI,GAA2B,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACxF,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;gBAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,KAAK,GAAgD,EAAE,CAAC;IAC9D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAAE,SAAS;QAC/F,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAiC,EACjC,KAA0B;IAE1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,IAAI,IAAuC,CAAC;IAC5C,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7D,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACrC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvB,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC,KAAK,GAAG;QACX,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACrB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACpB,MAAM,QAAQ,GAAwD;gBACpE,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;YACF,IAAI,IAAI,CAAC,IAAI;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACzC,IAAI,IAAI,CAAC,IAAI;gBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACzC,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,QAAQ,CAAC,KAAK,CAAC;QACpB,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;QAClD,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACvC,CAAC;AAED,SAAS,YAAY,CACnB,KAAc,EACd,SAAS,GAAG,KAAK,EACjB,QAAyC,SAAS;IAElD,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,MAAM,GAA6B;QACvC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YACtB,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;iBACb,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;iBACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxF,GAAG,eAAe,CAAC,KAAK,CAAC;SAC1B;QACD,OAAO;KACR,CAAC;IACF,IAAI,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAwB,EACxB,UAA8B,EAC9B,QAAgB,EAChB,KAAc,EACd,KAAsC;IAEtC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAmB,CAAC;IAC3E,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,kBAAkB,GAAG,UAAU,IAAI,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,cAAc,QAAQ,EAAE,CAAC;IAClH,MAAM,WAAW,GAAiB;QAChC,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,kBAAkB;QAC9B,QAAQ;QACR,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YACtB,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;iBACb,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;iBACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxF,GAAG,eAAe,CAAC,KAAK,CAAC;SAC1B;QACD,OAAO;QACP,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;IACF,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAwB,EAAE,UAA8B;IACnF,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAAE,SAAS;QAC5C,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;IACrE,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,4BAA4B,CAAC,QAAwB,EAAE,QAAgB;IAC9E,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACvD,KAAK,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;YACnF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAiC;IAC5D,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;AAC/G,CAAC;AAED,SAAS,eAAe,CAAC,KAAsC;IAC7D,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,CAAC;YACN,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa,MAAM,CAAC,MAAM,kLAAkL;SACnN,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAI,KAAQ;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAM,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type MutableModels } from "@earendil-works/pi-ai";
2
+ import type { RequiredModelCapabilities, ResolvedModelMetadata } from "@assemblyline-agents/core";
3
+ export interface ModelMetadataResolutionOptions {
4
+ env?: Record<string, string | undefined>;
5
+ fetch?: typeof fetch;
6
+ requirements?: ReadonlyMap<string, RequiredModelCapabilities>;
7
+ }
8
+ /** Build Pi's providers with their bundled catalogs available as offline metadata. */
9
+ export declare function createPiModels(env?: Record<string, string | undefined>, fetchImpl?: typeof fetch): Promise<MutableModels>;
10
+ /** Resolve selected model metadata from provider adapters, falling back to the bundled catalog only when discovery fails. */
11
+ export declare function resolvePiModelMetadata(specs: readonly string[], options?: ModelMetadataResolutionOptions): Promise<ResolvedModelMetadata[]>;
12
+ /** Install manifest-frozen metadata into Pi without consulting a live provider or a newer catalog. */
13
+ export declare function installResolvedModelMetadata(models: MutableModels, metadata: readonly ResolvedModelMetadata[]): MutableModels;
14
+ export declare function resolvedModelMetadata(metadata: readonly ResolvedModelMetadata[] | undefined, spec: string): ResolvedModelMetadata | undefined;
15
+ export declare function fetchOpenRouterModelMetadata(options?: {
16
+ env?: Record<string, string | undefined>;
17
+ fetch?: typeof fetch;
18
+ }): Promise<ResolvedModelMetadata[]>;
19
+ //# sourceMappingURL=model-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-metadata.d.ts","sourceRoot":"","sources":["../src/model-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAEV,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAOnC,MAAM,WAAW,8BAA8B;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAC/D;AAoBD,sFAAsF;AACtF,wBAAsB,cAAc,CAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,SAAS,GAAE,OAAO,KAAwB,GACzC,OAAO,CAAC,aAAa,CAAC,CAexB;AAED,6HAA6H;AAC7H,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA+ClC;AAED,sGAAsG;AACtG,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,SAAS,qBAAqB,EAAE,GACzC,aAAa,CAkBf;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,GAAG,SAAS,EACtD,IAAI,EAAE,MAAM,GACX,qBAAqB,GAAG,SAAS,CAEnC;AAiCD,wBAAsB,4BAA4B,CAAC,OAAO,GAAE;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACjB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA8BxC"}
@@ -0,0 +1,272 @@
1
+ import { defaultProviderAuthContext } from "@earendil-works/pi-ai";
2
+ import { assertModelCapabilities } from "@assemblyline-agents/core";
3
+ import { installOpenRouterModelOverrides } from "./openrouter-model-overrides.js";
4
+ const OPENROUTER_MODELS_URL = "https://openrouter.ai/api/v1/models?output_modalities=all";
5
+ const MODEL_METADATA_TIMEOUT_MS = 5_000;
6
+ const providerMetadataByModels = new WeakMap();
7
+ /** Build Pi's providers with their bundled catalogs available as offline metadata. */
8
+ export async function createPiModels(env = process.env, fetchImpl = globalThis.fetch) {
9
+ const { builtinModels } = await import("@earendil-works/pi-ai/providers/all");
10
+ const fallback = defaultProviderAuthContext();
11
+ const models = installOpenRouterModelOverrides(builtinModels({
12
+ authContext: {
13
+ env: async (name) => {
14
+ const value = env[name];
15
+ if (typeof value === "string" && value.trim().length > 0)
16
+ return value;
17
+ return fallback.env(name);
18
+ },
19
+ fileExists: (path) => fallback.fileExists(path)
20
+ }
21
+ }));
22
+ installOpenRouterDynamicResolver(models, { env, fetch: fetchImpl });
23
+ return models;
24
+ }
25
+ /** Resolve selected model metadata from provider adapters, falling back to the bundled catalog only when discovery fails. */
26
+ export async function resolvePiModelMetadata(specs, options = {}) {
27
+ const env = options.env ?? process.env;
28
+ const models = await createPiModels(env, options.fetch ?? globalThis.fetch);
29
+ const byProvider = groupModelSpecs(specs);
30
+ const resolved = [];
31
+ for (const [providerId, providerSpecs] of byProvider) {
32
+ const provider = models.getProvider(providerId);
33
+ if (!provider) {
34
+ continue;
35
+ }
36
+ const supportsDynamicResolution = Boolean(provider.refreshModels);
37
+ let source = "provider";
38
+ if (provider.refreshModels) {
39
+ try {
40
+ await models.refresh(providerId);
41
+ }
42
+ catch {
43
+ source = "catalog";
44
+ }
45
+ }
46
+ else {
47
+ source = "catalog";
48
+ }
49
+ const providerMetadata = providerMetadataByModels.get(models);
50
+ for (const spec of providerSpecs) {
51
+ const id = modelIdFromSpec(spec);
52
+ const dynamic = source === "provider" ? providerMetadata?.get(spec) : undefined;
53
+ const model = models.getModel(providerId, id);
54
+ const metadata = dynamic ?? (model ? metadataFromPiModel(model, source) : undefined);
55
+ if (!metadata) {
56
+ if (!supportsDynamicResolution)
57
+ continue;
58
+ const reason = source === "provider"
59
+ ? `The ${providerId} provider did not return metadata for model "${id}".`
60
+ : `Could not resolve metadata for model "${spec}" while provider discovery was unavailable, and the bundled offline catalog has no fallback entry.`;
61
+ throw new Error(reason);
62
+ }
63
+ const required = options.requirements?.get(spec);
64
+ assertModelCapabilities(metadata, {
65
+ inputModalities: [...new Set(["text", ...(required?.inputModalities ?? [])])],
66
+ outputModalities: [...new Set(["text", ...(required?.outputModalities ?? [])])],
67
+ ...(required?.parameters ? { parameters: required.parameters } : {})
68
+ });
69
+ resolved.push(metadata);
70
+ }
71
+ }
72
+ return resolved.sort((left, right) => left.spec.localeCompare(right.spec));
73
+ }
74
+ /** Install manifest-frozen metadata into Pi without consulting a live provider or a newer catalog. */
75
+ export function installResolvedModelMetadata(models, metadata) {
76
+ const byProvider = new Map();
77
+ for (const entry of metadata) {
78
+ const entries = byProvider.get(entry.provider) ?? [];
79
+ entries.push(entry);
80
+ byProvider.set(entry.provider, entries);
81
+ }
82
+ for (const [providerId, entries] of byProvider) {
83
+ const provider = models.getProvider(providerId);
84
+ if (!provider)
85
+ throw new Error(`No model provider adapter is registered for "${providerId}".`);
86
+ const byId = new Map(provider.getModels().map((model) => [model.id, model]));
87
+ for (const entry of entries)
88
+ byId.set(entry.id, piModelFromMetadata(entry));
89
+ models.setProvider({
90
+ ...provider,
91
+ getModels: () => [...byId.values()]
92
+ });
93
+ }
94
+ return models;
95
+ }
96
+ export function resolvedModelMetadata(metadata, spec) {
97
+ return metadata?.find((entry) => entry.spec === spec);
98
+ }
99
+ function installOpenRouterDynamicResolver(models, options) {
100
+ const provider = models.getProvider("openrouter");
101
+ if (!provider)
102
+ return;
103
+ const fallbackModels = provider.getModels().slice();
104
+ let activeModels = fallbackModels;
105
+ let inFlight;
106
+ const dynamicProvider = {
107
+ ...provider,
108
+ getModels: () => activeModels,
109
+ refreshModels: async () => {
110
+ if (inFlight)
111
+ return inFlight;
112
+ inFlight = (async () => {
113
+ const metadata = await fetchOpenRouterModelMetadata(options);
114
+ activeModels = metadata
115
+ .filter((entry) => entry.outputModalities.includes("text"))
116
+ .map(piModelFromMetadata);
117
+ providerMetadataByModels.set(models, new Map(metadata.map((entry) => [entry.spec, entry])));
118
+ })();
119
+ try {
120
+ await inFlight;
121
+ }
122
+ finally {
123
+ inFlight = undefined;
124
+ }
125
+ }
126
+ };
127
+ models.setProvider(dynamicProvider);
128
+ }
129
+ export async function fetchOpenRouterModelMetadata(options = {}) {
130
+ const headers = { accept: "application/json" };
131
+ const apiKey = options.env?.OPENROUTER_API_KEY?.trim();
132
+ if (apiKey)
133
+ headers.authorization = `Bearer ${apiKey}`;
134
+ const response = await (options.fetch ?? globalThis.fetch)(OPENROUTER_MODELS_URL, {
135
+ headers,
136
+ signal: AbortSignal.timeout(MODEL_METADATA_TIMEOUT_MS)
137
+ });
138
+ if (!response.ok)
139
+ throw new Error(`OpenRouter models API returned HTTP ${response.status}.`);
140
+ const payload = await response.json();
141
+ if (!isRecord(payload) || !Array.isArray(payload.data)) {
142
+ throw new Error("OpenRouter models API omitted its data array.");
143
+ }
144
+ return payload.data.map(openRouterModelRecord).filter((value) => Boolean(value)).map((model) => ({
145
+ spec: `openrouter/${model.id}`,
146
+ provider: "openrouter",
147
+ id: model.id,
148
+ name: model.name,
149
+ api: "openai-completions",
150
+ baseUrl: "https://openrouter.ai/api/v1",
151
+ reasoning: model.supportedParameters.includes("reasoning"),
152
+ inputModalities: model.inputModalities,
153
+ outputModalities: model.outputModalities,
154
+ supportedParameters: model.supportedParameters,
155
+ cost: model.pricing,
156
+ contextWindow: model.contextLength,
157
+ maxTokens: model.maxTokens,
158
+ compat: openRouterCompat(model.id),
159
+ source: "provider"
160
+ })).sort((left, right) => left.spec.localeCompare(right.spec));
161
+ }
162
+ function openRouterModelRecord(value) {
163
+ if (!isRecord(value) || typeof value.id !== "string" || value.id.length === 0)
164
+ return undefined;
165
+ if (!isRecord(value.architecture))
166
+ return undefined;
167
+ const contextLength = positiveNumber(value.context_length);
168
+ if (!contextLength)
169
+ return undefined;
170
+ const inputModalities = stringArray(value.architecture.input_modalities);
171
+ const outputModalities = stringArray(value.architecture.output_modalities);
172
+ if (inputModalities.length === 0 || outputModalities.length === 0)
173
+ return undefined;
174
+ const topProvider = isRecord(value.top_provider) ? value.top_provider : {};
175
+ const pricing = isRecord(value.pricing) ? value.pricing : {};
176
+ return {
177
+ id: value.id,
178
+ name: typeof value.name === "string" && value.name.length > 0 ? value.name : value.id,
179
+ contextLength: positiveNumber(topProvider.context_length) ?? contextLength,
180
+ maxTokens: positiveNumber(topProvider.max_completion_tokens) ?? contextLength,
181
+ inputModalities,
182
+ outputModalities,
183
+ supportedParameters: stringArray(value.supported_parameters),
184
+ pricing: {
185
+ input: perMillionTokens(pricing.prompt),
186
+ output: perMillionTokens(pricing.completion),
187
+ cacheRead: perMillionTokens(pricing.input_cache_read),
188
+ cacheWrite: perMillionTokens(pricing.input_cache_write)
189
+ }
190
+ };
191
+ }
192
+ function metadataFromPiModel(model, source) {
193
+ const metadata = {
194
+ spec: `${model.provider}/${model.id}`,
195
+ provider: model.provider,
196
+ id: model.id,
197
+ name: model.name,
198
+ api: model.api,
199
+ baseUrl: model.baseUrl,
200
+ reasoning: model.reasoning,
201
+ inputModalities: [...model.input],
202
+ outputModalities: ["text"],
203
+ supportedParameters: model.reasoning ? ["reasoning"] : [],
204
+ cost: { ...model.cost },
205
+ contextWindow: model.contextWindow,
206
+ maxTokens: model.maxTokens,
207
+ source
208
+ };
209
+ if (model.compat)
210
+ metadata.compat = model.compat;
211
+ return metadata;
212
+ }
213
+ function piModelFromMetadata(metadata) {
214
+ const model = {
215
+ id: metadata.id,
216
+ name: metadata.name,
217
+ api: metadata.api,
218
+ provider: metadata.provider,
219
+ baseUrl: metadata.baseUrl,
220
+ reasoning: metadata.reasoning,
221
+ input: [
222
+ ...(metadata.inputModalities.includes("text") ? ["text"] : []),
223
+ ...(metadata.inputModalities.includes("image") ? ["image"] : [])
224
+ ],
225
+ cost: { ...metadata.cost },
226
+ contextWindow: metadata.contextWindow,
227
+ maxTokens: metadata.maxTokens
228
+ };
229
+ if (metadata.compat)
230
+ model.compat = metadata.compat;
231
+ return model;
232
+ }
233
+ function groupModelSpecs(specs) {
234
+ const byProvider = new Map();
235
+ for (const spec of [...new Set(specs)].sort()) {
236
+ const slash = spec.indexOf("/");
237
+ if (slash <= 0 || slash === spec.length - 1) {
238
+ throw new Error(`Invalid model specifier "${spec}". Use "provider/model".`);
239
+ }
240
+ const provider = spec.slice(0, slash);
241
+ const providerSpecs = byProvider.get(provider) ?? [];
242
+ providerSpecs.push(spec);
243
+ byProvider.set(provider, providerSpecs);
244
+ }
245
+ return byProvider;
246
+ }
247
+ function modelIdFromSpec(spec) {
248
+ return spec.slice(spec.indexOf("/") + 1);
249
+ }
250
+ function openRouterCompat(id) {
251
+ return {
252
+ supportsDeveloperRole: false,
253
+ thinkingFormat: "openrouter",
254
+ ...(id.startsWith("anthropic/") ? { cacheControlFormat: "anthropic" } : {})
255
+ };
256
+ }
257
+ function positiveNumber(value) {
258
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined;
259
+ }
260
+ function perMillionTokens(value) {
261
+ const parsed = typeof value === "string" || typeof value === "number" ? Number(value) : 0;
262
+ return Number.isFinite(parsed) && parsed >= 0 ? Number((parsed * 1_000_000).toPrecision(15)) : 0;
263
+ }
264
+ function stringArray(value) {
265
+ return Array.isArray(value)
266
+ ? [...new Set(value.filter((entry) => typeof entry === "string"))].sort()
267
+ : [];
268
+ }
269
+ function isRecord(value) {
270
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
271
+ }
272
+ //# sourceMappingURL=model-metadata.js.map