@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/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 M() {
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 z.parse(l3, e2);
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, ze, le, Me, Ee, Ie, W, se, Ae, Ce, Be, qe, ue, De, I, 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, z, Kt, Wt, Xt, Jt, Vt, en, tn;
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 = M();
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
- ze = 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)|~{3,})[^\\n]*\\n").replace("list", l3).replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", H).getRegex();
13560
- Me = le(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/);
13561
- Ee = le(/ {0,3}(?:[*+-]|\d{1,9}[.)])[ \t]+[^ \t\n]/);
13562
- Ie = d(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", Ee).getRegex();
13563
- W = { blockquote: Ie, code: we, def: Le, fences: ye, heading: Pe, hr: B, html: ze, lheading: ae, list: _e, newline: Oe, paragraph: Me, 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)|~{3,})[^\\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)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", H).getRegex() };
13566
- Ce = { ...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} *[^
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
- I = /[\p{P}\p{S}]/u;
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, I).getRegex();
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, I).getRegex();
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, I).getRegex();
13587
- Ke = d(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g, I).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, 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, I).getRegex();
13590
- Je = d(/\\(punct)/, "gu").replace(/punct/g, I).getRegex();
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(/^([`~]+|[^`~])(?:(?= {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() };
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: Ce };
13604
+ q = { normal: W, gfm: Ae, pedantic: Ie };
13605
13605
  A2 = { normal: J, gfm: Q, breaks: st, pedantic: rt };
13606
13606
  it = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" };
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 c = u.join(`
13663
- `), p = c.replace(this.rules.other.blockquoteSetextReplace, `
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
- ${c}` : c, r2 = r2 ? `${r2}
13667
- ${p}` : p;
13668
- let k = this.lexer.state.top;
13669
- if (this.lexer.state.top = true, this.lexer.blockTokens(p, i2, true), this.lexer.state.top = k, n.length === 0) break;
13670
- let h2 = i2.at(-1);
13671
- if (h2?.type === "code") break;
13672
- if (h2?.type === "blockquote") {
13673
- let R = h2, f3 = R.raw + `
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 (h2?.type === "list") {
13679
- let R = h2, f3 = R.raw + `
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 - h2.raw.length) + S2.raw, r2 = r2.substring(0, r2.length - R.raw.length) + S2.raw, n = f3.substring(i2.at(-1).raw.length).split(`
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, c = "", p = "";
13697
+ let a = false, p = "", c = "";
13698
13698
  if (!(t2 = i2.exec(e2)) || this.rules.block.hr.test(e2)) break;
13699
- c = t2[0], e2 = e2.substring(c.length);
13700
- let k = me(t2[2].split(`
13701
- `, 1)[0], t2[1].length), h2 = e2.split(`
13702
- `, 1)[0], R = !k.trim(), f3 = 0;
13703
- if (this.options.pedantic ? (f3 = 2, p = k.trimStart()) : R ? f3 = t2[1].length + 1 : (f3 = k.search(this.rules.other.nonSpaceChar), f3 = f3 > 4 ? 1 : f3, p = k.slice(f3), f3 += t2[1].length), R && this.rules.other.blankLine.test(h2) && (c += h2 + `
13704
- `, e2 = e2.substring(h2.length + 1), a = true), !a) {
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], C;
13709
- if (h2 = G, this.options.pedantic ? (h2 = h2.replace(this.rules.other.listReplaceNesting, " "), C = h2) : C = h2.replace(this.rules.other.tabCharGlobal, " "), ne.test(h2) || re.test(h2) || be.test(h2) || Re.test(h2) || S2.test(h2) || te.test(h2)) break;
13710
- if (C.search(this.rules.other.nonSpaceChar) >= f3 || !h2.trim()) p += `
13711
- ` + C.slice(f3);
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 || k.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || ne.test(k) || re.test(k) || te.test(k)) break;
13714
- p += `
13715
- ` + h2;
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 = !h2.trim(), c += G + `
13718
- `, e2 = e2.substring(G.length + 1), k = C.slice(f3);
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(c) && (o = true)), r2.items.push({ type: "list_item", raw: c, task: !!this.options.gfm && this.rules.other.listIsTask.test(p), loose: false, text: p, tokens: [] }), r2.raw += c;
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 c = a.tokens[0];
13730
- if (a.task && (c?.type === "text" || c?.type === "paragraph")) {
13731
- a.text = a.text.replace(this.rules.other.listReplaceTask, ""), c.raw = c.raw.replace(this.rules.other.listReplaceTask, ""), c.text = c.text.replace(this.rules.other.listReplaceTask, "");
13732
- for (let k = this.lexer.inlineQueue.length - 1; k >= 0; k--) if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[k].src)) {
13733
- this.lexer.inlineQueue[k].src = this.lexer.inlineQueue[k].src.replace(this.rules.other.listReplaceTask, "");
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 p = this.rules.other.listTaskCheckbox.exec(a.raw);
13737
- if (p) {
13738
- let k = { type: "checkbox", raw: p[0] + " ", checked: p[0] !== "[ ]" };
13739
- a.checked = k.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 = k.raw + a.tokens[0].raw, a.tokens[0].text = k.raw + a.tokens[0].text, a.tokens[0].tokens.unshift(k)) : a.tokens.unshift({ type: "paragraph", raw: k.raw, text: k.raw, tokens: [k] }) : a.tokens.unshift(k);
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 p = a.tokens.filter((h2) => h2.type === "space"), k = p.length > 0 && p.some((h2) => this.rules.other.anyLine.test(h2.raw));
13744
- r2.loose = k;
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 c of a.tokens) c.type === "text" && (c.type = "paragraph");
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, c = 0, p = s2[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
13850
- for (p.lastIndex = 0, t2 = t2.slice(-1 * e2.length + i2); (s2 = p.exec(t2)) !== null; ) {
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
- c += u;
13856
+ p += u;
13857
13857
  continue;
13858
13858
  }
13859
13859
  if (a -= u, a > 0) continue;
13860
- u = Math.min(u, u + a + c);
13861
- let k = [...s2[0]][0].length, h2 = e2.slice(0, i2 + s2.index + k + u);
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 = h2.slice(1, -1);
13864
- return { type: "em", raw: h2, text: f3, tokens: this.lexer.inlineTokens(f3) };
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 = h2.slice(2, -2);
13867
- return { type: "strong", raw: h2, text: R, tokens: this.lexer.inlineTokens(R) };
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, c = this.rules.inline.delRDelim;
13887
- for (c.lastIndex = 0, t2 = t2.slice(-1 * e2.length + i2); (s2 = c.exec(t2)) !== null; ) {
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 p = [...s2[0]][0].length, k = e2.slice(0, i2 + s2.index + p + u), h2 = k.slice(i2, -i2);
13896
- return { type: "del", raw: k, text: h2, tokens: this.lexer.inlineTokens(h2) };
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((c) => {
14031
- a = c.call({ lexer: this }, u), typeof a == "number" && a >= 0 && (o = Math.min(o, 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, s2 = null;
14063
+ let n = e2;
14064
14064
  if (this.tokens.links) {
14065
- let a = Object.keys(this.tokens.links);
14066
- if (a.length > 0) for (; (s2 = this.tokenizer.rules.inline.reflinkSearch.exec(n)) !== null; ) a.includes(s2[0].slice(s2[0].lastIndexOf("[") + 1, -1)) && (n = n.slice(0, s2.index) + "[" + "a".repeat(s2[0].length - 2) + "]" + n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex));
14067
- }
14068
- for (; (s2 = this.tokenizer.rules.inline.anyPunctuation.exec(n)) !== null; ) n = n.slice(0, s2.index) + "++" + n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);
14069
- let r2;
14070
- for (; (s2 = this.tokenizer.rules.inline.blockSkip.exec(n)) !== null; ) r2 = s2[2] ? s2[2].length : 0, n = n.slice(0, s2.index + r2) + "[" + "a".repeat(s2[0].length - r2 - 2) + "]" + n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
14071
- n = this.options.hooks?.emStrongMask?.call({ lexer: this }, n) ?? n;
14072
- let i2 = false, o = "", u = 1 / 0;
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 < u) u = 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
- i2 || (o = ""), i2 = false;
14080
- let a;
14081
- if (this.options.extensions?.inline?.some((p) => (a = p.call({ lexer: this }, e2, t2)) ? (e2 = e2.substring(a.raw.length), t2.push(a), true) : false)) continue;
14082
- if (a = this.tokenizer.escape(e2)) {
14083
- e2 = e2.substring(a.raw.length), t2.push(a);
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 (a = this.tokenizer.tag(e2)) {
14087
- e2 = e2.substring(a.raw.length), t2.push(a);
14086
+ if (o = this.tokenizer.tag(e2)) {
14087
+ e2 = e2.substring(o.raw.length), t2.push(o);
14088
14088
  continue;
14089
14089
  }
14090
- if (a = this.tokenizer.link(e2)) {
14091
- e2 = e2.substring(a.raw.length), t2.push(a);
14090
+ if (o = this.tokenizer.link(e2)) {
14091
+ e2 = e2.substring(o.raw.length), t2.push(o);
14092
14092
  continue;
14093
14093
  }
14094
- if (a = this.tokenizer.reflink(e2, this.tokens.links)) {
14095
- e2 = e2.substring(a.raw.length);
14096
- let p = t2.at(-1);
14097
- a.type === "text" && p?.type === "text" ? (p.raw += a.raw, p.text += a.text) : t2.push(a);
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 (a = this.tokenizer.emStrong(e2, n, o)) {
14101
- e2 = e2.substring(a.raw.length), t2.push(a);
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 (a = this.tokenizer.codespan(e2)) {
14105
- e2 = e2.substring(a.raw.length), t2.push(a);
14104
+ if (o = this.tokenizer.codespan(e2)) {
14105
+ e2 = e2.substring(o.raw.length), t2.push(o);
14106
14106
  continue;
14107
14107
  }
14108
- if (a = this.tokenizer.br(e2)) {
14109
- e2 = e2.substring(a.raw.length), t2.push(a);
14108
+ if (o = this.tokenizer.br(e2)) {
14109
+ e2 = e2.substring(o.raw.length), t2.push(o);
14110
14110
  continue;
14111
14111
  }
14112
- if (a = this.tokenizer.del(e2, n, o)) {
14113
- e2 = e2.substring(a.raw.length), t2.push(a);
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 (a = this.tokenizer.autolink(e2)) {
14117
- e2 = e2.substring(a.raw.length), t2.push(a);
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 && (a = this.tokenizer.url(e2))) {
14121
- e2 = e2.substring(a.raw.length), t2.push(a);
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 c = e2;
14124
+ let u = e2;
14125
14125
  if (this.options.extensions?.startInline) {
14126
- let p = 1 / 0, k = e2.slice(1), h2;
14127
- this.options.extensions.startInline.forEach((R) => {
14128
- h2 = R.call({ lexer: this }, k), typeof h2 == "number" && h2 >= 0 && (p = Math.min(p, h2));
14129
- }), p < 1 / 0 && p >= 0 && (c = e2.substring(0, p + 1));
14130
- }
14131
- if (a = this.tokenizer.inlineText(c)) {
14132
- e2 = e2.substring(a.raw.length), a.raw.slice(-1) !== "_" && (o = a.raw.slice(-1)), i2 = true;
14133
- let p = t2.at(-1);
14134
- p?.type === "text" ? (p.raw += a.raw, p.text += a.text) : t2.push(a);
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 = M();
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] = (...c) => {
14543
- let p = u.apply(r2, c);
14544
- return p === false && (p = a.apply(r2, c)), p || "";
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] = (...c) => {
14556
- let p = u.apply(r2, c);
14557
- return p === false && (p = a.apply(r2, c)), p;
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] = (c) => {
14568
+ P.passThroughHooks.has(i2) ? r2[o] = (p) => {
14569
14569
  if (this.defaults.async && P.passThroughHooksRespectAsync.has(i2)) return (async () => {
14570
- let k = await u.call(r2, c);
14571
- return a.call(r2, k);
14570
+ let h2 = await u.call(r2, p);
14571
+ return a.call(r2, h2);
14572
14572
  })();
14573
- let p = u.call(r2, c);
14574
- return a.call(r2, p);
14575
- } : r2[o] = (...c) => {
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 k = await u.apply(r2, c);
14578
- return k === false && (k = await a.apply(r2, c)), k;
14577
+ let h2 = await u.apply(r2, p);
14578
+ return h2 === false && (h2 = await a.apply(r2, p)), h2;
14579
14579
  })();
14580
- let p = u.apply(r2, c);
14581
- return p === false && (p = a.apply(r2, c)), p;
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, c = await (i2.hooks ? await i2.hooks.provideLexer(e2) : e2 ? x2.lex : x2.lexInline)(u, i2), p = i2.hooks ? await i2.hooks.processAllTokens(c) : c;
14613
- i2.walkTokens && await Promise.all(this.walkTokens(p, i2.walkTokens));
14614
- let h2 = await (i2.hooks ? await i2.hooks.provideParser(e2) : e2 ? b.parse : b.parseInline)(p, i2);
14615
- return i2.hooks ? await i2.hooks.postprocess(h2) : h2;
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 p = (i2.hooks ? i2.hooks.provideParser(e2) : e2 ? b.parse : b.parseInline)(a, i2);
14622
- return i2.hooks && (p = i2.hooks.postprocess(p)), p;
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
- z = new D();
14640
+ M = new D();
14641
14641
  g.options = g.setOptions = function(l3) {
14642
- return z.setOptions(l3), g.defaults = z.defaults, N(g.defaults), g;
14642
+ return M.setOptions(l3), g.defaults = M.defaults, N(g.defaults), g;
14643
14643
  };
14644
- g.getDefaults = M;
14644
+ g.getDefaults = z;
14645
14645
  g.defaults = T;
14646
14646
  g.use = function(...l3) {
14647
- return z.use(...l3), g.defaults = z.defaults, N(g.defaults), g;
14647
+ return M.use(...l3), g.defaults = M.defaults, N(g.defaults), g;
14648
14648
  };
14649
14649
  g.walkTokens = function(l3, e2) {
14650
- return z.walkTokens(l3, e2);
14650
+ return M.walkTokens(l3, e2);
14651
14651
  };
14652
- g.parseInline = z.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
- async setRiskValue(issueKey, riskConfig, classifierName, optionName) {
159664
- const classifier = riskConfig.classifiers[classifierName];
159665
- if (!classifier) throw new Error(`Unknown classifier: ${classifierName}`);
159666
- const optionId = classifier.options[optionName];
159667
- if (!optionId) throw new Error(`Unknown option: ${optionName} for ${classifierName}`);
159668
- const payload = {
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: riskConfig.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
- const resp = await fetch(riskConfig.endpoint, {
159679
- method: "POST",
159680
- headers: {
159681
- "x-trigger-authentication": this.riskAuthToken,
159682
- "Content-Type": "application/json"
159683
- },
159684
- body: JSON.stringify(payload)
159685
- });
159686
- return resp.ok;
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/project-config.ts
160065
- var RISK_DEFAULTS = {
160066
- endpoint: "https://306e01a8-5530-427d-b93a-f91f4898ff16.hello.atlassian-dev.net/x1/p3_h8rdLbpp1-9mjDOXQiqJ4jL4",
160067
- author: "712020:baa962da-2822-4cc7-9659-2d780f703b3e",
160068
- risk_model_key: "risk-model-9dc1c741-0858-4a96-65d6-5feaf052da71",
160069
- risk_sets: {
160070
- initial: "2f43f135-d043-84bd-4222-46ba4a309738",
160071
- current: "f957cae9-a34c-30d7-557b-f7f29a414ba5"
160072
- },
160073
- classifiers: {
160074
- severity: {
160075
- id: "120dbe93-8a5c-89d9-398c-6fdefc8fa072",
160076
- options: {
160077
- negligible: "0750b204-3be7-14b2-34c9-5100846e99db",
160078
- minor: "70ccea9f-a585-d248-dbd0-e6eefcc683e8",
160079
- serious: "a8b765c0-2e55-f6c4-25ff-1a4513c1cfd7",
160080
- critical: "587d166e-890a-5123-e179-15bafbd617e1",
160081
- catastrophic: "981fbfd5-604d-f9b9-6765-3405a165f401"
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
- p1: {
160085
- id: "c2c0af5d-74de-e463-ad13-ba80da1b6afd",
160086
- options: {
160087
- improvable: "3ac4a3b1-55ef-de93-3452-61c572a905a3",
160088
- remote: "2d173a68-c28f-d589-1300-bc127f962810",
160089
- occasional: "039596ac-784e-f0ac-50cf-d4d2cc96b096",
160090
- probable: "702cb81f-3bc6-d150-5cc3-daa04d3f0404",
160091
- frequent: "09fb301a-4448-d8aa-afd2-76d371f501f3"
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
- p2: {
160095
- id: "cdada7bb-cb4a-3b00-260b-5e5227e85a74",
160096
- options: {
160097
- improvable: "7e044b34-25c4-ffae-5237-48eebb190358",
160098
- remote: "58257cb8-59e2-5ec7-dd1d-9e966fb13589",
160099
- occasional: "6cf5ebce-3b07-69b1-b093-9e0ef9def95c",
160100
- probable: "bbcbfdd1-0c02-6105-e8e4-f60ae6cacb5c",
160101
- frequent: "e35de539-93d5-f854-c6ed-50067ad8599b"
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
- function getRiskConfig(_projectKey) {
160107
- return RISK_DEFAULTS;
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("risk_set_values", "Set risk values (severity, p1, p2) on an issue via Risk Management Plugin", {
160120
- issue_key: external_exports.string().describe("Issue key"),
160121
- project_key: external_exports.string().describe("Project key (for config lookup)"),
160122
- severity: external_exports.enum(["negligible", "minor", "serious", "critical", "catastrophic"]).optional(),
160123
- p1: external_exports.enum(["improvable", "remote", "occasional", "probable", "frequent"]).optional(),
160124
- p2: external_exports.enum(["improvable", "remote", "occasional", "probable", "frequent"]).optional(),
160125
- risk_set: external_exports.enum(["initial", "current"]).default("current").describe("Which risk set to update")
160126
- }, async ({ issue_key, project_key, severity, p1, p2, risk_set }) => {
160127
- const riskConfig = getRiskConfig(project_key);
160128
- if (!riskConfig) return { content: [{ type: "text", text: `No risk management config for project ${project_key}. Check PROJECT_CONFIG_PATH.` }] };
160129
- const riskSetId = riskConfig.risk_sets[risk_set];
160130
- const configForSet = {
160131
- endpoint: riskConfig.endpoint,
160132
- author: riskConfig.author,
160133
- riskModelKey: riskConfig.risk_model_key,
160134
- riskSetId,
160135
- classifiers: riskConfig.classifiers
160136
- };
160137
- const results = [];
160138
- for (const [name, value] of [["severity", severity], ["p1", p1], ["p2", p2]]) {
160139
- if (value) {
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
- return { content: [{ type: "text", text: `Risk values for ${issue_key} (${risk_set} set):
160145
- ${results.join("\n")}` }] };
160146
- });
160147
- server2.tool("risk_get_config", "Get risk management configuration for a project", {
160148
- project_key: external_exports.string().describe("Project key")
160149
- }, async ({ project_key }) => {
160150
- const config2 = getRiskConfig(project_key);
160151
- if (!config2) return { content: [{ type: "text", text: `No risk config for ${project_key}` }] };
160152
- return { content: [{ type: "text", text: JSON.stringify({
160153
- risk_model_key: config2.risk_model_key,
160154
- risk_sets: config2.risk_sets,
160155
- classifiers: Object.fromEntries(Object.entries(config2.classifiers).map(([k, v2]) => [k, { id: v2.id, options: Object.keys(v2.options) }]))
160156
- }, null, 2) }] };
160157
- });
160158
- server2.tool("risk_create_hazards", "Batch create Hazard tickets with Risk panel activation, risk values, and Risk Source links. Migrated from rmr_create_hazards.py.", {
160159
- project_key: external_exports.string().describe("Project key"),
160160
- rmr_key: external_exports.string().describe("RMR Document ticket key"),
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
- severity: external_exports.enum(["negligible", "minor", "serious", "critical", "catastrophic"]),
160166
- p1: external_exports.enum(["improvable", "remote", "occasional", "probable", "frequent"]),
160167
- p2: external_exports.enum(["improvable", "remote", "occasional", "probable", "frequent"]),
160168
- source_keys: external_exports.array(external_exports.string()).describe("Related IU/SyRS ticket keys")
160169
- })).describe("Array of hazard definitions")
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
- if (riskConfig) {
160191
- for (const setName of ["initial", "current"]) {
160192
- const setConfig = {
160193
- endpoint: riskConfig.endpoint,
160194
- author: riskConfig.author,
160195
- riskModelKey: riskConfig.risk_model_key,
160196
- riskSetId: riskConfig.risk_sets[setName],
160197
- classifiers: riskConfig.classifiers
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({ key: issueKey, summary: h2.summary, status: "created" });
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. Migrated from srs_create_requirements.py.", {
160216
- project_key: external_exports.string().describe("Project key"),
160217
- srs_key: external_exports.string().describe("SRS Document ticket key"),
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()).describe("Hazard keys this requirement mitigates"),
160222
- implements: external_exports.array(external_exports.string()).describe("System Requirement keys this implements")
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() })).describe("Hazard key \u2192 new P2 value mapping")
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
- if (riskConfig) {
160257
- const currentConfig = {
160258
- endpoint: riskConfig.endpoint,
160259
- author: riskConfig.author,
160260
- riskModelKey: riskConfig.risk_model_key,
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, C, D2, E2, F3, G, H2];
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, C, D2, E2, F3, G, H2) {
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 = C | 0;
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, C) | 0;
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 = C;
161940
- C = B2;
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
- C = C + this.C | 0;
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, C, D2, E2, F3, G, H2);
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, C, M2, Y2, K2) {
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 = [C, M2, Y2, K2];
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, C, M2, Y2, K2) {
178711
- const color = new SpotColor(this, name, C, M2, Y2, K2);
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.19"
184971
+ version: "0.1.21"
184727
184972
  });
184728
184973
  var ctx = { server, jira, confluence, risk, xray };
184729
184974
  registerJiraCrudTools(ctx);