@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/dist/index.js +48 -4
- 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
|
@@ -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-
|
|
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: "
|
|
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.
|
|
185028
|
+
version: "0.1.25"
|
|
184985
185029
|
});
|
|
184986
185030
|
var ctx = { server, jira, confluence, risk, xray };
|
|
184987
185031
|
registerJiraCrudTools(ctx);
|