From b0a3da441a899b4990aff1d98008229a7d314cea Mon Sep 17 00:00:00 2001 From: Alexander Petric Date: Thu, 30 Oct 2025 12:09:55 -0400 Subject: [PATCH] feat: support slack @ commands (#7008) * feat: support slack @ commands * sqlx * ee repo ref --- ...1f7f387f5055c47f493271d26731336257384.json | 10 +- ...a90d9206c45d92a0423c0bc2396d0d66a0b0d.json | 4 +- ...070d0a52e20deaf550185206ae854cce274be.json | 249 ----------------- ...dcc40f463cbc52d94ed9315cf9a547d4c89f2.json | 202 -------------- ...9d9dd236e694c0af5af0ebd90df940d893258.json | 251 ------------------ ...9ffe41d162b482adb04b7b898a19576af2a5e.json | 251 ++++++++++++++++++ ...72889ff257db0f0e3e9252adda2e4ef2039d6.json | 249 +++++++++++++++++ ...0cb549a34b96554ae1872355b90304f5dcb76.json | 4 +- ...b1d4c61566c3cedf31596efe084ef7dc9985a.json | 34 +++ backend/ee-repo-ref.txt | 2 +- .../(logged)/workspace_settings/+page.svelte | 2 +- 11 files changed, 546 insertions(+), 712 deletions(-) delete mode 100644 backend/.sqlx/query-34f4c05b844a83627a5c61edbfe070d0a52e20deaf550185206ae854cce274be.json delete mode 100644 backend/.sqlx/query-55cb03040bc2a8c53dd7fbb42bbdcc40f463cbc52d94ed9315cf9a547d4c89f2.json delete mode 100644 backend/.sqlx/query-6c03fc7e623afcdb11b55390ac79d9dd236e694c0af5af0ebd90df940d893258.json create mode 100644 backend/.sqlx/query-7274e9489b18d7ab82bad1fbff89ffe41d162b482adb04b7b898a19576af2a5e.json create mode 100644 backend/.sqlx/query-a6608d47b96d851eb7b04d2e4b472889ff257db0f0e3e9252adda2e4ef2039d6.json create mode 100644 backend/.sqlx/query-b731208c3e98f8fb15bf0c72e2ab1d4c61566c3cedf31596efe084ef7dc9985a.json diff --git a/backend/.sqlx/query-07168aaf14cb6beff0ad4274b441f7f387f5055c47f493271d26731336257384.json b/backend/.sqlx/query-07168aaf14cb6beff0ad4274b441f7f387f5055c47f493271d26731336257384.json index e7ed0aee65..d29a18c691 100644 --- a/backend/.sqlx/query-07168aaf14cb6beff0ad4274b441f7f387f5055c47f493271d26731336257384.json +++ b/backend/.sqlx/query-07168aaf14cb6beff0ad4274b441f7f387f5055c47f493271d26731336257384.json @@ -46,11 +46,11 @@ ] }, "nullable": [ - false, - false, - false, - false, - false, + true, + true, + true, + true, + true, true, true ] diff --git a/backend/.sqlx/query-0a7132202ecf6c4c10340921644a90d9206c45d92a0423c0bc2396d0d66a0b0d.json b/backend/.sqlx/query-0a7132202ecf6c4c10340921644a90d9206c45d92a0423c0bc2396d0d66a0b0d.json index ecaf828737..bc15928e38 100644 --- a/backend/.sqlx/query-0a7132202ecf6c4c10340921644a90d9206c45d92a0423c0bc2396d0d66a0b0d.json +++ b/backend/.sqlx/query-0a7132202ecf6c4c10340921644a90d9206c45d92a0423c0bc2396d0d66a0b0d.json @@ -59,7 +59,9 @@ "failure", "command", "approval", - "preprocessor" + "preprocessor", + "schedule_handler_old", + "dynamic_skip" ] } } diff --git a/backend/.sqlx/query-34f4c05b844a83627a5c61edbfe070d0a52e20deaf550185206ae854cce274be.json b/backend/.sqlx/query-34f4c05b844a83627a5c61edbfe070d0a52e20deaf550185206ae854cce274be.json deleted file mode 100644 index b5d94b1915..0000000000 --- a/backend/.sqlx/query-34f4c05b844a83627a5c61edbfe070d0a52e20deaf550185206ae854cce274be.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "WITH job_sizes AS (\n SELECT \n cj.id,\n cj.workspace_id,\n j.parent_job,\n j.created_by,\n cj.duration_ms,\n cj.status = 'success' OR cj.status = 'skipped' AS success,\n j.runnable_id AS script_hash,\n j.runnable_path AS script_path,\n j.args,\n cj.completed_at,\n cj.result,\n cj.deleted,\n cj.status = 'canceled' AS canceled,\n cj.canceled_by,\n cj.canceled_reason,\n j.kind AS job_kind,\n CASE WHEN j.trigger_kind = 'schedule'::job_trigger_kind THEN j.trigger END AS schedule_path,\n j.permissioned_as,\n j.flow_step_id IS NOT NULL AS is_flow_step,\n j.script_lang AS language,\n cj.status = 'skipped' AS is_skipped,\n j.permissioned_as_email AS email,\n j.visible_to_owner,\n cj.memory_peak AS mem_peak,\n j.tag,\n cj.started_at,\n job_logs.logs,\n job_logs.log_offset,\n job_logs.log_file_index,\n -- Estimate size in bytes based on actual data characteristics\n (36 + -- UUID\n COALESCE(LENGTH(cj.workspace_id), 0) + \n COALESCE(LENGTH(j.created_by), 0) + \n COALESCE(LENGTH(j.runnable_path), 0) + \n COALESCE(LENGTH(j.args::text), 0) + \n COALESCE(LENGTH(cj.result::text), 0) + \n COALESCE(LENGTH(job_logs.logs), 0) + \n 200) AS estimated_size_bytes -- Other fields overhead\n FROM v2_job_completed AS cj\n JOIN v2_job AS j ON cj.id = j.id\n LEFT JOIN job_logs ON cj.id = job_logs.job_id\n WHERE cj.completed_at < $1\n ORDER BY completed_at ASC\n LIMIT 5000\n ),\n cumulative_sizes AS (\n SELECT \n *,\n SUM(estimated_size_bytes) OVER (\n ORDER BY completed_at ASC \n ROWS UNBOUNDED PRECEDING\n ) AS cumulative_size_bytes,\n ROW_NUMBER() OVER (ORDER BY completed_at ASC) AS row_num\n FROM job_sizes\n )\n SELECT\n id AS \"id!\",\n workspace_id AS \"workspace_id!\",\n parent_job,\n created_by AS \"created_by!\",\n duration_ms AS \"duration_ms!\",\n success AS \"success!\",\n script_hash AS \"script_hash!: Option\",\n script_path,\n args AS \"args: sqlx::types::Json>>\",\n result AS \"result: sqlx::types::Json>\",\n deleted AS \"deleted!\",\n canceled AS \"canceled!\",\n canceled_by,\n canceled_reason,\n job_kind AS \"job_kind!: JobKind\",\n schedule_path,\n permissioned_as AS \"permissioned_as!\",\n is_flow_step AS \"is_flow_step!\",\n language AS \"language: ScriptLang\",\n is_skipped AS \"is_skipped!\",\n email AS \"email!\",\n visible_to_owner AS \"visible_to_owner!\",\n mem_peak,\n tag AS \"tag!\",\n completed_at AS \"created_at!\",\n started_at,\n logs,\n log_offset AS \"log_offset?\",\n log_file_index\n FROM cumulative_sizes\n WHERE cumulative_size_bytes <= $2 OR row_num = 1\n ORDER BY completed_at ASC", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id!", - "type_info": "Uuid" - }, - { - "ordinal": 1, - "name": "workspace_id!", - "type_info": "Varchar" - }, - { - "ordinal": 2, - "name": "parent_job", - "type_info": "Uuid" - }, - { - "ordinal": 3, - "name": "created_by!", - "type_info": "Varchar" - }, - { - "ordinal": 4, - "name": "duration_ms!", - "type_info": "Int8" - }, - { - "ordinal": 5, - "name": "success!", - "type_info": "Bool" - }, - { - "ordinal": 6, - "name": "script_hash!: Option", - "type_info": "Int8" - }, - { - "ordinal": 7, - "name": "script_path", - "type_info": "Varchar" - }, - { - "ordinal": 8, - "name": "args: sqlx::types::Json>>", - "type_info": "Jsonb" - }, - { - "ordinal": 9, - "name": "result: sqlx::types::Json>", - "type_info": "Jsonb" - }, - { - "ordinal": 10, - "name": "deleted!", - "type_info": "Bool" - }, - { - "ordinal": 11, - "name": "canceled!", - "type_info": "Bool" - }, - { - "ordinal": 12, - "name": "canceled_by", - "type_info": "Varchar" - }, - { - "ordinal": 13, - "name": "canceled_reason", - "type_info": "Text" - }, - { - "ordinal": 14, - "name": "job_kind!: JobKind", - "type_info": { - "Custom": { - "name": "job_kind", - "kind": { - "Enum": [ - "script", - "preview", - "flow", - "dependencies", - "flowpreview", - "script_hub", - "identity", - "flowdependencies", - "http", - "graphql", - "postgresql", - "noop", - "appdependencies", - "deploymentcallback", - "singlestepflow", - "flowscript", - "flownode", - "appscript", - "aiagent" - ] - } - } - } - }, - { - "ordinal": 15, - "name": "schedule_path", - "type_info": "Varchar" - }, - { - "ordinal": 16, - "name": "permissioned_as!", - "type_info": "Varchar" - }, - { - "ordinal": 17, - "name": "is_flow_step!", - "type_info": "Bool" - }, - { - "ordinal": 18, - "name": "language: ScriptLang", - "type_info": { - "Custom": { - "name": "script_lang", - "kind": { - "Enum": [ - "python3", - "deno", - "go", - "bash", - "postgresql", - "nativets", - "bun", - "mysql", - "bigquery", - "snowflake", - "graphql", - "powershell", - "mssql", - "php", - "bunnative", - "rust", - "ansible", - "csharp", - "oracledb", - "nu", - "java", - "duckdb", - "ruby" - ] - } - } - } - }, - { - "ordinal": 19, - "name": "is_skipped!", - "type_info": "Bool" - }, - { - "ordinal": 20, - "name": "email!", - "type_info": "Varchar" - }, - { - "ordinal": 21, - "name": "visible_to_owner!", - "type_info": "Bool" - }, - { - "ordinal": 22, - "name": "mem_peak", - "type_info": "Int4" - }, - { - "ordinal": 23, - "name": "tag!", - "type_info": "Varchar" - }, - { - "ordinal": 24, - "name": "created_at!", - "type_info": "Timestamptz" - }, - { - "ordinal": 25, - "name": "started_at", - "type_info": "Timestamptz" - }, - { - "ordinal": 26, - "name": "logs", - "type_info": "Text" - }, - { - "ordinal": 27, - "name": "log_offset?", - "type_info": "Int4" - }, - { - "ordinal": 28, - "name": "log_file_index", - "type_info": "TextArray" - } - ], - "parameters": { - "Left": [ - "Timestamptz", - "Int8" - ] - }, - "nullable": [ - false, - false, - true, - false, - false, - null, - true, - true, - true, - true, - false, - null, - true, - true, - false, - null, - false, - null, - true, - null, - false, - false, - true, - false, - false, - true, - true, - false, - true - ] - }, - "hash": "34f4c05b844a83627a5c61edbfe070d0a52e20deaf550185206ae854cce274be" -} diff --git a/backend/.sqlx/query-55cb03040bc2a8c53dd7fbb42bbdcc40f463cbc52d94ed9315cf9a547d4c89f2.json b/backend/.sqlx/query-55cb03040bc2a8c53dd7fbb42bbdcc40f463cbc52d94ed9315cf9a547d4c89f2.json deleted file mode 100644 index 0051151fc0..0000000000 --- a/backend/.sqlx/query-55cb03040bc2a8c53dd7fbb42bbdcc40f463cbc52d94ed9315cf9a547d4c89f2.json +++ /dev/null @@ -1,202 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "SELECT * FROM workspace_settings WHERE slack_team_id = $1 AND slack_command_script IS NOT NULL", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "workspace_id", - "type_info": "Varchar" - }, - { - "ordinal": 1, - "name": "slack_team_id", - "type_info": "Varchar" - }, - { - "ordinal": 2, - "name": "slack_name", - "type_info": "Varchar" - }, - { - "ordinal": 3, - "name": "slack_command_script", - "type_info": "Varchar" - }, - { - "ordinal": 4, - "name": "slack_email", - "type_info": "Varchar" - }, - { - "ordinal": 5, - "name": "auto_invite_domain", - "type_info": "Varchar" - }, - { - "ordinal": 6, - "name": "auto_invite_operator", - "type_info": "Bool" - }, - { - "ordinal": 7, - "name": "customer_id", - "type_info": "Varchar" - }, - { - "ordinal": 8, - "name": "plan", - "type_info": "Varchar" - }, - { - "ordinal": 9, - "name": "webhook", - "type_info": "Text" - }, - { - "ordinal": 10, - "name": "deploy_to", - "type_info": "Varchar" - }, - { - "ordinal": 11, - "name": "error_handler", - "type_info": "Varchar" - }, - { - "ordinal": 12, - "name": "ai_config", - "type_info": "Jsonb" - }, - { - "ordinal": 13, - "name": "error_handler_extra_args", - "type_info": "Json" - }, - { - "ordinal": 14, - "name": "error_handler_muted_on_cancel", - "type_info": "Bool" - }, - { - "ordinal": 15, - "name": "large_file_storage", - "type_info": "Jsonb" - }, - { - "ordinal": 16, - "name": "git_sync", - "type_info": "Jsonb" - }, - { - "ordinal": 17, - "name": "default_app", - "type_info": "Varchar" - }, - { - "ordinal": 18, - "name": "auto_add", - "type_info": "Bool" - }, - { - "ordinal": 19, - "name": "default_scripts", - "type_info": "Jsonb" - }, - { - "ordinal": 20, - "name": "deploy_ui", - "type_info": "Jsonb" - }, - { - "ordinal": 21, - "name": "mute_critical_alerts", - "type_info": "Bool" - }, - { - "ordinal": 22, - "name": "color", - "type_info": "Varchar" - }, - { - "ordinal": 23, - "name": "operator_settings", - "type_info": "Jsonb" - }, - { - "ordinal": 24, - "name": "teams_command_script", - "type_info": "Text" - }, - { - "ordinal": 25, - "name": "teams_team_id", - "type_info": "Text" - }, - { - "ordinal": 26, - "name": "teams_team_name", - "type_info": "Text" - }, - { - "ordinal": 27, - "name": "git_app_installations", - "type_info": "Jsonb" - }, - { - "ordinal": 28, - "name": "ducklake", - "type_info": "Jsonb" - }, - { - "ordinal": 29, - "name": "auto_add_instance_groups", - "type_info": "TextArray" - }, - { - "ordinal": 30, - "name": "auto_add_instance_groups_roles", - "type_info": "Jsonb" - } - ], - "parameters": { - "Left": [ - "Text" - ] - }, - "nullable": [ - false, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true - ] - }, - "hash": "55cb03040bc2a8c53dd7fbb42bbdcc40f463cbc52d94ed9315cf9a547d4c89f2" -} diff --git a/backend/.sqlx/query-6c03fc7e623afcdb11b55390ac79d9dd236e694c0af5af0ebd90df940d893258.json b/backend/.sqlx/query-6c03fc7e623afcdb11b55390ac79d9dd236e694c0af5af0ebd90df940d893258.json deleted file mode 100644 index bfebea0664..0000000000 --- a/backend/.sqlx/query-6c03fc7e623afcdb11b55390ac79d9dd236e694c0af5af0ebd90df940d893258.json +++ /dev/null @@ -1,251 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "WITH job_sizes AS (\n SELECT \n cj.id,\n cj.workspace_id,\n j.parent_job,\n j.created_by,\n cj.duration_ms,\n cj.status = 'success' OR cj.status = 'skipped' AS success,\n j.runnable_id AS script_hash,\n j.runnable_path AS script_path,\n j.args,\n cj.result,\n cj.deleted,\n cj.status = 'canceled' AS canceled,\n cj.canceled_by,\n cj.canceled_reason,\n j.kind AS job_kind,\n CASE WHEN j.trigger_kind = 'schedule'::job_trigger_kind THEN j.trigger END AS schedule_path,\n j.permissioned_as,\n j.flow_step_id IS NOT NULL AS is_flow_step,\n j.script_lang AS language,\n cj.status = 'skipped' AS is_skipped,\n j.permissioned_as_email AS email,\n j.visible_to_owner,\n cj.memory_peak AS mem_peak,\n j.tag,\n cj.completed_at,\n cj.started_at,\n job_logs.logs,\n job_logs.log_offset,\n job_logs.log_file_index,\n -- Estimate size in bytes based on actual data characteristics\n (36 + -- UUID\n COALESCE(LENGTH(cj.workspace_id), 0) + \n COALESCE(LENGTH(j.created_by), 0) + \n COALESCE(LENGTH(j.runnable_path), 0) + \n COALESCE(LENGTH(j.args::text), 0) + \n COALESCE(LENGTH(cj.result::text), 0) + \n COALESCE(LENGTH(job_logs.logs), 0) + \n 200) AS estimated_size_bytes -- Other fields overhead\n FROM v2_job_completed AS cj\n JOIN v2_job AS j ON cj.id = j.id\n LEFT JOIN job_logs ON cj.id = job_logs.job_id\n WHERE (cj.completed_at > $1 AND cj.completed_at < $3)\n OR cj.id = ANY($2)\n ORDER BY completed_at ASC\n LIMIT 5000\n ),\n cumulative_sizes AS (\n SELECT \n *,\n SUM(estimated_size_bytes) OVER (\n ORDER BY completed_at ASC \n ROWS UNBOUNDED PRECEDING\n ) AS cumulative_size_bytes,\n ROW_NUMBER() OVER (ORDER BY completed_at ASC) AS row_num\n FROM job_sizes\n )\n SELECT\n id AS \"id!\",\n workspace_id AS \"workspace_id!\",\n parent_job,\n created_by AS \"created_by!\",\n duration_ms AS \"duration_ms!\",\n success AS \"success!\",\n script_hash AS \"script_hash!: Option\",\n script_path,\n args AS \"args: sqlx::types::Json>>\",\n result AS \"result: sqlx::types::Json>\",\n deleted AS \"deleted!\",\n canceled AS \"canceled!\",\n canceled_by,\n canceled_reason,\n job_kind AS \"job_kind!: JobKind\",\n schedule_path,\n permissioned_as AS \"permissioned_as!\",\n is_flow_step AS \"is_flow_step!\",\n language AS \"language: ScriptLang\",\n is_skipped AS \"is_skipped!\",\n email AS \"email!\",\n visible_to_owner AS \"visible_to_owner!\",\n mem_peak,\n tag AS \"tag!\",\n completed_at AS \"created_at!\",\n started_at,\n logs,\n log_offset AS \"log_offset?\",\n log_file_index\n FROM cumulative_sizes\n WHERE cumulative_size_bytes <= $4 OR row_num = 1\n ORDER BY completed_at ASC", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id!", - "type_info": "Uuid" - }, - { - "ordinal": 1, - "name": "workspace_id!", - "type_info": "Varchar" - }, - { - "ordinal": 2, - "name": "parent_job", - "type_info": "Uuid" - }, - { - "ordinal": 3, - "name": "created_by!", - "type_info": "Varchar" - }, - { - "ordinal": 4, - "name": "duration_ms!", - "type_info": "Int8" - }, - { - "ordinal": 5, - "name": "success!", - "type_info": "Bool" - }, - { - "ordinal": 6, - "name": "script_hash!: Option", - "type_info": "Int8" - }, - { - "ordinal": 7, - "name": "script_path", - "type_info": "Varchar" - }, - { - "ordinal": 8, - "name": "args: sqlx::types::Json>>", - "type_info": "Jsonb" - }, - { - "ordinal": 9, - "name": "result: sqlx::types::Json>", - "type_info": "Jsonb" - }, - { - "ordinal": 10, - "name": "deleted!", - "type_info": "Bool" - }, - { - "ordinal": 11, - "name": "canceled!", - "type_info": "Bool" - }, - { - "ordinal": 12, - "name": "canceled_by", - "type_info": "Varchar" - }, - { - "ordinal": 13, - "name": "canceled_reason", - "type_info": "Text" - }, - { - "ordinal": 14, - "name": "job_kind!: JobKind", - "type_info": { - "Custom": { - "name": "job_kind", - "kind": { - "Enum": [ - "script", - "preview", - "flow", - "dependencies", - "flowpreview", - "script_hub", - "identity", - "flowdependencies", - "http", - "graphql", - "postgresql", - "noop", - "appdependencies", - "deploymentcallback", - "singlestepflow", - "flowscript", - "flownode", - "appscript", - "aiagent" - ] - } - } - } - }, - { - "ordinal": 15, - "name": "schedule_path", - "type_info": "Varchar" - }, - { - "ordinal": 16, - "name": "permissioned_as!", - "type_info": "Varchar" - }, - { - "ordinal": 17, - "name": "is_flow_step!", - "type_info": "Bool" - }, - { - "ordinal": 18, - "name": "language: ScriptLang", - "type_info": { - "Custom": { - "name": "script_lang", - "kind": { - "Enum": [ - "python3", - "deno", - "go", - "bash", - "postgresql", - "nativets", - "bun", - "mysql", - "bigquery", - "snowflake", - "graphql", - "powershell", - "mssql", - "php", - "bunnative", - "rust", - "ansible", - "csharp", - "oracledb", - "nu", - "java", - "duckdb", - "ruby" - ] - } - } - } - }, - { - "ordinal": 19, - "name": "is_skipped!", - "type_info": "Bool" - }, - { - "ordinal": 20, - "name": "email!", - "type_info": "Varchar" - }, - { - "ordinal": 21, - "name": "visible_to_owner!", - "type_info": "Bool" - }, - { - "ordinal": 22, - "name": "mem_peak", - "type_info": "Int4" - }, - { - "ordinal": 23, - "name": "tag!", - "type_info": "Varchar" - }, - { - "ordinal": 24, - "name": "created_at!", - "type_info": "Timestamptz" - }, - { - "ordinal": 25, - "name": "started_at", - "type_info": "Timestamptz" - }, - { - "ordinal": 26, - "name": "logs", - "type_info": "Text" - }, - { - "ordinal": 27, - "name": "log_offset?", - "type_info": "Int4" - }, - { - "ordinal": 28, - "name": "log_file_index", - "type_info": "TextArray" - } - ], - "parameters": { - "Left": [ - "Timestamptz", - "UuidArray", - "Timestamptz", - "Int8" - ] - }, - "nullable": [ - false, - false, - true, - false, - false, - null, - true, - true, - true, - true, - false, - null, - true, - true, - false, - null, - false, - null, - true, - null, - false, - false, - true, - false, - false, - true, - true, - false, - true - ] - }, - "hash": "6c03fc7e623afcdb11b55390ac79d9dd236e694c0af5af0ebd90df940d893258" -} diff --git a/backend/.sqlx/query-7274e9489b18d7ab82bad1fbff89ffe41d162b482adb04b7b898a19576af2a5e.json b/backend/.sqlx/query-7274e9489b18d7ab82bad1fbff89ffe41d162b482adb04b7b898a19576af2a5e.json new file mode 100644 index 0000000000..15dba71f3e --- /dev/null +++ b/backend/.sqlx/query-7274e9489b18d7ab82bad1fbff89ffe41d162b482adb04b7b898a19576af2a5e.json @@ -0,0 +1,251 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH job_sizes AS (\n SELECT \n cj.id,\n cj.workspace_id,\n cj.parent_job,\n cj.created_by,\n cj.duration_ms,\n cj.success,\n cj.script_hash,\n cj.script_path,\n cj.args,\n cj.result,\n cj.deleted,\n cj.canceled,\n cj.canceled_by,\n cj.canceled_reason,\n cj.job_kind,\n cj.schedule_path,\n cj.permissioned_as,\n cj.is_flow_step,\n cj.language,\n cj.is_skipped,\n cj.email,\n cj.visible_to_owner,\n cj.mem_peak,\n cj.tag,\n cj.created_at,\n cj.started_at,\n job_logs.logs,\n job_logs.log_offset,\n job_logs.log_file_index,\n -- Estimate size in bytes based on actual data characteristics\n (36 + -- UUID\n COALESCE(LENGTH(cj.workspace_id), 0) + \n COALESCE(LENGTH(cj.created_by), 0) + \n COALESCE(LENGTH(cj.script_path), 0) + \n COALESCE(LENGTH(cj.args::text), 0) + \n COALESCE(LENGTH(cj.result::text), 0) + \n COALESCE(LENGTH(job_logs.logs), 0) + \n 200) AS estimated_size_bytes -- Other fields overhead\n FROM v2_as_completed_job AS cj\n LEFT JOIN job_logs ON cj.id = job_logs.job_id\n WHERE (cj.created_at > $1 AND cj.created_at < $3)\n OR cj.id = ANY($2)\n ORDER BY created_at ASC\n LIMIT 5000\n ),\n cumulative_sizes AS (\n SELECT \n *,\n SUM(estimated_size_bytes) OVER (\n ORDER BY created_at ASC \n ROWS UNBOUNDED PRECEDING\n ) AS cumulative_size_bytes,\n ROW_NUMBER() OVER (ORDER BY created_at ASC) AS row_num\n FROM job_sizes\n )\n SELECT\n id AS \"id!\",\n workspace_id AS \"workspace_id!\",\n parent_job,\n created_by AS \"created_by!\",\n duration_ms AS \"duration_ms!\",\n success AS \"success!\",\n script_hash AS \"script_hash!: Option\",\n script_path,\n args AS \"args: sqlx::types::Json>>\",\n result AS \"result: sqlx::types::Json>\",\n deleted AS \"deleted!\",\n canceled AS \"canceled!\",\n canceled_by,\n canceled_reason,\n job_kind AS \"job_kind!: JobKind\",\n schedule_path,\n permissioned_as AS \"permissioned_as!\",\n is_flow_step AS \"is_flow_step!\",\n language AS \"language: ScriptLang\",\n is_skipped AS \"is_skipped!\",\n email AS \"email!\",\n visible_to_owner AS \"visible_to_owner!\",\n mem_peak,\n tag AS \"tag!\",\n created_at AS \"created_at!\",\n started_at,\n logs,\n log_offset AS \"log_offset?\",\n log_file_index\n FROM cumulative_sizes\n WHERE cumulative_size_bytes <= $4 OR row_num = 1\n ORDER BY created_at ASC", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id!", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "workspace_id!", + "type_info": "Varchar" + }, + { + "ordinal": 2, + "name": "parent_job", + "type_info": "Uuid" + }, + { + "ordinal": 3, + "name": "created_by!", + "type_info": "Varchar" + }, + { + "ordinal": 4, + "name": "duration_ms!", + "type_info": "Int8" + }, + { + "ordinal": 5, + "name": "success!", + "type_info": "Bool" + }, + { + "ordinal": 6, + "name": "script_hash!: Option", + "type_info": "Int8" + }, + { + "ordinal": 7, + "name": "script_path", + "type_info": "Varchar" + }, + { + "ordinal": 8, + "name": "args: sqlx::types::Json>>", + "type_info": "Jsonb" + }, + { + "ordinal": 9, + "name": "result: sqlx::types::Json>", + "type_info": "Jsonb" + }, + { + "ordinal": 10, + "name": "deleted!", + "type_info": "Bool" + }, + { + "ordinal": 11, + "name": "canceled!", + "type_info": "Bool" + }, + { + "ordinal": 12, + "name": "canceled_by", + "type_info": "Varchar" + }, + { + "ordinal": 13, + "name": "canceled_reason", + "type_info": "Text" + }, + { + "ordinal": 14, + "name": "job_kind!: JobKind", + "type_info": { + "Custom": { + "name": "job_kind", + "kind": { + "Enum": [ + "script", + "preview", + "flow", + "dependencies", + "flowpreview", + "script_hub", + "identity", + "flowdependencies", + "http", + "graphql", + "postgresql", + "noop", + "appdependencies", + "deploymentcallback", + "singlestepflow", + "flowscript", + "flownode", + "appscript", + "aiagent" + ] + } + } + } + }, + { + "ordinal": 15, + "name": "schedule_path", + "type_info": "Varchar" + }, + { + "ordinal": 16, + "name": "permissioned_as!", + "type_info": "Varchar" + }, + { + "ordinal": 17, + "name": "is_flow_step!", + "type_info": "Bool" + }, + { + "ordinal": 18, + "name": "language: ScriptLang", + "type_info": { + "Custom": { + "name": "script_lang", + "kind": { + "Enum": [ + "python3", + "deno", + "go", + "bash", + "postgresql", + "nativets", + "bun", + "mysql", + "bigquery", + "snowflake", + "graphql", + "powershell", + "mssql", + "php", + "bunnative", + "rust", + "ansible", + "csharp", + "oracledb", + "nu", + "java", + "duckdb", + "ruby" + ] + } + } + } + }, + { + "ordinal": 19, + "name": "is_skipped!", + "type_info": "Bool" + }, + { + "ordinal": 20, + "name": "email!", + "type_info": "Varchar" + }, + { + "ordinal": 21, + "name": "visible_to_owner!", + "type_info": "Bool" + }, + { + "ordinal": 22, + "name": "mem_peak", + "type_info": "Int4" + }, + { + "ordinal": 23, + "name": "tag!", + "type_info": "Varchar" + }, + { + "ordinal": 24, + "name": "created_at!", + "type_info": "Timestamptz" + }, + { + "ordinal": 25, + "name": "started_at", + "type_info": "Timestamptz" + }, + { + "ordinal": 26, + "name": "logs", + "type_info": "Text" + }, + { + "ordinal": 27, + "name": "log_offset?", + "type_info": "Int4" + }, + { + "ordinal": 28, + "name": "log_file_index", + "type_info": "TextArray" + } + ], + "parameters": { + "Left": [ + "Timestamptz", + "UuidArray", + "Timestamptz", + "Int8" + ] + }, + "nullable": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true + ] + }, + "hash": "7274e9489b18d7ab82bad1fbff89ffe41d162b482adb04b7b898a19576af2a5e" +} diff --git a/backend/.sqlx/query-a6608d47b96d851eb7b04d2e4b472889ff257db0f0e3e9252adda2e4ef2039d6.json b/backend/.sqlx/query-a6608d47b96d851eb7b04d2e4b472889ff257db0f0e3e9252adda2e4ef2039d6.json new file mode 100644 index 0000000000..e2baca86e0 --- /dev/null +++ b/backend/.sqlx/query-a6608d47b96d851eb7b04d2e4b472889ff257db0f0e3e9252adda2e4ef2039d6.json @@ -0,0 +1,249 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH job_sizes AS (\n SELECT \n cj.id,\n cj.workspace_id,\n cj.parent_job,\n cj.created_by,\n cj.duration_ms,\n cj.success,\n cj.script_hash,\n cj.script_path,\n cj.args,\n cj.result,\n cj.deleted,\n cj.canceled,\n cj.canceled_by,\n cj.canceled_reason,\n cj.job_kind,\n cj.schedule_path,\n cj.permissioned_as,\n cj.is_flow_step,\n cj.language,\n cj.is_skipped,\n cj.email,\n cj.visible_to_owner,\n cj.mem_peak,\n cj.tag,\n cj.created_at,\n cj.started_at,\n job_logs.logs,\n job_logs.log_offset,\n job_logs.log_file_index,\n -- Estimate size in bytes based on actual data characteristics\n (36 + -- UUID\n COALESCE(LENGTH(cj.workspace_id), 0) + \n COALESCE(LENGTH(cj.created_by), 0) + \n COALESCE(LENGTH(cj.script_path), 0) + \n COALESCE(LENGTH(cj.args::text), 0) + \n COALESCE(LENGTH(cj.result::text), 0) + \n COALESCE(LENGTH(job_logs.logs), 0) + \n 200) AS estimated_size_bytes -- Other fields overhead\n FROM v2_as_completed_job AS cj\n LEFT JOIN job_logs ON cj.id = job_logs.job_id\n WHERE cj.created_at < $1\n ORDER BY created_at ASC\n LIMIT 5000\n ),\n cumulative_sizes AS (\n SELECT \n *,\n SUM(estimated_size_bytes) OVER (\n ORDER BY created_at ASC \n ROWS UNBOUNDED PRECEDING\n ) AS cumulative_size_bytes,\n ROW_NUMBER() OVER (ORDER BY created_at ASC) AS row_num\n FROM job_sizes\n )\n SELECT\n id AS \"id!\",\n workspace_id AS \"workspace_id!\",\n parent_job,\n created_by AS \"created_by!\",\n duration_ms AS \"duration_ms!\",\n success AS \"success!\",\n script_hash AS \"script_hash!: Option\",\n script_path,\n args AS \"args: sqlx::types::Json>>\",\n result AS \"result: sqlx::types::Json>\",\n deleted AS \"deleted!\",\n canceled AS \"canceled!\",\n canceled_by,\n canceled_reason,\n job_kind AS \"job_kind!: JobKind\",\n schedule_path,\n permissioned_as AS \"permissioned_as!\",\n is_flow_step AS \"is_flow_step!\",\n language AS \"language: ScriptLang\",\n is_skipped AS \"is_skipped!\",\n email AS \"email!\",\n visible_to_owner AS \"visible_to_owner!\",\n mem_peak,\n tag AS \"tag!\",\n created_at AS \"created_at!\",\n started_at,\n logs,\n log_offset AS \"log_offset?\",\n log_file_index\n FROM cumulative_sizes\n WHERE cumulative_size_bytes <= $2 OR row_num = 1\n ORDER BY created_at ASC", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id!", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "workspace_id!", + "type_info": "Varchar" + }, + { + "ordinal": 2, + "name": "parent_job", + "type_info": "Uuid" + }, + { + "ordinal": 3, + "name": "created_by!", + "type_info": "Varchar" + }, + { + "ordinal": 4, + "name": "duration_ms!", + "type_info": "Int8" + }, + { + "ordinal": 5, + "name": "success!", + "type_info": "Bool" + }, + { + "ordinal": 6, + "name": "script_hash!: Option", + "type_info": "Int8" + }, + { + "ordinal": 7, + "name": "script_path", + "type_info": "Varchar" + }, + { + "ordinal": 8, + "name": "args: sqlx::types::Json>>", + "type_info": "Jsonb" + }, + { + "ordinal": 9, + "name": "result: sqlx::types::Json>", + "type_info": "Jsonb" + }, + { + "ordinal": 10, + "name": "deleted!", + "type_info": "Bool" + }, + { + "ordinal": 11, + "name": "canceled!", + "type_info": "Bool" + }, + { + "ordinal": 12, + "name": "canceled_by", + "type_info": "Varchar" + }, + { + "ordinal": 13, + "name": "canceled_reason", + "type_info": "Text" + }, + { + "ordinal": 14, + "name": "job_kind!: JobKind", + "type_info": { + "Custom": { + "name": "job_kind", + "kind": { + "Enum": [ + "script", + "preview", + "flow", + "dependencies", + "flowpreview", + "script_hub", + "identity", + "flowdependencies", + "http", + "graphql", + "postgresql", + "noop", + "appdependencies", + "deploymentcallback", + "singlestepflow", + "flowscript", + "flownode", + "appscript", + "aiagent" + ] + } + } + } + }, + { + "ordinal": 15, + "name": "schedule_path", + "type_info": "Varchar" + }, + { + "ordinal": 16, + "name": "permissioned_as!", + "type_info": "Varchar" + }, + { + "ordinal": 17, + "name": "is_flow_step!", + "type_info": "Bool" + }, + { + "ordinal": 18, + "name": "language: ScriptLang", + "type_info": { + "Custom": { + "name": "script_lang", + "kind": { + "Enum": [ + "python3", + "deno", + "go", + "bash", + "postgresql", + "nativets", + "bun", + "mysql", + "bigquery", + "snowflake", + "graphql", + "powershell", + "mssql", + "php", + "bunnative", + "rust", + "ansible", + "csharp", + "oracledb", + "nu", + "java", + "duckdb", + "ruby" + ] + } + } + } + }, + { + "ordinal": 19, + "name": "is_skipped!", + "type_info": "Bool" + }, + { + "ordinal": 20, + "name": "email!", + "type_info": "Varchar" + }, + { + "ordinal": 21, + "name": "visible_to_owner!", + "type_info": "Bool" + }, + { + "ordinal": 22, + "name": "mem_peak", + "type_info": "Int4" + }, + { + "ordinal": 23, + "name": "tag!", + "type_info": "Varchar" + }, + { + "ordinal": 24, + "name": "created_at!", + "type_info": "Timestamptz" + }, + { + "ordinal": 25, + "name": "started_at", + "type_info": "Timestamptz" + }, + { + "ordinal": 26, + "name": "logs", + "type_info": "Text" + }, + { + "ordinal": 27, + "name": "log_offset?", + "type_info": "Int4" + }, + { + "ordinal": 28, + "name": "log_file_index", + "type_info": "TextArray" + } + ], + "parameters": { + "Left": [ + "Timestamptz", + "Int8" + ] + }, + "nullable": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true + ] + }, + "hash": "a6608d47b96d851eb7b04d2e4b472889ff257db0f0e3e9252adda2e4ef2039d6" +} diff --git a/backend/.sqlx/query-b3dbdfb50ee8118bdaed3164b210cb549a34b96554ae1872355b90304f5dcb76.json b/backend/.sqlx/query-b3dbdfb50ee8118bdaed3164b210cb549a34b96554ae1872355b90304f5dcb76.json index 54e94cfb8f..99269c9851 100644 --- a/backend/.sqlx/query-b3dbdfb50ee8118bdaed3164b210cb549a34b96554ae1872355b90304f5dcb76.json +++ b/backend/.sqlx/query-b3dbdfb50ee8118bdaed3164b210cb549a34b96554ae1872355b90304f5dcb76.json @@ -18,8 +18,8 @@ "Left": [] }, "nullable": [ - false, - true + true, + false ] }, "hash": "b3dbdfb50ee8118bdaed3164b210cb549a34b96554ae1872355b90304f5dcb76" diff --git a/backend/.sqlx/query-b731208c3e98f8fb15bf0c72e2ab1d4c61566c3cedf31596efe084ef7dc9985a.json b/backend/.sqlx/query-b731208c3e98f8fb15bf0c72e2ab1d4c61566c3cedf31596efe084ef7dc9985a.json new file mode 100644 index 0000000000..04b960b81a --- /dev/null +++ b/backend/.sqlx/query-b731208c3e98f8fb15bf0c72e2ab1d4c61566c3cedf31596efe084ef7dc9985a.json @@ -0,0 +1,34 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT workspace_id, slack_command_script, slack_email FROM workspace_settings WHERE slack_team_id = $1 AND slack_command_script IS NOT NULL", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "workspace_id", + "type_info": "Varchar" + }, + { + "ordinal": 1, + "name": "slack_command_script", + "type_info": "Varchar" + }, + { + "ordinal": 2, + "name": "slack_email", + "type_info": "Varchar" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + false, + true, + false + ] + }, + "hash": "b731208c3e98f8fb15bf0c72e2ab1d4c61566c3cedf31596efe084ef7dc9985a" +} diff --git a/backend/ee-repo-ref.txt b/backend/ee-repo-ref.txt index c9df96c0b7..ecfe63a530 100644 --- a/backend/ee-repo-ref.txt +++ b/backend/ee-repo-ref.txt @@ -1 +1 @@ -8d2c71f7176cac849d7c1ac41e560c438d7e748d \ No newline at end of file +fc6b9068de346a1f3a1009e61b38b3cf6492cef2 diff --git a/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte b/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte index fd4780ebb0..37779738b3 100644 --- a/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte @@ -662,7 +662,7 @@ }} onSelect={editSlackCommand} connectHref="{base}/api/oauth/connect_slack" - createScriptHref="{base}/scripts/add?hub=hub%2F314%2Fslack%2Fexample_of_responding_to_a_slack_command_slack" + createScriptHref="{base}/scripts/add?hub=hub%2F28071%2Fslack%2Fexample_of_responding_to_a_slack_command_slack" createFlowHref="{base}/flows/add?hub=28" documentationLink="https://www.windmill.dev/docs/integrations/slack" onLoadSettings={loadSettings}