@automagik/omni 2.260922.16 → 2.260923.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/commands/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/commands/sources.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyLpC,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwMpC,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C"}
@@ -86,6 +86,19 @@ declare function buildUpdateSourcePatch(options: UpdateSourceOptions): Promise<U
86
86
  declare function assertPairedSignatureOnCreate(signatureConfig: WebhookSignatureConfigBody | undefined, signatureSecret: string | undefined): void;
87
87
  declare const WINDOW_SEMANTICS: readonly ["future_only", "includes_in_progress"];
88
88
  declare const MUTATION_POLICIES: readonly ["same_id", "new_id"];
89
+ /** Names of stalled and poll-disabled sources (#1239/#1241), surfaced by `omni status` and `omni webhooks list`. */
90
+ export declare function sourceHealthAlerts(sources: Array<{
91
+ name: string;
92
+ livenessStatus?: string | null;
93
+ }>): {
94
+ stalled: string[];
95
+ pollDisabled: string[];
96
+ };
97
+ /** One-line banner for the alerts above; null when every source is fine. */
98
+ export declare function formatSourceHealthAlerts(alerts: {
99
+ stalled: string[];
100
+ pollDisabled: string[];
101
+ }): string | null;
89
102
  export declare function createWebhooksCommand(): Command;
90
103
  /** Test-only surface — not part of the CLI contract. */
91
104
  export declare const __testables: {
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,2GAA2G;AAC3G,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAsB,GAAG,MAAM,CAItE;AASD,UAAU,sBAAsB;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAcD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,sBAAsB,EAC/B,SAAS,GAAE,MAAM,OAAO,CAAC,MAAM,CAAuB,GACrD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqC7B;AAED,6FAA6F;AAC7F,iBAAS,oBAAoB,CAAC,OAAO,EAAE;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,0BAA0B,GAAG,SAAS,CAczC;AAoBD;;;;;;GAMG;AACH,iBAAS,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,2BAA2B,GAAG,SAAS,CA0BjG;AAED,UAAU,mBAAoB,SAAQ,sBAAsB;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAGhC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAGtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,gBAAgB,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACtD,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,cAAc,CAAC,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;CACrD;AAED,2EAA2E;AAC3E,iBAAe,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyB9F;AAED;;;;;GAKG;AACH,iBAAS,6BAA6B,CACpC,eAAe,EAAE,0BAA0B,GAAG,SAAS,EACvD,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,IAAI,CAQN;AAID,QAAA,MAAM,gBAAgB,kDAAmD,CAAC;AAC1E,QAAA,MAAM,iBAAiB,gCAAiC,CAAC;AAuDzD,wBAAgB,qBAAqB,IAAI,OAAO,CAgV/C;AAED,wDAAwD;AACxD,eAAO,MAAM,WAAW;;;;;;;;CAQvB,CAAC"}
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -42633,6 +42633,8 @@ async function processRow2(row, now, deps, stats) {
42633
42633
  const silentMs = Math.max(0, now.getTime() - signal.at.getTime());
42634
42634
  const overdue = silentMs > row.expectedIntervalSeconds * 1000;
42635
42635
  const silentForSeconds = Math.round(silentMs / 1000);
42636
+ if (row.livenessStatus === "disabled")
42637
+ return;
42636
42638
  if (overdue) {
42637
42639
  if (row.livenessStatus === "stalled")
42638
42640
  return;
@@ -42647,6 +42649,7 @@ async function processRow2(row, now, deps, stats) {
42647
42649
  silentForSeconds,
42648
42650
  stalledAt: now.getTime()
42649
42651
  };
42652
+ deps.logger.warn("connector stalled", { sourceName: row.name, silentForSeconds });
42650
42653
  await publishTransition(deps, "system.connector.stalled", { ...payload }, row);
42651
42654
  stats.stalled += 1;
42652
42655
  return;
@@ -42663,6 +42666,10 @@ async function processRow2(row, now, deps, stats) {
42663
42666
  recoveredBy: signal.kind,
42664
42667
  recoveredAt: now.getTime()
42665
42668
  };
42669
+ deps.logger.info("connector recovered", {
42670
+ sourceName: row.name,
42671
+ stalledForSeconds: payload.stalledForSeconds
42672
+ });
42666
42673
  await publishTransition(deps, "system.connector.recovered", { ...payload }, row);
42667
42674
  stats.recovered += 1;
42668
42675
  }
@@ -83274,7 +83281,7 @@ var init_schema2 = __esm(() => {
83274
83281
  eventStageIdx: index("event_payloads_event_stage_idx").on(table3.eventId, table3.stage)
83275
83282
  }));
83276
83283
  webhookSignatureAlgorithms = ["hmac-sha256", "hmac-sha1", "token-match"];
83277
- connectorLivenessStatuses = ["healthy", "stalled"];
83284
+ connectorLivenessStatuses = ["healthy", "stalled", "disabled"];
83278
83285
  connectorWindowSemanticsValues = ["future_only", "includes_in_progress"];
83279
83286
  connectorMutationPolicies = ["same_id", "new_id"];
83280
83287
  webhookSources = pgTable("webhook_sources", {
@@ -115977,7 +115984,7 @@ var require_client2 = __commonJS((exports) => {
115977
115984
 
115978
115985
  // ../../node_modules/.bun/@sentry+node-core@10.52.0+2c50d7e904f6cfd7/node_modules/@sentry/node-core/build/cjs/sdk/esmLoader.js
115979
115986
  var require_esmLoader = __commonJS((exports) => {
115980
- var __filename = "/home/runner/work/omni/omni/.stable-source/node_modules/.bun/@sentry+node-core@10.52.0+2c50d7e904f6cfd7/node_modules/@sentry/node-core/build/cjs/sdk/esmLoader.js";
115987
+ var __filename = "/home/runner/work/omni/omni/node_modules/.bun/@sentry+node-core@10.52.0+2c50d7e904f6cfd7/node_modules/@sentry/node-core/build/cjs/sdk/esmLoader.js";
115981
115988
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
115982
115989
  var core = require_cjs();
115983
115990
  var importInTheMiddle = require_import_in_the_middle();
@@ -137453,7 +137460,7 @@ import { fileURLToPath } from "url";
137453
137460
  // package.json
137454
137461
  var package_default = {
137455
137462
  name: "@automagik/omni",
137456
- version: "2.260922.16",
137463
+ version: "2.260923.1",
137457
137464
  repository: {
137458
137465
  type: "git",
137459
137466
  url: "git+https://github.com/automagik-dev/omni.git",
@@ -151946,6 +151953,21 @@ function buildLifecycleUpdates(options3) {
151946
151953
  updates.mutationPolicy = mutationPolicy;
151947
151954
  return updates;
151948
151955
  }
151956
+ function sourceHealthAlerts(sources) {
151957
+ return {
151958
+ stalled: sources.filter((s2) => s2.livenessStatus === "stalled").map((s2) => s2.name),
151959
+ pollDisabled: sources.filter((s2) => s2.livenessStatus === "disabled").map((s2) => s2.name)
151960
+ };
151961
+ }
151962
+ function formatSourceHealthAlerts(alerts) {
151963
+ const parts = [];
151964
+ if (alerts.stalled.length > 0)
151965
+ parts.push(`${alerts.stalled.length} stalled (${alerts.stalled.join(", ")})`);
151966
+ if (alerts.pollDisabled.length > 0) {
151967
+ parts.push(`${alerts.pollDisabled.length} poll disabled, no OMNI_POLL_COMMAND_DIR (${alerts.pollDisabled.join(", ")})`);
151968
+ }
151969
+ return parts.length > 0 ? `Sources: ${parts.join("; ")}` : null;
151970
+ }
151949
151971
  function createWebhooksCommand() {
151950
151972
  const webhooks = new Command("webhooks").description("Manage webhook sources");
151951
151973
  webhooks.command("list").description("List webhook sources").option("--enabled", "Show only enabled sources").option("--disabled", "Show only disabled sources").action(async (options3) => {
@@ -151963,11 +151985,14 @@ function createWebhooksCommand() {
151963
151985
  id: w.id,
151964
151986
  name: w.name,
151965
151987
  enabled: w.enabled ? "yes" : "no",
151966
- health: w.livenessStatus ?? "-",
151988
+ health: w.livenessStatus === "disabled" ? "poll disabled" : w.livenessStatus ?? "-",
151967
151989
  cadence: w.expectedIntervalSeconds != null ? `${w.expectedIntervalSeconds}s` : "-",
151968
151990
  url: ingressUrl(w.name),
151969
151991
  createdAt: w.createdAt
151970
151992
  }));
151993
+ const banner = formatSourceHealthAlerts(sourceHealthAlerts(result));
151994
+ if (banner)
151995
+ warn(banner);
151971
151996
  list(items, { emptyMessage: "No webhook sources found." });
151972
151997
  } catch (err2) {
151973
151998
  const message2 = err2 instanceof Error ? err2.message : "Unknown error";
@@ -152319,7 +152344,14 @@ function createSourcesCommand() {
152319
152344
  error(`Failed to add source: ${err2 instanceof Error ? err2.message : String(err2)}`);
152320
152345
  }
152321
152346
  });
152322
- sources.command("add-poll <name>").description("Create a supervised pull connector: omni runs --command every --interval seconds and ingests each JSON stdout line (command must live inside the API host OMNI_POLL_COMMAND_DIR)").requiredOption("--command <path>", "Executable to run (no shell, no arguments)").requiredOption("--interval <seconds>", "Seconds between runs (min 10); failures back off exponentially").requiredOption("--emit-type <type>", "Event type for each stdout line (custom.*)").option("--dedup-key <template>", "Idempotency key template, e.g. '{payload.message_id}'").option("--expected-interval <seconds>", "Liveness window (default: 2x --interval)").option("--env <KEY=VALUE...>", "Environment variables for the command (repeatable)").option("--description <desc>", "Description").action(async (name, options3) => {
152347
+ sources.command("add-poll <name>").description("Create a supervised pull connector: omni runs --command every --interval seconds and ingests each JSON stdout line (command must live inside the API host OMNI_POLL_COMMAND_DIR)").requiredOption("--command <path>", "Executable to run (no shell, no arguments)").requiredOption("--interval <seconds>", "Seconds between runs (min 10); failures back off exponentially up to --max-backoff").option("--max-backoff <seconds>", "Backoff ceiling in seconds (default 3600)").requiredOption("--emit-type <type>", "Event type for each stdout line (custom.*)").option("--dedup-key <template>", "Idempotency key template, e.g. '{payload.message_id}'").option("--expected-interval <seconds>", "Liveness window (default: 2x --interval)").option("--env <KEY=VALUE...>", "Environment variables for the command (repeatable)").option("--description <desc>", "Description").addHelpText("after", `
152348
+ Exit codes:
152349
+ exit 0 success: each JSON stdout line is ingested (empty stdout = nothing new)
152350
+ exit != 0 failure, EVEN WITH EMPTY STDOUT, and backs off. Shell pipelines often
152351
+ exit 1 on "no matches" (grep, set -o pipefail): end them with "|| true"
152352
+ or "exit 0" when an empty result is normal.
152353
+ Config errors (OMNI_POLL_COMMAND_DIR unset, command missing) retry every min(interval, 300s)
152354
+ without backing off.`).action(async (name, options3) => {
152323
152355
  const intervalSeconds = Number(options3.interval);
152324
152356
  const env2 = Object.fromEntries((options3.env ?? []).map((pair) => [pair.slice(0, pair.indexOf("=")), pair.slice(pair.indexOf("=") + 1)]));
152325
152357
  try {
@@ -152335,7 +152367,8 @@ function createSourcesCommand() {
152335
152367
  intervalSeconds,
152336
152368
  emitType: options3.emitType,
152337
152369
  ...options3.dedupKey && { dedupKeyTemplate: options3.dedupKey },
152338
- ...options3.env && { env: env2 }
152370
+ ...options3.env && { env: env2 },
152371
+ ...options3.maxBackoff && { maxBackoffSeconds: Number(options3.maxBackoff) }
152339
152372
  }
152340
152373
  })
152341
152374
  });
@@ -152643,6 +152676,18 @@ async function validateAuthKey(statusInfo, client) {
152643
152676
  statusInfo.keyValid = false;
152644
152677
  }
152645
152678
  }
152679
+ async function checkSourceHealth(statusInfo, client) {
152680
+ try {
152681
+ const alerts = sourceHealthAlerts(await client.webhooks.listSources({ enabled: true }));
152682
+ if (alerts.stalled.length > 0)
152683
+ statusInfo.stalledSources = alerts.stalled;
152684
+ if (alerts.pollDisabled.length > 0)
152685
+ statusInfo.pollDisabledSources = alerts.pollDisabled;
152686
+ const banner = formatSourceHealthAlerts(alerts);
152687
+ if (banner)
152688
+ warn(banner);
152689
+ } catch {}
152690
+ }
152646
152691
  async function collectStatusInfo() {
152647
152692
  const config2 = loadConfig();
152648
152693
  const isAuthenticated = hasAuth();
@@ -152659,6 +152704,7 @@ async function collectStatusInfo() {
152659
152704
  const client = getOptionalClient();
152660
152705
  if (client) {
152661
152706
  await validateAuthKey(statusInfo, client);
152707
+ await checkSourceHealth(statusInfo, client);
152662
152708
  }
152663
152709
  }
152664
152710
  const processes = await getProcessStatus();
@@ -4970,7 +4970,7 @@ export interface components {
4970
4970
  * @description Liveness state; null = unsupervised. Transitions emit system.connector.* events
4971
4971
  * @enum {string|null}
4972
4972
  */
4973
- livenessStatus: "healthy" | "stalled" | null;
4973
+ livenessStatus: "healthy" | "stalled" | "disabled" | null;
4974
4974
  /**
4975
4975
  * Format: date-time
4976
4976
  * @description When the cadence was (re)declared
@@ -5059,6 +5059,7 @@ export interface components {
5059
5059
  env?: {
5060
5060
  [key: string]: string;
5061
5061
  };
5062
+ maxBackoffSeconds?: number;
5062
5063
  } | null;
5063
5064
  /**
5064
5065
  * @description Whether enabled
@@ -5130,7 +5131,7 @@ export interface components {
5130
5131
  * @description Status before this heartbeat (a stalled source recovers on the next sweep tick)
5131
5132
  * @enum {string|null}
5132
5133
  */
5133
- livenessStatus: "healthy" | "stalled" | null;
5134
+ livenessStatus: "healthy" | "stalled" | "disabled" | null;
5134
5135
  /** @description Declared cadence, if any */
5135
5136
  expectedIntervalSeconds: number | null;
5136
5137
  };
@@ -14034,7 +14035,7 @@ export interface operations {
14034
14035
  * @description Liveness state; null = unsupervised. Transitions emit system.connector.* events
14035
14036
  * @enum {string|null}
14036
14037
  */
14037
- livenessStatus: "healthy" | "stalled" | null;
14038
+ livenessStatus: "healthy" | "stalled" | "disabled" | null;
14038
14039
  /**
14039
14040
  * Format: date-time
14040
14041
  * @description When the cadence was (re)declared
@@ -14137,6 +14138,7 @@ export interface operations {
14137
14138
  env?: {
14138
14139
  [key: string]: string;
14139
14140
  };
14141
+ maxBackoffSeconds?: number;
14140
14142
  } | null;
14141
14143
  /**
14142
14144
  * @description Whether enabled
@@ -14242,7 +14244,7 @@ export interface operations {
14242
14244
  * @description Liveness state; null = unsupervised. Transitions emit system.connector.* events
14243
14245
  * @enum {string|null}
14244
14246
  */
14245
- livenessStatus: "healthy" | "stalled" | null;
14247
+ livenessStatus: "healthy" | "stalled" | "disabled" | null;
14246
14248
  /**
14247
14249
  * Format: date-time
14248
14250
  * @description When the cadence was (re)declared
@@ -14394,7 +14396,7 @@ export interface operations {
14394
14396
  * @description Liveness state; null = unsupervised. Transitions emit system.connector.* events
14395
14397
  * @enum {string|null}
14396
14398
  */
14397
- livenessStatus: "healthy" | "stalled" | null;
14399
+ livenessStatus: "healthy" | "stalled" | "disabled" | null;
14398
14400
  /**
14399
14401
  * Format: date-time
14400
14402
  * @description When the cadence was (re)declared
@@ -14568,6 +14570,7 @@ export interface operations {
14568
14570
  env?: {
14569
14571
  [key: string]: string;
14570
14572
  };
14573
+ maxBackoffSeconds?: number;
14571
14574
  } | null;
14572
14575
  /**
14573
14576
  * @description Whether enabled
@@ -14673,7 +14676,7 @@ export interface operations {
14673
14676
  * @description Liveness state; null = unsupervised. Transitions emit system.connector.* events
14674
14677
  * @enum {string|null}
14675
14678
  */
14676
- livenessStatus: "healthy" | "stalled" | null;
14679
+ livenessStatus: "healthy" | "stalled" | "disabled" | null;
14677
14680
  /**
14678
14681
  * Format: date-time
14679
14682
  * @description When the cadence was (re)declared
@@ -14826,7 +14829,7 @@ export interface operations {
14826
14829
  * @description Status before this heartbeat (a stalled source recovers on the next sweep tick)
14827
14830
  * @enum {string|null}
14828
14831
  */
14829
- livenessStatus: "healthy" | "stalled" | null;
14832
+ livenessStatus: "healthy" | "stalled" | "disabled" | null;
14830
14833
  /** @description Declared cadence, if any */
14831
14834
  expectedIntervalSeconds: number | null;
14832
14835
  };