[object Object]

← back to Vendor Agents Viewer

label intentional no-scrape vendors honestly: API exposes skip_catalog_scrape/is_private_label/is_active; cards show 'n/a — private label' or 'n/a — no source' instead of 'none built' for the 14 vendors with no scrapeable source; gimmersta flagged in registry

9768cb41753b12a8e8837c049c9037fa51730475 · 2026-06-10 20:39:29 -0700 · SteveStudio2

Files touched

Diff

commit 9768cb41753b12a8e8837c049c9037fa51730475
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Wed Jun 10 20:39:29 2026 -0700

    label intentional no-scrape vendors honestly: API exposes skip_catalog_scrape/is_private_label/is_active; cards show 'n/a — private label' or 'n/a — no source' instead of 'none built' for the 14 vendors with no scrapeable source; gimmersta flagged in registry
---
 public/index.html |  2 +-
 server.js         | 10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/public/index.html b/public/index.html
index 9b0254b..16cf214 100644
--- a/public/index.html
+++ b/public/index.html
@@ -90,7 +90,7 @@ function render(){
       </div>
       ${x.conflict_owner?`<div class="when" style="color:var(--conf)">\u26a0 port :${x.agent_port} reused by <b>${x.conflict_owner}</b> \u2014 agent not running</div>`:""}
       <div class="when" title="${x.updated_at||''}">🕓 updated ${fmtDate(x.updated_at)}</div>
-      <div class="kv"><span>Scraper <b style="color:${x.launchable?'var(--on)':'var(--off)'}">${x.scraper_id||'none built'}</b></span></div>
+      <div class="kv"><span>Scraper <b style="color:${x.launchable?'var(--on)':'var(--off)'}">${x.scraper_id||(x.skip_catalog_scrape?(x.is_private_label?'n/a — private label':'n/a — no source'):'none built')}</b></span></div>
       <div class="btns">
         ${x.url?`<a class="act go" href="${x.url}" target="_blank">Open</a>`:''}
         ${x.status==='online'
diff --git a/server.js b/server.js
index eefa764..20f9cf8 100644
--- a/server.js
+++ b/server.js
@@ -107,7 +107,8 @@ app.get('/api/agents', async (req, res) => {
     const { rows } = await pool.query(`
       SELECT vendor_code, vendor_name, agent_name, agent_port, pm2_name, website_url,
              catalog_count, shopify_count, catalog_with_images, catalog_on_shopify,
-             catalog_not_on_shopify, website_score, discontinued_count, updated_at
+             catalog_not_on_shopify, website_score, discontinued_count, updated_at,
+             skip_catalog_scrape, is_private_label, is_active
       FROM vendor_registry
       WHERE agent_port IS NOT NULL OR agent_name IS NOT NULL OR pm2_name IS NOT NULL
       ORDER BY agent_port NULLS LAST, vendor_name`);
@@ -129,7 +130,12 @@ app.get('/api/agents', async (req, res) => {
         pm2_name: myPm2,
         registry_pm2: a.pm2_name,
         conflict_owner: (!matches && realPm2) ? realPm2 : null,
-        description: describe(a) + (scraperId ? '' : ' (no scraper built yet — launch serves health only)'),
+        description: describe(a) + (scraperId ? '' :
+          a.skip_catalog_scrape
+            ? (a.is_private_label
+                ? ' (private label — no external source to scrape; agent serves health only)'
+                : ' (no scrapeable source — dead/parked/gated site; agent serves health only)')
+            : ' (no scraper built yet — launch serves health only)'),
         url: (matches && a.agent_port) ? `http://127.0.0.1:${a.agent_port}/` : null,
       };
     });

← 47c3aaa agent-host: normalize scraper output — accept bare array or  ·  back to Vendor Agents Viewer  ·  security: strip hardcoded secret -> env-first/passwordless. 0b82d9d →