@better-agent/shared 0.1.0-canary.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.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @better-agent/shared
2
+
3
+ Shared utilities for Better Agent.
@@ -0,0 +1,36 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __exportAll = (all, no_symbols) => {
7
+ let target = {};
8
+ for (var name in all) {
9
+ __defProp(target, name, {
10
+ get: all[name],
11
+ enumerable: true
12
+ });
13
+ }
14
+ if (!no_symbols) {
15
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
16
+ }
17
+ return target;
18
+ };
19
+ var __copyProps = (to, from, except, desc) => {
20
+ if (from && typeof from === "object" || typeof from === "function") {
21
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
22
+ key = keys[i];
23
+ if (!__hasOwnProp.call(to, key) && key !== except) {
24
+ __defProp(to, key, {
25
+ get: ((k) => from[k]).bind(null, key),
26
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
27
+ });
28
+ }
29
+ }
30
+ }
31
+ return to;
32
+ };
33
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
34
+
35
+ //#endregion
36
+ export { __reExport as n, __exportAll as t };
@@ -0,0 +1,96 @@
1
+ //#region src/errors.d.ts
2
+ /** Better Agent error codes. */
3
+ type BetterAgentErrorCode = "BAD_REQUEST" | "VALIDATION_FAILED" | "NOT_FOUND" | "CONFLICT" | "RATE_LIMITED" | "TIMEOUT" | "ABORTED" | "UPSTREAM_FAILED" | "INTERNAL" | (string & {});
4
+ type ErrorCodeMeta = {
5
+ status: number;
6
+ title: string;
7
+ retryable: boolean;
8
+ slug: string;
9
+ };
10
+ declare const ERROR_DOCS_BASE_URL = "https://better-agent.com/docs/concepts/errors";
11
+ /** Default metadata by error code. */
12
+ declare const ERROR_CODE_META: Readonly<Record<string, ErrorCodeMeta>>;
13
+ /** One error trace frame. */
14
+ type BetterAgentErrorTraceFrame = {
15
+ at: string;
16
+ data?: Record<string, unknown>;
17
+ };
18
+ /** Free-form error metadata. */
19
+ type BetterAgentErrorContext = Record<string, unknown>;
20
+ /** RFC 7807-style error payload. */
21
+ type BetterAgentProblemDetails = {
22
+ type: string;
23
+ title: string;
24
+ status: number;
25
+ detail: string;
26
+ code: string;
27
+ retryable?: boolean;
28
+ issues?: unknown[];
29
+ context?: BetterAgentErrorContext;
30
+ traceId?: string;
31
+ trace?: BetterAgentErrorTraceFrame[];
32
+ };
33
+ type WrapOptions = {
34
+ code?: BetterAgentErrorCode | undefined;
35
+ status?: number | undefined;
36
+ title?: string | undefined;
37
+ type?: string | undefined;
38
+ retryable?: boolean | undefined;
39
+ issues?: unknown[] | undefined;
40
+ context?: BetterAgentErrorContext | undefined;
41
+ traceId?: string | undefined;
42
+ cause?: unknown;
43
+ trace?: BetterAgentErrorTraceFrame[] | undefined;
44
+ stackFrom?: Function;
45
+ };
46
+ /** Options for {@link BetterAgentError}. */
47
+ type BetterAgentErrorOptions = {
48
+ code: BetterAgentErrorCode;
49
+ status?: number | undefined;
50
+ title?: string | undefined;
51
+ type?: string | undefined;
52
+ retryable?: boolean | undefined;
53
+ issues?: unknown[] | undefined;
54
+ context?: BetterAgentErrorContext | undefined;
55
+ traceId?: string | undefined;
56
+ cause?: unknown;
57
+ trace?: BetterAgentErrorTraceFrame[] | undefined;
58
+ stackFrom?: Function;
59
+ };
60
+ /** Better Agent error type. */
61
+ declare class BetterAgentError extends Error {
62
+ code: BetterAgentErrorCode;
63
+ status: number;
64
+ title: string;
65
+ type: string;
66
+ retryable: boolean;
67
+ issues?: unknown[];
68
+ context?: BetterAgentErrorContext;
69
+ traceId?: string;
70
+ trace: BetterAgentErrorTraceFrame[];
71
+ constructor(message: string, opts: BetterAgentErrorOptions);
72
+ /** Adds a trace frame. */
73
+ at(frame: BetterAgentErrorTraceFrame): this;
74
+ /** Converts this error to problem details. */
75
+ toProblem(overrides?: Partial<BetterAgentProblemDetails>): BetterAgentProblemDetails;
76
+ /** JSON form for `JSON.stringify`. */
77
+ toJSON(): BetterAgentProblemDetails;
78
+ /** Debug form with stack and cause. */
79
+ toDebugJSON(): BetterAgentProblemDetails & {
80
+ stack?: string;
81
+ cause?: unknown;
82
+ };
83
+ /** Creates an error from a code and message. */
84
+ static fromCode(code: BetterAgentErrorCode, message: string, opts?: Omit<WrapOptions, "code">): BetterAgentError;
85
+ /** Rehydrates an error from problem details. */
86
+ static fromProblem(input: BetterAgentProblemDetails | Record<string, unknown>, opts?: Omit<WrapOptions, "code">): BetterAgentError;
87
+ /** Wraps unknown errors as {@link BetterAgentError}. */
88
+ static wrap(args: {
89
+ err: unknown;
90
+ message?: string;
91
+ opts?: WrapOptions;
92
+ }): BetterAgentError;
93
+ }
94
+ //#endregion
95
+ export { BetterAgentError, BetterAgentErrorCode, BetterAgentErrorContext, BetterAgentErrorOptions, BetterAgentErrorTraceFrame, BetterAgentProblemDetails, ERROR_CODE_META, ERROR_DOCS_BASE_URL };
96
+ //# sourceMappingURL=errors.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.mts","names":[],"sources":["../src/errors.ts"],"mappings":";;KACY,oBAAA;AAAA,KAYP,aAAA;EACD,MAAA;EACA,KAAA;EACA,SAAA;EACA,IAAA;AAAA;AAAA,cAGS,mBAAA;;cAGA,eAAA,EAAiB,QAAA,CAAS,MAAA,SAAe,aAAA;;KAsC1C,0BAAA;EACR,EAAA;EACA,IAAA,GAAO,MAAA;AAAA;AA3CX;AAAA,KA+CY,uBAAA,GAA0B,MAAA;;KAG1B,yBAAA;EACR,IAAA;EACA,KAAA;EACA,MAAA;EACA,MAAA;EACA,IAAA;EACA,SAAA;EACA,MAAA;EACA,OAAA,GAAU,uBAAA;EACV,OAAA;EACA,KAAA,GAAQ,0BAAA;AAAA;AAAA,KAGP,WAAA;EACD,IAAA,GAAO,oBAAA;EACP,MAAA;EACA,KAAA;EACA,IAAA;EACA,SAAA;EACA,MAAA;EACA,OAAA,GAAU,uBAAA;EACV,OAAA;EACA,KAAA;EACA,KAAA,GAAQ,0BAAA;EAER,SAAA,GAAY,QAAA;AAAA;;KAIJ,uBAAA;EACR,IAAA,EAAM,oBAAA;EACN,MAAA;EACA,KAAA;EACA,IAAA;EACA,SAAA;EACA,MAAA;EACA,OAAA,GAAU,uBAAA;EACV,OAAA;EACA,KAAA;EACA,KAAA,GAAQ,0BAAA;EAER,SAAA,GAAY,QAAA;AAAA;;cAkCH,gBAAA,SAAyB,KAAA;EAClC,IAAA,EAAM,oBAAA;EACN,MAAA;EACA,KAAA;EACA,IAAA;EACA,SAAA;EACQ,MAAA;EACA,OAAA,GAAU,uBAAA;EACV,OAAA;EACR,KAAA,EAAO,0BAAA;cAEK,OAAA,UAAiB,IAAA,EAAM,uBAAA;EAlEzB;EAiGV,EAAA,CAAG,KAAA,EAAO,0BAAA;EA5FE;EAkGZ,SAAA,CAAU,SAAA,GAAW,OAAA,CAAQ,yBAAA,IAAkC,yBAAA;EAlG3C;EAiIpB,MAAA,CAAA,GAAM,yBAAA;EA5IC;EAiJP,WAAA,CAAA,GAAW,yBAAA;;;;EA5IX;EAAA,OAyJO,QAAA,CACH,IAAA,EAAM,oBAAA,EACN,OAAA,UACA,IAAA,GAAM,IAAA,CAAK,WAAA,YACZ,gBAAA;EA5JO;EAAA,OAqKH,WAAA,CACH,KAAA,EAAO,yBAAA,GAA4B,MAAA,mBACnC,IAAA,GAAM,IAAA,CAAK,WAAA,YACZ,gBAAA;EAtKH;EAAA,OAkMO,IAAA,CAAK,IAAA;IACR,GAAA;IACA,OAAA;IACA,IAAA,GAAO,WAAA;EAAA,IACP,gBAAA;AAAA"}
@@ -0,0 +1,214 @@
1
+ //#region src/errors.ts
2
+ const ERROR_DOCS_BASE_URL = "https://better-agent.com/docs/concepts/errors";
3
+ /** Default metadata by error code. */
4
+ const ERROR_CODE_META = {
5
+ BAD_REQUEST: {
6
+ status: 400,
7
+ title: "Bad Request",
8
+ retryable: false,
9
+ slug: "bad-request"
10
+ },
11
+ NOT_FOUND: {
12
+ status: 404,
13
+ title: "Not Found",
14
+ retryable: false,
15
+ slug: "not-found"
16
+ },
17
+ CONFLICT: {
18
+ status: 409,
19
+ title: "Conflict",
20
+ retryable: false,
21
+ slug: "conflict"
22
+ },
23
+ VALIDATION_FAILED: {
24
+ status: 422,
25
+ title: "Unprocessable Entity",
26
+ retryable: false,
27
+ slug: "validation-failed"
28
+ },
29
+ RATE_LIMITED: {
30
+ status: 429,
31
+ title: "Too Many Requests",
32
+ retryable: true,
33
+ slug: "rate-limited"
34
+ },
35
+ TIMEOUT: {
36
+ status: 504,
37
+ title: "Gateway Timeout",
38
+ retryable: true,
39
+ slug: "timeout"
40
+ },
41
+ ABORTED: {
42
+ status: 499,
43
+ title: "Client Closed Request",
44
+ retryable: false,
45
+ slug: "aborted"
46
+ },
47
+ UPSTREAM_FAILED: {
48
+ status: 502,
49
+ title: "Upstream Failed",
50
+ retryable: true,
51
+ slug: "upstream-failed"
52
+ },
53
+ INTERNAL: {
54
+ status: 500,
55
+ title: "Internal Server Error",
56
+ retryable: false,
57
+ slug: "internal"
58
+ }
59
+ };
60
+ const isRecord = (value) => typeof value === "object" && value !== null;
61
+ const isProblemDetailsLike = (value) => {
62
+ if (!isRecord(value)) return false;
63
+ return typeof value.type === "string" && typeof value.title === "string" && typeof value.status === "number" && typeof value.detail === "string" && typeof value.code === "string";
64
+ };
65
+ const getCodeMeta = (code) => {
66
+ const found = ERROR_CODE_META[code];
67
+ if (found) return found;
68
+ return {
69
+ status: 500,
70
+ title: "Internal Server Error",
71
+ retryable: false,
72
+ slug: code.toLowerCase().replace(/_/g, "-")
73
+ };
74
+ };
75
+ const getDocsTypeUrl = (code) => {
76
+ return `${ERROR_DOCS_BASE_URL}#${getCodeMeta(code).slug}`;
77
+ };
78
+ /** Better Agent error type. */
79
+ var BetterAgentError = class BetterAgentError extends Error {
80
+ code;
81
+ status;
82
+ title;
83
+ type;
84
+ retryable;
85
+ trace;
86
+ constructor(message, opts) {
87
+ if (opts.cause !== void 0) super(message, { cause: opts.cause });
88
+ else super(message);
89
+ Object.setPrototypeOf(this, new.target.prototype);
90
+ this.name = "BetterAgentError";
91
+ const meta = getCodeMeta(opts.code);
92
+ this.code = opts.code;
93
+ this.status = opts.status ?? meta.status;
94
+ this.title = opts.title ?? meta.title;
95
+ this.type = opts.type ?? getDocsTypeUrl(opts.code);
96
+ this.retryable = opts.retryable ?? meta.retryable;
97
+ if (opts.issues !== void 0) this.issues = opts.issues;
98
+ if (opts.context !== void 0) this.context = opts.context;
99
+ if (opts.traceId !== void 0) this.traceId = opts.traceId;
100
+ this.trace = opts.trace ?? [];
101
+ const ctor = Error;
102
+ if (ctor.captureStackTrace !== void 0) ctor.captureStackTrace(this, opts.stackFrom ?? BetterAgentError);
103
+ }
104
+ /** Adds a trace frame. */
105
+ at(frame) {
106
+ this.trace.push(frame);
107
+ return this;
108
+ }
109
+ /** Converts this error to problem details. */
110
+ toProblem(overrides = {}) {
111
+ const out = {
112
+ type: overrides.type ?? this.type,
113
+ title: overrides.title ?? this.title,
114
+ status: overrides.status ?? this.status,
115
+ detail: overrides.detail ?? this.message,
116
+ code: String(overrides.code ?? this.code)
117
+ };
118
+ const retryable = overrides.retryable ?? this.retryable;
119
+ if (retryable !== void 0) out.retryable = retryable;
120
+ const issues = overrides.issues ?? this.issues;
121
+ if (issues !== void 0) out.issues = issues;
122
+ const traceId = overrides.traceId ?? this.traceId;
123
+ if (traceId !== void 0) out.traceId = traceId;
124
+ const context = {
125
+ ...this.context ?? {},
126
+ ...isRecord(overrides.context) ? overrides.context : {}
127
+ };
128
+ if (Object.keys(context).length > 0) out.context = context;
129
+ const trace = overrides.trace ?? this.trace;
130
+ if (trace.length > 0) out.trace = trace;
131
+ return out;
132
+ }
133
+ /** JSON form for `JSON.stringify`. */
134
+ toJSON() {
135
+ return this.toProblem();
136
+ }
137
+ /** Debug form with stack and cause. */
138
+ toDebugJSON() {
139
+ const debug = this.toProblem();
140
+ if (this.stack !== void 0) debug.stack = this.stack;
141
+ if (this.cause !== void 0) debug.cause = this.cause;
142
+ return debug;
143
+ }
144
+ /** Creates an error from a code and message. */
145
+ static fromCode(code, message, opts = {}) {
146
+ return new BetterAgentError(message, {
147
+ code,
148
+ ...opts,
149
+ stackFrom: opts.stackFrom ?? BetterAgentError.fromCode
150
+ });
151
+ }
152
+ /** Rehydrates an error from problem details. */
153
+ static fromProblem(input, opts = {}) {
154
+ if (!isProblemDetailsLike(input)) return BetterAgentError.wrap({
155
+ err: input,
156
+ message: "Invalid problem details payload",
157
+ opts: {
158
+ ...opts,
159
+ code: "INTERNAL"
160
+ }
161
+ });
162
+ return new BetterAgentError(input.detail, {
163
+ code: input.code,
164
+ status: input.status,
165
+ title: input.title,
166
+ type: input.type,
167
+ retryable: input.retryable,
168
+ issues: input.issues,
169
+ context: input.context,
170
+ traceId: input.traceId,
171
+ trace: input.trace,
172
+ ...opts,
173
+ stackFrom: opts.stackFrom ?? BetterAgentError.fromProblem
174
+ });
175
+ }
176
+ /** Wraps unknown errors as {@link BetterAgentError}. */
177
+ static wrap(args) {
178
+ const code = args.opts?.code ?? "INTERNAL";
179
+ if (args.err instanceof BetterAgentError) return new BetterAgentError(args.message ? `${args.message}: ${args.err.message}` : args.err.message, {
180
+ code,
181
+ status: args.opts?.status ?? args.err.status,
182
+ title: args.opts?.title ?? args.err.title,
183
+ type: args.opts?.type ?? args.err.type,
184
+ retryable: args.opts?.retryable ?? args.err.retryable,
185
+ context: {
186
+ ...args.err.context ?? {},
187
+ ...args.opts?.context ?? {}
188
+ },
189
+ traceId: args.opts?.traceId ?? args.err.traceId,
190
+ trace: args.opts?.trace ? [...args.err.trace, ...args.opts.trace] : args.err.trace,
191
+ cause: args.opts?.cause ?? args.err,
192
+ stackFrom: args.opts?.stackFrom ?? BetterAgentError.wrap
193
+ });
194
+ if (isProblemDetailsLike(args.err)) return BetterAgentError.fromProblem(args.err, {
195
+ ...args.opts,
196
+ stackFrom: args.opts?.stackFrom ?? BetterAgentError.wrap
197
+ });
198
+ if (args.err instanceof Error) return new BetterAgentError(args.message || args.err.message, {
199
+ ...args.opts,
200
+ code,
201
+ cause: args.opts?.cause ?? args.err,
202
+ stackFrom: args.opts?.stackFrom ?? BetterAgentError.wrap
203
+ });
204
+ return new BetterAgentError(args.message || "Unknown error", {
205
+ ...args.opts,
206
+ code,
207
+ stackFrom: args.opts?.stackFrom ?? BetterAgentError.wrap
208
+ });
209
+ }
210
+ };
211
+
212
+ //#endregion
213
+ export { BetterAgentError, ERROR_CODE_META, ERROR_DOCS_BASE_URL };
214
+ //# sourceMappingURL=errors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.mjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["/** Better Agent error codes. */\nexport type BetterAgentErrorCode =\n | \"BAD_REQUEST\"\n | \"VALIDATION_FAILED\"\n | \"NOT_FOUND\"\n | \"CONFLICT\"\n | \"RATE_LIMITED\"\n | \"TIMEOUT\"\n | \"ABORTED\"\n | \"UPSTREAM_FAILED\"\n | \"INTERNAL\"\n | (string & {});\n\ntype ErrorCodeMeta = {\n status: number;\n title: string;\n retryable: boolean;\n slug: string;\n};\n\nexport const ERROR_DOCS_BASE_URL = \"https://better-agent.com/docs/concepts/errors\";\n\n/** Default metadata by error code. */\nexport const ERROR_CODE_META: Readonly<Record<string, ErrorCodeMeta>> = {\n BAD_REQUEST: { status: 400, title: \"Bad Request\", retryable: false, slug: \"bad-request\" },\n NOT_FOUND: { status: 404, title: \"Not Found\", retryable: false, slug: \"not-found\" },\n CONFLICT: { status: 409, title: \"Conflict\", retryable: false, slug: \"conflict\" },\n VALIDATION_FAILED: {\n status: 422,\n title: \"Unprocessable Entity\",\n retryable: false,\n slug: \"validation-failed\",\n },\n RATE_LIMITED: {\n status: 429,\n title: \"Too Many Requests\",\n retryable: true,\n slug: \"rate-limited\",\n },\n TIMEOUT: { status: 504, title: \"Gateway Timeout\", retryable: true, slug: \"timeout\" },\n ABORTED: {\n status: 499,\n title: \"Client Closed Request\",\n retryable: false,\n slug: \"aborted\",\n },\n UPSTREAM_FAILED: {\n status: 502,\n title: \"Upstream Failed\",\n retryable: true,\n slug: \"upstream-failed\",\n },\n INTERNAL: {\n status: 500,\n title: \"Internal Server Error\",\n retryable: false,\n slug: \"internal\",\n },\n};\n\n/** One error trace frame. */\nexport type BetterAgentErrorTraceFrame = {\n at: string;\n data?: Record<string, unknown>;\n};\n\n/** Free-form error metadata. */\nexport type BetterAgentErrorContext = Record<string, unknown>;\n\n/** RFC 7807-style error payload. */\nexport type BetterAgentProblemDetails = {\n type: string;\n title: string;\n status: number;\n detail: string;\n code: string;\n retryable?: boolean;\n issues?: unknown[];\n context?: BetterAgentErrorContext;\n traceId?: string;\n trace?: BetterAgentErrorTraceFrame[];\n};\n\ntype WrapOptions = {\n code?: BetterAgentErrorCode | undefined;\n status?: number | undefined;\n title?: string | undefined;\n type?: string | undefined;\n retryable?: boolean | undefined;\n issues?: unknown[] | undefined;\n context?: BetterAgentErrorContext | undefined;\n traceId?: string | undefined;\n cause?: unknown;\n trace?: BetterAgentErrorTraceFrame[] | undefined;\n // biome-ignore lint/complexity/noBannedTypes: Stack capture needs function constructor references.\n stackFrom?: Function;\n};\n\n/** Options for {@link BetterAgentError}. */\nexport type BetterAgentErrorOptions = {\n code: BetterAgentErrorCode;\n status?: number | undefined;\n title?: string | undefined;\n type?: string | undefined;\n retryable?: boolean | undefined;\n issues?: unknown[] | undefined;\n context?: BetterAgentErrorContext | undefined;\n traceId?: string | undefined;\n cause?: unknown;\n trace?: BetterAgentErrorTraceFrame[] | undefined;\n // biome-ignore lint/complexity/noBannedTypes: Stack capture needs function constructor references.\n stackFrom?: Function;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nconst isProblemDetailsLike = (value: unknown): value is BetterAgentProblemDetails => {\n if (!isRecord(value)) return false;\n return (\n typeof value.type === \"string\" &&\n typeof value.title === \"string\" &&\n typeof value.status === \"number\" &&\n typeof value.detail === \"string\" &&\n typeof value.code === \"string\"\n );\n};\n\nconst getCodeMeta = (code: string): ErrorCodeMeta => {\n const found = ERROR_CODE_META[code];\n if (found) return found;\n return {\n status: 500,\n title: \"Internal Server Error\",\n retryable: false,\n slug: code.toLowerCase().replace(/_/g, \"-\"),\n };\n};\n\nconst getDocsTypeUrl = (code: string): string => {\n const meta = getCodeMeta(code);\n return `${ERROR_DOCS_BASE_URL}#${meta.slug}`;\n};\n\n/** Better Agent error type. */\nexport class BetterAgentError extends Error {\n code: BetterAgentErrorCode;\n status: number;\n title: string;\n type: string;\n retryable: boolean;\n declare issues?: unknown[];\n declare context?: BetterAgentErrorContext;\n declare traceId?: string;\n trace: BetterAgentErrorTraceFrame[];\n\n constructor(message: string, opts: BetterAgentErrorOptions) {\n if (opts.cause !== undefined) {\n super(message, { cause: opts.cause });\n } else {\n super(message);\n }\n\n Object.setPrototypeOf(this, new.target.prototype);\n this.name = \"BetterAgentError\";\n\n const meta = getCodeMeta(opts.code);\n this.code = opts.code;\n this.status = opts.status ?? meta.status;\n this.title = opts.title ?? meta.title;\n this.type = opts.type ?? getDocsTypeUrl(opts.code);\n this.retryable = opts.retryable ?? meta.retryable;\n if (opts.issues !== undefined) this.issues = opts.issues;\n if (opts.context !== undefined) this.context = opts.context;\n if (opts.traceId !== undefined) this.traceId = opts.traceId;\n this.trace = opts.trace ?? [];\n\n // captureStackTrace is available in V8/Node.js environments\n const ctor = Error as unknown as {\n captureStackTrace?: (target: object, ctor?: unknown) => void;\n };\n if (ctor.captureStackTrace !== undefined) {\n ctor.captureStackTrace(this, opts.stackFrom ?? BetterAgentError);\n }\n }\n\n /** Adds a trace frame. */\n at(frame: BetterAgentErrorTraceFrame): this {\n this.trace.push(frame);\n return this;\n }\n\n /** Converts this error to problem details. */\n toProblem(overrides: Partial<BetterAgentProblemDetails> = {}): BetterAgentProblemDetails {\n const out: BetterAgentProblemDetails = {\n type: overrides.type ?? this.type,\n title: overrides.title ?? this.title,\n status: overrides.status ?? this.status,\n detail: overrides.detail ?? this.message,\n code: String(overrides.code ?? this.code),\n };\n\n const retryable = overrides.retryable ?? this.retryable;\n if (retryable !== undefined) out.retryable = retryable;\n\n const issues = overrides.issues ?? this.issues;\n if (issues !== undefined) out.issues = issues;\n\n const traceId = overrides.traceId ?? this.traceId;\n if (traceId !== undefined) out.traceId = traceId;\n\n const context = {\n ...(this.context ?? {}),\n ...(isRecord(overrides.context) ? overrides.context : {}),\n };\n if (Object.keys(context).length > 0) out.context = context;\n\n const trace = overrides.trace ?? this.trace;\n if (trace.length > 0) out.trace = trace;\n\n return out;\n }\n\n /** JSON form for `JSON.stringify`. */\n toJSON() {\n return this.toProblem();\n }\n\n /** Debug form with stack and cause. */\n toDebugJSON() {\n const debug = this.toProblem() as BetterAgentProblemDetails & {\n stack?: string;\n cause?: unknown;\n };\n\n if (this.stack !== undefined) debug.stack = this.stack;\n if (this.cause !== undefined) debug.cause = this.cause;\n\n return debug;\n }\n\n /** Creates an error from a code and message. */\n static fromCode(\n code: BetterAgentErrorCode,\n message: string,\n opts: Omit<WrapOptions, \"code\"> = {},\n ): BetterAgentError {\n return new BetterAgentError(message, {\n code,\n ...opts,\n stackFrom: opts.stackFrom ?? BetterAgentError.fromCode,\n });\n }\n\n /** Rehydrates an error from problem details. */\n static fromProblem(\n input: BetterAgentProblemDetails | Record<string, unknown>,\n opts: Omit<WrapOptions, \"code\"> = {},\n ): BetterAgentError {\n if (!isProblemDetailsLike(input)) {\n return BetterAgentError.wrap({\n err: input,\n message: \"Invalid problem details payload\",\n opts: {\n ...opts,\n code: \"INTERNAL\",\n },\n });\n }\n\n return new BetterAgentError(input.detail, {\n code: input.code,\n status: input.status,\n title: input.title,\n type: input.type,\n retryable: input.retryable,\n issues: input.issues,\n context: input.context,\n traceId: input.traceId,\n trace: input.trace,\n ...opts,\n stackFrom: opts.stackFrom ?? BetterAgentError.fromProblem,\n });\n }\n\n /** Wraps unknown errors as {@link BetterAgentError}. */\n static wrap(args: {\n err: unknown;\n message?: string;\n opts?: WrapOptions;\n }): BetterAgentError {\n const code = args.opts?.code ?? \"INTERNAL\";\n\n if (args.err instanceof BetterAgentError) {\n return new BetterAgentError(\n args.message ? `${args.message}: ${args.err.message}` : args.err.message,\n {\n code,\n status: args.opts?.status ?? args.err.status,\n title: args.opts?.title ?? args.err.title,\n type: args.opts?.type ?? args.err.type,\n retryable: args.opts?.retryable ?? args.err.retryable,\n context: {\n ...(args.err.context ?? {}),\n ...(args.opts?.context ?? {}),\n },\n traceId: args.opts?.traceId ?? args.err.traceId,\n trace: args.opts?.trace\n ? [...args.err.trace, ...args.opts.trace]\n : args.err.trace,\n cause: args.opts?.cause ?? args.err,\n stackFrom: args.opts?.stackFrom ?? BetterAgentError.wrap,\n },\n );\n }\n\n if (isProblemDetailsLike(args.err)) {\n return BetterAgentError.fromProblem(args.err, {\n ...args.opts,\n stackFrom: args.opts?.stackFrom ?? BetterAgentError.wrap,\n });\n }\n\n if (args.err instanceof Error) {\n return new BetterAgentError(args.message || args.err.message, {\n ...args.opts,\n code,\n cause: args.opts?.cause ?? args.err,\n stackFrom: args.opts?.stackFrom ?? BetterAgentError.wrap,\n });\n }\n\n return new BetterAgentError(args.message || \"Unknown error\", {\n ...args.opts,\n code,\n stackFrom: args.opts?.stackFrom ?? BetterAgentError.wrap,\n });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ //#region src/logger.d.ts
2
+ type LogLevel = "debug" | "info" | "success" | "warn" | "error";
3
+ type LogMethod = (message?: unknown, ...args: unknown[]) => void;
4
+ type InternalLogger = { [K in LogLevel]: LogMethod };
5
+ declare const logger: InternalLogger;
6
+ //#endregion
7
+ export { InternalLogger, LogLevel, LogMethod, logger };
8
+ //# sourceMappingURL=logger.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.mts","names":[],"sources":["../src/logger.ts"],"mappings":";KAAY,QAAA;AAAA,KAEA,SAAA,IAAa,OAAA,eAAsB,IAAA;AAAA,KAEnC,cAAA,WACF,QAAA,GAAW,SAAA;AAAA,cAyFR,MAAA,EAAQ,cAAA"}
@@ -0,0 +1,71 @@
1
+ //#region src/logger.ts
2
+ const levels = [
3
+ "debug",
4
+ "info",
5
+ "success",
6
+ "warn",
7
+ "error"
8
+ ];
9
+ const colors = {
10
+ reset: "\x1B[0m",
11
+ dim: "\x1B[2m",
12
+ bright: "\x1B[1m",
13
+ blue: "\x1B[34m",
14
+ green: "\x1B[32m",
15
+ yellow: "\x1B[33m",
16
+ red: "\x1B[31m",
17
+ magenta: "\x1B[35m"
18
+ };
19
+ const levelColors = {
20
+ debug: colors.magenta,
21
+ info: colors.blue,
22
+ success: colors.green,
23
+ warn: colors.yellow,
24
+ error: colors.red
25
+ };
26
+ function shouldPublishLog(currentLogLevel, logLevel) {
27
+ const currentIndex = levels.indexOf(currentLogLevel);
28
+ return levels.indexOf(logLevel) >= currentIndex;
29
+ }
30
+ function canUseColors() {
31
+ if (typeof process === "undefined") return false;
32
+ if (process.env?.NO_COLOR) return false;
33
+ if (process.env?.FORCE_COLOR) return true;
34
+ return Boolean(process.stdout?.isTTY);
35
+ }
36
+ function serializeMessage(message) {
37
+ if (message instanceof Error) return message.stack || message.message;
38
+ if (typeof message === "string") return message;
39
+ try {
40
+ return JSON.stringify(message, null, 2);
41
+ } catch {
42
+ return String(message);
43
+ }
44
+ }
45
+ function formatMessage(level, message) {
46
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
47
+ const text = serializeMessage(message);
48
+ if (canUseColors()) {
49
+ const color = levelColors[level];
50
+ const levelUpper = level.toUpperCase();
51
+ return `${colors.dim}${timestamp}${colors.reset} ${color}${levelUpper}${colors.reset} ${colors.bright}[Better Agent]:${colors.reset} ${text}`;
52
+ }
53
+ return `${timestamp} ${level.toUpperCase()} [Better-Agent]: ${text}`;
54
+ }
55
+ var LoggerImpl = class {
56
+ logLevel = "info";
57
+ log(level, message, ...args) {
58
+ if (!shouldPublishLog(this.logLevel, level)) return;
59
+ console.log(formatMessage(level, message), ...args);
60
+ }
61
+ debug = (message, ...args) => this.log("debug", message, ...args);
62
+ info = (message, ...args) => this.log("info", message, ...args);
63
+ success = (message, ...args) => this.log("success", message, ...args);
64
+ warn = (message, ...args) => this.log("warn", message, ...args);
65
+ error = (message, ...args) => this.log("error", message, ...args);
66
+ };
67
+ const logger = new LoggerImpl();
68
+
69
+ //#endregion
70
+ export { logger };
71
+ //# sourceMappingURL=logger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.mjs","names":[],"sources":["../src/logger.ts"],"sourcesContent":["export type LogLevel = \"debug\" | \"info\" | \"success\" | \"warn\" | \"error\";\n\nexport type LogMethod = (message?: unknown, ...args: unknown[]) => void;\n\nexport type InternalLogger = {\n [K in LogLevel]: LogMethod;\n};\n\ndeclare const process:\n | {\n env?: Record<string, string | undefined>;\n stdout?: { isTTY?: boolean };\n }\n | undefined;\n\nconst levels: readonly LogLevel[] = [\"debug\", \"info\", \"success\", \"warn\", \"error\"];\n\nconst colors = {\n reset: \"\\x1b[0m\",\n dim: \"\\x1b[2m\",\n bright: \"\\x1b[1m\",\n blue: \"\\x1b[34m\",\n green: \"\\x1b[32m\",\n yellow: \"\\x1b[33m\",\n red: \"\\x1b[31m\",\n magenta: \"\\x1b[35m\",\n};\n\nconst levelColors: Record<LogLevel, string> = {\n debug: colors.magenta,\n info: colors.blue,\n success: colors.green,\n warn: colors.yellow,\n error: colors.red,\n};\n\nfunction shouldPublishLog(currentLogLevel: LogLevel, logLevel: LogLevel): boolean {\n const currentIndex = levels.indexOf(currentLogLevel);\n const incomingIndex = levels.indexOf(logLevel);\n return incomingIndex >= currentIndex;\n}\n\nfunction canUseColors(): boolean {\n if (typeof process === \"undefined\") return false;\n if (process.env?.NO_COLOR) return false;\n if (process.env?.FORCE_COLOR) return true;\n return Boolean(process.stdout?.isTTY);\n}\n\nfunction serializeMessage(message: unknown): string {\n if (message instanceof Error) {\n return message.stack || message.message;\n }\n if (typeof message === \"string\") {\n return message;\n }\n try {\n return JSON.stringify(message, null, 2);\n } catch {\n return String(message);\n }\n}\n\nfunction formatMessage(level: LogLevel, message: unknown): string {\n const timestamp = new Date().toISOString();\n const text = serializeMessage(message);\n\n if (canUseColors()) {\n const color = levelColors[level];\n const levelUpper = level.toUpperCase();\n return `${colors.dim}${timestamp}${colors.reset} ${color}${levelUpper}${colors.reset} ${colors.bright}[Better Agent]:${colors.reset} ${text}`;\n }\n\n return `${timestamp} ${level.toUpperCase()} [Better-Agent]: ${text}`;\n}\n\nclass LoggerImpl implements InternalLogger {\n private readonly logLevel: LogLevel = \"info\";\n\n private log(level: LogLevel, message?: unknown, ...args: unknown[]) {\n if (!shouldPublishLog(this.logLevel, level)) {\n return;\n }\n\n console.log(formatMessage(level, message), ...args);\n }\n\n debug: LogMethod = (message, ...args) => this.log(\"debug\", message, ...args);\n info: LogMethod = (message, ...args) => this.log(\"info\", message, ...args);\n success: LogMethod = (message, ...args) => this.log(\"success\", message, ...args);\n warn: LogMethod = (message, ...args) => this.log(\"warn\", message, ...args);\n error: LogMethod = (message, ...args) => this.log(\"error\", message, ...args);\n}\n\nexport const logger: InternalLogger = new LoggerImpl();\n"],"mappings":";AAeA,MAAM,SAA8B;CAAC;CAAS;CAAQ;CAAW;CAAQ;CAAQ;AAEjF,MAAM,SAAS;CACX,OAAO;CACP,KAAK;CACL,QAAQ;CACR,MAAM;CACN,OAAO;CACP,QAAQ;CACR,KAAK;CACL,SAAS;CACZ;AAED,MAAM,cAAwC;CAC1C,OAAO,OAAO;CACd,MAAM,OAAO;CACb,SAAS,OAAO;CAChB,MAAM,OAAO;CACb,OAAO,OAAO;CACjB;AAED,SAAS,iBAAiB,iBAA2B,UAA6B;CAC9E,MAAM,eAAe,OAAO,QAAQ,gBAAgB;AAEpD,QADsB,OAAO,QAAQ,SAAS,IACtB;;AAG5B,SAAS,eAAwB;AAC7B,KAAI,OAAO,YAAY,YAAa,QAAO;AAC3C,KAAI,QAAQ,KAAK,SAAU,QAAO;AAClC,KAAI,QAAQ,KAAK,YAAa,QAAO;AACrC,QAAO,QAAQ,QAAQ,QAAQ,MAAM;;AAGzC,SAAS,iBAAiB,SAA0B;AAChD,KAAI,mBAAmB,MACnB,QAAO,QAAQ,SAAS,QAAQ;AAEpC,KAAI,OAAO,YAAY,SACnB,QAAO;AAEX,KAAI;AACA,SAAO,KAAK,UAAU,SAAS,MAAM,EAAE;SACnC;AACJ,SAAO,OAAO,QAAQ;;;AAI9B,SAAS,cAAc,OAAiB,SAA0B;CAC9D,MAAM,6BAAY,IAAI,MAAM,EAAC,aAAa;CAC1C,MAAM,OAAO,iBAAiB,QAAQ;AAEtC,KAAI,cAAc,EAAE;EAChB,MAAM,QAAQ,YAAY;EAC1B,MAAM,aAAa,MAAM,aAAa;AACtC,SAAO,GAAG,OAAO,MAAM,YAAY,OAAO,MAAM,GAAG,QAAQ,aAAa,OAAO,MAAM,GAAG,OAAO,OAAO,iBAAiB,OAAO,MAAM,GAAG;;AAG3I,QAAO,GAAG,UAAU,GAAG,MAAM,aAAa,CAAC,mBAAmB;;AAGlE,IAAM,aAAN,MAA2C;CACvC,AAAiB,WAAqB;CAEtC,AAAQ,IAAI,OAAiB,SAAmB,GAAG,MAAiB;AAChE,MAAI,CAAC,iBAAiB,KAAK,UAAU,MAAM,CACvC;AAGJ,UAAQ,IAAI,cAAc,OAAO,QAAQ,EAAE,GAAG,KAAK;;CAGvD,SAAoB,SAAS,GAAG,SAAS,KAAK,IAAI,SAAS,SAAS,GAAG,KAAK;CAC5E,QAAmB,SAAS,GAAG,SAAS,KAAK,IAAI,QAAQ,SAAS,GAAG,KAAK;CAC1E,WAAsB,SAAS,GAAG,SAAS,KAAK,IAAI,WAAW,SAAS,GAAG,KAAK;CAChF,QAAmB,SAAS,GAAG,SAAS,KAAK,IAAI,QAAQ,SAAS,GAAG,KAAK;CAC1E,SAAoB,SAAS,GAAG,SAAS,KAAK,IAAI,SAAS,SAAS,GAAG,KAAK;;AAGhF,MAAa,SAAyB,IAAI,YAAY"}
@@ -0,0 +1,8 @@
1
+ export * from "neverthrow";
2
+
3
+ //#region src/neverthrow.d.ts
4
+
5
+ import * as import_neverthrow from "neverthrow";
6
+ //#endregion
7
+ export { import_neverthrow as t };
8
+ //# sourceMappingURL=neverthrow.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neverthrow.d.mts","names":[],"sources":["../src/neverthrow.ts"],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { n as __reExport, t as __exportAll } from "./chunk-CtajNgzt.mjs";
2
+
3
+ export * from "neverthrow"
4
+
5
+ //#region src/neverthrow.ts
6
+ var neverthrow_exports = /* @__PURE__ */ __exportAll({});
7
+ import * as import_neverthrow from "neverthrow";
8
+ __reExport(neverthrow_exports, import_neverthrow);
9
+
10
+ //#endregion
11
+ export { neverthrow_exports as t };
12
+ //# sourceMappingURL=neverthrow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neverthrow.mjs","names":[],"sources":["../src/neverthrow.ts"],"sourcesContent":["export * from \"neverthrow\";\n"],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { t as neverthrow_d_exports } from "./neverthrow.mjs";
2
+
3
+ //#region src/utils.d.ts
4
+ declare const safeJsonParse: (text: string) => neverthrow_d_exports.Result<unknown, Error>;
5
+ declare const isPlainRecord: (value: unknown) => value is Record<string, unknown>;
6
+ //#endregion
7
+ export { isPlainRecord, safeJsonParse };
8
+ //# sourceMappingURL=utils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.mts","names":[],"sources":["../src/utils.ts"],"mappings":";;;cAEa,aAAA,GAAa,IAAA,aAAmB,oBAAA,CAAA,MAAA,UAAgB,KAAA;AAAA,cAQhD,aAAA,GAAa,KAAA,cAAqB,KAAA,IAAS,MAAA"}
package/dist/utils.mjs ADDED
@@ -0,0 +1,17 @@
1
+ import { t as neverthrow_exports } from "./neverthrow.mjs";
2
+
3
+ //#region src/utils.ts
4
+ const safeJsonParse = (text) => {
5
+ try {
6
+ return (0, neverthrow_exports.ok)(JSON.parse(text));
7
+ } catch (error) {
8
+ return (0, neverthrow_exports.err)(error instanceof Error ? error : new Error(String(error)));
9
+ }
10
+ };
11
+ const isPlainRecord = (value) => {
12
+ return typeof value === "object" && value !== null && !Array.isArray(value);
13
+ };
14
+
15
+ //#endregion
16
+ export { isPlainRecord, safeJsonParse };
17
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["import { type Result, err, ok } from \"./neverthrow\";\n\nexport const safeJsonParse = (text: string): Result<unknown, Error> => {\n try {\n return ok(JSON.parse(text));\n } catch (error) {\n return err(error instanceof Error ? error : new Error(String(error)));\n }\n};\n\nexport const isPlainRecord = (value: unknown): value is Record<string, unknown> => {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n};\n"],"mappings":";;;AAEA,MAAa,iBAAiB,SAAyC;AACnE,KAAI;AACA,oCAAU,KAAK,MAAM,KAAK,CAAC;UACtB,OAAO;AACZ,qCAAW,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC,CAAC;;;AAI7E,MAAa,iBAAiB,UAAqD;AAC/E,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM"}
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@better-agent/shared",
3
+ "version": "0.1.0-canary.0",
4
+ "description": "Shared utilities for Better Agent",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/better-agent/better-agent.git",
9
+ "directory": "packages/shared"
10
+ },
11
+ "homepage": "https://github.com/better-agent/better-agent/tree/main/packages/shared",
12
+ "bugs": {
13
+ "url": "https://github.com/better-agent/better-agent/issues"
14
+ },
15
+ "type": "module",
16
+ "types": "./dist/errors.d.mts",
17
+ "sideEffects": false,
18
+ "exports": {
19
+ "./neverthrow": {
20
+ "types": "./dist/neverthrow.d.mts",
21
+ "import": "./dist/neverthrow.mjs"
22
+ },
23
+ "./errors": {
24
+ "types": "./dist/errors.d.mts",
25
+ "import": "./dist/errors.mjs"
26
+ },
27
+ "./logger": {
28
+ "types": "./dist/logger.d.mts",
29
+ "import": "./dist/logger.mjs"
30
+ },
31
+ "./utils": {
32
+ "types": "./dist/utils.d.mts",
33
+ "import": "./dist/utils.mjs"
34
+ }
35
+ },
36
+ "typesVersions": {
37
+ "*": {
38
+ "neverthrow": ["dist/neverthrow.d.mts"],
39
+ "errors": ["dist/errors.d.mts"],
40
+ "logger": ["dist/logger.d.mts"],
41
+ "utils": ["dist/utils.d.mts"]
42
+ }
43
+ },
44
+ "scripts": {
45
+ "build": "bunx tsdown",
46
+ "dev": "bunx tsdown --watch --no-clean",
47
+ "lint:package": "bunx publint run --strict",
48
+ "lint:types": "npm_config_cache=../../.npm-cache bunx attw --profile esm-only --pack .",
49
+ "lint": "bunx biome check .",
50
+ "typecheck": "bunx tsc -p tsconfig.json --noEmit",
51
+ "format": "bunx biome format --write .",
52
+ "clean": "bunx rimraf dist"
53
+ },
54
+ "publishConfig": {
55
+ "access": "public"
56
+ },
57
+ "files": ["dist"],
58
+ "dependencies": {
59
+ "neverthrow": "^8.2.0"
60
+ },
61
+ "devDependencies": {
62
+ "@types/bun": "^1.2.18",
63
+ "@types/node": "^22.15.30"
64
+ }
65
+ }