advisor-pi 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -2
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +120 -20
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/index.ts +132 -20
package/README.md
CHANGED
|
@@ -18,9 +18,16 @@ advice to the executor.
|
|
|
18
18
|
- Lets the executor decide when a consultation is useful.
|
|
19
19
|
- Calls a configured advisor model through Pi's model registry and auth.
|
|
20
20
|
- Tracks advisor uses per session branch and stops after the configured limit.
|
|
21
|
+
- Caps the conversation transcript sent per call at a configurable character
|
|
22
|
+
limit (default 20000): longer transcripts keep the most recent context and
|
|
23
|
+
are marked as truncated, so per-call cost stays bounded as sessions grow.
|
|
21
24
|
- Passes a prompt-cache preference (`none`, `short`, or `long`) where the
|
|
22
25
|
selected provider supports it.
|
|
23
26
|
- Defaults to `openai-codex/gpt-5.6-sol` with `high` thinking.
|
|
27
|
+
- Validates the configured model against the registry at load: when the
|
|
28
|
+
default (or a stored/flag-provided model) does not resolve, it falls back
|
|
29
|
+
to a working model with a warning notice instead of failing every call.
|
|
30
|
+
Stored legacy defaults are only migrated when the migration target resolves.
|
|
24
31
|
- Shows a compact `advisor:<provider>/<model> <thinking> <remaining>` status in Pi's
|
|
25
32
|
footer when UI is available.
|
|
26
33
|
|
|
@@ -33,6 +40,7 @@ advice to the executor.
|
|
|
33
40
|
/advisor-pi model <provider>/<model>
|
|
34
41
|
/advisor-pi thinking <minimal|low|medium|high|xhigh|max>
|
|
35
42
|
/advisor-pi max-uses <number>
|
|
43
|
+
/advisor-pi max-transcript-chars <number>
|
|
36
44
|
/advisor-pi cache <none|short|long>
|
|
37
45
|
/advisor-pi reset
|
|
38
46
|
```
|
|
@@ -43,6 +51,7 @@ Examples:
|
|
|
43
51
|
/advisor-pi model openai-codex/gpt-5.6-sol
|
|
44
52
|
/advisor-pi thinking high
|
|
45
53
|
/advisor-pi max-uses 5
|
|
54
|
+
/advisor-pi max-transcript-chars 20000
|
|
46
55
|
/advisor-pi cache long
|
|
47
56
|
```
|
|
48
57
|
|
|
@@ -52,6 +61,7 @@ Examples:
|
|
|
52
61
|
pi --advisor-model openai-codex/gpt-5.6-sol \
|
|
53
62
|
--advisor-thinking high \
|
|
54
63
|
--advisor-max-uses 5 \
|
|
64
|
+
--advisor-max-transcript-chars 20000 \
|
|
55
65
|
--advisor-cache short
|
|
56
66
|
```
|
|
57
67
|
|
|
@@ -94,7 +104,8 @@ Each advisor consultation is a separate model call. That means:
|
|
|
94
104
|
- Advisor input and output are billed separately by the selected provider.
|
|
95
105
|
- Streaming from the executor pauses while the advisor call runs.
|
|
96
106
|
- Longer transcripts cost more because the advisor reads the conversation
|
|
97
|
-
context.
|
|
107
|
+
context. Each call sends at most `max-transcript-chars` characters
|
|
108
|
+
(default 20000), keeping the most recent context and marking truncation.
|
|
98
109
|
- The `max-uses` setting is a safety budget; raise it only when deeper review is
|
|
99
110
|
worth the extra cost.
|
|
100
111
|
|
|
@@ -117,6 +128,7 @@ specific model compatibility, and cache reads/writes may still be billed.
|
|
|
117
128
|
reports.
|
|
118
129
|
- The advisor has no tools and cannot inspect files beyond what appears in the
|
|
119
130
|
transcript.
|
|
120
|
-
- Very long conversations
|
|
131
|
+
- Very long conversations are truncated to the transcript cap before sending,
|
|
132
|
+
so older context may be omitted on advisor calls.
|
|
121
133
|
- `max-uses` is tracked per Pi session branch from extension state and tool
|
|
122
134
|
result details; manual session editing can affect reconstruction.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,51 @@
|
|
|
1
|
+
import { type CacheRetention, type ThinkingLevel } from "@earendil-works/pi-ai";
|
|
1
2
|
import { type ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
3
|
+
export declare const STATE_ENTRY = "advisor-pi-state";
|
|
4
|
+
export declare const DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.6-sol";
|
|
5
|
+
export declare const LEGACY_DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.5";
|
|
6
|
+
export declare const DEFAULT_MAX_TRANSCRIPT_CHARS = 20000;
|
|
7
|
+
type AdvisorThinkingLevel = ThinkingLevel | "max";
|
|
8
|
+
type AdvisorConfig = {
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
provider: string;
|
|
11
|
+
modelId: string;
|
|
12
|
+
thinkingLevel: AdvisorThinkingLevel;
|
|
13
|
+
maxUses: number;
|
|
14
|
+
cacheRetention: CacheRetention;
|
|
15
|
+
maxTokens: number;
|
|
16
|
+
timeoutMs: number;
|
|
17
|
+
maxTranscriptChars: number;
|
|
18
|
+
};
|
|
19
|
+
type AdvisorStateEntry = {
|
|
20
|
+
version: 1;
|
|
21
|
+
config: AdvisorConfig;
|
|
22
|
+
useCount: number;
|
|
23
|
+
updatedAt: string;
|
|
24
|
+
};
|
|
25
|
+
export type ModelRegistryLike = {
|
|
26
|
+
find: (provider: string, modelId: string) => unknown;
|
|
27
|
+
getAvailable?: () => Array<{
|
|
28
|
+
provider?: unknown;
|
|
29
|
+
id?: unknown;
|
|
30
|
+
}>;
|
|
31
|
+
};
|
|
2
32
|
export default function advisorPiExtension(pi: ExtensionAPI): void;
|
|
33
|
+
export declare function defaultConfig(): AdvisorConfig;
|
|
34
|
+
export declare function truncateTranscript(text: string, maxChars: number): string;
|
|
35
|
+
export declare function makeStateEntry(config: AdvisorConfig, useCount: number): AdvisorStateEntry;
|
|
36
|
+
export declare function persistState(pi: ExtensionAPI, config: AdvisorConfig, useCount: number): void;
|
|
37
|
+
export declare function normalizeConfig(input: Partial<AdvisorConfig>, fallback: AdvisorConfig, registry?: ModelRegistryLike): AdvisorConfig;
|
|
38
|
+
export declare function modelResolves(registry: ModelRegistryLike | undefined, provider: string, modelId: string): boolean;
|
|
39
|
+
export declare function resolveAdvisorModel(registry: ModelRegistryLike | undefined, candidates: Array<{
|
|
40
|
+
provider: string;
|
|
41
|
+
modelId: string;
|
|
42
|
+
}>): {
|
|
43
|
+
provider: string;
|
|
44
|
+
modelId: string;
|
|
45
|
+
} | undefined;
|
|
46
|
+
export declare function parseModelSpec(value: string): {
|
|
47
|
+
provider: string;
|
|
48
|
+
modelId: string;
|
|
49
|
+
} | undefined;
|
|
50
|
+
export {};
|
|
3
51
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,cAAc,EAAgB,KAAK,aAAa,EAAc,MAAM,uBAAuB,CAAC;AACtI,OAAO,EAIN,KAAK,YAAY,EAEjB,MAAM,iCAAiC,CAAC;AAGzC,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAE9C,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AAMnE,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAsBnD,KAAK,oBAAoB,GAAG,aAAa,GAAG,KAAK,CAAC;AAElD,KAAK,aAAa,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,oBAAoB,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC;AAkBF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,YAAY,CAAC,EAAE,MAAM,KAAK,CAAC;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,EAAE,YAAY,QAob1D;AAcD,wBAAgB,aAAa,IAAI,aAAa,CAa7C;AAoBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKzE;AAiED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAOzF;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE5F;AAED,wBAAgB,eAAe,CAC9B,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,EAC7B,QAAQ,EAAE,aAAa,EACvB,QAAQ,CAAC,EAAE,iBAAiB,GAC1B,aAAa,CAwCf;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAQjH;AAED,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,UAAU,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACtD;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAenD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAO/F"}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { completeSimple, StringEnum } from "@earendil-works/pi-ai";
|
|
2
2
|
import { buildSessionContext, convertToLlm, serializeConversation, } from "@earendil-works/pi-coding-agent";
|
|
3
3
|
import { Type } from "typebox";
|
|
4
|
-
const STATE_ENTRY = "advisor-pi-state";
|
|
4
|
+
export const STATE_ENTRY = "advisor-pi-state";
|
|
5
5
|
const TOOL_NAME = "advisor";
|
|
6
|
-
const DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.6-sol";
|
|
7
|
-
const LEGACY_DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.5";
|
|
6
|
+
export const DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.6-sol";
|
|
7
|
+
export const LEGACY_DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.5";
|
|
8
8
|
const DEFAULT_ADVISOR_THINKING_LEVEL = "high";
|
|
9
9
|
const DEFAULT_MAX_USES = 5;
|
|
10
10
|
const DEFAULT_CACHE_RETENTION = "short";
|
|
11
11
|
const DEFAULT_TIMEOUT_MS = 600_000;
|
|
12
12
|
const DEFAULT_MAX_TOKENS = 4_000;
|
|
13
|
+
export const DEFAULT_MAX_TRANSCRIPT_CHARS = 20_000;
|
|
13
14
|
const advisorToolSchema = Type.Object({
|
|
14
15
|
question: Type.String({
|
|
15
16
|
description: "Strategic question for the advisor. Ask for planning, risk analysis, course correction, or review guidance.",
|
|
@@ -41,6 +42,10 @@ export default function advisorPiExtension(pi) {
|
|
|
41
42
|
description: "Advisor prompt-cache preference: none, short, or long",
|
|
42
43
|
type: "string",
|
|
43
44
|
});
|
|
45
|
+
pi.registerFlag("advisor-max-transcript-chars", {
|
|
46
|
+
description: "Maximum conversation transcript characters sent per advisor call (keeps most recent)",
|
|
47
|
+
type: "string",
|
|
48
|
+
});
|
|
44
49
|
pi.registerFlag("advisor-enabled", {
|
|
45
50
|
description: "Enable the advisor tool on startup",
|
|
46
51
|
type: "boolean",
|
|
@@ -83,7 +88,7 @@ export default function advisorPiExtension(pi) {
|
|
|
83
88
|
if (!auth.ok)
|
|
84
89
|
throw new Error(auth.error);
|
|
85
90
|
const startedAt = Date.now();
|
|
86
|
-
const conversationText = serializeCurrentConversation(ctx);
|
|
91
|
+
const conversationText = truncateTranscript(serializeCurrentConversation(ctx), config.maxTranscriptChars);
|
|
87
92
|
const userMessage = {
|
|
88
93
|
role: "user",
|
|
89
94
|
content: [
|
|
@@ -145,7 +150,7 @@ export default function advisorPiExtension(pi) {
|
|
|
145
150
|
},
|
|
146
151
|
});
|
|
147
152
|
pi.registerCommand("advisor-pi", {
|
|
148
|
-
description: "Configure advisor-pi: status, enable, disable, model, thinking, max-uses, cache, reset",
|
|
153
|
+
description: "Configure advisor-pi: status, enable, disable, model, thinking, max-uses, max-transcript-chars, cache, reset",
|
|
149
154
|
handler: async (args, ctx) => {
|
|
150
155
|
const result = handleCommand(args.trim(), ctx);
|
|
151
156
|
if (result.persist)
|
|
@@ -175,13 +180,14 @@ export default function advisorPiExtension(pi) {
|
|
|
175
180
|
function refreshStateFromBranch(ctx) {
|
|
176
181
|
config = defaultConfig();
|
|
177
182
|
useCount = 0;
|
|
178
|
-
const restoredFromBranch = restoreStateFromSession(ctx);
|
|
183
|
+
const restoredFromBranch = restoreStateFromSession(ctx, ctx.modelRegistry);
|
|
179
184
|
if (!restoredFromBranch)
|
|
180
|
-
applyStartupFlags(pi);
|
|
185
|
+
applyStartupFlags(pi, ctx.modelRegistry);
|
|
186
|
+
ensureAdvisorModelResolves(ctx);
|
|
181
187
|
syncActiveTool(pi);
|
|
182
188
|
updateStatus(ctx);
|
|
183
189
|
}
|
|
184
|
-
function restoreStateFromSession(ctx) {
|
|
190
|
+
function restoreStateFromSession(ctx, registry) {
|
|
185
191
|
let restored = false;
|
|
186
192
|
const branch = ctx.sessionManager.getBranch();
|
|
187
193
|
for (const entry of branch) {
|
|
@@ -189,7 +195,7 @@ export default function advisorPiExtension(pi) {
|
|
|
189
195
|
restored = true;
|
|
190
196
|
const data = entry.data;
|
|
191
197
|
if (data?.config)
|
|
192
|
-
config = normalizeConfig(data.config, config);
|
|
198
|
+
config = normalizeConfig(data.config, config, registry);
|
|
193
199
|
if (typeof data?.useCount === "number")
|
|
194
200
|
useCount = Math.max(0, data.useCount);
|
|
195
201
|
}
|
|
@@ -197,7 +203,7 @@ export default function advisorPiExtension(pi) {
|
|
|
197
203
|
restored = true;
|
|
198
204
|
const details = entry.message.details;
|
|
199
205
|
if (details?.state?.config)
|
|
200
|
-
config = normalizeConfig(details.state.config, config);
|
|
206
|
+
config = normalizeConfig(details.state.config, config, registry);
|
|
201
207
|
if (typeof details?.state?.useCount === "number")
|
|
202
208
|
useCount = Math.max(useCount, details.state.useCount);
|
|
203
209
|
else if (details?.advisor?.useCount)
|
|
@@ -206,14 +212,14 @@ export default function advisorPiExtension(pi) {
|
|
|
206
212
|
}
|
|
207
213
|
return restored;
|
|
208
214
|
}
|
|
209
|
-
function applyStartupFlags(api) {
|
|
215
|
+
function applyStartupFlags(api, registry) {
|
|
210
216
|
const enabledFlag = api.getFlag("advisor-enabled");
|
|
211
217
|
if (typeof enabledFlag === "boolean")
|
|
212
218
|
config.enabled = enabledFlag;
|
|
213
219
|
const modelFlag = api.getFlag("advisor-model");
|
|
214
220
|
if (typeof modelFlag === "string" && modelFlag.trim()) {
|
|
215
221
|
const parsed = parseModelSpec(modelFlag.trim());
|
|
216
|
-
if (parsed) {
|
|
222
|
+
if (parsed && (!registry || modelResolves(registry, parsed.provider, parsed.modelId))) {
|
|
217
223
|
config.provider = parsed.provider;
|
|
218
224
|
config.modelId = parsed.modelId;
|
|
219
225
|
}
|
|
@@ -236,6 +242,28 @@ export default function advisorPiExtension(pi) {
|
|
|
236
242
|
if (cacheRetention)
|
|
237
243
|
config.cacheRetention = cacheRetention;
|
|
238
244
|
}
|
|
245
|
+
const maxTranscriptCharsFlag = api.getFlag("advisor-max-transcript-chars");
|
|
246
|
+
if (typeof maxTranscriptCharsFlag === "string") {
|
|
247
|
+
const maxTranscriptChars = parsePositiveInt(maxTranscriptCharsFlag);
|
|
248
|
+
if (maxTranscriptChars !== undefined)
|
|
249
|
+
config.maxTranscriptChars = maxTranscriptChars;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
function ensureAdvisorModelResolves(ctx) {
|
|
253
|
+
const registry = ctx.modelRegistry;
|
|
254
|
+
if (!registry || modelResolves(registry, config.provider, config.modelId))
|
|
255
|
+
return;
|
|
256
|
+
const previous = `${config.provider}/${config.modelId}`;
|
|
257
|
+
const candidates = [parseModelSpec(DEFAULT_ADVISOR_MODEL), parseModelSpec(LEGACY_DEFAULT_ADVISOR_MODEL)].filter((candidate) => candidate !== undefined);
|
|
258
|
+
const working = resolveAdvisorModel(registry, candidates);
|
|
259
|
+
if (!working)
|
|
260
|
+
return;
|
|
261
|
+
config.provider = working.provider;
|
|
262
|
+
config.modelId = working.modelId;
|
|
263
|
+
persistState(pi, config, useCount);
|
|
264
|
+
if (ctx.hasUI) {
|
|
265
|
+
ctx.ui.notify(`Advisor model ${previous} not found. Falling back to ${working.provider}/${working.modelId}.`, "warning");
|
|
266
|
+
}
|
|
239
267
|
}
|
|
240
268
|
function handleCommand(args, ctx) {
|
|
241
269
|
if (!args || args === "status") {
|
|
@@ -340,9 +368,27 @@ export default function advisorPiExtension(pi) {
|
|
|
340
368
|
updateToolState: false,
|
|
341
369
|
};
|
|
342
370
|
}
|
|
371
|
+
case "max-transcript-chars": {
|
|
372
|
+
const maxTranscriptChars = parsePositiveInt(value);
|
|
373
|
+
if (maxTranscriptChars === undefined) {
|
|
374
|
+
return {
|
|
375
|
+
message: "Usage: /advisor-pi max-transcript-chars <positive-number>",
|
|
376
|
+
level: "error",
|
|
377
|
+
persist: false,
|
|
378
|
+
updateToolState: false,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
config.maxTranscriptChars = maxTranscriptChars;
|
|
382
|
+
return {
|
|
383
|
+
message: `advisor-pi max transcript chars set to ${maxTranscriptChars}`,
|
|
384
|
+
level: "info",
|
|
385
|
+
persist: true,
|
|
386
|
+
updateToolState: false,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
343
389
|
default:
|
|
344
390
|
return {
|
|
345
|
-
message: "Usage: /advisor-pi [status|enable|disable|model <provider>/<model>|thinking <minimal|low|medium|high|xhigh|max>|max-uses <n>|cache <none|short|long>|reset]",
|
|
391
|
+
message: "Usage: /advisor-pi [status|enable|disable|model <provider>/<model>|thinking <minimal|low|medium|high|xhigh|max>|max-uses <n>|max-transcript-chars <n>|cache <none|short|long>|reset]",
|
|
346
392
|
level: "error",
|
|
347
393
|
persist: false,
|
|
348
394
|
updateToolState: false,
|
|
@@ -378,6 +424,7 @@ export default function advisorPiExtension(pi) {
|
|
|
378
424
|
`model: ${config.provider}/${config.modelId} (${availability})`,
|
|
379
425
|
`thinking: ${config.thinkingLevel}`,
|
|
380
426
|
`uses: ${useCount}/${config.maxUses}`,
|
|
427
|
+
`transcript: max ${config.maxTranscriptChars} chars`,
|
|
381
428
|
`cache: ${config.cacheRetention}`,
|
|
382
429
|
].join(" • ");
|
|
383
430
|
}
|
|
@@ -393,7 +440,7 @@ Your role is strategic guidance only. You do not have tools and you do not make
|
|
|
393
440
|
- If the task is unsafe, impossible, or underspecified, say what must be clarified.
|
|
394
441
|
|
|
395
442
|
Return guidance in short sections with bullets when useful.`;
|
|
396
|
-
function defaultConfig() {
|
|
443
|
+
export function defaultConfig() {
|
|
397
444
|
const parsed = parseModelSpec(DEFAULT_ADVISOR_MODEL) ?? { provider: "openai-codex", modelId: "gpt-5.6-sol" };
|
|
398
445
|
return {
|
|
399
446
|
enabled: true,
|
|
@@ -404,6 +451,7 @@ function defaultConfig() {
|
|
|
404
451
|
cacheRetention: DEFAULT_CACHE_RETENTION,
|
|
405
452
|
maxTokens: DEFAULT_MAX_TOKENS,
|
|
406
453
|
timeoutMs: DEFAULT_TIMEOUT_MS,
|
|
454
|
+
maxTranscriptChars: DEFAULT_MAX_TRANSCRIPT_CHARS,
|
|
407
455
|
};
|
|
408
456
|
}
|
|
409
457
|
function buildExecutorGuidance(config, useCount) {
|
|
@@ -422,6 +470,14 @@ function serializeCurrentConversation(ctx) {
|
|
|
422
470
|
const llmMessages = convertToLlm(sessionContext.messages);
|
|
423
471
|
return serializeConversation(llmMessages);
|
|
424
472
|
}
|
|
473
|
+
export function truncateTranscript(text, maxChars) {
|
|
474
|
+
if (maxChars <= 0)
|
|
475
|
+
return text;
|
|
476
|
+
if (text.length <= maxChars)
|
|
477
|
+
return text;
|
|
478
|
+
const omitted = text.length - maxChars;
|
|
479
|
+
return `[... earlier conversation truncated: showing the most recent ${maxChars} of ${text.length} characters (${omitted} omitted)]\n\n${text.slice(text.length - maxChars)}`;
|
|
480
|
+
}
|
|
425
481
|
function buildAdvisorUserPrompt(params, conversationText) {
|
|
426
482
|
return [
|
|
427
483
|
"## Executor Question",
|
|
@@ -480,7 +536,7 @@ function makeSkippedDetails(config, useCount, params) {
|
|
|
480
536
|
state: makeStateEntry(config, useCount),
|
|
481
537
|
};
|
|
482
538
|
}
|
|
483
|
-
function makeStateEntry(config, useCount) {
|
|
539
|
+
export function makeStateEntry(config, useCount) {
|
|
484
540
|
return {
|
|
485
541
|
version: 1,
|
|
486
542
|
config: { ...config },
|
|
@@ -488,10 +544,10 @@ function makeStateEntry(config, useCount) {
|
|
|
488
544
|
updatedAt: new Date().toISOString(),
|
|
489
545
|
};
|
|
490
546
|
}
|
|
491
|
-
function persistState(pi, config, useCount) {
|
|
547
|
+
export function persistState(pi, config, useCount) {
|
|
492
548
|
pi.appendEntry(STATE_ENTRY, makeStateEntry(config, useCount));
|
|
493
549
|
}
|
|
494
|
-
function normalizeConfig(input, fallback) {
|
|
550
|
+
export function normalizeConfig(input, fallback, registry) {
|
|
495
551
|
const normalized = {
|
|
496
552
|
enabled: typeof input.enabled === "boolean" ? input.enabled : fallback.enabled,
|
|
497
553
|
provider: typeof input.provider === "string" && input.provider ? input.provider : fallback.provider,
|
|
@@ -501,18 +557,62 @@ function normalizeConfig(input, fallback) {
|
|
|
501
557
|
cacheRetention: parseCacheRetention(input.cacheRetention) ?? fallback.cacheRetention,
|
|
502
558
|
maxTokens: typeof input.maxTokens === "number" && input.maxTokens > 0 ? Math.floor(input.maxTokens) : fallback.maxTokens,
|
|
503
559
|
timeoutMs: typeof input.timeoutMs === "number" && input.timeoutMs > 0 ? Math.floor(input.timeoutMs) : fallback.timeoutMs,
|
|
560
|
+
maxTranscriptChars: typeof input.maxTranscriptChars === "number" && input.maxTranscriptChars > 0
|
|
561
|
+
? Math.floor(input.maxTranscriptChars)
|
|
562
|
+
: fallback.maxTranscriptChars,
|
|
504
563
|
};
|
|
505
564
|
const legacyDefault = parseModelSpec(LEGACY_DEFAULT_ADVISOR_MODEL);
|
|
506
565
|
if (input.thinkingLevel === undefined &&
|
|
507
566
|
legacyDefault &&
|
|
508
567
|
normalized.provider === legacyDefault.provider &&
|
|
509
568
|
normalized.modelId === legacyDefault.modelId) {
|
|
510
|
-
|
|
511
|
-
|
|
569
|
+
// Only rewrite the stored legacy default when the migration target resolves.
|
|
570
|
+
// Otherwise a resolving stored model would be replaced by a non-resolving default.
|
|
571
|
+
if (!registry || modelResolves(registry, fallback.provider, fallback.modelId)) {
|
|
572
|
+
normalized.provider = fallback.provider;
|
|
573
|
+
normalized.modelId = fallback.modelId;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
if (registry && typeof input.provider === "string" && input.provider && typeof input.modelId === "string" && input.modelId) {
|
|
577
|
+
// Never replace a resolving stored model with a non-resolving one.
|
|
578
|
+
if (modelResolves(registry, input.provider, input.modelId) && !modelResolves(registry, normalized.provider, normalized.modelId)) {
|
|
579
|
+
normalized.provider = input.provider;
|
|
580
|
+
normalized.modelId = input.modelId;
|
|
581
|
+
}
|
|
512
582
|
}
|
|
513
583
|
return normalized;
|
|
514
584
|
}
|
|
515
|
-
function
|
|
585
|
+
export function modelResolves(registry, provider, modelId) {
|
|
586
|
+
if (!registry)
|
|
587
|
+
return false;
|
|
588
|
+
try {
|
|
589
|
+
const found = registry.find(provider, modelId);
|
|
590
|
+
return found !== undefined && found !== null;
|
|
591
|
+
}
|
|
592
|
+
catch {
|
|
593
|
+
return false;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
export function resolveAdvisorModel(registry, candidates) {
|
|
597
|
+
if (!registry)
|
|
598
|
+
return undefined;
|
|
599
|
+
for (const candidate of candidates) {
|
|
600
|
+
if (modelResolves(registry, candidate.provider, candidate.modelId))
|
|
601
|
+
return candidate;
|
|
602
|
+
}
|
|
603
|
+
try {
|
|
604
|
+
const available = registry.getAvailable?.();
|
|
605
|
+
const first = Array.isArray(available) ? available[0] : undefined;
|
|
606
|
+
if (first && typeof first.provider === "string" && typeof first.id === "string" && first.provider && first.id) {
|
|
607
|
+
return { provider: first.provider, modelId: first.id };
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
catch {
|
|
611
|
+
// Ignore registry listing failures; callers keep the current config.
|
|
612
|
+
}
|
|
613
|
+
return undefined;
|
|
614
|
+
}
|
|
615
|
+
export function parseModelSpec(value) {
|
|
516
616
|
const slash = value.indexOf("/");
|
|
517
617
|
if (slash <= 0 || slash === value.length - 1)
|
|
518
618
|
return undefined;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "advisor-pi",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Advisor-style strategic model guidance for Pi Coding Agent workflows",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build": "tsc",
|
|
21
|
+
"test": "npm run build && node --test test/*.test.mjs",
|
|
21
22
|
"prepublishOnly": "npm run build"
|
|
22
23
|
},
|
|
23
24
|
"pi": {
|
package/src/index.ts
CHANGED
|
@@ -8,15 +8,16 @@ import {
|
|
|
8
8
|
} from "@earendil-works/pi-coding-agent";
|
|
9
9
|
import { Type, type Static } from "typebox";
|
|
10
10
|
|
|
11
|
-
const STATE_ENTRY = "advisor-pi-state";
|
|
11
|
+
export const STATE_ENTRY = "advisor-pi-state";
|
|
12
12
|
const TOOL_NAME = "advisor";
|
|
13
|
-
const DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.6-sol";
|
|
14
|
-
const LEGACY_DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.5";
|
|
13
|
+
export const DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.6-sol";
|
|
14
|
+
export const LEGACY_DEFAULT_ADVISOR_MODEL = "openai-codex/gpt-5.5";
|
|
15
15
|
const DEFAULT_ADVISOR_THINKING_LEVEL: AdvisorThinkingLevel = "high";
|
|
16
16
|
const DEFAULT_MAX_USES = 5;
|
|
17
17
|
const DEFAULT_CACHE_RETENTION: CacheRetention = "short";
|
|
18
18
|
const DEFAULT_TIMEOUT_MS = 600_000;
|
|
19
19
|
const DEFAULT_MAX_TOKENS = 4_000;
|
|
20
|
+
export const DEFAULT_MAX_TRANSCRIPT_CHARS = 20_000;
|
|
20
21
|
|
|
21
22
|
const advisorToolSchema = Type.Object({
|
|
22
23
|
question: Type.String({
|
|
@@ -49,6 +50,7 @@ type AdvisorConfig = {
|
|
|
49
50
|
cacheRetention: CacheRetention;
|
|
50
51
|
maxTokens: number;
|
|
51
52
|
timeoutMs: number;
|
|
53
|
+
maxTranscriptChars: number;
|
|
52
54
|
};
|
|
53
55
|
|
|
54
56
|
type AdvisorStateEntry = {
|
|
@@ -74,6 +76,11 @@ type AdvisorToolDetails = {
|
|
|
74
76
|
state: AdvisorStateEntry;
|
|
75
77
|
};
|
|
76
78
|
|
|
79
|
+
export type ModelRegistryLike = {
|
|
80
|
+
find: (provider: string, modelId: string) => unknown;
|
|
81
|
+
getAvailable?: () => Array<{ provider?: unknown; id?: unknown }>;
|
|
82
|
+
};
|
|
83
|
+
|
|
77
84
|
export default function advisorPiExtension(pi: ExtensionAPI) {
|
|
78
85
|
let config = defaultConfig();
|
|
79
86
|
let useCount = 0;
|
|
@@ -94,6 +101,10 @@ export default function advisorPiExtension(pi: ExtensionAPI) {
|
|
|
94
101
|
description: "Advisor prompt-cache preference: none, short, or long",
|
|
95
102
|
type: "string",
|
|
96
103
|
});
|
|
104
|
+
pi.registerFlag("advisor-max-transcript-chars", {
|
|
105
|
+
description: "Maximum conversation transcript characters sent per advisor call (keeps most recent)",
|
|
106
|
+
type: "string",
|
|
107
|
+
});
|
|
97
108
|
pi.registerFlag("advisor-enabled", {
|
|
98
109
|
description: "Enable the advisor tool on startup",
|
|
99
110
|
type: "boolean",
|
|
@@ -146,7 +157,7 @@ export default function advisorPiExtension(pi: ExtensionAPI) {
|
|
|
146
157
|
if (!auth.ok) throw new Error(auth.error);
|
|
147
158
|
|
|
148
159
|
const startedAt = Date.now();
|
|
149
|
-
const conversationText = serializeCurrentConversation(ctx);
|
|
160
|
+
const conversationText = truncateTranscript(serializeCurrentConversation(ctx), config.maxTranscriptChars);
|
|
150
161
|
const userMessage: Message = {
|
|
151
162
|
role: "user",
|
|
152
163
|
content: [
|
|
@@ -218,7 +229,7 @@ export default function advisorPiExtension(pi: ExtensionAPI) {
|
|
|
218
229
|
});
|
|
219
230
|
|
|
220
231
|
pi.registerCommand("advisor-pi", {
|
|
221
|
-
description: "Configure advisor-pi: status, enable, disable, model, thinking, max-uses, cache, reset",
|
|
232
|
+
description: "Configure advisor-pi: status, enable, disable, model, thinking, max-uses, max-transcript-chars, cache, reset",
|
|
222
233
|
handler: async (args, ctx) => {
|
|
223
234
|
const result = handleCommand(args.trim(), ctx);
|
|
224
235
|
if (result.persist) persistState(pi, config, useCount);
|
|
@@ -250,26 +261,27 @@ export default function advisorPiExtension(pi: ExtensionAPI) {
|
|
|
250
261
|
function refreshStateFromBranch(ctx: ExtensionContext): void {
|
|
251
262
|
config = defaultConfig();
|
|
252
263
|
useCount = 0;
|
|
253
|
-
const restoredFromBranch = restoreStateFromSession(ctx);
|
|
254
|
-
if (!restoredFromBranch) applyStartupFlags(pi);
|
|
264
|
+
const restoredFromBranch = restoreStateFromSession(ctx, ctx.modelRegistry);
|
|
265
|
+
if (!restoredFromBranch) applyStartupFlags(pi, ctx.modelRegistry);
|
|
266
|
+
ensureAdvisorModelResolves(ctx);
|
|
255
267
|
syncActiveTool(pi);
|
|
256
268
|
updateStatus(ctx);
|
|
257
269
|
}
|
|
258
270
|
|
|
259
|
-
function restoreStateFromSession(ctx: ExtensionContext): boolean {
|
|
271
|
+
function restoreStateFromSession(ctx: ExtensionContext, registry?: ModelRegistryLike): boolean {
|
|
260
272
|
let restored = false;
|
|
261
273
|
const branch = ctx.sessionManager.getBranch();
|
|
262
274
|
for (const entry of branch) {
|
|
263
275
|
if (entry.type === "custom" && entry.customType === STATE_ENTRY) {
|
|
264
276
|
restored = true;
|
|
265
277
|
const data = entry.data as Partial<AdvisorStateEntry> | undefined;
|
|
266
|
-
if (data?.config) config = normalizeConfig(data.config, config);
|
|
278
|
+
if (data?.config) config = normalizeConfig(data.config, config, registry);
|
|
267
279
|
if (typeof data?.useCount === "number") useCount = Math.max(0, data.useCount);
|
|
268
280
|
}
|
|
269
281
|
if (entry.type === "message" && entry.message.role === "toolResult" && entry.message.toolName === TOOL_NAME) {
|
|
270
282
|
restored = true;
|
|
271
283
|
const details = entry.message.details as Partial<AdvisorToolDetails> | undefined;
|
|
272
|
-
if (details?.state?.config) config = normalizeConfig(details.state.config, config);
|
|
284
|
+
if (details?.state?.config) config = normalizeConfig(details.state.config, config, registry);
|
|
273
285
|
if (typeof details?.state?.useCount === "number") useCount = Math.max(useCount, details.state.useCount);
|
|
274
286
|
else if (details?.advisor?.useCount) useCount = Math.max(useCount, details.advisor.useCount);
|
|
275
287
|
}
|
|
@@ -277,14 +289,14 @@ export default function advisorPiExtension(pi: ExtensionAPI) {
|
|
|
277
289
|
return restored;
|
|
278
290
|
}
|
|
279
291
|
|
|
280
|
-
function applyStartupFlags(api: ExtensionAPI): void {
|
|
292
|
+
function applyStartupFlags(api: ExtensionAPI, registry?: ModelRegistryLike): void {
|
|
281
293
|
const enabledFlag = api.getFlag("advisor-enabled");
|
|
282
294
|
if (typeof enabledFlag === "boolean") config.enabled = enabledFlag;
|
|
283
295
|
|
|
284
296
|
const modelFlag = api.getFlag("advisor-model");
|
|
285
297
|
if (typeof modelFlag === "string" && modelFlag.trim()) {
|
|
286
298
|
const parsed = parseModelSpec(modelFlag.trim());
|
|
287
|
-
if (parsed) {
|
|
299
|
+
if (parsed && (!registry || modelResolves(registry, parsed.provider, parsed.modelId))) {
|
|
288
300
|
config.provider = parsed.provider;
|
|
289
301
|
config.modelId = parsed.modelId;
|
|
290
302
|
}
|
|
@@ -307,6 +319,29 @@ export default function advisorPiExtension(pi: ExtensionAPI) {
|
|
|
307
319
|
const cacheRetention = parseCacheRetention(cacheFlag);
|
|
308
320
|
if (cacheRetention) config.cacheRetention = cacheRetention;
|
|
309
321
|
}
|
|
322
|
+
|
|
323
|
+
const maxTranscriptCharsFlag = api.getFlag("advisor-max-transcript-chars");
|
|
324
|
+
if (typeof maxTranscriptCharsFlag === "string") {
|
|
325
|
+
const maxTranscriptChars = parsePositiveInt(maxTranscriptCharsFlag);
|
|
326
|
+
if (maxTranscriptChars !== undefined) config.maxTranscriptChars = maxTranscriptChars;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
function ensureAdvisorModelResolves(ctx: ExtensionContext): void {
|
|
331
|
+
const registry = ctx.modelRegistry as ModelRegistryLike | undefined;
|
|
332
|
+
if (!registry || modelResolves(registry, config.provider, config.modelId)) return;
|
|
333
|
+
const previous = `${config.provider}/${config.modelId}`;
|
|
334
|
+
const candidates = [parseModelSpec(DEFAULT_ADVISOR_MODEL), parseModelSpec(LEGACY_DEFAULT_ADVISOR_MODEL)].filter(
|
|
335
|
+
(candidate): candidate is { provider: string; modelId: string } => candidate !== undefined,
|
|
336
|
+
);
|
|
337
|
+
const working = resolveAdvisorModel(registry, candidates);
|
|
338
|
+
if (!working) return;
|
|
339
|
+
config.provider = working.provider;
|
|
340
|
+
config.modelId = working.modelId;
|
|
341
|
+
persistState(pi, config, useCount);
|
|
342
|
+
if (ctx.hasUI) {
|
|
343
|
+
ctx.ui.notify(`Advisor model ${previous} not found. Falling back to ${working.provider}/${working.modelId}.`, "warning");
|
|
344
|
+
}
|
|
310
345
|
}
|
|
311
346
|
|
|
312
347
|
function handleCommand(
|
|
@@ -417,10 +452,28 @@ export default function advisorPiExtension(pi: ExtensionAPI) {
|
|
|
417
452
|
updateToolState: false,
|
|
418
453
|
};
|
|
419
454
|
}
|
|
455
|
+
case "max-transcript-chars": {
|
|
456
|
+
const maxTranscriptChars = parsePositiveInt(value);
|
|
457
|
+
if (maxTranscriptChars === undefined) {
|
|
458
|
+
return {
|
|
459
|
+
message: "Usage: /advisor-pi max-transcript-chars <positive-number>",
|
|
460
|
+
level: "error",
|
|
461
|
+
persist: false,
|
|
462
|
+
updateToolState: false,
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
config.maxTranscriptChars = maxTranscriptChars;
|
|
466
|
+
return {
|
|
467
|
+
message: `advisor-pi max transcript chars set to ${maxTranscriptChars}`,
|
|
468
|
+
level: "info",
|
|
469
|
+
persist: true,
|
|
470
|
+
updateToolState: false,
|
|
471
|
+
};
|
|
472
|
+
}
|
|
420
473
|
default:
|
|
421
474
|
return {
|
|
422
475
|
message:
|
|
423
|
-
"Usage: /advisor-pi [status|enable|disable|model <provider>/<model>|thinking <minimal|low|medium|high|xhigh|max>|max-uses <n>|cache <none|short|long>|reset]",
|
|
476
|
+
"Usage: /advisor-pi [status|enable|disable|model <provider>/<model>|thinking <minimal|low|medium|high|xhigh|max>|max-uses <n>|max-transcript-chars <n>|cache <none|short|long>|reset]",
|
|
424
477
|
level: "error",
|
|
425
478
|
persist: false,
|
|
426
479
|
updateToolState: false,
|
|
@@ -460,6 +513,7 @@ export default function advisorPiExtension(pi: ExtensionAPI) {
|
|
|
460
513
|
`model: ${config.provider}/${config.modelId} (${availability})`,
|
|
461
514
|
`thinking: ${config.thinkingLevel}`,
|
|
462
515
|
`uses: ${useCount}/${config.maxUses}`,
|
|
516
|
+
`transcript: max ${config.maxTranscriptChars} chars`,
|
|
463
517
|
`cache: ${config.cacheRetention}`,
|
|
464
518
|
].join(" • ");
|
|
465
519
|
}
|
|
@@ -477,7 +531,7 @@ Your role is strategic guidance only. You do not have tools and you do not make
|
|
|
477
531
|
|
|
478
532
|
Return guidance in short sections with bullets when useful.`;
|
|
479
533
|
|
|
480
|
-
function defaultConfig(): AdvisorConfig {
|
|
534
|
+
export function defaultConfig(): AdvisorConfig {
|
|
481
535
|
const parsed = parseModelSpec(DEFAULT_ADVISOR_MODEL) ?? { provider: "openai-codex", modelId: "gpt-5.6-sol" };
|
|
482
536
|
return {
|
|
483
537
|
enabled: true,
|
|
@@ -488,6 +542,7 @@ function defaultConfig(): AdvisorConfig {
|
|
|
488
542
|
cacheRetention: DEFAULT_CACHE_RETENTION,
|
|
489
543
|
maxTokens: DEFAULT_MAX_TOKENS,
|
|
490
544
|
timeoutMs: DEFAULT_TIMEOUT_MS,
|
|
545
|
+
maxTranscriptChars: DEFAULT_MAX_TRANSCRIPT_CHARS,
|
|
491
546
|
};
|
|
492
547
|
}
|
|
493
548
|
|
|
@@ -509,6 +564,13 @@ function serializeCurrentConversation(ctx: ExtensionContext): string {
|
|
|
509
564
|
return serializeConversation(llmMessages);
|
|
510
565
|
}
|
|
511
566
|
|
|
567
|
+
export function truncateTranscript(text: string, maxChars: number): string {
|
|
568
|
+
if (maxChars <= 0) return text;
|
|
569
|
+
if (text.length <= maxChars) return text;
|
|
570
|
+
const omitted = text.length - maxChars;
|
|
571
|
+
return `[... earlier conversation truncated: showing the most recent ${maxChars} of ${text.length} characters (${omitted} omitted)]\n\n${text.slice(text.length - maxChars)}`;
|
|
572
|
+
}
|
|
573
|
+
|
|
512
574
|
function buildAdvisorUserPrompt(params: AdvisorToolInput, conversationText: string): string {
|
|
513
575
|
return [
|
|
514
576
|
"## Executor Question",
|
|
@@ -572,7 +634,7 @@ function makeSkippedDetails(config: AdvisorConfig, useCount: number, params: Adv
|
|
|
572
634
|
};
|
|
573
635
|
}
|
|
574
636
|
|
|
575
|
-
function makeStateEntry(config: AdvisorConfig, useCount: number): AdvisorStateEntry {
|
|
637
|
+
export function makeStateEntry(config: AdvisorConfig, useCount: number): AdvisorStateEntry {
|
|
576
638
|
return {
|
|
577
639
|
version: 1,
|
|
578
640
|
config: { ...config },
|
|
@@ -581,11 +643,15 @@ function makeStateEntry(config: AdvisorConfig, useCount: number): AdvisorStateEn
|
|
|
581
643
|
};
|
|
582
644
|
}
|
|
583
645
|
|
|
584
|
-
function persistState(pi: ExtensionAPI, config: AdvisorConfig, useCount: number): void {
|
|
646
|
+
export function persistState(pi: ExtensionAPI, config: AdvisorConfig, useCount: number): void {
|
|
585
647
|
pi.appendEntry(STATE_ENTRY, makeStateEntry(config, useCount));
|
|
586
648
|
}
|
|
587
649
|
|
|
588
|
-
function normalizeConfig(
|
|
650
|
+
export function normalizeConfig(
|
|
651
|
+
input: Partial<AdvisorConfig>,
|
|
652
|
+
fallback: AdvisorConfig,
|
|
653
|
+
registry?: ModelRegistryLike,
|
|
654
|
+
): AdvisorConfig {
|
|
589
655
|
const normalized: AdvisorConfig = {
|
|
590
656
|
enabled: typeof input.enabled === "boolean" ? input.enabled : fallback.enabled,
|
|
591
657
|
provider: typeof input.provider === "string" && input.provider ? input.provider : fallback.provider,
|
|
@@ -595,6 +661,10 @@ function normalizeConfig(input: Partial<AdvisorConfig>, fallback: AdvisorConfig)
|
|
|
595
661
|
cacheRetention: parseCacheRetention(input.cacheRetention) ?? fallback.cacheRetention,
|
|
596
662
|
maxTokens: typeof input.maxTokens === "number" && input.maxTokens > 0 ? Math.floor(input.maxTokens) : fallback.maxTokens,
|
|
597
663
|
timeoutMs: typeof input.timeoutMs === "number" && input.timeoutMs > 0 ? Math.floor(input.timeoutMs) : fallback.timeoutMs,
|
|
664
|
+
maxTranscriptChars:
|
|
665
|
+
typeof input.maxTranscriptChars === "number" && input.maxTranscriptChars > 0
|
|
666
|
+
? Math.floor(input.maxTranscriptChars)
|
|
667
|
+
: fallback.maxTranscriptChars,
|
|
598
668
|
};
|
|
599
669
|
|
|
600
670
|
const legacyDefault = parseModelSpec(LEGACY_DEFAULT_ADVISOR_MODEL);
|
|
@@ -604,14 +674,56 @@ function normalizeConfig(input: Partial<AdvisorConfig>, fallback: AdvisorConfig)
|
|
|
604
674
|
normalized.provider === legacyDefault.provider &&
|
|
605
675
|
normalized.modelId === legacyDefault.modelId
|
|
606
676
|
) {
|
|
607
|
-
|
|
608
|
-
|
|
677
|
+
// Only rewrite the stored legacy default when the migration target resolves.
|
|
678
|
+
// Otherwise a resolving stored model would be replaced by a non-resolving default.
|
|
679
|
+
if (!registry || modelResolves(registry, fallback.provider, fallback.modelId)) {
|
|
680
|
+
normalized.provider = fallback.provider;
|
|
681
|
+
normalized.modelId = fallback.modelId;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
if (registry && typeof input.provider === "string" && input.provider && typeof input.modelId === "string" && input.modelId) {
|
|
686
|
+
// Never replace a resolving stored model with a non-resolving one.
|
|
687
|
+
if (modelResolves(registry, input.provider, input.modelId) && !modelResolves(registry, normalized.provider, normalized.modelId)) {
|
|
688
|
+
normalized.provider = input.provider;
|
|
689
|
+
normalized.modelId = input.modelId;
|
|
690
|
+
}
|
|
609
691
|
}
|
|
610
692
|
|
|
611
693
|
return normalized;
|
|
612
694
|
}
|
|
613
695
|
|
|
614
|
-
function
|
|
696
|
+
export function modelResolves(registry: ModelRegistryLike | undefined, provider: string, modelId: string): boolean {
|
|
697
|
+
if (!registry) return false;
|
|
698
|
+
try {
|
|
699
|
+
const found = registry.find(provider, modelId);
|
|
700
|
+
return found !== undefined && found !== null;
|
|
701
|
+
} catch {
|
|
702
|
+
return false;
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
export function resolveAdvisorModel(
|
|
707
|
+
registry: ModelRegistryLike | undefined,
|
|
708
|
+
candidates: Array<{ provider: string; modelId: string }>,
|
|
709
|
+
): { provider: string; modelId: string } | undefined {
|
|
710
|
+
if (!registry) return undefined;
|
|
711
|
+
for (const candidate of candidates) {
|
|
712
|
+
if (modelResolves(registry, candidate.provider, candidate.modelId)) return candidate;
|
|
713
|
+
}
|
|
714
|
+
try {
|
|
715
|
+
const available = registry.getAvailable?.();
|
|
716
|
+
const first = Array.isArray(available) ? available[0] : undefined;
|
|
717
|
+
if (first && typeof first.provider === "string" && typeof first.id === "string" && first.provider && first.id) {
|
|
718
|
+
return { provider: first.provider, modelId: first.id };
|
|
719
|
+
}
|
|
720
|
+
} catch {
|
|
721
|
+
// Ignore registry listing failures; callers keep the current config.
|
|
722
|
+
}
|
|
723
|
+
return undefined;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
export function parseModelSpec(value: string): { provider: string; modelId: string } | undefined {
|
|
615
727
|
const slash = value.indexOf("/");
|
|
616
728
|
if (slash <= 0 || slash === value.length - 1) return undefined;
|
|
617
729
|
return {
|