fix: resolve all CI test failures (19 fixes across 6 files) (#519)

- canonical-session: fall back to JSON file recording when the loaded
  state-store module has no writer methods (factory vs instance)
- install-executor: skip node_modules and .git dirs in listFilesRecursive
  to prevent ETIMEDOUT copying thousands of .opencode dependency files
- ecc.js: increase maxBuffer to 10MB for spawned subcommands to prevent
  ENOBUFS on large install plan JSON output
- install-apply.test: update Cursor and Antigravity path assertions to
  match flattened rule layout and remapped dirs (workflows, skills)
- ecc.test: increase maxBuffer in test runner to handle large output
- orchestrate-codex-worker.sh: guard against unreadable task file before
  cat, write failure status and handoff artifacts on early exit
This commit is contained in:
Affaan Mustafa
2026-03-16 01:59:53 -07:00
committed by GitHub
parent 426fc54456
commit b48930974b
6 changed files with 39 additions and 11 deletions

View File

@@ -150,6 +150,7 @@ function runCommand(commandName, args) {
cwd: process.cwd(),
env: process.env,
encoding: 'utf8',
maxBuffer: 10 * 1024 * 1024,
}
);

View File

@@ -83,6 +83,11 @@ function validateLegacyTarget(target) {
}
}
const IGNORED_DIRECTORY_NAMES = new Set([
'node_modules',
'.git',
]);
function listFilesRecursive(dirPath) {
if (!fs.existsSync(dirPath)) {
return [];
@@ -94,6 +99,9 @@ function listFilesRecursive(dirPath) {
for (const entry of entries) {
const absolutePath = path.join(dirPath, entry.name);
if (entry.isDirectory()) {
if (IGNORED_DIRECTORY_NAMES.has(entry.name)) {
continue;
}
const childFiles = listFilesRecursive(absolutePath);
for (const childFile of childFiles) {
files.push(path.join(entry.name, childFile));

View File

@@ -348,7 +348,10 @@ function persistCanonicalSnapshot(snapshot, options = {}) {
const writer = resolveStateStoreWriter(stateStore);
if (stateStore && !writer) {
throw new Error('State store does not expose a supported session snapshot writer');
// The loaded object is a factory module (e.g. has createStateStore but no
// writer methods). Treat it the same as a missing state store and fall
// through to the JSON-file recording path below.
return writeFallbackSessionRecording(snapshot, options);
}
if (writer) {

View File

@@ -31,6 +31,21 @@ EOF
}
mkdir -p "$(dirname "$handoff_file")" "$(dirname "$status_file")"
if [[ ! -r "$task_file" ]]; then
write_status "failed" "- Error: task file is missing or unreadable (\`$task_file\`)"
{
echo "# Handoff"
echo
echo "- Failed: $(timestamp)"
echo "- Branch: \`$(git rev-parse --abbrev-ref HEAD)\`"
echo "- Worktree: \`$(pwd)\`"
echo
echo "Task file is missing or unreadable: \`$task_file\`"
} > "$handoff_file"
exit 1
fi
write_status "running" "- Task file: \`$task_file\`"
prompt_file="$(mktemp)"