propstack-mcp-server 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +355 -321
  3. package/dist/index.js +5 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/propstack-client.d.ts.map +1 -1
  6. package/dist/propstack-client.js +5 -1
  7. package/dist/propstack-client.js.map +1 -1
  8. package/dist/tools/activities.d.ts.map +1 -1
  9. package/dist/tools/activities.js +29 -15
  10. package/dist/tools/activities.js.map +1 -1
  11. package/dist/tools/admin.d.ts.map +1 -1
  12. package/dist/tools/admin.js +30 -65
  13. package/dist/tools/admin.js.map +1 -1
  14. package/dist/tools/composites.d.ts.map +1 -1
  15. package/dist/tools/composites.js +147 -122
  16. package/dist/tools/composites.js.map +1 -1
  17. package/dist/tools/contacts.d.ts.map +1 -1
  18. package/dist/tools/contacts.js +101 -74
  19. package/dist/tools/contacts.js.map +1 -1
  20. package/dist/tools/deals.d.ts +5 -0
  21. package/dist/tools/deals.d.ts.map +1 -1
  22. package/dist/tools/deals.js +128 -52
  23. package/dist/tools/deals.js.map +1 -1
  24. package/dist/tools/documents.d.ts.map +1 -1
  25. package/dist/tools/documents.js +7 -6
  26. package/dist/tools/documents.js.map +1 -1
  27. package/dist/tools/helpers.d.ts +32 -0
  28. package/dist/tools/helpers.d.ts.map +1 -1
  29. package/dist/tools/helpers.js +106 -0
  30. package/dist/tools/helpers.js.map +1 -1
  31. package/dist/tools/lookups.d.ts.map +1 -1
  32. package/dist/tools/lookups.js +28 -15
  33. package/dist/tools/lookups.js.map +1 -1
  34. package/dist/tools/projects.d.ts.map +1 -1
  35. package/dist/tools/projects.js +8 -6
  36. package/dist/tools/projects.js.map +1 -1
  37. package/dist/tools/properties.d.ts.map +1 -1
  38. package/dist/tools/properties.js +89 -67
  39. package/dist/tools/properties.js.map +1 -1
  40. package/dist/types/propstack.d.ts +31 -7
  41. package/dist/types/propstack.d.ts.map +1 -1
  42. package/package.json +58 -55
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { textResult, errorResult, fmt, stripUndefined } from "./helpers.js";
2
+ import { textResult, errorResult, fmt, stripUndefined, validateFields, renderProjectedRecord, applyCustomFilters, CONTACT_FIELDS } from "./helpers.js";
3
3
  /**
4
4
  * Generate search variants for a phone number. Propstack normalizes spaces/dashes
5
5
  * but not +49 vs 0 (German formats). Try both to maximize match rate.
@@ -41,7 +41,7 @@ function formatContact(c) {
41
41
  `**${name || "Unnamed"}** (ID: ${c.id})`,
42
42
  `Email: ${fmt(c.email)}`,
43
43
  `Phone: ${fmt(c.phone ?? c.home_cell)}`,
44
- `Status: ${fmt(c.client_status?.name)}`,
44
+ `Status: ${fmt(c.status?.name ?? c.client_status?.name)}`,
45
45
  `Broker: ${fmt(c.broker?.name, "unassigned")}`,
46
46
  `Rating: ${stars(c.rating ?? 0)}`,
47
47
  `Last contact: ${fmt(c.last_contact_at_formatted, "never")}`,
@@ -53,23 +53,33 @@ function formatContact(c) {
53
53
  // ── Tool registration ────────────────────────────────────────────────
54
54
  export function registerContactTools(server, client) {
55
55
  // ── search_contacts ──────────────────────────────────────────────
56
- server.tool("search_contacts", `Search and filter contacts in Propstack CRM.
57
-
58
- Use this tool to:
59
- - Find contacts by name, email, or phone number
60
- - List recent leads (sort by created_at desc)
61
- - Find uncontacted leads (last_contact_at is null)
62
- - Filter by broker assignment, status, tags, or GDPR status
63
- - Search across all contact fields with 'q' parameter
64
-
65
- The 'q' parameter searches across: first name, last name, all emails,
66
- all addresses, and all phone numbers.
67
-
68
- Phone search ('phone_number') ignores formatting — both 015712345678
69
- and 0157-123-456-78 will match.
70
-
71
- Returns paginated results. Use expand=true for full details including
72
- custom fields.`, {
56
+ server.tool("search_contacts", `Search and filter contacts in Propstack CRM.
57
+
58
+ Use this tool to:
59
+ - Find contacts by name, email, or phone number
60
+ - List recent leads (sort by created_at desc)
61
+ - Find uncontacted leads (last_contact_at is null)
62
+ - Filter by broker assignment, status, tags, or GDPR status
63
+ - Search across all contact fields with 'q' parameter
64
+
65
+ The 'q' parameter searches across: first name, last name, all emails,
66
+ all addresses, and all phone numbers.
67
+
68
+ Phone search ('phone_number') ignores formatting — both 015712345678
69
+ and 0157-123-456-78 will match.
70
+
71
+ Returns paginated results. Use expand=true for full details including
72
+ custom fields.
73
+
74
+ Custom fields: pass 'custom_filters' as an object of custom-field-name →
75
+ value to filter by agency-specific fields (use list_custom_fields to
76
+ discover field names). Each entry becomes a cf_<name> query parameter,
77
+ e.g. { marketing_channel: "Website" }.
78
+
79
+ Data minimization (Art. 25 DSGVO): pass 'fields' with an array of contact
80
+ field names to return only those fields per contact (e.g. ["first_name",
81
+ "last_name", "email"]). Omit 'fields' to return the default set unchanged.
82
+ Unknown field names produce an error listing the valid options.`, {
73
83
  q: z.string().optional()
74
84
  .describe("Fulltext search across name, email, address, phone"),
75
85
  phone_number: z.string().optional()
@@ -122,9 +132,20 @@ custom fields.`, {
122
132
  .describe("Page number (default: 1)"),
123
133
  per_page: z.number().optional()
124
134
  .describe("Results per page (default: 25)"),
135
+ custom_filters: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional()
136
+ .describe("Filter by custom field values. Keys are custom field names WITHOUT the cf_ prefix (use list_custom_fields to discover them); each becomes a cf_<name>=<value> query parameter. Example: { marketing_channel: \"Website\" }"),
137
+ fields: z.array(z.string()).optional()
138
+ .describe("Data minimization: return only these contact fields per result (e.g. [\"first_name\", \"last_name\", \"email\"]). Omit to return the default field set. Unknown field names produce an error."),
125
139
  }, async (args) => {
126
140
  try {
127
- const raw = await client.get("/contacts", { params: args });
141
+ if (args.fields && args.fields.length > 0) {
142
+ const fieldError = validateFields(args.fields, CONTACT_FIELDS, "contact");
143
+ if (fieldError)
144
+ return textResult(fieldError);
145
+ }
146
+ const { fields, custom_filters, ...apiArgs } = args;
147
+ const params = applyCustomFilters(apiArgs, custom_filters);
148
+ const raw = await client.get("/contacts", { params });
128
149
  const res = normalizeContactsResponse(raw);
129
150
  if (!res.data || res.data.length === 0) {
130
151
  return textResult("No contacts found matching your criteria.");
@@ -132,6 +153,12 @@ custom fields.`, {
132
153
  const header = res.meta?.total_count !== undefined
133
154
  ? `Found ${res.meta.total_count} contacts (showing ${res.data.length}):\n\n`
134
155
  : `Found ${res.data.length} contacts:\n\n`;
156
+ if (fields && fields.length > 0) {
157
+ const projected = res.data
158
+ .map((c) => renderProjectedRecord(c, fields, `**ID: ${c.id}**`))
159
+ .join("\n\n---\n\n");
160
+ return textResult(header + projected);
161
+ }
135
162
  const formatted = res.data.map(formatContact).join("\n\n---\n\n");
136
163
  return textResult(header + formatted);
137
164
  }
@@ -140,13 +167,13 @@ custom fields.`, {
140
167
  }
141
168
  });
142
169
  // ── get_contact ──────────────────────────────────────────────────
143
- server.tool("get_contact", `Get full details of a single contact by ID.
144
-
145
- Use this tool to:
146
- - View complete contact information before a call
147
- - Check relationships, documents, and owned properties
148
- - See sub-contacts (e.g. family members at same address)
149
-
170
+ server.tool("get_contact", `Get full details of a single contact by ID.
171
+
172
+ Use this tool to:
173
+ - View complete contact information before a call
174
+ - Check relationships, documents, and owned properties
175
+ - See sub-contacts (e.g. family members at same address)
176
+
150
177
  Use 'include' to load related data in one request.`, {
151
178
  id: z.number()
152
179
  .describe("Contact ID"),
@@ -166,16 +193,16 @@ Use 'include' to load related data in one request.`, {
166
193
  }
167
194
  });
168
195
  // ── create_contact ───────────────────────────────────────────────
169
- server.tool("create_contact", `Create a new contact in Propstack CRM.
170
-
171
- Use this tool to:
172
- - Register a new lead after a phone call
173
- - Create a contact from a web form submission
174
- - Add a new property owner
175
-
176
- Auto-upserts: if a contact with the same email or old_crm_id already
177
- exists, it will be updated instead of creating a duplicate.
178
-
196
+ server.tool("create_contact", `Create a new contact in Propstack CRM.
197
+
198
+ Use this tool to:
199
+ - Register a new lead after a phone call
200
+ - Create a contact from a web form submission
201
+ - Add a new property owner
202
+
203
+ Auto-upserts: if a contact with the same email or old_crm_id already
204
+ exists, it will be updated instead of creating a duplicate.
205
+
179
206
  Use get_contact_sources first to find valid source IDs.`, {
180
207
  first_name: z.string().optional()
181
208
  .describe("First name"),
@@ -233,20 +260,20 @@ Use get_contact_sources first to find valid source IDs.`, {
233
260
  }
234
261
  });
235
262
  // ── update_contact ───────────────────────────────────────────────
236
- server.tool("update_contact", `Update an existing contact in Propstack CRM.
237
-
238
- Use this tool to:
239
- - Update contact details after a call
240
- - Change broker assignment
241
- - Add or remove tags (Merkmale)
242
- - Update GDPR status
243
- - Change contact rating or status
244
-
245
- Tag management options:
246
- - group_ids: replaces ALL tags with this list
247
- - add_group_ids: adds tags without removing existing ones
248
- - sub_group_ids: removes specific tags
249
-
263
+ server.tool("update_contact", `Update an existing contact in Propstack CRM.
264
+
265
+ Use this tool to:
266
+ - Update contact details after a call
267
+ - Change broker assignment
268
+ - Add or remove tags (Merkmale)
269
+ - Update GDPR status
270
+ - Change contact rating or status
271
+
272
+ Tag management options:
273
+ - group_ids: replaces ALL tags with this list
274
+ - add_group_ids: adds tags without removing existing ones
275
+ - sub_group_ids: removes specific tags
276
+
250
277
  Only provide the fields you want to change.`, {
251
278
  id: z.number()
252
279
  .describe("Contact ID to update"),
@@ -297,13 +324,13 @@ Only provide the fields you want to change.`, {
297
324
  }
298
325
  });
299
326
  // ── delete_contact ───────────────────────────────────────────────
300
- server.tool("delete_contact", `Delete a contact from Propstack CRM (soft delete).
301
-
302
- The contact is moved to a 30-day recycle bin and can be restored.
303
-
304
- Use this tool for:
305
- - GDPR deletion requests (Art. 17 DSGVO)
306
- - Removing duplicate contacts
327
+ server.tool("delete_contact", `Delete a contact from Propstack CRM (soft delete).
328
+
329
+ The contact is moved to a 30-day recycle bin and can be restored.
330
+
331
+ Use this tool for:
332
+ - GDPR deletion requests (Art. 17 DSGVO)
333
+ - Removing duplicate contacts
307
334
  - Cleaning up test data`, {
308
335
  id: z.number()
309
336
  .describe("Contact ID to delete"),
@@ -317,12 +344,12 @@ Use this tool for:
317
344
  }
318
345
  });
319
346
  // ── get_contact_sources ──────────────────────────────────────────
320
- server.tool("get_contact_sources", `List all available contact/lead sources in Propstack.
321
-
322
- Returns the list of sources like "Immobilienscout 24", "Website",
323
- "Empfehlung", etc. with their IDs.
324
-
325
- Use this tool to look up valid source IDs before creating or updating
347
+ server.tool("get_contact_sources", `List all available contact/lead sources in Propstack.
348
+
349
+ Returns the list of sources like "Immobilienscout 24", "Website",
350
+ "Empfehlung", etc. with their IDs.
351
+
352
+ Use this tool to look up valid source IDs before creating or updating
326
353
  contacts with client_source_id.`, {}, async () => {
327
354
  try {
328
355
  const sources = await client.get("/contact_sources");
@@ -337,16 +364,16 @@ contacts with client_source_id.`, {}, async () => {
337
364
  }
338
365
  });
339
366
  // ── search_contacts_by_phone ─────────────────────────────────────
340
- server.tool("search_contacts_by_phone", `Look up a contact by phone number.
341
-
342
- This is the go-to tool for voice agent caller identification. When a call
343
- comes in, use this tool with the caller's phone number to instantly find
344
- the matching contact.
345
-
346
- Phone matching ignores formatting — all of these find the same contact:
347
- 015712345678, 0157-123-456-78, +49 157 12345678
348
-
349
- Returns the matching contact(s) with key details. If no match is found,
367
+ server.tool("search_contacts_by_phone", `Look up a contact by phone number.
368
+
369
+ This is the go-to tool for voice agent caller identification. When a call
370
+ comes in, use this tool with the caller's phone number to instantly find
371
+ the matching contact.
372
+
373
+ Phone matching ignores formatting — all of these find the same contact:
374
+ 015712345678, 0157-123-456-78, +49 157 12345678
375
+
376
+ Returns the matching contact(s) with key details. If no match is found,
350
377
  the caller is unknown and you should create a new contact.`, {
351
378
  phone_number: z.string()
352
379
  .describe("Phone number to search for (any format — formatting is ignored)"),
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/tools/contacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/tools/contacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEvJ;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAa,CAAC,KAAK,CAAC,CAAC;IAEnC,gCAAgC;IAChC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAClD,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,oGAAoG;AACpG,SAAS,yBAAyB,CAChC,GAAsE;IAEtE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AAExE,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAEvF,SAAS,KAAK,CAAC,MAAc;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,CAAmB;IACxC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5H,MAAM,KAAK,GAAsB;QAC/B,KAAK,IAAI,IAAI,SAAS,WAAW,CAAC,CAAC,EAAE,GAAG;QACxC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;QACxB,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;QACvC,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;QACzD,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;QAC9C,WAAW,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;QACjC,iBAAiB,GAAG,CAAC,CAAC,CAAC,yBAAyB,EAAE,OAAO,CAAC,EAAE;QAC5D,SAAS,WAAW,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,SAAS,EAAE;QACvD,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;KACvE,CAAC;IACF,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,wEAAwE;AAExE,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAuB;IAC7E,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;gEA0B4D,EAC5D;QACE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACrB,QAAQ,CAAC,oDAAoD,CAAC;QACjE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAChC,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACzB,QAAQ,CAAC,yBAAyB,CAAC;QACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC7B,QAAQ,CAAC,8BAA8B,CAAC;QAC3C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACnC,QAAQ,CAAC,8BAA8B,CAAC;QAC3C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACpC,QAAQ,CAAC,uDAAuD,CAAC;QACpE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aAClC,QAAQ,CAAC,oCAAoC,CAAC;QACjD,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACzC,QAAQ,CAAC,2CAA2C,CAAC;QACxD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC/B,QAAQ,CAAC,sEAAsE,CAAC;QACnF,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,QAAQ,CAAC,6BAA6B,CAAC;QAC1C,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACnC,QAAQ,CAAC,8BAA8B,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,4BAA4B,CAAC;QACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC5B,QAAQ,CAAC,6GAA6G,CAAC;QAC1H,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACrC,QAAQ,CAAC,4CAA4C,CAAC;QACzD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aAC3C,QAAQ,CAAC,8BAA8B,CAAC;QAC3C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACxC,QAAQ,CAAC,kCAAkC,CAAC;QAC/C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACnC,QAAQ,CAAC,oDAAoD,CAAC;QACjE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACjC,QAAQ,CAAC,qDAAqD,CAAC;QAClE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACnC,QAAQ,CAAC,oDAAoD,CAAC;QACjE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACjC,QAAQ,CAAC,qDAAqD,CAAC;QAClE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;aACnG,QAAQ,CAAC,0BAA0B,CAAC;QACvC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;aACtC,QAAQ,CAAC,4BAA4B,CAAC;QACzC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC3B,QAAQ,CAAC,wCAAwC,CAAC;QACrD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACrC,QAAQ,CAAC,iCAAiC,CAAC;QAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACxB,QAAQ,CAAC,0BAA0B,CAAC;QACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC5B,QAAQ,CAAC,gCAAgC,CAAC;QAC7C,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC5F,QAAQ,CAAC,4NAA4N,CAAC;QACzO,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACnC,QAAQ,CAAC,+LAA+L,CAAC;KAC7M,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;gBAC1E,IAAI,UAAU;oBAAE,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;YACpD,MAAM,MAAM,GAAG,kBAAkB,CAC/B,OAAsF,EACtF,cAAc,CACf,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAC1B,WAAW,EACX,EAAE,MAAM,EAAE,CACX,CAAC;YACF,MAAM,GAAG,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;YAE3C,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,OAAO,UAAU,CAAC,2CAA2C,CAAC,CAAC;YACjE,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,SAAS;gBAChD,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,sBAAsB,GAAG,CAAC,IAAI,CAAC,MAAM,QAAQ;gBAC5E,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC;YAE7C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI;qBACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAuC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;qBACrG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACvB,OAAO,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClE,OAAO,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CACT,aAAa,EACb;;;;;;;mDAO+C,EAC/C;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;aACX,QAAQ,CAAC,YAAY,CAAC;QACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC3B,QAAQ,CAAC,qJAAqJ,CAAC;KACnK,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAuC,EAAE,CAAC;YACtD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YACnC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAC9B,aAAa,IAAI,CAAC,EAAE,EAAE,EACtB,EAAE,MAAM,EAAE,CACX,CAAC;YAEF,OAAO,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB;;;;;;;;;;wDAUoD,EACpD;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC9B,QAAQ,CAAC,YAAY,CAAC;QACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC7B,QAAQ,CAAC,WAAW,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACzB,QAAQ,CAAC,qDAAqD,CAAC;QAClE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACzB,QAAQ,CAAC,cAAc,CAAC;QAC3B,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;aACxC,QAAQ,CAAC,oCAAoC,CAAC;QACjD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAClC,QAAQ,CAAC,sCAAsC,CAAC;QACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC3B,QAAQ,CAAC,cAAc,CAAC;QAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC5B,QAAQ,CAAC,oBAAoB,CAAC;QACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC/B,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC7B,QAAQ,CAAC,iCAAiC,CAAC;QAC9C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACpC,QAAQ,CAAC,qDAAqD,CAAC;QAClE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACpC,QAAQ,CAAC,mBAAmB,CAAC;QAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC5B,QAAQ,CAAC,iCAAiC,CAAC;QAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,8CAA8C,CAAC;QAC3D,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC/B,QAAQ,CAAC,mBAAmB,CAAC;QAChC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACnC,QAAQ,CAAC,4BAA4B,CAAC;QACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACnE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC/E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC/D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC1E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACvE,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACnF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC9E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACnE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC9E,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aAChE,QAAQ,CAAC,8FAA8F,CAAC;QAC3G,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACtC,QAAQ,CAAC,yCAAyC,CAAC;KACvD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAC/B,WAAW,EACX,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,CAC3C,CAAC;YAEF,OAAO,UAAU,CAAC,oCAAoC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB;;;;;;;;;;;;;;4CAcwC,EACxC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;aACX,QAAQ,CAAC,sBAAsB,CAAC;QACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC1F,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACtF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC9D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC7E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC5E,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QACtF,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAChE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC7E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;QACnH,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC7E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACnE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC/E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC/D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC1E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACvE,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACnF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC9E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACnE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC9E,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aAChE,QAAQ,CAAC,wCAAwC,CAAC;QACrD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACtC,QAAQ,CAAC,4CAA4C,CAAC;QACzD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aAC1C,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aAC1C,QAAQ,CAAC,uCAAuC,CAAC;KACrD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAC9B,aAAa,EAAE,EAAE,EACjB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,CAC7C,CAAC;YAEF,OAAO,UAAU,CAAC,oCAAoC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB;;;;;;;wBAOoB,EACpB;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;aACX,QAAQ,CAAC,sBAAsB,CAAC;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,UAAU,CAAC,WAAW,IAAI,CAAC,EAAE,8CAA8C,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB;;;;;;gCAM4B,EAC5B,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAA2B,kBAAkB,CAAC,CAAC;YAE/E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,UAAU,CAAC,gCAAgC,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,GAAG,CACvC,CAAC;YACF,OAAO,UAAU,CAAC,uBAAuB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B;;;;;;;;;;2DAUuD,EACvD;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;aACrB,QAAQ,CAAC,iEAAiE,CAAC;KAC/E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;YAClC,MAAM,QAAQ,GAAuB,EAAE,CAAC;YAExC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAC1B,WAAW,EACX,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,CACtC,CAAC;gBACF,MAAM,GAAG,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;oBACrB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;wBACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4BAClB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACnB,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,UAAU,CAAC,qCAAqC,IAAI,CAAC,YAAY,8BAA8B,CAAC,CAAC;YAC1G,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,UAAU,CAAC,yBAAyB,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,QAAQ,CAAC,MAAM,sBAAsB,IAAI,CAAC,YAAY,OAAO,CAAC;YACtF,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClE,OAAO,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,9 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { PropstackClient } from "../propstack-client.js";
3
+ import type { PropstackDeal, PropstackDealPipeline } from "../types/propstack.js";
4
+ /** Fetch pipelines with safe unwrapping — API returns { data: [...] }. */
5
+ export declare function fetchPipelines(client: PropstackClient): Promise<PropstackDealPipeline[]>;
6
+ /** Build stage/pipeline name lookup from pipeline definitions and enrich deals in place. */
7
+ export declare function enrichDealsWithStageNames(deals: PropstackDeal[], pipelines: PropstackDealPipeline[]): void;
3
8
  export declare function registerDealTools(server: McpServer, client: PropstackClient): void;
4
9
  //# sourceMappingURL=deals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deals.d.ts","sourceRoot":"","sources":["../../src/tools/deals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA8D9D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAoNlF"}
1
+ {"version":3,"file":"deals.d.ts","sourceRoot":"","sources":["../../src/tools/deals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAA8B,MAAM,uBAAuB,CAAC;AAO9G,0EAA0E;AAC1E,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAG9F;AAED,4FAA4F;AAC5F,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAwB1G;AAyED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAsPlF"}
@@ -1,7 +1,38 @@
1
1
  import { z } from "zod";
2
- import { textResult, errorResult, fmt, fmtPrice, stripUndefined } from "./helpers.js";
2
+ import { textResult, errorResult, fmt, fmtPrice, stripUndefined, validateFields, renderProjectedRecord, DEAL_FIELDS } from "./helpers.js";
3
3
  // ── Response formatting ──────────────────────────────────────────────
4
4
  const FEELING_LABELS = ["none", "cold", "warm", "hot"];
5
+ /** Fetch pipelines with safe unwrapping — API returns { data: [...] }. */
6
+ export async function fetchPipelines(client) {
7
+ const raw = await client.get("/deal_pipelines");
8
+ return Array.isArray(raw) ? raw : raw?.data ?? [];
9
+ }
10
+ /** Build stage/pipeline name lookup from pipeline definitions and enrich deals in place. */
11
+ export function enrichDealsWithStageNames(deals, pipelines) {
12
+ const stageMap = new Map();
13
+ for (const p of pipelines) {
14
+ const pName = p.name ?? `Pipeline #${p.id}`;
15
+ if (p.deal_stages) {
16
+ for (const s of p.deal_stages) {
17
+ stageMap.set(s.id, { name: s.name ?? `Stage #${s.id}`, pipeline: pName });
18
+ }
19
+ }
20
+ }
21
+ for (const d of deals) {
22
+ if (!d.deal_stage && d.deal_stage_id) {
23
+ const info = stageMap.get(d.deal_stage_id);
24
+ if (info) {
25
+ d.deal_stage = { id: d.deal_stage_id, name: info.name, position: null, color: null, chance: null };
26
+ }
27
+ }
28
+ if (!d.deal_pipeline && d.deal_pipeline_id) {
29
+ const p = pipelines.find((p) => p.id === d.deal_pipeline_id);
30
+ if (p) {
31
+ d.deal_pipeline = p;
32
+ }
33
+ }
34
+ }
35
+ }
5
36
  function formatDeal(d) {
6
37
  const clientName = d.client
7
38
  ? (fmt(d.client.name) !== "none" ? fmt(d.client.name) : [fmt(d.client.first_name, ""), fmt(d.client.last_name, "")].filter(Boolean).join(" ") || "Unnamed")
@@ -9,10 +40,17 @@ function formatDeal(d) {
9
40
  const propertyTitle = d.property
10
41
  ? fmt(d.property.title, "Untitled")
11
42
  : `Property #${d.property_id ?? "?"}`;
43
+ const stageName = d.deal_stage
44
+ ? (d.deal_stage.name ?? `Stage #${d.deal_stage_id}`)
45
+ : d.deal_stage_id ? `Stage #${d.deal_stage_id}` : null;
46
+ const pipelineName = d.deal_pipeline
47
+ ? (d.deal_pipeline.name ?? `Pipeline #${d.deal_pipeline_id}`)
48
+ : d.deal_pipeline_id ? `Pipeline #${d.deal_pipeline_id}` : null;
12
49
  const lines = [
13
50
  `**Deal #${d.id}**: ${clientName} → ${propertyTitle}`,
14
- `Stage: ${fmt(d.deal_stage_id)} | Pipeline: ${fmt(d.deal_pipeline_id)}`,
15
- `Category: ${fmt(d.category)}`,
51
+ stageName || pipelineName
52
+ ? [stageName, pipelineName].filter(Boolean).join(" | ")
53
+ : null,
16
54
  d.sold_price ? `Price: ${fmtPrice(d.sold_price)}` : null,
17
55
  d.feeling !== null && d.feeling !== undefined
18
56
  ? `Feeling: ${FEELING_LABELS[d.feeling] ?? d.feeling}`
@@ -43,32 +81,43 @@ function formatDealRow(d) {
43
81
  const propertyTitle = d.property
44
82
  ? fmt(d.property.title, "—")
45
83
  : String(d.property_id ?? "?");
46
- return `| ${d.id} | ${clientName} | ${propertyTitle} | ${fmt(d.deal_stage_id)} | ${fmt(d.category)} | ${fmt(d.feeling !== null && d.feeling !== undefined ? (FEELING_LABELS[d.feeling] ?? d.feeling) : null)} | ${fmt(d.created_at)} |`;
84
+ const stageName = d.deal_stage
85
+ ? (d.deal_stage.name ?? `#${d.deal_stage_id}`)
86
+ : d.deal_stage_id ? `#${d.deal_stage_id}` : "—";
87
+ const feeling = d.feeling !== null && d.feeling !== undefined
88
+ ? (FEELING_LABELS[d.feeling] ?? String(d.feeling))
89
+ : "—";
90
+ return `| ${d.id} | ${clientName} | ${propertyTitle} | ${stageName} | ${feeling} | ${fmt(d.created_at, "—")} |`;
47
91
  }
48
92
  // ── Tool registration ────────────────────────────────────────────────
49
93
  export function registerDealTools(server, client) {
50
94
  // ── search_deals ────────────────────────────────────────────────
51
- server.tool("search_deals", `Search and filter deals (contact↔property relationships) in Propstack.
52
-
53
- Use this tool to:
54
- - Show all deals in a specific pipeline stage
55
- - Find deals for a contact or property
56
- - Track deal pipeline progress for a project
57
- - Find lost deals and cancellation reasons
58
- - Filter by broker, team, feeling (cold/warm/hot)
59
-
60
- A "deal" represents an interested contact linked to a property at a
61
- specific stage in a sales/rental pipeline (e.g. Anfrage → Besichtigung
62
- → Reserviert → Notartermin → Verkauft).
63
-
64
- Use include="client,property" to get expanded contact and property
65
- details in one request.
66
-
67
- Common queries:
68
- - All active deals: category="qualified"
69
- - Lost deals this month: category="lost" + created_at_from
70
- - Deals for a property: property_id=123
71
- - Pipeline view: deal_pipeline_id + sort_by=deal_stage_id`, {
95
+ server.tool("search_deals", `Search and filter deals (contact↔property relationships) in Propstack.
96
+
97
+ Use this tool to:
98
+ - Show all deals in a specific pipeline stage
99
+ - Find deals for a contact or property
100
+ - Track deal pipeline progress for a project
101
+ - Find lost deals and cancellation reasons
102
+ - Filter by broker, team, feeling (cold/warm/hot)
103
+
104
+ A "deal" represents an interested contact linked to a property at a
105
+ specific stage in a sales/rental pipeline (e.g. Anfrage → Besichtigung
106
+ → Reserviert → Notartermin → Verkauft).
107
+
108
+ Use include="client,property" to get expanded contact and property
109
+ details in one request.
110
+
111
+ Common queries:
112
+ - All active deals: category="qualified"
113
+ - Lost deals this month: category="lost" + created_at_from
114
+ - Deals for a property: property_id=123
115
+ - Pipeline view: deal_pipeline_id + sort_by=deal_stage_id
116
+
117
+ Data minimization (Art. 25 DSGVO): pass 'fields' with an array of deal field
118
+ names to return only those fields per deal (e.g. ["id", "deal_stage_id",
119
+ "sold_price"]). Omit 'fields' to return the default set unchanged. Unknown
120
+ field names produce an error listing the valid options.`, {
72
121
  client_id: z.number().optional()
73
122
  .describe("Filter by contact ID"),
74
123
  property_id: z.number().optional()
@@ -119,18 +168,37 @@ Common queries:
119
168
  .describe("Page number (default: 1)"),
120
169
  per_page: z.number().optional()
121
170
  .describe("Results per page (default: 25)"),
171
+ fields: z.array(z.string()).optional()
172
+ .describe("Data minimization: return only these deal fields per result (e.g. [\"id\", \"deal_stage_id\", \"sold_price\"]). Omit to return the default field set. Unknown field names produce an error."),
122
173
  }, async (args) => {
123
174
  try {
124
- const res = await client.get("/client_properties", { params: args });
175
+ if (args.fields && args.fields.length > 0) {
176
+ const fieldError = validateFields(args.fields, DEAL_FIELDS, "deal");
177
+ if (fieldError)
178
+ return textResult(fieldError);
179
+ }
180
+ const { fields, ...apiArgs } = args;
181
+ const [res, pipelines] = await Promise.all([
182
+ client.get("/client_properties", { params: apiArgs }),
183
+ fetchPipelines(client).catch(() => []),
184
+ ]);
125
185
  if (!res.data || res.data.length === 0) {
126
186
  return textResult("No deals found matching your criteria.");
127
187
  }
188
+ // Enrich deals with stage/pipeline names from lookup
189
+ enrichDealsWithStageNames(res.data, pipelines);
128
190
  const header = res.meta?.total_count !== undefined
129
191
  ? `Found ${res.meta.total_count} deals (showing ${res.data.length}):\n\n`
130
192
  : `Found ${res.data.length} deals:\n\n`;
193
+ if (fields && fields.length > 0) {
194
+ const projected = res.data
195
+ .map((d) => renderProjectedRecord(d, fields, `**ID: ${d.id}**`))
196
+ .join("\n\n---\n\n");
197
+ return textResult(header + projected);
198
+ }
131
199
  const table = [
132
- "| ID | Contact | Property | Stage | Category | Feeling | Created |",
133
- "|---|---|---|---|---|---|---|",
200
+ "| ID | Contact | Property | Stage | Feeling | Created |",
201
+ "|---|---|---|---|---|---|",
134
202
  ...res.data.map(formatDealRow),
135
203
  ].join("\n");
136
204
  return textResult(header + table);
@@ -140,18 +208,18 @@ Common queries:
140
208
  }
141
209
  });
142
210
  // ── create_deal ─────────────────────────────────────────────────
143
- server.tool("create_deal", `Create a deal linking an interested contact to a property in Propstack.
144
-
145
- A deal represents a contact's interest in a property and tracks it
146
- through pipeline stages (e.g. Anfrage → Besichtigung → Reserviert →
147
- Notartermin → Verkauft).
148
-
149
- Use this tool after:
150
- - A viewing to formalize interest
151
- - A contact inquiry about a property
152
- - Moving a lead into the sales pipeline
153
-
154
- Requires client_id, property_id, and deal_stage_id. Use list_pipelines or
211
+ server.tool("create_deal", `Create a deal linking an interested contact to a property in Propstack.
212
+
213
+ A deal represents a contact's interest in a property and tracks it
214
+ through pipeline stages (e.g. Anfrage → Besichtigung → Reserviert →
215
+ Notartermin → Verkauft).
216
+
217
+ Use this tool after:
218
+ - A viewing to formalize interest
219
+ - A contact inquiry about a property
220
+ - Moving a lead into the sales pipeline
221
+
222
+ Requires client_id, property_id, and deal_stage_id. Use list_pipelines or
155
223
  get_pipeline to find valid pipeline and stage IDs.`, {
156
224
  client_id: z.number()
157
225
  .describe("Contact ID (required)"),
@@ -173,7 +241,11 @@ get_pipeline to find valid pipeline and stage IDs.`, {
173
241
  .describe("Feeling score: 0=none, 1=cold, 2=warm, 3=hot"),
174
242
  }, async (args) => {
175
243
  try {
176
- const deal = await client.post("/client_properties", { body: { client_property: stripUndefined(args) } });
244
+ const [deal, pipelines] = await Promise.all([
245
+ client.post("/client_properties", { body: { client_property: stripUndefined(args) } }),
246
+ fetchPipelines(client).catch(() => []),
247
+ ]);
248
+ enrichDealsWithStageNames([deal], pipelines);
177
249
  return textResult(`Deal created successfully.\n\n${formatDeal(deal)}`);
178
250
  }
179
251
  catch (err) {
@@ -181,16 +253,16 @@ get_pipeline to find valid pipeline and stage IDs.`, {
181
253
  }
182
254
  });
183
255
  // ── update_deal ─────────────────────────────────────────────────
184
- server.tool("update_deal", `Update an existing deal in Propstack.
185
-
186
- Use this tool to:
187
- - Move a deal to the next pipeline stage (change deal_stage_id)
188
- - Update expected/agreed price
189
- - Add or update notes
190
- - Change broker assignment
191
- - Update feeling score after contact
192
- - Record cancellation reason
193
-
256
+ server.tool("update_deal", `Update an existing deal in Propstack.
257
+
258
+ Use this tool to:
259
+ - Move a deal to the next pipeline stage (change deal_stage_id)
260
+ - Update expected/agreed price
261
+ - Add or update notes
262
+ - Change broker assignment
263
+ - Update feeling score after contact
264
+ - Record cancellation reason
265
+
194
266
  Only provide the fields you want to change.`, {
195
267
  id: z.number()
196
268
  .describe("Deal ID to update"),
@@ -219,7 +291,11 @@ Only provide the fields you want to change.`, {
219
291
  }, async (args) => {
220
292
  try {
221
293
  const { id, ...fields } = args;
222
- const deal = await client.put(`/client_properties/${id}`, { body: { client_property: stripUndefined(fields) } });
294
+ const [deal, pipelines] = await Promise.all([
295
+ client.put(`/client_properties/${id}`, { body: { client_property: stripUndefined(fields) } }),
296
+ fetchPipelines(client).catch(() => []),
297
+ ]);
298
+ enrichDealsWithStageNames([deal], pipelines);
223
299
  return textResult(`Deal updated successfully.\n\n${formatDeal(deal)}`);
224
300
  }
225
301
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"deals.js","sourceRoot":"","sources":["../../src/tools/deals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deals.js","sourceRoot":"","sources":["../../src/tools/deals.ts"],"names":[],"mappings":"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"}