@henryqw/pi-task-models 0.5.1 → 0.6.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/dist/index.d.ts CHANGED
@@ -52,8 +52,8 @@ export declare function rememberedThinkingLevel(model: {
52
52
  provider: string;
53
53
  id: string;
54
54
  } | string, agentDir?: string): ThinkingLevel | undefined;
55
- export declare function resolveTaskModelRoute(ctx: ExtensionContext, route: TaskModelRoute, agentDir?: string): ResolvedTaskRoute | undefined;
56
- export declare function resolveConfiguredTaskRoute(ctx: ExtensionContext, task: string, agentDir?: string): ResolvedTaskRoute;
55
+ export declare function resolveTaskModelRoute(ctx: ExtensionContext, route: TaskModelRoute, agentDir?: string, thinking?: ThinkingLevel): ResolvedTaskRoute | undefined;
56
+ export declare function resolveConfiguredTaskRoute(ctx: ExtensionContext, task: string, agentDir?: string, thinking?: ThinkingLevel): ResolvedTaskRoute;
57
57
  export declare function orderedProfileRoutes(profile: TaskModelProfile): TaskModelRoute[];
58
58
  export declare function activeTaskPackages(pi: Pick<ExtensionAPI, "getCommands" | "getAllTools">, tasks?: Readonly<Record<string, ProfileName>>): ActiveTaskPackage[];
59
59
  export declare function createTaskModelsExtension(pi: ExtensionAPI, options?: {
package/dist/index.js CHANGED
@@ -206,11 +206,16 @@ export function rememberedThinkingLevel(model, agentDir = getAgentDir()) {
206
206
  return undefined;
207
207
  }
208
208
  }
209
- export function resolveTaskModelRoute(ctx, route, agentDir = getAgentDir()) {
209
+ export function resolveTaskModelRoute(ctx, route, agentDir = getAgentDir(), thinking) {
210
210
  const model = resolveAvailableModel(availableTaskModels(ctx), route.model, ctx.model?.provider);
211
211
  if (!model)
212
212
  return undefined;
213
213
  const levels = taskThinkingLevels(ctx, model);
214
+ // An explicit requested level wins over remembered and profile levels; a model
215
+ // that cannot honor it is skipped so later fallback routes get considered.
216
+ if (thinking !== undefined) {
217
+ return levels.includes(thinking) ? { model, thinkingLevel: thinking } : undefined;
218
+ }
214
219
  // Remembered per-model thinking (pi-model-thinking) wins over the profile level when supported.
215
220
  const remembered = rememberedThinkingLevel(model, agentDir);
216
221
  const thinkingLevel = remembered && levels.includes(remembered) ? remembered : route.thinkingLevel;
@@ -218,7 +223,7 @@ export function resolveTaskModelRoute(ctx, route, agentDir = getAgentDir()) {
218
223
  return undefined;
219
224
  return { model, thinkingLevel };
220
225
  }
221
- export function resolveConfiguredTaskRoute(ctx, task, agentDir = getAgentDir()) {
226
+ export function resolveConfiguredTaskRoute(ctx, task, agentDir = getAgentDir(), thinking) {
222
227
  let config;
223
228
  try {
224
229
  config = readTaskModelsConfig(agentDir);
@@ -233,11 +238,11 @@ export function resolveConfiguredTaskRoute(ctx, task, agentDir = getAgentDir())
233
238
  if (!profile)
234
239
  throw new Error(`Task ${task} profile ${profileName} is not configured. Run /task-models.`);
235
240
  for (const route of orderedProfileRoutes(profile)) {
236
- const resolved = resolveTaskModelRoute(ctx, route, agentDir);
241
+ const resolved = resolveTaskModelRoute(ctx, route, agentDir, thinking);
237
242
  if (resolved)
238
243
  return resolved;
239
244
  }
240
- throw new Error(`Task ${task} profile ${profileName} has no available route. Run /task-models.`);
245
+ throw new Error(`Task ${task} profile ${profileName} has no available route${thinking ? ` supporting thinking ${thinking}` : ""}. Run /task-models.`);
241
246
  }
242
247
  export function orderedProfileRoutes(profile) {
243
248
  return profile.fallback ? [profile.primary, profile.fallback] : [profile.primary];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@henryqw/pi-task-models",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Shared task model profiles and routing for HenryQW Pi extensions.",
5
5
  "keywords": [
6
6
  "pi-package",