@action-llama/action-llama 0.17.0 → 0.17.2

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 (93) hide show
  1. package/dist/agents/container-runner.d.ts.map +1 -1
  2. package/dist/agents/container-runner.js +42 -49
  3. package/dist/agents/container-runner.js.map +1 -1
  4. package/dist/build-info.json +1 -1
  5. package/dist/cli/commands/status.js +1 -1
  6. package/dist/cli/commands/status.js.map +1 -1
  7. package/dist/cloud/vps/nginx.d.ts +4 -1
  8. package/dist/cloud/vps/nginx.d.ts.map +1 -1
  9. package/dist/cloud/vps/nginx.js +48 -12
  10. package/dist/cloud/vps/nginx.js.map +1 -1
  11. package/dist/control/index.d.ts +1 -1
  12. package/dist/control/index.d.ts.map +1 -1
  13. package/dist/control/index.js +1 -1
  14. package/dist/control/index.js.map +1 -1
  15. package/dist/control/routes/dashboard-api.d.ts +20 -0
  16. package/dist/control/routes/dashboard-api.d.ts.map +1 -0
  17. package/dist/control/routes/dashboard-api.js +168 -0
  18. package/dist/control/routes/dashboard-api.js.map +1 -0
  19. package/dist/control/routes/dashboard.d.ts +3 -11
  20. package/dist/control/routes/dashboard.d.ts.map +1 -1
  21. package/dist/control/routes/dashboard.js +3 -218
  22. package/dist/control/routes/dashboard.js.map +1 -1
  23. package/dist/execution/routes/locks.d.ts.map +1 -1
  24. package/dist/execution/routes/locks.js +1 -0
  25. package/dist/execution/routes/locks.js.map +1 -1
  26. package/dist/extensions/loader.d.ts +1 -1
  27. package/dist/extensions/loader.d.ts.map +1 -1
  28. package/dist/extensions/loader.js +17 -13
  29. package/dist/extensions/loader.js.map +1 -1
  30. package/dist/frontend/assets/index-heXAA4Ev.js +13 -0
  31. package/dist/frontend/assets/index-tjVM5-7N.css +2 -0
  32. package/dist/frontend/index.html +13 -0
  33. package/dist/gateway/index.d.ts +7 -0
  34. package/dist/gateway/index.d.ts.map +1 -1
  35. package/dist/gateway/index.js +84 -7
  36. package/dist/gateway/index.js.map +1 -1
  37. package/dist/models/providers/anthropic.d.ts.map +1 -1
  38. package/dist/models/providers/anthropic.js +2 -3
  39. package/dist/models/providers/anthropic.js.map +1 -1
  40. package/dist/models/providers/openai.d.ts.map +1 -1
  41. package/dist/models/providers/openai.js +2 -8
  42. package/dist/models/providers/openai.js.map +1 -1
  43. package/dist/remote/push.d.ts.map +1 -1
  44. package/dist/remote/push.js +43 -6
  45. package/dist/remote/push.js.map +1 -1
  46. package/dist/scheduler/index.d.ts.map +1 -1
  47. package/dist/scheduler/index.js +6 -3
  48. package/dist/scheduler/index.js.map +1 -1
  49. package/dist/shared/usage.d.ts.map +1 -1
  50. package/dist/shared/usage.js +14 -9
  51. package/dist/shared/usage.js.map +1 -1
  52. package/dist/tui/App.js +3 -3
  53. package/dist/tui/App.js.map +1 -1
  54. package/dist/tui/status-tracker.d.ts.map +1 -1
  55. package/dist/tui/status-tracker.js +6 -21
  56. package/dist/tui/status-tracker.js.map +1 -1
  57. package/package.json +5 -3
  58. package/dist/control/views/agent-detail-page.d.ts +0 -14
  59. package/dist/control/views/agent-detail-page.d.ts.map +0 -1
  60. package/dist/control/views/agent-detail-page.js +0 -501
  61. package/dist/control/views/agent-detail-page.js.map +0 -1
  62. package/dist/control/views/agent-skill-page.d.ts +0 -2
  63. package/dist/control/views/agent-skill-page.d.ts.map +0 -1
  64. package/dist/control/views/agent-skill-page.js +0 -32
  65. package/dist/control/views/agent-skill-page.js.map +0 -1
  66. package/dist/control/views/dashboard-page.d.ts +0 -4
  67. package/dist/control/views/dashboard-page.d.ts.map +0 -1
  68. package/dist/control/views/dashboard-page.js +0 -364
  69. package/dist/control/views/dashboard-page.js.map +0 -1
  70. package/dist/control/views/instance-detail-page.d.ts +0 -39
  71. package/dist/control/views/instance-detail-page.d.ts.map +0 -1
  72. package/dist/control/views/instance-detail-page.js +0 -387
  73. package/dist/control/views/instance-detail-page.js.map +0 -1
  74. package/dist/control/views/layout.d.ts +0 -17
  75. package/dist/control/views/layout.d.ts.map +0 -1
  76. package/dist/control/views/layout.js +0 -153
  77. package/dist/control/views/layout.js.map +0 -1
  78. package/dist/control/views/login-page.d.ts +0 -2
  79. package/dist/control/views/login-page.d.ts.map +0 -1
  80. package/dist/control/views/login-page.js +0 -41
  81. package/dist/control/views/login-page.js.map +0 -1
  82. package/dist/control/views/markdown.d.ts +0 -6
  83. package/dist/control/views/markdown.d.ts.map +0 -1
  84. package/dist/control/views/markdown.js +0 -119
  85. package/dist/control/views/markdown.js.map +0 -1
  86. package/dist/control/views/project-config-page.d.ts +0 -8
  87. package/dist/control/views/project-config-page.d.ts.map +0 -1
  88. package/dist/control/views/project-config-page.js +0 -117
  89. package/dist/control/views/project-config-page.js.map +0 -1
  90. package/dist/control/views/trigger-history-page.d.ts +0 -10
  91. package/dist/control/views/trigger-history-page.d.ts.map +0 -1
  92. package/dist/control/views/trigger-history-page.js +0 -89
  93. package/dist/control/views/trigger-history-page.js.map +0 -1
@@ -1,119 +0,0 @@
1
- import { escapeHtml } from "./layout.js";
2
- /**
3
- * Simple markdown to HTML renderer.
4
- * Supports headers, lists, code blocks, links, and basic formatting.
5
- */
6
- export function renderMarkdown(content) {
7
- if (!content)
8
- return "";
9
- // Split into lines for processing
10
- const lines = content.split('\n');
11
- const result = [];
12
- let inCodeBlock = false;
13
- let codeBlockLanguage = '';
14
- let currentList = null;
15
- for (let i = 0; i < lines.length; i++) {
16
- const line = lines[i];
17
- const trimmed = line.trim();
18
- // Code blocks
19
- if (trimmed.startsWith('```')) {
20
- if (inCodeBlock) {
21
- // End code block
22
- result.push('</code></pre>');
23
- inCodeBlock = false;
24
- codeBlockLanguage = '';
25
- }
26
- else {
27
- // Start code block
28
- closeCurrentList();
29
- codeBlockLanguage = trimmed.slice(3).trim();
30
- const langClass = codeBlockLanguage ? ` language-${escapeHtml(codeBlockLanguage)}` : '';
31
- result.push(`<pre class="bg-slate-100 dark:bg-slate-900 rounded-lg p-4 overflow-x-auto text-sm"><code${langClass ? ` class="${langClass}"` : ''}>`);
32
- inCodeBlock = true;
33
- }
34
- continue;
35
- }
36
- // If in code block, just add the line
37
- if (inCodeBlock) {
38
- result.push(escapeHtml(line));
39
- continue;
40
- }
41
- // Empty lines
42
- if (!trimmed) {
43
- closeCurrentList();
44
- result.push('<br>');
45
- continue;
46
- }
47
- // Headers
48
- if (trimmed.startsWith('#')) {
49
- closeCurrentList();
50
- const headerMatch = trimmed.match(/^(#+)\s+(.+)$/);
51
- if (headerMatch) {
52
- const level = Math.min(headerMatch[1].length, 6);
53
- const text = headerMatch[2];
54
- const sizeClass = level === 1 ? 'text-2xl' : level === 2 ? 'text-xl' : level === 3 ? 'text-lg' : 'text-base';
55
- result.push(`<h${level} class="${sizeClass} font-bold text-slate-900 dark:text-white mt-6 mb-3">${renderInline(text)}</h${level}>`);
56
- }
57
- continue;
58
- }
59
- // Lists
60
- const ulMatch = trimmed.match(/^[-*+]\s+(.+)$/);
61
- const olMatch = trimmed.match(/^\d+\.\s+(.+)$/);
62
- if (ulMatch) {
63
- if (!currentList || currentList.type !== 'ul') {
64
- closeCurrentList();
65
- currentList = { type: 'ul', items: [] };
66
- }
67
- currentList.items.push(ulMatch[1]);
68
- continue;
69
- }
70
- if (olMatch) {
71
- if (!currentList || currentList.type !== 'ol') {
72
- closeCurrentList();
73
- currentList = { type: 'ol', items: [] };
74
- }
75
- currentList.items.push(olMatch[1]);
76
- continue;
77
- }
78
- // Regular paragraph
79
- closeCurrentList();
80
- if (trimmed) {
81
- result.push(`<p class="mb-4 leading-relaxed">${renderInline(trimmed)}</p>`);
82
- }
83
- }
84
- // Close any remaining code block or list
85
- if (inCodeBlock) {
86
- result.push('</code></pre>');
87
- }
88
- closeCurrentList();
89
- function closeCurrentList() {
90
- if (currentList) {
91
- const listClass = currentList.type === 'ul'
92
- ? 'list-disc list-inside mb-4 space-y-1'
93
- : 'list-decimal list-inside mb-4 space-y-1';
94
- result.push(`<${currentList.type} class="${listClass}">`);
95
- for (const item of currentList.items) {
96
- result.push(`<li class="ml-2">${renderInline(item)}</li>`);
97
- }
98
- result.push(`</${currentList.type}>`);
99
- currentList = null;
100
- }
101
- }
102
- return result.join('\n');
103
- }
104
- /**
105
- * Render inline markdown elements within a line (bold, italic, code, links)
106
- */
107
- function renderInline(text) {
108
- let result = text;
109
- // Inline code
110
- result = result.replace(/`([^`]+)`/g, '<code class="bg-slate-200 dark:bg-slate-800 px-1 py-0.5 rounded text-sm font-mono">$1</code>');
111
- // Links
112
- result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" class="text-blue-600 dark:text-blue-400 hover:underline">$1</a>');
113
- // Bold
114
- result = result.replace(/\*\*([^*]+)\*\*/g, '<strong class="font-semibold">$1</strong>');
115
- // Italic
116
- result = result.replace(/\*([^*]+)\*/g, '<em class="italic">$1</em>');
117
- return escapeHtml(result);
118
- }
119
- //# sourceMappingURL=markdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/control/views/markdown.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export interface ProjectConfigData {
2
- projectName?: string;
3
- projectScale: number;
4
- gatewayPort?: number;
5
- webhooksActive: boolean;
6
- }
7
- export declare function renderProjectConfigPage(data: ProjectConfigData): string;
8
- //# sourceMappingURL=project-config-page.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-config-page.d.ts","sourceRoot":"","sources":["../../../src/control/views/project-config-page.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAqHvE"}
@@ -1,117 +0,0 @@
1
- import { escapeHtml, renderLayout } from "./layout.js";
2
- export function renderProjectConfigPage(data) {
3
- const { projectName, projectScale, gatewayPort, webhooksActive } = data;
4
- const content = `
5
- <div class="flex flex-wrap items-center justify-between gap-3 mb-6">
6
- <div class="flex items-center gap-3">
7
- <h1 class="text-xl sm:text-2xl font-bold text-slate-900 dark:text-white">Project Configuration</h1>
8
- </div>
9
- </div>
10
-
11
- <!-- Global Settings -->
12
- <div class="bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800 p-6 mb-6">
13
- <h2 class="text-lg font-semibold text-slate-900 dark:text-white mb-4">Global Settings</h2>
14
-
15
- <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
16
- <!-- Project Scale -->
17
- <div>
18
- <label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">Project Scale</label>
19
- <div class="flex items-center gap-3">
20
- <input id="project-scale-input" type="number" min="1" max="50" value="${projectScale}" class="px-3 py-2 border border-slate-300 dark:border-slate-600 rounded-md bg-white dark:bg-slate-800 text-slate-900 dark:text-white w-24">
21
- <button id="update-project-scale-btn" class="px-4 py-2 text-sm rounded-md font-semibold bg-blue-600 hover:bg-blue-700 text-white transition-colors" onclick="updateProjectScale()">Update</button>
22
- </div>
23
- <p class="text-sm text-slate-500 dark:text-slate-400 mt-2">Maximum number of concurrent agent runs across all agents in this project</p>
24
- </div>
25
-
26
- <!-- Gateway Info (read-only) -->
27
- <div>
28
- <label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">Gateway Status</label>
29
- <div class="space-y-2">
30
- ${gatewayPort ? `<div class="text-sm text-slate-600 dark:text-slate-300">Port: ${gatewayPort}</div>` : ""}
31
- <div class="text-sm text-slate-600 dark:text-slate-300">Webhooks: ${webhooksActive ? "Active" : "Inactive"}</div>
32
- ${projectName ? `<div class="text-sm text-slate-600 dark:text-slate-300">Project: ${escapeHtml(projectName)}</div>` : ""}
33
- </div>
34
- </div>
35
- </div>
36
- </div>
37
-
38
- <!-- Actions -->
39
- <div class="bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800 p-6">
40
- <h2 class="text-lg font-semibold text-slate-900 dark:text-white mb-4">Actions</h2>
41
-
42
- <div class="flex flex-wrap gap-3">
43
- <button class="px-4 py-2 text-sm rounded-md font-semibold border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-800 hover:bg-slate-50 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200 transition-colors" onclick="pauseScheduler()">Pause All Agents</button>
44
- <button class="px-4 py-2 text-sm rounded-md font-semibold border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-800 hover:bg-slate-50 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200 transition-colors" onclick="resumeScheduler()">Resume All Agents</button>
45
- </div>
46
-
47
- <p class="text-sm text-slate-500 dark:text-slate-400 mt-3">These actions affect all agents in the project temporarily (until restart)</p>
48
- </div>
49
- `;
50
- const scripts = `<script>
51
- function ctrlPost(path) {
52
- fetch(path, { method: "POST", credentials: "same-origin" })
53
- .then(function(r) {
54
- if (r.ok) {
55
- return r.json();
56
- } else {
57
- throw new Error("HTTP " + r.status);
58
- }
59
- })
60
- .then(function(data) {
61
- if (data.message) alert(data.message);
62
- })
63
- .catch(function(err) {
64
- alert("Error: " + err);
65
- });
66
- }
67
-
68
- function updateProjectScale() {
69
- var input = document.getElementById("project-scale-input");
70
- var btn = document.getElementById("update-project-scale-btn");
71
- var scale = parseInt(input.value);
72
- if (!scale || scale < 1 || scale > 50) {
73
- alert("Scale must be between 1 and 50");
74
- return;
75
- }
76
- btn.disabled = true;
77
- btn.textContent = "Updating...";
78
- fetch("/control/project/scale", {
79
- method: "POST",
80
- credentials: "same-origin",
81
- headers: { "Content-Type": "application/json" },
82
- body: JSON.stringify({ scale: scale })
83
- }).then(function(r) {
84
- if (r.ok) {
85
- alert("Project scale updated to " + scale);
86
- } else {
87
- r.text().then(function(text) { alert("Error: " + text); });
88
- }
89
- }).catch(function(err) {
90
- alert("Error: " + err);
91
- }).finally(function() {
92
- btn.disabled = false;
93
- btn.textContent = "Update";
94
- });
95
- }
96
-
97
- function pauseScheduler() {
98
- if (!confirm("Pause all agents? This will stop all scheduled and webhook-triggered runs.")) return;
99
- ctrlPost("/control/pause");
100
- }
101
-
102
- function resumeScheduler() {
103
- ctrlPost("/control/resume");
104
- }
105
-
106
- </script>`;
107
- return renderLayout({
108
- title: "Project Configuration",
109
- breadcrumbs: [
110
- { label: "Dashboard", href: "/dashboard" },
111
- { label: "Configuration" },
112
- ],
113
- content,
114
- scripts,
115
- });
116
- }
117
- //# sourceMappingURL=project-config-page.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-config-page.js","sourceRoot":"","sources":["../../../src/control/views/project-config-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AASvD,MAAM,UAAU,uBAAuB,CAAC,IAAuB;IAC7D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAExE,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;oFAgBkE,YAAY;;;;;;;;;;cAUlF,WAAW,CAAC,CAAC,CAAC,iEAAiE,WAAW,QAAQ,CAAC,CAAC,CAAC,EAAE;gFACrC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;cACxG,WAAW,CAAC,CAAC,CAAC,oEAAoE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;GAiBjI,CAAC;IAEF,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwDN,CAAC;IAEX,OAAO,YAAY,CAAC;QAClB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE;YACX,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE;YAC1C,EAAE,KAAK,EAAE,eAAe,EAAE;SAC3B;QACD,OAAO;QACP,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { TriggerHistoryRow } from "../../stats/store.js";
2
- export interface TriggerHistoryPageOpts {
3
- rows: TriggerHistoryRow[];
4
- total: number;
5
- page: number;
6
- limit: number;
7
- includeDeadLetters: boolean;
8
- }
9
- export declare function renderTriggerHistoryPage(opts: TriggerHistoryPageOpts): string;
10
- //# sourceMappingURL=trigger-history-page.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trigger-history-page.d.ts","sourceRoot":"","sources":["../../../src/control/views/trigger-history-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4C9D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAmD7E"}
@@ -1,89 +0,0 @@
1
- import { escapeHtml, renderLayout } from "./layout.js";
2
- function triggerTypeBadge(type) {
3
- const colors = {
4
- schedule: "bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300",
5
- webhook: "bg-purple-100 text-purple-700 dark:bg-purple-900/40 dark:text-purple-300",
6
- agent: "bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",
7
- };
8
- const cls = colors[type] ?? "bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-300";
9
- return `<span class="px-1.5 py-0.5 text-xs font-medium rounded ${cls}">${escapeHtml(type)}</span>`;
10
- }
11
- function resultBadge(result) {
12
- if (result === "completed" || result === "rerun") {
13
- return `<span class="text-green-600 dark:text-green-400 text-xs font-medium">${escapeHtml(result)}</span>`;
14
- }
15
- if (result === "dead-letter") {
16
- return `<span class="px-1.5 py-0.5 text-xs font-medium rounded bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300">Dead Letter</span>`;
17
- }
18
- if (result === "error") {
19
- return `<span class="text-red-600 dark:text-red-400 text-xs font-medium">error</span>`;
20
- }
21
- return `<span class="text-slate-500 text-xs">${escapeHtml(result)}</span>`;
22
- }
23
- function renderRow(row) {
24
- const time = new Date(row.ts).toLocaleString();
25
- const agentLink = row.agentName
26
- ? `<a href="/dashboard/agents/${escapeHtml(row.agentName)}" class="text-blue-600 dark:text-blue-400 hover:underline text-sm">${escapeHtml(row.agentName)}</a>`
27
- : `<span class="text-slate-400 text-sm">\u2014</span>`;
28
- const instanceLink = row.instanceId && row.agentName
29
- ? `<a href="/dashboard/agents/${escapeHtml(row.agentName)}/instances/${escapeHtml(row.instanceId)}" class="text-sm text-slate-500 dark:text-slate-400 hover:underline font-mono">${escapeHtml(row.instanceId.slice(0, 12))}</a>`
30
- : `<span class="text-slate-400 text-sm">\u2014</span>`;
31
- return `<tr class="hover:bg-slate-50 dark:hover:bg-slate-900/50">
32
- <td class="px-3 py-2 text-sm text-slate-500 dark:text-slate-400 whitespace-nowrap">${escapeHtml(time)}</td>
33
- <td class="px-3 py-2">${triggerTypeBadge(row.triggerType)}</td>
34
- <td class="px-3 py-2 text-sm text-slate-600 dark:text-slate-300">${escapeHtml(row.triggerSource ?? "\u2014")}</td>
35
- <td class="px-3 py-2">${agentLink}</td>
36
- <td class="px-3 py-2">${instanceLink}</td>
37
- <td class="px-3 py-2">${resultBadge(row.result)}</td>
38
- </tr>`;
39
- }
40
- export function renderTriggerHistoryPage(opts) {
41
- const { rows, total, page, limit, includeDeadLetters } = opts;
42
- const totalPages = Math.max(1, Math.ceil(total / limit));
43
- const deadLetterParam = includeDeadLetters ? "1" : "0";
44
- const paginationLinks = [];
45
- if (page > 1) {
46
- paginationLinks.push(`<a href="/dashboard/triggers?page=${page - 1}&all=${deadLetterParam}" class="px-3 py-1.5 text-sm rounded border border-slate-300 dark:border-slate-600 hover:bg-slate-50 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200">Prev</a>`);
47
- }
48
- paginationLinks.push(`<span class="text-sm text-slate-500 dark:text-slate-400">Page ${page} of ${totalPages}</span>`);
49
- if (page < totalPages) {
50
- paginationLinks.push(`<a href="/dashboard/triggers?page=${page + 1}&all=${deadLetterParam}" class="px-3 py-1.5 text-sm rounded border border-slate-300 dark:border-slate-600 hover:bg-slate-50 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200">Next</a>`);
51
- }
52
- const content = `
53
- <div class="flex flex-wrap items-center justify-between gap-3 mb-6">
54
- <div class="flex items-center gap-3">
55
- <a href="/dashboard" class="text-slate-400 hover:text-slate-600 dark:hover:text-slate-300">&larr;</a>
56
- <h1 class="text-xl sm:text-2xl font-bold text-slate-900 dark:text-white">Trigger History</h1>
57
- </div>
58
- <label class="flex items-center gap-2 cursor-pointer">
59
- <input type="checkbox" ${includeDeadLetters ? "checked" : ""}
60
- onchange="window.location.href='/dashboard/triggers?page=1&all=' + (this.checked ? '1' : '0')"
61
- class="rounded border-slate-300 dark:border-slate-600">
62
- <span class="text-sm text-slate-600 dark:text-slate-300">Show dead letters</span>
63
- </label>
64
- </div>
65
-
66
- <div class="bg-white dark:bg-slate-900 rounded-lg border border-slate-200 dark:border-slate-800 overflow-hidden mb-4">
67
- <table class="w-full">
68
- <thead>
69
- <tr class="border-b border-slate-200 dark:border-slate-700">
70
- <th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Timestamp</th>
71
- <th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Type</th>
72
- <th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Source</th>
73
- <th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Agent</th>
74
- <th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Instance</th>
75
- <th class="text-left px-3 py-2 text-xs text-slate-500 dark:text-slate-400 uppercase tracking-wider font-medium">Status</th>
76
- </tr>
77
- </thead>
78
- <tbody class="divide-y divide-slate-100 dark:divide-slate-800">
79
- ${rows.length > 0 ? rows.map(renderRow).join("\n") : '<tr><td colspan="6" class="px-3 py-8 text-center text-slate-400 italic">No triggers found</td></tr>'}
80
- </tbody>
81
- </table>
82
- </div>
83
-
84
- <div class="flex items-center justify-center gap-3">
85
- ${paginationLinks.join("\n")}
86
- </div>`;
87
- return renderLayout({ title: "Trigger History", content });
88
- }
89
- //# sourceMappingURL=trigger-history-page.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trigger-history-page.js","sourceRoot":"","sources":["../../../src/control/views/trigger-history-page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvD,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,MAAM,GAA2B;QACrC,QAAQ,EAAE,kEAAkE;QAC5E,OAAO,EAAE,0EAA0E;QACnF,KAAK,EAAE,sEAAsE;KAC9E,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,mEAAmE,CAAC;IAChG,OAAO,0DAA0D,GAAG,KAAK,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AACrG,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACjD,OAAO,wEAAwE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;IAC7G,CAAC;IACD,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7B,OAAO,yIAAyI,CAAC;IACnJ,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,+EAA+E,CAAC;IACzF,CAAC;IACD,OAAO,wCAAwC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED,SAAS,SAAS,CAAC,GAAsB;IACvC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS;QAC7B,CAAC,CAAC,8BAA8B,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,sEAAsE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM;QAC9J,CAAC,CAAC,oDAAoD,CAAC;IACzD,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,SAAS;QAClD,CAAC,CAAC,8BAA8B,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,kFAAkF,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM;QAChO,CAAC,CAAC,oDAAoD,CAAC;IACzD,OAAO;yFACgF,UAAU,CAAC,IAAI,CAAC;4BAC7E,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC;uEACU,UAAU,CAAC,GAAG,CAAC,aAAa,IAAI,QAAQ,CAAC;4BACpF,SAAS;4BACT,YAAY;4BACZ,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3C,CAAC;AACT,CAAC;AAUD,MAAM,UAAU,wBAAwB,CAAC,IAA4B;IACnE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAEvD,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,eAAe,CAAC,IAAI,CAAC,qCAAqC,IAAI,GAAG,CAAC,QAAQ,eAAe,2KAA2K,CAAC,CAAC;IACxQ,CAAC;IACD,eAAe,CAAC,IAAI,CAAC,iEAAiE,IAAI,OAAO,UAAU,SAAS,CAAC,CAAC;IACtH,IAAI,IAAI,GAAG,UAAU,EAAE,CAAC;QACtB,eAAe,CAAC,IAAI,CAAC,qCAAqC,IAAI,GAAG,CAAC,QAAQ,eAAe,2KAA2K,CAAC,CAAC;IACxQ,CAAC;IAED,MAAM,OAAO,GAAG;;;;;;;iCAOe,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;YAoBxD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qGAAqG;;;;;;QAM5J,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;WACvB,CAAC;IAEV,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7D,CAAC"}