@bicon/mcp-composer 0.5.0 → 0.7.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/dist/index.mjs +374 -5
- 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.
|
|
15
|
+
var COMPOSER_VERSION = true ? "0.7.0" : readPackageVersion();
|
|
16
16
|
|
|
17
17
|
// ../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js
|
|
18
18
|
var external_exports = {};
|
|
@@ -4170,7 +4170,7 @@ var ListOrganizationMembersResponseItem = objectType({
|
|
|
4170
4170
|
"email": stringType(),
|
|
4171
4171
|
"displayName": stringType().nullable(),
|
|
4172
4172
|
"role": enumType(["admin", "member", "viewer"]),
|
|
4173
|
-
"permissions": arrayType(stringType()).describe("App-managed permission overrides on top of the fixed role (free-form strings, not a closed enum). Known keys: manage_skills, manage_ai_act, manage_metadata, manage_stage_gate, manage_economics, manage_decision_log, manage_dependencies, manage_required_skills, manage_scoring, manage_status_report, manage_prioritisation, manage_capabilities, manage_capability_impact, manage_milestones.")
|
|
4173
|
+
"permissions": arrayType(stringType()).describe("App-managed permission overrides on top of the fixed role (free-form strings, not a closed enum). Known keys: manage_skills, manage_ai_act, manage_metadata, manage_stage_gate, manage_economics, manage_decision_log, manage_dependencies, manage_required_skills, manage_scoring, manage_status_report, manage_prioritisation, manage_capabilities, manage_capability_impact, manage_milestones, manage_risks, manage_follow_ups.")
|
|
4174
4174
|
});
|
|
4175
4175
|
var ListOrganizationMembersResponse = arrayType(ListOrganizationMembersResponseItem);
|
|
4176
4176
|
var SyncOrganizationMembersResponse = objectType({
|
|
@@ -4180,18 +4180,23 @@ var SyncOrganizationMembersResponse = objectType({
|
|
|
4180
4180
|
var GetMyOrganizationAccessResponse = objectType({
|
|
4181
4181
|
"userId": stringType().describe(`The caller's own local user id (matches AuthorRef.userId on initiatives), so the client can tell its own changes apart from a teammate's \u2014 e.g. to suppress the "updated by X" collaboration banner when an edit echoing back is the caller's own save.`),
|
|
4182
4182
|
"role": enumType(["admin", "member", "viewer"]),
|
|
4183
|
-
"permissions": arrayType(stringType()).describe("App-managed permission overrides on top of the fixed role (free-form strings, not a closed enum). Known keys: manage_skills, manage_ai_act, manage_metadata, manage_stage_gate, manage_economics, manage_decision_log, manage_dependencies, manage_required_skills, manage_scoring, manage_status_report, manage_prioritisation, manage_capabilities, manage_capability_impact, manage_milestones."),
|
|
4183
|
+
"permissions": arrayType(stringType()).describe("App-managed permission overrides on top of the fixed role (free-form strings, not a closed enum). Known keys: manage_skills, manage_ai_act, manage_metadata, manage_stage_gate, manage_economics, manage_decision_log, manage_dependencies, manage_required_skills, manage_scoring, manage_status_report, manage_prioritisation, manage_capabilities, manage_capability_impact, manage_milestones, manage_risks, manage_follow_ups."),
|
|
4184
4184
|
"initiativeLimit": numberType().describe("The most initiatives this organisation may hold, archived ones included. Creating one more answers 507 with code initiative_limit_reached, so the client blocks New, Duplicate and Import up front.")
|
|
4185
4185
|
});
|
|
4186
|
+
var ListOrganizationDirectoryResponseItem = objectType({
|
|
4187
|
+
"userId": stringType().uuid(),
|
|
4188
|
+
"name": stringType()
|
|
4189
|
+
});
|
|
4190
|
+
var ListOrganizationDirectoryResponse = arrayType(ListOrganizationDirectoryResponseItem);
|
|
4186
4191
|
var UpdateOrganizationMemberPermissionsParams = objectType({
|
|
4187
4192
|
"userId": coerce.string().uuid()
|
|
4188
4193
|
});
|
|
4189
4194
|
var UpdateOrganizationMemberPermissionsBody = objectType({
|
|
4190
|
-
"permissions": arrayType(stringType()).describe("App-managed permission overrides on top of the fixed role (free-form strings, not a closed enum). Known keys: manage_skills, manage_ai_act, manage_metadata, manage_stage_gate, manage_economics, manage_decision_log, manage_dependencies, manage_required_skills, manage_scoring, manage_status_report, manage_prioritisation, manage_capabilities, manage_capability_impact, manage_milestones.")
|
|
4195
|
+
"permissions": arrayType(stringType()).describe("App-managed permission overrides on top of the fixed role (free-form strings, not a closed enum). Known keys: manage_skills, manage_ai_act, manage_metadata, manage_stage_gate, manage_economics, manage_decision_log, manage_dependencies, manage_required_skills, manage_scoring, manage_status_report, manage_prioritisation, manage_capabilities, manage_capability_impact, manage_milestones, manage_risks, manage_follow_ups.")
|
|
4191
4196
|
});
|
|
4192
4197
|
var UpdateOrganizationMemberPermissionsResponse = objectType({
|
|
4193
4198
|
"userId": stringType().uuid(),
|
|
4194
|
-
"permissions": arrayType(stringType()).describe("App-managed permission overrides on top of the fixed role (free-form strings, not a closed enum). Known keys: manage_skills, manage_ai_act, manage_metadata, manage_stage_gate, manage_economics, manage_decision_log, manage_dependencies, manage_required_skills, manage_scoring, manage_status_report, manage_prioritisation, manage_capabilities, manage_capability_impact, manage_milestones.")
|
|
4199
|
+
"permissions": arrayType(stringType()).describe("App-managed permission overrides on top of the fixed role (free-form strings, not a closed enum). Known keys: manage_skills, manage_ai_act, manage_metadata, manage_stage_gate, manage_economics, manage_decision_log, manage_dependencies, manage_required_skills, manage_scoring, manage_status_report, manage_prioritisation, manage_capabilities, manage_capability_impact, manage_milestones, manage_risks, manage_follow_ups.")
|
|
4195
4200
|
});
|
|
4196
4201
|
var ListPermissionProfilesResponseItem = objectType({
|
|
4197
4202
|
"id": stringType().uuid(),
|
|
@@ -4286,6 +4291,24 @@ var listSnapshotsResponseInitiativesItemMilestonesItemForecastDateRegExp = new R
|
|
|
4286
4291
|
var listSnapshotsResponseInitiativesItemMilestonesItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4287
4292
|
var listSnapshotsResponseInitiativesItemMilestonesItemNoteMax = 1e4;
|
|
4288
4293
|
var listSnapshotsResponseInitiativesItemMilestonesMax = 30;
|
|
4294
|
+
var listSnapshotsResponseInitiativesItemRisksItemTitleMax = 300;
|
|
4295
|
+
var listSnapshotsResponseInitiativesItemRisksItemProbabilityMax = 5;
|
|
4296
|
+
var listSnapshotsResponseInitiativesItemRisksItemImpactMax = 5;
|
|
4297
|
+
var listSnapshotsResponseInitiativesItemRisksItemResidualProbabilityMax = 5;
|
|
4298
|
+
var listSnapshotsResponseInitiativesItemRisksItemResidualImpactMax = 5;
|
|
4299
|
+
var listSnapshotsResponseInitiativesItemRisksItemOwnerMax = 300;
|
|
4300
|
+
var listSnapshotsResponseInitiativesItemRisksItemMitigationMax = 1e4;
|
|
4301
|
+
var listSnapshotsResponseInitiativesItemRisksItemRaisedDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4302
|
+
var listSnapshotsResponseInitiativesItemRisksItemReviewDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4303
|
+
var listSnapshotsResponseInitiativesItemRisksItemOccurredDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4304
|
+
var listSnapshotsResponseInitiativesItemRisksItemNoteMax = 1e4;
|
|
4305
|
+
var listSnapshotsResponseInitiativesItemRisksMax = 50;
|
|
4306
|
+
var listSnapshotsResponseInitiativesItemFollowUpsItemTitleMax = 300;
|
|
4307
|
+
var listSnapshotsResponseInitiativesItemFollowUpsItemAssigneeNameMax = 300;
|
|
4308
|
+
var listSnapshotsResponseInitiativesItemFollowUpsItemDueDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4309
|
+
var listSnapshotsResponseInitiativesItemFollowUpsItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4310
|
+
var listSnapshotsResponseInitiativesItemFollowUpsItemNoteMax = 1e4;
|
|
4311
|
+
var listSnapshotsResponseInitiativesItemFollowUpsMax = 50;
|
|
4289
4312
|
var listSnapshotsResponseInitiativesItemDependsOnMax = 1e3;
|
|
4290
4313
|
var listSnapshotsResponseInitiativesItemRequiredSkillsItemRunFteMin = 0;
|
|
4291
4314
|
var listSnapshotsResponseInitiativesItemRequiredSkillsMax = 1e3;
|
|
@@ -4495,6 +4518,33 @@ var ListSnapshotsResponseItem = objectType({
|
|
|
4495
4518
|
"doneDate": stringType().regex(listSnapshotsResponseInitiativesItemMilestonesItemDoneDateRegExp).optional(),
|
|
4496
4519
|
"note": stringType().max(listSnapshotsResponseInitiativesItemMilestonesItemNoteMax).optional()
|
|
4497
4520
|
}).describe("A dated intermediate result (docs/milestones-concept-2026-10-17.md). baselineDate is the agreed plan, forecastDate today's expectation (absent = the baseline), doneDate marks it reached; all yyyy-mm-dd.")).max(listSnapshotsResponseInitiativesItemMilestonesMax).optional(),
|
|
4521
|
+
"risks": arrayType(objectType({
|
|
4522
|
+
"id": stringType(),
|
|
4523
|
+
"title": stringType().min(1).max(listSnapshotsResponseInitiativesItemRisksItemTitleMax),
|
|
4524
|
+
"category": enumType(["delivery", "vendor", "data", "people", "regulatory", "technical", "financial"]),
|
|
4525
|
+
"probability": numberType().min(1).max(listSnapshotsResponseInitiativesItemRisksItemProbabilityMax),
|
|
4526
|
+
"impact": numberType().min(1).max(listSnapshotsResponseInitiativesItemRisksItemImpactMax),
|
|
4527
|
+
"residualProbability": numberType().min(1).max(listSnapshotsResponseInitiativesItemRisksItemResidualProbabilityMax).optional(),
|
|
4528
|
+
"residualImpact": numberType().min(1).max(listSnapshotsResponseInitiativesItemRisksItemResidualImpactMax).optional(),
|
|
4529
|
+
"status": enumType(["open", "mitigating", "closed", "occurred"]),
|
|
4530
|
+
"owner": stringType().max(listSnapshotsResponseInitiativesItemRisksItemOwnerMax).optional(),
|
|
4531
|
+
"mitigation": stringType().max(listSnapshotsResponseInitiativesItemRisksItemMitigationMax).optional(),
|
|
4532
|
+
"raisedDate": stringType().regex(listSnapshotsResponseInitiativesItemRisksItemRaisedDateRegExp).optional(),
|
|
4533
|
+
"reviewDate": stringType().regex(listSnapshotsResponseInitiativesItemRisksItemReviewDateRegExp).optional(),
|
|
4534
|
+
"occurredDate": stringType().regex(listSnapshotsResponseInitiativesItemRisksItemOccurredDateRegExp).optional(),
|
|
4535
|
+
"note": stringType().max(listSnapshotsResponseInitiativesItemRisksItemNoteMax).optional()
|
|
4536
|
+
}).describe("A concrete project risk, or an issue when status is occurred (docs/risks-issues-follow-ups-concept-2026-10-19.md). Probability and impact are integers 1-5; the residual pair (after mitigation) is sent as a pair or not at all. Dates are yyyy-mm-dd.")).max(listSnapshotsResponseInitiativesItemRisksMax).optional(),
|
|
4537
|
+
"followUps": arrayType(objectType({
|
|
4538
|
+
"id": stringType(),
|
|
4539
|
+
"title": stringType().min(1).max(listSnapshotsResponseInitiativesItemFollowUpsItemTitleMax),
|
|
4540
|
+
"assigneeUserId": stringType().uuid().optional(),
|
|
4541
|
+
"assigneeName": stringType().max(listSnapshotsResponseInitiativesItemFollowUpsItemAssigneeNameMax).optional(),
|
|
4542
|
+
"dueDate": stringType().regex(listSnapshotsResponseInitiativesItemFollowUpsItemDueDateRegExp),
|
|
4543
|
+
"doneDate": stringType().regex(listSnapshotsResponseInitiativesItemFollowUpsItemDoneDateRegExp).optional(),
|
|
4544
|
+
"milestoneId": stringType().optional(),
|
|
4545
|
+
"riskId": stringType().optional(),
|
|
4546
|
+
"note": stringType().max(listSnapshotsResponseInitiativesItemFollowUpsItemNoteMax).optional()
|
|
4547
|
+
}).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(),
|
|
4498
4548
|
"dependsOn": arrayType(stringType()).max(listSnapshotsResponseInitiativesItemDependsOnMax),
|
|
4499
4549
|
"requiredSkills": arrayType(objectType({
|
|
4500
4550
|
"skillId": stringType(),
|
|
@@ -4638,6 +4688,24 @@ var createSnapshotBodyInitiativesItemMilestonesItemForecastDateRegExp = new RegE
|
|
|
4638
4688
|
var createSnapshotBodyInitiativesItemMilestonesItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4639
4689
|
var createSnapshotBodyInitiativesItemMilestonesItemNoteMax = 1e4;
|
|
4640
4690
|
var createSnapshotBodyInitiativesItemMilestonesMax = 30;
|
|
4691
|
+
var createSnapshotBodyInitiativesItemRisksItemTitleMax = 300;
|
|
4692
|
+
var createSnapshotBodyInitiativesItemRisksItemProbabilityMax = 5;
|
|
4693
|
+
var createSnapshotBodyInitiativesItemRisksItemImpactMax = 5;
|
|
4694
|
+
var createSnapshotBodyInitiativesItemRisksItemResidualProbabilityMax = 5;
|
|
4695
|
+
var createSnapshotBodyInitiativesItemRisksItemResidualImpactMax = 5;
|
|
4696
|
+
var createSnapshotBodyInitiativesItemRisksItemOwnerMax = 300;
|
|
4697
|
+
var createSnapshotBodyInitiativesItemRisksItemMitigationMax = 1e4;
|
|
4698
|
+
var createSnapshotBodyInitiativesItemRisksItemRaisedDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4699
|
+
var createSnapshotBodyInitiativesItemRisksItemReviewDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4700
|
+
var createSnapshotBodyInitiativesItemRisksItemOccurredDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4701
|
+
var createSnapshotBodyInitiativesItemRisksItemNoteMax = 1e4;
|
|
4702
|
+
var createSnapshotBodyInitiativesItemRisksMax = 50;
|
|
4703
|
+
var createSnapshotBodyInitiativesItemFollowUpsItemTitleMax = 300;
|
|
4704
|
+
var createSnapshotBodyInitiativesItemFollowUpsItemAssigneeNameMax = 300;
|
|
4705
|
+
var createSnapshotBodyInitiativesItemFollowUpsItemDueDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4706
|
+
var createSnapshotBodyInitiativesItemFollowUpsItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4707
|
+
var createSnapshotBodyInitiativesItemFollowUpsItemNoteMax = 1e4;
|
|
4708
|
+
var createSnapshotBodyInitiativesItemFollowUpsMax = 50;
|
|
4641
4709
|
var createSnapshotBodyInitiativesItemDependsOnMax = 1e3;
|
|
4642
4710
|
var createSnapshotBodyInitiativesItemRequiredSkillsItemRunFteMin = 0;
|
|
4643
4711
|
var createSnapshotBodyInitiativesItemRequiredSkillsMax = 1e3;
|
|
@@ -4847,6 +4915,33 @@ var CreateSnapshotBody = objectType({
|
|
|
4847
4915
|
"doneDate": stringType().regex(createSnapshotBodyInitiativesItemMilestonesItemDoneDateRegExp).optional(),
|
|
4848
4916
|
"note": stringType().max(createSnapshotBodyInitiativesItemMilestonesItemNoteMax).optional()
|
|
4849
4917
|
}).describe("A dated intermediate result (docs/milestones-concept-2026-10-17.md). baselineDate is the agreed plan, forecastDate today's expectation (absent = the baseline), doneDate marks it reached; all yyyy-mm-dd.")).max(createSnapshotBodyInitiativesItemMilestonesMax).optional(),
|
|
4918
|
+
"risks": arrayType(objectType({
|
|
4919
|
+
"id": stringType(),
|
|
4920
|
+
"title": stringType().min(1).max(createSnapshotBodyInitiativesItemRisksItemTitleMax),
|
|
4921
|
+
"category": enumType(["delivery", "vendor", "data", "people", "regulatory", "technical", "financial"]),
|
|
4922
|
+
"probability": numberType().min(1).max(createSnapshotBodyInitiativesItemRisksItemProbabilityMax),
|
|
4923
|
+
"impact": numberType().min(1).max(createSnapshotBodyInitiativesItemRisksItemImpactMax),
|
|
4924
|
+
"residualProbability": numberType().min(1).max(createSnapshotBodyInitiativesItemRisksItemResidualProbabilityMax).optional(),
|
|
4925
|
+
"residualImpact": numberType().min(1).max(createSnapshotBodyInitiativesItemRisksItemResidualImpactMax).optional(),
|
|
4926
|
+
"status": enumType(["open", "mitigating", "closed", "occurred"]),
|
|
4927
|
+
"owner": stringType().max(createSnapshotBodyInitiativesItemRisksItemOwnerMax).optional(),
|
|
4928
|
+
"mitigation": stringType().max(createSnapshotBodyInitiativesItemRisksItemMitigationMax).optional(),
|
|
4929
|
+
"raisedDate": stringType().regex(createSnapshotBodyInitiativesItemRisksItemRaisedDateRegExp).optional(),
|
|
4930
|
+
"reviewDate": stringType().regex(createSnapshotBodyInitiativesItemRisksItemReviewDateRegExp).optional(),
|
|
4931
|
+
"occurredDate": stringType().regex(createSnapshotBodyInitiativesItemRisksItemOccurredDateRegExp).optional(),
|
|
4932
|
+
"note": stringType().max(createSnapshotBodyInitiativesItemRisksItemNoteMax).optional()
|
|
4933
|
+
}).describe("A concrete project risk, or an issue when status is occurred (docs/risks-issues-follow-ups-concept-2026-10-19.md). Probability and impact are integers 1-5; the residual pair (after mitigation) is sent as a pair or not at all. Dates are yyyy-mm-dd.")).max(createSnapshotBodyInitiativesItemRisksMax).optional(),
|
|
4934
|
+
"followUps": arrayType(objectType({
|
|
4935
|
+
"id": stringType(),
|
|
4936
|
+
"title": stringType().min(1).max(createSnapshotBodyInitiativesItemFollowUpsItemTitleMax),
|
|
4937
|
+
"assigneeUserId": stringType().uuid().optional(),
|
|
4938
|
+
"assigneeName": stringType().max(createSnapshotBodyInitiativesItemFollowUpsItemAssigneeNameMax).optional(),
|
|
4939
|
+
"dueDate": stringType().regex(createSnapshotBodyInitiativesItemFollowUpsItemDueDateRegExp),
|
|
4940
|
+
"doneDate": stringType().regex(createSnapshotBodyInitiativesItemFollowUpsItemDoneDateRegExp).optional(),
|
|
4941
|
+
"milestoneId": stringType().optional(),
|
|
4942
|
+
"riskId": stringType().optional(),
|
|
4943
|
+
"note": stringType().max(createSnapshotBodyInitiativesItemFollowUpsItemNoteMax).optional()
|
|
4944
|
+
}).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(),
|
|
4850
4945
|
"dependsOn": arrayType(stringType()).max(createSnapshotBodyInitiativesItemDependsOnMax),
|
|
4851
4946
|
"requiredSkills": arrayType(objectType({
|
|
4852
4947
|
"skillId": stringType(),
|
|
@@ -4996,6 +5091,24 @@ var renameSnapshotResponseInitiativesItemMilestonesItemForecastDateRegExp = new
|
|
|
4996
5091
|
var renameSnapshotResponseInitiativesItemMilestonesItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
4997
5092
|
var renameSnapshotResponseInitiativesItemMilestonesItemNoteMax = 1e4;
|
|
4998
5093
|
var renameSnapshotResponseInitiativesItemMilestonesMax = 30;
|
|
5094
|
+
var renameSnapshotResponseInitiativesItemRisksItemTitleMax = 300;
|
|
5095
|
+
var renameSnapshotResponseInitiativesItemRisksItemProbabilityMax = 5;
|
|
5096
|
+
var renameSnapshotResponseInitiativesItemRisksItemImpactMax = 5;
|
|
5097
|
+
var renameSnapshotResponseInitiativesItemRisksItemResidualProbabilityMax = 5;
|
|
5098
|
+
var renameSnapshotResponseInitiativesItemRisksItemResidualImpactMax = 5;
|
|
5099
|
+
var renameSnapshotResponseInitiativesItemRisksItemOwnerMax = 300;
|
|
5100
|
+
var renameSnapshotResponseInitiativesItemRisksItemMitigationMax = 1e4;
|
|
5101
|
+
var renameSnapshotResponseInitiativesItemRisksItemRaisedDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5102
|
+
var renameSnapshotResponseInitiativesItemRisksItemReviewDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5103
|
+
var renameSnapshotResponseInitiativesItemRisksItemOccurredDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5104
|
+
var renameSnapshotResponseInitiativesItemRisksItemNoteMax = 1e4;
|
|
5105
|
+
var renameSnapshotResponseInitiativesItemRisksMax = 50;
|
|
5106
|
+
var renameSnapshotResponseInitiativesItemFollowUpsItemTitleMax = 300;
|
|
5107
|
+
var renameSnapshotResponseInitiativesItemFollowUpsItemAssigneeNameMax = 300;
|
|
5108
|
+
var renameSnapshotResponseInitiativesItemFollowUpsItemDueDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5109
|
+
var renameSnapshotResponseInitiativesItemFollowUpsItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5110
|
+
var renameSnapshotResponseInitiativesItemFollowUpsItemNoteMax = 1e4;
|
|
5111
|
+
var renameSnapshotResponseInitiativesItemFollowUpsMax = 50;
|
|
4999
5112
|
var renameSnapshotResponseInitiativesItemDependsOnMax = 1e3;
|
|
5000
5113
|
var renameSnapshotResponseInitiativesItemRequiredSkillsItemRunFteMin = 0;
|
|
5001
5114
|
var renameSnapshotResponseInitiativesItemRequiredSkillsMax = 1e3;
|
|
@@ -5205,6 +5318,33 @@ var RenameSnapshotResponse = objectType({
|
|
|
5205
5318
|
"doneDate": stringType().regex(renameSnapshotResponseInitiativesItemMilestonesItemDoneDateRegExp).optional(),
|
|
5206
5319
|
"note": stringType().max(renameSnapshotResponseInitiativesItemMilestonesItemNoteMax).optional()
|
|
5207
5320
|
}).describe("A dated intermediate result (docs/milestones-concept-2026-10-17.md). baselineDate is the agreed plan, forecastDate today's expectation (absent = the baseline), doneDate marks it reached; all yyyy-mm-dd.")).max(renameSnapshotResponseInitiativesItemMilestonesMax).optional(),
|
|
5321
|
+
"risks": arrayType(objectType({
|
|
5322
|
+
"id": stringType(),
|
|
5323
|
+
"title": stringType().min(1).max(renameSnapshotResponseInitiativesItemRisksItemTitleMax),
|
|
5324
|
+
"category": enumType(["delivery", "vendor", "data", "people", "regulatory", "technical", "financial"]),
|
|
5325
|
+
"probability": numberType().min(1).max(renameSnapshotResponseInitiativesItemRisksItemProbabilityMax),
|
|
5326
|
+
"impact": numberType().min(1).max(renameSnapshotResponseInitiativesItemRisksItemImpactMax),
|
|
5327
|
+
"residualProbability": numberType().min(1).max(renameSnapshotResponseInitiativesItemRisksItemResidualProbabilityMax).optional(),
|
|
5328
|
+
"residualImpact": numberType().min(1).max(renameSnapshotResponseInitiativesItemRisksItemResidualImpactMax).optional(),
|
|
5329
|
+
"status": enumType(["open", "mitigating", "closed", "occurred"]),
|
|
5330
|
+
"owner": stringType().max(renameSnapshotResponseInitiativesItemRisksItemOwnerMax).optional(),
|
|
5331
|
+
"mitigation": stringType().max(renameSnapshotResponseInitiativesItemRisksItemMitigationMax).optional(),
|
|
5332
|
+
"raisedDate": stringType().regex(renameSnapshotResponseInitiativesItemRisksItemRaisedDateRegExp).optional(),
|
|
5333
|
+
"reviewDate": stringType().regex(renameSnapshotResponseInitiativesItemRisksItemReviewDateRegExp).optional(),
|
|
5334
|
+
"occurredDate": stringType().regex(renameSnapshotResponseInitiativesItemRisksItemOccurredDateRegExp).optional(),
|
|
5335
|
+
"note": stringType().max(renameSnapshotResponseInitiativesItemRisksItemNoteMax).optional()
|
|
5336
|
+
}).describe("A concrete project risk, or an issue when status is occurred (docs/risks-issues-follow-ups-concept-2026-10-19.md). Probability and impact are integers 1-5; the residual pair (after mitigation) is sent as a pair or not at all. Dates are yyyy-mm-dd.")).max(renameSnapshotResponseInitiativesItemRisksMax).optional(),
|
|
5337
|
+
"followUps": arrayType(objectType({
|
|
5338
|
+
"id": stringType(),
|
|
5339
|
+
"title": stringType().min(1).max(renameSnapshotResponseInitiativesItemFollowUpsItemTitleMax),
|
|
5340
|
+
"assigneeUserId": stringType().uuid().optional(),
|
|
5341
|
+
"assigneeName": stringType().max(renameSnapshotResponseInitiativesItemFollowUpsItemAssigneeNameMax).optional(),
|
|
5342
|
+
"dueDate": stringType().regex(renameSnapshotResponseInitiativesItemFollowUpsItemDueDateRegExp),
|
|
5343
|
+
"doneDate": stringType().regex(renameSnapshotResponseInitiativesItemFollowUpsItemDoneDateRegExp).optional(),
|
|
5344
|
+
"milestoneId": stringType().optional(),
|
|
5345
|
+
"riskId": stringType().optional(),
|
|
5346
|
+
"note": stringType().max(renameSnapshotResponseInitiativesItemFollowUpsItemNoteMax).optional()
|
|
5347
|
+
}).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(),
|
|
5208
5348
|
"dependsOn": arrayType(stringType()).max(renameSnapshotResponseInitiativesItemDependsOnMax),
|
|
5209
5349
|
"requiredSkills": arrayType(objectType({
|
|
5210
5350
|
"skillId": stringType(),
|
|
@@ -5349,6 +5489,24 @@ var listInitiativesResponseMilestonesItemForecastDateRegExp = new RegExp("^\\d{4
|
|
|
5349
5489
|
var listInitiativesResponseMilestonesItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5350
5490
|
var listInitiativesResponseMilestonesItemNoteMax = 1e4;
|
|
5351
5491
|
var listInitiativesResponseMilestonesMax = 30;
|
|
5492
|
+
var listInitiativesResponseRisksItemTitleMax = 300;
|
|
5493
|
+
var listInitiativesResponseRisksItemProbabilityMax = 5;
|
|
5494
|
+
var listInitiativesResponseRisksItemImpactMax = 5;
|
|
5495
|
+
var listInitiativesResponseRisksItemResidualProbabilityMax = 5;
|
|
5496
|
+
var listInitiativesResponseRisksItemResidualImpactMax = 5;
|
|
5497
|
+
var listInitiativesResponseRisksItemOwnerMax = 300;
|
|
5498
|
+
var listInitiativesResponseRisksItemMitigationMax = 1e4;
|
|
5499
|
+
var listInitiativesResponseRisksItemRaisedDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5500
|
+
var listInitiativesResponseRisksItemReviewDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5501
|
+
var listInitiativesResponseRisksItemOccurredDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5502
|
+
var listInitiativesResponseRisksItemNoteMax = 1e4;
|
|
5503
|
+
var listInitiativesResponseRisksMax = 50;
|
|
5504
|
+
var listInitiativesResponseFollowUpsItemTitleMax = 300;
|
|
5505
|
+
var listInitiativesResponseFollowUpsItemAssigneeNameMax = 300;
|
|
5506
|
+
var listInitiativesResponseFollowUpsItemDueDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5507
|
+
var listInitiativesResponseFollowUpsItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5508
|
+
var listInitiativesResponseFollowUpsItemNoteMax = 1e4;
|
|
5509
|
+
var listInitiativesResponseFollowUpsMax = 50;
|
|
5352
5510
|
var listInitiativesResponseDependsOnMax = 1e3;
|
|
5353
5511
|
var listInitiativesResponseRequiredSkillsItemRunFteMin = 0;
|
|
5354
5512
|
var listInitiativesResponseRequiredSkillsMax = 1e3;
|
|
@@ -5552,6 +5710,33 @@ var ListInitiativesResponseItem = objectType({
|
|
|
5552
5710
|
"doneDate": stringType().regex(listInitiativesResponseMilestonesItemDoneDateRegExp).optional(),
|
|
5553
5711
|
"note": stringType().max(listInitiativesResponseMilestonesItemNoteMax).optional()
|
|
5554
5712
|
}).describe("A dated intermediate result (docs/milestones-concept-2026-10-17.md). baselineDate is the agreed plan, forecastDate today's expectation (absent = the baseline), doneDate marks it reached; all yyyy-mm-dd.")).max(listInitiativesResponseMilestonesMax).optional(),
|
|
5713
|
+
"risks": arrayType(objectType({
|
|
5714
|
+
"id": stringType(),
|
|
5715
|
+
"title": stringType().min(1).max(listInitiativesResponseRisksItemTitleMax),
|
|
5716
|
+
"category": enumType(["delivery", "vendor", "data", "people", "regulatory", "technical", "financial"]),
|
|
5717
|
+
"probability": numberType().min(1).max(listInitiativesResponseRisksItemProbabilityMax),
|
|
5718
|
+
"impact": numberType().min(1).max(listInitiativesResponseRisksItemImpactMax),
|
|
5719
|
+
"residualProbability": numberType().min(1).max(listInitiativesResponseRisksItemResidualProbabilityMax).optional(),
|
|
5720
|
+
"residualImpact": numberType().min(1).max(listInitiativesResponseRisksItemResidualImpactMax).optional(),
|
|
5721
|
+
"status": enumType(["open", "mitigating", "closed", "occurred"]),
|
|
5722
|
+
"owner": stringType().max(listInitiativesResponseRisksItemOwnerMax).optional(),
|
|
5723
|
+
"mitigation": stringType().max(listInitiativesResponseRisksItemMitigationMax).optional(),
|
|
5724
|
+
"raisedDate": stringType().regex(listInitiativesResponseRisksItemRaisedDateRegExp).optional(),
|
|
5725
|
+
"reviewDate": stringType().regex(listInitiativesResponseRisksItemReviewDateRegExp).optional(),
|
|
5726
|
+
"occurredDate": stringType().regex(listInitiativesResponseRisksItemOccurredDateRegExp).optional(),
|
|
5727
|
+
"note": stringType().max(listInitiativesResponseRisksItemNoteMax).optional()
|
|
5728
|
+
}).describe("A concrete project risk, or an issue when status is occurred (docs/risks-issues-follow-ups-concept-2026-10-19.md). Probability and impact are integers 1-5; the residual pair (after mitigation) is sent as a pair or not at all. Dates are yyyy-mm-dd.")).max(listInitiativesResponseRisksMax).optional(),
|
|
5729
|
+
"followUps": arrayType(objectType({
|
|
5730
|
+
"id": stringType(),
|
|
5731
|
+
"title": stringType().min(1).max(listInitiativesResponseFollowUpsItemTitleMax),
|
|
5732
|
+
"assigneeUserId": stringType().uuid().optional(),
|
|
5733
|
+
"assigneeName": stringType().max(listInitiativesResponseFollowUpsItemAssigneeNameMax).optional(),
|
|
5734
|
+
"dueDate": stringType().regex(listInitiativesResponseFollowUpsItemDueDateRegExp),
|
|
5735
|
+
"doneDate": stringType().regex(listInitiativesResponseFollowUpsItemDoneDateRegExp).optional(),
|
|
5736
|
+
"milestoneId": stringType().optional(),
|
|
5737
|
+
"riskId": stringType().optional(),
|
|
5738
|
+
"note": stringType().max(listInitiativesResponseFollowUpsItemNoteMax).optional()
|
|
5739
|
+
}).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(),
|
|
5555
5740
|
"dependsOn": arrayType(stringType()).max(listInitiativesResponseDependsOnMax),
|
|
5556
5741
|
"requiredSkills": arrayType(objectType({
|
|
5557
5742
|
"skillId": stringType(),
|
|
@@ -5692,6 +5877,24 @@ var createInitiativeBodyOneMilestonesItemForecastDateRegExp = new RegExp("^\\d{4
|
|
|
5692
5877
|
var createInitiativeBodyOneMilestonesItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5693
5878
|
var createInitiativeBodyOneMilestonesItemNoteMax = 1e4;
|
|
5694
5879
|
var createInitiativeBodyOneMilestonesMax = 30;
|
|
5880
|
+
var createInitiativeBodyOneRisksItemTitleMax = 300;
|
|
5881
|
+
var createInitiativeBodyOneRisksItemProbabilityMax = 5;
|
|
5882
|
+
var createInitiativeBodyOneRisksItemImpactMax = 5;
|
|
5883
|
+
var createInitiativeBodyOneRisksItemResidualProbabilityMax = 5;
|
|
5884
|
+
var createInitiativeBodyOneRisksItemResidualImpactMax = 5;
|
|
5885
|
+
var createInitiativeBodyOneRisksItemOwnerMax = 300;
|
|
5886
|
+
var createInitiativeBodyOneRisksItemMitigationMax = 1e4;
|
|
5887
|
+
var createInitiativeBodyOneRisksItemRaisedDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5888
|
+
var createInitiativeBodyOneRisksItemReviewDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5889
|
+
var createInitiativeBodyOneRisksItemOccurredDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5890
|
+
var createInitiativeBodyOneRisksItemNoteMax = 1e4;
|
|
5891
|
+
var createInitiativeBodyOneRisksMax = 50;
|
|
5892
|
+
var createInitiativeBodyOneFollowUpsItemTitleMax = 300;
|
|
5893
|
+
var createInitiativeBodyOneFollowUpsItemAssigneeNameMax = 300;
|
|
5894
|
+
var createInitiativeBodyOneFollowUpsItemDueDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5895
|
+
var createInitiativeBodyOneFollowUpsItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
5896
|
+
var createInitiativeBodyOneFollowUpsItemNoteMax = 1e4;
|
|
5897
|
+
var createInitiativeBodyOneFollowUpsMax = 50;
|
|
5695
5898
|
var createInitiativeBodyOneDependsOnMax = 1e3;
|
|
5696
5899
|
var createInitiativeBodyOneRequiredSkillsItemRunFteMin = 0;
|
|
5697
5900
|
var createInitiativeBodyOneRequiredSkillsMax = 1e3;
|
|
@@ -5895,6 +6098,33 @@ var CreateInitiativeBody = objectType({
|
|
|
5895
6098
|
"doneDate": stringType().regex(createInitiativeBodyOneMilestonesItemDoneDateRegExp).optional(),
|
|
5896
6099
|
"note": stringType().max(createInitiativeBodyOneMilestonesItemNoteMax).optional()
|
|
5897
6100
|
}).describe("A dated intermediate result (docs/milestones-concept-2026-10-17.md). baselineDate is the agreed plan, forecastDate today's expectation (absent = the baseline), doneDate marks it reached; all yyyy-mm-dd.")).max(createInitiativeBodyOneMilestonesMax).optional(),
|
|
6101
|
+
"risks": arrayType(objectType({
|
|
6102
|
+
"id": stringType(),
|
|
6103
|
+
"title": stringType().min(1).max(createInitiativeBodyOneRisksItemTitleMax),
|
|
6104
|
+
"category": enumType(["delivery", "vendor", "data", "people", "regulatory", "technical", "financial"]),
|
|
6105
|
+
"probability": numberType().min(1).max(createInitiativeBodyOneRisksItemProbabilityMax),
|
|
6106
|
+
"impact": numberType().min(1).max(createInitiativeBodyOneRisksItemImpactMax),
|
|
6107
|
+
"residualProbability": numberType().min(1).max(createInitiativeBodyOneRisksItemResidualProbabilityMax).optional(),
|
|
6108
|
+
"residualImpact": numberType().min(1).max(createInitiativeBodyOneRisksItemResidualImpactMax).optional(),
|
|
6109
|
+
"status": enumType(["open", "mitigating", "closed", "occurred"]),
|
|
6110
|
+
"owner": stringType().max(createInitiativeBodyOneRisksItemOwnerMax).optional(),
|
|
6111
|
+
"mitigation": stringType().max(createInitiativeBodyOneRisksItemMitigationMax).optional(),
|
|
6112
|
+
"raisedDate": stringType().regex(createInitiativeBodyOneRisksItemRaisedDateRegExp).optional(),
|
|
6113
|
+
"reviewDate": stringType().regex(createInitiativeBodyOneRisksItemReviewDateRegExp).optional(),
|
|
6114
|
+
"occurredDate": stringType().regex(createInitiativeBodyOneRisksItemOccurredDateRegExp).optional(),
|
|
6115
|
+
"note": stringType().max(createInitiativeBodyOneRisksItemNoteMax).optional()
|
|
6116
|
+
}).describe("A concrete project risk, or an issue when status is occurred (docs/risks-issues-follow-ups-concept-2026-10-19.md). Probability and impact are integers 1-5; the residual pair (after mitigation) is sent as a pair or not at all. Dates are yyyy-mm-dd.")).max(createInitiativeBodyOneRisksMax).optional(),
|
|
6117
|
+
"followUps": arrayType(objectType({
|
|
6118
|
+
"id": stringType(),
|
|
6119
|
+
"title": stringType().min(1).max(createInitiativeBodyOneFollowUpsItemTitleMax),
|
|
6120
|
+
"assigneeUserId": stringType().uuid().optional(),
|
|
6121
|
+
"assigneeName": stringType().max(createInitiativeBodyOneFollowUpsItemAssigneeNameMax).optional(),
|
|
6122
|
+
"dueDate": stringType().regex(createInitiativeBodyOneFollowUpsItemDueDateRegExp),
|
|
6123
|
+
"doneDate": stringType().regex(createInitiativeBodyOneFollowUpsItemDoneDateRegExp).optional(),
|
|
6124
|
+
"milestoneId": stringType().optional(),
|
|
6125
|
+
"riskId": stringType().optional(),
|
|
6126
|
+
"note": stringType().max(createInitiativeBodyOneFollowUpsItemNoteMax).optional()
|
|
6127
|
+
}).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(),
|
|
5898
6128
|
"dependsOn": arrayType(stringType()).max(createInitiativeBodyOneDependsOnMax),
|
|
5899
6129
|
"requiredSkills": arrayType(objectType({
|
|
5900
6130
|
"skillId": stringType(),
|
|
@@ -6045,6 +6275,24 @@ var getInitiativeResponseMilestonesItemForecastDateRegExp = new RegExp("^\\d{4}-
|
|
|
6045
6275
|
var getInitiativeResponseMilestonesItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6046
6276
|
var getInitiativeResponseMilestonesItemNoteMax = 1e4;
|
|
6047
6277
|
var getInitiativeResponseMilestonesMax = 30;
|
|
6278
|
+
var getInitiativeResponseRisksItemTitleMax = 300;
|
|
6279
|
+
var getInitiativeResponseRisksItemProbabilityMax = 5;
|
|
6280
|
+
var getInitiativeResponseRisksItemImpactMax = 5;
|
|
6281
|
+
var getInitiativeResponseRisksItemResidualProbabilityMax = 5;
|
|
6282
|
+
var getInitiativeResponseRisksItemResidualImpactMax = 5;
|
|
6283
|
+
var getInitiativeResponseRisksItemOwnerMax = 300;
|
|
6284
|
+
var getInitiativeResponseRisksItemMitigationMax = 1e4;
|
|
6285
|
+
var getInitiativeResponseRisksItemRaisedDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6286
|
+
var getInitiativeResponseRisksItemReviewDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6287
|
+
var getInitiativeResponseRisksItemOccurredDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6288
|
+
var getInitiativeResponseRisksItemNoteMax = 1e4;
|
|
6289
|
+
var getInitiativeResponseRisksMax = 50;
|
|
6290
|
+
var getInitiativeResponseFollowUpsItemTitleMax = 300;
|
|
6291
|
+
var getInitiativeResponseFollowUpsItemAssigneeNameMax = 300;
|
|
6292
|
+
var getInitiativeResponseFollowUpsItemDueDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6293
|
+
var getInitiativeResponseFollowUpsItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6294
|
+
var getInitiativeResponseFollowUpsItemNoteMax = 1e4;
|
|
6295
|
+
var getInitiativeResponseFollowUpsMax = 50;
|
|
6048
6296
|
var getInitiativeResponseDependsOnMax = 1e3;
|
|
6049
6297
|
var getInitiativeResponseRequiredSkillsItemRunFteMin = 0;
|
|
6050
6298
|
var getInitiativeResponseRequiredSkillsMax = 1e3;
|
|
@@ -6248,6 +6496,33 @@ var GetInitiativeResponse = objectType({
|
|
|
6248
6496
|
"doneDate": stringType().regex(getInitiativeResponseMilestonesItemDoneDateRegExp).optional(),
|
|
6249
6497
|
"note": stringType().max(getInitiativeResponseMilestonesItemNoteMax).optional()
|
|
6250
6498
|
}).describe("A dated intermediate result (docs/milestones-concept-2026-10-17.md). baselineDate is the agreed plan, forecastDate today's expectation (absent = the baseline), doneDate marks it reached; all yyyy-mm-dd.")).max(getInitiativeResponseMilestonesMax).optional(),
|
|
6499
|
+
"risks": arrayType(objectType({
|
|
6500
|
+
"id": stringType(),
|
|
6501
|
+
"title": stringType().min(1).max(getInitiativeResponseRisksItemTitleMax),
|
|
6502
|
+
"category": enumType(["delivery", "vendor", "data", "people", "regulatory", "technical", "financial"]),
|
|
6503
|
+
"probability": numberType().min(1).max(getInitiativeResponseRisksItemProbabilityMax),
|
|
6504
|
+
"impact": numberType().min(1).max(getInitiativeResponseRisksItemImpactMax),
|
|
6505
|
+
"residualProbability": numberType().min(1).max(getInitiativeResponseRisksItemResidualProbabilityMax).optional(),
|
|
6506
|
+
"residualImpact": numberType().min(1).max(getInitiativeResponseRisksItemResidualImpactMax).optional(),
|
|
6507
|
+
"status": enumType(["open", "mitigating", "closed", "occurred"]),
|
|
6508
|
+
"owner": stringType().max(getInitiativeResponseRisksItemOwnerMax).optional(),
|
|
6509
|
+
"mitigation": stringType().max(getInitiativeResponseRisksItemMitigationMax).optional(),
|
|
6510
|
+
"raisedDate": stringType().regex(getInitiativeResponseRisksItemRaisedDateRegExp).optional(),
|
|
6511
|
+
"reviewDate": stringType().regex(getInitiativeResponseRisksItemReviewDateRegExp).optional(),
|
|
6512
|
+
"occurredDate": stringType().regex(getInitiativeResponseRisksItemOccurredDateRegExp).optional(),
|
|
6513
|
+
"note": stringType().max(getInitiativeResponseRisksItemNoteMax).optional()
|
|
6514
|
+
}).describe("A concrete project risk, or an issue when status is occurred (docs/risks-issues-follow-ups-concept-2026-10-19.md). Probability and impact are integers 1-5; the residual pair (after mitigation) is sent as a pair or not at all. Dates are yyyy-mm-dd.")).max(getInitiativeResponseRisksMax).optional(),
|
|
6515
|
+
"followUps": arrayType(objectType({
|
|
6516
|
+
"id": stringType(),
|
|
6517
|
+
"title": stringType().min(1).max(getInitiativeResponseFollowUpsItemTitleMax),
|
|
6518
|
+
"assigneeUserId": stringType().uuid().optional(),
|
|
6519
|
+
"assigneeName": stringType().max(getInitiativeResponseFollowUpsItemAssigneeNameMax).optional(),
|
|
6520
|
+
"dueDate": stringType().regex(getInitiativeResponseFollowUpsItemDueDateRegExp),
|
|
6521
|
+
"doneDate": stringType().regex(getInitiativeResponseFollowUpsItemDoneDateRegExp).optional(),
|
|
6522
|
+
"milestoneId": stringType().optional(),
|
|
6523
|
+
"riskId": stringType().optional(),
|
|
6524
|
+
"note": stringType().max(getInitiativeResponseFollowUpsItemNoteMax).optional()
|
|
6525
|
+
}).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(),
|
|
6251
6526
|
"dependsOn": arrayType(stringType()).max(getInitiativeResponseDependsOnMax),
|
|
6252
6527
|
"requiredSkills": arrayType(objectType({
|
|
6253
6528
|
"skillId": stringType(),
|
|
@@ -6390,6 +6665,24 @@ var updateInitiativeBodyOneMilestonesItemForecastDateRegExp = new RegExp("^\\d{4
|
|
|
6390
6665
|
var updateInitiativeBodyOneMilestonesItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6391
6666
|
var updateInitiativeBodyOneMilestonesItemNoteMax = 1e4;
|
|
6392
6667
|
var updateInitiativeBodyOneMilestonesMax = 30;
|
|
6668
|
+
var updateInitiativeBodyOneRisksItemTitleMax = 300;
|
|
6669
|
+
var updateInitiativeBodyOneRisksItemProbabilityMax = 5;
|
|
6670
|
+
var updateInitiativeBodyOneRisksItemImpactMax = 5;
|
|
6671
|
+
var updateInitiativeBodyOneRisksItemResidualProbabilityMax = 5;
|
|
6672
|
+
var updateInitiativeBodyOneRisksItemResidualImpactMax = 5;
|
|
6673
|
+
var updateInitiativeBodyOneRisksItemOwnerMax = 300;
|
|
6674
|
+
var updateInitiativeBodyOneRisksItemMitigationMax = 1e4;
|
|
6675
|
+
var updateInitiativeBodyOneRisksItemRaisedDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6676
|
+
var updateInitiativeBodyOneRisksItemReviewDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6677
|
+
var updateInitiativeBodyOneRisksItemOccurredDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6678
|
+
var updateInitiativeBodyOneRisksItemNoteMax = 1e4;
|
|
6679
|
+
var updateInitiativeBodyOneRisksMax = 50;
|
|
6680
|
+
var updateInitiativeBodyOneFollowUpsItemTitleMax = 300;
|
|
6681
|
+
var updateInitiativeBodyOneFollowUpsItemAssigneeNameMax = 300;
|
|
6682
|
+
var updateInitiativeBodyOneFollowUpsItemDueDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6683
|
+
var updateInitiativeBodyOneFollowUpsItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6684
|
+
var updateInitiativeBodyOneFollowUpsItemNoteMax = 1e4;
|
|
6685
|
+
var updateInitiativeBodyOneFollowUpsMax = 50;
|
|
6393
6686
|
var updateInitiativeBodyOneDependsOnMax = 1e3;
|
|
6394
6687
|
var updateInitiativeBodyOneRequiredSkillsItemRunFteMin = 0;
|
|
6395
6688
|
var updateInitiativeBodyOneRequiredSkillsMax = 1e3;
|
|
@@ -6593,6 +6886,33 @@ var UpdateInitiativeBody = objectType({
|
|
|
6593
6886
|
"doneDate": stringType().regex(updateInitiativeBodyOneMilestonesItemDoneDateRegExp).optional(),
|
|
6594
6887
|
"note": stringType().max(updateInitiativeBodyOneMilestonesItemNoteMax).optional()
|
|
6595
6888
|
}).describe("A dated intermediate result (docs/milestones-concept-2026-10-17.md). baselineDate is the agreed plan, forecastDate today's expectation (absent = the baseline), doneDate marks it reached; all yyyy-mm-dd.")).max(updateInitiativeBodyOneMilestonesMax).optional(),
|
|
6889
|
+
"risks": arrayType(objectType({
|
|
6890
|
+
"id": stringType(),
|
|
6891
|
+
"title": stringType().min(1).max(updateInitiativeBodyOneRisksItemTitleMax),
|
|
6892
|
+
"category": enumType(["delivery", "vendor", "data", "people", "regulatory", "technical", "financial"]),
|
|
6893
|
+
"probability": numberType().min(1).max(updateInitiativeBodyOneRisksItemProbabilityMax),
|
|
6894
|
+
"impact": numberType().min(1).max(updateInitiativeBodyOneRisksItemImpactMax),
|
|
6895
|
+
"residualProbability": numberType().min(1).max(updateInitiativeBodyOneRisksItemResidualProbabilityMax).optional(),
|
|
6896
|
+
"residualImpact": numberType().min(1).max(updateInitiativeBodyOneRisksItemResidualImpactMax).optional(),
|
|
6897
|
+
"status": enumType(["open", "mitigating", "closed", "occurred"]),
|
|
6898
|
+
"owner": stringType().max(updateInitiativeBodyOneRisksItemOwnerMax).optional(),
|
|
6899
|
+
"mitigation": stringType().max(updateInitiativeBodyOneRisksItemMitigationMax).optional(),
|
|
6900
|
+
"raisedDate": stringType().regex(updateInitiativeBodyOneRisksItemRaisedDateRegExp).optional(),
|
|
6901
|
+
"reviewDate": stringType().regex(updateInitiativeBodyOneRisksItemReviewDateRegExp).optional(),
|
|
6902
|
+
"occurredDate": stringType().regex(updateInitiativeBodyOneRisksItemOccurredDateRegExp).optional(),
|
|
6903
|
+
"note": stringType().max(updateInitiativeBodyOneRisksItemNoteMax).optional()
|
|
6904
|
+
}).describe("A concrete project risk, or an issue when status is occurred (docs/risks-issues-follow-ups-concept-2026-10-19.md). Probability and impact are integers 1-5; the residual pair (after mitigation) is sent as a pair or not at all. Dates are yyyy-mm-dd.")).max(updateInitiativeBodyOneRisksMax).optional(),
|
|
6905
|
+
"followUps": arrayType(objectType({
|
|
6906
|
+
"id": stringType(),
|
|
6907
|
+
"title": stringType().min(1).max(updateInitiativeBodyOneFollowUpsItemTitleMax),
|
|
6908
|
+
"assigneeUserId": stringType().uuid().optional(),
|
|
6909
|
+
"assigneeName": stringType().max(updateInitiativeBodyOneFollowUpsItemAssigneeNameMax).optional(),
|
|
6910
|
+
"dueDate": stringType().regex(updateInitiativeBodyOneFollowUpsItemDueDateRegExp),
|
|
6911
|
+
"doneDate": stringType().regex(updateInitiativeBodyOneFollowUpsItemDoneDateRegExp).optional(),
|
|
6912
|
+
"milestoneId": stringType().optional(),
|
|
6913
|
+
"riskId": stringType().optional(),
|
|
6914
|
+
"note": stringType().max(updateInitiativeBodyOneFollowUpsItemNoteMax).optional()
|
|
6915
|
+
}).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(),
|
|
6596
6916
|
"dependsOn": arrayType(stringType()).max(updateInitiativeBodyOneDependsOnMax),
|
|
6597
6917
|
"requiredSkills": arrayType(objectType({
|
|
6598
6918
|
"skillId": stringType(),
|
|
@@ -6740,6 +7060,24 @@ var updateInitiativeResponseMilestonesItemForecastDateRegExp = new RegExp("^\\d{
|
|
|
6740
7060
|
var updateInitiativeResponseMilestonesItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
6741
7061
|
var updateInitiativeResponseMilestonesItemNoteMax = 1e4;
|
|
6742
7062
|
var updateInitiativeResponseMilestonesMax = 30;
|
|
7063
|
+
var updateInitiativeResponseRisksItemTitleMax = 300;
|
|
7064
|
+
var updateInitiativeResponseRisksItemProbabilityMax = 5;
|
|
7065
|
+
var updateInitiativeResponseRisksItemImpactMax = 5;
|
|
7066
|
+
var updateInitiativeResponseRisksItemResidualProbabilityMax = 5;
|
|
7067
|
+
var updateInitiativeResponseRisksItemResidualImpactMax = 5;
|
|
7068
|
+
var updateInitiativeResponseRisksItemOwnerMax = 300;
|
|
7069
|
+
var updateInitiativeResponseRisksItemMitigationMax = 1e4;
|
|
7070
|
+
var updateInitiativeResponseRisksItemRaisedDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
7071
|
+
var updateInitiativeResponseRisksItemReviewDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
7072
|
+
var updateInitiativeResponseRisksItemOccurredDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
7073
|
+
var updateInitiativeResponseRisksItemNoteMax = 1e4;
|
|
7074
|
+
var updateInitiativeResponseRisksMax = 50;
|
|
7075
|
+
var updateInitiativeResponseFollowUpsItemTitleMax = 300;
|
|
7076
|
+
var updateInitiativeResponseFollowUpsItemAssigneeNameMax = 300;
|
|
7077
|
+
var updateInitiativeResponseFollowUpsItemDueDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
7078
|
+
var updateInitiativeResponseFollowUpsItemDoneDateRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}$");
|
|
7079
|
+
var updateInitiativeResponseFollowUpsItemNoteMax = 1e4;
|
|
7080
|
+
var updateInitiativeResponseFollowUpsMax = 50;
|
|
6743
7081
|
var updateInitiativeResponseDependsOnMax = 1e3;
|
|
6744
7082
|
var updateInitiativeResponseRequiredSkillsItemRunFteMin = 0;
|
|
6745
7083
|
var updateInitiativeResponseRequiredSkillsMax = 1e3;
|
|
@@ -6943,6 +7281,33 @@ var UpdateInitiativeResponse = objectType({
|
|
|
6943
7281
|
"doneDate": stringType().regex(updateInitiativeResponseMilestonesItemDoneDateRegExp).optional(),
|
|
6944
7282
|
"note": stringType().max(updateInitiativeResponseMilestonesItemNoteMax).optional()
|
|
6945
7283
|
}).describe("A dated intermediate result (docs/milestones-concept-2026-10-17.md). baselineDate is the agreed plan, forecastDate today's expectation (absent = the baseline), doneDate marks it reached; all yyyy-mm-dd.")).max(updateInitiativeResponseMilestonesMax).optional(),
|
|
7284
|
+
"risks": arrayType(objectType({
|
|
7285
|
+
"id": stringType(),
|
|
7286
|
+
"title": stringType().min(1).max(updateInitiativeResponseRisksItemTitleMax),
|
|
7287
|
+
"category": enumType(["delivery", "vendor", "data", "people", "regulatory", "technical", "financial"]),
|
|
7288
|
+
"probability": numberType().min(1).max(updateInitiativeResponseRisksItemProbabilityMax),
|
|
7289
|
+
"impact": numberType().min(1).max(updateInitiativeResponseRisksItemImpactMax),
|
|
7290
|
+
"residualProbability": numberType().min(1).max(updateInitiativeResponseRisksItemResidualProbabilityMax).optional(),
|
|
7291
|
+
"residualImpact": numberType().min(1).max(updateInitiativeResponseRisksItemResidualImpactMax).optional(),
|
|
7292
|
+
"status": enumType(["open", "mitigating", "closed", "occurred"]),
|
|
7293
|
+
"owner": stringType().max(updateInitiativeResponseRisksItemOwnerMax).optional(),
|
|
7294
|
+
"mitigation": stringType().max(updateInitiativeResponseRisksItemMitigationMax).optional(),
|
|
7295
|
+
"raisedDate": stringType().regex(updateInitiativeResponseRisksItemRaisedDateRegExp).optional(),
|
|
7296
|
+
"reviewDate": stringType().regex(updateInitiativeResponseRisksItemReviewDateRegExp).optional(),
|
|
7297
|
+
"occurredDate": stringType().regex(updateInitiativeResponseRisksItemOccurredDateRegExp).optional(),
|
|
7298
|
+
"note": stringType().max(updateInitiativeResponseRisksItemNoteMax).optional()
|
|
7299
|
+
}).describe("A concrete project risk, or an issue when status is occurred (docs/risks-issues-follow-ups-concept-2026-10-19.md). Probability and impact are integers 1-5; the residual pair (after mitigation) is sent as a pair or not at all. Dates are yyyy-mm-dd.")).max(updateInitiativeResponseRisksMax).optional(),
|
|
7300
|
+
"followUps": arrayType(objectType({
|
|
7301
|
+
"id": stringType(),
|
|
7302
|
+
"title": stringType().min(1).max(updateInitiativeResponseFollowUpsItemTitleMax),
|
|
7303
|
+
"assigneeUserId": stringType().uuid().optional(),
|
|
7304
|
+
"assigneeName": stringType().max(updateInitiativeResponseFollowUpsItemAssigneeNameMax).optional(),
|
|
7305
|
+
"dueDate": stringType().regex(updateInitiativeResponseFollowUpsItemDueDateRegExp),
|
|
7306
|
+
"doneDate": stringType().regex(updateInitiativeResponseFollowUpsItemDoneDateRegExp).optional(),
|
|
7307
|
+
"milestoneId": stringType().optional(),
|
|
7308
|
+
"riskId": stringType().optional(),
|
|
7309
|
+
"note": stringType().max(updateInitiativeResponseFollowUpsItemNoteMax).optional()
|
|
7310
|
+
}).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(),
|
|
6946
7311
|
"dependsOn": arrayType(stringType()).max(updateInitiativeResponseDependsOnMax),
|
|
6947
7312
|
"requiredSkills": arrayType(objectType({
|
|
6948
7313
|
"skillId": stringType(),
|
|
@@ -10241,6 +10606,10 @@ function assembleInitiative(input, now = /* @__PURE__ */ new Date()) {
|
|
|
10241
10606
|
if (updates && spec.milestones === void 0) {
|
|
10242
10607
|
warnings.push("milestones: none sent, and the app will offer this file as an update \u2014 it replaces the initiative's milestones, so any the app holds are removed. Send the full list to keep them.");
|
|
10243
10608
|
}
|
|
10609
|
+
if (updates) {
|
|
10610
|
+
warnings.push("risks: this file cannot carry risks, and the app will offer it as an update \u2014 any risks the app holds for this initiative are removed. Re-enter them in the app after the import, or add the initiative's details there instead.");
|
|
10611
|
+
warnings.push("followUps: this file cannot carry follow-ups, and the app will offer it as an update \u2014 any follow-ups the app holds for this initiative are removed. Re-enter them in the app after the import, or add the initiative's details there instead.");
|
|
10612
|
+
}
|
|
10244
10613
|
let businessUnit = spec.businessUnit;
|
|
10245
10614
|
let aiCategory = spec.aiCategory;
|
|
10246
10615
|
if (context) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bicon/mcp-composer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.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",
|