@crypto512/jicon-mcp 2.3.0 → 2.3.19
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/PROMPT.md +10 -28
- package/README.md +35 -7
- package/TOOL_LIST.md +206 -136
- package/dist/config/constants.d.ts +17 -4
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +20 -5
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +6 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +19 -8
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +10 -8
- package/dist/config/types.js.map +1 -1
- package/dist/confluence/client.d.ts.map +1 -1
- package/dist/confluence/client.js +7 -2
- package/dist/confluence/client.js.map +1 -1
- package/dist/confluence/tools.d.ts +8 -13
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +19 -37
- package/dist/confluence/tools.js.map +1 -1
- package/dist/credentials/extractor.d.ts +14 -3
- package/dist/credentials/extractor.d.ts.map +1 -1
- package/dist/credentials/extractor.js +83 -13
- package/dist/credentials/extractor.js.map +1 -1
- package/dist/credentials/index.d.ts +1 -1
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js.map +1 -1
- package/dist/credentials/types.d.ts +22 -0
- package/dist/credentials/types.d.ts.map +1 -1
- package/dist/credentials/types.js.map +1 -1
- package/dist/index.js +196 -184
- package/dist/index.js.map +1 -1
- package/dist/jira/activity-tools.d.ts +0 -4
- package/dist/jira/activity-tools.d.ts.map +1 -1
- package/dist/jira/activity-tools.js +42 -65
- package/dist/jira/activity-tools.js.map +1 -1
- package/dist/jira/client.d.ts +12 -0
- package/dist/jira/client.d.ts.map +1 -1
- package/dist/jira/client.js +30 -6
- package/dist/jira/client.js.map +1 -1
- package/dist/jira/formatters.d.ts +4 -1
- package/dist/jira/formatters.d.ts.map +1 -1
- package/dist/jira/formatters.js +9 -6
- package/dist/jira/formatters.js.map +1 -1
- package/dist/jira/tools.d.ts +48 -14
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +174 -101
- package/dist/jira/tools.js.map +1 -1
- package/dist/permissions/filter.d.ts.map +1 -1
- package/dist/permissions/filter.js +8 -4
- package/dist/permissions/filter.js.map +1 -1
- package/dist/permissions/tool-registry.d.ts +15 -13
- package/dist/permissions/tool-registry.d.ts.map +1 -1
- package/dist/permissions/tool-registry.js +16 -8
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/session/context.d.ts +3 -3
- package/dist/session/context.d.ts.map +1 -1
- package/dist/session/manager.d.ts +58 -27
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +177 -79
- package/dist/session/manager.js.map +1 -1
- package/dist/tempo/client.d.ts.map +1 -1
- package/dist/tempo/client.js +3 -1
- package/dist/tempo/client.js.map +1 -1
- package/dist/tempo/tools.d.ts +4 -4
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +15 -0
- package/dist/tempo/tools.js.map +1 -1
- package/dist/transport/http.d.ts +17 -18
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +135 -120
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/index.d.ts +7 -2
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +10 -4
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/types.d.ts +0 -2
- package/dist/transport/types.d.ts.map +1 -1
- package/dist/transport/types.js.map +1 -1
- package/dist/utils/buffer-tools.d.ts +2 -2
- package/dist/utils/buffer-tools.d.ts.map +1 -1
- package/dist/utils/buffer-tools.js +41 -19
- package/dist/utils/buffer-tools.js.map +1 -1
- package/dist/utils/http-client.d.ts.map +1 -1
- package/dist/utils/http-client.js +99 -2
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/jicon-help.d.ts +1 -1
- package/dist/utils/jicon-help.d.ts.map +1 -1
- package/dist/utils/jicon-help.js +126 -336
- package/dist/utils/jicon-help.js.map +1 -1
- package/dist/utils/logger.d.ts +43 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +102 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/plantuml/tools.js +2 -2
- package/dist/utils/plantuml/tools.js.map +1 -1
- package/dist/utils/response-formatter.d.ts +8 -0
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +65 -7
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/schemas/confluence.js +11 -11
- package/dist/utils/schemas/confluence.js.map +1 -1
- package/dist/utils/schemas/index.d.ts +11 -0
- package/dist/utils/schemas/index.d.ts.map +1 -1
- package/dist/utils/schemas/index.js.map +1 -1
- package/dist/utils/schemas/jira.d.ts +1 -1
- package/dist/utils/schemas/jira.d.ts.map +1 -1
- package/dist/utils/schemas/jira.js +37 -35
- package/dist/utils/schemas/jira.js.map +1 -1
- package/dist/utils/schemas/tempo.js +13 -13
- package/dist/utils/schemas/tempo.js.map +1 -1
- package/dist/utils/whoami-tools.d.ts +17 -0
- package/dist/utils/whoami-tools.d.ts.map +1 -0
- package/dist/utils/whoami-tools.js +90 -0
- package/dist/utils/whoami-tools.js.map +1 -0
- package/package.json +3 -3
- package/dist/credentials/client-factory.d.ts +0 -64
- package/dist/credentials/client-factory.d.ts.map +0 -1
- package/dist/credentials/client-factory.js +0 -110
- package/dist/credentials/client-factory.js.map +0 -1
- package/dist/credentials/context.d.ts +0 -25
- package/dist/credentials/context.d.ts.map +0 -1
- package/dist/credentials/context.js +0 -35
- package/dist/credentials/context.js.map +0 -1
- package/dist/utils/buffer-pipeline/index.d.ts +0 -30
- package/dist/utils/buffer-pipeline/index.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/index.js +0 -317
- package/dist/utils/buffer-pipeline/index.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/csv.d.ts +0 -20
- package/dist/utils/buffer-pipeline/output/csv.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/csv.js +0 -117
- package/dist/utils/buffer-pipeline/output/csv.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/json.d.ts +0 -16
- package/dist/utils/buffer-pipeline/output/json.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/json.js +0 -48
- package/dist/utils/buffer-pipeline/output/json.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/markdown.d.ts +0 -15
- package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/markdown.js +0 -105
- package/dist/utils/buffer-pipeline/output/markdown.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +0 -16
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-list.js +0 -81
- package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +0 -15
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-table.js +0 -176
- package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +0 -1
- package/dist/utils/buffer-pipeline/schema.d.ts +0 -1878
- package/dist/utils/buffer-pipeline/schema.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/schema.js +0 -168
- package/dist/utils/buffer-pipeline/schema.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/filter.d.ts +0 -32
- package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/filter.js +0 -208
- package/dist/utils/buffer-pipeline/stages/filter.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/format.d.ts +0 -45
- package/dist/utils/buffer-pipeline/stages/format.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/format.js +0 -160
- package/dist/utils/buffer-pipeline/stages/format.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts +0 -25
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/group-by.js +0 -190
- package/dist/utils/buffer-pipeline/stages/group-by.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/select.d.ts +0 -54
- package/dist/utils/buffer-pipeline/stages/select.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/select.js +0 -228
- package/dist/utils/buffer-pipeline/stages/select.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/sort.d.ts +0 -20
- package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/sort.js +0 -96
- package/dist/utils/buffer-pipeline/stages/sort.js.map +0 -1
- package/dist/utils/buffer-pipeline/types.d.ts +0 -277
- package/dist/utils/buffer-pipeline/types.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/types.js +0 -8
- package/dist/utils/buffer-pipeline/types.js.map +0 -1
- package/dist/utils/plantuml/docker-manager.d.ts +0 -37
- package/dist/utils/plantuml/docker-manager.d.ts.map +0 -1
- package/dist/utils/plantuml/docker-manager.js +0 -284
- package/dist/utils/plantuml/docker-manager.js.map +0 -1
|
@@ -8,33 +8,33 @@
|
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
10
|
* Jira Issue schema
|
|
11
|
-
* Used by: jira_search_issues, jira_get_issue, jira_list_epic_children, jira_get_sprint_issues
|
|
11
|
+
* Used by: jira_search_issues, jira_get_issue, jira_get_issues, jira_list_epic_children, jira_get_sprint_issues
|
|
12
12
|
*/
|
|
13
13
|
export const JIRA_ISSUE_SCHEMA = {
|
|
14
14
|
schemaType: "jira_issue",
|
|
15
|
-
description: "Jira issue with core fields flattened for easy access
|
|
15
|
+
description: "Jira issue with core fields flattened for easy access",
|
|
16
16
|
fields: {
|
|
17
17
|
id: { type: "string", required: true, description: "Jira internal issue ID" },
|
|
18
|
-
key: { type: "string", required: true, description: "Issue key (e.g., PROJ-123)" },
|
|
18
|
+
key: { type: "string", required: true, searchable: true, description: "Issue key (e.g., PROJ-123)" },
|
|
19
19
|
self: { type: "string", required: true, description: "API URL for this issue" },
|
|
20
|
-
summary: { type: "string", required: true, description: "Issue title/summary" },
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
timespent: { type: "number", required: false, description: "Time spent in seconds (
|
|
35
|
-
timespentSeconds: { type: "number", required: false, description: "Alias for timespent (
|
|
36
|
-
timeoriginalestimate: { type: "number", required: false, description: "Original estimate in seconds
|
|
37
|
-
aggregatetimespent: { type: "number", required: false, description: "Aggregate time spent
|
|
20
|
+
summary: { type: "string", required: true, searchable: true, writable: true, description: "Issue title/summary" },
|
|
21
|
+
description: { type: "string", required: false, optional: true, searchable: true, writable: true, description: "Issue description (plain text or wiki markup)" },
|
|
22
|
+
status: { type: "string", required: true, searchable: true, description: "Current status name (e.g., 'In Progress')" },
|
|
23
|
+
statusCategory: { type: "string", required: false, optional: true, searchable: true, description: "Status category (To Do, In Progress, Done)" },
|
|
24
|
+
type: { type: "string", required: true, searchable: true, writable: true, jqlName: "issuetype", description: "Issue type name (Bug, Story, Epic, Task, etc.)" },
|
|
25
|
+
priority: { type: "string", required: false, optional: true, searchable: true, writable: true, description: "Priority name (Highest, High, Medium, Low, Lowest)" },
|
|
26
|
+
assignee: { type: "string", required: false, optional: true, searchable: true, writable: true, description: "Assignee display name" },
|
|
27
|
+
assigneeEmail: { type: "string", required: false, optional: true, description: "Assignee email address" },
|
|
28
|
+
reporter: { type: "string", required: false, optional: true, searchable: true, writable: true, description: "Reporter display name" },
|
|
29
|
+
reporterEmail: { type: "string", required: false, optional: true, description: "Reporter email address" },
|
|
30
|
+
created: { type: "string", required: true, searchable: true, description: "ISO date when issue was created" },
|
|
31
|
+
updated: { type: "string", required: true, searchable: true, description: "ISO date when issue was last updated" },
|
|
32
|
+
labels: { type: "array", required: true, searchable: true, writable: true, description: "Array of label strings", itemType: "string" },
|
|
33
|
+
components: { type: "array", required: true, searchable: true, writable: true, jqlName: "component", description: "Array of component names", itemType: "string" },
|
|
34
|
+
timespent: { type: "number", required: false, optional: true, searchable: true, description: "Time spent in seconds (use jira_get_total_worklogs for accuracy)" },
|
|
35
|
+
timespentSeconds: { type: "number", required: false, optional: true, description: "Alias for timespent (use jira_get_total_worklogs for accuracy)" },
|
|
36
|
+
timeoriginalestimate: { type: "number", required: false, optional: true, searchable: true, writable: true, description: "Original estimate in seconds" },
|
|
37
|
+
aggregatetimespent: { type: "number", required: false, optional: true, searchable: true, description: "Aggregate time spent incl. subtasks in seconds (use jira_get_total_worklogs for accuracy)" },
|
|
38
38
|
},
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
@@ -46,11 +46,13 @@ export const JIRA_COMMENT_SCHEMA = {
|
|
|
46
46
|
description: "Jira issue comment",
|
|
47
47
|
fields: {
|
|
48
48
|
id: { type: "string", required: true, description: "Comment ID" },
|
|
49
|
+
issueKey: { type: "string", required: false, optional: true, description: "Parent issue key (e.g., PROJ-123). Present in multi-issue results." },
|
|
50
|
+
issueSummary: { type: "string", required: false, optional: true, description: "Parent issue summary. Present in multi-issue results." },
|
|
49
51
|
author: { type: "string", required: true, description: "Author display name" },
|
|
50
|
-
authorEmail: { type: "string", required: false, description: "Author email address" },
|
|
52
|
+
authorEmail: { type: "string", required: false, optional: true, description: "Author email address" },
|
|
51
53
|
body: { type: "string", required: true, description: "Comment text content" },
|
|
52
54
|
created: { type: "string", required: true, description: "ISO date when comment was created" },
|
|
53
|
-
updated: { type: "string", required: false, description: "ISO date when comment was last updated" },
|
|
55
|
+
updated: { type: "string", required: false, optional: true, description: "ISO date when comment was last updated" },
|
|
54
56
|
},
|
|
55
57
|
};
|
|
56
58
|
/**
|
|
@@ -64,9 +66,9 @@ export const JIRA_PROJECT_SCHEMA = {
|
|
|
64
66
|
id: { type: "string", required: true, description: "Project internal ID" },
|
|
65
67
|
key: { type: "string", required: true, description: "Project key (e.g., PROJ)" },
|
|
66
68
|
name: { type: "string", required: true, description: "Project name" },
|
|
67
|
-
description: { type: "string", required: false, description: "Project description" },
|
|
68
|
-
lead: { type: "string", required: false, description: "Project lead display name" },
|
|
69
|
-
leadEmail: { type: "string", required: false, description: "Project lead email" },
|
|
69
|
+
description: { type: "string", required: false, optional: true, description: "Project description" },
|
|
70
|
+
lead: { type: "string", required: false, optional: true, description: "Project lead display name" },
|
|
71
|
+
leadEmail: { type: "string", required: false, optional: true, description: "Project lead email" },
|
|
70
72
|
type: { type: "string", required: true, description: "Project type (software, business, etc.)" },
|
|
71
73
|
},
|
|
72
74
|
};
|
|
@@ -81,7 +83,7 @@ export const JIRA_BOARD_SCHEMA = {
|
|
|
81
83
|
id: { type: "number", required: true, description: "Board ID" },
|
|
82
84
|
name: { type: "string", required: true, description: "Board name" },
|
|
83
85
|
type: { type: "string", required: true, description: "Board type (scrum, kanban)" },
|
|
84
|
-
projectKey: { type: "string", required: false, description: "Associated project key" },
|
|
86
|
+
projectKey: { type: "string", required: false, optional: true, description: "Associated project key" },
|
|
85
87
|
},
|
|
86
88
|
};
|
|
87
89
|
/**
|
|
@@ -95,9 +97,9 @@ export const JIRA_SPRINT_SCHEMA = {
|
|
|
95
97
|
id: { type: "number", required: true, description: "Sprint ID" },
|
|
96
98
|
name: { type: "string", required: true, description: "Sprint name" },
|
|
97
99
|
state: { type: "string", required: true, description: "Sprint state (active, future, closed)" },
|
|
98
|
-
startDate: { type: "string", required: false, description: "Sprint start date (ISO)" },
|
|
99
|
-
endDate: { type: "string", required: false, description: "Sprint end date (ISO)" },
|
|
100
|
-
goal: { type: "string", required: false, description: "Sprint goal" },
|
|
100
|
+
startDate: { type: "string", required: false, optional: true, description: "Sprint start date (ISO)" },
|
|
101
|
+
endDate: { type: "string", required: false, optional: true, description: "Sprint end date (ISO)" },
|
|
102
|
+
goal: { type: "string", required: false, optional: true, description: "Sprint goal" },
|
|
101
103
|
},
|
|
102
104
|
};
|
|
103
105
|
/**
|
|
@@ -109,15 +111,15 @@ export const JIRA_WORKLOG_SCHEMA = {
|
|
|
109
111
|
description: "Jira worklog entry (time logged)",
|
|
110
112
|
fields: {
|
|
111
113
|
id: { type: "string", required: true, description: "Worklog ID" },
|
|
112
|
-
issueKey: { type: "string", required: false, description: "Parent issue key" },
|
|
114
|
+
issueKey: { type: "string", required: false, optional: true, description: "Parent issue key" },
|
|
113
115
|
author: { type: "string", required: true, description: "Author display name" },
|
|
114
|
-
authorEmail: { type: "string", required: false, description: "Author email" },
|
|
116
|
+
authorEmail: { type: "string", required: false, optional: true, description: "Author email" },
|
|
115
117
|
timeSpentSeconds: { type: "number", required: true, description: "Time spent in seconds" },
|
|
116
|
-
timeSpent: { type: "string", required: false, description: "Time spent formatted (e.g., '2h 30m')" },
|
|
118
|
+
timeSpent: { type: "string", required: false, optional: true, description: "Time spent formatted (e.g., '2h 30m')" },
|
|
117
119
|
started: { type: "string", required: true, description: "Work start date (ISO)" },
|
|
118
|
-
comment: { type: "string", required: false, description: "Worklog description" },
|
|
120
|
+
comment: { type: "string", required: false, optional: true, description: "Worklog description" },
|
|
119
121
|
created: { type: "string", required: true, description: "When worklog was created (ISO)" },
|
|
120
|
-
updated: { type: "string", required: false, description: "When worklog was updated (ISO)" },
|
|
122
|
+
updated: { type: "string", required: false, optional: true, description: "When worklog was updated (ISO)" },
|
|
121
123
|
},
|
|
122
124
|
};
|
|
123
125
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jira.js","sourceRoot":"","sources":["../../../src/utils/schemas/jira.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IACjD,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"jira.js","sourceRoot":"","sources":["../../../src/utils/schemas/jira.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,18 +15,18 @@ export const TEMPO_WORKLOG_SCHEMA = {
|
|
|
15
15
|
description: "Tempo worklog entry with time tracking details",
|
|
16
16
|
fields: {
|
|
17
17
|
tempoWorklogId: { type: "number", required: true, description: "Tempo worklog ID" },
|
|
18
|
-
jiraWorklogId: { type: "number", required: false, description: "Linked Jira worklog ID" },
|
|
18
|
+
jiraWorklogId: { type: "number", required: false, optional: true, description: "Linked Jira worklog ID" },
|
|
19
19
|
issueKey: { type: "string", required: true, description: "Jira issue key (e.g., PROJ-123)" },
|
|
20
|
-
issueId: { type: "number", required: false, description: "Jira issue ID" },
|
|
20
|
+
issueId: { type: "number", required: false, optional: true, description: "Jira issue ID" },
|
|
21
21
|
workerKey: { type: "string", required: true, description: "Worker username or JIRAUSER key" },
|
|
22
|
-
workerDisplayName: { type: "string", required: false, description: "Worker display name (resolved from Jira)" },
|
|
22
|
+
workerDisplayName: { type: "string", required: false, optional: true, description: "Worker display name (resolved from Jira)" },
|
|
23
23
|
timeSpentSeconds: { type: "number", required: true, description: "Time spent in seconds" },
|
|
24
|
-
timeSpent: { type: "string", required: false, description: "Time spent formatted (e.g., '2h 30m')" },
|
|
25
|
-
billableSeconds: { type: "number", required: false, description: "Billable time in seconds" },
|
|
24
|
+
timeSpent: { type: "string", required: false, optional: true, description: "Time spent formatted (e.g., '2h 30m')" },
|
|
25
|
+
billableSeconds: { type: "number", required: false, optional: true, description: "Billable time in seconds" },
|
|
26
26
|
startDate: { type: "string", required: true, description: "Work date (YYYY-MM-DD or full timestamp)" },
|
|
27
|
-
comment: { type: "string", required: false, description: "Work description" },
|
|
27
|
+
comment: { type: "string", required: false, optional: true, description: "Work description" },
|
|
28
28
|
dateCreated: { type: "string", required: true, description: "When worklog was created (ISO)" },
|
|
29
|
-
dateUpdated: { type: "string", required: false, description: "When worklog was updated (ISO)" },
|
|
29
|
+
dateUpdated: { type: "string", required: false, optional: true, description: "When worklog was updated (ISO)" },
|
|
30
30
|
},
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
@@ -41,9 +41,9 @@ export const TEMPO_ACCOUNT_SCHEMA = {
|
|
|
41
41
|
key: { type: "string", required: true, description: "Account key" },
|
|
42
42
|
name: { type: "string", required: true, description: "Account name" },
|
|
43
43
|
status: { type: "string", required: true, description: "Account status (OPEN, CLOSED, ARCHIVED)" },
|
|
44
|
-
lead: { type: "string", required: false, description: "Account lead display name" },
|
|
45
|
-
leadEmail: { type: "string", required: false, description: "Account lead email" },
|
|
46
|
-
category: { type: "string", required: false, description: "Account category" },
|
|
44
|
+
lead: { type: "string", required: false, optional: true, description: "Account lead display name" },
|
|
45
|
+
leadEmail: { type: "string", required: false, optional: true, description: "Account lead email" },
|
|
46
|
+
category: { type: "string", required: false, optional: true, description: "Account category" },
|
|
47
47
|
},
|
|
48
48
|
};
|
|
49
49
|
/**
|
|
@@ -56,9 +56,9 @@ export const TEMPO_TEAM_SCHEMA = {
|
|
|
56
56
|
fields: {
|
|
57
57
|
id: { type: "number", required: true, description: "Team ID" },
|
|
58
58
|
name: { type: "string", required: true, description: "Team name" },
|
|
59
|
-
lead: { type: "string", required: false, description: "Team lead display name" },
|
|
60
|
-
leadEmail: { type: "string", required: false, description: "Team lead email" },
|
|
61
|
-
members: { type: "array", required: false, description: "Team member list", itemType: "object" },
|
|
59
|
+
lead: { type: "string", required: false, optional: true, description: "Team lead display name" },
|
|
60
|
+
leadEmail: { type: "string", required: false, optional: true, description: "Team lead email" },
|
|
61
|
+
members: { type: "array", required: false, optional: true, description: "Team member list", itemType: "object" },
|
|
62
62
|
},
|
|
63
63
|
};
|
|
64
64
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tempo.js","sourceRoot":"","sources":["../../../src/utils/schemas/tempo.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,gDAAgD;IAC7D,MAAM,EAAE;QACN,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;QACnF,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE;
|
|
1
|
+
{"version":3,"file":"tempo.js","sourceRoot":"","sources":["../../../src/utils/schemas/tempo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified user identity tool
|
|
3
|
+
* Returns authenticated user info from all configured services
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import type { ToolResult } from "../types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Create whoami tools
|
|
9
|
+
*/
|
|
10
|
+
export declare function createWhoamiTools(): {
|
|
11
|
+
whoami: {
|
|
12
|
+
description: string;
|
|
13
|
+
inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
14
|
+
handler: () => Promise<ToolResult>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=whoami-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami-tools.d.ts","sourceRoot":"","sources":["../../src/utils/whoami-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,wBAAgB,iBAAiB;;;;uBAWR,OAAO,CAAC,UAAU,CAAC;;EAuE3C"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified user identity tool
|
|
3
|
+
* Returns authenticated user info from all configured services
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { formatSuccess, formatError, isApiError } from "./response-formatter.js";
|
|
7
|
+
import { getSessionJiraClient, getSessionConfluenceClient, } from "../session/context.js";
|
|
8
|
+
/**
|
|
9
|
+
* Create whoami tools
|
|
10
|
+
*/
|
|
11
|
+
export function createWhoamiTools() {
|
|
12
|
+
return {
|
|
13
|
+
whoami: {
|
|
14
|
+
description: `Get the currently authenticated user from all configured services.
|
|
15
|
+
|
|
16
|
+
Returns user identity from Jira and Confluence (whichever are configured).
|
|
17
|
+
For Confluence, also returns personal space info (spaceKey, homePageId).
|
|
18
|
+
Useful for verifying credentials, getting user keys for queries, or confirming access.
|
|
19
|
+
|
|
20
|
+
Example: whoami()`,
|
|
21
|
+
inputSchema: z.object({}),
|
|
22
|
+
handler: async () => {
|
|
23
|
+
const result = {};
|
|
24
|
+
const errors = [];
|
|
25
|
+
// Get Jira user
|
|
26
|
+
const jiraClient = getSessionJiraClient();
|
|
27
|
+
if (jiraClient) {
|
|
28
|
+
try {
|
|
29
|
+
const user = await jiraClient.getCurrentUser();
|
|
30
|
+
result.jira = {
|
|
31
|
+
key: user.key,
|
|
32
|
+
name: user.name,
|
|
33
|
+
displayName: user.displayName,
|
|
34
|
+
emailAddress: user.emailAddress,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
errors.push(`Jira: ${isApiError(error) ? error.message : String(error)}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Get Confluence user and personal space
|
|
42
|
+
const confluenceClient = getSessionConfluenceClient();
|
|
43
|
+
if (confluenceClient) {
|
|
44
|
+
try {
|
|
45
|
+
const user = await confluenceClient.getCurrentUser();
|
|
46
|
+
const confluenceInfo = {
|
|
47
|
+
userKey: user.userKey,
|
|
48
|
+
username: user.username,
|
|
49
|
+
displayName: user.displayName,
|
|
50
|
+
};
|
|
51
|
+
// Also get personal space
|
|
52
|
+
try {
|
|
53
|
+
const userSpace = await confluenceClient.getCurrentUserSpace();
|
|
54
|
+
if (userSpace) {
|
|
55
|
+
confluenceInfo.personalSpace = {
|
|
56
|
+
spaceKey: userSpace.key,
|
|
57
|
+
spaceName: userSpace.name,
|
|
58
|
+
spaceType: userSpace.type,
|
|
59
|
+
homePageId: userSpace.homepage?.id,
|
|
60
|
+
homePageTitle: userSpace.homepage?.title,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Personal space not available - that's ok
|
|
66
|
+
}
|
|
67
|
+
result.confluence = confluenceInfo;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
errors.push(`Confluence: ${isApiError(error) ? error.message : String(error)}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Check if any service returned data
|
|
74
|
+
if (Object.keys(result).length === 0 && errors.length === 0) {
|
|
75
|
+
return formatError({
|
|
76
|
+
error: true,
|
|
77
|
+
message: "No services configured. Configure Jira or Confluence credentials.",
|
|
78
|
+
statusCode: 400,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// Include errors if any service failed
|
|
82
|
+
if (errors.length > 0) {
|
|
83
|
+
result.errors = errors;
|
|
84
|
+
}
|
|
85
|
+
return formatSuccess(result);
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=whoami-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami-tools.js","sourceRoot":"","sources":["../../src/utils/whoami-tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crypto512/jicon-mcp",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.19",
|
|
4
4
|
"description": "Model Context Protocol server for Jira, Confluence, and Tempo integration",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"author": "",
|
|
40
40
|
"license": "MIT",
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
42
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
43
43
|
"axios": "^1.13.4",
|
|
44
44
|
"express": "^4.22.1",
|
|
45
45
|
"form-data": "^4.0.5",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@types/express": "^5.0.6",
|
|
52
|
-
"@types/node": "^22.19.
|
|
52
|
+
"@types/node": "^22.19.9",
|
|
53
53
|
"typescript": "^5.9.3"
|
|
54
54
|
},
|
|
55
55
|
"engines": {
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client factory for creating API clients with per-request or default credentials
|
|
3
|
-
*/
|
|
4
|
-
import { JiraClient } from "../jira/client.js";
|
|
5
|
-
import { ConfluenceClient } from "../confluence/client.js";
|
|
6
|
-
import { TempoClient } from "../tempo/client.js";
|
|
7
|
-
import type { ApiConfig } from "../types.js";
|
|
8
|
-
export interface Clients {
|
|
9
|
-
jira: JiraClient | null;
|
|
10
|
-
confluence: ConfluenceClient | null;
|
|
11
|
-
tempo: TempoClient | null;
|
|
12
|
-
}
|
|
13
|
-
export interface ClientFactoryConfig {
|
|
14
|
-
defaultJiraConfig: ApiConfig | null;
|
|
15
|
-
defaultConfluenceConfig: ApiConfig | null;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Factory for creating API clients
|
|
19
|
-
*
|
|
20
|
-
* - Checks AsyncLocalStorage for per-request credentials
|
|
21
|
-
* - Falls back to default credentials from environment
|
|
22
|
-
* - Caches default clients for reuse (when no per-request credentials)
|
|
23
|
-
*/
|
|
24
|
-
export declare class ClientFactory {
|
|
25
|
-
private defaultClients;
|
|
26
|
-
private config;
|
|
27
|
-
constructor(config: ClientFactoryConfig);
|
|
28
|
-
/**
|
|
29
|
-
* Get Jira client for current request
|
|
30
|
-
*
|
|
31
|
-
* Checks for per-request credentials in AsyncLocalStorage context,
|
|
32
|
-
* falls back to default client if none provided.
|
|
33
|
-
*/
|
|
34
|
-
getJiraClient(): JiraClient | null;
|
|
35
|
-
/**
|
|
36
|
-
* Get Confluence client for current request
|
|
37
|
-
*/
|
|
38
|
-
getConfluenceClient(): ConfluenceClient | null;
|
|
39
|
-
/**
|
|
40
|
-
* Get Tempo client for current request (uses Jira credentials)
|
|
41
|
-
*/
|
|
42
|
-
getTempoClient(): TempoClient | null;
|
|
43
|
-
/**
|
|
44
|
-
* Get all clients for current request
|
|
45
|
-
*/
|
|
46
|
-
getClients(): Clients;
|
|
47
|
-
/**
|
|
48
|
-
* Get default clients (ignores per-request credentials)
|
|
49
|
-
*/
|
|
50
|
-
getDefaultClients(): Clients;
|
|
51
|
-
/**
|
|
52
|
-
* Check if Jira is configured (either default or per-request)
|
|
53
|
-
*/
|
|
54
|
-
hasJira(): boolean;
|
|
55
|
-
/**
|
|
56
|
-
* Check if Confluence is configured (either default or per-request)
|
|
57
|
-
*/
|
|
58
|
-
hasConfluence(): boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Convert service credentials to ApiConfig
|
|
61
|
-
*/
|
|
62
|
-
private toApiConfig;
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=client-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../../src/credentials/client-factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,SAAS,GAAG,IAAI,CAAC;IACpC,uBAAuB,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAavC;;;;;OAKG;IACH,aAAa,IAAI,UAAU,GAAG,IAAI;IAYlC;;OAEG;IACH,mBAAmB,IAAI,gBAAgB,GAAG,IAAI;IAY9C;;OAEG;IACH,cAAc,IAAI,WAAW,GAAG,IAAI;IAYpC;;OAEG;IACH,UAAU,IAAI,OAAO;IAQrB;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,OAAO,IAAI,OAAO;IAKlB;;OAEG;IACH,aAAa,IAAI,OAAO;IAKxB;;OAEG;IACH,OAAO,CAAC,WAAW;CAQpB"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client factory for creating API clients with per-request or default credentials
|
|
3
|
-
*/
|
|
4
|
-
import { JiraClient } from "../jira/client.js";
|
|
5
|
-
import { ConfluenceClient } from "../confluence/client.js";
|
|
6
|
-
import { TempoClient } from "../tempo/client.js";
|
|
7
|
-
import { getRequestCredentials } from "./context.js";
|
|
8
|
-
/**
|
|
9
|
-
* Factory for creating API clients
|
|
10
|
-
*
|
|
11
|
-
* - Checks AsyncLocalStorage for per-request credentials
|
|
12
|
-
* - Falls back to default credentials from environment
|
|
13
|
-
* - Caches default clients for reuse (when no per-request credentials)
|
|
14
|
-
*/
|
|
15
|
-
export class ClientFactory {
|
|
16
|
-
defaultClients;
|
|
17
|
-
config;
|
|
18
|
-
constructor(config) {
|
|
19
|
-
this.config = config;
|
|
20
|
-
// Create default clients from environment credentials
|
|
21
|
-
this.defaultClients = {
|
|
22
|
-
jira: config.defaultJiraConfig ? new JiraClient(config.defaultJiraConfig) : null,
|
|
23
|
-
confluence: config.defaultConfluenceConfig
|
|
24
|
-
? new ConfluenceClient(config.defaultConfluenceConfig)
|
|
25
|
-
: null,
|
|
26
|
-
tempo: config.defaultJiraConfig ? new TempoClient(config.defaultJiraConfig) : null,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Get Jira client for current request
|
|
31
|
-
*
|
|
32
|
-
* Checks for per-request credentials in AsyncLocalStorage context,
|
|
33
|
-
* falls back to default client if none provided.
|
|
34
|
-
*/
|
|
35
|
-
getJiraClient() {
|
|
36
|
-
const requestCreds = getRequestCredentials();
|
|
37
|
-
if (requestCreds?.jira) {
|
|
38
|
-
// Create client with per-request credentials
|
|
39
|
-
return new JiraClient(this.toApiConfig(requestCreds.jira));
|
|
40
|
-
}
|
|
41
|
-
// Use default client
|
|
42
|
-
return this.defaultClients.jira;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Get Confluence client for current request
|
|
46
|
-
*/
|
|
47
|
-
getConfluenceClient() {
|
|
48
|
-
const requestCreds = getRequestCredentials();
|
|
49
|
-
if (requestCreds?.confluence) {
|
|
50
|
-
// Create client with per-request credentials
|
|
51
|
-
return new ConfluenceClient(this.toApiConfig(requestCreds.confluence));
|
|
52
|
-
}
|
|
53
|
-
// Use default client
|
|
54
|
-
return this.defaultClients.confluence;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Get Tempo client for current request (uses Jira credentials)
|
|
58
|
-
*/
|
|
59
|
-
getTempoClient() {
|
|
60
|
-
const requestCreds = getRequestCredentials();
|
|
61
|
-
if (requestCreds?.jira) {
|
|
62
|
-
// Create client with per-request Jira credentials
|
|
63
|
-
return new TempoClient(this.toApiConfig(requestCreds.jira));
|
|
64
|
-
}
|
|
65
|
-
// Use default client
|
|
66
|
-
return this.defaultClients.tempo;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Get all clients for current request
|
|
70
|
-
*/
|
|
71
|
-
getClients() {
|
|
72
|
-
return {
|
|
73
|
-
jira: this.getJiraClient(),
|
|
74
|
-
confluence: this.getConfluenceClient(),
|
|
75
|
-
tempo: this.getTempoClient(),
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Get default clients (ignores per-request credentials)
|
|
80
|
-
*/
|
|
81
|
-
getDefaultClients() {
|
|
82
|
-
return this.defaultClients;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Check if Jira is configured (either default or per-request)
|
|
86
|
-
*/
|
|
87
|
-
hasJira() {
|
|
88
|
-
const requestCreds = getRequestCredentials();
|
|
89
|
-
return !!(requestCreds?.jira || this.config.defaultJiraConfig);
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Check if Confluence is configured (either default or per-request)
|
|
93
|
-
*/
|
|
94
|
-
hasConfluence() {
|
|
95
|
-
const requestCreds = getRequestCredentials();
|
|
96
|
-
return !!(requestCreds?.confluence || this.config.defaultConfluenceConfig);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Convert service credentials to ApiConfig
|
|
100
|
-
*/
|
|
101
|
-
toApiConfig(creds) {
|
|
102
|
-
return {
|
|
103
|
-
url: creds.url,
|
|
104
|
-
token: creds.token,
|
|
105
|
-
// Per-request credentials use bearer auth (PAT style)
|
|
106
|
-
authType: "bearer",
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=client-factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-factory.js","sourceRoot":"","sources":["../../src/credentials/client-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Request context for per-user credentials using AsyncLocalStorage
|
|
3
|
-
*
|
|
4
|
-
* This allows tool handlers to access per-request credentials without
|
|
5
|
-
* needing to modify their function signatures.
|
|
6
|
-
*/
|
|
7
|
-
import type { RequestCredentials } from "./types.js";
|
|
8
|
-
/**
|
|
9
|
-
* Run a function with per-request credentials in context
|
|
10
|
-
*
|
|
11
|
-
* @param credentials - Per-request credentials from HTTP headers
|
|
12
|
-
* @param fn - Function to run with credentials in context
|
|
13
|
-
*/
|
|
14
|
-
export declare function runWithCredentials<T>(credentials: RequestCredentials, fn: () => T | Promise<T>): T | Promise<T>;
|
|
15
|
-
/**
|
|
16
|
-
* Get credentials from the current request context
|
|
17
|
-
*
|
|
18
|
-
* @returns Per-request credentials if available, undefined otherwise
|
|
19
|
-
*/
|
|
20
|
-
export declare function getRequestCredentials(): RequestCredentials | undefined;
|
|
21
|
-
/**
|
|
22
|
-
* Check if we're running in a request context with credentials
|
|
23
|
-
*/
|
|
24
|
-
export declare function hasRequestContext(): boolean;
|
|
25
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/credentials/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAOrD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,WAAW,EAAE,kBAAkB,EAC/B,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,GAAG,SAAS,CAEtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
|