@wilnertech/halopsa-mcp-server 1.4.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 (51) hide show
  1. package/README.md +8 -1
  2. package/dist/api/client.d.ts +51 -2
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +124 -9
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/errors.d.ts +16 -3
  7. package/dist/api/errors.d.ts.map +1 -1
  8. package/dist/api/errors.js +107 -30
  9. package/dist/api/errors.js.map +1 -1
  10. package/dist/cache/memory-cache.d.ts +1 -0
  11. package/dist/cache/memory-cache.d.ts.map +1 -1
  12. package/dist/cache/memory-cache.js +6 -0
  13. package/dist/cache/memory-cache.js.map +1 -1
  14. package/dist/cache/prewarm.d.ts +1 -0
  15. package/dist/cache/prewarm.d.ts.map +1 -1
  16. package/dist/cache/prewarm.js +8 -0
  17. package/dist/cache/prewarm.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +12 -4
  20. package/dist/index.js.map +1 -1
  21. package/dist/tools/batch-operations.js +10 -10
  22. package/dist/tools/batch-operations.js.map +1 -1
  23. package/dist/tools/budgets.d.ts.map +1 -1
  24. package/dist/tools/budgets.js +7 -4
  25. package/dist/tools/budgets.js.map +1 -1
  26. package/dist/tools/milestones.d.ts.map +1 -1
  27. package/dist/tools/milestones.js +12 -9
  28. package/dist/tools/milestones.js.map +1 -1
  29. package/dist/tools/registrations.d.ts +8 -3
  30. package/dist/tools/registrations.d.ts.map +1 -1
  31. package/dist/tools/registrations.js +21 -12
  32. package/dist/tools/registrations.js.map +1 -1
  33. package/dist/tools/ticket-actions.d.ts +46 -0
  34. package/dist/tools/ticket-actions.d.ts.map +1 -1
  35. package/dist/tools/ticket-actions.js +236 -32
  36. package/dist/tools/ticket-actions.js.map +1 -1
  37. package/dist/tools/ticket-reference-data.d.ts +70 -1
  38. package/dist/tools/ticket-reference-data.d.ts.map +1 -1
  39. package/dist/tools/ticket-reference-data.js +340 -11
  40. package/dist/tools/ticket-reference-data.js.map +1 -1
  41. package/dist/tools/tickets.d.ts +53 -0
  42. package/dist/tools/tickets.d.ts.map +1 -1
  43. package/dist/tools/tickets.js +394 -22
  44. package/dist/tools/tickets.js.map +1 -1
  45. package/dist/types/tickets.d.ts +127 -0
  46. package/dist/types/tickets.d.ts.map +1 -1
  47. package/dist/utils/formatter.d.ts +18 -0
  48. package/dist/utils/formatter.d.ts.map +1 -1
  49. package/dist/utils/formatter.js +108 -22
  50. package/dist/utils/formatter.js.map +1 -1
  51. package/package.json +1 -1
@@ -98,6 +98,8 @@ export declare const CreateTicketArgsSchema: z.ZodObject<{
98
98
  estimate: z.ZodOptional<z.ZodNumber>;
99
99
  estimatedays: z.ZodOptional<z.ZodNumber>;
100
100
  milestone_id: z.ZodOptional<z.ZodNumber>;
101
+ asset_id: z.ZodOptional<z.ZodNumber>;
102
+ asset_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
101
103
  format_options: z.ZodOptional<z.ZodObject<{
102
104
  format: z.ZodOptional<z.ZodEnum<{
103
105
  compact: "compact";
@@ -132,6 +134,8 @@ export declare const UpdateTicketArgsSchema: z.ZodObject<{
132
134
  estimate: z.ZodOptional<z.ZodNumber>;
133
135
  estimatedays: z.ZodOptional<z.ZodNumber>;
134
136
  milestone_id: z.ZodOptional<z.ZodNumber>;
137
+ asset_id: z.ZodOptional<z.ZodNumber>;
138
+ asset_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
135
139
  format_options: z.ZodOptional<z.ZodObject<{
136
140
  format: z.ZodOptional<z.ZodEnum<{
137
141
  compact: "compact";
@@ -145,12 +149,26 @@ export declare const UpdateTicketArgsSchema: z.ZodObject<{
145
149
  export declare const CloseTicketArgsSchema: z.ZodObject<{
146
150
  ticket_id: z.ZodNumber;
147
151
  resolution_note: z.ZodOptional<z.ZodString>;
152
+ resolution_outcome_id: z.ZodOptional<z.ZodNumber>;
148
153
  }, z.core.$strip>;
149
154
  export declare const DeleteTicketArgsSchema: z.ZodObject<{
150
155
  ticket_id: z.ZodNumber;
151
156
  reason: z.ZodString;
152
157
  confirm_destructive: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
153
158
  }, z.core.$strip>;
159
+ export declare const ValidateCreateTicketArgsSchema: z.ZodObject<{
160
+ tickettype_id: z.ZodNumber;
161
+ fields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
162
+ format_options: z.ZodOptional<z.ZodObject<{
163
+ format: z.ZodOptional<z.ZodEnum<{
164
+ compact: "compact";
165
+ standard: "standard";
166
+ detailed: "detailed";
167
+ }>>;
168
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
169
+ omit_empty: z.ZodOptional<z.ZodBoolean>;
170
+ }, z.core.$strip>>;
171
+ }, z.core.$strip>;
154
172
  export declare function listTickets(client: HaloPSAAPIClient, args: z.infer<typeof ListTicketsArgsSchema>): Promise<string>;
155
173
  export declare function getTicket(client: HaloPSAAPIClient, args: z.infer<typeof GetTicketArgsSchema>): Promise<string>;
156
174
  export declare function searchTickets(client: HaloPSAAPIClient, args: z.infer<typeof SearchTicketsArgsSchema>): Promise<string>;
@@ -182,6 +200,40 @@ export declare function updateTicket(client: HaloPSAAPIClient, args: z.infer<typ
182
200
  */
183
201
  export declare function deleteTicket(client: HaloPSAAPIClient, args: z.infer<typeof DeleteTicketArgsSchema>): Promise<string>;
184
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;
215
+ /**
216
+ * Pure-local validation of a proposed ticket payload against the cached
217
+ * tickettype schema. No write is performed — this is a dry-run helper.
218
+ *
219
+ * Required-field detection logic:
220
+ * Halo's TicketType details response includes a `fields[]` array where each
221
+ * entry has a `fieldinfo` sub-object. The `mandatory` flag on `fieldinfo`
222
+ * indicates a required field. Additionally, `technew` on `fieldinfo` where
223
+ * the value equals 3 indicates "required for tech/API create". When either
224
+ * condition is true, the field is counted as required.
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
+ *
233
+ * Standard ticket fields (summary, client_id, tickettype_id) are always
234
+ * required regardless of the tickettype schema.
235
+ */
236
+ export declare function validateCreateTicket(client: HaloPSAAPIClient, args: z.infer<typeof ValidateCreateTicketArgsSchema>): Promise<string>;
185
237
  export declare const listTicketsTool: ZodToolDefinition;
186
238
  export declare const getTicketTool: ZodToolDefinition;
187
239
  export declare const searchTicketsTool: ZodToolDefinition;
@@ -189,4 +241,5 @@ export declare const createTicketTool: ZodToolDefinition;
189
241
  export declare const updateTicketTool: ZodToolDefinition;
190
242
  export declare const closeTicketTool: ZodToolDefinition;
191
243
  export declare const deleteTicketTool: ZodToolDefinition;
244
+ export declare const validateCreateTicketTool: ZodToolDefinition;
192
245
  //# sourceMappingURL=tickets.d.ts.map
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwCjC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BjC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;iBAKhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;iBAQjC,CAAC;AAoGH,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,CA2CjB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAqGjB;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;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"}
1
+ {"version":3,"file":"tickets.d.ts","sourceRoot":"","sources":["../../src/tools/tickets.ts"],"names":[],"mappings":"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"}