@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":"configWriter.js","sourceRoot":"","sources":["../src/configWriter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export { AuthCredentialsSchema, ConfigError, ConfigLoadSchema, ConfigWriteSchema, discoverConfigPath, loadConfigFile, OP_REF_PATTERN_HINT, OP_REF_PATTERN_SOURCE, resolveConfig, } from "./config.js";
2
+ export type { AuthBlock, AuthCredentials, ConfigErrorCode, LiteralAuthCredentials, ResolveConfigOptions, TtctlConfig, TtctlConfigWritable, } from "./config.js";
3
+ export { AuthTokenPersistError, clearAuthToken, persistAuthToken, writeNewConfig } from "./configWriter.js";
4
+ export { acquireConfigLock } from "./configLock.js";
5
+ export type { ConfigLockHandle } from "./configLock.js";
6
+ export { OnePasswordError, resolveOnePasswordReference } from "./onepassword.js";
7
+ export { getAuthStatus, resolveCredentials, signIn, signOut, SignInError } from "./auth.js";
8
+ export type { AuthInvalidReason, AuthStatusResult, SignInErrorCode, SignOutInvalidReason, SignOutResult, SignOutUnreachableReason, } from "./auth.js";
9
+ export { AuthRevokedError, TtctlError } from "./auth/errors.js";
10
+ export { Cf403Error, Cf403PersistentError, DRY_RUN_REDACTED_AUTHORIZATION, IMPERSONATE_PROFILE, RedirectError, SchedulerBearerExpired, buildDryRunPreview, buildGraphQLMultipart, callSurface, impersonatedMultipartTransport, impersonatedTransport, stockTransport, } from "./transport.js";
11
+ export type { DryRunPreview, MultipartFile, MultipartTransportRequest, TransportRequest, TransportResponse, } from "./transport.js";
12
+ export { TransportError, readTransportConfig, resetTransportConfigCache } from "./transport-resilience.js";
13
+ export type { TransportConfig } from "./transport-resilience.js";
14
+ export { SURFACES_REQUIRING_IMPERSONATION, SURFACE_ENDPOINTS } from "./types.js";
15
+ export type { Credentials, GraphQLRequest, ToptalSurface } from "./types.js";
16
+ export * as profile from "./services/profile/index.js";
17
+ export * as applications from "./services/applications/index.js";
18
+ export * as contracts from "./services/contracts/index.js";
19
+ export * as engagements from "./services/engagements/index.js";
20
+ export * as availability from "./services/availability/index.js";
21
+ export * as jobs from "./services/jobs/index.js";
22
+ export * as payments from "./services/payments/index.js";
23
+ export * as timesheet from "./services/timesheet/index.js";
24
+ export { PROFILE_BASIC_FIELDS, PROFILE_SKILL_FIELDS, cliToServer, serverToCli } from "./services/translations.js";
25
+ export type { ProfileShowQuery, ProfileShowQueryVariables } from "./__generated__/gateway.js";
26
+ export { DateInputError, parseDateInput } from "./lib/date.js";
27
+ export type { DateInputErrorCode, ParsedDate } from "./lib/date.js";
28
+ export { splitParagraphs } from "./lib/text.js";
29
+ export { buildWireShapeError, buildWireShapeMessage, MAX_VALUE_LENGTH, projectZodErrorToDiff, WIRE_SHAPE_HINT, } from "./lib/wire-shape.js";
30
+ export type { WireShapeDiffEntry, WireShapeErrorPayload } from "./lib/wire-shape.js";
31
+ export { getDiagnosticLogger, logTransportRequest, logTransportResponse, resetDiagnosticLogger, setDiagnosticLogger, } from "./lib/diagnostic-log.js";
32
+ export type { DiagnosticLevel, RequestLogInfo, ResponseLogInfo } from "./lib/diagnostic-log.js";
33
+ export { readPackageVersion } from "./lib/package-version.js";
34
+ export { checkKillSwitch, formatKillSwitchMessage, KILL_SWITCH_DEFAULT_REFETCH_INTERVAL_MS, KILL_SWITCH_DEFAULT_TIMEOUT_MS, KILL_SWITCH_MANIFEST_URL, KILL_SWITCH_OVERRIDE_ENV_VAR, matchesVersion, } from "./kill-switch.js";
35
+ export type { CheckKillSwitchOptions, FormatKillSwitchMessageOptions, KillSwitchEntry, KillSwitchManifest, KillSwitchResult, } from "./kill-switch.js";
36
+ export { BEARER_PATTERN, BEARER_PATTERN_SOURCE, REDACTED, SECRET_BODY_FIELD_NAMES, SECRET_HEADER_NAMES, containsBearerToken, redactBody, redactHeaders, redactString, } from "./lib/redact.js";
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ export { AuthCredentialsSchema, ConfigError, ConfigLoadSchema, ConfigWriteSchema, discoverConfigPath, loadConfigFile, OP_REF_PATTERN_HINT, OP_REF_PATTERN_SOURCE, resolveConfig, } from "./config.js";
4
+ export { AuthTokenPersistError, clearAuthToken, persistAuthToken, writeNewConfig } from "./configWriter.js";
5
+ export { acquireConfigLock } from "./configLock.js";
6
+ export { OnePasswordError, resolveOnePasswordReference } from "./onepassword.js";
7
+ export { getAuthStatus, resolveCredentials, signIn, signOut, SignInError } from "./auth.js";
8
+ export { AuthRevokedError, TtctlError } from "./auth/errors.js";
9
+ export { Cf403Error, Cf403PersistentError, DRY_RUN_REDACTED_AUTHORIZATION, IMPERSONATE_PROFILE, RedirectError, SchedulerBearerExpired, buildDryRunPreview, buildGraphQLMultipart, callSurface, impersonatedMultipartTransport, impersonatedTransport, stockTransport, } from "./transport.js";
10
+ export { TransportError, readTransportConfig, resetTransportConfigCache } from "./transport-resilience.js";
11
+ export { SURFACES_REQUIRING_IMPERSONATION, SURFACE_ENDPOINTS } from "./types.js";
12
+ export * as profile from "./services/profile/index.js";
13
+ export * as applications from "./services/applications/index.js";
14
+ export * as contracts from "./services/contracts/index.js";
15
+ export * as engagements from "./services/engagements/index.js";
16
+ export * as availability from "./services/availability/index.js";
17
+ export * as jobs from "./services/jobs/index.js";
18
+ export * as payments from "./services/payments/index.js";
19
+ export * as timesheet from "./services/timesheet/index.js";
20
+ export { PROFILE_BASIC_FIELDS, PROFILE_SKILL_FIELDS, cliToServer, serverToCli } from "./services/translations.js";
21
+ export { DateInputError, parseDateInput } from "./lib/date.js";
22
+ export { splitParagraphs } from "./lib/text.js";
23
+ export { buildWireShapeError, buildWireShapeMessage, MAX_VALUE_LENGTH, projectZodErrorToDiff, WIRE_SHAPE_HINT, } from "./lib/wire-shape.js";
24
+ export { getDiagnosticLogger, logTransportRequest, logTransportResponse, resetDiagnosticLogger, setDiagnosticLogger, } from "./lib/diagnostic-log.js";
25
+ export { readPackageVersion } from "./lib/package-version.js";
26
+ export { checkKillSwitch, formatKillSwitchMessage, KILL_SWITCH_DEFAULT_REFETCH_INTERVAL_MS, KILL_SWITCH_DEFAULT_TIMEOUT_MS, KILL_SWITCH_MANIFEST_URL, KILL_SWITCH_OVERRIDE_ENV_VAR, matchesVersion, } from "./kill-switch.js";
27
+ export { BEARER_PATTERN, BEARER_PATTERN_SOURCE, REDACTED, SECRET_BODY_FIELD_NAMES, SECRET_HEADER_NAMES, containsBearerToken, redactBody, redactHeaders, redactString, } from "./lib/redact.js";
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GACd,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAU5F,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,8BAA8B,EAC9B,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,8BAA8B,EAC9B,qBAAqB,EACrB,cAAc,GACf,MAAM,gBAAgB,CAAC;AASxB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAG3G,OAAO,EAAE,gCAAgC,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGjF,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,WAAW,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,YAAY,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIlH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,uCAAuC,EACvC,8BAA8B,EAC9B,wBAAwB,EACxB,4BAA4B,EAC5B,cAAc,GACf,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,QAAQ,EACR,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Remote version-killed manifest (#312) — defense-in-depth kill switch
3
+ * for the TTCtl reverse-engineered surface.
4
+ *
5
+ * **Background**: TTCtl is reverse-engineered from Toptal's APK + GraphQL
6
+ * extraction. The wire format on any of the three surfaces
7
+ * (`mobile-gateway`, `talent-profile`, `scheduler`) can change at any
8
+ * time without warning. Internal defenses (T1 wire-shape snapshots, T2
9
+ * codegen-Zod, E2E coverage gate, schema/contract rule) detect drift
10
+ * for the maintainer's account at the maintainer's pace — but they do
11
+ * NOT cover how an existing user's install degrades gracefully when
12
+ * their wire-version is known-broken.
13
+ *
14
+ * This module fetches a tiny JSON manifest from the project's own
15
+ * stable infrastructure at startup and surfaces a warning (CLI may
16
+ * additionally refuse) when the running version is listed. The
17
+ * detection sources, severity tiers, and response procedure are
18
+ * documented in `docs/operations/wire-breakage-runbook.md`.
19
+ *
20
+ * **Privacy** — the fetch sends ONLY the default Node fetch headers and
21
+ * the URL. No version, no account identifier, no telemetry. Install-
22
+ * count tracking is a separate (intentionally deferred) question.
23
+ *
24
+ * **Fail-silent contract** — every error path returns `fetch-failed`
25
+ * silently. The kill switch MUST NEVER itself cause a denial-of-service
26
+ * when the maintainer's GitHub raw URL is briefly unreachable, the
27
+ * client is offline, the manifest is malformed, or a parse error
28
+ * surfaces. Outer try/catch envelope on the fetch + structural
29
+ * validation of the parsed JSON is the load-bearing defense.
30
+ *
31
+ * **Override** — set `TTCTL_DISABLE_KILL_SWITCH=1` to disable the
32
+ * check entirely. The value is read ONCE at module load (matches the
33
+ * established `TTCTL_DEBUG_CONFIG` / `TTCTL_DEBUG_MCP` /
34
+ * `TTCTL_MCP_FILE_UPLOAD_ALLOW_ANY` conventions). Any other value
35
+ * (including empty string, `0`, `true`, or unset) keeps the check
36
+ * enabled. Tests exercising both paths must `vi.resetModules()` and
37
+ * dynamic-import after mutating `process.env`.
38
+ */
39
+ /**
40
+ * Stable manifest URL. Hosted at raw.githubusercontent.com from the
41
+ * project repo's `main` branch (chosen for: zero CI setup, instant
42
+ * updates on push, maintainer-only write via branch protection).
43
+ *
44
+ * Exported so callers can override for testing or local fixtures.
45
+ */
46
+ export declare const KILL_SWITCH_MANIFEST_URL = "https://raw.githubusercontent.com/alexey-pelykh/ttctl/main/status/known-broken.json";
47
+ /** Default fetch timeout (ms). 3s upper bound on every invocation. */
48
+ export declare const KILL_SWITCH_DEFAULT_TIMEOUT_MS = 3000;
49
+ /** Default refetch interval for long-lived processes (MCP server). 24h. */
50
+ export declare const KILL_SWITCH_DEFAULT_REFETCH_INTERVAL_MS: number;
51
+ /** Env-var name (documented for callers + README + audit-checklist). */
52
+ export declare const KILL_SWITCH_OVERRIDE_ENV_VAR = "TTCTL_DISABLE_KILL_SWITCH";
53
+ /** Single entry in the manifest's `known_broken` list. */
54
+ export interface KillSwitchEntry {
55
+ /**
56
+ * Version specifier matching the running TTCtl version. Supported
57
+ * syntax (in order of precedence):
58
+ *
59
+ * - `*` — matches any version (global kill).
60
+ * - `=X.Y.Z` or `X.Y.Z` — exact match.
61
+ * - `<X.Y.Z`, `<=X.Y.Z`, `>X.Y.Z`, `>=X.Y.Z` — comparison.
62
+ *
63
+ * Pre-release suffixes (`-rc.1`, `-beta.0`) are compared lexico-
64
+ * graphically per semver §11.4: a version with a pre-release tag is
65
+ * less than the same version without. Build metadata (`+sha`) is
66
+ * stripped before comparison.
67
+ *
68
+ * Compound ranges (`>=0.1.0 <0.2.0`) are NOT supported — emit two
69
+ * entries in the manifest instead. This keeps the matcher trivial
70
+ * and the manifest auditable.
71
+ */
72
+ version_spec: string;
73
+ /** Human-readable explanation (rendered verbatim in the user-facing warning). */
74
+ reason: string;
75
+ /**
76
+ * `warn` (continue execution) or `refuse` (CLI exits non-zero).
77
+ * MCP server-side always treats both as `warn` — refusing a long-
78
+ * lived server has no safe semantics (mid-flight tool calls would
79
+ * be interrupted). Documented in the runbook.
80
+ */
81
+ action: "warn" | "refuse";
82
+ /** ISO date when this entry was added (informational + audit trail). */
83
+ as_of: string;
84
+ }
85
+ /** Top-level manifest shape. Versioned for forward-compat. */
86
+ export interface KillSwitchManifest {
87
+ schema_version: 1;
88
+ known_broken: KillSwitchEntry[];
89
+ }
90
+ /**
91
+ * Discriminated result of `checkKillSwitch`. Callers map by status:
92
+ *
93
+ * - `disabled` — env override set; no fetch attempted. Silent.
94
+ * - `fetch-failed` — silent failure (network, timeout, 404, parse-error,
95
+ * malformed manifest). Callers MUST NOT surface this to the user —
96
+ * fail-silent contract.
97
+ * - `no-match` — running version is not in the manifest. Silent.
98
+ * - `match` — running version matches an entry. Caller emits warning
99
+ * (CLI may also exit when `entry.action === 'refuse'`).
100
+ */
101
+ export type KillSwitchResult = {
102
+ status: "disabled";
103
+ } | {
104
+ status: "fetch-failed";
105
+ reason: string;
106
+ } | {
107
+ status: "no-match";
108
+ } | {
109
+ status: "match";
110
+ entry: KillSwitchEntry;
111
+ };
112
+ export interface CheckKillSwitchOptions {
113
+ /** Running TTCtl version. Caller resolves via `readPackageVersion(import.meta.url)`. */
114
+ version: string;
115
+ /** Override the manifest URL (default: project raw.githubusercontent.com URL). */
116
+ url?: string;
117
+ /** Override the timeout in ms (default: `KILL_SWITCH_DEFAULT_TIMEOUT_MS`). */
118
+ timeoutMs?: number;
119
+ /**
120
+ * Injected fetch implementation (default: `globalThis.fetch`). Tests
121
+ * pass their own mock here — cleaner than `vi.stubGlobal('fetch', ...)`
122
+ * because the global is left untouched.
123
+ */
124
+ fetchFn?: typeof globalThis.fetch;
125
+ }
126
+ /**
127
+ * Check whether the running version appears in the remote known-broken
128
+ * manifest. Returns a discriminated `KillSwitchResult` — never throws,
129
+ * regardless of network / parse / shape failures (fail-silent contract).
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * const result = await checkKillSwitch({ version: "0.1.0" });
134
+ * if (result.status === "match") {
135
+ * process.stderr.write(formatKillSwitchMessage({ toolName: "ttctl", version: "0.1.0", entry: result.entry }));
136
+ * if (result.entry.action === "refuse") process.exit(1);
137
+ * }
138
+ * ```
139
+ */
140
+ export declare function checkKillSwitch(opts: CheckKillSwitchOptions): Promise<KillSwitchResult>;
141
+ /**
142
+ * Match a running version against a manifest spec. Public for unit
143
+ * testing the operator surface independently of the fetch path.
144
+ */
145
+ export declare function matchesVersion(running: string, spec: string): boolean;
146
+ export interface FormatKillSwitchMessageOptions {
147
+ /** "ttctl" or "ttctl mcp" — appears in the rendered warning header. */
148
+ toolName: string;
149
+ /** Running version (string, displayed verbatim). */
150
+ version: string;
151
+ /** Matched entry (carries reason + action + as_of). */
152
+ entry: KillSwitchEntry;
153
+ }
154
+ /**
155
+ * Render a user-facing warning/refusal message for a kill-switch match.
156
+ * Used by both CLI and MCP wire-ups so the surface stays consistent.
157
+ * Message always includes the runbook link and the override hint —
158
+ * critical for users who land on the warning without context.
159
+ */
160
+ export declare function formatKillSwitchMessage(opts: FormatKillSwitchMessageOptions): string;
161
+ //# sourceMappingURL=kill-switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kill-switch.d.ts","sourceRoot":"","sources":["../src/kill-switch.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,wFACkD,CAAC;AAExF,sEAAsE;AACtE,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAEnD,2EAA2E;AAC3E,eAAO,MAAM,uCAAuC,QAAsB,CAAC;AAE3E,wEAAwE;AACxE,eAAO,MAAM,4BAA4B,8BAA8B,CAAC;AAUxE,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,CAAC,CAAC;IAClB,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACnC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0C7F;AAwBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAqBrE;AAmDD,MAAM,WAAW,8BAA8B;IAC7C,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,KAAK,EAAE,eAAe,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,8BAA8B,GAAG,MAAM,CASpF"}
@@ -0,0 +1,235 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ /**
4
+ * Remote version-killed manifest (#312) — defense-in-depth kill switch
5
+ * for the TTCtl reverse-engineered surface.
6
+ *
7
+ * **Background**: TTCtl is reverse-engineered from Toptal's APK + GraphQL
8
+ * extraction. The wire format on any of the three surfaces
9
+ * (`mobile-gateway`, `talent-profile`, `scheduler`) can change at any
10
+ * time without warning. Internal defenses (T1 wire-shape snapshots, T2
11
+ * codegen-Zod, E2E coverage gate, schema/contract rule) detect drift
12
+ * for the maintainer's account at the maintainer's pace — but they do
13
+ * NOT cover how an existing user's install degrades gracefully when
14
+ * their wire-version is known-broken.
15
+ *
16
+ * This module fetches a tiny JSON manifest from the project's own
17
+ * stable infrastructure at startup and surfaces a warning (CLI may
18
+ * additionally refuse) when the running version is listed. The
19
+ * detection sources, severity tiers, and response procedure are
20
+ * documented in `docs/operations/wire-breakage-runbook.md`.
21
+ *
22
+ * **Privacy** — the fetch sends ONLY the default Node fetch headers and
23
+ * the URL. No version, no account identifier, no telemetry. Install-
24
+ * count tracking is a separate (intentionally deferred) question.
25
+ *
26
+ * **Fail-silent contract** — every error path returns `fetch-failed`
27
+ * silently. The kill switch MUST NEVER itself cause a denial-of-service
28
+ * when the maintainer's GitHub raw URL is briefly unreachable, the
29
+ * client is offline, the manifest is malformed, or a parse error
30
+ * surfaces. Outer try/catch envelope on the fetch + structural
31
+ * validation of the parsed JSON is the load-bearing defense.
32
+ *
33
+ * **Override** — set `TTCTL_DISABLE_KILL_SWITCH=1` to disable the
34
+ * check entirely. The value is read ONCE at module load (matches the
35
+ * established `TTCTL_DEBUG_CONFIG` / `TTCTL_DEBUG_MCP` /
36
+ * `TTCTL_MCP_FILE_UPLOAD_ALLOW_ANY` conventions). Any other value
37
+ * (including empty string, `0`, `true`, or unset) keeps the check
38
+ * enabled. Tests exercising both paths must `vi.resetModules()` and
39
+ * dynamic-import after mutating `process.env`.
40
+ */
41
+ /**
42
+ * Stable manifest URL. Hosted at raw.githubusercontent.com from the
43
+ * project repo's `main` branch (chosen for: zero CI setup, instant
44
+ * updates on push, maintainer-only write via branch protection).
45
+ *
46
+ * Exported so callers can override for testing or local fixtures.
47
+ */
48
+ export const KILL_SWITCH_MANIFEST_URL = "https://raw.githubusercontent.com/alexey-pelykh/ttctl/main/status/known-broken.json";
49
+ /** Default fetch timeout (ms). 3s upper bound on every invocation. */
50
+ export const KILL_SWITCH_DEFAULT_TIMEOUT_MS = 3000;
51
+ /** Default refetch interval for long-lived processes (MCP server). 24h. */
52
+ export const KILL_SWITCH_DEFAULT_REFETCH_INTERVAL_MS = 24 * 60 * 60 * 1000;
53
+ /** Env-var name (documented for callers + README + audit-checklist). */
54
+ export const KILL_SWITCH_OVERRIDE_ENV_VAR = "TTCTL_DISABLE_KILL_SWITCH";
55
+ /**
56
+ * Module-load capture of `TTCTL_DISABLE_KILL_SWITCH=1`. Read ONCE so the
57
+ * disabled path is constant-folded by V8 on subsequent JIT passes — the
58
+ * zero-cost-when-disabled contract matches `TTCTL_DEBUG_CONFIG`'s
59
+ * `DEBUG_ENABLED` in `configWriter.ts`.
60
+ */
61
+ const KILL_SWITCH_DISABLED = process.env[KILL_SWITCH_OVERRIDE_ENV_VAR] === "1";
62
+ /**
63
+ * Check whether the running version appears in the remote known-broken
64
+ * manifest. Returns a discriminated `KillSwitchResult` — never throws,
65
+ * regardless of network / parse / shape failures (fail-silent contract).
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const result = await checkKillSwitch({ version: "0.1.0" });
70
+ * if (result.status === "match") {
71
+ * process.stderr.write(formatKillSwitchMessage({ toolName: "ttctl", version: "0.1.0", entry: result.entry }));
72
+ * if (result.entry.action === "refuse") process.exit(1);
73
+ * }
74
+ * ```
75
+ */
76
+ export async function checkKillSwitch(opts) {
77
+ if (KILL_SWITCH_DISABLED)
78
+ return { status: "disabled" };
79
+ const url = opts.url ?? KILL_SWITCH_MANIFEST_URL;
80
+ const timeoutMs = opts.timeoutMs ?? KILL_SWITCH_DEFAULT_TIMEOUT_MS;
81
+ const fetchImpl = opts.fetchFn ?? globalThis.fetch;
82
+ let parsed;
83
+ try {
84
+ const controller = new AbortController();
85
+ const timer = setTimeout(() => {
86
+ controller.abort();
87
+ }, timeoutMs);
88
+ try {
89
+ // No custom headers — sends only the default fetch User-Agent.
90
+ // Privacy posture: no version / account / telemetry in the
91
+ // request envelope (per #312 spec).
92
+ const response = await fetchImpl(url, { signal: controller.signal });
93
+ if (!response.ok) {
94
+ return { status: "fetch-failed", reason: `http_${response.status.toString()}` };
95
+ }
96
+ const body = await response.text();
97
+ parsed = JSON.parse(body);
98
+ }
99
+ finally {
100
+ clearTimeout(timer);
101
+ }
102
+ }
103
+ catch (err) {
104
+ // AbortError, network error, JSON parse error — all silent.
105
+ const reason = err instanceof Error ? (err.name === "Error" ? err.message : err.name) : "unknown";
106
+ return { status: "fetch-failed", reason };
107
+ }
108
+ if (!isValidManifest(parsed)) {
109
+ return { status: "fetch-failed", reason: "manifest_shape_invalid" };
110
+ }
111
+ for (const entry of parsed.known_broken) {
112
+ if (matchesVersion(opts.version, entry.version_spec)) {
113
+ return { status: "match", entry };
114
+ }
115
+ }
116
+ return { status: "no-match" };
117
+ }
118
+ function isValidManifest(value) {
119
+ if (typeof value !== "object" || value === null)
120
+ return false;
121
+ const m = value;
122
+ if (m.schema_version !== 1)
123
+ return false;
124
+ if (!Array.isArray(m.known_broken))
125
+ return false;
126
+ for (const entry of m.known_broken) {
127
+ if (!isValidEntry(entry))
128
+ return false;
129
+ }
130
+ return true;
131
+ }
132
+ function isValidEntry(value) {
133
+ if (typeof value !== "object" || value === null)
134
+ return false;
135
+ const e = value;
136
+ return (typeof e.version_spec === "string" &&
137
+ typeof e.reason === "string" &&
138
+ (e.action === "warn" || e.action === "refuse") &&
139
+ typeof e.as_of === "string");
140
+ }
141
+ /**
142
+ * Match a running version against a manifest spec. Public for unit
143
+ * testing the operator surface independently of the fetch path.
144
+ */
145
+ export function matchesVersion(running, spec) {
146
+ const trimmed = spec.trim();
147
+ if (trimmed === "*")
148
+ return true;
149
+ // Longest-prefix-first so `<=` matches before `<`, `>=` before `>`.
150
+ const operators = [
151
+ { token: "<=", cmp: (o) => o <= 0 },
152
+ { token: ">=", cmp: (o) => o >= 0 },
153
+ { token: "<", cmp: (o) => o < 0 },
154
+ { token: ">", cmp: (o) => o > 0 },
155
+ { token: "=", cmp: (o) => o === 0 },
156
+ ];
157
+ for (const { token, cmp } of operators) {
158
+ if (trimmed.startsWith(token)) {
159
+ const rhs = trimmed.slice(token.length).trim();
160
+ const ordering = compareSemverLike(running, rhs);
161
+ return ordering === null ? false : cmp(ordering);
162
+ }
163
+ }
164
+ // No prefix → exact match.
165
+ return compareSemverLike(running, trimmed) === 0;
166
+ }
167
+ /**
168
+ * Three-way compare two semver-ish strings. Returns:
169
+ * -1 if a < b
170
+ * 0 if a == b
171
+ * +1 if a > b
172
+ * null if either string is unparseable (defensive — matcher returns
173
+ * false in that case rather than mis-matching).
174
+ *
175
+ * Implements just enough of semver §11 for the version_spec surface:
176
+ * - Strip `+build` metadata.
177
+ * - Compare `X.Y.Z` numerically.
178
+ * - On equal `X.Y.Z`, a pre-release tag (`-rc.1`) is LESS than no tag.
179
+ * - Both pre-release: lexicographic on the full suffix.
180
+ */
181
+ function compareSemverLike(a, b) {
182
+ const aStripped = stripBuild(a);
183
+ const bStripped = stripBuild(b);
184
+ const aParts = splitSemver(aStripped);
185
+ const bParts = splitSemver(bStripped);
186
+ if (aParts === null || bParts === null)
187
+ return null;
188
+ for (let i = 0; i < 3; i += 1) {
189
+ const av = aParts.numeric[i] ?? 0;
190
+ const bv = bParts.numeric[i] ?? 0;
191
+ if (av < bv)
192
+ return -1;
193
+ if (av > bv)
194
+ return 1;
195
+ }
196
+ if (aParts.pre === "" && bParts.pre === "")
197
+ return 0;
198
+ if (aParts.pre === "" && bParts.pre !== "")
199
+ return 1;
200
+ if (aParts.pre !== "" && bParts.pre === "")
201
+ return -1;
202
+ if (aParts.pre < bParts.pre)
203
+ return -1;
204
+ if (aParts.pre > bParts.pre)
205
+ return 1;
206
+ return 0;
207
+ }
208
+ function stripBuild(v) {
209
+ const idx = v.indexOf("+");
210
+ return idx === -1 ? v : v.slice(0, idx);
211
+ }
212
+ function splitSemver(v) {
213
+ const dashIdx = v.indexOf("-");
214
+ const base = dashIdx === -1 ? v : v.slice(0, dashIdx);
215
+ const pre = dashIdx === -1 ? "" : v.slice(dashIdx + 1);
216
+ const numeric = base.split(".").map((p) => Number.parseInt(p, 10));
217
+ if (numeric.length === 0 || numeric.some((n) => !Number.isFinite(n)))
218
+ return null;
219
+ return { numeric, pre };
220
+ }
221
+ /**
222
+ * Render a user-facing warning/refusal message for a kill-switch match.
223
+ * Used by both CLI and MCP wire-ups so the surface stays consistent.
224
+ * Message always includes the runbook link and the override hint —
225
+ * critical for users who land on the warning without context.
226
+ */
227
+ export function formatKillSwitchMessage(opts) {
228
+ const verb = opts.entry.action === "refuse" ? "REFUSED" : "WARNING";
229
+ return (`[${verb}] ${opts.toolName} ${opts.version} is flagged as broken.\n` +
230
+ ` Reason: ${opts.entry.reason}\n` +
231
+ ` Reported: ${opts.entry.as_of}\n` +
232
+ ` Runbook: https://github.com/alexey-pelykh/ttctl/blob/main/docs/operations/wire-breakage-runbook.md\n` +
233
+ ` Override: set ${KILL_SWITCH_OVERRIDE_ENV_VAR}=1 to silence this check.\n`);
234
+ }
235
+ //# sourceMappingURL=kill-switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kill-switch.js","sourceRoot":"","sources":["../src/kill-switch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Stable error code carried by {@link DateInputError}. Script consumers
3
+ * branch on `error.code` rather than parsing the user-facing prose.
4
+ */
5
+ export type DateInputErrorCode = "INVALID_DATE";
6
+ /**
7
+ * Typed error thrown by {@link parseDateInput} for malformed user input.
8
+ * Callers render the standard `<command> failed (<code>): <message>` shape
9
+ * and exit non-zero before any network call is made.
10
+ */
11
+ export declare class DateInputError extends Error {
12
+ readonly code: DateInputErrorCode;
13
+ readonly name = "DateInputError";
14
+ constructor(code: DateInputErrorCode, message: string);
15
+ }
16
+ /**
17
+ * Parsed date: year, optional month, optional day.
18
+ *
19
+ * Sub-domains pick the granularity they need:
20
+ * - Education / Employment use `year` only (the GraphQL fields are
21
+ * `yearFrom` / `yearTo` and `startDate` / `endDate` typed as `Int`,
22
+ * year-only per `research/captures/web/inputs/UpdateEducationInput.json`
23
+ * and `UpdateEmploymentInput.json`).
24
+ * - Certification uses `year` + `month` (the GraphQL fields are
25
+ * `validFromMonth` / `validFromYear` / `validToMonth` / `validToYear`).
26
+ *
27
+ * `month` and `day` are 1-indexed (1 = January, 1 = the first day).
28
+ */
29
+ export interface ParsedDate {
30
+ year: number;
31
+ month: number;
32
+ day: number;
33
+ }
34
+ /**
35
+ * Parse a free-form date flag value into a {@link ParsedDate}.
36
+ *
37
+ * Accepts:
38
+ * - **ISO-8601 date** (`YYYY-MM-DD`, e.g. `2023-01-15`) — preserves all three
39
+ * fields. Validates the date is a real calendar date (rejects 2023-02-30,
40
+ * 2023-13-01, etc.).
41
+ * - **Year-only** (`YYYY`, e.g. `2023`) — defaults `month` and `day` to `1`
42
+ * per issue #74's "internally treated as January 1st" rule.
43
+ *
44
+ * Throws {@link DateInputError} with code `INVALID_DATE` on:
45
+ * - Empty / non-string input
46
+ * - Format that matches neither shape
47
+ * - Out-of-range year (rejects years before 1900 or after the current year + 30
48
+ * to catch obvious typos like `203` or `20230` being written as a YYYY)
49
+ * - Out-of-range month or day for a real calendar date
50
+ *
51
+ * The helper is pure — no I/O — so it can be unit-tested directly.
52
+ *
53
+ * @param raw - the raw flag value as supplied by the user
54
+ * @param flagName - the user-facing flag name (e.g. `"from"`, `"issued"`),
55
+ * surfaced in error messages so the user knows which flag is wrong
56
+ */
57
+ export declare function parseDateInput(raw: string, flagName: string): ParsedDate;
58
+ //# sourceMappingURL=date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/lib/date.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEhD;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAGrB,IAAI,EAAE,kBAAkB;IAF1C,SAAkB,IAAI,oBAAoB;gBAExB,IAAI,EAAE,kBAAkB,EACxC,OAAO,EAAE,MAAM;CAIlB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAKD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAgCxE"}