Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { bqRegionFor, interpolateBqRegion } from "./bq-utils"
import { resolveFinopsWarehouse } from "./warehouse-resolver"
import type { QueryHistoryParams, QueryHistoryResult } from "../types"

const QUERY_HISTORY_SUPPORTED_TYPES = [
export const QUERY_HISTORY_SUPPORTED_TYPES = [
"snowflake",
"postgres",
"postgresql",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ LIMIT ?
// ---------------------------------------------------------------------------

const GRANTS_SUPPORTED_TYPES = DEFAULT_FINOPS_TYPES
const SNOWFLAKE_ONLY_TYPES = ["snowflake"] as const
export const SNOWFLAKE_ONLY_TYPES = ["snowflake"] as const

function rowsToRecords(result: { columns: string[]; rows: any[][] }): Record<string, unknown>[] {
return result.rows.map((row) => {
Expand Down
10 changes: 6 additions & 4 deletions packages/opencode/src/altimate/tools/finops-analyze-credits.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import z from "zod"
import { Tool } from "../../tool/tool"
import { Dispatcher } from "../native"
import { DEFAULT_FINOPS_TYPES } from "../native/finops/warehouse-resolver"
import { withWorkspaceFallback } from "./finops-workspace"

function formatCreditsAnalysis(
totalCredits: number,
Expand Down Expand Up @@ -93,11 +95,11 @@ export const FinopsAnalyzeCreditsTool = Tool.define("finops_analyze_credits", {

if (!result.success) {
const error = result.error ?? "Unknown error"
return {
return await withWorkspaceFallback(ctx.sessionID, "analyze_credits", DEFAULT_FINOPS_TYPES, {
title: "Credit Analysis: FAILED",
metadata: { success: false, total_credits: 0, error },
output: `Failed to analyze credits: ${error}`,
}
})
}

const totalCredits = Number(result.total_credits ?? 0)
Expand All @@ -114,11 +116,11 @@ export const FinopsAnalyzeCreditsTool = Tool.define("finops_analyze_credits", {
}
} catch (e) {
const msg = e instanceof Error ? e.message : String(e)
return {
return await withWorkspaceFallback(ctx.sessionID, "analyze_credits", DEFAULT_FINOPS_TYPES, {
title: "Credit Analysis: ERROR",
metadata: { success: false, total_credits: 0, error: msg },
output: `Failed to analyze credits: ${msg}`,
}
})
}
},
})
10 changes: 6 additions & 4 deletions packages/opencode/src/altimate/tools/finops-expensive-queries.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import z from "zod"
import { Tool } from "../../tool/tool"
import { Dispatcher } from "../native"
import { DEFAULT_FINOPS_TYPES } from "../native/finops/warehouse-resolver"
import { withWorkspaceFallback } from "./finops-workspace"
import { formatBytes, truncateQuery } from "./finops-formatting"

function formatExpensiveQueries(queries: unknown[]): string {
Expand Down Expand Up @@ -58,11 +60,11 @@ export const FinopsExpensiveQueriesTool = Tool.define("finops_expensive_queries"

if (!result.success) {
const error = result.error ?? "Unknown error"
return {
return await withWorkspaceFallback(ctx.sessionID, "expensive_queries", DEFAULT_FINOPS_TYPES, {
title: "Expensive Queries: FAILED",
metadata: { success: false, query_count: 0, error },
output: `Failed to find expensive queries: ${error}`,
}
})
}

return {
Expand All @@ -72,11 +74,11 @@ export const FinopsExpensiveQueriesTool = Tool.define("finops_expensive_queries"
}
} catch (e) {
const msg = e instanceof Error ? e.message : String(e)
return {
return await withWorkspaceFallback(ctx.sessionID, "expensive_queries", DEFAULT_FINOPS_TYPES, {
title: "Expensive Queries: ERROR",
metadata: { success: false, query_count: 0, error: msg },
output: `Failed to find expensive queries: ${msg}`,
}
})
}
},
})
10 changes: 6 additions & 4 deletions packages/opencode/src/altimate/tools/finops-query-history.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import z from "zod"
import { Tool } from "../../tool/tool"
import { Dispatcher } from "../native"
import { QUERY_HISTORY_SUPPORTED_TYPES } from "../native/finops/query-history"
import { withWorkspaceFallback } from "./finops-workspace"
import { formatBytes, truncateQuery } from "./finops-formatting"

function formatQueryHistory(summary: Record<string, unknown>, queries: unknown[]): string {
Expand Down Expand Up @@ -82,11 +84,11 @@ export const FinopsQueryHistoryTool = Tool.define("finops_query_history", {

if (!result.success) {
const error = result.error ?? "Unknown error"
return {
return await withWorkspaceFallback(ctx.sessionID, "query_history", QUERY_HISTORY_SUPPORTED_TYPES, {
title: "Query History: FAILED",
metadata: { success: false, query_count: 0, error },
output: `Failed to fetch query history: ${error}`,
}
})
}

const summary = result.summary as Record<string, unknown>
Expand All @@ -97,11 +99,11 @@ export const FinopsQueryHistoryTool = Tool.define("finops_query_history", {
}
} catch (e) {
const msg = e instanceof Error ? e.message : String(e)
return {
return await withWorkspaceFallback(ctx.sessionID, "query_history", QUERY_HISTORY_SUPPORTED_TYPES, {
title: "Query History: ERROR",
metadata: { success: false, query_count: 0, error: msg },
output: `Failed to fetch query history: ${msg}`,
}
})
}
},
})
27 changes: 15 additions & 12 deletions packages/opencode/src/altimate/tools/finops-role-access.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import z from "zod"
import { Tool } from "../../tool/tool"
import { Dispatcher } from "../native"
import { DEFAULT_FINOPS_TYPES } from "../native/finops/warehouse-resolver"
import { SNOWFLAKE_ONLY_TYPES } from "../native/finops/role-access"
import { withWorkspaceFallback } from "./finops-workspace"

function formatGrants(privilegeSummary: unknown, grants: unknown[]): string {
const lines: string[] = []
Expand Down Expand Up @@ -121,11 +124,11 @@ export const FinopsRoleGrantsTool = Tool.define("finops_role_grants", {
})

if (!result.success) {
return {
return await withWorkspaceFallback(ctx.sessionID, "role_grants", DEFAULT_FINOPS_TYPES, {
title: "Role Grants: FAILED",
metadata: { success: false, grant_count: 0 },
output: `Failed to query grants: ${result.error ?? "Unknown error"}`,
}
})
}

return {
Expand All @@ -135,11 +138,11 @@ export const FinopsRoleGrantsTool = Tool.define("finops_role_grants", {
}
} catch (e) {
const msg = e instanceof Error ? e.message : String(e)
return {
return await withWorkspaceFallback(ctx.sessionID, "role_grants", DEFAULT_FINOPS_TYPES, {
title: "Role Grants: ERROR",
metadata: { success: false, grant_count: 0, error: msg },
output: `Failed to query grants: ${msg}`,
}
})
}
},
})
Expand All @@ -159,11 +162,11 @@ export const FinopsRoleHierarchyTool = Tool.define("finops_role_hierarchy", {
const result = await Dispatcher.call("finops.role_hierarchy", { warehouse: args.warehouse })

if (!result.success) {
return {
return await withWorkspaceFallback(ctx.sessionID, "role_hierarchy", SNOWFLAKE_ONLY_TYPES, {
title: "Role Hierarchy: FAILED",
metadata: { success: false, role_count: 0 },
output: `Failed to query role hierarchy: ${result.error ?? "Unknown error"}`,
}
})
}

return {
Expand All @@ -173,11 +176,11 @@ export const FinopsRoleHierarchyTool = Tool.define("finops_role_hierarchy", {
}
} catch (e) {
const msg = e instanceof Error ? e.message : String(e)
return {
return await withWorkspaceFallback(ctx.sessionID, "role_hierarchy", SNOWFLAKE_ONLY_TYPES, {
title: "Role Hierarchy: ERROR",
metadata: { success: false, role_count: 0, error: msg },
output: `Failed to query role hierarchy: ${msg}`,
}
})
}
},
})
Expand All @@ -203,11 +206,11 @@ export const FinopsUserRolesTool = Tool.define("finops_user_roles", {
})

if (!result.success) {
return {
return await withWorkspaceFallback(ctx.sessionID, "user_roles", SNOWFLAKE_ONLY_TYPES, {
title: "User Roles: FAILED",
metadata: { success: false, assignment_count: 0 },
output: `Failed to query user roles: ${result.error ?? "Unknown error"}`,
}
})
}

return {
Expand All @@ -217,11 +220,11 @@ export const FinopsUserRolesTool = Tool.define("finops_user_roles", {
}
} catch (e) {
const msg = e instanceof Error ? e.message : String(e)
return {
return await withWorkspaceFallback(ctx.sessionID, "user_roles", SNOWFLAKE_ONLY_TYPES, {
title: "User Roles: ERROR",
metadata: { success: false, assignment_count: 0, error: msg },
output: `Failed to query user roles: ${msg}`,
}
})
}
},
})
10 changes: 6 additions & 4 deletions packages/opencode/src/altimate/tools/finops-unused-resources.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import z from "zod"
import { Tool } from "../../tool/tool"
import { Dispatcher } from "../native"
import { DEFAULT_FINOPS_TYPES } from "../native/finops/warehouse-resolver"
import { withWorkspaceFallback } from "./finops-workspace"

function formatUnusedResources(
summary: Record<string, unknown>,
Expand Down Expand Up @@ -81,11 +83,11 @@ export const FinopsUnusedResourcesTool = Tool.define("finops_unused_resources",

if (!result.success) {
const error = result.error ?? "Unknown error"
return {
return await withWorkspaceFallback(ctx.sessionID, "unused_resources", DEFAULT_FINOPS_TYPES, {
title: "Unused Resources: FAILED",
metadata: { success: false, unused_count: 0, error },
output: `Failed to find unused resources: ${error}`,
}
})
}

const summary = result.summary as Record<string, unknown>
Expand All @@ -98,11 +100,11 @@ export const FinopsUnusedResourcesTool = Tool.define("finops_unused_resources",
}
} catch (e) {
const msg = e instanceof Error ? e.message : String(e)
return {
return await withWorkspaceFallback(ctx.sessionID, "unused_resources", DEFAULT_FINOPS_TYPES, {
title: "Unused Resources: ERROR",
metadata: { success: false, unused_count: 0, error: msg },
output: `Failed to find unused resources: ${msg}`,
}
})
}
},
})
10 changes: 6 additions & 4 deletions packages/opencode/src/altimate/tools/finops-warehouse-advice.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import z from "zod"
import { Tool } from "../../tool/tool"
import { Dispatcher } from "../native"
import { DEFAULT_FINOPS_TYPES } from "../native/finops/warehouse-resolver"
import { withWorkspaceFallback } from "./finops-workspace"

function formatWarehouseAdvice(
recommendations: unknown[],
Expand Down Expand Up @@ -102,11 +104,11 @@ export const FinopsWarehouseAdviceTool = Tool.define("finops_warehouse_advice",

if (!result.success) {
const error = result.error ?? "Unknown error"
return {
return await withWorkspaceFallback(ctx.sessionID, "warehouse_advice", DEFAULT_FINOPS_TYPES, {
title: "Warehouse Advice: FAILED",
metadata: { success: false, recommendation_count: 0, error },
output: `Failed to analyze warehouses: ${error}`,
}
})
}

// Defensive null-coalesce in case the handler ever returns a partial
Expand All @@ -125,11 +127,11 @@ export const FinopsWarehouseAdviceTool = Tool.define("finops_warehouse_advice",
}
} catch (e) {
const msg = e instanceof Error ? e.message : String(e)
return {
return await withWorkspaceFallback(ctx.sessionID, "warehouse_advice", DEFAULT_FINOPS_TYPES, {
title: "Warehouse Advice: ERROR",
metadata: { success: false, recommendation_count: 0, error: msg },
output: `Failed to analyze warehouses: ${msg}`,
}
})
}
},
})
Loading
Loading