@teamlearners/clawops 0.5.8 → 0.8.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 +13 -0
- package/dist/agent/index.cjs +238 -7
- package/dist/agent/index.cjs.map +1 -1
- package/dist/agent/index.d.cts +137 -1
- package/dist/agent/index.d.ts +137 -1
- package/dist/agent/index.js +231 -2
- package/dist/agent/index.js.map +1 -1
- package/dist/{chunk-7S2OEBS6.js → chunk-2B74QZZJ.js} +6 -3
- package/dist/chunk-2B74QZZJ.js.map +1 -0
- package/dist/{chunk-6IQN5RQD.cjs → chunk-R742GPVL.cjs} +6 -2
- package/dist/chunk-R742GPVL.cjs.map +1 -0
- package/dist/index.cjs +51 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +63 -1
- package/dist/index.d.ts +63 -1
- package/dist/index.js +16 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-6IQN5RQD.cjs.map +0 -1
- package/dist/chunk-7S2OEBS6.js.map +0 -1
|
@@ -148,6 +148,9 @@ function makeStatusError(status, body, headers, request) {
|
|
|
148
148
|
return new APIStatusError(message, { status, headers }, body, request);
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
+
// src/version.ts
|
|
152
|
+
var VERSION = "0.1.0";
|
|
153
|
+
|
|
151
154
|
// src/constants.ts
|
|
152
155
|
var DEFAULT_BASE_URL = "https://api.claw-ops.com";
|
|
153
156
|
var DEFAULT_MAX_RETRIES = 2;
|
|
@@ -155,6 +158,6 @@ var DEFAULT_TIMEOUT = 6e5;
|
|
|
155
158
|
var INITIAL_RETRY_DELAY = 500;
|
|
156
159
|
var MAX_RETRY_DELAY = 8e3;
|
|
157
160
|
|
|
158
|
-
export { APIConnectionError, APIError, APIResponseValidationError, APIStatusError, APITimeoutError, AgentConnectionError, AgentError, AuthenticationError, BadRequestError, ClawOpsError, ConflictError, DEFAULT_BASE_URL, DEFAULT_MAX_RETRIES, DEFAULT_TIMEOUT, INITIAL_RETRY_DELAY, InternalServerError, MAX_RETRY_DELAY, NotFoundError, PermissionDeniedError, RateLimitError, ServiceUnavailableError, UnprocessableEntityError, makeStatusError };
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
160
|
-
//# sourceMappingURL=chunk-
|
|
161
|
+
export { APIConnectionError, APIError, APIResponseValidationError, APIStatusError, APITimeoutError, AgentConnectionError, AgentError, AuthenticationError, BadRequestError, ClawOpsError, ConflictError, DEFAULT_BASE_URL, DEFAULT_MAX_RETRIES, DEFAULT_TIMEOUT, INITIAL_RETRY_DELAY, InternalServerError, MAX_RETRY_DELAY, NotFoundError, PermissionDeniedError, RateLimitError, ServiceUnavailableError, UnprocessableEntityError, VERSION, makeStatusError };
|
|
162
|
+
//# sourceMappingURL=chunk-2B74QZZJ.js.map
|
|
163
|
+
//# sourceMappingURL=chunk-2B74QZZJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/error.ts","../src/version.ts","../src/constants.ts"],"names":[],"mappings":"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","file":"chunk-2B74QZZJ.js","sourcesContent":["export class ClawOpsError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ClawOpsError';\n }\n}\n\nexport class APIError extends ClawOpsError {\n readonly request: { method: string; url: string };\n\n constructor(message: string, request: { method: string; url: string }) {\n super(message);\n this.name = 'APIError';\n this.request = request;\n }\n}\n\nexport class APIStatusError extends APIError {\n readonly status: number;\n readonly body: unknown;\n readonly headers: Headers | undefined;\n\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, request);\n this.name = 'APIStatusError';\n this.status = response.status;\n this.body = body;\n this.headers = response.headers;\n }\n}\n\nexport class BadRequestError extends APIStatusError {\n override readonly status = 400 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'BadRequestError';\n }\n}\n\nexport class AuthenticationError extends APIStatusError {\n override readonly status = 401 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'AuthenticationError';\n }\n}\n\nexport class PermissionDeniedError extends APIStatusError {\n override readonly status = 403 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'PermissionDeniedError';\n }\n}\n\nexport class NotFoundError extends APIStatusError {\n override readonly status = 404 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ConflictError extends APIStatusError {\n override readonly status = 409 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'ConflictError';\n }\n}\n\nexport class UnprocessableEntityError extends APIStatusError {\n override readonly status = 422 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'UnprocessableEntityError';\n }\n}\n\n/**\n * HTTP 429 Too Many Requests.\n *\n * 동시 통화 한도 초과 등 일시적 제한. SDK는 자동 재시도(최대 2회, 지수 backoff)를 수행한다.\n * 즉각 피드백이 필요하면 client 생성 시 maxRetries: 0으로 재시도를 비활성화하라.\n */\nexport class RateLimitError extends APIStatusError {\n override readonly status = 429 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'RateLimitError';\n }\n}\n\nexport class InternalServerError extends APIStatusError {\n override readonly status = 500 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'InternalServerError';\n }\n}\n\nexport class ServiceUnavailableError extends APIStatusError {\n override readonly status = 503 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'ServiceUnavailableError';\n }\n}\n\nexport class APIConnectionError extends APIError {\n constructor(request: { method: string; url: string }, message = 'Connection error.') {\n super(message, request);\n this.name = 'APIConnectionError';\n }\n}\n\nexport class APITimeoutError extends APIConnectionError {\n constructor(request: { method: string; url: string }) {\n super(request, 'Request timed out.');\n this.name = 'APITimeoutError';\n }\n}\n\nexport class APIResponseValidationError extends APIError {\n readonly status: number;\n\n constructor(response: { status: number }, request: { method: string; url: string }) {\n super('API response validation failed.', request);\n this.name = 'APIResponseValidationError';\n this.status = response.status;\n }\n}\n\nexport class AgentError extends ClawOpsError {\n constructor(message: string) {\n super(message);\n this.name = 'AgentError';\n }\n}\n\nexport class AgentConnectionError extends AgentError {\n constructor(message = 'Agent WebSocket connection failed.') {\n super(message);\n this.name = 'AgentConnectionError';\n }\n}\n\nconst STATUS_CODE_TO_ERROR: Record<\n number,\n new (\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) => APIStatusError\n> = {\n 400: BadRequestError,\n 401: AuthenticationError,\n 403: PermissionDeniedError,\n 404: NotFoundError,\n 409: ConflictError,\n 422: UnprocessableEntityError,\n 429: RateLimitError,\n 500: InternalServerError,\n 503: ServiceUnavailableError,\n};\n\nexport function makeStatusError(\n status: number,\n body: unknown,\n headers: Headers | undefined,\n request: { method: string; url: string },\n): APIStatusError {\n let message = '';\n if (body && typeof body === 'object' && 'error' in body) {\n message = (body as { error: string }).error;\n } else {\n message = `HTTP ${status}`;\n }\n\n const ErrorClass = STATUS_CODE_TO_ERROR[status];\n if (ErrorClass) {\n return new ErrorClass(message, { status, headers }, body, request);\n }\n if (status >= 500) {\n return new InternalServerError(message, { status, headers }, body, request);\n }\n return new APIStatusError(message, { status, headers }, body, request);\n}\n","export const VERSION = '0.1.0';\n","export const DEFAULT_BASE_URL = 'https://api.claw-ops.com';\nexport const DEFAULT_MAX_RETRIES = 2;\nexport const DEFAULT_TIMEOUT = 600_000; // ms\nexport const INITIAL_RETRY_DELAY = 500; // ms\nexport const MAX_RETRY_DELAY = 8_000; // ms\n"]}
|
|
@@ -150,6 +150,9 @@ function makeStatusError(status, body, headers, request) {
|
|
|
150
150
|
return new APIStatusError(message, { status, headers }, body, request);
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
// src/version.ts
|
|
154
|
+
var VERSION = "0.1.0";
|
|
155
|
+
|
|
153
156
|
// src/constants.ts
|
|
154
157
|
var DEFAULT_BASE_URL = "https://api.claw-ops.com";
|
|
155
158
|
var DEFAULT_MAX_RETRIES = 2;
|
|
@@ -179,6 +182,7 @@ exports.PermissionDeniedError = PermissionDeniedError;
|
|
|
179
182
|
exports.RateLimitError = RateLimitError;
|
|
180
183
|
exports.ServiceUnavailableError = ServiceUnavailableError;
|
|
181
184
|
exports.UnprocessableEntityError = UnprocessableEntityError;
|
|
185
|
+
exports.VERSION = VERSION;
|
|
182
186
|
exports.makeStatusError = makeStatusError;
|
|
183
|
-
//# sourceMappingURL=chunk-
|
|
184
|
-
//# sourceMappingURL=chunk-
|
|
187
|
+
//# sourceMappingURL=chunk-R742GPVL.cjs.map
|
|
188
|
+
//# sourceMappingURL=chunk-R742GPVL.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/error.ts","../src/version.ts","../src/constants.ts"],"names":[],"mappings":"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","file":"chunk-R742GPVL.cjs","sourcesContent":["export class ClawOpsError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ClawOpsError';\n }\n}\n\nexport class APIError extends ClawOpsError {\n readonly request: { method: string; url: string };\n\n constructor(message: string, request: { method: string; url: string }) {\n super(message);\n this.name = 'APIError';\n this.request = request;\n }\n}\n\nexport class APIStatusError extends APIError {\n readonly status: number;\n readonly body: unknown;\n readonly headers: Headers | undefined;\n\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, request);\n this.name = 'APIStatusError';\n this.status = response.status;\n this.body = body;\n this.headers = response.headers;\n }\n}\n\nexport class BadRequestError extends APIStatusError {\n override readonly status = 400 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'BadRequestError';\n }\n}\n\nexport class AuthenticationError extends APIStatusError {\n override readonly status = 401 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'AuthenticationError';\n }\n}\n\nexport class PermissionDeniedError extends APIStatusError {\n override readonly status = 403 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'PermissionDeniedError';\n }\n}\n\nexport class NotFoundError extends APIStatusError {\n override readonly status = 404 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ConflictError extends APIStatusError {\n override readonly status = 409 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'ConflictError';\n }\n}\n\nexport class UnprocessableEntityError extends APIStatusError {\n override readonly status = 422 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'UnprocessableEntityError';\n }\n}\n\n/**\n * HTTP 429 Too Many Requests.\n *\n * 동시 통화 한도 초과 등 일시적 제한. SDK는 자동 재시도(최대 2회, 지수 backoff)를 수행한다.\n * 즉각 피드백이 필요하면 client 생성 시 maxRetries: 0으로 재시도를 비활성화하라.\n */\nexport class RateLimitError extends APIStatusError {\n override readonly status = 429 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'RateLimitError';\n }\n}\n\nexport class InternalServerError extends APIStatusError {\n override readonly status = 500 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'InternalServerError';\n }\n}\n\nexport class ServiceUnavailableError extends APIStatusError {\n override readonly status = 503 as const;\n constructor(\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) {\n super(message, response, body, request);\n this.name = 'ServiceUnavailableError';\n }\n}\n\nexport class APIConnectionError extends APIError {\n constructor(request: { method: string; url: string }, message = 'Connection error.') {\n super(message, request);\n this.name = 'APIConnectionError';\n }\n}\n\nexport class APITimeoutError extends APIConnectionError {\n constructor(request: { method: string; url: string }) {\n super(request, 'Request timed out.');\n this.name = 'APITimeoutError';\n }\n}\n\nexport class APIResponseValidationError extends APIError {\n readonly status: number;\n\n constructor(response: { status: number }, request: { method: string; url: string }) {\n super('API response validation failed.', request);\n this.name = 'APIResponseValidationError';\n this.status = response.status;\n }\n}\n\nexport class AgentError extends ClawOpsError {\n constructor(message: string) {\n super(message);\n this.name = 'AgentError';\n }\n}\n\nexport class AgentConnectionError extends AgentError {\n constructor(message = 'Agent WebSocket connection failed.') {\n super(message);\n this.name = 'AgentConnectionError';\n }\n}\n\nconst STATUS_CODE_TO_ERROR: Record<\n number,\n new (\n message: string,\n response: { status: number; headers?: Headers },\n body: unknown,\n request: { method: string; url: string },\n ) => APIStatusError\n> = {\n 400: BadRequestError,\n 401: AuthenticationError,\n 403: PermissionDeniedError,\n 404: NotFoundError,\n 409: ConflictError,\n 422: UnprocessableEntityError,\n 429: RateLimitError,\n 500: InternalServerError,\n 503: ServiceUnavailableError,\n};\n\nexport function makeStatusError(\n status: number,\n body: unknown,\n headers: Headers | undefined,\n request: { method: string; url: string },\n): APIStatusError {\n let message = '';\n if (body && typeof body === 'object' && 'error' in body) {\n message = (body as { error: string }).error;\n } else {\n message = `HTTP ${status}`;\n }\n\n const ErrorClass = STATUS_CODE_TO_ERROR[status];\n if (ErrorClass) {\n return new ErrorClass(message, { status, headers }, body, request);\n }\n if (status >= 500) {\n return new InternalServerError(message, { status, headers }, body, request);\n }\n return new APIStatusError(message, { status, headers }, body, request);\n}\n","export const VERSION = '0.1.0';\n","export const DEFAULT_BASE_URL = 'https://api.claw-ops.com';\nexport const DEFAULT_MAX_RETRIES = 2;\nexport const DEFAULT_TIMEOUT = 600_000; // ms\nexport const INITIAL_RETRY_DELAY = 500; // ms\nexport const MAX_RETRY_DELAY = 8_000; // ms\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -2,13 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var chunkR742GPVL_cjs = require('./chunk-R742GPVL.cjs');
|
|
6
6
|
var zod = require('zod');
|
|
7
7
|
var crypto = require('crypto');
|
|
8
8
|
|
|
9
|
-
// src/version.ts
|
|
10
|
-
var VERSION = "0.1.0";
|
|
11
|
-
|
|
12
9
|
// src/base-client.ts
|
|
13
10
|
var LOCALHOST_HOSTS = /* @__PURE__ */ new Set(["localhost", "127.0.0.1", "0.0.0.0", "[::1]"]);
|
|
14
11
|
function validateBaseUrl(url) {
|
|
@@ -16,11 +13,11 @@ function validateBaseUrl(url) {
|
|
|
16
13
|
try {
|
|
17
14
|
parsed = new URL(url);
|
|
18
15
|
} catch {
|
|
19
|
-
throw new
|
|
16
|
+
throw new chunkR742GPVL_cjs.ClawOpsError(`Invalid base_url: ${url}`);
|
|
20
17
|
}
|
|
21
18
|
if (parsed.protocol === "https:") return url;
|
|
22
19
|
if (parsed.protocol === "http:" && LOCALHOST_HOSTS.has(parsed.hostname)) return url;
|
|
23
|
-
throw new
|
|
20
|
+
throw new chunkR742GPVL_cjs.ClawOpsError(
|
|
24
21
|
`base_url\uC740 HTTPS\uB97C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4 (\uBC1B\uC740 \uAC12: '${url}'). \uB85C\uCEEC \uAC1C\uBC1C \uC2DC\uC5D0\uB294 http://localhost\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`
|
|
25
22
|
);
|
|
26
23
|
}
|
|
@@ -33,9 +30,9 @@ var APIClient = class {
|
|
|
33
30
|
_defaultHeaders;
|
|
34
31
|
constructor(options) {
|
|
35
32
|
this._apiKey = options.apiKey;
|
|
36
|
-
this._baseURL = validateBaseUrl((options.baseURL ??
|
|
37
|
-
this._maxRetries = options.maxRetries ??
|
|
38
|
-
this._timeout = options.timeout ??
|
|
33
|
+
this._baseURL = validateBaseUrl((options.baseURL ?? chunkR742GPVL_cjs.DEFAULT_BASE_URL).replace(/\/+$/, ""));
|
|
34
|
+
this._maxRetries = options.maxRetries ?? chunkR742GPVL_cjs.DEFAULT_MAX_RETRIES;
|
|
35
|
+
this._timeout = options.timeout ?? chunkR742GPVL_cjs.DEFAULT_TIMEOUT;
|
|
39
36
|
this._fetch = options.fetch ?? globalThis.fetch;
|
|
40
37
|
this._defaultHeaders = options.defaultHeaders ?? {};
|
|
41
38
|
}
|
|
@@ -44,7 +41,7 @@ var APIClient = class {
|
|
|
44
41
|
Authorization: `Bearer ${this._apiKey}`,
|
|
45
42
|
"Content-Type": "application/json",
|
|
46
43
|
Accept: "application/json",
|
|
47
|
-
"User-Agent": `claw-ops-node/${VERSION}`,
|
|
44
|
+
"User-Agent": `claw-ops-node/${chunkR742GPVL_cjs.VERSION}`,
|
|
48
45
|
...this._defaultHeaders
|
|
49
46
|
};
|
|
50
47
|
if (extra) Object.assign(headers, extra);
|
|
@@ -80,14 +77,14 @@ var APIClient = class {
|
|
|
80
77
|
await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));
|
|
81
78
|
continue;
|
|
82
79
|
}
|
|
83
|
-
throw new
|
|
80
|
+
throw new chunkR742GPVL_cjs.APITimeoutError({ method: method2, url });
|
|
84
81
|
}
|
|
85
82
|
if (retriesLeft > 0) {
|
|
86
83
|
retriesLeft--;
|
|
87
84
|
await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));
|
|
88
85
|
continue;
|
|
89
86
|
}
|
|
90
|
-
throw new
|
|
87
|
+
throw new chunkR742GPVL_cjs.APIConnectionError({ method: method2, url });
|
|
91
88
|
} finally {
|
|
92
89
|
clearTimeout(timeoutId);
|
|
93
90
|
}
|
|
@@ -99,11 +96,11 @@ var APIClient = class {
|
|
|
99
96
|
try {
|
|
100
97
|
json = await response.json();
|
|
101
98
|
} catch {
|
|
102
|
-
throw new
|
|
99
|
+
throw new chunkR742GPVL_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
|
|
103
100
|
}
|
|
104
101
|
const parsed = options.castTo.safeParse(json);
|
|
105
102
|
if (!parsed.success) {
|
|
106
|
-
throw new
|
|
103
|
+
throw new chunkR742GPVL_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
|
|
107
104
|
}
|
|
108
105
|
return parsed.data;
|
|
109
106
|
}
|
|
@@ -118,14 +115,14 @@ var APIClient = class {
|
|
|
118
115
|
} catch {
|
|
119
116
|
body = null;
|
|
120
117
|
}
|
|
121
|
-
throw
|
|
118
|
+
throw chunkR742GPVL_cjs.makeStatusError(response.status, body, response.headers, { method: method2, url });
|
|
122
119
|
}
|
|
123
120
|
}
|
|
124
121
|
_shouldRetry(status) {
|
|
125
122
|
return status === 408 || status === 409 || status === 429 || status >= 500;
|
|
126
123
|
}
|
|
127
124
|
_retryDelay(retriesTaken) {
|
|
128
|
-
const delay = Math.min(
|
|
125
|
+
const delay = Math.min(chunkR742GPVL_cjs.INITIAL_RETRY_DELAY * 2 ** retriesTaken, chunkR742GPVL_cjs.MAX_RETRY_DELAY);
|
|
129
126
|
return delay * (1 + Math.random());
|
|
130
127
|
}
|
|
131
128
|
_sleep(ms) {
|
|
@@ -262,8 +259,20 @@ var Calls = class extends APIResource {
|
|
|
262
259
|
To: params.to,
|
|
263
260
|
From: params.from,
|
|
264
261
|
Url: params.url,
|
|
262
|
+
AI: params.ai ? stripNotGiven({
|
|
263
|
+
Provider: params.ai.provider,
|
|
264
|
+
Model: params.ai.model,
|
|
265
|
+
ApiKey: params.ai.apiKey,
|
|
266
|
+
Voice: params.ai.voice,
|
|
267
|
+
Language: params.ai.language,
|
|
268
|
+
Messages: params.ai.messages,
|
|
269
|
+
Tools: params.ai.tools,
|
|
270
|
+
Greeting: params.ai.greeting,
|
|
271
|
+
TurnDetection: params.ai.turnDetection
|
|
272
|
+
}) : void 0,
|
|
265
273
|
StatusCallback: params.statusCallback,
|
|
266
|
-
StatusCallbackEvent: params.statusCallbackEvent
|
|
274
|
+
StatusCallbackEvent: params.statusCallbackEvent,
|
|
275
|
+
Timeout: params.timeout
|
|
267
276
|
});
|
|
268
277
|
return this._client._post(`${this._basePath}/calls`, {
|
|
269
278
|
body,
|
|
@@ -455,7 +464,7 @@ var AccountContext = class {
|
|
|
455
464
|
return new WebhookLogs(this._client, this._accountId);
|
|
456
465
|
}
|
|
457
466
|
};
|
|
458
|
-
var WebhookVerificationError = class extends
|
|
467
|
+
var WebhookVerificationError = class extends chunkR742GPVL_cjs.ClawOpsError {
|
|
459
468
|
constructor(message = "Webhook \uC11C\uBA85\uC774 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.") {
|
|
460
469
|
super(message);
|
|
461
470
|
this.name = "WebhookVerificationError";
|
|
@@ -485,13 +494,13 @@ var ClawOps = class extends APIClient {
|
|
|
485
494
|
constructor(options = {}) {
|
|
486
495
|
let apiKey = options.apiKey ?? process.env.CLAWOPS_API_KEY;
|
|
487
496
|
if (!apiKey) {
|
|
488
|
-
throw new
|
|
497
|
+
throw new chunkR742GPVL_cjs.ClawOpsError("apiKey\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_API_KEY \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
|
|
489
498
|
}
|
|
490
499
|
let accountId = options.accountId ?? process.env.CLAWOPS_ACCOUNT_ID;
|
|
491
500
|
if (!accountId) {
|
|
492
|
-
throw new
|
|
501
|
+
throw new chunkR742GPVL_cjs.ClawOpsError("accountId\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_ACCOUNT_ID \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
|
|
493
502
|
}
|
|
494
|
-
const baseURL = options.baseURL ?? process.env.CLAWOPS_BASE_URL ??
|
|
503
|
+
const baseURL = options.baseURL ?? process.env.CLAWOPS_BASE_URL ?? chunkR742GPVL_cjs.DEFAULT_BASE_URL;
|
|
495
504
|
super({
|
|
496
505
|
apiKey,
|
|
497
506
|
baseURL,
|
|
@@ -527,71 +536,75 @@ var client_default_default = ClawOps;
|
|
|
527
536
|
|
|
528
537
|
Object.defineProperty(exports, "APIConnectionError", {
|
|
529
538
|
enumerable: true,
|
|
530
|
-
get: function () { return
|
|
539
|
+
get: function () { return chunkR742GPVL_cjs.APIConnectionError; }
|
|
531
540
|
});
|
|
532
541
|
Object.defineProperty(exports, "APIError", {
|
|
533
542
|
enumerable: true,
|
|
534
|
-
get: function () { return
|
|
543
|
+
get: function () { return chunkR742GPVL_cjs.APIError; }
|
|
535
544
|
});
|
|
536
545
|
Object.defineProperty(exports, "APIResponseValidationError", {
|
|
537
546
|
enumerable: true,
|
|
538
|
-
get: function () { return
|
|
547
|
+
get: function () { return chunkR742GPVL_cjs.APIResponseValidationError; }
|
|
539
548
|
});
|
|
540
549
|
Object.defineProperty(exports, "APIStatusError", {
|
|
541
550
|
enumerable: true,
|
|
542
|
-
get: function () { return
|
|
551
|
+
get: function () { return chunkR742GPVL_cjs.APIStatusError; }
|
|
543
552
|
});
|
|
544
553
|
Object.defineProperty(exports, "APITimeoutError", {
|
|
545
554
|
enumerable: true,
|
|
546
|
-
get: function () { return
|
|
555
|
+
get: function () { return chunkR742GPVL_cjs.APITimeoutError; }
|
|
547
556
|
});
|
|
548
557
|
Object.defineProperty(exports, "AgentConnectionError", {
|
|
549
558
|
enumerable: true,
|
|
550
|
-
get: function () { return
|
|
559
|
+
get: function () { return chunkR742GPVL_cjs.AgentConnectionError; }
|
|
551
560
|
});
|
|
552
561
|
Object.defineProperty(exports, "AgentError", {
|
|
553
562
|
enumerable: true,
|
|
554
|
-
get: function () { return
|
|
563
|
+
get: function () { return chunkR742GPVL_cjs.AgentError; }
|
|
555
564
|
});
|
|
556
565
|
Object.defineProperty(exports, "AuthenticationError", {
|
|
557
566
|
enumerable: true,
|
|
558
|
-
get: function () { return
|
|
567
|
+
get: function () { return chunkR742GPVL_cjs.AuthenticationError; }
|
|
559
568
|
});
|
|
560
569
|
Object.defineProperty(exports, "BadRequestError", {
|
|
561
570
|
enumerable: true,
|
|
562
|
-
get: function () { return
|
|
571
|
+
get: function () { return chunkR742GPVL_cjs.BadRequestError; }
|
|
563
572
|
});
|
|
564
573
|
Object.defineProperty(exports, "ClawOpsError", {
|
|
565
574
|
enumerable: true,
|
|
566
|
-
get: function () { return
|
|
575
|
+
get: function () { return chunkR742GPVL_cjs.ClawOpsError; }
|
|
567
576
|
});
|
|
568
577
|
Object.defineProperty(exports, "ConflictError", {
|
|
569
578
|
enumerable: true,
|
|
570
|
-
get: function () { return
|
|
579
|
+
get: function () { return chunkR742GPVL_cjs.ConflictError; }
|
|
571
580
|
});
|
|
572
581
|
Object.defineProperty(exports, "InternalServerError", {
|
|
573
582
|
enumerable: true,
|
|
574
|
-
get: function () { return
|
|
583
|
+
get: function () { return chunkR742GPVL_cjs.InternalServerError; }
|
|
575
584
|
});
|
|
576
585
|
Object.defineProperty(exports, "NotFoundError", {
|
|
577
586
|
enumerable: true,
|
|
578
|
-
get: function () { return
|
|
587
|
+
get: function () { return chunkR742GPVL_cjs.NotFoundError; }
|
|
579
588
|
});
|
|
580
589
|
Object.defineProperty(exports, "PermissionDeniedError", {
|
|
581
590
|
enumerable: true,
|
|
582
|
-
get: function () { return
|
|
591
|
+
get: function () { return chunkR742GPVL_cjs.PermissionDeniedError; }
|
|
583
592
|
});
|
|
584
593
|
Object.defineProperty(exports, "RateLimitError", {
|
|
585
594
|
enumerable: true,
|
|
586
|
-
get: function () { return
|
|
595
|
+
get: function () { return chunkR742GPVL_cjs.RateLimitError; }
|
|
587
596
|
});
|
|
588
597
|
Object.defineProperty(exports, "ServiceUnavailableError", {
|
|
589
598
|
enumerable: true,
|
|
590
|
-
get: function () { return
|
|
599
|
+
get: function () { return chunkR742GPVL_cjs.ServiceUnavailableError; }
|
|
591
600
|
});
|
|
592
601
|
Object.defineProperty(exports, "UnprocessableEntityError", {
|
|
593
602
|
enumerable: true,
|
|
594
|
-
get: function () { return
|
|
603
|
+
get: function () { return chunkR742GPVL_cjs.UnprocessableEntityError; }
|
|
604
|
+
});
|
|
605
|
+
Object.defineProperty(exports, "VERSION", {
|
|
606
|
+
enumerable: true,
|
|
607
|
+
get: function () { return chunkR742GPVL_cjs.VERSION; }
|
|
595
608
|
});
|
|
596
609
|
exports.APIClient = APIClient;
|
|
597
610
|
exports.AccountContext = AccountContext;
|
|
@@ -600,7 +613,6 @@ exports.ClawOps = ClawOps;
|
|
|
600
613
|
exports.Messages = Messages;
|
|
601
614
|
exports.Numbers = Numbers;
|
|
602
615
|
exports.Page = Page;
|
|
603
|
-
exports.VERSION = VERSION;
|
|
604
616
|
exports.WebhookLogs = WebhookLogs;
|
|
605
617
|
exports.WebhookVerificationError = WebhookVerificationError;
|
|
606
618
|
exports.Webhooks = Webhooks;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts","../src/base-client.ts","../src/resource.ts","../src/util.ts","../src/types/shared.ts","../src/pagination.ts","../src/types/call.ts","../src/resources/calls.ts","../src/types/message.ts","../src/resources/messages.ts","../src/types/number.ts","../src/resources/numbers.ts","../src/types/webhook-log.ts","../src/resources/webhook-logs.ts","../src/resources/accounts.ts","../src/webhooks.ts","../src/client.ts","../src/client-default.ts"],"names":["ClawOpsError","DEFAULT_BASE_URL","DEFAULT_MAX_RETRIES","DEFAULT_TIMEOUT","method","APITimeoutError","APIConnectionError","APIResponseValidationError","makeStatusError","INITIAL_RETRY_DELAY","MAX_RETRY_DELAY","z","timingSafeEqual","createHmac"],"mappings":"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","file":"index.cjs","sourcesContent":["export const VERSION = '0.1.0';\n","import { z } from 'zod';\nimport {\n DEFAULT_BASE_URL,\n DEFAULT_MAX_RETRIES,\n DEFAULT_TIMEOUT,\n INITIAL_RETRY_DELAY,\n MAX_RETRY_DELAY,\n} from './constants.js';\nimport {\n APIConnectionError,\n APIResponseValidationError,\n APITimeoutError,\n ClawOpsError,\n makeStatusError,\n} from './error.js';\nimport { VERSION } from './version.js';\n\nconst LOCALHOST_HOSTS = new Set(['localhost', '127.0.0.1', '0.0.0.0', '[::1]']);\n\nfunction validateBaseUrl(url: string): string {\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n throw new ClawOpsError(`Invalid base_url: ${url}`);\n }\n if (parsed.protocol === 'https:') return url;\n if (parsed.protocol === 'http:' && LOCALHOST_HOSTS.has(parsed.hostname)) return url;\n throw new ClawOpsError(\n `base_url은 HTTPS를 사용해야 합니다 (받은 값: '${url}'). ` +\n `로컬 개발 시에는 http://localhost를 사용할 수 있습니다.`,\n );\n}\n\nexport interface APIClientOptions {\n apiKey: string;\n baseURL?: string;\n timeout?: number;\n maxRetries?: number;\n fetch?: typeof globalThis.fetch;\n defaultHeaders?: Record<string, string>;\n}\n\nexport class APIClient {\n protected _apiKey: string;\n protected _baseURL: string;\n protected _maxRetries: number;\n protected _timeout: number;\n protected _fetch: typeof globalThis.fetch;\n protected _defaultHeaders: Record<string, string>;\n\n constructor(options: APIClientOptions) {\n this._apiKey = options.apiKey;\n this._baseURL = validateBaseUrl((options.baseURL ?? DEFAULT_BASE_URL).replace(/\\/+$/, ''));\n this._maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n this._timeout = options.timeout ?? DEFAULT_TIMEOUT;\n this._fetch = options.fetch ?? globalThis.fetch;\n this._defaultHeaders = options.defaultHeaders ?? {};\n }\n\n private _buildHeaders(extra?: Record<string, string>): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this._apiKey}`,\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'User-Agent': `claw-ops-node/${VERSION}`,\n ...this._defaultHeaders,\n };\n if (extra) Object.assign(headers, extra);\n return headers;\n }\n\n protected async _request<T>(\n method: string,\n path: string,\n options: {\n body?: Record<string, unknown> | null;\n query?: Record<string, unknown> | null;\n castTo?: z.ZodType<T>;\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<T | null> {\n const headers = this._buildHeaders(options.extraHeaders);\n\n const params = new URLSearchParams();\n const queryObj = { ...options.query, ...options.extraQuery };\n for (const [k, v] of Object.entries(queryObj)) {\n if (v != null) params.set(k, String(v));\n }\n\n const queryString = params.toString();\n const url = `${this._baseURL}${path}${queryString ? `?${queryString}` : ''}`;\n const reqTimeout = options.timeout ?? this._timeout;\n\n let retriesLeft = this._maxRetries;\n\n while (true) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), reqTimeout);\n\n let response: Response;\n try {\n response = await this._fetch(url, {\n method,\n headers,\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n } catch (err) {\n clearTimeout(timeoutId);\n if (err instanceof DOMException && err.name === 'AbortError') {\n if (retriesLeft > 0) {\n retriesLeft--;\n await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));\n continue;\n }\n throw new APITimeoutError({ method, url });\n }\n if (retriesLeft > 0) {\n retriesLeft--;\n await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));\n continue;\n }\n throw new APIConnectionError({ method, url });\n } finally {\n clearTimeout(timeoutId);\n }\n\n if (response.ok) {\n if (response.status === 204 || !options.castTo) {\n return null;\n }\n let json: unknown;\n try {\n json = await response.json();\n } catch {\n throw new APIResponseValidationError({ status: response.status }, { method, url });\n }\n const parsed = options.castTo.safeParse(json);\n if (!parsed.success) {\n throw new APIResponseValidationError({ status: response.status }, { method, url });\n }\n return parsed.data;\n }\n\n if (retriesLeft > 0 && this._shouldRetry(response.status)) {\n retriesLeft--;\n await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));\n continue;\n }\n\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n body = null;\n }\n throw makeStatusError(response.status, body, response.headers, { method, url });\n }\n }\n\n private _shouldRetry(status: number): boolean {\n return status === 408 || status === 409 || status === 429 || status >= 500;\n }\n\n private _retryDelay(retriesTaken: number): number {\n const delay = Math.min(INITIAL_RETRY_DELAY * 2 ** retriesTaken, MAX_RETRY_DELAY);\n return delay * (1 + Math.random());\n }\n\n private _sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n async _get<T>(\n path: string,\n options: {\n castTo: z.ZodType<T>;\n query?: Record<string, unknown> | null;\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n },\n ): Promise<T> {\n const result = await this._request<T>(method('GET'), path, options);\n return result!;\n }\n\n async _post<T>(\n path: string,\n options: {\n body?: Record<string, unknown> | null;\n castTo: z.ZodType<T>;\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n },\n ): Promise<T> {\n const result = await this._request<T>('POST', path, options);\n return result!;\n }\n\n async _put<T>(\n path: string,\n options: {\n body?: Record<string, unknown> | null;\n castTo: z.ZodType<T>;\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n },\n ): Promise<T> {\n const result = await this._request<T>('PUT', path, options);\n return result!;\n }\n\n async _delete(\n path: string,\n options: {\n extraHeaders?: Record<string, string>;\n timeout?: number;\n } = {},\n ): Promise<void> {\n await this._request('DELETE', path, options);\n }\n}\n\nfunction method(m: string): string {\n return m;\n}\n","import type { APIClient } from './base-client.js';\n\nexport class APIResource {\n protected _client: APIClient;\n protected _accountId: string;\n\n constructor(client: APIClient, accountId: string) {\n this._client = client;\n this._accountId = accountId;\n }\n\n protected get _basePath(): string {\n return `/v1/accounts/${this._accountId}`;\n }\n}\n","/**\n * snake_case를 camelCase로 변환합니다.\n * trailing underscore(예약어 회피용)는 제거합니다.\n * 예: 'from_' -> 'from', 'account_id' -> 'accountId'\n */\nexport function toCamelCase(snake: string): string {\n if (snake.endsWith('_')) {\n snake = snake.slice(0, -1);\n }\n const parts = snake.split('_');\n return parts[0] + parts.slice(1).map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join('');\n}\n\n/**\n * null/undefined 값을 제거하여 API에 불필요한 필드를 보내지 않습니다.\n */\nexport function stripNotGiven(data: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(data)) {\n if (v != null) {\n result[k] = v;\n }\n }\n return result;\n}\n","import { z } from 'zod';\n\nexport const PaginationMetaSchema = z\n .object({\n total: z.number(),\n page: z.number(),\n pageSize: z.number(),\n })\n .passthrough();\n\nexport type PaginationMeta = z.infer<typeof PaginationMetaSchema>;\n","import { z } from 'zod';\nimport type { APIClient } from './base-client.js';\nimport { PaginationMetaSchema } from './types/shared.js';\n\nexport function PageSchema<T>(itemSchema: z.ZodType<T>) {\n return z\n .object({\n data: z.array(itemSchema),\n meta: PaginationMetaSchema,\n })\n .passthrough();\n}\n\nexport class Page<T> {\n data: T[];\n meta: { total: number; page: number; pageSize: number };\n\n private _client: APIClient | null = null;\n private _path = '';\n private _itemSchema: z.ZodType<T> | null = null;\n private _query: Record<string, unknown> = {};\n\n constructor(data: T[], meta: { total: number; page: number; pageSize: number }) {\n this.data = data;\n this.meta = meta;\n }\n\n /** @internal */\n _setClient(\n client: APIClient,\n path: string,\n itemSchema: z.ZodType<T>,\n query: Record<string, unknown>,\n ): void {\n this._client = client;\n this._path = path;\n this._itemSchema = itemSchema;\n this._query = query;\n }\n\n hasNextPage(): boolean {\n return (this.meta.page + 1) * this.meta.pageSize < this.meta.total;\n }\n\n async nextPage(): Promise<Page<T>> {\n if (!this._client || !this._itemSchema) {\n throw new Error('Page client is not set');\n }\n if (!this.hasNextPage()) {\n throw new Error('No more pages');\n }\n const nextQuery = { ...this._query, page: this.meta.page + 1 };\n const schema = PageSchema(this._itemSchema);\n\n const raw = await this._client._get(this._path, {\n castTo: schema,\n query: nextQuery,\n });\n\n const page = new Page<T>(raw.data, raw.meta);\n page._setClient(this._client, this._path, this._itemSchema, this._query);\n return page;\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.data[Symbol.iterator]();\n }\n\n async *autoPagingIter(): AsyncGenerator<T> {\n let page: Page<T> = this;\n while (true) {\n for (const item of page.data) {\n yield item;\n }\n if (!page.hasNextPage()) break;\n page = await page.nextPage();\n }\n }\n}\n","import { z } from 'zod';\n\nexport const CallSchema = z\n .object({\n callId: z.string(),\n status: z.enum(['queued', 'ringing', 'in-progress', 'completed', 'failed']),\n to: z.string(),\n from: z.string(),\n direction: z.enum(['outbound', 'inbound']),\n duration: z.number().nullable().optional(),\n accountId: z.string(),\n dateCreated: z.string(),\n dateUpdated: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type Call = z.infer<typeof CallSchema>;\n\nexport const CallControlResponseSchema = z\n .object({\n callId: z.string(),\n status: z.string(),\n })\n .passthrough();\n\nexport type CallControlResponse = z.infer<typeof CallControlResponseSchema>;\n","import { APIResource } from '../resource.js';\nimport { stripNotGiven } from '../util.js';\nimport { Page, PageSchema } from '../pagination.js';\nimport { CallSchema, CallControlResponseSchema } from '../types/call.js';\nimport type { Call, CallControlResponse } from '../types/call.js';\nimport type { CallCreateParams, CallListParams } from '../types/call-params.js';\n\nexport class Calls extends APIResource {\n async create(\n params: CallCreateParams,\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Call> {\n const body = stripNotGiven({\n To: params.to,\n From: params.from,\n Url: params.url,\n StatusCallback: params.statusCallback,\n StatusCallbackEvent: params.statusCallbackEvent,\n });\n return this._client._post(`${this._basePath}/calls`, {\n body,\n castTo: CallSchema,\n ...options,\n });\n }\n\n async list(\n params: CallListParams = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Page<Call>> {\n const query = stripNotGiven({\n status: params.status,\n page: params.page,\n pageSize: params.pageSize,\n });\n const path = `${this._basePath}/calls`;\n const schema = PageSchema(CallSchema);\n const raw = await this._client._get(path, {\n castTo: schema,\n query: Object.keys(query).length ? query : undefined,\n ...options,\n });\n const page = new Page<Call>(raw.data, raw.meta);\n page._setClient(this._client, path, CallSchema, query);\n return page;\n }\n\n async get(\n callId: string,\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Call> {\n return this._client._get(`${this._basePath}/calls/${callId}`, {\n castTo: CallSchema,\n ...options,\n });\n }\n\n async update(\n callId: string,\n params: { status?: 'completed' } = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<CallControlResponse> {\n return this._client._post(`${this._basePath}/calls/${callId}`, {\n body: { Status: params.status ?? 'completed' },\n castTo: CallControlResponseSchema,\n ...options,\n });\n }\n}\n","import { z } from 'zod';\n\nexport const MessageSchema = z\n .object({\n messageId: z.string(),\n status: z.enum(['queued', 'sending', 'sent', 'failed', 'received']),\n type: z.enum(['sms', 'lms', 'mms', 'rcs', 'kakao']),\n to: z.string(),\n from: z.string(),\n body: z.string().nullable().optional(),\n subject: z.string().nullable().optional(),\n numMedia: z.number(),\n mediaUrl: z.array(z.string()),\n direction: z.enum(['outbound', 'inbound']),\n accountId: z.string(),\n dateCreated: z.string(),\n dateUpdated: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type Message = z.infer<typeof MessageSchema>;\n","import { APIResource } from '../resource.js';\nimport { stripNotGiven } from '../util.js';\nimport { Page, PageSchema } from '../pagination.js';\nimport { MessageSchema } from '../types/message.js';\nimport type { Message } from '../types/message.js';\nimport type { MessageCreateParams, MessageListParams } from '../types/message-params.js';\n\nexport class Messages extends APIResource {\n async create(\n params: MessageCreateParams,\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Message> {\n const body = stripNotGiven({\n To: params.to,\n From: params.from,\n Body: params.body,\n Type: params.type,\n Subject: params.subject,\n MediaUrl: params.mediaUrl,\n });\n return this._client._post(`${this._basePath}/messages`, {\n body,\n castTo: MessageSchema,\n ...options,\n });\n }\n\n async list(\n params: MessageListParams = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Page<Message>> {\n const query = stripNotGiven({\n type: params.type,\n status: params.status,\n page: params.page,\n pageSize: params.pageSize,\n });\n const path = `${this._basePath}/messages`;\n const schema = PageSchema(MessageSchema);\n const raw = await this._client._get(path, {\n castTo: schema,\n query: Object.keys(query).length ? query : undefined,\n ...options,\n });\n const page = new Page<Message>(raw.data, raw.meta);\n page._setClient(this._client, path, MessageSchema, query);\n return page;\n }\n\n async get(\n messageId: string,\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Message> {\n return this._client._get(`${this._basePath}/messages/${messageId}`, {\n castTo: MessageSchema,\n ...options,\n });\n }\n}\n","import { z } from 'zod';\n\nexport const PhoneNumberSchema = z\n .object({\n number: z.string(),\n source: z.string().nullable().optional(),\n webhookUrl: z.string().nullable().optional(),\n webhookMethod: z.enum(['POST', 'GET']).nullable().optional(),\n createdAt: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type PhoneNumber = z.infer<typeof PhoneNumberSchema>;\nexport type NumberListItem = PhoneNumber;\nexport type NumberUpdateResponse = PhoneNumber;\n","import { z } from 'zod';\nimport { APIResource } from '../resource.js';\nimport { stripNotGiven } from '../util.js';\nimport { PhoneNumberSchema } from '../types/number.js';\nimport type { PhoneNumber, NumberListItem, NumberUpdateResponse } from '../types/number.js';\n\nexport class Numbers extends APIResource {\n async create(\n params: { webhookUrl?: string } = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<PhoneNumber> {\n const body = stripNotGiven({ webhookUrl: params.webhookUrl });\n return this._client._post(`${this._basePath}/numbers`, {\n body: Object.keys(body).length ? body : undefined,\n castTo: PhoneNumberSchema,\n ...options,\n });\n }\n\n async list(\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<NumberListItem[]> {\n const schema = z.object({ data: z.array(PhoneNumberSchema) }).passthrough();\n const result = await this._client._get(`${this._basePath}/numbers`, {\n castTo: schema,\n ...options,\n });\n return result.data;\n }\n\n async update(\n number: string,\n params: { webhookUrl?: string; webhookMethod?: 'POST' | 'GET' } = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<NumberUpdateResponse> {\n const body = stripNotGiven({\n webhookUrl: params.webhookUrl,\n webhookMethod: params.webhookMethod,\n });\n return this._client._put(`${this._basePath}/numbers/${number}`, {\n body,\n castTo: PhoneNumberSchema,\n ...options,\n });\n }\n\n async delete(\n number: string,\n options: {\n extraHeaders?: Record<string, string>;\n timeout?: number;\n } = {},\n ): Promise<void> {\n await this._client._delete(`${this._basePath}/numbers/${number}`, options);\n }\n}\n","import { z } from 'zod';\n\nexport const WebhookLogSchema = z\n .object({\n id: z.string(),\n webhookId: z.string(),\n event: z.string(),\n requestUrl: z.string(),\n requestPayload: z.record(z.unknown()),\n responseStatus: z.number().nullable().optional(),\n responseBody: z.string().nullable().optional(),\n responseTimeMs: z.number().nullable().optional(),\n status: z.enum(['pending', 'delivered', 'failed']),\n attempt: z.number(),\n maxAttempts: z.number(),\n createdAt: z.string(),\n completedAt: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type WebhookLog = z.infer<typeof WebhookLogSchema>;\n","import { APIResource } from '../resource.js';\nimport { stripNotGiven } from '../util.js';\nimport { Page, PageSchema } from '../pagination.js';\nimport { WebhookLogSchema } from '../types/webhook-log.js';\nimport type { WebhookLog } from '../types/webhook-log.js';\n\nexport class WebhookLogs extends APIResource {\n async list(\n webhookId: string,\n params: { page?: number; pageSize?: number } = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Page<WebhookLog>> {\n const query = stripNotGiven({ page: params.page, pageSize: params.pageSize });\n const path = `${this._basePath}/webhooks/${webhookId}/logs`;\n const schema = PageSchema(WebhookLogSchema);\n const raw = await this._client._get(path, {\n castTo: schema,\n query: Object.keys(query).length ? query : undefined,\n ...options,\n });\n const page = new Page<WebhookLog>(raw.data, raw.meta);\n page._setClient(this._client, path, WebhookLogSchema, query);\n return page;\n }\n}\n","import type { APIClient } from '../base-client.js';\nimport { Calls } from './calls.js';\nimport { Messages } from './messages.js';\nimport { Numbers } from './numbers.js';\nimport { WebhookLogs } from './webhook-logs.js';\n\nexport class AccountContext {\n private _client: APIClient;\n private _accountId: string;\n\n constructor(client: APIClient, accountId: string) {\n this._client = client;\n this._accountId = accountId;\n }\n\n get calls(): Calls {\n return new Calls(this._client, this._accountId);\n }\n\n get messages(): Messages {\n return new Messages(this._client, this._accountId);\n }\n\n get numbers(): Numbers {\n return new Numbers(this._client, this._accountId);\n }\n\n get webhookLogs(): WebhookLogs {\n return new WebhookLogs(this._client, this._accountId);\n }\n}\n","import { createHmac, timingSafeEqual } from 'node:crypto';\nimport { ClawOpsError } from './error.js';\n\nexport class WebhookVerificationError extends ClawOpsError {\n constructor(message = 'Webhook 서명이 일치하지 않습니다.') {\n super(message);\n this.name = 'WebhookVerificationError';\n }\n}\n\nexport class Webhooks {\n verify(options: {\n url: string;\n params: Record<string, string>;\n signature: string;\n signingKey: string;\n }): boolean {\n const expected = Webhooks._computeSignature(options.url, options.params, options.signingKey);\n const expectedBuf = Buffer.from(expected, 'utf-8');\n const signatureBuf = Buffer.from(options.signature, 'utf-8');\n\n if (expectedBuf.length !== signatureBuf.length || !timingSafeEqual(expectedBuf, signatureBuf)) {\n throw new WebhookVerificationError();\n }\n return true;\n }\n\n static _computeSignature(\n url: string,\n params: Record<string, string>,\n signingKey: string,\n ): string {\n const sortedParams = Object.keys(params)\n .sort()\n .map((k) => `${k}${params[k]}`)\n .join('');\n const dataToSign = url + sortedParams;\n const digest = createHmac('sha256', signingKey).update(dataToSign, 'utf-8').digest();\n return digest.toString('base64');\n }\n}\n","import { APIClient, type APIClientOptions } from './base-client.js';\nimport { DEFAULT_BASE_URL } from './constants.js';\nimport { ClawOpsError } from './error.js';\nimport { Calls } from './resources/calls.js';\nimport { Messages } from './resources/messages.js';\nimport { Numbers } from './resources/numbers.js';\nimport { WebhookLogs } from './resources/webhook-logs.js';\nimport { AccountContext } from './resources/accounts.js';\nimport { Webhooks } from './webhooks.js';\n\nexport interface ClawOpsOptions {\n apiKey?: string;\n accountId?: string;\n baseURL?: string;\n timeout?: number;\n maxRetries?: number;\n fetch?: typeof globalThis.fetch;\n defaultHeaders?: Record<string, string>;\n}\n\nexport class ClawOps extends APIClient {\n private _defaultAccountId: string;\n\n constructor(options: ClawOpsOptions = {}) {\n let apiKey = options.apiKey ?? process.env.CLAWOPS_API_KEY;\n if (!apiKey) {\n throw new ClawOpsError('apiKey를 지정하거나 CLAWOPS_API_KEY 환경변수를 설정하세요.');\n }\n\n let accountId = options.accountId ?? process.env.CLAWOPS_ACCOUNT_ID;\n if (!accountId) {\n throw new ClawOpsError('accountId를 지정하거나 CLAWOPS_ACCOUNT_ID 환경변수를 설정하세요.');\n }\n\n const baseURL = options.baseURL ?? process.env.CLAWOPS_BASE_URL ?? DEFAULT_BASE_URL;\n\n super({\n apiKey,\n baseURL,\n timeout: options.timeout,\n maxRetries: options.maxRetries,\n fetch: options.fetch,\n defaultHeaders: options.defaultHeaders,\n });\n\n this._defaultAccountId = accountId;\n }\n\n get calls(): Calls {\n return new Calls(this, this._defaultAccountId);\n }\n\n get messages(): Messages {\n return new Messages(this, this._defaultAccountId);\n }\n\n get numbers(): Numbers {\n return new Numbers(this, this._defaultAccountId);\n }\n\n get webhookLogs(): WebhookLogs {\n return new WebhookLogs(this, this._defaultAccountId);\n }\n\n get webhooks(): Webhooks {\n return new Webhooks();\n }\n\n accounts(accountId: string): AccountContext {\n return new AccountContext(this, accountId);\n }\n}\n","import { ClawOps } from './client.js';\nexport default ClawOps;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/base-client.ts","../src/resource.ts","../src/util.ts","../src/types/shared.ts","../src/pagination.ts","../src/types/call.ts","../src/resources/calls.ts","../src/types/message.ts","../src/resources/messages.ts","../src/types/number.ts","../src/resources/numbers.ts","../src/types/webhook-log.ts","../src/resources/webhook-logs.ts","../src/resources/accounts.ts","../src/webhooks.ts","../src/client.ts","../src/client-default.ts"],"names":["ClawOpsError","DEFAULT_BASE_URL","DEFAULT_MAX_RETRIES","DEFAULT_TIMEOUT","VERSION","method","APITimeoutError","APIConnectionError","APIResponseValidationError","makeStatusError","INITIAL_RETRY_DELAY","MAX_RETRY_DELAY","z","timingSafeEqual","createHmac"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\nimport {\n DEFAULT_BASE_URL,\n DEFAULT_MAX_RETRIES,\n DEFAULT_TIMEOUT,\n INITIAL_RETRY_DELAY,\n MAX_RETRY_DELAY,\n} from './constants.js';\nimport {\n APIConnectionError,\n APIResponseValidationError,\n APITimeoutError,\n ClawOpsError,\n makeStatusError,\n} from './error.js';\nimport { VERSION } from './version.js';\n\nconst LOCALHOST_HOSTS = new Set(['localhost', '127.0.0.1', '0.0.0.0', '[::1]']);\n\nfunction validateBaseUrl(url: string): string {\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n throw new ClawOpsError(`Invalid base_url: ${url}`);\n }\n if (parsed.protocol === 'https:') return url;\n if (parsed.protocol === 'http:' && LOCALHOST_HOSTS.has(parsed.hostname)) return url;\n throw new ClawOpsError(\n `base_url은 HTTPS를 사용해야 합니다 (받은 값: '${url}'). ` +\n `로컬 개발 시에는 http://localhost를 사용할 수 있습니다.`,\n );\n}\n\nexport interface APIClientOptions {\n apiKey: string;\n baseURL?: string;\n timeout?: number;\n maxRetries?: number;\n fetch?: typeof globalThis.fetch;\n defaultHeaders?: Record<string, string>;\n}\n\nexport class APIClient {\n protected _apiKey: string;\n protected _baseURL: string;\n protected _maxRetries: number;\n protected _timeout: number;\n protected _fetch: typeof globalThis.fetch;\n protected _defaultHeaders: Record<string, string>;\n\n constructor(options: APIClientOptions) {\n this._apiKey = options.apiKey;\n this._baseURL = validateBaseUrl((options.baseURL ?? DEFAULT_BASE_URL).replace(/\\/+$/, ''));\n this._maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n this._timeout = options.timeout ?? DEFAULT_TIMEOUT;\n this._fetch = options.fetch ?? globalThis.fetch;\n this._defaultHeaders = options.defaultHeaders ?? {};\n }\n\n private _buildHeaders(extra?: Record<string, string>): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this._apiKey}`,\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'User-Agent': `claw-ops-node/${VERSION}`,\n ...this._defaultHeaders,\n };\n if (extra) Object.assign(headers, extra);\n return headers;\n }\n\n protected async _request<T>(\n method: string,\n path: string,\n options: {\n body?: Record<string, unknown> | null;\n query?: Record<string, unknown> | null;\n castTo?: z.ZodType<T>;\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<T | null> {\n const headers = this._buildHeaders(options.extraHeaders);\n\n const params = new URLSearchParams();\n const queryObj = { ...options.query, ...options.extraQuery };\n for (const [k, v] of Object.entries(queryObj)) {\n if (v != null) params.set(k, String(v));\n }\n\n const queryString = params.toString();\n const url = `${this._baseURL}${path}${queryString ? `?${queryString}` : ''}`;\n const reqTimeout = options.timeout ?? this._timeout;\n\n let retriesLeft = this._maxRetries;\n\n while (true) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), reqTimeout);\n\n let response: Response;\n try {\n response = await this._fetch(url, {\n method,\n headers,\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n } catch (err) {\n clearTimeout(timeoutId);\n if (err instanceof DOMException && err.name === 'AbortError') {\n if (retriesLeft > 0) {\n retriesLeft--;\n await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));\n continue;\n }\n throw new APITimeoutError({ method, url });\n }\n if (retriesLeft > 0) {\n retriesLeft--;\n await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));\n continue;\n }\n throw new APIConnectionError({ method, url });\n } finally {\n clearTimeout(timeoutId);\n }\n\n if (response.ok) {\n if (response.status === 204 || !options.castTo) {\n return null;\n }\n let json: unknown;\n try {\n json = await response.json();\n } catch {\n throw new APIResponseValidationError({ status: response.status }, { method, url });\n }\n const parsed = options.castTo.safeParse(json);\n if (!parsed.success) {\n throw new APIResponseValidationError({ status: response.status }, { method, url });\n }\n return parsed.data;\n }\n\n if (retriesLeft > 0 && this._shouldRetry(response.status)) {\n retriesLeft--;\n await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));\n continue;\n }\n\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n body = null;\n }\n throw makeStatusError(response.status, body, response.headers, { method, url });\n }\n }\n\n private _shouldRetry(status: number): boolean {\n return status === 408 || status === 409 || status === 429 || status >= 500;\n }\n\n private _retryDelay(retriesTaken: number): number {\n const delay = Math.min(INITIAL_RETRY_DELAY * 2 ** retriesTaken, MAX_RETRY_DELAY);\n return delay * (1 + Math.random());\n }\n\n private _sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n async _get<T>(\n path: string,\n options: {\n castTo: z.ZodType<T>;\n query?: Record<string, unknown> | null;\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n },\n ): Promise<T> {\n const result = await this._request<T>(method('GET'), path, options);\n return result!;\n }\n\n async _post<T>(\n path: string,\n options: {\n body?: Record<string, unknown> | null;\n castTo: z.ZodType<T>;\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n },\n ): Promise<T> {\n const result = await this._request<T>('POST', path, options);\n return result!;\n }\n\n async _put<T>(\n path: string,\n options: {\n body?: Record<string, unknown> | null;\n castTo: z.ZodType<T>;\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n },\n ): Promise<T> {\n const result = await this._request<T>('PUT', path, options);\n return result!;\n }\n\n async _delete(\n path: string,\n options: {\n extraHeaders?: Record<string, string>;\n timeout?: number;\n } = {},\n ): Promise<void> {\n await this._request('DELETE', path, options);\n }\n}\n\nfunction method(m: string): string {\n return m;\n}\n","import type { APIClient } from './base-client.js';\n\nexport class APIResource {\n protected _client: APIClient;\n protected _accountId: string;\n\n constructor(client: APIClient, accountId: string) {\n this._client = client;\n this._accountId = accountId;\n }\n\n protected get _basePath(): string {\n return `/v1/accounts/${this._accountId}`;\n }\n}\n","/**\n * snake_case를 camelCase로 변환합니다.\n * trailing underscore(예약어 회피용)는 제거합니다.\n * 예: 'from_' -> 'from', 'account_id' -> 'accountId'\n */\nexport function toCamelCase(snake: string): string {\n if (snake.endsWith('_')) {\n snake = snake.slice(0, -1);\n }\n const parts = snake.split('_');\n return parts[0] + parts.slice(1).map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join('');\n}\n\n/**\n * null/undefined 값을 제거하여 API에 불필요한 필드를 보내지 않습니다.\n */\nexport function stripNotGiven(data: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(data)) {\n if (v != null) {\n result[k] = v;\n }\n }\n return result;\n}\n","import { z } from 'zod';\n\nexport const PaginationMetaSchema = z\n .object({\n total: z.number(),\n page: z.number(),\n pageSize: z.number(),\n })\n .passthrough();\n\nexport type PaginationMeta = z.infer<typeof PaginationMetaSchema>;\n","import { z } from 'zod';\nimport type { APIClient } from './base-client.js';\nimport { PaginationMetaSchema } from './types/shared.js';\n\nexport function PageSchema<T>(itemSchema: z.ZodType<T>) {\n return z\n .object({\n data: z.array(itemSchema),\n meta: PaginationMetaSchema,\n })\n .passthrough();\n}\n\nexport class Page<T> {\n data: T[];\n meta: { total: number; page: number; pageSize: number };\n\n private _client: APIClient | null = null;\n private _path = '';\n private _itemSchema: z.ZodType<T> | null = null;\n private _query: Record<string, unknown> = {};\n\n constructor(data: T[], meta: { total: number; page: number; pageSize: number }) {\n this.data = data;\n this.meta = meta;\n }\n\n /** @internal */\n _setClient(\n client: APIClient,\n path: string,\n itemSchema: z.ZodType<T>,\n query: Record<string, unknown>,\n ): void {\n this._client = client;\n this._path = path;\n this._itemSchema = itemSchema;\n this._query = query;\n }\n\n hasNextPage(): boolean {\n return (this.meta.page + 1) * this.meta.pageSize < this.meta.total;\n }\n\n async nextPage(): Promise<Page<T>> {\n if (!this._client || !this._itemSchema) {\n throw new Error('Page client is not set');\n }\n if (!this.hasNextPage()) {\n throw new Error('No more pages');\n }\n const nextQuery = { ...this._query, page: this.meta.page + 1 };\n const schema = PageSchema(this._itemSchema);\n\n const raw = await this._client._get(this._path, {\n castTo: schema,\n query: nextQuery,\n });\n\n const page = new Page<T>(raw.data, raw.meta);\n page._setClient(this._client, this._path, this._itemSchema, this._query);\n return page;\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.data[Symbol.iterator]();\n }\n\n async *autoPagingIter(): AsyncGenerator<T> {\n let page: Page<T> = this;\n while (true) {\n for (const item of page.data) {\n yield item;\n }\n if (!page.hasNextPage()) break;\n page = await page.nextPage();\n }\n }\n}\n","import { z } from 'zod';\n\nexport const CallSchema = z\n .object({\n callId: z.string(),\n status: z.enum(['queued', 'ringing', 'in-progress', 'completed', 'failed']),\n to: z.string(),\n from: z.string(),\n direction: z.enum(['outbound', 'inbound']),\n duration: z.number().nullable().optional(),\n accountId: z.string(),\n dateCreated: z.string(),\n dateUpdated: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type Call = z.infer<typeof CallSchema>;\n\nexport const CallControlResponseSchema = z\n .object({\n callId: z.string(),\n status: z.string(),\n })\n .passthrough();\n\nexport type CallControlResponse = z.infer<typeof CallControlResponseSchema>;\n","import { APIResource } from '../resource.js';\nimport { stripNotGiven } from '../util.js';\nimport { Page, PageSchema } from '../pagination.js';\nimport { CallSchema, CallControlResponseSchema } from '../types/call.js';\nimport type { Call, CallControlResponse } from '../types/call.js';\nimport type { CallCreateParams, CallListParams } from '../types/call-params.js';\n\nexport class Calls extends APIResource {\n async create(\n params: CallCreateParams,\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Call> {\n const body = stripNotGiven({\n To: params.to,\n From: params.from,\n Url: params.url,\n AI: params.ai\n ? stripNotGiven({\n Provider: params.ai.provider,\n Model: params.ai.model,\n ApiKey: params.ai.apiKey,\n Voice: params.ai.voice,\n Language: params.ai.language,\n Messages: params.ai.messages,\n Tools: params.ai.tools,\n Greeting: params.ai.greeting,\n TurnDetection: params.ai.turnDetection,\n })\n : undefined,\n StatusCallback: params.statusCallback,\n StatusCallbackEvent: params.statusCallbackEvent,\n Timeout: params.timeout,\n });\n return this._client._post(`${this._basePath}/calls`, {\n body,\n castTo: CallSchema,\n ...options,\n });\n }\n\n async list(\n params: CallListParams = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Page<Call>> {\n const query = stripNotGiven({\n status: params.status,\n page: params.page,\n pageSize: params.pageSize,\n });\n const path = `${this._basePath}/calls`;\n const schema = PageSchema(CallSchema);\n const raw = await this._client._get(path, {\n castTo: schema,\n query: Object.keys(query).length ? query : undefined,\n ...options,\n });\n const page = new Page<Call>(raw.data, raw.meta);\n page._setClient(this._client, path, CallSchema, query);\n return page;\n }\n\n async get(\n callId: string,\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Call> {\n return this._client._get(`${this._basePath}/calls/${callId}`, {\n castTo: CallSchema,\n ...options,\n });\n }\n\n async update(\n callId: string,\n params: { status?: 'completed' } = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<CallControlResponse> {\n return this._client._post(`${this._basePath}/calls/${callId}`, {\n body: { Status: params.status ?? 'completed' },\n castTo: CallControlResponseSchema,\n ...options,\n });\n }\n}\n","import { z } from 'zod';\n\nexport const MessageSchema = z\n .object({\n messageId: z.string(),\n status: z.enum(['queued', 'sending', 'sent', 'failed', 'received']),\n type: z.enum(['sms', 'lms', 'mms', 'rcs', 'kakao']),\n to: z.string(),\n from: z.string(),\n body: z.string().nullable().optional(),\n subject: z.string().nullable().optional(),\n numMedia: z.number(),\n mediaUrl: z.array(z.string()),\n direction: z.enum(['outbound', 'inbound']),\n accountId: z.string(),\n dateCreated: z.string(),\n dateUpdated: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type Message = z.infer<typeof MessageSchema>;\n","import { APIResource } from '../resource.js';\nimport { stripNotGiven } from '../util.js';\nimport { Page, PageSchema } from '../pagination.js';\nimport { MessageSchema } from '../types/message.js';\nimport type { Message } from '../types/message.js';\nimport type { MessageCreateParams, MessageListParams } from '../types/message-params.js';\n\nexport class Messages extends APIResource {\n async create(\n params: MessageCreateParams,\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Message> {\n const body = stripNotGiven({\n To: params.to,\n From: params.from,\n Body: params.body,\n Type: params.type,\n Subject: params.subject,\n MediaUrl: params.mediaUrl,\n });\n return this._client._post(`${this._basePath}/messages`, {\n body,\n castTo: MessageSchema,\n ...options,\n });\n }\n\n async list(\n params: MessageListParams = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Page<Message>> {\n const query = stripNotGiven({\n type: params.type,\n status: params.status,\n page: params.page,\n pageSize: params.pageSize,\n });\n const path = `${this._basePath}/messages`;\n const schema = PageSchema(MessageSchema);\n const raw = await this._client._get(path, {\n castTo: schema,\n query: Object.keys(query).length ? query : undefined,\n ...options,\n });\n const page = new Page<Message>(raw.data, raw.meta);\n page._setClient(this._client, path, MessageSchema, query);\n return page;\n }\n\n async get(\n messageId: string,\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Message> {\n return this._client._get(`${this._basePath}/messages/${messageId}`, {\n castTo: MessageSchema,\n ...options,\n });\n }\n}\n","import { z } from 'zod';\n\nexport const PhoneNumberSchema = z\n .object({\n number: z.string(),\n source: z.string().nullable().optional(),\n webhookUrl: z.string().nullable().optional(),\n webhookMethod: z.enum(['POST', 'GET']).nullable().optional(),\n createdAt: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type PhoneNumber = z.infer<typeof PhoneNumberSchema>;\nexport type NumberListItem = PhoneNumber;\nexport type NumberUpdateResponse = PhoneNumber;\n","import { z } from 'zod';\nimport { APIResource } from '../resource.js';\nimport { stripNotGiven } from '../util.js';\nimport { PhoneNumberSchema } from '../types/number.js';\nimport type { PhoneNumber, NumberListItem, NumberUpdateResponse } from '../types/number.js';\n\nexport class Numbers extends APIResource {\n async create(\n params: { webhookUrl?: string } = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<PhoneNumber> {\n const body = stripNotGiven({ webhookUrl: params.webhookUrl });\n return this._client._post(`${this._basePath}/numbers`, {\n body: Object.keys(body).length ? body : undefined,\n castTo: PhoneNumberSchema,\n ...options,\n });\n }\n\n async list(\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<NumberListItem[]> {\n const schema = z.object({ data: z.array(PhoneNumberSchema) }).passthrough();\n const result = await this._client._get(`${this._basePath}/numbers`, {\n castTo: schema,\n ...options,\n });\n return result.data;\n }\n\n async update(\n number: string,\n params: { webhookUrl?: string; webhookMethod?: 'POST' | 'GET' } = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<NumberUpdateResponse> {\n const body = stripNotGiven({\n webhookUrl: params.webhookUrl,\n webhookMethod: params.webhookMethod,\n });\n return this._client._put(`${this._basePath}/numbers/${number}`, {\n body,\n castTo: PhoneNumberSchema,\n ...options,\n });\n }\n\n async delete(\n number: string,\n options: {\n extraHeaders?: Record<string, string>;\n timeout?: number;\n } = {},\n ): Promise<void> {\n await this._client._delete(`${this._basePath}/numbers/${number}`, options);\n }\n}\n","import { z } from 'zod';\n\nexport const WebhookLogSchema = z\n .object({\n id: z.string(),\n webhookId: z.string(),\n event: z.string(),\n requestUrl: z.string(),\n requestPayload: z.record(z.unknown()),\n responseStatus: z.number().nullable().optional(),\n responseBody: z.string().nullable().optional(),\n responseTimeMs: z.number().nullable().optional(),\n status: z.enum(['pending', 'delivered', 'failed']),\n attempt: z.number(),\n maxAttempts: z.number(),\n createdAt: z.string(),\n completedAt: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type WebhookLog = z.infer<typeof WebhookLogSchema>;\n","import { APIResource } from '../resource.js';\nimport { stripNotGiven } from '../util.js';\nimport { Page, PageSchema } from '../pagination.js';\nimport { WebhookLogSchema } from '../types/webhook-log.js';\nimport type { WebhookLog } from '../types/webhook-log.js';\n\nexport class WebhookLogs extends APIResource {\n async list(\n webhookId: string,\n params: { page?: number; pageSize?: number } = {},\n options: {\n extraHeaders?: Record<string, string>;\n extraQuery?: Record<string, unknown>;\n timeout?: number;\n } = {},\n ): Promise<Page<WebhookLog>> {\n const query = stripNotGiven({ page: params.page, pageSize: params.pageSize });\n const path = `${this._basePath}/webhooks/${webhookId}/logs`;\n const schema = PageSchema(WebhookLogSchema);\n const raw = await this._client._get(path, {\n castTo: schema,\n query: Object.keys(query).length ? query : undefined,\n ...options,\n });\n const page = new Page<WebhookLog>(raw.data, raw.meta);\n page._setClient(this._client, path, WebhookLogSchema, query);\n return page;\n }\n}\n","import type { APIClient } from '../base-client.js';\nimport { Calls } from './calls.js';\nimport { Messages } from './messages.js';\nimport { Numbers } from './numbers.js';\nimport { WebhookLogs } from './webhook-logs.js';\n\nexport class AccountContext {\n private _client: APIClient;\n private _accountId: string;\n\n constructor(client: APIClient, accountId: string) {\n this._client = client;\n this._accountId = accountId;\n }\n\n get calls(): Calls {\n return new Calls(this._client, this._accountId);\n }\n\n get messages(): Messages {\n return new Messages(this._client, this._accountId);\n }\n\n get numbers(): Numbers {\n return new Numbers(this._client, this._accountId);\n }\n\n get webhookLogs(): WebhookLogs {\n return new WebhookLogs(this._client, this._accountId);\n }\n}\n","import { createHmac, timingSafeEqual } from 'node:crypto';\nimport { ClawOpsError } from './error.js';\n\nexport class WebhookVerificationError extends ClawOpsError {\n constructor(message = 'Webhook 서명이 일치하지 않습니다.') {\n super(message);\n this.name = 'WebhookVerificationError';\n }\n}\n\nexport class Webhooks {\n verify(options: {\n url: string;\n params: Record<string, string>;\n signature: string;\n signingKey: string;\n }): boolean {\n const expected = Webhooks._computeSignature(options.url, options.params, options.signingKey);\n const expectedBuf = Buffer.from(expected, 'utf-8');\n const signatureBuf = Buffer.from(options.signature, 'utf-8');\n\n if (expectedBuf.length !== signatureBuf.length || !timingSafeEqual(expectedBuf, signatureBuf)) {\n throw new WebhookVerificationError();\n }\n return true;\n }\n\n static _computeSignature(\n url: string,\n params: Record<string, string>,\n signingKey: string,\n ): string {\n const sortedParams = Object.keys(params)\n .sort()\n .map((k) => `${k}${params[k]}`)\n .join('');\n const dataToSign = url + sortedParams;\n const digest = createHmac('sha256', signingKey).update(dataToSign, 'utf-8').digest();\n return digest.toString('base64');\n }\n}\n","import { APIClient, type APIClientOptions } from './base-client.js';\nimport { DEFAULT_BASE_URL } from './constants.js';\nimport { ClawOpsError } from './error.js';\nimport { Calls } from './resources/calls.js';\nimport { Messages } from './resources/messages.js';\nimport { Numbers } from './resources/numbers.js';\nimport { WebhookLogs } from './resources/webhook-logs.js';\nimport { AccountContext } from './resources/accounts.js';\nimport { Webhooks } from './webhooks.js';\n\nexport interface ClawOpsOptions {\n apiKey?: string;\n accountId?: string;\n baseURL?: string;\n timeout?: number;\n maxRetries?: number;\n fetch?: typeof globalThis.fetch;\n defaultHeaders?: Record<string, string>;\n}\n\nexport class ClawOps extends APIClient {\n private _defaultAccountId: string;\n\n constructor(options: ClawOpsOptions = {}) {\n let apiKey = options.apiKey ?? process.env.CLAWOPS_API_KEY;\n if (!apiKey) {\n throw new ClawOpsError('apiKey를 지정하거나 CLAWOPS_API_KEY 환경변수를 설정하세요.');\n }\n\n let accountId = options.accountId ?? process.env.CLAWOPS_ACCOUNT_ID;\n if (!accountId) {\n throw new ClawOpsError('accountId를 지정하거나 CLAWOPS_ACCOUNT_ID 환경변수를 설정하세요.');\n }\n\n const baseURL = options.baseURL ?? process.env.CLAWOPS_BASE_URL ?? DEFAULT_BASE_URL;\n\n super({\n apiKey,\n baseURL,\n timeout: options.timeout,\n maxRetries: options.maxRetries,\n fetch: options.fetch,\n defaultHeaders: options.defaultHeaders,\n });\n\n this._defaultAccountId = accountId;\n }\n\n get calls(): Calls {\n return new Calls(this, this._defaultAccountId);\n }\n\n get messages(): Messages {\n return new Messages(this, this._defaultAccountId);\n }\n\n get numbers(): Numbers {\n return new Numbers(this, this._defaultAccountId);\n }\n\n get webhookLogs(): WebhookLogs {\n return new WebhookLogs(this, this._defaultAccountId);\n }\n\n get webhooks(): Webhooks {\n return new Webhooks();\n }\n\n accounts(accountId: string): AccountContext {\n return new AccountContext(this, accountId);\n }\n}\n","import { ClawOps } from './client.js';\nexport default ClawOps;\n"]}
|