registry  /  @pentatonic-ai/ai-agent-sdk  /  0.10.30

@pentatonic-ai/ai-agent-sdk@0.10.30

TES SDK — LLM observability and lifecycle tracking via Pentatonic Thing Event System. Track token usage, tool calls, and conversations. Manage things through event-sourced lifecycle stages with AI enrichment and vector search.

Static Scan Results

scanned 2h ago · by rust-scanner

Static analysis flagged 14 finding(s) at 72.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
One or more suspicious static signals were detected.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessCryptoDynamicRequireEnvironmentVarsFilesystemNetworkShell
Supply chain
HighEntropyStringsUrlStrings
ManifestNo manifest risk signals triggered.
scanned 55 file(s), 414 KB of source, external domains: 127.0.0.1, api.pentatonic.com, media.giphy.com, memory-engine.thingeventsystem.ai, sdk-telemetry.philip-134.workers.dev, their-company.api.pentatonic.com

Source & flagged code

6 flagged · loading source
packages/doctor/src/plugins.jsView file
67try { L68: const mod = await import(pathToFileURL(filePath).href); L69: const plugin = mod.default || mod;
Medium
Dynamic Require

Package source references dynamic require/import behavior.

packages/doctor/src/plugins.jsView on unpkg · L67
bin/commands/config.jsView file
4L5: const DEFAULT_ENGINE_URL = "http://localhost:8099"; L6: ... L30: export async function runConfigCommand(opts = {}) { L31: const log = opts.log || ((m) => process.stdout.write(m + "\n")); L32: const errLog = opts.errLog || ((m) => process.stderr.write(m + "\n")); ... L193: const credPath = join( L194: process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), L195: "tes", ... L199: try { L200: const c = JSON.parse(readFileSync(credPath, "utf-8")); L201: log("");
Medium
Install Persistence

Source writes installer persistence such as shell profile or service configuration.

bin/commands/config.jsView on unpkg · L4
packages/memory/src/openclaw/index.jsView file
19Manifest entrypoint (manifest.exports) carries capability families absent from dist/build output: environment+network, sensitive-file+network L19: * "database_url": "postgres://memory:memory@localhost:5433/memory", L20: * "embedding_url": "http://localhost:11435/v1", L21: * "embedding_model": "nomic-embed-text", ... L62: const credPath = join( L63: process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), L64: "tes", ... L68: try { L69: const creds = JSON.parse(readFileSync(credPath, "utf-8")); L70: if (!creds?.endpoint || !creds?.clientId || !creds?.apiKey) return config; ... L138: }, L139: logger: (msg) => process.stderr.write(`[pentatonic-memory] ${msg}\n`), L140: });
High
Entrypoint Build Divergence

Manifest entrypoint contains risky behavior absent from dist/build output.

packages/memory/src/openclaw/index.jsView on unpkg · L19
packages/memory/src/server.jsView file
36process.on("uncaughtException", (err) => { L37: process.stderr.write(`[memory-server] Uncaught: ${err.message}\n`); L38: }); ... L48: // without flooding the conversation surface. L49: if (process.env.PENTATONIC_DEPRECATION_QUIET !== "1") { L50: process.stderr.write( ... L84: // Resolved at module load. This file is loaded directly via Node (not L85: // bundled), so reading the root package.json synchronously is safe — L86: // packages/memory/src/server.js only ever runs in a Node process. ... L92: const here = dirname(fileURLToPath(import.meta.url)); L93: return JSON.parse( L94: readFileSync(resolve(here, "../../../package.json"), "utf8")
High
Sandbox Evasion Gated Capability

Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.

packages/memory/src/server.jsView on unpkg · L36
packages/memory-engine-v2/compat/server.pyView file
path = packages/memory-engine-v2/compat/server.py kind = build_helper sizeBytes = 61011 magicHex = [redacted]
Medium
Ships Build Helper

Package ships non-JavaScript build or shell helper files.

packages/memory-engine-v2/compat/server.pyView on unpkg
packages/memory-engine-v2/tests/test_entity_resolution_v2.pyView file
path = packages/memory-engine-v2/tests/test_entity_resolution_v2.py kind = payload_in_excluded_dir sizeBytes = 20523 magicHex = [redacted]
High
Payload In Excluded Dir

Package hides binary, compressed, or executable-looking payloads in test/fixture/hidden paths.

packages/memory-engine-v2/tests/test_entity_resolution_v2.pyView on unpkg

Findings

3 High6 Medium5 Low
HighEntrypoint Build Divergencepackages/memory/src/openclaw/index.js
HighSandbox Evasion Gated Capabilitypackages/memory/src/server.js
HighPayload In Excluded Dirpackages/memory-engine-v2/tests/test_entity_resolution_v2.py
MediumDynamic Requirepackages/doctor/src/plugins.js
MediumNetwork
MediumEnvironment Vars
MediumInstall Persistencebin/commands/config.js
MediumShips Build Helperpackages/memory-engine-v2/compat/server.py
MediumStructural Risk Force Deep Review
LowNon Install Lifecycle Scripts
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings