prism-mcp-server 20.9.1 → 20.9.3
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/utils/skillBudget.js +25 -3
- package/package.json +1 -1
|
@@ -80,14 +80,30 @@ export function assembleSkillBlock(entries, budgetChars) {
|
|
|
80
80
|
const ordered = [...entries].sort(fillOrder);
|
|
81
81
|
const unbudgeted = !Number.isFinite(budgetChars) || budgetChars <= 0;
|
|
82
82
|
let block = "";
|
|
83
|
+
let unprotectedChars = 0;
|
|
83
84
|
const inlined = [];
|
|
84
85
|
const overflow = [];
|
|
85
86
|
for (const e of ordered) {
|
|
86
87
|
const piece = render(e);
|
|
87
|
-
// Protected always inline
|
|
88
|
-
|
|
88
|
+
// Protected always inline and NEVER debit the budget: the tranche is
|
|
89
|
+
// documented as ADDITIVE on top of the floor. The previous check
|
|
90
|
+
// compared block.length — which the floor had already filled — so with
|
|
91
|
+
// a ~46KB floor against 2-16KB tranches, NO unprotected skill ever
|
|
92
|
+
// inlined at any normal budget. Rank was irrelevant; the budget was
|
|
93
|
+
// pre-spent. Found 2026-08-11 tracing why a prompt-matched
|
|
94
|
+
// verified-shipping still sat in overflow while an agent shipped
|
|
95
|
+
// unverified UI claims; the 2026-08-03 note ("no unprotected universal
|
|
96
|
+
// was ever inlined") had recorded this symptom and it was treated by
|
|
97
|
+
// protecting one skill instead of fixing the accounting.
|
|
98
|
+
if (unbudgeted || e.protected) {
|
|
89
99
|
block += piece;
|
|
90
100
|
inlined.push(e.name);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (unprotectedChars + piece.length <= budgetChars) {
|
|
104
|
+
block += piece;
|
|
105
|
+
unprotectedChars += piece.length;
|
|
106
|
+
inlined.push(e.name);
|
|
91
107
|
}
|
|
92
108
|
else {
|
|
93
109
|
overflow.push(e.name);
|
|
@@ -97,7 +113,13 @@ export function assembleSkillBlock(entries, budgetChars) {
|
|
|
97
113
|
block +=
|
|
98
114
|
`\n\n[📦 SKILLS NOT INLINED — max_tokens budget reached]\n` +
|
|
99
115
|
`${overflow.join(", ")}\n` +
|
|
100
|
-
`
|
|
116
|
+
`These are RULES YOU ARE BOUND BY, not optional reading — only their text ` +
|
|
117
|
+
`was withheld for budget. Before acting on work a listed skill governs ` +
|
|
118
|
+
`(e.g. verified-shipping before any completion claim, push, or PR), load ` +
|
|
119
|
+
`its body first: invoke it via the host's Skill tool, read it from the ` +
|
|
120
|
+
`skills directory, or re-call session_load_context with a higher ` +
|
|
121
|
+
`max_tokens. Claiming done without consulting the governing skill is the ` +
|
|
122
|
+
`exact failure this list exists to prevent.`;
|
|
101
123
|
}
|
|
102
124
|
return { block, inlined, overflow };
|
|
103
125
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prism-mcp-server",
|
|
3
|
-
"version": "20.9.
|
|
3
|
+
"version": "20.9.3",
|
|
4
4
|
"mcpName": "io.github.dcostenco/prism-coder",
|
|
5
5
|
"description": "Persistent session memory for AI coding agents that never leaves your machine \u2014 including the on-device model that reasons over it. Restores your prior decisions, open TODOs, and changed files across sessions; adds associative recall of related past work, semantic drift detection, and local inference. Local-first by default. Works with Claude Code, Cursor, and Codex.",
|
|
6
6
|
"module": "index.ts",
|