[object Object]

← back to Norma

chore: lint fixes (surface local feed write errors, non-blocking intra-batch sleep) + version bump (session close)

aa2a34be7dea14a3b8bb9e7869b37fe4fc3e3567 · 2026-08-12 07:42:22 -0700 · Steve Abrams

Files touched

Diff

commit aa2a34be7dea14a3b8bb9e7869b37fe4fc3e3567
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Aug 12 07:42:22 2026 -0700

    chore: lint fixes (surface local feed write errors, non-blocking intra-batch sleep) + version bump (session close)
---
 agents/instagram-agent/daily-cadence.js   |  4 ++--
 agents/instagram-agent/gen-ig-activity.js | 15 ++++++++++++---
 agents/instagram-agent/package.json       |  2 +-
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/agents/instagram-agent/daily-cadence.js b/agents/instagram-agent/daily-cadence.js
index 754f15c..827b1cb 100644
--- a/agents/instagram-agent/daily-cadence.js
+++ b/agents/instagram-agent/daily-cadence.js
@@ -96,7 +96,7 @@ async function findProduct(keyword) {
   }
 
   console.log(`Daily cadence ${today} — ${postedToday.size}/${eligible.length} done, posting next ${batch.length}${DRY ? ' (DRY)' : ''}:`);
-  const sleep = (ms) => cp.execFileSync('sleep', [String(ms / 1000)]);
+  const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
   for (let i = 0; i < batch.length; i++) {
     const b = batch[i];
     if (DRY) { console.log(`  @${b.account} ← ${b.title}  [${b.product}]`); continue; }
@@ -110,7 +110,7 @@ async function findProduct(keyword) {
       break;
     }
     console.log(/posted/i.test(out) ? `  ✓ @${b.account} ← ${b.title}` : `  ⚠ @${b.account} — ${out.trim().split('\n').pop()}`);
-    if (i < batch.length - 1) sleep(3000); // pace within batch
+    if (i < batch.length - 1) await sleep(3000); // pace within batch
   }
   if (needsCody.length) console.log(`Deferred to Cody (settlement-sensitive, gated visual pass): ${needsCody.join(', ')}`);
   console.log(`Remaining after this batch: ${remaining.length - batch.length}`);
diff --git a/agents/instagram-agent/gen-ig-activity.js b/agents/instagram-agent/gen-ig-activity.js
index 8935e99..ef2a2ff 100644
--- a/agents/instagram-agent/gen-ig-activity.js
+++ b/agents/instagram-agent/gen-ig-activity.js
@@ -35,14 +35,23 @@ const out = {
   posts,
 };
 
-const targets = [
+// Local feed paths are REQUIRED — a failed write here (disk/permission) must surface,
+// not silently stale the feed. The Kamatera MCC path is best-effort (host may lack it).
+const required = [
   path.join(HERE, 'data', 'ig-activity.json'),
   path.join(HERE, 'public', 'ig-activity.json'),
+];
+const optional = [
   path.join(process.env.HOME, 'Projects', 'marketing-command-center', 'public', 'ig-activity.json'),
 ];
-for (const t of targets) {
+for (const t of required) {
+  fs.mkdirSync(path.dirname(t), { recursive: true });
+  fs.writeFileSync(t, JSON.stringify(out, null, 2));
+  console.log('wrote', t);
+}
+for (const t of optional) {
   try { fs.mkdirSync(path.dirname(t), { recursive: true }); fs.writeFileSync(t, JSON.stringify(out, null, 2)); console.log('wrote', t); }
-  catch (e) { /* MCC may not exist on every host */ }
+  catch (e) { /* MCC may not exist on this host */ }
 }
 console.log(`ig-activity: ${out.total_posts} posts across ${out.accounts_touched} accounts`);
 
diff --git a/agents/instagram-agent/package.json b/agents/instagram-agent/package.json
index e765df2..e8a0ad0 100644
--- a/agents/instagram-agent/package.json
+++ b/agents/instagram-agent/package.json
@@ -1,6 +1,6 @@
 {
   "name": "norma-instagram-agent",
-  "version": "1.1.0",
+  "version": "1.1.1",
   "description": "Norma Instagram Agent — Posts, Reels, and Stories via Meta Graph API",
   "main": "server.js",
   "scripts": {

← 2fa68ee daily-cadence: ffepurchasing -> woven texture (broader clean  ·  back to Norma  ·  auto-data-snapshot: 2026-08-12T07:52:17 (1 data files) — age b83f617 →