@neobiotechlabs/neobiotech-dev-agent 0.1.23 → 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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/dist/index.js +54 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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.
|
|
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",
|
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:
|
|
159702
|
+
author: finalAuthor
|
|
159701
159703
|
};
|
|
159702
159704
|
try {
|
|
159703
159705
|
const resp = await fetch(endpoint, {
|
|
@@ -160133,7 +160135,7 @@ var RISK_MODELS = {
|
|
|
160133
160135
|
options: {
|
|
160134
160136
|
improvable: "7e044b34-25c4-ffae-5237-48eebb190358",
|
|
160135
160137
|
remote: "58257cb8-59e2-5ec7-dd1d-9e966fb13589",
|
|
160136
|
-
occasional: "6cf5ebce-3b07-69b1-b093-
|
|
160138
|
+
occasional: "6cf5ebce-3b07-69b1-b093-9f0ef9def95c",
|
|
160137
160139
|
probable: "bbcbfdd1-0c02-6105-e8e4-f60ae6cacb5c",
|
|
160138
160140
|
frequent: "e35de539-93d5-f854-c6ed-50067ad8599b"
|
|
160139
160141
|
}
|
|
@@ -160153,7 +160155,7 @@ var RISK_MODELS = {
|
|
|
160153
160155
|
id: "fec8bdcd-0c55-4ab3-87e3-cfd7176aefd5",
|
|
160154
160156
|
options: {
|
|
160155
160157
|
negligible: "a87a6249-03e4-5419-d50e-0818d824e8cb",
|
|
160156
|
-
minor: "
|
|
160158
|
+
minor: "c7b527ee-3282-3248-de94-1c8c40f7d152",
|
|
160157
160159
|
serious: "15f87aeb-28ec-98ea-7310-4ad04b294127",
|
|
160158
160160
|
critical: "bf9cf219-e342-12ef-4305-2963f930138d",
|
|
160159
160161
|
catastrophic: "e04cdc89-ffae-6001-4c06-d14b9fea0eee"
|
|
@@ -160243,12 +160245,57 @@ 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
|
|
160247
|
-
|
|
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 = [];
|
|
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
|
+
}
|
|
160250
160294
|
for (const [classifierName, optionName] of Object.entries(classifierOptions)) {
|
|
160251
160295
|
if (!optionName) continue;
|
|
160296
|
+
if (model === "cia" && m3.ciaWrapper && (classifierName === "confidentiality" || classifierName === "availability" || classifierName === "integrity")) {
|
|
160297
|
+
continue;
|
|
160298
|
+
}
|
|
160252
160299
|
const cls = m3.classifiers[classifierName];
|
|
160253
160300
|
if (!cls) {
|
|
160254
160301
|
skipped.push({ classifier: classifierName, optionName });
|
|
@@ -160330,7 +160377,7 @@ async function runSetPlans(riskStub, plans) {
|
|
|
160330
160377
|
out.details.push({
|
|
160331
160378
|
model: p.name,
|
|
160332
160379
|
classifier: classifierFromId(p.model, payload.classifierValuePayload.classifierId),
|
|
160333
|
-
optionName: payload.classifierValuePayload.optionId
|
|
160380
|
+
optionName: payload.classifierValuePayload.optionId ?? `wrapper(${payload.classifierValuePayload.classifierValues?.length ?? 0})`,
|
|
160334
160381
|
result: r2
|
|
160335
160382
|
});
|
|
160336
160383
|
}
|
|
@@ -184978,7 +185025,7 @@ var xrayClientSecret = process.env.XRAY_CLIENT_SECRET || "";
|
|
|
184978
185025
|
var xray = xrayClientId && xrayClientSecret ? new XrayClient(xrayClientId, xrayClientSecret, jiraUrl, jiraEmail, jiraToken) : null;
|
|
184979
185026
|
var server = new McpServer({
|
|
184980
185027
|
name: "jira-confluence",
|
|
184981
|
-
version: "0.1.
|
|
185028
|
+
version: "0.1.25"
|
|
184982
185029
|
});
|
|
184983
185030
|
var ctx = { server, jira, confluence, risk, xray };
|
|
184984
185031
|
registerJiraCrudTools(ctx);
|