@ttctl/core 0.1.0-rc.2 → 0.1.0-rc.4
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/__tests__/fixtures/profile/builders.d.ts.map +1 -1
- package/dist/__tests__/fixtures/profile/builders.js +2 -0
- package/dist/__tests__/fixtures/profile/builders.js.map +1 -1
- package/dist/__tests__/fixtures/profile/data.d.ts.map +1 -1
- package/dist/__tests__/fixtures/profile/data.js +4 -0
- package/dist/__tests__/fixtures/profile/data.js.map +1 -1
- package/dist/services/applications/index.d.ts +64 -9
- package/dist/services/applications/index.d.ts.map +1 -1
- package/dist/services/applications/index.js +67 -13
- package/dist/services/applications/index.js.map +1 -1
- package/dist/services/engagements/index.d.ts +76 -2
- package/dist/services/engagements/index.d.ts.map +1 -1
- package/dist/services/engagements/index.js +65 -5
- package/dist/services/engagements/index.js.map +1 -1
- package/dist/services/jobs/index.d.ts +26 -13
- package/dist/services/jobs/index.d.ts.map +1 -1
- package/dist/services/jobs/index.js +87 -15
- package/dist/services/jobs/index.js.map +1 -1
- package/dist/services/payments/index.d.ts +56 -10
- package/dist/services/payments/index.d.ts.map +1 -1
- package/dist/services/payments/index.js +59 -15
- package/dist/services/payments/index.js.map +1 -1
- package/dist/services/profile/basic/index.d.ts +113 -27
- package/dist/services/profile/basic/index.d.ts.map +1 -1
- package/dist/services/profile/basic/index.js +176 -66
- package/dist/services/profile/basic/index.js.map +1 -1
- package/dist/services/profile/employment/index.d.ts +175 -3
- package/dist/services/profile/employment/index.d.ts.map +1 -1
- package/dist/services/profile/employment/index.js +265 -14
- package/dist/services/profile/employment/index.js.map +1 -1
- package/dist/services/timesheet/index.d.ts +51 -2
- package/dist/services/timesheet/index.d.ts.map +1 -1
- package/dist/services/timesheet/index.js +32 -5
- package/dist/services/timesheet/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
2
|
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
-
import { ProfileError } from "../basic/index.js";
|
|
3
|
+
import { DRY_RUN_PROFILE_ID_PLACEHOLDER, ProfileError } from "../basic/index.js";
|
|
4
4
|
import { applyUserErrorsAndSuccess, callTalentProfile, ensureNoTopLevelErrors, extractProfileId } from "../shared.js";
|
|
5
|
+
import { buildDryRunPreview } from "../../../transport.js";
|
|
5
6
|
const EMPLOYMENT_FRAGMENT = `fragment Employment on Employment {
|
|
6
7
|
id
|
|
7
8
|
company
|
|
@@ -18,6 +19,8 @@ const EMPLOYMENT_FRAGMENT = `fragment Employment on Employment {
|
|
|
18
19
|
reportingTo
|
|
19
20
|
industries { nodes { id name } }
|
|
20
21
|
primaryGeography { id code name }
|
|
22
|
+
employer { id }
|
|
23
|
+
skills { nodes { id name } }
|
|
21
24
|
}`;
|
|
22
25
|
const GET_WORK_EXPERIENCE_QUERY = `query GET_WORK_EXPERIENCE($profileId: ID!) {
|
|
23
26
|
profile(id: $profileId) {
|
|
@@ -92,6 +95,12 @@ function mapEmploymentNode(node) {
|
|
|
92
95
|
name: typeof geoRaw.name === "string" ? geoRaw.name : null,
|
|
93
96
|
}
|
|
94
97
|
: null;
|
|
98
|
+
const employerRaw = node["employer"];
|
|
99
|
+
const employerId = employerRaw && typeof employerRaw.id === "string" ? employerRaw.id : null;
|
|
100
|
+
const skillsConn = node["skills"];
|
|
101
|
+
const skills = Array.isArray(skillsConn?.nodes)
|
|
102
|
+
? skillsConn.nodes.flatMap((s) => typeof s.id === "string" && typeof s.name === "string" ? [{ id: s.id, name: s.name }] : [])
|
|
103
|
+
: [];
|
|
95
104
|
const rawItems = node["experienceItems"];
|
|
96
105
|
return {
|
|
97
106
|
id: typeof node["id"] === "string" ? node["id"] : "",
|
|
@@ -111,6 +120,8 @@ function mapEmploymentNode(node) {
|
|
|
111
120
|
reportingTo: node["reportingTo"] ?? null,
|
|
112
121
|
industries,
|
|
113
122
|
primaryGeography,
|
|
123
|
+
employerId,
|
|
124
|
+
skills,
|
|
114
125
|
};
|
|
115
126
|
}
|
|
116
127
|
/**
|
|
@@ -151,27 +162,98 @@ export async function show(token, id) {
|
|
|
151
162
|
}
|
|
152
163
|
/**
|
|
153
164
|
* Create a new employment row. Wire format per Pattern 2: `{ profileId,
|
|
154
|
-
* employment: EmploymentInput }`.
|
|
165
|
+
* employment: EmploymentInput }`.
|
|
166
|
+
*
|
|
167
|
+
* **employerId resolution (#395)**: the live `talent_profile/graphql`
|
|
168
|
+
* server requires `employment.employerId` (the catalog identifier),
|
|
169
|
+
* NOT the free-text `company` string. Pre-#395, `add({company, role,
|
|
170
|
+
* …})` sent only the company string and was rejected with
|
|
171
|
+
* `USER_ERROR: employment add rejected (employerId): You can't leave
|
|
172
|
+
* this empty`. The fix:
|
|
173
|
+
*
|
|
174
|
+
* 1. If `fields.employerId` is supplied → use it verbatim. This is
|
|
175
|
+
* the explicit-bypass path (`--employer-id` on CLI,
|
|
176
|
+
* `employerId` on MCP) — useful for replay scripts, the
|
|
177
|
+
* disambiguation fallback, or known-good ids.
|
|
178
|
+
* 2. Otherwise, fire {@link employerAutocomplete} against
|
|
179
|
+
* `fields.company`. Toptal's autocomplete is fuzzy / prefix-
|
|
180
|
+
* search (typing "Anthropic" returns 10 partial matches), so the
|
|
181
|
+
* practical cardinality is on EXACT NAME MATCH (case-insensitive
|
|
182
|
+
* trim):
|
|
183
|
+
* - exactly 1 exact match → use its id transparently
|
|
184
|
+
* - 2+ exact matches (catalog duplicates — e.g. multiple
|
|
185
|
+
* regional subsidiaries with the same display name) →
|
|
186
|
+
* `VALIDATION_ERROR` listing the duplicates + `--employer-id`
|
|
187
|
+
* nudge
|
|
188
|
+
* - 0 exact, 0 fuzzy → `VALIDATION_ERROR` nudging to the
|
|
189
|
+
* autocomplete CLI command or `--employer-id` bypass
|
|
190
|
+
* - 0 exact, ≥1 fuzzy → `VALIDATION_ERROR` listing the top-N
|
|
191
|
+
* closest candidates with `--employer-id` nudge (the user
|
|
192
|
+
* typed a prefix; surface the catalog's actual names)
|
|
193
|
+
*
|
|
194
|
+
* The static defaults at `experienceItems: []`, `skills: []`,
|
|
195
|
+
* `showViaToptal: true` are retained pre-#395 — they were established
|
|
196
|
+
* empirically via the #344 E2E to satisfy "Expected value to not be
|
|
197
|
+
* null" on those required fields. Reviewing them in this PR would
|
|
198
|
+
* be premature without a fresh live capture; they may be revisited in
|
|
199
|
+
* a follow-up that mirrors the basic.set #393 read-merge pattern for
|
|
200
|
+
* employment.add.
|
|
201
|
+
*
|
|
202
|
+
* **Dry-run path (#395)**: when `options.dryRun === true`, the
|
|
203
|
+
* employer resolution still runs (fires `employersAutocomplete` if
|
|
204
|
+
* `employerId` is absent) so the preview's `variables.input.employment`
|
|
205
|
+
* carries the resolved `employerId`, matching the wire shape the live
|
|
206
|
+
* mutation would transmit. The `CreateEmployment` mutation transport
|
|
207
|
+
* is NOT invoked. The placeholder
|
|
208
|
+
* {@link DRY_RUN_PROFILE_ID_PLACEHOLDER} stands in for `profileId`
|
|
209
|
+
* (which the apply-path resolves via `extractProfileId`).
|
|
155
210
|
*/
|
|
156
|
-
export async function add(token, fields) {
|
|
211
|
+
export async function add(token, fields, options = {}) {
|
|
157
212
|
if (!fields.company || !fields.position) {
|
|
158
213
|
throw new ProfileError("VALIDATION_ERROR", "employment add requires --company and --role.");
|
|
159
214
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
//
|
|
166
|
-
//
|
|
167
|
-
//
|
|
168
|
-
//
|
|
215
|
+
// Resolve employerId BEFORE branching on dryRun so the preview's
|
|
216
|
+
// wire shape matches what the live mutation would transmit (#395
|
|
217
|
+
// explicit AC). The autocomplete query is a read, not a mutation —
|
|
218
|
+
// it fires in both dry-run and apply paths.
|
|
219
|
+
const employerId = await resolveEmployerId(token, fields);
|
|
220
|
+
// The wire requires several non-null fields on `CreateEmployment`
|
|
221
|
+
// (live API rejects with "Expected value to not be null" / "You can't
|
|
222
|
+
// leave this empty" otherwise). The defaults below were established
|
|
223
|
+
// empirically through E2E iteration — DO NOT add pre-emptive defaults
|
|
224
|
+
// for fields the server hasn't explicitly demanded, since
|
|
225
|
+
// `CreateEmploymentInput` rejects unknown fields with
|
|
226
|
+
// "Field is not defined on EmploymentInput" (e.g. `toptalRelated`,
|
|
227
|
+
// `highlight` are valid on `UpdateEmploymentInput` but NOT on
|
|
228
|
+
// `CreateEmploymentInput`).
|
|
229
|
+
// - `experienceItems`, `skills`, `showViaToptal` — via the #344 E2E
|
|
230
|
+
// - `publicationPermit` — via the #395 live capture (2026-05-19)
|
|
231
|
+
// Callers may still override.
|
|
169
232
|
const employment = {
|
|
170
233
|
experienceItems: [],
|
|
171
234
|
skills: [],
|
|
172
235
|
showViaToptal: true,
|
|
236
|
+
publicationPermit: false,
|
|
173
237
|
...fields,
|
|
238
|
+
employerId,
|
|
174
239
|
};
|
|
240
|
+
if (options.dryRun === true) {
|
|
241
|
+
return {
|
|
242
|
+
kind: "preview",
|
|
243
|
+
preview: buildDryRunPreview({
|
|
244
|
+
surface: "talent-profile",
|
|
245
|
+
authToken: token,
|
|
246
|
+
body: {
|
|
247
|
+
operationName: "CreateEmployment",
|
|
248
|
+
query: CREATE_EMPLOYMENT_MUTATION,
|
|
249
|
+
variables: { input: { profileId: DRY_RUN_PROFILE_ID_PLACEHOLDER, employment } },
|
|
250
|
+
},
|
|
251
|
+
}),
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
const profileId = await extractProfileId(token);
|
|
255
|
+
const before = await listByProfileId(token, profileId);
|
|
256
|
+
const beforeIds = new Set(before.map((e) => e.id));
|
|
175
257
|
const res = await callTalentProfile(token, "CreateEmployment", CREATE_EMPLOYMENT_MUTATION, { input: { profileId, employment } }, "employment add");
|
|
176
258
|
const payload = unwrapMutation(res, "createEmployment", "employment add");
|
|
177
259
|
const after = payload.profile?.employments.nodes.filter((n) => n !== null).map(mapEmploymentNode) ??
|
|
@@ -180,17 +262,186 @@ export async function add(token, fields) {
|
|
|
180
262
|
if (!created) {
|
|
181
263
|
throw new ProfileError("UNKNOWN", "employment add returned success but no new row was found in the response.");
|
|
182
264
|
}
|
|
183
|
-
return created;
|
|
265
|
+
return { kind: "created", result: created };
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Resolve `fields.employerId` for the create-employment flow (#395).
|
|
269
|
+
*
|
|
270
|
+
* - Explicit `fields.employerId` → returned verbatim (bypass).
|
|
271
|
+
* - Otherwise call {@link employerAutocomplete}; Toptal's autocomplete
|
|
272
|
+
* is fuzzy / prefix-search, so the practical cardinality is on
|
|
273
|
+
* **exact name match** (case-insensitive, trimmed):
|
|
274
|
+
* - 1 exact match → transparent use
|
|
275
|
+
* - 0 exact, 0 fuzzy → "No employer matched" nudge
|
|
276
|
+
* - 0 exact, ≥1 fuzzy → "No exact match; closest candidates"
|
|
277
|
+
* listing + `--employer-id` nudge (the user typed a prefix /
|
|
278
|
+
* substring; we surface the catalog's actual names so they can
|
|
279
|
+
* pick an id)
|
|
280
|
+
* - 2+ exact → disambiguation listing of the duplicates (the
|
|
281
|
+
* catalog has multiple records with the same display name —
|
|
282
|
+
* common for companies with city subsidiaries; the user must
|
|
283
|
+
* pick one)
|
|
284
|
+
*
|
|
285
|
+
* Errors all surface as `VALIDATION_ERROR` with actionable recovery
|
|
286
|
+
* text so the CLI / MCP layer can render them as user-facing
|
|
287
|
+
* messages without further classification.
|
|
288
|
+
*/
|
|
289
|
+
async function resolveEmployerId(token, fields) {
|
|
290
|
+
if (fields.employerId !== undefined && fields.employerId !== "") {
|
|
291
|
+
return fields.employerId;
|
|
292
|
+
}
|
|
293
|
+
// `fields.company` is asserted non-empty by the caller (the add()
|
|
294
|
+
// pre-flight rejects an empty company / position).
|
|
295
|
+
const company = fields.company ?? "";
|
|
296
|
+
const matches = await employerAutocomplete(token, company);
|
|
297
|
+
const norm = company.trim().toLowerCase();
|
|
298
|
+
const exact = matches.filter((m) => m.name.trim().toLowerCase() === norm);
|
|
299
|
+
if (exact.length === 1) {
|
|
300
|
+
const only = exact[0];
|
|
301
|
+
if (only === undefined) {
|
|
302
|
+
// Defensive: exact.length === 1 but indexed read is undefined —
|
|
303
|
+
// a TypeScript noUncheckedIndexedAccess guard. Unreachable at
|
|
304
|
+
// runtime.
|
|
305
|
+
throw new ProfileError("UNKNOWN", "employer-autocomplete returned 1 exact match but indexing it yielded undefined.");
|
|
306
|
+
}
|
|
307
|
+
return only.id;
|
|
308
|
+
}
|
|
309
|
+
if (exact.length >= 2) {
|
|
310
|
+
// Multiple catalog records share the user-supplied exact name
|
|
311
|
+
// (common for global companies with regional subsidiaries listed
|
|
312
|
+
// separately). Surface only the exact-name duplicates — the fuzzy
|
|
313
|
+
// siblings would just add noise.
|
|
314
|
+
const list = exact.map(formatCandidate).join("\n");
|
|
315
|
+
throw new ProfileError("VALIDATION_ERROR", `Multiple employers matched "${company}" exactly (${exact.length.toString()} duplicates in the catalog):\n` +
|
|
316
|
+
`${list}\n` +
|
|
317
|
+
`Pass \`--employer-id <id>\` to disambiguate.`);
|
|
318
|
+
}
|
|
319
|
+
// exact.length === 0
|
|
320
|
+
if (matches.length === 0) {
|
|
321
|
+
throw new ProfileError("VALIDATION_ERROR", `No employer matched "${company}". Use ` +
|
|
322
|
+
`\`ttctl profile employment employer-autocomplete <query>\` to search the catalog, ` +
|
|
323
|
+
`or pass \`--employer-id <id>\` to bypass autocomplete.`);
|
|
324
|
+
}
|
|
325
|
+
// 0 exact, ≥1 fuzzy. Surface the catalog's actual names so the user
|
|
326
|
+
// can refine (or pick an id directly).
|
|
327
|
+
const top = matches.slice(0, 5);
|
|
328
|
+
const list = top.map(formatCandidate).join("\n");
|
|
329
|
+
throw new ProfileError("VALIDATION_ERROR", `No exact match for "${company}" in the employer catalog ` +
|
|
330
|
+
`(${matches.length.toString()} fuzzy match${matches.length === 1 ? "" : "es"}; showing top ${top.length.toString()}):\n` +
|
|
331
|
+
`${list}\n` +
|
|
332
|
+
`Refine the company string to the exact catalog name, or pass \`--employer-id <id>\` to bypass autocomplete.`);
|
|
333
|
+
}
|
|
334
|
+
function formatCandidate(m) {
|
|
335
|
+
const loc = [m.city, m.country].filter((v) => v !== null && v !== "").join(", ");
|
|
336
|
+
return ` - ${m.id} ${m.name}${loc ? ` (${loc})` : ""}`;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Placeholder string substituted into a dry-run `UpdateEmployment`
|
|
340
|
+
* preview's variables payload for fields that the apply-path resolves by
|
|
341
|
+
* reading the current row (`experienceItems`, `skills`, `showViaToptal`,
|
|
342
|
+
* `startDate` — the four required-non-null fields injected by the
|
|
343
|
+
* read-current+merge logic, #394). Surfaced verbatim so MCP consumers can
|
|
344
|
+
* see the structural shape of what will be sent without TTCtl having
|
|
345
|
+
* fired the read transport. Same posture as `basic.set`'s
|
|
346
|
+
* {@link DRY_RUN_PROFILE_ID_PLACEHOLDER} — preserves the zero-transport-
|
|
347
|
+
* in-dry-run invariant (#165 / #379) while honoring #394's AC that the
|
|
348
|
+
* preview shows the full merged shape.
|
|
349
|
+
*/
|
|
350
|
+
export const DRY_RUN_EMPLOYMENT_MERGE_PLACEHOLDER = "<resolved at send-time by reading current state>";
|
|
351
|
+
/**
|
|
352
|
+
* Build the merged `EmploymentInput` to send for an `UpdateEmployment`
|
|
353
|
+
* mutation by reading the current row and overlaying user-supplied fields.
|
|
354
|
+
*
|
|
355
|
+
* The `talent_profile/graphql` server treats four `EmploymentInput` fields
|
|
356
|
+
* as required non-null on `UpdateEmployment` and rejects the whole
|
|
357
|
+
* variables payload with `"Expected value to not be null"` when they are
|
|
358
|
+
* absent (#394 — wire-broke meta-class #392). The four fields are
|
|
359
|
+
* `experienceItems`, `showViaToptal`, `startDate`, and `skills`. This
|
|
360
|
+
* helper injects them from the current state where the EMPLOYMENT_FRAGMENT
|
|
361
|
+
* surfaces them (`experienceItems`, `showViaToptal`, `startDate`) and
|
|
362
|
+
* defaults `skills: []` because the fragment does not currently select the
|
|
363
|
+
* read-side `skills` connection. Other fields are left undefined and
|
|
364
|
+
* omitted from the wire payload — the server keeps the existing value for
|
|
365
|
+
* any field absent from the input (the omission-is-preservation half of
|
|
366
|
+
* the merge contract; only the four required-non-null fields force-echo).
|
|
367
|
+
*
|
|
368
|
+
* **Known limitation (#394)**: `skills` defaults to `[]` because the
|
|
369
|
+
* current read fragment does not surface skills. Calling `update()` on a
|
|
370
|
+
* row that has skills will reset them to empty. A follow-up will extend
|
|
371
|
+
* the fragment to read skills and preserve them through the merge; for
|
|
372
|
+
* the test-account this is acceptable, and the bug fix here is for the
|
|
373
|
+
* minimal `{id, role}` repro that previously failed at the wire layer
|
|
374
|
+
* regardless of skills state.
|
|
375
|
+
*
|
|
376
|
+
* Exported so the MCP layer can build the same merged input for the
|
|
377
|
+
* dry-run preview (AC: "Dry-run preview shows the full merged input").
|
|
378
|
+
*
|
|
379
|
+
* @throws `ProfileError("VALIDATION_ERROR")` when `fields` is empty.
|
|
380
|
+
* @throws `ProfileError("VALIDATION_ERROR")` when `current.startDate` is
|
|
381
|
+
* `null` and the caller did not supply a `startDate` override — the
|
|
382
|
+
* wire requires a non-null `startDate` and we have nothing to send.
|
|
383
|
+
*/
|
|
384
|
+
export function buildUpdateEmploymentInput(current, fields) {
|
|
385
|
+
if (Object.keys(fields).length === 0) {
|
|
386
|
+
throw new ProfileError("VALIDATION_ERROR", "employment update requires at least one field flag.");
|
|
387
|
+
}
|
|
388
|
+
const startDate = fields.startDate ?? current.startDate;
|
|
389
|
+
if (startDate === null) {
|
|
390
|
+
throw new ProfileError("VALIDATION_ERROR", `Cannot update employment "${current.id}": startDate is required and current value is null. Supply --from to set a year.`);
|
|
391
|
+
}
|
|
392
|
+
// Server-side Rails `.blank?` gates (USER_ERROR "You can't leave this
|
|
393
|
+
// empty") — surfaced by the #394 live capture (2026-05-19): when the
|
|
394
|
+
// caller omits these, the wire layer accepts the partial input but
|
|
395
|
+
// the Rails apply path rejects it. Inject from the current row so
|
|
396
|
+
// user-supplied fields can still override. Optional pass-throughs
|
|
397
|
+
// (primaryGeographyId / reportingTo) are only set when the current
|
|
398
|
+
// row has a non-null value — sending an explicit null would change
|
|
399
|
+
// the row's state, which would defeat "merge".
|
|
400
|
+
const merged = {
|
|
401
|
+
// Wire-required non-null (GraphQL `Expected value to not be null`):
|
|
402
|
+
experienceItems: current.experienceItems ?? [],
|
|
403
|
+
// Preserve current row's skills through the merge — server rejects
|
|
404
|
+
// `skills: []` with "is too short (minimum is 1 character)" on
|
|
405
|
+
// update (#394 live-capture finding 2026-05-19). The EMPLOYMENT_FRAGMENT
|
|
406
|
+
// now selects `skills { nodes { id name } }` so `current.skills` is
|
|
407
|
+
// populated; pre-#394 it was always `[]` and update() defaulted to
|
|
408
|
+
// empty, which is what the live wire was rejecting.
|
|
409
|
+
skills: current.skills,
|
|
410
|
+
showViaToptal: current.showViaToptal,
|
|
411
|
+
startDate,
|
|
412
|
+
// Rails `.blank?` gates:
|
|
413
|
+
company: current.company,
|
|
414
|
+
publicationPermit: current.publicationPermit ?? true,
|
|
415
|
+
// industryIds: catalog refs the wire requires present and non-empty
|
|
416
|
+
// on the apply path.
|
|
417
|
+
industryIds: current.industries.map((i) => i.id),
|
|
418
|
+
};
|
|
419
|
+
if (current.employerId !== null) {
|
|
420
|
+
merged.employerId = current.employerId;
|
|
421
|
+
}
|
|
422
|
+
if (current.primaryGeography !== null) {
|
|
423
|
+
merged.primaryGeographyId = current.primaryGeography.id;
|
|
424
|
+
}
|
|
425
|
+
if (current.reportingTo !== null) {
|
|
426
|
+
merged.reportingTo = current.reportingTo;
|
|
427
|
+
}
|
|
428
|
+
return { ...merged, ...fields };
|
|
184
429
|
}
|
|
185
430
|
/**
|
|
186
431
|
* Update an existing employment row. Wire format per Pattern 1:
|
|
187
432
|
* `{ employmentId, employment: EmploymentInput }`.
|
|
433
|
+
*
|
|
434
|
+
* Reads the current row first and merges the four required-non-null
|
|
435
|
+
* fields onto the wire input (see {@link buildUpdateEmploymentInput} for
|
|
436
|
+
* the merge contract and #394 for the originating wire-broke incident).
|
|
188
437
|
*/
|
|
189
438
|
export async function update(token, id, fields) {
|
|
190
439
|
if (Object.keys(fields).length === 0) {
|
|
191
440
|
throw new ProfileError("VALIDATION_ERROR", "employment update requires at least one field flag.");
|
|
192
441
|
}
|
|
193
|
-
const
|
|
442
|
+
const current = await show(token, id);
|
|
443
|
+
const employment = buildUpdateEmploymentInput(current, fields);
|
|
444
|
+
const res = await callTalentProfile(token, "UpdateEmployment", UPDATE_EMPLOYMENT_MUTATION, { input: { employmentId: id, employment } }, "employment update");
|
|
194
445
|
const payload = unwrapMutation(res, "updateEmployment", "employment update");
|
|
195
446
|
const updated = payload.profile?.employments.nodes
|
|
196
447
|
.filter((n) => n !== null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/profile/employment/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/profile/employment/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -136,6 +136,25 @@ export interface TimesheetDetail extends TimesheetListItem {
|
|
|
136
136
|
}
|
|
137
137
|
/**
|
|
138
138
|
* Optional list filter.
|
|
139
|
+
*
|
|
140
|
+
* **Pagination divergence** (#374, per ADR-007 row 3 — "limit-only
|
|
141
|
+
* wrapper"): the viewer-wide `PendingTimesheets` wire op accepts a
|
|
142
|
+
* `pagination: { limit: Int }` input (nullable Int on a
|
|
143
|
+
* `LimitPagination` field — NO `offset`, NO `page`, NO `pageSize`).
|
|
144
|
+
* The CLI / MCP expose this as `--limit N` / `{ limit }` — diverging
|
|
145
|
+
* from the offset-style `--page` / `--per-page` used by jobs /
|
|
146
|
+
* applications / engagements / payouts whose wires ARE offset-style.
|
|
147
|
+
* Surface-honest per the council vote on 2026-05-19; documented in
|
|
148
|
+
* ADR-007 (filed in #387).
|
|
149
|
+
*
|
|
150
|
+
* The original re-spike attempt (PR #383, closed) added
|
|
151
|
+
* `--page`/`--per-page` and tried to translate to `pagination:
|
|
152
|
+
* { limit, offset }`. The wire rejected this with HTTP 400 across 8
|
|
153
|
+
* E2E tests — the field is `LimitPagination` only.
|
|
154
|
+
*
|
|
155
|
+
* `limit` is ignored when `engagement` is set — the per-engagement
|
|
156
|
+
* `Timesheets($jobActivityItemId)` wire op carries no pagination
|
|
157
|
+
* input (separate concern; see issue #374 OUT-OF-SCOPE note).
|
|
139
158
|
*/
|
|
140
159
|
export interface ListOptions {
|
|
141
160
|
/**
|
|
@@ -147,7 +166,33 @@ export interface ListOptions {
|
|
|
147
166
|
* regardless of submission state).
|
|
148
167
|
*/
|
|
149
168
|
engagement?: string;
|
|
169
|
+
/**
|
|
170
|
+
* Maximum number of pending billing cycles to return on the
|
|
171
|
+
* viewer-wide `PendingTimesheets` path. Wire-honest: maps directly to
|
|
172
|
+
* the `pagination: { limit: $limit }` input on
|
|
173
|
+
* `Viewer.billingCycles`. Default 50 (the historical hardcoded value)
|
|
174
|
+
* when the option is unset or `undefined`.
|
|
175
|
+
*
|
|
176
|
+
* Ignored when {@link engagement} is set (the per-engagement wire op
|
|
177
|
+
* has no pagination input).
|
|
178
|
+
*
|
|
179
|
+
* Wire constraint (per the `LimitPagination` field empirically
|
|
180
|
+
* confirmed via PR #383's failure transcript): `limit` is the ONLY
|
|
181
|
+
* accepted key — no `offset`, no cursor. The wire field is
|
|
182
|
+
* `LimitPagination`, not `OffsetPagination`.
|
|
183
|
+
*/
|
|
184
|
+
limit?: number;
|
|
150
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Default `pagination: { limit }` value used on the viewer-wide
|
|
188
|
+
* `PendingTimesheets` wire op when the caller does not pass
|
|
189
|
+
* {@link ListOptions.limit}. Matches the pre-#374 hardcoded value
|
|
190
|
+
* (`pagination: { limit: 50 }` in the captured operation document),
|
|
191
|
+
* preserving the historical default for flag-less callers.
|
|
192
|
+
*
|
|
193
|
+
* Exported so callers and tests share one source of truth.
|
|
194
|
+
*/
|
|
195
|
+
export declare const DEFAULT_PENDING_LIMIT = 50;
|
|
151
196
|
/**
|
|
152
197
|
* Result of {@link resolveCurrentCycle}.
|
|
153
198
|
*
|
|
@@ -238,12 +283,16 @@ export interface ResolveCurrentCycleOptions {
|
|
|
238
283
|
*
|
|
239
284
|
* Default (no `engagement` option): uses `PendingTimesheets` to fetch
|
|
240
285
|
* viewer-wide cycles that still need submission. This is the
|
|
241
|
-
* "what needs my attention" view.
|
|
286
|
+
* "what needs my attention" view. Pagination is exposed via
|
|
287
|
+
* {@link ListOptions.limit} (defaults to {@link DEFAULT_PENDING_LIMIT}
|
|
288
|
+
* to preserve pre-#374 behaviour).
|
|
242
289
|
*
|
|
243
290
|
* With `engagement` option: uses `Timesheets($jobActivityItemId)` to
|
|
244
291
|
* fetch ALL cycles for that engagement (regardless of submission
|
|
245
292
|
* state). The argument is the public `JobActivityItem.id` exposed by
|
|
246
|
-
* `engagements list`.
|
|
293
|
+
* `engagements list`. `limit` is ignored on this path (the
|
|
294
|
+
* per-engagement wire op has no pagination input — see #374
|
|
295
|
+
* OUT-OF-SCOPE note).
|
|
247
296
|
*
|
|
248
297
|
* The returned array preserves server order; the CLI / MCP do not
|
|
249
298
|
* re-sort.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/timesheet/index.ts"],"names":[],"mappings":"AAmEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,WAAW,GACX,eAAe,GACf,kBAAkB,GAClB,yBAAyB,GACzB,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,SAAS,CAAC;AAEd,qBAAa,cAAe,SAAQ,KAAK;aAGrB,IAAI,EAAE,kBAAkB;IAF1C,SAAkB,IAAI,oBAAoB;gBAExB,IAAI,EAAE,kBAAkB,EACxC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAIhC;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,CAAC;KACxD,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,0BAA0B,GAAG,IAAI,CAAC;IACrD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,mCAAmC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,sBAAsB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,eAAe,EAAE;QACf,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,GAAG,IAAI,CAAC;IACT,UAAU,EAAE,sBAAsB,GAAG;QACnC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;CACH;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/timesheet/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,29 @@ export class TimesheetError extends Error {
|
|
|
10
10
|
this.code = code;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Default `pagination: { limit }` value used on the viewer-wide
|
|
15
|
+
* `PendingTimesheets` wire op when the caller does not pass
|
|
16
|
+
* {@link ListOptions.limit}. Matches the pre-#374 hardcoded value
|
|
17
|
+
* (`pagination: { limit: 50 }` in the captured operation document),
|
|
18
|
+
* preserving the historical default for flag-less callers.
|
|
19
|
+
*
|
|
20
|
+
* Exported so callers and tests share one source of truth.
|
|
21
|
+
*/
|
|
22
|
+
export const DEFAULT_PENDING_LIMIT = 50;
|
|
13
23
|
// ---------------------------------------------------------------------
|
|
14
|
-
//
|
|
15
|
-
|
|
24
|
+
// Adapted from `../research/graphql/gateway/operations/mobile/PendingTimesheets.graphql`
|
|
25
|
+
// — the captured document hardcoded `pagination: { limit: 50 }` inline; this
|
|
26
|
+
// parameterised variant threads `$limit: Int` through the same `LimitPagination`
|
|
27
|
+
// input (`limit` is the ONLY field — no `offset`, no cursor). Per ADR-007 row
|
|
28
|
+
// 3 ("limit-only wrapper"), surface-honestly exposed as `--limit N` / `{limit}`
|
|
29
|
+
// on CLI / MCP. The wire field is verified by PR #383's HTTP 400 failure
|
|
30
|
+
// transcript: attempting `pagination: { limit, offset: 0 }` was rejected as
|
|
31
|
+
// the field is `LimitPagination`, not `OffsetPagination`. `$limit` is
|
|
32
|
+
// nullable on the wire — omission preserves server-side default behaviour;
|
|
33
|
+
// the apply path always passes the explicit value (defaulted to
|
|
34
|
+
// {@link DEFAULT_PENDING_LIMIT} when the caller omits {@link ListOptions.limit}).
|
|
35
|
+
const PENDING_TIMESHEETS_QUERY = `query PendingTimesheets($limit: Int) { viewer { __typename id ...pendingTimesheets } } fragment minimumCommitmentData on MinimumCommitment { __typename applicable minimumHours reasonNotApplicable } fragment timesheetListFields on BillingCycle { __typename id startDate endDate hours minimumCommitment { __typename ...minimumCommitmentData } timesheetOverdue timesheetSubmissionOpenDatetime timesheetSubmissionDeadlineDatetime timesheetSubmitted engagement { __typename id job { __typename id client { __typename id fullName } title } } } fragment pendingTimesheets on Viewer { __typename billingCycles(filters: { pendingTimesheetOnly: true } , pagination: { limit: $limit } ) { __typename nodes { __typename ...timesheetListFields } } }`;
|
|
16
36
|
// Verbatim from `../research/graphql/gateway/operations/mobile/Timesheets.graphql`.
|
|
17
37
|
const TIMESHEETS_QUERY = `query Timesheets($jobActivityItemId: ID!) { viewer { __typename id jobActivityItem(id: $jobActivityItemId) { __typename id engagement { __typename id billingCycles(filters: { onlyTimesheets: true } ) { __typename ids nodes { __typename ...timesheetListFields } } } } } } fragment minimumCommitmentData on MinimumCommitment { __typename applicable minimumHours reasonNotApplicable } fragment timesheetListFields on BillingCycle { __typename id startDate endDate hours minimumCommitment { __typename ...minimumCommitmentData } timesheetOverdue timesheetSubmissionOpenDatetime timesheetSubmissionDeadlineDatetime timesheetSubmitted engagement { __typename id job { __typename id client { __typename id fullName } title } } }`;
|
|
18
38
|
// Verbatim from `../research/graphql/gateway/operations/mobile/TimesheetDetails.graphql`.
|
|
@@ -83,19 +103,26 @@ function projectDetailItem(wire) {
|
|
|
83
103
|
*
|
|
84
104
|
* Default (no `engagement` option): uses `PendingTimesheets` to fetch
|
|
85
105
|
* viewer-wide cycles that still need submission. This is the
|
|
86
|
-
* "what needs my attention" view.
|
|
106
|
+
* "what needs my attention" view. Pagination is exposed via
|
|
107
|
+
* {@link ListOptions.limit} (defaults to {@link DEFAULT_PENDING_LIMIT}
|
|
108
|
+
* to preserve pre-#374 behaviour).
|
|
87
109
|
*
|
|
88
110
|
* With `engagement` option: uses `Timesheets($jobActivityItemId)` to
|
|
89
111
|
* fetch ALL cycles for that engagement (regardless of submission
|
|
90
112
|
* state). The argument is the public `JobActivityItem.id` exposed by
|
|
91
|
-
* `engagements list`.
|
|
113
|
+
* `engagements list`. `limit` is ignored on this path (the
|
|
114
|
+
* per-engagement wire op has no pagination input — see #374
|
|
115
|
+
* OUT-OF-SCOPE note).
|
|
92
116
|
*
|
|
93
117
|
* The returned array preserves server order; the CLI / MCP do not
|
|
94
118
|
* re-sort.
|
|
95
119
|
*/
|
|
96
120
|
export async function list(token, opts = {}) {
|
|
97
121
|
if (opts.engagement === undefined) {
|
|
98
|
-
const
|
|
122
|
+
const limit = opts.limit ?? DEFAULT_PENDING_LIMIT;
|
|
123
|
+
const data = await callGateway(token, "PendingTimesheets", PENDING_TIMESHEETS_QUERY, {
|
|
124
|
+
limit,
|
|
125
|
+
});
|
|
99
126
|
if (data.viewer === null) {
|
|
100
127
|
throw new TimesheetError("NO_VIEWER", "Session is valid but no viewer is bound to it.");
|
|
101
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/timesheet/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAiEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA+C5D,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IAFA,IAAI,GAAG,gBAAgB,CAAC;IAC1C,YACkB,IAAwB,EACxC,OAAe,EACf,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAoB;IAK1C,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/timesheet/index.ts"],"names":[],"mappings":"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"}
|