* initialize * expand tool result text limit | add syntax highlighting and json formatting to tool result rendering * fix onError jsdoc * lint * fix unread icon * route protection * improve form handling for NewJobModal * safeJsonParse * remove unneeded comments * remove trycatch * add truncateText helper * add explicit fallback value tos safeJsonParse * add shared cron constant and helpers * reduce frontend indirection * use isLight to compute syntax highlighting theme * remove dead code * remove forJob and make job limit to 50 * create recomputeNextRunAt helper method * add comment about nextRunAt recomputation * add job queue and concurrency control to scheduled jobs * use p-queue * change default max concurrent value to 1 * add comment explaining internal scheduling system * add recomputeNextRunAt on boot * add generated documents to run details * Modify toolsOverride functionality where no tools selected means no tools are given to the agent add a select all/deselect all toggle button for easily selecting all tools in the cerate job form * create usePolling hook * add polling to scheduled jobs and scheduled job runs pages * add cron generation feature in job form * remove cron generation feature | add cron builder feature | add max active scheduled jobs limit * set MAX_ACTIVE to null * replace hour and minute input fields with input with type time * simplify * organize components * move components to bottom of page component * change Generated Documents to Generated Files * add i18n to cronstrue * add i18n * add type="button" to button elements * refactor fileSource retrieval logic * one scheduled job run can have status "running" * add protection of file retrieveal from scheduled job in multiuser mode * fix comments * make job status default to queued * add queued status * fix bug with result trace rendering * store timeout ref and clearTimeout once race settles * remove unneeded handlerPromise tracking * move imports to top level * refactor hardcoded paths to path resolve functions * implement new job form design * simplify * fix button styles * fix runJob bug * implement styles for scheduled jobs page * apply dark mode figma styles * delete unused translation key * implement light mode for new new job modal, run history, and run details * lint * fix light mode scroll bar in tool call card * adjust table header contrast * fix type in subtitle * kill workers when job is in-flight before deleting job * add border-none to buttons * change locale time to iso string * import BackgroundService module level | instatiate backgroundService singltone once and reuse across handlers * add p-queue, @breejs/later and cron-validate as core deps * parse cron expression to a builder state once * add theme to day buttons in cron builder * fix stale tools selection caption * flip popover when popover clips screen height * make ScheduleJob.trigger() await the run insertion | disable run now button if job is in flight * regen table * refactor generated file card * refactor frontend * remove logs * major refactor for tool picking, fix bree/later bug * combine action endpoints, move contine to method * fix unoptimized query with include + take + order * fix dangerous use, refactor job to utils * add copy content to text response * improve notification system subscription for browser * remove unused translations * prevent gen-file cleanup job from deleting active job file generated references * rich text copy * Scheduled Jobs: Translations (#5482) * add locales for scheduled jobs * i18n --------- Co-authored-by: Timothy Carambat <rambat1010@gmail.com> * add config flag with UI notice * update README * telemetry datapoints * Always use UTC on backend, convert to local in frontend * fix tz render * Add job killing * cleanup thinking text in job notifications and break out reasoning in response text. Also hide zero metrics since that is useless * Port generatedFile schema to the normalized workspace chat `outputs` file format so porting to thread is simple and implem between chats <> jobs is 1:1 * what the fuck * compiled bug * fixed thinking oddity in complied frontend * supress multi-toast * fix duration call * Revert "fix duration call" This reverts commit 0491bc71f4223e65ea4046561b15b268fefb8da2. * revert and reapply fix --------- Co-authored-by: Timothy Carambat <rambat1010@gmail.com>
55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
const path = require("node:path");
|
|
const fs = require("node:fs");
|
|
const { parentPort } = require("node:worker_threads");
|
|
const documentsPath =
|
|
process.env.NODE_ENV === "development"
|
|
? path.resolve(__dirname, `../../storage/documents`)
|
|
: path.resolve(process.env.STORAGE_DIR, `documents`);
|
|
|
|
function log(stringContent = "") {
|
|
if (parentPort)
|
|
parentPort.postMessage(`\x1b[33m[${process.pid}]\x1b[0m: ${stringContent}`); // running as worker
|
|
else
|
|
process.send(
|
|
`\x1b[33m[${process.ppid}:${process.pid}]\x1b[0m: ${stringContent}`
|
|
); // running as child_process
|
|
}
|
|
|
|
function conclude() {
|
|
if (parentPort) parentPort.postMessage("done");
|
|
else process.exit(0);
|
|
}
|
|
|
|
function updateSourceDocument(docPath = null, jsonContent = {}) {
|
|
const destinationFilePath = path.resolve(documentsPath, docPath);
|
|
fs.writeFileSync(destinationFilePath, JSON.stringify(jsonContent, null, 4), {
|
|
encoding: "utf-8",
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Strips thought/thinking tags from text (e.g., <thinking>...</thinking>)
|
|
* Useful for cleaning LLM responses before sending notifications.
|
|
* @param {string} text - The text to strip thoughts from.
|
|
* @returns {string} - The text with thought tags and their content removed.
|
|
*/
|
|
const THOUGHT_KEYWORDS = ["thought", "thinking", "think", "thought_chain"];
|
|
const THOUGHT_REGEX_COMPLETE = new RegExp(
|
|
THOUGHT_KEYWORDS.map(
|
|
(keyword) =>
|
|
`<${keyword}\\s*(?:[^>]*?)?\\s*>[\\s\\S]*?<\\/${keyword}\\s*(?:[^>]*?)?>`
|
|
).join("|"),
|
|
"gi"
|
|
);
|
|
|
|
function stripThinkingFromText(text = "") {
|
|
return text.replace(THOUGHT_REGEX_COMPLETE, "").trim();
|
|
}
|
|
|
|
module.exports = {
|
|
log,
|
|
conclude,
|
|
updateSourceDocument,
|
|
stripThinkingFromText,
|
|
};
|