← back to Norma
snapshot: 12 file(s) changed, ~12 modified
479708bc7be6b1386ee72f79cf75803a1e61e866 · 2026-05-13 08:57:58 -0700 · Steve
Files touched
M agents/datasource-agent/skills/collect-statements.jsM agents/datasource-agent/skills/discover-apis.jsM agents/datasource-agent/skills/rate-sources.jsM agents/datasource-agent/skills/scrape-frontpages.jsM agents/datasource-agent/skills/scrape-petitions.jsM agents/onboard-agent/skills/discover.jsM agents/onboard-agent/skills/post.jsM agents/price-agent/skills/crawl-federal.jsM agents/price-agent/skills/enrich.jsM docs/api/v1.mdM docs/superpowers/plans/2026-03-13-power-intelligence.mdM scripts/batch-resolve-authors.js
Diff
commit 479708bc7be6b1386ee72f79cf75803a1e61e866
Author: Steve <steve@designerwallcoverings.com>
Date: Wed May 13 08:57:58 2026 -0700
snapshot: 12 file(s) changed, ~12 modified
---
agents/datasource-agent/skills/collect-statements.js | 2 +-
agents/datasource-agent/skills/discover-apis.js | 2 +-
agents/datasource-agent/skills/rate-sources.js | 2 +-
agents/datasource-agent/skills/scrape-frontpages.js | 2 +-
agents/datasource-agent/skills/scrape-petitions.js | 2 +-
agents/onboard-agent/skills/discover.js | 2 +-
agents/onboard-agent/skills/post.js | 2 +-
agents/price-agent/skills/crawl-federal.js | 2 +-
agents/price-agent/skills/enrich.js | 2 +-
docs/api/v1.md | 2 +-
docs/superpowers/plans/2026-03-13-power-intelligence.md | 2 +-
scripts/batch-resolve-authors.js | 2 +-
12 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/agents/datasource-agent/skills/collect-statements.js b/agents/datasource-agent/skills/collect-statements.js
index 64d019b..fcf8516 100644
--- a/agents/datasource-agent/skills/collect-statements.js
+++ b/agents/datasource-agent/skills/collect-statements.js
@@ -14,7 +14,7 @@ const AGENT = 'datasource-agent';
const PLATFORM = 'nonprofits';
const GEMINI_URL =
- 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+ 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GOOGLE_API_KEY}';
const DB_URL = process.env.DATABASE_URL || 'postgresql://dw_admin:DW2024SecurePass@127.0.0.1:5432/sdcc';
diff --git a/agents/datasource-agent/skills/discover-apis.js b/agents/datasource-agent/skills/discover-apis.js
index 589323d..aaeac71 100644
--- a/agents/datasource-agent/skills/discover-apis.js
+++ b/agents/datasource-agent/skills/discover-apis.js
@@ -14,7 +14,7 @@ const AGENT = 'datasource-agent';
const PLATFORM = 'data-apis';
const GEMINI_URL =
- 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+ 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GOOGLE_API_KEY}';
const DB_URL = process.env.DATABASE_URL || 'postgresql://dw_admin:DW2024SecurePass@127.0.0.1:5432/sdcc';
diff --git a/agents/datasource-agent/skills/rate-sources.js b/agents/datasource-agent/skills/rate-sources.js
index 75b2add..0a95df9 100644
--- a/agents/datasource-agent/skills/rate-sources.js
+++ b/agents/datasource-agent/skills/rate-sources.js
@@ -13,7 +13,7 @@ const AGENT = 'datasource-agent';
const PLATFORM = 'rating';
const GEMINI_URL =
- 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+ 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GOOGLE_API_KEY}';
const DB_URL = process.env.DATABASE_URL || 'postgresql://dw_admin:DW2024SecurePass@127.0.0.1:5432/sdcc';
diff --git a/agents/datasource-agent/skills/scrape-frontpages.js b/agents/datasource-agent/skills/scrape-frontpages.js
index 2f3cfe2..f6177fd 100644
--- a/agents/datasource-agent/skills/scrape-frontpages.js
+++ b/agents/datasource-agent/skills/scrape-frontpages.js
@@ -15,7 +15,7 @@ const AGENT = 'datasource-agent';
const PLATFORM = 'newspapers';
const GEMINI_URL =
- 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+ 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GOOGLE_API_KEY}';
const DB_URL = process.env.DATABASE_URL || 'postgresql://dw_admin:DW2024SecurePass@127.0.0.1:5432/sdcc';
diff --git a/agents/datasource-agent/skills/scrape-petitions.js b/agents/datasource-agent/skills/scrape-petitions.js
index 242cc21..1ca3342 100644
--- a/agents/datasource-agent/skills/scrape-petitions.js
+++ b/agents/datasource-agent/skills/scrape-petitions.js
@@ -16,7 +16,7 @@ const AGENT = 'datasource-agent';
const PLATFORM = 'petitions';
const GEMINI_URL =
- 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+ 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GOOGLE_API_KEY}';
const DB_URL = process.env.DATABASE_URL || 'postgresql://dw_admin:DW2024SecurePass@127.0.0.1:5432/sdcc';
diff --git a/agents/onboard-agent/skills/discover.js b/agents/onboard-agent/skills/discover.js
index ed8fba5..c8c4222 100644
--- a/agents/onboard-agent/skills/discover.js
+++ b/agents/onboard-agent/skills/discover.js
@@ -18,7 +18,7 @@ const fetch = require('node-fetch');
const AGENT = 'onboard-agent';
const PLATFORM = 'propublica';
-const GEMINI_API_KEY = 'AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+const GEMINI_API_KEY = '${GOOGLE_API_KEY}';
const GEMINI_URL = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GEMINI_API_KEY}`;
/**
diff --git a/agents/onboard-agent/skills/post.js b/agents/onboard-agent/skills/post.js
index 4592fb5..5e22ef0 100644
--- a/agents/onboard-agent/skills/post.js
+++ b/agents/onboard-agent/skills/post.js
@@ -13,7 +13,7 @@ const fetch = require('node-fetch');
const AGENT = 'onboard-agent';
const PLATFORM = 'email';
-const GEMINI_API_KEY = 'AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+const GEMINI_API_KEY = '${GOOGLE_API_KEY}';
const GEMINI_URL = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GEMINI_API_KEY}`;
/**
diff --git a/agents/price-agent/skills/crawl-federal.js b/agents/price-agent/skills/crawl-federal.js
index f2d28a3..8f4a9dd 100644
--- a/agents/price-agent/skills/crawl-federal.js
+++ b/agents/price-agent/skills/crawl-federal.js
@@ -13,7 +13,7 @@ const { logAction } = require('../../shared/audit-logger');
const { parseFederalRatesPage } = require('../lib/html-parser');
const AGENT_NAME = 'price-agent';
-const GEMINI_API_KEY = 'AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+const GEMINI_API_KEY = '${GOOGLE_API_KEY}';
const GEMINI_URL = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GEMINI_API_KEY}`;
const STUDENTAID_URL = 'https://studentaid.gov/understand-aid/types/loans/interest-rates';
diff --git a/agents/price-agent/skills/enrich.js b/agents/price-agent/skills/enrich.js
index b7521b1..ed3a222 100644
--- a/agents/price-agent/skills/enrich.js
+++ b/agents/price-agent/skills/enrich.js
@@ -13,7 +13,7 @@ const fetch = require('node-fetch');
const { logAction } = require('../../shared/audit-logger');
const AGENT_NAME = 'price-agent';
-const GEMINI_API_KEY = 'AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+const GEMINI_API_KEY = '${GOOGLE_API_KEY}';
const GEMINI_URL = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GEMINI_API_KEY}`;
const MAX_HTML_LENGTH = 30000;
diff --git a/docs/api/v1.md b/docs/api/v1.md
index f3a25af..9c405f1 100644
--- a/docs/api/v1.md
+++ b/docs/api/v1.md
@@ -32,7 +32,7 @@ Authorization: Bearer nrm_<40-character-hex>
Keys are issued by a Norma admin via the Settings UI. Contact your Norma administrator to request one. Keys are shown **exactly once** at creation — store them securely (secret manager, vault).
**Key format:** `nrm_` prefix + 40 hex characters (44 chars total).
-**Example:** `nrm_a1b2c3d4e5f67890abcdef1234567890abcdef12`
+**Example:** `nrm_${CLOUDFLARE_API_TOKEN}`
If you lose a key, request a new one and ask for the old one to be revoked.
diff --git a/docs/superpowers/plans/2026-03-13-power-intelligence.md b/docs/superpowers/plans/2026-03-13-power-intelligence.md
index 09d5372..ab2d673 100644
--- a/docs/superpowers/plans/2026-03-13-power-intelligence.md
+++ b/docs/superpowers/plans/2026-03-13-power-intelligence.md
@@ -910,7 +910,7 @@ Script that:
4. For each active org: filters triggers by relevance (focus_areas, geo_focus overlap)
5. Calls Gemini 2.0 Flash to generate reasoning for top 10 recommendations per org
6. Stores in weekly_intelligence and org_activity tables
-7. Uses the Gemini API key from CLAUDE.md: `AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo`
+7. Uses the Gemini API key from CLAUDE.md: `${GOOGLE_API_KEY}`
- [ ] **Step 2: Create PM2 ecosystem entry**
diff --git a/scripts/batch-resolve-authors.js b/scripts/batch-resolve-authors.js
index 09698f3..f8c360d 100644
--- a/scripts/batch-resolve-authors.js
+++ b/scripts/batch-resolve-authors.js
@@ -6,7 +6,7 @@
const { Pool } = require('pg');
const pool = new Pool({ connectionString: 'postgresql://dw_admin:DW2024SecurePass@127.0.0.1:5432/sdcc' });
-const GEMINI_KEY = 'AIzaSyAO0rLKwtJUKcf3zVmKstBS4udct4QejMo';
+const GEMINI_KEY = '${GOOGLE_API_KEY}';
const GEMINI_URL = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GEMINI_KEY}`;
async function resolveWithGemini(headlines) {
← 4ad1c15 initial scaffold (gitify-all 2026-05-06)
·
back to Norma
·
instagram-agent: enable live reel/story/post publishing via ddf268e →