@neobiotechlabs/neobiotech-dev-agent 0.1.24 → 0.1.25

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.24"
13
+ "version": "0.1.25"
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.24",
3
+ "version": "0.1.25",
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
@@ -160135,7 +160135,7 @@ var RISK_MODELS = {
160135
160135
  options: {
160136
160136
  improvable: "7e044b34-25c4-ffae-5237-48eebb190358",
160137
160137
  remote: "58257cb8-59e2-5ec7-dd1d-9e966fb13589",
160138
- occasional: "6cf5ebce-3b07-69b1-b093-9e0ef9def95c",
160138
+ occasional: "6cf5ebce-3b07-69b1-b093-9f0ef9def95c",
160139
160139
  probable: "bbcbfdd1-0c02-6105-e8e4-f60ae6cacb5c",
160140
160140
  frequent: "e35de539-93d5-f854-c6ed-50067ad8599b"
160141
160141
  }
@@ -160155,7 +160155,7 @@ var RISK_MODELS = {
160155
160155
  id: "fec8bdcd-0c55-4ab3-87e3-cfd7176aefd5",
160156
160156
  options: {
160157
160157
  negligible: "a87a6249-03e4-5419-d50e-0818d824e8cb",
160158
- minor: "f0f50906-1516-0826-8e82-009813ce7ff7",
160158
+ minor: "c7b527ee-3282-3248-de94-1c8c40f7d152",
160159
160159
  serious: "15f87aeb-28ec-98ea-7310-4ad04b294127",
160160
160160
  critical: "bf9cf219-e342-12ef-4305-2963f930138d",
160161
160161
  catastrophic: "e04cdc89-ffae-6001-4c06-d14b9fea0eee"
@@ -160250,8 +160250,52 @@ function planSetRisk(model, riskSet, classifierOptions, issueKey) {
160250
160250
  if (!author) return { items: [], skipped: [{ classifier: "*", optionName: "RISK_PLUGIN_AUTHOR missing" }] };
160251
160251
  const items = [];
160252
160252
  const skipped = [];
160253
+ if (model === "cia" && m3.ciaWrapper) {
160254
+ const wrapperClassifiers = ["confidentiality", "availability", "integrity"];
160255
+ const wrapperValues = [];
160256
+ const wrapperSkipped = [];
160257
+ for (const cname of wrapperClassifiers) {
160258
+ const opt = classifierOptions[cname];
160259
+ if (!opt) continue;
160260
+ const cls = m3.classifiers[cname];
160261
+ if (!cls) {
160262
+ wrapperSkipped.push({ classifier: cname, optionName: opt });
160263
+ continue;
160264
+ }
160265
+ const optionId = cls.options[opt];
160266
+ if (!optionId) {
160267
+ wrapperSkipped.push({ classifier: cname, optionName: opt });
160268
+ continue;
160269
+ }
160270
+ wrapperValues.push({ classifierId: cls.id, optionId });
160271
+ }
160272
+ if (wrapperValues.length > 0) {
160273
+ const wrapperPayload = {
160274
+ issueKey,
160275
+ author,
160276
+ riskModelKey: m3.modelKey,
160277
+ riskSetId: setId,
160278
+ classifierValuePayload: {
160279
+ classifierId: m3.ciaWrapper.id,
160280
+ riskModelKey: m3.ciaWrapper.riskModelKey,
160281
+ classifierValues: wrapperValues
160282
+ }
160283
+ };
160284
+ items.push({
160285
+ model,
160286
+ riskSet,
160287
+ classifierName: "cia_wrapper",
160288
+ optionName: wrapperValues.map((v2) => v2.classifierId.slice(0, 8)).join(","),
160289
+ payload: wrapperPayload
160290
+ });
160291
+ }
160292
+ skipped.push(...wrapperSkipped);
160293
+ }
160253
160294
  for (const [classifierName, optionName] of Object.entries(classifierOptions)) {
160254
160295
  if (!optionName) continue;
160296
+ if (model === "cia" && m3.ciaWrapper && (classifierName === "confidentiality" || classifierName === "availability" || classifierName === "integrity")) {
160297
+ continue;
160298
+ }
160255
160299
  const cls = m3.classifiers[classifierName];
160256
160300
  if (!cls) {
160257
160301
  skipped.push({ classifier: classifierName, optionName });
@@ -160333,7 +160377,7 @@ async function runSetPlans(riskStub, plans) {
160333
160377
  out.details.push({
160334
160378
  model: p.name,
160335
160379
  classifier: classifierFromId(p.model, payload.classifierValuePayload.classifierId),
160336
- optionName: payload.classifierValuePayload.optionId,
160380
+ optionName: payload.classifierValuePayload.optionId ?? `wrapper(${payload.classifierValuePayload.classifierValues?.length ?? 0})`,
160337
160381
  result: r2
160338
160382
  });
160339
160383
  }
@@ -184981,7 +185025,7 @@ var xrayClientSecret = process.env.XRAY_CLIENT_SECRET || "";
184981
185025
  var xray = xrayClientId && xrayClientSecret ? new XrayClient(xrayClientId, xrayClientSecret, jiraUrl, jiraEmail, jiraToken) : null;
184982
185026
  var server = new McpServer({
184983
185027
  name: "jira-confluence",
184984
- version: "0.1.24"
185028
+ version: "0.1.25"
184985
185029
  });
184986
185030
  var ctx = { server, jira, confluence, risk, xray };
184987
185031
  registerJiraCrudTools(ctx);