@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.
- package/README.md +7 -0
- package/dist/api/client.d.ts +39 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +50 -0
- package/dist/api/client.js.map +1 -1
- package/dist/api/errors.d.ts.map +1 -1
- package/dist/api/errors.js +1 -2
- package/dist/api/errors.js.map +1 -1
- package/dist/cache/memory-cache.d.ts.map +1 -1
- package/dist/cache/memory-cache.js +5 -0
- package/dist/cache/memory-cache.js.map +1 -1
- package/dist/cache/prewarm.d.ts +1 -0
- package/dist/cache/prewarm.d.ts.map +1 -1
- package/dist/cache/prewarm.js +8 -0
- package/dist/cache/prewarm.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/tools/batch-operations.js +10 -10
- package/dist/tools/batch-operations.js.map +1 -1
- package/dist/tools/registrations.d.ts +5 -1
- package/dist/tools/registrations.d.ts.map +1 -1
- package/dist/tools/registrations.js +7 -3
- package/dist/tools/registrations.js.map +1 -1
- package/dist/tools/ticket-actions.d.ts.map +1 -1
- package/dist/tools/ticket-actions.js +148 -45
- package/dist/tools/ticket-actions.js.map +1 -1
- package/dist/tools/ticket-reference-data.d.ts +28 -0
- package/dist/tools/ticket-reference-data.d.ts.map +1 -1
- package/dist/tools/ticket-reference-data.js +212 -19
- package/dist/tools/ticket-reference-data.js.map +1 -1
- package/dist/tools/tickets.d.ts +20 -0
- package/dist/tools/tickets.d.ts.map +1 -1
- package/dist/tools/tickets.js +275 -38
- package/dist/tools/tickets.js.map +1 -1
- package/dist/types/tickets.d.ts +64 -5
- package/dist/types/tickets.d.ts.map +1 -1
- package/dist/utils/formatter.d.ts +18 -0
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +108 -22
- package/dist/utils/formatter.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,13 +5,17 @@
|
|
|
5
5
|
* Tool inventory (71 total):
|
|
6
6
|
* Assets (11), Users (7), Sites (4), Clients (3),
|
|
7
7
|
* Reference data (4), Ticket reference data (6 — incl. outcomes),
|
|
8
|
-
* Tickets (8 — incl. validateCreateTicket
|
|
8
|
+
* Tickets (8 — incl. validateCreateTicket; getTicketsBatch counted under Batch),
|
|
9
|
+
* Ticket actions (4 — incl. SLA hold/release),
|
|
9
10
|
* Ticket custom fields (2),
|
|
10
11
|
* Batch operations (5 — assets, users, sites, tickets, bulk-update),
|
|
11
12
|
* Ticket links (1 — read-side only),
|
|
12
13
|
* Workflows (6 — list/get/list-steps/create/update/delete),
|
|
13
14
|
* Ticket milestones (5 — list/set/add/remove + get-current),
|
|
14
15
|
* Budgets (5 — list/create/delete BudgetType, get/set per-ticket)
|
|
16
|
+
*
|
|
17
|
+
* COUNT BREAKDOWN: 11+7+4+3+4+6+8+4+2+5+1+6+5+5 = 71
|
|
18
|
+
* The `allTools` array is the authoritative source; verify with allTools.length.
|
|
15
19
|
*/
|
|
16
20
|
// Asset tools (11)
|
|
17
21
|
import { listAssetsTool, getAssetTool, searchAssetsBySerialTool, searchAssetsByHostnameTool, createAssetTool, updateAssetTool, deleteAssetTool, listAssetCustomFieldsTool, getAssetFieldSchemaTool, findAssetMatchTool, scanAssetDuplicatesTool, } from './assets.js';
|
|
@@ -25,7 +29,7 @@ import { listClientsTool, getClientTool, searchClientsTool, } from './clients.js
|
|
|
25
29
|
import { listAssetTypesTool, listAssetStatusesTool, listContactTypesTool, listAgentsTool, } from './reference-data.js';
|
|
26
30
|
// Ticket reference data tools (6)
|
|
27
31
|
import { listTicketTypesTool, getTicketTypeTool, listTicketStatusesTool, listTicketPrioritiesTool, listTicketCategoriesTool, listTicketOutcomesTool, } from './ticket-reference-data.js';
|
|
28
|
-
// Ticket tools (
|
|
32
|
+
// Ticket tools (8 — getTicketsBatchTool lives in batch-operations.ts and is counted there)
|
|
29
33
|
import { listTicketsTool, getTicketTool, searchTicketsTool, createTicketTool, updateTicketTool, closeTicketTool, deleteTicketTool, validateCreateTicketTool, } from './tickets.js';
|
|
30
34
|
// Ticket action tools (4)
|
|
31
35
|
import { addTicketActionTool, listTicketActionsTool, holdTicketSlaTool, releaseTicketSlaTool, } from './ticket-actions.js';
|
|
@@ -83,7 +87,7 @@ const allTools = [
|
|
|
83
87
|
listTicketPrioritiesTool,
|
|
84
88
|
listTicketCategoriesTool,
|
|
85
89
|
listTicketOutcomesTool,
|
|
86
|
-
// Tickets (
|
|
90
|
+
// Tickets (8 — getTicketsBatchTool counted under Batch operations below)
|
|
87
91
|
listTicketsTool,
|
|
88
92
|
getTicketTool,
|
|
89
93
|
searchTicketsTool,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrations.js","sourceRoot":"","sources":["../../src/tools/registrations.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registrations.js","sourceRoot":"","sources":["../../src/tools/registrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-actions.d.ts","sourceRoot":"","sources":["../../src/tools/ticket-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ticket-actions.d.ts","sourceRoot":"","sources":["../../src/tools/ticket-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAgBvD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;iBA4BpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;iBAQtC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBAMlC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;iBAIrC,CAAC;AA0MH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,GAC9C,OAAO,CAAC,MAAM,CAAC,CA0FjB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAaD;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,GAC/C,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAMD,eAAO,MAAM,mBAAmB,EAAE,iBAKjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,iBAKnC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAK/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,iBAKlC,CAAC"}
|
|
@@ -12,9 +12,10 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { z } from 'zod';
|
|
14
14
|
import { HaloPSAError } from '../api/errors.js';
|
|
15
|
-
import { formatResponse, stripWriteResponse } from '../utils/formatter.js';
|
|
15
|
+
import { formatResponse, stripWriteResponse, withCompactDefaults } from '../utils/formatter.js';
|
|
16
16
|
import { TTL } from '../cache/memory-cache.js';
|
|
17
17
|
import { FormatOptionsSchema } from '../schemas/common.js';
|
|
18
|
+
import { getOutcomesForTicketType } from './ticket-reference-data.js';
|
|
18
19
|
// =============================================================================
|
|
19
20
|
// Schemas
|
|
20
21
|
// =============================================================================
|
|
@@ -30,14 +31,17 @@ export const AddTicketActionArgsSchema = z.object({
|
|
|
30
31
|
hiddenfromuser: z.boolean().optional()
|
|
31
32
|
.describe('If true, hides the action from the customer portal'),
|
|
32
33
|
// Time-entry fields (Bug 1 — billing)
|
|
33
|
-
timetaken: z.number().optional()
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
timetaken: z.number().min(0).optional()
|
|
35
|
+
// Hours must be non-negative — wire-key fix in v1.6.0 activated live billing path.
|
|
36
|
+
.describe('Hours worked on this action (decimal, >= 0). Drives ticket.timetaken rollup and billing.'),
|
|
37
|
+
chargehours: z.number().min(0).optional()
|
|
38
|
+
// Hours must be non-negative — wire-key fix in v1.6.0 activated live billing path.
|
|
39
|
+
.describe('Chargeable hours (>= 0; may differ from timetaken if some time is non-chargeable).'),
|
|
37
40
|
nonchargeable: z.boolean().optional()
|
|
38
41
|
.describe('True to mark this action non-billable. Default false.'),
|
|
39
|
-
chargerate: z.number().optional()
|
|
40
|
-
|
|
42
|
+
chargerate: z.number().int().min(0).optional()
|
|
43
|
+
// non-negative integer FK per v1.6.0 billing-guard principle
|
|
44
|
+
.describe('Override hourly rate (integer FK; int32 per halopsa-swagger.json Actions.chargerate). Defaults to the ticket\'s contract rate.'),
|
|
41
45
|
start_datetime: z.string().optional()
|
|
42
46
|
.describe('ISO 8601 when work started (e.g., 2026-05-12T09:00:00Z). If both start/end supplied, timetaken can be derived.'),
|
|
43
47
|
end_datetime: z.string().optional()
|
|
@@ -69,49 +73,68 @@ export const ReleaseTicketSlaArgsSchema = z.object({
|
|
|
69
73
|
// Helpers
|
|
70
74
|
// =============================================================================
|
|
71
75
|
const ACTION_PREVIEW_LEN = 200;
|
|
76
|
+
/**
|
|
77
|
+
* Default compact fields for add_halopsa_ticket_action (Bug 3 wiring).
|
|
78
|
+
* Matches the shape that compactAction() produces plus standard billing fields.
|
|
79
|
+
*
|
|
80
|
+
* Note: Halo's Actions schema does not declare a "date work performed" field
|
|
81
|
+
* separately from datetime (action submission). The field `actiondate` is NOT
|
|
82
|
+
* declared on components.schemas.Actions in halopsa-swagger.json — it appears
|
|
83
|
+
* only on components.schemas.Outgoingemail. Future v1.7+ work item: live-tenant
|
|
84
|
+
* probe to confirm whether datetime suffices for work-performed semantics.
|
|
85
|
+
*/
|
|
86
|
+
const ACTION_COMPACT_DEFAULTS = [
|
|
87
|
+
'id', 'ticket_id', 'outcome_id', 'outcome', 'timetaken', 'actionchargehours', 'chargerate',
|
|
88
|
+
'who', 'datetime', 'note_preview',
|
|
89
|
+
];
|
|
72
90
|
/**
|
|
73
91
|
* Regex to detect Halo 400 messages that indicate a missing or invalid
|
|
74
92
|
* outcome_id — covers both "An Outcome must be entered for this Action"
|
|
75
93
|
* and "You do not have access to this Action at the moment."
|
|
76
94
|
*/
|
|
77
95
|
const OUTCOME_ERROR_RE = /Outcome must be entered|access to this Action/i;
|
|
78
|
-
/**
|
|
79
|
-
* Scan an arbitrary object for any key whose name contains "outcome"
|
|
80
|
-
* (case-insensitive) and whose value is an array. Returns that array,
|
|
81
|
-
* or an empty array if nothing is found.
|
|
82
|
-
*/
|
|
83
|
-
function extractOutcomeHint(obj) {
|
|
84
|
-
for (const key of Object.keys(obj)) {
|
|
85
|
-
if (/outcome/i.test(key)) {
|
|
86
|
-
const val = obj[key];
|
|
87
|
-
if (Array.isArray(val)) {
|
|
88
|
-
return val;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return [];
|
|
93
|
-
}
|
|
94
96
|
/**
|
|
95
97
|
* When POST /Actions returns a 400 matching the outcome-required pattern,
|
|
96
98
|
* fetch the parent ticket and its tickettype config, then return a structured
|
|
97
99
|
* "refusal" object (not a thrown error) so the caller sees discovery info.
|
|
100
|
+
*
|
|
101
|
+
* Bug 4 enrichments:
|
|
102
|
+
* - tickettype_name resolved from cached /TicketType list (not from ticket.tickettype_name
|
|
103
|
+
* which is often absent); falls back to ticket.tickettype_name only if cache misses.
|
|
104
|
+
* - valid_outcomes_hint populated via getOutcomesForTicketType() helper (sorted by
|
|
105
|
+
* sequence then id, sliced to first 10), not via fragile extractOutcomeHint regex.
|
|
106
|
+
* - If any secondary lookup fails, discovery_warning documents what failed; the refusal
|
|
107
|
+
* is always returned (never re-thrown).
|
|
98
108
|
*/
|
|
109
|
+
/**
|
|
110
|
+
* Clamp a halo error message to 500 characters for inclusion in refusal objects.
|
|
111
|
+
* 500 chars matches the bodyExcerpt budget in errors.ts and gives enough context
|
|
112
|
+
* to diagnose most API errors without bloating token output.
|
|
113
|
+
* If truncated, appends the ellipsis character and sets halo_error_truncated: true
|
|
114
|
+
* on the result object. Returns the (possibly clamped) message string.
|
|
115
|
+
*/
|
|
116
|
+
function clampHaloError(msg, result) {
|
|
117
|
+
const MAX = 500;
|
|
118
|
+
if (msg.length <= MAX)
|
|
119
|
+
return msg;
|
|
120
|
+
result['halo_error_truncated'] = true;
|
|
121
|
+
return msg.slice(0, MAX) + '…';
|
|
122
|
+
}
|
|
99
123
|
async function buildOutcomeDiscoveryRefusal(client, ticketId, haloError) {
|
|
100
124
|
const discoveryWarnings = [];
|
|
101
125
|
// --- Step 1: fetch the parent ticket ---
|
|
102
126
|
let tickettypeId;
|
|
103
|
-
let
|
|
127
|
+
let tickettypeNameFallback;
|
|
104
128
|
try {
|
|
105
129
|
const ticket = await client.get(`/Tickets/${ticketId}`, { includedetails: true });
|
|
106
130
|
tickettypeId = ticket.tickettype_id;
|
|
107
|
-
|
|
131
|
+
tickettypeNameFallback = ticket.tickettype_name;
|
|
108
132
|
}
|
|
109
133
|
catch (innerErr) {
|
|
110
134
|
const msg = innerErr instanceof Error ? innerErr.message : String(innerErr);
|
|
111
135
|
discoveryWarnings.push('ticket lookup failed: ' + msg);
|
|
112
|
-
|
|
136
|
+
const earlyResult = {
|
|
113
137
|
action_created: false,
|
|
114
|
-
halo_error: haloError,
|
|
115
138
|
diagnosis: 'outcome_id is required for this tickettype and was either missing or invalid',
|
|
116
139
|
tickettype_id: null,
|
|
117
140
|
tickettype_name: null,
|
|
@@ -120,29 +143,62 @@ async function buildOutcomeDiscoveryRefusal(client, ticketId, haloError) {
|
|
|
120
143
|
remediation: 'Either retry with a valid outcome_id (check Halo admin: Configuration > Tickets > Outcomes), ' +
|
|
121
144
|
'or fall back to update_halopsa_ticket to set details_html / status_id without going through the Actions surface.',
|
|
122
145
|
};
|
|
146
|
+
earlyResult['halo_error'] = clampHaloError(haloError, earlyResult);
|
|
147
|
+
return earlyResult;
|
|
148
|
+
}
|
|
149
|
+
// --- Step 2: resolve tickettype_name from cached /TicketType list (Bug 4) ---
|
|
150
|
+
// ticket.tickettype_name is often absent from the detail response; the global
|
|
151
|
+
// tickettypes list (cached 1h) is more reliable.
|
|
152
|
+
let tickettypeName = null;
|
|
153
|
+
if (tickettypeId !== undefined) {
|
|
154
|
+
try {
|
|
155
|
+
const ttList = await client.getCached('/TicketType', { count: 500 }, {
|
|
156
|
+
enabled: true,
|
|
157
|
+
ttl: TTL.TICKET_TYPES,
|
|
158
|
+
keyPrefix: 'tickettypes:all',
|
|
159
|
+
});
|
|
160
|
+
const ttItems = Array.isArray(ttList)
|
|
161
|
+
? ttList
|
|
162
|
+
: (ttList.tickettypes ?? []);
|
|
163
|
+
const found = ttItems.find((t) => t.id === tickettypeId);
|
|
164
|
+
tickettypeName = found?.name ?? tickettypeNameFallback ?? null;
|
|
165
|
+
}
|
|
166
|
+
catch (innerErr) {
|
|
167
|
+
const msg = innerErr instanceof Error ? innerErr.message : String(innerErr);
|
|
168
|
+
discoveryWarnings.push('tickettypes list lookup failed: ' + msg);
|
|
169
|
+
// Fall back to the field on the ticket (often absent)
|
|
170
|
+
tickettypeName = tickettypeNameFallback ?? null;
|
|
171
|
+
}
|
|
123
172
|
}
|
|
124
|
-
// --- Step
|
|
173
|
+
// --- Step 3: fetch valid outcomes via shared helper (Bug 4) ---
|
|
174
|
+
// Sort by sequence (ascending), then by id (ascending) as tiebreaker.
|
|
175
|
+
// Slice to first 10 for response compactness.
|
|
125
176
|
let validOutcomesHint = [];
|
|
126
177
|
if (tickettypeId !== undefined) {
|
|
127
178
|
try {
|
|
128
|
-
const
|
|
129
|
-
|
|
179
|
+
const outcomes = await getOutcomesForTicketType(client, tickettypeId);
|
|
180
|
+
const sorted = outcomes.slice().sort((a, b) => {
|
|
181
|
+
const seqA = a.sequence ?? 999999;
|
|
182
|
+
const seqB = b.sequence ?? 999999;
|
|
183
|
+
return seqA !== seqB ? seqA - seqB : a.id - b.id;
|
|
184
|
+
});
|
|
185
|
+
validOutcomesHint = sorted.slice(0, 10).map((o) => ({ id: o.id, name: o.name }));
|
|
130
186
|
}
|
|
131
187
|
catch (innerErr) {
|
|
132
188
|
const msg = innerErr instanceof Error ? innerErr.message : String(innerErr);
|
|
133
|
-
discoveryWarnings.push('
|
|
189
|
+
discoveryWarnings.push('outcomes lookup failed: ' + msg);
|
|
134
190
|
}
|
|
135
191
|
}
|
|
136
192
|
const result = {
|
|
137
193
|
action_created: false,
|
|
138
|
-
halo_error: haloError,
|
|
139
194
|
diagnosis: 'outcome_id is required for this tickettype and was either missing or invalid',
|
|
140
195
|
tickettype_id: tickettypeId ?? null,
|
|
141
|
-
tickettype_name: tickettypeName
|
|
196
|
+
tickettype_name: tickettypeName,
|
|
142
197
|
valid_outcomes_hint: validOutcomesHint,
|
|
143
198
|
remediation: 'Either retry with a valid outcome_id from the list above, ' +
|
|
144
199
|
'or fall back to update_halopsa_ticket to set details_html / status_id without going through the Actions surface.',
|
|
145
200
|
};
|
|
201
|
+
result['halo_error'] = clampHaloError(haloError, result);
|
|
146
202
|
if (discoveryWarnings.length > 0) {
|
|
147
203
|
result['discovery_warning'] = discoveryWarnings.join('; ');
|
|
148
204
|
}
|
|
@@ -160,6 +216,13 @@ function compactAction(action) {
|
|
|
160
216
|
who: action.who,
|
|
161
217
|
datetime: action.datetime,
|
|
162
218
|
outcome: action.outcome,
|
|
219
|
+
outcome_id: action.outcome_id,
|
|
220
|
+
// Q5 billing fields — must be carried through the compact projection so the
|
|
221
|
+
// caller can verify what hours/rate landed on the action (POST /Actions is
|
|
222
|
+
// at-most-once; the compact response is the only audit signal on success).
|
|
223
|
+
timetaken: action.timetaken,
|
|
224
|
+
actionchargehours: action.actionchargehours,
|
|
225
|
+
chargerate: action.chargerate,
|
|
163
226
|
note_preview: note.length > ACTION_PREVIEW_LEN
|
|
164
227
|
? note.slice(0, ACTION_PREVIEW_LEN) + '…'
|
|
165
228
|
: note,
|
|
@@ -188,15 +251,36 @@ export async function addTicketAction(client, args) {
|
|
|
188
251
|
payload.email_reply = args.email_reply;
|
|
189
252
|
if (args.hiddenfromuser !== undefined)
|
|
190
253
|
payload.hiddenfromuser = args.hiddenfromuser;
|
|
191
|
-
// Time-entry fields
|
|
192
|
-
//
|
|
193
|
-
//
|
|
194
|
-
//
|
|
195
|
-
//
|
|
254
|
+
// Time-entry fields. Caller-facing input names are mapped to Halo's documented
|
|
255
|
+
// Actions property names below. Verified 2026-05-12 against
|
|
256
|
+
// components.schemas.Actions in halopsa-swagger.json (508 properties):
|
|
257
|
+
// timetaken → timetaken (in Actions schema, swagger-confirmed)
|
|
258
|
+
// chargehours → actionchargehours (Actions uses `actionchargehours`,
|
|
259
|
+
// NOT `chargehours`; `chargehours` is
|
|
260
|
+
// on Faults/Faults_List (ticket-level
|
|
261
|
+
// rollup) — NOT on Actions schema)
|
|
262
|
+
// chargerate → chargerate (in Actions schema, int32 FK)
|
|
263
|
+
// nonchargeable → nonchargeable (NOT in swagger; zero occurrences in
|
|
264
|
+
// halopsa-swagger.json; accepted by
|
|
265
|
+
// empirical observation on live tenants.
|
|
266
|
+
// Documented Actions field is
|
|
267
|
+
// actionnonchargehours: number (not
|
|
268
|
+
// boolean). v1.8+ TODO: live-tenant
|
|
269
|
+
// probe before renaming.)
|
|
270
|
+
// start_datetime → start_datetime (NOT in swagger; observation only)
|
|
271
|
+
// end_datetime → end_datetime (NOT in swagger; observation only)
|
|
196
272
|
if (args.timetaken !== undefined)
|
|
197
273
|
payload.timetaken = args.timetaken;
|
|
274
|
+
// Map the caller-facing `chargehours` input to Halo's documented Actions
|
|
275
|
+
// property `actionchargehours`. `chargehours` is NOT declared on Actions —
|
|
276
|
+
// it is a ticket-level rollup field on components.schemas.Faults and
|
|
277
|
+
// components.schemas.Faults_List only. Sending `chargehours` on POST /Actions
|
|
278
|
+
// would be silently dropped by Halo's deserializer (unknown DataMember).
|
|
198
279
|
if (args.chargehours !== undefined)
|
|
199
|
-
payload.
|
|
280
|
+
payload.actionchargehours = args.chargehours;
|
|
281
|
+
// nonchargeable: undocumented on Actions schema in halopsa-swagger.json. Tenant-accepted
|
|
282
|
+
// alias observed empirically. Documented field is actionnonchargehours: number (not boolean).
|
|
283
|
+
// v1.8+ TODO: live-tenant probe before renaming.
|
|
200
284
|
if (args.nonchargeable !== undefined)
|
|
201
285
|
payload.nonchargeable = args.nonchargeable;
|
|
202
286
|
if (args.chargerate !== undefined)
|
|
@@ -215,9 +299,10 @@ export async function addTicketAction(client, args) {
|
|
|
215
299
|
// When Halo returns 400 for a missing or invalid outcome_id, surface a
|
|
216
300
|
// structured refusal with discovery info instead of re-throwing the raw
|
|
217
301
|
// error. This lets the caller retry with a valid outcome_id.
|
|
218
|
-
const
|
|
219
|
-
if (OUTCOME_ERROR_RE.test(
|
|
220
|
-
const refusal = await buildOutcomeDiscoveryRefusal(client, args.ticket_id,
|
|
302
|
+
const rawHaloMessage = error instanceof HaloPSAError ? error.message : String(error);
|
|
303
|
+
if (OUTCOME_ERROR_RE.test(rawHaloMessage)) {
|
|
304
|
+
const refusal = await buildOutcomeDiscoveryRefusal(client, args.ticket_id, rawHaloMessage);
|
|
305
|
+
// v1.7+ TODO: route through formatResponse() or apply scrubCredentials() before stringify. Low current risk: refusal fields are id+name+error_msg+remediation; CREDENTIAL_KEY_RE matches JSON keys, and Halo 400 messages on outcome failures empirically don't contain credential strings. Documented in 2026-05-12_review-protocol-validation.md.
|
|
221
306
|
return JSON.stringify(refusal);
|
|
222
307
|
}
|
|
223
308
|
throw error;
|
|
@@ -226,7 +311,17 @@ export async function addTicketAction(client, args) {
|
|
|
226
311
|
client.invalidateCache(`ticket-actions:${args.ticket_id}*`);
|
|
227
312
|
client.invalidateCache(`ticket:${args.ticket_id}*`);
|
|
228
313
|
const format = args.format_options?.format ?? 'compact';
|
|
229
|
-
|
|
314
|
+
// Fix 3: apply compactAction() BEFORE formatResponse on the compact path to
|
|
315
|
+
// ensure note_preview (synthesized, truncated) is present and the raw `note`
|
|
316
|
+
// body does not leak through Branch 2's extras-merge loop.
|
|
317
|
+
// For non-compact formats (detailed, raw), pass `created` directly so the
|
|
318
|
+
// caller sees all fields from the POST /Actions response.
|
|
319
|
+
const compacted = format === 'compact' ? compactAction(created) : created;
|
|
320
|
+
// Bug 3: wire per-tool compact defaults so action responses include billing
|
|
321
|
+
// fields (timetaken, actionchargehours) rather than being stripped by legacy compactItem().
|
|
322
|
+
// Pass full format_options so caller-supplied fields[] flow through to processItem.
|
|
323
|
+
const formatOpts = withCompactDefaults(args.format_options ?? { format: 'compact' }, ACTION_COMPACT_DEFAULTS);
|
|
324
|
+
return formatResponse(stripWriteResponse(compacted, format, 'action'), formatOpts);
|
|
230
325
|
}
|
|
231
326
|
export async function listTicketActions(client, args) {
|
|
232
327
|
const params = { ticket_id: args.ticket_id };
|
|
@@ -276,6 +371,10 @@ export async function holdTicketSla(client, args) {
|
|
|
276
371
|
client.invalidateCache(`ticket:${args.ticket_id}*`);
|
|
277
372
|
client.invalidateCache('tickets:*');
|
|
278
373
|
const note = args.reason ?? 'SLA hold — waiting on customer';
|
|
374
|
+
// v1.7+ TODO: route through formatResponse() or apply scrubCredentials() before stringify.
|
|
375
|
+
// Low current risk: SLA hold/release response object fields are held+ticket_id+reason+note (audit prose);
|
|
376
|
+
// CREDENTIAL_KEY_RE matches JSON keys, and Halo 200 responses on onhold updates empirically
|
|
377
|
+
// don't contain credential strings. Documented in 2026-05-12_review-protocol-validation.md.
|
|
279
378
|
return JSON.stringify({
|
|
280
379
|
held: true,
|
|
281
380
|
ticket_id: args.ticket_id,
|
|
@@ -289,6 +388,10 @@ export async function releaseTicketSla(client, args) {
|
|
|
289
388
|
await client.post('/Tickets', [payload]);
|
|
290
389
|
client.invalidateCache(`ticket:${args.ticket_id}*`);
|
|
291
390
|
client.invalidateCache('tickets:*');
|
|
391
|
+
// v1.7+ TODO: route through formatResponse() or apply scrubCredentials() before stringify.
|
|
392
|
+
// Low current risk: SLA hold/release response object fields are released+ticket_id+note (audit prose);
|
|
393
|
+
// CREDENTIAL_KEY_RE matches JSON keys, and Halo 200 responses on onhold updates empirically
|
|
394
|
+
// don't contain credential strings. Documented in 2026-05-12_review-protocol-validation.md.
|
|
292
395
|
return JSON.stringify({
|
|
293
396
|
released: true,
|
|
294
397
|
ticket_id: args.ticket_id,
|
|
@@ -300,7 +403,7 @@ export async function releaseTicketSla(client, args) {
|
|
|
300
403
|
// =============================================================================
|
|
301
404
|
export const addTicketActionTool = {
|
|
302
405
|
name: 'add_halopsa_ticket_action',
|
|
303
|
-
description: 'Append an action (note, email reply, status change journal entry, time entry) to a HaloPSA ticket. POST /Actions with array body wrapper. Supports time-entry billing fields: timetaken, chargehours, nonchargeable, chargerate, start_datetime, end_datetime. Invalidates ticket and action caches.',
|
|
406
|
+
description: 'Append an action (note, email reply, status change journal entry, time entry) to a HaloPSA ticket. POST /Actions with array body wrapper. Supports time-entry billing fields: timetaken, chargehours, nonchargeable, chargerate, start_datetime, end_datetime. Invalidates ticket and action caches. Note: outcome_id is not pre-validated against the tickettype\'s allowed_actions allowlist; enforcement is server-side. Use list_halopsa_ticket_outcomes with the same tickettype_id to discover permitted outcomes before calling.',
|
|
304
407
|
schema: AddTicketActionArgsSchema,
|
|
305
408
|
handler: addTicketAction,
|
|
306
409
|
};
|
|
@@ -318,7 +421,7 @@ export const holdTicketSlaTool = {
|
|
|
318
421
|
};
|
|
319
422
|
export const releaseTicketSlaTool = {
|
|
320
423
|
name: 'release_halopsa_ticket_sla',
|
|
321
|
-
description: '
|
|
424
|
+
description: 'Releases the SLA hold on a HaloPSA ticket. Performs read-before-write merge to set onhold=false on the ticket. Direct write — no outcome lookup, no env var. Invalidates ticket and ticket_actions caches.',
|
|
322
425
|
schema: ReleaseTicketSlaArgsSchema,
|
|
323
426
|
handler: releaseTicketSla,
|
|
324
427
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-actions.js","sourceRoot":"","sources":["../../src/tools/ticket-actions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ticket-actions.js","sourceRoot":"","sources":["../../src/tools/ticket-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQhD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAsB,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;SACxB,QAAQ,CAAC,2CAA2C,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpB,QAAQ,CAAC,gCAAgC,CAAC;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;SACpC,QAAQ,CAAC,oRAAoR,CAAC;IACjS,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAChC,QAAQ,CAAC,mEAAmE,CAAC;IAChF,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SACnC,QAAQ,CAAC,oDAAoD,CAAC;IACjE,sCAAsC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACrC,mFAAmF;SAClF,QAAQ,CAAC,0FAA0F,CAAC;IACvG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACvC,mFAAmF;SAClF,QAAQ,CAAC,oFAAoF,CAAC;IACjG,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAClC,QAAQ,CAAC,uDAAuD,CAAC;IACpE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC5C,6DAA6D;SAC5D,QAAQ,CAAC,gIAAgI,CAAC;IAC7I,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAClC,QAAQ,CAAC,gHAAgH,CAAC;IAC7H,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAChC,QAAQ,CAAC,2BAA2B,CAAC;IACxC,cAAc,EAAE,mBAAmB;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;SACxB,QAAQ,CAAC,mCAAmC,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;SAC/C,QAAQ,CAAC,4BAA4B,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SACxC,QAAQ,CAAC,yBAAyB,CAAC;IACtC,cAAc,EAAE,mBAAmB;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;SACxB,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC1B,QAAQ,CAAC,kFAAkF,CAAC;IAC/F,cAAc,EAAE,mBAAmB;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;SACxB,QAAQ,CAAC,sDAAsD,CAAC;IACnE,cAAc,EAAE,mBAAmB;CACpC,CAAC,CAAC;AAEH,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;;;;;;;;GASG;AACH,MAAM,uBAAuB,GAAa;IACxC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY;IAC1F,KAAK,EAAE,UAAU,EAAE,cAAc;CAClC,CAAC;AAEF;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,gDAAgD,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,GAAW,EACX,MAA+B;IAE/B,MAAM,GAAG,GAAG,GAAG,CAAC;IAChB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAClC,MAAM,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC;IACtC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,MAAwB,EACxB,QAAgB,EAChB,SAAiB;IAEjB,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,0CAA0C;IAC1C,IAAI,YAAgC,CAAC;IACrC,IAAI,sBAA0C,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC7B,YAAY,QAAQ,EAAE,EACtB,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,CAAC;QACF,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;QACpC,sBAAsB,GAAG,MAAM,CAAC,eAAe,CAAC;IAClD,CAAC;IAAC,OAAO,QAAiB,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5E,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,GAAG,GAAG,CAAC,CAAC;QACvD,MAAM,WAAW,GAA4B;YAC3C,cAAc,EAAE,KAAK;YACrB,SAAS,EAAE,8EAA8E;YACzF,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,IAAI;YACrB,mBAAmB,EAAE,EAAE;YACvB,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,WAAW,EACT,+FAA+F;gBAC/F,kHAAkH;SACrH,CAAC;QACF,WAAW,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,iDAAiD;IACjD,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CACnC,aAAa,EACb,EAAE,KAAK,EAAE,GAAG,EAAE,EACd;gBACE,OAAO,EAAE,IAAI;gBACb,GAAG,EAAE,GAAG,CAAC,YAAY;gBACrB,SAAS,EAAE,iBAAiB;aAC7B,CACF,CAAC;YACF,MAAM,OAAO,GAAwB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBACxD,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,CAAE,MAAgD,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;YACzD,cAAc,GAAG,KAAK,EAAE,IAAI,IAAI,sBAAsB,IAAI,IAAI,CAAC;QACjE,CAAC;QAAC,OAAO,QAAiB,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5E,iBAAiB,CAAC,IAAI,CAAC,kCAAkC,GAAG,GAAG,CAAC,CAAC;YACjE,sDAAsD;YACtD,cAAc,GAAG,sBAAsB,IAAI,IAAI,CAAC;QAClD,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,sEAAsE;IACtE,8CAA8C;IAC9C,IAAI,iBAAiB,GAAwC,EAAE,CAAC;IAChE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC;gBAClC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC;gBAClC,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACnD,CAAC,CAAC,CAAC;YACH,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnF,CAAC;QAAC,OAAO,QAAiB,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5E,iBAAiB,CAAC,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAA4B;QACtC,cAAc,EAAE,KAAK;QACrB,SAAS,EAAE,8EAA8E;QACzF,aAAa,EAAE,YAAY,IAAI,IAAI;QACnC,eAAe,EAAE,cAAc;QAC/B,mBAAmB,EAAE,iBAAiB;QACtC,WAAW,EACT,4DAA4D;YAC5D,kHAAkH;KACrH,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEzD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,mBAAmB,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,MAA2B;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IACnD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,4EAA4E;QAC5E,2EAA2E;QAC3E,2EAA2E;QAC3E,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,IAAI,CAAC,MAAM,GAAG,kBAAkB;YAC5C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,GAAG;YACzC,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAiE;IAEjE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;QAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAwB,EACxB,IAA+C;IAE/C,MAAM,OAAO,GAA4B;QACvC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IACF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACxE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC3E,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IACpF,+EAA+E;IAC/E,4DAA4D;IAC5D,uEAAuE;IACvE,8EAA8E;IAC9E,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,sEAAsE;IACtE,6EAA6E;IAC7E,0EAA0E;IAC1E,+EAA+E;IAC/E,oEAAoE;IACpE,0EAA0E;IAC1E,0EAA0E;IAC1E,gEAAgE;IAChE,2EAA2E;IAC3E,2EAA2E;IAC3E,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACrE,yEAAyE;IACzE,2EAA2E;IAC3E,qEAAqE;IACrE,8EAA8E;IAC9E,yEAAyE;IACzE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC;IACjF,yFAAyF;IACzF,8FAA8F;IAC9F,iDAAiD;IACjD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IACjF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACxE,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IACpF,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAE9E,uEAAuE;IACvE,2DAA2D;IAC3D,IAAI,GAAgD,CAAC;IACrD,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CACrB,UAAU,EACV,CAAC,OAAO,CAAC,CACV,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,uEAAuE;QACvE,wEAAwE;QACxE,8DAA8D;QAC9D,MAAM,cAAc,GAClB,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEhE,IAAI,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAChD,MAAM,EACN,IAAI,CAAC,SAAS,EACd,cAAc,CACf,CAAC;YACF,oVAAoV;YACpV,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAwB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAEvE,MAAM,CAAC,eAAe,CAAC,kBAAkB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IAC5D,MAAM,CAAC,eAAe,CAAC,UAAU,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,IAAI,SAAS,CAAC;IACxD,4EAA4E;IAC5E,6EAA6E;IAC7E,2DAA2D;IAC3D,0EAA0E;IAC1E,0DAA0D;IAC1D,MAAM,SAAS,GACb,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,4EAA4E;IAC5E,4FAA4F;IAC5F,oFAAoF;IACpF,MAAM,UAAU,GAAG,mBAAmB,CACpC,IAAI,CAAC,cAAc,IAAI,EAAE,MAAM,EAAE,SAAkB,EAAE,EACrD,uBAAuB,CACxB,CAAC;IACF,OAAO,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAwB,EACxB,IAAiD;IAEjD,MAAM,MAAM,GAA4B,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACtE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAE9D,MAAM,UAAU,GAAkB,IAAI,CAAC,cAAc,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAE/E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CACrC,UAAU,EACV,MAAM,EACN;QACE,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,GAAG,CAAC,kBAAkB;QAC3B,SAAS,EAAE,kBAAkB,IAAI,CAAC,SAAS,EAAE;KAC9C,CACF,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE7D,sEAAsE;IACtE,2DAA2D;IAC3D,MAAM,KAAK,GAAc,UAAU,CAAC,MAAM,KAAK,SAAS;QACtD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC5B,CAAC,CAAC,OAAO,CAAC;IAEZ,OAAO,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,gFAAgF;AAChF,kFAAkF;AAClF,6EAA6E;AAC7E,0EAA0E;AAC1E,0BAA0B;AAC1B,gFAAgF;AAEhF,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAwB,EACxB,IAA6C;IAE7C,0FAA0F;IAC1F,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAC/B,YAAY,IAAI,CAAC,SAAS,EAAE,EAC5B,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,CAAC;IACF,MAAM,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAClE,MAAM,MAAM,CAAC,IAAI,CAAU,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAElD,MAAM,CAAC,eAAe,CAAC,UAAU,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACpD,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,gCAAgC,CAAC;IAC7D,2FAA2F;IAC3F,0GAA0G;IAC1G,4FAA4F;IAC5F,4FAA4F;IAC5F,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,qKAAqK;KAC5K,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAwB,EACxB,IAAgD;IAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAC/B,YAAY,IAAI,CAAC,SAAS,EAAE,EAC5B,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,CAAC;IACF,MAAM,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACnE,MAAM,MAAM,CAAC,IAAI,CAAU,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAElD,MAAM,CAAC,eAAe,CAAC,UAAU,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACpD,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAEpC,2FAA2F;IAC3F,uGAAuG;IACvG,4FAA4F;IAC5F,4FAA4F;IAC5F,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,oDAAoD;KAC3D,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,ygBAAygB;IACthB,MAAM,EAAE,yBAAyB;IACjC,OAAO,EAAE,eAAe;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,yKAAyK;IACtL,MAAM,EAAE,2BAA2B;IACnC,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,6SAA6S;IAC1T,MAAM,EAAE,uBAAuB;IAC/B,OAAO,EAAE,aAAa;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,4MAA4M;IACzN,MAAM,EAAE,0BAA0B;IAClC,OAAO,EAAE,gBAAgB;CAC1B,CAAC"}
|
|
@@ -86,6 +86,7 @@ declare const ListTicketCategoriesArgsSchema: z.ZodObject<{
|
|
|
86
86
|
}, z.core.$strip>;
|
|
87
87
|
declare const ListTicketOutcomesArgsSchema: z.ZodObject<{
|
|
88
88
|
tickettype_id: z.ZodOptional<z.ZodNumber>;
|
|
89
|
+
agent_id: z.ZodOptional<z.ZodNumber>;
|
|
89
90
|
format_options: z.ZodOptional<z.ZodObject<{
|
|
90
91
|
format: z.ZodOptional<z.ZodEnum<{
|
|
91
92
|
compact: "compact";
|
|
@@ -96,6 +97,26 @@ declare const ListTicketOutcomesArgsSchema: z.ZodObject<{
|
|
|
96
97
|
omit_empty: z.ZodOptional<z.ZodBoolean>;
|
|
97
98
|
}, z.core.$strip>>;
|
|
98
99
|
}, z.core.$strip>;
|
|
100
|
+
/**
|
|
101
|
+
* Shared helper: fetch and optionally filter the outcomes for a given
|
|
102
|
+
* tickettype_id. Used by both listTicketOutcomes (tool handler) and
|
|
103
|
+
* buildOutcomeDiscoveryRefusal (ticket-actions.ts diagnostic builder).
|
|
104
|
+
*
|
|
105
|
+
* Returns HaloPSATicketOutcomeCompact[] (not the accessible-annotated form)
|
|
106
|
+
* so the caller can apply its own ACL logic.
|
|
107
|
+
*
|
|
108
|
+
* S4 fix: inactive outcomes (inactive === true) are always excluded regardless
|
|
109
|
+
* of agent_id. Active outcomes (inactive === false or absent) qualify. This
|
|
110
|
+
* prevents admin-disabled outcomes from appearing in valid_outcomes_hint.
|
|
111
|
+
*
|
|
112
|
+
* When agent_id is supplied, outcomes with accessible===false are also excluded.
|
|
113
|
+
* Outcomes with accessible==="unknown" are always included.
|
|
114
|
+
*
|
|
115
|
+
* @param client - HaloPSA API client
|
|
116
|
+
* @param tickettypeId - Ticket type ID to filter outcomes to (optional)
|
|
117
|
+
* @param agentId - Agent ID for ACL filtering (optional)
|
|
118
|
+
*/
|
|
119
|
+
export declare function getOutcomesForTicketType(client: HaloPSAAPIClient, tickettypeId: number | undefined, agentId?: number): Promise<HaloPSATicketOutcomeCompact[]>;
|
|
99
120
|
export declare function listTicketTypes(client: HaloPSAAPIClient, args: z.infer<typeof ListTicketTypesArgsSchema>): Promise<string>;
|
|
100
121
|
export declare function getTicketType(client: HaloPSAAPIClient, args: z.infer<typeof GetTicketTypeArgsSchema>): Promise<string>;
|
|
101
122
|
export declare function listTicketStatuses(client: HaloPSAAPIClient, args: z.infer<typeof ListTicketStatusesArgsSchema>): Promise<string>;
|
|
@@ -107,6 +128,13 @@ export declare function listTicketCategories(client: HaloPSAAPIClient, args: z.i
|
|
|
107
128
|
* If tickettype_id is supplied, fetches the ticket type with includedetails=true
|
|
108
129
|
* and filters to the outcome IDs in its `outcomes[]` array.
|
|
109
130
|
*
|
|
131
|
+
* Inactive outcomes (inactive === true) are always excluded — admin-disabled
|
|
132
|
+
* outcomes are never surfaced to the LLM.
|
|
133
|
+
*
|
|
134
|
+
* If agent_id is supplied, performs ACL filtering: outcomes with
|
|
135
|
+
* accessible=false are dropped. When agent_id is omitted, no ACL filtering
|
|
136
|
+
* is applied and the `accessible` field is omitted from each row.
|
|
137
|
+
*
|
|
110
138
|
* NOTE: The /Outcome endpoint does not support server-side tickettype filtering.
|
|
111
139
|
* Scoping is always performed client-side.
|
|
112
140
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-reference-data.d.ts","sourceRoot":"","sources":["../../src/tools/ticket-reference-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;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;AACvD,OAAO,KAAK,EAOV,2BAA2B,EAM5B,MAAM,qBAAqB,CAAC;AAS7B,QAAA,MAAM,yBAAyB;;;;;;;;;;;iBAI7B,CAAC;AAEH,QAAA,MAAM,uBAAuB;;;;;;;;;;;iBAI3B,CAAC;AAEH,QAAA,MAAM,4BAA4B;;;;;;;;;;;iBAIhC,CAAC;AAEH,QAAA,MAAM,8BAA8B;;;;;;;;;;;;iBAWlC,CAAC;AAEH,QAAA,MAAM,8BAA8B;;;;;;;;;;;;iBASlC,CAAC;AAEH,QAAA,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"ticket-reference-data.d.ts","sourceRoot":"","sources":["../../src/tools/ticket-reference-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;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;AACvD,OAAO,KAAK,EAOV,2BAA2B,EAM5B,MAAM,qBAAqB,CAAC;AAS7B,QAAA,MAAM,yBAAyB;;;;;;;;;;;iBAI7B,CAAC;AAEH,QAAA,MAAM,uBAAuB;;;;;;;;;;;iBAI3B,CAAC;AAEH,QAAA,MAAM,4BAA4B;;;;;;;;;;;iBAIhC,CAAC;AAEH,QAAA,MAAM,8BAA8B;;;;;;;;;;;;iBAWlC,CAAC;AAEH,QAAA,MAAM,8BAA8B;;;;;;;;;;;;iBASlC,CAAC;AAEH,QAAA,MAAM,4BAA4B;;;;;;;;;;;;iBAehC,CAAC;AA8LH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,2BAA2B,EAAE,CAAC,CA+DxC;AAMD,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,GAC9C,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,GACnD,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,GACnD,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC,CAwFjB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAe7C;AAMD,eAAO,MAAM,mBAAmB,EAAE,iBAKjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAK/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,iBAKpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,iBAKtC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,iBAKtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,iBAKpC,CAAC"}
|