@ttctl/core 0.0.0 → 0.1.0-rc.2

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 +200 -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 +238 -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 +214 -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 +52 -0
  47. package/dist/configLock.d.ts.map +1 -0
  48. package/dist/configLock.js +109 -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 +688 -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 +425 -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 +132 -0
  135. package/dist/services/profile/employment/index.d.ts.map +1 -0
  136. package/dist/services/profile/employment/index.js +262 -0
  137. package/dist/services/profile/employment/index.js.map +1 -0
  138. package/dist/services/profile/external/index.d.ts +278 -0
  139. package/dist/services/profile/external/index.d.ts.map +1 -0
  140. package/dist/services/profile/external/index.js +640 -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 +337 -0
  175. package/dist/services/timesheet/index.d.ts.map +1 -0
  176. package/dist/services/timesheet/index.js +336 -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
package/README.md CHANGED
@@ -1,21 +1,61 @@
1
1
  # @ttctl/core
2
2
 
3
- > **Placeholder reservation.** The real release is in development.
3
+ [![npm](https://img.shields.io/npm/v/%40ttctl%2Fcore?logo=npm)](https://www.npmjs.com/package/@ttctl/core)
4
+ [![License](https://img.shields.io/npm/l/%40ttctl%2Fcore)](https://github.com/alexey-pelykh/ttctl/blob/main/LICENSE)
4
5
 
5
- This package on npm is currently a **name reservation** within the `@ttctl` scope. There is no working library here yet only a stub that exists to hold the `@ttctl/core` name on the npm registry while the real implementation is finalized.
6
+ Core library for the [TTCtl](https://github.com/alexey-pelykh/ttctl) toolkitToptal Talent platform API client, auth, transport, and service namespaces.
6
7
 
7
- ## What this will become
8
+ > **Unofficial.** TTCtl is NOT affiliated with, endorsed by, or supported by Toptal LLC. See the [project README](https://github.com/alexey-pelykh/ttctl#readme) for the full use policy and disclaimer.
8
9
 
9
- `@ttctl/core` will be the core library for Toptal Talent platform integration (API client, auth, services) used by the `ttctl` umbrella package — part of the unofficial personal-productivity toolkit for [Toptal Talent](https://talent.toptal.com) profiles.
10
+ ## Audience
10
11
 
11
- For development status, source code, and architecture, see:
12
+ Library consumers who want programmatic access to the surfaces the `ttctl` CLI exposes — including the typed GraphQL clients, the bearer-token auth lifecycle, the Chrome-TLS-impersonating transport for Cloudflare-protected endpoints, and the YAML config loader.
12
13
 
13
- **→ https://github.com/alexey-pelykh/ttctl**
14
+ End users should install the [`ttctl`](https://www.npmjs.com/package/ttctl) umbrella package instead — it ships the CLI binary and the MCP server.
14
15
 
15
- ## ⚠️ Unofficial — Personal Use Only
16
+ ## Install
16
17
 
17
- `ttctl` and its workspace packages are **NOT** affiliated with, endorsed by, or supported by Toptal LLC. See the [GitHub repository](https://github.com/alexey-pelykh/ttctl) for the full unofficial-tool policy.
18
+ ```sh
19
+ npm install @ttctl/core
20
+ ```
21
+
22
+ Requires **Node.js ≥ 24**, ESM only.
23
+
24
+ ## API Surface
25
+
26
+ - **Config** — `resolveConfig`, `loadConfigFile`, `ConfigError`, `ConfigLoadSchema`, `ConfigWriteSchema`, `discoverConfigPath`
27
+ - **Config writer** — `writeNewConfig` (bootstrap), `persistAuthToken` / `clearAuthToken` (atomic single-file token lifecycle), `AuthTokenPersistError`, `acquireConfigLock`
28
+ - **Auth** — `signIn`, `signOut`, `getAuthStatus`, `resolveCredentials`, `SignInError`, `AuthRevokedError`, `TtctlError`
29
+ - **Transport** — `stockTransport` (mobile gateway), `impersonatedTransport` / `impersonatedMultipartTransport` (Chrome-TLS impersonation for Cloudflare-protected surfaces), `callSurface`, `Cf403Error`, `Cf403PersistentError`, `RedirectError` (no-follow redirect policy, issue #268), `SchedulerBearerExpired`, `IMPERSONATE_PROFILE`, `getRedirectLocation`, `buildDryRunPreview`, `buildGraphQLMultipart`
30
+ - **Resilience** — `TransportError`, `readTransportConfig`, `resetTransportConfigCache`
31
+ - **Service namespaces** — `profile`, `applications`, `contracts`, `engagements`, `availability`, `jobs`, `payments`, `timesheet`
32
+ - **1Password** — `resolveOnePasswordReference`, `OnePasswordError`
33
+ - **Diagnostics** — `setDiagnosticLogger` / `getDiagnosticLogger` / `resetDiagnosticLogger`, `logTransportRequest`, `logTransportResponse`
34
+ - **Redaction** — `redactBody`, `redactHeaders`, `containsBearerToken`, `BEARER_PATTERN`, `BEARER_PATTERN_SOURCE`, `SECRET_BODY_FIELD_NAMES`, `SECRET_HEADER_NAMES`
35
+ - **Utilities** — `parseDateInput`, `DateInputError`, `splitParagraphs`
36
+
37
+ The full export list lives in [`src/index.ts`](https://github.com/alexey-pelykh/ttctl/blob/main/packages/core/src/index.ts).
38
+
39
+ ## Example
40
+
41
+ ```ts
42
+ import { resolveConfig, getAuthStatus, profile } from "@ttctl/core";
43
+
44
+ // Resolve config from --config arg / TTCTL_CONFIG_FILE env / ~/.ttctl.yaml
45
+ const { config } = resolveConfig();
46
+ const token = config.auth.token ?? "";
47
+
48
+ const status = await getAuthStatus(token);
49
+ if (status.status !== "valid") {
50
+ throw new Error(`Not signed in: ${status.status}`);
51
+ }
52
+
53
+ // Use a service sub-namespace — `profile` splits into `basic`, `skills`,
54
+ // `employment`, `education`, … (see `src/services/profile/index.ts`).
55
+ const me = await profile.basic.show(token);
56
+ console.log(me.viewer?.viewerRole.fullName);
57
+ ```
18
58
 
19
59
  ## License
20
60
 
21
- [AGPL-3.0-only](./LICENSE)
61
+ [AGPL-3.0-only](https://github.com/alexey-pelykh/ttctl/blob/main/LICENSE). Importing `@ttctl/core` into your own code means the combined work is covered by AGPL-3.0; distribution triggers source-disclosure under AGPL § 13 if the combined work is offered as a network service. See the project README's [License](https://github.com/alexey-pelykh/ttctl#license) section for the maintainer's posture.