github analyzed 0f5e865 deep scan · partial (389/4,397 files)

tourhabk-ui/pos

github

Kamchatka travel: live tours and availability, safety alerts, places, weather, stays, trip plans

maintainer
tourhabk-ui
licence
first seen
2026-09-17
last seen
2026-09-17
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 8 tools
transport stdio · streamable-http · http verified reported listed in the official MCP registry counts 8 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • brain_get
  • brain_list
  • brain_search
  • brain_timeline
  • brain_upsert
  • check_protected
  • next_migration_id
  • sql_rules
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 0f5e865 · analyzer v33 · 15h ago

skills & prompt files 40

danger signals40

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 3374

filesystem 229

  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/cleanup-deprecated.mjs :21 import { existsSync, readFileSync, writeFileSync, rmSync, readdirSync, statSync, lstatSync, unlinkSync } from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/context-signals.mjs :19 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/context.mjs :18 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/critique-storage.mjs :28 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/detect-csp.mjs :28 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/detect.mjs :3 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/detector/cli/main.mjs :1 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs :1 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs :1 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs :1 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/detector/node/file-system.mjs :1 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/lib/impeccable-paths.mjs :1 import fs from 'node:fs';
show 28 more
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/lib/is-generated.mjs :17 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-accept.mjs :16 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-commit-manual-edits.mjs :25 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-copy-edit-agent.mjs :11 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-inject.mjs :16 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-insert.mjs :10 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-manual-edit-evidence.mjs :11 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-server.mjs :19 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-wrap.mjs :14 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live.mjs :21 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live/manual-apply.mjs :2 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live/manual-edits-buffer.mjs :13 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live/session-store.mjs :1 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live/svelte-component.mjs :9 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live/sveltekit-adapter.mjs :10 import fs from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/pin.mjs :16 import { existsSync, readFileSync, writeFileSync, mkdirSync, rmSync, readdirSync } from 'node:fs';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/kamchatka/scripts/audit.mjs :18 import { readFile } from 'node:fs/promises';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/kamchatka/scripts/context.mjs :8 import { readdir, readFile, writeFile } from 'node:fs/promises';
  • fs (weak) tourhabk-ui-pos-0f5e865/.claude/skills/trust-first/scripts/audit-trust.mjs :8 import { readdir, readFile } from 'node:fs/promises';
  • fs (weak) tourhabk-ui-pos-0f5e865/_archive/mcp-kamchatka-data/mcp-source-refusal.test.ts :24 import { readFileSync } from 'node:fs';
  • fs tourhabk-ui-pos-0f5e865/app/api/admin/diagnostics/bystraya/route.ts :33 import { readdirSync } from 'fs';
  • fs tourhabk-ui-pos-0f5e865/app/api/admin/migrations/apply/route.ts :15 import fs from 'fs';
  • fs tourhabk-ui-pos-0f5e865/app/api/admin/migrations/run-pending/route.ts :9 import fs from 'fs';
  • fs tourhabk-ui-pos-0f5e865/app/api/admin/photos/upload/route.ts :16 import fs from 'fs/promises';
  • fs tourhabk-ui-pos-0f5e865/app/api/admin/videos/upload/route.ts :13 import fs from 'fs/promises';
  • fs tourhabk-ui-pos-0f5e865/app/api/ai/knowledge-base/route.ts :65 import fs from 'fs'
  • fs tourhabk-ui-pos-0f5e865/app/api/cron/build-sha-probe/route.ts :32 import { readFileSync } from 'node:fs';
  • fs tourhabk-ui-pos-0f5e865/app/api/cron/schema-drift/route.ts :19 import { readdirSync, readFileSync } from 'fs';

189 more not shown — this panel samples each group; the count above is the real total.

shell / exec 50

  • shell (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/context-signals.mjs :23 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/lib/is-generated.mjs :16 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-copy-edit-agent.mjs :10 import { spawn, spawnSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-poll.mjs :12 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-server.mjs :18 import { spawn, execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live.mjs :20 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/.claude/skills/kamchatka/scripts/audit.mjs :20 import { execSync } from 'node:child_process';
  • shell tourhabk-ui-pos-0f5e865/app/api/webhook/route.ts :4 import { exec } from 'child_process';
  • shell tourhabk-ui-pos-0f5e865/lib/agents/evo/growth-agent.ts :164 'app/api/webhook/route.ts', // exec() защищён HMAC-SHA256, команда захардкожена
  • shell tourhabk-ui-pos-0f5e865/lib/db/schema-coverage.ts :31 import { execSync } from 'node:child_process';
  • shell tourhabk-ui-pos-0f5e865/lib/kuzmich/tool-loop.ts :92 const content = await exec(tc.function.name, args);
  • shell tourhabk-ui-pos-0f5e865/lib/text-links.ts :51 // Своя копия регулярки: флаг g делает exec() статфульным (lastIndex),
show 28 more
  • shell (weak) tourhabk-ui-pos-0f5e865/scripts/design-token-gate.mjs :29 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/scripts/evo-report-issues.js :18 const { execFileSync } = require('child_process');
  • shell tourhabk-ui-pos-0f5e865/start.js :3 const { spawn } = require('child_process');
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/integration/operator-screens.pg.test.ts :18 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/integration/tourist-cabinet.pg.test.ts :28 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/agent-kernel.test.ts :98 const { execSync } = require('node:child_process') as typeof import('node:child_process');
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/booking-key-delivery.test.ts :33 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/cancel-releases-slots.test.ts :30 * якорь конца строки, и `booking_status = $` не находилось нигде. Сторож при
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/client-no-node-builtins.test.ts :20 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/coastline-build.test.ts :14 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/commission-rate-decided.test.ts :45 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/date-only.test.ts :13 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/deploy-ancestry.test.ts :21 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/deploy-unknown-is-not-mismatch.test.ts :27 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/export-census-frozen.test.ts :19 import { execFileSync } from 'child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/group-slots-participants.test.ts :17 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/ledger-check-waits-deploy.test.ts :26 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/no-console-log-prod.test.ts :19 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/no-external-navigators.test.ts :31 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/no-ignored-sources.test.ts :19 import { execFileSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/non-place-re-parameterized.test.ts :10 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/operator-api-no-orphans.test.ts :18 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/operator-bookings-columns.test.ts :24 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/operator-tours-content-repair.test.ts :25 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/perimeter-smoke.test.ts :13 import { spawnSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/place-type-label.test.ts :10 import { execSync } from 'node:child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/reachability-frozen.test.ts :19 import { execFileSync } from 'child_process';
  • shell (weak) tourhabk-ui-pos-0f5e865/tests/unit/reviews-two-subjects.test.ts :33 import { execSync } from 'node:child_process';

10 more not shown — this panel samples each group; the count above is the real total.

network 269

  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/context-signals.mjs :20 import net from 'node:net';
  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/context.mjs :161 const res = await fetch(`${UPDATE_HOST}/api/version`, { signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) });
  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/detector/node/file-system.mjs :162 const res = await fetch(`http://localhost:${port}/`, { signal: controller.signal, redirect: 'follow' });
  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-browser.js :3300 const res = await fetch('http://localhost:' + PORT + '/manual-edit-stash', {
  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-complete.mjs :60 const res = await fetch(`http://localhost:${info.port}/poll`, {
  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-poll.mjs :18 // Node's built-in fetch (undici under the hood) enforces a 300s headers
  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-server.mjs :16 import http from 'node:http';
  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/live-status.mjs :17 const res = await fetch(`http://localhost:${info.port}/status?token=${info.token}`);
  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/impeccable/scripts/modern-screenshot.umd.js :7 tTimeout(()=>a.abort(),r):void 0;return fetch(t,D({signal:a.signal},i)).then(c=>{if(!c.ok)throw new Error("Failed fetch, not 2xx resp
  • net (weak) tourhabk-ui-pos-0f5e865/.claude/skills/trust-first/scripts/audit-trust.mjs :35 name: 'SOS fetch() without IndexedDB fallback',
  • net tourhabk-ui-pos-0f5e865/_archive/marketplaces/cars/_CarRentalPageClient.tsx :16 const response = await fetch('/api/cars');
  • net tourhabk-ui-pos-0f5e865/_archive/marketplaces/gear/_GearRentalPageClient.tsx :32 const response = await fetch(`/api/gear?${params}`);
show 28 more
  • net tourhabk-ui-pos-0f5e865/_archive/marketplaces/shop/_ShopPageClient.tsx :33 const response = await fetch(`/api/souvenirs?${params}`);
  • net tourhabk-ui-pos-0f5e865/_archive/mcp-kamchatka-data/sources/local-vk.ts :1 import axios from 'axios';
  • net tourhabk-ui-pos-0f5e865/_archive/mcp-kamchatka-data/sources/mches-telegram.ts :1 import axios from 'axios';
  • net tourhabk-ui-pos-0f5e865/_archive/mcp-kamchatka-data/sources/tourism-db.ts :1 import axios from 'axios';
  • net tourhabk-ui-pos-0f5e865/app/_home/_HomeV8Client.tsx :109 fetch('/api/trips/active', { credentials: 'same-origin' })
  • net tourhabk-ui-pos-0f5e865/app/accommodations/[id]/_AccommodationDetailClient.tsx :85 fetch(`/api/accommodations/${accommodationId}`)
  • net tourhabk-ui-pos-0f5e865/app/accommodations/_AccommodationsClient.tsx :70 fetch('/api/tourist/wishlist?type=accommodation')
  • net tourhabk-ui-pos-0f5e865/app/ai-assistant/_AIAssistantClient.tsx :308 const res = await fetch('/api/ai/chat', {
  • net tourhabk-ui-pos-0f5e865/app/ai-tools/[slug]/_ToolDetailClient.tsx :31 fetch(`/api/tools/${slug}`, { method: 'POST' }).catch(() => null);
  • net tourhabk-ui-pos-0f5e865/app/ai-tools/_AIToolsClient.tsx :51 fetch(`/api/tools/${tool.slug}`, { method: 'POST' }).catch(() => null);
  • net tourhabk-ui-pos-0f5e865/app/api/accommodations/[id]/book/route.ts :342 const paymentResponse = await fetch(new URL('/api/payments/create', request.url), {
  • net tourhabk-ui-pos-0f5e865/app/api/admin/diagnostics/storage/route.ts :123 const plain = await fetch(url, { cache: 'no-store' });
  • net tourhabk-ui-pos-0f5e865/app/api/admin/execute-all/route.ts :59 await fetch(`${process.env.TELEGRAM_API_BASE||'https://api.telegram.org'}/bot${token}/sendMessage`, {
  • net tourhabk-ui-pos-0f5e865/app/api/admin/import/route-passports/route.ts :63 const res = await fetch(url, {
  • net (weak) tourhabk-ui-pos-0f5e865/app/api/admin/intelligence-sources/test/route.ts :62 const res = await fetch(body.url, {
  • net tourhabk-ui-pos-0f5e865/app/api/admin/net-diag/route.ts :32 const res = await fetch(url, { signal: AbortSignal.timeout(12000), ...opts });
  • net tourhabk-ui-pos-0f5e865/app/api/admin/operators/[id]/route.ts :96 fetch(`${process.env.TELEGRAM_API_BASE||'https://api.telegram.org'}/bot${token}/sendMessage`, {
  • net tourhabk-ui-pos-0f5e865/app/api/admin/photos/upload/route.ts :62 const res = await fetch('https://api.anthropic.com/v1/messages', {
  • net tourhabk-ui-pos-0f5e865/app/api/admin/telegram/diagnose/route.ts :32 const res = await fetch(`${process.env.TELEGRAM_API_BASE||'https://api.telegram.org'}/bot${token}/${method}`, {
  • net tourhabk-ui-pos-0f5e865/app/api/admin/telegram/route.ts :31 const res = await fetch(`${process.env.TELEGRAM_API_BASE||'https://api.telegram.org'}/bot${token}/${method}`, {
  • net (weak) tourhabk-ui-pos-0f5e865/app/api/admin/telegram/test/route.ts :44 const meRes = await fetch(`${process.env.TELEGRAM_API_BASE||'https://api.telegram.org'}/bot${token}/getMe`);
  • net (weak) tourhabk-ui-pos-0f5e865/app/api/admin/test-fugu/route.ts :52 const res = await fetch('https://api.sakana.ai/v1/chat/completions', {
  • net (weak) tourhabk-ui-pos-0f5e865/app/api/admin/test-openrouter/route.ts :39 const authRes = await fetch('https://openrouter.ai/api/v1/auth/key', {
  • net tourhabk-ui-pos-0f5e865/app/api/admin/track-imports/[id]/line/route.ts :80 const res = await fetch(row.s3_url);
  • net tourhabk-ui-pos-0f5e865/app/api/agent/plan/route.ts :43 const response = await fetch(`${crewaiUrl}/api/plan`, {
  • net tourhabk-ui-pos-0f5e865/app/api/ai/chat-stream/route.ts :8 * const response = await fetch('/api/ai/chat-stream', {
  • net tourhabk-ui-pos-0f5e865/app/api/ai/deepseek/route.ts :89 const response = await fetch('https://api.deepseek.com/v1/chat/completions', {
  • net tourhabk-ui-pos-0f5e865/app/api/ai/health/route.ts :58 fetch('https://openrouter.ai/api/v1/chat/completions', {

229 more not shown — this panel samples each group; the count above is the real total.

secrets 275

  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/ai-check/route.ts :46 OPENROUTER_API_KEY: !!process.env.OPENROUTER_API_KEY,
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/auth/issue-token/route.ts :18 const adminSecret = process.env.ADMIN_TOKEN_SECRET;
  • secrets (weak) tourhabk-ui-pos-0f5e865/app/api/admin/channels/test/route.ts :115 configured: !!(process.env.MAX_BOT_TOKEN && process.env.MAX_CHANNEL_ID),
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/config-check/route.ts :43 private_set: set(process.env.VAPID_PRIVATE_KEY),
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/diagnostics/storage/route.ts :24 access_key_set: !!process.env.S3_ACCESS_KEY,
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/enrich-routes/route.ts :125 const adminKey = process.env.ADMIN_API_KEY ?? process.env.CRON_SECRET;
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/execute-all/route.ts :55 const token = process.env.TELEGRAM_BOT_TOKEN;
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/health/air-quality-coverage/route.ts :26 if (!keyIdentity(process.env.IQAIR_API_KEY).present) {
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/health/air-quality/route.ts :22 configured: keyIdentity(process.env.IQAIR_API_KEY).present,
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/import/road-graph/route.ts :45 const cronSecret = process.env.CRON_SECRET;
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/leads/list/route.ts :23 const cronSecret = process.env.CRON_SECRET;
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/leads/process-batch/route.ts :25 const cronSecret = process.env.CRON_SECRET;
show 28 more
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/max-send/route.ts :23 const token = process.env.MAX_BOT_TOKEN;
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/net-diag/route.ts :76 const tgToken = process.env.TELEGRAM_BOT_TOKEN;
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/operators/[id]/route.ts :94 const token = process.env.TELEGRAM_BOT_TOKEN;
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/photos/upload/route.ts :57 const anthropicKey = process.env.ANTHROPIC_API_KEY;
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/telegram/diagnose/route.ts :16 process.env.TELEGRAM_BOT_TOKEN ??
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/telegram/route.ts :22 process.env.TELEGRAM_BOT_TOKEN ??
  • secrets (weak) tourhabk-ui-pos-0f5e865/app/api/admin/telegram/test/route.ts :21 const token = process.env.TELEGRAM_BOT_TOKEN;
  • secrets (weak) tourhabk-ui-pos-0f5e865/app/api/admin/test-fugu/route.ts :42 const fuguKey = process.env.FUGU_API_KEY || null;
  • secrets (weak) tourhabk-ui-pos-0f5e865/app/api/admin/test-openrouter/route.ts :26 const key = process.env.OR_API_KEY || process.env.OPENROUTER_API_KEY || null;
  • secrets tourhabk-ui-pos-0f5e865/app/api/admin/track-imports/route.ts :119 const secret = process.env.CRON_SECRET ?? '';
  • secrets tourhabk-ui-pos-0f5e865/app/api/ai/deepseek/route.ts :53 const apiKey = process.env.DEEPSEEK_API_KEY || '';
  • secrets tourhabk-ui-pos-0f5e865/app/api/ai/health/route.ts :41 const openrouterKey = process.env.OPENROUTER_API_KEY;
  • secrets tourhabk-ui-pos-0f5e865/app/api/ai/knowledge-base/route.ts :143 const s3AccessKey = process.env.S3_ACCESS_KEY
  • secrets tourhabk-ui-pos-0f5e865/app/api/ai/relay-check/route.ts :83 const anthropicKey = process.env.ANTHROPIC_API_KEY || '';
  • secrets tourhabk-ui-pos-0f5e865/app/api/alice/setup/route.ts :23 secret_configured: Boolean(process.env.ALICE_WEBHOOK_SECRET),
  • secrets tourhabk-ui-pos-0f5e865/app/api/analytics/hit/route.ts :60 process.env.CRON_SECRET ?? 'vedar',
  • secrets tourhabk-ui-pos-0f5e865/app/api/auth/magic/route.ts :17 const s = process.env.JWT_SECRET;
  • secrets tourhabk-ui-pos-0f5e865/app/api/auth/register-operator/route.ts :16 const token = process.env.TELEGRAM_BOT_TOKEN;
  • secrets tourhabk-ui-pos-0f5e865/app/api/auth/register/route.ts :23 const secret = process.env.JWT_SECRET;
  • secrets tourhabk-ui-pos-0f5e865/app/api/auth/telegram/route.ts :110 const botToken = process.env.TELEGRAM_BOT_TOKEN;
  • secrets tourhabk-ui-pos-0f5e865/app/api/bots/reposter/bulk/route.ts :45 function token(): string { return process.env.REPOSTER_TG_BOT_TOKEN ?? ''; }
  • secrets tourhabk-ui-pos-0f5e865/app/api/bots/reposter/setup/route.ts :20 const token = process.env.REPOSTER_TG_BOT_TOKEN;
  • secrets tourhabk-ui-pos-0f5e865/app/api/bots/reposter/webhook/route.ts :54 return process.env.REPOSTER_TG_BOT_TOKEN ?? '';
  • secrets tourhabk-ui-pos-0f5e865/app/api/cron/abandoned-bookings/route.ts :51 if (!timingSafeCompare(secret, process.env.CRON_SECRET ?? '')) {
  • secrets tourhabk-ui-pos-0f5e865/app/api/cron/ai-channel-check/route.ts :28 const cronSecret = process.env.CRON_SECRET;
  • secrets tourhabk-ui-pos-0f5e865/app/api/cron/ai-models/route.ts :90 if (!timingSafeCompare(secret, process.env.CRON_SECRET ?? '')) {
  • secrets tourhabk-ui-pos-0f5e865/app/api/cron/alerts-census/route.ts :63 if (!timingSafeCompare(secret, process.env.CRON_SECRET ?? '')) {
  • secrets tourhabk-ui-pos-0f5e865/app/api/cron/anthropic-path-probe/route.ts :138 const cronSecret = process.env.CRON_SECRET;

235 more not shown — this panel samples each group; the count above is the real total.

database 55

  • db tourhabk-ui-pos-0f5e865/.claude/create-initiative.js :1 const { Pool } = require('pg');
  • db tourhabk-ui-pos-0f5e865/app/api/cron/evo/route.ts :39 import type { PoolClient } from 'pg';
  • db tourhabk-ui-pos-0f5e865/app/api/import/asset/route.ts :3 import { Client } from 'pg'
  • db tourhabk-ui-pos-0f5e865/lib/agents/evo/coverage-ledger.ts :12 import type { Pool } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/bookings/booking.service.ts :14 import { PoolClient } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/bookings/reserve.ts :63 import type { PoolClient } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/database.ts :1 import { Pool, PoolClient } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/database/migrate.ts :16 import { Pool } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/db-pool.ts :8 import { Pool } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/eco/ledger.ts :21 import type { PoolClient } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/mcp/dev-tools/db.ts :32 import { Pool } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/payments/slot-counter.ts :51 import type { PoolClient } from 'pg';
show 28 more
  • db tourhabk-ui-pos-0f5e865/lib/places/aliases.ts :32 import type { PoolClient } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/services/safety/source-health.ts :13 import type { Pool } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/transfers/booking.ts :14 import { PoolClient } from 'pg';
  • db tourhabk-ui-pos-0f5e865/lib/transfers/service.ts :31 import type { PoolClient } from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/apply-migration.mjs :5 import pg from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/audit-knowledge.js :16 const { Pool } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/audit-prod-schema.js :15 const { Pool } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/bootstrap-from-baseline.js :37 const { Client } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/bootstrap-migrations-tracking.ts :9 import { Pool } from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/check-schema.js :5 const { Client } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/compute-elevation-profile.ts :23 import { Pool } from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/create-fishing-route.js :9 const { Client } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/db-check.ts :7 import { Pool } from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/enrich-coords-osm.js :18 const { Pool } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/enrich-routes.js :23 const { Pool } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/gen-db-schema.ts :29 import { Client } from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/gen-images.mjs :7 import pg from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/geocode-routes.js :18 const { Pool } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/import-kamchatka-routes.js :5 const { Pool } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/import-route-passports.ts :31 import { Pool } from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/index-route-embeddings.ts :17 import { Pool } from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/load-fishingkam-tours.js :12 const { Client } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/map-park-vertices.ts :24 import { Pool } from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/migrate-standalone.js :164 const { Pool } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/migrate.js :5 const { Client } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/route-scraper-agent.js :22 const { Pool } = require('pg');
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/run-m109.mjs :5 import pg from 'pg';
  • db (weak) tourhabk-ui-pos-0f5e865/scripts/scrape-guides-visitkamchatka.js :18 const { Pool } = require('pg');

15 more not shown — this panel samples each group; the count above is the real total.

tool registrations 8

  • next_migration_id tourhabk-ui-pos-0f5e865/lib/mcp/dev-tools/server.ts :44
  • sql_rules tourhabk-ui-pos-0f5e865/lib/mcp/dev-tools/server.ts :51
  • check_protected tourhabk-ui-pos-0f5e865/lib/mcp/dev-tools/server.ts :58
  • brain_search tourhabk-ui-pos-0f5e865/lib/mcp/dev-tools/server.ts :73
  • brain_get tourhabk-ui-pos-0f5e865/lib/mcp/dev-tools/server.ts :87
  • brain_upsert tourhabk-ui-pos-0f5e865/lib/mcp/dev-tools/server.ts :98
  • brain_timeline tourhabk-ui-pos-0f5e865/lib/mcp/dev-tools/server.ts :115
  • brain_list tourhabk-ui-pos-0f5e865/lib/mcp/dev-tools/server.ts :128

install hooks 1

  • prepare tourhabk-ui-pos-0f5e865/package.json :73 husky || true

declared dependencies 61

  • @aws-sdk/client-s3@^3.1127.0
  • @dnd-kit/core@^6.3.1
  • @huggingface/transformers@^3.8.1
  • @maxhub/max-bot-api@^0.3.1
  • @types/leaflet@^1.9.22
  • @types/node@^26.4.1
  • @types/nodemailer@^8.0.1
  • @types/pdfkit@^0.17.6
  • @types/pg@^8.23.1
  • @types/qrcode@^1.5.6
  • @types/react@^18.3.1
  • @types/react-dom@^18.3.1
show 28 more
  • @types/swagger-jsdoc@^6.0.4
  • @upstash/ratelimit@^2.0.8
  • @upstash/redis@^1.38.4
  • autoprefixer@^10.5.5
  • bcryptjs@^3.0.3
  • clsx@^2.1.0
  • date-fns@^4.4.0
  • dotenv@^17.4.2
  • eslint@^9.39.5
  • eslint-config-next@16.3.4
  • framer-motion@^13.2.0
  • idb@^8.0.3
  • jose@^6.2.11
  • leaflet@^1.9.4
  • leaflet.markercluster@^1.5.3
  • lottie-web@^5.13.0
  • lucide-react@^1.41.0
  • maplibre-gl@^6.7.0
  • next@^15.5.25
  • nodemailer@^9.0.5
  • pdf-parse@^2.4.5
  • pdfkit@^0.20.2
  • pg@^8.23.0
  • pmtiles@^4.5.0
  • postcss@^8.5.28
  • qrcode@^1.5.4
  • react@^18.3.1
  • react-datepicker@^9.1.0

21 more not shown — this panel samples each group; the count above is the real total.

clipboard 1

  • navigator.clipboard tourhabk-ui-pos-0f5e865/lib/share.ts :69 if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {

cursor-plugin 4

  • opaque (low) tourhabk-ui-pos-0f5e865/.cursor/copilot-instructions.md bundled .cursor/ plugin descriptor (tourhabk-ui-pos-0f5e865/.cursor/copilot-instructions.md) — presence-detected; review the descriptor
  • opaque (low) tourhabk-ui-pos-0f5e865/.cursor/mcp.json bundled .cursor/ plugin descriptor (tourhabk-ui-pos-0f5e865/.cursor/mcp.json) — presence-detected; review the descriptor
  • opaque (low) tourhabk-ui-pos-0f5e865/.cursor/mcp_settings.json bundled .cursor/ plugin descriptor (tourhabk-ui-pos-0f5e865/.cursor/mcp_settings.json) — presence-detected; review the descriptor
  • opaque (low) tourhabk-ui-pos-0f5e865/.cursor/rules/ai-assistant.mdc bundled .cursor/ plugin descriptor (tourhabk-ui-pos-0f5e865/.cursor/rules/ai-assistant.mdc) — presence-detected; review the descriptor

perm:untrusted 3

  • untrusted tourhabk-ui-pos-0f5e865/app/hub/operator/bookings/[id]/_BookingDetailClient.tsx :37 const fetcher = (url: string) => fetch(url).then(r => r.json());
  • untrusted tourhabk-ui-pos-0f5e865/app/hub/operator/leads/[id]/_LeadDetailClient.tsx :82 const fetcher = (url: string) => fetch(url).then(r => {
  • untrusted tourhabk-ui-pos-0f5e865/app/hub/operator/leads/_LeadsClient.tsx :39 const fetcher = (url: string) => fetch(url).then(r => r.json());

transport_posture 1

  • binds all interfaces (0.0.0.0) tourhabk-ui-pos-0f5e865/start.js :25 proxy.listen(PORT, '0.0.0.0', () => console.log('[proxy] listening'));