winter-super-cli 2026.6.6 → 2026.6.7
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/bin/winter.js +1 -0
- package/package.json +1 -1
- package/src/agent/runtime.js +10 -16
- package/src/ai/model-capabilities.js +15 -0
- package/src/ai/prompts/system-prompt.js +26 -4
- package/src/ai/providers.js +132 -55
- package/src/ai/small-model-amplifier.js +2 -2
- package/src/cli/commands.js +12 -0
- package/src/cli/context-loader.js +1 -1
- package/src/cli/input-controller.js +55 -44
- package/src/cli/prompt-builder.js +20 -11
- package/src/cli/repl-commands.js +3 -0
- package/src/cli/repl.js +187 -322
- package/src/cli/slash-commands.js +1 -0
- package/src/cli/snowflake-logo.js +64 -86
- package/src/cli/terminal-ui.js +139 -85
- package/src/cli/tool-runtime.js +8 -3
- package/src/cli/tui.js +181 -0
- package/src/context/token-juice.js +37 -10
- package/src/tools/executor.js +78 -3
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { formatRuntimeEnvironmentSummary, getRuntimeEnvironment } from './runtime-env.js';
|
|
2
|
+
import { getModelBudgetMultiplier } from '../ai/model-capabilities.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* PromptBuilder — Builds system prompts for Winter CLI agents.
|
|
@@ -49,26 +50,32 @@ export class PromptBuilder {
|
|
|
49
50
|
const sessionContext = this.session?.getContext?.() || {};
|
|
50
51
|
const environmentSummary = this.tools?.getRuntimeEnvironmentSummary?.() || this._defaultEnvironmentSummary();
|
|
51
52
|
const requiredLocalResources = this.getRequiredLocalResources();
|
|
52
|
-
const
|
|
53
|
-
const
|
|
53
|
+
const scale = getModelBudgetMultiplier(options.modelTier);
|
|
54
|
+
const projectContextBudget = options.projectContextBudget || Math.round(3200 * scale);
|
|
55
|
+
const compactSystemPrompt = options.compactSystemPrompt ?? (scale <= 0.75);
|
|
56
|
+
const memoryBudget = Math.round(1200 * scale);
|
|
57
|
+
const planBudget = Math.round(1200 * scale);
|
|
58
|
+
const requiredResourcesBudget = Math.round((compactSystemPrompt ? 1200 : 1600) * scale);
|
|
59
|
+
const workflowBudget = Math.round(900 * scale);
|
|
60
|
+
const blueprintBudget = Math.round(700 * scale);
|
|
54
61
|
|
|
55
62
|
const memoryStr = memories.length > 0
|
|
56
|
-
? this._formatMemories(memories)
|
|
63
|
+
? this._formatMemories(memories, { maxTotalChars: memoryBudget })
|
|
57
64
|
: '';
|
|
58
65
|
const requiredResourcesStr = requiredLocalResources
|
|
59
|
-
? `\n## Required Local Resource Rules\n${this._compactText(requiredLocalResources,
|
|
66
|
+
? `\n## Required Local Resource Rules\n${this._compactText(requiredLocalResources, requiredResourcesBudget, 'required local resources')}`
|
|
60
67
|
: '';
|
|
61
68
|
const plansStr = plans.length > 0
|
|
62
|
-
? this._formatPlans(plans)
|
|
69
|
+
? this._formatPlans(plans, { maxTotalChars: planBudget })
|
|
63
70
|
: '';
|
|
64
71
|
const skillsStr = Array.isArray(sessionContext.activeSkills) && sessionContext.activeSkills.length > 0
|
|
65
72
|
? `\n## Auto-applied Skills\n${sessionContext.activeSkills.slice(0, 12).map(skill => `- ${skill}`).join('\n')}${sessionContext.activeSkills.length > 12 ? '\n- ...' : ''}`
|
|
66
73
|
: '';
|
|
67
74
|
const workflowStr = sessionContext.workflowHints
|
|
68
|
-
? `\n## Workflow Auto-Selection\n${this._compactText(sessionContext.workflowHints,
|
|
75
|
+
? `\n## Workflow Auto-Selection\n${this._compactText(sessionContext.workflowHints, workflowBudget, 'workflow hints')}`
|
|
69
76
|
: '';
|
|
70
77
|
const blueprintStr = sessionContext.workflowBlueprint
|
|
71
|
-
? `\n## Profile Blueprint\n${this._compactText(sessionContext.workflowBlueprint,
|
|
78
|
+
? `\n## Profile Blueprint\n${this._compactText(sessionContext.workflowBlueprint, blueprintBudget, 'workflow blueprint')}`
|
|
72
79
|
: '';
|
|
73
80
|
const startupPlanStr = sessionContext.bootstrapPlan?.title
|
|
74
81
|
? `\n## Startup Plan\n- ${sessionContext.bootstrapPlan.title}: ${sessionContext.bootstrapPlan.description}`
|
|
@@ -164,12 +171,14 @@ export class PromptBuilder {
|
|
|
164
171
|
const plans = this.session?.getPlans?.() || [];
|
|
165
172
|
const sessionContext = this.session?.getContext?.() || {};
|
|
166
173
|
const requiredLocalResources = this.getRequiredLocalResources();
|
|
174
|
+
const scale = getModelBudgetMultiplier(this.ai?._modelTier || '');
|
|
175
|
+
const projectContextBudget = Math.round(3200 * (scale || 1));
|
|
167
176
|
|
|
168
|
-
const memoryStr = memories.length > 0 ? this._formatMemories(memories, { maxTotalChars: 900 }) : '';
|
|
177
|
+
const memoryStr = memories.length > 0 ? this._formatMemories(memories, { maxTotalChars: Math.round(900 * (scale || 1)) }) : '';
|
|
169
178
|
const requiredResourcesStr = requiredLocalResources
|
|
170
|
-
? `\n## Required Local Resource Rules\n${this._compactText(requiredLocalResources, 1600, 'required local resources')}`
|
|
179
|
+
? `\n## Required Local Resource Rules\n${this._compactText(requiredLocalResources, Math.round(1600 * (scale || 1)), 'required local resources')}`
|
|
171
180
|
: '';
|
|
172
|
-
const plansStr = plans.length > 0 ? this._formatPlans(plans, { maxTotalChars: 900 }) : '';
|
|
181
|
+
const plansStr = plans.length > 0 ? this._formatPlans(plans, { maxTotalChars: Math.round(900 * (scale || 1)) }) : '';
|
|
173
182
|
const skillsStr = Array.isArray(sessionContext.activeSkills) && sessionContext.activeSkills.length > 0
|
|
174
183
|
? `\n## Auto-applied Skills\n${sessionContext.activeSkills.slice(0, 12).map(skill => `- ${skill}`).join('\n')}${sessionContext.activeSkills.length > 12 ? '\n- ...' : ''}`
|
|
175
184
|
: '';
|
|
@@ -217,7 +226,7 @@ export class PromptBuilder {
|
|
|
217
226
|
`Working directory: ${this.projectPath}`,
|
|
218
227
|
`Current session: ${this.session?.getSessionId?.()?.substring(0, 8) || 'unknown'}`,
|
|
219
228
|
`${requiredResourcesStr}${memoryStr}${plansStr}${skillsStr}${startupPlanStr}`,
|
|
220
|
-
context ? `\n## Project Context\n${this._compactText(context,
|
|
229
|
+
context ? `\n## Project Context\n${this._compactText(context, projectContextBudget, 'project context')}` : '',
|
|
221
230
|
].join('\n');
|
|
222
231
|
}
|
|
223
232
|
|
package/src/cli/repl-commands.js
CHANGED