@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.
- package/README.md +49 -9
- package/dist/__generated__/gateway.d.ts +4546 -0
- package/dist/__generated__/gateway.d.ts.map +1 -0
- package/dist/__generated__/gateway.js +9 -0
- package/dist/__generated__/gateway.js.map +1 -0
- package/dist/__generated__/talent-profile-zod-schemas.d.ts +1187 -0
- package/dist/__generated__/talent-profile-zod-schemas.d.ts.map +1 -0
- package/dist/__generated__/talent-profile-zod-schemas.js +1136 -0
- package/dist/__generated__/talent-profile-zod-schemas.js.map +1 -0
- package/dist/__generated__/talent-profile.d.ts +1397 -0
- package/dist/__generated__/talent-profile.d.ts.map +1 -0
- package/dist/__generated__/talent-profile.js +9 -0
- package/dist/__generated__/talent-profile.js.map +1 -0
- package/dist/__generated__/zod-schemas.d.ts +2895 -0
- package/dist/__generated__/zod-schemas.d.ts.map +1 -0
- package/dist/__generated__/zod-schemas.js +3121 -0
- package/dist/__generated__/zod-schemas.js.map +1 -0
- package/dist/__tests__/fixtures/profile/builders.d.ts +74 -0
- package/dist/__tests__/fixtures/profile/builders.d.ts.map +1 -0
- package/dist/__tests__/fixtures/profile/builders.js +196 -0
- package/dist/__tests__/fixtures/profile/builders.js.map +1 -0
- package/dist/__tests__/fixtures/profile/data.d.ts +39 -0
- package/dist/__tests__/fixtures/profile/data.d.ts.map +1 -0
- package/dist/__tests__/fixtures/profile/data.js +230 -0
- package/dist/__tests__/fixtures/profile/data.js.map +1 -0
- package/dist/__tests__/fixtures/profile/index.d.ts +9 -0
- package/dist/__tests__/fixtures/profile/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/profile/index.js +10 -0
- package/dist/__tests__/fixtures/profile/index.js.map +1 -0
- package/dist/__tests__/fixtures/profile/types.d.ts +53 -0
- package/dist/__tests__/fixtures/profile/types.d.ts.map +1 -0
- package/dist/__tests__/fixtures/profile/types.js +4 -0
- package/dist/__tests__/fixtures/profile/types.js.map +1 -0
- package/dist/auth/errors.d.ts +82 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +68 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth.d.ts +192 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +294 -0
- package/dist/auth.js.map +1 -0
- package/dist/config.d.ts +212 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +349 -0
- package/dist/config.js.map +1 -0
- package/dist/configLock.d.ts +50 -0
- package/dist/configLock.d.ts.map +1 -0
- package/dist/configLock.js +88 -0
- package/dist/configLock.js.map +1 -0
- package/dist/configWriter.d.ts +97 -0
- package/dist/configWriter.d.ts.map +1 -0
- package/dist/configWriter.js +687 -0
- package/dist/configWriter.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/kill-switch.d.ts +161 -0
- package/dist/kill-switch.d.ts.map +1 -0
- package/dist/kill-switch.js +235 -0
- package/dist/kill-switch.js.map +1 -0
- package/dist/lib/date.d.ts +58 -0
- package/dist/lib/date.d.ts.map +1 -0
- package/dist/lib/date.js +104 -0
- package/dist/lib/date.js.map +1 -0
- package/dist/lib/diagnostic-log.d.ts +159 -0
- package/dist/lib/diagnostic-log.d.ts.map +1 -0
- package/dist/lib/diagnostic-log.js +186 -0
- package/dist/lib/diagnostic-log.js.map +1 -0
- package/dist/lib/package-version.d.ts +19 -0
- package/dist/lib/package-version.d.ts.map +1 -0
- package/dist/lib/package-version.js +38 -0
- package/dist/lib/package-version.js.map +1 -0
- package/dist/lib/redact.d.ts +153 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +207 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/text.d.ts +14 -0
- package/dist/lib/text.d.ts.map +1 -0
- package/dist/lib/text.js +21 -0
- package/dist/lib/text.js.map +1 -0
- package/dist/lib/wire-shape.d.ts +131 -0
- package/dist/lib/wire-shape.d.ts.map +1 -0
- package/dist/lib/wire-shape.js +376 -0
- package/dist/lib/wire-shape.js.map +1 -0
- package/dist/onepassword.d.ts +29 -0
- package/dist/onepassword.d.ts.map +1 -0
- package/dist/onepassword.js +112 -0
- package/dist/onepassword.js.map +1 -0
- package/dist/services/_shared/transport.d.ts +148 -0
- package/dist/services/_shared/transport.d.ts.map +1 -0
- package/dist/services/_shared/transport.js +102 -0
- package/dist/services/_shared/transport.js.map +1 -0
- package/dist/services/applications/index.d.ts +210 -0
- package/dist/services/applications/index.d.ts.map +1 -0
- package/dist/services/applications/index.js +240 -0
- package/dist/services/applications/index.js.map +1 -0
- package/dist/services/availability/index.d.ts +254 -0
- package/dist/services/availability/index.d.ts.map +1 -0
- package/dist/services/availability/index.js +310 -0
- package/dist/services/availability/index.js.map +1 -0
- package/dist/services/contracts/index.d.ts +132 -0
- package/dist/services/contracts/index.d.ts.map +1 -0
- package/dist/services/contracts/index.js +211 -0
- package/dist/services/contracts/index.js.map +1 -0
- package/dist/services/engagements/index.d.ts +504 -0
- package/dist/services/engagements/index.d.ts.map +1 -0
- package/dist/services/engagements/index.js +613 -0
- package/dist/services/engagements/index.js.map +1 -0
- package/dist/services/jobs/index.d.ts +490 -0
- package/dist/services/jobs/index.d.ts.map +1 -0
- package/dist/services/jobs/index.js +753 -0
- package/dist/services/jobs/index.js.map +1 -0
- package/dist/services/payments/index.d.ts +415 -0
- package/dist/services/payments/index.d.ts.map +1 -0
- package/dist/services/payments/index.js +636 -0
- package/dist/services/payments/index.js.map +1 -0
- package/dist/services/profile/__tests__/fixtures.d.ts +214 -0
- package/dist/services/profile/__tests__/fixtures.d.ts.map +1 -0
- package/dist/services/profile/__tests__/fixtures.js +176 -0
- package/dist/services/profile/__tests__/fixtures.js.map +1 -0
- package/dist/services/profile/basic/index.d.ts +390 -0
- package/dist/services/profile/basic/index.d.ts.map +1 -0
- package/dist/services/profile/basic/index.js +1007 -0
- package/dist/services/profile/basic/index.js.map +1 -0
- package/dist/services/profile/certifications/index.d.ts +74 -0
- package/dist/services/profile/certifications/index.d.ts.map +1 -0
- package/dist/services/profile/certifications/index.js +169 -0
- package/dist/services/profile/certifications/index.js.map +1 -0
- package/dist/services/profile/education/index.d.ts +73 -0
- package/dist/services/profile/education/index.d.ts.map +1 -0
- package/dist/services/profile/education/index.js +168 -0
- package/dist/services/profile/education/index.js.map +1 -0
- package/dist/services/profile/employment/index.d.ts +111 -0
- package/dist/services/profile/employment/index.d.ts.map +1 -0
- package/dist/services/profile/employment/index.js +202 -0
- package/dist/services/profile/employment/index.js.map +1 -0
- package/dist/services/profile/external/index.d.ts +219 -0
- package/dist/services/profile/external/index.d.ts.map +1 -0
- package/dist/services/profile/external/index.js +560 -0
- package/dist/services/profile/external/index.js.map +1 -0
- package/dist/services/profile/index.d.ts +24 -0
- package/dist/services/profile/index.d.ts.map +1 -0
- package/dist/services/profile/index.js +26 -0
- package/dist/services/profile/index.js.map +1 -0
- package/dist/services/profile/industries/index.d.ts +130 -0
- package/dist/services/profile/industries/index.d.ts.map +1 -0
- package/dist/services/profile/industries/index.js +292 -0
- package/dist/services/profile/industries/index.js.map +1 -0
- package/dist/services/profile/portfolio/index.d.ts +352 -0
- package/dist/services/profile/portfolio/index.d.ts.map +1 -0
- package/dist/services/profile/portfolio/index.js +833 -0
- package/dist/services/profile/portfolio/index.js.map +1 -0
- package/dist/services/profile/resume/index.d.ts +60 -0
- package/dist/services/profile/resume/index.d.ts.map +1 -0
- package/dist/services/profile/resume/index.js +212 -0
- package/dist/services/profile/resume/index.js.map +1 -0
- package/dist/services/profile/reviews/index.d.ts +137 -0
- package/dist/services/profile/reviews/index.d.ts.map +1 -0
- package/dist/services/profile/reviews/index.js +431 -0
- package/dist/services/profile/reviews/index.js.map +1 -0
- package/dist/services/profile/shared.d.ts +127 -0
- package/dist/services/profile/shared.d.ts.map +1 -0
- package/dist/services/profile/shared.js +155 -0
- package/dist/services/profile/shared.js.map +1 -0
- package/dist/services/profile/skills/index.d.ts +212 -0
- package/dist/services/profile/skills/index.d.ts.map +1 -0
- package/dist/services/profile/skills/index.js +461 -0
- package/dist/services/profile/skills/index.js.map +1 -0
- package/dist/services/profile/visas/index.d.ts +74 -0
- package/dist/services/profile/visas/index.d.ts.map +1 -0
- package/dist/services/profile/visas/index.js +306 -0
- package/dist/services/profile/visas/index.js.map +1 -0
- package/dist/services/timesheet/index.d.ts +326 -0
- package/dist/services/timesheet/index.d.ts.map +1 -0
- package/dist/services/timesheet/index.js +324 -0
- package/dist/services/timesheet/index.js.map +1 -0
- package/dist/services/translations.d.ts +79 -0
- package/dist/services/translations.d.ts.map +1 -0
- package/dist/services/translations.js +136 -0
- package/dist/services/translations.js.map +1 -0
- package/dist/transport-resilience.d.ts +136 -0
- package/dist/transport-resilience.d.ts.map +1 -0
- package/dist/transport-resilience.js +247 -0
- package/dist/transport-resilience.js.map +1 -0
- package/dist/transport.d.ts +408 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +691 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +41 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -0
- package/package.json +40 -12
- 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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|