@intutic/clawde 2.2.0 → 2.4.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 +5 -3
- package/dist/client.d.ts +26 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +104 -15
- package/dist/client.js.map +1 -1
- package/dist/control-plane.d.ts +314 -13
- package/dist/control-plane.d.ts.map +1 -1
- package/dist/control-plane.js +665 -20
- package/dist/control-plane.js.map +1 -1
- package/dist/errors.d.ts +13 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +15 -3
- package/dist/errors.js.map +1 -1
- package/dist/evidence.d.ts +22 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +114 -0
- package/dist/evidence.js.map +1 -0
- package/dist/git-context.d.ts +27 -0
- package/dist/git-context.d.ts.map +1 -0
- package/dist/git-context.js +114 -0
- package/dist/git-context.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/integrity.d.ts +23 -0
- package/dist/integrity.d.ts.map +1 -0
- package/dist/integrity.js +89 -0
- package/dist/integrity.js.map +1 -0
- package/dist/refusals.d.ts +39 -15
- package/dist/refusals.d.ts.map +1 -1
- package/dist/refusals.js +69 -16
- package/dist/refusals.js.map +1 -1
- package/dist/toon.d.ts +22 -0
- package/dist/toon.d.ts.map +1 -0
- package/dist/toon.js +115 -0
- package/dist/toon.js.map +1 -0
- package/dist/types.d.ts +1182 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/upstream.d.ts +8 -0
- package/dist/upstream.d.ts.map +1 -0
- package/dist/upstream.js +17 -0
- package/dist/upstream.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,13 +10,15 @@ npm install @intutic/clawde
|
|
|
10
10
|
|
|
11
11
|
## Features
|
|
12
12
|
|
|
13
|
-
- **Governed chat:** `chat()` sends a request through the proxy and resolves with `verdict: 'allow'`. A governance refusal (policy block, reask, loop run held for review, spend cap, DLP block) throws `ClawdeBlockedError` with the proxy's `verdict`, `code` and reason, and is never retried; transport failures and 5xx answers are retried.
|
|
14
|
-
- **
|
|
13
|
+
- **Governed chat:** `chat()` sends a request through the proxy and resolves with `verdict: 'allow'`. A governance refusal (policy block, reask, loop run held for review, spend cap, DLP block) throws `ClawdeBlockedError` with the proxy's `verdict`, `code`, `ruleId` (when the proxy names the rule) and reason, and is never retried; transport failures and 5xx answers are retried.
|
|
14
|
+
- **Withheld tool calls:** when the proxy withholds a tool call from the model's answer (a tool an SOP denies, the SSO group policy, destructive SQL, sensitive output), the answer arrives as a 200 that names the refusal in the `x-intutic-refusal` and `x-intutic-refusal-rule` headers. `chat()` reads them and throws `ClawdeBlockedError` too. For a stream you read yourself, pass each line to `streamRefusal()`, which finds the `: intutic-refusal` marker the proxy writes before the refusal text. See [Verdicts and Errors](https://docs.intutic.ai/reference/clawde-sdk#_5-verdicts-and-errors) for every refusal code.
|
|
15
|
+
- **Verdict Events:** `client.on('kill' | 'reask' | 'hold', ...)` fires on a refusal, before `chat()` throws.
|
|
15
16
|
- **Anthropic requests:** `provider: 'anthropic'` translates OpenAI-style parameters to an Anthropic Messages body, sends it to the proxy's `/v1/messages` route, and translates the reply back.
|
|
16
17
|
- **Budget Check:** `checkBudget()` reports whether the workspace has budget left, from the control plane's `GET /api/v1/budget`.
|
|
17
18
|
- **Circuit Breaker:** `client.circuitBreaker(toolName, options)(fn)` runs `fn`, after a workspace budget check when `requireBudget` is set, failing closed unless `failOpen` is set.
|
|
18
19
|
- **Context Resolution:** `resolveContext()` reads the sync daemon's `~/.intutic/config.json` (git branch, Jira ticket, PagerDuty incident, CI pipeline, workspace, session), falling back to environment variables.
|
|
19
|
-
- **
|
|
20
|
+
- **Git context (`autoContext`, on by default):** with an Intutic virtual key, in a git repository, the first `chat()` registers a session with the control plane carrying the repository (the `origin` remote as `host/path`, credentials removed), the branch and the HEAD commit, so the calls count in cost per branch, commit and pull request. Pass `autoContext: false` to send none of it. See [Git context and cost attribution](https://docs.intutic.ai/reference/clawde-sdk#_1a-git-context-and-cost-attribution).
|
|
21
|
+
- **Control-Plane Management (`ControlPlaneClient`):** The operator APIs the CLI exposes, callable programmatically: org and workspace setup, gateways, settings and provider credentials, the MCP registry, notification rules, SIEM destinations, usage, the AI inventory, compliance evidence (with `verifyEvidenceArchive()` to check an archive offline), policy guardrails, held decisions and loop runs, findings, traces, trace integrity (with `verifyIntegrityRoot()` to check a sealed root's signature offline), policies and SOPs. The Python SDK has the same methods in snake_case. See the [SDK reference](https://docs.intutic.ai/reference/clawde-sdk#control-plane-management-controlplaneclient).
|
|
20
22
|
|
|
21
23
|
## License
|
|
22
24
|
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ClawdeClientOptions, ChatParams, ChatResponse, ResolvedContext, BudgetCheckResult, EventCallback, CircuitBreakerOptions, VerdictEvent } from './types';
|
|
2
|
+
/** The harness a session this SDK registers is recorded under. */
|
|
3
|
+
export declare const SDK_HARNESS = "clawde_sdk";
|
|
2
4
|
export declare class ClawdeClient {
|
|
3
5
|
private apiKey;
|
|
4
6
|
private baseUrl;
|
|
@@ -12,6 +14,8 @@ export declare class ClawdeClient {
|
|
|
12
14
|
private budgetChecker;
|
|
13
15
|
private circuitBreakerWrapper;
|
|
14
16
|
private eventEmitter;
|
|
17
|
+
/** The session this client's requests are filed under, resolved once, on the first `chat()`. */
|
|
18
|
+
private session?;
|
|
15
19
|
constructor(options: ClawdeClientOptions);
|
|
16
20
|
on(event: VerdictEvent, callback: EventCallback): void;
|
|
17
21
|
off(event: string, callback: EventCallback): void;
|
|
@@ -23,10 +27,29 @@ export declare class ClawdeClient {
|
|
|
23
27
|
*
|
|
24
28
|
* Resolves with `verdict: 'allow'` when the proxy let the request through. A
|
|
25
29
|
* governance refusal, including one the proxy answers with a 200 and names in
|
|
26
|
-
* `x-intutic-refusal
|
|
27
|
-
* `ClawdeBlockedError`, unretried.
|
|
28
|
-
* answers are retried; anything else
|
|
30
|
+
* `x-intutic-refusal` (or, on a stream, in its `: intutic-refusal` line),
|
|
31
|
+
* fires the matching event and rejects with `ClawdeBlockedError`, unretried.
|
|
32
|
+
* Transport failures, timeouts and 5xx answers are retried; anything else
|
|
33
|
+
* rejects with `ClawdeConnectionError`.
|
|
29
34
|
*/
|
|
30
35
|
chat(params: ChatParams): Promise<ChatResponse>;
|
|
36
|
+
/**
|
|
37
|
+
* The session to send as `x-session-id`, or null to send none.
|
|
38
|
+
*
|
|
39
|
+
* A session id from the environment (`INTUTIC_SESSION_ID`, or the sync
|
|
40
|
+
* daemon's config) is the session that started this process, and its owner
|
|
41
|
+
* reports its context, so it is used as is. Otherwise, when the working
|
|
42
|
+
* directory is a git repository, this registers a session carrying its
|
|
43
|
+
* repository, branch and commit (`POST /api/v1/sessions`, as the sync
|
|
44
|
+
* daemon does), so cost per branch, commit and pull request includes this
|
|
45
|
+
* client's calls. Only with an Intutic virtual key: any other key is a
|
|
46
|
+
* provider's, and it is never sent to the control plane. `autoContext:
|
|
47
|
+
* false` turns this off. Best effort: a control plane that cannot be
|
|
48
|
+
* reached or refuses costs the attribution, never the call.
|
|
49
|
+
*/
|
|
50
|
+
private openSession;
|
|
51
|
+
private controlPlane;
|
|
52
|
+
/** Fires the refusal's event, then throws it. */
|
|
53
|
+
private refuse;
|
|
31
54
|
}
|
|
32
55
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACb,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACb,MAAM,SAAS,CAAA;AAahB,kEAAkE;AAClE,eAAO,MAAM,WAAW,eAAe,CAAA;AAEvC,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAmC;IACpD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAQ;IAEvB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,YAAY,CAAoB;IAExC,gGAAgG;IAChG,OAAO,CAAC,OAAO,CAAC,CAAwB;gBAE5B,OAAO,EAAE,mBAAmB;IAuBjC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAItD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAK3C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAK/E,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC;IAQhD,cAAc,CAAC,CAAC,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GAClC,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;IAIvC;;;;;;;;;OASG;IACU,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAgG5D;;;;;;;;;;;;;OAaG;YACW,WAAW;YA0BX,YAAY;IAW1B,iDAAiD;IACjD,OAAO,CAAC,MAAM;CAKf"}
|
package/dist/client.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ClawdeClient = void 0;
|
|
3
|
+
exports.ClawdeClient = exports.SDK_HARNESS = void 0;
|
|
4
4
|
const errors_1 = require("./errors");
|
|
5
5
|
const refusals_1 = require("./refusals");
|
|
6
|
+
const upstream_1 = require("./upstream");
|
|
6
7
|
const schema_enforcer_1 = require("./schema-enforcer");
|
|
7
8
|
const context_resolver_1 = require("./context-resolver");
|
|
9
|
+
const git_context_1 = require("./git-context");
|
|
8
10
|
const budget_checker_1 = require("./budget-checker");
|
|
9
11
|
const circuit_breaker_1 = require("./circuit-breaker");
|
|
10
12
|
const event_emitter_1 = require("./event-emitter");
|
|
11
13
|
const graph_identity_1 = require("./graph-identity");
|
|
14
|
+
/** The harness a session this SDK registers is recorded under. */
|
|
15
|
+
exports.SDK_HARNESS = 'clawde_sdk';
|
|
12
16
|
class ClawdeClient {
|
|
13
17
|
apiKey;
|
|
14
18
|
baseUrl;
|
|
@@ -22,6 +26,8 @@ class ClawdeClient {
|
|
|
22
26
|
budgetChecker;
|
|
23
27
|
circuitBreakerWrapper;
|
|
24
28
|
eventEmitter;
|
|
29
|
+
/** The session this client's requests are filed under, resolved once, on the first `chat()`. */
|
|
30
|
+
session;
|
|
25
31
|
constructor(options) {
|
|
26
32
|
if (!options.apiKey) {
|
|
27
33
|
throw new Error('API key is required to initialize ClawdeClient.');
|
|
@@ -68,11 +74,14 @@ class ClawdeClient {
|
|
|
68
74
|
*
|
|
69
75
|
* Resolves with `verdict: 'allow'` when the proxy let the request through. A
|
|
70
76
|
* governance refusal, including one the proxy answers with a 200 and names in
|
|
71
|
-
* `x-intutic-refusal
|
|
72
|
-
* `ClawdeBlockedError`, unretried.
|
|
73
|
-
* answers are retried; anything else
|
|
77
|
+
* `x-intutic-refusal` (or, on a stream, in its `: intutic-refusal` line),
|
|
78
|
+
* fires the matching event and rejects with `ClawdeBlockedError`, unretried.
|
|
79
|
+
* Transport failures, timeouts and 5xx answers are retried; anything else
|
|
80
|
+
* rejects with `ClawdeConnectionError`.
|
|
74
81
|
*/
|
|
75
82
|
async chat(params) {
|
|
83
|
+
this.session ??= this.openSession();
|
|
84
|
+
const sessionId = await this.session;
|
|
76
85
|
const anthropic = this.provider === 'anthropic';
|
|
77
86
|
// The proxy picks the wire format by route: an Anthropic Messages body
|
|
78
87
|
// sent to /v1/chat/completions is parsed as an OpenAI one.
|
|
@@ -86,6 +95,9 @@ class ClawdeClient {
|
|
|
86
95
|
// request as a graph of one, and skips membership, fleet spend and
|
|
87
96
|
// node counting entirely.
|
|
88
97
|
...(0, graph_identity_1.identityHeaders)(this.identity),
|
|
98
|
+
// The proxy files the trace under this session, and the control plane
|
|
99
|
+
// copies the session's repository, branch and commit onto it.
|
|
100
|
+
...(sessionId ? { 'x-session-id': sessionId } : {}),
|
|
89
101
|
};
|
|
90
102
|
const body = JSON.stringify((0, schema_enforcer_1.normalizeRequest)(params, this.provider));
|
|
91
103
|
let lastError = '';
|
|
@@ -102,10 +114,16 @@ class ClawdeClient {
|
|
|
102
114
|
let status;
|
|
103
115
|
let text;
|
|
104
116
|
let refusedBy;
|
|
117
|
+
let refusedRule;
|
|
118
|
+
let upstream;
|
|
119
|
+
let retryAfter;
|
|
105
120
|
try {
|
|
106
121
|
const response = await fetch(url, { method: 'POST', headers, body, signal: controller.signal });
|
|
107
122
|
status = response.status;
|
|
108
123
|
refusedBy = response.headers.get(refusals_1.REFUSAL_HEADER);
|
|
124
|
+
refusedRule = response.headers.get(refusals_1.REFUSAL_RULE_HEADER);
|
|
125
|
+
upstream = (0, upstream_1.upstreamCalls)(response.headers);
|
|
126
|
+
retryAfter = response.headers.get('retry-after');
|
|
109
127
|
text = await response.text();
|
|
110
128
|
}
|
|
111
129
|
catch (err) {
|
|
@@ -121,32 +139,103 @@ class ClawdeClient {
|
|
|
121
139
|
json = JSON.parse(text);
|
|
122
140
|
}
|
|
123
141
|
catch {
|
|
142
|
+
// A `stream: true` request comes back as an event stream, which
|
|
143
|
+
// `chat()` does not parse; it still must not pass off a refusal
|
|
144
|
+
// the stream names as a transport failure.
|
|
145
|
+
const streamed = (0, refusals_1.streamRefusal)(text);
|
|
146
|
+
if (streamed)
|
|
147
|
+
this.refuse(streamed, status);
|
|
124
148
|
throw new errors_1.ClawdeConnectionError(`Proxy answered ${status} with a body that is not JSON: ${text}`);
|
|
125
149
|
}
|
|
126
150
|
const normalized = (0, schema_enforcer_1.normalizeResponse)(json, this.provider);
|
|
127
|
-
// A refusal answered as an assistant turn
|
|
151
|
+
// A refusal answered as an assistant turn: a withheld tool call, a
|
|
152
|
+
// withheld body, or the cost-prediction gate.
|
|
128
153
|
const content = normalized.choices?.[0]?.message?.content;
|
|
129
|
-
const answered = (0, refusals_1.headerRefusal)(refusedBy, typeof content === 'string' ? content : '');
|
|
130
|
-
if (answered)
|
|
131
|
-
this.
|
|
132
|
-
throw new errors_1.ClawdeBlockedError(answered.verdict, answered.code, status, answered.message);
|
|
133
|
-
}
|
|
154
|
+
const answered = (0, refusals_1.headerRefusal)(refusedBy, refusedRule, typeof content === 'string' ? content : '');
|
|
155
|
+
if (answered)
|
|
156
|
+
this.refuse(answered, status);
|
|
134
157
|
normalized.verdict = 'allow';
|
|
158
|
+
if (upstream)
|
|
159
|
+
normalized.upstream = upstream;
|
|
135
160
|
return normalized;
|
|
136
161
|
}
|
|
137
162
|
const refusal = (0, refusals_1.parseRefusal)(status, text);
|
|
138
|
-
if (refusal)
|
|
139
|
-
this.
|
|
140
|
-
throw new errors_1.ClawdeBlockedError(refusal.verdict, refusal.code, status, refusal.message);
|
|
141
|
-
}
|
|
163
|
+
if (refusal)
|
|
164
|
+
this.refuse(refusal, status, retryAfter);
|
|
142
165
|
lastError = `HTTP error ${status}: ${text}`;
|
|
143
166
|
// A 4xx that is not a refusal (bad key, malformed body) fails the same
|
|
144
|
-
// way every time; only a 5xx is worth another attempt
|
|
167
|
+
// way every time; only a 5xx is worth another attempt — and not one the
|
|
168
|
+
// proxy already retried upstream, which another round from here would
|
|
169
|
+
// only multiply.
|
|
145
170
|
if (status < 500)
|
|
146
171
|
throw new errors_1.ClawdeConnectionError(lastError);
|
|
172
|
+
if (upstream) {
|
|
173
|
+
throw new errors_1.ClawdeConnectionError(`${lastError} (the proxy already made ${upstream.attempts} upstream calls)`);
|
|
174
|
+
}
|
|
147
175
|
}
|
|
148
176
|
throw new errors_1.ClawdeConnectionError(`Request failed after ${maxAttempts} attempts. Last error: ${lastError}`);
|
|
149
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* The session to send as `x-session-id`, or null to send none.
|
|
180
|
+
*
|
|
181
|
+
* A session id from the environment (`INTUTIC_SESSION_ID`, or the sync
|
|
182
|
+
* daemon's config) is the session that started this process, and its owner
|
|
183
|
+
* reports its context, so it is used as is. Otherwise, when the working
|
|
184
|
+
* directory is a git repository, this registers a session carrying its
|
|
185
|
+
* repository, branch and commit (`POST /api/v1/sessions`, as the sync
|
|
186
|
+
* daemon does), so cost per branch, commit and pull request includes this
|
|
187
|
+
* client's calls. Only with an Intutic virtual key: any other key is a
|
|
188
|
+
* provider's, and it is never sent to the control plane. `autoContext:
|
|
189
|
+
* false` turns this off. Best effort: a control plane that cannot be
|
|
190
|
+
* reached or refuses costs the attribution, never the call.
|
|
191
|
+
*/
|
|
192
|
+
async openSession() {
|
|
193
|
+
if (!this.autoContext)
|
|
194
|
+
return null;
|
|
195
|
+
const context = await (0, context_resolver_1.resolveContext)();
|
|
196
|
+
if (context.sessionId)
|
|
197
|
+
return context.sessionId;
|
|
198
|
+
if (!this.apiKey.startsWith('vk_'))
|
|
199
|
+
return null;
|
|
200
|
+
const git = await (0, git_context_1.resolveGitContext)(context.workingDirectory ?? process.cwd(), context.gitBranch);
|
|
201
|
+
if (Object.keys(git).length === 0)
|
|
202
|
+
return null;
|
|
203
|
+
try {
|
|
204
|
+
// whoami first, always: the repository goes only to a control plane
|
|
205
|
+
// that accepted the key. A workspace id from the environment proves
|
|
206
|
+
// nothing about the key, and the session route only takes the key's own.
|
|
207
|
+
const { workspaceId } = await this.controlPlane('GET', '/api/v1/auth/me');
|
|
208
|
+
const session = await this.controlPlane('POST', '/api/v1/sessions', {
|
|
209
|
+
workspaceId,
|
|
210
|
+
harnessType: exports.SDK_HARNESS,
|
|
211
|
+
...git,
|
|
212
|
+
});
|
|
213
|
+
return session.sessionId ?? null;
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
if (process.env.INTUTIC_DEBUG === 'true') {
|
|
217
|
+
console.warn(`[Clawde SDK] No session registered; calls carry no git context: ${err instanceof Error ? err.message : String(err)}`);
|
|
218
|
+
}
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async controlPlane(method, path, body) {
|
|
223
|
+
const res = await fetch(`${this.controlPlaneUrl}${path}`, {
|
|
224
|
+
method,
|
|
225
|
+
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${this.apiKey}` },
|
|
226
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
227
|
+
signal: AbortSignal.timeout(5_000),
|
|
228
|
+
});
|
|
229
|
+
if (!res.ok)
|
|
230
|
+
throw new Error(`${method} ${path} answered ${res.status}`);
|
|
231
|
+
return (await res.json());
|
|
232
|
+
}
|
|
233
|
+
/** Fires the refusal's event, then throws it. */
|
|
234
|
+
refuse(refusal, status, retryAfter = null) {
|
|
235
|
+
const seconds = retryAfter !== null && /^\d+$/.test(retryAfter.trim()) ? Number(retryAfter.trim()) : undefined;
|
|
236
|
+
this.eventEmitter.emit(refusal.verdict, { ...refusal, status, ...(seconds !== undefined ? { retryAfterSeconds: seconds } : {}) });
|
|
237
|
+
throw new errors_1.ClawdeBlockedError(refusal.verdict, refusal.code, status, refusal.message, refusal.ruleId, seconds);
|
|
238
|
+
}
|
|
150
239
|
}
|
|
151
240
|
exports.ClawdeClient = ClawdeClient;
|
|
152
241
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAUA,qCAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|