@wilnertech/halopsa-mcp-server 1.5.0 → 1.6.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/README.md +7 -0
  2. package/dist/api/client.d.ts +39 -0
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +50 -0
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/errors.d.ts.map +1 -1
  7. package/dist/api/errors.js +1 -2
  8. package/dist/api/errors.js.map +1 -1
  9. package/dist/cache/memory-cache.d.ts.map +1 -1
  10. package/dist/cache/memory-cache.js +5 -0
  11. package/dist/cache/memory-cache.js.map +1 -1
  12. package/dist/cache/prewarm.d.ts +1 -0
  13. package/dist/cache/prewarm.d.ts.map +1 -1
  14. package/dist/cache/prewarm.js +8 -0
  15. package/dist/cache/prewarm.js.map +1 -1
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.js +12 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/tools/batch-operations.js +10 -10
  20. package/dist/tools/batch-operations.js.map +1 -1
  21. package/dist/tools/registrations.d.ts +5 -1
  22. package/dist/tools/registrations.d.ts.map +1 -1
  23. package/dist/tools/registrations.js +7 -3
  24. package/dist/tools/registrations.js.map +1 -1
  25. package/dist/tools/ticket-actions.d.ts.map +1 -1
  26. package/dist/tools/ticket-actions.js +148 -45
  27. package/dist/tools/ticket-actions.js.map +1 -1
  28. package/dist/tools/ticket-reference-data.d.ts +28 -0
  29. package/dist/tools/ticket-reference-data.d.ts.map +1 -1
  30. package/dist/tools/ticket-reference-data.js +212 -19
  31. package/dist/tools/ticket-reference-data.js.map +1 -1
  32. package/dist/tools/tickets.d.ts +20 -0
  33. package/dist/tools/tickets.d.ts.map +1 -1
  34. package/dist/tools/tickets.js +275 -38
  35. package/dist/tools/tickets.js.map +1 -1
  36. package/dist/types/tickets.d.ts +64 -5
  37. package/dist/types/tickets.d.ts.map +1 -1
  38. package/dist/utils/formatter.d.ts +18 -0
  39. package/dist/utils/formatter.d.ts.map +1 -1
  40. package/dist/utils/formatter.js +108 -22
  41. package/dist/utils/formatter.js.map +1 -1
  42. package/package.json +1 -1
@@ -19,7 +19,7 @@
19
19
  * with a single GET /Category call; no more hang.
20
20
  */
21
21
  import { z } from 'zod';
22
- import { formatResponse } from '../utils/formatter.js';
22
+ import { formatResponse, withCompactDefaults } from '../utils/formatter.js';
23
23
  import { TTL } from '../cache/memory-cache.js';
24
24
  import { FormatOptionsSchema } from '../schemas/common.js';
25
25
  // =============================================================================
@@ -60,9 +60,14 @@ const ListTicketCategoriesArgsSchema = z.object({
60
60
  });
61
61
  const ListTicketOutcomesArgsSchema = z.object({
62
62
  tickettype_id: z.number().int().optional()
63
- .describe("Optional. When supplied, fetches the ticket type (with includedetails=true) and filters the " +
64
- "global outcome list to the IDs listed in the tickettype's outcomes[] array. The Halo " +
65
- '/Outcome endpoint does not support server-side tickettype filtering — scoping is client-side.'),
63
+ .describe('Optional. When supplied, fetches the ticket type (with includedetails=true) and filters ' +
64
+ 'the global outcome list to the IDs in the tickettype\'s allowed_actions[] (documented ' +
65
+ 'Halo field) or outcomes[] (legacy fallback). The /Outcome endpoint does not support ' +
66
+ 'server-side tickettype filtering — scoping is client-side.'),
67
+ agent_id: z.number().int().positive().optional()
68
+ .describe('Optional. Accepted for future per-agent ACL filtering (access_control[], enduser_role_ids). ' +
69
+ 'Current filter is tenant-global (actionvisibility boolean only): actionvisibility===false ' +
70
+ 'outcomes are excluded. Outcomes with other ACL restrictions return without accessible field.'),
66
71
  format_options: FormatOptionsSchema,
67
72
  });
68
73
  // =============================================================================
@@ -119,6 +124,32 @@ function unwrapList(response, preferredKey) {
119
124
  const record_count = wrapped.record_count ?? items.length;
120
125
  return { items, record_count };
121
126
  }
127
+ /**
128
+ * Default compact fields for list_halopsa_ticket_categories.
129
+ * Ensures callers always see name and tickettype_id (type_id) in compact mode
130
+ * even though those fields are absent from the legacy compactItem() heuristic.
131
+ *
132
+ * Both 'name' and 'value' are included: Halo uses 'value' on some endpoints
133
+ * and 'name' on others depending on version. Both 'tickettype_id' and 'type_id'
134
+ * are included: the MCP uses tickettype_id while Halo uses type_id internally.
135
+ * Fields not present on the raw response are null-filled (Bug 7 null-fill).
136
+ */
137
+ const CATEGORIES_COMPACT_DEFAULTS = [
138
+ 'id', 'name', 'value', 'type_id', 'tickettype_id',
139
+ ];
140
+ /**
141
+ * Default compact fields for list_halopsa_ticket_outcomes.
142
+ * NOTE: `accessible` is intentionally NOT in this list. S2 fix: `accessible` is
143
+ * only attached to a row when it is deterministically true or false (i.e., when
144
+ * ACL filtering was actually applied). Including it here would cause filterFields()
145
+ * to null-fill rows where it should be absent, defeating the honest-omission policy.
146
+ * The formatter's Branch 2 returns the full compact object including `accessible`
147
+ * when it exists because filterFields() projects from the already-annotated object.
148
+ */
149
+ const OUTCOMES_COMPACT_DEFAULTS = [
150
+ 'id', 'name', 'button', 'sequence', 'hidden',
151
+ 'is_resolution', 'is_internal_note',
152
+ ];
122
153
  /**
123
154
  * Compact an outcome record into the token-efficient shape.
124
155
  *
@@ -145,6 +176,112 @@ function compactOutcome(o) {
145
176
  is_internal_note,
146
177
  };
147
178
  }
179
+ /**
180
+ * Compute the accessible flag for a single outcome given optional agent_id.
181
+ *
182
+ * actionvisibility is a boolean in Halo's schema (verified 2026-05-12 against
183
+ * components.schemas.TOutcome.properties.actionvisibility in halopsa-swagger.json:
184
+ * { "type": "boolean", "nullable": true }). Prior code used 0/1/2 integer enum
185
+ * branches — those never matched a runtime boolean value and were a silent no-op.
186
+ *
187
+ * inactive === true → accessible: false (always)
188
+ * actionvisibility === false → accessible: false (hidden from action menu)
189
+ * actionvisibility === true, null, or undefined → 'unknown' (permissive by this
190
+ * gate, but other ACL fields not yet checked client-side)
191
+ *
192
+ * Note: the current actionvisibility-based filter is tenant-global (applies equally
193
+ * to all agents). Per-agent ACL filtering via access_control[] / enduser_role_ids
194
+ * requires agent_id and role lookup — deferred to a future iteration.
195
+ *
196
+ * @param o - The raw outcome from GET /Outcome
197
+ * @param _agentId - Reserved for future per-agent ACL; currently unused
198
+ */
199
+ function computeAccessible(o, _agentId) {
200
+ if (o.inactive === true) {
201
+ return false;
202
+ }
203
+ // actionvisibility is a boolean in Halo's OpenAPI schema (TOutcome in
204
+ // halopsa-swagger.json: { "type": "boolean", "nullable": true }).
205
+ // false = hidden from the action menu (not accessible).
206
+ // true, null, or undefined = visible by this gate.
207
+ if (o.actionvisibility === false) {
208
+ return false;
209
+ }
210
+ // We cannot deterministically confirm full accessibility without resolving
211
+ // the agent's role memberships against access_control[] and enduser_role_ids.
212
+ // Return 'unknown' rather than a misleading 'true'.
213
+ return 'unknown';
214
+ }
215
+ /**
216
+ * Shared helper: fetch and optionally filter the outcomes for a given
217
+ * tickettype_id. Used by both listTicketOutcomes (tool handler) and
218
+ * buildOutcomeDiscoveryRefusal (ticket-actions.ts diagnostic builder).
219
+ *
220
+ * Returns HaloPSATicketOutcomeCompact[] (not the accessible-annotated form)
221
+ * so the caller can apply its own ACL logic.
222
+ *
223
+ * S4 fix: inactive outcomes (inactive === true) are always excluded regardless
224
+ * of agent_id. Active outcomes (inactive === false or absent) qualify. This
225
+ * prevents admin-disabled outcomes from appearing in valid_outcomes_hint.
226
+ *
227
+ * When agent_id is supplied, outcomes with accessible===false are also excluded.
228
+ * Outcomes with accessible==="unknown" are always included.
229
+ *
230
+ * @param client - HaloPSA API client
231
+ * @param tickettypeId - Ticket type ID to filter outcomes to (optional)
232
+ * @param agentId - Agent ID for ACL filtering (optional)
233
+ */
234
+ export async function getOutcomesForTicketType(client, tickettypeId, agentId) {
235
+ // Fetch global outcome list (cached 1h)
236
+ const response = await client.getCached('/Outcome', { count: 200 }, {
237
+ enabled: true,
238
+ ttl: TTL.TICKET_OUTCOMES,
239
+ keyPrefix: 'ticketoutcomes:all',
240
+ });
241
+ let { items } = unwrapList(response, 'outcomes');
242
+ // S4 fix: always exclude inactive outcomes — admin-disabled outcomes should
243
+ // never appear in valid_outcomes_hint or resolution-outcome detection.
244
+ items = items.filter((o) => o.inactive !== true);
245
+ // Client-side filter to the tickettype's outcome allowlist.
246
+ // PRIMARY: RequestType.allowed_actions[] + allowall_actions (boolean) — the
247
+ // documented Halo schema (verified 2026-05-12 against RequestType in
248
+ // halopsa-swagger.json: 423 properties, zero named "outcomes").
249
+ // FALLBACK: ttResponse.outcomes[] — undocumented field some tenants surface
250
+ // with includedetails=true; kept for backward compatibility.
251
+ if (tickettypeId !== undefined) {
252
+ const ttResponse = await client.getCached(`/TicketType/${tickettypeId}`, { includedetails: true }, {
253
+ enabled: true,
254
+ ttl: TTL.TICKET_TYPES,
255
+ keyPrefix: `tickettype:${tickettypeId}:details`,
256
+ });
257
+ if (ttResponse.allowall_actions !== true) {
258
+ // Documented path: filter by allowed_actions[].id (Restriction schema).
259
+ const allowed = ttResponse.allowed_actions;
260
+ if (Array.isArray(allowed) && allowed.length > 0) {
261
+ const idSet = new Set(allowed.map((r) => r.id));
262
+ items = items.filter((o) => idSet.has(o.id));
263
+ }
264
+ else {
265
+ // Fallback: undocumented outcomes[] some tenants surface with includedetails=true.
266
+ const legacy = ttResponse.outcomes;
267
+ if (Array.isArray(legacy) && legacy.length > 0) {
268
+ const idSet = new Set(legacy);
269
+ items = items.filter((o) => idSet.has(o.id));
270
+ }
271
+ // If neither field is present, return the full active list (permissive fallback).
272
+ }
273
+ }
274
+ // allowall_actions === true → no restriction; return all active outcomes.
275
+ }
276
+ // Apply ACL filtering when agent_id is provided: drop false, keep true + unknown
277
+ if (agentId !== undefined) {
278
+ items = items.filter((o) => {
279
+ const accessible = computeAccessible(o, agentId);
280
+ return accessible !== false;
281
+ });
282
+ }
283
+ return items.map(compactOutcome);
284
+ }
148
285
  // =============================================================================
149
286
  // Implementations
150
287
  // =============================================================================
@@ -192,7 +329,7 @@ export async function listTicketPriorities(client, args) {
192
329
  const ttResponse = await client.getCached(`/TicketType/${args.tickettype_id}`, { includedetails: true }, {
193
330
  enabled: true,
194
331
  ttl: TTL.TICKET_TYPES,
195
- keyPrefix: `tickettype:detail:${args.tickettype_id}`,
332
+ keyPrefix: `tickettype:${args.tickettype_id}:details`,
196
333
  });
197
334
  // Support both field names Halo uses across versions.
198
335
  const defaultSla = ttResponse.default_sla ?? ttResponse.sla_id;
@@ -209,7 +346,10 @@ export async function listTicketPriorities(client, args) {
209
346
  return formatResponse(normalized, formatOpts, { record_count: normalized.length });
210
347
  }
211
348
  export async function listTicketCategories(client, args) {
212
- const formatOpts = resolveFormat(args.full, args.format_options);
349
+ const resolvedFormat = resolveFormat(args.full, args.format_options);
350
+ // Wire per-tool compact defaults so compact mode returns name + tickettype_id
351
+ // instead of the legacy compactItem() heuristic (Bug 3).
352
+ const formatOpts = withCompactDefaults(resolvedFormat, CATEGORIES_COMPACT_DEFAULTS);
213
353
  // Bug 7 fix: single GET /Category — no loop, no per-tickettype fetching.
214
354
  // The Halo endpoint ignores count/tickettype_id params and always returns
215
355
  // the full list (~90 records). Caching prevents repeat hits.
@@ -232,11 +372,20 @@ export async function listTicketCategories(client, args) {
232
372
  * If tickettype_id is supplied, fetches the ticket type with includedetails=true
233
373
  * and filters to the outcome IDs in its `outcomes[]` array.
234
374
  *
375
+ * Inactive outcomes (inactive === true) are always excluded — admin-disabled
376
+ * outcomes are never surfaced to the LLM.
377
+ *
378
+ * If agent_id is supplied, performs ACL filtering: outcomes with
379
+ * accessible=false are dropped. When agent_id is omitted, no ACL filtering
380
+ * is applied and the `accessible` field is omitted from each row.
381
+ *
235
382
  * NOTE: The /Outcome endpoint does not support server-side tickettype filtering.
236
383
  * Scoping is always performed client-side.
237
384
  */
238
385
  export async function listTicketOutcomes(client, args) {
239
- const formatOpts = args.format_options ?? { format: 'compact' };
386
+ // Wire per-tool compact defaults so accessible field is not stripped by
387
+ // legacy compactItem() (which would strip it since outcomes have id + name).
388
+ const formatOpts = withCompactDefaults(args.format_options ?? { format: 'compact' }, OUTCOMES_COMPACT_DEFAULTS);
240
389
  // Fetch global outcome list.
241
390
  const response = await client.getCached('/Outcome', { count: 200 }, {
242
391
  enabled: true,
@@ -244,22 +393,66 @@ export async function listTicketOutcomes(client, args) {
244
393
  keyPrefix: 'ticketoutcomes:all',
245
394
  });
246
395
  let { items } = unwrapList(response, 'outcomes');
247
- // Optional client-side filter via tickettype's outcomes[] array.
396
+ // Always exclude inactive outcomes admin-disabled outcomes must not reach
397
+ // the LLM regardless of tickettype_id or agent_id (matches getOutcomesForTicketType).
398
+ items = items.filter((o) => o.inactive !== true);
399
+ // Optional client-side filter to the tickettype's outcome allowlist.
400
+ // PRIMARY: RequestType.allowed_actions[] + allowall_actions (boolean) — the
401
+ // documented Halo schema (verified 2026-05-12 against RequestType in
402
+ // halopsa-swagger.json: 423 properties, zero named "outcomes").
403
+ // FALLBACK: ttResponse.outcomes[] — undocumented field some tenants surface
404
+ // with includedetails=true; kept for backward compatibility.
248
405
  if (args.tickettype_id !== undefined) {
249
406
  const ttResponse = await client.getCached(`/TicketType/${args.tickettype_id}`, { includedetails: true }, {
250
407
  enabled: true,
251
408
  ttl: TTL.TICKET_TYPES,
252
- keyPrefix: `tickettype:detail:${args.tickettype_id}`,
409
+ keyPrefix: `tickettype:${args.tickettype_id}:details`,
253
410
  });
254
- const allowedIds = ttResponse.outcomes;
255
- if (Array.isArray(allowedIds) && allowedIds.length > 0) {
256
- const idSet = new Set(allowedIds);
257
- items = items.filter((o) => idSet.has(o.id));
411
+ if (ttResponse.allowall_actions !== true) {
412
+ // Documented path: filter by allowed_actions[].id (Restriction schema).
413
+ const allowed = ttResponse.allowed_actions;
414
+ if (Array.isArray(allowed) && allowed.length > 0) {
415
+ const idSet = new Set(allowed.map((r) => r.id));
416
+ items = items.filter((o) => idSet.has(o.id));
417
+ }
418
+ else {
419
+ // Fallback: undocumented outcomes[] some tenants surface with includedetails=true.
420
+ const legacy = ttResponse.outcomes;
421
+ if (Array.isArray(legacy) && legacy.length > 0) {
422
+ const idSet = new Set(legacy);
423
+ items = items.filter((o) => idSet.has(o.id));
424
+ }
425
+ // If neither field is present, return the full active list (permissive fallback).
426
+ }
258
427
  }
259
- // If the tickettype has no outcomes[] array, return the full global list.
428
+ // allowall_actions === true no restriction; return all active outcomes.
260
429
  }
261
- const compacted = items.map(compactOutcome);
262
- return formatResponse(compacted, formatOpts, { record_count: compacted.length });
430
+ // Build accessible-annotated compacted rows.
431
+ // S2 fix: only attach the `accessible` field when its value is meaningful
432
+ // (true or false — i.e., when ACL filtering was actually applied). The
433
+ // 'unknown' placeholder is dropped entirely to avoid token waste and to
434
+ // prevent callers from treating it as a usable filter signal.
435
+ // When agent_id is supplied: also drop outcomes with accessible===false.
436
+ // When agent_id is absent: include all rows but omit the `accessible` key
437
+ // (no filtering was applied, so the field carries no information).
438
+ const annotated = items
439
+ .map((o) => {
440
+ const compact = compactOutcome(o);
441
+ const accessible = computeAccessible(o, args.agent_id);
442
+ if (accessible === 'unknown') {
443
+ // Drop the field — honest: no filter was applied for this row
444
+ return compact;
445
+ }
446
+ return { ...compact, accessible };
447
+ })
448
+ .filter((row) => {
449
+ // When agent_id provided, drop deterministically inaccessible outcomes
450
+ if (args.agent_id !== undefined) {
451
+ return row.accessible !== false;
452
+ }
453
+ return true;
454
+ });
455
+ return formatResponse(annotated, formatOpts, { record_count: annotated.length });
263
456
  }
264
457
  /**
265
458
  * Look up a single outcome by name (case-insensitive, first match).
@@ -296,13 +489,13 @@ export const getTicketTypeTool = {
296
489
  };
297
490
  export const listTicketStatusesTool = {
298
491
  name: 'list_halopsa_ticket_statuses',
299
- description: 'List HaloPSA ticket statuses. Each record carries `type` (0=regular ticket statuses, 1=Order, 2=Item, 3=Action Required/Invoiced/With CAB) and `sequence` (UI ordering). NOTE: the API does NOT return `complete` / `is_closed` / `is_active` flags despite some prior documentation. To find the canonical Closed status, match `name === "Closed" && type === 0` (returns id=9 on this tenant). For Order/Item flavours, see id=13 "Closed Order" (type=1) and id=15 "Closed Item" (type=2). Cached 1h.',
492
+ description: 'List ticket statuses. Each carries `type` (0=ticket, 1=Order, 2=Item, 3=other) and `sequence`. Canonical closed = name==="Closed" && type===0. Cached 1h.',
300
493
  schema: ListTicketStatusesArgsSchema,
301
494
  handler: listTicketStatuses,
302
495
  };
303
496
  export const listTicketPrioritiesTool = {
304
497
  name: 'list_halopsa_ticket_priorities',
305
- description: "List HaloPSA ticket priorities. Halo's priorities are SLA-scoped — each SLA has its own priority levels with overlapping integer ids (1-4). Pass `tickettype_id` to filter to that ticket type's default SLA, OR inspect `slaid` on each record to disambiguate. The `id` field is the integer priority value (1-4) that maps to `Faults.priority_id` on ticket creates — NOT the underlying GUID (exposed as `sla_priority_id`). Returns all 12 records (3 SLAs x 4 levels) when no tickettype_id is supplied. Includes fix/response time hints. Cached 1h.",
498
+ description: 'List ticket priorities. Halo priorities are SLA-scoped; `id` is the int (1-4) to pass as priority_id, `slaid` disambiguates. Pass tickettype_id to scope to that type\'s default SLA. Cached 1h.',
306
499
  schema: ListTicketPrioritiesArgsSchema,
307
500
  handler: listTicketPriorities,
308
501
  };
@@ -314,7 +507,7 @@ export const listTicketCategoriesTool = {
314
507
  };
315
508
  export const listTicketOutcomesTool = {
316
509
  name: 'list_halopsa_ticket_outcomes',
317
- description: "List HaloPSA ticket outcomes — the action outcomes selectable when adding a ticket action (e.g., Triage, Resolved, Closed, Escalated). Returns compact shape: {id, name, button, sequence, hidden, is_resolution, is_internal_note}. NOTE: is_resolution and is_internal_note are HEURISTICS (name-match + respondtype) — verify against your tenant's outcome configuration before automation. Pass optional tickettype_id to filter to outcomes allowed for that ticket type (client-side via the tickettype's outcomes[] array). GET /Outcome does not support server-side filtering. Cached 1h.",
510
+ description: 'List ticket outcomes (Triage/Resolved/Closed/etc). Returns {id, name, button, sequence, hidden, is_resolution, is_internal_note}. Optional tickettype_id (client-side filter), agent_id (ACL filter). Active outcomes only. Cached 1h.',
318
511
  schema: ListTicketOutcomesArgsSchema,
319
512
  handler: listTicketOutcomes,
320
513
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ticket-reference-data.js","sourceRoot":"","sources":["../../src/tools/ticket-reference-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ticket-reference-data.js","sourceRoot":"","sources":["../../src/tools/ticket-reference-data.ts"],"names":[],"mappings":"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"}
@@ -149,6 +149,7 @@ export declare const UpdateTicketArgsSchema: z.ZodObject<{
149
149
  export declare const CloseTicketArgsSchema: z.ZodObject<{
150
150
  ticket_id: z.ZodNumber;
151
151
  resolution_note: z.ZodOptional<z.ZodString>;
152
+ resolution_outcome_id: z.ZodOptional<z.ZodNumber>;
152
153
  }, z.core.$strip>;
153
154
  export declare const DeleteTicketArgsSchema: z.ZodObject<{
154
155
  ticket_id: z.ZodNumber;
@@ -199,6 +200,18 @@ export declare function updateTicket(client: HaloPSAAPIClient, args: z.infer<typ
199
200
  */
200
201
  export declare function deleteTicket(client: HaloPSAAPIClient, args: z.infer<typeof DeleteTicketArgsSchema>): Promise<string>;
201
202
  export declare function closeTicket(client: HaloPSAAPIClient, args: z.infer<typeof CloseTicketArgsSchema>): Promise<string>;
203
+ /**
204
+ * Map a Halo-internal field name to the equivalent MCP parameter name.
205
+ *
206
+ * Halo uses `category2`..`category6` internally while the MCP exposes
207
+ * `category_1`..`category_5`. Custom fields (CF* names) are not mapped to a
208
+ * standard param — they are returned in a separate `required_customfields`
209
+ * array. All other names are returned unchanged.
210
+ *
211
+ * Returns null for custom fields (CF* prefix) — callers handle these
212
+ * separately.
213
+ */
214
+ export declare function mcpParamForHaloField(haloName: string): string | null;
202
215
  /**
203
216
  * Pure-local validation of a proposed ticket payload against the cached
204
217
  * tickettype schema. No write is performed — this is a dry-run helper.
@@ -210,6 +223,13 @@ export declare function closeTicket(client: HaloPSAAPIClient, args: z.infer<type
210
223
  * the value equals 3 indicates "required for tech/API create". When either
211
224
  * condition is true, the field is counted as required.
212
225
  *
226
+ * Fields nested inside `group.fields[]` or `fields[]` (both group-nesting
227
+ * shapes Halo uses across versions) are also walked — not just top-level.
228
+ *
229
+ * Halo-internal category field names (category2..category6) are translated
230
+ * to MCP equivalents (category_1..category_5). Custom fields (CF* prefix)
231
+ * are reported in a separate `required_customfields` array.
232
+ *
213
233
  * Standard ticket fields (summary, client_id, tickettype_id) are always
214
234
  * required regardless of the tickettype schema.
215
235
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tickets.d.ts","sourceRoot":"","sources":["../../src/tools/tickets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAgCvD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwChC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;iBAI9B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;iBAUlC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6CjC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmCjC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;iBAKhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;iBAQjC,CAAC;AAGH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;iBAMzC,CAAC;AA0HH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,GAC1C,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAoDjB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CA6GjB;AAgBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CA8HjB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,GAC1C,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAiBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,GACnD,OAAO,CAAC,MAAM,CAAC,CAiGjB;AAMD,eAAO,MAAM,eAAe,EAAE,iBAK7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,iBAK3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAK/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBAK9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBAK9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,iBAK7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBAK9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,iBAMtC,CAAC"}
1
+ {"version":3,"file":"tickets.d.ts","sourceRoot":"","sources":["../../src/tools/tickets.ts"],"names":[],"mappings":"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"}