@spinabot/brigade 1.19.3 → 1.19.4
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/agents/agent-loop.d.ts.map +1 -1
- package/dist/agents/agent-loop.js +12 -1
- package/dist/agents/agent-loop.js.map +1 -1
- package/dist/agents/memory/extract.d.ts.map +1 -1
- package/dist/agents/memory/extract.js +44 -2
- package/dist/agents/memory/extract.js.map +1 -1
- package/dist/agents/payload-mutators.d.ts +21 -0
- package/dist/agents/payload-mutators.d.ts.map +1 -1
- package/dist/agents/payload-mutators.js +58 -0
- package/dist/agents/payload-mutators.js.map +1 -1
- package/dist/agents/tool-name-repair.d.ts +28 -0
- package/dist/agents/tool-name-repair.d.ts.map +1 -0
- package/dist/agents/tool-name-repair.js +168 -0
- package/dist/agents/tool-name-repair.js.map +1 -0
- package/dist/buildstamp.json +1 -1
- package/dist/cli/commands/connect.d.ts.map +1 -1
- package/dist/cli/commands/connect.js +35 -34
- package/dist/cli/commands/connect.js.map +1 -1
- package/dist/integrations/ollama.d.ts +14 -6
- package/dist/integrations/ollama.d.ts.map +1 -1
- package/dist/integrations/ollama.js +35 -14
- package/dist/integrations/ollama.js.map +1 -1
- package/dist/shared/reasoning-tags.d.ts +14 -0
- package/dist/shared/reasoning-tags.d.ts.map +1 -0
- package/dist/shared/reasoning-tags.js +71 -0
- package/dist/shared/reasoning-tags.js.map +1 -0
- package/dist/system-prompt/guidance.d.ts.map +1 -1
- package/dist/system-prompt/guidance.js +9 -2
- package/dist/system-prompt/guidance.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Reasoning-tag handling for models that emit chain-of-thought as literal text.
|
|
2
|
+
//
|
|
3
|
+
// Many local models (Ollama qwen3 / deepseek-r1 / qwq / "thinking" forks, and
|
|
4
|
+
// assorted fine-tunes) emit their reasoning INLINE as `<think>…</think>`,
|
|
5
|
+
// `<thinking>…</thinking>`, `<thought>…</thought>`, sometimes wrapped in a
|
|
6
|
+
// `<final>…</final>` around the real answer — as plain TEXT, not as a typed
|
|
7
|
+
// reasoning content block. Left in place this reasoning:
|
|
8
|
+
// • leaks the raw tags into the visible reply (bad UX), and
|
|
9
|
+
// • defeats JSON extraction (the chain-of-thought surrounds/pollutes the
|
|
10
|
+
// JSON the memory extractor asks for).
|
|
11
|
+
//
|
|
12
|
+
// This module is the single source of truth for stripping/splitting that
|
|
13
|
+
// reasoning. Two entry points:
|
|
14
|
+
// • stripReasoningTags(text) — drop reasoning, return only the answer text.
|
|
15
|
+
// • splitReasoning(text) — split into { visible, reasoning } so callers
|
|
16
|
+
// that want to SHOW the trace (e.g. the TUI's
|
|
17
|
+
// /show-thinking) can keep it.
|
|
18
|
+
// Fast pre-check: bail immediately when there's no reasoning tag at all so the
|
|
19
|
+
// common (no-tag) path allocates nothing.
|
|
20
|
+
const REASONING_QUICK_RE = /<\s*\/?\s*(?:think(?:ing)?|thought|final)\b/i;
|
|
21
|
+
// A complete paired reasoning block. Group 1 captures the tag word so the
|
|
22
|
+
// backreference (\1) forces the closing tag to match the opener
|
|
23
|
+
// (`<thinking>…</thinking>`, not `<thinking>…</think>`); group 2 is the inner
|
|
24
|
+
// reasoning. Case-insensitive; tolerant of attributes/whitespace.
|
|
25
|
+
const REASONING_BLOCK_RE = /<\s*(think(?:ing)?|thought)\b[^>]*>([\s\S]*?)<\/\s*\1\s*>/gi;
|
|
26
|
+
// A reasoning block that was OPENED but never closed — e.g. a stream cut off
|
|
27
|
+
// mid-thought. Everything from the open tag to end-of-text is reasoning.
|
|
28
|
+
const REASONING_OPEN_TO_END_RE = /<\s*(?:think(?:ing)?|thought)\b[^>]*>([\s\S]*)$/i;
|
|
29
|
+
// `<final>` / `</final>` wrapper tags — the INNER content is the real answer,
|
|
30
|
+
// so we only remove the tags, never the content.
|
|
31
|
+
const FINAL_TAG_RE = /<\s*\/?\s*final\b[^>]*>/gi;
|
|
32
|
+
// Any stray/leftover reasoning tag (unpaired open or close) after the passes
|
|
33
|
+
// above.
|
|
34
|
+
const REASONING_STRAY_TAG_RE = /<\s*\/?\s*(?:think(?:ing)?|thought)\b[^>]*>/gi;
|
|
35
|
+
/**
|
|
36
|
+
* Split `text` into the visible answer and the concatenated reasoning trace.
|
|
37
|
+
* `reasoning` is "" when there was none. Never throws.
|
|
38
|
+
*/
|
|
39
|
+
export function splitReasoning(text) {
|
|
40
|
+
if (!text || !REASONING_QUICK_RE.test(text))
|
|
41
|
+
return { visible: text, reasoning: "" };
|
|
42
|
+
const reasoning = [];
|
|
43
|
+
// 1. Complete paired blocks → collect inner, drop from visible.
|
|
44
|
+
let visible = text.replace(REASONING_BLOCK_RE, (_m, _word, inner) => {
|
|
45
|
+
const t = (inner ?? "").trim();
|
|
46
|
+
if (t)
|
|
47
|
+
reasoning.push(t);
|
|
48
|
+
return "";
|
|
49
|
+
});
|
|
50
|
+
// 2. An unclosed reasoning block (opened, never closed) → collect the tail.
|
|
51
|
+
const open = REASONING_OPEN_TO_END_RE.exec(visible);
|
|
52
|
+
if (open) {
|
|
53
|
+
const t = (open[1] ?? "").trim();
|
|
54
|
+
if (t)
|
|
55
|
+
reasoning.push(t);
|
|
56
|
+
visible = visible.slice(0, open.index);
|
|
57
|
+
}
|
|
58
|
+
// 3. Unwrap <final>…</final> (keep the answer, drop the tags).
|
|
59
|
+
visible = visible.replace(FINAL_TAG_RE, "");
|
|
60
|
+
// 4. Remove any stray leftover reasoning tags.
|
|
61
|
+
visible = visible.replace(REASONING_STRAY_TAG_RE, "");
|
|
62
|
+
return { visible, reasoning: reasoning.join("\n").trim() };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Return `text` with all reasoning removed — only the model's actual answer
|
|
66
|
+
* (or the JSON it was asked for) remains. Never throws.
|
|
67
|
+
*/
|
|
68
|
+
export function stripReasoningTags(text) {
|
|
69
|
+
return splitReasoning(text).visible;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=reasoning-tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning-tags.js","sourceRoot":"","sources":["../../src/shared/reasoning-tags.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,2EAA2E;AAC3E,4EAA4E;AAC5E,yDAAyD;AACzD,8DAA8D;AAC9D,2EAA2E;AAC3E,2CAA2C;AAC3C,EAAE;AACF,yEAAyE;AACzE,+BAA+B;AAC/B,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,+DAA+D;AAE/D,+EAA+E;AAC/E,0CAA0C;AAC1C,MAAM,kBAAkB,GAAG,8CAA8C,CAAC;AAE1E,0EAA0E;AAC1E,gEAAgE;AAChE,8EAA8E;AAC9E,kEAAkE;AAClE,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AAEzF,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,wBAAwB,GAAG,kDAAkD,CAAC;AAEpF,8EAA8E;AAC9E,iDAAiD;AACjD,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEjD,6EAA6E;AAC7E,SAAS;AACT,MAAM,sBAAsB,GAAG,+CAA+C,CAAC;AAE/E;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAErF,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,gEAAgE;IAChE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,KAAa,EAAE,KAAa,EAAE,EAAE;QACnF,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,MAAM,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,+DAA+D;IAC/D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAE5C,+CAA+C;IAC/C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IAEtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC9C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AACrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../../src/system-prompt/guidance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,kVAI0K,CAAC;AAEjN;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,aAAa,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CAYT;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,+bAM4E,CAAC;AAIjH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,u7EAU4I,CAAC;AAIhL;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,6pDAU0D,CAAC;AAIvF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,quDAY4G,CAAC;AAIzI;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,qyJA+CmK,CAAC;AAInM;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,+nDAQiU,CAAC;AAI7V;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,wnGAUsP,CAAC;AAIrR;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,kxNA6CoF,CAAC;AAIrH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,2BAA2B,+/BAS4E,CAAC;AAIrH;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../../src/system-prompt/guidance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,kVAI0K,CAAC;AAEjN;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,aAAa,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CAYT;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,+bAM4E,CAAC;AAIjH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,u7EAU4I,CAAC;AAIhL;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,6pDAU0D,CAAC;AAIvF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,quDAY4G,CAAC;AAIzI;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,qyJA+CmK,CAAC;AAInM;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,+nDAQiU,CAAC;AAI7V;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,wnGAUsP,CAAC;AAIrR;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,kxNA6CoF,CAAC;AAIrH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,2BAA2B,+/BAS4E,CAAC;AAIrH;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA2BlF"}
|
|
@@ -386,9 +386,16 @@ export function pickModelFamilyGuidance(modelId) {
|
|
|
386
386
|
// Anthropic family — already follows the patterns the system prompt teaches.
|
|
387
387
|
if (/(?:^|\/)claude(?:\d|[-_.:]|$)/.test(id))
|
|
388
388
|
return null;
|
|
389
|
-
// Unknown / niche —
|
|
390
|
-
|
|
389
|
+
// Unknown / niche — every OTHER model (local Ollama forks: ornith, llama,
|
|
390
|
+
// qwen, deepseek, mistral, phi, …) previously fell through to NO override and
|
|
391
|
+
// happily answered "I'm Claude" / "I'm Ornith, powered by OpenAI and
|
|
392
|
+
// Anthropic". Give them the generic identity anchor so the base model's
|
|
393
|
+
// training identity never leaks.
|
|
394
|
+
return GENERIC_IDENTITY_GUIDANCE;
|
|
391
395
|
}
|
|
396
|
+
const GENERIC_IDENTITY_GUIDANCE = `# Identity override
|
|
397
|
+
|
|
398
|
+
You are the assistant defined by the persona files above — you run inside Brigade. The underlying language model is only the engine; it is NOT your identity. When asked who or what you are, answer from the persona files. Never identify as the base model or its vendor — never say you are "Claude", "GPT", "ChatGPT", "Gemini", "Gemma", "Llama", "Qwen", "DeepSeek", "Ornith", "an OpenAI / Anthropic / Google model", "an open-source coding assistant", or "a large language model". If the persona files don't specify a name, call yourself Brigade.`;
|
|
392
399
|
const OPENAI_FAMILY_GUIDANCE = `# Identity override (OpenAI family)
|
|
393
400
|
|
|
394
401
|
Your baseline training tells you to identify as "ChatGPT", "GPT", "an AI assistant from OpenAI", "your coding assistant", "an AI coding assistant", or to identify with the project in your working directory. None of that applies here. When asked who you are, draw your identity from the persona files above — never say "I am ChatGPT" / "I'm GPT" / "I'm an AI coding assistant" / "I'm here to help you with this codebase".
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guidance.js","sourceRoot":"","sources":["../../src/system-prompt/guidance.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"guidance.js","sourceRoot":"","sources":["../../src/system-prompt/guidance.ts"],"names":[],"mappings":"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"}
|