@kontextmind/kxm 0.7.207 → 0.7.209
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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +24 -4
- package/docs/reference/workflow-catalog.md +107 -106
- package/package.json +8 -8
- package/plugins/kxm/.claude-plugin/plugin.json +1 -1
- package/plugins/kxm/dist/cli.js +261 -19
- package/plugins/kxm/dist/extension.js +240 -5
- package/plugins/kxm/dist/mcp-server.js +1 -1
- package/plugins/kxm/package.json +1 -1
- package/plugins/kxm/src/init-guide-setup.ts +15 -14
- package/plugins/kxm/src/mcp-server.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kontextmind/kxm",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.209",
|
|
4
4
|
"description": "KXM local-first multi-agent orchestration and operator dashboard",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "KontextMind",
|
|
@@ -77,9 +77,9 @@
|
|
|
77
77
|
]
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
|
-
"@anthropic-ai/claude-agent-sdk": "0.3.
|
|
81
|
-
"@earendil-works/pi-tui": "1.
|
|
82
|
-
"@modelcontextprotocol/sdk": "1.32.
|
|
80
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.310",
|
|
81
|
+
"@earendil-works/pi-tui": "1.4.0",
|
|
82
|
+
"@modelcontextprotocol/sdk": "1.32.2",
|
|
83
83
|
"yaml": "^2.9.0"
|
|
84
84
|
},
|
|
85
85
|
"peerDependencies": {
|
|
@@ -95,17 +95,17 @@
|
|
|
95
95
|
}
|
|
96
96
|
},
|
|
97
97
|
"devDependencies": {
|
|
98
|
-
"@earendil-works/pi-coding-agent": "1.
|
|
99
|
-
"@modelcontextprotocol/sdk": "1.32.
|
|
98
|
+
"@earendil-works/pi-coding-agent": "1.4.0",
|
|
99
|
+
"@modelcontextprotocol/sdk": "1.32.2",
|
|
100
100
|
"@playwright/test": "1.64.1",
|
|
101
101
|
"@types/node": "26.6.5",
|
|
102
102
|
"ajv": "8.20.0",
|
|
103
103
|
"commander": "15.0.0",
|
|
104
104
|
"esbuild": "0.28.2",
|
|
105
|
-
"markdownlint-cli2": "0.
|
|
105
|
+
"markdownlint-cli2": "0.24.0",
|
|
106
106
|
"nx": "24.0.1",
|
|
107
107
|
"tsx": "^4.23.13",
|
|
108
|
-
"typebox": "1.4.
|
|
108
|
+
"typebox": "1.4.3",
|
|
109
109
|
"typescript": "7.0.2"
|
|
110
110
|
},
|
|
111
111
|
"files": [
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "kxm",
|
|
4
4
|
"displayName": "KXM",
|
|
5
|
-
"version": "0.7.
|
|
5
|
+
"version": "0.7.209",
|
|
6
6
|
"description": "Headless multi-agent orchestration, durable workflows, and a live operator dashboard for Pi and Claude Code",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "KontextMind",
|
package/plugins/kxm/dist/cli.js
CHANGED
|
@@ -45311,6 +45311,9 @@ function detectCapabilitiesFromEnvironment(tmuxForwardsHyperlink) {
|
|
|
45311
45311
|
if (termProgram === "herdr") {
|
|
45312
45312
|
return { images: "kitty", trueColor: hasTrueColorHint, hyperlinks: true };
|
|
45313
45313
|
}
|
|
45314
|
+
if (termProgram === "rex") {
|
|
45315
|
+
return { images: "kitty", trueColor: true, hyperlinks: true };
|
|
45316
|
+
}
|
|
45314
45317
|
if (process.env.KITTY_WINDOW_ID || termProgram === "kitty") {
|
|
45315
45318
|
return { images: "kitty", trueColor: true, hyperlinks: true };
|
|
45316
45319
|
}
|
|
@@ -45677,6 +45680,26 @@ var TuiBase = class _TuiBase extends Container {
|
|
|
45677
45680
|
}
|
|
45678
45681
|
afterTerminalStop(_options) {
|
|
45679
45682
|
}
|
|
45683
|
+
/** Mode resets written before the terminal's own resets when the process exits without stop(). */
|
|
45684
|
+
getExitRestorePrefix() {
|
|
45685
|
+
return `${this.terminalColorSchemeNotificationsEnabled ? "\x1B[?2031l" : ""}\x1B[?25h`;
|
|
45686
|
+
}
|
|
45687
|
+
/** Mode resets written after the terminal's own resets when the process exits without stop(). */
|
|
45688
|
+
getExitRestoreSuffix() {
|
|
45689
|
+
return "";
|
|
45690
|
+
}
|
|
45691
|
+
/**
|
|
45692
|
+
* Last-resort restore for exit paths that skip stop(), e.g. a direct process.exit() (#11170).
|
|
45693
|
+
* Hard kills and native aborts run no JavaScript and cannot be covered.
|
|
45694
|
+
*/
|
|
45695
|
+
exitRestoreHandler = () => {
|
|
45696
|
+
if (this.stopped)
|
|
45697
|
+
return;
|
|
45698
|
+
try {
|
|
45699
|
+
this.terminal.restoreOnExit?.(this.getExitRestorePrefix(), this.getExitRestoreSuffix());
|
|
45700
|
+
} catch {
|
|
45701
|
+
}
|
|
45702
|
+
};
|
|
45680
45703
|
get fullRedraws() {
|
|
45681
45704
|
return this.fullRedrawCount;
|
|
45682
45705
|
}
|
|
@@ -45993,6 +46016,8 @@ var TuiBase = class _TuiBase extends Container {
|
|
|
45993
46016
|
}
|
|
45994
46017
|
start() {
|
|
45995
46018
|
this.stopped = false;
|
|
46019
|
+
process.off("exit", this.exitRestoreHandler);
|
|
46020
|
+
process.on("exit", this.exitRestoreHandler);
|
|
45996
46021
|
this.beforeTerminalStart();
|
|
45997
46022
|
this.terminal.start((data) => this.handleTerminalInput(data), () => this.requestRender());
|
|
45998
46023
|
this.afterTerminalStart();
|
|
@@ -46035,6 +46060,7 @@ var TuiBase = class _TuiBase extends Container {
|
|
|
46035
46060
|
}
|
|
46036
46061
|
stop(options = {}) {
|
|
46037
46062
|
this.stopped = true;
|
|
46063
|
+
process.off("exit", this.exitRestoreHandler);
|
|
46038
46064
|
this.cancelRenderTimer();
|
|
46039
46065
|
if (this.terminalColorSchemeNotificationsEnabled) {
|
|
46040
46066
|
this.terminal.write("\x1B[?2031l");
|
|
@@ -47524,6 +47550,183 @@ var Input = class {
|
|
|
47524
47550
|
}
|
|
47525
47551
|
};
|
|
47526
47552
|
|
|
47553
|
+
// node_modules/marked-cjk-friendly/dist/index.js
|
|
47554
|
+
var CJK = "\\u1100-\\u11ff\\u20a9\\u2329-\\u232a\\u2630-\\u2637\\u268a-\\u268f\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u2ff0-\\u303e\\u3041-\\u3096\\u3099-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u3190-\\u31e5\\u31ef-\\u321e\\u3220-\\u3247\\u3250-\\ua48c\\ua490-\\ua4c6\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufaff\\ufe10-\\ufe19\\ufe30-\\ufe52\\ufe54-\\ufe66\\ufe68-\\ufe6b\\uff01-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\\uffe0-\\uffe6\\uffe8-\\uffee\\u{16fe0}-\\u{16fe4}\\u{16ff0}-\\u{16ff6}\\u{17000}-\\u{18cda}\\u{18cff}-\\u{18d20}\\u{18d80}-\\u{18df2}\\u{18e00}-\\u{19191}\\u{191a0}-\\u{191d2}\\u{1aff0}-\\u{1aff3}\\u{1aff5}-\\u{1affb}\\u{1affd}-\\u{1affe}\\u{1b000}-\\u{1b128}\\u{1b132}\\u{1b150}-\\u{1b152}\\u{1b155}\\u{1b164}-\\u{1b168}\\u{1b170}-\\u{1b2fb}\\u{1d300}-\\u{1d356}\\u{1d360}-\\u{1d376}\\u{1f1ae}\\u{1f200}\\u{1f202}\\u{1f210}-\\u{1f219}\\u{1f21b}-\\u{1f22e}\\u{1f230}-\\u{1f231}\\u{1f237}\\u{1f23b}\\u{1f240}-\\u{1f248}\\u{1f260}-\\u{1f265}\\u{1f7da}\\u{20000}-\\u{3fffd}";
|
|
47555
|
+
var cjkTest = new RegExp(`[${CJK}]`, "u");
|
|
47556
|
+
var punctuationCjk = new RegExp(`^((?![*_])[\\s\\p{P}\\p{S}${CJK}])`, "u");
|
|
47557
|
+
function buildRDelimAst(punct, punctSpace, notPunctSpace) {
|
|
47558
|
+
return new RegExp(`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)${punct}(\\*+)(?=[\\s]|$)|${notPunctSpace}(\\*+)(?!\\*)(?=${punctSpace}|$)|(?!\\*)${punctSpace}(\\*+)(?=${notPunctSpace})|[\\s](\\*+)(?!\\*)(?=${punct})|(?!\\*)${punct}(\\*+)(?!\\*)(?=${punct})|${notPunctSpace}(\\*+)(?=${notPunctSpace})`, "gu");
|
|
47559
|
+
}
|
|
47560
|
+
function buildRDelimUnd(punct, punctSpace, notPunctSpace) {
|
|
47561
|
+
return new RegExp(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)${punct}(_+)(?=[\\s]|$)|${notPunctSpace}(_+)(?!_)(?=${punctSpace}|$)|(?!_)${punctSpace}(_+)(?=${notPunctSpace})|[\\s](_+)(?!_)(?=${punct})|(?!_)${punct}(_+)(?!_)(?=${punct})`, "gu");
|
|
47562
|
+
}
|
|
47563
|
+
function buildRDelimDel(punct, punctSpace, notPunctSpace) {
|
|
47564
|
+
return new RegExp(`^[^~]+(?=[^~])|(?!~)${punct}(~~?)(?=[\\s]|$)|${notPunctSpace}(~~?)(?!~)(?=${punctSpace}|$)|(?!~)${punctSpace}(~~?)(?=${notPunctSpace})|[\\s](~~?)(?!~)(?=${punct})|(?!~)${punct}(~~?)(?!~)(?=${punct})|${notPunctSpace}(~~?)(?=${notPunctSpace})`, "gu");
|
|
47565
|
+
}
|
|
47566
|
+
var cjkPunct = `[\\p{P}\\p{S}${CJK}]`;
|
|
47567
|
+
var cjkPunctSpace = `[\\s\\p{P}\\p{S}${CJK}]`;
|
|
47568
|
+
var cjkNotPunctSpace = `[^\\s\\p{P}\\p{S}${CJK}]`;
|
|
47569
|
+
var cjkDelPunct = `(?![*_])[\\p{P}\\p{S}${CJK}]`;
|
|
47570
|
+
var cjkDelPunctSpace = `(?![*_])[\\s\\p{P}\\p{S}${CJK}]`;
|
|
47571
|
+
var cjkDelNotPunctSpace = `(?:[^\\s\\p{P}\\p{S}${CJK}]|[*_])`;
|
|
47572
|
+
var cjkPunctGfm = `(?!~)[\\p{P}\\p{S}${CJK}]`;
|
|
47573
|
+
var cjkPunctSpaceGfm = `(?!~)[\\s\\p{P}\\p{S}${CJK}]`;
|
|
47574
|
+
var cjkNotPunctSpaceGfm = `(?:[^\\s\\p{P}\\p{S}${CJK}]|~)`;
|
|
47575
|
+
var emStrongRDelimAstCjk = buildRDelimAst(cjkPunct, cjkPunctSpace, cjkNotPunctSpace);
|
|
47576
|
+
var emStrongRDelimAstCjkGfm = buildRDelimAst(cjkPunctGfm, cjkPunctSpaceGfm, cjkNotPunctSpaceGfm);
|
|
47577
|
+
var emStrongRDelimUndCjk = buildRDelimUnd(cjkPunct, cjkPunctSpace, cjkNotPunctSpace);
|
|
47578
|
+
var delRDelimCjk = buildRDelimDel(cjkDelPunct, cjkDelPunctSpace, cjkDelNotPunctSpace);
|
|
47579
|
+
function isPrevCharCjk(prevChar, maskedSrc, src) {
|
|
47580
|
+
let prevIsCjk = punctuationCjk.test(prevChar);
|
|
47581
|
+
if (!prevIsCjk && prevChar) {
|
|
47582
|
+
const prevIdx = maskedSrc.length - src.length;
|
|
47583
|
+
if (prevIdx >= 1) {
|
|
47584
|
+
let idx = prevIdx - 1;
|
|
47585
|
+
let code = maskedSrc.charCodeAt(idx);
|
|
47586
|
+
if (code >= 65024 && code <= 65038 && idx >= 1) {
|
|
47587
|
+
idx--;
|
|
47588
|
+
code = maskedSrc.charCodeAt(idx);
|
|
47589
|
+
}
|
|
47590
|
+
if ((code & 64512) === 56320 && idx >= 1) {
|
|
47591
|
+
const cp = maskedSrc.codePointAt(idx - 1);
|
|
47592
|
+
if (cp !== void 0 && cp > 65535) {
|
|
47593
|
+
if (cp >= 917760 && cp <= 917999) prevIsCjk = true;
|
|
47594
|
+
else prevIsCjk = cjkTest.test(String.fromCodePoint(cp));
|
|
47595
|
+
}
|
|
47596
|
+
} else prevIsCjk = cjkTest.test(String.fromCharCode(code));
|
|
47597
|
+
}
|
|
47598
|
+
}
|
|
47599
|
+
return prevIsCjk;
|
|
47600
|
+
}
|
|
47601
|
+
function isCjkAdjacentToDelimiter(rightMatch, clippedMaskedSrc) {
|
|
47602
|
+
if (!(rightMatch[1] || rightMatch[2] || rightMatch[3] || rightMatch[4])) return false;
|
|
47603
|
+
const charBefore = String.fromCodePoint(rightMatch[0].codePointAt(0));
|
|
47604
|
+
const afterPos = rightMatch.index + rightMatch[0].length;
|
|
47605
|
+
const charAfter = afterPos < clippedMaskedSrc.length ? String.fromCodePoint(clippedMaskedSrc.codePointAt(afterPos)) : "";
|
|
47606
|
+
return cjkTest.test(charBefore) || cjkTest.test(charAfter);
|
|
47607
|
+
}
|
|
47608
|
+
function usesModernEmStrongLayout(match) {
|
|
47609
|
+
return match.length >= 5;
|
|
47610
|
+
}
|
|
47611
|
+
function hasEmStrongLeadContent(match) {
|
|
47612
|
+
return Boolean(match[1] || match[2] || match[3] || match[4]);
|
|
47613
|
+
}
|
|
47614
|
+
function isEmStrongUnderscoreWordChar(match) {
|
|
47615
|
+
return usesModernEmStrongLayout(match) ? Boolean(match[4]) : Boolean(match[3]);
|
|
47616
|
+
}
|
|
47617
|
+
function getEmStrongOpeningPunctuation(match) {
|
|
47618
|
+
if (usesModernEmStrongLayout(match)) return match[1] || match[3] || "";
|
|
47619
|
+
return match[1] || match[2] || "";
|
|
47620
|
+
}
|
|
47621
|
+
function markedCjkFriendly() {
|
|
47622
|
+
return { tokenizer: {
|
|
47623
|
+
emStrong(src, maskedSrc, prevChar = "") {
|
|
47624
|
+
const { rules } = this;
|
|
47625
|
+
const match = rules.inline.emStrongLDelim.exec(src);
|
|
47626
|
+
if (!match) return false;
|
|
47627
|
+
const modernEmStrongLayout = usesModernEmStrongLayout(match);
|
|
47628
|
+
if (modernEmStrongLayout && !hasEmStrongLeadContent(match)) return;
|
|
47629
|
+
if (isEmStrongUnderscoreWordChar(match) && prevChar.match(rules.other.unicodeAlphaNumeric)) return false;
|
|
47630
|
+
const nextChar = getEmStrongOpeningPunctuation(match);
|
|
47631
|
+
const prevIsCjk = isPrevCharCjk(prevChar, maskedSrc, src);
|
|
47632
|
+
if (!nextChar || !prevChar || rules.inline.punctuation.exec(prevChar) || prevIsCjk || cjkTest.test(nextChar)) {
|
|
47633
|
+
const lLength = [...match[0]].length - 1;
|
|
47634
|
+
let rDelim;
|
|
47635
|
+
let rLength;
|
|
47636
|
+
let delimTotal = lLength;
|
|
47637
|
+
let midDelimTotal = 0;
|
|
47638
|
+
const prevCharIsSameDelimiter = modernEmStrongLayout && prevChar === match[0][0];
|
|
47639
|
+
const isGfm = rules.inline.emStrongRDelimAst.source.includes("(?!~)");
|
|
47640
|
+
let endReg;
|
|
47641
|
+
if (match[0][0] === "*") endReg = isGfm ? emStrongRDelimAstCjkGfm : emStrongRDelimAstCjk;
|
|
47642
|
+
else endReg = emStrongRDelimUndCjk;
|
|
47643
|
+
endReg.lastIndex = 0;
|
|
47644
|
+
const clippedMaskedSrc = maskedSrc.slice(-1 * src.length + lLength);
|
|
47645
|
+
let rMatch;
|
|
47646
|
+
while ((rMatch = endReg.exec(clippedMaskedSrc)) != null) {
|
|
47647
|
+
rDelim = rMatch[1] || rMatch[2] || rMatch[3] || rMatch[4] || rMatch[5] || rMatch[6];
|
|
47648
|
+
if (!rDelim) continue;
|
|
47649
|
+
rLength = [...rDelim].length;
|
|
47650
|
+
const isCjkAdjacent = isCjkAdjacentToDelimiter(rMatch, clippedMaskedSrc);
|
|
47651
|
+
const isLeftOnly = Boolean(rMatch[3] || rMatch[4]);
|
|
47652
|
+
const isBoth = Boolean(rMatch[5] || rMatch[6]);
|
|
47653
|
+
if (isLeftOnly && !isCjkAdjacent) {
|
|
47654
|
+
delimTotal += rLength;
|
|
47655
|
+
continue;
|
|
47656
|
+
}
|
|
47657
|
+
if (isBoth || isCjkAdjacent) {
|
|
47658
|
+
if (lLength % 3 && !((lLength + rLength) % 3)) {
|
|
47659
|
+
midDelimTotal += rLength;
|
|
47660
|
+
continue;
|
|
47661
|
+
}
|
|
47662
|
+
if (prevCharIsSameDelimiter && isBoth) break;
|
|
47663
|
+
}
|
|
47664
|
+
delimTotal -= rLength;
|
|
47665
|
+
if (delimTotal > 0) continue;
|
|
47666
|
+
rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
|
|
47667
|
+
const lastCharLength = rMatch[0].codePointAt(0) > 65535 ? 2 : 1;
|
|
47668
|
+
const raw = src.slice(0, lLength + rMatch.index + lastCharLength + rLength);
|
|
47669
|
+
if (Math.min(lLength, rLength) % 2) {
|
|
47670
|
+
const text2 = raw.slice(1, -1);
|
|
47671
|
+
return {
|
|
47672
|
+
type: "em",
|
|
47673
|
+
raw,
|
|
47674
|
+
text: text2,
|
|
47675
|
+
tokens: this.lexer.inlineTokens(text2)
|
|
47676
|
+
};
|
|
47677
|
+
}
|
|
47678
|
+
const text = raw.slice(2, -2);
|
|
47679
|
+
return {
|
|
47680
|
+
type: "strong",
|
|
47681
|
+
raw,
|
|
47682
|
+
text,
|
|
47683
|
+
tokens: this.lexer.inlineTokens(text)
|
|
47684
|
+
};
|
|
47685
|
+
}
|
|
47686
|
+
}
|
|
47687
|
+
},
|
|
47688
|
+
del(src, maskedSrc, prevChar = "") {
|
|
47689
|
+
const { rules } = this;
|
|
47690
|
+
const match = rules.inline.delLDelim.exec(src);
|
|
47691
|
+
if (!match) return false;
|
|
47692
|
+
const nextChar = match[1] || "";
|
|
47693
|
+
const prevIsCjk = isPrevCharCjk(prevChar, maskedSrc, src);
|
|
47694
|
+
if (!nextChar || !prevChar || rules.inline.punctuation.exec(prevChar) || prevIsCjk || cjkTest.test(nextChar)) {
|
|
47695
|
+
const lLength = [...match[0]].length - 1;
|
|
47696
|
+
let rDelim;
|
|
47697
|
+
let rLength;
|
|
47698
|
+
let delimTotal = lLength;
|
|
47699
|
+
delRDelimCjk.lastIndex = 0;
|
|
47700
|
+
const clippedMaskedSrc = maskedSrc.slice(-1 * src.length + lLength);
|
|
47701
|
+
let rMatch;
|
|
47702
|
+
while ((rMatch = delRDelimCjk.exec(clippedMaskedSrc)) != null) {
|
|
47703
|
+
rDelim = rMatch[1] || rMatch[2] || rMatch[3] || rMatch[4] || rMatch[5] || rMatch[6];
|
|
47704
|
+
if (!rDelim) continue;
|
|
47705
|
+
rLength = [...rDelim].length;
|
|
47706
|
+
if (rLength !== lLength) continue;
|
|
47707
|
+
const isCjkAdjacent = isCjkAdjacentToDelimiter(rMatch, clippedMaskedSrc);
|
|
47708
|
+
if ((rMatch[3] || rMatch[4]) && !isCjkAdjacent) {
|
|
47709
|
+
delimTotal += rLength;
|
|
47710
|
+
continue;
|
|
47711
|
+
}
|
|
47712
|
+
delimTotal -= rLength;
|
|
47713
|
+
if (delimTotal > 0) continue;
|
|
47714
|
+
rLength = Math.min(rLength, rLength + delimTotal);
|
|
47715
|
+
const lastCharLength = rMatch[0].codePointAt(0) > 65535 ? 2 : 1;
|
|
47716
|
+
const raw = src.slice(0, lLength + rMatch.index + lastCharLength + rLength);
|
|
47717
|
+
const text = raw.slice(lLength, -lLength);
|
|
47718
|
+
return {
|
|
47719
|
+
type: "del",
|
|
47720
|
+
raw,
|
|
47721
|
+
text,
|
|
47722
|
+
tokens: this.lexer.inlineTokens(text)
|
|
47723
|
+
};
|
|
47724
|
+
}
|
|
47725
|
+
}
|
|
47726
|
+
}
|
|
47727
|
+
} };
|
|
47728
|
+
}
|
|
47729
|
+
|
|
47527
47730
|
// node_modules/@earendil-works/pi-tui/dist/components/markdown.js
|
|
47528
47731
|
var STRICT_STRIKETHROUGH_REGEX = /^(~~)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/;
|
|
47529
47732
|
var StrictStrikethroughTokenizer = class extends y {
|
|
@@ -47594,21 +47797,32 @@ function tokenizeInlineLatex(source) {
|
|
|
47594
47797
|
const raw = source.slice(0, closingIndex + closing.length);
|
|
47595
47798
|
return { type: "latex", raw, text };
|
|
47596
47799
|
}
|
|
47800
|
+
var TABLE_DELIMITER_ROW_REGEX = /^ {0,3}\|?[ \t]*:?-+:?[ \t]*(?:\|[ \t]*:?-+:?[ \t]*)*\|?[ \t]*$/;
|
|
47801
|
+
function containsTableStart(source) {
|
|
47802
|
+
const lines = source.split("\n");
|
|
47803
|
+
for (let index = 0; index < lines.length - 1; index++) {
|
|
47804
|
+
const delimiterRow = lines[index + 1];
|
|
47805
|
+
if ((delimiterRow.includes("|") || lines[index].includes("|")) && TABLE_DELIMITER_ROW_REGEX.test(delimiterRow)) {
|
|
47806
|
+
return true;
|
|
47807
|
+
}
|
|
47808
|
+
}
|
|
47809
|
+
return false;
|
|
47810
|
+
}
|
|
47597
47811
|
function tokenizeBlockLatex(source) {
|
|
47598
47812
|
const dollarMatch = /^ {0,3}\$\$[ \t]*(?:\n)?([\s\S]*?)\$\$[ \t]*(?:\n|$)/.exec(source);
|
|
47599
|
-
if (dollarMatch?.[1]) {
|
|
47813
|
+
if (dollarMatch?.[1] && !containsTableStart(dollarMatch[1])) {
|
|
47600
47814
|
return { type: "latexBlock", raw: dollarMatch[0], text: dollarMatch[1].trim() };
|
|
47601
47815
|
}
|
|
47602
47816
|
const bracketMatch = /^ {0,3}\\\[[ \t]*(?:\n)?([\s\S]*?)\\\][ \t]*(?:\n|$)/.exec(source);
|
|
47603
|
-
if (bracketMatch?.[1]) {
|
|
47817
|
+
if (bracketMatch?.[1] && !containsTableStart(bracketMatch[1])) {
|
|
47604
47818
|
return { type: "latexBlock", raw: bracketMatch[0], text: bracketMatch[1].trim() };
|
|
47605
47819
|
}
|
|
47606
47820
|
const pendingBracket = /^ {0,3}\\\[[ \t]*(?:\n)?([\s\S]*)$/.exec(source);
|
|
47607
|
-
if (pendingBracket) {
|
|
47821
|
+
if (pendingBracket?.[1] && !containsTableStart(pendingBracket[1])) {
|
|
47608
47822
|
return { type: "latexBlock", raw: pendingBracket[0], text: pendingBracket[1], pending: true };
|
|
47609
47823
|
}
|
|
47610
47824
|
const pendingDollar = /^ {0,3}\$\$[ \t]*(?:\n)?([\s\S]*)$/.exec(source);
|
|
47611
|
-
if (pendingDollar?.[1] && looksLikePendingDollarMath(pendingDollar[1])) {
|
|
47825
|
+
if (pendingDollar?.[1] && looksLikePendingDollarMath(pendingDollar[1]) && !containsTableStart(pendingDollar[1])) {
|
|
47612
47826
|
return { type: "latexBlock", raw: pendingDollar[0], text: pendingDollar[1], pending: true };
|
|
47613
47827
|
}
|
|
47614
47828
|
return void 0;
|
|
@@ -47637,7 +47851,10 @@ var markdownParser = new Z();
|
|
|
47637
47851
|
markdownParser.setOptions({
|
|
47638
47852
|
tokenizer: new StrictStrikethroughTokenizer()
|
|
47639
47853
|
});
|
|
47640
|
-
markdownParser.use({
|
|
47854
|
+
markdownParser.use({
|
|
47855
|
+
tokenizer: { emStrong: markedCjkFriendly().tokenizer?.emStrong },
|
|
47856
|
+
extensions: [...LATEX_MARKDOWN_EXTENSIONS]
|
|
47857
|
+
});
|
|
47641
47858
|
|
|
47642
47859
|
// node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js
|
|
47643
47860
|
var ScrollView = class extends Container {
|
|
@@ -48651,6 +48868,21 @@ var ProcessTerminal = class {
|
|
|
48651
48868
|
process.stdin.setRawMode(this.wasRaw);
|
|
48652
48869
|
}
|
|
48653
48870
|
}
|
|
48871
|
+
restoreOnExit(before, after) {
|
|
48872
|
+
let sequence = before;
|
|
48873
|
+
if (this.progressInterval)
|
|
48874
|
+
sequence += TERMINAL_PROGRESS_CLEAR_SEQUENCE;
|
|
48875
|
+
sequence += "\x1B[?2004l";
|
|
48876
|
+
if (this.keyboardProtocolPushed || this._kittyProtocolActive)
|
|
48877
|
+
sequence += "\x1B[<u";
|
|
48878
|
+
if (this._modifyOtherKeysActive)
|
|
48879
|
+
sequence += "\x1B[>4;0m";
|
|
48880
|
+
sequence += after;
|
|
48881
|
+
try {
|
|
48882
|
+
fs2.writeSync(process.stdout.fd, sequence);
|
|
48883
|
+
} catch {
|
|
48884
|
+
}
|
|
48885
|
+
}
|
|
48654
48886
|
write(data) {
|
|
48655
48887
|
process.stdout.write(data);
|
|
48656
48888
|
if (this.writeLogPath) {
|
|
@@ -49611,6 +49843,15 @@ var TuiAltScreen = class extends TuiBase {
|
|
|
49611
49843
|
this.savedCapabilities = void 0;
|
|
49612
49844
|
}
|
|
49613
49845
|
}
|
|
49846
|
+
getExitRestorePrefix() {
|
|
49847
|
+
const prefix = super.getExitRestorePrefix();
|
|
49848
|
+
if (!this.altScreenActive)
|
|
49849
|
+
return prefix;
|
|
49850
|
+
return `${END_SYNCHRONIZED_OUTPUT}${this.mouseEnabled ? DISABLE_MOUSE : ""}${ENABLE_AUTOWRAP}${prefix}`;
|
|
49851
|
+
}
|
|
49852
|
+
getExitRestoreSuffix() {
|
|
49853
|
+
return `${super.getExitRestoreSuffix()}${this.altScreenActive ? `${EXIT_ALT_SCREEN}\x1B[?25h` : ""}`;
|
|
49854
|
+
}
|
|
49614
49855
|
deleteKittyImages() {
|
|
49615
49856
|
return this.imageProtocol === "kitty" ? deleteAllKittyImages() : "";
|
|
49616
49857
|
}
|
|
@@ -56827,9 +57068,10 @@ import { dirname as dirname25, join as join58 } from "node:path";
|
|
|
56827
57068
|
var ADMITTED_GUIDE_BINDINGS = Object.freeze({
|
|
56828
57069
|
"anthropic/claude-fable-5.1": { harness: "claude", provider: "anthropic", model: "fable" },
|
|
56829
57070
|
"anthropic/fable": { harness: "claude", provider: "anthropic", model: "fable" },
|
|
57071
|
+
"openai/gpt-6.1-sol": { harness: "codex", provider: "openai", model: "gpt-6.1-sol" },
|
|
56830
57072
|
"openai/gpt-5.6-sol": { harness: "codex", provider: "openai", model: "gpt-5.6-sol" },
|
|
56831
|
-
"x-ai/grok-4.
|
|
56832
|
-
"xai/grok-4.
|
|
57073
|
+
"x-ai/grok-4.7": { harness: "grok", provider: "xai", model: "grok-4.7" },
|
|
57074
|
+
"xai/grok-4.7": { harness: "grok", provider: "xai", model: "grok-4.7" },
|
|
56833
57075
|
"qwen/qwen3.7-plus": { harness: "pi", provider: "openrouter", model: "qwen/qwen3.7-plus" }
|
|
56834
57076
|
});
|
|
56835
57077
|
var GUIDE_WORKFLOWS = [
|
|
@@ -56848,7 +57090,7 @@ var GUIDE_WORKFLOWS = [
|
|
|
56848
57090
|
{ vendor: "anthropic", model: "claude-fable-5.1" },
|
|
56849
57091
|
{ vendor: "deepseek", model: "deepseek-v4-pro-0813" },
|
|
56850
57092
|
{ vendor: "openai", model: "gpt-6-astra-pro" },
|
|
56851
|
-
{ vendor: "x-ai", model: "grok-4.
|
|
57093
|
+
{ vendor: "x-ai", model: "grok-4.7" },
|
|
56852
57094
|
{ vendor: "qwen", model: "qwen3.8-max-0902" }
|
|
56853
57095
|
]
|
|
56854
57096
|
},
|
|
@@ -56871,11 +57113,11 @@ var GUIDE_WORKFLOWS = [
|
|
|
56871
57113
|
role: "scaffold-build-specialist",
|
|
56872
57114
|
domain: "Provisions monorepo workspace topologies, linters, Docker multi-stage builds, and CI pipelines.",
|
|
56873
57115
|
candidates: [
|
|
56874
|
-
{ vendor: "x-ai", model: "grok-4.
|
|
57116
|
+
{ vendor: "x-ai", model: "grok-4.7" },
|
|
56875
57117
|
{ vendor: "mistralai", model: "devstral-2512" },
|
|
56876
57118
|
{ vendor: "qwen", model: "qwen3.7-plus" },
|
|
56877
57119
|
{ vendor: "openai", model: "gpt-5.3-codex" },
|
|
56878
|
-
{ vendor: "
|
|
57120
|
+
{ vendor: "qwen", model: "qwen3-coder" }
|
|
56879
57121
|
]
|
|
56880
57122
|
},
|
|
56881
57123
|
{
|
|
@@ -56884,11 +57126,11 @@ var GUIDE_WORKFLOWS = [
|
|
|
56884
57126
|
role: "backend-data-implementer",
|
|
56885
57127
|
domain: "Implements domain entities, SQL queries/migrations, ORM persistence, concurrency primitives, and transactional boundaries.",
|
|
56886
57128
|
candidates: [
|
|
56887
|
-
{ vendor: "x-ai", model: "grok-4.
|
|
57129
|
+
{ vendor: "x-ai", model: "grok-4.7" },
|
|
56888
57130
|
{ vendor: "qwen", model: "qwen3.7-plus" },
|
|
56889
57131
|
{ vendor: "deepseek", model: "deepseek-v4-pro-0813" },
|
|
56890
57132
|
{ vendor: "openai", model: "gpt-5.3-codex" },
|
|
56891
|
-
{ vendor: "
|
|
57133
|
+
{ vendor: "qwen", model: "qwen3-coder" }
|
|
56892
57134
|
]
|
|
56893
57135
|
},
|
|
56894
57136
|
{
|
|
@@ -56899,7 +57141,7 @@ var GUIDE_WORKFLOWS = [
|
|
|
56899
57141
|
candidates: [
|
|
56900
57142
|
{ vendor: "anthropic", model: "claude-sonnet-5" },
|
|
56901
57143
|
{ vendor: "google", model: "gemini-3.8-flash" },
|
|
56902
|
-
{ vendor: "x-ai", model: "grok-4.
|
|
57144
|
+
{ vendor: "x-ai", model: "grok-4.7" },
|
|
56903
57145
|
{ vendor: "bytedance-seed", model: "seed-2.0-code" },
|
|
56904
57146
|
{ vendor: "openai", model: "gpt-5.3-codex" }
|
|
56905
57147
|
]
|
|
@@ -56911,7 +57153,7 @@ var GUIDE_WORKFLOWS = [
|
|
|
56911
57153
|
domain: "Wires external APIs, authentication flows (OAuth2/OIDC), webhook validation, cloud SDKs, and async worker queues.",
|
|
56912
57154
|
candidates: [
|
|
56913
57155
|
{ vendor: "openai", model: "gpt-5.6-sol" },
|
|
56914
|
-
{ vendor: "x-ai", model: "grok-4.
|
|
57156
|
+
{ vendor: "x-ai", model: "grok-4.7" },
|
|
56915
57157
|
{ vendor: "qwen", model: "qwen3.7-plus" },
|
|
56916
57158
|
{ vendor: "deepseek", model: "deepseek-v4-pro-0813" },
|
|
56917
57159
|
{ vendor: "google", model: "gemini-3.8-flash" }
|
|
@@ -56944,7 +57186,7 @@ var GUIDE_WORKFLOWS = [
|
|
|
56944
57186
|
role: "code-transform-implementer",
|
|
56945
57187
|
domain: "Executes surgical multi-file edits, applying design patterns while preserving comments and formatting.",
|
|
56946
57188
|
candidates: [
|
|
56947
|
-
{ vendor: "x-ai", model: "grok-4.
|
|
57189
|
+
{ vendor: "x-ai", model: "grok-4.7" },
|
|
56948
57190
|
{ vendor: "relace", model: "relace-apply-3" },
|
|
56949
57191
|
{ vendor: "openai", model: "gpt-5.3-codex" },
|
|
56950
57192
|
{ vendor: "morph", model: "morph-v3-large" },
|
|
@@ -56957,8 +57199,8 @@ var GUIDE_WORKFLOWS = [
|
|
|
56957
57199
|
role: "semantic-equivalence-verifier",
|
|
56958
57200
|
domain: "Critic-with-gate: reviews public contract compliance and behavioral equivalence; deterministic checks remain the fixed witness gate and are never delegated to an LLM.",
|
|
56959
57201
|
candidates: [
|
|
57202
|
+
{ vendor: "openai", model: "gpt-6.1-sol" },
|
|
56960
57203
|
{ vendor: "openai", model: "gpt-5.6-sol" },
|
|
56961
|
-
{ vendor: "openai", model: "o3-mini-high" },
|
|
56962
57204
|
{ vendor: "deepseek", model: "deepseek-v4-pro-0813" },
|
|
56963
57205
|
{ vendor: "anthropic", model: "claude-opus-5" },
|
|
56964
57206
|
{ vendor: "mistralai", model: "devstral-2512" }
|
|
@@ -57016,7 +57258,7 @@ var GUIDE_WORKFLOWS = [
|
|
|
57016
57258
|
{ vendor: "openai", model: "gpt-6-astra-pro" },
|
|
57017
57259
|
{ vendor: "anthropic", model: "claude-fable-5.1" },
|
|
57018
57260
|
{ vendor: "qwen", model: "qwen3.8-2.4t-a95b" },
|
|
57019
|
-
{ vendor: "x-ai", model: "grok-4.
|
|
57261
|
+
{ vendor: "x-ai", model: "grok-4.7" }
|
|
57020
57262
|
]
|
|
57021
57263
|
},
|
|
57022
57264
|
{
|
|
@@ -57038,7 +57280,7 @@ var GUIDE_WORKFLOWS = [
|
|
|
57038
57280
|
role: "iac-cloud-topology-engineer",
|
|
57039
57281
|
domain: "Generates declarative Terraform/OpenTofu, Pulumi, Kubernetes CRDs, and VPC networking definitions.",
|
|
57040
57282
|
candidates: [
|
|
57041
|
-
{ vendor: "x-ai", model: "grok-4.
|
|
57283
|
+
{ vendor: "x-ai", model: "grok-4.7" },
|
|
57042
57284
|
{ vendor: "qwen", model: "qwen3.7-plus" },
|
|
57043
57285
|
{ vendor: "openai", model: "gpt-5.3-codex" },
|
|
57044
57286
|
{ vendor: "google", model: "gemini-3.8-flash" },
|
|
@@ -57098,7 +57340,7 @@ var GUIDE_WORKFLOWS = [
|
|
|
57098
57340
|
role: "documentation-writer",
|
|
57099
57341
|
domain: "Authors concise, accurate developer and operator documentation with clear terminology, correct command flags, and consistent formatting without marketing drift.",
|
|
57100
57342
|
candidates: [
|
|
57101
|
-
{ vendor: "x-ai", model: "grok-4.
|
|
57343
|
+
{ vendor: "x-ai", model: "grok-4.7" },
|
|
57102
57344
|
{ vendor: "qwen", model: "qwen3.7-plus" },
|
|
57103
57345
|
{ vendor: "anthropic", model: "claude-sonnet-5" },
|
|
57104
57346
|
{ vendor: "openai", model: "gpt-5.3-codex" },
|