bunqueue-dashboard 0.0.14 → 0.0.16

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 (54) hide show
  1. package/README.md +13 -4
  2. package/agent/logger.ts +68 -14
  3. package/dist/.vite/manifest.json +58 -98
  4. package/dist/assets/{AddJob-DOtZrwc-.js → AddJob-CMIT6e17.js} +1 -1
  5. package/dist/assets/{Benchmark-BKVE509y.js → Benchmark-Dq1-vJ2k.js} +1 -1
  6. package/dist/assets/{CopilotPanel-Bn8gPZx_.js → CopilotPanel-BDZzDmVy.js} +1 -1
  7. package/dist/assets/{CopyButton-CSjndiY7.js → CopyButton-XT7ykzf5.js} +1 -1
  8. package/dist/assets/{Cron-DzeoQTpD.js → Cron-9hndZ-Z5.js} +1 -1
  9. package/dist/assets/{CronManager-CI6wTFbe.js → CronManager-BQupx6wZ.js} +1 -1
  10. package/dist/assets/{Database-Bjkl_O9n.js → Database-Difs7xYV.js} +1 -1
  11. package/dist/assets/{Diagnostics-BUeDbexv.js → Diagnostics-BzVDq9CH.js} +1 -1
  12. package/dist/assets/{Dlq-BzwhitJI.js → Dlq-BCUVh_NO.js} +1 -1
  13. package/dist/assets/{DlqControl-BUCut0SS.js → DlqControl-Cu2i1oq5.js} +1 -1
  14. package/dist/assets/{DlqPro-HoeGdD-B.js → DlqPro-HBrCftLD.js} +1 -1
  15. package/dist/assets/{Flows-D9sVq4vd.js → Flows-D3Bvkmd6.js} +1 -1
  16. package/dist/assets/{JobInspector-dB68adRz.js → JobInspector-B7zEuFhM.js} +1 -1
  17. package/dist/assets/{Jobs-CAHFY5qa.js → Jobs-ovYRwmwi.js} +1 -1
  18. package/dist/assets/{JobsPro-BqIHonV6.js → JobsPro-DNZivuzq.js} +1 -1
  19. package/dist/assets/{Logs-DjNLXK_r.js → Logs-CjM7MNYN.js} +1 -1
  20. package/dist/assets/{LogsPro-BPWf8AAv.js → LogsPro-P73LCkap.js} +1 -1
  21. package/dist/assets/{McpServer-BVxK5LwU.js → McpServer-CUK20-uN.js} +1 -1
  22. package/dist/assets/{Metrics-Bm_pwxzy.js → Metrics-BodjiKpf.js} +1 -1
  23. package/dist/assets/{MetricsPro-DTsnXQVd.js → MetricsPro-CqcH6gJp.js} +1 -1
  24. package/dist/assets/{Overview-O67Y-R5x.js → Overview-AwCA3XI2.js} +1 -1
  25. package/dist/assets/{Pagination-B-nfZjQZ.js → Pagination-Cd6lHj2E.js} +1 -1
  26. package/dist/assets/{QueueControl-BrHXeXPc.js → QueueControl-D7J1JObu.js} +1 -1
  27. package/dist/assets/{QueueDetail-D-C5SXxB.js → QueueDetail-BtiN0s3b.js} +1 -1
  28. package/dist/assets/{Queues-5tq1o_1I.js → Queues-LrodynCj.js} +1 -1
  29. package/dist/assets/{QueuesOverview-ClZM34rT.js → QueuesOverview-DrYjyped.js} +1 -1
  30. package/dist/assets/{S3Backup-BZfckRKX.js → S3Backup-et1PcCC0.js} +1 -1
  31. package/dist/assets/{S3BackupPro-CteU25_J.js → S3BackupPro-BEo_EVAO.js} +1 -1
  32. package/dist/assets/{ServerControl-BSLX2WeV.js → ServerControl-BRLFRj7k.js} +1 -1
  33. package/dist/assets/{Settings-BAELEgud.js → Settings-CeRZgZU6.js} +1 -1
  34. package/dist/assets/{Usage-B_8T34Sp.js → Usage-CHCg6VNy.js} +1 -1
  35. package/dist/assets/{UsagePro-BhhM0H05.js → UsagePro-Cto9k5OI.js} +1 -1
  36. package/dist/assets/{Webhooks-B_qJ0bx1.js → Webhooks-Cm3vZEp7.js} +1 -1
  37. package/dist/assets/{Workers-N6qIdxg1.js → Workers-CVfx3TK-.js} +1 -1
  38. package/dist/assets/{WorkersPro-DzjKVhCO.js → WorkersPro-BidtV_Bp.js} +1 -1
  39. package/dist/assets/index-BWY8Yofc.css +1 -0
  40. package/dist/assets/{index-ChJpSdwV.js → index-C9fPU4bV.js} +3 -3
  41. package/dist/index.html +2 -2
  42. package/package.json +2 -7
  43. package/scripts/embedded.gen.ts +98 -114
  44. package/scripts/serve.ts +33 -6
  45. package/CHANGELOG.md +0 -315
  46. package/dist/assets/index-DNaP_bi8.css +0 -1
  47. package/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  48. package/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  49. package/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  50. package/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  51. package/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  52. package/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  53. package/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  54. package/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
@@ -1,122 +1,106 @@
1
1
  // AUTO-GENERATED by scripts/gen-embed.ts — do not edit, not committed.
2
2
  import f0 from "../dist/.vite/manifest.json" with { type: 'file' };
3
3
  import f1 from "../dist/favicon.svg" with { type: 'file' };
4
- import f2 from "../dist/assets/QueueDetail-D-C5SXxB.js" with { type: 'file' };
5
- import f3 from "../dist/assets/LogsPro-BPWf8AAv.js" with { type: 'file' };
6
- import f4 from "../dist/assets/UsagePro-BhhM0H05.js" with { type: 'file' };
7
- import f5 from "../dist/assets/Cron-DzeoQTpD.js" with { type: 'file' };
8
- import f6 from "../dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2" with { type: 'file' };
9
- import f7 from "../dist/assets/Dlq-BzwhitJI.js" with { type: 'file' };
10
- import f8 from "../dist/assets/Logs-DjNLXK_r.js" with { type: 'file' };
11
- import f9 from "../dist/assets/AreaChart-DzUXW8u3.js" with { type: 'file' };
12
- import f10 from "../dist/assets/Diagnostics-BUeDbexv.js" with { type: 'file' };
13
- import f11 from "../dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2" with { type: 'file' };
14
- import f12 from "../dist/assets/Overview-O67Y-R5x.js" with { type: 'file' };
15
- import f13 from "../dist/assets/ServerControl-BSLX2WeV.js" with { type: 'file' };
16
- import f14 from "../dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2" with { type: 'file' };
17
- import f15 from "../dist/assets/McpServer-BVxK5LwU.js" with { type: 'file' };
18
- import f16 from "../dist/assets/Usage-B_8T34Sp.js" with { type: 'file' };
19
- import f17 from "../dist/assets/form-PtDLk33Z.js" with { type: 'file' };
20
- import f18 from "../dist/assets/Benchmark-BKVE509y.js" with { type: 'file' };
21
- import f19 from "../dist/assets/QueuesOverview-ClZM34rT.js" with { type: 'file' };
22
- import f20 from "../dist/assets/react-vendor-CHIHtdAC.js" with { type: 'file' };
23
- import f21 from "../dist/assets/Workers-N6qIdxg1.js" with { type: 'file' };
24
- import f22 from "../dist/assets/DlqControl-BUCut0SS.js" with { type: 'file' };
25
- import f23 from "../dist/assets/JobInspector-dB68adRz.js" with { type: 'file' };
26
- import f24 from "../dist/assets/jobActions-CuOdMglt.js" with { type: 'file' };
27
- import f25 from "../dist/assets/WorkersPro-DzjKVhCO.js" with { type: 'file' };
28
- import f26 from "../dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2" with { type: 'file' };
29
- import f27 from "../dist/assets/Webhooks-B_qJ0bx1.js" with { type: 'file' };
30
- import f28 from "../dist/assets/CopilotPanel-Bn8gPZx_.js" with { type: 'file' };
31
- import f29 from "../dist/assets/connectionStore-DI-LYcct.js" with { type: 'file' };
32
- import f30 from "../dist/assets/JobsPro-BqIHonV6.js" with { type: 'file' };
33
- import f31 from "../dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2" with { type: 'file' };
34
- import f32 from "../dist/assets/QueueControl-BrHXeXPc.js" with { type: 'file' };
35
- import f33 from "../dist/assets/Pagination-B-nfZjQZ.js" with { type: 'file' };
36
- import f34 from "../dist/assets/Queues-5tq1o_1I.js" with { type: 'file' };
37
- import f35 from "../dist/assets/cn-CMFYpumL.js" with { type: 'file' };
38
- import f36 from "../dist/assets/CronManager-CI6wTFbe.js" with { type: 'file' };
39
- import f37 from "../dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2" with { type: 'file' };
40
- import f38 from "../dist/assets/CopyButton-CSjndiY7.js" with { type: 'file' };
41
- import f39 from "../dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2" with { type: 'file' };
42
- import f40 from "../dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2" with { type: 'file' };
43
- import f41 from "../dist/assets/Database-Bjkl_O9n.js" with { type: 'file' };
44
- import f42 from "../dist/assets/AddJob-DOtZrwc-.js" with { type: 'file' };
45
- import f43 from "../dist/assets/Settings-BAELEgud.js" with { type: 'file' };
46
- import f44 from "../dist/assets/S3BackupPro-CteU25_J.js" with { type: 'file' };
47
- import f45 from "../dist/assets/Metrics-Bm_pwxzy.js" with { type: 'file' };
48
- import f46 from "../dist/assets/MetricsPro-DTsnXQVd.js" with { type: 'file' };
49
- import f47 from "../dist/assets/DlqPro-HoeGdD-B.js" with { type: 'file' };
50
- import f48 from "../dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2" with { type: 'file' };
51
- import f49 from "../dist/assets/index-ChJpSdwV.js" with { type: 'file' };
52
- import f50 from "../dist/assets/index-DNaP_bi8.css" with { type: 'file' };
53
- import f51 from "../dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2" with { type: 'file' };
54
- import f52 from "../dist/assets/install-BvB40Zk0.js" with { type: 'file' };
55
- import f53 from "../dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2" with { type: 'file' };
56
- import f54 from "../dist/assets/S3Backup-BZfckRKX.js" with { type: 'file' };
57
- import f55 from "../dist/assets/Flows-D9sVq4vd.js" with { type: 'file' };
58
- import f56 from "../dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2" with { type: 'file' };
59
- import f57 from "../dist/assets/Jobs-CAHFY5qa.js" with { type: 'file' };
60
- import f58 from "../dist/index.html" with { type: 'file' };
4
+ import f2 from "../dist/assets/LogsPro-P73LCkap.js" with { type: 'file' };
5
+ import f3 from "../dist/assets/AddJob-CMIT6e17.js" with { type: 'file' };
6
+ import f4 from "../dist/assets/DlqControl-Cu2i1oq5.js" with { type: 'file' };
7
+ import f5 from "../dist/assets/AreaChart-DzUXW8u3.js" with { type: 'file' };
8
+ import f6 from "../dist/assets/Overview-AwCA3XI2.js" with { type: 'file' };
9
+ import f7 from "../dist/assets/QueuesOverview-DrYjyped.js" with { type: 'file' };
10
+ import f8 from "../dist/assets/index-BWY8Yofc.css" with { type: 'file' };
11
+ import f9 from "../dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2" with { type: 'file' };
12
+ import f10 from "../dist/assets/S3Backup-et1PcCC0.js" with { type: 'file' };
13
+ import f11 from "../dist/assets/Logs-CjM7MNYN.js" with { type: 'file' };
14
+ import f12 from "../dist/assets/CronManager-BQupx6wZ.js" with { type: 'file' };
15
+ import f13 from "../dist/assets/JobInspector-B7zEuFhM.js" with { type: 'file' };
16
+ import f14 from "../dist/assets/Dlq-BCUVh_NO.js" with { type: 'file' };
17
+ import f15 from "../dist/assets/form-PtDLk33Z.js" with { type: 'file' };
18
+ import f16 from "../dist/assets/DlqPro-HBrCftLD.js" with { type: 'file' };
19
+ import f17 from "../dist/assets/index-C9fPU4bV.js" with { type: 'file' };
20
+ import f18 from "../dist/assets/Diagnostics-BzVDq9CH.js" with { type: 'file' };
21
+ import f19 from "../dist/assets/Pagination-Cd6lHj2E.js" with { type: 'file' };
22
+ import f20 from "../dist/assets/CopilotPanel-BDZzDmVy.js" with { type: 'file' };
23
+ import f21 from "../dist/assets/Jobs-ovYRwmwi.js" with { type: 'file' };
24
+ import f22 from "../dist/assets/JobsPro-DNZivuzq.js" with { type: 'file' };
25
+ import f23 from "../dist/assets/Cron-9hndZ-Z5.js" with { type: 'file' };
26
+ import f24 from "../dist/assets/CopyButton-XT7ykzf5.js" with { type: 'file' };
27
+ import f25 from "../dist/assets/react-vendor-CHIHtdAC.js" with { type: 'file' };
28
+ import f26 from "../dist/assets/WorkersPro-BidtV_Bp.js" with { type: 'file' };
29
+ import f27 from "../dist/assets/MetricsPro-CqcH6gJp.js" with { type: 'file' };
30
+ import f28 from "../dist/assets/jobActions-CuOdMglt.js" with { type: 'file' };
31
+ import f29 from "../dist/assets/Queues-LrodynCj.js" with { type: 'file' };
32
+ import f30 from "../dist/assets/connectionStore-DI-LYcct.js" with { type: 'file' };
33
+ import f31 from "../dist/assets/McpServer-CUK20-uN.js" with { type: 'file' };
34
+ import f32 from "../dist/assets/Usage-CHCg6VNy.js" with { type: 'file' };
35
+ import f33 from "../dist/assets/Settings-CeRZgZU6.js" with { type: 'file' };
36
+ import f34 from "../dist/assets/cn-CMFYpumL.js" with { type: 'file' };
37
+ import f35 from "../dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2" with { type: 'file' };
38
+ import f36 from "../dist/assets/Webhooks-Cm3vZEp7.js" with { type: 'file' };
39
+ import f37 from "../dist/assets/S3BackupPro-BEo_EVAO.js" with { type: 'file' };
40
+ import f38 from "../dist/assets/ServerControl-BRLFRj7k.js" with { type: 'file' };
41
+ import f39 from "../dist/assets/Workers-CVfx3TK-.js" with { type: 'file' };
42
+ import f40 from "../dist/assets/QueueDetail-BtiN0s3b.js" with { type: 'file' };
43
+ import f41 from "../dist/assets/Database-Difs7xYV.js" with { type: 'file' };
44
+ import f42 from "../dist/assets/UsagePro-Cto9k5OI.js" with { type: 'file' };
45
+ import f43 from "../dist/assets/QueueControl-D7J1JObu.js" with { type: 'file' };
46
+ import f44 from "../dist/assets/Metrics-BodjiKpf.js" with { type: 'file' };
47
+ import f45 from "../dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2" with { type: 'file' };
48
+ import f46 from "../dist/assets/install-BvB40Zk0.js" with { type: 'file' };
49
+ import f47 from "../dist/assets/Flows-D3Bvkmd6.js" with { type: 'file' };
50
+ import f48 from "../dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2" with { type: 'file' };
51
+ import f49 from "../dist/assets/Benchmark-Dq1-vJ2k.js" with { type: 'file' };
52
+ import f50 from "../dist/index.html" with { type: 'file' };
61
53
 
62
54
  export const ASSETS: Record<string, string> = {
63
55
  "/.vite/manifest.json": f0,
64
56
  "/favicon.svg": f1,
65
- "/assets/QueueDetail-D-C5SXxB.js": f2,
66
- "/assets/LogsPro-BPWf8AAv.js": f3,
67
- "/assets/UsagePro-BhhM0H05.js": f4,
68
- "/assets/Cron-DzeoQTpD.js": f5,
69
- "/assets/inter-greek-wght-normal-CkhJZR-_.woff2": f6,
70
- "/assets/Dlq-BzwhitJI.js": f7,
71
- "/assets/Logs-DjNLXK_r.js": f8,
72
- "/assets/AreaChart-DzUXW8u3.js": f9,
73
- "/assets/Diagnostics-BUeDbexv.js": f10,
74
- "/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2": f11,
75
- "/assets/Overview-O67Y-R5x.js": f12,
76
- "/assets/ServerControl-BSLX2WeV.js": f13,
77
- "/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2": f14,
78
- "/assets/McpServer-BVxK5LwU.js": f15,
79
- "/assets/Usage-B_8T34Sp.js": f16,
80
- "/assets/form-PtDLk33Z.js": f17,
81
- "/assets/Benchmark-BKVE509y.js": f18,
82
- "/assets/QueuesOverview-ClZM34rT.js": f19,
83
- "/assets/react-vendor-CHIHtdAC.js": f20,
84
- "/assets/Workers-N6qIdxg1.js": f21,
85
- "/assets/DlqControl-BUCut0SS.js": f22,
86
- "/assets/JobInspector-dB68adRz.js": f23,
87
- "/assets/jobActions-CuOdMglt.js": f24,
88
- "/assets/WorkersPro-DzjKVhCO.js": f25,
89
- "/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2": f26,
90
- "/assets/Webhooks-B_qJ0bx1.js": f27,
91
- "/assets/CopilotPanel-Bn8gPZx_.js": f28,
92
- "/assets/connectionStore-DI-LYcct.js": f29,
93
- "/assets/JobsPro-BqIHonV6.js": f30,
94
- "/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2": f31,
95
- "/assets/QueueControl-BrHXeXPc.js": f32,
96
- "/assets/Pagination-B-nfZjQZ.js": f33,
97
- "/assets/Queues-5tq1o_1I.js": f34,
98
- "/assets/cn-CMFYpumL.js": f35,
99
- "/assets/CronManager-CI6wTFbe.js": f36,
100
- "/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2": f37,
101
- "/assets/CopyButton-CSjndiY7.js": f38,
102
- "/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2": f39,
103
- "/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2": f40,
104
- "/assets/Database-Bjkl_O9n.js": f41,
105
- "/assets/AddJob-DOtZrwc-.js": f42,
106
- "/assets/Settings-BAELEgud.js": f43,
107
- "/assets/S3BackupPro-CteU25_J.js": f44,
108
- "/assets/Metrics-Bm_pwxzy.js": f45,
109
- "/assets/MetricsPro-DTsnXQVd.js": f46,
110
- "/assets/DlqPro-HoeGdD-B.js": f47,
111
- "/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2": f48,
112
- "/assets/index-ChJpSdwV.js": f49,
113
- "/assets/index-DNaP_bi8.css": f50,
114
- "/assets/inter-latin-wght-normal-Dx4kXJAl.woff2": f51,
115
- "/assets/install-BvB40Zk0.js": f52,
116
- "/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2": f53,
117
- "/assets/S3Backup-BZfckRKX.js": f54,
118
- "/assets/Flows-D9sVq4vd.js": f55,
119
- "/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2": f56,
120
- "/assets/Jobs-CAHFY5qa.js": f57,
121
- "/index.html": f58,
57
+ "/assets/LogsPro-P73LCkap.js": f2,
58
+ "/assets/AddJob-CMIT6e17.js": f3,
59
+ "/assets/DlqControl-Cu2i1oq5.js": f4,
60
+ "/assets/AreaChart-DzUXW8u3.js": f5,
61
+ "/assets/Overview-AwCA3XI2.js": f6,
62
+ "/assets/QueuesOverview-DrYjyped.js": f7,
63
+ "/assets/index-BWY8Yofc.css": f8,
64
+ "/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2": f9,
65
+ "/assets/S3Backup-et1PcCC0.js": f10,
66
+ "/assets/Logs-CjM7MNYN.js": f11,
67
+ "/assets/CronManager-BQupx6wZ.js": f12,
68
+ "/assets/JobInspector-B7zEuFhM.js": f13,
69
+ "/assets/Dlq-BCUVh_NO.js": f14,
70
+ "/assets/form-PtDLk33Z.js": f15,
71
+ "/assets/DlqPro-HBrCftLD.js": f16,
72
+ "/assets/index-C9fPU4bV.js": f17,
73
+ "/assets/Diagnostics-BzVDq9CH.js": f18,
74
+ "/assets/Pagination-Cd6lHj2E.js": f19,
75
+ "/assets/CopilotPanel-BDZzDmVy.js": f20,
76
+ "/assets/Jobs-ovYRwmwi.js": f21,
77
+ "/assets/JobsPro-DNZivuzq.js": f22,
78
+ "/assets/Cron-9hndZ-Z5.js": f23,
79
+ "/assets/CopyButton-XT7ykzf5.js": f24,
80
+ "/assets/react-vendor-CHIHtdAC.js": f25,
81
+ "/assets/WorkersPro-BidtV_Bp.js": f26,
82
+ "/assets/MetricsPro-CqcH6gJp.js": f27,
83
+ "/assets/jobActions-CuOdMglt.js": f28,
84
+ "/assets/Queues-LrodynCj.js": f29,
85
+ "/assets/connectionStore-DI-LYcct.js": f30,
86
+ "/assets/McpServer-CUK20-uN.js": f31,
87
+ "/assets/Usage-CHCg6VNy.js": f32,
88
+ "/assets/Settings-CeRZgZU6.js": f33,
89
+ "/assets/cn-CMFYpumL.js": f34,
90
+ "/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2": f35,
91
+ "/assets/Webhooks-Cm3vZEp7.js": f36,
92
+ "/assets/S3BackupPro-BEo_EVAO.js": f37,
93
+ "/assets/ServerControl-BRLFRj7k.js": f38,
94
+ "/assets/Workers-CVfx3TK-.js": f39,
95
+ "/assets/QueueDetail-BtiN0s3b.js": f40,
96
+ "/assets/Database-Difs7xYV.js": f41,
97
+ "/assets/UsagePro-Cto9k5OI.js": f42,
98
+ "/assets/QueueControl-D7J1JObu.js": f43,
99
+ "/assets/Metrics-BodjiKpf.js": f44,
100
+ "/assets/inter-latin-wght-normal-Dx4kXJAl.woff2": f45,
101
+ "/assets/install-BvB40Zk0.js": f46,
102
+ "/assets/Flows-D3Bvkmd6.js": f47,
103
+ "/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2": f48,
104
+ "/assets/Benchmark-Dq1-vJ2k.js": f49,
105
+ "/index.html": f50,
122
106
  };
package/scripts/serve.ts CHANGED
@@ -7,7 +7,11 @@
7
7
  * 2. Proxies /api/* to the bunqueue server (BUNQUEUE_URL, default :6790) —
8
8
  * same-origin like the dev proxy, so no CORS and SSE streams through.
9
9
  * 3. Runs the control agent (start/stop/restart bunqueue) on 127.0.0.1:6800
10
- * with the same Origin-allowlist security as agent/index.ts.
10
+ * with the same Origin-allowlist security as agent/index.ts — and ALSO
11
+ * exposes it same-origin at /agent/* (the served index.html gets
12
+ * `window.__BUNQUEUE_AGENT_URL__ = '/agent'` injected), so the prebuilt
13
+ * SPA finds the agent regardless of AGENT_PORT and even from a remote
14
+ * browser, where loopback :6800 would be unreachable.
11
15
  *
12
16
  * Env: PORT (dashboard, default 8080) · BIND_ADDR (default 127.0.0.1) ·
13
17
  * BUNQUEUE_URL · AGENT_PORT · AGENT_ALLOWED_ORIGINS · AGENT_TOKEN ·
@@ -43,13 +47,34 @@ const agentHandle = createFetchHandler(mgr, {
43
47
  });
44
48
  Bun.serve({ port: AGENT_PORT, hostname: '127.0.0.1', fetch: agentHandle });
45
49
 
46
- // Dashboard + /api proxy.
50
+ // index.html with the runtime agent base injected, prepared once at startup.
51
+ // The SPA's lib/bq.ts reads window.__BUNQUEUE_AGENT_URL__ before its baked-in
52
+ // default, so Server Control works whatever AGENT_PORT is — the /agent/*
53
+ // route below forwards to the in-process agent handler.
54
+ const INDEX_HTML = (await Bun.file(ASSETS['/index.html']).text()).replace(
55
+ '</head>',
56
+ "<script>window.__BUNQUEUE_AGENT_URL__='/agent'</script></head>"
57
+ );
58
+ const indexResponse = () =>
59
+ new Response(INDEX_HTML, { headers: { 'content-type': 'text/html; charset=utf-8' } });
60
+
61
+ // Dashboard + /api proxy + same-origin /agent proxy.
47
62
  Bun.serve({
48
63
  port: PORT,
49
64
  hostname: HOST,
50
65
  async fetch(req) {
51
66
  const url = new URL(req.url);
52
67
 
68
+ // Same-origin bridge to the control agent: strip the /agent prefix and
69
+ // hand the request to the in-process agent handler (no loopback hop).
70
+ // The agent's own Origin allowlist + optional AGENT_TOKEN still apply —
71
+ // this changes reachability, not authorization.
72
+ if (url.pathname === '/agent' || url.pathname.startsWith('/agent/')) {
73
+ const sub = new URL(url.pathname.slice('/agent'.length) || '/', 'http://agent.internal');
74
+ sub.search = url.search;
75
+ return agentHandle(new Request(sub, req));
76
+ }
77
+
53
78
  // Same-origin proxy to the bunqueue server (mirrors the Vite dev proxy).
54
79
  if (url.pathname === '/api' || url.pathname.startsWith('/api/')) {
55
80
  const target = API + (url.pathname.slice(4) || '/') + url.search;
@@ -74,11 +99,13 @@ Bun.serve({
74
99
  // Embedded static assets with SPA history fallback. A missing fingerprinted
75
100
  // /assets/* file must 404 (as docker/Caddyfile does) — falling back to
76
101
  // index.html would feed HTML to a stale chunk import() and mask the miss.
102
+ // index.html (direct or via fallback) is served from the injected copy.
77
103
  const key = url.pathname === '/' ? '/index.html' : url.pathname;
78
- const asset =
79
- ASSETS[key] ?? (url.pathname.startsWith('/assets/') ? undefined : ASSETS['/index.html']);
80
- if (!asset) return new Response('Not found', { status: 404 });
81
- return new Response(Bun.file(asset));
104
+ if (key === '/index.html') return indexResponse();
105
+ const asset = ASSETS[key];
106
+ if (asset) return new Response(Bun.file(asset));
107
+ if (url.pathname.startsWith('/assets/')) return new Response('Not found', { status: 404 });
108
+ return indexResponse();
82
109
  },
83
110
  });
84
111
 
package/CHANGELOG.md DELETED
@@ -1,315 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project are documented here.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
- The version is owned by `package.json` (starting at `0.0.1`) and bumped on every
7
- push to `main`; `.github/workflows/release.yml` tags and publishes `v<version>`
8
- to match.
9
-
10
- **Process (see `CLAUDE.md`):** before every push to `main`, record changes under
11
- `## [Unreleased]` and bump `package.json`'s `version`. For every version, rename
12
- `[Unreleased]` to the bumped version and start a fresh empty `[Unreleased]`. The
13
- release workflow publishes the matching version section (or `[Unreleased]`) as
14
- the GitHub Release body.
15
-
16
- ## [Unreleased]
17
-
18
- ## [0.0.14] - 2026-07-03
19
-
20
- ### Added
21
- - **npm package: `bunx bunqueue-dashboard`.** The dashboard is now publishable
22
- to npm as a Bun-first CLI: one command serves the prebuilt SPA, proxies
23
- `/api/*` to the bunqueue server, and runs the control agent — the same
24
- `scripts/serve.ts` the standalone binaries compile, running uncompiled
25
- (verified: SPA, history fallback, proxy, and agent all answer from a tarball
26
- install). The tarball ships `dist/` + the agent + the embed manifest only;
27
- runtime dependencies are down to `pino`/`pino-pretty` (the UI libraries are
28
- build-time and moved to devDependencies). `release.yml` gains an idempotent
29
- `npm` job: it publishes with `--provenance` iff the `NPM_TOKEN` secret is set
30
- and the version isn't already on the registry — a missing secret or an
31
- un-bumped version is a clean skip, never a failure.
32
-
33
- ## [0.0.13] - 2026-07-03
34
-
35
- ### Fixed
36
- - **A page opened in a background tab no longer sits on "Loading…" forever.**
37
- `usePolledData` paused polling while the tab was hidden — including the very
38
- first fetch, so a cmd-clicked tab showed a permanent spinner (and the sidebar
39
- a permanent "connecting") until focused. The first fetch now always runs;
40
- only the recurring refreshes pause with the Page Visibility API.
41
- - **Overview / Metrics / Usage / Jobs no longer report 0 completed jobs after a
42
- server restart.** Their Completed / Failed cards and error rates read the
43
- `totalCompleted`/`totalFailed` session counters (zeroed on every restart,
44
- labeled "all time") while the queues visibly held thousands of completed
45
- jobs. They now read the recorded counts (`stats.completed` + per-queue failed
46
- sums from `/queues/summary`); the counters that really are per-session
47
- (pushed/pulled) are now labeled "since restart", and Diagnostics' "Lifetime
48
- totals" card is renamed "Totals since restart".
49
- - **"100.00% success rate" is no longer claimed over zero processed jobs.**
50
- Error/success rates render an em dash until at least one job has completed
51
- or failed (`errorRate` now returns `null` for an empty denominator).
52
- - **Jobs Explorer stat cards no longer flash hard zeros while loading** — they
53
- show placeholders until the overview poll arrives, and the Total card is
54
- labeled "all queues" so the global numbers aren't read as the selected
55
- queue's.
56
- - **Process logs (Server page) no longer show raw ANSI escape codes** — the
57
- bunqueue banner's `[1m…[0m` color noise is stripped from display, search,
58
- copy, and download (new `stripAnsi` in `lib/format.ts`).
59
- - **Environment-variable rows (Server page) get a usable value field.** The
60
- KEY input swallowed the whole row and the value input collapsed to a sliver:
61
- `Input` always carries `w-full` and `cn()` does no Tailwind conflict
62
- resolution, so the `w-2/5`/`flex-1` passed by the editor lost to it. Widths
63
- now live on wrapper divs.
64
-
65
- ### Changed
66
- - **Dead Letter Queue auto-selects the biggest non-empty queue** on first load
67
- (like DLQ Control) instead of parking on a "Select a queue" prompt.
68
- - **Flows remembers the flows you've viewed** (locally, up to 8) and offers
69
- them as one-click chips in the empty state — bunqueue has no "list flows"
70
- endpoint, so this replaces a dead end with a way back in.
71
-
72
- ## [0.0.12] - 2026-07-03
73
-
74
- ### Added
75
- - **Animated product tour.** A roughly 50-second guided tour on the README (an
76
- optimized GIF) and on the docs home (an autoplaying, muted, looping MP4, a far
77
- lighter video so it does not slow the home page), clicking through the
78
- overview, queues, jobs, the dead-letter queue, flows, the SQLite inspector,
79
- and the AI Copilot.
80
-
81
- ## [0.0.11] - 2026-07-03
82
-
83
- ### Added
84
- - **Copilot (experimental): an in-dashboard AI assistant.** A chat panel (the
85
- button in the bottom right) that reads your live queue state and can propose
86
- actions you confirm before they run. Bring your own model via the Vercel AI
87
- SDK: Claude (Anthropic), ChatGPT (OpenAI), Gemini (Google), GLM (Z.ai),
88
- OpenRouter (one key for every model), or any OpenAI-compatible endpoint
89
- (Groq, Together, a local Ollama or LM Studio). Your API key stays in memory
90
- for the session only and is never written to disk; the provider and model are
91
- remembered. Read tools (queues, jobs, DLQ, workers, crons, health) run
92
- immediately; mutating tools (retry, promote, remove, pause/resume, retry/purge
93
- DLQ) are gated behind an explicit in-chat confirmation. The whole panel plus
94
- the AI SDK (~165 KB gz) is lazy-loaded, so it adds nothing to the initial
95
- bundle. New `docs/guide/copilot` page.
96
-
97
- ### Changed
98
- - **Bundle budget now measures the INITIAL load, not every chunk.** The
99
- `bun run size` gate reads Vite's build manifest and sums the entry chunk plus
100
- its static imports (currently ~91 KB gz, budget 230 KB), so lazily-loaded
101
- features (the demo shim, the Copilot) no longer count against it. A separate,
102
- generous cap on the grand total still guards against a runaway dependency.
103
-
104
- ## [0.0.10] - 2026-07-03
105
-
106
- ### Added
107
- - **Flows: an interactive job-flow DAG.** A new page that draws a job flow as a
108
- graph, parent to children (solid edges) and dependency edges (dashed), with
109
- every node coloured by state. Paste any job ID (or use the new **View flow**
110
- link in the Job Inspector); the page climbs `parentId` to the flow's root, then
111
- walks `childrenIds` and `dependsOn` client-side (bunqueue has no single
112
- "get whole flow" endpoint), lays it out with a pure, unit-tested layered-layout
113
- engine, and lets you click any node to inspect it. 100% frontend, no graph
114
- library. Demo mode ships a sample flow so the page is populated out of the box.
115
- New "Flows" nav item (Queues) and a `docs/guide/flows` page.
116
-
117
- ### Changed
118
- - **Full-width pages.** Add Job and Settings now fill the content width with a
119
- two-column layout instead of a narrow centred column, and the Job Inspector
120
- lookup bar spans the width.
121
-
122
- ### Fixed
123
- - **Classic DLQ page no longer crashes.** It rendered the job's `attempts` field
124
- directly, but the verified DLQ-entry shape makes `attempts` an array, so React
125
- threw "Objects are not valid as a React child" (a white screen) against both a
126
- real server and the demo. It now shows the attempt count, and the row key no
127
- longer relies on a missing `id`.
128
- - **Job Inspector custom-ID lookup.** A `200` with no `job` (a custom id that
129
- resolves to nothing) is now treated as "not found" instead of throwing
130
- `Cannot read properties of undefined (reading 'state')`. Demo mode also answers
131
- `GET /jobs/custom/:id`, so custom-id lookups work there too.
132
-
133
- ## [0.0.9] - 2026-07-03
134
-
135
- ### Added
136
- - **MCP Server page + docs.** A setup and reference for bunqueue's Model Context
137
- Protocol server (`bunqueue-mcp`), which lets AI agents (Claude Desktop, Claude
138
- Code) drive the queue. Copy-able configs for both connection modes (embedded
139
- via `DATA_PATH`, and TCP via `BUNQUEUE_MODE`/`HOST`/`PORT`/`TOKEN`), plus the
140
- full capability inventory: 73 tools across 12 categories, 5 resources, and 3
141
- prompts. New "MCP" item in the Management nav and a `docs/guide/mcp` page.
142
- Because `bunqueue-mcp` is a separate stdio process launched by the MCP client,
143
- the page is a guide, not a live monitor.
144
-
145
- ## [0.0.8] - 2026-07-03
146
-
147
- ### Added
148
- - **SEO: JSON-LD structured data** (schema.org) on every docs page, a
149
- `SoftwareApplication` node on the home and a `TechArticle` + `BreadcrumbList`
150
- on each content page, all linked to a shared `WebSite` + `Person` graph, so the
151
- docs are eligible for rich results. Plus `og:locale`, `og:image:alt` /
152
- `twitter:image:alt`, and explicit `robots` directives (`index, follow,
153
- max-image-preview:large, max-snippet:-1`).
154
- - **Enterprise, fluid docs typography.** The docs now use the same variable fonts
155
- as the app (Inter for text, JetBrains Mono for code), self-hosted with no CDN,
156
- and a fluid (viewport-scaled) type scale for headings and body copy, with
157
- optical sizing, Inter stylistic sets, and tabular figures in code and tables.
158
-
159
- ### Fixed
160
- - **Demo mode: the Database page no longer crashes** (`Cannot read properties of
161
- undefined (reading 'toUpperCase')`). The SQLite inspector's `/db/*` endpoints
162
- now return proper demo fixtures (info, table list, per-table schema and rows,
163
- and a read-only query result), so the inspector is fully explorable in the demo
164
- instead of erroring.
165
- - **Demo mode:** `GET /queues/:q/dlq/stats` now returns a stats-shaped body (it
166
- was mis-routed to the DLQ-entries fixture, leaving the demo DLQ stat cards
167
- empty), and the base/`/api` path stripping is anchored to a segment boundary so
168
- a path like `/apihealth` can't be mis-stripped.
169
-
170
- ## [0.0.7] - 2026-07-03
171
-
172
- ### Added
173
- - **Demo mode.** A bundled fetch/SSE shim answers every bunqueue API call from a
174
- fixture captured from a real bunqueue 2.8.26 server, so the whole dashboard is
175
- explorable with no backend: queues, jobs, DLQ, cron, webhooks, and a live
176
- activity feed that actually animates. A "Live demo" badge marks it. The demo
177
- code and its fixture load lazily, so they add nothing to the normal bundle.
178
- - **Live demo hosting.** The GitHub Pages app now ships in demo mode, so
179
- `https://egeominotti.github.io/bunqueue-dashboard/` is a fully clickable live
180
- demo. Linked from the README, the docs home, and the Quickstart.
181
-
182
- ### Changed
183
- - The GitHub Pages build serves the root app in demo mode (`VITE_DEMO=1`) instead
184
- of an empty "point it at your server" shell. To drive a real server, build your
185
- own (Docker / the standalone binary) without `VITE_DEMO`.
186
-
187
- ## [0.0.6] - 2026-07-03
188
-
189
- ### Added
190
- - **Token lock screen.** When the bunqueue server runs with `AUTH_TOKENS` and a
191
- request comes back `401`, a lock overlay prompts for the bearer token, stores
192
- it for the session (never persisted to disk, same as before), and dismisses. If
193
- the token is still rejected, the next poll re-locks. Includes an "Open Settings
194
- instead" escape. To wire it up, `bq.ts` now emits an `auth:required` event on a
195
- `401` (and still throws), so the UI can prompt for credentials.
196
-
197
- ## [0.0.5] - 2026-07-03
198
-
199
- ### Added
200
- - **Quickstart.** A dedicated Quickstart page (prerequisites, install, one-command
201
- run, connecting a server, and next steps), linked from the docs nav and the
202
- "Getting started" sidebar group, plus a prominent "Quick start" hero action and
203
- section on the docs home.
204
-
205
- ## [0.0.4] - 2026-07-03
206
-
207
- ### Added
208
- - **Lighthouse CI** on pull requests: performance, accessibility, best-practices,
209
- and SEO budgets for the built SPA, with the report uploaded to temporary public
210
- storage. Thresholds are advisory (`warn`) for now; promote to `error` to
211
- enforce.
212
-
213
- ### Fixed
214
- - **Pages deploy timeout** set to the `deploy-pages` action's real maximum
215
- (600000 ms; the previous 900000 was clamped by GitHub with a warning).
216
- Documented that a "Deployment failed, try again later" is a transient
217
- Pages-backend error to re-run, not a config problem.
218
-
219
- ## [0.0.3] - 2026-07-03
220
-
221
- ### Added
222
- - **Command palette (Cmd/Ctrl-K).** Fuzzy-search every page plus a few actions
223
- (toggle theme, open docs) and jump there, fully keyboard-driven (↑/↓, ↵, esc),
224
- with an accessible backdrop and a Topbar search trigger. Its command list is
225
- sourced from the sidebar nav, so new sections appear automatically.
226
- - **Bundle-size budget** (`bun run size`), enforced in CI: fails the build if the
227
- total gzipped JavaScript exceeds 230 KB (currently ~162 KB), so a careless
228
- dependency can't silently bloat the app.
229
-
230
- ## [0.0.2] - 2026-07-03
231
-
232
- ### Added
233
- - **Structured logging with pino + pino-pretty** for the control agent and the
234
- standalone server (replaces plain `console.log`): pretty and colorized on a
235
- terminal, newline-delimited JSON in production, level via `LOG_LEVEL`.
236
- - **Accessibility:** a "Skip to content" link (bypasses the nav for keyboard and
237
- screen-reader users) and full `prefers-reduced-motion` support.
238
- - **Community-health files:** `SECURITY.md`, `CONTRIBUTING.md`,
239
- `CODE_OF_CONDUCT.md`, and bug-report / feature-request issue templates.
240
- - **CI hardening:** a dependency audit (`bun audit`) and test coverage on every
241
- run, plus a **CodeQL** SAST workflow.
242
- - **Supply-chain integrity:** release binaries now ship a `SHA256SUMS` file and a
243
- signed **build-provenance attestation**; the Docker image gets an **SBOM** and
244
- a signed provenance attestation (verifiable with `gh attestation verify`).
245
- - **Full truth-table test** for `jobActions.actionGates` (the job-action gating
246
- source of truth).
247
- - **README hero screenshot** and a screenshot gallery.
248
-
249
- ### Changed
250
- - **The standalone server binds `127.0.0.1` by default** (`BIND_ADDR=0.0.0.0` to
251
- expose): the `/api` proxy to bunqueue's admin API is no longer reachable from
252
- the whole network out of the box.
253
- - **Dark-theme accent darkened to `#db2777`** so white text on accent buttons and
254
- badges meets WCAG AA contrast (was 3.5:1).
255
-
256
- ### Fixed
257
- - Declared `VITE_BUNQUEUE_AGENT_URL` in the env type definitions (was read
258
- untyped).
259
-
260
- ## [0.0.1] - 2026-07-02
261
-
262
- First tagged release. A web dashboard that fully drives a bunqueue server over
263
- its public HTTP API plus a small local control agent, with an illustrated
264
- documentation site.
265
-
266
- ### Added
267
- - **Full control surface.** View and drive queues, jobs, the dead-letter queue,
268
- cron, webhooks, and workers. Every job action is gated by the job's real
269
- current state (`src/lib/jobActions.ts`) so the UI never offers something the
270
- server would reject.
271
- - **Live, not just polled.** Cheap polling plus a Server-Sent-Events stream for
272
- real-time job activity, with automatic reconnect and rolling throughput,
273
- latency, and queue-depth charts.
274
- - **Process lifecycle.** A small local control agent (loopback-bound,
275
- CORS-locked to an allowlist, optional `AGENT_TOKEN`) starts, stops, and
276
- restarts the bunqueue process with live logs.
277
- - **Read-only SQLite inspector** (`/database`): browse tables, schema and
278
- indexes, page through rows, and run statement-allowlisted, row-capped,
279
- read-only queries with `EXPLAIN` and CSV/JSON export.
280
- - **Two API clients by design:** the original `src/lib/api.ts` behind the
281
- first-generation classic pages, and the complete, shape-verified,
282
- strict-error-checked `src/lib/bq.ts` behind every Pro control page.
283
- - **Illustrated documentation site** (VitePress, published to GitHub Pages under
284
- `/docs/`): a user-first, screenshot-backed page per dashboard section, a
285
- Mermaid data-flow diagram, local search, and auto-generated
286
- `llms.txt` / `llms-full.txt`.
287
- - **Deployment guides:** Docker (Caddy), Kubernetes, PM2, and hosting-platform
288
- recipes (Vercel, Netlify, Cloudflare Pages, GitHub Pages, Render, Fly.io,
289
- Railway, Google Cloud Run), plus an overview of the two deployment modes.
290
- - **SEO on the docs:** `sitemap.xml`, `robots.txt`, per-page canonical links and
291
- meta descriptions, and Open Graph / Twitter cards.
292
- - **Docker image** served with Caddy (gzip + zstd, SPA history fallback,
293
- immutable asset caching), published to the GitHub Container Registry.
294
- - **CI/CD:** the lint + build + test gate on every push and PR, GitHub Pages
295
- deploy, multi-arch Docker image, and a Release workflow that cross-compiles
296
- standalone executables for 5 platforms (the all-in-one SPA + `/api` proxy +
297
- control agent in one binary).
298
- - **Custom brand:** a queue-badge logo and favicon, and hand-drawn monoline
299
- feature icons on the docs home.
300
-
301
- [Unreleased]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.14...HEAD
302
- [0.0.14]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.13...v0.0.14
303
- [0.0.13]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.12...v0.0.13
304
- [0.0.12]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.11...v0.0.12
305
- [0.0.11]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.10...v0.0.11
306
- [0.0.10]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.9...v0.0.10
307
- [0.0.9]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.8...v0.0.9
308
- [0.0.8]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.7...v0.0.8
309
- [0.0.7]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.6...v0.0.7
310
- [0.0.6]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.5...v0.0.6
311
- [0.0.5]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.4...v0.0.5
312
- [0.0.4]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.3...v0.0.4
313
- [0.0.3]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.2...v0.0.3
314
- [0.0.2]: https://github.com/egeominotti/bunqueue-dashboard/compare/v0.0.1...v0.0.2
315
- [0.0.1]: https://github.com/egeominotti/bunqueue-dashboard/releases/tag/v0.0.1