fix: clean daily/note output and confirm writes
Build and Push Docker Container / build-and-push (push) Successful in 4m26s

- dailyPath returns { path }

- dailyRead and note:read return { content }

- vault and vaults return parsed structured JSON

- write operations return { ok: true }

- keep stderr/timed_out only when present

- bump n8n node package to 0.2.4
This commit is contained in:
2026-06-24 12:38:03 +02:00
parent f3762eec82
commit 747fd68726
3 changed files with 45 additions and 5 deletions
@@ -264,9 +264,49 @@ export class ObsidianApi implements INodeType {
// Always keep n8n output minimal/clean.
// - Prefer parsed stdout (e.g. vault/vaults)
// - Otherwise keep stdout as-is
// Build a stable, minimal output shape for n8n.
// We try to expose the single most useful field name per operation.
const stdout = result.stdout ?? '';
// Daily notes
if (resource === 'daily' && operation === 'dailyPath') {
const out: any = { path: stdout };
if (result.stderr) out.stderr = result.stderr;
if (result.timed_out) out.timed_out = result.timed_out;
returnData.push({ json: out, pairedItem: { item: itemIndex } });
continue;
}
if (resource === 'daily' && operation === 'dailyRead') {
const out: any = { content: stdout };
if (result.stderr) out.stderr = result.stderr;
if (result.timed_out) out.timed_out = result.timed_out;
returnData.push({ json: out, pairedItem: { item: itemIndex } });
continue;
}
// Notes
if (resource === 'note' && operation === 'read') {
const out: any = { content: stdout };
if (result.stderr) out.stderr = result.stderr;
if (result.timed_out) out.timed_out = result.timed_out;
returnData.push({ json: out, pairedItem: { item: itemIndex } });
continue;
}
// vault and vaults are parsed as structured JSON
const parsed = (result as any).parsed_stdout;
const out: any = parsed ? parsed : { stdout: result.stdout };
if (!parsed && result.stderr) out.stderr = result.stderr;
if (parsed) {
const out: any = parsed;
if (result.timed_out) out.timed_out = result.timed_out;
if (result.stderr) out.stderr = result.stderr;
returnData.push({ json: out, pairedItem: { item: itemIndex } });
continue;
}
// Everything else (writes, deletes, rename, list files, etc.):
// keep output clean/stable and only confirm success.
const out: any = { ok: true };
if (result.stderr) out.stderr = result.stderr;
if (result.timed_out) out.timed_out = result.timed_out;
returnData.push({ json: out, pairedItem: { item: itemIndex } });