@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.
- package/dist/agents/container-runner.d.ts.map +1 -1
- package/dist/agents/container-runner.js +42 -49
- package/dist/agents/container-runner.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/cli/commands/status.js +1 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cloud/vps/nginx.d.ts +4 -1
- package/dist/cloud/vps/nginx.d.ts.map +1 -1
- package/dist/cloud/vps/nginx.js +48 -12
- package/dist/cloud/vps/nginx.js.map +1 -1
- package/dist/control/index.d.ts +1 -1
- package/dist/control/index.d.ts.map +1 -1
- package/dist/control/index.js +1 -1
- package/dist/control/index.js.map +1 -1
- package/dist/control/routes/dashboard-api.d.ts +20 -0
- package/dist/control/routes/dashboard-api.d.ts.map +1 -0
- package/dist/control/routes/dashboard-api.js +168 -0
- package/dist/control/routes/dashboard-api.js.map +1 -0
- package/dist/control/routes/dashboard.d.ts +3 -11
- package/dist/control/routes/dashboard.d.ts.map +1 -1
- package/dist/control/routes/dashboard.js +3 -218
- package/dist/control/routes/dashboard.js.map +1 -1
- package/dist/execution/routes/locks.d.ts.map +1 -1
- package/dist/execution/routes/locks.js +1 -0
- package/dist/execution/routes/locks.js.map +1 -1
- package/dist/extensions/loader.d.ts +1 -1
- package/dist/extensions/loader.d.ts.map +1 -1
- package/dist/extensions/loader.js +17 -13
- package/dist/extensions/loader.js.map +1 -1
- package/dist/frontend/assets/index-heXAA4Ev.js +13 -0
- package/dist/frontend/assets/index-tjVM5-7N.css +2 -0
- package/dist/frontend/index.html +13 -0
- package/dist/gateway/index.d.ts +7 -0
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +84 -7
- package/dist/gateway/index.js.map +1 -1
- package/dist/models/providers/anthropic.d.ts.map +1 -1
- package/dist/models/providers/anthropic.js +2 -3
- package/dist/models/providers/anthropic.js.map +1 -1
- package/dist/models/providers/openai.d.ts.map +1 -1
- package/dist/models/providers/openai.js +2 -8
- package/dist/models/providers/openai.js.map +1 -1
- package/dist/remote/push.d.ts.map +1 -1
- package/dist/remote/push.js +43 -6
- package/dist/remote/push.js.map +1 -1
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +6 -3
- package/dist/scheduler/index.js.map +1 -1
- package/dist/shared/usage.d.ts.map +1 -1
- package/dist/shared/usage.js +14 -9
- package/dist/shared/usage.js.map +1 -1
- package/dist/tui/App.js +3 -3
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/status-tracker.d.ts.map +1 -1
- package/dist/tui/status-tracker.js +6 -21
- package/dist/tui/status-tracker.js.map +1 -1
- package/package.json +5 -3
- package/dist/control/views/agent-detail-page.d.ts +0 -14
- package/dist/control/views/agent-detail-page.d.ts.map +0 -1
- package/dist/control/views/agent-detail-page.js +0 -501
- package/dist/control/views/agent-detail-page.js.map +0 -1
- package/dist/control/views/agent-skill-page.d.ts +0 -2
- package/dist/control/views/agent-skill-page.d.ts.map +0 -1
- package/dist/control/views/agent-skill-page.js +0 -32
- package/dist/control/views/agent-skill-page.js.map +0 -1
- package/dist/control/views/dashboard-page.d.ts +0 -4
- package/dist/control/views/dashboard-page.d.ts.map +0 -1
- package/dist/control/views/dashboard-page.js +0 -364
- package/dist/control/views/dashboard-page.js.map +0 -1
- package/dist/control/views/instance-detail-page.d.ts +0 -39
- package/dist/control/views/instance-detail-page.d.ts.map +0 -1
- package/dist/control/views/instance-detail-page.js +0 -387
- package/dist/control/views/instance-detail-page.js.map +0 -1
- package/dist/control/views/layout.d.ts +0 -17
- package/dist/control/views/layout.d.ts.map +0 -1
- package/dist/control/views/layout.js +0 -153
- package/dist/control/views/layout.js.map +0 -1
- package/dist/control/views/login-page.d.ts +0 -2
- package/dist/control/views/login-page.d.ts.map +0 -1
- package/dist/control/views/login-page.js +0 -41
- package/dist/control/views/login-page.js.map +0 -1
- package/dist/control/views/markdown.d.ts +0 -6
- package/dist/control/views/markdown.d.ts.map +0 -1
- package/dist/control/views/markdown.js +0 -119
- package/dist/control/views/markdown.js.map +0 -1
- package/dist/control/views/project-config-page.d.ts +0 -8
- package/dist/control/views/project-config-page.d.ts.map +0 -1
- package/dist/control/views/project-config-page.js +0 -117
- package/dist/control/views/project-config-page.js.map +0 -1
- package/dist/control/views/trigger-history-page.d.ts +0 -10
- package/dist/control/views/trigger-history-page.d.ts.map +0 -1
- package/dist/control/views/trigger-history-page.js +0 -89
- 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">←</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":"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"}
|