diff --git a/.scheduler-memory/retrieve-daily.json b/.scheduler-memory/retrieve-daily.json new file mode 100644 index 0000000..65200e2 --- /dev/null +++ b/.scheduler-memory/retrieve-daily.json @@ -0,0 +1,15 @@ +{ + "cadence": "daily", + "operation": "retrieve", + "servicePath": "src/services/memory/index.js#getRelevantMemories", + "inputs": { + "agentId": "scheduler-memory-daily", + "query": "scheduler daily memory retrieval", + "events": 1 + }, + "outputs": { + "ingestedCount": 1, + "retrievedCount": 1 + }, + "status": "ok" +} \ No newline at end of file diff --git a/.scheduler-memory/retrieve-daily.ok b/.scheduler-memory/retrieve-daily.ok new file mode 100644 index 0000000..84b1719 --- /dev/null +++ b/.scheduler-memory/retrieve-daily.ok @@ -0,0 +1 @@ +MEMORY_RETRIEVED diff --git a/.scheduler-memory/store-daily.json b/.scheduler-memory/store-daily.json new file mode 100644 index 0000000..bd29e2d --- /dev/null +++ b/.scheduler-memory/store-daily.json @@ -0,0 +1,16 @@ +{ + "cadence": "daily", + "operation": "store", + "servicePath": "src/services/memory/index.js#ingestEvents", + "inputs": { + "agentId": "scheduler-memory-daily", + "events": 2 + }, + "outputs": { + "storedCount": 1, + "summaries": [ + "Store memory event A for daily Store memory event B for daily" + ] + }, + "status": "ok" +} \ No newline at end of file diff --git a/.scheduler-memory/store-daily.ok b/.scheduler-memory/store-daily.ok new file mode 100644 index 0000000..1e40bb6 --- /dev/null +++ b/.scheduler-memory/store-daily.ok @@ -0,0 +1 @@ +MEMORY_STORED diff --git a/dashboard/domUtils.js b/dashboard/domUtils.js new file mode 100644 index 0000000..6e2c218 --- /dev/null +++ b/dashboard/domUtils.js @@ -0,0 +1,30 @@ +// DOM utility functions for safe rendering + +/** + * Escapes unsafe HTML characters in a string. + * @param {string} unsafe The string to escape. + * @returns {string} The escaped string. + */ +export function escapeHtml(unsafe) { + if (unsafe == null) return ''; + return String(unsafe) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); +} + +/** + * Creates an element with optional class and text content. + * @param {string} tag The tag name. + * @param {string} [className] The class name(s). + * @param {string} [text] The text content. + * @returns {HTMLElement} The created element. + */ +export function createElement(tag, className, text) { + const el = document.createElement(tag); + if (className) el.className = className; + if (text != null) el.textContent = text; + return el; +} diff --git a/dashboard/index.html b/dashboard/index.html index 0f0ff09..894d7dd 100644 --- a/dashboard/index.html +++ b/dashboard/index.html @@ -153,6 +153,7 @@