@kontextmind/kxm 0.7.207 → 0.7.208
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/package.json +8 -8
- package/plugins/kxm/.claude-plugin/plugin.json +1 -1
- package/plugins/kxm/dist/cli.js +246 -5
- 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/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.208",
|
|
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.208",
|
|
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
|
}
|
|
@@ -35592,6 +35592,15 @@ var McpServer = class {
|
|
|
35592
35592
|
this._promptHandlersInitialized = false;
|
|
35593
35593
|
this.server = new Server(serverInfo, options);
|
|
35594
35594
|
this._maxToolInputElements = resolveMaxToolInputElements(options?.maxToolInputElements);
|
|
35595
|
+
if (options?.capabilities?.tools) {
|
|
35596
|
+
this.setToolRequestHandlers();
|
|
35597
|
+
}
|
|
35598
|
+
if (options?.capabilities?.resources) {
|
|
35599
|
+
this.setResourceRequestHandlers();
|
|
35600
|
+
}
|
|
35601
|
+
if (options?.capabilities?.prompts) {
|
|
35602
|
+
this.setPromptRequestHandlers();
|
|
35603
|
+
}
|
|
35595
35604
|
}
|
|
35596
35605
|
/**
|
|
35597
35606
|
* Access experimental features.
|
|
@@ -41883,6 +41892,9 @@ function detectCapabilitiesFromEnvironment(tmuxForwardsHyperlink) {
|
|
|
41883
41892
|
if (termProgram === "herdr") {
|
|
41884
41893
|
return { images: "kitty", trueColor: hasTrueColorHint, hyperlinks: true };
|
|
41885
41894
|
}
|
|
41895
|
+
if (termProgram === "rex") {
|
|
41896
|
+
return { images: "kitty", trueColor: true, hyperlinks: true };
|
|
41897
|
+
}
|
|
41886
41898
|
if (process.env.KITTY_WINDOW_ID || termProgram === "kitty") {
|
|
41887
41899
|
return { images: "kitty", trueColor: true, hyperlinks: true };
|
|
41888
41900
|
}
|
|
@@ -42249,6 +42261,26 @@ var TuiBase = class _TuiBase extends Container {
|
|
|
42249
42261
|
}
|
|
42250
42262
|
afterTerminalStop(_options) {
|
|
42251
42263
|
}
|
|
42264
|
+
/** Mode resets written before the terminal's own resets when the process exits without stop(). */
|
|
42265
|
+
getExitRestorePrefix() {
|
|
42266
|
+
return `${this.terminalColorSchemeNotificationsEnabled ? "\x1B[?2031l" : ""}\x1B[?25h`;
|
|
42267
|
+
}
|
|
42268
|
+
/** Mode resets written after the terminal's own resets when the process exits without stop(). */
|
|
42269
|
+
getExitRestoreSuffix() {
|
|
42270
|
+
return "";
|
|
42271
|
+
}
|
|
42272
|
+
/**
|
|
42273
|
+
* Last-resort restore for exit paths that skip stop(), e.g. a direct process.exit() (#11170).
|
|
42274
|
+
* Hard kills and native aborts run no JavaScript and cannot be covered.
|
|
42275
|
+
*/
|
|
42276
|
+
exitRestoreHandler = () => {
|
|
42277
|
+
if (this.stopped)
|
|
42278
|
+
return;
|
|
42279
|
+
try {
|
|
42280
|
+
this.terminal.restoreOnExit?.(this.getExitRestorePrefix(), this.getExitRestoreSuffix());
|
|
42281
|
+
} catch {
|
|
42282
|
+
}
|
|
42283
|
+
};
|
|
42252
42284
|
get fullRedraws() {
|
|
42253
42285
|
return this.fullRedrawCount;
|
|
42254
42286
|
}
|
|
@@ -42565,6 +42597,8 @@ var TuiBase = class _TuiBase extends Container {
|
|
|
42565
42597
|
}
|
|
42566
42598
|
start() {
|
|
42567
42599
|
this.stopped = false;
|
|
42600
|
+
process.off("exit", this.exitRestoreHandler);
|
|
42601
|
+
process.on("exit", this.exitRestoreHandler);
|
|
42568
42602
|
this.beforeTerminalStart();
|
|
42569
42603
|
this.terminal.start((data) => this.handleTerminalInput(data), () => this.requestRender());
|
|
42570
42604
|
this.afterTerminalStart();
|
|
@@ -42607,6 +42641,7 @@ var TuiBase = class _TuiBase extends Container {
|
|
|
42607
42641
|
}
|
|
42608
42642
|
stop(options = {}) {
|
|
42609
42643
|
this.stopped = true;
|
|
42644
|
+
process.off("exit", this.exitRestoreHandler);
|
|
42610
42645
|
this.cancelRenderTimer();
|
|
42611
42646
|
if (this.terminalColorSchemeNotificationsEnabled) {
|
|
42612
42647
|
this.terminal.write("\x1B[?2031l");
|
|
@@ -44096,6 +44131,183 @@ var Input = class {
|
|
|
44096
44131
|
}
|
|
44097
44132
|
};
|
|
44098
44133
|
|
|
44134
|
+
// node_modules/marked-cjk-friendly/dist/index.js
|
|
44135
|
+
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}";
|
|
44136
|
+
var cjkTest = new RegExp(`[${CJK}]`, "u");
|
|
44137
|
+
var punctuationCjk = new RegExp(`^((?![*_])[\\s\\p{P}\\p{S}${CJK}])`, "u");
|
|
44138
|
+
function buildRDelimAst(punct, punctSpace, notPunctSpace) {
|
|
44139
|
+
return new RegExp(`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)${punct}(\\*+)(?=[\\s]|$)|${notPunctSpace}(\\*+)(?!\\*)(?=${punctSpace}|$)|(?!\\*)${punctSpace}(\\*+)(?=${notPunctSpace})|[\\s](\\*+)(?!\\*)(?=${punct})|(?!\\*)${punct}(\\*+)(?!\\*)(?=${punct})|${notPunctSpace}(\\*+)(?=${notPunctSpace})`, "gu");
|
|
44140
|
+
}
|
|
44141
|
+
function buildRDelimUnd(punct, punctSpace, notPunctSpace) {
|
|
44142
|
+
return new RegExp(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)${punct}(_+)(?=[\\s]|$)|${notPunctSpace}(_+)(?!_)(?=${punctSpace}|$)|(?!_)${punctSpace}(_+)(?=${notPunctSpace})|[\\s](_+)(?!_)(?=${punct})|(?!_)${punct}(_+)(?!_)(?=${punct})`, "gu");
|
|
44143
|
+
}
|
|
44144
|
+
function buildRDelimDel(punct, punctSpace, notPunctSpace) {
|
|
44145
|
+
return new RegExp(`^[^~]+(?=[^~])|(?!~)${punct}(~~?)(?=[\\s]|$)|${notPunctSpace}(~~?)(?!~)(?=${punctSpace}|$)|(?!~)${punctSpace}(~~?)(?=${notPunctSpace})|[\\s](~~?)(?!~)(?=${punct})|(?!~)${punct}(~~?)(?!~)(?=${punct})|${notPunctSpace}(~~?)(?=${notPunctSpace})`, "gu");
|
|
44146
|
+
}
|
|
44147
|
+
var cjkPunct = `[\\p{P}\\p{S}${CJK}]`;
|
|
44148
|
+
var cjkPunctSpace = `[\\s\\p{P}\\p{S}${CJK}]`;
|
|
44149
|
+
var cjkNotPunctSpace = `[^\\s\\p{P}\\p{S}${CJK}]`;
|
|
44150
|
+
var cjkDelPunct = `(?![*_])[\\p{P}\\p{S}${CJK}]`;
|
|
44151
|
+
var cjkDelPunctSpace = `(?![*_])[\\s\\p{P}\\p{S}${CJK}]`;
|
|
44152
|
+
var cjkDelNotPunctSpace = `(?:[^\\s\\p{P}\\p{S}${CJK}]|[*_])`;
|
|
44153
|
+
var cjkPunctGfm = `(?!~)[\\p{P}\\p{S}${CJK}]`;
|
|
44154
|
+
var cjkPunctSpaceGfm = `(?!~)[\\s\\p{P}\\p{S}${CJK}]`;
|
|
44155
|
+
var cjkNotPunctSpaceGfm = `(?:[^\\s\\p{P}\\p{S}${CJK}]|~)`;
|
|
44156
|
+
var emStrongRDelimAstCjk = buildRDelimAst(cjkPunct, cjkPunctSpace, cjkNotPunctSpace);
|
|
44157
|
+
var emStrongRDelimAstCjkGfm = buildRDelimAst(cjkPunctGfm, cjkPunctSpaceGfm, cjkNotPunctSpaceGfm);
|
|
44158
|
+
var emStrongRDelimUndCjk = buildRDelimUnd(cjkPunct, cjkPunctSpace, cjkNotPunctSpace);
|
|
44159
|
+
var delRDelimCjk = buildRDelimDel(cjkDelPunct, cjkDelPunctSpace, cjkDelNotPunctSpace);
|
|
44160
|
+
function isPrevCharCjk(prevChar, maskedSrc, src) {
|
|
44161
|
+
let prevIsCjk = punctuationCjk.test(prevChar);
|
|
44162
|
+
if (!prevIsCjk && prevChar) {
|
|
44163
|
+
const prevIdx = maskedSrc.length - src.length;
|
|
44164
|
+
if (prevIdx >= 1) {
|
|
44165
|
+
let idx = prevIdx - 1;
|
|
44166
|
+
let code = maskedSrc.charCodeAt(idx);
|
|
44167
|
+
if (code >= 65024 && code <= 65038 && idx >= 1) {
|
|
44168
|
+
idx--;
|
|
44169
|
+
code = maskedSrc.charCodeAt(idx);
|
|
44170
|
+
}
|
|
44171
|
+
if ((code & 64512) === 56320 && idx >= 1) {
|
|
44172
|
+
const cp = maskedSrc.codePointAt(idx - 1);
|
|
44173
|
+
if (cp !== void 0 && cp > 65535) {
|
|
44174
|
+
if (cp >= 917760 && cp <= 917999) prevIsCjk = true;
|
|
44175
|
+
else prevIsCjk = cjkTest.test(String.fromCodePoint(cp));
|
|
44176
|
+
}
|
|
44177
|
+
} else prevIsCjk = cjkTest.test(String.fromCharCode(code));
|
|
44178
|
+
}
|
|
44179
|
+
}
|
|
44180
|
+
return prevIsCjk;
|
|
44181
|
+
}
|
|
44182
|
+
function isCjkAdjacentToDelimiter(rightMatch, clippedMaskedSrc) {
|
|
44183
|
+
if (!(rightMatch[1] || rightMatch[2] || rightMatch[3] || rightMatch[4])) return false;
|
|
44184
|
+
const charBefore = String.fromCodePoint(rightMatch[0].codePointAt(0));
|
|
44185
|
+
const afterPos = rightMatch.index + rightMatch[0].length;
|
|
44186
|
+
const charAfter = afterPos < clippedMaskedSrc.length ? String.fromCodePoint(clippedMaskedSrc.codePointAt(afterPos)) : "";
|
|
44187
|
+
return cjkTest.test(charBefore) || cjkTest.test(charAfter);
|
|
44188
|
+
}
|
|
44189
|
+
function usesModernEmStrongLayout(match) {
|
|
44190
|
+
return match.length >= 5;
|
|
44191
|
+
}
|
|
44192
|
+
function hasEmStrongLeadContent(match) {
|
|
44193
|
+
return Boolean(match[1] || match[2] || match[3] || match[4]);
|
|
44194
|
+
}
|
|
44195
|
+
function isEmStrongUnderscoreWordChar(match) {
|
|
44196
|
+
return usesModernEmStrongLayout(match) ? Boolean(match[4]) : Boolean(match[3]);
|
|
44197
|
+
}
|
|
44198
|
+
function getEmStrongOpeningPunctuation(match) {
|
|
44199
|
+
if (usesModernEmStrongLayout(match)) return match[1] || match[3] || "";
|
|
44200
|
+
return match[1] || match[2] || "";
|
|
44201
|
+
}
|
|
44202
|
+
function markedCjkFriendly() {
|
|
44203
|
+
return { tokenizer: {
|
|
44204
|
+
emStrong(src, maskedSrc, prevChar = "") {
|
|
44205
|
+
const { rules } = this;
|
|
44206
|
+
const match = rules.inline.emStrongLDelim.exec(src);
|
|
44207
|
+
if (!match) return false;
|
|
44208
|
+
const modernEmStrongLayout = usesModernEmStrongLayout(match);
|
|
44209
|
+
if (modernEmStrongLayout && !hasEmStrongLeadContent(match)) return;
|
|
44210
|
+
if (isEmStrongUnderscoreWordChar(match) && prevChar.match(rules.other.unicodeAlphaNumeric)) return false;
|
|
44211
|
+
const nextChar = getEmStrongOpeningPunctuation(match);
|
|
44212
|
+
const prevIsCjk = isPrevCharCjk(prevChar, maskedSrc, src);
|
|
44213
|
+
if (!nextChar || !prevChar || rules.inline.punctuation.exec(prevChar) || prevIsCjk || cjkTest.test(nextChar)) {
|
|
44214
|
+
const lLength = [...match[0]].length - 1;
|
|
44215
|
+
let rDelim;
|
|
44216
|
+
let rLength;
|
|
44217
|
+
let delimTotal = lLength;
|
|
44218
|
+
let midDelimTotal = 0;
|
|
44219
|
+
const prevCharIsSameDelimiter = modernEmStrongLayout && prevChar === match[0][0];
|
|
44220
|
+
const isGfm = rules.inline.emStrongRDelimAst.source.includes("(?!~)");
|
|
44221
|
+
let endReg;
|
|
44222
|
+
if (match[0][0] === "*") endReg = isGfm ? emStrongRDelimAstCjkGfm : emStrongRDelimAstCjk;
|
|
44223
|
+
else endReg = emStrongRDelimUndCjk;
|
|
44224
|
+
endReg.lastIndex = 0;
|
|
44225
|
+
const clippedMaskedSrc = maskedSrc.slice(-1 * src.length + lLength);
|
|
44226
|
+
let rMatch;
|
|
44227
|
+
while ((rMatch = endReg.exec(clippedMaskedSrc)) != null) {
|
|
44228
|
+
rDelim = rMatch[1] || rMatch[2] || rMatch[3] || rMatch[4] || rMatch[5] || rMatch[6];
|
|
44229
|
+
if (!rDelim) continue;
|
|
44230
|
+
rLength = [...rDelim].length;
|
|
44231
|
+
const isCjkAdjacent = isCjkAdjacentToDelimiter(rMatch, clippedMaskedSrc);
|
|
44232
|
+
const isLeftOnly = Boolean(rMatch[3] || rMatch[4]);
|
|
44233
|
+
const isBoth = Boolean(rMatch[5] || rMatch[6]);
|
|
44234
|
+
if (isLeftOnly && !isCjkAdjacent) {
|
|
44235
|
+
delimTotal += rLength;
|
|
44236
|
+
continue;
|
|
44237
|
+
}
|
|
44238
|
+
if (isBoth || isCjkAdjacent) {
|
|
44239
|
+
if (lLength % 3 && !((lLength + rLength) % 3)) {
|
|
44240
|
+
midDelimTotal += rLength;
|
|
44241
|
+
continue;
|
|
44242
|
+
}
|
|
44243
|
+
if (prevCharIsSameDelimiter && isBoth) break;
|
|
44244
|
+
}
|
|
44245
|
+
delimTotal -= rLength;
|
|
44246
|
+
if (delimTotal > 0) continue;
|
|
44247
|
+
rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
|
|
44248
|
+
const lastCharLength = rMatch[0].codePointAt(0) > 65535 ? 2 : 1;
|
|
44249
|
+
const raw = src.slice(0, lLength + rMatch.index + lastCharLength + rLength);
|
|
44250
|
+
if (Math.min(lLength, rLength) % 2) {
|
|
44251
|
+
const text2 = raw.slice(1, -1);
|
|
44252
|
+
return {
|
|
44253
|
+
type: "em",
|
|
44254
|
+
raw,
|
|
44255
|
+
text: text2,
|
|
44256
|
+
tokens: this.lexer.inlineTokens(text2)
|
|
44257
|
+
};
|
|
44258
|
+
}
|
|
44259
|
+
const text = raw.slice(2, -2);
|
|
44260
|
+
return {
|
|
44261
|
+
type: "strong",
|
|
44262
|
+
raw,
|
|
44263
|
+
text,
|
|
44264
|
+
tokens: this.lexer.inlineTokens(text)
|
|
44265
|
+
};
|
|
44266
|
+
}
|
|
44267
|
+
}
|
|
44268
|
+
},
|
|
44269
|
+
del(src, maskedSrc, prevChar = "") {
|
|
44270
|
+
const { rules } = this;
|
|
44271
|
+
const match = rules.inline.delLDelim.exec(src);
|
|
44272
|
+
if (!match) return false;
|
|
44273
|
+
const nextChar = match[1] || "";
|
|
44274
|
+
const prevIsCjk = isPrevCharCjk(prevChar, maskedSrc, src);
|
|
44275
|
+
if (!nextChar || !prevChar || rules.inline.punctuation.exec(prevChar) || prevIsCjk || cjkTest.test(nextChar)) {
|
|
44276
|
+
const lLength = [...match[0]].length - 1;
|
|
44277
|
+
let rDelim;
|
|
44278
|
+
let rLength;
|
|
44279
|
+
let delimTotal = lLength;
|
|
44280
|
+
delRDelimCjk.lastIndex = 0;
|
|
44281
|
+
const clippedMaskedSrc = maskedSrc.slice(-1 * src.length + lLength);
|
|
44282
|
+
let rMatch;
|
|
44283
|
+
while ((rMatch = delRDelimCjk.exec(clippedMaskedSrc)) != null) {
|
|
44284
|
+
rDelim = rMatch[1] || rMatch[2] || rMatch[3] || rMatch[4] || rMatch[5] || rMatch[6];
|
|
44285
|
+
if (!rDelim) continue;
|
|
44286
|
+
rLength = [...rDelim].length;
|
|
44287
|
+
if (rLength !== lLength) continue;
|
|
44288
|
+
const isCjkAdjacent = isCjkAdjacentToDelimiter(rMatch, clippedMaskedSrc);
|
|
44289
|
+
if ((rMatch[3] || rMatch[4]) && !isCjkAdjacent) {
|
|
44290
|
+
delimTotal += rLength;
|
|
44291
|
+
continue;
|
|
44292
|
+
}
|
|
44293
|
+
delimTotal -= rLength;
|
|
44294
|
+
if (delimTotal > 0) continue;
|
|
44295
|
+
rLength = Math.min(rLength, rLength + delimTotal);
|
|
44296
|
+
const lastCharLength = rMatch[0].codePointAt(0) > 65535 ? 2 : 1;
|
|
44297
|
+
const raw = src.slice(0, lLength + rMatch.index + lastCharLength + rLength);
|
|
44298
|
+
const text = raw.slice(lLength, -lLength);
|
|
44299
|
+
return {
|
|
44300
|
+
type: "del",
|
|
44301
|
+
raw,
|
|
44302
|
+
text,
|
|
44303
|
+
tokens: this.lexer.inlineTokens(text)
|
|
44304
|
+
};
|
|
44305
|
+
}
|
|
44306
|
+
}
|
|
44307
|
+
}
|
|
44308
|
+
} };
|
|
44309
|
+
}
|
|
44310
|
+
|
|
44099
44311
|
// node_modules/@earendil-works/pi-tui/dist/components/markdown.js
|
|
44100
44312
|
var STRICT_STRIKETHROUGH_REGEX = /^(~~)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/;
|
|
44101
44313
|
var StrictStrikethroughTokenizer = class extends y {
|
|
@@ -44166,21 +44378,32 @@ function tokenizeInlineLatex(source) {
|
|
|
44166
44378
|
const raw = source.slice(0, closingIndex + closing.length);
|
|
44167
44379
|
return { type: "latex", raw, text };
|
|
44168
44380
|
}
|
|
44381
|
+
var TABLE_DELIMITER_ROW_REGEX = /^ {0,3}\|?[ \t]*:?-+:?[ \t]*(?:\|[ \t]*:?-+:?[ \t]*)*\|?[ \t]*$/;
|
|
44382
|
+
function containsTableStart(source) {
|
|
44383
|
+
const lines = source.split("\n");
|
|
44384
|
+
for (let index = 0; index < lines.length - 1; index++) {
|
|
44385
|
+
const delimiterRow = lines[index + 1];
|
|
44386
|
+
if ((delimiterRow.includes("|") || lines[index].includes("|")) && TABLE_DELIMITER_ROW_REGEX.test(delimiterRow)) {
|
|
44387
|
+
return true;
|
|
44388
|
+
}
|
|
44389
|
+
}
|
|
44390
|
+
return false;
|
|
44391
|
+
}
|
|
44169
44392
|
function tokenizeBlockLatex(source) {
|
|
44170
44393
|
const dollarMatch = /^ {0,3}\$\$[ \t]*(?:\n)?([\s\S]*?)\$\$[ \t]*(?:\n|$)/.exec(source);
|
|
44171
|
-
if (dollarMatch?.[1]) {
|
|
44394
|
+
if (dollarMatch?.[1] && !containsTableStart(dollarMatch[1])) {
|
|
44172
44395
|
return { type: "latexBlock", raw: dollarMatch[0], text: dollarMatch[1].trim() };
|
|
44173
44396
|
}
|
|
44174
44397
|
const bracketMatch = /^ {0,3}\\\[[ \t]*(?:\n)?([\s\S]*?)\\\][ \t]*(?:\n|$)/.exec(source);
|
|
44175
|
-
if (bracketMatch?.[1]) {
|
|
44398
|
+
if (bracketMatch?.[1] && !containsTableStart(bracketMatch[1])) {
|
|
44176
44399
|
return { type: "latexBlock", raw: bracketMatch[0], text: bracketMatch[1].trim() };
|
|
44177
44400
|
}
|
|
44178
44401
|
const pendingBracket = /^ {0,3}\\\[[ \t]*(?:\n)?([\s\S]*)$/.exec(source);
|
|
44179
|
-
if (pendingBracket) {
|
|
44402
|
+
if (pendingBracket?.[1] && !containsTableStart(pendingBracket[1])) {
|
|
44180
44403
|
return { type: "latexBlock", raw: pendingBracket[0], text: pendingBracket[1], pending: true };
|
|
44181
44404
|
}
|
|
44182
44405
|
const pendingDollar = /^ {0,3}\$\$[ \t]*(?:\n)?([\s\S]*)$/.exec(source);
|
|
44183
|
-
if (pendingDollar?.[1] && looksLikePendingDollarMath(pendingDollar[1])) {
|
|
44406
|
+
if (pendingDollar?.[1] && looksLikePendingDollarMath(pendingDollar[1]) && !containsTableStart(pendingDollar[1])) {
|
|
44184
44407
|
return { type: "latexBlock", raw: pendingDollar[0], text: pendingDollar[1], pending: true };
|
|
44185
44408
|
}
|
|
44186
44409
|
return void 0;
|
|
@@ -44209,7 +44432,10 @@ var markdownParser = new Z();
|
|
|
44209
44432
|
markdownParser.setOptions({
|
|
44210
44433
|
tokenizer: new StrictStrikethroughTokenizer()
|
|
44211
44434
|
});
|
|
44212
|
-
markdownParser.use({
|
|
44435
|
+
markdownParser.use({
|
|
44436
|
+
tokenizer: { emStrong: markedCjkFriendly().tokenizer?.emStrong },
|
|
44437
|
+
extensions: [...LATEX_MARKDOWN_EXTENSIONS]
|
|
44438
|
+
});
|
|
44213
44439
|
|
|
44214
44440
|
// node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js
|
|
44215
44441
|
var ScrollView = class extends Container {
|
|
@@ -45369,6 +45595,15 @@ var TuiAltScreen = class extends TuiBase {
|
|
|
45369
45595
|
this.savedCapabilities = void 0;
|
|
45370
45596
|
}
|
|
45371
45597
|
}
|
|
45598
|
+
getExitRestorePrefix() {
|
|
45599
|
+
const prefix = super.getExitRestorePrefix();
|
|
45600
|
+
if (!this.altScreenActive)
|
|
45601
|
+
return prefix;
|
|
45602
|
+
return `${END_SYNCHRONIZED_OUTPUT}${this.mouseEnabled ? DISABLE_MOUSE : ""}${ENABLE_AUTOWRAP}${prefix}`;
|
|
45603
|
+
}
|
|
45604
|
+
getExitRestoreSuffix() {
|
|
45605
|
+
return `${super.getExitRestoreSuffix()}${this.altScreenActive ? `${EXIT_ALT_SCREEN}\x1B[?25h` : ""}`;
|
|
45606
|
+
}
|
|
45372
45607
|
deleteKittyImages() {
|
|
45373
45608
|
return this.imageProtocol === "kitty" ? deleteAllKittyImages() : "";
|
|
45374
45609
|
}
|
|
@@ -25462,7 +25462,7 @@ function sessionTokenFixHint(policy) {
|
|
|
25462
25462
|
}
|
|
25463
25463
|
|
|
25464
25464
|
// plugins/kxm/src/mcp-server.ts
|
|
25465
|
-
var VERSION = "0.7.
|
|
25465
|
+
var VERSION = "0.7.208";
|
|
25466
25466
|
var CONFIGURE_PLUGIN = "/plugin configure kxm@kxm";
|
|
25467
25467
|
var inbox = /* @__PURE__ */ new Map();
|
|
25468
25468
|
var notifiedInbox = /* @__PURE__ */ new Set();
|
package/plugins/kxm/package.json
CHANGED
|
@@ -11,7 +11,7 @@ import { deliverInboxNotification } from "./inbox.ts";
|
|
|
11
11
|
import type { HubEvent, MessageRecord } from "./protocol.ts";
|
|
12
12
|
import { sessionTokenFixHint } from "./session-token-hint.ts";
|
|
13
13
|
|
|
14
|
-
const VERSION = "0.7.
|
|
14
|
+
const VERSION = "0.7.208";
|
|
15
15
|
const CONFIGURE_PLUGIN = "/plugin configure kxm@kxm";
|
|
16
16
|
const inbox = new Map<string, MessageRecord>();
|
|
17
17
|
const notifiedInbox = new Set<string>();
|