← 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
M public/index.htmlM server.js
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 →