@neobiotechlabs/neobiotech-dev-agent 0.1.19 → 0.1.21
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/.claude-plugin/plugin.json +1 -1
- package/data/cyber_sec.png +0 -0
- package/data/hazard_panel.png +0 -0
- package/data/risk_score.png +0 -0
- package/dist/index.js +553 -308
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -13423,7 +13423,7 @@ var init_adf = __esm({
|
|
|
13423
13423
|
});
|
|
13424
13424
|
|
|
13425
13425
|
// node_modules/marked/lib/marked.esm.js
|
|
13426
|
-
function
|
|
13426
|
+
function z() {
|
|
13427
13427
|
return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null };
|
|
13428
13428
|
}
|
|
13429
13429
|
function N(l3) {
|
|
@@ -13523,13 +13523,13 @@ function ot(l3, e2, t2) {
|
|
|
13523
13523
|
`);
|
|
13524
13524
|
}
|
|
13525
13525
|
function g(l3, e2) {
|
|
13526
|
-
return
|
|
13526
|
+
return M.parse(l3, e2);
|
|
13527
13527
|
}
|
|
13528
|
-
var T, _, Te, m2, Oe, we, ye, B, Pe, j, oe, ae, Se, F2, $e, U, Le, _e, H, K,
|
|
13528
|
+
var T, _, Te, m2, Oe, we, ye, B, Pe, j, oe, ae, Se, F2, $e, U, Le, _e, H, K, Me, le, ze, Ee, Ce, W, se, Ae, Ie, Be, qe, ue, De, C, Z2, X, ve, pe, He, Ze, Ge, ce, Ne, Qe, he, je, Fe, Ue, Ke, We, Xe, Je, Ve, Ye, et, v, tt, ke, de, nt, ie, J, rt, Q, st, q, A2, it, ge, w, x2, y, L, b, P, D, M, Kt, Wt, Xt, Jt, Vt, en, tn;
|
|
13529
13529
|
var init_marked_esm = __esm({
|
|
13530
13530
|
"node_modules/marked/lib/marked.esm.js"() {
|
|
13531
13531
|
"use strict";
|
|
13532
|
-
T =
|
|
13532
|
+
T = z();
|
|
13533
13533
|
_ = { exec: () => null };
|
|
13534
13534
|
Te = ((l3 = "") => {
|
|
13535
13535
|
try {
|
|
@@ -13546,30 +13546,30 @@ var init_marked_esm = __esm({
|
|
|
13546
13546
|
Pe = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/;
|
|
13547
13547
|
j = / {0,3}(?:[*+-]|\d{1,9}[.)])/;
|
|
13548
13548
|
oe = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/;
|
|
13549
|
-
ae = d(oe).replace(/bull/g, j).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex();
|
|
13550
|
-
Se = d(oe).replace(/bull/g, j).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex();
|
|
13551
|
-
F2 = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/;
|
|
13549
|
+
ae = d(oe).replace(/bull/g, j).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex();
|
|
13550
|
+
Se = d(oe).replace(/bull/g, j).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex();
|
|
13551
|
+
F2 = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/;
|
|
13552
13552
|
$e = /^[^\n]+/;
|
|
13553
13553
|
U = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/;
|
|
13554
13554
|
Le = d(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", U).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex();
|
|
13555
13555
|
_e = d(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g, j).getRegex();
|
|
13556
13556
|
H = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
|
|
13557
13557
|
K = /<!--(?:-?>|[\s\S]*?(?:-->|$))/;
|
|
13558
|
-
|
|
13559
|
-
le = (l3) => d(F2).replace("hr", B).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)
|
|
13560
|
-
|
|
13561
|
-
Ee = le(/ {0,3}(?:[*+-]|\d{1,9}[.)])[ \t]
|
|
13562
|
-
|
|
13563
|
-
W = { blockquote:
|
|
13564
|
-
se = d("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", B).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)
|
|
13565
|
-
Ae = { ...W, lheading: Se, table: se, paragraph: d(F2).replace("hr", B).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", se).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)
|
|
13566
|
-
|
|
13558
|
+
Me = d("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", K).replace("tag", H).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
|
|
13559
|
+
le = (l3) => d(F2).replace("hr", B).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~~~)[^\\n]*\\n").replace("list", l3).replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", H).getRegex();
|
|
13560
|
+
ze = le(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/);
|
|
13561
|
+
Ee = le(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/);
|
|
13562
|
+
Ce = d(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", Ee).getRegex();
|
|
13563
|
+
W = { blockquote: Ce, code: we, def: Le, fences: ye, heading: Pe, hr: B, html: Me, lheading: ae, list: _e, newline: Oe, paragraph: ze, table: _, text: $e };
|
|
13564
|
+
se = d("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", B).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~~~)[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", H).getRegex();
|
|
13565
|
+
Ae = { ...W, lheading: Se, table: se, paragraph: d(F2).replace("hr", B).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", se).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~~~)[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", H).getRegex() };
|
|
13566
|
+
Ie = { ...W, html: d(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", K).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: _, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: d(F2).replace("hr", B).replace("heading", ` *#{1,6} *[^
|
|
13567
13567
|
]`).replace("lheading", ae).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() };
|
|
13568
13568
|
Be = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/;
|
|
13569
13569
|
qe = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/;
|
|
13570
13570
|
ue = /^( {2,}|\\)\n(?!\s*$)/;
|
|
13571
13571
|
De = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/;
|
|
13572
|
-
|
|
13572
|
+
C = /[\p{P}\p{S}]/u;
|
|
13573
13573
|
Z2 = /[\s\p{P}\p{S}]/u;
|
|
13574
13574
|
X = /[^\s\p{P}\p{S}]/u;
|
|
13575
13575
|
ve = d(/^((?![*_])punctSpace)/, "u").replace(/punctSpace/g, Z2).getRegex();
|
|
@@ -13578,16 +13578,16 @@ var init_marked_esm = __esm({
|
|
|
13578
13578
|
Ze = /(?:[^\s\p{P}\p{S}]|~)/u;
|
|
13579
13579
|
Ge = d(/link|precode-code|html/, "g").replace("link", /\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-", Te ? "(?<!`)()" : "(^^|[^`])").replace("code", /(?<b>`+)[^`]+\k<b>(?!`)/).replace("html", /<(?! )[^<>]*?>/).getRegex();
|
|
13580
13580
|
ce = /^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/;
|
|
13581
|
-
Ne = d(ce, "u").replace(/punct/g,
|
|
13581
|
+
Ne = d(ce, "u").replace(/punct/g, C).getRegex();
|
|
13582
13582
|
Qe = d(ce, "u").replace(/punct/g, pe).getRegex();
|
|
13583
13583
|
he = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)";
|
|
13584
|
-
je = d(he, "gu").replace(/notPunctSpace/g, X).replace(/punctSpace/g, Z2).replace(/punct/g,
|
|
13584
|
+
je = d(he, "gu").replace(/notPunctSpace/g, X).replace(/punctSpace/g, Z2).replace(/punct/g, C).getRegex();
|
|
13585
13585
|
Fe = d(he, "gu").replace(/notPunctSpace/g, Ze).replace(/punctSpace/g, He).replace(/punct/g, pe).getRegex();
|
|
13586
|
-
Ue = d("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, X).replace(/punctSpace/g, Z2).replace(/punct/g,
|
|
13587
|
-
Ke = d(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g,
|
|
13586
|
+
Ue = d("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, X).replace(/punctSpace/g, Z2).replace(/punct/g, C).getRegex();
|
|
13587
|
+
Ke = d(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g, C).getRegex();
|
|
13588
13588
|
We = "^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)";
|
|
13589
|
-
Xe = d(We, "gu").replace(/notPunctSpace/g, X).replace(/punctSpace/g, Z2).replace(/punct/g,
|
|
13590
|
-
Je = d(/\\(punct)/, "gu").replace(/punct/g,
|
|
13589
|
+
Xe = d(We, "gu").replace(/notPunctSpace/g, X).replace(/punctSpace/g, Z2).replace(/punct/g, C).getRegex();
|
|
13590
|
+
Je = d(/\\(punct)/, "gu").replace(/punct/g, C).getRegex();
|
|
13591
13591
|
Ve = d(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();
|
|
13592
13592
|
Ye = d(K).replace("(?:-->|$)", "-->").getRegex();
|
|
13593
13593
|
et = d("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", Ye).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex();
|
|
@@ -13599,9 +13599,9 @@ var init_marked_esm = __esm({
|
|
|
13599
13599
|
ie = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;
|
|
13600
13600
|
J = { _backpedal: _, anyPunctuation: Je, autolink: Ve, blockSkip: Ge, br: ue, code: qe, del: _, delLDelim: _, delRDelim: _, emStrongLDelim: Ne, emStrongRDelimAst: je, emStrongRDelimUnd: Ue, escape: Be, link: tt, nolink: de, punctuation: ve, reflink: ke, reflinkSearch: nt, tag: et, text: De, url: _ };
|
|
13601
13601
|
rt = { ...J, link: d(/^!?\[(label)\]\((.*?)\)/).replace("label", v).getRegex(), reflink: d(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", v).getRegex() };
|
|
13602
|
-
Q = { ...J, emStrongRDelimAst: Fe, emStrongLDelim: Qe, delLDelim: Ke, delRDelim: Xe, url: d(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol", ie).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: d(/^([
|
|
13602
|
+
Q = { ...J, emStrongRDelimAst: Fe, emStrongLDelim: Qe, delLDelim: Ke, delRDelim: Xe, url: d(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol", ie).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: d(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol", ie).getRegex() };
|
|
13603
13603
|
st = { ...Q, br: d(ue).replace("{2,}", "*").getRegex(), text: d(Q.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex() };
|
|
13604
|
-
q = { normal: W, gfm: Ae, pedantic:
|
|
13604
|
+
q = { normal: W, gfm: Ae, pedantic: Ie };
|
|
13605
13605
|
A2 = { normal: J, gfm: Q, breaks: st, pedantic: rt };
|
|
13606
13606
|
it = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" };
|
|
13607
13607
|
ge = (l3) => it[l3];
|
|
@@ -13659,27 +13659,27 @@ var init_marked_esm = __esm({
|
|
|
13659
13659
|
else if (!o) u.push(n[a]);
|
|
13660
13660
|
else break;
|
|
13661
13661
|
n = n.slice(a);
|
|
13662
|
-
let
|
|
13663
|
-
`),
|
|
13662
|
+
let p = u.join(`
|
|
13663
|
+
`), c = p.replace(this.rules.other.blockquoteSetextReplace, `
|
|
13664
13664
|
$1`).replace(this.rules.other.blockquoteSetextReplace2, "");
|
|
13665
13665
|
s2 = s2 ? `${s2}
|
|
13666
|
-
${
|
|
13667
|
-
${
|
|
13668
|
-
let
|
|
13669
|
-
if (this.lexer.state.top = true, this.lexer.blockTokens(
|
|
13670
|
-
let
|
|
13671
|
-
if (
|
|
13672
|
-
if (
|
|
13673
|
-
let R =
|
|
13666
|
+
${p}` : p, r2 = r2 ? `${r2}
|
|
13667
|
+
${c}` : c;
|
|
13668
|
+
let h2 = this.lexer.state.top;
|
|
13669
|
+
if (this.lexer.state.top = true, this.lexer.blockTokens(c, i2, true), this.lexer.state.top = h2, n.length === 0) break;
|
|
13670
|
+
let k = i2.at(-1);
|
|
13671
|
+
if (k?.type === "code") break;
|
|
13672
|
+
if (k?.type === "blockquote") {
|
|
13673
|
+
let R = k, f3 = R.raw + `
|
|
13674
13674
|
` + n.join(`
|
|
13675
13675
|
`), S2 = this.blockquote(f3);
|
|
13676
13676
|
i2[i2.length - 1] = S2, s2 = s2.substring(0, s2.length - R.raw.length) + S2.raw, r2 = r2.substring(0, r2.length - R.text.length) + S2.text;
|
|
13677
13677
|
break;
|
|
13678
|
-
} else if (
|
|
13679
|
-
let R =
|
|
13678
|
+
} else if (k?.type === "list") {
|
|
13679
|
+
let R = k, f3 = R.raw + `
|
|
13680
13680
|
` + n.join(`
|
|
13681
13681
|
`), S2 = this.list(f3);
|
|
13682
|
-
i2[i2.length - 1] = S2, s2 = s2.substring(0, s2.length -
|
|
13682
|
+
i2[i2.length - 1] = S2, s2 = s2.substring(0, s2.length - k.raw.length) + S2.raw, r2 = r2.substring(0, r2.length - R.raw.length) + S2.raw, n = f3.substring(i2.at(-1).raw.length).split(`
|
|
13683
13683
|
`);
|
|
13684
13684
|
continue;
|
|
13685
13685
|
}
|
|
@@ -13694,31 +13694,31 @@ ${p}` : p;
|
|
|
13694
13694
|
n = s2 ? `\\d{1,9}\\${n.slice(-1)}` : `\\${n}`, this.options.pedantic && (n = s2 ? n : "[*+-]");
|
|
13695
13695
|
let i2 = this.rules.other.listItemRegex(n), o = false;
|
|
13696
13696
|
for (; e2; ) {
|
|
13697
|
-
let a = false,
|
|
13697
|
+
let a = false, p = "", c = "";
|
|
13698
13698
|
if (!(t2 = i2.exec(e2)) || this.rules.block.hr.test(e2)) break;
|
|
13699
|
-
|
|
13700
|
-
let
|
|
13701
|
-
`, 1)[0], t2[1].length),
|
|
13702
|
-
`, 1)[0], R = !
|
|
13703
|
-
if (this.options.pedantic ? (f3 = 2,
|
|
13704
|
-
`, e2 = e2.substring(
|
|
13699
|
+
p = t2[0], e2 = e2.substring(p.length);
|
|
13700
|
+
let h2 = me(t2[2].split(`
|
|
13701
|
+
`, 1)[0], t2[1].length), k = e2.split(`
|
|
13702
|
+
`, 1)[0], R = !h2.trim(), f3 = 0;
|
|
13703
|
+
if (this.options.pedantic ? (f3 = 2, c = h2.trimStart()) : R ? f3 = t2[1].length + 1 : (f3 = h2.search(this.rules.other.nonSpaceChar), f3 = f3 > 4 ? 1 : f3, c = h2.slice(f3), f3 += t2[1].length), R && this.rules.other.blankLine.test(k) && (p += k + `
|
|
13704
|
+
`, e2 = e2.substring(k.length + 1), a = true), !a) {
|
|
13705
13705
|
let S2 = this.rules.other.nextBulletRegex(f3), te = this.rules.other.hrRegex(f3), ne = this.rules.other.fencesBeginRegex(f3), re = this.rules.other.headingBeginRegex(f3), be = this.rules.other.htmlBeginRegex(f3), Re = this.rules.other.blockquoteBeginRegex(f3);
|
|
13706
13706
|
for (; e2; ) {
|
|
13707
13707
|
let G = e2.split(`
|
|
13708
|
-
`, 1)[0],
|
|
13709
|
-
if (
|
|
13710
|
-
if (
|
|
13711
|
-
` +
|
|
13708
|
+
`, 1)[0], I;
|
|
13709
|
+
if (k = G, this.options.pedantic ? (k = k.replace(this.rules.other.listReplaceNesting, " "), I = k) : I = k.replace(this.rules.other.tabCharGlobal, " "), ne.test(k) || re.test(k) || be.test(k) || Re.test(k) || S2.test(k) || te.test(k)) break;
|
|
13710
|
+
if (I.search(this.rules.other.nonSpaceChar) >= f3 || !k.trim()) c += `
|
|
13711
|
+
` + I.slice(f3);
|
|
13712
13712
|
else {
|
|
13713
|
-
if (R ||
|
|
13714
|
-
|
|
13715
|
-
` +
|
|
13713
|
+
if (R || h2.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || ne.test(h2) || re.test(h2) || te.test(h2)) break;
|
|
13714
|
+
c += `
|
|
13715
|
+
` + k;
|
|
13716
13716
|
}
|
|
13717
|
-
R = !
|
|
13718
|
-
`, e2 = e2.substring(G.length + 1),
|
|
13717
|
+
R = !k.trim(), p += G + `
|
|
13718
|
+
`, e2 = e2.substring(G.length + 1), h2 = I.slice(f3);
|
|
13719
13719
|
}
|
|
13720
13720
|
}
|
|
13721
|
-
r2.loose || (o ? r2.loose = true : this.rules.other.doubleBlankLine.test(
|
|
13721
|
+
r2.loose || (o ? r2.loose = true : this.rules.other.doubleBlankLine.test(p) && (o = true)), r2.items.push({ type: "list_item", raw: p, task: !!this.options.gfm && this.rules.other.listIsTask.test(c), loose: false, text: c, tokens: [] }), r2.raw += p;
|
|
13722
13722
|
}
|
|
13723
13723
|
let u = r2.items.at(-1);
|
|
13724
13724
|
if (u) u.raw = u.raw.trimEnd(), u.text = u.text.trimEnd();
|
|
@@ -13726,27 +13726,27 @@ ${p}` : p;
|
|
|
13726
13726
|
r2.raw = r2.raw.trimEnd();
|
|
13727
13727
|
for (let a of r2.items) {
|
|
13728
13728
|
this.lexer.state.top = false, a.tokens = this.lexer.blockTokens(a.text, []);
|
|
13729
|
-
let
|
|
13730
|
-
if (a.task && (
|
|
13731
|
-
a.text = a.text.replace(this.rules.other.listReplaceTask, ""),
|
|
13732
|
-
for (let
|
|
13733
|
-
this.lexer.inlineQueue[
|
|
13729
|
+
let p = a.tokens[0];
|
|
13730
|
+
if (a.task && (p?.type === "text" || p?.type === "paragraph")) {
|
|
13731
|
+
a.text = a.text.replace(this.rules.other.listReplaceTask, ""), p.raw = p.raw.replace(this.rules.other.listReplaceTask, ""), p.text = p.text.replace(this.rules.other.listReplaceTask, "");
|
|
13732
|
+
for (let h2 = this.lexer.inlineQueue.length - 1; h2 >= 0; h2--) if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[h2].src)) {
|
|
13733
|
+
this.lexer.inlineQueue[h2].src = this.lexer.inlineQueue[h2].src.replace(this.rules.other.listReplaceTask, "");
|
|
13734
13734
|
break;
|
|
13735
13735
|
}
|
|
13736
|
-
let
|
|
13737
|
-
if (
|
|
13738
|
-
let
|
|
13739
|
-
a.checked =
|
|
13736
|
+
let c = this.rules.other.listTaskCheckbox.exec(a.raw);
|
|
13737
|
+
if (c) {
|
|
13738
|
+
let h2 = { type: "checkbox", raw: c[0] + " ", checked: c[0] !== "[ ]" };
|
|
13739
|
+
a.checked = h2.checked, r2.loose ? a.tokens[0] && ["paragraph", "text"].includes(a.tokens[0].type) && "tokens" in a.tokens[0] && a.tokens[0].tokens ? (a.tokens[0].raw = h2.raw + a.tokens[0].raw, a.tokens[0].text = h2.raw + a.tokens[0].text, a.tokens[0].tokens.unshift(h2)) : a.tokens.unshift({ type: "paragraph", raw: h2.raw, text: h2.raw, tokens: [h2] }) : a.tokens.unshift(h2);
|
|
13740
13740
|
}
|
|
13741
13741
|
} else a.task && (a.task = false);
|
|
13742
13742
|
if (!r2.loose) {
|
|
13743
|
-
let
|
|
13744
|
-
r2.loose =
|
|
13743
|
+
let c = a.tokens.filter((k) => k.type === "space"), h2 = c.length > 0 && c.some((k) => this.rules.other.anyLine.test(k.raw));
|
|
13744
|
+
r2.loose = h2;
|
|
13745
13745
|
}
|
|
13746
13746
|
}
|
|
13747
13747
|
if (r2.loose) for (let a of r2.items) {
|
|
13748
13748
|
a.loose = true;
|
|
13749
|
-
for (let
|
|
13749
|
+
for (let p of a.tokens) p.type === "text" && (p.type = "paragraph");
|
|
13750
13750
|
}
|
|
13751
13751
|
return r2;
|
|
13752
13752
|
}
|
|
@@ -13846,25 +13846,25 @@ ${p}` : p;
|
|
|
13846
13846
|
let s2 = this.rules.inline.emStrongLDelim.exec(e2);
|
|
13847
13847
|
if (!s2 || !s2[1] && !s2[2] && !s2[3] && !s2[4] || s2[4] && n.match(this.rules.other.unicodeAlphaNumeric)) return;
|
|
13848
13848
|
if (!(s2[1] || s2[3] || "") || !n || this.rules.inline.punctuation.exec(n)) {
|
|
13849
|
-
let i2 = [...s2[0]].length - 1, o, u, a = i2,
|
|
13850
|
-
for (
|
|
13849
|
+
let i2 = [...s2[0]].length - 1, o, u, a = i2, p = 0, c = s2[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
|
|
13850
|
+
for (c.lastIndex = 0, t2 = t2.slice(-1 * e2.length + i2); (s2 = c.exec(t2)) !== null; ) {
|
|
13851
13851
|
if (o = s2[1] || s2[2] || s2[3] || s2[4] || s2[5] || s2[6], !o) continue;
|
|
13852
13852
|
if (u = [...o].length, s2[3] || s2[4]) {
|
|
13853
13853
|
a += u;
|
|
13854
13854
|
continue;
|
|
13855
13855
|
} else if ((s2[5] || s2[6]) && i2 % 3 && !((i2 + u) % 3)) {
|
|
13856
|
-
|
|
13856
|
+
p += u;
|
|
13857
13857
|
continue;
|
|
13858
13858
|
}
|
|
13859
13859
|
if (a -= u, a > 0) continue;
|
|
13860
|
-
u = Math.min(u, u + a +
|
|
13861
|
-
let
|
|
13860
|
+
u = Math.min(u, u + a + p);
|
|
13861
|
+
let h2 = [...s2[0]][0].length, k = e2.slice(0, i2 + s2.index + h2 + u);
|
|
13862
13862
|
if (Math.min(i2, u) % 2) {
|
|
13863
|
-
let f3 =
|
|
13864
|
-
return { type: "em", raw:
|
|
13863
|
+
let f3 = k.slice(1, -1);
|
|
13864
|
+
return { type: "em", raw: k, text: f3, tokens: this.lexer.inlineTokens(f3) };
|
|
13865
13865
|
}
|
|
13866
|
-
let R =
|
|
13867
|
-
return { type: "strong", raw:
|
|
13866
|
+
let R = k.slice(2, -2);
|
|
13867
|
+
return { type: "strong", raw: k, text: R, tokens: this.lexer.inlineTokens(R) };
|
|
13868
13868
|
}
|
|
13869
13869
|
}
|
|
13870
13870
|
}
|
|
@@ -13883,8 +13883,8 @@ ${p}` : p;
|
|
|
13883
13883
|
let s2 = this.rules.inline.delLDelim.exec(e2);
|
|
13884
13884
|
if (!s2) return;
|
|
13885
13885
|
if (!(s2[1] || "") || !n || this.rules.inline.punctuation.exec(n)) {
|
|
13886
|
-
let i2 = [...s2[0]].length - 1, o, u, a = i2,
|
|
13887
|
-
for (
|
|
13886
|
+
let i2 = [...s2[0]].length - 1, o, u, a = i2, p = this.rules.inline.delRDelim;
|
|
13887
|
+
for (p.lastIndex = 0, t2 = t2.slice(-1 * e2.length + i2); (s2 = p.exec(t2)) !== null; ) {
|
|
13888
13888
|
if (o = s2[1] || s2[2] || s2[3] || s2[4] || s2[5] || s2[6], !o || (u = [...o].length, u !== i2)) continue;
|
|
13889
13889
|
if (s2[3] || s2[4]) {
|
|
13890
13890
|
a += u;
|
|
@@ -13892,8 +13892,8 @@ ${p}` : p;
|
|
|
13892
13892
|
}
|
|
13893
13893
|
if (a -= u, a > 0) continue;
|
|
13894
13894
|
u = Math.min(u, u + a);
|
|
13895
|
-
let
|
|
13896
|
-
return { type: "del", raw:
|
|
13895
|
+
let c = [...s2[0]][0].length, h2 = e2.slice(0, i2 + s2.index + c + u), k = h2.slice(i2, -i2);
|
|
13896
|
+
return { type: "del", raw: h2, text: k, tokens: this.lexer.inlineTokens(k) };
|
|
13897
13897
|
}
|
|
13898
13898
|
}
|
|
13899
13899
|
}
|
|
@@ -14027,8 +14027,8 @@ ${p}` : p;
|
|
|
14027
14027
|
let i2 = e2;
|
|
14028
14028
|
if (this.options.extensions?.startBlock) {
|
|
14029
14029
|
let o = 1 / 0, u = e2.slice(1), a;
|
|
14030
|
-
this.options.extensions.startBlock.forEach((
|
|
14031
|
-
a =
|
|
14030
|
+
this.options.extensions.startBlock.forEach((p) => {
|
|
14031
|
+
a = p.call({ lexer: this }, u), typeof a == "number" && a >= 0 && (o = Math.min(o, a));
|
|
14032
14032
|
}), o < 1 / 0 && o >= 0 && (i2 = e2.substring(0, o + 1));
|
|
14033
14033
|
}
|
|
14034
14034
|
if (this.state.top && (r2 = this.tokenizer.paragraph(i2))) {
|
|
@@ -14060,78 +14060,78 @@ ${p}` : p;
|
|
|
14060
14060
|
}
|
|
14061
14061
|
inlineTokens(e2, t2 = []) {
|
|
14062
14062
|
this.tokenizer.lexer = this;
|
|
14063
|
-
let n = e2
|
|
14063
|
+
let n = e2;
|
|
14064
14064
|
if (this.tokens.links) {
|
|
14065
|
-
let
|
|
14066
|
-
|
|
14067
|
-
}
|
|
14068
|
-
|
|
14069
|
-
|
|
14070
|
-
|
|
14071
|
-
n = this.options.hooks?.emStrongMask?.call({ lexer: this }, n) ?? n;
|
|
14072
|
-
let
|
|
14065
|
+
let o = Object.keys(this.tokens.links);
|
|
14066
|
+
o.length > 0 && (n = n.replace(this.tokenizer.rules.inline.reflinkSearch, (u) => o.includes(u.slice(u.lastIndexOf("[") + 1, -1)) ? "[" + "a".repeat(u.length - 2) + "]" : u));
|
|
14067
|
+
}
|
|
14068
|
+
n = n.replace(this.tokenizer.rules.inline.anyPunctuation, "++"), n = n.replace(this.tokenizer.rules.inline.blockSkip, (o, u, a) => {
|
|
14069
|
+
let p = a ? a.length : 0;
|
|
14070
|
+
return o.slice(0, p) + "[" + "a".repeat(o.length - p - 2) + "]";
|
|
14071
|
+
}), n = this.options.hooks?.emStrongMask?.call({ lexer: this }, n) ?? n;
|
|
14072
|
+
let s2 = false, r2 = "", i2 = 1 / 0;
|
|
14073
14073
|
for (; e2; ) {
|
|
14074
|
-
if (e2.length <
|
|
14074
|
+
if (e2.length < i2) i2 = e2.length;
|
|
14075
14075
|
else {
|
|
14076
14076
|
this.infiniteLoopError(e2.charCodeAt(0));
|
|
14077
14077
|
break;
|
|
14078
14078
|
}
|
|
14079
|
-
|
|
14080
|
-
let
|
|
14081
|
-
if (this.options.extensions?.inline?.some((
|
|
14082
|
-
if (
|
|
14083
|
-
e2 = e2.substring(
|
|
14079
|
+
s2 || (r2 = ""), s2 = false;
|
|
14080
|
+
let o;
|
|
14081
|
+
if (this.options.extensions?.inline?.some((a) => (o = a.call({ lexer: this }, e2, t2)) ? (e2 = e2.substring(o.raw.length), t2.push(o), true) : false)) continue;
|
|
14082
|
+
if (o = this.tokenizer.escape(e2)) {
|
|
14083
|
+
e2 = e2.substring(o.raw.length), t2.push(o);
|
|
14084
14084
|
continue;
|
|
14085
14085
|
}
|
|
14086
|
-
if (
|
|
14087
|
-
e2 = e2.substring(
|
|
14086
|
+
if (o = this.tokenizer.tag(e2)) {
|
|
14087
|
+
e2 = e2.substring(o.raw.length), t2.push(o);
|
|
14088
14088
|
continue;
|
|
14089
14089
|
}
|
|
14090
|
-
if (
|
|
14091
|
-
e2 = e2.substring(
|
|
14090
|
+
if (o = this.tokenizer.link(e2)) {
|
|
14091
|
+
e2 = e2.substring(o.raw.length), t2.push(o);
|
|
14092
14092
|
continue;
|
|
14093
14093
|
}
|
|
14094
|
-
if (
|
|
14095
|
-
e2 = e2.substring(
|
|
14096
|
-
let
|
|
14097
|
-
|
|
14094
|
+
if (o = this.tokenizer.reflink(e2, this.tokens.links)) {
|
|
14095
|
+
e2 = e2.substring(o.raw.length);
|
|
14096
|
+
let a = t2.at(-1);
|
|
14097
|
+
o.type === "text" && a?.type === "text" ? (a.raw += o.raw, a.text += o.text) : t2.push(o);
|
|
14098
14098
|
continue;
|
|
14099
14099
|
}
|
|
14100
|
-
if (
|
|
14101
|
-
e2 = e2.substring(
|
|
14100
|
+
if (o = this.tokenizer.emStrong(e2, n, r2)) {
|
|
14101
|
+
e2 = e2.substring(o.raw.length), t2.push(o);
|
|
14102
14102
|
continue;
|
|
14103
14103
|
}
|
|
14104
|
-
if (
|
|
14105
|
-
e2 = e2.substring(
|
|
14104
|
+
if (o = this.tokenizer.codespan(e2)) {
|
|
14105
|
+
e2 = e2.substring(o.raw.length), t2.push(o);
|
|
14106
14106
|
continue;
|
|
14107
14107
|
}
|
|
14108
|
-
if (
|
|
14109
|
-
e2 = e2.substring(
|
|
14108
|
+
if (o = this.tokenizer.br(e2)) {
|
|
14109
|
+
e2 = e2.substring(o.raw.length), t2.push(o);
|
|
14110
14110
|
continue;
|
|
14111
14111
|
}
|
|
14112
|
-
if (
|
|
14113
|
-
e2 = e2.substring(
|
|
14112
|
+
if (o = this.tokenizer.del(e2, n, r2)) {
|
|
14113
|
+
e2 = e2.substring(o.raw.length), t2.push(o);
|
|
14114
14114
|
continue;
|
|
14115
14115
|
}
|
|
14116
|
-
if (
|
|
14117
|
-
e2 = e2.substring(
|
|
14116
|
+
if (o = this.tokenizer.autolink(e2)) {
|
|
14117
|
+
e2 = e2.substring(o.raw.length), t2.push(o);
|
|
14118
14118
|
continue;
|
|
14119
14119
|
}
|
|
14120
|
-
if (!this.state.inLink && (
|
|
14121
|
-
e2 = e2.substring(
|
|
14120
|
+
if (!this.state.inLink && (o = this.tokenizer.url(e2))) {
|
|
14121
|
+
e2 = e2.substring(o.raw.length), t2.push(o);
|
|
14122
14122
|
continue;
|
|
14123
14123
|
}
|
|
14124
|
-
let
|
|
14124
|
+
let u = e2;
|
|
14125
14125
|
if (this.options.extensions?.startInline) {
|
|
14126
|
-
let
|
|
14127
|
-
this.options.extensions.startInline.forEach((
|
|
14128
|
-
|
|
14129
|
-
}),
|
|
14130
|
-
}
|
|
14131
|
-
if (
|
|
14132
|
-
e2 = e2.substring(
|
|
14133
|
-
let
|
|
14134
|
-
|
|
14126
|
+
let a = 1 / 0, p = e2.slice(1), c;
|
|
14127
|
+
this.options.extensions.startInline.forEach((h2) => {
|
|
14128
|
+
c = h2.call({ lexer: this }, p), typeof c == "number" && c >= 0 && (a = Math.min(a, c));
|
|
14129
|
+
}), a < 1 / 0 && a >= 0 && (u = e2.substring(0, a + 1));
|
|
14130
|
+
}
|
|
14131
|
+
if (o = this.tokenizer.inlineText(u)) {
|
|
14132
|
+
e2 = e2.substring(o.raw.length), o.raw.slice(-1) !== "_" && (r2 = o.raw.slice(-1)), s2 = true;
|
|
14133
|
+
let a = t2.at(-1);
|
|
14134
|
+
a?.type === "text" ? (a.raw += o.raw, a.text += o.text) : t2.push(o);
|
|
14135
14135
|
continue;
|
|
14136
14136
|
}
|
|
14137
14137
|
if (e2) {
|
|
@@ -14477,7 +14477,7 @@ ${e2}</tr>
|
|
|
14477
14477
|
}
|
|
14478
14478
|
};
|
|
14479
14479
|
D = class {
|
|
14480
|
-
defaults =
|
|
14480
|
+
defaults = z();
|
|
14481
14481
|
options = this.setOptions;
|
|
14482
14482
|
parse = this.parseMarkdown(true);
|
|
14483
14483
|
parseInline = this.parseMarkdown(false);
|
|
@@ -14539,9 +14539,9 @@ ${e2}</tr>
|
|
|
14539
14539
|
if (!(i2 in r2)) throw new Error(`renderer '${i2}' does not exist`);
|
|
14540
14540
|
if (["options", "parser"].includes(i2)) continue;
|
|
14541
14541
|
let o = i2, u = n.renderer[o], a = r2[o];
|
|
14542
|
-
r2[o] = (...
|
|
14543
|
-
let
|
|
14544
|
-
return
|
|
14542
|
+
r2[o] = (...p) => {
|
|
14543
|
+
let c = u.apply(r2, p);
|
|
14544
|
+
return c === false && (c = a.apply(r2, p)), c || "";
|
|
14545
14545
|
};
|
|
14546
14546
|
}
|
|
14547
14547
|
s2.renderer = r2;
|
|
@@ -14552,9 +14552,9 @@ ${e2}</tr>
|
|
|
14552
14552
|
if (!(i2 in r2)) throw new Error(`tokenizer '${i2}' does not exist`);
|
|
14553
14553
|
if (["options", "rules", "lexer"].includes(i2)) continue;
|
|
14554
14554
|
let o = i2, u = n.tokenizer[o], a = r2[o];
|
|
14555
|
-
r2[o] = (...
|
|
14556
|
-
let
|
|
14557
|
-
return
|
|
14555
|
+
r2[o] = (...p) => {
|
|
14556
|
+
let c = u.apply(r2, p);
|
|
14557
|
+
return c === false && (c = a.apply(r2, p)), c;
|
|
14558
14558
|
};
|
|
14559
14559
|
}
|
|
14560
14560
|
s2.tokenizer = r2;
|
|
@@ -14565,20 +14565,20 @@ ${e2}</tr>
|
|
|
14565
14565
|
if (!(i2 in r2)) throw new Error(`hook '${i2}' does not exist`);
|
|
14566
14566
|
if (["options", "block"].includes(i2)) continue;
|
|
14567
14567
|
let o = i2, u = n.hooks[o], a = r2[o];
|
|
14568
|
-
P.passThroughHooks.has(i2) ? r2[o] = (
|
|
14568
|
+
P.passThroughHooks.has(i2) ? r2[o] = (p) => {
|
|
14569
14569
|
if (this.defaults.async && P.passThroughHooksRespectAsync.has(i2)) return (async () => {
|
|
14570
|
-
let
|
|
14571
|
-
return a.call(r2,
|
|
14570
|
+
let h2 = await u.call(r2, p);
|
|
14571
|
+
return a.call(r2, h2);
|
|
14572
14572
|
})();
|
|
14573
|
-
let
|
|
14574
|
-
return a.call(r2,
|
|
14575
|
-
} : r2[o] = (...
|
|
14573
|
+
let c = u.call(r2, p);
|
|
14574
|
+
return a.call(r2, c);
|
|
14575
|
+
} : r2[o] = (...p) => {
|
|
14576
14576
|
if (this.defaults.async) return (async () => {
|
|
14577
|
-
let
|
|
14578
|
-
return
|
|
14577
|
+
let h2 = await u.apply(r2, p);
|
|
14578
|
+
return h2 === false && (h2 = await a.apply(r2, p)), h2;
|
|
14579
14579
|
})();
|
|
14580
|
-
let
|
|
14581
|
-
return
|
|
14580
|
+
let c = u.apply(r2, p);
|
|
14581
|
+
return c === false && (c = a.apply(r2, p)), c;
|
|
14582
14582
|
};
|
|
14583
14583
|
}
|
|
14584
14584
|
s2.hooks = r2;
|
|
@@ -14609,17 +14609,17 @@ ${e2}</tr>
|
|
|
14609
14609
|
if (typeof n > "u" || n === null) return o(new Error("marked(): input parameter is undefined or null"));
|
|
14610
14610
|
if (typeof n != "string") return o(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(n) + ", string expected"));
|
|
14611
14611
|
if (i2.hooks && (i2.hooks.options = i2, i2.hooks.block = e2), i2.async) return (async () => {
|
|
14612
|
-
let u = i2.hooks ? await i2.hooks.preprocess(n) : n,
|
|
14613
|
-
i2.walkTokens && await Promise.all(this.walkTokens(
|
|
14614
|
-
let
|
|
14615
|
-
return i2.hooks ? await i2.hooks.postprocess(
|
|
14612
|
+
let u = i2.hooks ? await i2.hooks.preprocess(n) : n, p = await (i2.hooks ? await i2.hooks.provideLexer(e2) : e2 ? x2.lex : x2.lexInline)(u, i2), c = i2.hooks ? await i2.hooks.processAllTokens(p) : p;
|
|
14613
|
+
i2.walkTokens && await Promise.all(this.walkTokens(c, i2.walkTokens));
|
|
14614
|
+
let k = await (i2.hooks ? await i2.hooks.provideParser(e2) : e2 ? b.parse : b.parseInline)(c, i2);
|
|
14615
|
+
return i2.hooks ? await i2.hooks.postprocess(k) : k;
|
|
14616
14616
|
})().catch(o);
|
|
14617
14617
|
try {
|
|
14618
14618
|
i2.hooks && (n = i2.hooks.preprocess(n));
|
|
14619
14619
|
let a = (i2.hooks ? i2.hooks.provideLexer(e2) : e2 ? x2.lex : x2.lexInline)(n, i2);
|
|
14620
14620
|
i2.hooks && (a = i2.hooks.processAllTokens(a)), i2.walkTokens && this.walkTokens(a, i2.walkTokens);
|
|
14621
|
-
let
|
|
14622
|
-
return i2.hooks && (
|
|
14621
|
+
let c = (i2.hooks ? i2.hooks.provideParser(e2) : e2 ? b.parse : b.parseInline)(a, i2);
|
|
14622
|
+
return i2.hooks && (c = i2.hooks.postprocess(c)), c;
|
|
14623
14623
|
} catch (u) {
|
|
14624
14624
|
return o(u);
|
|
14625
14625
|
}
|
|
@@ -14637,19 +14637,19 @@ Please report this to https://github.com/markedjs/marked.`, e2) {
|
|
|
14637
14637
|
};
|
|
14638
14638
|
}
|
|
14639
14639
|
};
|
|
14640
|
-
|
|
14640
|
+
M = new D();
|
|
14641
14641
|
g.options = g.setOptions = function(l3) {
|
|
14642
|
-
return
|
|
14642
|
+
return M.setOptions(l3), g.defaults = M.defaults, N(g.defaults), g;
|
|
14643
14643
|
};
|
|
14644
|
-
g.getDefaults =
|
|
14644
|
+
g.getDefaults = z;
|
|
14645
14645
|
g.defaults = T;
|
|
14646
14646
|
g.use = function(...l3) {
|
|
14647
|
-
return
|
|
14647
|
+
return M.use(...l3), g.defaults = M.defaults, N(g.defaults), g;
|
|
14648
14648
|
};
|
|
14649
14649
|
g.walkTokens = function(l3, e2) {
|
|
14650
|
-
return
|
|
14650
|
+
return M.walkTokens(l3, e2);
|
|
14651
14651
|
};
|
|
14652
|
-
g.parseInline =
|
|
14652
|
+
g.parseInline = M.parseInline;
|
|
14653
14653
|
g.Parser = b;
|
|
14654
14654
|
g.parser = b.parse;
|
|
14655
14655
|
g.Renderer = y;
|
|
@@ -159642,6 +159642,7 @@ var RiskClient = class {
|
|
|
159642
159642
|
this.authHeader = `Basic ${Buffer.from(`${email2}:${token}`).toString("base64")}`;
|
|
159643
159643
|
this.riskAuthToken = riskAuthToken2;
|
|
159644
159644
|
}
|
|
159645
|
+
/** Jira issue property 활성화 (Jira 표준 REST + Basic auth) */
|
|
159645
159646
|
async activateRiskPanel(issueKey) {
|
|
159646
159647
|
const appId = "306e01a8-5530-427d-b93a-f91f4898ff16";
|
|
159647
159648
|
const configId = "2a1d023a-d4a5-42c7-91e2-51a05b9eb9be";
|
|
@@ -159660,30 +159661,65 @@ var RiskClient = class {
|
|
|
159660
159661
|
);
|
|
159661
159662
|
return resp.ok;
|
|
159662
159663
|
}
|
|
159663
|
-
|
|
159664
|
-
|
|
159665
|
-
|
|
159666
|
-
|
|
159667
|
-
|
|
159668
|
-
|
|
159664
|
+
/**
|
|
159665
|
+
* Legacy 0.1.20 호환 — classifier/option name을 받아 lookup 후 setRawPayload 호출.
|
|
159666
|
+
* 0.1.21+ 핸들러는 planSetRisk 결과를 setRiskValueRaw로 직접 보내므로 이 메서드는
|
|
159667
|
+
* 그레이스존 유지용. 그러나 RISK_DEFAULTS 정의를 사용하지 않으므로 항상 undefined.
|
|
159668
|
+
*/
|
|
159669
|
+
async setRiskValue(_issueKey, _riskConfig, _classifierName, _optionName) {
|
|
159670
|
+
return {
|
|
159671
|
+
ok: false,
|
|
159672
|
+
status: 0,
|
|
159673
|
+
error: "risk_set_values\uC740 0.1.21\uC5D0\uC11C setRiskValueRaw\uB85C \uC774\uC804\uB418\uC5C8\uC2B5\uB2C8\uB2E4. planSetRisk() \uC0AC\uC6A9 \uAD8C\uC7A5."
|
|
159674
|
+
};
|
|
159675
|
+
}
|
|
159676
|
+
/**
|
|
159677
|
+
* 신규 0.1.21 메서드 — payload가 완전 set된 상태로 RMP webtrigger 호출.
|
|
159678
|
+
* endpoint+token은 환경변수에서 받음 (회사 사이트마다 다름).
|
|
159679
|
+
*/
|
|
159680
|
+
async setRiskValueRaw(issueKey, payload) {
|
|
159681
|
+
if (!this.riskAuthToken) {
|
|
159682
|
+
return {
|
|
159683
|
+
ok: false,
|
|
159684
|
+
status: 0,
|
|
159685
|
+
error: "RISK_PLUGIN_AUTH_TOKEN not configured (x-trigger-authentication header would be empty)"
|
|
159686
|
+
};
|
|
159687
|
+
}
|
|
159688
|
+
const endpoint = process.env.RISK_PLUGIN_ENDPOINT;
|
|
159689
|
+
if (!endpoint) {
|
|
159690
|
+
return {
|
|
159691
|
+
ok: false,
|
|
159692
|
+
status: 0,
|
|
159693
|
+
error: "RISK_PLUGIN_ENDPOINT not configured. \uD68C\uC0AC DYN \uC0AC\uC774\uD2B8\uC758 RMP webtrigger URL\uC744 environment \uBCC0\uC218\uB85C \uC785\uB825\uD558\uC138\uC694."
|
|
159694
|
+
};
|
|
159695
|
+
}
|
|
159696
|
+
const fullPayload = {
|
|
159697
|
+
...payload,
|
|
159669
159698
|
issueKey,
|
|
159670
|
-
author:
|
|
159671
|
-
riskModelKey: riskConfig.riskModelKey,
|
|
159672
|
-
riskSetId: riskConfig.riskSetId,
|
|
159673
|
-
classifierValuePayload: {
|
|
159674
|
-
classifierId: classifier.id,
|
|
159675
|
-
optionId
|
|
159676
|
-
}
|
|
159699
|
+
author: payload.author ?? ""
|
|
159677
159700
|
};
|
|
159678
|
-
|
|
159679
|
-
|
|
159680
|
-
|
|
159681
|
-
|
|
159682
|
-
|
|
159683
|
-
|
|
159684
|
-
|
|
159685
|
-
|
|
159686
|
-
|
|
159701
|
+
try {
|
|
159702
|
+
const resp = await fetch(endpoint, {
|
|
159703
|
+
method: "POST",
|
|
159704
|
+
headers: {
|
|
159705
|
+
"x-trigger-authentication": this.riskAuthToken,
|
|
159706
|
+
"Content-Type": "application/json"
|
|
159707
|
+
},
|
|
159708
|
+
body: JSON.stringify(fullPayload)
|
|
159709
|
+
});
|
|
159710
|
+
const body = await resp.text();
|
|
159711
|
+
return {
|
|
159712
|
+
ok: resp.ok,
|
|
159713
|
+
status: resp.status,
|
|
159714
|
+
body: body ? body.slice(0, 500) : void 0
|
|
159715
|
+
};
|
|
159716
|
+
} catch (e2) {
|
|
159717
|
+
return {
|
|
159718
|
+
ok: false,
|
|
159719
|
+
status: 0,
|
|
159720
|
+
error: `fetch failed: ${e2?.message ?? String(e2)}`
|
|
159721
|
+
};
|
|
159722
|
+
}
|
|
159687
159723
|
}
|
|
159688
159724
|
};
|
|
159689
159725
|
|
|
@@ -160061,53 +160097,245 @@ var registerConfluenceTools = (ctx2) => {
|
|
|
160061
160097
|
});
|
|
160062
160098
|
};
|
|
160063
160099
|
|
|
160064
|
-
// src/config/
|
|
160065
|
-
var
|
|
160066
|
-
|
|
160067
|
-
|
|
160068
|
-
|
|
160069
|
-
|
|
160070
|
-
|
|
160071
|
-
|
|
160072
|
-
|
|
160073
|
-
|
|
160074
|
-
|
|
160075
|
-
|
|
160076
|
-
|
|
160077
|
-
|
|
160078
|
-
|
|
160079
|
-
|
|
160080
|
-
|
|
160081
|
-
|
|
160100
|
+
// src/config/risk-models.ts
|
|
160101
|
+
var RISK_MODELS = {
|
|
160102
|
+
p1_p2_iso14971: {
|
|
160103
|
+
label: "P1-P2 ISO14971 Hazard analysis",
|
|
160104
|
+
modelKey: "risk-model-9dc1c741-0858-4a96-65d6-5feaf052da71",
|
|
160105
|
+
riskSets: {
|
|
160106
|
+
initial: "2f43f135-d043-84bd-4222-46ba4a309738",
|
|
160107
|
+
current: "f957cae9-a34c-30d7-557b-f7f29a414ba5"
|
|
160108
|
+
},
|
|
160109
|
+
classifiers: {
|
|
160110
|
+
severity: {
|
|
160111
|
+
id: "120dbe93-8a5c-89d9-398c-6fdefc8fa072",
|
|
160112
|
+
options: {
|
|
160113
|
+
negligible: "0750b204-3be7-14b2-34c9-5100846e99db",
|
|
160114
|
+
minor: "70ccea9f-a585-d248-dbd0-e6eefcc683e8",
|
|
160115
|
+
serious: "a8b765c0-2e55-f6c4-25ff-1a4513c1cfd7",
|
|
160116
|
+
critical: "587d166e-890a-5123-e179-15bafbd617e1",
|
|
160117
|
+
catastrophic: "981fbfd5-604d-f9b9-6765-3405a165f401"
|
|
160118
|
+
}
|
|
160119
|
+
},
|
|
160120
|
+
p1: {
|
|
160121
|
+
id: "c2c0af5d-74de-e463-ad13-ba80da1b6afd",
|
|
160122
|
+
options: {
|
|
160123
|
+
improvable: "3ac4a3b1-55ef-de93-3452-61c572a905a3",
|
|
160124
|
+
remote: "2d173a68-c28f-d589-1300-bc127f962810",
|
|
160125
|
+
occasional: "039596ac-784e-f0ac-50cf-d4d2cc96b096",
|
|
160126
|
+
probable: "702cb81f-3bc6-d150-5cc3-daa04d3f0404",
|
|
160127
|
+
frequent: "09fb301a-4448-d8aa-afd2-76d371f501f3"
|
|
160128
|
+
}
|
|
160129
|
+
},
|
|
160130
|
+
p2: {
|
|
160131
|
+
id: "cdada7bb-cb4a-3b00-260b-5e5227e85a74",
|
|
160132
|
+
options: {
|
|
160133
|
+
improvable: "7e044b34-25c4-ffae-5237-48eebb190358",
|
|
160134
|
+
remote: "58257cb8-59e2-5ec7-dd1d-9e966fb13589",
|
|
160135
|
+
occasional: "6cf5ebce-3b07-69b1-b093-9e0ef9def95c",
|
|
160136
|
+
probable: "bbcbfdd1-0c02-6105-e8e4-f60ae6cacb5c",
|
|
160137
|
+
frequent: "e35de539-93d5-f854-c6ed-50067ad8599b"
|
|
160138
|
+
}
|
|
160082
160139
|
}
|
|
160140
|
+
}
|
|
160141
|
+
},
|
|
160142
|
+
rpn: {
|
|
160143
|
+
label: "Risk Score Calculator",
|
|
160144
|
+
modelKey: "risk-model-c3edfff2-bea1-eb85-1f53-1007c429357a",
|
|
160145
|
+
riskSets: {
|
|
160146
|
+
initial: "f0f50906-1516-0826-8e82-009813ce7ff7",
|
|
160147
|
+
current: "069094fa-c4b1-28a1-d330-464f78b4ecb5",
|
|
160148
|
+
final: "d972671a-06c1-cf5d-e73b-20779079b509"
|
|
160083
160149
|
},
|
|
160084
|
-
|
|
160085
|
-
|
|
160086
|
-
|
|
160087
|
-
|
|
160088
|
-
|
|
160089
|
-
|
|
160090
|
-
|
|
160091
|
-
|
|
160150
|
+
classifiers: {
|
|
160151
|
+
severity: {
|
|
160152
|
+
id: "fec8bdcd-0c55-4ab3-87e3-cfd7176aefd5",
|
|
160153
|
+
options: {
|
|
160154
|
+
negligible: "a87a6249-03e4-5419-d50e-0818d824e8cb",
|
|
160155
|
+
minor: "f0f50906-1516-0826-8e82-009813ce7ff7",
|
|
160156
|
+
serious: "15f87aeb-28ec-98ea-7310-4ad04b294127",
|
|
160157
|
+
critical: "bf9cf219-e342-12ef-4305-2963f930138d",
|
|
160158
|
+
catastrophic: "e04cdc89-ffae-6001-4c06-d14b9fea0eee"
|
|
160159
|
+
}
|
|
160160
|
+
},
|
|
160161
|
+
occurrence: {
|
|
160162
|
+
id: "dc6e3abf-8cfa-b48f-5693-0f51a2362c8f",
|
|
160163
|
+
options: {
|
|
160164
|
+
improvable: "421dfccd-e545-2ec1-6d76-74913955cb63",
|
|
160165
|
+
remote: "8933daea-a933-3ea0-59c1-eb8b7aa0120e",
|
|
160166
|
+
occasional: "96861e6d-1b59-6616-7dda-0e6f413f4f65",
|
|
160167
|
+
probable: "40cd4688-3f91-3781-40c1-5ce65f7cb272",
|
|
160168
|
+
frequent: "7d1c1103-238d-a104-28d7-ba312dd4e394"
|
|
160169
|
+
}
|
|
160170
|
+
},
|
|
160171
|
+
detectability: {
|
|
160172
|
+
id: "2c266e79-f190-1234-95d1-201f72c98acc",
|
|
160173
|
+
options: {
|
|
160174
|
+
improvable: "f57c4581-c957-a270-65e6-1d6930b93a7f",
|
|
160175
|
+
remote: "f7fdea4b-5378-8c45-854d-bcd8ba3bee12",
|
|
160176
|
+
occasional: "45fb0720-f204-acf9-33dd-c92ba27910fa",
|
|
160177
|
+
probable: "c1a7a596-6fc4-db5d-1da3-f2b13d64da8c",
|
|
160178
|
+
frequent: "67ea818d-8ed7-a1af-57ff-6ba68a24c4b4"
|
|
160179
|
+
}
|
|
160092
160180
|
}
|
|
160181
|
+
}
|
|
160182
|
+
},
|
|
160183
|
+
cia: {
|
|
160184
|
+
label: "Cyber Sec Risk Model",
|
|
160185
|
+
modelKey: "risk-model-ciaRiskModel",
|
|
160186
|
+
riskSets: {
|
|
160187
|
+
initial: "68f0e9de-26c6-7ad8-5a72-a688ad770b24",
|
|
160188
|
+
current: "b43d25e0-0ab5-3605-cd2d-3f54f904d26c"
|
|
160189
|
+
},
|
|
160190
|
+
ciaWrapper: {
|
|
160191
|
+
id: "54d9d60c-7c53-2454-a48d-3c464bad23a9",
|
|
160192
|
+
riskModelKey: "risk-model-overallCIAImpact"
|
|
160093
160193
|
},
|
|
160094
|
-
|
|
160095
|
-
|
|
160096
|
-
|
|
160097
|
-
|
|
160098
|
-
|
|
160099
|
-
|
|
160100
|
-
|
|
160101
|
-
|
|
160194
|
+
classifiers: {
|
|
160195
|
+
confidentiality: {
|
|
160196
|
+
id: "193ceea6-d531-808b-bb83-d16eb233d73f",
|
|
160197
|
+
options: {
|
|
160198
|
+
negligible: "9dc59ace-7484-108c-77fc-383c85a54052",
|
|
160199
|
+
low: "c1802cd2-a655-3ed9-8138-376297ab39ab",
|
|
160200
|
+
moderate: "d96e2893-515d-29da-d168-c134fb055fa1",
|
|
160201
|
+
high: "dc7f3d58-a8cd-7729-5e0a-37cedfe7996f",
|
|
160202
|
+
severe: "39fe9a59-c8b9-d0b5-a273-fbfcc6efdb6c"
|
|
160203
|
+
}
|
|
160204
|
+
},
|
|
160205
|
+
availability: {
|
|
160206
|
+
id: "1121ee15-e019-dbd7-64f2-47e7af76e789",
|
|
160207
|
+
options: {
|
|
160208
|
+
negligible: "863fd4fd-d939-4e73-fdc9-b27489fcbbb4",
|
|
160209
|
+
low: "cbb40d71-238c-97d7-02cd-4b905929eedb",
|
|
160210
|
+
moderate: "4fbc0ef0-1378-3b2c-7401-75ce94d9443b",
|
|
160211
|
+
high: "33a53544-c011-c30d-dc66-d5f9e0d0bb88",
|
|
160212
|
+
severe: "d9f4a792-0822-c0b0-b463-4c2887ce4d01"
|
|
160213
|
+
}
|
|
160214
|
+
},
|
|
160215
|
+
integrity: {
|
|
160216
|
+
id: "639c61e6-9d11-9bb3-04e7-c1c3512c7e33",
|
|
160217
|
+
options: {
|
|
160218
|
+
negligible: "f35284c1-52a2-edce-e60b-69b97703b891",
|
|
160219
|
+
low: "af67cc1b-9e25-76ce-baf3-d2e8247af569",
|
|
160220
|
+
moderate: "a35a0d14-e8d4-b3c8-35fc-a1f81d2730c7",
|
|
160221
|
+
high: "e535be53-21a8-0f8d-3c78-db4c3d7ebde1",
|
|
160222
|
+
severe: "7a45c4d7-d926-5d01-0034-c9ef929117b3"
|
|
160223
|
+
}
|
|
160224
|
+
},
|
|
160225
|
+
likelihood: {
|
|
160226
|
+
id: "ff7ed5a9-53fe-7e29-f564-b8f3b96bdd5b",
|
|
160227
|
+
options: {
|
|
160228
|
+
rare: "5b3f2233-4603-f34a-9e06-1473e4e1da02",
|
|
160229
|
+
unlikely: "7af594cb-4a87-73c1-2d0a-924124c5f247",
|
|
160230
|
+
possibly: "ed8a2a21-ec63-5e9b-d1d3-60d39ad4ec91",
|
|
160231
|
+
likely: "afe83dfb-fc00-7d3c-9b65-ed0ba6607b96",
|
|
160232
|
+
almost_certain: "86def84c-70c4-15c2-7b7b-f084a9aaf19f"
|
|
160233
|
+
}
|
|
160102
160234
|
}
|
|
160103
160235
|
}
|
|
160104
160236
|
}
|
|
160105
160237
|
};
|
|
160106
|
-
|
|
160107
|
-
|
|
160238
|
+
|
|
160239
|
+
// src/config/project-config.ts
|
|
160240
|
+
function planSetRisk(model, riskSet, classifierOptions, issueKey) {
|
|
160241
|
+
const m3 = RISK_MODELS[model];
|
|
160242
|
+
if (!m3) return { items: [], skipped: [{ classifier: "*", optionName: model }] };
|
|
160243
|
+
const setId = m3.riskSets[riskSet];
|
|
160244
|
+
if (!setId) return { items: [], skipped: [{ classifier: "*", optionName: `riskSet.${riskSet}` }] };
|
|
160245
|
+
const author = process.env.JIRA_EMAIL;
|
|
160246
|
+
if (!author) return { items: [], skipped: [{ classifier: "*", optionName: "JIRA_EMAIL missing" }] };
|
|
160247
|
+
const items = [];
|
|
160248
|
+
const skipped = [];
|
|
160249
|
+
for (const [classifierName, optionName] of Object.entries(classifierOptions)) {
|
|
160250
|
+
if (!optionName) continue;
|
|
160251
|
+
const cls = m3.classifiers[classifierName];
|
|
160252
|
+
if (!cls) {
|
|
160253
|
+
skipped.push({ classifier: classifierName, optionName });
|
|
160254
|
+
continue;
|
|
160255
|
+
}
|
|
160256
|
+
const optionId = cls.options[optionName];
|
|
160257
|
+
if (!optionId) {
|
|
160258
|
+
skipped.push({ classifier: classifierName, optionName });
|
|
160259
|
+
continue;
|
|
160260
|
+
}
|
|
160261
|
+
items.push({
|
|
160262
|
+
model,
|
|
160263
|
+
riskSet,
|
|
160264
|
+
classifierName,
|
|
160265
|
+
optionName,
|
|
160266
|
+
payload: {
|
|
160267
|
+
issueKey,
|
|
160268
|
+
author,
|
|
160269
|
+
riskModelKey: m3.modelKey,
|
|
160270
|
+
riskSetId: setId,
|
|
160271
|
+
classifierValuePayload: { classifierId: cls.id, optionId }
|
|
160272
|
+
}
|
|
160273
|
+
});
|
|
160274
|
+
}
|
|
160275
|
+
return {
|
|
160276
|
+
items: items.map((i2) => ({ payload: i2.payload })),
|
|
160277
|
+
skipped
|
|
160278
|
+
};
|
|
160108
160279
|
}
|
|
160109
160280
|
|
|
160110
160281
|
// src/tools/risk.ts
|
|
160282
|
+
var SEVERITY_P1P2 = external_exports.enum(["negligible", "minor", "serious", "critical", "catastrophic"]);
|
|
160283
|
+
var PROB_P1P2 = external_exports.enum(["improvable", "remote", "occasional", "probable", "frequent"]);
|
|
160284
|
+
var SEVERITY_RPN = external_exports.enum(["negligible", "minor", "serious", "critical", "catastrophic"]);
|
|
160285
|
+
var PROB_RPN = external_exports.enum(["improvable", "remote", "occasional", "probable", "frequent"]);
|
|
160286
|
+
var CIA_LEVEL = external_exports.enum(["negligible", "low", "moderate", "high", "severe"]);
|
|
160287
|
+
var LIKELIHOOD = external_exports.enum(["rare", "unlikely", "possibly", "likely", "almost_certain"]);
|
|
160288
|
+
var RISK_SET = external_exports.enum(["initial", "current", "final"]).default("current");
|
|
160289
|
+
var p1P2Payload = external_exports.object({
|
|
160290
|
+
severity: SEVERITY_P1P2.optional(),
|
|
160291
|
+
p1: PROB_P1P2.optional(),
|
|
160292
|
+
p2: PROB_P1P2.optional()
|
|
160293
|
+
}).strict();
|
|
160294
|
+
var rpnPayload = external_exports.object({
|
|
160295
|
+
severity: SEVERITY_RPN.optional(),
|
|
160296
|
+
occurrence: PROB_RPN.optional(),
|
|
160297
|
+
detectability: PROB_RPN.optional()
|
|
160298
|
+
}).strict();
|
|
160299
|
+
var ciaPayload = external_exports.object({
|
|
160300
|
+
confidentiality: CIA_LEVEL.optional(),
|
|
160301
|
+
availability: CIA_LEVEL.optional(),
|
|
160302
|
+
integrity: CIA_LEVEL.optional(),
|
|
160303
|
+
likelihood: LIKELIHOOD.optional()
|
|
160304
|
+
}).strict();
|
|
160305
|
+
function classifierFromId(model, id) {
|
|
160306
|
+
const m3 = RISK_MODELS[model];
|
|
160307
|
+
for (const [name, cls] of Object.entries(m3.classifiers)) {
|
|
160308
|
+
if (cls.id === id) return name;
|
|
160309
|
+
}
|
|
160310
|
+
return id;
|
|
160311
|
+
}
|
|
160312
|
+
function formatSetDetail(line) {
|
|
160313
|
+
const r2 = line.result;
|
|
160314
|
+
const tag = r2.ok ? "OK" : "FAILED";
|
|
160315
|
+
const detail = r2.error ? `status=${r2.status}, error=${r2.error}` : `status=${r2.status}${r2.body ? `, body=${r2.body}` : ""}`;
|
|
160316
|
+
return `${tag} [${line.model}] ${line.classifier}=${line.optionName} (${detail})`;
|
|
160317
|
+
}
|
|
160318
|
+
async function runSetPlans(riskStub, plans) {
|
|
160319
|
+
const out = { details: [] };
|
|
160320
|
+
for (const p of plans) {
|
|
160321
|
+
if (p.res.skipped.length > 0) {
|
|
160322
|
+
for (const sk of p.res.skipped) {
|
|
160323
|
+
out.skipped = out.skipped ?? [];
|
|
160324
|
+
out.skipped.push({ classifier: `${p.name}.${sk.classifier}`, reason: "option-not-mapped" });
|
|
160325
|
+
}
|
|
160326
|
+
}
|
|
160327
|
+
for (const { payload } of p.res.items) {
|
|
160328
|
+
const r2 = await riskStub.setRiskValueRaw(p.issueKey, payload);
|
|
160329
|
+
out.details.push({
|
|
160330
|
+
model: p.name,
|
|
160331
|
+
classifier: classifierFromId(p.model, payload.classifierValuePayload.classifierId),
|
|
160332
|
+
optionName: payload.classifierValuePayload.optionId,
|
|
160333
|
+
result: r2
|
|
160334
|
+
});
|
|
160335
|
+
}
|
|
160336
|
+
}
|
|
160337
|
+
return out;
|
|
160338
|
+
}
|
|
160111
160339
|
var registerRiskTools = (ctx2) => {
|
|
160112
160340
|
const { server: server2, risk: risk2, jira: jira2 } = ctx2;
|
|
160113
160341
|
server2.tool("risk_activate_panel", "Activate Risk Management Plugin panel on an issue", {
|
|
@@ -160116,59 +160344,77 @@ var registerRiskTools = (ctx2) => {
|
|
|
160116
160344
|
const ok = await risk2.activateRiskPanel(issue_key);
|
|
160117
160345
|
return { content: [{ type: "text", text: ok ? `Risk panel activated on ${issue_key}` : `Failed to activate risk panel on ${issue_key}` }] };
|
|
160118
160346
|
});
|
|
160119
|
-
server2.tool(
|
|
160120
|
-
|
|
160121
|
-
|
|
160122
|
-
|
|
160123
|
-
|
|
160124
|
-
|
|
160125
|
-
|
|
160126
|
-
|
|
160127
|
-
|
|
160128
|
-
|
|
160129
|
-
|
|
160130
|
-
|
|
160131
|
-
|
|
160132
|
-
|
|
160133
|
-
|
|
160134
|
-
|
|
160135
|
-
|
|
160136
|
-
|
|
160137
|
-
|
|
160138
|
-
|
|
160139
|
-
|
|
160140
|
-
const ok = await risk2.setRiskValue(issue_key, configForSet, name, value);
|
|
160141
|
-
results.push(`${name}=${value}: ${ok ? "OK" : "FAILED"}`);
|
|
160347
|
+
server2.tool(
|
|
160348
|
+
"risk_set_values",
|
|
160349
|
+
"Set risk values on an issue via RMP webtrigger. P1-P2 / RPN / CIA \uB3D9\uC2DC \uC785\uB825 \uAC00\uB2A5. \uC635\uC158\uC740 name \uBB38\uC790\uC5F4(UUID \uC790\uB3D9 \uB9E4\uD551). lookup \uC2E4\uD328 \uD56D\uBAA9\uC740 SKIP.",
|
|
160350
|
+
{
|
|
160351
|
+
issue_key: external_exports.string().describe("Issue key"),
|
|
160352
|
+
project_key: external_exports.string().describe("Project key (for context)"),
|
|
160353
|
+
risk_set: RISK_SET,
|
|
160354
|
+
p1_p2_iso14971: p1P2Payload.optional(),
|
|
160355
|
+
rpn: rpnPayload.optional(),
|
|
160356
|
+
cia: ciaPayload.optional()
|
|
160357
|
+
},
|
|
160358
|
+
async ({ issue_key, project_key, risk_set, p1_p2_iso14971, rpn, cia }) => {
|
|
160359
|
+
const tasks = [
|
|
160360
|
+
{ model: "p1_p2_iso14971", name: "P1-P2", res: planSetRisk("p1_p2_iso14971", risk_set, p1_p2_iso14971 ?? {}, issue_key), issueKey: issue_key },
|
|
160361
|
+
{ model: "rpn", name: "RPN", res: planSetRisk("rpn", risk_set, rpn ?? {}, issue_key), issueKey: issue_key },
|
|
160362
|
+
{ model: "cia", name: "CIA", res: planSetRisk("cia", risk_set, cia ?? {}, issue_key), issueKey: issue_key }
|
|
160363
|
+
];
|
|
160364
|
+
const out = await runSetPlans(risk2, tasks);
|
|
160365
|
+
const lines = [`Risk values for ${issue_key} (${risk_set} set):`];
|
|
160366
|
+
if (out.details.length === 0 && (out.skipped ?? []).length === 0) {
|
|
160367
|
+
lines.push(`(no risk values specified for ${project_key})`);
|
|
160142
160368
|
}
|
|
160369
|
+
for (const d2 of out.details) lines.push(formatSetDetail(d2));
|
|
160370
|
+
for (const s2 of out.skipped ?? []) lines.push(`SKIPPED ${s2.classifier} (${s2.reason})`);
|
|
160371
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
160143
160372
|
}
|
|
160144
|
-
|
|
160145
|
-
|
|
160146
|
-
|
|
160147
|
-
|
|
160148
|
-
|
|
160149
|
-
|
|
160150
|
-
|
|
160151
|
-
|
|
160152
|
-
|
|
160153
|
-
|
|
160154
|
-
|
|
160155
|
-
|
|
160156
|
-
|
|
160157
|
-
|
|
160158
|
-
|
|
160159
|
-
|
|
160160
|
-
|
|
160373
|
+
);
|
|
160374
|
+
server2.tool(
|
|
160375
|
+
"risk_get_config",
|
|
160376
|
+
"Get RMP risk model configuration for a project. Returns 3 model identifiers, classifier/option UUID \uD480, \uD658\uACBD \uC548\uB0B4.",
|
|
160377
|
+
{
|
|
160378
|
+
project_key: external_exports.string().describe("Project key")
|
|
160379
|
+
},
|
|
160380
|
+
async ({ project_key }) => {
|
|
160381
|
+
const endpoint = process.env.RISK_PLUGIN_ENDPOINT ?? null;
|
|
160382
|
+
const tokenPresent = !!process.env.RISK_PLUGIN_AUTH_TOKEN;
|
|
160383
|
+
return { content: [{ type: "text", text: JSON.stringify({
|
|
160384
|
+
endpoint,
|
|
160385
|
+
token_present: tokenPresent,
|
|
160386
|
+
diagnostic_note: "token\uC774 \uC5C6\uAC70\uB098 endpoint\uAC00 \uC124\uC815\uB418\uC9C0 \uC54A\uC73C\uBA74 setRiskValue \uD638\uCD9C\uC774 \uC2E4\uD328\uD569\uB2C8\uB2E4. /plugin configure \uB85C RISK_PLUGIN_ENDPOINT / RISK_PLUGIN_AUTH_TOKEN \uC744 \uC785\uB825.",
|
|
160387
|
+
models: Object.fromEntries(
|
|
160388
|
+
Object.keys(RISK_MODELS).map((k) => {
|
|
160389
|
+
const m3 = RISK_MODELS[k];
|
|
160390
|
+
return [k, {
|
|
160391
|
+
label: m3.label,
|
|
160392
|
+
modelKey: m3.modelKey,
|
|
160393
|
+
riskSets: m3.riskSets,
|
|
160394
|
+
classifiers: Object.fromEntries(
|
|
160395
|
+
Object.entries(m3.classifiers).map(([cn, c]) => [cn, { id: c.id, options: Object.keys(c.options) }])
|
|
160396
|
+
),
|
|
160397
|
+
...m3.ciaWrapper ? { ciaWrapper: m3.ciaWrapper } : {}
|
|
160398
|
+
}];
|
|
160399
|
+
})
|
|
160400
|
+
),
|
|
160401
|
+
project: project_key
|
|
160402
|
+
}, null, 2) }] };
|
|
160403
|
+
}
|
|
160404
|
+
);
|
|
160405
|
+
server2.tool("risk_create_hazards", "Batch create Hazard tickets with Risk Source links and (\uC120\uD0DD\uC801) 3 \uBAA8\uB378 risk values \uC790\uB3D9 \uC14B\uD305.", {
|
|
160406
|
+
project_key: external_exports.string(),
|
|
160407
|
+
rmr_key: external_exports.string(),
|
|
160161
160408
|
hazards: external_exports.array(external_exports.object({
|
|
160162
160409
|
summary: external_exports.string(),
|
|
160163
160410
|
description: external_exports.string(),
|
|
160164
160411
|
harm: external_exports.string(),
|
|
160165
|
-
|
|
160166
|
-
|
|
160167
|
-
|
|
160168
|
-
|
|
160169
|
-
})
|
|
160412
|
+
source_keys: external_exports.array(external_exports.string()),
|
|
160413
|
+
p1_p2_iso14971: p1P2Payload.optional(),
|
|
160414
|
+
rpn: rpnPayload.optional(),
|
|
160415
|
+
cia: ciaPayload.optional()
|
|
160416
|
+
}).strict())
|
|
160170
160417
|
}, async ({ project_key, rmr_key, hazards }) => {
|
|
160171
|
-
const riskConfig = getRiskConfig(project_key);
|
|
160172
160418
|
const { textToAdf: textToAdf2 } = await Promise.resolve().then(() => (init_jira_client(), jira_client_exports));
|
|
160173
160419
|
const results = [];
|
|
160174
160420
|
const errors = [];
|
|
@@ -160187,43 +160433,45 @@ ${results.join("\n")}` }] };
|
|
|
160187
160433
|
continue;
|
|
160188
160434
|
}
|
|
160189
160435
|
await risk2.activateRiskPanel(issueKey);
|
|
160190
|
-
|
|
160191
|
-
|
|
160192
|
-
|
|
160193
|
-
|
|
160194
|
-
|
|
160195
|
-
|
|
160196
|
-
|
|
160197
|
-
|
|
160198
|
-
};
|
|
160199
|
-
for (const [name, value] of [["severity", h2.severity], ["p1", h2.p1], ["p2", h2.p2]]) {
|
|
160200
|
-
await risk2.setRiskValue(issueKey, setConfig, name, value);
|
|
160201
|
-
}
|
|
160202
|
-
}
|
|
160203
|
-
}
|
|
160436
|
+
const tasks = [
|
|
160437
|
+
{ model: "p1_p2_iso14971", name: "P1-P2", res: planSetRisk("p1_p2_iso14971", "initial", h2.p1_p2_iso14971 ?? {}, issueKey), issueKey },
|
|
160438
|
+
{ model: "rpn", name: "RPN", res: planSetRisk("rpn", "initial", h2.rpn ?? {}, issueKey), issueKey },
|
|
160439
|
+
{ model: "cia", name: "CIA", res: planSetRisk("cia", "initial", h2.cia ?? {}, issueKey), issueKey }
|
|
160440
|
+
];
|
|
160441
|
+
const out = await runSetPlans(risk2, tasks);
|
|
160442
|
+
const riskOk = out.details.every((d2) => d2.result.ok);
|
|
160443
|
+
const riskSkipped = out.skipped ?? [];
|
|
160204
160444
|
for (const srcKey of h2.source_keys) {
|
|
160205
160445
|
await jira2.createLink("Risk Source", issueKey, srcKey);
|
|
160206
160446
|
}
|
|
160207
160447
|
await jira2.createLink("Relates", issueKey, rmr_key);
|
|
160208
|
-
results.push({
|
|
160448
|
+
results.push({
|
|
160449
|
+
key: issueKey,
|
|
160450
|
+
summary: h2.summary,
|
|
160451
|
+
status: "created",
|
|
160452
|
+
risk_values: {
|
|
160453
|
+
ok: riskOk,
|
|
160454
|
+
details: out.details.map(formatSetDetail),
|
|
160455
|
+
skipped: riskSkipped
|
|
160456
|
+
}
|
|
160457
|
+
});
|
|
160209
160458
|
} catch (e2) {
|
|
160210
160459
|
errors.push(`${h2.summary}: ${e2.message}`);
|
|
160211
160460
|
}
|
|
160212
160461
|
}
|
|
160213
160462
|
return { content: [{ type: "text", text: JSON.stringify({ created: results.length, failed: errors.length, results, errors }, null, 2) }] };
|
|
160214
160463
|
});
|
|
160215
|
-
server2.tool("risk_create_mitigation", "Create mitigation Requirements, link to Hazards, and update Hazard Current P2
|
|
160216
|
-
project_key: external_exports.string()
|
|
160217
|
-
srs_key: external_exports.string()
|
|
160464
|
+
server2.tool("risk_create_mitigation", "Create mitigation Requirements, link to Hazards, and update Hazard Current P2 (P1-P2 \uBAA8\uB378).", {
|
|
160465
|
+
project_key: external_exports.string(),
|
|
160466
|
+
srs_key: external_exports.string(),
|
|
160218
160467
|
requirements: external_exports.array(external_exports.object({
|
|
160219
160468
|
summary: external_exports.string(),
|
|
160220
160469
|
description: external_exports.string(),
|
|
160221
|
-
mitigates: external_exports.array(external_exports.string())
|
|
160222
|
-
implements: external_exports.array(external_exports.string())
|
|
160470
|
+
mitigates: external_exports.array(external_exports.string()),
|
|
160471
|
+
implements: external_exports.array(external_exports.string())
|
|
160223
160472
|
})),
|
|
160224
|
-
hazard_risk_updates: external_exports.record(external_exports.object({ p2: external_exports.string() }))
|
|
160473
|
+
hazard_risk_updates: external_exports.record(external_exports.object({ p2: external_exports.string() }))
|
|
160225
160474
|
}, async ({ project_key, srs_key, requirements, hazard_risk_updates }) => {
|
|
160226
|
-
const riskConfig = getRiskConfig(project_key);
|
|
160227
160475
|
const { textToAdf: textToAdf2 } = await Promise.resolve().then(() => (init_jira_client(), jira_client_exports));
|
|
160228
160476
|
const results = [];
|
|
160229
160477
|
const errors = [];
|
|
@@ -160253,18 +160501,15 @@ ${results.join("\n")}` }] };
|
|
|
160253
160501
|
}
|
|
160254
160502
|
}
|
|
160255
160503
|
const riskUpdates = [];
|
|
160256
|
-
|
|
160257
|
-
const
|
|
160258
|
-
|
|
160259
|
-
|
|
160260
|
-
|
|
160261
|
-
riskSetId: riskConfig.risk_sets.current,
|
|
160262
|
-
classifiers: riskConfig.classifiers
|
|
160263
|
-
};
|
|
160264
|
-
for (const [hazKey, update] of Object.entries(hazard_risk_updates)) {
|
|
160265
|
-
const ok = await risk2.setRiskValue(hazKey, currentConfig, "p2", update.p2);
|
|
160266
|
-
riskUpdates.push(`${hazKey} P2\u2192${update.p2}: ${ok ? "OK" : "FAILED"}`);
|
|
160504
|
+
for (const [hazKey, update] of Object.entries(hazard_risk_updates)) {
|
|
160505
|
+
const plan = planSetRisk("p1_p2_iso14971", "current", { p2: update.p2 }, hazKey);
|
|
160506
|
+
if (plan.skipped.length > 0) {
|
|
160507
|
+
riskUpdates.push(`SKIPPED ${hazKey} P2=${update.p2} (option-not-mapped)`);
|
|
160508
|
+
continue;
|
|
160267
160509
|
}
|
|
160510
|
+
const { payload } = plan.items[0];
|
|
160511
|
+
const r2 = await risk2.setRiskValueRaw(hazKey, payload);
|
|
160512
|
+
riskUpdates.push(formatSetDetail({ model: "P1-P2", classifier: "p2", optionName: update.p2, result: r2 }));
|
|
160268
160513
|
}
|
|
160269
160514
|
return { content: [{ type: "text", text: JSON.stringify({ requirements_created: results.length, results, risk_updates: riskUpdates, errors }, null, 2) }] };
|
|
160270
160515
|
});
|
|
@@ -161902,14 +162147,14 @@ var SHA256 = class extends HashMD {
|
|
|
161902
162147
|
this.H = SHA256_IV[7] | 0;
|
|
161903
162148
|
}
|
|
161904
162149
|
get() {
|
|
161905
|
-
const { A: A3, B: B2, C, D: D2, E: E2, F: F3, G, H: H2 } = this;
|
|
161906
|
-
return [A3, B2,
|
|
162150
|
+
const { A: A3, B: B2, C: C2, D: D2, E: E2, F: F3, G, H: H2 } = this;
|
|
162151
|
+
return [A3, B2, C2, D2, E2, F3, G, H2];
|
|
161907
162152
|
}
|
|
161908
162153
|
// prettier-ignore
|
|
161909
|
-
set(A3, B2,
|
|
162154
|
+
set(A3, B2, C2, D2, E2, F3, G, H2) {
|
|
161910
162155
|
this.A = A3 | 0;
|
|
161911
162156
|
this.B = B2 | 0;
|
|
161912
|
-
this.C =
|
|
162157
|
+
this.C = C2 | 0;
|
|
161913
162158
|
this.D = D2 | 0;
|
|
161914
162159
|
this.E = E2 | 0;
|
|
161915
162160
|
this.F = F3 | 0;
|
|
@@ -161926,30 +162171,30 @@ var SHA256 = class extends HashMD {
|
|
|
161926
162171
|
const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ W2 >>> 10;
|
|
161927
162172
|
SHA256_W[i2] = s1 + SHA256_W[i2 - 7] + s0 + SHA256_W[i2 - 16] | 0;
|
|
161928
162173
|
}
|
|
161929
|
-
let { A: A3, B: B2, C, D: D2, E: E2, F: F3, G, H: H2 } = this;
|
|
162174
|
+
let { A: A3, B: B2, C: C2, D: D2, E: E2, F: F3, G, H: H2 } = this;
|
|
161930
162175
|
for (let i2 = 0; i2 < 64; i2++) {
|
|
161931
162176
|
const sigma1 = rotr(E2, 6) ^ rotr(E2, 11) ^ rotr(E2, 25);
|
|
161932
162177
|
const T1 = H2 + sigma1 + Chi(E2, F3, G) + SHA256_K[i2] + SHA256_W[i2] | 0;
|
|
161933
162178
|
const sigma0 = rotr(A3, 2) ^ rotr(A3, 13) ^ rotr(A3, 22);
|
|
161934
|
-
const T2 = sigma0 + Maj(A3, B2,
|
|
162179
|
+
const T2 = sigma0 + Maj(A3, B2, C2) | 0;
|
|
161935
162180
|
H2 = G;
|
|
161936
162181
|
G = F3;
|
|
161937
162182
|
F3 = E2;
|
|
161938
162183
|
E2 = D2 + T1 | 0;
|
|
161939
|
-
D2 =
|
|
161940
|
-
|
|
162184
|
+
D2 = C2;
|
|
162185
|
+
C2 = B2;
|
|
161941
162186
|
B2 = A3;
|
|
161942
162187
|
A3 = T1 + T2 | 0;
|
|
161943
162188
|
}
|
|
161944
162189
|
A3 = A3 + this.A | 0;
|
|
161945
162190
|
B2 = B2 + this.B | 0;
|
|
161946
|
-
|
|
162191
|
+
C2 = C2 + this.C | 0;
|
|
161947
162192
|
D2 = D2 + this.D | 0;
|
|
161948
162193
|
E2 = E2 + this.E | 0;
|
|
161949
162194
|
F3 = F3 + this.F | 0;
|
|
161950
162195
|
G = G + this.G | 0;
|
|
161951
162196
|
H2 = H2 + this.H | 0;
|
|
161952
|
-
this.set(A3, B2,
|
|
162197
|
+
this.set(A3, B2, C2, D2, E2, F3, G, H2);
|
|
161953
162198
|
}
|
|
161954
162199
|
roundClean() {
|
|
161955
162200
|
clean(SHA256_W);
|
|
@@ -177419,10 +177664,10 @@ var PDFTree = class {
|
|
|
177419
177664
|
}
|
|
177420
177665
|
};
|
|
177421
177666
|
var SpotColor = class {
|
|
177422
|
-
constructor(doc, name,
|
|
177667
|
+
constructor(doc, name, C2, M2, Y2, K2) {
|
|
177423
177668
|
this.id = "CS" + Object.keys(doc.spotColors).length;
|
|
177424
177669
|
this.name = name;
|
|
177425
|
-
this.values = [
|
|
177670
|
+
this.values = [C2, M2, Y2, K2];
|
|
177426
177671
|
this.ref = doc.ref(["Separation", escapeName(this.name), "DeviceCMYK", {
|
|
177427
177672
|
Range: [0, 1, 0, 1, 0, 1, 0, 1],
|
|
177428
177673
|
C0: [0, 0, 0, 0],
|
|
@@ -178707,8 +178952,8 @@ var ColorMixin = {
|
|
|
178707
178952
|
pattern(bbox, xStep, yStep, stream2) {
|
|
178708
178953
|
return new PDFTilingPattern2(this, bbox, xStep, yStep, stream2);
|
|
178709
178954
|
},
|
|
178710
|
-
addSpotColor(name,
|
|
178711
|
-
const color = new SpotColor(this, name,
|
|
178955
|
+
addSpotColor(name, C2, M2, Y2, K2) {
|
|
178956
|
+
const color = new SpotColor(this, name, C2, M2, Y2, K2);
|
|
178712
178957
|
this.spotColors[name] = color;
|
|
178713
178958
|
return this;
|
|
178714
178959
|
}
|
|
@@ -184723,7 +184968,7 @@ var xrayClientSecret = process.env.XRAY_CLIENT_SECRET || "";
|
|
|
184723
184968
|
var xray = xrayClientId && xrayClientSecret ? new XrayClient(xrayClientId, xrayClientSecret, jiraUrl, jiraEmail, jiraToken) : null;
|
|
184724
184969
|
var server = new McpServer({
|
|
184725
184970
|
name: "jira-confluence",
|
|
184726
|
-
version: "0.1.
|
|
184971
|
+
version: "0.1.21"
|
|
184727
184972
|
});
|
|
184728
184973
|
var ctx = { server, jira, confluence, risk, xray };
|
|
184729
184974
|
registerJiraCrudTools(ctx);
|