Fix Windows-unsafe artifact filenames and enforce safe timestamp format

This commit is contained in:
thePR0M3TH3AN committed 2026-02-25 21:07:32 -05:00
1 parent 1fb668064e
commit 1e3f88e488
17 files changed
+39

No files matched your search

+2
View File
@@ -889,6 +889,7 @@ async function main() {
schedulerRunState.lock_deferral = null;
await writeRunState(runStatePath, schedulerRunState);
const runArtifactSince = new Date().toISOString();
const runArtifactTimestamp = ts();
const runStartMs = Date.parse(runArtifactSince);
const outputChunks = [];
@@ -904,6 +905,7 @@ async function main() {
SCHEDULER_CADENCE: cadence,
SCHEDULER_PROMPT_PATH: promptPath,
SCHEDULER_MEMORY_FILE: memoryFile,
SCHEDULER_RUN_TIMESTAMP: runArtifactTimestamp,
};
if (schedulerConfig.memoryPolicy.retrieveCommand) {
+13
View File
@@ -133,6 +133,14 @@ function getMatchingArtifacts(files, { expectedPrefix, session }) {
return files.filter((file) => file.name.startsWith(expectedPrefix));
}
function findInvalidFilenameCharacters(files) {
// Windows-invalid filename characters: <>:"/\|?*
const invalidCharRe = /[<>:"/\\|?*]/;
return files
.filter((file) => invalidCharRe.test(file.name))
.map((file) => file.name);
}
async function hasValidArtifactStructure(files, artifact) {
for (const file of files) {
const content = await fs.readFile(file.filePath, 'utf8').catch(() => '');
@@ -336,6 +344,11 @@ async function main() {
continue;
}
const invalidFilenames = findInvalidFilenameCharacters(matchingArtifacts);
if (invalidFilenames.length) {
missing.push(`${artifact.dir}: invalid filename characters for cross-platform sync in ${invalidFilenames.join(', ')}`);
}
const hasValidStructure = await hasValidArtifactStructure(matchingArtifacts, artifact);
if (!hasValidStructure) {
missing.push(`${artifact.dir}: ${artifact.structureHint}`);