@bicon/mcp-composer 0.8.0 → 0.9.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.
Files changed (2) hide show
  1. package/dist/index.mjs +88 -1
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -12,7 +12,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
12
12
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
13
13
 
14
14
  // src/version.ts
15
- var COMPOSER_VERSION = true ? "0.8.0" : readPackageVersion();
15
+ var COMPOSER_VERSION = true ? "0.9.0" : readPackageVersion();
16
16
 
17
17
  // ../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js
18
18
  var external_exports = {};
@@ -4271,6 +4271,7 @@ var listSnapshotsResponseInitiativesItemBusinessUnitMax = 200;
4271
4271
  var listSnapshotsResponseInitiativesItemOwnerMax = 200;
4272
4272
  var listSnapshotsResponseInitiativesItemDescriptionMax = 1e4;
4273
4273
  var listSnapshotsResponseInitiativesItemAiCategoryMax = 200;
4274
+ var listSnapshotsResponseInitiativesItemDriverBasisMax = 200;
4274
4275
  var listSnapshotsResponseInitiativesItemTagsItemMax = 200;
4275
4276
  var listSnapshotsResponseInitiativesItemTagsMax = 1e3;
4276
4277
  var listSnapshotsResponseInitiativesItemDocsUrlMax = 2e3;
@@ -4356,6 +4357,8 @@ var ListSnapshotsResponseItem = objectType({
4356
4357
  "vendorDependency": enumType(["None", "Single Vendor", "Multi-Vendor", "Internal Build", "Hybrid"]),
4357
4358
  "solutionType": enumType(["Internal", "External", "Hybrid"]),
4358
4359
  "aiCategory": stringType().max(listSnapshotsResponseInitiativesItemAiCategoryMax),
4360
+ "driver": enumType(["regulatory", "market", "internal"]).optional().describe('Why the initiative exists. "regulatory" is must-do work required by law, a regulator or a binding contract.'),
4361
+ "driverBasis": stringType().max(listSnapshotsResponseInitiativesItemDriverBasisMax).optional().describe('Optional reference for the driver, e.g. the law or article ("DORA Art. 28").'),
4359
4362
  "tags": arrayType(stringType().max(listSnapshotsResponseInitiativesItemTagsItemMax)).max(listSnapshotsResponseInitiativesItemTagsMax),
4360
4363
  "docsUrl": stringType().max(listSnapshotsResponseInitiativesItemDocsUrlMax).optional().describe("Link to the project documentation (Confluence, SharePoint, \u2026)"),
4361
4364
  "pmUrl": stringType().max(listSnapshotsResponseInitiativesItemPmUrlMax).optional().describe("Link to the project-management tool (Jira, MS Project, \u2026)"),
@@ -4668,6 +4671,7 @@ var createSnapshotBodyInitiativesItemBusinessUnitMax = 200;
4668
4671
  var createSnapshotBodyInitiativesItemOwnerMax = 200;
4669
4672
  var createSnapshotBodyInitiativesItemDescriptionMax = 1e4;
4670
4673
  var createSnapshotBodyInitiativesItemAiCategoryMax = 200;
4674
+ var createSnapshotBodyInitiativesItemDriverBasisMax = 200;
4671
4675
  var createSnapshotBodyInitiativesItemTagsItemMax = 200;
4672
4676
  var createSnapshotBodyInitiativesItemTagsMax = 1e3;
4673
4677
  var createSnapshotBodyInitiativesItemDocsUrlMax = 2e3;
@@ -4753,6 +4757,8 @@ var CreateSnapshotBody = objectType({
4753
4757
  "vendorDependency": enumType(["None", "Single Vendor", "Multi-Vendor", "Internal Build", "Hybrid"]),
4754
4758
  "solutionType": enumType(["Internal", "External", "Hybrid"]),
4755
4759
  "aiCategory": stringType().max(createSnapshotBodyInitiativesItemAiCategoryMax),
4760
+ "driver": enumType(["regulatory", "market", "internal"]).optional().describe('Why the initiative exists. "regulatory" is must-do work required by law, a regulator or a binding contract.'),
4761
+ "driverBasis": stringType().max(createSnapshotBodyInitiativesItemDriverBasisMax).optional().describe('Optional reference for the driver, e.g. the law or article ("DORA Art. 28").'),
4756
4762
  "tags": arrayType(stringType().max(createSnapshotBodyInitiativesItemTagsItemMax)).max(createSnapshotBodyInitiativesItemTagsMax),
4757
4763
  "docsUrl": stringType().max(createSnapshotBodyInitiativesItemDocsUrlMax).optional().describe("Link to the project documentation (Confluence, SharePoint, \u2026)"),
4758
4764
  "pmUrl": stringType().max(createSnapshotBodyInitiativesItemPmUrlMax).optional().describe("Link to the project-management tool (Jira, MS Project, \u2026)"),
@@ -5071,6 +5077,7 @@ var renameSnapshotResponseInitiativesItemBusinessUnitMax = 200;
5071
5077
  var renameSnapshotResponseInitiativesItemOwnerMax = 200;
5072
5078
  var renameSnapshotResponseInitiativesItemDescriptionMax = 1e4;
5073
5079
  var renameSnapshotResponseInitiativesItemAiCategoryMax = 200;
5080
+ var renameSnapshotResponseInitiativesItemDriverBasisMax = 200;
5074
5081
  var renameSnapshotResponseInitiativesItemTagsItemMax = 200;
5075
5082
  var renameSnapshotResponseInitiativesItemTagsMax = 1e3;
5076
5083
  var renameSnapshotResponseInitiativesItemDocsUrlMax = 2e3;
@@ -5156,6 +5163,8 @@ var RenameSnapshotResponse = objectType({
5156
5163
  "vendorDependency": enumType(["None", "Single Vendor", "Multi-Vendor", "Internal Build", "Hybrid"]),
5157
5164
  "solutionType": enumType(["Internal", "External", "Hybrid"]),
5158
5165
  "aiCategory": stringType().max(renameSnapshotResponseInitiativesItemAiCategoryMax),
5166
+ "driver": enumType(["regulatory", "market", "internal"]).optional().describe('Why the initiative exists. "regulatory" is must-do work required by law, a regulator or a binding contract.'),
5167
+ "driverBasis": stringType().max(renameSnapshotResponseInitiativesItemDriverBasisMax).optional().describe('Optional reference for the driver, e.g. the law or article ("DORA Art. 28").'),
5159
5168
  "tags": arrayType(stringType().max(renameSnapshotResponseInitiativesItemTagsItemMax)).max(renameSnapshotResponseInitiativesItemTagsMax),
5160
5169
  "docsUrl": stringType().max(renameSnapshotResponseInitiativesItemDocsUrlMax).optional().describe("Link to the project documentation (Confluence, SharePoint, \u2026)"),
5161
5170
  "pmUrl": stringType().max(renameSnapshotResponseInitiativesItemPmUrlMax).optional().describe("Link to the project-management tool (Jira, MS Project, \u2026)"),
@@ -5469,6 +5478,7 @@ var listInitiativesResponseBusinessUnitMax = 200;
5469
5478
  var listInitiativesResponseOwnerMax = 200;
5470
5479
  var listInitiativesResponseDescriptionMax = 1e4;
5471
5480
  var listInitiativesResponseAiCategoryMax = 200;
5481
+ var listInitiativesResponseDriverBasisMax = 200;
5472
5482
  var listInitiativesResponseTagsItemMax = 200;
5473
5483
  var listInitiativesResponseTagsMax = 1e3;
5474
5484
  var listInitiativesResponseDocsUrlMax = 2e3;
@@ -5548,6 +5558,8 @@ var ListInitiativesResponseItem = objectType({
5548
5558
  "vendorDependency": enumType(["None", "Single Vendor", "Multi-Vendor", "Internal Build", "Hybrid"]),
5549
5559
  "solutionType": enumType(["Internal", "External", "Hybrid"]),
5550
5560
  "aiCategory": stringType().max(listInitiativesResponseAiCategoryMax),
5561
+ "driver": enumType(["regulatory", "market", "internal"]).optional().describe('Why the initiative exists. "regulatory" is must-do work required by law, a regulator or a binding contract.'),
5562
+ "driverBasis": stringType().max(listInitiativesResponseDriverBasisMax).optional().describe('Optional reference for the driver, e.g. the law or article ("DORA Art. 28").'),
5551
5563
  "tags": arrayType(stringType().max(listInitiativesResponseTagsItemMax)).max(listInitiativesResponseTagsMax),
5552
5564
  "docsUrl": stringType().max(listInitiativesResponseDocsUrlMax).optional().describe("Link to the project documentation (Confluence, SharePoint, \u2026)"),
5553
5565
  "pmUrl": stringType().max(listInitiativesResponsePmUrlMax).optional().describe("Link to the project-management tool (Jira, MS Project, \u2026)"),
@@ -5857,6 +5869,7 @@ var createInitiativeBodyOneBusinessUnitMax = 200;
5857
5869
  var createInitiativeBodyOneOwnerMax = 200;
5858
5870
  var createInitiativeBodyOneDescriptionMax = 1e4;
5859
5871
  var createInitiativeBodyOneAiCategoryMax = 200;
5872
+ var createInitiativeBodyOneDriverBasisMax = 200;
5860
5873
  var createInitiativeBodyOneTagsItemMax = 200;
5861
5874
  var createInitiativeBodyOneTagsMax = 1e3;
5862
5875
  var createInitiativeBodyOneDocsUrlMax = 2e3;
@@ -5936,6 +5949,8 @@ var CreateInitiativeBody = objectType({
5936
5949
  "vendorDependency": enumType(["None", "Single Vendor", "Multi-Vendor", "Internal Build", "Hybrid"]),
5937
5950
  "solutionType": enumType(["Internal", "External", "Hybrid"]),
5938
5951
  "aiCategory": stringType().max(createInitiativeBodyOneAiCategoryMax),
5952
+ "driver": enumType(["regulatory", "market", "internal"]).optional().describe('Why the initiative exists. "regulatory" is must-do work required by law, a regulator or a binding contract.'),
5953
+ "driverBasis": stringType().max(createInitiativeBodyOneDriverBasisMax).optional().describe('Optional reference for the driver, e.g. the law or article ("DORA Art. 28").'),
5939
5954
  "tags": arrayType(stringType().max(createInitiativeBodyOneTagsItemMax)).max(createInitiativeBodyOneTagsMax),
5940
5955
  "docsUrl": stringType().max(createInitiativeBodyOneDocsUrlMax).optional().describe("Link to the project documentation (Confluence, SharePoint, \u2026)"),
5941
5956
  "pmUrl": stringType().max(createInitiativeBodyOnePmUrlMax).optional().describe("Link to the project-management tool (Jira, MS Project, \u2026)"),
@@ -6255,6 +6270,7 @@ var getInitiativeResponseBusinessUnitMax = 200;
6255
6270
  var getInitiativeResponseOwnerMax = 200;
6256
6271
  var getInitiativeResponseDescriptionMax = 1e4;
6257
6272
  var getInitiativeResponseAiCategoryMax = 200;
6273
+ var getInitiativeResponseDriverBasisMax = 200;
6258
6274
  var getInitiativeResponseTagsItemMax = 200;
6259
6275
  var getInitiativeResponseTagsMax = 1e3;
6260
6276
  var getInitiativeResponseDocsUrlMax = 2e3;
@@ -6334,6 +6350,8 @@ var GetInitiativeResponse = objectType({
6334
6350
  "vendorDependency": enumType(["None", "Single Vendor", "Multi-Vendor", "Internal Build", "Hybrid"]),
6335
6351
  "solutionType": enumType(["Internal", "External", "Hybrid"]),
6336
6352
  "aiCategory": stringType().max(getInitiativeResponseAiCategoryMax),
6353
+ "driver": enumType(["regulatory", "market", "internal"]).optional().describe('Why the initiative exists. "regulatory" is must-do work required by law, a regulator or a binding contract.'),
6354
+ "driverBasis": stringType().max(getInitiativeResponseDriverBasisMax).optional().describe('Optional reference for the driver, e.g. the law or article ("DORA Art. 28").'),
6337
6355
  "tags": arrayType(stringType().max(getInitiativeResponseTagsItemMax)).max(getInitiativeResponseTagsMax),
6338
6356
  "docsUrl": stringType().max(getInitiativeResponseDocsUrlMax).optional().describe("Link to the project documentation (Confluence, SharePoint, \u2026)"),
6339
6357
  "pmUrl": stringType().max(getInitiativeResponsePmUrlMax).optional().describe("Link to the project-management tool (Jira, MS Project, \u2026)"),
@@ -6645,6 +6663,7 @@ var updateInitiativeBodyOneBusinessUnitMax = 200;
6645
6663
  var updateInitiativeBodyOneOwnerMax = 200;
6646
6664
  var updateInitiativeBodyOneDescriptionMax = 1e4;
6647
6665
  var updateInitiativeBodyOneAiCategoryMax = 200;
6666
+ var updateInitiativeBodyOneDriverBasisMax = 200;
6648
6667
  var updateInitiativeBodyOneTagsItemMax = 200;
6649
6668
  var updateInitiativeBodyOneTagsMax = 1e3;
6650
6669
  var updateInitiativeBodyOneDocsUrlMax = 2e3;
@@ -6724,6 +6743,8 @@ var UpdateInitiativeBody = objectType({
6724
6743
  "vendorDependency": enumType(["None", "Single Vendor", "Multi-Vendor", "Internal Build", "Hybrid"]),
6725
6744
  "solutionType": enumType(["Internal", "External", "Hybrid"]),
6726
6745
  "aiCategory": stringType().max(updateInitiativeBodyOneAiCategoryMax),
6746
+ "driver": enumType(["regulatory", "market", "internal"]).optional().describe('Why the initiative exists. "regulatory" is must-do work required by law, a regulator or a binding contract.'),
6747
+ "driverBasis": stringType().max(updateInitiativeBodyOneDriverBasisMax).optional().describe('Optional reference for the driver, e.g. the law or article ("DORA Art. 28").'),
6727
6748
  "tags": arrayType(stringType().max(updateInitiativeBodyOneTagsItemMax)).max(updateInitiativeBodyOneTagsMax),
6728
6749
  "docsUrl": stringType().max(updateInitiativeBodyOneDocsUrlMax).optional().describe("Link to the project documentation (Confluence, SharePoint, \u2026)"),
6729
6750
  "pmUrl": stringType().max(updateInitiativeBodyOnePmUrlMax).optional().describe("Link to the project-management tool (Jira, MS Project, \u2026)"),
@@ -7040,6 +7061,7 @@ var updateInitiativeResponseBusinessUnitMax = 200;
7040
7061
  var updateInitiativeResponseOwnerMax = 200;
7041
7062
  var updateInitiativeResponseDescriptionMax = 1e4;
7042
7063
  var updateInitiativeResponseAiCategoryMax = 200;
7064
+ var updateInitiativeResponseDriverBasisMax = 200;
7043
7065
  var updateInitiativeResponseTagsItemMax = 200;
7044
7066
  var updateInitiativeResponseTagsMax = 1e3;
7045
7067
  var updateInitiativeResponseDocsUrlMax = 2e3;
@@ -7119,6 +7141,8 @@ var UpdateInitiativeResponse = objectType({
7119
7141
  "vendorDependency": enumType(["None", "Single Vendor", "Multi-Vendor", "Internal Build", "Hybrid"]),
7120
7142
  "solutionType": enumType(["Internal", "External", "Hybrid"]),
7121
7143
  "aiCategory": stringType().max(updateInitiativeResponseAiCategoryMax),
7144
+ "driver": enumType(["regulatory", "market", "internal"]).optional().describe('Why the initiative exists. "regulatory" is must-do work required by law, a regulator or a binding contract.'),
7145
+ "driverBasis": stringType().max(updateInitiativeResponseDriverBasisMax).optional().describe('Optional reference for the driver, e.g. the law or article ("DORA Art. 28").'),
7122
7146
  "tags": arrayType(stringType().max(updateInitiativeResponseTagsItemMax)).max(updateInitiativeResponseTagsMax),
7123
7147
  "docsUrl": stringType().max(updateInitiativeResponseDocsUrlMax).optional().describe("Link to the project documentation (Confluence, SharePoint, \u2026)"),
7124
7148
  "pmUrl": stringType().max(updateInitiativeResponsePmUrlMax).optional().describe("Link to the project-management tool (Jira, MS Project, \u2026)"),
@@ -7505,6 +7529,13 @@ var InitiativeDpiaStatus = {
7505
7529
  Completed: "Completed"
7506
7530
  };
7507
7531
 
7532
+ // ../../api-zod/src/generated/types/initiativeDriver.ts
7533
+ var InitiativeDriver = {
7534
+ regulatory: "regulatory",
7535
+ market: "market",
7536
+ internal: "internal"
7537
+ };
7538
+
7508
7539
  // ../../api-zod/src/generated/types/initiativeHitlPosture.ts
7509
7540
  var InitiativeHitlPosture = {
7510
7541
  Unattended: "Unattended",
@@ -7554,6 +7585,7 @@ var StatusReportDimensionEntryRag = {
7554
7585
 
7555
7586
  // ../../initiative-model/src/types.ts
7556
7587
  var LANGUAGES = ["en", "de"];
7588
+ var DRIVER_BASIS_MAX = 200;
7557
7589
  var GATE_TRANSITIONS = [
7558
7590
  { key: "idea-pilot", from: "Idea", to: "Pilot" },
7559
7591
  { key: "pilot-scaling", from: "Pilot", to: "Scaling" },
@@ -8607,6 +8639,7 @@ var DE_INNOVATION = {
8607
8639
  var DEMO_DIGITAL = {
8608
8640
  "Advisor Copilot": {
8609
8641
  name: "Advisor Workbench",
8642
+ driver: "market",
8610
8643
  description: "Unified advisor desktop consolidating CRM, client documents, and meeting prep into one digital workspace.",
8611
8644
  aiCategory: "AI Copilot",
8612
8645
  owner: "M. Lindqvist",
@@ -8645,6 +8678,8 @@ var DEMO_DIGITAL = {
8645
8678
  },
8646
8679
  "Client Meeting Summariser": {
8647
8680
  name: "Meeting Recording Platform",
8681
+ driver: "regulatory",
8682
+ driverBasis: "MiFID II Art. 16(7): recording of client communications",
8648
8683
  description: "Centralised recording and transcription service for client meetings with searchable archive.",
8649
8684
  aiCategory: "Customer Interaction AI",
8650
8685
  owner: "D. Okafor",
@@ -8666,6 +8701,7 @@ var DEMO_DIGITAL = {
8666
8701
  },
8667
8702
  "AI Investment Memo Assistant": {
8668
8703
  name: "Investment Memo Workflow",
8704
+ driver: "market",
8669
8705
  description: "Digital workflow for drafting, reviewing and publishing investment memos with version control.",
8670
8706
  aiCategory: "Knowledge Retrieval",
8671
8707
  owner: "J. Park",
@@ -8686,6 +8722,8 @@ var DEMO_DIGITAL = {
8686
8722
  },
8687
8723
  "Compliance Documentation Assistant": {
8688
8724
  name: "Compliance Document Portal",
8725
+ driver: "regulatory",
8726
+ driverBasis: "FinSA/FIDLEG and MiFID II documentation and record-keeping duties",
8689
8727
  description: "Self-service portal for compliance documentation with templates, approvals and audit trail.",
8690
8728
  aiCategory: "Compliance / Risk AI",
8691
8729
  owner: "K. S\xF8rensen",
@@ -8705,6 +8743,8 @@ var DEMO_DIGITAL = {
8705
8743
  },
8706
8744
  "KYC Document Intelligence": {
8707
8745
  name: "KYC Onboarding Platform",
8746
+ driver: "regulatory",
8747
+ driverBasis: "Anti-Money Laundering Act (AMLA): customer due diligence",
8708
8748
  description: "Digital KYC onboarding with document upload, e-signature and case management.",
8709
8749
  aiCategory: "Process Automation",
8710
8750
  owner: "A. Ferreira",
@@ -8740,6 +8780,7 @@ var DEMO_DIGITAL = {
8740
8780
  },
8741
8781
  "Client Service Chat Assistant": {
8742
8782
  name: "Client Service Portal",
8783
+ driver: "market",
8743
8784
  description: "Self-service portal with ticketing, knowledge base and live-agent escalation.",
8744
8785
  aiCategory: "Customer Interaction AI",
8745
8786
  owner: "V. Patel",
@@ -8776,6 +8817,7 @@ var DEMO_DIGITAL = {
8776
8817
  },
8777
8818
  "Portfolio Exception Monitor": {
8778
8819
  name: "Portfolio Monitoring Dashboard",
8820
+ driver: "market",
8779
8821
  description: "Real-time monitoring dashboard for portfolio breaches with alerting and case workflow.",
8780
8822
  aiCategory: "Predictive AI",
8781
8823
  owner: "T. Brennan",
@@ -8794,6 +8836,8 @@ var DEMO_DIGITAL = {
8794
8836
  },
8795
8837
  "Regulatory Change Monitor": {
8796
8838
  name: "Regulatory Intelligence Feed",
8839
+ driver: "regulatory",
8840
+ driverBasis: "FINMA expectations on tracking regulatory change",
8797
8841
  description: "Aggregated regulatory feed with tagging, distribution and impact-assessment workflow.",
8798
8842
  aiCategory: "Compliance / Risk AI",
8799
8843
  owner: "L. Yamamoto",
@@ -8811,6 +8855,7 @@ var DEMO_DIGITAL = {
8811
8855
  },
8812
8856
  "AI Code Assistant": {
8813
8857
  name: "Developer Platform",
8858
+ driver: "internal",
8814
8859
  description: "Internal developer platform with CI/CD, code review and shared component libraries.",
8815
8860
  aiCategory: "AI Copilot",
8816
8861
  owner: "R. Schmidt",
@@ -8832,6 +8877,7 @@ var DEMO_DIGITAL = {
8832
8877
  },
8833
8878
  "Operations Automation Agent": {
8834
8879
  name: "Operations Workflow Engine",
8880
+ driver: "internal",
8835
8881
  description: "Workflow engine orchestrating back-office operations across systems.",
8836
8882
  aiCategory: "Agentic AI",
8837
8883
  owner: "H. Tanaka",
@@ -8851,6 +8897,7 @@ var DEMO_DIGITAL = {
8851
8897
  },
8852
8898
  "Risk Report Narrator": {
8853
8899
  name: "Risk Reporting Portal",
8900
+ driver: "internal",
8854
8901
  description: "Centralised risk reporting portal with templated commentary and version control.",
8855
8902
  aiCategory: "Decision Support",
8856
8903
  owner: "E. Novak",
@@ -8872,6 +8919,7 @@ var DEMO_DIGITAL = {
8872
8919
  },
8873
8920
  "Marketing Content Assistant": {
8874
8921
  name: "Marketing Content Hub",
8922
+ driver: "market",
8875
8923
  description: "Digital asset management and publishing workflow for marketing content.",
8876
8924
  aiCategory: "Generative AI",
8877
8925
  owner: "C. Delgado",
@@ -8893,6 +8941,7 @@ var DEMO_DIGITAL = {
8893
8941
  },
8894
8942
  "HR Knowledge Assistant": {
8895
8943
  name: "HR Self-Service Portal",
8944
+ driver: "internal",
8896
8945
  description: "Employee self-service portal with policies, FAQ and ticketing.",
8897
8946
  aiCategory: "Knowledge Retrieval",
8898
8947
  owner: "S. Murphy",
@@ -8914,6 +8963,7 @@ var DEMO_DIGITAL = {
8914
8963
  },
8915
8964
  "Finance Forecast Commentary Assistant": {
8916
8965
  name: "Finance Planning Platform",
8966
+ driver: "internal",
8917
8967
  description: "Integrated planning platform consolidating actuals, forecasts and commentary.",
8918
8968
  aiCategory: "Decision Support",
8919
8969
  owner: "O. Werner",
@@ -8931,6 +8981,7 @@ var DEMO_DIGITAL = {
8931
8981
  },
8932
8982
  "AI Governance Register": {
8933
8983
  name: "Digital Asset Register",
8984
+ driver: "internal",
8934
8985
  description: "Centralised register of digital assets with ownership, lifecycle stage and risk attributes.",
8935
8986
  aiCategory: "Compliance / Risk AI",
8936
8987
  owner: "I. Kowalski",
@@ -8950,6 +9001,7 @@ var DEMO_DIGITAL = {
8950
9001
  var DEMO_INNOVATION = {
8951
9002
  "Advisor Copilot": {
8952
9003
  name: "Clinician Decision Companion Pilot",
9004
+ driver: "market",
8953
9005
  description: "In-consultation decision-support companion surfacing patient context, guideline checks and next-best-actions for clinicians.",
8954
9006
  aiCategory: "Decision Support",
8955
9007
  businessUnit: "Clinical Affairs",
@@ -8994,6 +9046,7 @@ var DEMO_INNOVATION = {
8994
9046
  },
8995
9047
  "Client Meeting Summariser": {
8996
9048
  name: "Ambient Visit Note Capture",
9049
+ driver: "market",
8997
9050
  description: "Ambient documentation prototype turning patient-visit conversations into structured, consent-aware clinical notes.",
8998
9051
  aiCategory: "Generative AI",
8999
9052
  businessUnit: "Patient Experience",
@@ -9020,6 +9073,7 @@ var DEMO_INNOVATION = {
9020
9073
  },
9021
9074
  "AI Investment Memo Assistant": {
9022
9075
  name: "Translational Research Brief Generator",
9076
+ driver: "market",
9023
9077
  description: "Research lab drafting first-pass translational briefs from internal studies, public literature and prior trial precedents.",
9024
9078
  aiCategory: "Knowledge Retrieval",
9025
9079
  businessUnit: "R&D",
@@ -9046,6 +9100,8 @@ var DEMO_INNOVATION = {
9046
9100
  },
9047
9101
  "Compliance Documentation Assistant": {
9048
9102
  name: "Regulatory Submission Draft Lab",
9103
+ driver: "regulatory",
9104
+ driverBasis: "ICH M4 / eCTD format for regulatory submissions",
9049
9105
  description: "Lab drafting first-pass regulatory submissions from study reports, guidance documents and prior dossiers.",
9050
9106
  aiCategory: "Compliance / Risk AI",
9051
9107
  businessUnit: "Regulatory Affairs",
@@ -9070,6 +9126,8 @@ var DEMO_INNOVATION = {
9070
9126
  },
9071
9127
  "KYC Document Intelligence": {
9072
9128
  name: "Patient Intake & Consent Intelligence",
9129
+ driver: "regulatory",
9130
+ driverBasis: "GDPR Art. 9 and ICH GCP E6 informed consent",
9073
9131
  description: "Extracts and reconciles patient-intake fields, insurance documents and consent forms across care entry points.",
9074
9132
  aiCategory: "Compliance / Risk AI",
9075
9133
  businessUnit: "Patient Onboarding",
@@ -9111,6 +9169,7 @@ var DEMO_INNOVATION = {
9111
9169
  },
9112
9170
  "Client Service Chat Assistant": {
9113
9171
  name: "Patient Support Chat Companion",
9172
+ driver: "market",
9114
9173
  description: "Front-line patient support chat with clinical guardrails and an escalation pathway to care-team specialists.",
9115
9174
  aiCategory: "Customer Interaction AI",
9116
9175
  businessUnit: "Patient Experience",
@@ -9152,6 +9211,8 @@ var DEMO_INNOVATION = {
9152
9211
  },
9153
9212
  "Portfolio Exception Monitor": {
9154
9213
  name: "Adverse Event Signal Detection",
9214
+ driver: "regulatory",
9215
+ driverBasis: "EU GVP Module IX: signal management",
9155
9216
  description: "Continuously screens post-market data for adverse-event clusters, safety drifts and concentration signals.",
9156
9217
  aiCategory: "Predictive AI",
9157
9218
  businessUnit: "Pharmacovigilance",
@@ -9175,6 +9236,7 @@ var DEMO_INNOVATION = {
9175
9236
  },
9176
9237
  "Regulatory Change Monitor": {
9177
9238
  name: "Global Regulatory Horizon Scan",
9239
+ driver: "internal",
9178
9240
  description: "Scans regulatory feeds across jurisdictions (FDA, EMA, MHRA, PMDA\u2026) and proposes downstream label and protocol updates.",
9179
9241
  aiCategory: "Knowledge Retrieval",
9180
9242
  businessUnit: "Regulatory Affairs",
@@ -9197,6 +9259,7 @@ var DEMO_INNOVATION = {
9197
9259
  },
9198
9260
  "AI Code Assistant": {
9199
9261
  name: "Bioinformatics Pipeline Copilot",
9262
+ driver: "internal",
9200
9263
  description: "Research-engineer copilot for bioinformatics pipelines, covering internal frameworks, validation and reproducibility standards.",
9201
9264
  aiCategory: "AI Copilot",
9202
9265
  businessUnit: "Bioinformatics",
@@ -9223,6 +9286,7 @@ var DEMO_INNOVATION = {
9223
9286
  },
9224
9287
  "Operations Automation Agent": {
9225
9288
  name: "Lab Automation Agent Research",
9289
+ driver: "internal",
9226
9290
  description: "Agentic workflow research for wet-lab and assay operations spanning instruments and LIMS with human approval gates.",
9227
9291
  aiCategory: "Agentic AI",
9228
9292
  businessUnit: "Lab Operations",
@@ -9247,6 +9311,8 @@ var DEMO_INNOVATION = {
9247
9311
  },
9248
9312
  "Risk Report Narrator": {
9249
9313
  name: "Clinical Safety Report Narrator",
9314
+ driver: "regulatory",
9315
+ driverBasis: "ICH E2C(R2): periodic benefit-risk evaluation reports",
9250
9316
  description: "Drafts narrative sections of periodic safety reports (PSURs, DSURs) from underlying signals and study metrics.",
9251
9317
  aiCategory: "Decision Support",
9252
9318
  businessUnit: "Quality & Safety",
@@ -9273,6 +9339,7 @@ var DEMO_INNOVATION = {
9273
9339
  },
9274
9340
  "Marketing Content Assistant": {
9275
9341
  name: "HCP Content Studio",
9342
+ driver: "market",
9276
9343
  description: "Generates first-draft HCP-facing materials aligned to medical voice and regulated-claim guardrails.",
9277
9344
  aiCategory: "Generative AI",
9278
9345
  businessUnit: "Medical Affairs",
@@ -9299,6 +9366,7 @@ var DEMO_INNOVATION = {
9299
9366
  },
9300
9367
  "HR Knowledge Assistant": {
9301
9368
  name: "Care-Team Knowledge Companion",
9369
+ driver: "internal",
9302
9370
  description: "Internal Q&A surface for care-team protocols, on-call pathways, learning materials and onboarding for new clinicians.",
9303
9371
  aiCategory: "Knowledge Retrieval",
9304
9372
  businessUnit: "People & Culture",
@@ -9325,6 +9393,7 @@ var DEMO_INNOVATION = {
9325
9393
  },
9326
9394
  "Finance Forecast Commentary Assistant": {
9327
9395
  name: "R&D Investment Planning Lab",
9396
+ driver: "internal",
9328
9397
  description: "Research lab drafting commentary on R&D programme variances, drawing on portfolio data and management overlays.",
9329
9398
  aiCategory: "Decision Support",
9330
9399
  businessUnit: "R&D Strategy",
@@ -9347,6 +9416,7 @@ var DEMO_INNOVATION = {
9347
9416
  },
9348
9417
  "AI Governance Register": {
9349
9418
  name: "R&D Portfolio & IP Register",
9419
+ driver: "internal",
9350
9420
  description: "Central register of R&D programmes, IP positions, owners and stage-gate cadence with workflow for attestations.",
9351
9421
  aiCategory: "Compliance / Risk AI",
9352
9422
  businessUnit: "R&D Strategy",
@@ -9570,6 +9640,7 @@ var AI_RISK_TIERS = enumValues(InitiativeAiRiskTier);
9570
9640
  var HITL_POSTURES = enumValues(InitiativeHitlPosture);
9571
9641
  var DPIA_STATUSES = enumValues(InitiativeDpiaStatus);
9572
9642
  var MODEL_CARD_STATUSES = enumValues(InitiativeModelCardStatus);
9643
+ var DRIVERS = enumValues(InitiativeDriver);
9573
9644
  var AI_ACT_ROLES = enumValues(AIActDataRole);
9574
9645
  var DECISION_KINDS = enumValues(DecisionEntryKind);
9575
9646
  var RAG_VALUES = enumValues(StatusReportDimensionEntryRag);
@@ -9894,6 +9965,13 @@ var OPTIONAL_SECTIONS = [
9894
9965
  de: "IDs vorgelagerter Initiativen. Mit der Portfolio-Kontext-Datei aus read_portfolio_context \u2192 lists.initiatives (ID + Name) w\xE4hlen; ohne sie leer lassen und in der App verkn\xFCpfen."
9895
9966
  }
9896
9967
  },
9968
+ {
9969
+ key: "driver / driverBasis",
9970
+ hint: {
9971
+ en: `Why the initiative exists: regulatory (the app's "Regulatory / Law (must)": required by law, a regulator or a binding contract; prioritisation funds it first unless the user's what-if switch turns that off), market ("Market / Competition": responds to customers or competitors) or internal ("Internal / Operational": efficiency, risk reduction or the organisation's own goals). Ask for it on every initiative. driverBasis is an optional reference of up to 200 characters, e.g. "DORA Art. 28"; ask for it when the driver is regulatory. A basis needs a driver. On an update, send the driver again: the file replaces the record, so an omitted driver is cleared.`,
9972
+ de: "Warum es die Initiative gibt: regulatory (\u201ERegulatorisch / Gesetz (Pflicht)\u201C: verlangt durch Gesetz, Aufsicht oder einen verbindlichen Vertrag; die Priorisierung f\xF6rdert sie zuerst, ausser der Was-w\xE4re-wenn-Schalter schaltet das ab), market (\u201EMarkt / Wettbewerb\u201C: antwortet auf Kunden oder Wettbewerber) oder internal (\u201EIntern / Betrieblich\u201C: Effizienz, Risikominderung oder eigene Ziele der Organisation). Bei jeder Initiative danach fragen. driverBasis ist eine optionale Referenz mit bis zu 200 Zeichen, z. B. \u201EDORA Art. 28\u201C; bei regulatory danach fragen. Eine Grundlage braucht einen Ausl\xF6ser. Bei einem Update den Ausl\xF6ser wieder senden: Die Datei ersetzt den Datensatz, ein fehlender Ausl\xF6ser wird gel\xF6scht."
9973
+ }
9974
+ },
9897
9975
  { key: "aiRiskTier / hitlPosture / dpiaStatus / modelCardStatus", hint: { en: "EU AI Act governance flags", de: "EU-AI-Act-Governance-Flags" } },
9898
9976
  {
9899
9977
  key: "aiAct",
@@ -9996,6 +10074,7 @@ function buildSchemaDescriptor(sectionShapes) {
9996
10074
  hitlPosture: HITL_POSTURES,
9997
10075
  dpiaStatus: DPIA_STATUSES,
9998
10076
  modelCardStatus: MODEL_CARD_STATUSES,
10077
+ driver: DRIVERS,
9999
10078
  aiActRole: AI_ACT_ROLES,
10000
10079
  decisionKind: DECISION_KINDS,
10001
10080
  rag: RAG_VALUES
@@ -10155,6 +10234,8 @@ var compactSpecSchema = external_exports.object({
10155
10234
  vendorDependency: external_exports.enum(VENDOR_DEPS),
10156
10235
  solutionType: external_exports.enum(SOLUTION_TYPES),
10157
10236
  aiCategory: requiredText().describe("With a portfolio context: one of the organisation's categories (read_portfolio_context \u2192 lists.categories)"),
10237
+ driver: external_exports.enum(DRIVERS).optional().describe("Why the initiative exists: regulatory (law, regulator or binding contract; funded first by default), market (customers, competitors) or internal (efficiency, risk reduction, own goals). On an update, send it again: an omitted driver is cleared."),
10238
+ driverBasis: external_exports.preprocess((v) => typeof v === "string" && v.trim() === "" ? void 0 : v, external_exports.string().trim().min(1).max(DRIVER_BASIS_MAX).optional()).describe('Optional reference for the driver, e.g. "DORA Art. 28"; needs a driver'),
10158
10239
  tags: external_exports.array(external_exports.string().trim().min(1)).optional(),
10159
10240
  docsUrl: external_exports.string().optional().describe("Link to the project documentation (Confluence, SharePoint, \u2026)"),
10160
10241
  pmUrl: external_exports.string().optional().describe("Link to the project-management tool (Jira, MS Project, \u2026)"),
@@ -10670,7 +10751,13 @@ function assembleInitiative(input, now = /* @__PURE__ */ new Date()) {
10670
10751
  const others = context?.initiatives ?? [];
10671
10752
  const ext = norm2(spec.externalId);
10672
10753
  const updates = spec.id !== void 0 || !!ext && others.filter((x) => norm2(x.externalId) === ext).length === 1 || others.some((x) => norm2(x.name) === norm2(spec.name));
10754
+ if (spec.driverBasis !== void 0 && spec.driver === void 0) {
10755
+ errors.push(`driverBasis: "${spec.driverBasis}" is given without a driver \u2014 the app drops a basis without a driver. Send driver (${DRIVERS.join(" / ")}) too, or leave driverBasis out.`);
10756
+ }
10673
10757
  if (updates) {
10758
+ if (spec.driver === void 0) {
10759
+ warnings.push("driver: none sent, and the app will offer this file as an update \u2014 it replaces the record, so the initiative's driver and basis are cleared. Send driver (and driverBasis) to keep them.");
10760
+ }
10674
10761
  for (const [key, what] of [
10675
10762
  ["milestones", "milestones"],
10676
10763
  ["risks", "risks"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bicon/mcp-composer",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "MCP server that helps an AI client compose a valid BICon portfolio initiative and hand it back as an import file (draft-first, no auth, no API calls).",
5
5
  "license": "UNLICENSED",
6
6
  "author": "BICon Establishment",