@ttctl/core 0.1.0-rc.3 → 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.
@@ -302,16 +302,26 @@ export async function show(token) {
302
302
  return body.data;
303
303
  }
304
304
  /**
305
- * Full-document `GET_BASIC_INFO` query string. Trimmed subset of the
306
- * canonical bundle-extracted operation
305
+ * Full-document `GET_BASIC_INFO` query string. Subset of the canonical
306
+ * bundle-extracted operation
307
307
  * (`research/graphql/talent_profile/operations/GET_BASIC_INFO.graphql`):
308
- * we ask only for the read-display-relevant fields surfaced by
309
- * {@link BasicInfo} `about`, `quote`, `languages.nodes` — and skip
310
- * the `ProfileRecommendations`, `softwareSkills`, social URL, and
311
- * top-level `countries` / `languages` catalog fields that the canonical
312
- * operation also fetches (out of scope for the read-display surface; the
313
- * social URLs are owned by the `external` sub-domain, the catalog
314
- * payloads are autocomplete-tier).
308
+ * we ask for the fields surfaced by {@link BasicInfo} — narrative
309
+ * (`about`, `quote`), identity (`fullName`, `legalName`, `phoneNumber`),
310
+ * location (`city`, `placeIdentity`, `country.id`, `citizenship.id`),
311
+ * collections (`languages.nodes`, `softwareSkills.nodes`) and skip
312
+ * the `ProfileRecommendations` fragment, social URLs (owned by the
313
+ * `external` sub-domain), `timeZone`, `skype`, and the top-level
314
+ * `countries` / `languages` catalog payloads that the canonical
315
+ * operation also fetches (autocomplete-tier, not needed for read or
316
+ * merge-on-write).
317
+ *
318
+ * **Scope rationale (#393)**: this selection set covers the full set of
319
+ * server-required non-null fields on `UpdateBasicInfoInput` (per the
320
+ * issue's wire-error trace — `fullName`, `legalName`, `countryId`,
321
+ * `city`, `placeIdentity`, `citizenshipId`, `languageIds`,
322
+ * `phoneNumber`, `softwareSkills`). Adding any of these to the query
323
+ * later would be an additive wire change — the snapshot diff catches
324
+ * accidental regressions.
315
325
  *
316
326
  * Operation name `GET_BASIC_INFO` (SCREAMING_CASE) matches the bundle-
317
327
  * extracted document so the server's literal `operationName` allowlist
@@ -322,18 +332,39 @@ const GET_BASIC_INFO_QUERY = `query GET_BASIC_INFO($profileId: ID!) {
322
332
  id
323
333
  about
324
334
  quote
335
+ fullName
336
+ legalName
337
+ city
338
+ placeIdentity
339
+ phoneNumber
340
+ country {
341
+ id
342
+ }
343
+ citizenship {
344
+ id
345
+ }
325
346
  languages {
326
347
  nodes {
327
348
  id
328
349
  name
329
350
  }
330
351
  }
352
+ softwareSkills {
353
+ nodes {
354
+ id
355
+ name
356
+ }
357
+ }
331
358
  }
332
359
  }`;
333
360
  /**
334
- * Fetch the read-side `talent_profile`-only basic-info fields that
335
- * complement {@link show} — `bio` (→ `Profile.about`), `headline` (→
336
- * `Profile.quote`), and `languages`.
361
+ * Fetch the {@link BasicInfo} projection of the `talent_profile`-only
362
+ * profile fields that complement {@link show} — narrative scalars
363
+ * (`bio`, `headline`), identity (`fullName`, `legalName`, `phoneNumber`),
364
+ * location (`city`, `placeIdentity`, `countryId`, `citizenshipId`), and
365
+ * collections (`languages`, `softwareSkills`). The full field roster
366
+ * is required by `set()`'s read-merge path (#393); see
367
+ * {@link BasicInfo} for per-field semantics.
337
368
  *
338
369
  * Routed against `https://www.toptal.com/api/talent_profile/graphql` via
339
370
  * {@link impersonatedTransport} (Cloudflare-protected; Chrome TLS
@@ -341,8 +372,9 @@ const GET_BASIC_INFO_QUERY = `query GET_BASIC_INFO($profileId: ID!) {
341
372
  * the `profileId` required by the `profile(id: ID!)` field — same
342
373
  * pattern as {@link photoShow}.
343
374
  *
344
- * Returns a typed {@link BasicInfo} projection — `null` for fields the
345
- * user hasn't set, an empty array for `languages` when none.
375
+ * Returns a typed {@link BasicInfo} projection — `null` for scalars the
376
+ * user hasn't set, empty arrays for `languages` and `softwareSkills`
377
+ * when none.
346
378
  *
347
379
  * Errors:
348
380
  * - `Cf403Error` propagates from the talent-profile transport.
@@ -397,23 +429,42 @@ export async function getBasicInfo(token) {
397
429
  throw new ProfileError("USER_ERROR", `No profile found with id "${profileId}".`);
398
430
  }
399
431
  const p = body.data.profile;
400
- const rawNodes = p.languages?.nodes ?? [];
401
- const languages = [];
402
- for (const node of rawNodes) {
432
+ const languages = collectIdNameNodes(p.languages?.nodes);
433
+ const softwareSkills = collectIdNameNodes(p.softwareSkills?.nodes);
434
+ return {
435
+ profileId: typeof p.id === "string" && p.id.length > 0 ? p.id : profileId,
436
+ bio: typeof p.about === "string" ? p.about : null,
437
+ headline: typeof p.quote === "string" ? p.quote : null,
438
+ languages,
439
+ fullName: typeof p.fullName === "string" ? p.fullName : null,
440
+ legalName: typeof p.legalName === "string" ? p.legalName : null,
441
+ city: typeof p.city === "string" ? p.city : null,
442
+ placeIdentity: typeof p.placeIdentity === "string" ? p.placeIdentity : null,
443
+ countryId: typeof p.country?.id === "string" && p.country.id.length > 0 ? p.country.id : null,
444
+ citizenshipId: typeof p.citizenship?.id === "string" && p.citizenship.id.length > 0 ? p.citizenship.id : null,
445
+ phoneNumber: typeof p.phoneNumber === "string" ? p.phoneNumber : null,
446
+ softwareSkills,
447
+ };
448
+ }
449
+ /**
450
+ * Normalise a `{nodes: [{id, name}, ...]}` connection — used identically
451
+ * for `languages` and `softwareSkills`. Drops null entries, entries with
452
+ * empty string ids, and entries where `name` is not a string. The
453
+ * filtered output guarantees both fields are non-empty strings, matching
454
+ * the {@link ProfileLanguage} / {@link ProfileSoftwareSkill} contract.
455
+ */
456
+ function collectIdNameNodes(rawNodes) {
457
+ const out = [];
458
+ for (const node of rawNodes ?? []) {
403
459
  if (node === null || typeof node !== "object")
404
460
  continue;
405
461
  if (typeof node.id !== "string" || node.id.length === 0)
406
462
  continue;
407
463
  if (typeof node.name !== "string")
408
464
  continue;
409
- languages.push({ id: node.id, name: node.name });
465
+ out.push({ id: node.id, name: node.name });
410
466
  }
411
- return {
412
- profileId: typeof p.id === "string" && p.id.length > 0 ? p.id : profileId,
413
- bio: typeof p.about === "string" ? p.about : null,
414
- headline: typeof p.quote === "string" ? p.quote : null,
415
- languages,
416
- };
467
+ return out;
417
468
  }
418
469
  /**
419
470
  * Full-document `UPDATE_BASIC_INFO` mutation string.
@@ -461,6 +512,28 @@ const UPDATE_BASIC_INFO_MUTATION = `mutation UPDATE_BASIC_INFO($input: UpdateBas
461
512
  * recognize the placeholder when surfacing the preview.
462
513
  */
463
514
  export const DRY_RUN_PROFILE_ID_PLACEHOLDER = "<resolved at send-time from session token>";
515
+ /**
516
+ * Placeholder string substituted for the basic-info scalar fields that
517
+ * the apply-path merges from the current profile state via
518
+ * {@link getBasicInfo}. The dry-run preview keeps the full input shape
519
+ * (so consumers see exactly which fields the live mutation will send)
520
+ * but uses these placeholders for values that would normally be read
521
+ * server-side. The placeholder is intentionally distinct from
522
+ * {@link DRY_RUN_PROFILE_ID_PLACEHOLDER} so the two preview surfaces
523
+ * remain separately recognisable.
524
+ *
525
+ * Applies to: `fullName`, `legalName`, `city`, `placeIdentity`,
526
+ * `countryId`, `citizenshipId`, `phoneNumber`, `about`, `quote` —
527
+ * any scalar field that the merge path reads from current state when
528
+ * the user didn't supply it. (Fields the user DID supply are echoed
529
+ * verbatim into the preview, same as the apply path.)
530
+ *
531
+ * `languageIds` and `softwareSkills` use a dedicated empty-array
532
+ * placeholder (`[]`) — the absence of an array is more readable than a
533
+ * placeholder array, and consumers branching on the dry-run shape can
534
+ * inspect `Array.isArray(...)` without special-case logic.
535
+ */
536
+ export const DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER = "<preserved from current profile state>";
464
537
  /**
465
538
  * Update a subset of the signed-in user's basic-info fields (currently
466
539
  * `bio` → `about` and `headline` → `quote`) via the Cloudflare-protected
@@ -468,39 +541,56 @@ export const DRY_RUN_PROFILE_ID_PLACEHOLDER = "<resolved at send-time from sessi
468
541
  *
469
542
  * Authenticates via `Authorization: Token token=<token>` (the canonical
470
543
  * Toptal auth mechanism). Cookies are NOT load-bearing — Chrome TLS
471
- * impersonation alone passes Cloudflare. Internally calls `show()`
472
- * (against mobile-gateway) first to obtain the `profileId` required by the
473
- * mutation input, then issues the typed `UpdateBasicInfo` mutation against
474
- * talent-profile via `impersonatedTransport`. Returns the server-confirmed
475
- * updated values wrapped in a {@link SetOutcomeApplied} discriminator.
544
+ * impersonation alone passes Cloudflare.
545
+ *
546
+ * **Read-merge protocol (#393)**: the server treats `UpdateBasicInfoInput!`
547
+ * as a **full-replacement contract** required non-null fields omitted
548
+ * from the input fail with "Expected value to not be null", regardless
549
+ * of their value in the current profile state. To support a partial
550
+ * "I only want to change bio + headline" use case without losing
551
+ * any of the other required fields, the apply path:
552
+ *
553
+ * 1. Calls {@link getBasicInfo} to read the current full state (this
554
+ * transitively calls `show()` for `profileId`).
555
+ * 2. Merges user-supplied fields (`bio` → `about`, `headline` → `quote`)
556
+ * over the read snapshot.
557
+ * 3. Submits the full {@link UpdateBasicInfoInput} with every required
558
+ * field populated.
476
559
  *
477
- * Dry-run path (issue #52): when invoked with `options.dryRun === true`,
478
- * builds a {@link DryRunPreview} of the WRITE request without invoking
479
- * any transport (read OR write) and returns it wrapped in {@link
480
- * SetOutcomePreview}. The preview substitutes a placeholder string
481
- * ({@link DRY_RUN_PROFILE_ID_PLACEHOLDER}) for `profileId` because the
482
- * apply-path resolves it via `show()` (a stock-transport read call) and
483
- * the dry-run AC requires zero transport invocations. The bearer token
484
- * is redacted in the preview's `headers.authorization` per the security
485
- * contract documented on {@link DryRunPreview}.
560
+ * The extra read round-trip is acceptable for an update-the-profile
561
+ * use case (profile updates are infrequent; the read is plain HTTPS
562
+ * against the talent-profile surface).
563
+ *
564
+ * Dry-run path (issue #52, extended for #393): when invoked with
565
+ * `options.dryRun === true`, the preview is built WITHOUT firing any
566
+ * transport (zero network I/O preserved from the #52 AC). Fields that
567
+ * the apply-path would have read from current state use
568
+ * {@link DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER}; user-supplied fields
569
+ * are echoed verbatim. Result: the preview's `variables.input.profile`
570
+ * carries the exact key set the live mutation will send, with values
571
+ * differentiated by `<preserved from current profile state>` (read-merged)
572
+ * vs the user's literals (overridden). The bearer token is redacted in
573
+ * the preview's `headers.authorization` per the security contract
574
+ * documented on {@link DryRunPreview}.
486
575
  *
487
576
  * Errors:
488
577
  * - `ProfileError` with code `VALIDATION_ERROR` when neither `bio` nor
489
578
  * `headline` is supplied — the contract requires at least one. Fires
490
579
  * in BOTH the apply-path and the dry-run path.
491
580
  * - `Cf403Error` propagates from the talent-profile transport when
492
- * Cloudflare returns 403. Apply-path only.
581
+ * Cloudflare returns 403. Apply-path only (dry-run never touches the
582
+ * network).
493
583
  * - `AuthRevokedError` on token expiry (HTTP 401, or any GraphQL
494
584
  * `extensions.code` matching `isAuthRevokedExtensionCode` — currently
495
585
  * `'UNAUTHENTICATED'`, `'AUTHENTICATION_REQUIRED'`, or `'UNAUTHORIZED'`).
496
- * Apply-path only.
586
+ * Apply-path only — fires on EITHER the read-merge call or the write.
497
587
  * - `ProfileError` with code `NO_VIEWER` when no viewer is bound.
498
- * Apply-path only — dry-run skips the read entirely.
588
+ * Apply-path only — fires on the read-merge call.
499
589
  * - `ProfileError` with code `USER_ERROR` when the mutation returns a
500
590
  * non-empty `errors` array (validation failures from the server, e.g., a
501
591
  * bio that exceeds the platform's length limit). Apply-path only.
502
- * - `ProfileError` with code `GRAPHQL_ERROR` on top-level GraphQL errors.
503
- * Apply-path only.
592
+ * - `ProfileError` with code `GRAPHQL_ERROR` on top-level GraphQL errors
593
+ * from EITHER the read or write call. Apply-path only.
504
594
  * - `ProfileError` with code `NETWORK_ERROR` on transport-level throws.
505
595
  * Apply-path only.
506
596
  */
@@ -508,21 +598,26 @@ export async function set(token, changes, options = {}) {
508
598
  if (changes.bio === undefined && changes.headline === undefined) {
509
599
  throw new ProfileError("VALIDATION_ERROR", "Profile update requires at least one of `bio` or `headline`.");
510
600
  }
511
- const profileFields = {};
512
- if (changes.bio !== undefined)
513
- profileFields.about = changes.bio;
514
- if (changes.headline !== undefined)
515
- profileFields.quote = changes.headline;
516
- // Dry-run short-circuit: build the WRITE request shape with a
517
- // placeholder `profileId` and return a preview without any transport
518
- // call. Apply-path resolves `profileId` via `show()` (a mobile-gateway
519
- // read), but dry-run skips that step so neither transport is invoked
520
- // — the AC for issue #52 reads "transport never called" in the
521
- // singular and the helper honors it for both directions.
601
+ // Dry-run short-circuit: build the WRITE request shape with placeholders
602
+ // for fields that the apply-path would read from current state. Zero
603
+ // transport calls (read OR write) — the #52 AC reads "transport never
604
+ // called" in the singular and we honor it for both directions.
522
605
  if (options.dryRun === true) {
523
606
  const previewInput = {
524
607
  profileId: DRY_RUN_PROFILE_ID_PLACEHOLDER,
525
- profile: profileFields,
608
+ profile: {
609
+ about: changes.bio !== undefined ? changes.bio : DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
610
+ quote: changes.headline !== undefined ? changes.headline : DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
611
+ fullName: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
612
+ legalName: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
613
+ city: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
614
+ placeIdentity: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
615
+ countryId: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
616
+ citizenshipId: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
617
+ phoneNumber: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
618
+ languageIds: [],
619
+ softwareSkills: [],
620
+ },
526
621
  };
527
622
  return {
528
623
  kind: "preview",
@@ -537,16 +632,29 @@ export async function set(token, changes, options = {}) {
537
632
  }),
538
633
  };
539
634
  }
540
- // Need profileId for the mutation input fetch the current profile first.
541
- // Errors from show() (ProfileError) propagate verbatim: a write attempt
542
- // that can't read its own profile is unrecoverable, and surfacing the
543
- // read-side error gives the user the same actionable message they'd get
544
- // from `ttctl profile show`.
545
- const profile = await show(token);
546
- const profileId = profile.viewer?.viewerRole.profileId;
547
- if (profileId === undefined) {
548
- throw new ProfileError("NO_VIEWER", "Cannot update profile: viewer or profile id missing from the session response.");
549
- }
635
+ // Read-merge: fetch the current full basic-info state so the mutation
636
+ // input carries every server-required non-null field (#393). Errors
637
+ // from getBasicInfo (ProfileError / AuthRevokedError / Cf403Error)
638
+ // propagate verbatim a write attempt that can't read its own profile
639
+ // is unrecoverable, and surfacing the read-side error gives the user
640
+ // the same actionable message they'd get from `ttctl profile show`.
641
+ const current = await getBasicInfo(token);
642
+ // Merge user-supplied fields over the current state. User intent wins:
643
+ // `changes.bio === ""` is a real "clear the bio" intent, distinct from
644
+ // "leave it alone" (which is `changes.bio === undefined`).
645
+ const merged = {
646
+ about: changes.bio !== undefined ? changes.bio : current.bio,
647
+ quote: changes.headline !== undefined ? changes.headline : current.headline,
648
+ fullName: current.fullName,
649
+ legalName: current.legalName,
650
+ city: current.city,
651
+ placeIdentity: current.placeIdentity,
652
+ countryId: current.countryId,
653
+ citizenshipId: current.citizenshipId,
654
+ phoneNumber: current.phoneNumber,
655
+ languageIds: current.languages.map((l) => l.id),
656
+ softwareSkills: current.softwareSkills.map((s) => ({ id: s.id, name: s.name })),
657
+ };
550
658
  let res;
551
659
  try {
552
660
  res = await impersonatedTransport({
@@ -555,7 +663,9 @@ export async function set(token, changes, options = {}) {
555
663
  body: {
556
664
  operationName: "UPDATE_BASIC_INFO",
557
665
  query: UPDATE_BASIC_INFO_MUTATION,
558
- variables: { input: { profileId, profile: profileFields } },
666
+ variables: {
667
+ input: { profileId: current.profileId, profile: merged },
668
+ },
559
669
  },
560
670
  });
561
671
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/profile/basic/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/profile/basic/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { DryRunPreview } from "../../../transport.js";
1
2
  /**
2
3
  * `Employment` row as ttctl exposes it. Trimmed read-side projection of
3
4
  * the `Employment` GraphQL fragment (see
@@ -38,6 +39,22 @@ export interface Employment {
38
39
  code: string | null;
39
40
  name: string | null;
40
41
  } | null;
42
+ /**
43
+ * The catalog id of the resolved employer (#394 — surfaced read-side so
44
+ * `update()` can echo it back through the merge; the wire's
45
+ * `UpdateEmploymentInput` requires `employerId` even when the caller
46
+ * only supplies `position`, and the read-side previously hid the id).
47
+ */
48
+ employerId: string | null;
49
+ /**
50
+ * Catalog skills attached to the row (#394 — surfaced read-side so
51
+ * `update()` can preserve them through the merge; the wire requires
52
+ * `skills` to be non-empty on update).
53
+ */
54
+ skills: {
55
+ id: string;
56
+ name: string;
57
+ }[];
41
58
  }
42
59
  /**
43
60
  * Fields editable on an Employment row. Mirrors `EmploymentInput` per the
@@ -51,9 +68,17 @@ export interface Employment {
51
68
  * fields (employerId, engagementId, industryIds, managementExperience,
52
69
  * primaryGeographyId, reportingTo, skills, …) are exposed at the type
53
70
  * level so future leaves can grow without churning callers.
71
+ *
72
+ * `employerId` is the server-side catalog identifier for the employer
73
+ * record (e.g. "V1-Employer-1234"). `add()` requires either an explicit
74
+ * `employerId` or a `company` that resolves to exactly one
75
+ * autocomplete match — see {@link add} for the resolution policy. Per
76
+ * the captured input shape, `employerId` is nullable only when
77
+ * `noWebsite: true` (which TTCtl does not currently surface on `add`).
54
78
  */
55
79
  export interface EmploymentFields {
56
80
  company?: string;
81
+ employerId?: string;
57
82
  position?: string;
58
83
  companyWebsite?: string | null;
59
84
  noWebsite?: boolean;
@@ -67,8 +92,60 @@ export interface EmploymentFields {
67
92
  industryIds?: string[];
68
93
  primaryGeographyId?: string | null;
69
94
  reportingTo?: string | null;
70
- skills?: string[];
95
+ /**
96
+ * Catalog skill refs (wire shape: `SkillRefInput[]` = `{ id, name }[]`,
97
+ * not the `string[]` originally declared — corrected #394 after the
98
+ * live capture showed the live mutation accepts the object form and
99
+ * rejects empty arrays on update).
100
+ */
101
+ skills?: {
102
+ id: string;
103
+ name: string;
104
+ }[];
105
+ }
106
+ /**
107
+ * Options accepted by {@link add}. `dryRun` mirrors the option-shape
108
+ * established by `basic.set` (#393 / SetOptions) so the cross-service
109
+ * surface stays uniform — callers that branch on the outcome's `kind`
110
+ * discriminator can use the same code path regardless of which
111
+ * mutation they're invoking.
112
+ *
113
+ * The `dryRun` path fires the employer autocomplete read so the preview
114
+ * shows the resolved `employerId` (not the raw `company` string). This
115
+ * departs from `basic.set`'s zero-network dry-run by design (#395):
116
+ * the alternative — placeholder employerId — would misrepresent the
117
+ * wire shape, since the server-side input requires the resolved id, not
118
+ * the company name. The mutation transport is still NEVER fired in
119
+ * `dryRun` mode.
120
+ */
121
+ export interface AddOptions {
122
+ dryRun?: boolean;
123
+ }
124
+ /**
125
+ * Discriminated outcome of an {@link add} call when the apply-path
126
+ * succeeded — the newly created {@link Employment} row.
127
+ */
128
+ export interface AddOutcomeCreated {
129
+ kind: "created";
130
+ result: Employment;
131
+ }
132
+ /**
133
+ * Discriminated outcome of an {@link add} call invoked with
134
+ * `dryRun: true` — the structured preview of the request that WOULD
135
+ * have been sent. The `employersAutocomplete` read query MAY have been
136
+ * fired during dry-run to resolve `employerId`; the `CreateEmployment`
137
+ * mutation transport was NOT fired.
138
+ */
139
+ export interface AddOutcomePreview {
140
+ kind: "preview";
141
+ preview: DryRunPreview;
71
142
  }
143
+ /**
144
+ * Discriminated-union return type for {@link add}. Apply-path callers
145
+ * branch on `outcome.kind === "created"`; dry-run callers branch on
146
+ * `"preview"`. Symmetric with `basic.set`'s {@link SetOutcome} (#393).
147
+ */
148
+ export type AddOutcome = AddOutcomeCreated | AddOutcomePreview;
72
149
  /**
73
150
  * Lightweight `Employer` reference returned by
74
151
  * `employer-autocomplete`. Mirrors the read-side `Employer` fragment
@@ -97,12 +174,107 @@ export declare function list(token: string): Promise<Employment[]>;
97
174
  export declare function show(token: string, id: string): Promise<Employment>;
98
175
  /**
99
176
  * Create a new employment row. Wire format per Pattern 2: `{ profileId,
100
- * employment: EmploymentInput }`. `company` and `position` are required.
177
+ * employment: EmploymentInput }`.
178
+ *
179
+ * **employerId resolution (#395)**: the live `talent_profile/graphql`
180
+ * server requires `employment.employerId` (the catalog identifier),
181
+ * NOT the free-text `company` string. Pre-#395, `add({company, role,
182
+ * …})` sent only the company string and was rejected with
183
+ * `USER_ERROR: employment add rejected (employerId): You can't leave
184
+ * this empty`. The fix:
185
+ *
186
+ * 1. If `fields.employerId` is supplied → use it verbatim. This is
187
+ * the explicit-bypass path (`--employer-id` on CLI,
188
+ * `employerId` on MCP) — useful for replay scripts, the
189
+ * disambiguation fallback, or known-good ids.
190
+ * 2. Otherwise, fire {@link employerAutocomplete} against
191
+ * `fields.company`. Toptal's autocomplete is fuzzy / prefix-
192
+ * search (typing "Anthropic" returns 10 partial matches), so the
193
+ * practical cardinality is on EXACT NAME MATCH (case-insensitive
194
+ * trim):
195
+ * - exactly 1 exact match → use its id transparently
196
+ * - 2+ exact matches (catalog duplicates — e.g. multiple
197
+ * regional subsidiaries with the same display name) →
198
+ * `VALIDATION_ERROR` listing the duplicates + `--employer-id`
199
+ * nudge
200
+ * - 0 exact, 0 fuzzy → `VALIDATION_ERROR` nudging to the
201
+ * autocomplete CLI command or `--employer-id` bypass
202
+ * - 0 exact, ≥1 fuzzy → `VALIDATION_ERROR` listing the top-N
203
+ * closest candidates with `--employer-id` nudge (the user
204
+ * typed a prefix; surface the catalog's actual names)
205
+ *
206
+ * The static defaults at `experienceItems: []`, `skills: []`,
207
+ * `showViaToptal: true` are retained pre-#395 — they were established
208
+ * empirically via the #344 E2E to satisfy "Expected value to not be
209
+ * null" on those required fields. Reviewing them in this PR would
210
+ * be premature without a fresh live capture; they may be revisited in
211
+ * a follow-up that mirrors the basic.set #393 read-merge pattern for
212
+ * employment.add.
213
+ *
214
+ * **Dry-run path (#395)**: when `options.dryRun === true`, the
215
+ * employer resolution still runs (fires `employersAutocomplete` if
216
+ * `employerId` is absent) so the preview's `variables.input.employment`
217
+ * carries the resolved `employerId`, matching the wire shape the live
218
+ * mutation would transmit. The `CreateEmployment` mutation transport
219
+ * is NOT invoked. The placeholder
220
+ * {@link DRY_RUN_PROFILE_ID_PLACEHOLDER} stands in for `profileId`
221
+ * (which the apply-path resolves via `extractProfileId`).
222
+ */
223
+ export declare function add(token: string, fields: EmploymentFields, options?: AddOptions): Promise<AddOutcome>;
224
+ /**
225
+ * Placeholder string substituted into a dry-run `UpdateEmployment`
226
+ * preview's variables payload for fields that the apply-path resolves by
227
+ * reading the current row (`experienceItems`, `skills`, `showViaToptal`,
228
+ * `startDate` — the four required-non-null fields injected by the
229
+ * read-current+merge logic, #394). Surfaced verbatim so MCP consumers can
230
+ * see the structural shape of what will be sent without TTCtl having
231
+ * fired the read transport. Same posture as `basic.set`'s
232
+ * {@link DRY_RUN_PROFILE_ID_PLACEHOLDER} — preserves the zero-transport-
233
+ * in-dry-run invariant (#165 / #379) while honoring #394's AC that the
234
+ * preview shows the full merged shape.
235
+ */
236
+ export declare const DRY_RUN_EMPLOYMENT_MERGE_PLACEHOLDER: "<resolved at send-time by reading current state>";
237
+ /**
238
+ * Build the merged `EmploymentInput` to send for an `UpdateEmployment`
239
+ * mutation by reading the current row and overlaying user-supplied fields.
240
+ *
241
+ * The `talent_profile/graphql` server treats four `EmploymentInput` fields
242
+ * as required non-null on `UpdateEmployment` and rejects the whole
243
+ * variables payload with `"Expected value to not be null"` when they are
244
+ * absent (#394 — wire-broke meta-class #392). The four fields are
245
+ * `experienceItems`, `showViaToptal`, `startDate`, and `skills`. This
246
+ * helper injects them from the current state where the EMPLOYMENT_FRAGMENT
247
+ * surfaces them (`experienceItems`, `showViaToptal`, `startDate`) and
248
+ * defaults `skills: []` because the fragment does not currently select the
249
+ * read-side `skills` connection. Other fields are left undefined and
250
+ * omitted from the wire payload — the server keeps the existing value for
251
+ * any field absent from the input (the omission-is-preservation half of
252
+ * the merge contract; only the four required-non-null fields force-echo).
253
+ *
254
+ * **Known limitation (#394)**: `skills` defaults to `[]` because the
255
+ * current read fragment does not surface skills. Calling `update()` on a
256
+ * row that has skills will reset them to empty. A follow-up will extend
257
+ * the fragment to read skills and preserve them through the merge; for
258
+ * the test-account this is acceptable, and the bug fix here is for the
259
+ * minimal `{id, role}` repro that previously failed at the wire layer
260
+ * regardless of skills state.
261
+ *
262
+ * Exported so the MCP layer can build the same merged input for the
263
+ * dry-run preview (AC: "Dry-run preview shows the full merged input").
264
+ *
265
+ * @throws `ProfileError("VALIDATION_ERROR")` when `fields` is empty.
266
+ * @throws `ProfileError("VALIDATION_ERROR")` when `current.startDate` is
267
+ * `null` and the caller did not supply a `startDate` override — the
268
+ * wire requires a non-null `startDate` and we have nothing to send.
101
269
  */
102
- export declare function add(token: string, fields: EmploymentFields): Promise<Employment>;
270
+ export declare function buildUpdateEmploymentInput(current: Employment, fields: EmploymentFields): EmploymentFields;
103
271
  /**
104
272
  * Update an existing employment row. Wire format per Pattern 1:
105
273
  * `{ employmentId, employment: EmploymentInput }`.
274
+ *
275
+ * Reads the current row first and merges the four required-non-null
276
+ * fields onto the wire input (see {@link buildUpdateEmploymentInput} for
277
+ * the merge contract and #394 for the originating wire-broke incident).
106
278
  */
107
279
  export declare function update(token: string, id: string, fields: EmploymentFields): Promise<Employment>;
108
280
  /**