@neobiotechlabs/neobiotech-dev-agent 0.1.22 → 0.1.24

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.
@@ -10,7 +10,7 @@
10
10
  "source": "npm",
11
11
  "package": "@neobiotechlabs/neobiotech-dev-agent",
12
12
  "registry": "https://registry.npmjs.org",
13
- "version": "0.1.22"
13
+ "version": "0.1.24"
14
14
  },
15
15
  "description": "의료기기 SW 규제 개발 자동화 (Jira·Confluence·Risk·CVSS·Xray·IEC 62304/62366·MDR·문서 렌더)",
16
16
  "category": "medical-device",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neobiotech-dev-agent",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "displayName": "NeoBiotech Dev Agent (MedDev)",
5
5
  "description": "의료기기 SW 규제 개발 자동화 — Jira·Confluence·Risk·CVSS·Xray·IEC 62304/62366·MDR·문서 렌더",
6
6
  "author": {
package/dist/index.js CHANGED
@@ -159694,10 +159694,12 @@ var RiskClient = class {
159694
159694
  error: "RISK_PLUGIN_ENDPOINT not configured. \uD658\uACBD\uBCC0\uC218 \uB610\uB294 \uCF54\uB4DC \uC815\uC801 \uAE30\uBCF8\uAC12\uC744 \uD655\uC778\uD558\uC138\uC694."
159695
159695
  };
159696
159696
  }
159697
+ const DEFAULT_RMP_AUTHOR = "557058:f58131cb-b67d-43c7-b30d-6b58d40bd077";
159698
+ const finalAuthor = payload.author && payload.author.length > 0 ? payload.author : process.env.RISK_PLUGIN_AUTHOR || DEFAULT_RMP_AUTHOR;
159697
159699
  const fullPayload = {
159698
159700
  ...payload,
159699
159701
  issueKey,
159700
- author: payload.author ?? ""
159702
+ author: finalAuthor
159701
159703
  };
159702
159704
  try {
159703
159705
  const resp = await fetch(endpoint, {
@@ -160243,8 +160245,9 @@ function planSetRisk(model, riskSet, classifierOptions, issueKey) {
160243
160245
  if (!m3) return { items: [], skipped: [{ classifier: "*", optionName: model }] };
160244
160246
  const setId = m3.riskSets[riskSet];
160245
160247
  if (!setId) return { items: [], skipped: [{ classifier: "*", optionName: `riskSet.${riskSet}` }] };
160246
- const author = process.env.JIRA_EMAIL;
160247
- if (!author) return { items: [], skipped: [{ classifier: "*", optionName: "JIRA_EMAIL missing" }] };
160248
+ const DEFAULT_RMP_AUTHOR = "557058:f58131cb-b67d-43c7-b30d-6b58d40bd077";
160249
+ const author = process.env.RISK_PLUGIN_AUTHOR || DEFAULT_RMP_AUTHOR;
160250
+ if (!author) return { items: [], skipped: [{ classifier: "*", optionName: "RISK_PLUGIN_AUTHOR missing" }] };
160248
160251
  const items = [];
160249
160252
  const skipped = [];
160250
160253
  for (const [classifierName, optionName] of Object.entries(classifierOptions)) {
@@ -160981,11 +160984,11 @@ var TOOL_CATALOG = [
160981
160984
  { name: "confluence_get_spaces", description: "\uC2A4\uD398\uC774\uC2A4 \uBAA9\uB85D", category: "Confluence" },
160982
160985
  { name: "confluence_get_page_children", description: "\uD558\uC704 \uD398\uC774\uC9C0 \uC870\uD68C", category: "Confluence" },
160983
160986
  { name: "confluence_publish_doc", description: "\uB9C8\uD06C\uB2E4\uC6B4 \uBB38\uC11C \u2192 Confluence \uD398\uC774\uC9C0 \uAC8C\uC7AC (create/update \uC790\uB3D9 \uBD84\uAE30, \uCF54\uB4DC\uD39C\uC2A4 \u2192 \uCF54\uB4DC \uB9E4\uD06C\uB85C)", category: "Confluence" },
160984
- { name: "risk_get_config", description: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC \uC124\uC815 \uC870\uD68C", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160985
- { name: "risk_activate_panel", description: "\uB9AC\uC2A4\uD06C \uD328\uB110 \uD65C\uC131\uD654", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160986
- { name: "risk_set_values", description: "\uB9AC\uC2A4\uD06C \uAC12(severity, p1, p2) \uC124\uC815", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160987
- { name: "risk_create_hazards", description: "Hazard \uC77C\uAD04 \uC0DD\uC131 + Risk Source \uB9C1\uD06C", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160988
- { name: "risk_create_mitigation", description: "\uC644\uD654 Requirement \uC0DD\uC131 + P2 \uC5C5\uB370\uC774\uD2B8", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160987
+ { name: "risk_get_config", description: "RMP 3 \uBAA8\uB378(p1_p2_iso14971 / rpn / cia) \uC815\uC758 + \uC635\uC158 name \uBAA9\uB85D \uC870\uD68C", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160988
+ { name: "risk_activate_panel", description: "\uC774\uC288\uC5D0 RMP Risk Panel \uD65C\uC131\uD654", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160989
+ { name: "risk_set_values", description: "3 \uBAA8\uB378(p1_p2_iso14971 / rpn / cia) \uB3D9\uC2DC \uC785\uB825. \uC635\uC158 name \u2192 UUID \uC790\uB3D9 \uB9E4\uD551. lookup \uC2E4\uD328\uB294 SKIP. risk_set\uC740 initial | current | final (rpn\uC740 final\uAE4C\uC9C0)", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160990
+ { name: "risk_create_hazards", description: "Hazard \uC77C\uAD04 \uC0DD\uC131 + 3 \uBAA8\uB378 risk values \uC790\uB3D9 \uC14B\uD305 + Risk Source/Relates \uB9C1\uD06C", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160991
+ { name: "risk_create_mitigation", description: "\uC644\uD654 Requirement \uC0DD\uC131 + Hazard Current P2(P1-P2 \uBAA8\uB378) \uC790\uB3D9 \uC5C5\uB370\uC774\uD2B8", category: "\uB9AC\uC2A4\uD06C \uAD00\uB9AC" },
160989
160992
  { name: "cvss_calculate", description: "CVSS v4.0 \uC810\uC218 \uACC4\uC0B0", category: "\uBCF4\uC548 \uCDE8\uC57D\uC810" },
160990
160993
  { name: "cvss_set_vector", description: "Vulnerability \uD2F0\uCF13\uC5D0 CVSS Vector \uC124\uC815", category: "\uBCF4\uC548 \uCDE8\uC57D\uC810" },
160991
160994
  { name: "cvss_get_vector", description: "Vulnerability \uD2F0\uCF13\uC758 CVSS Vector \uC870\uD68C", category: "\uBCF4\uC548 \uCDE8\uC57D\uC810" },
@@ -161081,15 +161084,24 @@ var WORKFLOWS = {
161081
161084
  "13. doc_generate_evidence \u2192 NB \uC2EC\uC0AC\uC6A9 \uC99D\uAC70 \uD328\uD0A4\uC9C0 \uC0DD\uC131"
161082
161085
  ].join("\n"),
161083
161086
  risk: [
161084
- "=== \uB9AC\uC2A4\uD06C \uAD00\uB9AC \uC6CC\uD06C\uD50C\uB85C\uC6B0 ===",
161087
+ "=== \uB9AC\uC2A4\uD06C \uAD00\uB9AC \uC6CC\uD06C\uD50C\uB85C\uC6B0 (3 \uBAA8\uB378 \uBA40\uD2F0\uC785\uB825, 0.1.21+) ===",
161085
161088
  "",
161086
- "1. risk_get_config \u2192 \uD504\uB85C\uC81D\uD2B8 \uB9AC\uC2A4\uD06C \uC124\uC815 \uD655\uC778",
161087
- "2. IU/SyRS \uBD84\uC11D \u2192 Hazard \uC2DD\uBCC4",
161088
- "3. risk_create_hazards \u2192 Hazard \uC77C\uAD04 \uC0DD\uC131 (Risk \uAC12 + Risk Source \uB9C1\uD06C \uC790\uB3D9)",
161089
- "4. \uC644\uD654 \uC870\uCE58 \uC124\uACC4 \u2192 risk_create_mitigation \u2192 Requirement \uC0DD\uC131 (P2 \uC790\uB3D9 \uC5C5\uB370\uC774\uD2B8)",
161090
- "5. traceability_check \u2192 \uCD94\uC801\uC131 \uD655\uC778",
161091
- "6. traceability_find_missing \u2192 \uB204\uB77D \uB9C1\uD06C \uAC80\uC0C9",
161092
- "7. traceability_fix \u2192 \uB204\uB77D \uB9C1\uD06C \uC790\uB3D9 \uC0DD\uC131"
161089
+ "\uB3C4\uAD6C \uC778\uD130\uD398\uC774\uC2A4:",
161090
+ "- 3 \uBAA8\uB378 \uB3D9\uC2DC \uC785\uB825 \uAC00\uB2A5 \u2014 p1_p2_iso14971 (Severity/P1/P2, ISO 14971) / rpn (Severity/Occurrence/Detectability, FMEA RPN) / cia (Confidentiality/Availability/Integrity + Likelihood, Cyber Sec)",
161091
+ "- \uC635\uC158\uC740 name \uBB38\uC790\uC5F4 \uC785\uB825 \u2014 \uB3C4\uAD6C\uAC00 UUID \uC790\uB3D9 \uB9E4\uD551 (SoftComply RMP \uACF5\uC2DD schema)",
161092
+ "- lookup \uC2E4\uD328 \uC635\uC158\uC740 SKIPPED \uD45C\uC2DC, \uB098\uBA38\uC9C0 \uC815\uC0C1 \uC9C4\uD589",
161093
+ "",
161094
+ "1. risk_get_config \u2192 \uD504\uB85C\uC81D\uD2B8\uC758 3 \uBAA8\uB378 \uC815\uC758 + \uC635\uC158 name \uBAA9\uB85D \uC870\uD68C",
161095
+ "2. IU/SyRS \uBD84\uC11D \u2192 Hazard \uC2DD\uBCC4 (P1-P2 ISO 14971)",
161096
+ "3. risk_create_hazards \u2192 Hazard \uC77C\uAD04 \uC0DD\uC131 + 3 \uBAA8\uB378 risk values \uC790\uB3D9 \uC14B\uD305 + Risk Source/Relates \uB9C1\uD06C",
161097
+ " - hazard \uAC1D\uCCB4 \uC548\uC5D0 p1_p2_iso14971 / rpn / cia \uC635\uC154\uB110 \uAC1D\uCCB4 \uC785\uB825. \uC785\uB825\uD55C \uBAA8\uB378\uB9CC \uC790\uB3D9 setValues \uD638\uCD9C",
161098
+ "4. risk_set_values \u2192 \uAE30\uC874 Hazard\uC5D0 \uCD94\uAC00/\uC218\uC815 risk \uAC12 \uC785\uB825 (3 \uBAA8\uB378 \uB3D9\uC2DC \uB610\uB294 \uBD80\uBD84)",
161099
+ "5. \uC644\uD654 \uC870\uCE58 \uC124\uACC4 \u2192 risk_create_mitigation \u2192 Requirement \uC0DD\uC131 + Hazard Current P2 \uC790\uB3D9 \uC5C5\uB370\uC774\uD2B8 (P1-P2 \uBAA8\uB378)",
161100
+ "6. RMP Panel\uC5D0\uC11C \uC9C1\uC811 \uC785\uB825\uD558\uB294 \uBAA8\uB378 (Risk Score Calculation / Cyber Sec Risk Model) \uC740",
161101
+ " risk_create_hazards / risk_set_values \uC758 rpn / cia \uAC1D\uCCB4\uB85C \uC790\uB3D9 \uC14B\uD305 \uAC00\uB2A5 \u2014 UI \uC218\uB3D9 \uBD88\uD544\uC694",
161102
+ "7. traceability_check \u2192 \uCD94\uC801\uC131 \uD655\uC778",
161103
+ "8. traceability_find_missing \u2192 \uB204\uB77D \uB9C1\uD06C \uAC80\uC0C9",
161104
+ "9. traceability_fix \u2192 \uB204\uB77D \uB9C1\uD06C \uC790\uB3D9 \uC0DD\uC131"
161093
161105
  ].join("\n"),
161094
161106
  usability: [
161095
161107
  "=== \uC0AC\uC6A9\uC131 \uACF5\uD559 (IEC 62366-1) \uC6CC\uD06C\uD50C\uB85C\uC6B0 ===",
@@ -184969,7 +184981,7 @@ var xrayClientSecret = process.env.XRAY_CLIENT_SECRET || "";
184969
184981
  var xray = xrayClientId && xrayClientSecret ? new XrayClient(xrayClientId, xrayClientSecret, jiraUrl, jiraEmail, jiraToken) : null;
184970
184982
  var server = new McpServer({
184971
184983
  name: "jira-confluence",
184972
- version: "0.1.22"
184984
+ version: "0.1.24"
184973
184985
  });
184974
184986
  var ctx = { server, jira, confluence, risk, xray };
184975
184987
  registerJiraCrudTools(ctx);