@debugbundle/cli 1.5.2 → 1.5.4

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 (2) hide show
  1. package/dist/main.cjs +300 -64
  2. package/package.json +1 -1
package/dist/main.cjs CHANGED
@@ -15405,11 +15405,16 @@ var ServiceSchema = external_exports.object({
15405
15405
  environment: external_exports.string().min(1)
15406
15406
  });
15407
15407
  var CorrelationSchema = external_exports.object({
15408
- request_id: external_exports.string().nullable(),
15409
- trace_id: external_exports.string().nullable(),
15410
- session_id: external_exports.string().nullable(),
15411
- user_id_hash: external_exports.string().nullable()
15412
- }).strict();
15408
+ request_id: external_exports.string().nullable().optional(),
15409
+ trace_id: external_exports.string().nullable().optional(),
15410
+ session_id: external_exports.string().nullable().optional(),
15411
+ user_id_hash: external_exports.string().nullable().optional()
15412
+ }).strict().transform((value) => ({
15413
+ request_id: value.request_id ?? null,
15414
+ trace_id: value.trace_id ?? null,
15415
+ session_id: value.session_id ?? null,
15416
+ user_id_hash: value.user_id_hash ?? null
15417
+ }));
15413
15418
  var InlineProbeDataItemSchema = external_exports.object({
15414
15419
  label: external_exports.string().min(1),
15415
15420
  data: external_exports.record(external_exports.string(), external_exports.unknown()),
@@ -15589,7 +15594,8 @@ var EnvelopeBaseSchema = external_exports.object({
15589
15594
  sdk_version: external_exports.string().min(1),
15590
15595
  service: ServiceSchema,
15591
15596
  occurred_at: external_exports.string().datetime(),
15592
- correlation: CorrelationSchema.optional()
15597
+ correlation: CorrelationSchema.optional(),
15598
+ context: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
15593
15599
  }).strict();
15594
15600
  var EventEnvelopeSchema = external_exports.discriminatedUnion("event_type", [
15595
15601
  EnvelopeBaseSchema.extend({ event_type: external_exports.literal("backend_exception"), payload: BackendExceptionPayloadSchema }),
@@ -15618,6 +15624,7 @@ function createEventEnvelope(input2) {
15618
15624
  session_id: null,
15619
15625
  user_id_hash: null
15620
15626
  },
15627
+ context: input2.context,
15621
15628
  payload: input2.payload
15622
15629
  };
15623
15630
  return EventEnvelopeSchema.parse(candidate);
@@ -15985,8 +15992,8 @@ function buildSkill() {
15985
15992
  "When the user reports a bug, runtime failure, production incident, regression, broken deploy, or unknown error, start here before reading arbitrary source files.",
15986
15993
  "",
15987
15994
  "1. Run `debugbundle doctor --json` to learn whether the project is local-only or connected and whether the local scaffold is healthy.",
15988
- "2. If `debugbundle doctor --json` reports `mode=local-only`, start with `debugbundle incidents --source local --status open --json`.",
15989
- "3. If `debugbundle doctor --json` reports `mode=connected` and the target environment is cloud-enabled, check both `debugbundle incidents --source local --status open --json` and `debugbundle incidents --source cloud --status open --json` unless the user explicitly scoped the issue to local-only development. For user-reported production incidents, check cloud incidents after local incidents and explicitly report whether each source had matches.",
15995
+ "2. If `debugbundle doctor --json` reports `mode=local-only`, start with `debugbundle incidents --source local --status active --json`.",
15996
+ "3. If `debugbundle doctor --json` reports `mode=connected` and the target environment is cloud-enabled, check both `debugbundle incidents --source local --status active --json` and `debugbundle incidents --source cloud --status active --json` unless the user explicitly scoped the issue to local-only development. For user-reported production incidents, check cloud incidents after local incidents and explicitly report whether each source had matches.",
15990
15997
  "4. Inspect the chosen incident with `debugbundle inspect <incident-id> --source <local|cloud> --json` and `debugbundle explain <incident-id> --source <local|cloud> --json`.",
15991
15998
  "5. Fetch evidence before editing code: `debugbundle bundle <incident-id> --source <local|cloud> --json` and `debugbundle reproduce <incident-id> --source <local|cloud> --json`.",
15992
15999
  "6. If local SDK or relay events have landed but no bundle exists yet, run `debugbundle process --preset <minimal|balanced|investigative> --json` and then list incidents again.",
@@ -16006,7 +16013,7 @@ function buildSkill() {
16006
16013
  "2. Inspect the incident bundle and reproduction artifact before proposing a fix.",
16007
16014
  "3. Run `debugbundle analyze --type improvement --local` after local processing when you need a deterministic change plan.",
16008
16015
  "4. Apply the narrowest fix, then validate it with the repository test workflow from `.debugbundle/profile.json`.",
16009
- "5. When the fix is confirmed, or when the incident was intentionally generated for smoke, verification, or dogfooding, resolve it with `debugbundle resolve <incident-id> [incident-id ...]` or MCP `resolve_incident` / `resolve_incidents` so the open queue stays actionable.",
16016
+ "5. When the fix is confirmed, or when the incident was intentionally generated for smoke, verification, or dogfooding, resolve it with `debugbundle resolve <incident-id> [incident-id ...]` or MCP `resolve_incident` / `resolve_incidents` so the needs-attention queue stays actionable.",
16010
16017
  "",
16011
16018
  "## Investigation Controls",
16012
16019
  "",
@@ -16118,7 +16125,7 @@ function buildCliReference() {
16118
16125
  "",
16119
16126
  "## Investigation",
16120
16127
  "",
16121
- "- `debugbundle incidents [--source <local|cloud>] [--project-id <id>] [--environment <name>] [--service <name>] [--status <status>] [--severity <severity>] [--cursor <cursor>] [--limit <n>] [--json]`",
16128
+ "- `debugbundle incidents [--source <local|cloud>] [--project-id <id>] [--environment <name>] [--service <name>] [--status <active|open|resolved|regressed|all>] [--severity <severity>] [--cursor <cursor>] [--limit <n>] [--json]`",
16122
16129
  "- `debugbundle inspect <incident-id> [--source <local|cloud>] [--json]`",
16123
16130
  "- `debugbundle explain <incident-id> [--source <local|cloud>] [--json]`",
16124
16131
  "- `debugbundle bundle <incident-id> [--source <local|cloud>] [--json]`",
@@ -16208,15 +16215,15 @@ function buildCliReference() {
16208
16215
  "Review open incidents and resolve the intentionally generated ones:",
16209
16216
  "",
16210
16217
  "```bash",
16211
- "debugbundle incidents --status open --json",
16218
+ "debugbundle incidents --status active --json",
16212
16219
  "debugbundle resolve <incident-id> [incident-id ...]",
16213
- "debugbundle incidents --status open --json",
16220
+ "debugbundle incidents --status active --json",
16214
16221
  "```",
16215
16222
  "",
16216
16223
  "If you want a title-based batch cleanup and have `jq` available:",
16217
16224
  "",
16218
16225
  "```bash",
16219
- "debugbundle incidents --status open --json \\",
16226
+ "debugbundle incidents --status active --json \\",
16220
16227
  ` | jq -r '.incidents[] | select(.title | test("smoke test|dogfood|verification|synthetic"; "i")) | .incident_id' \\`,
16221
16228
  " | xargs debugbundle resolve",
16222
16229
  "```",
@@ -16295,10 +16302,10 @@ function buildMcpReference() {
16295
16302
  "",
16296
16303
  "## Smoke-Test Cleanup Recipe",
16297
16304
  "",
16298
- '1. Call `list_incidents` with `status: "open"`.',
16305
+ '1. Call `list_incidents` with `status: "active"`.',
16299
16306
  "2. Filter incidents whose titles show they were intentionally generated for smoke, dogfood, verification, or synthetic checks.",
16300
16307
  "3. Call `resolve_incidents` for verified synthetic incidents, or `resolve_incident` for a single incident.",
16301
- "4. Call `list_incidents` again and confirm the open queue only contains actionable failures.",
16308
+ "4. Call `list_incidents` again and confirm the needs-attention queue only contains actionable failures.",
16302
16309
  ""
16303
16310
  ].join("\n");
16304
16311
  }
@@ -16881,7 +16888,7 @@ var IncidentReasonSchema = external_exports.object({
16881
16888
  event_type: external_exports.enum(["backend_exception", "frontend_exception", "request_event", "log_event"]),
16882
16889
  event_class: external_exports.literal("incident_signal"),
16883
16890
  matched_policy: external_exports.string()
16884
- }).strict();
16891
+ });
16885
16892
  var IncidentSchema = external_exports.object({
16886
16893
  incident_id: external_exports.string(),
16887
16894
  project_id: external_exports.string(),
@@ -16904,7 +16911,7 @@ var IncidentSchema = external_exports.object({
16904
16911
  regressed_at: external_exports.string().nullable(),
16905
16912
  matched_fields: external_exports.array(external_exports.string()),
16906
16913
  incident_reason: IncidentReasonSchema.optional()
16907
- }).strict();
16914
+ });
16908
16915
  var ImprovementSchema = external_exports.object({
16909
16916
  improvement_id: external_exports.string(),
16910
16917
  project_id: external_exports.string(),
@@ -16934,7 +16941,7 @@ var ImprovementSchema = external_exports.object({
16934
16941
  bundle_created_at: external_exports.string().nullable(),
16935
16942
  bundle_updated_at: external_exports.string().nullable(),
16936
16943
  bundle_failure_reason: external_exports.string().nullable()
16937
- }).strict();
16944
+ });
16938
16945
  var ServiceSchema3 = external_exports.object({
16939
16946
  service_id: external_exports.string(),
16940
16947
  project_id: external_exports.string(),
@@ -16942,37 +16949,37 @@ var ServiceSchema3 = external_exports.object({
16942
16949
  runtime: external_exports.string().nullable(),
16943
16950
  framework: external_exports.string().nullable(),
16944
16951
  environment: external_exports.string()
16945
- }).strict();
16952
+ });
16946
16953
  var LogSchema = external_exports.object({
16947
16954
  event_id: external_exports.string(),
16948
16955
  event_type: external_exports.string(),
16949
16956
  occurred_at: external_exports.string(),
16950
16957
  is_sampled: external_exports.boolean(),
16951
16958
  level: external_exports.string().nullable()
16952
- }).strict();
16959
+ });
16953
16960
  var IncidentsResponseSchema = external_exports.object({
16954
16961
  incidents: external_exports.array(IncidentSchema),
16955
16962
  next_cursor: external_exports.string().nullable().optional()
16956
- }).strict();
16963
+ });
16957
16964
  var IncidentResponseSchema = external_exports.object({
16958
16965
  incident: IncidentSchema
16959
- }).strict();
16966
+ });
16960
16967
  var BulkIncidentResponseSchema = external_exports.object({
16961
16968
  incidents: external_exports.array(IncidentSchema)
16962
- }).strict();
16969
+ });
16963
16970
  var ImprovementResponseSchema = external_exports.object({
16964
16971
  improvement: ImprovementSchema
16965
- }).strict();
16972
+ });
16966
16973
  var IncidentContextArtifactSchema = external_exports.object({
16967
16974
  status: external_exports.enum(["ready", "pending", "failed"]),
16968
16975
  body: external_exports.unknown().optional(),
16969
16976
  reason: external_exports.string().nullable().optional()
16970
- }).strict();
16977
+ });
16971
16978
  var IncidentContextLogsSchema = external_exports.object({
16972
16979
  source: external_exports.enum(["retrieval", "bundle_context", "none"]),
16973
16980
  items: external_exports.array(external_exports.unknown()),
16974
16981
  next_cursor: external_exports.string().nullable()
16975
- }).strict();
16982
+ });
16976
16983
  var IncidentContextDeploySchema = external_exports.object({
16977
16984
  latest_deployment_id: external_exports.string().nullable(),
16978
16985
  commit_sha: external_exports.string().nullable(),
@@ -16980,23 +16987,23 @@ var IncidentContextDeploySchema = external_exports.object({
16980
16987
  branch: external_exports.string().nullable(),
16981
16988
  deployed_at: external_exports.string().nullable(),
16982
16989
  regression_window: external_exports.boolean().nullable()
16983
- }).strict();
16990
+ });
16984
16991
  var IncidentContextGroupingSchema = external_exports.object({
16985
16992
  fingerprint: external_exports.string(),
16986
16993
  fingerprint_version: external_exports.string(),
16987
16994
  matched_fields: external_exports.array(external_exports.string())
16988
- }).strict();
16995
+ });
16989
16996
  var IncidentContextVisibilitySchema = external_exports.object({
16990
16997
  grouping: external_exports.string(),
16991
16998
  bundle_regeneration: external_exports.string(),
16992
16999
  spike_detection: external_exports.string(),
16993
17000
  notification_cooldown: external_exports.string()
16994
- }).strict();
17001
+ });
16995
17002
  var IncidentContextRedactionSchema = external_exports.object({
16996
17003
  redacted: external_exports.boolean(),
16997
17004
  fields: external_exports.array(external_exports.string()),
16998
17005
  notes: external_exports.string().nullable()
16999
- }).strict();
17006
+ });
17000
17007
  var IncidentContextPrimarySignalSchema = external_exports.object({
17001
17008
  kind: IncidentReasonSchema.shape.kind.nullable(),
17002
17009
  event_type: external_exports.string().nullable(),
@@ -17016,7 +17023,14 @@ var IncidentContextPrimarySignalSchema = external_exports.object({
17016
17023
  line: external_exports.number().nullable(),
17017
17024
  function: external_exports.string().nullable()
17018
17025
  }).nullable()
17019
- }).strict();
17026
+ });
17027
+ var IncidentContextBrowserSignalSchema = external_exports.object({
17028
+ browser_event_kind: external_exports.string().nullable(),
17029
+ browser_event_opaque: external_exports.boolean().nullable(),
17030
+ browser_event_message: external_exports.string().nullable(),
17031
+ client_kind: external_exports.enum(["human", "bot", "unknown"]),
17032
+ bot_family: external_exports.string().nullable()
17033
+ });
17020
17034
  var IncidentContextSchema = external_exports.object({
17021
17035
  incident: IncidentSchema,
17022
17036
  incident_reason: IncidentReasonSchema.nullable(),
@@ -17028,22 +17042,23 @@ var IncidentContextSchema = external_exports.object({
17028
17042
  grouping: IncidentContextGroupingSchema,
17029
17043
  visibility: IncidentContextVisibilitySchema,
17030
17044
  redaction: IncidentContextRedactionSchema.nullable(),
17045
+ browser_signal: IncidentContextBrowserSignalSchema.nullable().optional(),
17031
17046
  suggested_next_checks: external_exports.array(external_exports.string())
17032
- }).strict();
17047
+ });
17033
17048
  var ServicesResponseSchema = external_exports.object({
17034
17049
  services: external_exports.array(ServiceSchema3)
17035
- }).strict();
17050
+ });
17036
17051
  var ImprovementsResponseSchema = external_exports.object({
17037
17052
  improvements: external_exports.array(ImprovementSchema),
17038
17053
  next_cursor: external_exports.string().nullable().optional()
17039
- }).strict();
17054
+ });
17040
17055
  var LogsResponseSchema = external_exports.object({
17041
17056
  logs: external_exports.array(LogSchema),
17042
17057
  next_cursor: external_exports.string().nullable().optional()
17043
- }).strict();
17058
+ });
17044
17059
  var PendingStatusSchema = external_exports.object({
17045
17060
  status: external_exports.literal("pending")
17046
- }).strict();
17061
+ });
17047
17062
  var BundleSchema = external_exports.object({
17048
17063
  bundle_version: external_exports.number().int()
17049
17064
  }).passthrough();
@@ -17051,14 +17066,14 @@ var ReproductionArtifactsSchema2 = external_exports.object({
17051
17066
  curl: external_exports.string().nullable().optional(),
17052
17067
  httpie: external_exports.string().nullable().optional(),
17053
17068
  json_spec: external_exports.unknown().nullable().optional()
17054
- }).strict();
17069
+ });
17055
17070
  var ReproductionSchema = external_exports.object({
17056
17071
  possible: external_exports.boolean(),
17057
17072
  confidence: external_exports.number(),
17058
17073
  reason: external_exports.string(),
17059
17074
  artifacts: ReproductionArtifactsSchema2.nullable(),
17060
17075
  feasibility_reference: external_exports.unknown().nullable()
17061
- }).strict();
17076
+ });
17062
17077
  var BundleResponseSchema = external_exports.union([PendingStatusSchema, BundleSchema]);
17063
17078
  var ReproductionResponseSchema = external_exports.union([PendingStatusSchema, ReproductionSchema]);
17064
17079
  var ApiErrorResponseSchema = external_exports.object({
@@ -17135,6 +17150,9 @@ function createRetrievalApi(client) {
17135
17150
  if (input2.firstSeenAfter !== void 0) {
17136
17151
  query.set("first_seen_after", input2.firstSeenAfter);
17137
17152
  }
17153
+ if (input2.attentionAfter !== void 0) {
17154
+ query.set("attention_after", input2.attentionAfter);
17155
+ }
17138
17156
  if (input2.cursor !== void 0) {
17139
17157
  query.set("cursor", input2.cursor);
17140
17158
  }
@@ -17385,7 +17403,7 @@ function createRetrievalApi(client) {
17385
17403
  status: external_exports.literal("failed"),
17386
17404
  reason: external_exports.string(),
17387
17405
  related_incident_ids: external_exports.array(external_exports.string()).optional()
17388
- }).strict()
17406
+ })
17389
17407
  ])
17390
17408
  );
17391
17409
  }
@@ -17891,6 +17909,167 @@ function redact(payload, options) {
17891
17909
 
17892
17910
  // ../../packages/event-normalizer/src/index.ts
17893
17911
  var FINGERPRINT_VERSION = "v1";
17912
+ var PAYLOAD_ALLOWED_KEYS = {
17913
+ backend_exception: /* @__PURE__ */ new Set(["name", "message", "stack", "handled", "request", "response", "runtime", "probe_data"]),
17914
+ request_event: /* @__PURE__ */ new Set([
17915
+ "method",
17916
+ "path",
17917
+ "query",
17918
+ "headers",
17919
+ "body",
17920
+ "response_status",
17921
+ "duration_ms",
17922
+ "route_template",
17923
+ "response_headers",
17924
+ "response_body"
17925
+ ]),
17926
+ log_event: /* @__PURE__ */ new Set(["level", "message", "attributes"]),
17927
+ frontend_breadcrumb: /* @__PURE__ */ new Set(["breadcrumb_type", "route", "data"]),
17928
+ frontend_exception: /* @__PURE__ */ new Set([
17929
+ "name",
17930
+ "message",
17931
+ "stack",
17932
+ "route",
17933
+ "browser",
17934
+ "breadcrumbs",
17935
+ "device",
17936
+ "browser_event",
17937
+ "rejection_reason",
17938
+ "dom_context",
17939
+ "probe_data"
17940
+ ]),
17941
+ deploy_metadata: /* @__PURE__ */ new Set(["commit_sha", "version", "branch", "environment", "deployed_at"]),
17942
+ error_suppressed: /* @__PURE__ */ new Set(["fingerprint", "suppressed_count", "window_seconds", "first_seen", "last_seen"]),
17943
+ probe_event: /* @__PURE__ */ new Set(["label", "data", "activation_id", "probe_label_pattern"])
17944
+ };
17945
+ function isRecord3(candidate) {
17946
+ return typeof candidate === "object" && candidate !== null && !Array.isArray(candidate);
17947
+ }
17948
+ function cloneRecord(candidate) {
17949
+ return { ...candidate };
17950
+ }
17951
+ function readString2(candidate) {
17952
+ if (typeof candidate === "string") {
17953
+ return candidate;
17954
+ }
17955
+ if (typeof candidate === "number" || typeof candidate === "boolean") {
17956
+ return String(candidate);
17957
+ }
17958
+ return null;
17959
+ }
17960
+ function readNonNegativeNumber(candidate, fallback) {
17961
+ if (typeof candidate === "number" && Number.isFinite(candidate) && candidate >= 0) {
17962
+ return candidate;
17963
+ }
17964
+ if (typeof candidate === "string" && candidate.trim().length > 0) {
17965
+ const parsed = Number(candidate);
17966
+ if (Number.isFinite(parsed) && parsed >= 0) {
17967
+ return parsed;
17968
+ }
17969
+ }
17970
+ return fallback;
17971
+ }
17972
+ function normalizeMap(candidate) {
17973
+ return isRecord3(candidate) ? cloneRecord(candidate) : {};
17974
+ }
17975
+ function mergeContext(baseContext, incomingContext) {
17976
+ if (!isRecord3(incomingContext)) {
17977
+ return baseContext;
17978
+ }
17979
+ return {
17980
+ ...baseContext,
17981
+ ...incomingContext
17982
+ };
17983
+ }
17984
+ function normalizeCorrelation(candidate) {
17985
+ if (!isRecord3(candidate)) {
17986
+ return void 0;
17987
+ }
17988
+ return {
17989
+ request_id: readString2(candidate["request_id"]),
17990
+ trace_id: readString2(candidate["trace_id"]),
17991
+ session_id: readString2(candidate["session_id"]),
17992
+ user_id_hash: readString2(candidate["user_id_hash"])
17993
+ };
17994
+ }
17995
+ function normalizeBackendExceptionPayload(payload) {
17996
+ const request = normalizeMap(payload["request"]);
17997
+ payload["request"] = {
17998
+ method: readString2(request["method"]) ?? "UNKNOWN",
17999
+ path: readString2(request["path"]) ?? "/",
18000
+ query: normalizeMap(request["query"]),
18001
+ headers: normalizeMap(request["headers"]),
18002
+ ..."body" in request ? { body: request["body"] ?? null } : {}
18003
+ };
18004
+ const response = normalizeMap(payload["response"]);
18005
+ payload["response"] = {
18006
+ status_code: readNonNegativeNumber(response["status_code"], 0),
18007
+ ..."headers" in response ? { headers: normalizeMap(response["headers"]) } : {},
18008
+ ..."body" in response ? { body: response["body"] } : {}
18009
+ };
18010
+ }
18011
+ function normalizeRequestEventPayload(payload) {
18012
+ payload["query"] = normalizeMap(payload["query"]);
18013
+ payload["headers"] = normalizeMap(payload["headers"]);
18014
+ payload["response_status"] = readNonNegativeNumber(payload["response_status"], 0);
18015
+ payload["duration_ms"] = readNonNegativeNumber(payload["duration_ms"], 0);
18016
+ }
18017
+ function normalizePayloadExtras(input2) {
18018
+ const allowedKeys = PAYLOAD_ALLOWED_KEYS[input2.eventType];
18019
+ if (allowedKeys === void 0) {
18020
+ return input2.context;
18021
+ }
18022
+ let context = input2.context;
18023
+ for (const key of Object.keys(input2.payload)) {
18024
+ if (allowedKeys.has(key)) {
18025
+ continue;
18026
+ }
18027
+ context = mergeContext(context, { [key]: input2.payload[key] });
18028
+ delete input2.payload[key];
18029
+ }
18030
+ return context;
18031
+ }
18032
+ function normalizeCompatibleEventCandidate(candidate) {
18033
+ if (!isRecord3(candidate)) {
18034
+ return candidate;
18035
+ }
18036
+ const event = cloneRecord(candidate);
18037
+ const eventType = typeof event["event_type"] === "string" ? event["event_type"] : "";
18038
+ let context = normalizeMap(event["context"]);
18039
+ if (typeof event["sdk_language"] === "string") {
18040
+ context = mergeContext(context, { sdk_language: event["sdk_language"] });
18041
+ delete event["sdk_language"];
18042
+ }
18043
+ const correlation = normalizeCorrelation(event["correlation"]);
18044
+ if (correlation !== void 0) {
18045
+ event["correlation"] = correlation;
18046
+ }
18047
+ if (isRecord3(event["payload"])) {
18048
+ const payload = cloneRecord(event["payload"]);
18049
+ context = mergeContext(context, payload["context"]);
18050
+ delete payload["context"];
18051
+ if (eventType === "backend_exception") {
18052
+ normalizeBackendExceptionPayload(payload);
18053
+ }
18054
+ if (eventType === "request_event") {
18055
+ const attributes = isRecord3(payload["attributes"]) ? payload["attributes"] : null;
18056
+ if (typeof payload["route_template"] !== "string" && typeof attributes?.["route_template"] === "string") {
18057
+ payload["route_template"] = attributes["route_template"];
18058
+ }
18059
+ context = mergeContext(context, attributes);
18060
+ delete payload["attributes"];
18061
+ normalizeRequestEventPayload(payload);
18062
+ }
18063
+ context = normalizePayloadExtras({ eventType, payload, context });
18064
+ event["payload"] = payload;
18065
+ }
18066
+ if (Object.keys(context).length > 0) {
18067
+ event["context"] = context;
18068
+ } else {
18069
+ delete event["context"];
18070
+ }
18071
+ return event;
18072
+ }
17894
18073
  function inferMatchedFields(event) {
17895
18074
  const matchedFields = ["environment", "normalized_message"];
17896
18075
  if (event.error_type !== null) {
@@ -18135,7 +18314,7 @@ function stableJson(value) {
18135
18314
  return `{${pairs.join(",")}}`;
18136
18315
  }
18137
18316
  function validateEvent(candidate) {
18138
- return EventEnvelopeSchema.safeParse(candidate);
18317
+ return EventEnvelopeSchema.safeParse(normalizeCompatibleEventCandidate(candidate));
18139
18318
  }
18140
18319
  function normalizeEvent(event) {
18141
18320
  const redactedPayload = redact(event.payload).redacted;
@@ -18293,7 +18472,7 @@ var AVAILABILITY_CHECK_BOOTSTRAP_STATEMENTS = [
18293
18472
  method text NOT NULL CHECK (method IN ('GET', 'HEAD')),
18294
18473
  expected_status_min integer NOT NULL DEFAULT 200 CHECK (expected_status_min BETWEEN 100 AND 599),
18295
18474
  expected_status_max integer NOT NULL DEFAULT 399 CHECK (expected_status_max BETWEEN 100 AND 599),
18296
- timeout_ms integer NOT NULL DEFAULT 5000 CHECK (timeout_ms BETWEEN 500 AND 5000),
18475
+ timeout_ms integer NOT NULL DEFAULT 2500 CHECK (timeout_ms BETWEEN 500 AND 5000),
18297
18476
  interval_seconds integer NOT NULL CHECK (interval_seconds >= 30),
18298
18477
  failure_threshold integer NOT NULL DEFAULT 3 CHECK (failure_threshold BETWEEN 1 AND 10),
18299
18478
  recovery_threshold integer NOT NULL DEFAULT 2 CHECK (recovery_threshold BETWEEN 1 AND 10),
@@ -19792,6 +19971,16 @@ var AVAILABILITY_CHECK_STORAGE_SCHEMA_MIGRATIONS = [
19792
19971
  ON availability_check_daily_rollups (project_id, day DESC)
19793
19972
  `
19794
19973
  ]
19974
+ }),
19975
+ defineAvailabilityCheckStorageSchemaMigration({
19976
+ id: "202606180001_lower_availability_check_timeout_default",
19977
+ description: "Lower the database default timeout for newly inserted availability checks while preserving existing rows and the explicit 5000ms maximum.",
19978
+ statements: [
19979
+ `
19980
+ ALTER TABLE availability_checks
19981
+ ALTER COLUMN timeout_ms SET DEFAULT 2500
19982
+ `
19983
+ ]
19795
19984
  })
19796
19985
  ];
19797
19986
 
@@ -20787,9 +20976,13 @@ function parseLocalIncident(candidate) {
20787
20976
  throw createReadError(400, "invalid_local_state");
20788
20977
  }
20789
20978
  const resolvedAt = candidate["resolved_at"];
20979
+ const regressedAt = candidate["regressed_at"];
20790
20980
  if (resolvedAt !== void 0 && resolvedAt !== null && typeof resolvedAt !== "string") {
20791
20981
  throw createReadError(400, "invalid_local_state");
20792
20982
  }
20983
+ if (regressedAt !== void 0 && regressedAt !== null && typeof regressedAt !== "string") {
20984
+ throw createReadError(400, "invalid_local_state");
20985
+ }
20793
20986
  if (typeof candidate["occurrence_count"] !== "number" || typeof candidate["generation_number"] !== "number") {
20794
20987
  throw createReadError(400, "invalid_local_state");
20795
20988
  }
@@ -20824,6 +21017,7 @@ function parseLocalIncident(candidate) {
20824
21017
  severity: candidate["severity"],
20825
21018
  status: candidate["status"],
20826
21019
  ...resolvedAt === void 0 ? {} : { resolved_at: resolvedAt },
21020
+ ...regressedAt === void 0 ? {} : { regressed_at: regressedAt },
20827
21021
  first_seen_at: candidate["first_seen_at"],
20828
21022
  last_seen_at: candidate["last_seen_at"],
20829
21023
  occurrence_count: candidate["occurrence_count"],
@@ -20925,8 +21119,16 @@ async function listLocalIncidents(input2, dependencies) {
20925
21119
  if (input2.status === void 0 || input2.status === "all") {
20926
21120
  return true;
20927
21121
  }
21122
+ if (input2.status === "active") {
21123
+ return incident.status === "open";
21124
+ }
20928
21125
  return incident.status === input2.status;
20929
- }).filter((incident) => input2.severity === void 0 ? true : incident.severity === input2.severity).filter((incident) => input2.firstSeenAfter === void 0 ? true : incident.first_seen_at >= input2.firstSeenAfter).sort(sortIncidentsDescending);
21126
+ }).filter((incident) => input2.severity === void 0 ? true : incident.severity === input2.severity).filter((incident) => input2.firstSeenAfter === void 0 ? true : incident.first_seen_at >= input2.firstSeenAfter).filter((incident) => {
21127
+ if (input2.attentionAfter === void 0) {
21128
+ return true;
21129
+ }
21130
+ return incident.first_seen_at >= input2.attentionAfter || incident.regressed_at != null && incident.regressed_at >= input2.attentionAfter;
21131
+ }).sort(sortIncidentsDescending);
20930
21132
  const startIndex = input2.cursor === void 0 ? 0 : incidents.findIndex((incident) => buildCursor(incident) === input2.cursor) + 1;
20931
21133
  const pagedIncidents = input2.limit === void 0 ? incidents.slice(startIndex) : incidents.slice(startIndex, startIndex + input2.limit);
20932
21134
  const hasMore = input2.limit !== void 0 && startIndex + input2.limit < incidents.length;
@@ -21486,6 +21688,7 @@ var ProjectColorTagResponseSchema2 = external_exports.unknown().transform((value
21486
21688
  var ProjectMetricsSchema = external_exports.object({
21487
21689
  open_incidents: external_exports.number().int().nonnegative().default(0),
21488
21690
  regressed_incidents: external_exports.number().int().nonnegative().default(0),
21691
+ attention_incidents_today: external_exports.number().int().nonnegative().default(0),
21489
21692
  opened_incidents_today: external_exports.number().int().nonnegative().default(0),
21490
21693
  opened_incidents_month: external_exports.number().int().nonnegative().default(0),
21491
21694
  monthly_bundle_requests: external_exports.number().int().nonnegative(),
@@ -26891,7 +27094,7 @@ var ProfileSchema2 = external_exports.object({
26891
27094
  framework: external_exports.string().min(1)
26892
27095
  }))
26893
27096
  });
26894
- function isRecord3(value) {
27097
+ function isRecord4(value) {
26895
27098
  return typeof value === "object" && value !== null;
26896
27099
  }
26897
27100
  function slugify2(value) {
@@ -26981,7 +27184,7 @@ async function ingestCommand(input2, dependencies = {}) {
26981
27184
  })
26982
27185
  };
26983
27186
  } catch (error) {
26984
- const message = isRecord3(error) && typeof error["message"] === "string" ? error["message"] : "Failed to ingest log file.";
27187
+ const message = isRecord4(error) && typeof error["message"] === "string" ? error["message"] : "Failed to ingest log file.";
26985
27188
  return {
26986
27189
  exitCode: 1,
26987
27190
  output: message
@@ -28379,6 +28582,16 @@ function mapErrorToExitCode2(error) {
28379
28582
  }
28380
28583
  return 1;
28381
28584
  }
28585
+ function formatRetrievalErrorOutput(error) {
28586
+ const message = error instanceof Error ? error.message : String(error);
28587
+ if (error instanceof RetrievalApiError && error.status === 200 && error.code === "invalid_response_shape") {
28588
+ return [
28589
+ message,
28590
+ "The cloud API returned a success response that this CLI version could not parse. Update DebugBundle CLI and retry: npm install -g @debugbundle/cli@latest"
28591
+ ].join("\n");
28592
+ }
28593
+ return message;
28594
+ }
28382
28595
  function formatIncidentTable(incidents) {
28383
28596
  if (incidents.length === 0) {
28384
28597
  return "No incidents found.";
@@ -28485,7 +28698,7 @@ function formatLogsTable(logs) {
28485
28698
  function mapErrorToResult(error) {
28486
28699
  return {
28487
28700
  exitCode: mapErrorToExitCode2(error),
28488
- output: error instanceof Error ? error.message : String(error)
28701
+ output: formatRetrievalErrorOutput(error)
28489
28702
  };
28490
28703
  }
28491
28704
  function mapUnsupportedReopenResult() {
@@ -28521,6 +28734,7 @@ async function listAllCloudIncidents(input2, api) {
28521
28734
  ...input2.status === void 0 ? {} : { status: input2.status },
28522
28735
  ...input2.severity === void 0 ? {} : { severity: input2.severity },
28523
28736
  ...input2.firstSeenAfter === void 0 ? {} : { firstSeenAfter: input2.firstSeenAfter },
28737
+ ...input2.attentionAfter === void 0 ? {} : { attentionAfter: input2.attentionAfter },
28524
28738
  ...cursor === void 0 ? {} : { cursor }
28525
28739
  });
28526
28740
  incidents.push(
@@ -28542,7 +28756,8 @@ async function mapCombinedIncidentListResult(input2, api, dependencies) {
28542
28756
  ...input2.service === void 0 ? {} : { service: input2.service },
28543
28757
  ...input2.status === void 0 ? {} : { status: input2.status },
28544
28758
  ...input2.severity === void 0 ? {} : { severity: input2.severity },
28545
- ...input2.firstSeenAfter === void 0 ? {} : { firstSeenAfter: input2.firstSeenAfter }
28759
+ ...input2.firstSeenAfter === void 0 ? {} : { firstSeenAfter: input2.firstSeenAfter },
28760
+ ...input2.attentionAfter === void 0 ? {} : { attentionAfter: input2.attentionAfter }
28546
28761
  },
28547
28762
  dependencies
28548
28763
  );
@@ -28554,7 +28769,8 @@ async function mapCombinedIncidentListResult(input2, api, dependencies) {
28554
28769
  ...input2.service === void 0 ? {} : { service: input2.service },
28555
28770
  ...input2.status === void 0 ? {} : { status: input2.status },
28556
28771
  ...input2.severity === void 0 ? {} : { severity: input2.severity },
28557
- ...input2.firstSeenAfter === void 0 ? {} : { firstSeenAfter: input2.firstSeenAfter }
28772
+ ...input2.firstSeenAfter === void 0 ? {} : { firstSeenAfter: input2.firstSeenAfter },
28773
+ ...input2.attentionAfter === void 0 ? {} : { attentionAfter: input2.attentionAfter }
28558
28774
  },
28559
28775
  api
28560
28776
  );
@@ -28573,8 +28789,15 @@ async function mapCombinedIncidentListResult(input2, api, dependencies) {
28573
28789
  function mapAuthOrRetrievalError(error) {
28574
28790
  return mapCliAuthErrorToResult(error) ?? mapErrorToResult(error);
28575
28791
  }
28792
+ function resolveIncidentListStatusFilter(status) {
28793
+ if (status === "all") {
28794
+ return void 0;
28795
+ }
28796
+ return status ?? "active";
28797
+ }
28576
28798
  async function listIncidentsCommand(input2, api) {
28577
28799
  try {
28800
+ const statusFilter = resolveIncidentListStatusFilter(input2.status);
28578
28801
  const requestInput = {
28579
28802
  bearerToken: input2.bearerToken
28580
28803
  };
@@ -28587,8 +28810,8 @@ async function listIncidentsCommand(input2, api) {
28587
28810
  if (input2.service !== void 0) {
28588
28811
  requestInput.service = input2.service;
28589
28812
  }
28590
- if (input2.status !== void 0) {
28591
- requestInput.status = input2.status;
28813
+ if (statusFilter !== void 0) {
28814
+ requestInput.status = statusFilter;
28592
28815
  }
28593
28816
  if (input2.severity !== void 0) {
28594
28817
  requestInput.severity = input2.severity;
@@ -28596,6 +28819,9 @@ async function listIncidentsCommand(input2, api) {
28596
28819
  if (input2.firstSeenAfter !== void 0) {
28597
28820
  requestInput.firstSeenAfter = input2.firstSeenAfter;
28598
28821
  }
28822
+ if (input2.attentionAfter !== void 0) {
28823
+ requestInput.attentionAfter = input2.attentionAfter;
28824
+ }
28599
28825
  if (input2.cursor !== void 0) {
28600
28826
  requestInput.cursor = input2.cursor;
28601
28827
  }
@@ -28614,10 +28840,11 @@ async function listIncidentsCommand(input2, api) {
28614
28840
  output: formatIncidentTable(incidents.incidents)
28615
28841
  };
28616
28842
  } catch (error) {
28617
- return { exitCode: mapErrorToExitCode2(error), output: error instanceof Error ? error.message : String(error) };
28843
+ return { exitCode: mapErrorToExitCode2(error), output: formatRetrievalErrorOutput(error) };
28618
28844
  }
28619
28845
  }
28620
28846
  async function listIncidentsWithAuthCommand(input2, dependencies) {
28847
+ const statusFilter = resolveIncidentListStatusFilter(input2.status);
28621
28848
  if (await shouldUseLocalRetrieval(input2.source, dependencies)) {
28622
28849
  try {
28623
28850
  const incidents = await listLocalIncidents(
@@ -28625,9 +28852,10 @@ async function listIncidentsWithAuthCommand(input2, dependencies) {
28625
28852
  ...input2.projectId === void 0 ? {} : { projectId: input2.projectId },
28626
28853
  ...input2.environment === void 0 ? {} : { environment: input2.environment },
28627
28854
  ...input2.service === void 0 ? {} : { service: input2.service },
28628
- ...input2.status === void 0 ? {} : { status: input2.status },
28855
+ ...statusFilter === void 0 ? {} : { status: statusFilter },
28629
28856
  ...input2.severity === void 0 ? {} : { severity: input2.severity },
28630
28857
  ...input2.firstSeenAfter === void 0 ? {} : { firstSeenAfter: input2.firstSeenAfter },
28858
+ ...input2.attentionAfter === void 0 ? {} : { attentionAfter: input2.attentionAfter },
28631
28859
  ...input2.cursor === void 0 ? {} : { cursor: input2.cursor },
28632
28860
  ...input2.limit === void 0 ? {} : { limit: input2.limit }
28633
28861
  },
@@ -28650,9 +28878,10 @@ async function listIncidentsWithAuthCommand(input2, dependencies) {
28650
28878
  ...input2.projectId === void 0 ? {} : { projectId: input2.projectId },
28651
28879
  ...input2.environment === void 0 ? {} : { environment: input2.environment },
28652
28880
  ...input2.service === void 0 ? {} : { service: input2.service },
28653
- ...input2.status === void 0 ? {} : { status: input2.status },
28881
+ ...statusFilter === void 0 ? {} : { status: statusFilter },
28654
28882
  ...input2.severity === void 0 ? {} : { severity: input2.severity },
28655
28883
  ...input2.firstSeenAfter === void 0 ? {} : { firstSeenAfter: input2.firstSeenAfter },
28884
+ ...input2.attentionAfter === void 0 ? {} : { attentionAfter: input2.attentionAfter },
28656
28885
  ...input2.cursor === void 0 ? {} : { cursor: input2.cursor },
28657
28886
  ...input2.limit === void 0 ? {} : { limit: input2.limit },
28658
28887
  ...input2.json === void 0 ? {} : { json: input2.json }
@@ -28691,6 +28920,9 @@ async function listIncidentsWithAuthCommand(input2, dependencies) {
28691
28920
  if (input2.firstSeenAfter !== void 0) {
28692
28921
  commandInput.firstSeenAfter = input2.firstSeenAfter;
28693
28922
  }
28923
+ if (input2.attentionAfter !== void 0) {
28924
+ commandInput.attentionAfter = input2.attentionAfter;
28925
+ }
28694
28926
  if (input2.cursor !== void 0) {
28695
28927
  commandInput.cursor = input2.cursor;
28696
28928
  }
@@ -28728,7 +28960,7 @@ async function getIncidentCommand(input2, api) {
28728
28960
  output: formatIncidentDetail(incident)
28729
28961
  };
28730
28962
  } catch (error) {
28731
- return { exitCode: mapErrorToExitCode2(error), output: error instanceof Error ? error.message : String(error) };
28963
+ return { exitCode: mapErrorToExitCode2(error), output: formatRetrievalErrorOutput(error) };
28732
28964
  }
28733
28965
  }
28734
28966
  async function readLocalIncidentContext(input2, dependencies) {
@@ -28774,7 +29006,7 @@ async function getIncidentContextCommand(input2, api) {
28774
29006
  output: input2.json ? JSON.stringify(context) : formatIncidentContextDetail(context)
28775
29007
  };
28776
29008
  } catch (error) {
28777
- return { exitCode: mapErrorToExitCode2(error), output: error instanceof Error ? error.message : String(error) };
29009
+ return { exitCode: mapErrorToExitCode2(error), output: formatRetrievalErrorOutput(error) };
28778
29010
  }
28779
29011
  }
28780
29012
  async function getIncidentContextWithAuthCommand(input2, dependencies) {
@@ -28899,7 +29131,7 @@ async function resolveIncidentCommand(input2, api) {
28899
29131
  output: formatIncidentDetail(incident)
28900
29132
  };
28901
29133
  } catch (error) {
28902
- return { exitCode: mapErrorToExitCode2(error), output: error instanceof Error ? error.message : String(error) };
29134
+ return { exitCode: mapErrorToExitCode2(error), output: formatRetrievalErrorOutput(error) };
28903
29135
  }
28904
29136
  }
28905
29137
  async function resolveIncidentWithAuthCommand(input2, dependencies) {
@@ -29074,7 +29306,7 @@ async function reopenIncidentCommand(input2, api) {
29074
29306
  output: formatIncidentDetail(incident)
29075
29307
  };
29076
29308
  } catch (error) {
29077
- return { exitCode: mapErrorToExitCode2(error), output: error instanceof Error ? error.message : String(error) };
29309
+ return { exitCode: mapErrorToExitCode2(error), output: formatRetrievalErrorOutput(error) };
29078
29310
  }
29079
29311
  }
29080
29312
  async function reopenIncidentWithAuthCommand(input2, dependencies) {
@@ -29220,7 +29452,7 @@ async function getBundleCommand(input2, api) {
29220
29452
  output: input2.json ? JSON.stringify(bundle) : formatObjectOutput(bundle)
29221
29453
  };
29222
29454
  } catch (error) {
29223
- return { exitCode: mapErrorToExitCode2(error), output: error instanceof Error ? error.message : String(error) };
29455
+ return { exitCode: mapErrorToExitCode2(error), output: formatRetrievalErrorOutput(error) };
29224
29456
  }
29225
29457
  }
29226
29458
  async function getBundleWithAuthCommand(input2, dependencies) {
@@ -29292,7 +29524,7 @@ async function getLogsCommand(input2, api) {
29292
29524
  output: input2.json ? JSON.stringify(logs) : formatLogsTable(logs.logs)
29293
29525
  };
29294
29526
  } catch (error) {
29295
- return { exitCode: mapErrorToExitCode2(error), output: error instanceof Error ? error.message : String(error) };
29527
+ return { exitCode: mapErrorToExitCode2(error), output: formatRetrievalErrorOutput(error) };
29296
29528
  }
29297
29529
  }
29298
29530
  async function getLogsWithAuthCommand(input2, dependencies) {
@@ -29330,7 +29562,7 @@ async function getReproductionCommand(input2, api) {
29330
29562
  output: input2.json ? JSON.stringify(reproduction) : formatObjectOutput(reproduction)
29331
29563
  };
29332
29564
  } catch (error) {
29333
- return { exitCode: mapErrorToExitCode2(error), output: error instanceof Error ? error.message : String(error) };
29565
+ return { exitCode: mapErrorToExitCode2(error), output: formatRetrievalErrorOutput(error) };
29334
29566
  }
29335
29567
  }
29336
29568
  async function getReproductionWithAuthCommand(input2, dependencies) {
@@ -30415,7 +30647,7 @@ var CLI_USAGE_LINES = [
30415
30647
  " debugbundle login --github-device [--label <label>] [--base-url <url>] [--auth-file <path>] [--json]",
30416
30648
  " debugbundle profile validate [--json]",
30417
30649
  " debugbundle whoami [--auth-file <path>] [--json]",
30418
- " debugbundle incidents [--source <local|cloud>] [--project-id <id>] [--environment <name>] [--service <name>] [--status <status>] [--severity <severity>] [--first-seen-after <ISO8601>] [--cursor <cursor>] [--limit <n>] [--auth-file <path>] [--json]",
30650
+ " debugbundle incidents [--source <local|cloud>] [--project-id <id>] [--environment <name>] [--service <name>] [--status <active|open|resolved|regressed|all>] [--severity <severity>] [--first-seen-after <ISO8601>] [--attention-after <ISO8601>] [--cursor <cursor>] [--limit <n>] [--auth-file <path>] [--json]",
30419
30651
  " debugbundle inspect <incident-id> [--source <local|cloud>] [--auth-file <path>] [--json]",
30420
30652
  " debugbundle explain <incident-id> [--source <local|cloud>] [--auth-file <path>] [--json]",
30421
30653
  " debugbundle resolve <incident-id> [incident-id ...] [--source <local|cloud>] [--auth-file <path>] [--json]",
@@ -34043,7 +34275,7 @@ async function handleHealthCommand(parsedArgv, dependencies) {
34043
34275
  method,
34044
34276
  expectedStatusMin: readIntegerOption(parsedArgv, "expected-status-min") ?? 200,
34045
34277
  expectedStatusMax: readIntegerOption(parsedArgv, "expected-status-max") ?? 399,
34046
- timeoutMs: readIntegerOption(parsedArgv, "timeout-ms") ?? 5e3,
34278
+ timeoutMs: readIntegerOption(parsedArgv, "timeout-ms") ?? 2500,
34047
34279
  intervalSeconds,
34048
34280
  failureThreshold: readIntegerOption(parsedArgv, "failure-threshold") ?? 3,
34049
34281
  recoveryThreshold: readIntegerOption(parsedArgv, "recovery-threshold") ?? 2,
@@ -34142,7 +34374,7 @@ async function handleHealthCommand(parsedArgv, dependencies) {
34142
34374
  method,
34143
34375
  expectedStatusMin: readIntegerOption(parsedArgv, "expected-status-min") ?? 200,
34144
34376
  expectedStatusMax: readIntegerOption(parsedArgv, "expected-status-max") ?? 399,
34145
- timeoutMs: readIntegerOption(parsedArgv, "timeout-ms") ?? 5e3
34377
+ timeoutMs: readIntegerOption(parsedArgv, "timeout-ms") ?? 2500
34146
34378
  })
34147
34379
  );
34148
34380
  }
@@ -36910,7 +37142,7 @@ async function handleCaptureRuleCommand2(parsedArgv, dependencies) {
36910
37142
  // package.json
36911
37143
  var package_default = {
36912
37144
  name: "@debugbundle/cli",
36913
- version: "1.5.2",
37145
+ version: "1.5.4",
36914
37146
  private: false,
36915
37147
  description: "Command-line interface for DebugBundle",
36916
37148
  license: "AGPL-3.0-only",
@@ -37201,7 +37433,7 @@ ${formatUsage()}`
37201
37433
  return await (dependencies.whoamiCommand ?? whoamiCommand)(appendCommonAuthOptions(parsedArgv, {}));
37202
37434
  }
37203
37435
  if (command === "incidents") {
37204
- expectNoUnknownOptions(parsedArgv, ["auth-file", "json", "source", "project-id", "environment", "service", "status", "severity", "first-seen-after", "cursor", "limit"]);
37436
+ expectNoUnknownOptions(parsedArgv, ["auth-file", "json", "source", "project-id", "environment", "service", "status", "severity", "first-seen-after", "attention-after", "cursor", "limit"]);
37205
37437
  ensureNoExtraPositionals(parsedArgv, 1);
37206
37438
  const input2 = appendCommonAuthOptions(parsedArgv, {});
37207
37439
  const source = readRetrievalSource(parsedArgv);
@@ -37232,6 +37464,10 @@ ${formatUsage()}`
37232
37464
  if (firstSeenAfter !== void 0) {
37233
37465
  input2.firstSeenAfter = firstSeenAfter;
37234
37466
  }
37467
+ const attentionAfter = readStringOption(parsedArgv, "attention-after");
37468
+ if (attentionAfter !== void 0) {
37469
+ input2.attentionAfter = attentionAfter;
37470
+ }
37235
37471
  const cursor = readStringOption(parsedArgv, "cursor");
37236
37472
  if (cursor !== void 0) {
37237
37473
  input2.cursor = cursor;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@debugbundle/cli",
3
- "version": "1.5.2",
3
+ "version": "1.5.4",
4
4
  "private": false,
5
5
  "description": "Command-line interface for DebugBundle",
6
6
  "license": "AGPL-3.0-only",