@agentteams/cli 0.1.85 → 0.1.86
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/.eslintcache +1 -1
- package/dist/api/document.d.ts +10 -1
- package/dist/api/document.d.ts.map +1 -1
- package/dist/api/document.js +3 -1
- package/dist/api/document.js.map +1 -1
- package/dist/commands/convention.d.ts.map +1 -1
- package/dist/commands/convention.js +60 -5
- package/dist/commands/convention.js.map +1 -1
- package/dist/commands/document.d.ts +3 -0
- package/dist/commands/document.d.ts.map +1 -1
- package/dist/commands/document.js +18 -1
- package/dist/commands/document.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/context.d.ts +9 -0
- package/dist/mcp/context.d.ts.map +1 -1
- package/dist/mcp/context.js +5 -1
- package/dist/mcp/context.js.map +1 -1
- package/dist/mcp/guides.d.ts +50 -0
- package/dist/mcp/guides.d.ts.map +1 -0
- package/dist/mcp/guides.js +141 -0
- package/dist/mcp/guides.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +20 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/writeTools.d.ts +25 -0
- package/dist/mcp/writeTools.d.ts.map +1 -0
- package/dist/mcp/writeTools.js +161 -0
- package/dist/mcp/writeTools.js.map +1 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +20 -1
- package/dist/utils/errors.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { stripContextEntityIdPrefix } from '@agentteams/context-tools';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { createDocument, deleteDocument, updateDocument } from '../api/document.js';
|
|
4
|
+
import { GUIDE_RECORD_KINDS, describeMissingGuideHash, resolvePlatformGuide } from './guides.js';
|
|
5
|
+
const GUIDE_FIRST = 'Call agentteams_guide_get("document") first and follow that guide.';
|
|
6
|
+
const TAG_POLICY = 'You cannot set confirmed tags. Anything you pass in suggestedTags is a suggestion for a human to confirm.';
|
|
7
|
+
const PROJECT_SCOPE = 'Scoped to the single project this MCP server is bound to. There is no projectId argument — a different project cannot be reached from here.';
|
|
8
|
+
const guideHashField = z
|
|
9
|
+
.string()
|
|
10
|
+
.min(1)
|
|
11
|
+
.optional()
|
|
12
|
+
.describe('guideHash from agentteams_guide_get. If it is stale the server rejects the write with GUIDE_OUTDATED.');
|
|
13
|
+
const idempotencyKeyField = z
|
|
14
|
+
.string()
|
|
15
|
+
.min(1)
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('Retry-safe key. Repeating the same call with the same key replays the first result instead of redoing it.');
|
|
18
|
+
const expectedUpdatedAtField = z
|
|
19
|
+
.string()
|
|
20
|
+
.min(1)
|
|
21
|
+
.optional()
|
|
22
|
+
.describe("The document's updatedAt as you last read it. The write is rejected if someone else changed the document since.");
|
|
23
|
+
const suggestedTagsField = z
|
|
24
|
+
.array(z.string().min(1))
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Suggested tags (not confirmed). Reuse existing project tags where they fit.');
|
|
27
|
+
const visibilityField = z
|
|
28
|
+
.enum(['PRIVATE', 'PROJECT'])
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('PRIVATE (default) is author-only; PROJECT is visible to every project member.');
|
|
31
|
+
/** Credentials can expire mid-session, so headers are resolved per call, never captured. */
|
|
32
|
+
const auth = (context) => context.resolveHeaders?.() ?? Promise.resolve(context.headers);
|
|
33
|
+
/** Drop keys the caller omitted so an absent optional never reaches the server as `undefined`. */
|
|
34
|
+
const definedFields = (fields) => Object.fromEntries(Object.entries(fields).filter(([, value]) => value !== undefined));
|
|
35
|
+
const guideGetSpec = {
|
|
36
|
+
name: 'agentteams_guide_get',
|
|
37
|
+
title: 'Get AgentTeams Record Guide',
|
|
38
|
+
description: [
|
|
39
|
+
'Fetch the platform guide that governs how a record type must be written.',
|
|
40
|
+
'Reads this project’s local copy when the session sits in it, and falls back to the server otherwise.',
|
|
41
|
+
'Returns the full guide body plus the guideHash to pass to the matching write tool.',
|
|
42
|
+
'Read this before any AgentTeams write tool call — the rules it states (visibility, tag policy, structure) are enforced server-side.',
|
|
43
|
+
'If it reports that the local guide hash is unknown, run `agentteams convention download` in the project.',
|
|
44
|
+
].join(' '),
|
|
45
|
+
inputSchema: z.strictObject({
|
|
46
|
+
recordKind: z
|
|
47
|
+
.enum(GUIDE_RECORD_KINDS)
|
|
48
|
+
.describe('Record type whose guide you need. Only "document" is write-enabled so far.'),
|
|
49
|
+
}),
|
|
50
|
+
handler: async (args, context) => {
|
|
51
|
+
const guide = await resolvePlatformGuide(args.recordKind, {
|
|
52
|
+
projectRoot: context.projectRoot,
|
|
53
|
+
apiUrl: context.apiUrl,
|
|
54
|
+
headers: await auth(context),
|
|
55
|
+
});
|
|
56
|
+
const warning = describeMissingGuideHash(guide);
|
|
57
|
+
return {
|
|
58
|
+
recordKind: guide.recordKind,
|
|
59
|
+
fileName: guide.fileName,
|
|
60
|
+
source: guide.source,
|
|
61
|
+
...(guide.filePath ? { filePath: guide.filePath } : {}),
|
|
62
|
+
guideHash: guide.guideHash,
|
|
63
|
+
content: guide.content,
|
|
64
|
+
...(warning ? { warning } : {}),
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
const documentCreateSpec = {
|
|
69
|
+
name: 'agentteams_document_create',
|
|
70
|
+
title: 'Create AgentTeams Document',
|
|
71
|
+
description: [
|
|
72
|
+
'Create a document in this project’s document library.',
|
|
73
|
+
GUIDE_FIRST,
|
|
74
|
+
TAG_POLICY,
|
|
75
|
+
PROJECT_SCOPE,
|
|
76
|
+
'Returns the created document id and webUrl.',
|
|
77
|
+
].join(' '),
|
|
78
|
+
inputSchema: z.strictObject({
|
|
79
|
+
title: z.string().min(1).max(255).describe('Document title.'),
|
|
80
|
+
body: z.string().min(1).describe('Document body in Markdown.'),
|
|
81
|
+
suggestedTags: suggestedTagsField,
|
|
82
|
+
visibility: visibilityField,
|
|
83
|
+
guideHash: guideHashField,
|
|
84
|
+
idempotencyKey: idempotencyKeyField,
|
|
85
|
+
}),
|
|
86
|
+
handler: async (args, context) => {
|
|
87
|
+
return createDocument(context.apiUrl, context.projectId, await auth(context), definedFields({
|
|
88
|
+
title: args.title,
|
|
89
|
+
body: args.body,
|
|
90
|
+
suggestedTags: args.suggestedTags,
|
|
91
|
+
visibility: args.visibility,
|
|
92
|
+
guideHash: args.guideHash,
|
|
93
|
+
idempotencyKey: args.idempotencyKey,
|
|
94
|
+
}));
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
const documentUpdateSpec = {
|
|
98
|
+
name: 'agentteams_document_update',
|
|
99
|
+
title: 'Update AgentTeams Document',
|
|
100
|
+
description: [
|
|
101
|
+
'Update an existing document in this project. Only the fields you pass are changed.',
|
|
102
|
+
GUIDE_FIRST,
|
|
103
|
+
TAG_POLICY,
|
|
104
|
+
'Pass expectedUpdatedAt (from agentteams_document_get) so a concurrent edit is rejected rather than silently overwritten.',
|
|
105
|
+
PROJECT_SCOPE,
|
|
106
|
+
].join(' '),
|
|
107
|
+
inputSchema: z.strictObject({
|
|
108
|
+
id: z.string().min(1).describe('Document id (bare uuid or agentteams_doc_-prefixed).'),
|
|
109
|
+
title: z.string().min(1).max(255).optional().describe('New title.'),
|
|
110
|
+
body: z.string().min(1).optional().describe('New body in Markdown. Replaces the whole body.'),
|
|
111
|
+
suggestedTags: suggestedTagsField,
|
|
112
|
+
visibility: visibilityField,
|
|
113
|
+
expectedUpdatedAt: expectedUpdatedAtField,
|
|
114
|
+
guideHash: guideHashField,
|
|
115
|
+
idempotencyKey: idempotencyKeyField,
|
|
116
|
+
}),
|
|
117
|
+
handler: async (args, context) => {
|
|
118
|
+
return updateDocument(context.apiUrl, context.projectId, await auth(context), stripContextEntityIdPrefix(args.id), definedFields({
|
|
119
|
+
title: args.title,
|
|
120
|
+
body: args.body,
|
|
121
|
+
suggestedTags: args.suggestedTags,
|
|
122
|
+
visibility: args.visibility,
|
|
123
|
+
expectedUpdatedAt: args.expectedUpdatedAt,
|
|
124
|
+
guideHash: args.guideHash,
|
|
125
|
+
idempotencyKey: args.idempotencyKey,
|
|
126
|
+
}));
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
const documentDeleteSpec = {
|
|
130
|
+
name: 'agentteams_document_delete',
|
|
131
|
+
title: 'Delete AgentTeams Document',
|
|
132
|
+
description: [
|
|
133
|
+
'Delete a document from this project. This is destructive — the document disappears from the library for everyone.',
|
|
134
|
+
GUIDE_FIRST,
|
|
135
|
+
'Without expectedUpdatedAt this is an unconditional delete: it removes the document even if someone edited it after you last read it.',
|
|
136
|
+
'Pass expectedUpdatedAt (from agentteams_document_get) unless you intend that.',
|
|
137
|
+
'Confirm with the user before deleting anything you did not just create.',
|
|
138
|
+
PROJECT_SCOPE,
|
|
139
|
+
].join(' '),
|
|
140
|
+
inputSchema: z.strictObject({
|
|
141
|
+
id: z.string().min(1).describe('Document id (bare uuid or agentteams_doc_-prefixed).'),
|
|
142
|
+
expectedUpdatedAt: expectedUpdatedAtField,
|
|
143
|
+
// 되돌리기 가장 어려운 작업에서만 최신성 게이트가 빠지면 표면이 비대칭해진다.
|
|
144
|
+
guideHash: guideHashField,
|
|
145
|
+
idempotencyKey: idempotencyKeyField,
|
|
146
|
+
}),
|
|
147
|
+
handler: async (args, context) => {
|
|
148
|
+
const documentId = stripContextEntityIdPrefix(args.id);
|
|
149
|
+
await deleteDocument(context.apiUrl, context.projectId, await auth(context), documentId, {
|
|
150
|
+
...(args.expectedUpdatedAt ? { expectedUpdatedAt: args.expectedUpdatedAt } : {}),
|
|
151
|
+
...(args.guideHash ? { guideHash: args.guideHash } : {}),
|
|
152
|
+
...(args.idempotencyKey ? { idempotencyKey: args.idempotencyKey } : {}),
|
|
153
|
+
});
|
|
154
|
+
return { deleted: true, id: documentId };
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
/** Every write tool the CLI MCP server exposes, in registration order. */
|
|
158
|
+
export function getWriteToolSpecs() {
|
|
159
|
+
return [guideGetSpec, documentCreateSpec, documentUpdateSpec, documentDeleteSpec];
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=writeTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeTools.js","sourceRoot":"","sources":["../../src/mcp/writeTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAsCF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAYjF;AA4BD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CAsH1E"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -119,9 +119,28 @@ Details: ${message}`;
|
|
|
119
119
|
case 404:
|
|
120
120
|
return `Resource not found.\nNext: Check identifiers (e.g., --id) and the target project.\nDetails: ${message}`;
|
|
121
121
|
case 409:
|
|
122
|
+
// The server names the guide and the hash it wants, so the recovery is
|
|
123
|
+
// mechanical: resync, re-read the guide, retry. Say that instead of a bare "conflict".
|
|
124
|
+
if (errorCode === 'GUIDE_OUTDATED') {
|
|
125
|
+
const guideFileName = typeof data?.guideFileName === 'string' ? data.guideFileName : 'the platform guide';
|
|
126
|
+
const requiredGuideHash = typeof data?.requiredGuideHash === 'string' ? `\nRequired hash: ${data.requiredGuideHash}` : '';
|
|
127
|
+
return `Conflict (outdated ${guideFileName}).
|
|
128
|
+
Next: Run 'agentteams convention download' to resync platform guides, re-read ${guideFileName}, then retry with the refreshed hash.${requiredGuideHash}
|
|
129
|
+
Details: ${message}`;
|
|
130
|
+
}
|
|
131
|
+
if (errorDetailCode === 'MUTATION_IN_PROGRESS') {
|
|
132
|
+
return `Conflict (same idempotency key still running).
|
|
133
|
+
Next: An earlier request with this key has not finished. Wait a moment and repeat the same request — it will replay that result instead of writing twice.
|
|
134
|
+
Details: ${message}`;
|
|
135
|
+
}
|
|
136
|
+
if (errorDetailCode === 'MUTATION_IDEMPOTENCY_KEY_REUSED') {
|
|
137
|
+
return `Conflict (idempotency key reused).
|
|
138
|
+
Next: This key was already used for a different request. Use a new --idempotency-key, or repeat the original request unchanged to replay it.
|
|
139
|
+
Details: ${message}`;
|
|
140
|
+
}
|
|
122
141
|
if (errorCode === 'OPTIMISTIC_LOCK_CONFLICT') {
|
|
123
142
|
return `Conflict (stale update).
|
|
124
|
-
Next:
|
|
143
|
+
Next: Re-read the record and retry with its latest updatedAt. For conventions, run 'agentteams convention download' first.
|
|
125
144
|
Details: ${message}`;
|
|
126
145
|
}
|
|
127
146
|
return `Conflict.\nNext: If this is a convention update/delete, run 'agentteams convention download' and retry.\nDetails: ${message}`;
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAoBlE,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,OAAO,GAAiD;QAC5D,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,kDAAkD,EAAE;QAC5F,EAAE,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,mDAAmD,EAAE;QAC9F,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,mCAAmC,EAAE;QAC1E,EAAE,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,kCAAkC,EAAE;KACnF,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,OAAsB;IAC7D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,IAAI,KAAK,EAAE,CAAC;QACvE,MAAM,SAAS,GAAI,KAA0B,CAAC,iBAAiB,CAAC;QAChE,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,OAAqB;IACtE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG;QAClB,GAAG,CAAE,KAA0B,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACxD,GAAG,OAAO;KACX,CAAC;IAED,KAA0B,CAAC,iBAAiB,GAAG,WAAW,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAqD;IACzF,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,KAAK,GAAa;QACtB,qDAAqD;QACrD,4CAA4C;QAC5C,yCAAyC;KAC1C,CAAC;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,8BAA8B,cAAc,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI,CACR,SAAS,EACT,wBAAwB,EACxB,yFAAyF,EACzF,uBAAuB,CACxB,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,OAAsB;IAChE,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAExD,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAmC,CAAC;YAChE,MAAM,UAAU,GAAG,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACpF,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACzG,MAAM,SAAS,GAAG,OAAO,IAAI,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACnF,MAAM,eAAe,GAAG,OAAO,IAAI,EAAE,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;YACrG,MAAM,cAAc,GAAG,OAAO,IAAI,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;YAElG,IAAI,MAAM,KAAK,GAAG,IAAI,SAAS,KAAK,sBAAsB,EAAE,CAAC;gBAC3D,OAAO,4BAA4B,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;YACnE,CAAC;YAED,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,GAAG;oBACN,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;wBACrC,OAAO;;WAER,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,OAAO,6HAA6H,OAAO,EAAE,CAAC;gBAChJ,KAAK,GAAG;oBACN,2EAA2E;oBAC3E,4EAA4E;oBAC5E,0EAA0E;oBAC1E,yBAAyB;oBACzB,IAAI,eAAe,KAAK,uBAAuB,EAAE,CAAC;wBAChD,OAAO;;WAER,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,qEAAqE;oBACrE,qEAAqE;oBACrE,IAAI,mBAAmB,EAAE,EAAE,CAAC;wBAC1B,OAAO,4GAA4G,OAAO,EAAE,CAAC;oBAC/H,CAAC;oBACD,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;wBAClC,OAAO;;WAER,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,OAAO,oJAAoJ,OAAO,EAAE,CAAC;gBACvK,KAAK,GAAG;oBACN,IAAI,SAAS,KAAK,6BAA6B,EAAE,CAAC;wBAChD,OAAO;;WAER,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,IAAI,SAAS,KAAK,4BAA4B,EAAE,CAAC;wBAC/C,OAAO;;WAER,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,IAAI,SAAS,KAAK,0BAA0B,EAAE,CAAC;wBAC7C,OAAO;;WAER,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;wBACnF,OAAO,+JAA+J,OAAO,EAAE,CAAC;oBAClL,CAAC;oBACD,OAAO,uFAAuF,OAAO,EAAE,CAAC;gBAC1G,KAAK,GAAG;oBACN,OAAO,+FAA+F,OAAO,EAAE,CAAC;gBAClH,KAAK,GAAG;oBACN,uEAAuE;oBACvE,uFAAuF;oBACvF,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;wBACnC,MAAM,aAAa,GAAG,OAAO,IAAI,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC;wBAC1G,MAAM,iBAAiB,GACrB,OAAO,IAAI,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClG,OAAO,sBAAsB,aAAa;gFAC0B,aAAa,wCAAwC,iBAAiB;WAC3I,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,IAAI,eAAe,KAAK,sBAAsB,EAAE,CAAC;wBAC/C,OAAO;;WAER,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,IAAI,eAAe,KAAK,iCAAiC,EAAE,CAAC;wBAC1D,OAAO;;WAER,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,IAAI,SAAS,KAAK,0BAA0B,EAAE,CAAC;wBAC7C,OAAO;;WAER,OAAO,EAAE,CAAC;oBACX,CAAC;oBACD,OAAO,qHAAqH,OAAO,EAAE,CAAC;gBACxI,KAAK,GAAG;oBACN,OAAO,0HAA0H,OAAO,EAAE,CAAC;gBAC7I;oBACE,OAAO,QAAQ,MAAM,WAAW,OAAO,EAAE,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChE,MAAM,MAAM,GAAG,eAAe,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACzE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,OAAO,+BAA+B,MAAM,4DAA4D,CAAC;YAC3G,CAAC;YACD,OAAO,4GAA4G,CAAC;QACtH,CAAC;QAED,OAAO,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|