@wilnertech/halopsa-mcp-server 1.2.0 → 1.4.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.
- package/README.md +43 -2
- package/dist/cache/memory-cache.d.ts +3 -0
- package/dist/cache/memory-cache.d.ts.map +1 -1
- package/dist/cache/memory-cache.js +4 -0
- package/dist/cache/memory-cache.js.map +1 -1
- package/dist/tools/batch-operations.d.ts +47 -0
- package/dist/tools/batch-operations.d.ts.map +1 -1
- package/dist/tools/batch-operations.js +211 -68
- package/dist/tools/batch-operations.js.map +1 -1
- package/dist/tools/budgets.d.ts +130 -0
- package/dist/tools/budgets.d.ts.map +1 -0
- package/dist/tools/budgets.js +277 -0
- package/dist/tools/budgets.js.map +1 -0
- package/dist/tools/milestones.d.ts +129 -0
- package/dist/tools/milestones.d.ts.map +1 -0
- package/dist/tools/milestones.js +281 -0
- package/dist/tools/milestones.js.map +1 -0
- package/dist/tools/registrations.d.ts +6 -2
- package/dist/tools/registrations.d.ts.map +1 -1
- package/dist/tools/registrations.js +39 -5
- package/dist/tools/registrations.js.map +1 -1
- package/dist/tools/ticket-links.d.ts +41 -0
- package/dist/tools/ticket-links.d.ts.map +1 -0
- package/dist/tools/ticket-links.js +84 -0
- package/dist/tools/ticket-links.js.map +1 -0
- package/dist/tools/tickets.d.ts +2 -0
- package/dist/tools/tickets.d.ts.map +1 -1
- package/dist/tools/tickets.js +59 -2
- package/dist/tools/tickets.js.map +1 -1
- package/dist/tools/workflows.d.ts +125 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +355 -0
- package/dist/tools/workflows.js.map +1 -0
- package/dist/types/budgets.d.ts +45 -0
- package/dist/types/budgets.d.ts.map +1 -0
- package/dist/types/budgets.js +12 -0
- package/dist/types/budgets.js.map +1 -0
- package/dist/types/milestones.d.ts +65 -0
- package/dist/types/milestones.d.ts.map +1 -0
- package/dist/types/milestones.js +14 -0
- package/dist/types/milestones.js.map +1 -0
- package/dist/types/tickets.d.ts +4 -0
- package/dist/types/tickets.d.ts.map +1 -1
- package/dist/types/workflows.d.ts +77 -0
- package/dist/types/workflows.d.ts.map +1 -0
- package/dist/types/workflows.js +11 -0
- package/dist/types/workflows.js.map +1 -0
- package/dist/utils/concurrency.d.ts +42 -0
- package/dist/utils/concurrency.d.ts.map +1 -0
- package/dist/utils/concurrency.js +82 -0
- package/dist/utils/concurrency.js.map +1 -0
- package/dist/utils/formatter.d.ts +1 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +30 -3
- package/dist/utils/formatter.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Model Context Protocol server for HaloPSA API integration with asset, user, and
|
|
|
4
4
|
|
|
5
5
|
## Key Features
|
|
6
6
|
|
|
7
|
-
- **
|
|
7
|
+
- **66 tools** for managing HaloPSA assets, users, sites, clients, tickets, actions, agents, workflows, milestones, budgets, ticket links, and bulk updates
|
|
8
8
|
- **Deduplication** with confidence scoring to prevent duplicate billing entities
|
|
9
9
|
- **OAuth2 Client Credentials** authentication with automatic token refresh
|
|
10
10
|
- **Rate limiting** with exponential backoff (60 requests/minute)
|
|
@@ -206,7 +206,7 @@ Multi-tenant Halo deployments often have 3-4 "closed-like" statuses (`Closed`, `
|
|
|
206
206
|
| `list_halopsa_ticket_custom_fields` | Per-tickettype field definitions via `/FieldInfo?type=1` |
|
|
207
207
|
| `get_halopsa_ticket_field_schema` | Sampling-based fallback when `/FieldInfo` is unavailable |
|
|
208
208
|
|
|
209
|
-
### Batch Operations Tools (
|
|
209
|
+
### Batch Operations Tools (5)
|
|
210
210
|
|
|
211
211
|
| Tool | Description |
|
|
212
212
|
|------|-------------|
|
|
@@ -214,6 +214,47 @@ Multi-tenant Halo deployments often have 3-4 "closed-like" statuses (`Closed`, `
|
|
|
214
214
|
| `get_halopsa_users_batch` | Get multiple users (max 50) |
|
|
215
215
|
| `get_halopsa_sites_batch` | Get multiple sites (max 50) |
|
|
216
216
|
| `get_halopsa_tickets_batch` | Get multiple tickets (max 50) |
|
|
217
|
+
| `bulk_update_halopsa_tickets` | Update up to 20 tickets in parallel via `Promise.allSettled`. Each element accepts the full `update_halopsa_ticket` field set (status_id, agent_id, milestone_id, etc.). Returns per-ticket `{success\|error, result?, error?}` so a single failure does not abort the batch. |
|
|
218
|
+
|
|
219
|
+
### Ticket Link Tools (1)
|
|
220
|
+
|
|
221
|
+
| Tool | Description |
|
|
222
|
+
|------|-------------|
|
|
223
|
+
| `list_halopsa_linked_tickets` | Read-side discovery of all relationships on a ticket: `parent_id`, `child_count`, and `linked_tickets[]` array. Compact returns `{linked_ticket_id, link_type?, summary?}` per entry. **Write-side ticket-to-ticket linking via `/IntegrationData/Get/HaloLink` is deferred to v1.4 pending endpoint param discovery.** For now, use `parent_id` on create/update as the canonical "depends on / blocks" mechanism. |
|
|
224
|
+
|
|
225
|
+
### Workflow Tools (6)
|
|
226
|
+
|
|
227
|
+
| Tool | Description |
|
|
228
|
+
|------|-------------|
|
|
229
|
+
| `list_halopsa_workflows` | List all workflow definitions (cached 1h). Returns `id, name, active, notinuse` per workflow. |
|
|
230
|
+
| `get_halopsa_workflow` | Get a single workflow with full `steps[]` + `stages[]` + `flow_chart_json`. |
|
|
231
|
+
| `list_halopsa_workflow_steps` | List workflow steps (124 total on a typical tenant). Optionally filter by `workflow_id`. |
|
|
232
|
+
| `create_halopsa_workflow` | `POST /Workflow` with array body. Accepts `name, note?, steps?, stages?`. |
|
|
233
|
+
| `update_halopsa_workflow` | Read-before-write merge. `POST /Workflow [{id, ...merged}]`. |
|
|
234
|
+
| `delete_halopsa_workflow` | **Safety-first**: refuses unless `notinuse === true` AND no tickettype defaults to this workflow. Override with `confirm_destructive: true` + `'OVERRIDE'` in `reason`. Idempotent on 404. |
|
|
235
|
+
| **Advance a ticket through its workflow** | (No dedicated tool — workflows are advanced via `update_halopsa_ticket(status_id=X)`. Each status maps to a workflow step.) |
|
|
236
|
+
|
|
237
|
+
### Ticket Milestone Tools (4)
|
|
238
|
+
|
|
239
|
+
Milestones are nested under tickets — no top-level `/Milestone` endpoint exists. Each Project ticket has a `milestones[]` array (similar to `customfields[]`).
|
|
240
|
+
|
|
241
|
+
| Tool | Description |
|
|
242
|
+
|------|-------------|
|
|
243
|
+
| `list_halopsa_ticket_milestones` | Return `ticket.milestones[]` for a given ticket id. Cached 1min. |
|
|
244
|
+
| `set_halopsa_ticket_milestones` | **Replace** the entire `milestones[]` array via read-before-write merge. Each input: `{name (required), target_date (required ISO), start_date?, sequence?, billing_amount?, status_id?}`. |
|
|
245
|
+
| `add_halopsa_ticket_milestone` | Convenience: append one milestone to the existing array. |
|
|
246
|
+
| `remove_halopsa_ticket_milestone` | Convenience: remove one milestone by id. |
|
|
247
|
+
| **Link a child ticket to a milestone** | (Use `update_halopsa_ticket(milestone_id=X)` — exposed in v1.3 on the create/update schemas.) |
|
|
248
|
+
|
|
249
|
+
### Budget Tools (5)
|
|
250
|
+
|
|
251
|
+
| Tool | Description |
|
|
252
|
+
|------|-------------|
|
|
253
|
+
| `list_halopsa_budget_types` | List all BudgetType records (Fixed Price, T&M, Retainer, etc.). Cached 1h. |
|
|
254
|
+
| `create_halopsa_budget_type` | `POST /BudgetType` with array body. Accepts `name, defaultrate?, chargerate?`. |
|
|
255
|
+
| `delete_halopsa_budget_type` | **Safety-first**: refuses by default (dependency check unavailable — Halo doesn't expose `budgettype_id` as a `/Tickets` filter). Override with `confirm_destructive: true` + `'OVERRIDE'` in `reason`. |
|
|
256
|
+
| `get_halopsa_ticket_budget` | Return `ticket.budgets[]` for a given ticket id (per-ticket budget records). Cached 1min. |
|
|
257
|
+
| `set_halopsa_ticket_budget` | **Replace** the entire per-ticket `budgets[]` array. Each input: `{budgettype_id (required int), hours?, days?, rate?}`. |
|
|
217
258
|
|
|
218
259
|
## Deduplication Algorithms
|
|
219
260
|
|
|
@@ -81,8 +81,11 @@ export declare const TTL: {
|
|
|
81
81
|
readonly TICKET_STATUSES: number;
|
|
82
82
|
readonly TICKET_PRIORITIES: number;
|
|
83
83
|
readonly TICKET_CATEGORIES: number;
|
|
84
|
+
readonly BUDGET_TYPES: number;
|
|
84
85
|
readonly CLIENT_LIST: number;
|
|
85
86
|
readonly SITE_LIST: number;
|
|
87
|
+
readonly WORKFLOWS: number;
|
|
88
|
+
readonly WORKFLOW_STEPS: number;
|
|
86
89
|
readonly ASSET_LIST: number;
|
|
87
90
|
readonly USER_LIST: number;
|
|
88
91
|
readonly TICKET_LIST: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-cache.d.ts","sourceRoot":"","sources":["../../src/cache/memory-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,YAAY,CAAC,CAAiC;gBAE1C,OAAO,GAAE,MAAa,EAAE,iBAAiB,GAAE,MAAc;IAMrE;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAqB7B;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAclD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAc1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,KAAK,IAAI;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB;IAQD;;OAEG;IACH,OAAO,CAAC,OAAO;IAef;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"memory-cache.d.ts","sourceRoot":"","sources":["../../src/cache/memory-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,YAAY,CAAC,CAAiC;gBAE1C,OAAO,GAAE,MAAa,EAAE,iBAAiB,GAAE,MAAc;IAMrE;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAqB7B;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAclD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAc1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,KAAK,IAAI;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB;IAQD;;OAEG;IACH,OAAO,CAAC,OAAO;IAef;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;CAyBN,CAAC;AAEX;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAOR"}
|
|
@@ -159,9 +159,13 @@ export const TTL = {
|
|
|
159
159
|
TICKET_STATUSES: 60 * 60 * 1000,
|
|
160
160
|
TICKET_PRIORITIES: 60 * 60 * 1000,
|
|
161
161
|
TICKET_CATEGORIES: 60 * 60 * 1000,
|
|
162
|
+
BUDGET_TYPES: 60 * 60 * 1000,
|
|
162
163
|
// Medium TTL (5 minutes) - Moderate change rate
|
|
163
164
|
CLIENT_LIST: 5 * 60 * 1000,
|
|
164
165
|
SITE_LIST: 5 * 60 * 1000,
|
|
166
|
+
// Workflow TTLs (1 hour) - Workflow definitions change infrequently
|
|
167
|
+
WORKFLOWS: 60 * 60 * 1000,
|
|
168
|
+
WORKFLOW_STEPS: 60 * 60 * 1000,
|
|
165
169
|
// Low TTL (1 minute) - Frequent changes (billing critical data)
|
|
166
170
|
ASSET_LIST: 1 * 60 * 1000,
|
|
167
171
|
USER_LIST: 1 * 60 * 1000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-cache.js","sourceRoot":"","sources":["../../src/cache/memory-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,OAAO,WAAW;IACd,KAAK,GAAqC,IAAI,GAAG,EAAE,CAAC;IACpD,OAAO,CAAS;IAChB,iBAAiB,CAAS;IAC1B,YAAY,CAAkC;IAEtD,YAAY,UAAkB,IAAI,EAAE,oBAA4B,KAAK;QACnE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAI,GAAW;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uDAAuD;QACvD,uEAAuE;QACvE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE3B,OAAO,KAAK,CAAC,KAAU,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,KAAa;QACzC,qCAAqC;QACrC,qFAAqF;QACrF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,OAAe;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACvB,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QAKH,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC1B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAe;QACpC,iDAAiD;QACjD,MAAM,YAAY,GAAG,OAAO;aACzB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;aACpC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;aACpB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEvB,OAAO,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;IACzC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,oDAAoD;IACpD,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAC3B,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAC9B,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAC7B,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAC1B,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAC5B,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAC/B,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACjC,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"memory-cache.js","sourceRoot":"","sources":["../../src/cache/memory-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,4 +90,51 @@ export declare const getSitesBatchTool: ZodToolDefinition;
|
|
|
90
90
|
*/
|
|
91
91
|
export declare function getTicketsBatch(client: HaloPSAAPIClient, args: z.infer<typeof GetTicketsBatchArgsSchema>): Promise<string>;
|
|
92
92
|
export declare const getTicketsBatchTool: ZodToolDefinition;
|
|
93
|
+
export declare const BulkUpdateTicketsArgsSchema: z.ZodObject<{
|
|
94
|
+
updates: z.ZodArray<z.ZodObject<{
|
|
95
|
+
ticket_id: z.ZodNumber;
|
|
96
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
97
|
+
details_html: z.ZodOptional<z.ZodString>;
|
|
98
|
+
tickettype_id: z.ZodOptional<z.ZodNumber>;
|
|
99
|
+
status_id: z.ZodOptional<z.ZodNumber>;
|
|
100
|
+
priority_id: z.ZodOptional<z.ZodNumber>;
|
|
101
|
+
category_1: z.ZodOptional<z.ZodString>;
|
|
102
|
+
agent_id: z.ZodOptional<z.ZodNumber>;
|
|
103
|
+
team_id: z.ZodOptional<z.ZodNumber>;
|
|
104
|
+
site_id: z.ZodOptional<z.ZodNumber>;
|
|
105
|
+
user_id: z.ZodOptional<z.ZodNumber>;
|
|
106
|
+
parent_id: z.ZodOptional<z.ZodNumber>;
|
|
107
|
+
dateoccurred: z.ZodOptional<z.ZodString>;
|
|
108
|
+
startdate: z.ZodOptional<z.ZodString>;
|
|
109
|
+
source: z.ZodOptional<z.ZodNumber>;
|
|
110
|
+
estimate: z.ZodOptional<z.ZodNumber>;
|
|
111
|
+
estimatedays: z.ZodOptional<z.ZodNumber>;
|
|
112
|
+
customfields: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
113
|
+
id: z.ZodOptional<z.ZodNumber>;
|
|
114
|
+
name: z.ZodOptional<z.ZodString>;
|
|
115
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
|
|
116
|
+
}, z.core.$strip>>>;
|
|
117
|
+
milestone_id: z.ZodOptional<z.ZodNumber>;
|
|
118
|
+
}, z.core.$strip>>;
|
|
119
|
+
format_options: z.ZodOptional<z.ZodObject<{
|
|
120
|
+
format: z.ZodOptional<z.ZodEnum<{
|
|
121
|
+
compact: "compact";
|
|
122
|
+
standard: "standard";
|
|
123
|
+
detailed: "detailed";
|
|
124
|
+
}>>;
|
|
125
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
126
|
+
omit_empty: z.ZodOptional<z.ZodBoolean>;
|
|
127
|
+
}, z.core.$strip>>;
|
|
128
|
+
}, z.core.$strip>;
|
|
129
|
+
/**
|
|
130
|
+
* Bulk update up to 20 HaloPSA tickets in a single MCP call.
|
|
131
|
+
*
|
|
132
|
+
* Implementation: calls updateTicket() N times via Promise.allSettled for
|
|
133
|
+
* fault-tolerance — a failure on one ticket does not abort the remaining
|
|
134
|
+
* updates. Returns a per-ticket result array with status 'success'|'error'.
|
|
135
|
+
* Each success element has its write response run through stripWriteResponse
|
|
136
|
+
* for token efficiency.
|
|
137
|
+
*/
|
|
138
|
+
export declare function bulkUpdateTickets(client: HaloPSAAPIClient, args: z.infer<typeof BulkUpdateTicketsArgsSchema>): Promise<string>;
|
|
139
|
+
export declare const bulkUpdateTicketsTool: ZodToolDefinition;
|
|
93
140
|
//# sourceMappingURL=batch-operations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-operations.d.ts","sourceRoot":"","sources":["../../src/tools/batch-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;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;
|
|
1
|
+
{"version":3,"file":"batch-operations.d.ts","sourceRoot":"","sources":["../../src/tools/batch-operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;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;AAuBvD;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;iBAInC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;iBAIlC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;iBAIlC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;iBAIpC,CAAC;AAMH;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,GAC7C,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAMD,eAAO,MAAM,kBAAkB,EAAE,iBAKhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAK/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAK/B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,GAC9C,OAAO,CAAC,MAAM,CAAC,CA8DjB;AAED,eAAO,MAAM,mBAAmB,EAAE,iBAKjC,CAAC;AA2DF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAItC,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC,CA+EjB;AAED,eAAO,MAAM,qBAAqB,EAAE,iBASnC,CAAC"}
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Provides efficient batch retrieval operations to reduce API calls
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
import { formatResponse } from '../utils/formatter.js';
|
|
6
|
+
import { formatResponse, stripWriteResponse } from '../utils/formatter.js';
|
|
7
7
|
import { TTL } from '../cache/memory-cache.js';
|
|
8
8
|
import { FormatOptionsSchema } from '../schemas/common.js';
|
|
9
|
+
import { updateTicket } from './tickets.js';
|
|
10
|
+
import { runWithConcurrency, withTimeout, DEFAULT_BATCH_CONCURRENCY, DEFAULT_BULK_CONCURRENCY, DEFAULT_BULK_TIMEOUT_MS, } from '../utils/concurrency.js';
|
|
9
11
|
// =============================================================================
|
|
10
12
|
// Zod Schemas for Input Validation
|
|
11
13
|
// =============================================================================
|
|
@@ -58,25 +60,24 @@ export async function getAssetsBatch(client, args) {
|
|
|
58
60
|
message: 'Maximum 50 asset IDs per batch request',
|
|
59
61
|
}, null, 2);
|
|
60
62
|
}
|
|
61
|
-
// Fetch all assets
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
catch (error) {
|
|
72
|
-
return {
|
|
73
|
-
success: false,
|
|
74
|
-
id,
|
|
75
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
76
|
-
};
|
|
63
|
+
// Fetch all assets with bounded concurrency (reads: DEFAULT_BATCH_CONCURRENCY)
|
|
64
|
+
const settled = await runWithConcurrency(args.asset_ids, DEFAULT_BATCH_CONCURRENCY, (id) => withTimeout(() => client.getCached(`/Asset/${id}`, undefined, {
|
|
65
|
+
enabled: true,
|
|
66
|
+
ttl: TTL.ASSET_LIST,
|
|
67
|
+
keyPrefix: `asset:${id}`,
|
|
68
|
+
}), DEFAULT_BULK_TIMEOUT_MS));
|
|
69
|
+
const results = settled.map((outcome, i) => {
|
|
70
|
+
const id = args.asset_ids[i];
|
|
71
|
+
if (outcome.status === 'fulfilled') {
|
|
72
|
+
return { success: true, id, data: outcome.value };
|
|
77
73
|
}
|
|
74
|
+
const reason = outcome.reason;
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
id,
|
|
78
|
+
error: reason instanceof Error ? reason.message : 'Unknown error',
|
|
79
|
+
};
|
|
78
80
|
});
|
|
79
|
-
const results = await Promise.all(assetPromises);
|
|
80
81
|
// Separate successful and failed results
|
|
81
82
|
const successful = results.filter((r) => r.success).map((r) => r.data);
|
|
82
83
|
const failed = results.filter((r) => !r.success).map((r) => ({
|
|
@@ -106,25 +107,24 @@ export async function getUsersBatch(client, args) {
|
|
|
106
107
|
message: 'Maximum 50 user IDs per batch request',
|
|
107
108
|
}, null, 2);
|
|
108
109
|
}
|
|
109
|
-
// Fetch all users
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
catch (error) {
|
|
120
|
-
return {
|
|
121
|
-
success: false,
|
|
122
|
-
id,
|
|
123
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
124
|
-
};
|
|
110
|
+
// Fetch all users with bounded concurrency (reads: DEFAULT_BATCH_CONCURRENCY)
|
|
111
|
+
const settled = await runWithConcurrency(args.user_ids, DEFAULT_BATCH_CONCURRENCY, (id) => withTimeout(() => client.getCached(`/Users/${id}`, undefined, {
|
|
112
|
+
enabled: true,
|
|
113
|
+
ttl: TTL.USER_LIST,
|
|
114
|
+
keyPrefix: `user:${id}`,
|
|
115
|
+
}), DEFAULT_BULK_TIMEOUT_MS));
|
|
116
|
+
const results = settled.map((outcome, i) => {
|
|
117
|
+
const id = args.user_ids[i];
|
|
118
|
+
if (outcome.status === 'fulfilled') {
|
|
119
|
+
return { success: true, id, data: outcome.value };
|
|
125
120
|
}
|
|
121
|
+
const reason = outcome.reason;
|
|
122
|
+
return {
|
|
123
|
+
success: false,
|
|
124
|
+
id,
|
|
125
|
+
error: reason instanceof Error ? reason.message : 'Unknown error',
|
|
126
|
+
};
|
|
126
127
|
});
|
|
127
|
-
const results = await Promise.all(userPromises);
|
|
128
128
|
// Separate successful and failed results
|
|
129
129
|
const successful = results.filter((r) => r.success).map((r) => r.data);
|
|
130
130
|
const failed = results.filter((r) => !r.success).map((r) => ({
|
|
@@ -154,25 +154,24 @@ export async function getSitesBatch(client, args) {
|
|
|
154
154
|
message: 'Maximum 50 site IDs per batch request',
|
|
155
155
|
}, null, 2);
|
|
156
156
|
}
|
|
157
|
-
// Fetch all sites
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
catch (error) {
|
|
168
|
-
return {
|
|
169
|
-
success: false,
|
|
170
|
-
id,
|
|
171
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
172
|
-
};
|
|
157
|
+
// Fetch all sites with bounded concurrency (reads: DEFAULT_BATCH_CONCURRENCY)
|
|
158
|
+
const settled = await runWithConcurrency(args.site_ids, DEFAULT_BATCH_CONCURRENCY, (id) => withTimeout(() => client.getCached(`/Site/${id}`, undefined, {
|
|
159
|
+
enabled: true,
|
|
160
|
+
ttl: TTL.SITE_LIST,
|
|
161
|
+
keyPrefix: `site:${id}`,
|
|
162
|
+
}), DEFAULT_BULK_TIMEOUT_MS));
|
|
163
|
+
const results = settled.map((outcome, i) => {
|
|
164
|
+
const id = args.site_ids[i];
|
|
165
|
+
if (outcome.status === 'fulfilled') {
|
|
166
|
+
return { success: true, id, data: outcome.value };
|
|
173
167
|
}
|
|
168
|
+
const reason = outcome.reason;
|
|
169
|
+
return {
|
|
170
|
+
success: false,
|
|
171
|
+
id,
|
|
172
|
+
error: reason instanceof Error ? reason.message : 'Unknown error',
|
|
173
|
+
};
|
|
174
174
|
});
|
|
175
|
-
const results = await Promise.all(sitePromises);
|
|
176
175
|
// Separate successful and failed results
|
|
177
176
|
const successful = results.filter((r) => r.success).map((r) => r.data);
|
|
178
177
|
const failed = results.filter((r) => !r.success).map((r) => ({
|
|
@@ -225,24 +224,24 @@ export async function getTicketsBatch(client, args) {
|
|
|
225
224
|
message: 'Maximum 50 ticket IDs per batch request',
|
|
226
225
|
}, null, 2);
|
|
227
226
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
return {
|
|
239
|
-
success: false,
|
|
240
|
-
id,
|
|
241
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
242
|
-
};
|
|
227
|
+
// Fetch all tickets with bounded concurrency (reads: DEFAULT_BATCH_CONCURRENCY)
|
|
228
|
+
const settled = await runWithConcurrency(args.ticket_ids, DEFAULT_BATCH_CONCURRENCY, (id) => withTimeout(() => client.getCached(`/Tickets/${id}`, { includedetails: true }, {
|
|
229
|
+
enabled: true,
|
|
230
|
+
ttl: TTL.TICKET_LIST,
|
|
231
|
+
keyPrefix: `ticket:${id}`,
|
|
232
|
+
}), DEFAULT_BULK_TIMEOUT_MS));
|
|
233
|
+
const results = settled.map((outcome, i) => {
|
|
234
|
+
const id = args.ticket_ids[i];
|
|
235
|
+
if (outcome.status === 'fulfilled') {
|
|
236
|
+
return { success: true, id, data: outcome.value };
|
|
243
237
|
}
|
|
238
|
+
const reason = outcome.reason;
|
|
239
|
+
return {
|
|
240
|
+
success: false,
|
|
241
|
+
id,
|
|
242
|
+
error: reason instanceof Error ? reason.message : 'Unknown error',
|
|
243
|
+
};
|
|
244
244
|
});
|
|
245
|
-
const results = await Promise.all(ticketPromises);
|
|
246
245
|
const successful = results.filter((r) => r.success).map((r) => r.data);
|
|
247
246
|
const failed = results.filter((r) => !r.success).map((r) => ({
|
|
248
247
|
id: r.id,
|
|
@@ -266,4 +265,148 @@ export const getTicketsBatchTool = {
|
|
|
266
265
|
schema: GetTicketsBatchArgsSchema,
|
|
267
266
|
handler: getTicketsBatch,
|
|
268
267
|
};
|
|
268
|
+
// =============================================================================
|
|
269
|
+
// Bulk Update Tickets
|
|
270
|
+
// =============================================================================
|
|
271
|
+
/**
|
|
272
|
+
* Schema for a single update entry in bulk_update_halopsa_tickets.
|
|
273
|
+
* Mirrors the fields accepted by UpdateTicketArgsSchema minus ticket_id
|
|
274
|
+
* (which is required here at the element level) and format_options
|
|
275
|
+
* (which is accepted once at the top level).
|
|
276
|
+
*/
|
|
277
|
+
const BulkTicketUpdateItemSchema = z.object({
|
|
278
|
+
ticket_id: z.number().int()
|
|
279
|
+
.describe('HaloPSA ticket ID to update (required)'),
|
|
280
|
+
summary: z.string().optional()
|
|
281
|
+
.describe('Ticket summary / title'),
|
|
282
|
+
details_html: z.string().optional()
|
|
283
|
+
.describe('Sanitized HTML body'),
|
|
284
|
+
tickettype_id: z.number().int().optional()
|
|
285
|
+
.describe('Ticket type ID'),
|
|
286
|
+
status_id: z.number().int().optional()
|
|
287
|
+
.describe('Status ID'),
|
|
288
|
+
priority_id: z.number().int().optional()
|
|
289
|
+
.describe('Priority ID'),
|
|
290
|
+
category_1: z.string().optional()
|
|
291
|
+
.describe('Primary category'),
|
|
292
|
+
agent_id: z.number().int().optional()
|
|
293
|
+
.describe('Assigned agent ID'),
|
|
294
|
+
team_id: z.number().int().optional()
|
|
295
|
+
.describe('Assigned team ID'),
|
|
296
|
+
site_id: z.number().int().optional()
|
|
297
|
+
.describe('Site/location ID'),
|
|
298
|
+
user_id: z.number().int().optional()
|
|
299
|
+
.describe('End-user contact ID'),
|
|
300
|
+
parent_id: z.number().int().optional()
|
|
301
|
+
.describe('Parent ticket ID'),
|
|
302
|
+
dateoccurred: z.string().optional()
|
|
303
|
+
.describe('ISO 8601 datetime of when the issue occurred'),
|
|
304
|
+
startdate: z.string().optional()
|
|
305
|
+
.describe('ISO 8601 datetime for project ticket start date'),
|
|
306
|
+
source: z.number().int().optional()
|
|
307
|
+
.describe('Source enum (tenant-specific integer)'),
|
|
308
|
+
estimate: z.number().optional()
|
|
309
|
+
.describe('Estimated business hours'),
|
|
310
|
+
estimatedays: z.number().optional()
|
|
311
|
+
.describe('Estimated business days'),
|
|
312
|
+
customfields: z.array(z.object({
|
|
313
|
+
id: z.number().int().optional(),
|
|
314
|
+
name: z.string().optional(),
|
|
315
|
+
value: z.union([z.string(), z.number(), z.boolean(), z.null()]),
|
|
316
|
+
})).optional()
|
|
317
|
+
.describe('Ticket custom fields'),
|
|
318
|
+
milestone_id: z.number().int().optional()
|
|
319
|
+
.describe('Link this ticket to an existing milestone on its parent project ticket. See list_halopsa_ticket_milestones.'),
|
|
320
|
+
});
|
|
321
|
+
export const BulkUpdateTicketsArgsSchema = z.object({
|
|
322
|
+
updates: z.array(BulkTicketUpdateItemSchema).min(1).max(20)
|
|
323
|
+
.describe('Array of ticket updates to apply in parallel (max 20). Each entry must include ticket_id plus at least one field to change.'),
|
|
324
|
+
format_options: FormatOptionsSchema,
|
|
325
|
+
});
|
|
326
|
+
/**
|
|
327
|
+
* Bulk update up to 20 HaloPSA tickets in a single MCP call.
|
|
328
|
+
*
|
|
329
|
+
* Implementation: calls updateTicket() N times via Promise.allSettled for
|
|
330
|
+
* fault-tolerance — a failure on one ticket does not abort the remaining
|
|
331
|
+
* updates. Returns a per-ticket result array with status 'success'|'error'.
|
|
332
|
+
* Each success element has its write response run through stripWriteResponse
|
|
333
|
+
* for token efficiency.
|
|
334
|
+
*/
|
|
335
|
+
export async function bulkUpdateTickets(client, args) {
|
|
336
|
+
if (args.updates.length > 20) {
|
|
337
|
+
return JSON.stringify({
|
|
338
|
+
error: true,
|
|
339
|
+
message: 'Maximum 20 updates per bulk call. Split into smaller batches.',
|
|
340
|
+
}, null, 2);
|
|
341
|
+
}
|
|
342
|
+
const format = args.format_options?.format ?? 'compact';
|
|
343
|
+
// Bulk writes: cap at DEFAULT_BULK_CONCURRENCY (default 2) to avoid
|
|
344
|
+
// Halo serialization contention on parent-ticket locks / workflow recalc.
|
|
345
|
+
const settled = await runWithConcurrency(args.updates, DEFAULT_BULK_CONCURRENCY, (item) => withTimeout(() => updateTicket(client, {
|
|
346
|
+
ticket_id: item.ticket_id,
|
|
347
|
+
summary: item.summary,
|
|
348
|
+
details_html: item.details_html,
|
|
349
|
+
tickettype_id: item.tickettype_id,
|
|
350
|
+
status_id: item.status_id,
|
|
351
|
+
priority_id: item.priority_id,
|
|
352
|
+
category_1: item.category_1,
|
|
353
|
+
agent_id: item.agent_id,
|
|
354
|
+
team_id: item.team_id,
|
|
355
|
+
site_id: item.site_id,
|
|
356
|
+
user_id: item.user_id,
|
|
357
|
+
parent_id: item.parent_id,
|
|
358
|
+
dateoccurred: item.dateoccurred,
|
|
359
|
+
startdate: item.startdate,
|
|
360
|
+
source: item.source,
|
|
361
|
+
estimate: item.estimate,
|
|
362
|
+
estimatedays: item.estimatedays,
|
|
363
|
+
customfields: item.customfields,
|
|
364
|
+
milestone_id: item.milestone_id,
|
|
365
|
+
// Forward format_options so updateTicket applies the same strip level.
|
|
366
|
+
format_options: args.format_options,
|
|
367
|
+
}), DEFAULT_BULK_TIMEOUT_MS));
|
|
368
|
+
const results = settled.map((outcome, idx) => {
|
|
369
|
+
const ticket_id = args.updates[idx].ticket_id;
|
|
370
|
+
if (outcome.status === 'fulfilled') {
|
|
371
|
+
// updateTicket already returns a JSON string (post-stripWriteResponse +
|
|
372
|
+
// formatResponse). Parse it, then re-apply stripWriteResponse at the
|
|
373
|
+
// bulk level so the summarized shape is consistent with per-call behaviour.
|
|
374
|
+
let parsed;
|
|
375
|
+
try {
|
|
376
|
+
parsed = JSON.parse(outcome.value);
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
parsed = outcome.value;
|
|
380
|
+
}
|
|
381
|
+
const stripped = stripWriteResponse(parsed, format, 'ticket');
|
|
382
|
+
return { ticket_id, status: 'success', result: stripped };
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
const err = outcome.reason;
|
|
386
|
+
return {
|
|
387
|
+
ticket_id,
|
|
388
|
+
status: 'error',
|
|
389
|
+
error: err instanceof Error ? err.message : String(err),
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
});
|
|
393
|
+
const summary = {
|
|
394
|
+
requested: args.updates.length,
|
|
395
|
+
succeeded: results.filter((r) => r.status === 'success').length,
|
|
396
|
+
failed: results.filter((r) => r.status === 'error').length,
|
|
397
|
+
results,
|
|
398
|
+
};
|
|
399
|
+
return format === 'detailed'
|
|
400
|
+
? JSON.stringify(summary, null, 2)
|
|
401
|
+
: JSON.stringify(summary);
|
|
402
|
+
}
|
|
403
|
+
export const bulkUpdateTicketsTool = {
|
|
404
|
+
name: 'bulk_update_halopsa_tickets',
|
|
405
|
+
description: 'Update up to 20 HaloPSA tickets in a single call using parallel Promise.allSettled. ' +
|
|
406
|
+
'Each update entry requires ticket_id plus at least one field to change. ' +
|
|
407
|
+
'Returns a per-ticket result array: {ticket_id, status: success|error, result?, error?}. ' +
|
|
408
|
+
'Failures on individual tickets do not abort the batch.',
|
|
409
|
+
schema: BulkUpdateTicketsArgsSchema,
|
|
410
|
+
handler: bulkUpdateTickets,
|
|
411
|
+
};
|
|
269
412
|
//# sourceMappingURL=batch-operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-operations.js","sourceRoot":"","sources":["../../src/tools/batch-operations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"batch-operations.js","sourceRoot":"","sources":["../../src/tools/batch-operations.ts"],"names":[],"mappings":"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"}
|