Skip to content

Commit 06023dd

Browse files
suryaiyer95claude
andcommitted
fix: [AI-5975] guard finding arrays with Array.isArray for defensive safety
If a dispatcher returns a non-array for `errors`, `violations`, `issues`, or `changes`, the `?? []` fallback handles null/undefined but not other types. `Array.isArray` prevents `.map()` from throwing on unexpected payloads. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 7029201 commit 06023dd

4 files changed

Lines changed: 8 additions & 4 deletions

File tree

packages/opencode/src/altimate/tools/altimate-core-correct.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ export const AltimateCoreCorrectTool = Tool.define("altimate_core_correct", {
2222
const data = (result.data ?? {}) as Record<string, any>
2323
const error = result.error ?? data.error ?? extractCorrectErrors(data)
2424
// altimate_change start — sql quality findings for telemetry
25-
const findings: Telemetry.Finding[] = (data.changes ?? []).map(() => ({
25+
const changes = Array.isArray(data.changes) ? data.changes : []
26+
const findings: Telemetry.Finding[] = changes.map(() => ({
2627
category: "correction_applied",
2728
}))
2829
// altimate_change end

packages/opencode/src/altimate/tools/altimate-core-policy.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ export const AltimateCorePolicyTool = Tool.define("altimate_core_policy", {
2424
const data = (result.data ?? {}) as Record<string, any>
2525
const error = result.error ?? data.error
2626
// altimate_change start — sql quality findings for telemetry
27-
const findings: Telemetry.Finding[] = (data.violations ?? []).map((v: any) => ({
27+
const violations = Array.isArray(data.violations) ? data.violations : []
28+
const findings: Telemetry.Finding[] = violations.map((v: any) => ({
2829
category: v.rule ?? "policy_violation",
2930
}))
3031
// altimate_change end

packages/opencode/src/altimate/tools/altimate-core-semantics.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ export const AltimateCoreSemanticsTool = Tool.define("altimate_core_semantics",
2828
const error = result.error ?? data.error ?? extractSemanticsErrors(data)
2929
const hasError = Boolean(error)
3030
// altimate_change start — sql quality findings for telemetry
31-
const findings: Telemetry.Finding[] = (data.issues ?? []).map(() => ({
31+
const issues = Array.isArray(data.issues) ? data.issues : []
32+
const findings: Telemetry.Finding[] = issues.map(() => ({
3233
category: "semantic_issue",
3334
}))
3435
// altimate_change end

packages/opencode/src/altimate/tools/altimate-core-validate.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ export const AltimateCoreValidateTool = Tool.define("altimate_core_validate", {
2727
const data = (result.data ?? {}) as Record<string, any>
2828
const error = result.error ?? data.error ?? extractValidationErrors(data)
2929
// altimate_change start — sql quality findings for telemetry
30-
const findings: Telemetry.Finding[] = (data.errors ?? []).map((err: any) => ({
30+
const errors = Array.isArray(data.errors) ? data.errors : []
31+
const findings: Telemetry.Finding[] = errors.map((err: any) => ({
3132
category: classifyValidationError(err.message ?? ""),
3233
}))
3334
// altimate_change end

0 commit comments

Comments
 (0)