@nicofains1/agentwatch 0.2.0 → 0.2.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":"alerts.d.ts","sourceRoot":"","sources":["../src/alerts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAiB,MAAM,YAAY,CAAC;AAOvD;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,aAAa,GAAE,MAAW,GACzB,KAAK,CAuCP;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,IAAI,CAEN;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,KAAK,EAAE,CAWT"}
1
+ {"version":3,"file":"alerts.d.ts","sourceRoot":"","sources":["../src/alerts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAiB,MAAM,YAAY,CAAC;AAOvD;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,aAAa,GAAE,MAAW,GACzB,KAAK,CAuCP;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,IAAI,CAEN;AAMD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,KAAK,EAAE,CAWT"}
package/dist/alerts.js CHANGED
@@ -23,7 +23,7 @@ export function recordAlert(db, agent, alertType, message, windowMinutes = 30) {
23
23
  SET count = ?, severity = ?, message = ?, last_seen = datetime('now')
24
24
  WHERE id = ?
25
25
  `).run(newCount, severity, message, existing.id);
26
- return { ...existing, count: newCount, severity, message, last_seen: new Date().toISOString() };
26
+ return { ...existing, count: newCount, severity, message, last_seen: sqliteNow(), resolved: !!existing.resolved };
27
27
  }
28
28
  const stmt = db.prepare(`
29
29
  INSERT INTO alerts (agent, alert_type, severity, message)
@@ -37,25 +37,28 @@ export function recordAlert(db, agent, alertType, message, windowMinutes = 30) {
37
37
  severity: 'info',
38
38
  message,
39
39
  count: 1,
40
- first_seen: new Date().toISOString(),
41
- last_seen: new Date().toISOString(),
40
+ first_seen: sqliteNow(),
41
+ last_seen: sqliteNow(),
42
42
  resolved: false,
43
43
  };
44
44
  }
45
45
  export function resolveAlert(db, alertId) {
46
46
  db.prepare(`UPDATE alerts SET resolved = 1 WHERE id = ?`).run(alertId);
47
47
  }
48
+ function coerceAlert(row) {
49
+ return { ...row, resolved: !!row.resolved };
50
+ }
48
51
  export function getActiveAlerts(db, agent) {
49
52
  if (agent) {
50
53
  return db.prepare(`
51
54
  SELECT * FROM alerts WHERE agent = ? AND resolved = 0
52
55
  ORDER BY severity DESC, last_seen DESC
53
- `).all(agent);
56
+ `).all(agent).map(coerceAlert);
54
57
  }
55
58
  return db.prepare(`
56
59
  SELECT * FROM alerts WHERE resolved = 0
57
60
  ORDER BY severity DESC, last_seen DESC
58
- `).all();
61
+ `).all().map(coerceAlert);
59
62
  }
60
63
  function escalateSeverity(count) {
61
64
  if (count >= 10)
@@ -1 +1 @@
1
- {"version":3,"file":"alerts.js","sourceRoot":"","sources":["../src/alerts.ts"],"names":[],"mappings":"AAGA,SAAS,SAAS,CAAC,QAAQ,GAAG,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,EAAqB,EACrB,KAAa,EACb,SAAiB,EACjB,OAAe,EACf,gBAAwB,EAAE;IAE1B,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;GAK3B,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAsB,CAAC;IAE3D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5C,EAAE,CAAC,OAAO,CAAC;;;;KAIV,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEjD,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAClG,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QAClC,KAAK;QACL,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,MAAM;QAChB,OAAO;QACP,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,EAAqB,EACrB,OAAe;IAEf,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,KAAc;IAEd,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,CAAC,OAAO,CAAC;;;KAGjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,CAAC,OAAO,CAAC;;;GAGjB,CAAC,CAAC,GAAG,EAAa,CAAC;AACtB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACnC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"alerts.js","sourceRoot":"","sources":["../src/alerts.ts"],"names":[],"mappings":"AAGA,SAAS,SAAS,CAAC,QAAQ,GAAG,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,EAAqB,EACrB,KAAa,EACb,SAAiB,EACjB,OAAe,EACf,gBAAwB,EAAE;IAE1B,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;GAK3B,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAsB,CAAC;IAE3D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5C,EAAE,CAAC,OAAO,CAAC;;;;KAIV,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEjD,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACpH,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QAClC,KAAK;QACL,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,MAAM;QAChB,OAAO;QACP,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,SAAS,EAAE;QACvB,SAAS,EAAE,SAAS,EAAE;QACtB,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,EAAqB,EACrB,OAAe;IAEf,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,WAAW,CAAC,GAA4B;IAC/C,OAAO,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAW,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,KAAc;IAEd,IAAI,KAAK,EAAE,CAAC;QACV,OAAQ,EAAE,CAAC,OAAO,CAAC;;;KAGlB,CAAC,CAAC,GAAG,CAAC,KAAK,CAA+B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/D,CAAC;IACD,OAAQ,EAAE,CAAC,OAAO,CAAC;;;GAGlB,CAAC,CAAC,GAAG,EAAgC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACnC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/heartbeat.js CHANGED
@@ -14,7 +14,7 @@ export function report(db, agent, status, context = '{}') {
14
14
  agent,
15
15
  status,
16
16
  context,
17
- created_at: new Date().toISOString(),
17
+ created_at: sqliteNow(),
18
18
  };
19
19
  }
20
20
  export function getLatestHeartbeat(db, agent) {
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"AAGA,+DAA+D;AAC/D,SAAS,SAAS,CAAC,QAAQ,GAAG,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,EAAqB,EACrB,KAAa,EACb,MAAmB,EACnB,UAAkB,IAAI;IAEtB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QAClC,KAAK;QACL,MAAM;QACN,OAAO;QACP,UAAU,EAAE,SAAS,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,EAAqB,EACrB,KAAa;IAEb,OAAO,EAAE,CAAC,OAAO,CAAC;;;;;GAKjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAA0B,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,eAAuB,EAAE;IAEzB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;GAEzB,CAAC,CAAC,GAAG,EAAyB,CAAC;IAEhC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAwB,EAAE,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QAC1G,CAAC;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC;QACnD,MAAM,MAAM,GAAgB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAEhE,0DAA0D;QAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAG7B,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAoB,CAAC;QAEzC,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAG/B,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAoB,CAAC;QAEzC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACvD,CAAC,CAAC,CAAC,CAAC;QAEN,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAG7B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAoB,CAAC;QAEjC,OAAO;YACL,KAAK;YACL,MAAM;YACN,cAAc,EAAE,MAAM,CAAC,UAAU;YACjC,UAAU,EAAE,MAAM;YAClB,aAAa,EAAE,UAAU,CAAC,GAAG;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { AgentWatchConfig, AgentStatus, TraceEvent, CascadeChain } from './types.js';
2
+ import type { OtelExportOptions } from './otel.js';
2
3
  export declare class AgentWatch {
3
4
  private db;
4
5
  private alertWindowMinutes;
@@ -22,8 +23,12 @@ export declare class AgentWatch {
22
23
  getRecentFailures(agent?: string, limit?: number): TraceEvent[];
23
24
  getLatestHeartbeat(agent: string): import("./types.js").Heartbeat | undefined;
24
25
  getFleetHealth(): import("./types.js").AgentHealth[];
26
+ exportTraceToOtel(traceId: string, options?: OtelExportOptions): Promise<number>;
27
+ exportRecentToOtel(hours?: number, options?: OtelExportOptions): Promise<number>;
25
28
  close(): void;
26
29
  }
27
30
  export type { AgentStatus, AlertSeverity, Heartbeat, TraceEvent, Alert, AgentHealth, CascadeStep, CascadeChain, AgentWatchConfig, } from './types.js';
28
31
  export { createTraceId } from './trace.js';
32
+ export { exportTraceEvents } from './otel.js';
33
+ export type { OtelExportOptions } from './otel.js';
29
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1F,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,MAAM,GAAE,gBAAqB;IAQzC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,MAAa;IAKjE,KAAK,CACH,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E,UAAU;IAWb,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAKtD,SAAS;IAIT,aAAa,IAAI,MAAM;IAKvB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIvD,YAAY,CAAC,OAAO,EAAE,MAAM;IAI5B,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM;IAK3B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE;IAKvC,aAAa,IAAI,MAAM;IAIvB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI7C,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAI/D,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAIhC,cAAc;IAId,KAAK;CAGN;AAGD,YAAY,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,UAAU,EACV,KAAK,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,MAAM,GAAE,gBAAqB;IAQzC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,MAAa;IAKjE,KAAK,CACH,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E,UAAU;IAWb,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAKtD,SAAS;IAIT,aAAa,IAAI,MAAM;IAKvB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIvD,YAAY,CAAC,OAAO,EAAE,MAAM;IAI5B,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM;IAK3B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE;IAKvC,aAAa,IAAI,MAAM;IAIvB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI7C,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAI/D,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAIhC,cAAc;IAKR,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMhF,kBAAkB,CAAC,KAAK,GAAE,MAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWzF,KAAK;CAGN;AAGD,YAAY,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,UAAU,EACV,KAAK,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -66,10 +66,27 @@ export class AgentWatch {
66
66
  getFleetHealth() {
67
67
  return getFleetHealth(this.db, this.heartbeatStaleMinutes);
68
68
  }
69
+ // Feature 6: OTEL span export
70
+ async exportTraceToOtel(traceId, options) {
71
+ const events = this.getTraceEvents(traceId);
72
+ const { exportTraceEvents } = await import('./otel.js');
73
+ return exportTraceEvents(events, options);
74
+ }
75
+ async exportRecentToOtel(hours = 1, options) {
76
+ const since = new Date(Date.now() - hours * 3600_000).toISOString().replace('T', ' ').replace('Z', '');
77
+ const events = this.db.prepare(`
78
+ SELECT * FROM trace_events
79
+ WHERE created_at >= ?
80
+ ORDER BY created_at ASC
81
+ `).all(since);
82
+ const { exportTraceEvents } = await import('./otel.js');
83
+ return exportTraceEvents(events, options);
84
+ }
69
85
  close() {
70
86
  this.db.close();
71
87
  }
72
88
  }
73
89
  // Re-export for direct use
74
90
  export { createTraceId } from './trace.js';
91
+ export { exportTraceEvents } from './otel.js';
75
92
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/otel.d.ts ADDED
@@ -0,0 +1,27 @@
1
+ /**
2
+ * OpenTelemetry span exporter for AgentWatch traces.
3
+ *
4
+ * Converts stored trace events into OTEL spans following the
5
+ * GenAI semantic conventions (gen_ai.operation.name = "invoke_agent").
6
+ *
7
+ * Requires optional peer dependencies:
8
+ * @opentelemetry/api
9
+ * @opentelemetry/sdk-trace-base
10
+ */
11
+ import type { TraceEvent } from './types.js';
12
+ /** Options for creating an OTEL exporter from AgentWatch traces. */
13
+ export interface OtelExportOptions {
14
+ /** OTEL SpanExporter instance. If not provided, uses ConsoleSpanExporter. */
15
+ exporter?: unknown;
16
+ /** Service name reported in OTEL resource. Default: "agentwatch" */
17
+ serviceName?: string;
18
+ }
19
+ /**
20
+ * Export an array of AgentWatch trace events as OTEL spans.
21
+ *
22
+ * Each TraceEvent becomes a span with GenAI semantic attributes.
23
+ * Parent-child relationships are preserved where possible within
24
+ * the same export batch.
25
+ */
26
+ export declare function exportTraceEvents(events: TraceEvent[], options?: OtelExportOptions): Promise<number>;
27
+ //# sourceMappingURL=otel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,oEAAoE;AACpE,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAoDD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA0DjB"}
package/dist/otel.js ADDED
@@ -0,0 +1,80 @@
1
+ /**
2
+ * OpenTelemetry span exporter for AgentWatch traces.
3
+ *
4
+ * Converts stored trace events into OTEL spans following the
5
+ * GenAI semantic conventions (gen_ai.operation.name = "invoke_agent").
6
+ *
7
+ * Requires optional peer dependencies:
8
+ * @opentelemetry/api
9
+ * @opentelemetry/sdk-trace-base
10
+ */
11
+ let otelApi = null;
12
+ let sdkTrace = null;
13
+ async function loadOtelDeps() {
14
+ if (otelApi && sdkTrace)
15
+ return { api: otelApi, sdk: sdkTrace };
16
+ try {
17
+ otelApi = await import('@opentelemetry/api');
18
+ sdkTrace = await import('@opentelemetry/sdk-trace-base');
19
+ return { api: otelApi, sdk: sdkTrace };
20
+ }
21
+ catch {
22
+ throw new Error('OpenTelemetry packages not installed. Run: npm install @opentelemetry/api @opentelemetry/sdk-trace-base');
23
+ }
24
+ }
25
+ /**
26
+ * Export an array of AgentWatch trace events as OTEL spans.
27
+ *
28
+ * Each TraceEvent becomes a span with GenAI semantic attributes.
29
+ * Parent-child relationships are preserved where possible within
30
+ * the same export batch.
31
+ */
32
+ export async function exportTraceEvents(events, options = {}) {
33
+ if (events.length === 0)
34
+ return 0;
35
+ const { sdk } = await loadOtelDeps();
36
+ const exporter = (options.exporter ?? new sdk.ConsoleSpanExporter());
37
+ const processor = new sdk.SimpleSpanProcessor(exporter);
38
+ const provider = new sdk.BasicTracerProvider({
39
+ spanProcessors: [processor],
40
+ });
41
+ const tracer = provider.getTracer(options.serviceName ?? 'agentwatch', '0.1.0');
42
+ let exported = 0;
43
+ for (const event of events) {
44
+ const spanName = `invoke_agent ${event.agent}`;
45
+ const startTime = new Date(event.created_at);
46
+ const startMs = startTime.getTime();
47
+ const span = tracer.startSpan(spanName, {
48
+ startTime: [Math.floor(startMs / 1000), (startMs % 1000) * 1_000_000],
49
+ });
50
+ // GenAI semantic conventions
51
+ span.setAttribute('gen_ai.operation.name', 'invoke_agent');
52
+ span.setAttribute('gen_ai.agent.name', event.agent);
53
+ // AgentWatch-specific attributes
54
+ span.setAttribute('agentwatch.trace_id', event.trace_id);
55
+ span.setAttribute('agentwatch.action', event.action);
56
+ span.setAttribute('agentwatch.event_id', event.id);
57
+ span.setAttribute('agentwatch.duration_ms', event.duration_ms);
58
+ if (event.input)
59
+ span.setAttribute('agentwatch.input', event.input);
60
+ if (event.output)
61
+ span.setAttribute('agentwatch.output', event.output);
62
+ if (event.parent_event_id !== null) {
63
+ span.setAttribute('agentwatch.parent_event_id', event.parent_event_id);
64
+ }
65
+ if (event.status === 'error') {
66
+ span.setStatus({ code: 2, message: event.output }); // SpanStatusCode.ERROR = 2
67
+ span.setAttribute('error.type', `agent_error:${event.action}`);
68
+ }
69
+ else {
70
+ span.setStatus({ code: 1 }); // SpanStatusCode.OK = 1
71
+ }
72
+ // End span at start + duration
73
+ const endMs = startMs + event.duration_ms;
74
+ span.end([Math.floor(endMs / 1000), (endMs % 1000) * 1_000_000]);
75
+ exported++;
76
+ }
77
+ await provider.forceFlush();
78
+ return exported;
79
+ }
80
+ //# sourceMappingURL=otel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAExE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,KAAK,CACnB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IACJ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GACL,UAAU,CA2BZ;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,UAAU,EAAE,CAMd;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,cAAc,EAAE,MAAM,GACrB,YAAY,GAAG,IAAI,CAkCrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,GAAE,MAAW,GACjB,UAAU,EAAE,CAed;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,YAAY,EAAE,CAUhB"}
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAQxE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,KAAK,CACnB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IACJ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GACL,UAAU,CA2BZ;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,UAAU,EAAE,CAMd;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,cAAc,EAAE,MAAM,GACrB,YAAY,GAAG,IAAI,CAkCrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,GAAE,MAAW,GACjB,UAAU,EAAE,CAed;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,YAAY,EAAE,CAUhB"}
package/dist/trace.js CHANGED
@@ -1,4 +1,9 @@
1
1
  import { randomUUID } from 'node:crypto';
2
+ /** Format a date as SQLite-compatible `YYYY-MM-DD HH:MM:SS` */
3
+ function sqliteNow() {
4
+ const d = new Date();
5
+ return d.toISOString().replace('T', ' ').replace(/\.\d{3}Z$/, '');
6
+ }
2
7
  export function createTraceId() {
3
8
  return randomUUID();
4
9
  }
@@ -18,7 +23,7 @@ export function trace(db, traceId, agent, action, input, output, opts = {}) {
18
23
  parent_event_id: opts.parentEventId ?? null,
19
24
  status: opts.status ?? 'ok',
20
25
  duration_ms: opts.durationMs ?? 0,
21
- created_at: new Date().toISOString(),
26
+ created_at: sqliteNow(),
22
27
  };
23
28
  }
24
29
  export function getTraceEvents(db, traceId) {
package/dist/trace.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,+DAA+D;AAC/D,SAAS,SAAS;IAChB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,EAAqB,EACrB,OAAe,EACf,KAAa,EACb,MAAc,EACd,KAAa,EACb,MAAc,EACd,OAII,EAAE;IAEN,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACrB,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,EACL,MAAM,EACN,IAAI,CAAC,aAAa,IAAI,IAAI,EAC1B,IAAI,CAAC,MAAM,IAAI,IAAI,EACnB,IAAI,CAAC,UAAU,IAAI,CAAC,CACrB,CAAC;IACF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QAClC,QAAQ,EAAE,OAAO;QACjB,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;QAC3C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;QAC3B,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;QACjC,UAAU,EAAE,SAAS,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,OAAe;IAEf,OAAO,EAAE,CAAC,OAAO,CAAC;;;;GAIjB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAiB,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,EAAqB,EACrB,cAAsB;IAEtB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;GAE1B,CAAC,CAAC,GAAG,CAAC,cAAc,CAA2B,CAAC;IAEjD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,OAAO,GAA2B,OAAO,CAAC;IAE9C,OAAO,OAAO,EAAE,CAAC;QACf,KAAK,CAAC,OAAO,CAAC;YACZ,QAAQ,EAAE,OAAO,CAAC,EAAE;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,UAAU;SAC9B,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI;YAAE,MAAM;QAE5C,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;KAEpB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAA2B,CAAC;IAC5D,CAAC;IAED,OAAO;QACL,UAAU,EAAE,cAAc;QAC1B,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QACpB,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAqB,EACrB,KAAc,EACd,QAAgB,EAAE;IAElB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,CAAC,OAAO,CAAC;;;;;KAKjB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAiB,CAAC;IACvC,CAAC;IACD,OAAO,EAAE,CAAC,OAAO,CAAC;;;;;GAKjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAiB,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,EAAqB,EACrB,OAAe;IAEf,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAI3B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAiB,CAAC;IAEhC,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SAC7B,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAClD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nicofains1/agentwatch",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Multi-agent observability: cascade failure detection, heartbeats, and forensic replay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,10 +18,18 @@
18
18
  "dependencies": {
19
19
  "better-sqlite3": "^11.8.0"
20
20
  },
21
+ "peerDependencies": {
22
+ "@opentelemetry/api": "^1.9.0",
23
+ "@opentelemetry/sdk-trace-base": "^1.30.0 || ^2.0.0"
24
+ },
25
+ "peerDependenciesMeta": {
26
+ "@opentelemetry/api": { "optional": true },
27
+ "@opentelemetry/sdk-trace-base": { "optional": true }
28
+ },
21
29
  "devDependencies": {
22
- "@types/better-sqlite3": "^7.6.8",
23
- "typescript": "^5.7.0",
24
- "vitest": "^3.0.0"
30
+ "@opentelemetry/api": "^1.9.0",
31
+ "@opentelemetry/sdk-trace-base": "^2.0.0",
32
+ "@types/better-sqlite3": "^7.6.8"
25
33
  },
26
34
  "files": [
27
35
  "dist"
@@ -36,7 +44,9 @@
36
44
  "tracing",
37
45
  "fleet-management",
38
46
  "ai-agents",
39
- "debugging"
47
+ "debugging",
48
+ "opentelemetry",
49
+ "otel"
40
50
  ],
41
51
  "author": "nicofains1",
42
52
  "repository": {
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 nicofains1
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.