@ttctl/mcp 0.1.0-rc.4 → 0.1.0-rc.6
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/dist/tools/interest_requests.d.ts +29 -0
- package/dist/tools/interest_requests.d.ts.map +1 -1
- package/dist/tools/interest_requests.js +175 -0
- package/dist/tools/interest_requests.js.map +1 -1
- package/dist/tools/profile/employment.d.ts.map +1 -1
- package/dist/tools/profile/employment.js +84 -12
- package/dist/tools/profile/employment.js.map +1 -1
- package/dist/tools/profile_skills_add.d.ts.map +1 -1
- package/dist/tools/profile_skills_add.js +51 -12
- package/dist/tools/profile_skills_add.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { applications } from "@ttctl/core";
|
|
2
3
|
import { type ToolRegistrationContext } from "./_shared.js";
|
|
3
4
|
/**
|
|
4
5
|
* Project an activity-item row into the trim "Interest Request" shape the
|
|
@@ -6,11 +7,28 @@ import { type ToolRegistrationContext } from "./_shared.js";
|
|
|
6
7
|
* to integer days. Returns the same `id` so callers can drill into
|
|
7
8
|
* `ttctl_applications_show` for the full detail view.
|
|
8
9
|
*
|
|
10
|
+
* **`fixedRate` (#410)**: surfaces the recruiter-pinned Fixed rate the
|
|
11
|
+
* Toptal portal renders next to the IR. Lifted from the row's
|
|
12
|
+
* `availabilityRequest.metadata.offeredHourlyRate` via the core
|
|
13
|
+
* `applications.list()` projection. `null` when the AR carries no
|
|
14
|
+
* Fixed-rate offer (defensive — every recruiter-initiated IR observed
|
|
15
|
+
* in the wild has carried one).
|
|
16
|
+
*
|
|
9
17
|
* @internal Exported for unit tests.
|
|
10
18
|
*/
|
|
11
19
|
export interface InterestRequestRow {
|
|
12
20
|
/** Activity-item id; pass to `ttctl_applications_show` for detail. */
|
|
13
21
|
id: string;
|
|
22
|
+
/**
|
|
23
|
+
* **AvailabilityRequest id** (#411). The handle the write-side IR
|
|
24
|
+
* mutations (`ttctl_interest_requests_accept` /
|
|
25
|
+
* `ttctl_interest_requests_reject`) require. Distinct from `id`
|
|
26
|
+
* above, which is the activity-item id used by `_show`. `null` when
|
|
27
|
+
* the activity row carries no AR (theoretically possible if a row
|
|
28
|
+
* is classified into `ON_RECRUITER_REVIEW` without an underlying AR,
|
|
29
|
+
* though every observed IR in the wild has carried one).
|
|
30
|
+
*/
|
|
31
|
+
availabilityRequestId: string | null;
|
|
14
32
|
/** Server-rendered status label (e.g. "Job Interest Request"). */
|
|
15
33
|
statusVerbose: string;
|
|
16
34
|
/** Underlying job title (may be null if the wire elided it). */
|
|
@@ -23,6 +41,13 @@ export interface InterestRequestRow {
|
|
|
23
41
|
lastUpdatedAt: string;
|
|
24
42
|
/** Whole days between `lastUpdatedAt` and `now`; null if unparseable. */
|
|
25
43
|
daysPending: number | null;
|
|
44
|
+
/**
|
|
45
|
+
* Recruiter-pinned Fixed rate (#410), in the standard Money shape.
|
|
46
|
+
* `null` when no Fixed-rate offer is present on the row. Use
|
|
47
|
+
* `fixedRate.decimal` for numeric comparison, `fixedRate.verbose` for
|
|
48
|
+
* pretty rendering (server-formatted, e.g. `"$77.00/hr"`).
|
|
49
|
+
*/
|
|
50
|
+
fixedRate: applications.FixedRate | null;
|
|
26
51
|
}
|
|
27
52
|
/**
|
|
28
53
|
* @internal Exported for unit tests.
|
|
@@ -40,6 +65,10 @@ export declare function projectRow(row: {
|
|
|
40
65
|
fullName: string | null;
|
|
41
66
|
} | null;
|
|
42
67
|
};
|
|
68
|
+
availabilityRequest: {
|
|
69
|
+
id: string;
|
|
70
|
+
} | null;
|
|
71
|
+
fixedRate: applications.FixedRate | null;
|
|
43
72
|
}, now: number): InterestRequestRow;
|
|
44
73
|
/**
|
|
45
74
|
* Register `ttctl_interest_requests_list` (#371) — a dedicated MCP affordance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interest_requests.d.ts","sourceRoot":"","sources":["../../src/tools/interest_requests.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"interest_requests.d.ts","sourceRoot":"","sources":["../../src/tools/interest_requests.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,EAAuD,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AA0CjH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX;;;;;;;;OAQG;IACH,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yCAAyC;IACzC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,mDAAmD;IACnD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,SAAS,EAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE;IACH,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9F,mBAAmB,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;CAC1C,EACD,GAAG,EAAE,MAAM,GACV,kBAAkB,CAgBpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,CA6FnG"}
|
|
@@ -52,12 +52,14 @@ export function projectRow(row, now) {
|
|
|
52
52
|
: null;
|
|
53
53
|
return {
|
|
54
54
|
id: row.id,
|
|
55
|
+
availabilityRequestId: row.availabilityRequest?.id ?? null,
|
|
55
56
|
statusVerbose: row.statusV2.verbose,
|
|
56
57
|
jobTitle: row.job.title,
|
|
57
58
|
clientName: row.job.client?.fullName ?? null,
|
|
58
59
|
jobUrl: row.job.url,
|
|
59
60
|
lastUpdatedAt: row.lastUpdatedAt,
|
|
60
61
|
daysPending,
|
|
62
|
+
fixedRate: row.fixedRate,
|
|
61
63
|
};
|
|
62
64
|
}
|
|
63
65
|
/**
|
|
@@ -160,6 +162,179 @@ export function registerInterestRequestsTools(server, ctx) {
|
|
|
160
162
|
return mapInterestRequestsError(err);
|
|
161
163
|
}
|
|
162
164
|
});
|
|
165
|
+
// #411 — IR write surface. Three tools mirroring the talent-side
|
|
166
|
+
// ergonomic spec of #411: accept (→ confirm wire mutation), reject
|
|
167
|
+
// (→ reject wire mutation), reject-reasons (→ platform-config
|
|
168
|
+
// inventory). All three accept the **AvailabilityRequest id** as the
|
|
169
|
+
// handle (NOT the activity-item id); chain from
|
|
170
|
+
// `ttctl_interest_requests_list` rows via `availabilityRequestId`.
|
|
171
|
+
registerInterestRequestsAcceptTool(server, ctx);
|
|
172
|
+
registerInterestRequestsRejectTool(server, ctx);
|
|
173
|
+
registerInterestRequestsRejectReasonsTool(server, ctx);
|
|
174
|
+
}
|
|
175
|
+
function registerInterestRequestsAcceptTool(server, ctx) {
|
|
176
|
+
server.registerTool("ttctl_interest_requests_accept", {
|
|
177
|
+
title: "Accept an Interest Request",
|
|
178
|
+
description: [
|
|
179
|
+
"Accept (confirm) a Toptal Interest Request — the wire mutation",
|
|
180
|
+
"`ConfirmAvailabilityRequest` (mobile-gateway). Mirror of the",
|
|
181
|
+
'"View Job Interest Request → Respond" button on the Toptal portal.',
|
|
182
|
+
"",
|
|
183
|
+
"**DESTRUCTIVE** — accepting an IR transitions the AvailabilityRequest",
|
|
184
|
+
"from PENDING to CONFIRMED, creating a `JobApplication` for the underlying",
|
|
185
|
+
"job. There is no withdraw operation on the wire. Always preview with",
|
|
186
|
+
"`dryRun: true` first if uncertain.",
|
|
187
|
+
"",
|
|
188
|
+
"**Input id**: the `availabilityRequestId` from `ttctl_interest_requests_list`",
|
|
189
|
+
"rows (NOT the `id` field, which is the activity-item id used by `_show`).",
|
|
190
|
+
"Both ids are surfaced on the list output; pick `availabilityRequestId`.",
|
|
191
|
+
"",
|
|
192
|
+
"**Fields**:",
|
|
193
|
+
" - `id` (required): AvailabilityRequest id.",
|
|
194
|
+
" - `message` (optional): talent free-text accompanying the response.",
|
|
195
|
+
" Maps to the wire's `talentComment` field. Renders next to the",
|
|
196
|
+
' "Respond" button in the recruiter\'s portal view.',
|
|
197
|
+
" - `rate` (optional): requested hourly rate, decimal string (e.g.",
|
|
198
|
+
' `"80.00"`). Auto-filled from the AR\'s recruiter-pinned Fixed rate',
|
|
199
|
+
" when omitted. REQUIRED for FLEXIBLE / MARKETPLACE_FLEXIBLE ARs",
|
|
200
|
+
" (no recruiter-pinned rate to default to).",
|
|
201
|
+
" - `kind` (optional): AR kind (FIXED / FLEXIBLE / MARKETPLACE_FLEXIBLE).",
|
|
202
|
+
" Auto-detected from the AR's metadata `__typename` when omitted.",
|
|
203
|
+
"",
|
|
204
|
+
"Example user prompts:",
|
|
205
|
+
' - "Accept Interest Request <id>." (uses recruiter-pinned rate by default)',
|
|
206
|
+
' - "Accept IR <id> with the message \\"Available starting next Monday\\"."',
|
|
207
|
+
' - "Accept Interest Request <id> at $90/hr." (override the Fixed rate)',
|
|
208
|
+
].join("\n"),
|
|
209
|
+
inputSchema: {
|
|
210
|
+
id: z.string().describe("AvailabilityRequest id (NOT the activity-item id)"),
|
|
211
|
+
message: z.string().optional().describe("Optional talent free-text. Wire field: talentComment."),
|
|
212
|
+
rate: z
|
|
213
|
+
.string()
|
|
214
|
+
.optional()
|
|
215
|
+
.describe("Optional decimal hourly rate (e.g. '80.00'). Auto-filled from the AR's Fixed rate when omitted; required for FLEXIBLE / MARKETPLACE_FLEXIBLE ARs."),
|
|
216
|
+
kind: z
|
|
217
|
+
.enum([...applications.AVAILABILITY_REQUEST_KINDS])
|
|
218
|
+
.optional()
|
|
219
|
+
.describe("AR kind (auto-detected from metadata when omitted)"),
|
|
220
|
+
dryRun: DRY_RUN_FIELD,
|
|
221
|
+
},
|
|
222
|
+
}, async (args) => {
|
|
223
|
+
const auth = await ctx.resolveToolAuth();
|
|
224
|
+
if (!auth.ok)
|
|
225
|
+
return auth.response;
|
|
226
|
+
const input = {};
|
|
227
|
+
if (args.message !== undefined)
|
|
228
|
+
input.comment = args.message;
|
|
229
|
+
if (args.rate !== undefined)
|
|
230
|
+
input.requestedHourlyRate = args.rate;
|
|
231
|
+
if (args.kind !== undefined)
|
|
232
|
+
input.kind = args.kind;
|
|
233
|
+
try {
|
|
234
|
+
const outcome = await applications.confirm(auth.token, args.id, input, {
|
|
235
|
+
dryRun: args.dryRun === true,
|
|
236
|
+
});
|
|
237
|
+
if (outcome.kind === "preview") {
|
|
238
|
+
return dryRunResponse(outcome.preview);
|
|
239
|
+
}
|
|
240
|
+
return jsonResponse(outcome.result);
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
return mapInterestRequestsError(err);
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
function registerInterestRequestsRejectTool(server, ctx) {
|
|
248
|
+
server.registerTool("ttctl_interest_requests_reject", {
|
|
249
|
+
title: "Reject an Interest Request",
|
|
250
|
+
description: [
|
|
251
|
+
"Reject (decline) a Toptal Interest Request — the wire mutation",
|
|
252
|
+
"`RejectAvailabilityRequest` (mobile-gateway). Mirror of the",
|
|
253
|
+
'"View Job Interest Request → Decline" form on the Toptal portal.',
|
|
254
|
+
"",
|
|
255
|
+
"**DESTRUCTIVE** — rejecting an IR transitions the AvailabilityRequest",
|
|
256
|
+
"to REJECTED (terminal, archived). No undo. Always preview with",
|
|
257
|
+
"`dryRun: true` first if uncertain.",
|
|
258
|
+
"",
|
|
259
|
+
"**Input id**: the `availabilityRequestId` from `ttctl_interest_requests_list`",
|
|
260
|
+
"rows (NOT the `id` field, which is the activity-item id used by `_show`).",
|
|
261
|
+
"",
|
|
262
|
+
"**Fields**:",
|
|
263
|
+
" - `id` (required): AvailabilityRequest id.",
|
|
264
|
+
" - `reason` (required): one of the `key` values from",
|
|
265
|
+
" `ttctl_interest_requests_reject_reasons`. The wire rejects unknown",
|
|
266
|
+
" keys with a top-level GraphQL error.",
|
|
267
|
+
" - `comment` (optional): accompanying free-text. Required when the",
|
|
268
|
+
" chosen reason has `isMandatory: true` on the inventory.",
|
|
269
|
+
"",
|
|
270
|
+
"Example user prompts:",
|
|
271
|
+
' - "Decline Interest Request <id> with reason rate_too_low."',
|
|
272
|
+
' - "Reject IR <id> as scope_mismatch, note: \\"Not aligned with my Python expertise.\\""',
|
|
273
|
+
].join("\n"),
|
|
274
|
+
inputSchema: {
|
|
275
|
+
id: z.string().describe("AvailabilityRequest id (NOT the activity-item id)"),
|
|
276
|
+
reason: z
|
|
277
|
+
.string()
|
|
278
|
+
.describe("Decline reason key (see ttctl_interest_requests_reject_reasons for the inventory)"),
|
|
279
|
+
comment: z.string().optional().describe("Optional accompanying free-text (required for mandatory reasons)"),
|
|
280
|
+
dryRun: DRY_RUN_FIELD,
|
|
281
|
+
},
|
|
282
|
+
}, async (args) => {
|
|
283
|
+
const auth = await ctx.resolveToolAuth();
|
|
284
|
+
if (!auth.ok)
|
|
285
|
+
return auth.response;
|
|
286
|
+
const input = { reason: args.reason };
|
|
287
|
+
if (args.comment !== undefined)
|
|
288
|
+
input.comment = args.comment;
|
|
289
|
+
try {
|
|
290
|
+
const outcome = await applications.reject(auth.token, args.id, input, {
|
|
291
|
+
dryRun: args.dryRun === true,
|
|
292
|
+
});
|
|
293
|
+
if (outcome.kind === "preview") {
|
|
294
|
+
return dryRunResponse(outcome.preview);
|
|
295
|
+
}
|
|
296
|
+
return jsonResponse(outcome.result);
|
|
297
|
+
}
|
|
298
|
+
catch (err) {
|
|
299
|
+
return mapInterestRequestsError(err);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
function registerInterestRequestsRejectReasonsTool(server, ctx) {
|
|
304
|
+
server.registerTool("ttctl_interest_requests_reject_reasons", {
|
|
305
|
+
title: "List Interest Request decline-reason inventory",
|
|
306
|
+
description: [
|
|
307
|
+
"List the Interest Request decline-reason inventory — the `key` /",
|
|
308
|
+
"`value` / `isMandatory` rows the portal's Decline form uses. Pass one",
|
|
309
|
+
"of the surfaced `key` values to `ttctl_interest_requests_reject`.",
|
|
310
|
+
"",
|
|
311
|
+
"Returns `{ fixed: [...], flexible: [...] }` — the portal renders only",
|
|
312
|
+
"the slice matching the AR's `kind`, so clients should likewise pick",
|
|
313
|
+
"the slice that matches the AR being declined.",
|
|
314
|
+
"",
|
|
315
|
+
"Read-only, idempotent. Server-localised (the `value` text matches the",
|
|
316
|
+
"session's locale).",
|
|
317
|
+
"",
|
|
318
|
+
"Example user prompts:",
|
|
319
|
+
' - "What reasons can I decline Interest Requests with?"',
|
|
320
|
+
' - "Show me the reject-reason inventory for Fixed-kind IRs."',
|
|
321
|
+
].join("\n"),
|
|
322
|
+
inputSchema: { dryRun: DRY_RUN_FIELD },
|
|
323
|
+
}, async (args) => {
|
|
324
|
+
const auth = await ctx.resolveToolAuth();
|
|
325
|
+
if (!auth.ok)
|
|
326
|
+
return auth.response;
|
|
327
|
+
if (args.dryRun === true) {
|
|
328
|
+
return dryRunResponse(buildMcpDryRunPreview("AvailabilityRequestRejectReasons", "mobile-gateway", {}, auth.token));
|
|
329
|
+
}
|
|
330
|
+
try {
|
|
331
|
+
const reasons = await applications.rejectReasons(auth.token);
|
|
332
|
+
return jsonResponse(reasons);
|
|
333
|
+
}
|
|
334
|
+
catch (err) {
|
|
335
|
+
return mapInterestRequestsError(err);
|
|
336
|
+
}
|
|
337
|
+
});
|
|
163
338
|
}
|
|
164
339
|
function invalidOlderThanResponse(supplied) {
|
|
165
340
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interest_requests.js","sourceRoot":"","sources":["../../src/tools/interest_requests.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,YAAY,EAAgC,MAAM,cAAc,CAAC;AAEjH,MAAM,aAAa,GAAG,CAAC;KACpB,OAAO,EAAE;KACT,QAAQ,EAAE;KACV,QAAQ,CACP,+JAA+J,CAChK,CAAC;AAEJ;;;;;;;;;;;GAWG;AACH,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD,MAAM,cAAc,GAA2B;IAC7C,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE,GAAG,CAAC;CACV,CAAC;AAEF,SAAS,mBAAmB,CAAC,KAAa;IACxC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,QAAQ,GAAG,OAAO,CAAC;AAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"interest_requests.js","sourceRoot":"","sources":["../../src/tools/interest_requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"employment.d.ts","sourceRoot":"","sources":["../../../src/tools/profile/employment.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAyC,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAUpG;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"employment.d.ts","sourceRoot":"","sources":["../../../src/tools/profile/employment.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAyC,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAUpG;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAqZ7F"}
|
|
@@ -33,15 +33,30 @@ export function registerEmploymentTools(server, ctx) {
|
|
|
33
33
|
description: "Add a new employment entry (company + role, with optional start/end years and `current` flag). " +
|
|
34
34
|
"The `company` string is resolved to the server-side `employerId` via the employer-autocomplete catalog: " +
|
|
35
35
|
"0 matches or 2+ matches return a VALIDATION_ERROR with disambiguation guidance. Pass an explicit `employerId` to " +
|
|
36
|
-
"bypass autocomplete entirely.
|
|
36
|
+
"bypass autocomplete entirely. Set `noEmployer: true` for a custom (non-catalog) workplace — sends the free-text " +
|
|
37
|
+
"`company` with employerId:null and skips autocomplete (orthogonal to `website`; cannot be combined with `employerId`). " +
|
|
38
|
+
"`industryIds` (at least one required) attaches catalog industries to the entry — " +
|
|
39
|
+
"discover ids via `ttctl_profile_industries_autocomplete`. " +
|
|
40
|
+
"Dates accept ISO-8601 (YYYY-MM-DD) or year-only (YYYY); year only is stored.",
|
|
37
41
|
inputSchema: {
|
|
38
|
-
company: z
|
|
42
|
+
company: z
|
|
43
|
+
.string()
|
|
44
|
+
.min(1)
|
|
45
|
+
.describe("company / employer name (resolved to employerId via autocomplete unless noEmployer is set)"),
|
|
39
46
|
role: z.string().min(1).describe("job title (mapped to position)"),
|
|
40
47
|
employerId: z
|
|
41
48
|
.string()
|
|
42
49
|
.min(1)
|
|
43
50
|
.optional()
|
|
44
51
|
.describe("explicit employerId (bypasses autocomplete; use `ttctl_profile_employment_employer_autocomplete` to discover)"),
|
|
52
|
+
industryIds: z
|
|
53
|
+
.array(z.string())
|
|
54
|
+
.min(1)
|
|
55
|
+
.describe('Catalog Industry ids (at least one required). Discover via `ttctl_profile_industries_autocomplete` or `ttctl profile industries autocomplete "<query>"`.'),
|
|
56
|
+
noEmployer: z
|
|
57
|
+
.boolean()
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("custom (non-catalog) workplace: send the free-text `company` with employerId:null and skip the employer-autocomplete catalog. Orthogonal to `website`; cannot be combined with `employerId`."),
|
|
45
60
|
from: dateInput.optional().describe("start date — ISO-8601 or year"),
|
|
46
61
|
to: dateInput.optional().describe("end date — ISO-8601 or year"),
|
|
47
62
|
current: z.boolean().optional().describe("mark as current position (no end date)"),
|
|
@@ -59,10 +74,18 @@ export function registerEmploymentTools(server, ctx) {
|
|
|
59
74
|
const fields = {
|
|
60
75
|
company: input.company,
|
|
61
76
|
position: input.role,
|
|
77
|
+
// industryIds is required by the schema (zod `.min(1)`). The
|
|
78
|
+
// live `CreateEmployment` wire rejects a blank industry set
|
|
79
|
+
// (#395 cascade); surfacing it as a required parameter mirrors
|
|
80
|
+
// `portfolio_add` and fails fast before the wire.
|
|
81
|
+
industryIds: input.industryIds,
|
|
62
82
|
};
|
|
63
83
|
if (input.employerId !== undefined) {
|
|
64
84
|
fields.employerId = input.employerId;
|
|
65
85
|
}
|
|
86
|
+
if (input.noEmployer === true) {
|
|
87
|
+
fields.noEmployer = true;
|
|
88
|
+
}
|
|
66
89
|
try {
|
|
67
90
|
if (input.from !== undefined)
|
|
68
91
|
fields.startDate = parseDateInput(input.from, "from").year;
|
|
@@ -84,8 +107,10 @@ export function registerEmploymentTools(server, ctx) {
|
|
|
84
107
|
// Per-#395: dry-run path is delegated to the core service so the
|
|
85
108
|
// preview's `variables.input.employment.employerId` carries the
|
|
86
109
|
// resolved id (not the raw `company` string). The autocomplete
|
|
87
|
-
// read query fires in dry-run too — the
|
|
88
|
-
//
|
|
110
|
+
// read query fires in dry-run too — EXCEPT on the #401
|
|
111
|
+
// custom-workplace path (`noEmployer: true`), where core skips
|
|
112
|
+
// resolution entirely (zero network). The CreateEmployment
|
|
113
|
+
// mutation transport never fires in dry-run regardless.
|
|
89
114
|
try {
|
|
90
115
|
const outcome = await profile.employment.add(auth.token, fields, { dryRun: input.dryRun === true });
|
|
91
116
|
if (outcome.kind === "preview") {
|
|
@@ -99,7 +124,10 @@ export function registerEmploymentTools(server, ctx) {
|
|
|
99
124
|
});
|
|
100
125
|
server.registerTool("ttctl_profile_employment_update", {
|
|
101
126
|
title: "Update employment entry",
|
|
102
|
-
description: "Update an existing employment entry by id. At least one field must be supplied. `description` is multi-paragraph free-text and splits on blank lines."
|
|
127
|
+
description: "Update an existing employment entry by id. At least one field must be supplied. `description` is multi-paragraph free-text and splits on blank lines. " +
|
|
128
|
+
"`industryIds`, when supplied, replaces the entry's entire industry set (omit to preserve the current set) — discover ids via `ttctl_profile_industries_autocomplete`. " +
|
|
129
|
+
"`publicationPermit`, `showViaToptal`, and `toptalRelated` are server-gated booleans that callers may explicitly override (#402); each carries a distinct server constraint — see per-field descriptions. " +
|
|
130
|
+
'`publicationPermit` is Rails `.blank?`-gated: the server rejects `false` with `USER_ERROR: "You can\'t leave this empty"`, so any update on a row currently at `false` requires passing `true` explicitly — otherwise the read-current+merge preserves the `false` and the wire rejects.',
|
|
103
131
|
inputSchema: {
|
|
104
132
|
id: z.string().min(1).describe("employment id (V1-Employment-NNN)"),
|
|
105
133
|
company: z.string().optional(),
|
|
@@ -110,6 +138,23 @@ export function registerEmploymentTools(server, ctx) {
|
|
|
110
138
|
website: z.url().optional(),
|
|
111
139
|
description: z.string().optional(),
|
|
112
140
|
highlight: z.boolean().optional(),
|
|
141
|
+
industryIds: z
|
|
142
|
+
.array(z.string())
|
|
143
|
+
.min(1)
|
|
144
|
+
.optional()
|
|
145
|
+
.describe("Catalog Industry ids — when supplied, replaces the entry's industry set (partial update; omit to preserve). Discover via `ttctl_profile_industries_autocomplete`."),
|
|
146
|
+
publicationPermit: z
|
|
147
|
+
.boolean()
|
|
148
|
+
.optional()
|
|
149
|
+
.describe("Whether this entry is publicly listable. Rails `.blank?`-gated on the server (#402): the server rejects `false` with USER_ERROR. When supplied, overrides the merged current value; when omitted, current state is preserved (defaulting to `true` for null current). Updating any field on a row currently at `false` requires passing `true` explicitly to avoid the blank-gate USER_ERROR."),
|
|
150
|
+
showViaToptal: z
|
|
151
|
+
.boolean()
|
|
152
|
+
.optional()
|
|
153
|
+
.describe("Whether this entry was sourced via Toptal. Wire-required non-null (#344): the merge unconditionally sends the current value. When supplied, overrides the merged current value."),
|
|
154
|
+
toptalRelated: z
|
|
155
|
+
.boolean()
|
|
156
|
+
.optional()
|
|
157
|
+
.describe("Whether this entry is a Toptal-related engagement. Server-determined (#402 discovery 2026-05-20): the wire accepts any boolean input, but the server applies business logic (likely keyed on employer affiliation) and may override the supplied value on read. The override THROUGHPUT works (client → wire); the persisted state is server-determined regardless of caller input."),
|
|
113
158
|
dryRun: DRY_RUN_FIELD,
|
|
114
159
|
},
|
|
115
160
|
}, async (input) => {
|
|
@@ -141,6 +186,31 @@ export function registerEmploymentTools(server, ctx) {
|
|
|
141
186
|
}
|
|
142
187
|
if (input.highlight !== undefined)
|
|
143
188
|
fields.highlight = input.highlight;
|
|
189
|
+
// Replace-on-supply: when present, the supplied catalog set wins
|
|
190
|
+
// over the merge placeholder (dry-run) / current-state projection
|
|
191
|
+
// (apply path, via `buildUpdateEmploymentInput`'s `...fields`).
|
|
192
|
+
if (input.industryIds !== undefined)
|
|
193
|
+
fields.industryIds = input.industryIds;
|
|
194
|
+
// #402 server-gate overrides. `publicationPermit` and `showViaToptal`
|
|
195
|
+
// participate in `buildUpdateEmploymentInput`'s merge (`{ ...merged,
|
|
196
|
+
// ...fields }`) — supplying either beats the current-state fallback,
|
|
197
|
+
// which is the rc.4-preserving behavior. `publicationPermit`
|
|
198
|
+
// specifically unblocks rows where the current value is `false` (the
|
|
199
|
+
// server's Rails `.blank?` gate rejects `false` on update with
|
|
200
|
+
// USER_ERROR).
|
|
201
|
+
//
|
|
202
|
+
// `toptalRelated` is NOT in `buildUpdateEmploymentInput`'s merged
|
|
203
|
+
// object — when supplied it lands directly on the wire payload via
|
|
204
|
+
// the `...fields` spread. The server applies its own business logic
|
|
205
|
+
// (per #402 empirical discovery 2026-05-20) and may override the
|
|
206
|
+
// supplied value on read; client-side throughput works, persisted
|
|
207
|
+
// state is server-determined.
|
|
208
|
+
if (input.publicationPermit !== undefined)
|
|
209
|
+
fields.publicationPermit = input.publicationPermit;
|
|
210
|
+
if (input.showViaToptal !== undefined)
|
|
211
|
+
fields.showViaToptal = input.showViaToptal;
|
|
212
|
+
if (input.toptalRelated !== undefined)
|
|
213
|
+
fields.toptalRelated = input.toptalRelated;
|
|
144
214
|
if (input.dryRun === true) {
|
|
145
215
|
// Dry-run preview shows the full merged shape — the wire-required
|
|
146
216
|
// fields the apply path injects from current state appear as
|
|
@@ -152,15 +222,17 @@ export function registerEmploymentTools(server, ctx) {
|
|
|
152
222
|
//
|
|
153
223
|
// Field set mirrors `buildUpdateEmploymentInput` in
|
|
154
224
|
// `services/profile/employment/index.ts`: GraphQL-required-non-null
|
|
155
|
-
// (
|
|
156
|
-
//
|
|
157
|
-
//
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
//
|
|
161
|
-
//
|
|
225
|
+
// (5: experienceItems, position, skills, showViaToptal, startDate
|
|
226
|
+
// — `position` added #407) + Rails `.blank?` gates (company,
|
|
227
|
+
// publicationPermit) + catalog refs (employerId, industryIds —
|
|
228
|
+
// both injected conditionally on current state in the apply path).
|
|
229
|
+
// The optional catalog refs (primaryGeographyId, reportingTo)
|
|
230
|
+
// appear in the preview only when the current row has them; here
|
|
231
|
+
// we surface them as placeholders so the preview is non-misleading
|
|
232
|
+
// about the potential shape.
|
|
162
233
|
const previewEmployment = {
|
|
163
234
|
experienceItems: profile.employment.DRY_RUN_EMPLOYMENT_MERGE_PLACEHOLDER,
|
|
235
|
+
position: profile.employment.DRY_RUN_EMPLOYMENT_MERGE_PLACEHOLDER,
|
|
164
236
|
skills: profile.employment.DRY_RUN_EMPLOYMENT_MERGE_PLACEHOLDER,
|
|
165
237
|
showViaToptal: profile.employment.DRY_RUN_EMPLOYMENT_MERGE_PLACEHOLDER,
|
|
166
238
|
startDate: profile.employment.DRY_RUN_EMPLOYMENT_MERGE_PLACEHOLDER,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"employment.js","sourceRoot":"","sources":["../../../src/tools/profile/employment.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"employment.js","sourceRoot":"","sources":["../../../src/tools/profile/employment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile_skills_add.d.ts","sourceRoot":"","sources":["../../src/tools/profile_skills_add.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,
|
|
1
|
+
{"version":3,"file":"profile_skills_add.d.ts","sourceRoot":"","sources":["../../src/tools/profile_skills_add.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,EAML,KAAK,uBAAuB,EAC7B,MAAM,cAAc,CAAC;AAkBtB,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,CA6ElG"}
|
|
@@ -3,46 +3,85 @@
|
|
|
3
3
|
import { profile } from "@ttctl/core";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { ttctlErrorToToolResponseOrNull } from "../errors.js";
|
|
6
|
-
import {
|
|
6
|
+
import { domainErrorResponse, dryRunResponse, genericErrorResponse, isToolErrorResponse, jsonResponse, } from "./_shared.js";
|
|
7
7
|
const TOOL_NAME = "ttctl_profile_skills_add";
|
|
8
8
|
const DRY_RUN_FIELD = z
|
|
9
9
|
.boolean()
|
|
10
10
|
.optional()
|
|
11
11
|
.describe("Preview the request without executing. Returns `{ ok: true, dryRun: true, preview }` with operationName + variables + redacted bearer header. Default: false.");
|
|
12
|
+
// `ProficiencyRating` includes `NOVICE` as a read-accepted legacy value;
|
|
13
|
+
// for writes the user-visible Toptal UI exposes only the three values
|
|
14
|
+
// below (empirically verified via live UI inspection 2026-05-19). The MCP
|
|
15
|
+
// tool restricts writes to the documented three; if Toptal restores
|
|
16
|
+
// `NOVICE` as a write-acceptable value, this enum will need extension.
|
|
17
|
+
const PROFICIENCY_RATING = z.enum(["COMPETENT", "STRONG", "EXPERT"]);
|
|
12
18
|
export function registerProfileSkillsAddTool(server, ctx) {
|
|
13
19
|
server.registerTool(TOOL_NAME, {
|
|
14
20
|
title: "Add a skill to profile",
|
|
15
21
|
description: [
|
|
16
|
-
"Add a skill to the signed-in user's profile
|
|
17
|
-
"
|
|
22
|
+
"Add a skill to the signed-in user's profile.",
|
|
23
|
+
"Pass `name` to add a custom skill, or pair `name` with `skillId` (from `ttctl_profile_skills_autocomplete`) to bind to a catalog Skill.",
|
|
24
|
+
"Proficiency dimensions (`rating`, `experience`, `public`) all have sensible defaults — pass them only when overriding.",
|
|
25
|
+
"",
|
|
26
|
+
"Defaults applied when omitted:",
|
|
27
|
+
" - `rating`: COMPETENT (lowest user-visible rating)",
|
|
28
|
+
" - `experience`: 1",
|
|
29
|
+
" - `public`: false (private)",
|
|
18
30
|
"",
|
|
19
31
|
"Example user prompts that should map to this tool:",
|
|
20
|
-
' - "Add TypeScript to my Toptal skills."',
|
|
21
|
-
' - "Add PostgreSQL
|
|
32
|
+
' - "Add TypeScript to my Toptal skills." → `{ name: "TypeScript" }`',
|
|
33
|
+
' - "Add PostgreSQL at expert level with 5 years experience, public." → `{ name: "PostgreSQL", rating: "EXPERT", experience: 5, public: true }`',
|
|
22
34
|
].join("\n"),
|
|
23
35
|
inputSchema: {
|
|
24
36
|
name: z
|
|
25
37
|
.string()
|
|
26
38
|
.min(1)
|
|
27
|
-
.describe(
|
|
39
|
+
.describe("Skill name. Free-text creates a custom (non-catalog) Skill; pair with `skillId` to bind to a catalog Skill discovered via `ttctl_profile_skills_autocomplete`."),
|
|
40
|
+
rating: PROFICIENCY_RATING.optional().describe("Proficiency rating. One of COMPETENT | STRONG | EXPERT. Defaults to COMPETENT."),
|
|
41
|
+
experience: z
|
|
42
|
+
.number()
|
|
43
|
+
.int()
|
|
44
|
+
.min(0)
|
|
45
|
+
.optional()
|
|
46
|
+
.describe("Total experience on the skill (integer). Defaults to 1."),
|
|
47
|
+
public: z.boolean().optional().describe("Show the skill on the public profile. Defaults to false (private)."),
|
|
48
|
+
skillId: z
|
|
49
|
+
.string()
|
|
50
|
+
.min(1)
|
|
51
|
+
.optional()
|
|
52
|
+
.describe("Optional catalog Skill id (e.g., `V1-Skill-278891`) to bind this entry to a catalog skill. Discover via `ttctl_profile_skills_autocomplete`. Omit to create a custom (non-catalog) skill from `name`."),
|
|
28
53
|
dryRun: DRY_RUN_FIELD,
|
|
29
54
|
},
|
|
30
55
|
}, async (input) => {
|
|
31
56
|
const auth = await ctx.loadTokenForTool(TOOL_NAME);
|
|
32
57
|
if (isToolErrorResponse(auth))
|
|
33
58
|
return auth;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
59
|
+
const fields = { name: input.name };
|
|
60
|
+
if (input.rating !== undefined)
|
|
61
|
+
fields.rating = input.rating;
|
|
62
|
+
if (input.experience !== undefined)
|
|
63
|
+
fields.experience = input.experience;
|
|
64
|
+
if (input.public !== undefined)
|
|
65
|
+
fields.public = input.public;
|
|
66
|
+
if (input.skillId !== undefined)
|
|
67
|
+
fields.skillId = input.skillId;
|
|
37
68
|
try {
|
|
38
|
-
|
|
39
|
-
|
|
69
|
+
// Delegate to the core service for both dry-run and apply paths so
|
|
70
|
+
// the preview's wire shape is byte-for-byte the same as the live
|
|
71
|
+
// mutation would transmit (matches #395 employment.add pattern).
|
|
72
|
+
const outcome = await profile.skills.add(auth.token, fields, { dryRun: input.dryRun === true });
|
|
73
|
+
if (outcome.kind === "preview") {
|
|
74
|
+
return dryRunResponse(outcome.preview);
|
|
75
|
+
}
|
|
76
|
+
return jsonResponse(outcome.result);
|
|
40
77
|
}
|
|
41
78
|
catch (err) {
|
|
42
79
|
const typed = ttctlErrorToToolResponseOrNull(err);
|
|
43
80
|
if (typed !== null)
|
|
44
81
|
return typed;
|
|
45
|
-
|
|
82
|
+
// `extractProfileId` (apply path) throws `profile.basic.ProfileError`,
|
|
83
|
+
// not `SkillsError` — match the sibling skills tools' combined check.
|
|
84
|
+
if (err instanceof profile.skills.SkillsError || err instanceof profile.basic.ProfileError) {
|
|
46
85
|
return domainErrorResponse(TOOL_NAME, err);
|
|
47
86
|
}
|
|
48
87
|
return genericErrorResponse(TOOL_NAME, err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile_skills_add.js","sourceRoot":"","sources":["../../src/tools/profile_skills_add.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAGpC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"profile_skills_add.js","sourceRoot":"","sources":["../../src/tools/profile_skills_add.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttctl/mcp",
|
|
3
|
-
"version": "0.1.0-rc.
|
|
3
|
+
"version": "0.1.0-rc.6",
|
|
4
4
|
"description": "TTCtl MCP server exposing Toptal Talent operations to AI assistants",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -30,14 +30,14 @@
|
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "^25",
|
|
33
|
-
"eslint": "^10.
|
|
33
|
+
"eslint": "^10.4.0",
|
|
34
34
|
"typescript": "~6.0.3",
|
|
35
35
|
"vitest": "^4.1.1"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@modelcontextprotocol/sdk": "^1.28.0",
|
|
39
39
|
"zod": "^4.4.3",
|
|
40
|
-
"@ttctl/core": "^0.1.0-rc.
|
|
40
|
+
"@ttctl/core": "^0.1.0-rc.6"
|
|
41
41
|
},
|
|
42
42
|
"scripts": {
|
|
43
43
|
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|