registry  /  @cat-factory/server  /  0.66.2

@cat-factory/server@0.66.2

Runtime-neutral HTTP layer for the Agent Architecture Board: the Hono controllers, middleware (auth/authz/CORS/error), request helpers and the gateway seams shared by every deployment facade (Cloudflare Worker, Node service).

AI Security Review

scanned 2d ago · by lpm-firewall-ai

No confirmed malicious attack surface was established. The package is a runtime-neutral HTTP server layer with user-invoked controllers and provider integrations.

Static reason
One or more suspicious static signals were detected.
Trigger
Importing exports or invoking configured Hono routes in an application server.
Impact
Expected backend behavior when configured by the host application; no covert credential theft or install-time behavior identified.
Mechanism
Feature-aligned HTTP routing, OAuth token exchange, GitHub API calls, LLM/web-search proxying, and persistence RPC.
Rationale
Static inspection shows package-aligned server, OAuth, GitHub, search, crypto, and persistence code with no lifecycle execution or covert exfiltration behavior. Scanner hints are explained by documented PEM parsing helpers, dynamic Proxy repository dispatch, and expected network integrations.
Evidence
package.jsondist/index.jsdist/crypto/encoding.jsdist/crypto/encoding.d.tsdist/modules/tasks/TaskSourceController.jsdist/modules/webSearch/upstreams.jsdist/modules/llmProxy/LlmProxyController.jsdist/auth/GitHubOAuth.jsdist/auth/GoogleOAuth.jsdist/auth/LinearOAuth.jsdist/github/GitHubAppAuth.jsdist/persistence/remoteRepositories.js
Network endpoints10
github.comapi.github.comaccounts.google.comwww.googleapis.comoauth2.googleapis.com/tokenlinear.appapi.linear.app/oauth/tokenapi.search.brave.com/res/v1/web/search<configured SearXNG base>/search<configured persistence base>/internal/persistence

Decision evidence

public snapshot
AI called this Clean at 91.0% confidence as Benign with low false-positive risk.
Evidence for block
  • Network-capable HTTP/OAuth server code exists but appears feature-aligned, not covert.
  • Credential handling is present for OAuth, GitHub App, runner, and personal secrets, but no harvesting/exfiltration path was found.
Evidence against
  • package.json has no lifecycle hooks or bin; main only exports dist/index.js.
  • dist/index.js is a barrel export for HTTP controllers, auth, crypto helpers, GitHub, persistence, and agents.
  • dist/crypto/encoding.d.ts contains PEM marker documentation only; no embedded private key or secret value.
  • dist/modules/tasks/TaskSourceController.js defines Hono task-source/OAuth routes gated through container services and signed state.
  • Network endpoints inspected are expected providers: GitHub, Google, Linear, Brave Search, SearXNG/configured base URLs, and internal persistence RPC.
  • No child_process, install-time execution, destructive persistence, prompt/reviewer manipulation, or AI-agent control-surface writes found.
Behavioral surface
Source
ChildProcessDynamicRequireFilesystemNetwork
Supply chain
HighEntropyStringsUrlStrings
Manifest
NoLicense
scanned 123 file(s), 712 KB of source, external domains: accounts.google.com, api.github.com, api.linear.app, api.search.brave.com, github.com, linear.app, oauth2.googleapis.com, www.googleapis.com

Source & flagged code

7 flagged · loading source
dist/crypto/encoding.d.tsView file
7patternName = private_key_rsa severity = critical line = 7 matchedText = * (`----...CS#1
Critical
Critical Secret

Package contains a critical-looking secret pattern.

dist/crypto/encoding.d.tsView on unpkg · L7
7patternName = private_key_rsa severity = critical line = 7 matchedText = * (`----...CS#1
Critical
Secret Pattern

RSA private key in dist/crypto/encoding.d.ts

dist/crypto/encoding.d.tsView on unpkg · L7
8patternName = private_key_rsa severity = critical line = 8 matchedText = * (`----... via
Critical
Secret Pattern

RSA private key in dist/crypto/encoding.d.ts

dist/crypto/encoding.d.tsView on unpkg · L8
dist/modules/tasks/TaskSourceController.jsView file
162return unavailable(c); L163: const task = await tasks.importService.import(param(c, 'workspaceId'), sourceParam(c), c.req.valid('json').ref); L164: return c.json(task, 201);
Medium
Dynamic Require

Package source references dynamic require/import behavior.

dist/modules/tasks/TaskSourceController.jsView on unpkg · L162
dist/crypto/encoding.jsView file
30patternName = private_key_rsa severity = critical line = 30 matchedText = * (`----...CS#1
Critical
Secret Pattern

RSA private key in dist/crypto/encoding.js

dist/crypto/encoding.jsView on unpkg · L30
31patternName = private_key_rsa severity = critical line = 31 matchedText = * (`----... via
Critical
Secret Pattern

RSA private key in dist/crypto/encoding.js

dist/crypto/encoding.jsView on unpkg · L31
dist/github/GitHubAppAuth.d.tsView file
4patternName = private_key_rsa severity = critical line = 4 matchedText = /** App .... */
Critical
Secret Pattern

RSA private key in dist/github/GitHubAppAuth.d.ts

dist/github/GitHubAppAuth.d.tsView on unpkg · L4

Findings

6 Critical2 Medium5 Low
CriticalCritical Secretdist/crypto/encoding.d.ts
CriticalSecret Patterndist/crypto/encoding.d.ts
CriticalSecret Patterndist/crypto/encoding.d.ts
CriticalSecret Patterndist/crypto/encoding.js
CriticalSecret Patterndist/crypto/encoding.js
CriticalSecret Patterndist/github/GitHubAppAuth.d.ts
MediumDynamic Requiredist/modules/tasks/TaskSourceController.js
MediumNetwork
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings
LowNo License