Add multi-account OAuth, Obsidian integration, product assets, and test tooling

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Garfield
2026-04-29 09:52:53 -04:00
parent 166f5d55a6
commit e3a272c332
67 changed files with 6204 additions and 94 deletions

View File

@@ -0,0 +1,47 @@
import fs from "fs";
import path from "path";
const vaultRoot = process.env.OBSIDIAN_VAULT_PATH || "/home/garfield/obsidian/vaults";
const cleanupTag = "#squaremcp-test-cleanup";
const pilotLogPath = path.join(vaultRoot, "SquareMCP", "Pilot Requests.md");
const dailyNotePath = path.join(
vaultRoot,
"Daily Notes",
`${new Intl.DateTimeFormat("en-CA", {
timeZone: "America/New_York",
year: "numeric",
month: "2-digit",
day: "2-digit",
}).format(new Date())}.md`
);
function removeTaggedBlocks(content) {
const normalized = content.replace(/\r\n/g, "\n");
const blocks = normalized.split(/\n{2,}/);
const kept = blocks.filter((block) => !block.includes(cleanupTag));
return {
changed: kept.length !== blocks.length,
content: kept.join("\n\n").replace(/\n{3,}/g, "\n\n").trimEnd() + "\n",
removedCount: blocks.length - kept.length,
};
}
function cleanFile(filePath) {
if (!fs.existsSync(filePath)) {
return { changed: false, removedCount: 0 };
}
const original = fs.readFileSync(filePath, "utf8");
const result = removeTaggedBlocks(original);
if (result.changed) {
fs.writeFileSync(filePath, result.content, "utf8");
}
return result;
}
const pilotLogResult = cleanFile(pilotLogPath);
const dailyLogResult = cleanFile(dailyNotePath);
console.log("squaremcp cleanup complete");
console.log(`pilot_log_removed: ${pilotLogResult.removedCount}`);
console.log(`daily_log_removed: ${dailyLogResult.removedCount}`);