@intutic/clawde 2.0.0 → 2.1.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 CHANGED
@@ -10,11 +10,12 @@ npm install @intutic/clawde
10
10
 
11
11
  ## Features
12
12
 
13
- - **Context Resolution:** Automatically detects current Git branch, PR, CI variables, and parses sync-daemon configurations (`~/.intutic/config.json`).
14
- - **Pre-flight Budget Gating:** Checks remaining session spend limits before calling LLM endpoints.
15
- - **Circuit Breaker:** Wraps tasks with strict fallback parameters to isolate execution failures.
16
- - **Schema Normalization:** Intercepts and translates Anthropic payloads to OpenAI structures.
17
- - **Policy Callbacks:** Simple event subscriptions for policy execution events (e.g. `hijack`, `kill`).
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
+ - **Verdict Events:** `client.on('kill' | 'reask' | 'hold', ...)` fires on a refusal, before `chat()` throws. See the [SDK reference](https://docs.intutic.ai/reference/clawde-sdk#_5-verdicts-and-errors) for every refusal code.
15
+ - **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
+ - **Budget Check:** `checkBudget()` reports whether the workspace has budget left, from the control plane's `GET /api/v1/budget`.
17
+ - **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
+ - **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.
18
19
  - **Control-Plane Management (`ControlPlaneClient`):** Org signup, team/workspace creation, gateway registration and assignment, and provider-credential provisioning — the CLI's management surface, callable programmatically. See the [SDK reference](https://docs.intutic.ai/reference/clawde-sdk#control-plane-management-controlplaneclient).
19
20
 
20
21
  ## License
@@ -18,6 +18,5 @@ export declare class BudgetChecker {
18
18
  * for API/cache-behavior compatibility with callers already using them.
19
19
  */
20
20
  checkBudget(model: string, estimatedTokens: number): Promise<BudgetCheckResult>;
21
- updateCachedBudget(model: string, estimatedTokens: number, remainingUsd: number, allowed: boolean): void;
22
21
  }
23
22
  //# sourceMappingURL=budget-checker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"budget-checker.d.ts","sourceRoot":"","sources":["../src/budget-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAc3C,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,MAAM,CAAQ;gBAEV,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKnD;;;;;;;;;;;OAWG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsCrF,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CAOzG"}
1
+ {"version":3,"file":"budget-checker.d.ts","sourceRoot":"","sources":["../src/budget-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAc3C,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,MAAM,CAAQ;gBAEV,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKnD;;;;;;;;;;;OAWG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAoC7F"}
@@ -56,14 +56,6 @@ class BudgetChecker {
56
56
  throw new errors_1.ClawdeConnectionError(`Could not reach control-plane budget endpoint: ${err.message}`);
57
57
  }
58
58
  }
59
- // Helper to manually update/pre-populate budget cache from response headers
60
- updateCachedBudget(model, estimatedTokens, remainingUsd, allowed) {
61
- const cacheKey = `${model}:${estimatedTokens}`;
62
- this.cache.set(cacheKey, {
63
- result: { allowed, remaining_usd: remainingUsd },
64
- timestamp: Date.now(),
65
- });
66
- }
67
59
  }
68
60
  exports.BudgetChecker = BudgetChecker;
69
61
  //# sourceMappingURL=budget-checker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"budget-checker.js","sourceRoot":"","sources":["../src/budget-checker.ts"],"names":[],"mappings":";;;AACA,qCAAgD;AAahD,MAAa,aAAa;IAChB,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAA;IACrC,QAAQ,GAAG,KAAK,CAAA,CAAC,UAAU;IAC3B,eAAe,CAAQ;IACvB,MAAM,CAAQ;IAEtB,YAAY,eAAuB,EAAE,MAAc;QACjD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,eAAuB;QAC7D,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,eAAe,EAAE,CAAA;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEvC,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrD,OAAO,MAAM,CAAC,MAAM,CAAA;QACtB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,gBAAgB,EAAE;gBACpE,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACxC,QAAQ,EAAE,kBAAkB;iBAC7B;aACF,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YACxE,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0B,CAAA;YAC7D,MAAM,MAAM,GAAsB;gBAChC,OAAO,EAAE,IAAI,CAAC,oBAAoB,GAAG,CAAC;gBACtC,aAAa,EAAE,IAAI,CAAC,oBAAoB;gBACxC,MAAM,EAAE,IAAI,CAAC,eAAe;oBAC1B,CAAC,CAAC,qDAAqD;oBACvD,CAAC,CAAC,SAAS;aACd,CAAA;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;YACpD,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,8BAAqB,CAAC,kDAAkD,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QAClG,CAAC;IACH,CAAC;IAED,4EAA4E;IACrE,kBAAkB,CAAC,KAAa,EAAE,eAAuB,EAAE,YAAoB,EAAE,OAAgB;QACtG,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,eAAe,EAAE,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;YACvB,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE;YAChD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;CACF;AApED,sCAoEC"}
1
+ {"version":3,"file":"budget-checker.js","sourceRoot":"","sources":["../src/budget-checker.ts"],"names":[],"mappings":";;;AACA,qCAAgD;AAahD,MAAa,aAAa;IAChB,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAA;IACrC,QAAQ,GAAG,KAAK,CAAA,CAAC,UAAU;IAC3B,eAAe,CAAQ;IACvB,MAAM,CAAQ;IAEtB,YAAY,eAAuB,EAAE,MAAc;QACjD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,eAAuB;QAC7D,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,eAAe,EAAE,CAAA;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEvC,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrD,OAAO,MAAM,CAAC,MAAM,CAAA;QACtB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,gBAAgB,EAAE;gBACpE,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACxC,QAAQ,EAAE,kBAAkB;iBAC7B;aACF,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YACxE,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0B,CAAA;YAC7D,MAAM,MAAM,GAAsB;gBAChC,OAAO,EAAE,IAAI,CAAC,oBAAoB,GAAG,CAAC;gBACtC,aAAa,EAAE,IAAI,CAAC,oBAAoB;gBACxC,MAAM,EAAE,IAAI,CAAC,eAAe;oBAC1B,CAAC,CAAC,qDAAqD;oBACvD,CAAC,CAAC,SAAS;aACd,CAAA;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;YACpD,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,8BAAqB,CAAC,kDAAkD,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QAClG,CAAC;IACH,CAAC;CACF;AA3DD,sCA2DC"}
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG/C,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAK;gBAEP,MAAM,EAAE,GAAG;IAIhB,IAAI,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GAClC,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;CAoDxC"}
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG/C,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAK;gBAEP,MAAM,EAAE,GAAG;IAIhB,IAAI,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GAClC,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;CAoCxC"}
@@ -10,43 +10,29 @@ class CircuitBreaker {
10
10
  wrap(toolName, options = {}) {
11
11
  const failOpen = options.failOpen ?? false;
12
12
  return async (fn) => {
13
- // 1. Pre-Check: Context & pre-flight budget validation
14
- try {
15
- const context = await this.client.resolveContext();
16
- // If maxCostUsd is specified, check against current budget limit or remaining
17
- if (options.maxCostUsd !== undefined) {
18
- // Pre-flight check
13
+ // 1. Pre-check: workspace budget, when asked for
14
+ if (options.requireBudget || options.maxCostUsd !== undefined) {
15
+ try {
19
16
  const budget = await this.client.checkBudget('default', 1);
20
17
  if (!budget.allowed) {
21
18
  throw new errors_1.ClawdeVerdictError('kill', `Circuit breaker tripped for tool '${toolName}': budget exceeded. Remaining: $${budget.remaining_usd}`);
22
19
  }
23
20
  }
24
- }
25
- catch (err) {
26
- if (!failOpen) {
27
- throw err;
28
- }
29
- // If failOpen is true, we log the error and continue execution
30
- if (process.env.INTUTIC_DEBUG === 'true') {
31
- console.warn(`[Clawde SDK] Circuit breaker pre-check failed (failing open): ${err.message}`);
21
+ catch (err) {
22
+ if (!failOpen) {
23
+ throw err;
24
+ }
25
+ if (process.env.INTUTIC_DEBUG === 'true') {
26
+ console.warn(`[Clawde SDK] Circuit breaker pre-check failed (failing open): ${err.message}`);
27
+ }
32
28
  }
33
29
  }
34
- // 2. Execute the function
30
+ // 2. Run the function. A refusal from chat() arrives as a thrown
31
+ // ClawdeBlockedError, so fail-closed needs nothing beyond rethrowing.
35
32
  try {
36
- const result = await fn();
37
- // 3. Post-Check: If the result is a ChatResponse (or has verdict headers), inspect it
38
- if (result && typeof result === 'object') {
39
- const res = result;
40
- if (res.verdict === 'kill') {
41
- throw new errors_1.ClawdeVerdictError('kill', `Execution blocked by governance policy (Verdict: KILL)`);
42
- }
43
- }
44
- return result;
33
+ return await fn();
45
34
  }
46
35
  catch (err) {
47
- if (err instanceof errors_1.ClawdeVerdictError && !failOpen) {
48
- throw err;
49
- }
50
36
  if (!failOpen) {
51
37
  throw err;
52
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":";;;AACA,qCAA6C;AAE7C,MAAa,cAAc;IACjB,MAAM,CAAK;IAEnB,YAAY,MAAW;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEM,IAAI,CACT,QAAgB,EAChB,UAAiC,EAAE;QAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAA;QAE1C,OAAO,KAAK,EAAE,EAAoB,EAAc,EAAE;YAChD,uDAAuD;YACvD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;gBAClD,8EAA8E;gBAC9E,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACrC,mBAAmB;oBACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;oBAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,MAAM,IAAI,2BAAkB,CAAC,MAAM,EAAE,qCAAqC,QAAQ,mCAAmC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;oBAC9I,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,GAAG,CAAA;gBACX,CAAC;gBACD,+DAA+D;gBAC/D,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;oBACzC,OAAO,CAAC,IAAI,CAAC,iEAAiE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC9F,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;gBAEzB,sFAAsF;gBACtF,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACzC,MAAM,GAAG,GAAG,MAAa,CAAA;oBACzB,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;wBAC3B,MAAM,IAAI,2BAAkB,CAAC,MAAM,EAAE,wDAAwD,CAAC,CAAA;oBAChG,CAAC;gBACH,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,GAAG,YAAY,2BAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnD,MAAM,GAAG,CAAA;gBACX,CAAC;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,GAAG,CAAA;gBACX,CAAC;gBACD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;oBACzC,OAAO,CAAC,IAAI,CAAC,iEAAiE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC9F,CAAC;gBACD,OAAO,IAAW,CAAA,CAAC,kCAAkC;YACvD,CAAC;QACH,CAAC,CAAA;IACH,CAAC;CACF;AA9DD,wCA8DC"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":";;;AACA,qCAA6C;AAE7C,MAAa,cAAc;IACjB,MAAM,CAAK;IAEnB,YAAY,MAAW;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEM,IAAI,CACT,QAAgB,EAChB,UAAiC,EAAE;QAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAA;QAE1C,OAAO,KAAK,EAAE,EAAoB,EAAc,EAAE;YAChD,iDAAiD;YACjD,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC9D,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;oBAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,MAAM,IAAI,2BAAkB,CAAC,MAAM,EAAE,qCAAqC,QAAQ,mCAAmC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;oBAC9I,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,GAAG,CAAA;oBACX,CAAC;oBACD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;wBACzC,OAAO,CAAC,IAAI,CAAC,iEAAiE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;oBAC9F,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iEAAiE;YACjE,sEAAsE;YACtE,IAAI,CAAC;gBACH,OAAO,MAAM,EAAE,EAAE,CAAA;YACnB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,GAAG,CAAA;gBACX,CAAC;gBACD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;oBACzC,OAAO,CAAC,IAAI,CAAC,iEAAiE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC9F,CAAC;gBACD,OAAO,IAAW,CAAA,CAAC,kCAAkC;YACvD,CAAC;QACH,CAAC,CAAA;IACH,CAAC;CACF;AA9CD,wCA8CC"}
package/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ClawdeClientOptions, ChatParams, ChatResponse, ResolvedContext, BudgetCheckResult, EventCallback, CircuitBreakerOptions } from './types';
1
+ import { ClawdeClientOptions, ChatParams, ChatResponse, ResolvedContext, BudgetCheckResult, EventCallback, CircuitBreakerOptions, VerdictEvent } from './types';
2
2
  export declare class ClawdeClient {
3
3
  private apiKey;
4
4
  private baseUrl;
@@ -13,11 +13,19 @@ export declare class ClawdeClient {
13
13
  private circuitBreakerWrapper;
14
14
  private eventEmitter;
15
15
  constructor(options: ClawdeClientOptions);
16
- on(event: 'hijack' | 'enhance' | 'kill' | 'bypass', callback: EventCallback): void;
16
+ on(event: VerdictEvent, callback: EventCallback): void;
17
17
  off(event: string, callback: EventCallback): void;
18
18
  checkBudget(model: string, estimatedTokens: number): Promise<BudgetCheckResult>;
19
19
  resolveContext(): Promise<ResolvedContext>;
20
20
  circuitBreaker<T>(toolName: string, options?: CircuitBreakerOptions): (fn: () => Promise<T>) => Promise<T>;
21
+ /**
22
+ * Send a chat request through the proxy.
23
+ *
24
+ * Resolves with `verdict: 'allow'` when the proxy let the request through. A
25
+ * governance refusal fires the matching event and rejects with
26
+ * `ClawdeBlockedError`, unretried. Transport failures, timeouts and 5xx
27
+ * answers are retried; anything else rejects with `ClawdeConnectionError`.
28
+ */
21
29
  chat(params: ChatParams): Promise<ChatResponse>;
22
30
  }
23
31
  //# sourceMappingURL=client.d.ts.map
@@ -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,EACtB,MAAM,SAAS,CAAA;AAShB,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;gBAE5B,OAAO,EAAE,mBAAmB;IAuBjC,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIlF,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;IAK1B,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;CAwG7D"}
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;AAUhB,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;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;;;;;;;OAOG;IACU,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;CAqE7D"}
package/dist/client.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClawdeClient = void 0;
4
4
  const errors_1 = require("./errors");
5
+ const refusals_1 = require("./refusals");
5
6
  const schema_enforcer_1 = require("./schema-enforcer");
6
7
  const context_resolver_1 = require("./context-resolver");
7
8
  const budget_checker_1 = require("./budget-checker");
@@ -62,89 +63,79 @@ class ClawdeClient {
62
63
  circuitBreaker(toolName, options = {}) {
63
64
  return this.circuitBreakerWrapper.wrap(toolName, options);
64
65
  }
65
- // Chat completion endpoint wrapper
66
+ /**
67
+ * Send a chat request through the proxy.
68
+ *
69
+ * Resolves with `verdict: 'allow'` when the proxy let the request through. A
70
+ * governance refusal fires the matching event and rejects with
71
+ * `ClawdeBlockedError`, unretried. Transport failures, timeouts and 5xx
72
+ * answers are retried; anything else rejects with `ClawdeConnectionError`.
73
+ */
66
74
  async chat(params) {
67
- // 1. Resolve context
68
- const context = await this.resolveContext();
69
- // 2. Normalize payload based on provider
70
- const requestPayload = (0, schema_enforcer_1.normalizeRequest)(params, this.provider);
71
- // 3. Make the API request with headers
72
- let lastError = null;
75
+ const anthropic = this.provider === 'anthropic';
76
+ // The proxy picks the wire format by route: an Anthropic Messages body
77
+ // sent to /v1/chat/completions is parsed as an OpenAI one.
78
+ const url = `${this.baseUrl}${anthropic ? '/v1/messages' : '/v1/chat/completions'}`;
79
+ const headers = {
80
+ 'Content-Type': 'application/json',
81
+ ...(anthropic
82
+ ? { 'x-api-key': this.apiKey, 'anthropic-version': '2023-06-01' }
83
+ : { 'Authorization': `Bearer ${this.apiKey}` }),
84
+ // Without these the proxy sees graph_id == session_id, treats every
85
+ // request as a graph of one, and skips membership, fleet spend and
86
+ // node counting entirely.
87
+ ...(0, graph_identity_1.identityHeaders)(this.identity),
88
+ };
89
+ const body = JSON.stringify((0, schema_enforcer_1.normalizeRequest)(params, this.provider));
90
+ let lastError = '';
73
91
  const maxAttempts = this.retries + 1;
74
92
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
93
+ if (attempt > 1) {
94
+ if (process.env.INTUTIC_DEBUG === 'true') {
95
+ console.warn(`[Clawde SDK] Attempt ${attempt - 1} failed, retrying... Error: ${lastError}`);
96
+ }
97
+ await new Promise((resolve) => setTimeout(resolve, (attempt - 1) * 100));
98
+ }
75
99
  const controller = new AbortController();
76
100
  const timer = setTimeout(() => controller.abort(), this.timeout);
101
+ let status;
102
+ let text;
77
103
  try {
78
- const headers = {
79
- 'Content-Type': 'application/json',
80
- 'Authorization': `Bearer ${this.apiKey}`,
81
- 'X-Intutic-Context': JSON.stringify(context),
82
- // Without these the proxy sees graph_id == session_id, treats every
83
- // request as a graph of one, and skips membership, fleet spend and
84
- // node counting entirely.
85
- ...(0, graph_identity_1.identityHeaders)(this.identity),
86
- };
87
- if (params.max_cost_usd !== undefined) {
88
- headers['X-Intutic-Cost-Limit'] = String(params.max_cost_usd);
89
- }
90
- if (params.sensitivity_tier !== undefined) {
91
- headers['X-Intutic-Sensitivity'] = String(params.sensitivity_tier);
92
- }
93
- const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {
94
- method: 'POST',
95
- headers,
96
- body: JSON.stringify(requestPayload),
97
- signal: controller.signal,
98
- });
99
- clearTimeout(timer);
100
- if (!response.ok) {
101
- throw new Error(`HTTP error ${response.status}: ${await response.text()}`);
102
- }
103
- const json = await response.json();
104
- const normalized = (0, schema_enforcer_1.normalizeResponse)(json, this.provider);
105
- // 4. Extract Intutic response headers
106
- const verdictHeader = response.headers.get('x-intutic-verdict') || 'allow';
107
- const budgetRemainingHeader = response.headers.get('x-intutic-budget-remaining');
108
- const budgetPctHeader = response.headers.get('x-intutic-budget-pct');
109
- normalized.verdict = verdictHeader;
110
- if (budgetRemainingHeader) {
111
- normalized.budgetRemainingUsd = parseFloat(budgetRemainingHeader);
112
- }
113
- if (budgetPctHeader) {
114
- normalized.budgetPctUsed = parseFloat(budgetPctHeader);
115
- }
116
- // 5. Update local budget cache
117
- if (normalized.budgetRemainingUsd !== undefined) {
118
- this.budgetChecker.updateCachedBudget(params.model, params.messages.length, // approximation
119
- normalized.budgetRemainingUsd, verdictHeader !== 'kill');
120
- }
121
- // 6. Trigger event emitters
122
- if (normalized.verdict && normalized.verdict !== 'allow') {
123
- this.eventEmitter.emit(normalized.verdict, normalized);
124
- }
125
- // 7. Policy enforcement
126
- if (normalized.verdict === 'kill') {
127
- throw new errors_1.ClawdeVerdictError('kill', 'Request blocked by policy (Verdict: KILL)');
128
- }
129
- return normalized;
104
+ const response = await fetch(url, { method: 'POST', headers, body, signal: controller.signal });
105
+ status = response.status;
106
+ text = await response.text();
130
107
  }
131
108
  catch (err) {
109
+ lastError = err instanceof Error ? err.message : String(err);
110
+ continue;
111
+ }
112
+ finally {
132
113
  clearTimeout(timer);
133
- lastError = err;
134
- if (err instanceof errors_1.ClawdeVerdictError) {
135
- throw err; // Do not retry on explicit policy blocks
114
+ }
115
+ if (status >= 200 && status < 300) {
116
+ let json;
117
+ try {
118
+ json = JSON.parse(text);
136
119
  }
137
- if (attempt < maxAttempts) {
138
- if (process.env.INTUTIC_DEBUG === 'true') {
139
- console.warn(`[Clawde SDK] Attempt ${attempt} failed, retrying... Error: ${err.message}`);
140
- }
141
- // backoff delay
142
- await new Promise((resolve) => setTimeout(resolve, attempt * 100));
143
- continue;
120
+ catch {
121
+ throw new errors_1.ClawdeConnectionError(`Proxy answered ${status} with a body that is not JSON: ${text}`);
144
122
  }
123
+ const normalized = (0, schema_enforcer_1.normalizeResponse)(json, this.provider);
124
+ normalized.verdict = 'allow';
125
+ return normalized;
126
+ }
127
+ const refusal = (0, refusals_1.parseRefusal)(status, text);
128
+ if (refusal) {
129
+ this.eventEmitter.emit(refusal.verdict, { ...refusal, status });
130
+ throw new errors_1.ClawdeBlockedError(refusal.verdict, refusal.code, status, refusal.message);
145
131
  }
132
+ lastError = `HTTP error ${status}: ${text}`;
133
+ // A 4xx that is not a refusal (bad key, malformed body) fails the same
134
+ // way every time; only a 5xx is worth another attempt.
135
+ if (status < 500)
136
+ throw new errors_1.ClawdeConnectionError(lastError);
146
137
  }
147
- throw new errors_1.ClawdeConnectionError(`Request failed after ${maxAttempts} attempts. Last error: ${lastError.message}`);
138
+ throw new errors_1.ClawdeConnectionError(`Request failed after ${maxAttempts} attempts. Last error: ${lastError}`);
148
139
  }
149
140
  }
150
141
  exports.ClawdeClient = ClawdeClient;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,14 +1,28 @@
1
+ import type { RefusalVerdict } from './types';
1
2
  export declare class ClawdeError extends Error {
2
3
  constructor(message: string);
3
4
  }
5
+ /** The proxy is unreachable, timed out, or answered with an error that is not a governance refusal. */
4
6
  export declare class ClawdeConnectionError extends ClawdeError {
5
7
  constructor(message: string);
6
8
  }
7
9
  export declare class ClawdeBudgetExceededError extends ClawdeError {
8
10
  constructor(message: string);
9
11
  }
12
+ /** A governance verdict stopped the call: a proxy refusal (`ClawdeBlockedError`) or the circuit breaker's budget check. */
10
13
  export declare class ClawdeVerdictError extends ClawdeError {
11
14
  verdict: string;
12
15
  constructor(verdict: string, message: string);
13
16
  }
17
+ /**
18
+ * The proxy refused the request: a policy block, a reask, a loop run held for
19
+ * review, a spend cap or a DLP block. Never retried — the same request would be
20
+ * refused again. `code` is the proxy's error code and `message` its reason.
21
+ */
22
+ export declare class ClawdeBlockedError extends ClawdeVerdictError {
23
+ verdict: RefusalVerdict;
24
+ readonly code: string;
25
+ readonly status: number;
26
+ constructor(verdict: RefusalVerdict, code: string, status: number, message: string);
27
+ }
14
28
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,qBAAsB,SAAQ,WAAW;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,yBAA0B,SAAQ,WAAW;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,kBAAmB,SAAQ,WAAW;IAC1C,OAAO,EAAE,MAAM,CAAA;gBAEV,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK7C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED,uGAAuG;AACvG,qBAAa,qBAAsB,SAAQ,WAAW;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,yBAA0B,SAAQ,WAAW;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED,2HAA2H;AAC3H,qBAAa,kBAAmB,SAAQ,WAAW;IAC1C,OAAO,EAAE,MAAM,CAAA;gBAEV,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK7C;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,kBAAkB;IACzC,OAAO,EAAE,cAAc,CAAA;IACtC,SAAgB,IAAI,EAAE,MAAM,CAAA;IAC5B,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAElB,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAMnF"}
package/dist/errors.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClawdeVerdictError = exports.ClawdeBudgetExceededError = exports.ClawdeConnectionError = exports.ClawdeError = void 0;
3
+ exports.ClawdeBlockedError = exports.ClawdeVerdictError = exports.ClawdeBudgetExceededError = exports.ClawdeConnectionError = exports.ClawdeError = void 0;
4
4
  class ClawdeError extends Error {
5
5
  constructor(message) {
6
6
  super(message);
@@ -8,6 +8,7 @@ class ClawdeError extends Error {
8
8
  }
9
9
  }
10
10
  exports.ClawdeError = ClawdeError;
11
+ /** The proxy is unreachable, timed out, or answered with an error that is not a governance refusal. */
11
12
  class ClawdeConnectionError extends ClawdeError {
12
13
  constructor(message) {
13
14
  super(message);
@@ -22,6 +23,7 @@ class ClawdeBudgetExceededError extends ClawdeError {
22
23
  }
23
24
  }
24
25
  exports.ClawdeBudgetExceededError = ClawdeBudgetExceededError;
26
+ /** A governance verdict stopped the call: a proxy refusal (`ClawdeBlockedError`) or the circuit breaker's budget check. */
25
27
  class ClawdeVerdictError extends ClawdeError {
26
28
  verdict;
27
29
  constructor(verdict, message) {
@@ -31,4 +33,20 @@ class ClawdeVerdictError extends ClawdeError {
31
33
  }
32
34
  }
33
35
  exports.ClawdeVerdictError = ClawdeVerdictError;
36
+ /**
37
+ * The proxy refused the request: a policy block, a reask, a loop run held for
38
+ * review, a spend cap or a DLP block. Never retried — the same request would be
39
+ * refused again. `code` is the proxy's error code and `message` its reason.
40
+ */
41
+ class ClawdeBlockedError extends ClawdeVerdictError {
42
+ code;
43
+ status;
44
+ constructor(verdict, code, status, message) {
45
+ super(verdict, message);
46
+ this.name = 'ClawdeBlockedError';
47
+ this.code = code;
48
+ this.status = status;
49
+ }
50
+ }
51
+ exports.ClawdeBlockedError = ClawdeBlockedError;
34
52
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AALD,kCAKC;AAED,MAAa,qBAAsB,SAAQ,WAAW;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AALD,sDAKC;AAED,MAAa,yBAA0B,SAAQ,WAAW;IACxD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,CAAC;CACF;AALD,8DAKC;AAED,MAAa,kBAAmB,SAAQ,WAAW;IAC1C,OAAO,CAAQ;IAEtB,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF;AARD,gDAQC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AALD,kCAKC;AAED,uGAAuG;AACvG,MAAa,qBAAsB,SAAQ,WAAW;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AALD,sDAKC;AAED,MAAa,yBAA0B,SAAQ,WAAW;IACxD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,CAAC;CACF;AALD,8DAKC;AAED,2HAA2H;AAC3H,MAAa,kBAAmB,SAAQ,WAAW;IAC1C,OAAO,CAAQ;IAEtB,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF;AARD,gDAQC;AAED;;;;GAIG;AACH,MAAa,kBAAmB,SAAQ,kBAAkB;IAExC,IAAI,CAAQ;IACZ,MAAM,CAAQ;IAE9B,YAAY,OAAuB,EAAE,IAAY,EAAE,MAAc,EAAE,OAAe;QAChF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAXD,gDAWC"}
@@ -1,7 +1,7 @@
1
- import { EventCallback } from './types';
1
+ import { EventCallback, VerdictEvent } from './types';
2
2
  export declare class ClawdeEventEmitter {
3
3
  private emitter;
4
- on(event: 'hijack' | 'enhance' | 'kill' | 'bypass', callback: EventCallback): void;
4
+ on(event: VerdictEvent, callback: EventCallback): void;
5
5
  off(event: string, callback: EventCallback): void;
6
6
  emit(event: string, data: any): void;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAqB;IAE7B,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIlF,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIjD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;CAG5C"}
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAErD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAqB;IAE7B,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAItD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIjD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;CAG5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAGrC,MAAa,kBAAkB;IACrB,OAAO,GAAG,IAAI,qBAAY,EAAE,CAAA;IAE7B,EAAE,CAAC,KAA+C,EAAE,QAAuB;QAChF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAClC,CAAC;IAEM,GAAG,CAAC,KAAa,EAAE,QAAuB;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,IAAS;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;CACF;AAdD,gDAcC"}
1
+ {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAGrC,MAAa,kBAAkB;IACrB,OAAO,GAAG,IAAI,qBAAY,EAAE,CAAA;IAE7B,EAAE,CAAC,KAAmB,EAAE,QAAuB;QACpD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAClC,CAAC;IAEM,GAAG,CAAC,KAAa,EAAE,QAAuB;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,IAAS;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;CACF;AAdD,gDAcC"}
@@ -0,0 +1,27 @@
1
+ import type { RefusalVerdict } from './types';
2
+ /**
3
+ * The proxy's governance refusals: the `error.type` of its JSON error body
4
+ * (`{"error": {"type", "message"}}`, `json_error` in packages/proxy/src/proxy.rs),
5
+ * the status it always pairs that type with, and the verdict it represents.
6
+ *
7
+ * Matching on the pair rather than the status alone matters because the same
8
+ * statuses also carry errors that are not decisions: a provider's own 429 rate
9
+ * limit, a 403 for a key used against the wrong workspace, a 400 for a malformed
10
+ * body. Those are not refusals and must not be reported as one.
11
+ *
12
+ * `__tests__/refusals.test.ts` checks this table against proxy.rs, so a refusal
13
+ * the proxy adds or renames fails the build instead of silently turning back
14
+ * into a retried connection error.
15
+ */
16
+ export declare const PROXY_REFUSALS: Readonly<Record<string, {
17
+ status: number;
18
+ verdict: RefusalVerdict;
19
+ }>>;
20
+ export interface ProxyRefusal {
21
+ verdict: RefusalVerdict;
22
+ code: string;
23
+ message: string;
24
+ }
25
+ /** The refusal an error response carries, or `null` when it is any other kind of failure. */
26
+ export declare function parseRefusal(status: number, body: string): ProxyRefusal | null;
27
+ //# sourceMappingURL=refusals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refusals.d.ts","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC,CAUhG,CAAA;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAe9E"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROXY_REFUSALS = void 0;
4
+ exports.parseRefusal = parseRefusal;
5
+ /**
6
+ * The proxy's governance refusals: the `error.type` of its JSON error body
7
+ * (`{"error": {"type", "message"}}`, `json_error` in packages/proxy/src/proxy.rs),
8
+ * the status it always pairs that type with, and the verdict it represents.
9
+ *
10
+ * Matching on the pair rather than the status alone matters because the same
11
+ * statuses also carry errors that are not decisions: a provider's own 429 rate
12
+ * limit, a 403 for a key used against the wrong workspace, a 400 for a malformed
13
+ * body. Those are not refusals and must not be reported as one.
14
+ *
15
+ * `__tests__/refusals.test.ts` checks this table against proxy.rs, so a refusal
16
+ * the proxy adds or renames fails the build instead of silently turning back
17
+ * into a retried connection error.
18
+ */
19
+ exports.PROXY_REFUSALS = {
20
+ policy_denied: { status: 403, verdict: 'kill' },
21
+ model_not_allowed: { status: 403, verdict: 'kill' },
22
+ LOOP_RUN_TERMINATED: { status: 403, verdict: 'kill' },
23
+ LOOP_RUN_PENDING_REVIEW: { status: 403, verdict: 'hold' },
24
+ policy_reask: { status: 409, verdict: 'reask' },
25
+ BUDGET_EXCEEDED: { status: 429, verdict: 'kill' },
26
+ OVERAGE_HARD_CAP_EXCEEDED: { status: 429, verdict: 'kill' },
27
+ COST_GATE_EXCEEDED: { status: 402, verdict: 'kill' },
28
+ dlp_policy_violation: { status: 400, verdict: 'kill' },
29
+ };
30
+ /** The refusal an error response carries, or `null` when it is any other kind of failure. */
31
+ function parseRefusal(status, body) {
32
+ let error;
33
+ try {
34
+ error = JSON.parse(body)?.error;
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ if (!error || typeof error.type !== 'string')
40
+ return null;
41
+ const known = exports.PROXY_REFUSALS[error.type];
42
+ if (!known || known.status !== status)
43
+ return null;
44
+ return {
45
+ verdict: known.verdict,
46
+ code: error.type,
47
+ message: typeof error.message === 'string' ? error.message : error.type,
48
+ };
49
+ }
50
+ //# sourceMappingURL=refusals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refusals.js","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":";;;AAmCA,oCAeC;AAhDD;;;;;;;;;;;;;GAaG;AACU,QAAA,cAAc,GAA0E;IACnG,aAAa,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IAC/C,iBAAiB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACnD,mBAAmB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACrD,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACzD,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;IAC/C,eAAe,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACjD,yBAAyB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IAC3D,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACpD,oBAAoB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;CACvD,CAAA;AAQD,6FAA6F;AAC7F,SAAgB,YAAY,CAAC,MAAc,EAAE,IAAY;IACvD,IAAI,KAAwD,CAAA;IAC5D,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACzD,MAAM,KAAK,GAAG,sBAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAClD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;KACxE,CAAA;AACH,CAAC"}
package/dist/types.d.ts CHANGED
@@ -52,12 +52,43 @@ export interface ChatResponse {
52
52
  completion_tokens: number;
53
53
  total_tokens: number;
54
54
  };
55
- verdict?: 'allow' | 'hijack' | 'enhance' | 'kill' | 'bypass';
55
+ /** Always `allow`: a response only comes back when the proxy let the request through. */
56
+ verdict?: Verdict | LegacyVerdict;
57
+ /** @deprecated Never set: the proxy does not report budget on responses. Use `checkBudget()`. */
56
58
  budgetRemainingUsd?: number;
59
+ /** @deprecated Never set: the proxy does not report budget on responses. Use `checkBudget()`. */
57
60
  budgetPctUsed?: number;
58
61
  }
62
+ /**
63
+ * A governance refusal the proxy answered with: `kill` blocks the request, `reask`
64
+ * refuses this attempt and tells the agent to revise it (it escalates to `kill`
65
+ * after repeated attempts), and `hold` pauses a loop run until a human reviews it.
66
+ */
67
+ export type RefusalVerdict = 'kill' | 'reask' | 'hold';
68
+ /** What `chat()` can know about a request: it was let through, or refused. */
69
+ export type Verdict = 'allow' | RefusalVerdict;
70
+ /**
71
+ * @deprecated Never reported. The proxy applies these inside the response and
72
+ * does not tell the client, so no response carries them and no event fires for
73
+ * them. Still accepted so code written against 2.0 compiles; they will be
74
+ * removed in the next major version.
75
+ */
76
+ export type LegacyVerdict = 'hijack' | 'enhance' | 'bypass';
77
+ /** Events `on()` accepts. */
78
+ export type VerdictEvent = RefusalVerdict | LegacyVerdict;
59
79
  export interface CircuitBreakerOptions {
80
+ /**
81
+ * Run `checkBudget()` first and refuse to run the function when the workspace
82
+ * has no budget left. Default: false.
83
+ */
84
+ requireBudget?: boolean;
85
+ /**
86
+ * @deprecated Use `requireBudget: true`. Any value turns the workspace budget
87
+ * check on; the amount is not compared with anything, because nothing reports
88
+ * a call's cost before it is made.
89
+ */
60
90
  maxCostUsd?: number;
91
+ /** @deprecated Ignored: neither the SDK nor the proxy reads a sensitivity tier. */
61
92
  sensitivityTier?: 'low' | 'medium' | 'high' | 'critical';
62
93
  failOpen?: boolean;
63
94
  }
@@ -75,11 +106,18 @@ export interface BudgetCheckResult {
75
106
  remaining_usd: number;
76
107
  reason?: string;
77
108
  }
109
+ /** Called with the refusal before `chat()` throws it as a `ClawdeBlockedError`. */
78
110
  export type EventCallback = (data: {
79
- verdict: 'allow' | 'hijack' | 'enhance' | 'kill' | 'bypass';
111
+ /** One of the `RefusalVerdict` values; typed wider so listeners written against 2.0 compile. */
112
+ verdict: Verdict | LegacyVerdict;
113
+ /** The proxy's error code, e.g. `policy_denied` or `OVERAGE_HARD_CAP_EXCEEDED`. */
114
+ code: string;
115
+ status: number;
116
+ message: string;
117
+ /** @deprecated Never set. */
80
118
  budgetRemainingUsd?: number;
119
+ /** @deprecated Never set. */
81
120
  budgetPctUsed?: number;
82
- [key: string]: any;
83
121
  }) => void | Promise<void>;
84
122
  export interface ControlPlaneClientOptions {
85
123
  apiKey: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAA;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,kBAAkB,EAAE,aAAa,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;IAC9C,OAAO,EAAE,MAAM,GAAG,GAAG,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,GAAG,EAAE,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAA;IACb,WAAW,CAAC,EAAE,GAAG,CAAA;IACjB,eAAe,CAAC,EAAE,GAAG,CAAA;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,WAAW,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;KACtB,EAAE,CAAA;IACH,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAA;QACrB,iBAAiB,EAAE,MAAM,CAAA;QACzB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IAED,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE;IACjC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAI1B,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAA;IACzE,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3E,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAA;IACjF,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAA;IACvD,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,wGAAwG;IACxG,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB,EAAE,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAA;CACzD;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAA;IACb,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAA;IACzD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,GAAG,KAAK,GAAG,SAAS,CAAA;IACvC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC7F,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intutic/clawde",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },