@bicon/mcp-composer 0.16.0 → 0.17.0
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/README.md +9 -3
- package/dist/index.mjs +56 -26
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
# BICon
|
|
1
|
+
# BICon Composer & Analyst (MCP server)
|
|
2
|
+
|
|
3
|
+
Shown in Claude Desktop as **BICon Composer & Analyst** from the release after 0.16.0 (named BICon Initiative
|
|
4
|
+
Composer until 2026-10-25; the npm package `@bicon/mcp-composer`, the extension
|
|
5
|
+
id (manifest `name`) `bicon-initiative-composer` and the tool names are
|
|
6
|
+
unchanged; only the label changed).
|
|
2
7
|
|
|
3
8
|
An [MCP](https://modelcontextprotocol.io) server that helps an AI client — e.g.
|
|
4
|
-
Claude Desktop — set up a portfolio initiative conversationally
|
|
9
|
+
Claude Desktop — set up a portfolio initiative conversationally, and analyse a
|
|
10
|
+
full portfolio backup read-only (see the analysis tools below). Creating an
|
|
5
11
|
initiative by hand means filling ~15 metadata fields **and rating 30
|
|
6
12
|
sub-dimensions across four scoring dimensions** (plus optional economics and a
|
|
7
13
|
large EU-AI-Act block); this server lets an assistant run that interview and
|
|
@@ -177,7 +183,7 @@ double-click, or Claude Desktop → Settings → Extensions → Install. Claude
|
|
|
177
183
|
Desktop runs the server on its own built-in Node runtime, so there is nothing
|
|
178
184
|
else to install and no configuration file to edit. Then **quit Claude Desktop
|
|
179
185
|
completely and reopen** (see *Stale instances*), start a **new chat** and ask:
|
|
180
|
-
*"Use the BICon
|
|
186
|
+
*"Use the BICon Composer & Analyst to help me set up a new initiative."*
|
|
181
187
|
|
|
182
188
|
Why the extension is primary: current Claude Desktop builds manage local MCP
|
|
183
189
|
servers as Desktop Extensions and treat `claude_desktop_config.json` as their
|
package/dist/index.mjs
CHANGED
|
@@ -19729,7 +19729,7 @@ function date4(params) {
|
|
|
19729
19729
|
}
|
|
19730
19730
|
|
|
19731
19731
|
// src/version.ts
|
|
19732
|
-
var COMPOSER_VERSION = true ? "0.
|
|
19732
|
+
var COMPOSER_VERSION = true ? "0.17.0" : readPackageVersion();
|
|
19733
19733
|
|
|
19734
19734
|
// ../../api-zod/src/generated/api.ts
|
|
19735
19735
|
var HealthCheckResponse = object({
|
|
@@ -19989,7 +19989,7 @@ var listSnapshotsResponseInitiativesItemFollowUpsMax = 50;
|
|
|
19989
19989
|
var listSnapshotsResponseInitiativesItemQualityFactorsItemStateMax = 5;
|
|
19990
19990
|
var listSnapshotsResponseInitiativesItemQualityFactorsItemTargetDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
19991
19991
|
var listSnapshotsResponseInitiativesItemQualityFactorsItemNoteMax = 2e3;
|
|
19992
|
-
var listSnapshotsResponseInitiativesItemQualityFactorsMax =
|
|
19992
|
+
var listSnapshotsResponseInitiativesItemQualityFactorsMax = 8;
|
|
19993
19993
|
var listSnapshotsResponseInitiativesItemDependsOnMax = 1e3;
|
|
19994
19994
|
var listSnapshotsResponseInitiativesItemRequiredSkillsItemRunFteMin = 0;
|
|
19995
19995
|
var listSnapshotsResponseInitiativesItemRequiredSkillsMax = 1e3;
|
|
@@ -20229,7 +20229,7 @@ var ListSnapshotsResponseItem = object({
|
|
|
20229
20229
|
"note": string2().max(listSnapshotsResponseInitiativesItemFollowUpsItemNoteMax).optional()
|
|
20230
20230
|
}).describe("An agreed next step: who does what by when (docs/risks-issues-follow-ups-concept-2026-10-19.md). assigneeUserId is a member of the org (an id that is not is dropped on save, the name kept); milestoneId and riskId name the same initiative's milestones and risks (a link that does not is cleared on save). Dates are yyyy-mm-dd.")).max(listSnapshotsResponseInitiativesItemFollowUpsMax).optional(),
|
|
20231
20231
|
"qualityFactors": array(object({
|
|
20232
|
-
"factor": _enum2(["reliability", "security", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
20232
|
+
"factor": _enum2(["reliability", "security", "safety", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
20233
20233
|
"required": _enum2(["low", "medium", "high"]).optional(),
|
|
20234
20234
|
"state": number2().min(1).max(listSnapshotsResponseInitiativesItemQualityFactorsItemStateMax).optional(),
|
|
20235
20235
|
"targetDate": string2().regex(listSnapshotsResponseInitiativesItemQualityFactorsItemTargetDateRegExp).optional(),
|
|
@@ -20400,7 +20400,7 @@ var createSnapshotBodyInitiativesItemFollowUpsMax = 50;
|
|
|
20400
20400
|
var createSnapshotBodyInitiativesItemQualityFactorsItemStateMax = 5;
|
|
20401
20401
|
var createSnapshotBodyInitiativesItemQualityFactorsItemTargetDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
20402
20402
|
var createSnapshotBodyInitiativesItemQualityFactorsItemNoteMax = 2e3;
|
|
20403
|
-
var createSnapshotBodyInitiativesItemQualityFactorsMax =
|
|
20403
|
+
var createSnapshotBodyInitiativesItemQualityFactorsMax = 8;
|
|
20404
20404
|
var createSnapshotBodyInitiativesItemDependsOnMax = 1e3;
|
|
20405
20405
|
var createSnapshotBodyInitiativesItemRequiredSkillsItemRunFteMin = 0;
|
|
20406
20406
|
var createSnapshotBodyInitiativesItemRequiredSkillsMax = 1e3;
|
|
@@ -20640,7 +20640,7 @@ var CreateSnapshotBody = object({
|
|
|
20640
20640
|
"note": string2().max(createSnapshotBodyInitiativesItemFollowUpsItemNoteMax).optional()
|
|
20641
20641
|
}).describe("An agreed next step: who does what by when (docs/risks-issues-follow-ups-concept-2026-10-19.md). assigneeUserId is a member of the org (an id that is not is dropped on save, the name kept); milestoneId and riskId name the same initiative's milestones and risks (a link that does not is cleared on save). Dates are yyyy-mm-dd.")).max(createSnapshotBodyInitiativesItemFollowUpsMax).optional(),
|
|
20642
20642
|
"qualityFactors": array(object({
|
|
20643
|
-
"factor": _enum2(["reliability", "security", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
20643
|
+
"factor": _enum2(["reliability", "security", "safety", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
20644
20644
|
"required": _enum2(["low", "medium", "high"]).optional(),
|
|
20645
20645
|
"state": number2().min(1).max(createSnapshotBodyInitiativesItemQualityFactorsItemStateMax).optional(),
|
|
20646
20646
|
"targetDate": string2().regex(createSnapshotBodyInitiativesItemQualityFactorsItemTargetDateRegExp).optional(),
|
|
@@ -20817,7 +20817,7 @@ var renameSnapshotResponseInitiativesItemFollowUpsMax = 50;
|
|
|
20817
20817
|
var renameSnapshotResponseInitiativesItemQualityFactorsItemStateMax = 5;
|
|
20818
20818
|
var renameSnapshotResponseInitiativesItemQualityFactorsItemTargetDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
20819
20819
|
var renameSnapshotResponseInitiativesItemQualityFactorsItemNoteMax = 2e3;
|
|
20820
|
-
var renameSnapshotResponseInitiativesItemQualityFactorsMax =
|
|
20820
|
+
var renameSnapshotResponseInitiativesItemQualityFactorsMax = 8;
|
|
20821
20821
|
var renameSnapshotResponseInitiativesItemDependsOnMax = 1e3;
|
|
20822
20822
|
var renameSnapshotResponseInitiativesItemRequiredSkillsItemRunFteMin = 0;
|
|
20823
20823
|
var renameSnapshotResponseInitiativesItemRequiredSkillsMax = 1e3;
|
|
@@ -21057,7 +21057,7 @@ var RenameSnapshotResponse = object({
|
|
|
21057
21057
|
"note": string2().max(renameSnapshotResponseInitiativesItemFollowUpsItemNoteMax).optional()
|
|
21058
21058
|
}).describe("An agreed next step: who does what by when (docs/risks-issues-follow-ups-concept-2026-10-19.md). assigneeUserId is a member of the org (an id that is not is dropped on save, the name kept); milestoneId and riskId name the same initiative's milestones and risks (a link that does not is cleared on save). Dates are yyyy-mm-dd.")).max(renameSnapshotResponseInitiativesItemFollowUpsMax).optional(),
|
|
21059
21059
|
"qualityFactors": array(object({
|
|
21060
|
-
"factor": _enum2(["reliability", "security", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
21060
|
+
"factor": _enum2(["reliability", "security", "safety", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
21061
21061
|
"required": _enum2(["low", "medium", "high"]).optional(),
|
|
21062
21062
|
"state": number2().min(1).max(renameSnapshotResponseInitiativesItemQualityFactorsItemStateMax).optional(),
|
|
21063
21063
|
"targetDate": string2().regex(renameSnapshotResponseInitiativesItemQualityFactorsItemTargetDateRegExp).optional(),
|
|
@@ -21229,7 +21229,7 @@ var listInitiativesResponseFollowUpsMax = 50;
|
|
|
21229
21229
|
var listInitiativesResponseQualityFactorsItemStateMax = 5;
|
|
21230
21230
|
var listInitiativesResponseQualityFactorsItemTargetDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
21231
21231
|
var listInitiativesResponseQualityFactorsItemNoteMax = 2e3;
|
|
21232
|
-
var listInitiativesResponseQualityFactorsMax =
|
|
21232
|
+
var listInitiativesResponseQualityFactorsMax = 8;
|
|
21233
21233
|
var listInitiativesResponseDependsOnMax = 1e3;
|
|
21234
21234
|
var listInitiativesResponseRequiredSkillsItemRunFteMin = 0;
|
|
21235
21235
|
var listInitiativesResponseRequiredSkillsMax = 1e3;
|
|
@@ -21463,7 +21463,7 @@ var ListInitiativesResponseItem = object({
|
|
|
21463
21463
|
"note": string2().max(listInitiativesResponseFollowUpsItemNoteMax).optional()
|
|
21464
21464
|
}).describe("An agreed next step: who does what by when (docs/risks-issues-follow-ups-concept-2026-10-19.md). assigneeUserId is a member of the org (an id that is not is dropped on save, the name kept); milestoneId and riskId name the same initiative's milestones and risks (a link that does not is cleared on save). Dates are yyyy-mm-dd.")).max(listInitiativesResponseFollowUpsMax).optional(),
|
|
21465
21465
|
"qualityFactors": array(object({
|
|
21466
|
-
"factor": _enum2(["reliability", "security", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
21466
|
+
"factor": _enum2(["reliability", "security", "safety", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
21467
21467
|
"required": _enum2(["low", "medium", "high"]).optional(),
|
|
21468
21468
|
"state": number2().min(1).max(listInitiativesResponseQualityFactorsItemStateMax).optional(),
|
|
21469
21469
|
"targetDate": string2().regex(listInitiativesResponseQualityFactorsItemTargetDateRegExp).optional(),
|
|
@@ -21631,7 +21631,7 @@ var createInitiativeBodyOneFollowUpsMax = 50;
|
|
|
21631
21631
|
var createInitiativeBodyOneQualityFactorsItemStateMax = 5;
|
|
21632
21632
|
var createInitiativeBodyOneQualityFactorsItemTargetDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
21633
21633
|
var createInitiativeBodyOneQualityFactorsItemNoteMax = 2e3;
|
|
21634
|
-
var createInitiativeBodyOneQualityFactorsMax =
|
|
21634
|
+
var createInitiativeBodyOneQualityFactorsMax = 8;
|
|
21635
21635
|
var createInitiativeBodyOneDependsOnMax = 1e3;
|
|
21636
21636
|
var createInitiativeBodyOneRequiredSkillsItemRunFteMin = 0;
|
|
21637
21637
|
var createInitiativeBodyOneRequiredSkillsMax = 1e3;
|
|
@@ -21865,7 +21865,7 @@ var CreateInitiativeBody = object({
|
|
|
21865
21865
|
"note": string2().max(createInitiativeBodyOneFollowUpsItemNoteMax).optional()
|
|
21866
21866
|
}).describe("An agreed next step: who does what by when (docs/risks-issues-follow-ups-concept-2026-10-19.md). assigneeUserId is a member of the org (an id that is not is dropped on save, the name kept); milestoneId and riskId name the same initiative's milestones and risks (a link that does not is cleared on save). Dates are yyyy-mm-dd.")).max(createInitiativeBodyOneFollowUpsMax).optional(),
|
|
21867
21867
|
"qualityFactors": array(object({
|
|
21868
|
-
"factor": _enum2(["reliability", "security", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
21868
|
+
"factor": _enum2(["reliability", "security", "safety", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
21869
21869
|
"required": _enum2(["low", "medium", "high"]).optional(),
|
|
21870
21870
|
"state": number2().min(1).max(createInitiativeBodyOneQualityFactorsItemStateMax).optional(),
|
|
21871
21871
|
"targetDate": string2().regex(createInitiativeBodyOneQualityFactorsItemTargetDateRegExp).optional(),
|
|
@@ -22043,7 +22043,7 @@ var getInitiativeResponseFollowUpsMax = 50;
|
|
|
22043
22043
|
var getInitiativeResponseQualityFactorsItemStateMax = 5;
|
|
22044
22044
|
var getInitiativeResponseQualityFactorsItemTargetDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
22045
22045
|
var getInitiativeResponseQualityFactorsItemNoteMax = 2e3;
|
|
22046
|
-
var getInitiativeResponseQualityFactorsMax =
|
|
22046
|
+
var getInitiativeResponseQualityFactorsMax = 8;
|
|
22047
22047
|
var getInitiativeResponseDependsOnMax = 1e3;
|
|
22048
22048
|
var getInitiativeResponseRequiredSkillsItemRunFteMin = 0;
|
|
22049
22049
|
var getInitiativeResponseRequiredSkillsMax = 1e3;
|
|
@@ -22277,7 +22277,7 @@ var GetInitiativeResponse = object({
|
|
|
22277
22277
|
"note": string2().max(getInitiativeResponseFollowUpsItemNoteMax).optional()
|
|
22278
22278
|
}).describe("An agreed next step: who does what by when (docs/risks-issues-follow-ups-concept-2026-10-19.md). assigneeUserId is a member of the org (an id that is not is dropped on save, the name kept); milestoneId and riskId name the same initiative's milestones and risks (a link that does not is cleared on save). Dates are yyyy-mm-dd.")).max(getInitiativeResponseFollowUpsMax).optional(),
|
|
22279
22279
|
"qualityFactors": array(object({
|
|
22280
|
-
"factor": _enum2(["reliability", "security", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
22280
|
+
"factor": _enum2(["reliability", "security", "safety", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
22281
22281
|
"required": _enum2(["low", "medium", "high"]).optional(),
|
|
22282
22282
|
"state": number2().min(1).max(getInitiativeResponseQualityFactorsItemStateMax).optional(),
|
|
22283
22283
|
"targetDate": string2().regex(getInitiativeResponseQualityFactorsItemTargetDateRegExp).optional(),
|
|
@@ -22447,7 +22447,7 @@ var updateInitiativeBodyOneFollowUpsMax = 50;
|
|
|
22447
22447
|
var updateInitiativeBodyOneQualityFactorsItemStateMax = 5;
|
|
22448
22448
|
var updateInitiativeBodyOneQualityFactorsItemTargetDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
22449
22449
|
var updateInitiativeBodyOneQualityFactorsItemNoteMax = 2e3;
|
|
22450
|
-
var updateInitiativeBodyOneQualityFactorsMax =
|
|
22450
|
+
var updateInitiativeBodyOneQualityFactorsMax = 8;
|
|
22451
22451
|
var updateInitiativeBodyOneDependsOnMax = 1e3;
|
|
22452
22452
|
var updateInitiativeBodyOneRequiredSkillsItemRunFteMin = 0;
|
|
22453
22453
|
var updateInitiativeBodyOneRequiredSkillsMax = 1e3;
|
|
@@ -22681,7 +22681,7 @@ var UpdateInitiativeBody = object({
|
|
|
22681
22681
|
"note": string2().max(updateInitiativeBodyOneFollowUpsItemNoteMax).optional()
|
|
22682
22682
|
}).describe("An agreed next step: who does what by when (docs/risks-issues-follow-ups-concept-2026-10-19.md). assigneeUserId is a member of the org (an id that is not is dropped on save, the name kept); milestoneId and riskId name the same initiative's milestones and risks (a link that does not is cleared on save). Dates are yyyy-mm-dd.")).max(updateInitiativeBodyOneFollowUpsMax).optional(),
|
|
22683
22683
|
"qualityFactors": array(object({
|
|
22684
|
-
"factor": _enum2(["reliability", "security", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
22684
|
+
"factor": _enum2(["reliability", "security", "safety", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
22685
22685
|
"required": _enum2(["low", "medium", "high"]).optional(),
|
|
22686
22686
|
"state": number2().min(1).max(updateInitiativeBodyOneQualityFactorsItemStateMax).optional(),
|
|
22687
22687
|
"targetDate": string2().regex(updateInitiativeBodyOneQualityFactorsItemTargetDateRegExp).optional(),
|
|
@@ -22856,7 +22856,7 @@ var updateInitiativeResponseFollowUpsMax = 50;
|
|
|
22856
22856
|
var updateInitiativeResponseQualityFactorsItemStateMax = 5;
|
|
22857
22857
|
var updateInitiativeResponseQualityFactorsItemTargetDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
22858
22858
|
var updateInitiativeResponseQualityFactorsItemNoteMax = 2e3;
|
|
22859
|
-
var updateInitiativeResponseQualityFactorsMax =
|
|
22859
|
+
var updateInitiativeResponseQualityFactorsMax = 8;
|
|
22860
22860
|
var updateInitiativeResponseDependsOnMax = 1e3;
|
|
22861
22861
|
var updateInitiativeResponseRequiredSkillsItemRunFteMin = 0;
|
|
22862
22862
|
var updateInitiativeResponseRequiredSkillsMax = 1e3;
|
|
@@ -23090,7 +23090,7 @@ var UpdateInitiativeResponse = object({
|
|
|
23090
23090
|
"note": string2().max(updateInitiativeResponseFollowUpsItemNoteMax).optional()
|
|
23091
23091
|
}).describe("An agreed next step: who does what by when (docs/risks-issues-follow-ups-concept-2026-10-19.md). assigneeUserId is a member of the org (an id that is not is dropped on save, the name kept); milestoneId and riskId name the same initiative's milestones and risks (a link that does not is cleared on save). Dates are yyyy-mm-dd.")).max(updateInitiativeResponseFollowUpsMax).optional(),
|
|
23092
23092
|
"qualityFactors": array(object({
|
|
23093
|
-
"factor": _enum2(["reliability", "security", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
23093
|
+
"factor": _enum2(["reliability", "security", "safety", "performance", "usability", "maintainability", "compatibility", "dataQuality"]),
|
|
23094
23094
|
"required": _enum2(["low", "medium", "high"]).optional(),
|
|
23095
23095
|
"state": number2().min(1).max(updateInitiativeResponseQualityFactorsItemStateMax).optional(),
|
|
23096
23096
|
"targetDate": string2().regex(updateInitiativeResponseQualityFactorsItemTargetDateRegExp).optional(),
|
|
@@ -23377,6 +23377,7 @@ var MAX_FOLLOW_UPS_PER_INITIATIVE = 50;
|
|
|
23377
23377
|
var QUALITY_FACTORS = [
|
|
23378
23378
|
"reliability",
|
|
23379
23379
|
"security",
|
|
23380
|
+
"safety",
|
|
23380
23381
|
"performance",
|
|
23381
23382
|
"usability",
|
|
23382
23383
|
"maintainability",
|
|
@@ -23719,6 +23720,7 @@ var EN_DIGITAL = {
|
|
|
23719
23720
|
// Quality factor help (docs/quality-factors-concept-2026-10-21.md).
|
|
23720
23721
|
"quality.factor.reliability.help": "Does the service stay up and behave correctly? Availability against the agreed SLA, incident rate, recovery time after an outage, batch and job success.",
|
|
23721
23722
|
"quality.factor.security.help": "Is the platform protected? Access control and roles, protection of customer data, secure interfaces, pen test or security review done, findings closed.",
|
|
23723
|
+
"quality.factor.safety.help": "Can it cause harm when it fails? Safety-critical processes it touches (payments, physical operations, client advice), fail-safe behaviour and a manual fallback, hazard or impact analysis done, safety incidents.",
|
|
23722
23724
|
"quality.factor.performance.help": "Is it fast enough at peak load? Page and API response times, throughput at month-end or campaign peaks, headroom to grow.",
|
|
23723
23725
|
"quality.factor.usability.help": "Can customers and staff use it without help? Task completion, adoption, accessibility, number of support calls.",
|
|
23724
23726
|
"quality.factor.maintainability.help": "Can the team change and run it safely? Code quality, automated tests and deployment, documentation, technical debt, dependency on single experts.",
|
|
@@ -23937,6 +23939,7 @@ var DE_DIGITAL = {
|
|
|
23937
23939
|
// Quality factor help (docs/quality-factors-concept-2026-10-21.md).
|
|
23938
23940
|
"quality.factor.reliability.help": "Bleibt der Dienst verf\xFCgbar und arbeitet korrekt? Verf\xFCgbarkeit gegen\xFCber dem vereinbarten SLA, St\xF6rungsrate, Wiederherstellungszeit nach Ausf\xE4llen, Erfolg von Batches und Jobs.",
|
|
23939
23941
|
"quality.factor.security.help": "Ist die Plattform gesch\xFCtzt? Zugriffsschutz und Rollen, Schutz der Kundendaten, sichere Schnittstellen, Pentest oder Sicherheitspr\xFCfung erfolgt, Befunde behoben.",
|
|
23942
|
+
"quality.factor.safety.help": "Kann es bei einem Fehler Schaden anrichten? Sicherheitskritische Abl\xE4ufe, die es ber\xFChrt (Zahlungen, physische Abl\xE4ufe, Kundenberatung), ausfallsicheres Verhalten und ein manueller R\xFCckfall, Gef\xE4hrdungs- oder Auswirkungsanalyse erfolgt, Vorf\xE4lle mit Personen- oder Sachschaden.",
|
|
23940
23943
|
"quality.factor.performance.help": "Ist es bei Spitzenlast schnell genug? Antwortzeiten von Seiten und APIs, Durchsatz am Monatsende oder bei Kampagnen, Reserve f\xFCr Wachstum.",
|
|
23941
23944
|
"quality.factor.usability.help": "K\xF6nnen Kundinnen, Kunden und Mitarbeitende es ohne Hilfe nutzen? Aufgabenerfolg, Akzeptanz, Barrierefreiheit, Zahl der Supportanfragen.",
|
|
23942
23945
|
"quality.factor.maintainability.help": "Kann das Team es sicher \xE4ndern und betreiben? Codequalit\xE4t, automatisierte Tests und Deployments, Dokumentation, technische Schulden, Abh\xE4ngigkeit von einzelnen Fachleuten.",
|
|
@@ -24209,11 +24212,25 @@ var EN_INNOVATION = {
|
|
|
24209
24212
|
// Quality factor help (docs/quality-factors-concept-2026-10-21.md).
|
|
24210
24213
|
"quality.factor.reliability.help": "Does the prototype or pilot work reliably enough for the next stage? Repeatable results, uptime during the trial, known failure modes.",
|
|
24211
24214
|
"quality.factor.security.help": "Is what the pilot handles protected? Access to lab and trial data, protection of IP, a security review before real users or data come in.",
|
|
24215
|
+
"quality.factor.safety.help": "Is it safe for the people and the environment it reaches? Hazard and risk analysis (e.g. ISO 14971 for medical devices), safety testing in the trial, adverse events, what must be shown before the next stage.",
|
|
24212
24216
|
"quality.factor.performance.help": "Will it hold at the next stage's scale? Throughput and cost per unit at pilot volume, a credible path to production volume. Often still Low required before Pilot.",
|
|
24213
24217
|
"quality.factor.usability.help": "Can the intended users work with it? Feedback from trial users, task success, what must change before roll-out.",
|
|
24214
|
-
"quality.factor.maintainability.help": "Can
|
|
24215
|
-
"quality.factor.compatibility.help": "Does it fit
|
|
24216
|
-
"quality.factor.dataQuality.help": "Is the data behind the results fit for purpose? Accuracy, completeness and lineage of experimental and trial data (ISO/IEC 25012). The Quality of Evidence slider rates feasibility before delivery; this rates the delivered state."
|
|
24218
|
+
"quality.factor.maintainability.help": "Can the work be handed over? Someone other than the inventors can run and change it: documentation, a reproducible build or protocol, technical debt taken on for speed, no single expert. Often still Low required before Pilot.",
|
|
24219
|
+
"quality.factor.compatibility.help": "Does it fit the operation that takes it over? Interfaces to lab, clinical, production or partner systems and their processes, standards, lock-in to a partner.",
|
|
24220
|
+
"quality.factor.dataQuality.help": "Is the data behind the results fit for purpose? Accuracy, completeness and lineage of experimental and trial data (ISO/IEC 25012). The Quality of Evidence slider rates feasibility before delivery; this rates the delivered state.",
|
|
24221
|
+
// R&D labels for the same factor keys (docs/quality-factors-innovation-concept-2026-10-25.md):
|
|
24222
|
+
// the stored keys stay, so ratings survive a mode switch.
|
|
24223
|
+
"quality.factor.reliability": "Robustness and reproducibility",
|
|
24224
|
+
"quality.factor.security": "Security and IP protection",
|
|
24225
|
+
"quality.factor.safety": "Product safety",
|
|
24226
|
+
"quality.factor.performance": "Scale-up and unit cost",
|
|
24227
|
+
"quality.factor.usability": "User acceptance",
|
|
24228
|
+
"quality.factor.maintainability": "Transferability",
|
|
24229
|
+
"quality.factor.compatibility": "Fit with operations",
|
|
24230
|
+
"quality.factor.dataQuality": "Data and result quality",
|
|
24231
|
+
"evaluate.quality.subtitle": "Is the result solid enough for the next stage? Rate each factor that matters: how much it is required here, and how well the result meets it today. Factors after ISO/IEC 25010, adapted for R&D. The ratings flag gaps; they do not change any score.",
|
|
24232
|
+
"evaluate.quality.notePlaceholder": "e.g. results repeated at 2 sites; transfer protocol v1",
|
|
24233
|
+
"method.qf.what": "Each initiative can rate eight <strong>quality factors</strong> of the result it delivers, after the product-quality model of ISO/IEC 25010:2023, adapted for R&D: robustness and reproducibility, security and IP protection, product safety, scale-up and unit cost, user acceptance, transferability, fit with operations, and data and result quality (ISO/IEC 25012). The factors are the same in every mode; labels and help texts follow the mode, so ratings survive a mode switch."
|
|
24217
24234
|
};
|
|
24218
24235
|
var DE_INNOVATION = {
|
|
24219
24236
|
"brand.app": "BICon Portfolio Steering",
|
|
@@ -24481,11 +24498,24 @@ var DE_INNOVATION = {
|
|
|
24481
24498
|
// Quality factor help (docs/quality-factors-concept-2026-10-21.md).
|
|
24482
24499
|
"quality.factor.reliability.help": "Funktioniert der Prototyp oder Pilot zuverl\xE4ssig genug f\xFCr die n\xE4chste Stufe? Wiederholbare Ergebnisse, Verf\xFCgbarkeit w\xE4hrend des Versuchs, bekannte Fehlerbilder.",
|
|
24483
24500
|
"quality.factor.security.help": "Ist gesch\xFCtzt, was der Pilot verarbeitet? Zugriff auf Labor- und Versuchsdaten, Schutz des geistigen Eigentums, Sicherheitspr\xFCfung, bevor echte Nutzer oder Daten dazukommen.",
|
|
24501
|
+
"quality.factor.safety.help": "Ist es sicher f\xFCr die Menschen und die Umwelt, die es erreicht? Gef\xE4hrdungs- und Risikoanalyse (z. B. ISO 14971 f\xFCr Medizinprodukte), Sicherheitstests im Versuch, unerw\xFCnschte Ereignisse, was vor der n\xE4chsten Stufe nachgewiesen sein muss.",
|
|
24484
24502
|
"quality.factor.performance.help": "H\xE4lt es im Massstab der n\xE4chsten Stufe? Durchsatz und St\xFCckkosten im Pilotvolumen, ein glaubw\xFCrdiger Weg zum Produktionsvolumen. Vor dem Pilot oft noch niedrig gefordert.",
|
|
24485
24503
|
"quality.factor.usability.help": "K\xF6nnen die vorgesehenen Nutzerinnen und Nutzer damit arbeiten? R\xFCckmeldungen aus dem Versuch, Aufgabenerfolg, was vor dem Rollout \xE4ndern muss.",
|
|
24486
|
-
"quality.factor.maintainability.help": "
|
|
24487
|
-
"quality.factor.compatibility.help": "Passt es
|
|
24488
|
-
"quality.factor.dataQuality.help": "Sind die Daten hinter den Ergebnissen f\xFCr den Zweck geeignet? Richtigkeit, Vollst\xE4ndigkeit und Herkunft der Versuchs- und Testdaten (ISO/IEC 25012). Der Schieberegler Qualit\xE4t der Evidenz bewertet die Machbarkeit vor der Lieferung; hier wird der gelieferte Stand bewertet."
|
|
24504
|
+
"quality.factor.maintainability.help": "L\xE4sst sich die Arbeit \xFCbergeben? Jemand ausser den Erfinderinnen und Erfindern kann das Ergebnis betreiben und \xE4ndern: Dokumentation, reproduzierbarer Aufbau oder reproduzierbares Protokoll, technische Schulden zugunsten der Geschwindigkeit, keine Abh\xE4ngigkeit von einzelnen Fachleuten. Vor dem Pilot oft noch niedrig gefordert.",
|
|
24505
|
+
"quality.factor.compatibility.help": "Passt es in den Betrieb, der es \xFCbernimmt? Schnittstellen zu Labor-, Klinik-, Produktions- oder Partnersystemen und deren Abl\xE4ufen, Standards, Abh\xE4ngigkeit von einem Partner.",
|
|
24506
|
+
"quality.factor.dataQuality.help": "Sind die Daten hinter den Ergebnissen f\xFCr den Zweck geeignet? Richtigkeit, Vollst\xE4ndigkeit und Herkunft der Versuchs- und Testdaten (ISO/IEC 25012). Der Schieberegler Qualit\xE4t der Evidenz bewertet die Machbarkeit vor der Lieferung; hier wird der gelieferte Stand bewertet.",
|
|
24507
|
+
// F&E-Bezeichnungen für dieselben Faktorschlüssel (docs/quality-factors-innovation-concept-2026-10-25.md).
|
|
24508
|
+
"quality.factor.reliability": "Robustheit und Reproduzierbarkeit",
|
|
24509
|
+
"quality.factor.security": "Informationssicherheit und Schutz geistigen Eigentums",
|
|
24510
|
+
"quality.factor.safety": "Produktsicherheit",
|
|
24511
|
+
"quality.factor.performance": "Hochskalierung und St\xFCckkosten",
|
|
24512
|
+
"quality.factor.usability": "Nutzerakzeptanz",
|
|
24513
|
+
"quality.factor.maintainability": "\xDCbertragbarkeit",
|
|
24514
|
+
"quality.factor.compatibility": "Integration in den Betrieb",
|
|
24515
|
+
"quality.factor.dataQuality": "Daten- und Ergebnisqualit\xE4t",
|
|
24516
|
+
"evaluate.quality.subtitle": "Ist das Ergebnis solide genug f\xFCr die n\xE4chste Stufe? Bewerten Sie jeden Faktor, der z\xE4hlt: wie stark er hier gefordert ist und wie gut das Ergebnis ihn heute erf\xFCllt. Faktoren nach ISO/IEC 25010, ausgelegt f\xFCr F&E. Die Bewertung zeigt L\xFCcken; sie ver\xE4ndert keinen Score.",
|
|
24517
|
+
"evaluate.quality.notePlaceholder": "z. B. Ergebnisse an 2 Standorten wiederholt; Transferprotokoll v1",
|
|
24518
|
+
"method.qf.what": "Jede Initiative kann acht <strong>Qualit\xE4tsfaktoren</strong> des gelieferten Ergebnisses bewerten, nach dem Produktqualit\xE4tsmodell der ISO/IEC 25010:2023, f\xFCr F&E ausgelegt: Robustheit und Reproduzierbarkeit, Informationssicherheit und Schutz geistigen Eigentums, Produktsicherheit, Hochskalierung und St\xFCckkosten, Nutzerakzeptanz, \xDCbertragbarkeit, Integration in den Betrieb sowie Daten- und Ergebnisqualit\xE4t (ISO/IEC 25012). Die Faktoren sind in jedem Modus gleich; Bezeichnungen und Hilfetexte folgen dem Modus, die Bewertungen bleiben bei einem Moduswechsel erhalten."
|
|
24489
24519
|
};
|
|
24490
24520
|
var DEMO_DIGITAL = {
|
|
24491
24521
|
"Advisor Copilot": {
|
|
@@ -25862,8 +25892,8 @@ var OPTIONAL_SECTIONS = [
|
|
|
25862
25892
|
{
|
|
25863
25893
|
key: "qualityFactors",
|
|
25864
25894
|
hint: {
|
|
25865
|
-
en: "[{factor, required?, state?, targetDate?, note?}] \u2014 is the delivered solution good enough to run? One row per factor that was rated (after ISO/IEC 25010): reliability (availability, stable output), security, performance (speed, running cost at load), usability, maintainability, compatibility (interfaces, lock-in), dataQuality (the delivered data, not the feasibility slider). required low | medium | high = how much the factor matters here; state 1\u20135 as a whole number (1 unknown or poor, 2 weak, 3 adequate, 4 good, 5 proven in production); targetDate when a gap should be closed; note = evidence or an SLA figure. A gap = required high with state 1\u20132, or required medium with state 1; nothing here changes a score. Ask for the factors that matter once the initiative is at Pilot or later. On an update, send every rating the initiative keeps: the file replaces the list.",
|
|
25866
|
-
de: "[{factor, required?, state?, targetDate?, note?}] \u2014 ist die gelieferte L\xF6sung gut genug f\xFCr den Betrieb? Eine Zeile je bewertetem Faktor (nach ISO/IEC 25010): reliability (Verf\xFCgbarkeit, stabile Ergebnisse), security, performance (Tempo, Betriebskosten unter Last), usability, maintainability, compatibility (Schnittstellen, Anbieterabh\xE4ngigkeit), dataQuality (die gelieferten Daten, nicht der Machbarkeits-Regler). required low | medium | high = wie stark der Faktor hier z\xE4hlt; state 1\u20135 als ganze Zahl (1 unbekannt oder ungen\xFCgend, 2 schwach, 3 ausreichend, 4 gut, 5 im Betrieb bew\xE4hrt); targetDate, bis wann eine L\xFCcke geschlossen sein soll; note = Nachweis oder SLA-Wert. Eine L\xFCcke = gefordert hoch mit Stand 1\u20132 oder gefordert mittel mit Stand 1; nichts davon \xE4ndert einen Score. Ab Pilot nach den Faktoren fragen, die z\xE4hlen. Bei einem Update alle Bewertungen senden, die bleiben sollen: die Datei ersetzt die Liste."
|
|
25895
|
+
en: "[{factor, required?, state?, targetDate?, note?}] \u2014 is the delivered solution good enough to run? One row per factor that was rated (after ISO/IEC 25010): reliability (availability, stable output), security, safety (harm to people or the environment, fail-safe behaviour), performance (speed, running cost at load), usability, maintainability, compatibility (interfaces, lock-in), dataQuality (the delivered data, not the feasibility slider). In an innovation portfolio the app names them for R&D: reliability = robustness and reproducibility, security = security and IP protection, safety = product safety, performance = scale-up and unit cost, usability = user acceptance, maintainability = transferability, compatibility = fit with operations, dataQuality = data and result quality. required low | medium | high = how much the factor matters here; state 1\u20135 as a whole number (1 unknown or poor, 2 weak, 3 adequate, 4 good, 5 proven in production); targetDate when a gap should be closed; note = evidence or an SLA figure. A gap = required high with state 1\u20132, or required medium with state 1; nothing here changes a score. Ask for the factors that matter once the initiative is at Pilot or later. On an update, send every rating the initiative keeps: the file replaces the list.",
|
|
25896
|
+
de: "[{factor, required?, state?, targetDate?, note?}] \u2014 ist die gelieferte L\xF6sung gut genug f\xFCr den Betrieb? Eine Zeile je bewertetem Faktor (nach ISO/IEC 25010): reliability (Verf\xFCgbarkeit, stabile Ergebnisse), security, safety (Schaden f\xFCr Menschen oder Umwelt, ausfallsicheres Verhalten), performance (Tempo, Betriebskosten unter Last), usability, maintainability, compatibility (Schnittstellen, Anbieterabh\xE4ngigkeit), dataQuality (die gelieferten Daten, nicht der Machbarkeits-Regler). In einem Innovationsportfolio nennt die App sie f\xFCr F&E: reliability = Robustheit und Reproduzierbarkeit, security = Informationssicherheit und Schutz geistigen Eigentums, safety = Produktsicherheit, performance = Hochskalierung und St\xFCckkosten, usability = Nutzerakzeptanz, maintainability = \xDCbertragbarkeit, compatibility = Integration in den Betrieb, dataQuality = Daten- und Ergebnisqualit\xE4t. required low | medium | high = wie stark der Faktor hier z\xE4hlt; state 1\u20135 als ganze Zahl (1 unbekannt oder ungen\xFCgend, 2 schwach, 3 ausreichend, 4 gut, 5 im Betrieb bew\xE4hrt); targetDate, bis wann eine L\xFCcke geschlossen sein soll; note = Nachweis oder SLA-Wert. Eine L\xFCcke = gefordert hoch mit Stand 1\u20132 oder gefordert mittel mit Stand 1; nichts davon \xE4ndert einen Score. Ab Pilot nach den Faktoren fragen, die z\xE4hlen. Bei einem Update alle Bewertungen senden, die bleiben sollen: die Datei ersetzt die Liste."
|
|
25867
25897
|
}
|
|
25868
25898
|
},
|
|
25869
25899
|
{
|
|
@@ -26147,7 +26177,7 @@ var SECTION_DESCRIPTIONS = {
|
|
|
26147
26177
|
milestones: `Milestones (max 30, title \u2264300 chars): baselineDate = the plan, forecastDate = today's expectation (omit = baseline), doneDate = reached. Dates dd/mm/yyyy or yyyy-mm-dd; ids minted \u2014 an id you give (e.g. "m1") is a label a follow-up's milestoneId can point at. An update replaces the list: send all.`,
|
|
26148
26178
|
risks: `Risks (max 50, title \u2264300 chars): category delivery|vendor|data|people|regulatory|technical|financial; probability and impact 1\u20135 as whole numbers (score = product); status open|mitigating|closed|occurred (occurred = an issue, with occurredDate); residualProbability + residualImpact = the expectation after mitigation (both or neither); owner (free text), mitigation (the plan), raisedDate, reviewDate, note. Dates dd/mm/yyyy or yyyy-mm-dd; ids minted \u2014 an id you give (e.g. "r1") is a label a follow-up's riskId can point at. An update replaces the list: send all.`,
|
|
26149
26179
|
followUps: "Follow-ups (max 50, title \u2264300 chars): who does what by when \u2014 title, dueDate, assigneeName (free text; assigneeUserId only when the user gives a member id from the app), doneDate once done, note; milestoneId / riskId = the id label of a milestone or risk in THIS spec (the Composer keeps the link when it mints the stored ids). Dates dd/mm/yyyy or yyyy-mm-dd; ids minted. An update replaces the list: send all.",
|
|
26150
|
-
qualityFactors: "Quality factors of the delivered solution (one row per factor, at most
|
|
26180
|
+
qualityFactors: "Quality factors of the delivered solution (one row per factor, at most 8): factor reliability|security|safety|performance|usability|maintainability|compatibility|dataQuality; required low|medium|high; state 1\u20135 as a whole number (1 unknown or poor \u2026 5 proven in production); targetDate; note (evidence or SLA). Leave out a factor nobody rated. An update replaces the list: send all.",
|
|
26151
26181
|
requiredSkills: "Required skills [{skillId, fte, runFte?}] \u2014 fte is the build-phase demand, the optional runFte the run-team demand after the planned end (absent = build fte continues, 0 = no run demand). skillId must be the id of a skill that exists in the organisation. With the portfolio context the Composer validates it (read_portfolio_context \u2192 lists.skills gives id + name); without it, leave the list empty and link skills in the app."
|
|
26152
26182
|
};
|
|
26153
26183
|
var contextWire = () => external_exports.preprocess(parseIfString, external_exports.union([external_exports.string().regex(/^ctx_[0-9a-f]{16}$/, "a contextId looks like ctx_<16 hex>"), external_exports.object({}).passthrough()]));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bicon/mcp-composer",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server that helps an AI client compose a valid BICon portfolio initiative and
|
|
3
|
+
"version": "0.17.0",
|
|
4
|
+
"description": "BICon Composer & Analyst: MCP server that helps an AI client compose a valid BICon portfolio initiative as an import file, and analyse a full portfolio backup read-only (draft-first, no auth, no API calls).",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "BICon Establishment",
|
|
7
7
|
"homepage": "https://www.bicon.digital",
|