shariq-pi-extensions 0.2.11 → 0.2.12
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.
|
@@ -40,7 +40,10 @@ Settings are persisted in `~/.pi/agent/smart-compaction.json`:
|
|
|
40
40
|
"version": 1,
|
|
41
41
|
"enabled": true,
|
|
42
42
|
"model": "inherit",
|
|
43
|
-
"thinkingLevel": "
|
|
44
|
-
"maxSummaryTokens": 16384
|
|
43
|
+
"thinkingLevel": "inherit"
|
|
45
44
|
}
|
|
46
45
|
```
|
|
46
|
+
|
|
47
|
+
- `model`: `"inherit"` (uses current active session model) or explicit `"provider/model-id"`.
|
|
48
|
+
- `thinkingLevel`: `"inherit"` (uses current session's thinking level) or `"off" | "low" | "medium" | "high" | "max"`.
|
|
49
|
+
- `maxSummaryTokens`: optional override integer; if omitted, dynamically defaults to the model's full native output capacity (65,536–128,000+ tokens) so summaries are never artificially truncated.
|
|
@@ -6,16 +6,15 @@ export interface SmartCompactionConfig {
|
|
|
6
6
|
version: 1;
|
|
7
7
|
enabled: boolean;
|
|
8
8
|
model: string; // "inherit" or "provider/model-id"
|
|
9
|
-
thinkingLevel?: "off" | "low" | "medium" | "high";
|
|
10
|
-
maxSummaryTokens?: number;
|
|
9
|
+
thinkingLevel?: "inherit" | "off" | "low" | "medium" | "high" | "max";
|
|
10
|
+
maxSummaryTokens?: number; // optional override; defaults to model's full capacity
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export const DEFAULT_SMART_COMPACTION_CONFIG: SmartCompactionConfig = {
|
|
14
14
|
version: 1,
|
|
15
15
|
enabled: true,
|
|
16
16
|
model: "inherit",
|
|
17
|
-
thinkingLevel: "
|
|
18
|
-
maxSummaryTokens: 16384,
|
|
17
|
+
thinkingLevel: "inherit",
|
|
19
18
|
};
|
|
20
19
|
|
|
21
20
|
export function smartCompactionConfigPath(): string {
|
|
@@ -30,12 +29,12 @@ export function loadSmartCompactionConfig(file = smartCompactionConfigPath()): S
|
|
|
30
29
|
version: 1,
|
|
31
30
|
enabled: typeof raw.enabled === "boolean" ? raw.enabled : DEFAULT_SMART_COMPACTION_CONFIG.enabled,
|
|
32
31
|
model: typeof raw.model === "string" && raw.model.trim() ? raw.model.trim() : DEFAULT_SMART_COMPACTION_CONFIG.model,
|
|
33
|
-
thinkingLevel: raw.thinkingLevel && ["off", "low", "medium", "high"].includes(raw.thinkingLevel)
|
|
34
|
-
? raw.thinkingLevel
|
|
32
|
+
thinkingLevel: raw.thinkingLevel && ["inherit", "off", "low", "medium", "high", "max"].includes(raw.thinkingLevel)
|
|
33
|
+
? (raw.thinkingLevel as SmartCompactionConfig["thinkingLevel"])
|
|
35
34
|
: DEFAULT_SMART_COMPACTION_CONFIG.thinkingLevel,
|
|
36
35
|
maxSummaryTokens: typeof raw.maxSummaryTokens === "number" && raw.maxSummaryTokens > 0
|
|
37
36
|
? raw.maxSummaryTokens
|
|
38
|
-
:
|
|
37
|
+
: undefined,
|
|
39
38
|
};
|
|
40
39
|
} catch {
|
|
41
40
|
return { ...DEFAULT_SMART_COMPACTION_CONFIG };
|
|
@@ -50,8 +49,8 @@ export function saveSmartCompactionConfig(config: SmartCompactionConfig, file =
|
|
|
50
49
|
version: 1,
|
|
51
50
|
enabled: config.enabled,
|
|
52
51
|
model: config.model || "inherit",
|
|
53
|
-
thinkingLevel: config.thinkingLevel ?? "
|
|
54
|
-
maxSummaryTokens: config.maxSummaryTokens
|
|
52
|
+
thinkingLevel: config.thinkingLevel ?? "inherit",
|
|
53
|
+
maxSummaryTokens: config.maxSummaryTokens,
|
|
55
54
|
};
|
|
56
55
|
try {
|
|
57
56
|
fs.writeFileSync(temporary, `${JSON.stringify(document, null, 2)}\n`, { mode: 0o600 });
|
|
@@ -44,7 +44,7 @@ export function resolveCompactionModel(
|
|
|
44
44
|
|
|
45
45
|
export interface RunSmartCompactionOptions {
|
|
46
46
|
event: SessionBeforeCompactEvent;
|
|
47
|
-
ctx: Pick<ExtensionContext, "model" | "modelRegistry">;
|
|
47
|
+
ctx: Pick<ExtensionContext, "model" | "modelRegistry" | "thinkingLevel">;
|
|
48
48
|
config: SmartCompactionConfig;
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -97,18 +97,27 @@ export async function runSmartCompaction(
|
|
|
97
97
|
],
|
|
98
98
|
};
|
|
99
99
|
|
|
100
|
-
const requestedMaxTokens = config.maxSummaryTokens ?? 16384;
|
|
101
|
-
const maxTokens = model.maxTokens > 0 ? Math.min(requestedMaxTokens, model.maxTokens) : requestedMaxTokens;
|
|
102
|
-
|
|
103
100
|
const completeOptions: Record<string, unknown> = {
|
|
104
|
-
maxTokens,
|
|
105
101
|
signal,
|
|
106
102
|
cacheRetention: "none",
|
|
107
103
|
sessionId: uuidv7(),
|
|
108
104
|
};
|
|
109
105
|
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
// If user explicitly configured a maxSummaryTokens override, pass it.
|
|
107
|
+
// Otherwise, omit maxTokens so the provider uses the model's full native maximum output capacity (e.g. 128k, 65k).
|
|
108
|
+
if (typeof config.maxSummaryTokens === "number" && config.maxSummaryTokens > 0) {
|
|
109
|
+
completeOptions.maxTokens = config.maxSummaryTokens;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Resolve reasoning effort / thinking level
|
|
113
|
+
if (model.reasoning) {
|
|
114
|
+
const desiredThinking = config.thinkingLevel === "inherit" || !config.thinkingLevel
|
|
115
|
+
? ctx.thinkingLevel
|
|
116
|
+
: config.thinkingLevel;
|
|
117
|
+
|
|
118
|
+
if (desiredThinking && desiredThinking !== "off") {
|
|
119
|
+
completeOptions.reasoning = desiredThinking;
|
|
120
|
+
}
|
|
112
121
|
}
|
|
113
122
|
|
|
114
123
|
const response = await ctx.modelRegistry.complete(model, context, completeOptions as any);
|
|
@@ -164,11 +164,19 @@ export function createSmartCompactionExtension(options: SmartCompactionExtension
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
// Default status
|
|
167
|
+
const currentModelDesc = config.model === "inherit"
|
|
168
|
+
? `inherit (${cmdCtx.model ? `${cmdCtx.model.provider}/${cmdCtx.model.id}` : "active session model"})`
|
|
169
|
+
: config.model;
|
|
170
|
+
const currentThinkingDesc = config.thinkingLevel === "inherit"
|
|
171
|
+
? `inherit (${cmdCtx.thinkingLevel ?? "session default"})`
|
|
172
|
+
: (config.thinkingLevel ?? "inherit");
|
|
173
|
+
const maxTokensDesc = config.maxSummaryTokens ? `${config.maxSummaryTokens}` : "unlimited (full model output capacity)";
|
|
174
|
+
|
|
167
175
|
const status = [
|
|
168
176
|
`Smart Compaction: ${config.enabled ? "ENABLED" : "DISABLED"}`,
|
|
169
|
-
`Model: ${
|
|
170
|
-
`Thinking Level: ${
|
|
171
|
-
`Max Tokens: ${
|
|
177
|
+
`Model: ${currentModelDesc}`,
|
|
178
|
+
`Thinking Level: ${currentThinkingDesc}`,
|
|
179
|
+
`Max Output Tokens: ${maxTokensDesc}`,
|
|
172
180
|
"",
|
|
173
181
|
"Commands:",
|
|
174
182
|
" /smart-compaction enable | disable",
|