{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-830270c88d7d0b85", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/base-runtime.ts:300", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/base-runtime.ts:300"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3334d905a1fab5e", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/workflow-validation-spec.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/workflow-validation-spec.ts:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ebb97354b5066f4", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/state-consistency-spec.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/state-consistency-spec.ts:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4b0cc560c708144", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/monitoring-updates-spec.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/monitoring-updates-spec.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95a2052d327e735f", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/conditional-branching-spec.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/conditional-branching-spec.ts:88"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a08fa2be46c5f2e4", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/skip-logic-spec.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/skip-logic-spec.ts:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-643240c53efd9c84", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/topological-ordering-spec.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/topological-ordering-spec.ts:79"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb6b591c8027df37", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/edge-cases-spec.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/edge-cases-spec.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8074347b081cd686", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/successful-execution-spec.ts:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/successful-execution-spec.ts:107"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-475606d02fcb2fc7", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/input-collection-spec.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/input-collection-spec.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f893a19554b27705", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/concurrent-errors-spec.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/concurrent-errors-spec.ts:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bdacac8495b38d5d", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/status-computation-spec.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/status-computation-spec.ts:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bfefd2bd985057b5", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/output-handling-spec.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/output-handling-spec.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9ea5cca70793e0d", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/failing-execution-spec.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/failing-execution-spec.ts:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-915d6e97c01ca1c2", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/node-execution-errors-spec.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/node-execution-errors-spec.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-280a511a4d59f9ba", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/javascript/javascript-node.test.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/javascript/javascript-node.test.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-527391c83814c921", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/submit-comment-reddit-node.integration.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/submit-comment-reddit-node.integration.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-183eeed08ce8b9b1", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/vote-reddit-node.integration.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/vote-reddit-node.integration.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-51e39d5b0fd8df56", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/list-comments-reddit-node.integration.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/list-comments-reddit-node.integration.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef56c24ede2368d9", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/get-post-reddit-node.integration.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/get-post-reddit-node.integration.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d8f8839df4e65d8", "name": "TODO/FIXME marker in shipping code \u2014 packages/runtime/src/nodes/3d/dem-to-gltf-node.test.ts:230", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/runtime/src/nodes/3d/dem-to-gltf-node.test.ts:230"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e092fa8a77d3ca40", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/3d/dem-to-gltf-node.test.ts:245", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/3d/dem-to-gltf-node.test.ts:245"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d45d796388d43d86", "name": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/input/javascript-input-node.test.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/input/javascript-input-node.test.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-386992ee586a8a0b", "name": "Stray `console.log` in TS/JS \u2014 apps/app/src/components/workflow/api-snippets.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/app/src/components/workflow/api-snippets.ts:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a92a51fb77033f5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/execution-email-dialog.tsx:166", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/execution-email-dialog.tsx:166"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74805c9f1a68e7b6", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/workflow-node.tsx:499", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/workflow-node.tsx:499"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1de50b05f862dea3", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/http-request-config-dialog.tsx:344", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/http-request-config-dialog.tsx:344"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95ae8c98c29694d6", "name": "React Flow <Controls> without dark theming \u2014 apps/app/src/components/workflow/workflow-canvas.tsx:630", "shortDescription": {"text": "React Flow <Controls> without dark theming \u2014 apps/app/src/components/workflow/workflow-canvas.tsx:630"}, "fullDescription": {"text": "`<Controls>` ships with white buttons. Override `.react-flow__controls` and `.react-flow__controls-button` in your stylesheet or pass a styled wrapper.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.controls.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff4a863cb2b4c949", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/workflow-canvas.tsx:125", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/workflow-canvas.tsx:125"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ffd8708f21cdf43", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/upgrade-required-dialog.tsx:80", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/upgrade-required-dialog.tsx:80"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c999072ca8bbbd16", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/widgets/input/file-input.tsx:160", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/widgets/input/file-input.tsx:160"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2edfe5a7e6c87a71", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/app/src/components/workflow/fields/geojson-field.tsx:141", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/app/src/components/workflow/fields/geojson-field.tsx:141"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4cb1afef1f9930ff", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/fields/property-field.tsx:142", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/fields/property-field.tsx:142"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d3711facf92c08f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/app/src/components/docs/code-block.tsx:106", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/app/src/components/docs/code-block.tsx:106"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1eff32c65b6ba6cc", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/docs/node-card.tsx:47", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/docs/node-card.tsx:47"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e0c71dbe56c3ae5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/docs/node-docs-dialog.tsx:45", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/docs/node-docs-dialog.tsx:45"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4789be94910d2e3d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/app/src/components/ui/chart.tsx:82", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/app/src/components/ui/chart.tsx:82"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-30f941cdbde1d771", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/dataset-detail-page.tsx:223", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/dataset-detail-page.tsx:223"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9af376f417e9ee9a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/workflows-page.tsx:494", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/workflows-page.tsx:494"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db9f4e95aa54dd26", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/schemas-page.tsx:118", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/schemas-page.tsx:118"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77cd440ddc528376", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/api-keys-page.tsx:291", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/api-keys-page.tsx:291"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a42e5d3c840c5c6d", "name": "React Flow <Controls> without dark theming \u2014 apps/app/src/pages/database-explorer-page.tsx:231", "shortDescription": {"text": "React Flow <Controls> without dark theming \u2014 apps/app/src/pages/database-explorer-page.tsx:231"}, "fullDescription": {"text": "`<Controls>` ships with white buttons. Override `.react-flow__controls` and `.react-flow__controls-button` in your stylesheet or pass a styled wrapper.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.controls.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a62bf584b1963c3e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/admin/admin-support-page.tsx:404", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/admin/admin-support-page.tsx:404"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-add3e6d5621b24ca", "name": "Stray `console.log` in TS/JS \u2014 apps/app/src/services/organizations-service.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/app/src/services/organizations-service.ts:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68908314dc2cedc3", "name": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-image-fixtures.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-image-fixtures.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2b975d43e1d9e10", "name": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-master-key.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-master-key.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a1ba4b7a48fb263", "name": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-audio-fixtures.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-audio-fixtures.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-531a91977bece0cc", "name": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-photon-tests.js:242", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-photon-tests.js:242"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fd1cb90c81da022", "name": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-pdf-fixtures.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-pdf-fixtures.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-550d5e6227323d6b", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/email.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/email.ts:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4edeca5da0fc293", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/support-email.ts:282", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/support-email.ts:282"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87fc1da3ce1add69", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/queue.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/queue.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db84b7fb02d2d563", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/scheduled.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/scheduled.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a4214e91a7f182a", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/stores/workflow-store.ts:323", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/stores/workflow-store.ts:323"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00c8b4e9ccdf4879", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/code-mode-executor.test.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/code-mode-executor.test.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca56f759b24f6c36", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/cloudflare-model-catalog.ts:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/cloudflare-model-catalog.ts:225"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e328900748e845a6", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/cloudflare-credential-service.ts:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/cloudflare-credential-service.ts:202"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb0dd94a0cc2da42", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/workflow-runtime-entrypoint.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/workflow-runtime-entrypoint.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5234cf4466b8fa3", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/services/execution-manager.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/services/execution-manager.ts:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9dace7aebfa30398", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/services/workflow-executor.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/services/workflow-executor.ts:159"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75156c39a9f6cf61", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/discord-webhook.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/discord-webhook.ts:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-098617d1f5e1157d", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/whatsapp-webhook.ts:333", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/whatsapp-webhook.ts:333"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-703c7e7fb11b9b88", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/slack-webhook.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/slack-webhook.ts:59"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fdc69f4de100eaa9", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/telegram-webhook.ts:222", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/telegram-webhook.ts:222"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa4d6b4d5da442f3", "name": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/stripe-webhooks.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/stripe-webhooks.ts:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2d253bc0dcccde6", "name": "Stray `console.log` in TS/JS \u2014 apps/www/scripts/extract-node-types.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/www/scripts/extract-node-types.ts:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44bdf2b5be54ad23", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/root.tsx:112", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/root.tsx:112"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9a9dde8c63b41dd4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/components/docs/code-block.tsx:42", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/components/docs/code-block.tsx:42"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fc5439341461b551", "name": "Stray `console.log` in TS/JS \u2014 apps/www/src/lib/api-snippets.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/www/src/lib/api-snippets.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2072f14d42a13123", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/home.tsx:85", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/home.tsx:85"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76eea6c4b7adbc49", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/alternatives/$competitor.tsx:154", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/alternatives/$competitor.tsx:154"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e7a3a810442abe8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/alternatives/index.tsx:81", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/alternatives/index.tsx:81"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3f812c2f24f627c6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/nodes/$category.tsx:153", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/nodes/$category.tsx:153"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0f20a79ce7726dfe", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/nodes/index.tsx:86", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/nodes/index.tsx:86"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e937f4208dd13e7", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/www/src/routes/nodes/$category.$nodeId.tsx:342", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/www/src/routes/nodes/$category.$nodeId.tsx:342"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-485e24db8ab27bfa", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/nodes/$category.$nodeId.tsx:169", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/nodes/$category.$nodeId.tsx:169"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50bf848cee2aba34", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/nodes.tsx:57", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/nodes.tsx:57"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dd40bc98a7f58f41", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/developers.tsx:56", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/developers.tsx:56"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a8dbe09bd8ff45e0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/index.tsx:107", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/index.tsx:107"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1119209410a4ec09", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/concepts.tsx:56", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/concepts.tsx:56"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ebb71caca511121", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/api.tsx:305", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/api.tsx:305"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-641518216b9fc226", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/workflows/index.tsx:96", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/workflows/index.tsx:96"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ae158ddb5e4f11ce", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/www/src/routes/workflows/$workflowId.tsx:191", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/www/src/routes/workflows/$workflowId.tsx:191"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8415ed6bfae6335", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/workflows/$workflowId.tsx:119", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/workflows/$workflowId.tsx:119"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7dcea98831ad60cb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/blog/$slug.tsx:135", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/blog/$slug.tsx:135"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6fc25b860192bd02", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/blog/index.tsx:87", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/blog/index.tsx:87"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d9980d9104825b19", "name": "Dockerfile runs as root: apps/api/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: apps/api/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ff93dffce0d1dc2f", "name": "Docker base image is tag-pinned but not digest-pinned: docker.io/cloudflare/sandbox:0.7.21", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: docker.io/cloudflare/sandbox:0.7.21"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-576719816bd04dd8", "name": "Dockerfile runs as root: apps/api/containers/duckdb/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: apps/api/containers/duckdb/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-df4993f28d99bb08", "name": "Docker base image is tag-pinned but not digest-pinned: docker.io/cloudflare/sandbox:0.7.17", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: docker.io/cloudflare/sandbox:0.7.17"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a331ef001c36b54c", "name": "Dockerfile runs as root: apps/api/containers/ffmpeg/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: apps/api/containers/ffmpeg/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2671897cdba236c", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0db7618d539a590", "name": "Runtime dotenv file present in repo: apps/app/.env.production", "shortDescription": {"text": "Runtime dotenv file present in repo: apps/app/.env.production"}, "fullDescription": {"text": "`apps/app/.env.production` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-968fb3c2134ce9aa", "name": "Runtime dotenv file present in repo: apps/app/.env.development", "shortDescription": {"text": "Runtime dotenv file present in repo: apps/app/.env.development"}, "fullDescription": {"text": "`apps/app/.env.development` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c1273d9239969d7", "name": "Runtime dotenv file present in repo: apps/www/.env.development", "shortDescription": {"text": "Runtime dotenv file present in repo: apps/www/.env.development"}, "fullDescription": {"text": "`apps/www/.env.development` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd74f61539063c93", "name": "Insecure pattern 'eval_used' in packages/runtime/src/nodes/math/calculator-node.ts:32", "shortDescription": {"text": "Insecure pattern 'eval_used' in packages/runtime/src/nodes/math/calculator-node.ts:32"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-605c54ec0b86fe42", "name": "Insecure pattern 'dangerous_innerhtml' in apps/app/src/components/workflow/fields/geojson-field.tsx:141", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/app/src/components/workflow/fields/geojson-field.tsx:141"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-01211442a8f0b833", "name": "Insecure pattern 'dangerous_innerhtml' in apps/app/src/components/docs/code-block.tsx:106", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/app/src/components/docs/code-block.tsx:106"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a4da62cd75e4c93f", "name": "Insecure pattern 'dangerous_innerhtml' in apps/app/src/components/ui/chart.tsx:82", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/app/src/components/ui/chart.tsx:82"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b98e032fb8583e2e", "name": "Insecure pattern 'node_child_process' in apps/api/containers/ffmpeg/server.mjs:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in apps/api/containers/ffmpeg/server.mjs:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63ef4403bacab1a3", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/root.tsx:112", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/root.tsx:112"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-be8f41c948a8ef37", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/components/docs/code-block.tsx:42", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/components/docs/code-block.tsx:42"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fb6ffee469e32166", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/home.tsx:85", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/home.tsx:85"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b924b655ba55ac2e", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/alternatives/$competitor.tsx:154", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/alternatives/$competitor.tsx:154"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e84f76cfc4815203", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/alternatives/index.tsx:81", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/alternatives/index.tsx:81"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5fa386692635f73b", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/nodes/$category.tsx:153", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/nodes/$category.tsx:153"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-97269a1f202d6f96", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/nodes/index.tsx:86", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/nodes/index.tsx:86"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84db3efd08affba2", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/nodes/$category.$nodeId.tsx:169", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/nodes/$category.$nodeId.tsx:169"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3664631a73584da9", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/nodes.tsx:57", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/nodes.tsx:57"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b19ad221b196b50", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/developers.tsx:56", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/developers.tsx:56"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0aeef6d3e88c5d19", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/index.tsx:107", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/index.tsx:107"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ad0dc440f220106e", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/concepts.tsx:56", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/concepts.tsx:56"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c14d3c8108e009b2", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/api.tsx:305", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/api.tsx:305"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-952d90a44a6be297", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/workflows/index.tsx:96", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/workflows/index.tsx:96"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a1404bb6d26a3c0", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/workflows/$workflowId.tsx:119", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/workflows/$workflowId.tsx:119"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d05ec9d56716db5a", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/blog/$slug.tsx:135", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/blog/$slug.tsx:135"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ab8096c415eafb3", "name": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/blog/index.tsx:87", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/blog/index.tsx:87"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-18d228fdf07c169c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab0ff27d2ba88e4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29c34d83c84cad43", "name": "Very large file: apps/api/src/runtime/cloudflare-node-registry.ts (1082 lines)", "shortDescription": {"text": "Very large file: apps/api/src/runtime/cloudflare-node-registry.ts (1082 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b7c60bc8569d7e1", "name": "Very large file: apps/api/src/db/queries.ts (3180 lines)", "shortDescription": {"text": "Very large file: apps/api/src/db/queries.ts (3180 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-367ace797c660237", "name": "Very large file: apps/api/test/setup.ts (3908 lines)", "shortDescription": {"text": "Very large file: apps/api/test/setup.ts (3908 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47edb5907af5997f", "name": "Node manifest has dependencies but no lockfile: packages/utils/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/utils/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb3e52667c84fb86", "name": "Node manifest has dependencies but no lockfile: packages/types/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/types/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c72a92376138a3f", "name": "Node manifest has dependencies but no lockfile: packages/geo/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/geo/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52d796fddd5f858a", "name": "Node manifest has dependencies but no lockfile: packages/runtime/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/runtime/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b02d785d4830372", "name": "Node manifest has dependencies but no lockfile: apps/app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b06b8d86f24c77f9", "name": "Node manifest has dependencies but no lockfile: apps/api/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/api/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ca3f9a1797936a2", "name": "Node manifest has dependencies but no lockfile: apps/www/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/www/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 206 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 192 placeholder/mock markers across 102 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b2c581628eba769", "name": "Agent authority lacks a verifier contract: .cursor/rules/03-project-structure.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/03-project-structure.mdc"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a64f739b072450ba", "name": "Agent authority lacks a verifier contract: .cursor/rules/04-code-implementation-guidelines.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/04-code-implementation-guidelines.mdc"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7d55d15d9dbe7029", "name": "Agent authority lacks a verifier contract: .cursor/rules/00-persona.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/00-persona.mdc"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f8611576813d0361", "name": "Agent authority lacks a verifier contract: .cursor/rules/01-software-design-guidelines.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/01-software-design-guidelines.mdc"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d24765ec67173e94", "name": "Agent authority lacks a verifier contract: .claude/agents/migration-runner.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/migration-runner.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd80cbe83db6e44a", "name": "Agent authority lacks a verifier contract: .claude/agents/node-creator.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/node-creator.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-61145dd7fcbfe939", "name": "Agent authority lacks a verifier contract: .claude/agents/integration-creator.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/integration-creator.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c057ae3eea053694", "name": "Agent authority lacks a verifier contract: .claude/skills/node-generator/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/node-generator/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b47d9c936537ffc", "name": "Commented-code block (5 lines) in packages/runtime/src/base-runtime.ts:456", "shortDescription": {"text": "Commented-code block (5 lines) in packages/runtime/src/base-runtime.ts:456"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4a8ecbedcc94e282", "name": "Commented-code block (6 lines) in packages/runtime/src/specification/parallel-execution-spec.ts:269", "shortDescription": {"text": "Commented-code block (6 lines) in packages/runtime/src/specification/parallel-execution-spec.ts:269"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b6e92d701173d09", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/geocoding-google-node.ts:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/geocoding-google-node.ts:128"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-860a4b16cfc25c2f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/places-google-node.ts:144", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/places-google-node.ts:144"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a8cc93064c81f602", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/air-quality-google-node.ts:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/air-quality-google-node.ts:101"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-436e11a627365d44", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/weather-google-node.ts:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/weather-google-node.ts:104"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63f9fab0e953b611", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/timezone-google-node.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/timezone-google-node.ts:100"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7d876a651bbd2bf2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/pollen-google-node.ts:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/pollen-google-node.ts:93"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6317b1819c3286d3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/elevation-google-node.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/elevation-google-node.ts:68"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-962741682fe84de0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/tavily/search-tavily-node.ts:169", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/tavily/search-tavily-node.ts:169"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3242694d9138fe26", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/tavily/extract-tavily-node.ts:118", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/tavily/extract-tavily-node.ts:118"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fc1e0320a0c34226", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wikipedia/search-mediawiki-node.ts:136", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wikipedia/search-mediawiki-node.ts:136"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aac61229e863f0ad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wikipedia/search-wikipedia-node.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wikipedia/search-wikipedia-node.ts:113"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1362e063646aaa55", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/browser/cloudflare-browser-crawl-queue-node.ts:", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/browser/cloudflare-browser-crawl-queue-node.ts:220"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35e76867f9d28010", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/browser/cloudflare-browser-crawl-node.ts:199", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/browser/cloudflare-browser-crawl-node.ts:199"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c789f7fcaf857346", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-followers-x-node.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-followers-x-node.ts:91"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d02dbfa1ccb0595c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/delete-post-x-node.ts:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/delete-post-x-node.ts:64"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e457a4c0dfd4aef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-following-x-node.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-following-x-node.ts:91"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e11896add9fcc487", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/get-post-x-node.ts:118", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/get-post-x-node.ts:118"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-16fb83d7e2e67c30", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/repost-x-node.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/repost-x-node.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6dd723ff1e5673a3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/get-user-x-node.ts:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/get-user-x-node.ts:129"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64dff9204930746f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/share-post-x-node.ts:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/share-post-x-node.ts:98"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-710414a39b28b4c5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/search-posts-x-node.ts:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/search-posts-x-node.ts:106"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d3a44068df690637", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-user-mentions-x-node.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-user-mentions-x-node.ts:91"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-523ce7a9b532ce52", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-user-posts-x-node.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-user-posts-x-node.ts:91"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f839156e44bcc06b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/like-post-x-node.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/like-post-x-node.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0cdcc449b58f4840", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/follow-user-x-node.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/follow-user-x-node.ts:72"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8e73052dedc6274d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/agent/base-agent-node.ts:257", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/agent/base-agent-node.ts:257"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-adfdfeb7c6a800fd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/append-videos-node.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/append-videos-node.ts:133"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c41f718bc0eb3261", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:99"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-369fd57a532c2a5f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/clip-video-node.ts:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/clip-video-node.ts:112"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c6791ce44846792d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/extract-first-frame-node.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/extract-first-frame-node.ts:91"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a89826505c834089", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/extract-last-frame-node.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/extract-last-frame-node.ts:91"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0646f37157724d3f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-send-message-whatsapp-node.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-send-message-whatsapp-node.ts:68"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-65d418799e1a2fb9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-send-image-whatsapp-node.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-send-image-whatsapp-node.ts:76"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b84b4aa406642aaa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-send-template-whatsapp-node.ts:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-send-template-whatsapp-node.ts:94"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-57ef135cda85999e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-mark-as-read-whatsapp-node.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-mark-as-read-whatsapp-node.ts:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f9efbfd7bfdb239", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/mark-message-google-mail-node.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/mark-message-google-mail-node.ts:91"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aeaaa2192f74bd9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/read-inbox-google-mail-node.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/read-inbox-google-mail-node.ts:113"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d3f8fbcb6d3fede4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/get-message-google-mail-node.ts:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/get-message-google-mail-node.ts:101"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0ec256b5eef41e91", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/send-email-google-mail-node.ts:124", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/send-email-google-mail-node.ts:124"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7b20f20107402031", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/trash-message-google-mail-node.ts:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/trash-message-google-mail-node.ts:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c90621fba0f40468", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/search-messages-google-mail-node.ts", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/search-messages-google-mail-node.ts:131"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6903dc4ee3dedf0c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/send-draft-google-mail-node.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/send-draft-google-mail-node.ts:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a816851af3b520b8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/check-draft-google-mail-node.ts:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/check-draft-google-mail-node.ts:98"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d0451713ae75696c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/create-reply-draft-google-mail-node", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/create-reply-draft-google-mail-node.ts:112"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a33c90cf65cd890c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/update-draft-google-mail-node.ts:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/update-draft-google-mail-node.ts:126"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5c534f7d04965218", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/modify-labels-google-mail-node.ts:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/modify-labels-google-mail-node.ts:133"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9b9fd00a0e8c8ef0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/delete-draft-google-mail-node.ts:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/delete-draft-google-mail-node.ts:73"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e64a7474fb8c8188", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/archive-message-google-mail-node.ts", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/archive-message-google-mail-node.ts:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f2c26856ef39eb9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-posts-reddit-node.ts:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-posts-reddit-node.ts:140"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-58aa919aa7d910c6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/get-subreddit-reddit-node.ts:115", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/get-subreddit-reddit-node.ts:115"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee4bdb5f30f0defd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:151", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:151"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eeaac382cad3ec09", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-comments-reddit-node.ts:193", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-comments-reddit-node.ts:193"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1cc3381eef6a4599", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/search-reddit-node.ts:171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/search-reddit-node.ts:171"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3e9a2238ff8b2359", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-user-comments-reddit-node.ts:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-user-comments-reddit-node.ts:138"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2a545a90f84b42ca", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/get-user-reddit-node.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/get-user-reddit-node.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8872ec53bae55db1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-user-posts-reddit-node.ts:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-user-posts-reddit-node.ts:140"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f31765d575318040", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/search-subreddits-reddit-node.ts:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/search-subreddits-reddit-node.ts:107"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb4f50dd45d8ac1a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/get-post-reddit-node.ts:153", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/get-post-reddit-node.ts:153"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-47199574f9fca7a3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/submit-comment-reddit-node.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/submit-comment-reddit-node.ts:103"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-306f01c5d76f5e6b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/vote-reddit-node.ts:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/vote-reddit-node.ts:99"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0d5b107b3596e13c", "name": "Commented-code block (5 lines) in packages/runtime/src/nodes/3d/geotiff-dem-query-node.test.ts:335", "shortDescription": {"text": "Commented-code block (5 lines) in packages/runtime/src/nodes/3d/geotiff-dem-query-node.test.ts:335"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6bc4098c47fbb1d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/get-post-wordpress-node.ts:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/get-post-wordpress-node.ts:149"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5fa7eb9a69ea3b92", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/list-posts-wordpress-node.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/list-posts-wordpress-node.ts:133"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d403a9c0ddd182f6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/search-wordpress-node.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/search-wordpress-node.ts:133"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-769a760eb10a3f74", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/get-site-wordpress-node.ts:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/get-site-wordpress-node.ts:122"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d6a10b57f691bd0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/create-tag-wordpress-node.ts:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/create-tag-wordpress-node.ts:123"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9405cddf946bb03", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/update-post-wordpress-node.ts:142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/update-post-wordpress-node.ts:142"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe4c704dd55723b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/upload-media-wordpress-node.ts:154", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/upload-media-wordpress-node.ts:154"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e53386b94f482bf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/create-post-wordpress-node.ts:164", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/create-post-wordpress-node.ts:164"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd536b328e3700f6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/list-categories-wordpress-node.ts:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/list-categories-wordpress-node.ts:107"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa79b07759133905", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/delete-post-wordpress-node.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/delete-post-wordpress-node.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9532abb2be348dc3", "name": "Commented-code block (6 lines) in packages/runtime/src/nodes/cloudflare/cloudflare-model-node.ts:30", "shortDescription": {"text": "Commented-code block (6 lines) in packages/runtime/src/nodes/cloudflare/cloudflare-model-node.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c6041fef6f4b19c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/list-guild-channels-discord-node.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/list-guild-channels-discord-node.ts:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e3f574b3f391fdb3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/get-channel-discord-node.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/get-channel-discord-node.ts:103"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f97eb51bba25a91", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/add-reaction-discord-node.ts:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/add-reaction-discord-node.ts:95"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ecf1d0036562c703", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/bot-send-dm-discord-node.ts:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/bot-send-dm-discord-node.ts:88"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9e9e28f6d4ec7f54", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/list-user-guilds-discord-node.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/list-user-guilds-discord-node.ts:68"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fc0ed5f0b03dc437", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/bot-add-reaction-discord-node.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/bot-add-reaction-discord-node.ts:75"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41b7df5a69db9f1a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/get-guild-discord-node.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/get-guild-discord-node.ts:103"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-416b46588cd63f51", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/send-message-discord-node.ts:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/send-message-discord-node.ts:129"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f6d1cb5ba6f36c3b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/send-dm-discord-node.ts:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/send-dm-discord-node.ts:106"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a439d848dbd45772", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/bot-send-message-discord-node.ts:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/bot-send-message-discord-node.ts:111"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20f86323b4243942", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/list-organization-repositories-github-no", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/list-organization-repositories-github-node.ts:123"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-187b82a59b4f0349", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/unstar-repository-github-node.ts:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/unstar-repository-github-node.ts:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85e32e6a3f8718fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/list-user-repositories-github-node.ts:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/list-user-repositories-github-node.ts:122"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aff4dae65ece930e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/create-update-file-github-node.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/create-update-file-github-node.ts:133"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-34b46b3c450b11df", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/star-repository-github-node.ts:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/star-repository-github-node.ts:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f31faab54aeb2967", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/follow-user-github-node.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/follow-user-github-node.ts:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0b2870150e5dc7a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/unfollow-user-github-node.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/unfollow-user-github-node.ts:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3bdf4ab647a68ebd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/search-repositories-github-node.ts:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/search-repositories-github-node.ts:122"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d6566fc8f22fa65d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/get-user-github-node.ts:127", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/get-user-github-node.ts:127"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70fec9849370f2e2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/get-repository-github-node.ts:131", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/get-repository-github-node.ts:131"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9110587f392d87bc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/get-file-contents-github-node.ts:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/get-file-contents-github-node.ts:129"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b9f8c2cfef20107", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/delete-file-github-node.ts:142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/delete-file-github-node.ts:142"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a9d2c2ba6272bf73", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-get-chat-telegram-node.ts:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-get-chat-telegram-node.ts:73"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-efc542e4e3df0261", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-forward-message-telegram-node.ts:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-forward-message-telegram-node.ts:82"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b031311fa80886c0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-send-photo-telegram-node.ts:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-send-photo-telegram-node.ts:85"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-031aa620e5ed2e9d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-send-message-telegram-node.ts:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-send-message-telegram-node.ts:93"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af9444d73213ad0a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/replicate/replicate-model-node.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/replicate/replicate-model-node.ts:54"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-df6526d2851170b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/slack/bot-add-reaction-slack-node.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/slack/bot-add-reaction-slack-node.ts:72"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bfa5a7c081759e86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/slack/bot-send-message-slack-node.ts:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/slack/bot-send-message-slack-node.ts:86"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-976161fb81d52383", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/comment-on-post-linkedin-node.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/comment-on-post-linkedin-node.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3437ea0fd1ee8680", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/get-post-comments-linkedin-node.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/get-post-comments-linkedin-node.ts:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d708cf7ef71f6d0e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/get-profile-linkedin-node.ts:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/get-profile-linkedin-node.ts:93"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-293af3f7156de5c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/share-post-linkedin-node.ts:118", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/share-post-linkedin-node.ts:118"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-214e3811ea7d9ad6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/get-post-likes-linkedin-node.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/get-post-likes-linkedin-node.ts:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-be580ac72f1adc7c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/like-post-linkedin-node.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/like-post-linkedin-node.ts:96"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3bb6c43ec61451e3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/search-events-google-calendar-n", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/search-events-google-calendar-node.ts:124"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-66fdebd4182ec413", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/list-calendars-google-calendar-", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/list-calendars-google-calendar-node.ts:78"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-894d58f2b8c42495", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/check-availability-google-calen", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/check-availability-google-calendar-node.ts:90"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf1254270e7a06d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/add-attendees-google-calendar-n", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/add-attendees-google-calendar-node.ts:101"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-58f41be0b59daffa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/create-event-google-calendar-no", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/create-event-google-calendar-node.ts:169"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b05fd4f95948ab02", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/quick-add-google-calendar-node.", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/quick-add-google-calendar-node.ts:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3c2a4d86d58dd7fa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/list-events-google-calendar-nod", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/list-events-google-calendar-node.ts:142"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8d87d168ec6a98a3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/update-event-google-calendar-no", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/update-event-google-calendar-node.ts:117"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27de8e654919422c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/get-event-google-calendar-node.", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/get-event-google-calendar-node.ts:99"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab533167d3a8ce25", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/delete-event-google-calendar-no", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/delete-event-google-calendar-node.ts:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-57b1c442ba898a68", "name": "Commented-code block (5 lines) in apps/app/src/components/workflow/api-snippets.ts:321", "shortDescription": {"text": "Commented-code block (5 lines) in apps/app/src/components/workflow/api-snippets.ts:321"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ebb90311a2f1bcc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/app/src/components/workflow/api-snippets.ts:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/app/src/components/workflow/api-snippets.ts:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89c8b60ee90c99b4", "name": "Commented-code block (6 lines) in apps/app/src/pages/admin/admin-user-detail-page.tsx:269", "shortDescription": {"text": "Commented-code block (6 lines) in apps/app/src/pages/admin/admin-user-detail-page.tsx:269"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-65f108445b3dae3b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/app/src/services/admin-service.ts:1103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/app/src/services/admin-service.ts:1103"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6ac314a581a5fcc3", "name": "Commented-code block (5 lines) in apps/app/src/services/utils.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in apps/app/src/services/utils.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be07a99d760df198", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/app/src/services/utils.ts:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/app/src/services/utils.ts:112"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e0b0d39fd33cfa0d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/containers/ffmpeg/server.mjs:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/containers/ffmpeg/server.mjs:160"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0802af08493c5d26", "name": "Commented-code block (5 lines) in apps/api/src/support-email.ts:99", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/support-email.ts:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-689944661f984290", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/durable-objects/agent-runner.ts:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/durable-objects/agent-runner.ts:111"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-575023fa730b8a83", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/durable-objects/database-do.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/durable-objects/database-do.ts:30"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f03aa9f7ec3fe5eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/durable-objects/workflow-agent.ts:224", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/durable-objects/workflow-agent.ts:224"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4da6c8c7f8fb7e56", "name": "Commented-code block (5 lines) in apps/api/src/oauth/OAuthProvider.ts:152", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/oauth/OAuthProvider.ts:152"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d72e9617d27bcd29", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/oauth/OAuthProvider.ts:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/oauth/OAuthProvider.ts:222"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-967bf9a1561f3580", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/oauth/providers/XProvider.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/oauth/providers/XProvider.ts:113"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-82f2d801830d64a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/stores/workflow-store.ts:457", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/stores/workflow-store.ts:457"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-185e5ec77fb2c1bf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/types/agents.d.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/types/agents.d.ts:14"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ac6f90cd65420eef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/runtime/cloudflare-database-service.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/runtime/cloudflare-database-service.ts:19"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44b0adc07be8f167", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/runtime/code-mode-executor.test.ts:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/runtime/code-mode-executor.test.ts:8"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f02fe2d41a00beb9", "name": "Commented-code block (5 lines) in apps/api/src/runtime/cloudflare-model-catalog.ts:404", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/runtime/cloudflare-model-catalog.ts:404"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a7106d251d41d10", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/runtime/cloudflare-model-catalog.ts:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/runtime/cloudflare-model-catalog.ts:80"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-16b964659d801b4e", "name": "Commented-code block (10 lines) in apps/api/src/runtime/cloudflare-node-registry.ts:239", "shortDescription": {"text": "Commented-code block (10 lines) in apps/api/src/runtime/cloudflare-node-registry.ts:239"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4089a81081cc031a", "name": "Commented-code block (5 lines) in apps/api/src/runtime/cloudflare-workflow-runtime.test.ts:147", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/runtime/cloudflare-workflow-runtime.test.ts:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c54166f0f311e7aa", "name": "Commented-code block (5 lines) in apps/api/src/db/onboarding.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/db/onboarding.ts:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98c913f4e64961cd", "name": "Commented-code block (5 lines) in apps/api/src/db/support-queries.ts:19", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/db/support-queries.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e49be74084cdf610", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/services/stripe-service.ts:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/services/stripe-service.ts:135"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a33946c8dd0a7c4", "name": "Commented-code block (6 lines) in apps/api/src/routes/objects.ts:57", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/routes/objects.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-963ed7cd627394dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/ws.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/ws.ts:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ef3faaeb8e56e72", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/replicate.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/replicate.ts:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-33990275a45dab99", "name": "Commented-code block (5 lines) in apps/api/src/routes/types.ts:20", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/routes/types.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6636f210c1674e24", "name": "Commented-code block (5 lines) in apps/api/src/routes/oauth.ts:87", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/routes/oauth.ts:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c54078df2a47898", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/bots.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/bots.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f53c529b70cd6de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/workflows.ts:1021", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/workflows.ts:1021"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-714be0e487f84cbb", "name": "Legacy-named symbol `cutoffOld` in apps/api/src/routes/admin/onboarding.ts:72", "shortDescription": {"text": "Legacy-named symbol `cutoffOld` in apps/api/src/routes/admin/onboarding.ts:72"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a00bc1b54f3d8d79", "name": "Commented-code block (6 lines) in apps/api/src/routes/admin/onboarding.ts:71", "shortDescription": {"text": "Commented-code block (6 lines) in apps/api/src/routes/admin/onboarding.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75cf40d241ef4014", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/onboarding.ts:275", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/onboarding.ts:275"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-60e78003698bcbf3", "name": "Commented-code block (5 lines) in apps/api/src/routes/admin/onboarding-message.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in apps/api/src/routes/admin/onboarding-message.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4fef467241e8dc1", "name": "Commented-code block (8 lines) in apps/api/src/routes/admin/objects.ts:50", "shortDescription": {"text": "Commented-code block (8 lines) in apps/api/src/routes/admin/objects.ts:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77930e9f50a46c78", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/support.ts:274", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/support.ts:274"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-802560fb2312365a", "name": "Commented-code block (7 lines) in apps/api/src/routes/admin/stats.ts:236", "shortDescription": {"text": "Commented-code block (7 lines) in apps/api/src/routes/admin/stats.ts:236"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c78a95bab528ce0d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/stats.ts:262", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/stats.ts:262"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd27eeada86351ba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/executions.ts:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/executions.ts:107"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bbc2756b69877038", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/organizations.ts:253", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/organizations.ts:253"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bff4a0c5487fa53a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/www/workers/app.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/www/workers/app.ts:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7d35e63550837ad", "name": "Commented-code block (5 lines) in apps/www/src/lib/api-snippets.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in apps/www/src/lib/api-snippets.ts:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0529c134243950b7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/www/src/lib/api-snippets.ts:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/www/src/lib/api-snippets.ts:9"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb3fe19e55e6f1cd", "name": "Dangling fetch: POST https://places.googleapis.com/v1/places:searchText (packages/runtime/src/nodes/google/places-google", "shortDescription": {"text": "Dangling fetch: POST https://places.googleapis.com/v1/places:searchText (packages/runtime/src/nodes/google/places-google-node.ts:144)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google/places-google-node.ts:144` calls `POST https://places.googleapis.com/v1/places:searchText` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/places.googleapis.com/v1/places/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb5eccc67d603b5d", "name": "Dangling fetch: POST https://api.tavily.com/search (packages/runtime/src/nodes/tavily/search-tavily-node.ts:169)", "shortDescription": {"text": "Dangling fetch: POST https://api.tavily.com/search (packages/runtime/src/nodes/tavily/search-tavily-node.ts:169)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/tavily/search-tavily-node.ts:169` calls `POST https://api.tavily.com/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.tavily.com/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16807098ee7b0d9d", "name": "Dangling fetch: POST https://api.tavily.com/extract (packages/runtime/src/nodes/tavily/extract-tavily-node.ts:118)", "shortDescription": {"text": "Dangling fetch: POST https://api.tavily.com/extract (packages/runtime/src/nodes/tavily/extract-tavily-node.ts:118)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/tavily/extract-tavily-node.ts:118` calls `POST https://api.tavily.com/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.tavily.com/extract`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4bec1e761ae65248", "name": "Dangling fetch: DELETE https://api.x.com/2/tweets/${tweetId} (packages/runtime/src/nodes/x/delete-post-x-node.ts:64)", "shortDescription": {"text": "Dangling fetch: DELETE https://api.x.com/2/tweets/${tweetId} (packages/runtime/src/nodes/x/delete-post-x-node.ts:64)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/x/delete-post-x-node.ts:64` calls `DELETE https://api.x.com/2/tweets/${tweetId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.x.com/<p>/tweets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20c4e1246098d620", "name": "Dangling fetch: GET https://api.x.com/2/users/me (packages/runtime/src/nodes/x/repost-x-node.ts:65)", "shortDescription": {"text": "Dangling fetch: GET https://api.x.com/2/users/me (packages/runtime/src/nodes/x/repost-x-node.ts:65)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/x/repost-x-node.ts:65` calls `GET https://api.x.com/2/users/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.x.com/<p>/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41af13b6b1f1ee83", "name": "Dangling fetch: POST https://api.x.com/2/users/${me.data.id}/retweets (packages/runtime/src/nodes/x/repost-x-node.ts:81)", "shortDescription": {"text": "Dangling fetch: POST https://api.x.com/2/users/${me.data.id}/retweets (packages/runtime/src/nodes/x/repost-x-node.ts:81)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/x/repost-x-node.ts:81` calls `POST https://api.x.com/2/users/${me.data.id}/retweets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.x.com/<p>/users/<p>/retweets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-70a36c9e698242a2", "name": "Dangling fetch: POST https://api.x.com/2/tweets (packages/runtime/src/nodes/x/share-post-x-node.ts:98)", "shortDescription": {"text": "Dangling fetch: POST https://api.x.com/2/tweets (packages/runtime/src/nodes/x/share-post-x-node.ts:98)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/x/share-post-x-node.ts:98` calls `POST https://api.x.com/2/tweets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.x.com/<p>/tweets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d8aab888226ca9e9", "name": "Dangling fetch: GET https://api.x.com/2/users/me (packages/runtime/src/nodes/x/like-post-x-node.ts:65)", "shortDescription": {"text": "Dangling fetch: GET https://api.x.com/2/users/me (packages/runtime/src/nodes/x/like-post-x-node.ts:65)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/x/like-post-x-node.ts:65` calls `GET https://api.x.com/2/users/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.x.com/<p>/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ea34429788a67cb", "name": "Dangling fetch: POST https://api.x.com/2/users/${me.data.id}/likes (packages/runtime/src/nodes/x/like-post-x-node.ts:81)", "shortDescription": {"text": "Dangling fetch: POST https://api.x.com/2/users/${me.data.id}/likes (packages/runtime/src/nodes/x/like-post-x-node.ts:81)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/x/like-post-x-node.ts:81` calls `POST https://api.x.com/2/users/${me.data.id}/likes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.x.com/<p>/users/<p>/likes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f7b3529dc848fce8", "name": "Dangling fetch: GET https://api.x.com/2/users/me (packages/runtime/src/nodes/x/follow-user-x-node.ts:72)", "shortDescription": {"text": "Dangling fetch: GET https://api.x.com/2/users/me (packages/runtime/src/nodes/x/follow-user-x-node.ts:72)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/x/follow-user-x-node.ts:72` calls `GET https://api.x.com/2/users/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.x.com/<p>/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc7dc7b034c22061", "name": "Dangling fetch: POST https://api.x.com/2/users/${me.data.id}/following (packages/runtime/src/nodes/x/follow-user-x-node.", "shortDescription": {"text": "Dangling fetch: POST https://api.x.com/2/users/${me.data.id}/following (packages/runtime/src/nodes/x/follow-user-x-node.ts:88)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/x/follow-user-x-node.ts:88` calls `POST https://api.x.com/2/users/${me.data.id}/following` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.x.com/<p>/users/<p>/following`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5136e0b2d2024f98", "name": "Dangling fetch: POST https://agent/start (packages/runtime/src/nodes/agent/base-agent-node.ts:257)", "shortDescription": {"text": "Dangling fetch: POST https://agent/start (packages/runtime/src/nodes/agent/base-agent-node.ts:257)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/agent/base-agent-node.ts:257` calls `POST https://agent/start` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/agent/start`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b613de61ab954ff5", "name": "Dangling fetch: POST https://agent/run (packages/runtime/src/nodes/agent/base-agent-node.ts:348)", "shortDescription": {"text": "Dangling fetch: POST https://agent/run (packages/runtime/src/nodes/agent/base-agent-node.ts:348)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/agent/base-agent-node.ts:348` calls `POST https://agent/run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/agent/run`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a277a1a8a982c3b", "name": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/append-videos-node.ts:133)", "shortDescription": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/append-videos-node.ts:133)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/append-videos-node.ts:133` calls `POST http://container/jobs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-617233df3374e5c0", "name": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/append-videos-node.ts:158)", "shortDescription": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/append-videos-node.ts:158)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/append-videos-node.ts:158` calls `GET http://container/jobs/${job.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d05dd1a4ecd3a70", "name": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:99)", "shortDescription": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:99)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:99` calls `POST http://container/jobs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b01e0d4bc01be84d", "name": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:128)", "shortDescription": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:128)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:128` calls `GET http://container/jobs/${job.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4285eb30d043291d", "name": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/clip-video-node.ts:112)", "shortDescription": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/clip-video-node.ts:112)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/clip-video-node.ts:112` calls `POST http://container/jobs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d283fc7f35816eea", "name": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/clip-video-node.ts:142)", "shortDescription": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/clip-video-node.ts:142)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/clip-video-node.ts:142` calls `GET http://container/jobs/${job.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5abcc58a7e8d6d96", "name": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/extract-first-frame-node.ts:91)", "shortDescription": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/extract-first-frame-node.ts:91)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/extract-first-frame-node.ts:91` calls `POST http://container/jobs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06a79ea04a9c7e72", "name": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/extract-first-frame-node.ts:120)", "shortDescription": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/extract-first-frame-node.ts:120)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/extract-first-frame-node.ts:120` calls `GET http://container/jobs/${job.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa5f8311a9de3ba5", "name": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/extract-last-frame-node.ts:91)", "shortDescription": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/extract-last-frame-node.ts:91)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/extract-last-frame-node.ts:91` calls `POST http://container/jobs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9081bfe41966cf0f", "name": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/extract-last-frame-node.ts:120)", "shortDescription": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/extract-last-frame-node.ts:120)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/video/extract-last-frame-node.ts:120` calls `GET http://container/jobs/${job.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/container/jobs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18dad7c9860f1bcb", "name": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot-send-message-whatsapp-node.ts:68)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/whatsapp/bot-send-message-whatsapp-node.ts:68` calls `POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23aeff1d3847f766", "name": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot-send-image-whatsapp-node.ts:76)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/whatsapp/bot-send-image-whatsapp-node.ts:76` calls `POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13451154834f4d1d", "name": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot-send-template-whatsapp-node.ts:94)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/whatsapp/bot-send-template-whatsapp-node.ts:94` calls `POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e03d0d447ff42e28", "name": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot-mark-as-read-whatsapp-node.ts:51)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/whatsapp/bot-mark-as-read-whatsapp-node.ts:51` calls `POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab9ddc287fefa478", "name": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify (packages/runtime/src/n", "shortDescription": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify (packages/runtime/src/nodes/google-mail/mark-message-google-mail-node.ts:91)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/mark-message-google-mail-node.ts:91` calls `POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/<p>/modify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae65e0f840a9ec56", "name": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages?maxResults=${numResults}&labelIds=INBOX (pac", "shortDescription": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages?maxResults=${numResults}&labelIds=INBOX (packages/runtime/src/nodes/google-mail/read-inbox-google-mail-node.ts:113)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/read-inbox-google-mail-node.ts:113` calls `GET https://gmail.googleapis.com/gmail/v1/users/me/messages?maxResults=${numResults}&labelIds=INBOX` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d8a48a77cc36e87", "name": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${msg.id}?format=${format} (packages/runtime", "shortDescription": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${msg.id}?format=${format} (packages/runtime/src/nodes/google-mail/read-inbox-google-mail-node.ts:145)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/read-inbox-google-mail-node.ts:145` calls `GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${msg.id}?format=${format}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19692b6ca4fadff8", "name": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=${format} (packages/runt", "shortDescription": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=${format} (packages/runtime/src/nodes/google-mail/get-message-google-mail-node.ts:101)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/get-message-google-mail-node.ts:101` calls `GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=${format}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f3b83afbbf2e95b", "name": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/send (packages/runtime/src/nodes/google-mai", "shortDescription": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/send (packages/runtime/src/nodes/google-mail/send-email-google-mail-node.ts:124)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/send-email-google-mail-node.ts:124` calls `POST https://gmail.googleapis.com/gmail/v1/users/me/messages/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9985a8464a0389a1", "name": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/trash (packages/runtime/src/no", "shortDescription": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/trash (packages/runtime/src/nodes/google-mail/trash-message-google-mail-node.ts:79)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/trash-message-google-mail-node.ts:79` calls `POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/trash` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/<p>/trash`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-03bd8d5a5a008e61", "name": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${msg.id}?format=${format} (packages/runtime", "shortDescription": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${msg.id}?format=${format} (packages/runtime/src/nodes/google-mail/search-messages-google-mail-node.ts:160)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/search-messages-google-mail-node.ts:160` calls `GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${msg.id}?format=${format}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-197365033b4f5a8e", "name": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/drafts/send (packages/runtime/src/nodes/google-mail/", "shortDescription": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/drafts/send (packages/runtime/src/nodes/google-mail/send-draft-google-mail-node.ts:79)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/send-draft-google-mail-node.ts:79` calls `POST https://gmail.googleapis.com/gmail/v1/users/me/drafts/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/drafts/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b899bc062dbc0da", "name": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=metadata (packages/runti", "shortDescription": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=metadata (packages/runtime/src/nodes/google-mail/create-reply-draft-google-mail-node.ts:112)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/create-reply-draft-google-mail-node.ts:112` calls `GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=metadata` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e8bb16cb09d47e4", "name": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/drafts (packages/runtime/src/nodes/google-mail/creat", "shortDescription": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/drafts (packages/runtime/src/nodes/google-mail/create-reply-draft-google-mail-node.ts:185)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/create-reply-draft-google-mail-node.ts:185` calls `POST https://gmail.googleapis.com/gmail/v1/users/me/drafts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/drafts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c7f28832412950a", "name": "Dangling fetch: PUT https://gmail.googleapis.com/gmail/v1/users/me/drafts/${draftId} (packages/runtime/src/nodes/google-", "shortDescription": {"text": "Dangling fetch: PUT https://gmail.googleapis.com/gmail/v1/users/me/drafts/${draftId} (packages/runtime/src/nodes/google-mail/update-draft-google-mail-node.ts:126)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/update-draft-google-mail-node.ts:126` calls `PUT https://gmail.googleapis.com/gmail/v1/users/me/drafts/${draftId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/drafts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6bf3e5b56fc27a75", "name": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify (packages/runtime/src/n", "shortDescription": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify (packages/runtime/src/nodes/google-mail/modify-labels-google-mail-node.ts:133)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/modify-labels-google-mail-node.ts:133` calls `POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/<p>/modify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a64c68b36f58e9a1", "name": "Dangling fetch: DELETE https://gmail.googleapis.com/gmail/v1/users/me/drafts/${draftId} (packages/runtime/src/nodes/goog", "shortDescription": {"text": "Dangling fetch: DELETE https://gmail.googleapis.com/gmail/v1/users/me/drafts/${draftId} (packages/runtime/src/nodes/google-mail/delete-draft-google-mail-node.ts:73)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/delete-draft-google-mail-node.ts:73` calls `DELETE https://gmail.googleapis.com/gmail/v1/users/me/drafts/${draftId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/drafts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac6429e9eaca3e2b", "name": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify (packages/runtime/src/n", "shortDescription": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify (packages/runtime/src/nodes/google-mail/archive-message-google-mail-node.ts:79)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-mail/archive-message-google-mail-node.ts:79` calls `POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/<p>/modify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5b6cae62f10a682", "name": "Dangling fetch: GET https://oauth.reddit.com/r/${subreddit}/about (packages/runtime/src/nodes/reddit/get-subreddit-reddi", "shortDescription": {"text": "Dangling fetch: GET https://oauth.reddit.com/r/${subreddit}/about (packages/runtime/src/nodes/reddit/get-subreddit-reddit-node.ts:115)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/reddit/get-subreddit-reddit-node.ts:115` calls `GET https://oauth.reddit.com/r/${subreddit}/about` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth.reddit.com/r/<p>/about`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5443ef3367e2679b", "name": "Dangling fetch: POST https://oauth.reddit.com/api/media/asset.json (packages/runtime/src/nodes/reddit/share-post-reddit-", "shortDescription": {"text": "Dangling fetch: POST https://oauth.reddit.com/api/media/asset.json (packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:151)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:151` calls `POST https://oauth.reddit.com/api/media/asset.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth.reddit.com/api/media/asset.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9329c2a20307a193", "name": "Dangling fetch: POST https://oauth.reddit.com/api/submit (packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:28", "shortDescription": {"text": "Dangling fetch: POST https://oauth.reddit.com/api/submit (packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:282)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:282` calls `POST https://oauth.reddit.com/api/submit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth.reddit.com/api/submit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9d47418c4e14e54", "name": "Dangling fetch: GET https://oauth.reddit.com/user/${username}/about (packages/runtime/src/nodes/reddit/get-user-reddit-n", "shortDescription": {"text": "Dangling fetch: GET https://oauth.reddit.com/user/${username}/about (packages/runtime/src/nodes/reddit/get-user-reddit-node.ts:109)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/reddit/get-user-reddit-node.ts:109` calls `GET https://oauth.reddit.com/user/${username}/about` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth.reddit.com/user/<p>/about`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1c950fa4fca07f8", "name": "Dangling fetch: POST https://oauth.reddit.com/api/comment (packages/runtime/src/nodes/reddit/submit-comment-reddit-node.", "shortDescription": {"text": "Dangling fetch: POST https://oauth.reddit.com/api/comment (packages/runtime/src/nodes/reddit/submit-comment-reddit-node.ts:103)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/reddit/submit-comment-reddit-node.ts:103` calls `POST https://oauth.reddit.com/api/comment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth.reddit.com/api/comment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-442666d629a1790c", "name": "Dangling fetch: POST https://oauth.reddit.com/api/vote (packages/runtime/src/nodes/reddit/vote-reddit-node.ts:99)", "shortDescription": {"text": "Dangling fetch: POST https://oauth.reddit.com/api/vote (packages/runtime/src/nodes/reddit/vote-reddit-node.ts:99)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/reddit/vote-reddit-node.ts:99` calls `POST https://oauth.reddit.com/api/vote` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth.reddit.com/api/vote`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c76fb7b0f8ede84", "name": "Dangling fetch: GET https://discord.com/api/v10/guilds/${guildId}/channels (packages/runtime/src/nodes/discord/list-guil", "shortDescription": {"text": "Dangling fetch: GET https://discord.com/api/v10/guilds/${guildId}/channels (packages/runtime/src/nodes/discord/list-guild-channels-discord-node.ts:79)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/list-guild-channels-discord-node.ts:79` calls `GET https://discord.com/api/v10/guilds/${guildId}/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/guilds/<p>/channels`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9baed3e64c1c771c", "name": "Dangling fetch: GET https://discord.com/api/v10/channels/${channelId} (packages/runtime/src/nodes/discord/get-channel-di", "shortDescription": {"text": "Dangling fetch: GET https://discord.com/api/v10/channels/${channelId} (packages/runtime/src/nodes/discord/get-channel-discord-node.ts:103)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/get-channel-discord-node.ts:103` calls `GET https://discord.com/api/v10/channels/${channelId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/channels/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2dce10ed02d7c24", "name": "Dangling fetch: PUT https://discord.com/api/v10/channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@m", "shortDescription": {"text": "Dangling fetch: PUT https://discord.com/api/v10/channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (packages/runtime/src/nodes/discord/add-reaction-discord-node.ts:95)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/add-reaction-discord-node.ts:95` calls `PUT https://discord.com/api/v10/channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/channels/<p>/messages/<p>/reactions/<p>/@me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09c677b637cce561", "name": "Dangling fetch: POST https://discord.com/api/v10/users/@me/channels (packages/runtime/src/nodes/discord/bot-send-dm-disc", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/v10/users/@me/channels (packages/runtime/src/nodes/discord/bot-send-dm-discord-node.ts:88)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/bot-send-dm-discord-node.ts:88` calls `POST https://discord.com/api/v10/users/@me/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/users/@me/channels`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-128199c59d681a45", "name": "Dangling fetch: POST https://discord.com/api/v10/channels/${dmChannel.id}/messages (packages/runtime/src/nodes/discord/b", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/v10/channels/${dmChannel.id}/messages (packages/runtime/src/nodes/discord/bot-send-dm-discord-node.ts:124)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/bot-send-dm-discord-node.ts:124` calls `POST https://discord.com/api/v10/channels/${dmChannel.id}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/channels/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-489961e9750cc1a0", "name": "Dangling fetch: GET https://discord.com/api/v10/users/@me/guilds (packages/runtime/src/nodes/discord/list-user-guilds-di", "shortDescription": {"text": "Dangling fetch: GET https://discord.com/api/v10/users/@me/guilds (packages/runtime/src/nodes/discord/list-user-guilds-discord-node.ts:68)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/list-user-guilds-discord-node.ts:68` calls `GET https://discord.com/api/v10/users/@me/guilds` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/users/@me/guilds`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d0fcc223fa3eb15", "name": "Dangling fetch: PUT https://discord.com/api/v10/channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@m", "shortDescription": {"text": "Dangling fetch: PUT https://discord.com/api/v10/channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (packages/runtime/src/nodes/discord/bot-add-reaction-discord-node.ts:75)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/bot-add-reaction-discord-node.ts:75` calls `PUT https://discord.com/api/v10/channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/channels/<p>/messages/<p>/reactions/<p>/@me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3bd38552543a34fc", "name": "Dangling fetch: GET https://discord.com/api/v10/guilds/${guildId} (packages/runtime/src/nodes/discord/get-guild-discord-", "shortDescription": {"text": "Dangling fetch: GET https://discord.com/api/v10/guilds/${guildId} (packages/runtime/src/nodes/discord/get-guild-discord-node.ts:103)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/get-guild-discord-node.ts:103` calls `GET https://discord.com/api/v10/guilds/${guildId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/guilds/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-424a95e1059082cd", "name": "Dangling fetch: POST https://discord.com/api/v10/channels/${channelId}/messages (packages/runtime/src/nodes/discord/send", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/v10/channels/${channelId}/messages (packages/runtime/src/nodes/discord/send-message-discord-node.ts:129)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/send-message-discord-node.ts:129` calls `POST https://discord.com/api/v10/channels/${channelId}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/channels/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e6203bd1cae218d", "name": "Dangling fetch: POST https://discord.com/api/v10/users/@me/channels (packages/runtime/src/nodes/discord/send-dm-discord-", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/v10/users/@me/channels (packages/runtime/src/nodes/discord/send-dm-discord-node.ts:106)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/send-dm-discord-node.ts:106` calls `POST https://discord.com/api/v10/users/@me/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/users/@me/channels`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f9d461f6a25b727", "name": "Dangling fetch: POST https://discord.com/api/v10/channels/${dmChannel.id}/messages (packages/runtime/src/nodes/discord/s", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/v10/channels/${dmChannel.id}/messages (packages/runtime/src/nodes/discord/send-dm-discord-node.ts:154)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/send-dm-discord-node.ts:154` calls `POST https://discord.com/api/v10/channels/${dmChannel.id}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/channels/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1885966364a50274", "name": "Dangling fetch: PATCH https://discord.com/api/v10/webhooks/${applicationId}/${interactionToken}/messages/@original (pack", "shortDescription": {"text": "Dangling fetch: PATCH https://discord.com/api/v10/webhooks/${applicationId}/${interactionToken}/messages/@original (packages/runtime/src/nodes/discord/bot-send-message-discord-node.ts:111)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/bot-send-message-discord-node.ts:111` calls `PATCH https://discord.com/api/v10/webhooks/${applicationId}/${interactionToken}/messages/@original` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/webhooks/<p>/<p>/messages/@original`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-976642a07f920104", "name": "Dangling fetch: POST https://discord.com/api/v10/channels/${channelId}/messages (packages/runtime/src/nodes/discord/bot-", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/v10/channels/${channelId}/messages (packages/runtime/src/nodes/discord/bot-send-message-discord-node.ts:145)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/discord/bot-send-message-discord-node.ts:145` calls `POST https://discord.com/api/v10/channels/${channelId}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/channels/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92e9c5549cbccff5", "name": "Dangling fetch: DELETE https://api.github.com/user/starred/${owner}/${repo} (packages/runtime/src/nodes/github/unstar-re", "shortDescription": {"text": "Dangling fetch: DELETE https://api.github.com/user/starred/${owner}/${repo} (packages/runtime/src/nodes/github/unstar-repository-github-node.ts:89)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/github/unstar-repository-github-node.ts:89` calls `DELETE https://api.github.com/user/starred/${owner}/${repo}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/user/starred/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dccdaaa753397933", "name": "Dangling fetch: PUT https://api.github.com/repos/${owner}/${repo}/contents/${path} (packages/runtime/src/nodes/github/cr", "shortDescription": {"text": "Dangling fetch: PUT https://api.github.com/repos/${owner}/${repo}/contents/${path} (packages/runtime/src/nodes/github/create-update-file-github-node.ts:182)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/github/create-update-file-github-node.ts:182` calls `PUT https://api.github.com/repos/${owner}/${repo}/contents/${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<p>/contents/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d93cc69a37dadb9b", "name": "Dangling fetch: PUT https://api.github.com/user/starred/${owner}/${repo} (packages/runtime/src/nodes/github/star-reposit", "shortDescription": {"text": "Dangling fetch: PUT https://api.github.com/user/starred/${owner}/${repo} (packages/runtime/src/nodes/github/star-repository-github-node.ts:89)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/github/star-repository-github-node.ts:89` calls `PUT https://api.github.com/user/starred/${owner}/${repo}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/user/starred/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2682a1c8e120b56f", "name": "Dangling fetch: PUT https://api.github.com/user/following/${username} (packages/runtime/src/nodes/github/follow-user-git", "shortDescription": {"text": "Dangling fetch: PUT https://api.github.com/user/following/${username} (packages/runtime/src/nodes/github/follow-user-github-node.ts:79)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/github/follow-user-github-node.ts:79` calls `PUT https://api.github.com/user/following/${username}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/user/following/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7336bc304ad513dc", "name": "Dangling fetch: DELETE https://api.github.com/user/following/${username} (packages/runtime/src/nodes/github/unfollow-use", "shortDescription": {"text": "Dangling fetch: DELETE https://api.github.com/user/following/${username} (packages/runtime/src/nodes/github/unfollow-user-github-node.ts:79)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/github/unfollow-user-github-node.ts:79` calls `DELETE https://api.github.com/user/following/${username}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/user/following/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09d5aa0d2fbb3c77", "name": "Dangling fetch: GET https://api.github.com/search/repositories?${params.toString()} (packages/runtime/src/nodes/github/s", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/search/repositories?${params.toString()} (packages/runtime/src/nodes/github/search-repositories-github-node.ts:122)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/github/search-repositories-github-node.ts:122` calls `GET https://api.github.com/search/repositories?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/search/repositories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-355911e1b0cdba88", "name": "Dangling fetch: GET https://api.github.com/users/${username} (packages/runtime/src/nodes/github/get-user-github-node.ts:", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/users/${username} (packages/runtime/src/nodes/github/get-user-github-node.ts:127)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/github/get-user-github-node.ts:127` calls `GET https://api.github.com/users/${username}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/users/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a4434a0d1e71242d", "name": "Dangling fetch: GET https://api.github.com/repos/${owner}/${repo} (packages/runtime/src/nodes/github/get-repository-gith", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/${owner}/${repo} (packages/runtime/src/nodes/github/get-repository-github-node.ts:131)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/github/get-repository-github-node.ts:131` calls `GET https://api.github.com/repos/${owner}/${repo}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e3a757d147d69b9", "name": "Dangling fetch: DELETE https://api.github.com/repos/${owner}/${repo}/contents/${path} (packages/runtime/src/nodes/github", "shortDescription": {"text": "Dangling fetch: DELETE https://api.github.com/repos/${owner}/${repo}/contents/${path} (packages/runtime/src/nodes/github/delete-file-github-node.ts:142)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/github/delete-file-github-node.ts:142` calls `DELETE https://api.github.com/repos/${owner}/${repo}/contents/${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<p>/contents/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fecd95236090a44c", "name": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/getChat (packages/runtime/src/nodes/telegram/bot-get-chat-t", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/getChat (packages/runtime/src/nodes/telegram/bot-get-chat-telegram-node.ts:73)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/telegram/bot-get-chat-telegram-node.ts:73` calls `POST https://api.telegram.org/bot${botToken}/getChat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/getchat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4475806085a5ae05", "name": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/forwardMessage (packages/runtime/src/nodes/telegram/bot-for", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/forwardMessage (packages/runtime/src/nodes/telegram/bot-forward-message-telegram-node.ts:82)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/telegram/bot-forward-message-telegram-node.ts:82` calls `POST https://api.telegram.org/bot${botToken}/forwardMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/forwardmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-068eb7268ce0c139", "name": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/sendPhoto (packages/runtime/src/nodes/telegram/bot-send-pho", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/sendPhoto (packages/runtime/src/nodes/telegram/bot-send-photo-telegram-node.ts:85)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/telegram/bot-send-photo-telegram-node.ts:85` calls `POST https://api.telegram.org/bot${botToken}/sendPhoto` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendphoto`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-550f226735ab149f", "name": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/sendMessage (packages/runtime/src/nodes/telegram/bot-send-m", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/sendMessage (packages/runtime/src/nodes/telegram/bot-send-message-telegram-node.ts:93)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/telegram/bot-send-message-telegram-node.ts:93` calls `POST https://api.telegram.org/bot${botToken}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35ee6565c348b20f", "name": "Dangling fetch: GET https://api.replicate.com/v1/predictions/${prediction.id} (packages/runtime/src/nodes/replicate/repl", "shortDescription": {"text": "Dangling fetch: GET https://api.replicate.com/v1/predictions/${prediction.id} (packages/runtime/src/nodes/replicate/replicate-model-node.ts:345)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/replicate/replicate-model-node.ts:345` calls `GET https://api.replicate.com/v1/predictions/${prediction.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.replicate.com/v1/predictions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba2521a04b10f833", "name": "Dangling fetch: POST https://slack.com/api/reactions.add (packages/runtime/src/nodes/slack/bot-add-reaction-slack-node.t", "shortDescription": {"text": "Dangling fetch: POST https://slack.com/api/reactions.add (packages/runtime/src/nodes/slack/bot-add-reaction-slack-node.ts:72)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/slack/bot-add-reaction-slack-node.ts:72` calls `POST https://slack.com/api/reactions.add` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/slack.com/api/reactions.add`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2103f7ecedbaab9c", "name": "Dangling fetch: POST https://slack.com/api/chat.postMessage (packages/runtime/src/nodes/slack/bot-send-message-slack-nod", "shortDescription": {"text": "Dangling fetch: POST https://slack.com/api/chat.postMessage (packages/runtime/src/nodes/slack/bot-send-message-slack-node.ts:86)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/slack/bot-send-message-slack-node.ts:86` calls `POST https://slack.com/api/chat.postMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/slack.com/api/chat.postmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51319534691b92c2", "name": "Dangling fetch: POST https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/comments (pack", "shortDescription": {"text": "Dangling fetch: POST https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/comments (packages/runtime/src/nodes/linkedin/comment-on-post-linkedin-node.ts:109)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/linkedin/comment-on-post-linkedin-node.ts:109` calls `POST https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/comments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.linkedin.com/rest/socialactions/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-58ede0a22270f16b", "name": "Dangling fetch: GET https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/comments?count=", "shortDescription": {"text": "Dangling fetch: GET https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/comments?count=${commentCount} (packages/runtime/src/nodes/linkedin/get-post-comments-linkedin-node.ts:92)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/linkedin/get-post-comments-linkedin-node.ts:92` calls `GET https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/comments?count=${commentCount}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.linkedin.com/rest/socialactions/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e663a0bdaa0f1c38", "name": "Dangling fetch: GET https://api.linkedin.com/v2/userinfo (packages/runtime/src/nodes/linkedin/get-profile-linkedin-node.", "shortDescription": {"text": "Dangling fetch: GET https://api.linkedin.com/v2/userinfo (packages/runtime/src/nodes/linkedin/get-profile-linkedin-node.ts:93)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/linkedin/get-profile-linkedin-node.ts:93` calls `GET https://api.linkedin.com/v2/userinfo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.linkedin.com/v2/userinfo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ffc9f954a509b991", "name": "Dangling fetch: POST https://api.linkedin.com/v2/assets?action=registerUpload (packages/runtime/src/nodes/linkedin/share", "shortDescription": {"text": "Dangling fetch: POST https://api.linkedin.com/v2/assets?action=registerUpload (packages/runtime/src/nodes/linkedin/share-post-linkedin-node.ts:118)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/linkedin/share-post-linkedin-node.ts:118` calls `POST https://api.linkedin.com/v2/assets?action=registerUpload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.linkedin.com/v2/assets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2a238ca974667b6", "name": "Dangling fetch: POST https://api.linkedin.com/v2/ugcPosts (packages/runtime/src/nodes/linkedin/share-post-linkedin-node.", "shortDescription": {"text": "Dangling fetch: POST https://api.linkedin.com/v2/ugcPosts (packages/runtime/src/nodes/linkedin/share-post-linkedin-node.ts:292)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/linkedin/share-post-linkedin-node.ts:292` calls `POST https://api.linkedin.com/v2/ugcPosts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.linkedin.com/v2/ugcposts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dbf5025e66da3872", "name": "Dangling fetch: GET https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/likes?count=${l", "shortDescription": {"text": "Dangling fetch: GET https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/likes?count=${likeCount} (packages/runtime/src/nodes/linkedin/get-post-likes-linkedin-node.ts:92)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/linkedin/get-post-likes-linkedin-node.ts:92` calls `GET https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/likes?count=${likeCount}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.linkedin.com/rest/socialactions/<p>/likes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41a2052a2d842fb5", "name": "Dangling fetch: POST https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/likes (package", "shortDescription": {"text": "Dangling fetch: POST https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/likes (packages/runtime/src/nodes/linkedin/like-post-linkedin-node.ts:96)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/linkedin/like-post-linkedin-node.ts:96` calls `POST https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/likes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.linkedin.com/rest/socialactions/<p>/likes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c7fc3467729b2a7", "name": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/users/me/calendarList (packages/runtime/src/nodes/google-cale", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/users/me/calendarList (packages/runtime/src/nodes/google-calendar/list-calendars-google-calendar-node.ts:78)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-calendar/list-calendars-google-calendar-node.ts:78` calls `GET https://www.googleapis.com/calendar/v3/users/me/calendarList` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/calendar/v3/users/me/calendarlist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32a940eb39581a9b", "name": "Dangling fetch: POST https://www.googleapis.com/calendar/v3/freeBusy (packages/runtime/src/nodes/google-calendar/check-a", "shortDescription": {"text": "Dangling fetch: POST https://www.googleapis.com/calendar/v3/freeBusy (packages/runtime/src/nodes/google-calendar/check-availability-google-calendar-node.ts:90)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-calendar/check-availability-google-calendar-node.ts:90` calls `POST https://www.googleapis.com/calendar/v3/freeBusy` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/calendar/v3/freebusy`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5bc0eb8e69ba2f89", "name": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nod", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nodes/google-calendar/add-attendees-google-calendar-node.ts:101)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-calendar/add-attendees-google-calendar-node.ts:101` calls `GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/calendar/v3/calendars/primary/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a60945f64300a401", "name": "Dangling fetch: POST https://www.googleapis.com/calendar/v3/calendars/primary/events (packages/runtime/src/nodes/google-", "shortDescription": {"text": "Dangling fetch: POST https://www.googleapis.com/calendar/v3/calendars/primary/events (packages/runtime/src/nodes/google-calendar/create-event-google-calendar-node.ts:169)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-calendar/create-event-google-calendar-node.ts:169` calls `POST https://www.googleapis.com/calendar/v3/calendars/primary/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/calendar/v3/calendars/primary/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-875e6d9dd9de6978", "name": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nod", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nodes/google-calendar/update-event-google-calendar-node.ts:117)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-calendar/update-event-google-calendar-node.ts:117` calls `GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/calendar/v3/calendars/primary/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ba5e7ad7f2c87d6", "name": "Dangling fetch: PUT https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nod", "shortDescription": {"text": "Dangling fetch: PUT https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nodes/google-calendar/update-event-google-calendar-node.ts:170)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-calendar/update-event-google-calendar-node.ts:170` calls `PUT https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/calendar/v3/calendars/primary/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a5c0bae076b85e9", "name": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nod", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nodes/google-calendar/get-event-google-calendar-node.ts:99)"}, "fullDescription": {"text": "`packages/runtime/src/nodes/google-calendar/get-event-google-calendar-node.ts:99` calls `GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/calendar/v3/calendars/primary/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1dd9f2ef335ece4e", "name": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/setWebhook (apps/api/src/stores/workflow-store.ts:272)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/setWebhook (apps/api/src/stores/workflow-store.ts:272)"}, "fullDescription": {"text": "`apps/api/src/stores/workflow-store.ts:272` calls `POST https://api.telegram.org/bot${botToken}/setWebhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/setwebhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e7c294b9f66749a", "name": "Dangling fetch: POST https://discord.com/api/v10/applications/${applicationId}/commands (apps/api/src/stores/workflow-st", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/v10/applications/${applicationId}/commands (apps/api/src/stores/workflow-store.ts:393)"}, "fullDescription": {"text": "`apps/api/src/stores/workflow-store.ts:393` calls `POST https://discord.com/api/v10/applications/${applicationId}/commands` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/applications/<p>/commands`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3a26c623a39bfedb", "name": "Dangling fetch: GET https://discord.com/api/v10/applications/${applicationId}/commands (apps/api/src/stores/workflow-sto", "shortDescription": {"text": "Dangling fetch: GET https://discord.com/api/v10/applications/${applicationId}/commands (apps/api/src/stores/workflow-store.ts:442)"}, "fullDescription": {"text": "`apps/api/src/stores/workflow-store.ts:442` calls `GET https://discord.com/api/v10/applications/${applicationId}/commands` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/applications/<p>/commands`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d84ec442da9e495", "name": "Dangling fetch: DELETE https://discord.com/api/v10/applications/${applicationId}/commands/${command.id} (apps/api/src/st", "shortDescription": {"text": "Dangling fetch: DELETE https://discord.com/api/v10/applications/${applicationId}/commands/${command.id} (apps/api/src/stores/workflow-store.ts:457)"}, "fullDescription": {"text": "`apps/api/src/stores/workflow-store.ts:457` calls `DELETE https://discord.com/api/v10/applications/${applicationId}/commands/${command.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/applications/<p>/commands/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0908d4d7a3848ffd", "name": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/deleteWebhook (apps/api/src/stores/workflow-store.ts:485)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/deleteWebhook (apps/api/src/stores/workflow-store.ts:485)"}, "fullDescription": {"text": "`apps/api/src/stores/workflow-store.ts:485` calls `POST https://api.telegram.org/bot${botToken}/deleteWebhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/deletewebhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d8ec0e9d26fc3eac", "name": "Dangling fetch: POST http://do${path} (apps/api/src/runtime/cloudflare-database-service.ts:19)", "shortDescription": {"text": "Dangling fetch: POST http://do${path} (apps/api/src/runtime/cloudflare-database-service.ts:19)"}, "fullDescription": {"text": "`apps/api/src/runtime/cloudflare-database-service.ts:19` calls `POST http://do${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/do/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de9f8dd090724019", "name": "Dangling fetch: GET https://example.com (apps/api/src/runtime/code-mode-executor.test.ts:50)", "shortDescription": {"text": "Dangling fetch: GET https://example.com (apps/api/src/runtime/code-mode-executor.test.ts:50)"}, "fullDescription": {"text": "`apps/api/src/runtime/code-mode-executor.test.ts:50` calls `GET https://example.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/example.com`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ec2d0b9d91a49bc", "name": "Dangling fetch: GET https://api.replicate.com/v1/models/${owner}/${name} (apps/api/src/routes/replicate.ts:28)", "shortDescription": {"text": "Dangling fetch: GET https://api.replicate.com/v1/models/${owner}/${name} (apps/api/src/routes/replicate.ts:28)"}, "fullDescription": {"text": "`apps/api/src/routes/replicate.ts:28` calls `GET https://api.replicate.com/v1/models/${owner}/${name}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.replicate.com/v1/models/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c36e39a94d02553a", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:31)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:31)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:31` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4bf75984ff9a117", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:42)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:42)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:42` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb14fdf2fc21b017", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:54)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:54)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:54` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2b8b2b0f00031fd3", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:82)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:82)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:82` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d34ba3e42cf2002", "name": "Dangling fetch: OPTIONS /types (apps/api/src/routes/types.test.ts:97)", "shortDescription": {"text": "Dangling fetch: OPTIONS /types (apps/api/src/routes/types.test.ts:97)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:97` calls `OPTIONS /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c108a2bf869024d5", "name": "Dangling fetch: POST /types (apps/api/src/routes/types.test.ts:106)", "shortDescription": {"text": "Dangling fetch: POST /types (apps/api/src/routes/types.test.ts:106)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:106` calls `POST /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54e5f773972cdae4", "name": "Dangling fetch: GET /types?workflowType= (apps/api/src/routes/types.test.ts:119)", "shortDescription": {"text": "Dangling fetch: GET /types?workflowType= (apps/api/src/routes/types.test.ts:119)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:119` calls `GET /types?workflowType=` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-095a3c37e263fb1f", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:131)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:131)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:131` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-afcf386d648cffbc", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:144)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:144)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:144` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9747700ac31f0592", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:183)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:183)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:183` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b45c92ade8df038d", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:238)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:238)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:238` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd63a5feb385e87e", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:251)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:251)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:251` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-44a55b9ac63811f5", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:262)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:262)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:262` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-606aa7cd440960cf", "name": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:263)", "shortDescription": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:263)"}, "fullDescription": {"text": "`apps/api/src/routes/types.test.ts:263` calls `GET /types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c92b219149fdf60", "name": "Dangling fetch: GET https://discord.com/api/v10/users/@me (apps/api/src/routes/bots.ts:65)", "shortDescription": {"text": "Dangling fetch: GET https://discord.com/api/v10/users/@me (apps/api/src/routes/bots.ts:65)"}, "fullDescription": {"text": "`apps/api/src/routes/bots.ts:65` calls `GET https://discord.com/api/v10/users/@me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/users/@me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ca985f88518e597c", "name": "Dangling fetch: GET https://api.telegram.org/bot${token}/getMe (apps/api/src/routes/bots.ts:76)", "shortDescription": {"text": "Dangling fetch: GET https://api.telegram.org/bot${token}/getMe (apps/api/src/routes/bots.ts:76)"}, "fullDescription": {"text": "`apps/api/src/routes/bots.ts:76` calls `GET https://api.telegram.org/bot${token}/getMe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/getme`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b50c9b303e200400", "name": "Dangling fetch: GET https://graph.facebook.com/v21.0/${phoneNumberId} (apps/api/src/routes/bots.ts:95)", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/${phoneNumberId} (apps/api/src/routes/bots.ts:95)"}, "fullDescription": {"text": "`apps/api/src/routes/bots.ts:95` calls `GET https://graph.facebook.com/v21.0/${phoneNumberId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc2132b5ba7332a6", "name": "Dangling fetch: POST https://slack.com/api/auth.test (apps/api/src/routes/bots.ts:108)", "shortDescription": {"text": "Dangling fetch: POST https://slack.com/api/auth.test (apps/api/src/routes/bots.ts:108)"}, "fullDescription": {"text": "`apps/api/src/routes/bots.ts:108` calls `POST https://slack.com/api/auth.test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/slack.com/api/auth.test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e9e2ef15a6821040", "name": "Dangling fetch: POST https://discord.com/api/v10/applications/${botMeta.applicationId}/commands (apps/api/src/routes/wor", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/v10/applications/${botMeta.applicationId}/commands (apps/api/src/routes/workflows.ts:1021)"}, "fullDescription": {"text": "`apps/api/src/routes/workflows.ts:1021` calls `POST https://discord.com/api/v10/applications/${botMeta.applicationId}/commands` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/applications/<p>/commands`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a9f2bd0d8d1d1cf7", "name": "Dangling fetch: POST https://api.telegram.org/bot${cleanupToken}/deleteWebhook (apps/api/src/routes/workflows.ts:1099)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${cleanupToken}/deleteWebhook (apps/api/src/routes/workflows.ts:1099)"}, "fullDescription": {"text": "`apps/api/src/routes/workflows.ts:1099` calls `POST https://api.telegram.org/bot${cleanupToken}/deleteWebhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/deletewebhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ce17d6b092a81ca", "name": "Unused endpoint: POST /refresh", "shortDescription": {"text": "Unused endpoint: POST /refresh"}, "fullDescription": {"text": "`apps/api/src/auth.ts` declares `POST /refresh` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99fc36db98c134ce", "name": "Unused endpoint: POST /logout", "shortDescription": {"text": "Unused endpoint: POST /logout"}, "fullDescription": {"text": "`apps/api/src/auth.ts` declares `POST /logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14567c2ab635eebb", "name": "Unused endpoint: GET /login/github", "shortDescription": {"text": "Unused endpoint: GET /login/github"}, "fullDescription": {"text": "`apps/api/src/auth.ts` declares `GET /login/github` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-116d40f417a7480b", "name": "Unused endpoint: GET /login/google", "shortDescription": {"text": "Unused endpoint: GET /login/google"}, "fullDescription": {"text": "`apps/api/src/auth.ts` declares `GET /login/google` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6685d40686d63393", "name": "Unused endpoint: GET /protected", "shortDescription": {"text": "Unused endpoint: GET /protected"}, "fullDescription": {"text": "`apps/api/src/auth.ts` declares `GET /protected` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b22d4ac642da43c", "name": "Unused endpoint: GET /user", "shortDescription": {"text": "Unused endpoint: GET /user"}, "fullDescription": {"text": "`apps/api/src/auth.ts` declares `GET /user` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`apps/api/src/routes/llms.ts` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d6d005b523ee580", "name": "Unused endpoint: GET /:signedToken", "shortDescription": {"text": "Unused endpoint: GET /:signedToken"}, "fullDescription": {"text": "`apps/api/src/routes/forms.ts` declares `GET /:signedToken` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-06ffe92bd5a2794c", "name": "Unused endpoint: POST /:signedToken", "shortDescription": {"text": "Unused endpoint: POST /:signedToken"}, "fullDescription": {"text": "`apps/api/src/routes/forms.ts` declares `POST /:signedToken` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`apps/api/src/routes/secrets.ts` declares `POST /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca5756175765b49d", "name": "Unused endpoint: GET /:id", "shortDescription": {"text": "Unused endpoint: GET /:id"}, "fullDescription": {"text": "`apps/api/src/routes/secrets.ts` declares `GET /:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d5b2b188d08ca82", "name": "Unused endpoint: PUT /:id", "shortDescription": {"text": "Unused endpoint: PUT /:id"}, "fullDescription": {"text": "`apps/api/src/routes/secrets.ts` declares `PUT /:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a61c112b611f4bb", "name": "Unused endpoint: DELETE /:id", "shortDescription": {"text": "Unused endpoint: DELETE /:id"}, "fullDescription": {"text": "`apps/api/src/routes/secrets.ts` declares `DELETE /:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dcd04902bda60de6", "name": "Unused endpoint: POST /criteria", "shortDescription": {"text": "Unused endpoint: POST /criteria"}, "fullDescription": {"text": "`apps/api/src/routes/feedback.ts` declares `POST /criteria` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d91478aaf63da96", "name": "Unused endpoint: GET /criteria", "shortDescription": {"text": "Unused endpoint: GET /criteria"}, "fullDescription": {"text": "`apps/api/src/routes/feedback.ts` declares `GET /criteria` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47fb9b96e8c94f91", "name": "Unused endpoint: GET /criteria/workflow/:workflowId", "shortDescription": {"text": "Unused endpoint: GET /criteria/workflow/:workflowId"}, "fullDescription": {"text": "`apps/api/src/routes/feedback.ts` declares `GET /criteria/workflow/:workflowId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c10c6a5e54d1b0d3", "name": "Unused endpoint: PATCH /criteria/:id", "shortDescription": {"text": "Unused endpoint: PATCH /criteria/:id"}, "fullDescription": {"text": "`apps/api/src/routes/feedback.ts` declares `PATCH /criteria/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7e91fc5c5e2e2a4", "name": "Unused endpoint: DELETE /criteria/:id", "shortDescription": {"text": "Unused endpoint: DELETE /criteria/:id"}, "fullDescription": {"text": "`apps/api/src/routes/feedback.ts` declares `DELETE /criteria/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67d28fa8cd6bb12f", "name": "Unused endpoint: PUT /", "shortDescription": {"text": "Unused endpoint: PUT /"}, "fullDescription": {"text": "`apps/api/src/routes/feedback.ts` declares `PUT /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52c85377cc38e474", "name": "Unused endpoint: POST /batch", "shortDescription": {"text": "Unused endpoint: POST /batch"}, "fullDescription": {"text": "`apps/api/src/routes/feedback.ts` declares `POST /batch` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a75eb6c5fc82b1fe", "name": "Unused endpoint: GET /execution/:executionId", "shortDescription": {"text": "Unused endpoint: GET /execution/:executionId"}, "fullDescription": {"text": "`apps/api/src/routes/feedback.ts` declares `GET /execution/:executionId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44fa56699ffe6443", "name": "Unused endpoint: POST /:queueId/publish", "shortDescription": {"text": "Unused endpoint: POST /:queueId/publish"}, "fullDescription": {"text": "`apps/api/src/routes/queue-publish.ts` declares `POST /:queueId/publish` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3c1b618f812ed5a", "name": "Unused endpoint: POST /webhook/:discordBotId", "shortDescription": {"text": "Unused endpoint: POST /webhook/:discordBotId"}, "fullDescription": {"text": "`apps/api/src/routes/discord-webhook.ts` declares `POST /webhook/:discordBotId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d8a1e9c5de140feb", "name": "Unused endpoint: PATCH /:id/roll", "shortDescription": {"text": "Unused endpoint: PATCH /:id/roll"}, "fullDescription": {"text": "`apps/api/src/routes/api-keys.ts` declares `PATCH /:id/roll` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ff66ebc7edfbff6", "name": "Unused endpoint: GET /metadata/:id", "shortDescription": {"text": "Unused endpoint: GET /metadata/:id"}, "fullDescription": {"text": "`apps/api/src/routes/objects.ts` declares `GET /metadata/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d682e1d215955e6a", "name": "Unused endpoint: GET /list", "shortDescription": {"text": "Unused endpoint: GET /list"}, "fullDescription": {"text": "`apps/api/src/routes/objects.ts` declares `GET /list` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e21cf4ee09f7c6a9", "name": "Unused endpoint: GET /providers", "shortDescription": {"text": "Unused endpoint: GET /providers"}, "fullDescription": {"text": "`apps/api/src/routes/integrations.ts` declares `GET /providers` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-872f95ffe570f9b6", "name": "Unused endpoint: GET /webhook/:whatsappAccountId", "shortDescription": {"text": "Unused endpoint: GET /webhook/:whatsappAccountId"}, "fullDescription": {"text": "`apps/api/src/routes/whatsapp-webhook.ts` declares `GET /webhook/:whatsappAccountId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6897282bdaaa151d", "name": "Unused endpoint: POST /webhook/:whatsappAccountId", "shortDescription": {"text": "Unused endpoint: POST /webhook/:whatsappAccountId"}, "fullDescription": {"text": "`apps/api/src/routes/whatsapp-webhook.ts` declares `POST /webhook/:whatsappAccountId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28cb2b6e8ddd475f", "name": "Unused endpoint: GET /:workflowId", "shortDescription": {"text": "Unused endpoint: GET /:workflowId"}, "fullDescription": {"text": "`apps/api/src/routes/ws.ts` declares `GET /:workflowId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d765d3bf4406dc37", "name": "Unused endpoint: POST /webhook/:slackBotId", "shortDescription": {"text": "Unused endpoint: POST /webhook/:slackBotId"}, "fullDescription": {"text": "`apps/api/src/routes/slack-webhook.ts` declares `POST /webhook/:slackBotId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8cb059f94302359", "name": "Unused endpoint: POST /webhook/:telegramBotId", "shortDescription": {"text": "Unused endpoint: POST /webhook/:telegramBotId"}, "fullDescription": {"text": "`apps/api/src/routes/telegram-webhook.ts` declares `POST /webhook/:telegramBotId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60d85ccbe5dd3526", "name": "Unused endpoint: GET /models/:owner/:name/schema", "shortDescription": {"text": "Unused endpoint: GET /models/:owner/:name/schema"}, "fullDescription": {"text": "`apps/api/src/routes/replicate.ts` declares `GET /models/:owner/:name/schema` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c40094296a5ca7a", "name": "Unused endpoint: GET /:databaseId/schema", "shortDescription": {"text": "Unused endpoint: GET /:databaseId/schema"}, "fullDescription": {"text": "`apps/api/src/routes/databases.ts` declares `GET /:databaseId/schema` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16a4fc83d9060d46", "name": "Unused endpoint: POST /:databaseId/query", "shortDescription": {"text": "Unused endpoint: POST /:databaseId/query"}, "fullDescription": {"text": "`apps/api/src/routes/databases.ts` declares `POST /:databaseId/query` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86ceb6bbeeb29384", "name": "Unused endpoint: POST /:id/upload", "shortDescription": {"text": "Unused endpoint: POST /:id/upload"}, "fullDescription": {"text": "`apps/api/src/routes/datasets.ts` declares `POST /:id/upload` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75bb570150abb912", "name": "Unused endpoint: GET /:id/files", "shortDescription": {"text": "Unused endpoint: GET /:id/files"}, "fullDescription": {"text": "`apps/api/src/routes/datasets.ts` declares `GET /:id/files` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f56718a9d1b4377a", "name": "Unused endpoint: DELETE /:id/files/:filename", "shortDescription": {"text": "Unused endpoint: DELETE /:id/files/:filename"}, "fullDescription": {"text": "`apps/api/src/routes/datasets.ts` declares `DELETE /:id/files/:filename` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ee92e847346f1cf", "name": "Unused endpoint: GET /:id/files/:filename", "shortDescription": {"text": "Unused endpoint: GET /:id/files/:filename"}, "fullDescription": {"text": "`apps/api/src/routes/datasets.ts` declares `GET /:id/files/:filename` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b71767bd754a00ba", "name": "Unused endpoint: GET /:provider/connect", "shortDescription": {"text": "Unused endpoint: GET /:provider/connect"}, "fullDescription": {"text": "`apps/api/src/routes/oauth.ts` declares `GET /:provider/connect` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31e54a65a914c284", "name": "Unused endpoint: GET /:id/webhook-info", "shortDescription": {"text": "Unused endpoint: GET /:id/webhook-info"}, "fullDescription": {"text": "`apps/api/src/routes/bots.ts` declares `GET /:id/webhook-info` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9df3c30f8f2d5d23", "name": "Unused endpoint: GET /models/schema", "shortDescription": {"text": "Unused endpoint: GET /models/schema"}, "fullDescription": {"text": "`apps/api/src/routes/cloudflare-ai.ts` declares `GET /models/schema` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ab9bf5db6820af4", "name": "Unused endpoint: GET /models", "shortDescription": {"text": "Unused endpoint: GET /models"}, "fullDescription": {"text": "`apps/api/src/routes/cloudflare-ai.ts` declares `GET /models` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa01af114b76ccdd", "name": "Unused endpoint: POST /:workflowId/executions/:executionId/cancel", "shortDescription": {"text": "Unused endpoint: POST /:workflowId/executions/:executionId/cancel"}, "fullDescription": {"text": "`apps/api/src/routes/workflows.ts` declares `POST /:workflowId/executions/:executionId/cancel` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c9c1843deecbb3a", "name": "Unused endpoint: GET /:workflowId/queue-trigger", "shortDescription": {"text": "Unused endpoint: GET /:workflowId/queue-trigger"}, "fullDescription": {"text": "`apps/api/src/routes/workflows.ts` declares `GET /:workflowId/queue-trigger` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b2f17d01e4b8533", "name": "Unused endpoint: PUT /:workflowId/queue-trigger", "shortDescription": {"text": "Unused endpoint: PUT /:workflowId/queue-trigger"}, "fullDescription": {"text": "`apps/api/src/routes/workflows.ts` declares `PUT /:workflowId/queue-trigger` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22e6f8fafcb450e2", "name": "Unused endpoint: DELETE /:workflowId/queue-trigger", "shortDescription": {"text": "Unused endpoint: DELETE /:workflowId/queue-trigger"}, "fullDescription": {"text": "`apps/api/src/routes/workflows.ts` declares `DELETE /:workflowId/queue-trigger` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fca674f9f9e78470", "name": "Unused endpoint: GET /:workflowId/email-trigger", "shortDescription": {"text": "Unused endpoint: GET /:workflowId/email-trigger"}, "fullDescription": {"text": "`apps/api/src/routes/workflows.ts` declares `GET /:workflowId/email-trigger` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faae472b97d1de2e", "name": "Unused endpoint: GET /:workflowId/endpoint-trigger", "shortDescription": {"text": "Unused endpoint: GET /:workflowId/endpoint-trigger"}, "fullDescription": {"text": "`apps/api/src/routes/workflows.ts` declares `GET /:workflowId/endpoint-trigger` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a0a0392d74ce617", "name": "Unused endpoint: PUT /:workflowId/endpoint-trigger", "shortDescription": {"text": "Unused endpoint: PUT /:workflowId/endpoint-trigger"}, "fullDescription": {"text": "`apps/api/src/routes/workflows.ts` declares `PUT /:workflowId/endpoint-trigger` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/25185"}, "properties": {"repository": "dafthunk-com/dafthunk", "repoUrl": "https://github.com/dafthunk-com/dafthunk", "branch": "main"}, "results": [{"ruleId": "scanner-830270c88d7d0b85", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/base-runtime.ts:300"}, "properties": {"repobilityId": "56a97bc63f391301", "scanner": "scanner-primary", "fingerprint": "830270c88d7d0b85", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3334d905a1fab5e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/workflow-validation-spec.ts:28"}, "properties": {"repobilityId": "33e87ec02750045e", "scanner": "scanner-primary", "fingerprint": "e3334d905a1fab5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ebb97354b5066f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/state-consistency-spec.ts:73"}, "properties": {"repobilityId": "2d0c52e1fd2e1d43", "scanner": "scanner-primary", "fingerprint": "2ebb97354b5066f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4b0cc560c708144", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/monitoring-updates-spec.ts:41"}, "properties": {"repobilityId": "7cc76696447b4b1a", "scanner": "scanner-primary", "fingerprint": "e4b0cc560c708144", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95a2052d327e735f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/conditional-branching-spec.ts:88"}, "properties": {"repobilityId": "ad98ac1d65391c37", "scanner": "scanner-primary", "fingerprint": "95a2052d327e735f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a08fa2be46c5f2e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/skip-logic-spec.ts:64"}, "properties": {"repobilityId": "339c6e44cc36c840", "scanner": "scanner-primary", "fingerprint": "a08fa2be46c5f2e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-643240c53efd9c84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/topological-ordering-spec.ts:79"}, "properties": {"repobilityId": "e36f324dc56a0ef4", "scanner": "scanner-primary", "fingerprint": "643240c53efd9c84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb6b591c8027df37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/edge-cases-spec.ts:45"}, "properties": {"repobilityId": "2f712de854d1c700", "scanner": "scanner-primary", "fingerprint": "eb6b591c8027df37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8074347b081cd686", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/successful-execution-spec.ts:107"}, "properties": {"repobilityId": "288373f14b6f1763", "scanner": "scanner-primary", "fingerprint": "8074347b081cd686", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-475606d02fcb2fc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/input-collection-spec.ts:44"}, "properties": {"repobilityId": "0b53347d6cbb1ce3", "scanner": "scanner-primary", "fingerprint": "475606d02fcb2fc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f893a19554b27705", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/concurrent-errors-spec.ts:119"}, "properties": {"repobilityId": "df8d3627718d37dc", "scanner": "scanner-primary", "fingerprint": "f893a19554b27705", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdacac8495b38d5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/status-computation-spec.ts:83"}, "properties": {"repobilityId": "f069d3cdd159a514", "scanner": "scanner-primary", "fingerprint": "bdacac8495b38d5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bfefd2bd985057b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/output-handling-spec.ts:44"}, "properties": {"repobilityId": "54ac912ad28039d8", "scanner": "scanner-primary", "fingerprint": "bfefd2bd985057b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9ea5cca70793e0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/failing-execution-spec.ts:98"}, "properties": {"repobilityId": "24b61acb4ccd5ca4", "scanner": "scanner-primary", "fingerprint": "f9ea5cca70793e0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-915d6e97c01ca1c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/specification/node-execution-errors-spec.ts:38"}, "properties": {"repobilityId": "93371f242c921699", "scanner": "scanner-primary", "fingerprint": "915d6e97c01ca1c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-280a511a4d59f9ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/javascript/javascript-node.test.ts:41"}, "properties": {"repobilityId": "81dbe2010046770e", "scanner": "scanner-primary", "fingerprint": "280a511a4d59f9ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-527391c83814c921", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/submit-comment-reddit-node.integration.ts:33"}, "properties": {"repobilityId": "6c723153446d565d", "scanner": "scanner-primary", "fingerprint": "527391c83814c921", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-183eeed08ce8b9b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/vote-reddit-node.integration.ts:33"}, "properties": {"repobilityId": "4f30fc8aaa34b65f", "scanner": "scanner-primary", "fingerprint": "183eeed08ce8b9b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-51e39d5b0fd8df56", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/list-comments-reddit-node.integration.ts:36"}, "properties": {"repobilityId": "cbd54bd100ca30ee", "scanner": "scanner-primary", "fingerprint": "51e39d5b0fd8df56", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef56c24ede2368d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/reddit/get-post-reddit-node.integration.ts:36"}, "properties": {"repobilityId": "742acdedadab2e3d", "scanner": "scanner-primary", "fingerprint": "ef56c24ede2368d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d8f8839df4e65d8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/runtime/src/nodes/3d/dem-to-gltf-node.test.ts:230"}, "properties": {"repobilityId": "178dcdbc82af5aee", "scanner": "scanner-primary", "fingerprint": "4d8f8839df4e65d8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e092fa8a77d3ca40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/3d/dem-to-gltf-node.test.ts:245"}, "properties": {"repobilityId": "63d063b49acb324f", "scanner": "scanner-primary", "fingerprint": "e092fa8a77d3ca40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d45d796388d43d86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/runtime/src/nodes/input/javascript-input-node.test.ts:41"}, "properties": {"repobilityId": "bbb247ab79702e89", "scanner": "scanner-primary", "fingerprint": "d45d796388d43d86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-386992ee586a8a0b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/app/src/components/workflow/api-snippets.ts:66"}, "properties": {"repobilityId": "8e8c1b7731c33ea8", "scanner": "scanner-primary", "fingerprint": "386992ee586a8a0b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a92a51fb77033f5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/execution-email-dialog.tsx:166"}, "properties": {"repobilityId": "c0c690ae48eec513", "scanner": "scanner-primary", "fingerprint": "9a92a51fb77033f5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-74805c9f1a68e7b6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/workflow-node.tsx:499"}, "properties": {"repobilityId": "2a77805c45631e59", "scanner": "scanner-primary", "fingerprint": "74805c9f1a68e7b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1de50b05f862dea3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/http-request-config-dialog.tsx:344"}, "properties": {"repobilityId": "a2ee94ced8cff0e5", "scanner": "scanner-primary", "fingerprint": "1de50b05f862dea3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-95ae8c98c29694d6", "level": "note", "message": {"text": "React Flow <Controls> without dark theming \u2014 apps/app/src/components/workflow/workflow-canvas.tsx:630"}, "properties": {"repobilityId": "3a3f1d8c016530f7", "scanner": "scanner-primary", "fingerprint": "95ae8c98c29694d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.controls.no-bg"]}}, {"ruleId": "scanner-ff4a863cb2b4c949", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/workflow-canvas.tsx:125"}, "properties": {"repobilityId": "80f804285dcfea2f", "scanner": "scanner-primary", "fingerprint": "ff4a863cb2b4c949", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9ffd8708f21cdf43", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/upgrade-required-dialog.tsx:80"}, "properties": {"repobilityId": "c03fc41d3beeb56f", "scanner": "scanner-primary", "fingerprint": "9ffd8708f21cdf43", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c999072ca8bbbd16", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/widgets/input/file-input.tsx:160"}, "properties": {"repobilityId": "1cdbd71c3b3a63a5", "scanner": "scanner-primary", "fingerprint": "c999072ca8bbbd16", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2edfe5a7e6c87a71", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/app/src/components/workflow/fields/geojson-field.tsx:141"}, "properties": {"repobilityId": "e5bacc26a0065ae8", "scanner": "scanner-primary", "fingerprint": "2edfe5a7e6c87a71", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4cb1afef1f9930ff", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/workflow/fields/property-field.tsx:142"}, "properties": {"repobilityId": "84c88f4b1ec74fe2", "scanner": "scanner-primary", "fingerprint": "4cb1afef1f9930ff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0d3711facf92c08f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/app/src/components/docs/code-block.tsx:106"}, "properties": {"repobilityId": "78ffbec98134a9d7", "scanner": "scanner-primary", "fingerprint": "0d3711facf92c08f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1eff32c65b6ba6cc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/docs/node-card.tsx:47"}, "properties": {"repobilityId": "28f24ce3549ffc63", "scanner": "scanner-primary", "fingerprint": "1eff32c65b6ba6cc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5e0c71dbe56c3ae5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/components/docs/node-docs-dialog.tsx:45"}, "properties": {"repobilityId": "7e8e40c8f9872a97", "scanner": "scanner-primary", "fingerprint": "5e0c71dbe56c3ae5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4789be94910d2e3d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/app/src/components/ui/chart.tsx:82"}, "properties": {"repobilityId": "d76ec0959c3360b2", "scanner": "scanner-primary", "fingerprint": "4789be94910d2e3d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-30f941cdbde1d771", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/dataset-detail-page.tsx:223"}, "properties": {"repobilityId": "e031f3aa472c2b02", "scanner": "scanner-primary", "fingerprint": "30f941cdbde1d771", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9af376f417e9ee9a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/workflows-page.tsx:494"}, "properties": {"repobilityId": "3bcca4fba962fb67", "scanner": "scanner-primary", "fingerprint": "9af376f417e9ee9a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-db9f4e95aa54dd26", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/schemas-page.tsx:118"}, "properties": {"repobilityId": "4973da7026d42909", "scanner": "scanner-primary", "fingerprint": "db9f4e95aa54dd26", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-77cd440ddc528376", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/api-keys-page.tsx:291"}, "properties": {"repobilityId": "c7796ce96ee28a2c", "scanner": "scanner-primary", "fingerprint": "77cd440ddc528376", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a42e5d3c840c5c6d", "level": "note", "message": {"text": "React Flow <Controls> without dark theming \u2014 apps/app/src/pages/database-explorer-page.tsx:231"}, "properties": {"repobilityId": "214b8eb33eb18324", "scanner": "scanner-primary", "fingerprint": "a42e5d3c840c5c6d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.controls.no-bg"]}}, {"ruleId": "scanner-a62bf584b1963c3e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/app/src/pages/admin/admin-support-page.tsx:404"}, "properties": {"repobilityId": "7a554fd1412ba109", "scanner": "scanner-primary", "fingerprint": "a62bf584b1963c3e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-add3e6d5621b24ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/app/src/services/organizations-service.ts:123"}, "properties": {"repobilityId": "20b26a55c540eaf8", "scanner": "scanner-primary", "fingerprint": "add3e6d5621b24ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68908314dc2cedc3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-image-fixtures.js:37"}, "properties": {"repobilityId": "41bd3b3812a6eade", "scanner": "scanner-primary", "fingerprint": "68908314dc2cedc3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a2b975d43e1d9e10", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-master-key.js:15"}, "properties": {"repobilityId": "42a8ee6a82912cd3", "scanner": "scanner-primary", "fingerprint": "a2b975d43e1d9e10", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a1ba4b7a48fb263", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-audio-fixtures.js:43"}, "properties": {"repobilityId": "0bc4cdeb8c7e50d0", "scanner": "scanner-primary", "fingerprint": "3a1ba4b7a48fb263", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-531a91977bece0cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-photon-tests.js:242"}, "properties": {"repobilityId": "798c14272b571333", "scanner": "scanner-primary", "fingerprint": "531a91977bece0cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fd1cb90c81da022", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/scripts/generate-pdf-fixtures.js:37"}, "properties": {"repobilityId": "6d401b313046b387", "scanner": "scanner-primary", "fingerprint": "8fd1cb90c81da022", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-550d5e6227323d6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/email.ts:68"}, "properties": {"repobilityId": "1973cd02502b8250", "scanner": "scanner-primary", "fingerprint": "550d5e6227323d6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4edeca5da0fc293", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/support-email.ts:282"}, "properties": {"repobilityId": "0e472b8786bf5a52", "scanner": "scanner-primary", "fingerprint": "a4edeca5da0fc293", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87fc1da3ce1add69", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/queue.ts:27"}, "properties": {"repobilityId": "8654de508a35621e", "scanner": "scanner-primary", "fingerprint": "87fc1da3ce1add69", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db84b7fb02d2d563", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/scheduled.ts:19"}, "properties": {"repobilityId": "ed6bb9aad2aceb38", "scanner": "scanner-primary", "fingerprint": "db84b7fb02d2d563", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a4214e91a7f182a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/stores/workflow-store.ts:323"}, "properties": {"repobilityId": "3e554f88401f09ef", "scanner": "scanner-primary", "fingerprint": "9a4214e91a7f182a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00c8b4e9ccdf4879", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/code-mode-executor.test.ts:36"}, "properties": {"repobilityId": "c0e7d484bc81930d", "scanner": "scanner-primary", "fingerprint": "00c8b4e9ccdf4879", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca56f759b24f6c36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/cloudflare-model-catalog.ts:225"}, "properties": {"repobilityId": "260968281ade481f", "scanner": "scanner-primary", "fingerprint": "ca56f759b24f6c36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e328900748e845a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/cloudflare-credential-service.ts:202"}, "properties": {"repobilityId": "27a6b392368d14d3", "scanner": "scanner-primary", "fingerprint": "e328900748e845a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb0dd94a0cc2da42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/runtime/workflow-runtime-entrypoint.ts:48"}, "properties": {"repobilityId": "6b3fc919ccd5ca18", "scanner": "scanner-primary", "fingerprint": "fb0dd94a0cc2da42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5234cf4466b8fa3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/services/execution-manager.ts:74"}, "properties": {"repobilityId": "f8a880a4c5e02263", "scanner": "scanner-primary", "fingerprint": "b5234cf4466b8fa3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9dace7aebfa30398", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/services/workflow-executor.ts:159"}, "properties": {"repobilityId": "55c3e401ec20b381", "scanner": "scanner-primary", "fingerprint": "9dace7aebfa30398", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75156c39a9f6cf61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/discord-webhook.ts:63"}, "properties": {"repobilityId": "375da5721a1f0bb6", "scanner": "scanner-primary", "fingerprint": "75156c39a9f6cf61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-098617d1f5e1157d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/whatsapp-webhook.ts:333"}, "properties": {"repobilityId": "e1cb4ba8d6445821", "scanner": "scanner-primary", "fingerprint": "098617d1f5e1157d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-703c7e7fb11b9b88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/slack-webhook.ts:59"}, "properties": {"repobilityId": "da39ab556757bf42", "scanner": "scanner-primary", "fingerprint": "703c7e7fb11b9b88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdc69f4de100eaa9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/telegram-webhook.ts:222"}, "properties": {"repobilityId": "dd4ed40591b386b9", "scanner": "scanner-primary", "fingerprint": "fdc69f4de100eaa9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa4d6b4d5da442f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/api/src/routes/stripe-webhooks.ts:81"}, "properties": {"repobilityId": "6fac8c1325dae33f", "scanner": "scanner-primary", "fingerprint": "aa4d6b4d5da442f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2d253bc0dcccde6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/www/scripts/extract-node-types.ts:51"}, "properties": {"repobilityId": "4a8a04147b3c3562", "scanner": "scanner-primary", "fingerprint": "d2d253bc0dcccde6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44bdf2b5be54ad23", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/root.tsx:112"}, "properties": {"repobilityId": "9c23d1564e5e8601", "scanner": "scanner-primary", "fingerprint": "44bdf2b5be54ad23", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9a9dde8c63b41dd4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/components/docs/code-block.tsx:42"}, "properties": {"repobilityId": "6157c839f509085c", "scanner": "scanner-primary", "fingerprint": "9a9dde8c63b41dd4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-fc5439341461b551", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/www/src/lib/api-snippets.ts:19"}, "properties": {"repobilityId": "88cee40e221e34ec", "scanner": "scanner-primary", "fingerprint": "fc5439341461b551", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2072f14d42a13123", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/home.tsx:85"}, "properties": {"repobilityId": "fff9805f61c53c74", "scanner": "scanner-primary", "fingerprint": "2072f14d42a13123", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-76eea6c4b7adbc49", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/alternatives/$competitor.tsx:154"}, "properties": {"repobilityId": "8cb209429341422b", "scanner": "scanner-primary", "fingerprint": "76eea6c4b7adbc49", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0e7a3a810442abe8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/alternatives/index.tsx:81"}, "properties": {"repobilityId": "c6c7a52da69667fb", "scanner": "scanner-primary", "fingerprint": "0e7a3a810442abe8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3f812c2f24f627c6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/nodes/$category.tsx:153"}, "properties": {"repobilityId": "8a09c6d070b1f026", "scanner": "scanner-primary", "fingerprint": "3f812c2f24f627c6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0f20a79ce7726dfe", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/nodes/index.tsx:86"}, "properties": {"repobilityId": "ffb5acd925650101", "scanner": "scanner-primary", "fingerprint": "0f20a79ce7726dfe", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5e937f4208dd13e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/www/src/routes/nodes/$category.$nodeId.tsx:342"}, "properties": {"repobilityId": "53bab725781597ad", "scanner": "scanner-primary", "fingerprint": "5e937f4208dd13e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-485e24db8ab27bfa", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/nodes/$category.$nodeId.tsx:169"}, "properties": {"repobilityId": "0f330c847958a5bf", "scanner": "scanner-primary", "fingerprint": "485e24db8ab27bfa", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-50bf848cee2aba34", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/nodes.tsx:57"}, "properties": {"repobilityId": "202f060c44275948", "scanner": "scanner-primary", "fingerprint": "50bf848cee2aba34", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-dd40bc98a7f58f41", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/developers.tsx:56"}, "properties": {"repobilityId": "cbd8d0b0f66fc48b", "scanner": "scanner-primary", "fingerprint": "dd40bc98a7f58f41", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a8dbe09bd8ff45e0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/index.tsx:107"}, "properties": {"repobilityId": "57d77fb30a141b49", "scanner": "scanner-primary", "fingerprint": "a8dbe09bd8ff45e0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1119209410a4ec09", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/concepts.tsx:56"}, "properties": {"repobilityId": "9ca99b113510772d", "scanner": "scanner-primary", "fingerprint": "1119209410a4ec09", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9ebb71caca511121", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/docs/api.tsx:305"}, "properties": {"repobilityId": "2b537f6130a37661", "scanner": "scanner-primary", "fingerprint": "9ebb71caca511121", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-641518216b9fc226", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/workflows/index.tsx:96"}, "properties": {"repobilityId": "9db1211db373ec71", "scanner": "scanner-primary", "fingerprint": "641518216b9fc226", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ae158ddb5e4f11ce", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/www/src/routes/workflows/$workflowId.tsx:191"}, "properties": {"repobilityId": "e13686ea7079e175", "scanner": "scanner-primary", "fingerprint": "ae158ddb5e4f11ce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f8415ed6bfae6335", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/workflows/$workflowId.tsx:119"}, "properties": {"repobilityId": "9d86a8c298dd49ec", "scanner": "scanner-primary", "fingerprint": "f8415ed6bfae6335", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7dcea98831ad60cb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/blog/$slug.tsx:135"}, "properties": {"repobilityId": "fe3305c5c0cc7f80", "scanner": "scanner-primary", "fingerprint": "7dcea98831ad60cb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6fc25b860192bd02", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/www/src/routes/blog/index.tsx:87"}, "properties": {"repobilityId": "c498b57e6088feaa", "scanner": "scanner-primary", "fingerprint": "6fc25b860192bd02", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d9980d9104825b19", "level": "warning", "message": {"text": "Dockerfile runs as root: apps/api/Dockerfile"}, "properties": {"repobilityId": "e591b11d8a0c1fe7", "scanner": "scanner-primary", "fingerprint": "d9980d9104825b19", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-ff93dffce0d1dc2f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: docker.io/cloudflare/sandbox:0.7.21"}, "properties": {"repobilityId": "9fe8c5c4e9069c9a", "scanner": "scanner-primary", "fingerprint": "ff93dffce0d1dc2f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/Dockerfile"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-576719816bd04dd8", "level": "warning", "message": {"text": "Dockerfile runs as root: apps/api/containers/duckdb/Dockerfile"}, "properties": {"repobilityId": "f7ac33c31340c720", "scanner": "scanner-primary", "fingerprint": "576719816bd04dd8", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-df4993f28d99bb08", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: docker.io/cloudflare/sandbox:0.7.17"}, "properties": {"repobilityId": "7b333d7c9a7b586b", "scanner": "scanner-primary", "fingerprint": "df4993f28d99bb08", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/containers/duckdb/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a331ef001c36b54c", "level": "warning", "message": {"text": "Dockerfile runs as root: apps/api/containers/ffmpeg/Dockerfile"}, "properties": {"repobilityId": "b63440798672fc18", "scanner": "scanner-primary", "fingerprint": "a331ef001c36b54c", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-c2671897cdba236c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "c2d49cbb7a61e81d", "scanner": "scanner-primary", "fingerprint": "c2671897cdba236c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/containers/ffmpeg/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e0db7618d539a590", "level": "error", "message": {"text": "Runtime dotenv file present in repo: apps/app/.env.production"}, "properties": {"repobilityId": "54e7df5b8d370acc", "scanner": "scanner-primary", "fingerprint": "e0db7618d539a590", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/app/.env.production"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-968fb3c2134ce9aa", "level": "error", "message": {"text": "Runtime dotenv file present in repo: apps/app/.env.development"}, "properties": {"repobilityId": "d010873f2ff9d96e", "scanner": "scanner-primary", "fingerprint": "968fb3c2134ce9aa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/app/.env.development"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c1273d9239969d7", "level": "error", "message": {"text": "Runtime dotenv file present in repo: apps/www/.env.development"}, "properties": {"repobilityId": "bd3d65e400c82e3f", "scanner": "scanner-primary", "fingerprint": "0c1273d9239969d7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/.env.development"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bd74f61539063c93", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in packages/runtime/src/nodes/math/calculator-node.ts:32"}, "properties": {"repobilityId": "8533f332a7601c2a", "scanner": "scanner-primary", "fingerprint": "bd74f61539063c93", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/runtime/src/nodes/math/calculator-node.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-605c54ec0b86fe42", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/app/src/components/workflow/fields/geojson-field.tsx:141"}, "properties": {"repobilityId": "67c5c5a961ae1713", "scanner": "scanner-primary", "fingerprint": "605c54ec0b86fe42", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/app/src/components/workflow/fields/geojson-field.tsx"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-01211442a8f0b833", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/app/src/components/docs/code-block.tsx:106"}, "properties": {"repobilityId": "a7be006c1601e4cb", "scanner": "scanner-primary", "fingerprint": "01211442a8f0b833", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/app/src/components/docs/code-block.tsx"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-a4da62cd75e4c93f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/app/src/components/ui/chart.tsx:82"}, "properties": {"repobilityId": "037eb0721cb98159", "scanner": "scanner-primary", "fingerprint": "a4da62cd75e4c93f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/app/src/components/ui/chart.tsx"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-b98e032fb8583e2e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in apps/api/containers/ffmpeg/server.mjs:1"}, "properties": {"repobilityId": "1df7f67575670441", "scanner": "scanner-primary", "fingerprint": "b98e032fb8583e2e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/containers/ffmpeg/server.mjs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-63ef4403bacab1a3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/root.tsx:112"}, "properties": {"repobilityId": "afad1feaeaefedc1", "scanner": "scanner-primary", "fingerprint": "63ef4403bacab1a3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/root.tsx"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-be8f41c948a8ef37", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/components/docs/code-block.tsx:42"}, "properties": {"repobilityId": "c29acba8c2aa803c", "scanner": "scanner-primary", "fingerprint": "be8f41c948a8ef37", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/components/docs/code-block.tsx"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-fb6ffee469e32166", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/home.tsx:85"}, "properties": {"repobilityId": "71d73fd52151559e", "scanner": "scanner-primary", "fingerprint": "fb6ffee469e32166", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/home.tsx"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-b924b655ba55ac2e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/alternatives/$competitor.tsx:154"}, "properties": {"repobilityId": "366ec8ff6e1e0dfa", "scanner": "scanner-primary", "fingerprint": "b924b655ba55ac2e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/alternatives/$competitor.tsx"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-e84f76cfc4815203", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/alternatives/index.tsx:81"}, "properties": {"repobilityId": "2e8587190d2871c1", "scanner": "scanner-primary", "fingerprint": "e84f76cfc4815203", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/alternatives/index.tsx"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-5fa386692635f73b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/nodes/$category.tsx:153"}, "properties": {"repobilityId": "6b91b1c5f4e9335a", "scanner": "scanner-primary", "fingerprint": "5fa386692635f73b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/nodes/$category.tsx"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-97269a1f202d6f96", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/nodes/index.tsx:86"}, "properties": {"repobilityId": "fa526ad8fe3f0ed9", "scanner": "scanner-primary", "fingerprint": "97269a1f202d6f96", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/nodes/index.tsx"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-84db3efd08affba2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/nodes/$category.$nodeId.tsx:169"}, "properties": {"repobilityId": "d24c686edb822b06", "scanner": "scanner-primary", "fingerprint": "84db3efd08affba2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/nodes/$category.$nodeId.tsx"}, "region": {"startLine": 169}}}]}, {"ruleId": "scanner-3664631a73584da9", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/nodes.tsx:57"}, "properties": {"repobilityId": "a2c0fe925921d3d4", "scanner": "scanner-primary", "fingerprint": "3664631a73584da9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/docs/nodes.tsx"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-1b19ad221b196b50", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/developers.tsx:56"}, "properties": {"repobilityId": "44066a28a9c3228f", "scanner": "scanner-primary", "fingerprint": "1b19ad221b196b50", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/docs/developers.tsx"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-0aeef6d3e88c5d19", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/index.tsx:107"}, "properties": {"repobilityId": "64dcb92fba449f80", "scanner": "scanner-primary", "fingerprint": "0aeef6d3e88c5d19", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/docs/index.tsx"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-ad0dc440f220106e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/concepts.tsx:56"}, "properties": {"repobilityId": "955aa0ac1e376b2e", "scanner": "scanner-primary", "fingerprint": "ad0dc440f220106e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/docs/concepts.tsx"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-c14d3c8108e009b2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/docs/api.tsx:305"}, "properties": {"repobilityId": "708d5161256a16e3", "scanner": "scanner-primary", "fingerprint": "c14d3c8108e009b2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/docs/api.tsx"}, "region": {"startLine": 305}}}]}, {"ruleId": "scanner-952d90a44a6be297", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/workflows/index.tsx:96"}, "properties": {"repobilityId": "b7552c428ef56c46", "scanner": "scanner-primary", "fingerprint": "952d90a44a6be297", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/workflows/index.tsx"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-1a1404bb6d26a3c0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/workflows/$workflowId.tsx:119"}, "properties": {"repobilityId": "1be0d31fc22c404e", "scanner": "scanner-primary", "fingerprint": "1a1404bb6d26a3c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/workflows/$workflowId.tsx"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-d05ec9d56716db5a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/blog/$slug.tsx:135"}, "properties": {"repobilityId": "8b9639f300599752", "scanner": "scanner-primary", "fingerprint": "d05ec9d56716db5a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/blog/$slug.tsx"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-3ab8096c415eafb3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/www/src/routes/blog/index.tsx:87"}, "properties": {"repobilityId": "67154f9909bf56cf", "scanner": "scanner-primary", "fingerprint": "3ab8096c415eafb3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/src/routes/blog/index.tsx"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-18d228fdf07c169c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c9d8079c29ebc956", "scanner": "scanner-primary", "fingerprint": "18d228fdf07c169c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint-and-test.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-18d228fdf07c169c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bba7738faf16e666", "scanner": "scanner-primary", "fingerprint": "18d228fdf07c169c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint-and-test.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-3ab0ff27d2ba88e4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "efd97447bec53338", "scanner": "scanner-primary", "fingerprint": "3ab0ff27d2ba88e4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/migrate-database.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-3ab0ff27d2ba88e4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "50732093c2801f86", "scanner": "scanner-primary", "fingerprint": "3ab0ff27d2ba88e4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/migrate-database.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-29c34d83c84cad43", "level": "note", "message": {"text": "Very large file: apps/api/src/runtime/cloudflare-node-registry.ts (1082 lines)"}, "properties": {"repobilityId": "38f47c569c0263e4", "scanner": "scanner-primary", "fingerprint": "29c34d83c84cad43", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4b7c60bc8569d7e1", "level": "note", "message": {"text": "Very large file: apps/api/src/db/queries.ts (3180 lines)"}, "properties": {"repobilityId": "f67ce73af56aab0d", "scanner": "scanner-primary", "fingerprint": "4b7c60bc8569d7e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-367ace797c660237", "level": "note", "message": {"text": "Very large file: apps/api/test/setup.ts (3908 lines)"}, "properties": {"repobilityId": "8b8cc7122b0aa734", "scanner": "scanner-primary", "fingerprint": "367ace797c660237", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-47edb5907af5997f", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/utils/package.json"}, "properties": {"repobilityId": "64857de4b757dead", "scanner": "scanner-primary", "fingerprint": "47edb5907af5997f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/utils/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb3e52667c84fb86", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/types/package.json"}, "properties": {"repobilityId": "b5e2784f829944e6", "scanner": "scanner-primary", "fingerprint": "cb3e52667c84fb86", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/types/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9c72a92376138a3f", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/geo/package.json"}, "properties": {"repobilityId": "3ec506361886ec78", "scanner": "scanner-primary", "fingerprint": "9c72a92376138a3f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/geo/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-52d796fddd5f858a", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/runtime/package.json"}, "properties": {"repobilityId": "4932f1d5119af9ac", "scanner": "scanner-primary", "fingerprint": "52d796fddd5f858a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/runtime/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1b02d785d4830372", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/app/package.json"}, "properties": {"repobilityId": "5ed0df20b35b0612", "scanner": "scanner-primary", "fingerprint": "1b02d785d4830372", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b06b8d86f24c77f9", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/api/package.json"}, "properties": {"repobilityId": "ce77cd34ed0306d4", "scanner": "scanner-primary", "fingerprint": "b06b8d86f24c77f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/api/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ca3f9a1797936a2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/www/package.json"}, "properties": {"repobilityId": "92f23effe92ea6c1", "scanner": "scanner-primary", "fingerprint": "1ca3f9a1797936a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/www/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "29f6eac156901743", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "7f1347af7278e4b8", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "0dd13a174470d4ef", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "507cbd74b4a58181", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-6b2c581628eba769", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/03-project-structure.mdc"}, "properties": {"repobilityId": "2d2bf67fa493a4b9", "scanner": "scanner-primary", "fingerprint": "6b2c581628eba769", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/03-project-structure.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a64f739b072450ba", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/04-code-implementation-guidelines.mdc"}, "properties": {"repobilityId": "4875f7aa1bec5f80", "scanner": "scanner-primary", "fingerprint": "a64f739b072450ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/04-code-implementation-guidelines.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7d55d15d9dbe7029", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/00-persona.mdc"}, "properties": {"repobilityId": "25328ece55c70632", "scanner": "scanner-primary", "fingerprint": "7d55d15d9dbe7029", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/00-persona.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f8611576813d0361", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/01-software-design-guidelines.mdc"}, "properties": {"repobilityId": "112dd7cef7b24627", "scanner": "scanner-primary", "fingerprint": "f8611576813d0361", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/01-software-design-guidelines.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d24765ec67173e94", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/migration-runner.md"}, "properties": {"repobilityId": "22a31aec293d44cc", "scanner": "scanner-primary", "fingerprint": "d24765ec67173e94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/migration-runner.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bd80cbe83db6e44a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/node-creator.md"}, "properties": {"repobilityId": "f389e9a69b1e9d16", "scanner": "scanner-primary", "fingerprint": "bd80cbe83db6e44a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/node-creator.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-61145dd7fcbfe939", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/integration-creator.md"}, "properties": {"repobilityId": "b704dbf5970e822b", "scanner": "scanner-primary", "fingerprint": "61145dd7fcbfe939", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/integration-creator.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c057ae3eea053694", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/node-generator/SKILL.md"}, "properties": {"repobilityId": "ab90080616a94d64", "scanner": "scanner-primary", "fingerprint": "c057ae3eea053694", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/node-generator/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6b47d9c936537ffc", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/runtime/src/base-runtime.ts:456"}, "properties": {"repobilityId": "b1d9ec13c8d06374", "scanner": "scanner-primary", "fingerprint": "6b47d9c936537ffc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a8ecbedcc94e282", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/runtime/src/specification/parallel-execution-spec.ts:269"}, "properties": {"repobilityId": "f54479318e74b0b1", "scanner": "scanner-primary", "fingerprint": "4a8ecbedcc94e282", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b6e92d701173d09", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/geocoding-google-node.ts:128"}, "properties": {"repobilityId": "1554c2cc51c2955c", "scanner": "scanner-primary", "fingerprint": "8b6e92d701173d09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-860a4b16cfc25c2f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/places-google-node.ts:144"}, "properties": {"repobilityId": "3771aaf49ffd5157", "scanner": "scanner-primary", "fingerprint": "860a4b16cfc25c2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a8cc93064c81f602", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/air-quality-google-node.ts:101"}, "properties": {"repobilityId": "1b2d59485ff12441", "scanner": "scanner-primary", "fingerprint": "a8cc93064c81f602", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-436e11a627365d44", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/weather-google-node.ts:104"}, "properties": {"repobilityId": "99ad850ea17848d4", "scanner": "scanner-primary", "fingerprint": "436e11a627365d44", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-63f9fab0e953b611", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/timezone-google-node.ts:100"}, "properties": {"repobilityId": "7d6714ad558b4fd7", "scanner": "scanner-primary", "fingerprint": "63f9fab0e953b611", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d876a651bbd2bf2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/pollen-google-node.ts:93"}, "properties": {"repobilityId": "6ce78a206a44700e", "scanner": "scanner-primary", "fingerprint": "7d876a651bbd2bf2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6317b1819c3286d3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google/elevation-google-node.ts:68"}, "properties": {"repobilityId": "7f3092527b70eb28", "scanner": "scanner-primary", "fingerprint": "6317b1819c3286d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-962741682fe84de0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/tavily/search-tavily-node.ts:169"}, "properties": {"repobilityId": "0786c65a35a7e0e1", "scanner": "scanner-primary", "fingerprint": "962741682fe84de0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3242694d9138fe26", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/tavily/extract-tavily-node.ts:118"}, "properties": {"repobilityId": "9157096b8d26de4f", "scanner": "scanner-primary", "fingerprint": "3242694d9138fe26", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fc1e0320a0c34226", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wikipedia/search-mediawiki-node.ts:136"}, "properties": {"repobilityId": "0ef84a81fbd0e02a", "scanner": "scanner-primary", "fingerprint": "fc1e0320a0c34226", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aac61229e863f0ad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wikipedia/search-wikipedia-node.ts:113"}, "properties": {"repobilityId": "1e067f7b859575e3", "scanner": "scanner-primary", "fingerprint": "aac61229e863f0ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1362e063646aaa55", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/browser/cloudflare-browser-crawl-queue-node.ts:220"}, "properties": {"repobilityId": "61bf896069605509", "scanner": "scanner-primary", "fingerprint": "1362e063646aaa55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-35e76867f9d28010", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/browser/cloudflare-browser-crawl-node.ts:199"}, "properties": {"repobilityId": "2a1bd368ad001a44", "scanner": "scanner-primary", "fingerprint": "35e76867f9d28010", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c789f7fcaf857346", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-followers-x-node.ts:91"}, "properties": {"repobilityId": "09d06fa2ccb2578c", "scanner": "scanner-primary", "fingerprint": "c789f7fcaf857346", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d02dbfa1ccb0595c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/delete-post-x-node.ts:64"}, "properties": {"repobilityId": "484c7dbc7ef71ad9", "scanner": "scanner-primary", "fingerprint": "d02dbfa1ccb0595c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5e457a4c0dfd4aef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-following-x-node.ts:91"}, "properties": {"repobilityId": "6d175d12645546eb", "scanner": "scanner-primary", "fingerprint": "5e457a4c0dfd4aef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e11896add9fcc487", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/get-post-x-node.ts:118"}, "properties": {"repobilityId": "c68361b43ce192d4", "scanner": "scanner-primary", "fingerprint": "e11896add9fcc487", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-16fb83d7e2e67c30", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/repost-x-node.ts:65"}, "properties": {"repobilityId": "ec53be16a0ff0d97", "scanner": "scanner-primary", "fingerprint": "16fb83d7e2e67c30", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6dd723ff1e5673a3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/get-user-x-node.ts:129"}, "properties": {"repobilityId": "c91bae2b243c618f", "scanner": "scanner-primary", "fingerprint": "6dd723ff1e5673a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64dff9204930746f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/share-post-x-node.ts:98"}, "properties": {"repobilityId": "2cfe6031664f71b5", "scanner": "scanner-primary", "fingerprint": "64dff9204930746f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-710414a39b28b4c5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/search-posts-x-node.ts:106"}, "properties": {"repobilityId": "47575dd24a33cb0c", "scanner": "scanner-primary", "fingerprint": "710414a39b28b4c5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d3a44068df690637", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-user-mentions-x-node.ts:91"}, "properties": {"repobilityId": "f5e544207f284c89", "scanner": "scanner-primary", "fingerprint": "d3a44068df690637", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-523ce7a9b532ce52", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/list-user-posts-x-node.ts:91"}, "properties": {"repobilityId": "9c484ce08c6d2c06", "scanner": "scanner-primary", "fingerprint": "523ce7a9b532ce52", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f839156e44bcc06b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/like-post-x-node.ts:65"}, "properties": {"repobilityId": "779a817e81f5e8b9", "scanner": "scanner-primary", "fingerprint": "f839156e44bcc06b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0cdcc449b58f4840", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/x/follow-user-x-node.ts:72"}, "properties": {"repobilityId": "409ba16fe033f9e6", "scanner": "scanner-primary", "fingerprint": "0cdcc449b58f4840", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e73052dedc6274d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/agent/base-agent-node.ts:257"}, "properties": {"repobilityId": "831cdcd8e75b14f3", "scanner": "scanner-primary", "fingerprint": "8e73052dedc6274d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-adfdfeb7c6a800fd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/append-videos-node.ts:133"}, "properties": {"repobilityId": "49f5e628bdde2b85", "scanner": "scanner-primary", "fingerprint": "adfdfeb7c6a800fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c41f718bc0eb3261", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:99"}, "properties": {"repobilityId": "5c40404dfaaa8d53", "scanner": "scanner-primary", "fingerprint": "c41f718bc0eb3261", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-369fd57a532c2a5f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/clip-video-node.ts:112"}, "properties": {"repobilityId": "5274c84a66ded064", "scanner": "scanner-primary", "fingerprint": "369fd57a532c2a5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c6791ce44846792d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/extract-first-frame-node.ts:91"}, "properties": {"repobilityId": "a5f305d0333f6930", "scanner": "scanner-primary", "fingerprint": "c6791ce44846792d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a89826505c834089", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/video/extract-last-frame-node.ts:91"}, "properties": {"repobilityId": "2028bc97272c8c88", "scanner": "scanner-primary", "fingerprint": "a89826505c834089", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0646f37157724d3f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-send-message-whatsapp-node.ts:68"}, "properties": {"repobilityId": "5f393a2d6e112484", "scanner": "scanner-primary", "fingerprint": "0646f37157724d3f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-65d418799e1a2fb9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-send-image-whatsapp-node.ts:76"}, "properties": {"repobilityId": "e1f185ffe064c37c", "scanner": "scanner-primary", "fingerprint": "65d418799e1a2fb9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b84b4aa406642aaa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-send-template-whatsapp-node.ts:94"}, "properties": {"repobilityId": "94f33e410c56536f", "scanner": "scanner-primary", "fingerprint": "b84b4aa406642aaa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-57ef135cda85999e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/whatsapp/bot-mark-as-read-whatsapp-node.ts:51"}, "properties": {"repobilityId": "3853bb2d7f1276a4", "scanner": "scanner-primary", "fingerprint": "57ef135cda85999e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f9efbfd7bfdb239", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/mark-message-google-mail-node.ts:91"}, "properties": {"repobilityId": "a3dd4357269c2221", "scanner": "scanner-primary", "fingerprint": "8f9efbfd7bfdb239", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aeaaa2192f74bd9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/read-inbox-google-mail-node.ts:113"}, "properties": {"repobilityId": "1d8850f272437755", "scanner": "scanner-primary", "fingerprint": "aeaaa2192f74bd9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d3f8fbcb6d3fede4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/get-message-google-mail-node.ts:101"}, "properties": {"repobilityId": "d93caa3ab1f60e1c", "scanner": "scanner-primary", "fingerprint": "d3f8fbcb6d3fede4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0ec256b5eef41e91", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/send-email-google-mail-node.ts:124"}, "properties": {"repobilityId": "f9fbfcf614c84e4f", "scanner": "scanner-primary", "fingerprint": "0ec256b5eef41e91", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7b20f20107402031", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/trash-message-google-mail-node.ts:79"}, "properties": {"repobilityId": "e38632eb4bef8d05", "scanner": "scanner-primary", "fingerprint": "7b20f20107402031", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c90621fba0f40468", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/search-messages-google-mail-node.ts:131"}, "properties": {"repobilityId": "622c89228e00dbf4", "scanner": "scanner-primary", "fingerprint": "c90621fba0f40468", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6903dc4ee3dedf0c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/send-draft-google-mail-node.ts:79"}, "properties": {"repobilityId": "d2dfffc89df5a24d", "scanner": "scanner-primary", "fingerprint": "6903dc4ee3dedf0c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a816851af3b520b8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/check-draft-google-mail-node.ts:98"}, "properties": {"repobilityId": "09cb0eeb4fbbbee0", "scanner": "scanner-primary", "fingerprint": "a816851af3b520b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d0451713ae75696c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/create-reply-draft-google-mail-node.ts:112"}, "properties": {"repobilityId": "fc0f395066b790c2", "scanner": "scanner-primary", "fingerprint": "d0451713ae75696c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a33c90cf65cd890c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/update-draft-google-mail-node.ts:126"}, "properties": {"repobilityId": "e15645929ee28143", "scanner": "scanner-primary", "fingerprint": "a33c90cf65cd890c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5c534f7d04965218", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/modify-labels-google-mail-node.ts:133"}, "properties": {"repobilityId": "aff30b528703cf0b", "scanner": "scanner-primary", "fingerprint": "5c534f7d04965218", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9b9fd00a0e8c8ef0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/delete-draft-google-mail-node.ts:73"}, "properties": {"repobilityId": "d08bbc10d574034e", "scanner": "scanner-primary", "fingerprint": "9b9fd00a0e8c8ef0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e64a7474fb8c8188", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-mail/archive-message-google-mail-node.ts:79"}, "properties": {"repobilityId": "ae2602db14a3e7bc", "scanner": "scanner-primary", "fingerprint": "e64a7474fb8c8188", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f2c26856ef39eb9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-posts-reddit-node.ts:140"}, "properties": {"repobilityId": "2f6a919c9c8531ab", "scanner": "scanner-primary", "fingerprint": "f2c26856ef39eb9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-58aa919aa7d910c6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/get-subreddit-reddit-node.ts:115"}, "properties": {"repobilityId": "a27cfd310557e840", "scanner": "scanner-primary", "fingerprint": "58aa919aa7d910c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee4bdb5f30f0defd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:151"}, "properties": {"repobilityId": "eeec893871896a61", "scanner": "scanner-primary", "fingerprint": "ee4bdb5f30f0defd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eeaac382cad3ec09", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-comments-reddit-node.ts:193"}, "properties": {"repobilityId": "2c2d8d213e11c2bc", "scanner": "scanner-primary", "fingerprint": "eeaac382cad3ec09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1cc3381eef6a4599", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/search-reddit-node.ts:171"}, "properties": {"repobilityId": "8d550fc118b049ef", "scanner": "scanner-primary", "fingerprint": "1cc3381eef6a4599", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3e9a2238ff8b2359", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-user-comments-reddit-node.ts:138"}, "properties": {"repobilityId": "e420617ed291298d", "scanner": "scanner-primary", "fingerprint": "3e9a2238ff8b2359", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a545a90f84b42ca", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/get-user-reddit-node.ts:109"}, "properties": {"repobilityId": "99d17851bbb8627f", "scanner": "scanner-primary", "fingerprint": "2a545a90f84b42ca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8872ec53bae55db1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/list-user-posts-reddit-node.ts:140"}, "properties": {"repobilityId": "e79388addb868eae", "scanner": "scanner-primary", "fingerprint": "8872ec53bae55db1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f31765d575318040", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/search-subreddits-reddit-node.ts:107"}, "properties": {"repobilityId": "e736af282649432a", "scanner": "scanner-primary", "fingerprint": "f31765d575318040", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cb4f50dd45d8ac1a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/get-post-reddit-node.ts:153"}, "properties": {"repobilityId": "7da4354304e040d0", "scanner": "scanner-primary", "fingerprint": "cb4f50dd45d8ac1a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-47199574f9fca7a3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/submit-comment-reddit-node.ts:103"}, "properties": {"repobilityId": "d5b608bd6db7dc56", "scanner": "scanner-primary", "fingerprint": "47199574f9fca7a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-306f01c5d76f5e6b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/reddit/vote-reddit-node.ts:99"}, "properties": {"repobilityId": "d24f18a2ecdb10a5", "scanner": "scanner-primary", "fingerprint": "306f01c5d76f5e6b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d5b107b3596e13c", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/runtime/src/nodes/3d/geotiff-dem-query-node.test.ts:335"}, "properties": {"repobilityId": "9f633925fbd6919b", "scanner": "scanner-primary", "fingerprint": "0d5b107b3596e13c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bc4098c47fbb1d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/get-post-wordpress-node.ts:149"}, "properties": {"repobilityId": "ec4efae0a465c598", "scanner": "scanner-primary", "fingerprint": "6bc4098c47fbb1d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5fa7eb9a69ea3b92", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/list-posts-wordpress-node.ts:133"}, "properties": {"repobilityId": "93eb1c0c15fd8198", "scanner": "scanner-primary", "fingerprint": "5fa7eb9a69ea3b92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d403a9c0ddd182f6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/search-wordpress-node.ts:133"}, "properties": {"repobilityId": "e08d8e03777b316a", "scanner": "scanner-primary", "fingerprint": "d403a9c0ddd182f6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-769a760eb10a3f74", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/get-site-wordpress-node.ts:122"}, "properties": {"repobilityId": "106471477e5d2d3f", "scanner": "scanner-primary", "fingerprint": "769a760eb10a3f74", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d6a10b57f691bd0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/create-tag-wordpress-node.ts:123"}, "properties": {"repobilityId": "bec85a1646feb613", "scanner": "scanner-primary", "fingerprint": "6d6a10b57f691bd0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b9405cddf946bb03", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/update-post-wordpress-node.ts:142"}, "properties": {"repobilityId": "def71c136b31b36c", "scanner": "scanner-primary", "fingerprint": "b9405cddf946bb03", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe4c704dd55723b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/upload-media-wordpress-node.ts:154"}, "properties": {"repobilityId": "9bdbcff7492a6c9d", "scanner": "scanner-primary", "fingerprint": "fe4c704dd55723b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1e53386b94f482bf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/create-post-wordpress-node.ts:164"}, "properties": {"repobilityId": "f13871e7fee2261e", "scanner": "scanner-primary", "fingerprint": "1e53386b94f482bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd536b328e3700f6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/list-categories-wordpress-node.ts:107"}, "properties": {"repobilityId": "d190412c4c602dc9", "scanner": "scanner-primary", "fingerprint": "cd536b328e3700f6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa79b07759133905", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/wordpress/delete-post-wordpress-node.ts:109"}, "properties": {"repobilityId": "929a4c3072f2f31f", "scanner": "scanner-primary", "fingerprint": "aa79b07759133905", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9532abb2be348dc3", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/runtime/src/nodes/cloudflare/cloudflare-model-node.ts:30"}, "properties": {"repobilityId": "476faad0b599490d", "scanner": "scanner-primary", "fingerprint": "9532abb2be348dc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c6041fef6f4b19c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/list-guild-channels-discord-node.ts:79"}, "properties": {"repobilityId": "3be80a9590649045", "scanner": "scanner-primary", "fingerprint": "2c6041fef6f4b19c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e3f574b3f391fdb3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/get-channel-discord-node.ts:103"}, "properties": {"repobilityId": "7373ee0496029a60", "scanner": "scanner-primary", "fingerprint": "e3f574b3f391fdb3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f97eb51bba25a91", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/add-reaction-discord-node.ts:95"}, "properties": {"repobilityId": "d2dc955a742ab54f", "scanner": "scanner-primary", "fingerprint": "8f97eb51bba25a91", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ecf1d0036562c703", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/bot-send-dm-discord-node.ts:88"}, "properties": {"repobilityId": "87441d87b44fbe57", "scanner": "scanner-primary", "fingerprint": "ecf1d0036562c703", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e9e28f6d4ec7f54", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/list-user-guilds-discord-node.ts:68"}, "properties": {"repobilityId": "3b6949a2af7e1ed1", "scanner": "scanner-primary", "fingerprint": "9e9e28f6d4ec7f54", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fc0ed5f0b03dc437", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/bot-add-reaction-discord-node.ts:75"}, "properties": {"repobilityId": "064f8e933fb0f1ea", "scanner": "scanner-primary", "fingerprint": "fc0ed5f0b03dc437", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41b7df5a69db9f1a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/get-guild-discord-node.ts:103"}, "properties": {"repobilityId": "1a24d6100952aa0c", "scanner": "scanner-primary", "fingerprint": "41b7df5a69db9f1a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-416b46588cd63f51", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/send-message-discord-node.ts:129"}, "properties": {"repobilityId": "3eac782a14f6a6c8", "scanner": "scanner-primary", "fingerprint": "416b46588cd63f51", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6d1cb5ba6f36c3b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/send-dm-discord-node.ts:106"}, "properties": {"repobilityId": "a76d8fecbcd80cd3", "scanner": "scanner-primary", "fingerprint": "f6d1cb5ba6f36c3b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a439d848dbd45772", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/discord/bot-send-message-discord-node.ts:111"}, "properties": {"repobilityId": "4442c678bcd04ee9", "scanner": "scanner-primary", "fingerprint": "a439d848dbd45772", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-20f86323b4243942", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/list-organization-repositories-github-node.ts:123"}, "properties": {"repobilityId": "f01409a1938ca55f", "scanner": "scanner-primary", "fingerprint": "20f86323b4243942", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-187b82a59b4f0349", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/unstar-repository-github-node.ts:89"}, "properties": {"repobilityId": "91a281c1597e4fb4", "scanner": "scanner-primary", "fingerprint": "187b82a59b4f0349", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85e32e6a3f8718fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/list-user-repositories-github-node.ts:122"}, "properties": {"repobilityId": "69eb6e2c00521a57", "scanner": "scanner-primary", "fingerprint": "85e32e6a3f8718fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aff4dae65ece930e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/create-update-file-github-node.ts:133"}, "properties": {"repobilityId": "384faac9a6828a52", "scanner": "scanner-primary", "fingerprint": "aff4dae65ece930e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-34b46b3c450b11df", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/star-repository-github-node.ts:89"}, "properties": {"repobilityId": "11b0f9510f43658a", "scanner": "scanner-primary", "fingerprint": "34b46b3c450b11df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f31faab54aeb2967", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/follow-user-github-node.ts:79"}, "properties": {"repobilityId": "2732b74dc790e7b8", "scanner": "scanner-primary", "fingerprint": "f31faab54aeb2967", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f0b2870150e5dc7a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/unfollow-user-github-node.ts:79"}, "properties": {"repobilityId": "df4263abcb2c6ff1", "scanner": "scanner-primary", "fingerprint": "f0b2870150e5dc7a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3bdf4ab647a68ebd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/search-repositories-github-node.ts:122"}, "properties": {"repobilityId": "835627c6168331bd", "scanner": "scanner-primary", "fingerprint": "3bdf4ab647a68ebd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d6566fc8f22fa65d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/get-user-github-node.ts:127"}, "properties": {"repobilityId": "1a77b63a1d801f1e", "scanner": "scanner-primary", "fingerprint": "d6566fc8f22fa65d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70fec9849370f2e2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/get-repository-github-node.ts:131"}, "properties": {"repobilityId": "668c3636cffa001e", "scanner": "scanner-primary", "fingerprint": "70fec9849370f2e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9110587f392d87bc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/get-file-contents-github-node.ts:129"}, "properties": {"repobilityId": "8d44767a61c2cb5f", "scanner": "scanner-primary", "fingerprint": "9110587f392d87bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1b9f8c2cfef20107", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/github/delete-file-github-node.ts:142"}, "properties": {"repobilityId": "c3297c54f0694e64", "scanner": "scanner-primary", "fingerprint": "1b9f8c2cfef20107", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a9d2c2ba6272bf73", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-get-chat-telegram-node.ts:73"}, "properties": {"repobilityId": "68b31b84e2318faa", "scanner": "scanner-primary", "fingerprint": "a9d2c2ba6272bf73", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-efc542e4e3df0261", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-forward-message-telegram-node.ts:82"}, "properties": {"repobilityId": "48e6b2dbe36e16d5", "scanner": "scanner-primary", "fingerprint": "efc542e4e3df0261", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b031311fa80886c0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-send-photo-telegram-node.ts:85"}, "properties": {"repobilityId": "3b359122b8ae21cd", "scanner": "scanner-primary", "fingerprint": "b031311fa80886c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-031aa620e5ed2e9d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/telegram/bot-send-message-telegram-node.ts:93"}, "properties": {"repobilityId": "489e46a0a93733dc", "scanner": "scanner-primary", "fingerprint": "031aa620e5ed2e9d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af9444d73213ad0a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/replicate/replicate-model-node.ts:54"}, "properties": {"repobilityId": "41cc4144e75f9b3d", "scanner": "scanner-primary", "fingerprint": "af9444d73213ad0a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-df6526d2851170b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/slack/bot-add-reaction-slack-node.ts:72"}, "properties": {"repobilityId": "e2fc55517f926937", "scanner": "scanner-primary", "fingerprint": "df6526d2851170b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bfa5a7c081759e86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/slack/bot-send-message-slack-node.ts:86"}, "properties": {"repobilityId": "5a98d84b019463ff", "scanner": "scanner-primary", "fingerprint": "bfa5a7c081759e86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-976161fb81d52383", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/comment-on-post-linkedin-node.ts:109"}, "properties": {"repobilityId": "245d104ddd1ee03e", "scanner": "scanner-primary", "fingerprint": "976161fb81d52383", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3437ea0fd1ee8680", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/get-post-comments-linkedin-node.ts:92"}, "properties": {"repobilityId": "882e80ffd30ad9a3", "scanner": "scanner-primary", "fingerprint": "3437ea0fd1ee8680", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d708cf7ef71f6d0e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/get-profile-linkedin-node.ts:93"}, "properties": {"repobilityId": "626cd8ffe6443551", "scanner": "scanner-primary", "fingerprint": "d708cf7ef71f6d0e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-293af3f7156de5c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/share-post-linkedin-node.ts:118"}, "properties": {"repobilityId": "b524323ccb8d654c", "scanner": "scanner-primary", "fingerprint": "293af3f7156de5c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-214e3811ea7d9ad6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/get-post-likes-linkedin-node.ts:92"}, "properties": {"repobilityId": "18091ccecddc1316", "scanner": "scanner-primary", "fingerprint": "214e3811ea7d9ad6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-be580ac72f1adc7c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/linkedin/like-post-linkedin-node.ts:96"}, "properties": {"repobilityId": "daf881148dea3d1f", "scanner": "scanner-primary", "fingerprint": "be580ac72f1adc7c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3bb6c43ec61451e3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/search-events-google-calendar-node.ts:124"}, "properties": {"repobilityId": "37b3ff5d78e4b54f", "scanner": "scanner-primary", "fingerprint": "3bb6c43ec61451e3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-66fdebd4182ec413", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/list-calendars-google-calendar-node.ts:78"}, "properties": {"repobilityId": "773b6f7ba958ddb7", "scanner": "scanner-primary", "fingerprint": "66fdebd4182ec413", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-894d58f2b8c42495", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/check-availability-google-calendar-node.ts:90"}, "properties": {"repobilityId": "881433b136801c6a", "scanner": "scanner-primary", "fingerprint": "894d58f2b8c42495", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf1254270e7a06d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/add-attendees-google-calendar-node.ts:101"}, "properties": {"repobilityId": "ffc76a611a3dcb60", "scanner": "scanner-primary", "fingerprint": "cf1254270e7a06d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-58f41be0b59daffa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/create-event-google-calendar-node.ts:169"}, "properties": {"repobilityId": "a86710aa16389721", "scanner": "scanner-primary", "fingerprint": "58f41be0b59daffa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b05fd4f95948ab02", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/quick-add-google-calendar-node.ts:92"}, "properties": {"repobilityId": "a2b67167d8ad2234", "scanner": "scanner-primary", "fingerprint": "b05fd4f95948ab02", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3c2a4d86d58dd7fa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/list-events-google-calendar-node.ts:142"}, "properties": {"repobilityId": "dc3bac15bc3ff242", "scanner": "scanner-primary", "fingerprint": "3c2a4d86d58dd7fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8d87d168ec6a98a3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/update-event-google-calendar-node.ts:117"}, "properties": {"repobilityId": "45516451f11c20bc", "scanner": "scanner-primary", "fingerprint": "8d87d168ec6a98a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-27de8e654919422c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/get-event-google-calendar-node.ts:99"}, "properties": {"repobilityId": "22d540c8b2398c37", "scanner": "scanner-primary", "fingerprint": "27de8e654919422c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab533167d3a8ce25", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/runtime/src/nodes/google-calendar/delete-event-google-calendar-node.ts:89"}, "properties": {"repobilityId": "c3427287402d0252", "scanner": "scanner-primary", "fingerprint": "ab533167d3a8ce25", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-57b1c442ba898a68", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/app/src/components/workflow/api-snippets.ts:321"}, "properties": {"repobilityId": "48e0590f8d549670", "scanner": "scanner-primary", "fingerprint": "57b1c442ba898a68", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ebb90311a2f1bcc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/app/src/components/workflow/api-snippets.ts:56"}, "properties": {"repobilityId": "99c6629537c72177", "scanner": "scanner-primary", "fingerprint": "5ebb90311a2f1bcc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89c8b60ee90c99b4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/app/src/pages/admin/admin-user-detail-page.tsx:269"}, "properties": {"repobilityId": "c2487eb899775614", "scanner": "scanner-primary", "fingerprint": "89c8b60ee90c99b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65f108445b3dae3b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/app/src/services/admin-service.ts:1103"}, "properties": {"repobilityId": "586efc1443da8a4f", "scanner": "scanner-primary", "fingerprint": "65f108445b3dae3b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ac314a581a5fcc3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/app/src/services/utils.ts:153"}, "properties": {"repobilityId": "780185ae3cffc30a", "scanner": "scanner-primary", "fingerprint": "6ac314a581a5fcc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be07a99d760df198", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/app/src/services/utils.ts:112"}, "properties": {"repobilityId": "4e0017452ffc3887", "scanner": "scanner-primary", "fingerprint": "be07a99d760df198", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e0b0d39fd33cfa0d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/containers/ffmpeg/server.mjs:160"}, "properties": {"repobilityId": "9535359f99465aa3", "scanner": "scanner-primary", "fingerprint": "e0b0d39fd33cfa0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0802af08493c5d26", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/support-email.ts:99"}, "properties": {"repobilityId": "a96742791635c482", "scanner": "scanner-primary", "fingerprint": "0802af08493c5d26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-689944661f984290", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/durable-objects/agent-runner.ts:111"}, "properties": {"repobilityId": "cc102fc80197f2b7", "scanner": "scanner-primary", "fingerprint": "689944661f984290", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-575023fa730b8a83", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/durable-objects/database-do.ts:30"}, "properties": {"repobilityId": "5342c716c807446a", "scanner": "scanner-primary", "fingerprint": "575023fa730b8a83", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f03aa9f7ec3fe5eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/durable-objects/workflow-agent.ts:224"}, "properties": {"repobilityId": "3d2e6d93f2fdb542", "scanner": "scanner-primary", "fingerprint": "f03aa9f7ec3fe5eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4da6c8c7f8fb7e56", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/oauth/OAuthProvider.ts:152"}, "properties": {"repobilityId": "c8121d631cf8854e", "scanner": "scanner-primary", "fingerprint": "4da6c8c7f8fb7e56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d72e9617d27bcd29", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/oauth/OAuthProvider.ts:222"}, "properties": {"repobilityId": "1cecb0e31c1a5b73", "scanner": "scanner-primary", "fingerprint": "d72e9617d27bcd29", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-967bf9a1561f3580", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/oauth/providers/XProvider.ts:113"}, "properties": {"repobilityId": "2a100691dd2d4545", "scanner": "scanner-primary", "fingerprint": "967bf9a1561f3580", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-82f2d801830d64a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/stores/workflow-store.ts:457"}, "properties": {"repobilityId": "42caac0ca02c22bb", "scanner": "scanner-primary", "fingerprint": "82f2d801830d64a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-185e5ec77fb2c1bf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/types/agents.d.ts:14"}, "properties": {"repobilityId": "1ea8b992340bf9c8", "scanner": "scanner-primary", "fingerprint": "185e5ec77fb2c1bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac6f90cd65420eef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/runtime/cloudflare-database-service.ts:19"}, "properties": {"repobilityId": "f9407539acc4540f", "scanner": "scanner-primary", "fingerprint": "ac6f90cd65420eef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-44b0adc07be8f167", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/runtime/code-mode-executor.test.ts:8"}, "properties": {"repobilityId": "cd4a9d4b47f8c965", "scanner": "scanner-primary", "fingerprint": "44b0adc07be8f167", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f02fe2d41a00beb9", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/runtime/cloudflare-model-catalog.ts:404"}, "properties": {"repobilityId": "c8a3a05999da2b1b", "scanner": "scanner-primary", "fingerprint": "f02fe2d41a00beb9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a7106d251d41d10", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/runtime/cloudflare-model-catalog.ts:80"}, "properties": {"repobilityId": "8368e09bb1b334e8", "scanner": "scanner-primary", "fingerprint": "7a7106d251d41d10", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-16b964659d801b4e", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/api/src/runtime/cloudflare-node-registry.ts:239"}, "properties": {"repobilityId": "4e26c07ae874e0ad", "scanner": "scanner-primary", "fingerprint": "16b964659d801b4e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4089a81081cc031a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/runtime/cloudflare-workflow-runtime.test.ts:147"}, "properties": {"repobilityId": "66ba82c954beecea", "scanner": "scanner-primary", "fingerprint": "4089a81081cc031a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c54166f0f311e7aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/db/onboarding.ts:17"}, "properties": {"repobilityId": "ca76e49b7cd19fe8", "scanner": "scanner-primary", "fingerprint": "c54166f0f311e7aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98c913f4e64961cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/db/support-queries.ts:19"}, "properties": {"repobilityId": "6c3041b643c26135", "scanner": "scanner-primary", "fingerprint": "98c913f4e64961cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e49be74084cdf610", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/services/stripe-service.ts:135"}, "properties": {"repobilityId": "d1aca65a449f9185", "scanner": "scanner-primary", "fingerprint": "e49be74084cdf610", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a33946c8dd0a7c4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/routes/objects.ts:57"}, "properties": {"repobilityId": "94ea7dce7bfbd48c", "scanner": "scanner-primary", "fingerprint": "5a33946c8dd0a7c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-963ed7cd627394dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/ws.ts:31"}, "properties": {"repobilityId": "b76fa958e9d8a261", "scanner": "scanner-primary", "fingerprint": "963ed7cd627394dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9ef3faaeb8e56e72", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/replicate.ts:28"}, "properties": {"repobilityId": "a4a53b8faf426717", "scanner": "scanner-primary", "fingerprint": "9ef3faaeb8e56e72", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33990275a45dab99", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/routes/types.ts:20"}, "properties": {"repobilityId": "23ea5fcbb2c0bc81", "scanner": "scanner-primary", "fingerprint": "33990275a45dab99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6636f210c1674e24", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/routes/oauth.ts:87"}, "properties": {"repobilityId": "82517f3f653cb7a1", "scanner": "scanner-primary", "fingerprint": "6636f210c1674e24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c54078df2a47898", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/bots.ts:65"}, "properties": {"repobilityId": "c9240972cecac052", "scanner": "scanner-primary", "fingerprint": "5c54078df2a47898", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f53c529b70cd6de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/workflows.ts:1021"}, "properties": {"repobilityId": "f270e5710f84067c", "scanner": "scanner-primary", "fingerprint": "5f53c529b70cd6de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-714be0e487f84cbb", "level": "note", "message": {"text": "Legacy-named symbol `cutoffOld` in apps/api/src/routes/admin/onboarding.ts:72"}, "properties": {"repobilityId": "8a8220f7aadc6ad1", "scanner": "scanner-primary", "fingerprint": "714be0e487f84cbb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a00bc1b54f3d8d79", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/api/src/routes/admin/onboarding.ts:71"}, "properties": {"repobilityId": "08c2745984c70438", "scanner": "scanner-primary", "fingerprint": "a00bc1b54f3d8d79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75cf40d241ef4014", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/onboarding.ts:275"}, "properties": {"repobilityId": "ddfb7b5bdb020851", "scanner": "scanner-primary", "fingerprint": "75cf40d241ef4014", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-60e78003698bcbf3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/api/src/routes/admin/onboarding-message.ts:36"}, "properties": {"repobilityId": "d869330f5ac0cb24", "scanner": "scanner-primary", "fingerprint": "60e78003698bcbf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4fef467241e8dc1", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/api/src/routes/admin/objects.ts:50"}, "properties": {"repobilityId": "2758c83d9e5b41a7", "scanner": "scanner-primary", "fingerprint": "f4fef467241e8dc1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77930e9f50a46c78", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/support.ts:274"}, "properties": {"repobilityId": "fb6f0f448473560a", "scanner": "scanner-primary", "fingerprint": "77930e9f50a46c78", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-802560fb2312365a", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/api/src/routes/admin/stats.ts:236"}, "properties": {"repobilityId": "1008e9a466192842", "scanner": "scanner-primary", "fingerprint": "802560fb2312365a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c78a95bab528ce0d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/stats.ts:262"}, "properties": {"repobilityId": "2496b19d09d5afe5", "scanner": "scanner-primary", "fingerprint": "c78a95bab528ce0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bd27eeada86351ba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/executions.ts:107"}, "properties": {"repobilityId": "b81d091ca75f5cf6", "scanner": "scanner-primary", "fingerprint": "bd27eeada86351ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bbc2756b69877038", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/api/src/routes/admin/organizations.ts:253"}, "properties": {"repobilityId": "e86ad59b793a0411", "scanner": "scanner-primary", "fingerprint": "bbc2756b69877038", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bff4a0c5487fa53a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/www/workers/app.ts:28"}, "properties": {"repobilityId": "6c872bbb0cf1abc0", "scanner": "scanner-primary", "fingerprint": "bff4a0c5487fa53a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e7d35e63550837ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/www/src/lib/api-snippets.ts:79"}, "properties": {"repobilityId": "72539d528b888bb6", "scanner": "scanner-primary", "fingerprint": "e7d35e63550837ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0529c134243950b7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/www/src/lib/api-snippets.ts:9"}, "properties": {"repobilityId": "3c4887e42d8f7fcf", "scanner": "scanner-primary", "fingerprint": "0529c134243950b7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb3fe19e55e6f1cd", "level": "error", "message": {"text": "Dangling fetch: POST https://places.googleapis.com/v1/places:searchText (packages/runtime/src/nodes/google/places-google-node.ts:144)"}, "properties": {"repobilityId": "e2b39aefd53a6228", "scanner": "scanner-primary", "fingerprint": "eb3fe19e55e6f1cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb5eccc67d603b5d", "level": "error", "message": {"text": "Dangling fetch: POST https://api.tavily.com/search (packages/runtime/src/nodes/tavily/search-tavily-node.ts:169)"}, "properties": {"repobilityId": "bb50eb3dd22609d9", "scanner": "scanner-primary", "fingerprint": "eb5eccc67d603b5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-16807098ee7b0d9d", "level": "error", "message": {"text": "Dangling fetch: POST https://api.tavily.com/extract (packages/runtime/src/nodes/tavily/extract-tavily-node.ts:118)"}, "properties": {"repobilityId": "941d342bee674491", "scanner": "scanner-primary", "fingerprint": "16807098ee7b0d9d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4bec1e761ae65248", "level": "error", "message": {"text": "Dangling fetch: DELETE https://api.x.com/2/tweets/${tweetId} (packages/runtime/src/nodes/x/delete-post-x-node.ts:64)"}, "properties": {"repobilityId": "14f7c9739eeea5c6", "scanner": "scanner-primary", "fingerprint": "4bec1e761ae65248", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-20c4e1246098d620", "level": "error", "message": {"text": "Dangling fetch: GET https://api.x.com/2/users/me (packages/runtime/src/nodes/x/repost-x-node.ts:65)"}, "properties": {"repobilityId": "ceaa4b2cf633d91f", "scanner": "scanner-primary", "fingerprint": "20c4e1246098d620", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41af13b6b1f1ee83", "level": "error", "message": {"text": "Dangling fetch: POST https://api.x.com/2/users/${me.data.id}/retweets (packages/runtime/src/nodes/x/repost-x-node.ts:81)"}, "properties": {"repobilityId": "13880739f5e87935", "scanner": "scanner-primary", "fingerprint": "41af13b6b1f1ee83", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-70a36c9e698242a2", "level": "error", "message": {"text": "Dangling fetch: POST https://api.x.com/2/tweets (packages/runtime/src/nodes/x/share-post-x-node.ts:98)"}, "properties": {"repobilityId": "cf86dfec7b6af016", "scanner": "scanner-primary", "fingerprint": "70a36c9e698242a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d8aab888226ca9e9", "level": "error", "message": {"text": "Dangling fetch: GET https://api.x.com/2/users/me (packages/runtime/src/nodes/x/like-post-x-node.ts:65)"}, "properties": {"repobilityId": "c5c621f350565cb4", "scanner": "scanner-primary", "fingerprint": "d8aab888226ca9e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ea34429788a67cb", "level": "error", "message": {"text": "Dangling fetch: POST https://api.x.com/2/users/${me.data.id}/likes (packages/runtime/src/nodes/x/like-post-x-node.ts:81)"}, "properties": {"repobilityId": "0928d2189452f927", "scanner": "scanner-primary", "fingerprint": "5ea34429788a67cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f7b3529dc848fce8", "level": "error", "message": {"text": "Dangling fetch: GET https://api.x.com/2/users/me (packages/runtime/src/nodes/x/follow-user-x-node.ts:72)"}, "properties": {"repobilityId": "01798a3f5bd9f835", "scanner": "scanner-primary", "fingerprint": "f7b3529dc848fce8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cc7dc7b034c22061", "level": "error", "message": {"text": "Dangling fetch: POST https://api.x.com/2/users/${me.data.id}/following (packages/runtime/src/nodes/x/follow-user-x-node.ts:88)"}, "properties": {"repobilityId": "4001cdfa5b76f2bf", "scanner": "scanner-primary", "fingerprint": "cc7dc7b034c22061", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5136e0b2d2024f98", "level": "error", "message": {"text": "Dangling fetch: POST https://agent/start (packages/runtime/src/nodes/agent/base-agent-node.ts:257)"}, "properties": {"repobilityId": "4beae9fad9e8666e", "scanner": "scanner-primary", "fingerprint": "5136e0b2d2024f98", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b613de61ab954ff5", "level": "error", "message": {"text": "Dangling fetch: POST https://agent/run (packages/runtime/src/nodes/agent/base-agent-node.ts:348)"}, "properties": {"repobilityId": "c1ed0a29a07560b1", "scanner": "scanner-primary", "fingerprint": "b613de61ab954ff5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4a277a1a8a982c3b", "level": "error", "message": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/append-videos-node.ts:133)"}, "properties": {"repobilityId": "39dab7db769db23e", "scanner": "scanner-primary", "fingerprint": "4a277a1a8a982c3b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-617233df3374e5c0", "level": "error", "message": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/append-videos-node.ts:158)"}, "properties": {"repobilityId": "478116ee1dd3f89a", "scanner": "scanner-primary", "fingerprint": "617233df3374e5c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7d05dd1a4ecd3a70", "level": "error", "message": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:99)"}, "properties": {"repobilityId": "7f4d1e9b3df0f1e8", "scanner": "scanner-primary", "fingerprint": "7d05dd1a4ecd3a70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b01e0d4bc01be84d", "level": "error", "message": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/extract-frame-at-time-node.ts:128)"}, "properties": {"repobilityId": "88b6d2b6c2906d18", "scanner": "scanner-primary", "fingerprint": "b01e0d4bc01be84d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4285eb30d043291d", "level": "error", "message": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/clip-video-node.ts:112)"}, "properties": {"repobilityId": "3cbd2a1db466d15e", "scanner": "scanner-primary", "fingerprint": "4285eb30d043291d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d283fc7f35816eea", "level": "error", "message": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/clip-video-node.ts:142)"}, "properties": {"repobilityId": "36a2121ea0d5c43a", "scanner": "scanner-primary", "fingerprint": "d283fc7f35816eea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5abcc58a7e8d6d96", "level": "error", "message": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/extract-first-frame-node.ts:91)"}, "properties": {"repobilityId": "62061650aa4d97ff", "scanner": "scanner-primary", "fingerprint": "5abcc58a7e8d6d96", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-06a79ea04a9c7e72", "level": "error", "message": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/extract-first-frame-node.ts:120)"}, "properties": {"repobilityId": "d35d3037bf99d480", "scanner": "scanner-primary", "fingerprint": "06a79ea04a9c7e72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa5f8311a9de3ba5", "level": "error", "message": {"text": "Dangling fetch: POST http://container/jobs (packages/runtime/src/nodes/video/extract-last-frame-node.ts:91)"}, "properties": {"repobilityId": "ad2ca9d2b327d9f7", "scanner": "scanner-primary", "fingerprint": "fa5f8311a9de3ba5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9081bfe41966cf0f", "level": "error", "message": {"text": "Dangling fetch: GET http://container/jobs/${job.id} (packages/runtime/src/nodes/video/extract-last-frame-node.ts:120)"}, "properties": {"repobilityId": "5fe1f33c66c71cf8", "scanner": "scanner-primary", "fingerprint": "9081bfe41966cf0f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18dad7c9860f1bcb", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot-send-message-whatsapp-node.ts:68)"}, "properties": {"repobilityId": "0f8d33ba570c15b8", "scanner": "scanner-primary", "fingerprint": "18dad7c9860f1bcb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23aeff1d3847f766", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot-send-image-whatsapp-node.ts:76)"}, "properties": {"repobilityId": "f2c72bacd6df176b", "scanner": "scanner-primary", "fingerprint": "23aeff1d3847f766", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13451154834f4d1d", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot-send-template-whatsapp-node.ts:94)"}, "properties": {"repobilityId": "638660af71d6d879", "scanner": "scanner-primary", "fingerprint": "13451154834f4d1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e03d0d447ff42e28", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v21.0/${phoneNumberId}/messages (packages/runtime/src/nodes/whatsapp/bot-mark-as-read-whatsapp-node.ts:51)"}, "properties": {"repobilityId": "180b17f212bc248e", "scanner": "scanner-primary", "fingerprint": "e03d0d447ff42e28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab9ddc287fefa478", "level": "error", "message": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify (packages/runtime/src/nodes/google-mail/mark-message-google-mail-node.ts:91)"}, "properties": {"repobilityId": "a24f8df8473a2483", "scanner": "scanner-primary", "fingerprint": "ab9ddc287fefa478", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae65e0f840a9ec56", "level": "error", "message": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages?maxResults=${numResults}&labelIds=INBOX (packages/runtime/src/nodes/google-mail/read-inbox-google-mail-node.ts:113)"}, "properties": {"repobilityId": "9be2c1ba72527b1d", "scanner": "scanner-primary", "fingerprint": "ae65e0f840a9ec56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d8a48a77cc36e87", "level": "error", "message": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${msg.id}?format=${format} (packages/runtime/src/nodes/google-mail/read-inbox-google-mail-node.ts:145)"}, "properties": {"repobilityId": "ce9d2e9ec6a67f96", "scanner": "scanner-primary", "fingerprint": "0d8a48a77cc36e87", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19692b6ca4fadff8", "level": "error", "message": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=${format} (packages/runtime/src/nodes/google-mail/get-message-google-mail-node.ts:101)"}, "properties": {"repobilityId": "e7652ff568644ccb", "scanner": "scanner-primary", "fingerprint": "19692b6ca4fadff8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f3b83afbbf2e95b", "level": "error", "message": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/send (packages/runtime/src/nodes/google-mail/send-email-google-mail-node.ts:124)"}, "properties": {"repobilityId": "bde41aad6f1c8c8b", "scanner": "scanner-primary", "fingerprint": "6f3b83afbbf2e95b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9985a8464a0389a1", "level": "error", "message": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/trash (packages/runtime/src/nodes/google-mail/trash-message-google-mail-node.ts:79)"}, "properties": {"repobilityId": "87f7d81663bc5543", "scanner": "scanner-primary", "fingerprint": "9985a8464a0389a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-03bd8d5a5a008e61", "level": "error", "message": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${msg.id}?format=${format} (packages/runtime/src/nodes/google-mail/search-messages-google-mail-node.ts:160)"}, "properties": {"repobilityId": "28f8e7f1a5cdded7", "scanner": "scanner-primary", "fingerprint": "03bd8d5a5a008e61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-197365033b4f5a8e", "level": "error", "message": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/drafts/send (packages/runtime/src/nodes/google-mail/send-draft-google-mail-node.ts:79)"}, "properties": {"repobilityId": "6e71397ff7af0a67", "scanner": "scanner-primary", "fingerprint": "197365033b4f5a8e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b899bc062dbc0da", "level": "error", "message": {"text": "Dangling fetch: GET https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=metadata (packages/runtime/src/nodes/google-mail/create-reply-draft-google-mail-node.ts:112)"}, "properties": {"repobilityId": "f24089b7676ceda7", "scanner": "scanner-primary", "fingerprint": "0b899bc062dbc0da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0e8bb16cb09d47e4", "level": "error", "message": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/drafts (packages/runtime/src/nodes/google-mail/create-reply-draft-google-mail-node.ts:185)"}, "properties": {"repobilityId": "74e51a0b7ee36096", "scanner": "scanner-primary", "fingerprint": "0e8bb16cb09d47e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c7f28832412950a", "level": "error", "message": {"text": "Dangling fetch: PUT https://gmail.googleapis.com/gmail/v1/users/me/drafts/${draftId} (packages/runtime/src/nodes/google-mail/update-draft-google-mail-node.ts:126)"}, "properties": {"repobilityId": "90b0b329481b4023", "scanner": "scanner-primary", "fingerprint": "3c7f28832412950a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6bf3e5b56fc27a75", "level": "error", "message": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify (packages/runtime/src/nodes/google-mail/modify-labels-google-mail-node.ts:133)"}, "properties": {"repobilityId": "007db822e7dce822", "scanner": "scanner-primary", "fingerprint": "6bf3e5b56fc27a75", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a64c68b36f58e9a1", "level": "error", "message": {"text": "Dangling fetch: DELETE https://gmail.googleapis.com/gmail/v1/users/me/drafts/${draftId} (packages/runtime/src/nodes/google-mail/delete-draft-google-mail-node.ts:73)"}, "properties": {"repobilityId": "e6b82694c7a8bb83", "scanner": "scanner-primary", "fingerprint": "a64c68b36f58e9a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ac6429e9eaca3e2b", "level": "error", "message": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify (packages/runtime/src/nodes/google-mail/archive-message-google-mail-node.ts:79)"}, "properties": {"repobilityId": "91ebf01c0c560e39", "scanner": "scanner-primary", "fingerprint": "ac6429e9eaca3e2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5b6cae62f10a682", "level": "error", "message": {"text": "Dangling fetch: GET https://oauth.reddit.com/r/${subreddit}/about (packages/runtime/src/nodes/reddit/get-subreddit-reddit-node.ts:115)"}, "properties": {"repobilityId": "a9446c35da569f89", "scanner": "scanner-primary", "fingerprint": "c5b6cae62f10a682", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5443ef3367e2679b", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth.reddit.com/api/media/asset.json (packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:151)"}, "properties": {"repobilityId": "3dc8b60413c54874", "scanner": "scanner-primary", "fingerprint": "5443ef3367e2679b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9329c2a20307a193", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth.reddit.com/api/submit (packages/runtime/src/nodes/reddit/share-post-reddit-node.ts:282)"}, "properties": {"repobilityId": "8bed81c425d02c9b", "scanner": "scanner-primary", "fingerprint": "9329c2a20307a193", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f9d47418c4e14e54", "level": "error", "message": {"text": "Dangling fetch: GET https://oauth.reddit.com/user/${username}/about (packages/runtime/src/nodes/reddit/get-user-reddit-node.ts:109)"}, "properties": {"repobilityId": "b9b8df5dd17426d4", "scanner": "scanner-primary", "fingerprint": "f9d47418c4e14e54", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1c950fa4fca07f8", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth.reddit.com/api/comment (packages/runtime/src/nodes/reddit/submit-comment-reddit-node.ts:103)"}, "properties": {"repobilityId": "da8633b453afdc2a", "scanner": "scanner-primary", "fingerprint": "e1c950fa4fca07f8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-442666d629a1790c", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth.reddit.com/api/vote (packages/runtime/src/nodes/reddit/vote-reddit-node.ts:99)"}, "properties": {"repobilityId": "cc42bf26476db170", "scanner": "scanner-primary", "fingerprint": "442666d629a1790c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c76fb7b0f8ede84", "level": "error", "message": {"text": "Dangling fetch: GET https://discord.com/api/v10/guilds/${guildId}/channels (packages/runtime/src/nodes/discord/list-guild-channels-discord-node.ts:79)"}, "properties": {"repobilityId": "707b438fe037b30e", "scanner": "scanner-primary", "fingerprint": "4c76fb7b0f8ede84", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9baed3e64c1c771c", "level": "error", "message": {"text": "Dangling fetch: GET https://discord.com/api/v10/channels/${channelId} (packages/runtime/src/nodes/discord/get-channel-discord-node.ts:103)"}, "properties": {"repobilityId": "7dee30660556585c", "scanner": "scanner-primary", "fingerprint": "9baed3e64c1c771c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d2dce10ed02d7c24", "level": "error", "message": {"text": "Dangling fetch: PUT https://discord.com/api/v10/channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (packages/runtime/src/nodes/discord/add-reaction-discord-node.ts:95)"}, "properties": {"repobilityId": "af3c3178dae7c853", "scanner": "scanner-primary", "fingerprint": "d2dce10ed02d7c24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09c677b637cce561", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/v10/users/@me/channels (packages/runtime/src/nodes/discord/bot-send-dm-discord-node.ts:88)"}, "properties": {"repobilityId": "10458ef37c0649fe", "scanner": "scanner-primary", "fingerprint": "09c677b637cce561", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-128199c59d681a45", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/v10/channels/${dmChannel.id}/messages (packages/runtime/src/nodes/discord/bot-send-dm-discord-node.ts:124)"}, "properties": {"repobilityId": "8f0763cce49d16bc", "scanner": "scanner-primary", "fingerprint": "128199c59d681a45", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-489961e9750cc1a0", "level": "error", "message": {"text": "Dangling fetch: GET https://discord.com/api/v10/users/@me/guilds (packages/runtime/src/nodes/discord/list-user-guilds-discord-node.ts:68)"}, "properties": {"repobilityId": "924ff515b832b4bd", "scanner": "scanner-primary", "fingerprint": "489961e9750cc1a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d0fcc223fa3eb15", "level": "error", "message": {"text": "Dangling fetch: PUT https://discord.com/api/v10/channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (packages/runtime/src/nodes/discord/bot-add-reaction-discord-node.ts:75)"}, "properties": {"repobilityId": "1737c4aba842546c", "scanner": "scanner-primary", "fingerprint": "2d0fcc223fa3eb15", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3bd38552543a34fc", "level": "error", "message": {"text": "Dangling fetch: GET https://discord.com/api/v10/guilds/${guildId} (packages/runtime/src/nodes/discord/get-guild-discord-node.ts:103)"}, "properties": {"repobilityId": "14e52ec72883e716", "scanner": "scanner-primary", "fingerprint": "3bd38552543a34fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-424a95e1059082cd", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/v10/channels/${channelId}/messages (packages/runtime/src/nodes/discord/send-message-discord-node.ts:129)"}, "properties": {"repobilityId": "6300f1d5814162f3", "scanner": "scanner-primary", "fingerprint": "424a95e1059082cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e6203bd1cae218d", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/v10/users/@me/channels (packages/runtime/src/nodes/discord/send-dm-discord-node.ts:106)"}, "properties": {"repobilityId": "e6bcc4748d9ed826", "scanner": "scanner-primary", "fingerprint": "2e6203bd1cae218d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f9d461f6a25b727", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/v10/channels/${dmChannel.id}/messages (packages/runtime/src/nodes/discord/send-dm-discord-node.ts:154)"}, "properties": {"repobilityId": "6a2bcfc28d492f75", "scanner": "scanner-primary", "fingerprint": "7f9d461f6a25b727", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1885966364a50274", "level": "error", "message": {"text": "Dangling fetch: PATCH https://discord.com/api/v10/webhooks/${applicationId}/${interactionToken}/messages/@original (packages/runtime/src/nodes/discord/bot-send-message-discord-node.ts:111)"}, "properties": {"repobilityId": "0c7a2608473bd4ef", "scanner": "scanner-primary", "fingerprint": "1885966364a50274", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-976642a07f920104", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/v10/channels/${channelId}/messages (packages/runtime/src/nodes/discord/bot-send-message-discord-node.ts:145)"}, "properties": {"repobilityId": "aa4b6a2c648115f3", "scanner": "scanner-primary", "fingerprint": "976642a07f920104", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-92e9c5549cbccff5", "level": "error", "message": {"text": "Dangling fetch: DELETE https://api.github.com/user/starred/${owner}/${repo} (packages/runtime/src/nodes/github/unstar-repository-github-node.ts:89)"}, "properties": {"repobilityId": "c6d7ed6a2f828fb6", "scanner": "scanner-primary", "fingerprint": "92e9c5549cbccff5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dccdaaa753397933", "level": "error", "message": {"text": "Dangling fetch: PUT https://api.github.com/repos/${owner}/${repo}/contents/${path} (packages/runtime/src/nodes/github/create-update-file-github-node.ts:182)"}, "properties": {"repobilityId": "b2d7f20ae93987d8", "scanner": "scanner-primary", "fingerprint": "dccdaaa753397933", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d93cc69a37dadb9b", "level": "error", "message": {"text": "Dangling fetch: PUT https://api.github.com/user/starred/${owner}/${repo} (packages/runtime/src/nodes/github/star-repository-github-node.ts:89)"}, "properties": {"repobilityId": "960c9dab84ad32bf", "scanner": "scanner-primary", "fingerprint": "d93cc69a37dadb9b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2682a1c8e120b56f", "level": "error", "message": {"text": "Dangling fetch: PUT https://api.github.com/user/following/${username} (packages/runtime/src/nodes/github/follow-user-github-node.ts:79)"}, "properties": {"repobilityId": "5c642b17943701e6", "scanner": "scanner-primary", "fingerprint": "2682a1c8e120b56f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7336bc304ad513dc", "level": "error", "message": {"text": "Dangling fetch: DELETE https://api.github.com/user/following/${username} (packages/runtime/src/nodes/github/unfollow-user-github-node.ts:79)"}, "properties": {"repobilityId": "e1cc99211f294d05", "scanner": "scanner-primary", "fingerprint": "7336bc304ad513dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09d5aa0d2fbb3c77", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/search/repositories?${params.toString()} (packages/runtime/src/nodes/github/search-repositories-github-node.ts:122)"}, "properties": {"repobilityId": "066c5b6424f5b63b", "scanner": "scanner-primary", "fingerprint": "09d5aa0d2fbb3c77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-355911e1b0cdba88", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/users/${username} (packages/runtime/src/nodes/github/get-user-github-node.ts:127)"}, "properties": {"repobilityId": "735cea4c0b077e6c", "scanner": "scanner-primary", "fingerprint": "355911e1b0cdba88", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a4434a0d1e71242d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/${owner}/${repo} (packages/runtime/src/nodes/github/get-repository-github-node.ts:131)"}, "properties": {"repobilityId": "ee7408bb86f09e1d", "scanner": "scanner-primary", "fingerprint": "a4434a0d1e71242d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e3a757d147d69b9", "level": "error", "message": {"text": "Dangling fetch: DELETE https://api.github.com/repos/${owner}/${repo}/contents/${path} (packages/runtime/src/nodes/github/delete-file-github-node.ts:142)"}, "properties": {"repobilityId": "3f4db35acc5a5aea", "scanner": "scanner-primary", "fingerprint": "2e3a757d147d69b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fecd95236090a44c", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/getChat (packages/runtime/src/nodes/telegram/bot-get-chat-telegram-node.ts:73)"}, "properties": {"repobilityId": "63b6d43109e18cd8", "scanner": "scanner-primary", "fingerprint": "fecd95236090a44c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4475806085a5ae05", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/forwardMessage (packages/runtime/src/nodes/telegram/bot-forward-message-telegram-node.ts:82)"}, "properties": {"repobilityId": "867359b2f2f942a4", "scanner": "scanner-primary", "fingerprint": "4475806085a5ae05", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-068eb7268ce0c139", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/sendPhoto (packages/runtime/src/nodes/telegram/bot-send-photo-telegram-node.ts:85)"}, "properties": {"repobilityId": "9a16e9d87e9502e4", "scanner": "scanner-primary", "fingerprint": "068eb7268ce0c139", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-550f226735ab149f", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/sendMessage (packages/runtime/src/nodes/telegram/bot-send-message-telegram-node.ts:93)"}, "properties": {"repobilityId": "cd2be2b6074eac65", "scanner": "scanner-primary", "fingerprint": "550f226735ab149f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35ee6565c348b20f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.replicate.com/v1/predictions/${prediction.id} (packages/runtime/src/nodes/replicate/replicate-model-node.ts:345)"}, "properties": {"repobilityId": "ef10ae0576dc87cb", "scanner": "scanner-primary", "fingerprint": "35ee6565c348b20f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba2521a04b10f833", "level": "error", "message": {"text": "Dangling fetch: POST https://slack.com/api/reactions.add (packages/runtime/src/nodes/slack/bot-add-reaction-slack-node.ts:72)"}, "properties": {"repobilityId": "485ad3b3aee965d4", "scanner": "scanner-primary", "fingerprint": "ba2521a04b10f833", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2103f7ecedbaab9c", "level": "error", "message": {"text": "Dangling fetch: POST https://slack.com/api/chat.postMessage (packages/runtime/src/nodes/slack/bot-send-message-slack-node.ts:86)"}, "properties": {"repobilityId": "5afc828338ad6dee", "scanner": "scanner-primary", "fingerprint": "2103f7ecedbaab9c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-51319534691b92c2", "level": "error", "message": {"text": "Dangling fetch: POST https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/comments (packages/runtime/src/nodes/linkedin/comment-on-post-linkedin-node.ts:109)"}, "properties": {"repobilityId": "491789ef8670ba82", "scanner": "scanner-primary", "fingerprint": "51319534691b92c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-58ede0a22270f16b", "level": "error", "message": {"text": "Dangling fetch: GET https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/comments?count=${commentCount} (packages/runtime/src/nodes/linkedin/get-post-comments-linkedin-node.ts:92)"}, "properties": {"repobilityId": "c1fb1c990d427c07", "scanner": "scanner-primary", "fingerprint": "58ede0a22270f16b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e663a0bdaa0f1c38", "level": "error", "message": {"text": "Dangling fetch: GET https://api.linkedin.com/v2/userinfo (packages/runtime/src/nodes/linkedin/get-profile-linkedin-node.ts:93)"}, "properties": {"repobilityId": "f2c8428f38b0d2d8", "scanner": "scanner-primary", "fingerprint": "e663a0bdaa0f1c38", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ffc9f954a509b991", "level": "error", "message": {"text": "Dangling fetch: POST https://api.linkedin.com/v2/assets?action=registerUpload (packages/runtime/src/nodes/linkedin/share-post-linkedin-node.ts:118)"}, "properties": {"repobilityId": "822e894bedfc53a7", "scanner": "scanner-primary", "fingerprint": "ffc9f954a509b991", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2a238ca974667b6", "level": "error", "message": {"text": "Dangling fetch: POST https://api.linkedin.com/v2/ugcPosts (packages/runtime/src/nodes/linkedin/share-post-linkedin-node.ts:292)"}, "properties": {"repobilityId": "bac416f2cca5d902", "scanner": "scanner-primary", "fingerprint": "b2a238ca974667b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dbf5025e66da3872", "level": "error", "message": {"text": "Dangling fetch: GET https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/likes?count=${likeCount} (packages/runtime/src/nodes/linkedin/get-post-likes-linkedin-node.ts:92)"}, "properties": {"repobilityId": "511c61c356a9ca3e", "scanner": "scanner-primary", "fingerprint": "dbf5025e66da3872", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41a2052a2d842fb5", "level": "error", "message": {"text": "Dangling fetch: POST https://api.linkedin.com/rest/socialActions/${encodeURIComponent(postUrn as string)}/likes (packages/runtime/src/nodes/linkedin/like-post-linkedin-node.ts:96)"}, "properties": {"repobilityId": "7f6855d60fd0a661", "scanner": "scanner-primary", "fingerprint": "41a2052a2d842fb5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c7fc3467729b2a7", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/users/me/calendarList (packages/runtime/src/nodes/google-calendar/list-calendars-google-calendar-node.ts:78)"}, "properties": {"repobilityId": "8c7eab24c1cf9648", "scanner": "scanner-primary", "fingerprint": "6c7fc3467729b2a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32a940eb39581a9b", "level": "error", "message": {"text": "Dangling fetch: POST https://www.googleapis.com/calendar/v3/freeBusy (packages/runtime/src/nodes/google-calendar/check-availability-google-calendar-node.ts:90)"}, "properties": {"repobilityId": "d7afdea2c43d24d9", "scanner": "scanner-primary", "fingerprint": "32a940eb39581a9b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5bc0eb8e69ba2f89", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nodes/google-calendar/add-attendees-google-calendar-node.ts:101)"}, "properties": {"repobilityId": "ae22fc6348976ae3", "scanner": "scanner-primary", "fingerprint": "5bc0eb8e69ba2f89", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a60945f64300a401", "level": "error", "message": {"text": "Dangling fetch: POST https://www.googleapis.com/calendar/v3/calendars/primary/events (packages/runtime/src/nodes/google-calendar/create-event-google-calendar-node.ts:169)"}, "properties": {"repobilityId": "1652ea71fb85f8e0", "scanner": "scanner-primary", "fingerprint": "a60945f64300a401", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-875e6d9dd9de6978", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nodes/google-calendar/update-event-google-calendar-node.ts:117)"}, "properties": {"repobilityId": "e4747c55a196e7ed", "scanner": "scanner-primary", "fingerprint": "875e6d9dd9de6978", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3ba5e7ad7f2c87d6", "level": "error", "message": {"text": "Dangling fetch: PUT https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nodes/google-calendar/update-event-google-calendar-node.ts:170)"}, "properties": {"repobilityId": "24a3c9dfa497cc5d", "scanner": "scanner-primary", "fingerprint": "3ba5e7ad7f2c87d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9a5c0bae076b85e9", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId} (packages/runtime/src/nodes/google-calendar/get-event-google-calendar-node.ts:99)"}, "properties": {"repobilityId": "f5f15818e32a032d", "scanner": "scanner-primary", "fingerprint": "9a5c0bae076b85e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1dd9f2ef335ece4e", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/setWebhook (apps/api/src/stores/workflow-store.ts:272)"}, "properties": {"repobilityId": "f0031f4f09e42d0f", "scanner": "scanner-primary", "fingerprint": "1dd9f2ef335ece4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e7c294b9f66749a", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/v10/applications/${applicationId}/commands (apps/api/src/stores/workflow-store.ts:393)"}, "properties": {"repobilityId": "29b9402dc0ce4d32", "scanner": "scanner-primary", "fingerprint": "2e7c294b9f66749a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3a26c623a39bfedb", "level": "error", "message": {"text": "Dangling fetch: GET https://discord.com/api/v10/applications/${applicationId}/commands (apps/api/src/stores/workflow-store.ts:442)"}, "properties": {"repobilityId": "d0379ee637d3965e", "scanner": "scanner-primary", "fingerprint": "3a26c623a39bfedb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d84ec442da9e495", "level": "error", "message": {"text": "Dangling fetch: DELETE https://discord.com/api/v10/applications/${applicationId}/commands/${command.id} (apps/api/src/stores/workflow-store.ts:457)"}, "properties": {"repobilityId": "8c701e60214bb274", "scanner": "scanner-primary", "fingerprint": "6d84ec442da9e495", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0908d4d7a3848ffd", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${botToken}/deleteWebhook (apps/api/src/stores/workflow-store.ts:485)"}, "properties": {"repobilityId": "0d0de75afbb416df", "scanner": "scanner-primary", "fingerprint": "0908d4d7a3848ffd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d8ec0e9d26fc3eac", "level": "error", "message": {"text": "Dangling fetch: POST http://do${path} (apps/api/src/runtime/cloudflare-database-service.ts:19)"}, "properties": {"repobilityId": "81e765576de5376a", "scanner": "scanner-primary", "fingerprint": "d8ec0e9d26fc3eac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-de9f8dd090724019", "level": "error", "message": {"text": "Dangling fetch: GET https://example.com (apps/api/src/runtime/code-mode-executor.test.ts:50)"}, "properties": {"repobilityId": "693eb4330cdb95cd", "scanner": "scanner-primary", "fingerprint": "de9f8dd090724019", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4ec2d0b9d91a49bc", "level": "error", "message": {"text": "Dangling fetch: GET https://api.replicate.com/v1/models/${owner}/${name} (apps/api/src/routes/replicate.ts:28)"}, "properties": {"repobilityId": "8592cc5ef4ee800d", "scanner": "scanner-primary", "fingerprint": "4ec2d0b9d91a49bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c36e39a94d02553a", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:31)"}, "properties": {"repobilityId": "da458f4d515be6d3", "scanner": "scanner-primary", "fingerprint": "c36e39a94d02553a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c4bf75984ff9a117", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:42)"}, "properties": {"repobilityId": "458be56cdc58132f", "scanner": "scanner-primary", "fingerprint": "c4bf75984ff9a117", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bb14fdf2fc21b017", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:54)"}, "properties": {"repobilityId": "8418ddb35a840b5d", "scanner": "scanner-primary", "fingerprint": "bb14fdf2fc21b017", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2b8b2b0f00031fd3", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:82)"}, "properties": {"repobilityId": "ae3906c79f2ca8ff", "scanner": "scanner-primary", "fingerprint": "2b8b2b0f00031fd3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7d34ba3e42cf2002", "level": "error", "message": {"text": "Dangling fetch: OPTIONS /types (apps/api/src/routes/types.test.ts:97)"}, "properties": {"repobilityId": "592ca85483a77f93", "scanner": "scanner-primary", "fingerprint": "7d34ba3e42cf2002", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c108a2bf869024d5", "level": "error", "message": {"text": "Dangling fetch: POST /types (apps/api/src/routes/types.test.ts:106)"}, "properties": {"repobilityId": "2f57b31d5fffdf4a", "scanner": "scanner-primary", "fingerprint": "c108a2bf869024d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-54e5f773972cdae4", "level": "error", "message": {"text": "Dangling fetch: GET /types?workflowType= (apps/api/src/routes/types.test.ts:119)"}, "properties": {"repobilityId": "a3f84fa996aedb57", "scanner": "scanner-primary", "fingerprint": "54e5f773972cdae4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-095a3c37e263fb1f", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:131)"}, "properties": {"repobilityId": "d87adad5594e82d4", "scanner": "scanner-primary", "fingerprint": "095a3c37e263fb1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-afcf386d648cffbc", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:144)"}, "properties": {"repobilityId": "87a30fe11a61794b", "scanner": "scanner-primary", "fingerprint": "afcf386d648cffbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9747700ac31f0592", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:183)"}, "properties": {"repobilityId": "b2e3abf4c8e35169", "scanner": "scanner-primary", "fingerprint": "9747700ac31f0592", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b45c92ade8df038d", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:238)"}, "properties": {"repobilityId": "2b534b81a247b21b", "scanner": "scanner-primary", "fingerprint": "b45c92ade8df038d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cd63a5feb385e87e", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:251)"}, "properties": {"repobilityId": "152f0952c73578c6", "scanner": "scanner-primary", "fingerprint": "cd63a5feb385e87e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-44a55b9ac63811f5", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:262)"}, "properties": {"repobilityId": "a16fd3474899a0b4", "scanner": "scanner-primary", "fingerprint": "44a55b9ac63811f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-606aa7cd440960cf", "level": "error", "message": {"text": "Dangling fetch: GET /types (apps/api/src/routes/types.test.ts:263)"}, "properties": {"repobilityId": "77562a544f491a89", "scanner": "scanner-primary", "fingerprint": "606aa7cd440960cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0c92b219149fdf60", "level": "error", "message": {"text": "Dangling fetch: GET https://discord.com/api/v10/users/@me (apps/api/src/routes/bots.ts:65)"}, "properties": {"repobilityId": "3d5ebb43e5437196", "scanner": "scanner-primary", "fingerprint": "0c92b219149fdf60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ca985f88518e597c", "level": "error", "message": {"text": "Dangling fetch: GET https://api.telegram.org/bot${token}/getMe (apps/api/src/routes/bots.ts:76)"}, "properties": {"repobilityId": "a08595b9588f8516", "scanner": "scanner-primary", "fingerprint": "ca985f88518e597c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b50c9b303e200400", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/${phoneNumberId} (apps/api/src/routes/bots.ts:95)"}, "properties": {"repobilityId": "ca90c0dfaebd5bcd", "scanner": "scanner-primary", "fingerprint": "b50c9b303e200400", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cc2132b5ba7332a6", "level": "error", "message": {"text": "Dangling fetch: POST https://slack.com/api/auth.test (apps/api/src/routes/bots.ts:108)"}, "properties": {"repobilityId": "889057b3acd5b1d5", "scanner": "scanner-primary", "fingerprint": "cc2132b5ba7332a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e9e2ef15a6821040", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/v10/applications/${botMeta.applicationId}/commands (apps/api/src/routes/workflows.ts:1021)"}, "properties": {"repobilityId": "d9a6a16e9c53aa6b", "scanner": "scanner-primary", "fingerprint": "e9e2ef15a6821040", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a9f2bd0d8d1d1cf7", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${cleanupToken}/deleteWebhook (apps/api/src/routes/workflows.ts:1099)"}, "properties": {"repobilityId": "72c7f48554d9f7c7", "scanner": "scanner-primary", "fingerprint": "a9f2bd0d8d1d1cf7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7ce17d6b092a81ca", "level": "note", "message": {"text": "Unused endpoint: POST /refresh"}, "properties": {"repobilityId": "926531bab26d8ebf", "scanner": "scanner-primary", "fingerprint": "7ce17d6b092a81ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99fc36db98c134ce", "level": "note", "message": {"text": "Unused endpoint: POST /logout"}, "properties": {"repobilityId": "b53d8d43dba47880", "scanner": "scanner-primary", "fingerprint": "99fc36db98c134ce", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-14567c2ab635eebb", "level": "note", "message": {"text": "Unused endpoint: GET /login/github"}, "properties": {"repobilityId": "ec4c38c9788bce1e", "scanner": "scanner-primary", "fingerprint": "14567c2ab635eebb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-116d40f417a7480b", "level": "note", "message": {"text": "Unused endpoint: GET /login/google"}, "properties": {"repobilityId": "df10cb5a4588a937", "scanner": "scanner-primary", "fingerprint": "116d40f417a7480b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6685d40686d63393", "level": "note", "message": {"text": "Unused endpoint: GET /protected"}, "properties": {"repobilityId": "f321e589ffce218e", "scanner": "scanner-primary", "fingerprint": "6685d40686d63393", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9b22d4ac642da43c", "level": "note", "message": {"text": "Unused endpoint: GET /user"}, "properties": {"repobilityId": "bddb101b98c82f9c", "scanner": "scanner-primary", "fingerprint": "9b22d4ac642da43c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "f73151d053302be2", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d6d005b523ee580", "level": "note", "message": {"text": "Unused endpoint: GET /:signedToken"}, "properties": {"repobilityId": "3dadcc88faaa29c8", "scanner": "scanner-primary", "fingerprint": "4d6d005b523ee580", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-06ffe92bd5a2794c", "level": "note", "message": {"text": "Unused endpoint: POST /:signedToken"}, "properties": {"repobilityId": "44f5bec057a2288b", "scanner": "scanner-primary", "fingerprint": "06ffe92bd5a2794c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "a7e494215a1eae5e", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ca5756175765b49d", "level": "note", "message": {"text": "Unused endpoint: GET /:id"}, "properties": {"repobilityId": "54b1aa2e533c1715", "scanner": "scanner-primary", "fingerprint": "ca5756175765b49d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d5b2b188d08ca82", "level": "note", "message": {"text": "Unused endpoint: PUT /:id"}, "properties": {"repobilityId": "0f54350baaa4c668", "scanner": "scanner-primary", "fingerprint": "8d5b2b188d08ca82", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a61c112b611f4bb", "level": "note", "message": {"text": "Unused endpoint: DELETE /:id"}, "properties": {"repobilityId": "8b046e4a8eaaa5a3", "scanner": "scanner-primary", "fingerprint": "7a61c112b611f4bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dcd04902bda60de6", "level": "note", "message": {"text": "Unused endpoint: POST /criteria"}, "properties": {"repobilityId": "c00c5081d9da481a", "scanner": "scanner-primary", "fingerprint": "dcd04902bda60de6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7d91478aaf63da96", "level": "note", "message": {"text": "Unused endpoint: GET /criteria"}, "properties": {"repobilityId": "350cad7fb3a4b7fc", "scanner": "scanner-primary", "fingerprint": "7d91478aaf63da96", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-47fb9b96e8c94f91", "level": "note", "message": {"text": "Unused endpoint: GET /criteria/workflow/:workflowId"}, "properties": {"repobilityId": "a80689a4f4c45f20", "scanner": "scanner-primary", "fingerprint": "47fb9b96e8c94f91", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c10c6a5e54d1b0d3", "level": "note", "message": {"text": "Unused endpoint: PATCH /criteria/:id"}, "properties": {"repobilityId": "1e267dd8eca19a8c", "scanner": "scanner-primary", "fingerprint": "c10c6a5e54d1b0d3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e7e91fc5c5e2e2a4", "level": "note", "message": {"text": "Unused endpoint: DELETE /criteria/:id"}, "properties": {"repobilityId": "e5ca16d893fa4ad1", "scanner": "scanner-primary", "fingerprint": "e7e91fc5c5e2e2a4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-67d28fa8cd6bb12f", "level": "note", "message": {"text": "Unused endpoint: PUT /"}, "properties": {"repobilityId": "b8998b3696c9ba14", "scanner": "scanner-primary", "fingerprint": "67d28fa8cd6bb12f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-52c85377cc38e474", "level": "note", "message": {"text": "Unused endpoint: POST /batch"}, "properties": {"repobilityId": "4f93f1dd2a0f989f", "scanner": "scanner-primary", "fingerprint": "52c85377cc38e474", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a75eb6c5fc82b1fe", "level": "note", "message": {"text": "Unused endpoint: GET /execution/:executionId"}, "properties": {"repobilityId": "87b958c9ca309c9f", "scanner": "scanner-primary", "fingerprint": "a75eb6c5fc82b1fe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-44fa56699ffe6443", "level": "note", "message": {"text": "Unused endpoint: POST /:queueId/publish"}, "properties": {"repobilityId": "733012ff592b431a", "scanner": "scanner-primary", "fingerprint": "44fa56699ffe6443", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f3c1b618f812ed5a", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/:discordBotId"}, "properties": {"repobilityId": "9df30935e84aebcf", "scanner": "scanner-primary", "fingerprint": "f3c1b618f812ed5a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d8a1e9c5de140feb", "level": "note", "message": {"text": "Unused endpoint: PATCH /:id/roll"}, "properties": {"repobilityId": "b64454b0326750c5", "scanner": "scanner-primary", "fingerprint": "d8a1e9c5de140feb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9ff66ebc7edfbff6", "level": "note", "message": {"text": "Unused endpoint: GET /metadata/:id"}, "properties": {"repobilityId": "70bd78c845704349", "scanner": "scanner-primary", "fingerprint": "9ff66ebc7edfbff6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d682e1d215955e6a", "level": "note", "message": {"text": "Unused endpoint: GET /list"}, "properties": {"repobilityId": "4384f0b44f027cd9", "scanner": "scanner-primary", "fingerprint": "d682e1d215955e6a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e21cf4ee09f7c6a9", "level": "note", "message": {"text": "Unused endpoint: GET /providers"}, "properties": {"repobilityId": "052680a3ee0af5f0", "scanner": "scanner-primary", "fingerprint": "e21cf4ee09f7c6a9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-872f95ffe570f9b6", "level": "note", "message": {"text": "Unused endpoint: GET /webhook/:whatsappAccountId"}, "properties": {"repobilityId": "5f8b40048e80f434", "scanner": "scanner-primary", "fingerprint": "872f95ffe570f9b6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6897282bdaaa151d", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/:whatsappAccountId"}, "properties": {"repobilityId": "277dd0dfd3dcb49f", "scanner": "scanner-primary", "fingerprint": "6897282bdaaa151d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-28cb2b6e8ddd475f", "level": "note", "message": {"text": "Unused endpoint: GET /:workflowId"}, "properties": {"repobilityId": "f0d30c1b32c4639a", "scanner": "scanner-primary", "fingerprint": "28cb2b6e8ddd475f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d765d3bf4406dc37", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/:slackBotId"}, "properties": {"repobilityId": "cc8bdd9bb0b6f773", "scanner": "scanner-primary", "fingerprint": "d765d3bf4406dc37", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c8cb059f94302359", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/:telegramBotId"}, "properties": {"repobilityId": "3a578843815d2f97", "scanner": "scanner-primary", "fingerprint": "c8cb059f94302359", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60d85ccbe5dd3526", "level": "note", "message": {"text": "Unused endpoint: GET /models/:owner/:name/schema"}, "properties": {"repobilityId": "158cead3ac5893cf", "scanner": "scanner-primary", "fingerprint": "60d85ccbe5dd3526", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c40094296a5ca7a", "level": "note", "message": {"text": "Unused endpoint: GET /:databaseId/schema"}, "properties": {"repobilityId": "8e9037f1dc4db3f7", "scanner": "scanner-primary", "fingerprint": "8c40094296a5ca7a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-16a4fc83d9060d46", "level": "note", "message": {"text": "Unused endpoint: POST /:databaseId/query"}, "properties": {"repobilityId": "5032b943bb8b110a", "scanner": "scanner-primary", "fingerprint": "16a4fc83d9060d46", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-86ceb6bbeeb29384", "level": "note", "message": {"text": "Unused endpoint: POST /:id/upload"}, "properties": {"repobilityId": "9b61d858ee4ec83c", "scanner": "scanner-primary", "fingerprint": "86ceb6bbeeb29384", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-75bb570150abb912", "level": "note", "message": {"text": "Unused endpoint: GET /:id/files"}, "properties": {"repobilityId": "efc27e1823938127", "scanner": "scanner-primary", "fingerprint": "75bb570150abb912", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f56718a9d1b4377a", "level": "note", "message": {"text": "Unused endpoint: DELETE /:id/files/:filename"}, "properties": {"repobilityId": "2c068d54c9047c3d", "scanner": "scanner-primary", "fingerprint": "f56718a9d1b4377a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9ee92e847346f1cf", "level": "note", "message": {"text": "Unused endpoint: GET /:id/files/:filename"}, "properties": {"repobilityId": "29548f662eb384b4", "scanner": "scanner-primary", "fingerprint": "9ee92e847346f1cf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b71767bd754a00ba", "level": "note", "message": {"text": "Unused endpoint: GET /:provider/connect"}, "properties": {"repobilityId": "8b61a4542602282c", "scanner": "scanner-primary", "fingerprint": "b71767bd754a00ba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-31e54a65a914c284", "level": "note", "message": {"text": "Unused endpoint: GET /:id/webhook-info"}, "properties": {"repobilityId": "1e41e7500e138fe7", "scanner": "scanner-primary", "fingerprint": "31e54a65a914c284", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9df3c30f8f2d5d23", "level": "note", "message": {"text": "Unused endpoint: GET /models/schema"}, "properties": {"repobilityId": "9e1a1e8f52e7b3e8", "scanner": "scanner-primary", "fingerprint": "9df3c30f8f2d5d23", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2ab9bf5db6820af4", "level": "note", "message": {"text": "Unused endpoint: GET /models"}, "properties": {"repobilityId": "f47ea3acca8732b8", "scanner": "scanner-primary", "fingerprint": "2ab9bf5db6820af4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fa01af114b76ccdd", "level": "note", "message": {"text": "Unused endpoint: POST /:workflowId/executions/:executionId/cancel"}, "properties": {"repobilityId": "d2ec6887d0e2c61a", "scanner": "scanner-primary", "fingerprint": "fa01af114b76ccdd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7c9c1843deecbb3a", "level": "note", "message": {"text": "Unused endpoint: GET /:workflowId/queue-trigger"}, "properties": {"repobilityId": "145dd1f687bfebb3", "scanner": "scanner-primary", "fingerprint": "7c9c1843deecbb3a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8b2f17d01e4b8533", "level": "note", "message": {"text": "Unused endpoint: PUT /:workflowId/queue-trigger"}, "properties": {"repobilityId": "6c1aede4aafedd7c", "scanner": "scanner-primary", "fingerprint": "8b2f17d01e4b8533", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-22e6f8fafcb450e2", "level": "note", "message": {"text": "Unused endpoint: DELETE /:workflowId/queue-trigger"}, "properties": {"repobilityId": "d4d0da94f58d8804", "scanner": "scanner-primary", "fingerprint": "22e6f8fafcb450e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fca674f9f9e78470", "level": "note", "message": {"text": "Unused endpoint: GET /:workflowId/email-trigger"}, "properties": {"repobilityId": "9db62cd882f7f0d5", "scanner": "scanner-primary", "fingerprint": "fca674f9f9e78470", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-faae472b97d1de2e", "level": "note", "message": {"text": "Unused endpoint: GET /:workflowId/endpoint-trigger"}, "properties": {"repobilityId": "6689bf00b8bcce93", "scanner": "scanner-primary", "fingerprint": "faae472b97d1de2e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a0a0392d74ce617", "level": "note", "message": {"text": "Unused endpoint: PUT /:workflowId/endpoint-trigger"}, "properties": {"repobilityId": "d66ba0dd0e78b772", "scanner": "scanner-primary", "fingerprint": "3a0a0392d74ce617", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}