@pellux/goodvibes-errors 0.37.2 → 1.0.0

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.
@@ -0,0 +1,106 @@
1
+ /**
2
+ * error-codes.ts — the canonical {@link SDKErrorCode} union, its runtime-accessible
3
+ * {@link SDKErrorCodes} mirror, and the two membership/narrowing helpers built on it.
4
+ *
5
+ * Split out of index.ts to stay under the repo's 800-line file cap (see
6
+ * scripts/check-line-cap.ts) — this block is self-contained (no dependency on
7
+ * GoodVibesSdkError or anything else in index.ts) and index.ts re-exports it
8
+ * unchanged, so this is a pure file-organization move with no API surface change.
9
+ */
10
+ /**
11
+ * Exhaustive string-literal union of the canonical error codes produced by the
12
+ * GoodVibes SDK. Use this type when you need to pattern-match on `err.code`
13
+ * without losing exhaustiveness checking.
14
+ *
15
+ * The `code` field on {@link GoodVibesSdkError} is typed as
16
+ * `SDKErrorCode | (string & {})` so that:
17
+ * - SDK-produced errors surface as one of the known literals (IDE autocomplete
18
+ * and exhaustive switches work).
19
+ * - Caller-supplied arbitrary string codes still type-check without casting.
20
+ *
21
+ * ### Consumer pattern
22
+ * ```ts
23
+ * import { isErrorCode, SDKErrorCodes } from '@pellux/goodvibes-errors';
24
+ *
25
+ * catch (err) {
26
+ * if (err instanceof GoodVibesSdkError) {
27
+ * if (isErrorCode(err, SDKErrorCodes.RATE_LIMITED)) {
28
+ * await delay(err.retryAfterMs ?? 1000);
29
+ * } else if (isErrorCode(err, SDKErrorCodes.AUTH_REQUIRED)) {
30
+ * await refreshToken();
31
+ * } else if (isErrorCode(err, SDKErrorCodes.TOKEN_EXPIRED)) {
32
+ * await refreshToken();
33
+ * }
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ export type SDKErrorCode = 'AUTH_REQUIRED' | 'TOKEN_EXPIRED' | 'PERMISSION_DENIED' | 'PAYMENT_REQUIRED' | 'RATE_LIMITED' | 'NETWORK_UNREACHABLE' | 'TIMEOUT' | 'CANCELLED' | 'NOT_FOUND' | 'CONFLICT' | 'SESSION_CLOSED' | 'NOT_INVOKABLE' | 'METHOD_NOT_FOUND' | 'VALIDATION_FAILED' | 'AGENT_TIMEOUT' | 'AGENT_FAILED' | 'TOOL_EXEC_FAILED' | 'SERVICE_UNAVAILABLE' | 'CONTRACT_MISMATCH' | 'PROTOCOL_ERROR' | 'INTERNAL_ERROR' | 'SDK_CONFIGURATION_ERROR' | 'SDK_CONTRACT_ERROR' | 'SDK_HTTP_STATUS_ERROR' | 'UNKNOWN';
39
+ /**
40
+ * Runtime-accessible const object mirroring the {@link SDKErrorCode} union.
41
+ * Prefer referencing these constants over raw string literals for refactor safety.
42
+ *
43
+ * @example
44
+ * import { SDKErrorCodes } from '@pellux/goodvibes-errors';
45
+ *
46
+ * if (err.code === SDKErrorCodes.RATE_LIMITED) {
47
+ * await delay(err.retryAfterMs ?? 1000);
48
+ * }
49
+ */
50
+ export declare const SDKErrorCodes: {
51
+ readonly AUTH_REQUIRED: "AUTH_REQUIRED";
52
+ readonly TOKEN_EXPIRED: "TOKEN_EXPIRED";
53
+ readonly PERMISSION_DENIED: "PERMISSION_DENIED";
54
+ readonly PAYMENT_REQUIRED: "PAYMENT_REQUIRED";
55
+ readonly RATE_LIMITED: "RATE_LIMITED";
56
+ readonly NETWORK_UNREACHABLE: "NETWORK_UNREACHABLE";
57
+ readonly TIMEOUT: "TIMEOUT";
58
+ readonly CANCELLED: "CANCELLED";
59
+ readonly NOT_FOUND: "NOT_FOUND";
60
+ readonly CONFLICT: "CONFLICT";
61
+ readonly SESSION_CLOSED: "SESSION_CLOSED";
62
+ readonly NOT_INVOKABLE: "NOT_INVOKABLE";
63
+ readonly METHOD_NOT_FOUND: "METHOD_NOT_FOUND";
64
+ readonly VALIDATION_FAILED: "VALIDATION_FAILED";
65
+ readonly AGENT_TIMEOUT: "AGENT_TIMEOUT";
66
+ readonly AGENT_FAILED: "AGENT_FAILED";
67
+ readonly TOOL_EXEC_FAILED: "TOOL_EXEC_FAILED";
68
+ readonly SERVICE_UNAVAILABLE: "SERVICE_UNAVAILABLE";
69
+ readonly CONTRACT_MISMATCH: "CONTRACT_MISMATCH";
70
+ readonly PROTOCOL_ERROR: "PROTOCOL_ERROR";
71
+ readonly INTERNAL_ERROR: "INTERNAL_ERROR";
72
+ readonly SDK_CONFIGURATION_ERROR: "SDK_CONFIGURATION_ERROR";
73
+ readonly SDK_CONTRACT_ERROR: "SDK_CONTRACT_ERROR";
74
+ readonly SDK_HTTP_STATUS_ERROR: "SDK_HTTP_STATUS_ERROR";
75
+ readonly UNKNOWN: "UNKNOWN";
76
+ };
77
+ /**
78
+ * Returns `true` when `err.code` equals the given {@link SDKErrorCode},
79
+ * narrowing the type of `err.code` to the specific literal.
80
+ *
81
+ * Works with any object that has a `code?: string` field — not limited to
82
+ * {@link GoodVibesSdkError} subclasses.
83
+ *
84
+ * @example
85
+ * import { isErrorCode, SDKErrorCodes, GoodVibesSdkError } from '@pellux/goodvibes-errors';
86
+ *
87
+ * if (err instanceof GoodVibesSdkError && isErrorCode(err, SDKErrorCodes.RATE_LIMITED)) {
88
+ * console.log('retry after', err.retryAfterMs);
89
+ * }
90
+ *
91
+ * @param err - Any object with an optional `code` string field.
92
+ * @param code - The {@link SDKErrorCode} literal to match against.
93
+ */
94
+ export declare function isErrorCode<C extends SDKErrorCode>(err: {
95
+ readonly code?: SDKErrorCode | (string & {}) | undefined;
96
+ }, code: C): err is {
97
+ readonly code: C;
98
+ };
99
+ /**
100
+ * Returns `true` when `value` is a known {@link SDKErrorCode} string.
101
+ * Useful for discriminating structured errors received over the wire.
102
+ *
103
+ * @param value - The string to test.
104
+ */
105
+ export declare function isKnownErrorCode(value: string): value is SDKErrorCode;
106
+ //# sourceMappingURL=error-codes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,YAAY,GAEpB,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,kBAAkB,GAElB,cAAc,GAEd,qBAAqB,GACrB,SAAS,GACT,WAAW,GAEX,WAAW,GACX,UAAU,GACV,gBAAgB,GAEhB,eAAe,GACf,kBAAkB,GAElB,mBAAmB,GAEnB,eAAe,GACf,cAAc,GAEd,kBAAkB,GAElB,qBAAqB,GAErB,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,yBAAyB,GACzB,oBAAoB,GACpB,uBAAuB,GAEvB,SAAS,CAAC;AAEd;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B6B,CAAC;AAQxD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAChD,GAAG,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,SAAS,CAAA;CAAE,EACjE,IAAI,EAAE,CAAC,GACN,GAAG,IAAI;IAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAE7B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAErE"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * error-codes.ts — the canonical {@link SDKErrorCode} union, its runtime-accessible
3
+ * {@link SDKErrorCodes} mirror, and the two membership/narrowing helpers built on it.
4
+ *
5
+ * Split out of index.ts to stay under the repo's 800-line file cap (see
6
+ * scripts/check-line-cap.ts) — this block is self-contained (no dependency on
7
+ * GoodVibesSdkError or anything else in index.ts) and index.ts re-exports it
8
+ * unchanged, so this is a pure file-organization move with no API surface change.
9
+ */
10
+ /**
11
+ * Runtime-accessible const object mirroring the {@link SDKErrorCode} union.
12
+ * Prefer referencing these constants over raw string literals for refactor safety.
13
+ *
14
+ * @example
15
+ * import { SDKErrorCodes } from '@pellux/goodvibes-errors';
16
+ *
17
+ * if (err.code === SDKErrorCodes.RATE_LIMITED) {
18
+ * await delay(err.retryAfterMs ?? 1000);
19
+ * }
20
+ */
21
+ export const SDKErrorCodes = {
22
+ AUTH_REQUIRED: 'AUTH_REQUIRED',
23
+ TOKEN_EXPIRED: 'TOKEN_EXPIRED',
24
+ PERMISSION_DENIED: 'PERMISSION_DENIED',
25
+ PAYMENT_REQUIRED: 'PAYMENT_REQUIRED',
26
+ RATE_LIMITED: 'RATE_LIMITED',
27
+ NETWORK_UNREACHABLE: 'NETWORK_UNREACHABLE',
28
+ TIMEOUT: 'TIMEOUT',
29
+ CANCELLED: 'CANCELLED',
30
+ NOT_FOUND: 'NOT_FOUND',
31
+ CONFLICT: 'CONFLICT',
32
+ SESSION_CLOSED: 'SESSION_CLOSED',
33
+ NOT_INVOKABLE: 'NOT_INVOKABLE',
34
+ METHOD_NOT_FOUND: 'METHOD_NOT_FOUND',
35
+ VALIDATION_FAILED: 'VALIDATION_FAILED',
36
+ AGENT_TIMEOUT: 'AGENT_TIMEOUT',
37
+ AGENT_FAILED: 'AGENT_FAILED',
38
+ TOOL_EXEC_FAILED: 'TOOL_EXEC_FAILED',
39
+ SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',
40
+ CONTRACT_MISMATCH: 'CONTRACT_MISMATCH',
41
+ PROTOCOL_ERROR: 'PROTOCOL_ERROR',
42
+ INTERNAL_ERROR: 'INTERNAL_ERROR',
43
+ SDK_CONFIGURATION_ERROR: 'SDK_CONFIGURATION_ERROR',
44
+ SDK_CONTRACT_ERROR: 'SDK_CONTRACT_ERROR',
45
+ SDK_HTTP_STATUS_ERROR: 'SDK_HTTP_STATUS_ERROR',
46
+ UNKNOWN: 'UNKNOWN',
47
+ };
48
+ /**
49
+ * The set of known {@link SDKErrorCode} values for runtime membership tests.
50
+ * @internal
51
+ */
52
+ const SDK_ERROR_CODE_SET = new Set(Object.values(SDKErrorCodes));
53
+ /**
54
+ * Returns `true` when `err.code` equals the given {@link SDKErrorCode},
55
+ * narrowing the type of `err.code` to the specific literal.
56
+ *
57
+ * Works with any object that has a `code?: string` field — not limited to
58
+ * {@link GoodVibesSdkError} subclasses.
59
+ *
60
+ * @example
61
+ * import { isErrorCode, SDKErrorCodes, GoodVibesSdkError } from '@pellux/goodvibes-errors';
62
+ *
63
+ * if (err instanceof GoodVibesSdkError && isErrorCode(err, SDKErrorCodes.RATE_LIMITED)) {
64
+ * console.log('retry after', err.retryAfterMs);
65
+ * }
66
+ *
67
+ * @param err - Any object with an optional `code` string field.
68
+ * @param code - The {@link SDKErrorCode} literal to match against.
69
+ */
70
+ export function isErrorCode(err, code) {
71
+ return err.code === code;
72
+ }
73
+ /**
74
+ * Returns `true` when `value` is a known {@link SDKErrorCode} string.
75
+ * Useful for discriminating structured errors received over the wire.
76
+ *
77
+ * @param value - The string to test.
78
+ */
79
+ export function isKnownErrorCode(value) {
80
+ return SDK_ERROR_CODE_SET.has(value);
81
+ }
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import type { DaemonErrorCategory, DaemonErrorSource, StructuredDaemonErrorBody } from './daemon-error-contract.js';
2
+ import { SDKErrorCodes, isErrorCode, isKnownErrorCode, type SDKErrorCode } from './error-codes.js';
2
3
  export type { DaemonErrorSource, StructuredDaemonErrorBody, } from './daemon-error-contract.js';
3
4
  export { DaemonErrorCategory } from './daemon-error-contract.js';
5
+ export { SDKErrorCodes, isErrorCode, isKnownErrorCode, type SDKErrorCode };
4
6
  /**
5
7
  * `'contract'` is an SDK-internal category used when the daemon returns
6
8
  * a response that violates the expected contract schema. It is NOT part of the
@@ -24,99 +26,6 @@ export type ErrorSource = DaemonErrorSource | 'contract';
24
26
  * }
25
27
  */
26
28
  export type SDKErrorKind = 'auth' | 'config' | 'contract' | 'network' | 'not-found' | 'protocol' | 'rate-limit' | 'service' | 'internal' | 'tool' | 'validation' | 'unknown';
27
- /**
28
- * Exhaustive string-literal union of the canonical error codes produced by the
29
- * GoodVibes SDK. Use this type when you need to pattern-match on `err.code`
30
- * without losing exhaustiveness checking.
31
- *
32
- * The `code` field on {@link GoodVibesSdkError} is typed as
33
- * `SDKErrorCode | (string & {})` so that:
34
- * - SDK-produced errors surface as one of the known literals (IDE autocomplete
35
- * and exhaustive switches work).
36
- * - Caller-supplied arbitrary string codes still type-check without casting.
37
- *
38
- * ### Consumer pattern
39
- * ```ts
40
- * import { isErrorCode, SDKErrorCodes } from '@pellux/goodvibes-errors';
41
- *
42
- * catch (err) {
43
- * if (err instanceof GoodVibesSdkError) {
44
- * if (isErrorCode(err, SDKErrorCodes.RATE_LIMITED)) {
45
- * await delay(err.retryAfterMs ?? 1000);
46
- * } else if (isErrorCode(err, SDKErrorCodes.AUTH_REQUIRED)) {
47
- * await refreshToken();
48
- * } else if (isErrorCode(err, SDKErrorCodes.TOKEN_EXPIRED)) {
49
- * await refreshToken();
50
- * }
51
- * }
52
- * }
53
- * ```
54
- */
55
- export type SDKErrorCode = 'AUTH_REQUIRED' | 'TOKEN_EXPIRED' | 'PERMISSION_DENIED' | 'PAYMENT_REQUIRED' | 'RATE_LIMITED' | 'NETWORK_UNREACHABLE' | 'TIMEOUT' | 'CANCELLED' | 'NOT_FOUND' | 'CONFLICT' | 'VALIDATION_FAILED' | 'AGENT_TIMEOUT' | 'AGENT_FAILED' | 'TOOL_EXEC_FAILED' | 'SERVICE_UNAVAILABLE' | 'CONTRACT_MISMATCH' | 'PROTOCOL_ERROR' | 'INTERNAL_ERROR' | 'SDK_CONFIGURATION_ERROR' | 'SDK_CONTRACT_ERROR' | 'SDK_HTTP_STATUS_ERROR' | 'UNKNOWN';
56
- /**
57
- * Runtime-accessible const object mirroring the {@link SDKErrorCode} union.
58
- * Prefer referencing these constants over raw string literals for refactor safety.
59
- *
60
- * @example
61
- * import { SDKErrorCodes } from '@pellux/goodvibes-errors';
62
- *
63
- * if (err.code === SDKErrorCodes.RATE_LIMITED) {
64
- * await delay(err.retryAfterMs ?? 1000);
65
- * }
66
- */
67
- export declare const SDKErrorCodes: {
68
- readonly AUTH_REQUIRED: "AUTH_REQUIRED";
69
- readonly TOKEN_EXPIRED: "TOKEN_EXPIRED";
70
- readonly PERMISSION_DENIED: "PERMISSION_DENIED";
71
- readonly PAYMENT_REQUIRED: "PAYMENT_REQUIRED";
72
- readonly RATE_LIMITED: "RATE_LIMITED";
73
- readonly NETWORK_UNREACHABLE: "NETWORK_UNREACHABLE";
74
- readonly TIMEOUT: "TIMEOUT";
75
- readonly CANCELLED: "CANCELLED";
76
- readonly NOT_FOUND: "NOT_FOUND";
77
- readonly CONFLICT: "CONFLICT";
78
- readonly VALIDATION_FAILED: "VALIDATION_FAILED";
79
- readonly AGENT_TIMEOUT: "AGENT_TIMEOUT";
80
- readonly AGENT_FAILED: "AGENT_FAILED";
81
- readonly TOOL_EXEC_FAILED: "TOOL_EXEC_FAILED";
82
- readonly SERVICE_UNAVAILABLE: "SERVICE_UNAVAILABLE";
83
- readonly CONTRACT_MISMATCH: "CONTRACT_MISMATCH";
84
- readonly PROTOCOL_ERROR: "PROTOCOL_ERROR";
85
- readonly INTERNAL_ERROR: "INTERNAL_ERROR";
86
- readonly SDK_CONFIGURATION_ERROR: "SDK_CONFIGURATION_ERROR";
87
- readonly SDK_CONTRACT_ERROR: "SDK_CONTRACT_ERROR";
88
- readonly SDK_HTTP_STATUS_ERROR: "SDK_HTTP_STATUS_ERROR";
89
- readonly UNKNOWN: "UNKNOWN";
90
- };
91
- /**
92
- * Returns `true` when `err.code` equals the given {@link SDKErrorCode},
93
- * narrowing the type of `err.code` to the specific literal.
94
- *
95
- * Works with any object that has a `code?: string` field — not limited to
96
- * {@link GoodVibesSdkError} subclasses.
97
- *
98
- * @example
99
- * import { isErrorCode, SDKErrorCodes, GoodVibesSdkError } from '@pellux/goodvibes-errors';
100
- *
101
- * if (err instanceof GoodVibesSdkError && isErrorCode(err, SDKErrorCodes.RATE_LIMITED)) {
102
- * console.log('retry after', err.retryAfterMs);
103
- * }
104
- *
105
- * @param err - Any object with an optional `code` string field.
106
- * @param code - The {@link SDKErrorCode} literal to match against.
107
- */
108
- export declare function isErrorCode<C extends SDKErrorCode>(err: {
109
- readonly code?: SDKErrorCode | (string & {}) | undefined;
110
- }, code: C): err is {
111
- readonly code: C;
112
- };
113
- /**
114
- * Returns `true` when `value` is a known {@link SDKErrorCode} string.
115
- * Useful for discriminating structured errors received over the wire.
116
- *
117
- * @param value - The string to test.
118
- */
119
- export declare function isKnownErrorCode(value: string): value is SDKErrorCode;
120
29
  export interface GoodVibesSdkErrorOptions {
121
30
  /**
122
31
  * A typed error code for programmatic matching. May be an {@link SDKErrorCode}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,73 +1,8 @@
1
+ import { SDKErrorCodes, isErrorCode, isKnownErrorCode } from './error-codes.js';
1
2
  export { DaemonErrorCategory } from './daemon-error-contract.js';
2
- /**
3
- * Runtime-accessible const object mirroring the {@link SDKErrorCode} union.
4
- * Prefer referencing these constants over raw string literals for refactor safety.
5
- *
6
- * @example
7
- * import { SDKErrorCodes } from '@pellux/goodvibes-errors';
8
- *
9
- * if (err.code === SDKErrorCodes.RATE_LIMITED) {
10
- * await delay(err.retryAfterMs ?? 1000);
11
- * }
12
- */
13
- export const SDKErrorCodes = {
14
- AUTH_REQUIRED: 'AUTH_REQUIRED',
15
- TOKEN_EXPIRED: 'TOKEN_EXPIRED',
16
- PERMISSION_DENIED: 'PERMISSION_DENIED',
17
- PAYMENT_REQUIRED: 'PAYMENT_REQUIRED',
18
- RATE_LIMITED: 'RATE_LIMITED',
19
- NETWORK_UNREACHABLE: 'NETWORK_UNREACHABLE',
20
- TIMEOUT: 'TIMEOUT',
21
- CANCELLED: 'CANCELLED',
22
- NOT_FOUND: 'NOT_FOUND',
23
- CONFLICT: 'CONFLICT',
24
- VALIDATION_FAILED: 'VALIDATION_FAILED',
25
- AGENT_TIMEOUT: 'AGENT_TIMEOUT',
26
- AGENT_FAILED: 'AGENT_FAILED',
27
- TOOL_EXEC_FAILED: 'TOOL_EXEC_FAILED',
28
- SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',
29
- CONTRACT_MISMATCH: 'CONTRACT_MISMATCH',
30
- PROTOCOL_ERROR: 'PROTOCOL_ERROR',
31
- INTERNAL_ERROR: 'INTERNAL_ERROR',
32
- SDK_CONFIGURATION_ERROR: 'SDK_CONFIGURATION_ERROR',
33
- SDK_CONTRACT_ERROR: 'SDK_CONTRACT_ERROR',
34
- SDK_HTTP_STATUS_ERROR: 'SDK_HTTP_STATUS_ERROR',
35
- UNKNOWN: 'UNKNOWN',
36
- };
37
- /**
38
- * The set of known {@link SDKErrorCode} values for runtime membership tests.
39
- * @internal
40
- */
41
- const SDK_ERROR_CODE_SET = new Set(Object.values(SDKErrorCodes));
42
- /**
43
- * Returns `true` when `err.code` equals the given {@link SDKErrorCode},
44
- * narrowing the type of `err.code` to the specific literal.
45
- *
46
- * Works with any object that has a `code?: string` field — not limited to
47
- * {@link GoodVibesSdkError} subclasses.
48
- *
49
- * @example
50
- * import { isErrorCode, SDKErrorCodes, GoodVibesSdkError } from '@pellux/goodvibes-errors';
51
- *
52
- * if (err instanceof GoodVibesSdkError && isErrorCode(err, SDKErrorCodes.RATE_LIMITED)) {
53
- * console.log('retry after', err.retryAfterMs);
54
- * }
55
- *
56
- * @param err - Any object with an optional `code` string field.
57
- * @param code - The {@link SDKErrorCode} literal to match against.
58
- */
59
- export function isErrorCode(err, code) {
60
- return err.code === code;
61
- }
62
- /**
63
- * Returns `true` when `value` is a known {@link SDKErrorCode} string.
64
- * Useful for discriminating structured errors received over the wire.
65
- *
66
- * @param value - The string to test.
67
- */
68
- export function isKnownErrorCode(value) {
69
- return SDK_ERROR_CODE_SET.has(value);
70
- }
3
+ // Re-exported unchanged from error-codes.ts (split out to stay under the file's
4
+ // 800-line cap see that file's header comment).
5
+ export { SDKErrorCodes, isErrorCode, isKnownErrorCode };
71
6
  function inferKind(category) {
72
7
  switch (category) {
73
8
  case 'authentication':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-errors",
3
- "version": "0.37.2",
3
+ "version": "1.0.0",
4
4
  "engines": {
5
5
  "bun": "1.3.10",
6
6
  "node": ">=22.0.0"