@ttctl/core 0.0.0 → 0.1.0-rc.1

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.
Files changed (195) hide show
  1. package/README.md +49 -9
  2. package/dist/__generated__/gateway.d.ts +4546 -0
  3. package/dist/__generated__/gateway.d.ts.map +1 -0
  4. package/dist/__generated__/gateway.js +9 -0
  5. package/dist/__generated__/gateway.js.map +1 -0
  6. package/dist/__generated__/talent-profile-zod-schemas.d.ts +1187 -0
  7. package/dist/__generated__/talent-profile-zod-schemas.d.ts.map +1 -0
  8. package/dist/__generated__/talent-profile-zod-schemas.js +1136 -0
  9. package/dist/__generated__/talent-profile-zod-schemas.js.map +1 -0
  10. package/dist/__generated__/talent-profile.d.ts +1397 -0
  11. package/dist/__generated__/talent-profile.d.ts.map +1 -0
  12. package/dist/__generated__/talent-profile.js +9 -0
  13. package/dist/__generated__/talent-profile.js.map +1 -0
  14. package/dist/__generated__/zod-schemas.d.ts +2895 -0
  15. package/dist/__generated__/zod-schemas.d.ts.map +1 -0
  16. package/dist/__generated__/zod-schemas.js +3121 -0
  17. package/dist/__generated__/zod-schemas.js.map +1 -0
  18. package/dist/__tests__/fixtures/profile/builders.d.ts +74 -0
  19. package/dist/__tests__/fixtures/profile/builders.d.ts.map +1 -0
  20. package/dist/__tests__/fixtures/profile/builders.js +196 -0
  21. package/dist/__tests__/fixtures/profile/builders.js.map +1 -0
  22. package/dist/__tests__/fixtures/profile/data.d.ts +39 -0
  23. package/dist/__tests__/fixtures/profile/data.d.ts.map +1 -0
  24. package/dist/__tests__/fixtures/profile/data.js +230 -0
  25. package/dist/__tests__/fixtures/profile/data.js.map +1 -0
  26. package/dist/__tests__/fixtures/profile/index.d.ts +9 -0
  27. package/dist/__tests__/fixtures/profile/index.d.ts.map +1 -0
  28. package/dist/__tests__/fixtures/profile/index.js +10 -0
  29. package/dist/__tests__/fixtures/profile/index.js.map +1 -0
  30. package/dist/__tests__/fixtures/profile/types.d.ts +53 -0
  31. package/dist/__tests__/fixtures/profile/types.d.ts.map +1 -0
  32. package/dist/__tests__/fixtures/profile/types.js +4 -0
  33. package/dist/__tests__/fixtures/profile/types.js.map +1 -0
  34. package/dist/auth/errors.d.ts +82 -0
  35. package/dist/auth/errors.d.ts.map +1 -0
  36. package/dist/auth/errors.js +68 -0
  37. package/dist/auth/errors.js.map +1 -0
  38. package/dist/auth.d.ts +192 -0
  39. package/dist/auth.d.ts.map +1 -0
  40. package/dist/auth.js +294 -0
  41. package/dist/auth.js.map +1 -0
  42. package/dist/config.d.ts +212 -0
  43. package/dist/config.d.ts.map +1 -0
  44. package/dist/config.js +349 -0
  45. package/dist/config.js.map +1 -0
  46. package/dist/configLock.d.ts +50 -0
  47. package/dist/configLock.d.ts.map +1 -0
  48. package/dist/configLock.js +88 -0
  49. package/dist/configLock.js.map +1 -0
  50. package/dist/configWriter.d.ts +97 -0
  51. package/dist/configWriter.d.ts.map +1 -0
  52. package/dist/configWriter.js +687 -0
  53. package/dist/configWriter.js.map +1 -0
  54. package/dist/index.d.ts +37 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +28 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/kill-switch.d.ts +161 -0
  59. package/dist/kill-switch.d.ts.map +1 -0
  60. package/dist/kill-switch.js +235 -0
  61. package/dist/kill-switch.js.map +1 -0
  62. package/dist/lib/date.d.ts +58 -0
  63. package/dist/lib/date.d.ts.map +1 -0
  64. package/dist/lib/date.js +104 -0
  65. package/dist/lib/date.js.map +1 -0
  66. package/dist/lib/diagnostic-log.d.ts +159 -0
  67. package/dist/lib/diagnostic-log.d.ts.map +1 -0
  68. package/dist/lib/diagnostic-log.js +186 -0
  69. package/dist/lib/diagnostic-log.js.map +1 -0
  70. package/dist/lib/package-version.d.ts +19 -0
  71. package/dist/lib/package-version.d.ts.map +1 -0
  72. package/dist/lib/package-version.js +38 -0
  73. package/dist/lib/package-version.js.map +1 -0
  74. package/dist/lib/redact.d.ts +153 -0
  75. package/dist/lib/redact.d.ts.map +1 -0
  76. package/dist/lib/redact.js +207 -0
  77. package/dist/lib/redact.js.map +1 -0
  78. package/dist/lib/text.d.ts +14 -0
  79. package/dist/lib/text.d.ts.map +1 -0
  80. package/dist/lib/text.js +21 -0
  81. package/dist/lib/text.js.map +1 -0
  82. package/dist/lib/wire-shape.d.ts +131 -0
  83. package/dist/lib/wire-shape.d.ts.map +1 -0
  84. package/dist/lib/wire-shape.js +376 -0
  85. package/dist/lib/wire-shape.js.map +1 -0
  86. package/dist/onepassword.d.ts +29 -0
  87. package/dist/onepassword.d.ts.map +1 -0
  88. package/dist/onepassword.js +112 -0
  89. package/dist/onepassword.js.map +1 -0
  90. package/dist/services/_shared/transport.d.ts +148 -0
  91. package/dist/services/_shared/transport.d.ts.map +1 -0
  92. package/dist/services/_shared/transport.js +102 -0
  93. package/dist/services/_shared/transport.js.map +1 -0
  94. package/dist/services/applications/index.d.ts +210 -0
  95. package/dist/services/applications/index.d.ts.map +1 -0
  96. package/dist/services/applications/index.js +240 -0
  97. package/dist/services/applications/index.js.map +1 -0
  98. package/dist/services/availability/index.d.ts +254 -0
  99. package/dist/services/availability/index.d.ts.map +1 -0
  100. package/dist/services/availability/index.js +310 -0
  101. package/dist/services/availability/index.js.map +1 -0
  102. package/dist/services/contracts/index.d.ts +132 -0
  103. package/dist/services/contracts/index.d.ts.map +1 -0
  104. package/dist/services/contracts/index.js +211 -0
  105. package/dist/services/contracts/index.js.map +1 -0
  106. package/dist/services/engagements/index.d.ts +504 -0
  107. package/dist/services/engagements/index.d.ts.map +1 -0
  108. package/dist/services/engagements/index.js +613 -0
  109. package/dist/services/engagements/index.js.map +1 -0
  110. package/dist/services/jobs/index.d.ts +490 -0
  111. package/dist/services/jobs/index.d.ts.map +1 -0
  112. package/dist/services/jobs/index.js +753 -0
  113. package/dist/services/jobs/index.js.map +1 -0
  114. package/dist/services/payments/index.d.ts +415 -0
  115. package/dist/services/payments/index.d.ts.map +1 -0
  116. package/dist/services/payments/index.js +636 -0
  117. package/dist/services/payments/index.js.map +1 -0
  118. package/dist/services/profile/__tests__/fixtures.d.ts +214 -0
  119. package/dist/services/profile/__tests__/fixtures.d.ts.map +1 -0
  120. package/dist/services/profile/__tests__/fixtures.js +176 -0
  121. package/dist/services/profile/__tests__/fixtures.js.map +1 -0
  122. package/dist/services/profile/basic/index.d.ts +390 -0
  123. package/dist/services/profile/basic/index.d.ts.map +1 -0
  124. package/dist/services/profile/basic/index.js +1007 -0
  125. package/dist/services/profile/basic/index.js.map +1 -0
  126. package/dist/services/profile/certifications/index.d.ts +74 -0
  127. package/dist/services/profile/certifications/index.d.ts.map +1 -0
  128. package/dist/services/profile/certifications/index.js +169 -0
  129. package/dist/services/profile/certifications/index.js.map +1 -0
  130. package/dist/services/profile/education/index.d.ts +73 -0
  131. package/dist/services/profile/education/index.d.ts.map +1 -0
  132. package/dist/services/profile/education/index.js +168 -0
  133. package/dist/services/profile/education/index.js.map +1 -0
  134. package/dist/services/profile/employment/index.d.ts +111 -0
  135. package/dist/services/profile/employment/index.d.ts.map +1 -0
  136. package/dist/services/profile/employment/index.js +202 -0
  137. package/dist/services/profile/employment/index.js.map +1 -0
  138. package/dist/services/profile/external/index.d.ts +219 -0
  139. package/dist/services/profile/external/index.d.ts.map +1 -0
  140. package/dist/services/profile/external/index.js +560 -0
  141. package/dist/services/profile/external/index.js.map +1 -0
  142. package/dist/services/profile/index.d.ts +24 -0
  143. package/dist/services/profile/index.d.ts.map +1 -0
  144. package/dist/services/profile/index.js +26 -0
  145. package/dist/services/profile/index.js.map +1 -0
  146. package/dist/services/profile/industries/index.d.ts +130 -0
  147. package/dist/services/profile/industries/index.d.ts.map +1 -0
  148. package/dist/services/profile/industries/index.js +292 -0
  149. package/dist/services/profile/industries/index.js.map +1 -0
  150. package/dist/services/profile/portfolio/index.d.ts +352 -0
  151. package/dist/services/profile/portfolio/index.d.ts.map +1 -0
  152. package/dist/services/profile/portfolio/index.js +833 -0
  153. package/dist/services/profile/portfolio/index.js.map +1 -0
  154. package/dist/services/profile/resume/index.d.ts +60 -0
  155. package/dist/services/profile/resume/index.d.ts.map +1 -0
  156. package/dist/services/profile/resume/index.js +212 -0
  157. package/dist/services/profile/resume/index.js.map +1 -0
  158. package/dist/services/profile/reviews/index.d.ts +137 -0
  159. package/dist/services/profile/reviews/index.d.ts.map +1 -0
  160. package/dist/services/profile/reviews/index.js +431 -0
  161. package/dist/services/profile/reviews/index.js.map +1 -0
  162. package/dist/services/profile/shared.d.ts +127 -0
  163. package/dist/services/profile/shared.d.ts.map +1 -0
  164. package/dist/services/profile/shared.js +155 -0
  165. package/dist/services/profile/shared.js.map +1 -0
  166. package/dist/services/profile/skills/index.d.ts +212 -0
  167. package/dist/services/profile/skills/index.d.ts.map +1 -0
  168. package/dist/services/profile/skills/index.js +461 -0
  169. package/dist/services/profile/skills/index.js.map +1 -0
  170. package/dist/services/profile/visas/index.d.ts +74 -0
  171. package/dist/services/profile/visas/index.d.ts.map +1 -0
  172. package/dist/services/profile/visas/index.js +306 -0
  173. package/dist/services/profile/visas/index.js.map +1 -0
  174. package/dist/services/timesheet/index.d.ts +326 -0
  175. package/dist/services/timesheet/index.d.ts.map +1 -0
  176. package/dist/services/timesheet/index.js +324 -0
  177. package/dist/services/timesheet/index.js.map +1 -0
  178. package/dist/services/translations.d.ts +79 -0
  179. package/dist/services/translations.d.ts.map +1 -0
  180. package/dist/services/translations.js +136 -0
  181. package/dist/services/translations.js.map +1 -0
  182. package/dist/transport-resilience.d.ts +136 -0
  183. package/dist/transport-resilience.d.ts.map +1 -0
  184. package/dist/transport-resilience.js +247 -0
  185. package/dist/transport-resilience.js.map +1 -0
  186. package/dist/transport.d.ts +408 -0
  187. package/dist/transport.d.ts.map +1 -0
  188. package/dist/transport.js +691 -0
  189. package/dist/transport.js.map +1 -0
  190. package/dist/types.d.ts +41 -0
  191. package/dist/types.d.ts.map +1 -0
  192. package/dist/types.js +18 -0
  193. package/dist/types.js.map +1 -0
  194. package/package.json +40 -12
  195. package/index.js +0 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/profile/basic/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * `Certification` row as ttctl exposes it. Mirrors the read-side
3
+ * `Certification` GraphQL fragment (see
4
+ * `research/graphql/talent_profile/fragments/Certification.graphql`)
5
+ * trimmed to the fields ttctl currently surfaces. Validity dates are split
6
+ * across `validFromMonth` / `validFromYear` (always set) and
7
+ * `validToMonth` / `validToYear` (nullable for non-expiring certificates).
8
+ */
9
+ export interface Certification {
10
+ id: string;
11
+ certificate: string;
12
+ institution: string;
13
+ link: string | null;
14
+ number: string | null;
15
+ validFromMonth: number | null;
16
+ validFromYear: number | null;
17
+ validToMonth: number | null;
18
+ validToYear: number | null;
19
+ highlight: boolean;
20
+ }
21
+ /**
22
+ * Fields editable on a Certification row. Mirrors `CertificationInput` per
23
+ * the inferred shape in `research/notes/10-mutation-input-patterns.md`
24
+ * (Pattern 1) and the live capture in
25
+ * `research/captures/web/inputs/UpdateCertificationInput.json`.
26
+ */
27
+ export interface CertificationFields {
28
+ certificate?: string;
29
+ institution?: string;
30
+ link?: string;
31
+ number?: string;
32
+ validFromMonth?: number;
33
+ validFromYear?: number;
34
+ validToMonth?: number | null;
35
+ validToYear?: number | null;
36
+ highlight?: boolean;
37
+ }
38
+ /**
39
+ * List the signed-in user's certification rows.
40
+ *
41
+ * Issues `GET_CERTIFICATION` against the talent-profile surface; keyed by
42
+ * the user's `profileId`.
43
+ */
44
+ export declare function list(token: string): Promise<Certification[]>;
45
+ /**
46
+ * Look up a single certification row by id. Throws `VALIDATION_ERROR`
47
+ * when no matching row exists.
48
+ */
49
+ export declare function show(token: string, id: string): Promise<Certification>;
50
+ /**
51
+ * Create a new certification row. Wire format per Pattern 2:
52
+ * `{ profileId, certification: CertificationInput }`. `certificate` and
53
+ * `institution` are required.
54
+ */
55
+ export declare function add(token: string, fields: CertificationFields): Promise<Certification>;
56
+ /**
57
+ * Update an existing certification row. Wire format per Pattern 1:
58
+ * `{ certificationId, certification: CertificationInput }`.
59
+ */
60
+ export declare function update(token: string, id: string, fields: CertificationFields): Promise<Certification>;
61
+ /**
62
+ * Remove a certification row. Wire format per Pattern 3:
63
+ * `{ certificationId }`.
64
+ */
65
+ export declare function remove(token: string, id: string): Promise<string>;
66
+ /**
67
+ * Toggle the `highlight` flag on a certification row. Wire format per
68
+ * Pattern 4: `{ certificationId, highlight: Boolean }`.
69
+ */
70
+ export declare function highlight(token: string, id: string, value?: boolean): Promise<{
71
+ id: string;
72
+ highlight: boolean;
73
+ }>;
74
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/profile/certifications/index.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAsFD;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAGlE;AAqBD;;;GAGG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAO5E;AAED;;;;GAIG;AACH,wBAAsB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAwB5F;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAsB3G;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUvE;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,UAAO,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAiBpH"}
@@ -0,0 +1,169 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { ProfileError } from "../basic/index.js";
4
+ import { applyUserErrorsAndSuccess, callTalentProfile, ensureNoTopLevelErrors, extractProfileId } from "../shared.js";
5
+ const CERTIFICATION_FRAGMENT = `fragment Certification on Certification {
6
+ id
7
+ certificate
8
+ institution
9
+ link
10
+ number
11
+ validFromMonth
12
+ validFromYear
13
+ validToMonth
14
+ validToYear
15
+ highlight
16
+ }`;
17
+ const GET_CERTIFICATION_QUERY = `query GET_CERTIFICATION($profileId: ID!) {
18
+ profile(id: $profileId) {
19
+ id
20
+ certifications { nodes { ...Certification } }
21
+ }
22
+ }
23
+ ${CERTIFICATION_FRAGMENT}`;
24
+ const CREATE_CERTIFICATION_MUTATION = `mutation CREATE_CERTIFICATION($input: CreateCertificationInput!) {
25
+ createCertification(input: $input) {
26
+ success
27
+ notice
28
+ errors { code key message }
29
+ profile { id certifications { nodes { ...Certification } } }
30
+ }
31
+ }
32
+ ${CERTIFICATION_FRAGMENT}`;
33
+ const UPDATE_CERTIFICATION_MUTATION = `mutation UPDATE_CERTIFICATION($input: UpdateCertificationInput!) {
34
+ updateCertification(input: $input) {
35
+ success
36
+ notice
37
+ errors { code key message }
38
+ profile { id certifications { nodes { ...Certification } } }
39
+ }
40
+ }
41
+ ${CERTIFICATION_FRAGMENT}`;
42
+ const REMOVE_CERTIFICATION_MUTATION = `mutation REMOVE_CERTIFICATION($input: RemoveCertificationInput!) {
43
+ removeCertification(input: $input) {
44
+ success
45
+ notice
46
+ errors { code key message }
47
+ profile { id certifications { nodes { ...Certification } } }
48
+ }
49
+ }
50
+ ${CERTIFICATION_FRAGMENT}`;
51
+ const HIGHLIGHT_CERTIFICATION_MUTATION = `mutation highlightCertification($id: ID!, $highlight: Boolean!) {
52
+ highlightCertification(input: { certificationId: $id, highlight: $highlight }) {
53
+ success
54
+ notice
55
+ errors { code key message }
56
+ certification { id highlight }
57
+ }
58
+ }`;
59
+ /**
60
+ * List the signed-in user's certification rows.
61
+ *
62
+ * Issues `GET_CERTIFICATION` against the talent-profile surface; keyed by
63
+ * the user's `profileId`.
64
+ */
65
+ export async function list(token) {
66
+ const profileId = await extractProfileId(token);
67
+ return listByProfileId(token, profileId);
68
+ }
69
+ /**
70
+ * Internal helper: list certification rows when the caller has already
71
+ * resolved `profileId` (used by `add()` to avoid double-round-tripping).
72
+ */
73
+ async function listByProfileId(token, profileId) {
74
+ const res = await callTalentProfile(token, "GET_CERTIFICATION", GET_CERTIFICATION_QUERY, { profileId }, "certifications list");
75
+ const body = res.body;
76
+ ensureNoTopLevelErrors(body, "certifications list");
77
+ const profile = body?.data?.profile;
78
+ if (!profile)
79
+ throw new ProfileError("UNKNOWN", "certifications list response had no `data.profile` field");
80
+ return profile.certifications.nodes.filter((n) => n !== null);
81
+ }
82
+ /**
83
+ * Look up a single certification row by id. Throws `VALIDATION_ERROR`
84
+ * when no matching row exists.
85
+ */
86
+ export async function show(token, id) {
87
+ const all = await list(token);
88
+ const found = all.find((c) => c.id === id);
89
+ if (!found) {
90
+ throw new ProfileError("VALIDATION_ERROR", `Certification with id "${id}" not found on this profile.`);
91
+ }
92
+ return found;
93
+ }
94
+ /**
95
+ * Create a new certification row. Wire format per Pattern 2:
96
+ * `{ profileId, certification: CertificationInput }`. `certificate` and
97
+ * `institution` are required.
98
+ */
99
+ export async function add(token, fields) {
100
+ if (!fields.certificate || !fields.institution) {
101
+ throw new ProfileError("VALIDATION_ERROR", "certifications add requires --name (certificate) and --issuer (institution).");
102
+ }
103
+ const profileId = await extractProfileId(token);
104
+ const before = await listByProfileId(token, profileId);
105
+ const beforeIds = new Set(before.map((c) => c.id));
106
+ const res = await callTalentProfile(token, "CREATE_CERTIFICATION", CREATE_CERTIFICATION_MUTATION, { input: { profileId, certification: fields } }, "certifications add");
107
+ const payload = unwrapMutation(res, "createCertification", "certifications add");
108
+ const after = payload.profile?.certifications.nodes.filter((n) => n !== null) ?? [];
109
+ const created = after.find((c) => !beforeIds.has(c.id));
110
+ if (!created) {
111
+ throw new ProfileError("UNKNOWN", "certifications add returned success but no new row was found in the response.");
112
+ }
113
+ return created;
114
+ }
115
+ /**
116
+ * Update an existing certification row. Wire format per Pattern 1:
117
+ * `{ certificationId, certification: CertificationInput }`.
118
+ */
119
+ export async function update(token, id, fields) {
120
+ if (Object.keys(fields).length === 0) {
121
+ throw new ProfileError("VALIDATION_ERROR", "certifications update requires at least one field flag.");
122
+ }
123
+ const res = await callTalentProfile(token, "UPDATE_CERTIFICATION", UPDATE_CERTIFICATION_MUTATION, { input: { certificationId: id, certification: fields } }, "certifications update");
124
+ const payload = unwrapMutation(res, "updateCertification", "certifications update");
125
+ const updated = payload.profile?.certifications.nodes
126
+ .filter((n) => n !== null)
127
+ .find((c) => c.id === id);
128
+ if (!updated) {
129
+ throw new ProfileError("UNKNOWN", `certifications update returned success but row "${id}" was not in the response.`);
130
+ }
131
+ return updated;
132
+ }
133
+ /**
134
+ * Remove a certification row. Wire format per Pattern 3:
135
+ * `{ certificationId }`.
136
+ */
137
+ export async function remove(token, id) {
138
+ const res = await callTalentProfile(token, "REMOVE_CERTIFICATION", REMOVE_CERTIFICATION_MUTATION, { input: { certificationId: id } }, "certifications remove");
139
+ unwrapMutation(res, "removeCertification", "certifications remove");
140
+ return id;
141
+ }
142
+ /**
143
+ * Toggle the `highlight` flag on a certification row. Wire format per
144
+ * Pattern 4: `{ certificationId, highlight: Boolean }`.
145
+ */
146
+ export async function highlight(token, id, value = true) {
147
+ const res = await callTalentProfile(token, "highlightCertification", HIGHLIGHT_CERTIFICATION_MUTATION, { id, highlight: value }, "certifications highlight");
148
+ const body = res.body;
149
+ ensureNoTopLevelErrors(body, "certifications highlight");
150
+ const payload = body?.data?.highlightCertification;
151
+ if (!payload)
152
+ throw new ProfileError("UNKNOWN", "certifications highlight response had no payload.");
153
+ applyUserErrorsAndSuccess(payload, "certifications highlight");
154
+ if (!payload.certification) {
155
+ throw new ProfileError("UNKNOWN", "certifications highlight response had no `certification` field.");
156
+ }
157
+ return payload.certification;
158
+ }
159
+ function unwrapMutation(res, payloadKey, verb) {
160
+ const body = res.body;
161
+ ensureNoTopLevelErrors(body, verb);
162
+ const payload = body?.data?.[payloadKey];
163
+ if (!payload) {
164
+ throw new ProfileError("UNKNOWN", `${verb} response had no \`data.${payloadKey}\` field`);
165
+ }
166
+ applyUserErrorsAndSuccess(payload, verb);
167
+ return payload;
168
+ }
169
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/profile/certifications/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * `Education` row as ttctl exposes it. Mirrors the read-side
3
+ * `Education` GraphQL fragment (see
4
+ * `research/graphql/talent_profile/fragments/Education.graphql`) trimmed to
5
+ * the fields ttctl currently surfaces. Years are integers (`yearFrom`,
6
+ * `yearTo`) per the empirical capture
7
+ * `research/captures/web/inputs/UpdateEducationInput.json`.
8
+ */
9
+ export interface Education {
10
+ id: string;
11
+ institution: string;
12
+ degree: string;
13
+ fieldOfStudy: string | null;
14
+ location: string | null;
15
+ title: string | null;
16
+ yearFrom: number | null;
17
+ yearTo: number | null;
18
+ highlight: boolean;
19
+ }
20
+ /**
21
+ * Fields editable on an Education row. All optional — `update()` rejects an
22
+ * empty object. Mirrors `EducationInput` per the inferred shape in
23
+ * `research/notes/10-mutation-input-patterns.md` (Pattern 1) and the live
24
+ * capture in `research/captures/web/inputs/UpdateEducationInput.json`.
25
+ */
26
+ export interface EducationFields {
27
+ institution?: string;
28
+ degree?: string;
29
+ fieldOfStudy?: string;
30
+ location?: string;
31
+ title?: string;
32
+ yearFrom?: number;
33
+ yearTo?: number;
34
+ highlight?: boolean;
35
+ }
36
+ /**
37
+ * List the signed-in user's education rows.
38
+ *
39
+ * Issues `GET_EDUCATION` against the Cloudflare-protected talent-profile
40
+ * surface. The query is keyed by the user's `profileId` — fetched lazily
41
+ * via `extractProfileId()`.
42
+ */
43
+ export declare function list(token: string): Promise<Education[]>;
44
+ /**
45
+ * Look up a single education row by id. Convenience wrapper around
46
+ * {@link list} — the GraphQL query has no per-id selector. Throws
47
+ * `ProfileError("VALIDATION_ERROR")` when no matching row is found.
48
+ */
49
+ export declare function show(token: string, id: string): Promise<Education>;
50
+ /**
51
+ * Create a new education row. Wire format per Pattern 2: `{ profileId,
52
+ * education: EducationInput }`.
53
+ */
54
+ export declare function add(token: string, fields: EducationFields): Promise<Education>;
55
+ /**
56
+ * Update an existing education row. Wire format per Pattern 1:
57
+ * `{ educationId, education: EducationInput }`.
58
+ */
59
+ export declare function update(token: string, id: string, fields: EducationFields): Promise<Education>;
60
+ /**
61
+ * Remove an education row. Wire format per Pattern 3: `{ educationId }`.
62
+ */
63
+ export declare function remove(token: string, id: string): Promise<string>;
64
+ /**
65
+ * Toggle the `highlight` flag on an education row. Wire format per
66
+ * Pattern 4: `{ educationId, highlight: Boolean }`. Default `value` is
67
+ * `true`; pass `false` to un-highlight.
68
+ */
69
+ export declare function highlight(token: string, id: string, value?: boolean): Promise<{
70
+ id: string;
71
+ highlight: boolean;
72
+ }>;
73
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/profile/education/index.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAqFD;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAG9D;AAgBD;;;;GAIG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAOxE;AAED;;;GAGG;AACH,wBAAsB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAqBpF;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAiBnG;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUvE;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,UAAO,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAiBpH"}
@@ -0,0 +1,168 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { ProfileError } from "../basic/index.js";
4
+ import { applyUserErrorsAndSuccess, callTalentProfile, ensureNoTopLevelErrors, extractProfileId } from "../shared.js";
5
+ const EDUCATION_FRAGMENT = `fragment Education on Education {
6
+ id
7
+ institution
8
+ degree
9
+ fieldOfStudy
10
+ location
11
+ title
12
+ yearFrom
13
+ yearTo
14
+ highlight
15
+ }`;
16
+ const GET_EDUCATION_QUERY = `query GET_EDUCATION($profileId: ID!) {
17
+ profile(id: $profileId) {
18
+ id
19
+ educations { nodes { ...Education } }
20
+ }
21
+ }
22
+ ${EDUCATION_FRAGMENT}`;
23
+ const CREATE_EDUCATION_MUTATION = `mutation CREATE_EDUCATION($input: CreateEducationInput!) {
24
+ createEducation(input: $input) {
25
+ success
26
+ notice
27
+ errors { code key message }
28
+ profile { id educations { nodes { ...Education } } }
29
+ }
30
+ }
31
+ ${EDUCATION_FRAGMENT}`;
32
+ const UPDATE_EDUCATION_MUTATION = `mutation UPDATE_EDUCATION($input: UpdateEducationInput!) {
33
+ updateEducation(input: $input) {
34
+ success
35
+ notice
36
+ errors { code key message }
37
+ profile { id educations { nodes { ...Education } } }
38
+ }
39
+ }
40
+ ${EDUCATION_FRAGMENT}`;
41
+ const REMOVE_EDUCATION_MUTATION = `mutation REMOVE_EDUCATION($input: RemoveEducationInput!) {
42
+ removeEducation(input: $input) {
43
+ success
44
+ notice
45
+ errors { code key message }
46
+ profile { id educations { nodes { ...Education } } }
47
+ }
48
+ }
49
+ ${EDUCATION_FRAGMENT}`;
50
+ const HIGHLIGHT_EDUCATION_MUTATION = `mutation highlightEducation($id: ID!, $highlight: Boolean!) {
51
+ highlightEducation(input: { educationId: $id, highlight: $highlight }) {
52
+ success
53
+ notice
54
+ errors { code key message }
55
+ education { id highlight }
56
+ }
57
+ }`;
58
+ /**
59
+ * List the signed-in user's education rows.
60
+ *
61
+ * Issues `GET_EDUCATION` against the Cloudflare-protected talent-profile
62
+ * surface. The query is keyed by the user's `profileId` — fetched lazily
63
+ * via `extractProfileId()`.
64
+ */
65
+ export async function list(token) {
66
+ const profileId = await extractProfileId(token);
67
+ return listByProfileId(token, profileId);
68
+ }
69
+ /**
70
+ * Internal helper: list education rows when the caller has already
71
+ * resolved `profileId` (e.g. inside `add()` which extracts it once
72
+ * up-front to avoid double-round-tripping the gateway).
73
+ */
74
+ async function listByProfileId(token, profileId) {
75
+ const res = await callTalentProfile(token, "GET_EDUCATION", GET_EDUCATION_QUERY, { profileId }, "education list");
76
+ const body = res.body;
77
+ ensureNoTopLevelErrors(body, "education list");
78
+ const profile = body?.data?.profile;
79
+ if (!profile)
80
+ throw new ProfileError("UNKNOWN", "education list response had no `data.profile` field");
81
+ return profile.educations.nodes.filter((n) => n !== null);
82
+ }
83
+ /**
84
+ * Look up a single education row by id. Convenience wrapper around
85
+ * {@link list} — the GraphQL query has no per-id selector. Throws
86
+ * `ProfileError("VALIDATION_ERROR")` when no matching row is found.
87
+ */
88
+ export async function show(token, id) {
89
+ const all = await list(token);
90
+ const found = all.find((e) => e.id === id);
91
+ if (!found) {
92
+ throw new ProfileError("VALIDATION_ERROR", `Education with id "${id}" not found on this profile.`);
93
+ }
94
+ return found;
95
+ }
96
+ /**
97
+ * Create a new education row. Wire format per Pattern 2: `{ profileId,
98
+ * education: EducationInput }`.
99
+ */
100
+ export async function add(token, fields) {
101
+ if (!fields.institution || !fields.degree) {
102
+ throw new ProfileError("VALIDATION_ERROR", "education add requires --institution and --degree.");
103
+ }
104
+ const profileId = await extractProfileId(token);
105
+ const before = await listByProfileId(token, profileId);
106
+ const beforeIds = new Set(before.map((e) => e.id));
107
+ const res = await callTalentProfile(token, "CREATE_EDUCATION", CREATE_EDUCATION_MUTATION, { input: { profileId, education: fields } }, "education add");
108
+ const payload = unwrapMutation(res, "createEducation", "education add");
109
+ const after = payload.profile?.educations.nodes.filter((n) => n !== null) ?? [];
110
+ const created = after.find((e) => !beforeIds.has(e.id));
111
+ if (!created) {
112
+ throw new ProfileError("UNKNOWN", "education add returned success but no new row was found in the response.");
113
+ }
114
+ return created;
115
+ }
116
+ /**
117
+ * Update an existing education row. Wire format per Pattern 1:
118
+ * `{ educationId, education: EducationInput }`.
119
+ */
120
+ export async function update(token, id, fields) {
121
+ if (Object.keys(fields).length === 0) {
122
+ throw new ProfileError("VALIDATION_ERROR", "education update requires at least one field flag.");
123
+ }
124
+ const res = await callTalentProfile(token, "UPDATE_EDUCATION", UPDATE_EDUCATION_MUTATION, { input: { educationId: id, education: fields } }, "education update");
125
+ const payload = unwrapMutation(res, "updateEducation", "education update");
126
+ const updated = payload.profile?.educations.nodes.filter((n) => n !== null).find((e) => e.id === id);
127
+ if (!updated) {
128
+ throw new ProfileError("UNKNOWN", `education update returned success but row "${id}" was not in the response.`);
129
+ }
130
+ return updated;
131
+ }
132
+ /**
133
+ * Remove an education row. Wire format per Pattern 3: `{ educationId }`.
134
+ */
135
+ export async function remove(token, id) {
136
+ const res = await callTalentProfile(token, "REMOVE_EDUCATION", REMOVE_EDUCATION_MUTATION, { input: { educationId: id } }, "education remove");
137
+ unwrapMutation(res, "removeEducation", "education remove");
138
+ return id;
139
+ }
140
+ /**
141
+ * Toggle the `highlight` flag on an education row. Wire format per
142
+ * Pattern 4: `{ educationId, highlight: Boolean }`. Default `value` is
143
+ * `true`; pass `false` to un-highlight.
144
+ */
145
+ export async function highlight(token, id, value = true) {
146
+ const res = await callTalentProfile(token, "highlightEducation", HIGHLIGHT_EDUCATION_MUTATION, { id, highlight: value }, "education highlight");
147
+ const body = res.body;
148
+ ensureNoTopLevelErrors(body, "education highlight");
149
+ const payload = body?.data?.highlightEducation;
150
+ if (!payload)
151
+ throw new ProfileError("UNKNOWN", "education highlight response had no payload.");
152
+ applyUserErrorsAndSuccess(payload, "education highlight");
153
+ if (!payload.education) {
154
+ throw new ProfileError("UNKNOWN", "education highlight response had no `education` field.");
155
+ }
156
+ return payload.education;
157
+ }
158
+ function unwrapMutation(res, payloadKey, verb) {
159
+ const body = res.body;
160
+ ensureNoTopLevelErrors(body, verb);
161
+ const payload = body?.data?.[payloadKey];
162
+ if (!payload) {
163
+ throw new ProfileError("UNKNOWN", `${verb} response had no \`data.${payloadKey}\` field`);
164
+ }
165
+ applyUserErrorsAndSuccess(payload, verb);
166
+ return payload;
167
+ }
168
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/profile/education/index.ts"],"names":[],"mappings":"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"}