diff --git a/docker/Dockerfile.sensor.optimized b/docker/Dockerfile.sensor.optimized index 0f7f3f3..cf03642 100644 --- a/docker/Dockerfile.sensor.optimized +++ b/docker/Dockerfile.sensor.optimized @@ -123,6 +123,10 @@ CMD ["/usr/local/bin/attune-sensor"] # ============================================================================ FROM debian:${DEBIAN_VERSION}-slim AS sensor-full +# Re-declare global ARG so it's available in RUN commands within this stage +# (global ARGs are only automatically available in FROM instructions) +ARG NODE_VERSION=20 + RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ diff --git a/docker/Dockerfile.worker.optimized b/docker/Dockerfile.worker.optimized index e028e63..f211b0a 100644 --- a/docker/Dockerfile.worker.optimized +++ b/docker/Dockerfile.worker.optimized @@ -181,6 +181,8 @@ CMD ["/usr/local/bin/attune-worker"] # ============================================================================ FROM debian:${DEBIAN_VERSION}-slim AS worker-node +ARG NODE_VERSION=20 + RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ @@ -220,6 +222,8 @@ CMD ["/usr/local/bin/attune-worker"] # ============================================================================ FROM debian:${DEBIAN_VERSION} AS worker-full +ARG NODE_VERSION=20 + RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ diff --git a/web/src/pages/triggers/TriggersPage.tsx b/web/src/pages/triggers/TriggersPage.tsx index 540ce76..85a7e93 100644 --- a/web/src/pages/triggers/TriggersPage.tsx +++ b/web/src/pages/triggers/TriggersPage.tsx @@ -332,6 +332,11 @@ function TriggerDetail({ triggerRef }: { triggerRef: string }) { const requiredFields = paramSchema.required || []; const paramEntries = Object.entries(properties); + const outSchema = trigger.data?.out_schema || {}; + const outProperties = outSchema.properties || {}; + const outRequiredFields = outSchema.required || []; + const outEntries = Object.entries(outProperties); + return (
{/* Header */} @@ -521,6 +526,52 @@ function TriggerDetail({ triggerRef }: { triggerRef: string }) {
)} + + {/* Payload Schema Card */} + {outEntries.length > 0 && ( +
+

Payload Schema

+

+ Schema of the event payload generated when this trigger fires. +

+
+ {outEntries.map(([key, param]: [string, any]) => ( +
+
+
+
+ + {key} + + {outRequiredFields.includes(key) && ( + + Required + + )} + + {param?.type || "any"} + +
+ {param?.description && ( +

+ {param.description} +

+ )} + {param?.default !== undefined && ( +

+ Default:{" "} + + {JSON.stringify(param.default)} + +

+ )} +
+
+
+ ))} +
+
+ )} {/* Sidebar */}