@whittlelabs/sifter 0.22.2 → 0.23.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.
Files changed (3) hide show
  1. package/bin.js +23 -4
  2. package/bin.js.map +2 -2
  3. package/package.json +1 -1
package/bin.js CHANGED
@@ -19873,6 +19873,15 @@ var require_claude_code = __commonJS({
19873
19873
  var progress_1 = require_progress();
19874
19874
  var apply_1 = require_apply();
19875
19875
  var DEFAULT_TIMEOUT = 6e5;
19876
+ function describeClaudeFailure(meta, fallback) {
19877
+ if (!meta)
19878
+ return fallback;
19879
+ const status = meta.apiErrorStatus !== null ? ` (provider HTTP ${meta.apiErrorStatus})` : "";
19880
+ if (meta.detail)
19881
+ return `${meta.detail}${status}`;
19882
+ const subtype = meta.subtype && meta.subtype !== "success" ? `: ${meta.subtype}` : "";
19883
+ return `${fallback}${subtype}${status}`;
19884
+ }
19876
19885
  var ClaudeCodeExecutor = class {
19877
19886
  capability;
19878
19887
  strategies = [loom_1.PROMPT_EXECUTION_STRATEGY];
@@ -20100,7 +20109,7 @@ var require_claude_code = __commonJS({
20100
20109
  try {
20101
20110
  const stream = parseStreamJson(stdout);
20102
20111
  if (stream.resultMeta?.isError) {
20103
- throw new Error(`Claude Code reported ${stream.resultMeta.subtype ?? "an error"} on its terminal event`);
20112
+ throw new Error(describeClaudeFailure(stream.resultMeta, "Claude Code reported a failure"));
20104
20113
  }
20105
20114
  const answerText = stream.finalText ?? stdout;
20106
20115
  const parsed = stream.structuredOutput ?? extractJsonObject(answerText);
@@ -20137,7 +20146,12 @@ var require_claude_code = __commonJS({
20137
20146
  settle(() => reject(err instanceof Error ? err : new Error(String(err))));
20138
20147
  }
20139
20148
  } else {
20140
- settle(() => reject(new Error(`Claude Code exited with code ${code}`)));
20149
+ let meta = null;
20150
+ try {
20151
+ meta = parseStreamJson(stdout).resultMeta;
20152
+ } catch {
20153
+ }
20154
+ settle(() => reject(new Error(describeClaudeFailure(meta, `Claude Code exited with code ${code}`))));
20141
20155
  }
20142
20156
  });
20143
20157
  });
@@ -20232,7 +20246,12 @@ var require_claude_code = __commonJS({
20232
20246
  }
20233
20247
  resultMeta = {
20234
20248
  subtype: typeof event.subtype === "string" ? event.subtype : null,
20235
- isError: event.is_error === true
20249
+ isError: event.is_error === true,
20250
+ // On a failure the CLI puts a human-readable reason in `result` — the
20251
+ // model was unavailable, spend limit hit, and so on. It is the only
20252
+ // place that reason exists, so keep it for the failure message.
20253
+ detail: typeof event.result === "string" && event.result.trim().length > 0 ? event.result.trim() : null,
20254
+ apiErrorStatus: typeof event.api_error_status === "number" ? event.api_error_status : null
20236
20255
  };
20237
20256
  const so = event.structured_output;
20238
20257
  if (so && typeof so === "object" && !Array.isArray(so)) {
@@ -22302,7 +22321,7 @@ var import_path = require("path");
22302
22321
  var import_promises = require("fs/promises");
22303
22322
  var import_yaml = __toESM(require_dist());
22304
22323
  var import_shuttle = __toESM(require_dist5());
22305
- var buildVersion = true ? "0.22.2" : pkg.version;
22324
+ var buildVersion = true ? "0.23.0" : pkg.version;
22306
22325
  var sifterBrand = {
22307
22326
  product: {
22308
22327
  id: "sifter",