{"record":{"id":"7d4c08948b576abb","repo":"paperclipai/paperclip","slug":"networkallowlist-index-must-be-a-string","errorCode":null,"errorMessage":"networkAllowlist[${index}] must be a string.","messagePattern":"networkAllowlist\\[(.+?)\\] must be a string\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/adapter-utils/src/local-process-sandbox.ts","lineNumber":145,"sourceCode":"    const parsed = new URL(trimmed.includes(\"://\") ? trimmed : `https://${trimmed}`);\n    if (parsed.username || parsed.password || parsed.pathname !== \"/\" || parsed.search || parsed.hash) {\n      throw new Error(\"path\");\n    }\n    hostname = parsed.hostname.toLowerCase();\n    port = parsed.port || null;\n  } catch {\n    throw new Error(`networkAllowlist[${index}] must be a hostname, hostname:port, or origin URL.`);\n  }\n  if (!hostname || hostname === \"*\" || hostname.startsWith(\"*.\")) {\n    throw new Error(`networkAllowlist[${index}] must use an exact hostname; wildcards are not supported.`);\n  }\n  return { hostname, port };\n}\n\nexport function parseLocalProcessNetworkAllowlist(value: unknown): string[] {\n  if (!Array.isArray(value)) return [];\n  return value.map((entry, index) => {\n    if (typeof entry !== \"string\") throw new Error(`networkAllowlist[${index}] must be a string.`);\n    const rule = parseNetworkAllowlistEntry(entry, index);\n    return rule.port ? `${rule.hostname}:${rule.port}` : rule.hostname;\n  });\n}\n\nexport function parseLocalProcessNetworkScope(value: unknown): LocalProcessNetworkScope | null {\n  if (value == null || value === \"\") return null;\n  if (value === \"deny\" || value === \"allowlist\") return value;\n  throw new Error('networkScope must be \"deny\" or \"allowlist\".');\n}\n\nexport function parseLocalProcessFilesystemScope(value: unknown): \"workspace\" | null {\n  if (value == null || value === \"\") return null;\n  if (value === \"workspace\") return value;\n  throw new Error('filesystemScope must be \"workspace\".');\n}\n\nfunction isNetworkTargetAllowed(hostname: string, port: string, rules: NetworkAllowlistRule[]): boolean {","sourceCodeStart":127,"sourceCodeEnd":163,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/packages/adapter-utils/src/local-process-sandbox.ts#L127-L163","documentation":"parseLocalProcessNetworkAllowlist received a networkAllowlist array containing a non-string entry at the given index; entries must be strings.","triggerScenarios":"Thrown at packages/adapter-utils/src/local-process-sandbox.ts:145 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Make networkAllowlist[${index}] a string value."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}