@siglo/monitor 0.0.0-stage → 1.0.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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +514 -2
  3. package/dist/client.d.ts +53 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +185 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/index.d.ts +13 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +29 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/metrics.d.ts +15 -0
  12. package/dist/metrics.d.ts.map +1 -0
  13. package/dist/metrics.js +79 -0
  14. package/dist/metrics.js.map +1 -0
  15. package/dist/middleware/express.d.ts +9 -0
  16. package/dist/middleware/express.d.ts.map +1 -0
  17. package/dist/middleware/express.js +33 -0
  18. package/dist/middleware/express.js.map +1 -0
  19. package/dist/middleware/fastify.d.ts +8 -0
  20. package/dist/middleware/fastify.d.ts.map +1 -0
  21. package/dist/middleware/fastify.js +29 -0
  22. package/dist/middleware/fastify.js.map +1 -0
  23. package/dist/middleware/hono.d.ts +8 -0
  24. package/dist/middleware/hono.d.ts.map +1 -0
  25. package/dist/middleware/hono.js +27 -0
  26. package/dist/middleware/hono.js.map +1 -0
  27. package/dist/server.d.ts +30 -0
  28. package/dist/server.d.ts.map +1 -0
  29. package/dist/server.js +546 -0
  30. package/dist/server.js.map +1 -0
  31. package/dist/store.d.ts +19 -0
  32. package/dist/store.d.ts.map +1 -0
  33. package/dist/store.js +173 -0
  34. package/dist/store.js.map +1 -0
  35. package/dist/transports/redis.d.ts +26 -0
  36. package/dist/transports/redis.d.ts.map +1 -0
  37. package/dist/transports/redis.js +70 -0
  38. package/dist/transports/redis.js.map +1 -0
  39. package/dist/transports/sse.d.ts +24 -0
  40. package/dist/transports/sse.d.ts.map +1 -0
  41. package/dist/transports/sse.js +98 -0
  42. package/dist/transports/sse.js.map +1 -0
  43. package/dist/transports/websocket.d.ts +37 -0
  44. package/dist/transports/websocket.d.ts.map +1 -0
  45. package/dist/transports/websocket.js +277 -0
  46. package/dist/transports/websocket.js.map +1 -0
  47. package/dist/types.d.ts +131 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +3 -0
  50. package/dist/types.js.map +1 -0
  51. package/dist/ui/dashboard.d.ts +2 -0
  52. package/dist/ui/dashboard.d.ts.map +1 -0
  53. package/dist/ui/dashboard.js +43 -0
  54. package/dist/ui/dashboard.js.map +1 -0
  55. package/dist/wait-state.d.ts +12 -0
  56. package/dist/wait-state.d.ts.map +1 -0
  57. package/dist/wait-state.js +27 -0
  58. package/dist/wait-state.js.map +1 -0
  59. package/grafana/siglo-live-monitoring.json +109 -0
  60. package/package.json +54 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/ui/dashboard.ts"],"names":[],"mappings":";;AACA,4CAqCC;AAtCD,wEAAwE;AACxE,SAAgB,gBAAgB;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCV,CAAC;AACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** Shared snapshot/live reducer. An explicit step ID must never update sibling waits. */
2
+ export declare function applyWaitEvent<T extends {
3
+ status: string;
4
+ stepName?: string;
5
+ }>(steps: Record<string, T>, event: {
6
+ type: string;
7
+ stepId?: string;
8
+ expiresAt?: unknown;
9
+ resumeReason?: unknown;
10
+ timestamp?: number;
11
+ }): Record<string, T>;
12
+ //# sourceMappingURL=wait-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-state.d.ts","sourceRoot":"","sources":["../src/wait-state.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EACxB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1G,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAmBnB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyWaitEvent = applyWaitEvent;
4
+ /** Shared snapshot/live reducer. An explicit step ID must never update sibling waits. */
5
+ function applyWaitEvent(steps, event) {
6
+ if (event.type !== 'flow:suspended' && event.type !== 'flow:resumed')
7
+ return steps;
8
+ const suspended = event.type === 'flow:suspended';
9
+ const next = { ...steps };
10
+ for (const [id, step] of Object.entries(steps)) {
11
+ const matches = event.stepId ? id === event.stepId : suspended
12
+ ? step.status === 'RUNNING' && /wait/i.test(step.stepName || '')
13
+ : step.status === 'SUSPENDED';
14
+ if (!matches)
15
+ continue;
16
+ const expiresAt = event.expiresAt;
17
+ next[id] = { ...step,
18
+ status: suspended ? 'SUSPENDED' : 'COMPLETED',
19
+ waitState: suspended ? 'waiting' : event.resumeReason === 'timer-expired' ? 'expired' : 'resumed',
20
+ ...(suspended ? { waitExpiresAt: typeof expiresAt === 'number' && Number.isSafeInteger(expiresAt)
21
+ && expiresAt >= 0 && expiresAt <= 8640000000000000 ? expiresAt : undefined }
22
+ : { endTime: event.timestamp })
23
+ };
24
+ }
25
+ return next;
26
+ }
27
+ //# sourceMappingURL=wait-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-state.js","sourceRoot":"","sources":["../src/wait-state.ts"],"names":[],"mappings":";;AACA,wCAsBC;AAvBD,yFAAyF;AACzF,SAAgB,cAAc,CAC1B,KAAwB,EACxB,KAAyG;IAEzG,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IACnF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC;IAClD,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC1D,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YAChE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;YAChB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;YAC7C,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACjG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;uBAC1F,SAAS,IAAI,CAAC,IAAI,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;gBAC5E,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;SACtC,CAAC;IACN,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,109 @@
1
+ {
2
+ "annotations": {
3
+ "list": []
4
+ },
5
+ "editable": true,
6
+ "fiscalYearStartMonth": 0,
7
+ "graphTooltip": 1,
8
+ "id": null,
9
+ "links": [],
10
+ "liveNow": true,
11
+ "panels": [
12
+ {
13
+ "collapsed": false,
14
+ "gridPos": { "h": 6, "w": 6, "x": 0, "y": 0 },
15
+ "id": 1,
16
+ "title": "Active Workflows",
17
+ "type": "stat",
18
+ "targets": [
19
+ { "expr": "siglo_active_flows", "refId": "A" }
20
+ ],
21
+ "options": {
22
+ "colorMode": "value",
23
+ "graphMode": "area",
24
+ "justifyMode": "auto"
25
+ }
26
+ },
27
+ {
28
+ "collapsed": false,
29
+ "gridPos": { "h": 6, "w": 6, "x": 6, "y": 0 },
30
+ "id": 2,
31
+ "title": "Total Completed Flows",
32
+ "type": "stat",
33
+ "targets": [
34
+ { "expr": "sum(siglo_flows_total{status=\"completed\"})", "refId": "A" }
35
+ ],
36
+ "options": {
37
+ "colorMode": "value",
38
+ "graphMode": "none"
39
+ }
40
+ },
41
+ {
42
+ "collapsed": false,
43
+ "gridPos": { "h": 6, "w": 6, "x": 12, "y": 0 },
44
+ "id": 3,
45
+ "title": "Total Failed Flows",
46
+ "type": "stat",
47
+ "targets": [
48
+ { "expr": "sum(siglo_flows_total{status=\"failed\"})", "refId": "A" }
49
+ ],
50
+ "options": {
51
+ "colorMode": "value",
52
+ "graphMode": "none"
53
+ }
54
+ },
55
+ {
56
+ "collapsed": false,
57
+ "gridPos": { "h": 6, "w": 6, "x": 18, "y": 0 },
58
+ "id": 4,
59
+ "title": "Step Retries Total",
60
+ "type": "stat",
61
+ "targets": [
62
+ { "expr": "sum(siglo_step_retries_total)", "refId": "A" }
63
+ ],
64
+ "options": {
65
+ "colorMode": "value",
66
+ "graphMode": "none"
67
+ }
68
+ },
69
+ {
70
+ "collapsed": false,
71
+ "gridPos": { "h": 8, "w": 12, "x": 0, "y": 6 },
72
+ "id": 5,
73
+ "title": "Workflow Execution Duration (Seconds)",
74
+ "type": "timeseries",
75
+ "targets": [
76
+ {
77
+ "expr": "rate(siglo_flow_duration_seconds_sum[1m]) / rate(siglo_flow_duration_seconds_count[1m])",
78
+ "legendFormat": "Avg Duration (s)",
79
+ "refId": "A"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "collapsed": false,
85
+ "gridPos": { "h": 8, "w": 12, "x": 12, "y": 6 },
86
+ "id": 6,
87
+ "title": "Step Throughput by Status",
88
+ "type": "timeseries",
89
+ "targets": [
90
+ {
91
+ "expr": "sum by (status) (rate(siglo_steps_total[1m]))",
92
+ "legendFormat": "{{status}}",
93
+ "refId": "A"
94
+ }
95
+ ]
96
+ }
97
+ ],
98
+ "refresh": "5s",
99
+ "schemaVersion": 38,
100
+ "style": "dark",
101
+ "tags": ["siglo", "live-monitoring", "workflows"],
102
+ "time": {
103
+ "from": "now-15m",
104
+ "to": "now"
105
+ },
106
+ "title": "Siglo - Live Workflow Monitoring",
107
+ "uid": "siglo-live-monitoring",
108
+ "version": 1
109
+ }
package/package.json CHANGED
@@ -1,6 +1,56 @@
1
1
  {
2
2
  "name": "@siglo/monitor",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.1",
4
+ "description": "Live workflow monitoring server, SSE/WebSocket transports, and web dashboard for Siglo",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./package.json": "./package.json"
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md",
19
+ "LICENSE",
20
+ "grafana"
21
+ ],
22
+ "publishConfig": {
23
+ "access": "public",
24
+ "registry": "https://registry.npmjs.org/"
25
+ },
26
+ "scripts": {
27
+ "build": "tsc -p tsconfig.json",
28
+ "build:ui": "npm --prefix ui run build",
29
+ "dev:ui": "npm --prefix ui run dev",
30
+ "prepublishOnly": "npm run build:ui && npm run build",
31
+ "test": "npm run build && mocha -r tsx --exit 'src/**/*.test.ts'"
32
+ },
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/jsoftgem/siglo.git",
36
+ "directory": "packages/monitor"
37
+ },
38
+ "author": "Jerico de Guzman",
39
+ "license": "MIT",
40
+ "bugs": {
41
+ "url": "https://github.com/jsoftgem/siglo/issues"
42
+ },
43
+ "homepage": "https://github.com/jsoftgem/siglo#readme",
44
+ "dependencies": {
45
+ "@siglo/core": "^1.0.0"
46
+ },
47
+ "devDependencies": {
48
+ "@types/chai": "^5.2.3",
49
+ "@types/mocha": "^10.0.10",
50
+ "@types/node": "^26.6.5",
51
+ "chai": "^3.5.0",
52
+ "mocha": "^12.0.3",
53
+ "tsx": "^4.23.15",
54
+ "typescript": "~5.7.0"
55
+ }
56
+ }