dirigent-examples 0.15.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dirigent_examples/__init__.py +22 -0
- dirigent_examples/py.typed +0 -0
- dirigent_examples/shelves/README.md +299 -0
- dirigent_examples/shelves/composition/README.md +18 -0
- dirigent_examples/shelves/composition/chained-instances.yaml +97 -0
- dirigent_examples/shelves/composition/composition-child.yaml +64 -0
- dirigent_examples/shelves/composition/composition-parent.yaml +89 -0
- dirigent_examples/shelves/connections.yaml +52 -0
- dirigent_examples/shelves/demo/README.md +19 -0
- dirigent_examples/shelves/demo/markdown-showcase.yaml +117 -0
- dirigent_examples/shelves/demo/params-showcase.yaml +92 -0
- dirigent_examples/shelves/demo/requires.yaml +65 -0
- dirigent_examples/shelves/demo/weekly-import-malawi.yaml +54 -0
- dirigent_examples/shelves/demo/weekly-import-nepal.yaml +75 -0
- dirigent_examples/shelves/docker/README.md +29 -0
- dirigent_examples/shelves/docker/docker-build-push.yaml +110 -0
- dirigent_examples/shelves/docker/docker-build-run.yaml +106 -0
- dirigent_examples/shelves/docker/docker-compose-database.yaml +124 -0
- dirigent_examples/shelves/docker/docker-compose-failing-up.yaml +83 -0
- dirigent_examples/shelves/docker/docker-compose-file.yaml +117 -0
- dirigent_examples/shelves/docker/docker-compose-profiles-env.yaml +133 -0
- dirigent_examples/shelves/docker/docker-compose-stack.yaml +70 -0
- dirigent_examples/shelves/docker/docker-hello.yaml +53 -0
- dirigent_examples/shelves/docker/docker-remote-daemon.yaml +92 -0
- dirigent_examples/shelves/docker/docker-run-failing-teardown.yaml +94 -0
- dirigent_examples/shelves/docker/docker-ticker.yaml +49 -0
- dirigent_examples/shelves/execute/README.md +16 -0
- dirigent_examples/shelves/execute/long-log.yaml +89 -0
- dirigent_examples/shelves/failure/README.md +20 -0
- dirigent_examples/shelves/failure/error-handler.yaml +89 -0
- dirigent_examples/shelves/failure/optional-step.yaml +82 -0
- dirigent_examples/shelves/failure/retries.yaml +75 -0
- dirigent_examples/shelves/failure/retry-budget.yaml +82 -0
- dirigent_examples/shelves/failure/step-timeout.yaml +96 -0
- dirigent_examples/shelves/git/README.md +32 -0
- dirigent_examples/shelves/git/git-checkout-build.yaml +125 -0
- dirigent_examples/shelves/git/git-checkout-compose.yaml +138 -0
- dirigent_examples/shelves/git/git-checkout-public.yaml +84 -0
- dirigent_examples/shelves/graph/README.md +22 -0
- dirigent_examples/shelves/graph/deep-chain.yaml +119 -0
- dirigent_examples/shelves/graph/fan-in.yaml +80 -0
- dirigent_examples/shelves/graph/fan-out.yaml +66 -0
- dirigent_examples/shelves/graph/linear.yaml +66 -0
- dirigent_examples/shelves/graph/parallel-branches.yaml +57 -0
- dirigent_examples/shelves/graph/parallel-sleep.yaml +55 -0
- dirigent_examples/shelves/graph/skip-diamond.yaml +105 -0
- dirigent_examples/shelves/graph/wide-fan.yaml +147 -0
- dirigent_examples/shelves/hello-world.yaml +30 -0
- dirigent_examples/shelves/open-data/README.md +67 -0
- dirigent_examples/shelves/open-data/feeds-composition.yaml +120 -0
- dirigent_examples/shelves/open-data/gdacs-disaster-updates.yaml +230 -0
- dirigent_examples/shelves/open-data/github-releases-relay.yaml +225 -0
- dirigent_examples/shelves/open-data/hdx-dataset-watch.yaml +211 -0
- dirigent_examples/shelves/open-data/kobo-submissions-to-csv.yaml +149 -0
- dirigent_examples/shelves/open-data/nominatim-geocode-facilities.yaml +169 -0
- dirigent_examples/shelves/open-data/odk-central-submissions.yaml +146 -0
- dirigent_examples/shelves/open-data/open-meteo-weekly-report.yaml +142 -0
- dirigent_examples/shelves/open-data/overpass-health-facilities.yaml +154 -0
- dirigent_examples/shelves/open-data/usgs-earthquakes-alert.yaml +208 -0
- dirigent_examples/shelves/open-data/who-gho-indicators-to-parquet.yaml +163 -0
- dirigent_examples/shelves/open-data/wikidata-country-reference.yaml +146 -0
- dirigent_examples/shelves/open-data/world-bank-population-trend.yaml +166 -0
- dirigent_examples/shelves/patterns/README.md +144 -0
- dirigent_examples/shelves/patterns/concurrency-queue.yaml +89 -0
- dirigent_examples/shelves/patterns/concurrency-replace.yaml +92 -0
- dirigent_examples/shelves/patterns/concurrency-skip.yaml +97 -0
- dirigent_examples/shelves/patterns/connections-referenced-vs-carried.yaml +140 -0
- dirigent_examples/shelves/patterns/deadline-on-a-sensor.yaml +106 -0
- dirigent_examples/shelves/patterns/fan-out-continue.yaml +88 -0
- dirigent_examples/shelves/patterns/fan-out-fail-fast.yaml +80 -0
- dirigent_examples/shelves/patterns/fan-out-from-params.yaml +84 -0
- dirigent_examples/shelves/patterns/fan-out-item-wise.yaml +111 -0
- dirigent_examples/shelves/patterns/fan-out-literal-list.yaml +81 -0
- dirigent_examples/shelves/patterns/fan-out-nested-objects.yaml +107 -0
- dirigent_examples/shelves/patterns/fan-out-then-join.yaml +86 -0
- dirigent_examples/shelves/patterns/log-levels.yaml +119 -0
- dirigent_examples/shelves/patterns/outputs-inline-vs-storage.yaml +140 -0
- dirigent_examples/shelves/patterns/params-every-type.yaml +259 -0
- dirigent_examples/shelves/patterns/params-validation-refuses.yaml +131 -0
- dirigent_examples/shelves/patterns/pipeline-run-child.yaml +96 -0
- dirigent_examples/shelves/patterns/pipeline-run-fire-and-forget.yaml +99 -0
- dirigent_examples/shelves/patterns/pipeline-run-strict.yaml +103 -0
- dirigent_examples/shelves/patterns/pipeline-run-wait.yaml +107 -0
- dirigent_examples/shelves/patterns/pipeline-run-with-params.yaml +124 -0
- dirigent_examples/shelves/patterns/poll-cadence.yaml +102 -0
- dirigent_examples/shelves/patterns/priority-layered.yaml +120 -0
- dirigent_examples/shelves/patterns/references-cheat-sheet.yaml +186 -0
- dirigent_examples/shelves/patterns/retry-budget-exhausted.yaml +92 -0
- dirigent_examples/shelves/patterns/retry-exponential-backoff.yaml +88 -0
- dirigent_examples/shelves/patterns/retry-only-transient.yaml +108 -0
- dirigent_examples/shelves/patterns/retry-with-jitter.yaml +102 -0
- dirigent_examples/shelves/patterns/rule-all-done.yaml +83 -0
- dirigent_examples/shelves/patterns/rule-all-success.yaml +79 -0
- dirigent_examples/shelves/patterns/rule-always.yaml +92 -0
- dirigent_examples/shelves/patterns/rule-one-failed.yaml +86 -0
- dirigent_examples/shelves/patterns/schedule-at-once.yaml +110 -0
- dirigent_examples/shelves/patterns/schedule-cron-timezone.yaml +121 -0
- dirigent_examples/shelves/patterns/schedule-interval.yaml +109 -0
- dirigent_examples/shelves/patterns/schedule-window-half-open.yaml +105 -0
- dirigent_examples/shelves/patterns/sensor-http-ready.yaml +121 -0
- dirigent_examples/shelves/patterns/sensor-storage-exists.yaml +134 -0
- dirigent_examples/shelves/patterns/step-names-and-keys.yaml +99 -0
- dirigent_examples/shelves/patterns/timeout-fails-the-step.yaml +94 -0
- dirigent_examples/shelves/patterns/timeout-skips-the-step.yaml +102 -0
- dirigent_examples/shelves/patterns/webhook-mapping-nested-payload.yaml +125 -0
- dirigent_examples/shelves/patterns/webhook-signed.yaml +144 -0
- dirigent_examples/shelves/preview/s3-parquet-to-ingestion.yaml +92 -0
- dirigent_examples/shelves/python/README.md +31 -0
- dirigent_examples/shelves/python/apply_and_run.py +52 -0
- dirigent_examples/shelves/python/ci_gate.py +76 -0
- dirigent_examples/shelves/python/connections.py +61 -0
- dirigent_examples/shelves/python/error_handling.py +84 -0
- dirigent_examples/shelves/python/follow_logs.py +39 -0
- dirigent_examples/shelves/python/list_and_filter.py +52 -0
- dirigent_examples/shelves/queues/README.md +59 -0
- dirigent_examples/shelves/queues/kafka-consume-then-transform.yaml +105 -0
- dirigent_examples/shelves/queues/kafka-produce-then-consume.yaml +124 -0
- dirigent_examples/shelves/queues/rabbitmq-consume-ack-on-success.yaml +102 -0
- dirigent_examples/shelves/queues/report-to-kafka.yaml +105 -0
- dirigent_examples/shelves/queues/report-to-rabbitmq.yaml +105 -0
- dirigent_examples/shelves/recipes/README.md +130 -0
- dirigent_examples/shelves/recipes/csv-header-rules.yaml +147 -0
- dirigent_examples/shelves/recipes/csv-to-ndjson.yaml +107 -0
- dirigent_examples/shelves/recipes/etl-csv-clean-validate-parquet.yaml +207 -0
- dirigent_examples/shelves/recipes/filter-by-predicate.yaml +116 -0
- dirigent_examples/shelves/recipes/filter-then-map-then-reduce.yaml +109 -0
- dirigent_examples/shelves/recipes/http-fetch-validate-post.yaml +142 -0
- dirigent_examples/shelves/recipes/http-follow-redirects.yaml +100 -0
- dirigent_examples/shelves/recipes/http-get-with-query.yaml +96 -0
- dirigent_examples/shelves/recipes/http-headers-and-auth-connection.yaml +110 -0
- dirigent_examples/shelves/recipes/http-post-file-from-storage.yaml +117 -0
- dirigent_examples/shelves/recipes/http-post-json-echo.yaml +105 -0
- dirigent_examples/shelves/recipes/http-post-report.yaml +183 -0
- dirigent_examples/shelves/recipes/http-save-body-to-storage.yaml +106 -0
- dirigent_examples/shelves/recipes/http-success-status-list.yaml +80 -0
- dirigent_examples/shelves/recipes/http-timeout-override.yaml +104 -0
- dirigent_examples/shelves/recipes/jq-dedupe-by-key.yaml +78 -0
- dirigent_examples/shelves/recipes/jq-defaults-and-nulls.yaml +91 -0
- dirigent_examples/shelves/recipes/jq-group-by-and-sum.yaml +74 -0
- dirigent_examples/shelves/recipes/jq-join-two-lists.yaml +77 -0
- dirigent_examples/shelves/recipes/jq-long-to-wide.yaml +76 -0
- dirigent_examples/shelves/recipes/jq-nested-to-flat.yaml +89 -0
- dirigent_examples/shelves/recipes/jq-pivot-wide-to-long.yaml +65 -0
- dirigent_examples/shelves/recipes/jq-running-totals.yaml +82 -0
- dirigent_examples/shelves/recipes/jq-string-cleaning.yaml +88 -0
- dirigent_examples/shelves/recipes/jq-top-n.yaml +85 -0
- dirigent_examples/shelves/recipes/jq-validate-in-jq-vs-schema.yaml +124 -0
- dirigent_examples/shelves/recipes/jq-window-dates.yaml +82 -0
- dirigent_examples/shelves/recipes/json-to-csv-flattening.yaml +141 -0
- dirigent_examples/shelves/recipes/large-output-to-storage.yaml +134 -0
- dirigent_examples/shelves/recipes/map-enrich-with-lookup.yaml +96 -0
- dirigent_examples/shelves/recipes/ndjson-to-parquet.yaml +130 -0
- dirigent_examples/shelves/recipes/pagination-by-fan-out.yaml +115 -0
- dirigent_examples/shelves/recipes/parquet-round-trip-types.yaml +163 -0
- dirigent_examples/shelves/recipes/reconcile-two-sources.yaml +159 -0
- dirigent_examples/shelves/recipes/report-built-in.yaml +72 -0
- dirigent_examples/shelves/recipes/report-daily-digest.yaml +186 -0
- dirigent_examples/shelves/recipes/report-to-file.yaml +131 -0
- dirigent_examples/shelves/recipes/report-to-webhook.yaml +136 -0
- dirigent_examples/shelves/recipes/schema-carried.yaml +112 -0
- dirigent_examples/shelves/recipes/schema-formats.yaml +107 -0
- dirigent_examples/shelves/recipes/schema-referenced.yaml +86 -0
- dirigent_examples/shelves/recipes/schema-refuses-then-rule.yaml +127 -0
- dirigent_examples/shelves/recipes/storage-copy-dated-archive.yaml +114 -0
- dirigent_examples/shelves/recipes/storage-exists-gate.yaml +127 -0
- dirigent_examples/shelves/recipes/storage-manifest-of-a-fan-out.yaml +104 -0
- dirigent_examples/shelves/recipes/storage-write-then-read.yaml +119 -0
- dirigent_examples/shelves/recipes/webhook-post-hmac.yaml +132 -0
- dirigent_examples/shelves/recipes/webhook-post-summary.yaml +142 -0
- dirigent_examples/shelves/s3/README.md +34 -0
- dirigent_examples/shelves/s3/report-to-s3.yaml +93 -0
- dirigent_examples/shelves/s3/s3-copy-and-verify.yaml +105 -0
- dirigent_examples/shelves/s3/s3-csv-report.yaml +87 -0
- dirigent_examples/shelves/s3/s3-parquet-report.yaml +77 -0
- dirigent_examples/shelves/s3/s3-round-trip.yaml +125 -0
- dirigent_examples/shelves/schemas/README.md +36 -0
- dirigent_examples/shelves/schemas/echo-reading.json +18 -0
- dirigent_examples/shelves/schemas/ou-record.json +13 -0
- dirigent_examples/shelves/schemas/station-reading.json +13 -0
- dirigent_examples/shelves/sensors/README.md +16 -0
- dirigent_examples/shelves/sensors/sensor-gate.yaml +65 -0
- dirigent_examples/shelves/sensors/time-window.yaml +61 -0
- dirigent_examples/shelves/sql/README.md +52 -0
- dirigent_examples/shelves/sql/duckdb-parquet-to-report.yaml +146 -0
- dirigent_examples/shelves/sql/sql-postgres-readonly.yaml +111 -0
- dirigent_examples/shelves/sql/sql-query-to-storage.yaml +85 -0
- dirigent_examples/shelves/sql/sql-sqlite-roundtrip.yaml +114 -0
- dirigent_examples/shelves/sql/warehouse.sql +42 -0
- dirigent_examples/shelves/transform/README.md +36 -0
- dirigent_examples/shelves/transform/csv-report.yaml +55 -0
- dirigent_examples/shelves/transform/jq-filter-and-map.yaml +70 -0
- dirigent_examples/shelves/transform/jq-group-and-aggregate.yaml +70 -0
- dirigent_examples/shelves/transform/jq-join-two-sources.yaml +98 -0
- dirigent_examples/shelves/transform/jq-reshape.yaml +91 -0
- dirigent_examples/shelves/transform/jq-stream-through-storage.yaml +112 -0
- dirigent_examples/shelves/transform/ndjson-round-trip.yaml +56 -0
- dirigent_examples/shelves/transform/parquet-round-trip.yaml +68 -0
- dirigent_examples/shelves/transform/std-convert-fan-out.yaml +142 -0
- dirigent_examples/shelves/transform/xml-feed-to-ndjson.yaml +116 -0
- dirigent_examples/shelves/transform/yaml-config-to-json.yaml +104 -0
- dirigent_examples/shelves/triggers/README.md +45 -0
- dirigent_examples/shelves/triggers/at-one-time.yaml +78 -0
- dirigent_examples/shelves/triggers/cron-nightly.yaml +79 -0
- dirigent_examples/shelves/triggers/cron-windowed.yaml +86 -0
- dirigent_examples/shelves/triggers/document-nightly.yaml +80 -0
- dirigent_examples/shelves/triggers/interval-rolling.yaml +88 -0
- dirigent_examples/shelves/triggers/managed-and-manual.yaml +109 -0
- dirigent_examples/shelves/triggers/webhook-trigger.yaml +75 -0
- dirigent_examples/shelves/validate/README.md +31 -0
- dirigent_examples/shelves/validate/expects-a-shape.yaml +56 -0
- dirigent_examples/shelves/validate/the-shape-is-wrong.yaml +46 -0
- dirigent_examples-0.15.0.dist-info/METADATA +21 -0
- dirigent_examples-0.15.0.dist-info/RECORD +216 -0
- dirigent_examples-0.15.0.dist-info/WHEEL +4 -0
- dirigent_examples-0.15.0.dist-info/entry_points.txt +3 -0
- dirigent_examples-0.15.0.dist-info/licenses/LICENSE +18 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# What an apply materialises, and what it deliberately leaves alone.
|
|
2
|
+
#
|
|
3
|
+
# The triggers: section is the declaration, and only the declaration. Applying this creates
|
|
4
|
+
# the schedules and the webhook if they are absent and brings them up to date if they are
|
|
5
|
+
# not; it never touches whether a schedule is paused, when it last fired, or what the
|
|
6
|
+
# webhook's token is. Those are facts about one instance, so they stay in it.
|
|
7
|
+
#
|
|
8
|
+
# A schedule the document declares is managed: the instance owns it on the document's
|
|
9
|
+
# behalf, and an apply that stops mentioning it removes it. A schedule somebody created by
|
|
10
|
+
# hand with dg schedule create is not managed, and an apply never touches it -- deleting
|
|
11
|
+
# someone's schedule as a side effect of an unrelated edit is the kind of surprise that
|
|
12
|
+
# makes people stop applying documents at all. Both kinds show up in dg schedule list, which
|
|
13
|
+
# says which is which.
|
|
14
|
+
#
|
|
15
|
+
# The token is minted server-side and shown once. It is not in this file, it will not be in
|
|
16
|
+
# an export, and there is nowhere in dirigent/v1 to write one.
|
|
17
|
+
#
|
|
18
|
+
# Try it against a running instance:
|
|
19
|
+
#
|
|
20
|
+
# dg apply examples/triggers/managed-and-manual.yaml
|
|
21
|
+
# dg schedule list managed-and-manual
|
|
22
|
+
# dg schedule create managed-and-manual by-hand --cron '0 7 * * 1' -p day=2026-01-01
|
|
23
|
+
# dg schedule list managed-and-manual # the hand-made one is not managed
|
|
24
|
+
# dg apply examples/triggers/managed-and-manual.yaml # a no-op, and by-hand survives it
|
|
25
|
+
# dg webhook create managed-and-manual manual --map day='$.date' # prints URL and token
|
|
26
|
+
# curl -X POST "$DG_URL/hooks/$TOKEN" -d '{"date": "2026-01-01"}'
|
|
27
|
+
# dg webhook deliveries managed-and-manual from-upstream
|
|
28
|
+
#
|
|
29
|
+
# The steps run jq and nothing else, so there is no allowlist entry to make first. Locally,
|
|
30
|
+
# with no server at all:
|
|
31
|
+
#
|
|
32
|
+
# dg run --local examples/triggers/managed-and-manual.yaml -p day=2026-01-01
|
|
33
|
+
|
|
34
|
+
format: dirigent/v1
|
|
35
|
+
kind: pipeline
|
|
36
|
+
code: managed-and-manual
|
|
37
|
+
name: Managed beside manual
|
|
38
|
+
description: Two document-managed schedules and a webhook, and what an apply leaves untouched.
|
|
39
|
+
|
|
40
|
+
tags: [triggers, transform, webhook, schedule, starter]
|
|
41
|
+
|
|
42
|
+
concurrency: skip
|
|
43
|
+
|
|
44
|
+
requires:
|
|
45
|
+
blocks:
|
|
46
|
+
- transform.jq
|
|
47
|
+
|
|
48
|
+
params:
|
|
49
|
+
type: object
|
|
50
|
+
properties:
|
|
51
|
+
day:
|
|
52
|
+
type: string
|
|
53
|
+
format: date
|
|
54
|
+
description: The day being loaded, which the schedule pins and the webhook maps.
|
|
55
|
+
default: "2026-01-01"
|
|
56
|
+
environment:
|
|
57
|
+
type: string
|
|
58
|
+
enum: [staging, production]
|
|
59
|
+
default: staging
|
|
60
|
+
|
|
61
|
+
steps:
|
|
62
|
+
load:
|
|
63
|
+
block: transform.jq
|
|
64
|
+
config:
|
|
65
|
+
input:
|
|
66
|
+
day: "${params.day}"
|
|
67
|
+
environment: "${params.environment}"
|
|
68
|
+
program: |
|
|
69
|
+
{loaded: .day, environment: .environment}
|
|
70
|
+
|
|
71
|
+
verify:
|
|
72
|
+
block: transform.jq
|
|
73
|
+
depends_on: [load]
|
|
74
|
+
config:
|
|
75
|
+
input: "${steps.load.output.value}"
|
|
76
|
+
program: |
|
|
77
|
+
{verified: .loaded, environment: .environment}
|
|
78
|
+
retry:
|
|
79
|
+
max_attempts: 3
|
|
80
|
+
backoff: 10s
|
|
81
|
+
|
|
82
|
+
triggers:
|
|
83
|
+
schedules:
|
|
84
|
+
# Five in the morning, Oslo time, all year: the zone is on the schedule rather than on
|
|
85
|
+
# the process, so this stays five in the morning across a daylight-saving boundary.
|
|
86
|
+
- code: nightly
|
|
87
|
+
cron: "0 5 * * *"
|
|
88
|
+
timezone: Europe/Oslo
|
|
89
|
+
params:
|
|
90
|
+
day: "2026-01-01"
|
|
91
|
+
environment: production
|
|
92
|
+
|
|
93
|
+
# The same pipeline hitting staging on a rolling interval is a second schedule, not a
|
|
94
|
+
# second pipeline.
|
|
95
|
+
- code: staging-hourly
|
|
96
|
+
interval: 1h
|
|
97
|
+
timezone: UTC
|
|
98
|
+
params:
|
|
99
|
+
day: "2026-01-01"
|
|
100
|
+
environment: staging
|
|
101
|
+
|
|
102
|
+
webhooks:
|
|
103
|
+
# A strict payload-to-parameter mapping. Anything the payload carries that is not named
|
|
104
|
+
# here is ignored, and what is named is validated against params above like any other
|
|
105
|
+
# run's parameters -- so a caller cannot smuggle configuration in.
|
|
106
|
+
- code: from-upstream
|
|
107
|
+
params_from_payload:
|
|
108
|
+
day: "$.published.date"
|
|
109
|
+
environment: "$.target.environment"
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# An inbound webhook travels with the document; operational state does not.
|
|
2
|
+
#
|
|
3
|
+
# A webhook declares a strict payload-to-parameter mapping. The instance mints the token
|
|
4
|
+
# and holds it; the mapped parameters are validated against params like any other run's, so
|
|
5
|
+
# a webhook cannot smuggle configuration in.
|
|
6
|
+
#
|
|
7
|
+
# What stays behind: what the token is, whether the endpoint is active, and the delivery
|
|
8
|
+
# history. None of that belongs in git, so none of it is in this file.
|
|
9
|
+
#
|
|
10
|
+
# The other trigger kind is a clock, and it has a folder of its own: examples/triggers/
|
|
11
|
+
# teaches cron, interval and one-time firings, and examples/triggers/managed-and-manual.yaml
|
|
12
|
+
# carries both kinds on one pipeline.
|
|
13
|
+
#
|
|
14
|
+
# The webhook accepts deliveries only on an instance the document has been applied to. The
|
|
15
|
+
# pipeline itself runs anywhere, with nothing on the allowlist and no network:
|
|
16
|
+
#
|
|
17
|
+
# dg run --local examples/triggers/webhook-trigger.yaml -p day=2026-01-01
|
|
18
|
+
#
|
|
19
|
+
# Against an instance, where the endpoint exists:
|
|
20
|
+
#
|
|
21
|
+
# dg apply examples/triggers/webhook-trigger.yaml
|
|
22
|
+
# dg webhook list webhook-trigger
|
|
23
|
+
# dg webhook rotate-token webhook-trigger upstream-publish # shows a token exactly once
|
|
24
|
+
# curl -X POST "$DG_URL/hooks/$TOKEN" \
|
|
25
|
+
# -d '{"published": {"date": "2026-01-01"}, "target": {"environment": "staging"}}'
|
|
26
|
+
# dg webhook deliveries webhook-trigger upstream-publish
|
|
27
|
+
|
|
28
|
+
format: dirigent/v1
|
|
29
|
+
kind: pipeline
|
|
30
|
+
code: webhook-trigger
|
|
31
|
+
name: Started by a webhook
|
|
32
|
+
description: One pipeline started by an inbound webhook that maps a payload onto its parameters.
|
|
33
|
+
|
|
34
|
+
tags: [triggers, transform, webhook]
|
|
35
|
+
|
|
36
|
+
requires:
|
|
37
|
+
blocks:
|
|
38
|
+
- transform.jq
|
|
39
|
+
|
|
40
|
+
params:
|
|
41
|
+
type: object
|
|
42
|
+
properties:
|
|
43
|
+
day:
|
|
44
|
+
type: string
|
|
45
|
+
format: date
|
|
46
|
+
default: "2026-01-01"
|
|
47
|
+
environment:
|
|
48
|
+
type: string
|
|
49
|
+
enum: [staging, production]
|
|
50
|
+
default: staging
|
|
51
|
+
|
|
52
|
+
steps:
|
|
53
|
+
ingest:
|
|
54
|
+
block: transform.jq
|
|
55
|
+
config:
|
|
56
|
+
input:
|
|
57
|
+
day: "${params.day}"
|
|
58
|
+
environment: "${params.environment}"
|
|
59
|
+
program: |
|
|
60
|
+
{ingested: .day, environment: .environment}
|
|
61
|
+
|
|
62
|
+
triggers:
|
|
63
|
+
webhooks:
|
|
64
|
+
# The mapping is the whole declaration: each parameter names a JSONPath into the
|
|
65
|
+
# payload. Anything the payload carries that is not named here is ignored, and what is
|
|
66
|
+
# named is validated against params above -- so a caller cannot reach a parameter the
|
|
67
|
+
# mapping does not mention, whatever it POSTs.
|
|
68
|
+
#
|
|
69
|
+
# Applying this refuses a mapping that could never fire: a path that does not parse
|
|
70
|
+
# (`$.published..date`), a name params does not declare, or a required parameter with no
|
|
71
|
+
# default that nothing maps. Both parameters here have defaults, so neither is required.
|
|
72
|
+
- code: upstream-publish
|
|
73
|
+
params_from_payload:
|
|
74
|
+
day: "$.published.date"
|
|
75
|
+
environment: "$.target.environment"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Validation examples
|
|
2
|
+
|
|
3
|
+
A gate that fails at the boundary. `validate.schema` checks a value against a JSON Schema
|
|
4
|
+
and passes it through when it fits, so a step reads the gate's output rather than the raw
|
|
5
|
+
value and the graph records that everything past the gate received the right shape. A value
|
|
6
|
+
that does not fit is refused where it enters -- with the path into the payload that is
|
|
7
|
+
wrong -- rather than surfacing as a confusing error in a step further down. A mismatch is
|
|
8
|
+
`rejected`: the same value against the same schema fails the same way, so it is never
|
|
9
|
+
retried.
|
|
10
|
+
|
|
11
|
+
A gate never writes a schema inline: it names one by `code`. That code resolves one of two
|
|
12
|
+
ways, and each document below is labelled by which it uses:
|
|
13
|
+
|
|
14
|
+
- **Carried in the document.** The shape sits in the document's own top-level `schemas:`
|
|
15
|
+
section, keyed by its code, exactly the way a document can carry its own `connections:`. A
|
|
16
|
+
server refuses a document that carries a schema -- storing it would put the shape in every
|
|
17
|
+
version of the pipeline -- so a carried schema is for a standalone or `--local` run.
|
|
18
|
+
- **A named instance schema.** The code names a schema the instance holds, applied on its own
|
|
19
|
+
from [`../schemas/`](../schemas) with `dg schema create`. The document declares it under
|
|
20
|
+
`requires.schemas`, so an instance that does not hold it refuses the document. A `--local`
|
|
21
|
+
run holds no instance schema until one is handed to it with `--schema FILE`; each such
|
|
22
|
+
document's top-of-file comment shows the invocation.
|
|
23
|
+
|
|
24
|
+
The two documents are one pair, showing the same shape supplied both ways: `expects-a-shape`
|
|
25
|
+
carries `ou-record` in the document, and `the-shape-is-wrong` names the instance `ou-record`
|
|
26
|
+
that [`../schemas/ou-record.json`](../schemas/ou-record.json) holds.
|
|
27
|
+
|
|
28
|
+
| File | Technique | What it demonstrates |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| [expects-a-shape.yaml](expects-a-shape.yaml) | schema carried in the document | A payload that fits: the gate passes it through, and the next step reads `${steps.check.output.value}`. |
|
|
31
|
+
| [the-shape-is-wrong.yaml](the-shape-is-wrong.yaml) | references the `ou-record` instance schema | A payload missing a required field: the run fails at the gate, naming the path, and the reader never runs. |
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Check a payload's shape before anything downstream trusts it -- schema carried in the document.
|
|
2
|
+
#
|
|
3
|
+
# validate.schema states the shape a value must have and passes it through when it fits, so the
|
|
4
|
+
# step after the gate reads the gate's output, not the raw value, and the graph records that
|
|
5
|
+
# everything past this point received the right shape. The schema lives in the document's own
|
|
6
|
+
# top-level schemas: section and the gate names it by code. A server refuses a document that
|
|
7
|
+
# carries a schema, the way it refuses one that carries a connection, so this form is for a
|
|
8
|
+
# standalone or --local run; the paired the-shape-is-wrong.yaml holds the same shape on the
|
|
9
|
+
# instance instead.
|
|
10
|
+
#
|
|
11
|
+
# dg run --local examples/validate/expects-a-shape.yaml
|
|
12
|
+
|
|
13
|
+
format: dirigent/v1
|
|
14
|
+
kind: pipeline
|
|
15
|
+
code: expects-a-shape
|
|
16
|
+
name: Expects a shape
|
|
17
|
+
description: Validate a payload against a schema the document carries, then read the value the gate passed through.
|
|
18
|
+
|
|
19
|
+
tags: [validate, transform]
|
|
20
|
+
|
|
21
|
+
requires:
|
|
22
|
+
blocks:
|
|
23
|
+
- value.const
|
|
24
|
+
- validate.schema
|
|
25
|
+
- transform.jq
|
|
26
|
+
|
|
27
|
+
schemas:
|
|
28
|
+
ou-record:
|
|
29
|
+
type: object
|
|
30
|
+
required: [id, name, level]
|
|
31
|
+
additionalProperties: false
|
|
32
|
+
properties:
|
|
33
|
+
id: { type: string }
|
|
34
|
+
name: { type: string }
|
|
35
|
+
level: { type: integer }
|
|
36
|
+
|
|
37
|
+
steps:
|
|
38
|
+
payload:
|
|
39
|
+
block: value.const
|
|
40
|
+
config:
|
|
41
|
+
value:
|
|
42
|
+
id: OU_12345
|
|
43
|
+
name: Western Area
|
|
44
|
+
level: 2
|
|
45
|
+
check:
|
|
46
|
+
block: validate.schema
|
|
47
|
+
depends_on: [payload]
|
|
48
|
+
config:
|
|
49
|
+
input: ${steps.payload.output.value}
|
|
50
|
+
schema: ou-record
|
|
51
|
+
use_it:
|
|
52
|
+
block: transform.jq
|
|
53
|
+
depends_on: [check]
|
|
54
|
+
config:
|
|
55
|
+
input: ${steps.check.output.value}
|
|
56
|
+
program: "{unit: .id, tier: .level}"
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# A payload that does not fit, so the run fails at the gate, on purpose.
|
|
2
|
+
#
|
|
3
|
+
# This is the teaching failure: the payload is missing a required field, so validate.schema
|
|
4
|
+
# rejects it and names the path -- `at $: 'level' is a required property` -- and the run ends
|
|
5
|
+
# failed at the gate rather than three steps later where a reader tripped over the gap. It
|
|
6
|
+
# references the ou-record schema the instance holds -- the same shape expects-a-shape.yaml
|
|
7
|
+
# carries -- so requires.schemas names it and an instance without it refuses the document.
|
|
8
|
+
#
|
|
9
|
+
# dg run --local --schema examples/schemas/ou-record.json \
|
|
10
|
+
# examples/validate/the-shape-is-wrong.yaml
|
|
11
|
+
|
|
12
|
+
format: dirigent/v1
|
|
13
|
+
kind: pipeline
|
|
14
|
+
code: the-shape-is-wrong
|
|
15
|
+
name: The shape is wrong
|
|
16
|
+
description: A payload missing a required field, refused at the gate with the path that is wrong.
|
|
17
|
+
|
|
18
|
+
tags: [validate, transform, failure]
|
|
19
|
+
|
|
20
|
+
requires:
|
|
21
|
+
blocks:
|
|
22
|
+
- value.const
|
|
23
|
+
- validate.schema
|
|
24
|
+
- transform.jq
|
|
25
|
+
schemas:
|
|
26
|
+
- ou-record
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
payload:
|
|
30
|
+
block: value.const
|
|
31
|
+
config:
|
|
32
|
+
value:
|
|
33
|
+
id: OU_12345
|
|
34
|
+
name: Western Area
|
|
35
|
+
check:
|
|
36
|
+
block: validate.schema
|
|
37
|
+
depends_on: [payload]
|
|
38
|
+
config:
|
|
39
|
+
input: ${steps.payload.output.value}
|
|
40
|
+
schema: ou-record
|
|
41
|
+
use_it:
|
|
42
|
+
block: transform.jq
|
|
43
|
+
depends_on: [check]
|
|
44
|
+
config:
|
|
45
|
+
input: ${steps.check.output.value}
|
|
46
|
+
program: "{unit: .id, tier: .level}"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dirigent-examples
|
|
3
|
+
Version: 0.15.0
|
|
4
|
+
Summary: The dirigent example corpus: the shelves of runnable documents, installed.
|
|
5
|
+
License-Expression: LicenseRef-Proprietary
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Requires-Dist: dirigent-client
|
|
8
|
+
Requires-Dist: dirigent-plugin
|
|
9
|
+
Requires-Python: >=3.13
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
|
|
12
|
+
# dirigent-examples
|
|
13
|
+
|
|
14
|
+
The dirigent example corpus as an installed distribution: 22 topic shelves of runnable
|
|
15
|
+
`dirigent/v1` documents, contributed to a host through the `examples()` extension point and
|
|
16
|
+
read by `dg examples`, `dg pipeline new`, and the instance's Examples screen.
|
|
17
|
+
|
|
18
|
+
The shelves are the repository's `examples/` directory; the root path is a symlink to the
|
|
19
|
+
real files here, so every `dg run --local examples/...` line keeps working in a checkout.
|
|
20
|
+
[`shelves/README.md`](src/dirigent_examples/shelves/README.md) is the corpus's own guide: the
|
|
21
|
+
shelves, the tag vocabulary, and what each document needs to run.
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
dirigent_examples/__init__.py,sha256=20swvHROng6W9FWCsyOnewvnp-pOzXS4HyRnC4fmc_Y,731
|
|
2
|
+
dirigent_examples/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
dirigent_examples/shelves/README.md,sha256=lpaudQK51JaS2TxIee9eHBMhxalaVSkPY2uUM328a4I,18452
|
|
4
|
+
dirigent_examples/shelves/composition/README.md,sha256=pQXl83V6P-lZ_FCuCS1QtqTHyHpzhPPIlMCeHom4y8w,1008
|
|
5
|
+
dirigent_examples/shelves/composition/chained-instances.yaml,sha256=OyFa-2b7s_Gih958M2nEQm0xMJ4fSAa8SEB44xpg0l4,3419
|
|
6
|
+
dirigent_examples/shelves/composition/composition-child.yaml,sha256=e7k9SSiY510jhvlrR1Omx-2XuOkIQAtaJppnWUl0ciw,2129
|
|
7
|
+
dirigent_examples/shelves/composition/composition-parent.yaml,sha256=Yt7rAYYhZGGZFvReVm4G6afTjjko4vR9ukTqA11tX8A,3281
|
|
8
|
+
dirigent_examples/shelves/connections.yaml,sha256=JNIUjRuDHrzO8sEczHkBznkjCDuRLtjaIN3I7QhqDZ8,2393
|
|
9
|
+
dirigent_examples/shelves/demo/README.md,sha256=pEL5D1FERjAVu7gtVCFf8-D2Xqx6UX8koXZX23cHezA,1103
|
|
10
|
+
dirigent_examples/shelves/demo/markdown-showcase.yaml,sha256=2SgE3p3jNf_exbeRNO-fWSaNJ13KhT1-aEMkXXfRU1s,4207
|
|
11
|
+
dirigent_examples/shelves/demo/params-showcase.yaml,sha256=P_J7MzKEKpeKP7MP7OCz4re89hlKIMUovJC3QIhYq3k,3341
|
|
12
|
+
dirigent_examples/shelves/demo/requires.yaml,sha256=NlqqYzxTizGwaAIHEGyOUJDyaKqCNJgFuzfL7BeDZ5E,1988
|
|
13
|
+
dirigent_examples/shelves/demo/weekly-import-malawi.yaml,sha256=tNYGDSWf4kfhdOjKVF8p04V0PAh_9fmMF3ayAmcKYHo,1729
|
|
14
|
+
dirigent_examples/shelves/demo/weekly-import-nepal.yaml,sha256=7u3vqGqBNobhg1paOEQVxltXY5GZkmJw-8JArYGLJgk,2860
|
|
15
|
+
dirigent_examples/shelves/docker/README.md,sha256=6gPb8QkmjLCkRQc8Ir9xME1NL38pfuGWdfqIv0ow6YU,2664
|
|
16
|
+
dirigent_examples/shelves/docker/docker-build-push.yaml,sha256=CzRB5WN18DMuCtGO957YWj48FclX3UbxmfpfSOSS-Es,4699
|
|
17
|
+
dirigent_examples/shelves/docker/docker-build-run.yaml,sha256=K_l4U5HIHYxExhRFfWX3QxO8wiscNlYiTiquKnjt9C0,4452
|
|
18
|
+
dirigent_examples/shelves/docker/docker-compose-database.yaml,sha256=HXM3Rhb-SvabsLd8mTWsvfcc7HF3vZSWLirwh5vyAX8,5116
|
|
19
|
+
dirigent_examples/shelves/docker/docker-compose-failing-up.yaml,sha256=BbBS98Yt56OQ-bH9muVOXvVLtDwYNp9aiSTn_gLEk7U,3742
|
|
20
|
+
dirigent_examples/shelves/docker/docker-compose-file.yaml,sha256=8F4QDSNDBS-yWcxtD4kq6gXdBv2fJ284od7yh_n7OEI,4990
|
|
21
|
+
dirigent_examples/shelves/docker/docker-compose-profiles-env.yaml,sha256=6KX6L8Z2IwCtvrdoxuT96sw_DnHbWXS23ozkYNofQD4,5841
|
|
22
|
+
dirigent_examples/shelves/docker/docker-compose-stack.yaml,sha256=c9XiAl0uuXQawVbWtCU76KxplZYXX1oLoPWugq3Zkaw,2475
|
|
23
|
+
dirigent_examples/shelves/docker/docker-hello.yaml,sha256=hiP1AyvKrQvFrYkInb6GUuiGgrO9IzM1edMybadHD2Q,1880
|
|
24
|
+
dirigent_examples/shelves/docker/docker-remote-daemon.yaml,sha256=6DVCGBB7tFWsARoKmgxGYk79hGH6VLlkRrX2HhVTQwM,3563
|
|
25
|
+
dirigent_examples/shelves/docker/docker-run-failing-teardown.yaml,sha256=MMOi157ateFvm3pNMQMSdztcj9f6tTyspP8qdgLF3ZY,3709
|
|
26
|
+
dirigent_examples/shelves/docker/docker-ticker.yaml,sha256=nYu_2cB2r4Xy7xN3LkHDZqLrdXnGK-m4d-7hL_ViOFc,1560
|
|
27
|
+
dirigent_examples/shelves/execute/README.md,sha256=FXhbfSi4TKYl5kJSuT2-VwbbT5VDPGcuBgwUcO8_qLM,568
|
|
28
|
+
dirigent_examples/shelves/execute/long-log.yaml,sha256=v3acxJvj9PlFSpqvWnOJU0pwWdNM1YZqikdIKskzoRg,3722
|
|
29
|
+
dirigent_examples/shelves/failure/README.md,sha256=2X4DpLL-smJIdbn-rbNHLvQslJYNX_owUmkulgvKBJY,1167
|
|
30
|
+
dirigent_examples/shelves/failure/error-handler.yaml,sha256=_kefoU5SKvCtVamRl58SETJrSmyzOO84UVtlb2ni9OA,3499
|
|
31
|
+
dirigent_examples/shelves/failure/optional-step.yaml,sha256=EaRKjZl-kQ78-FVPgLi6TDl8Rx_x22JqlZOM_HuqZmE,3434
|
|
32
|
+
dirigent_examples/shelves/failure/retries.yaml,sha256=aEXJhNfmJnrgqT7SyCDT8Bh6tpFkTTcgRn8SmZt87oQ,2909
|
|
33
|
+
dirigent_examples/shelves/failure/retry-budget.yaml,sha256=tlGbADCzPGwFiK31x2oNWE95S-Fh484T1mF10nR3fJ4,3917
|
|
34
|
+
dirigent_examples/shelves/failure/step-timeout.yaml,sha256=ne9bI2khL0Y38M-TbHaZXwwZmwUANdJd_NgNyXxKtEQ,4235
|
|
35
|
+
dirigent_examples/shelves/git/README.md,sha256=yhlGrmj3NL8JpEAcexIZzZ7Iki7Ma2TgeuhWMoG1XEA,1741
|
|
36
|
+
dirigent_examples/shelves/git/git-checkout-build.yaml,sha256=vEQBtl-cIWhALVl2CpHv-udbkn1WkBfEFtK1P6lfMFw,5512
|
|
37
|
+
dirigent_examples/shelves/git/git-checkout-compose.yaml,sha256=CBNQeXKXYRE5aiaBx8EupuuwP-T-WV0eEIlq7oU52V8,6128
|
|
38
|
+
dirigent_examples/shelves/git/git-checkout-public.yaml,sha256=u26e3mVYsrBYRDjJFXlUNTeeSIbI3rBvzusvEnANVSc,3956
|
|
39
|
+
dirigent_examples/shelves/graph/README.md,sha256=w5zCQExz2C9T6c-znZ2fcgWhRNc0twSqpGfMk_YERXs,1367
|
|
40
|
+
dirigent_examples/shelves/graph/deep-chain.yaml,sha256=Fg6TuvEmSqMDGSLSXZgpYFzYLERxWyL81LQe-O0Gdb0,3749
|
|
41
|
+
dirigent_examples/shelves/graph/fan-in.yaml,sha256=uf8upyZ62LGheXKZYyfcoR-t657vJkxJHrl5CcfMLsM,3253
|
|
42
|
+
dirigent_examples/shelves/graph/fan-out.yaml,sha256=CgRWKVfzLVWjVqDzLHN8ybljlFzHYpN48Jl1pf16WXQ,2503
|
|
43
|
+
dirigent_examples/shelves/graph/linear.yaml,sha256=OzfliyPuXh_uqOxJfwYojeHIxM4u37R-3IW2phQTtEU,2171
|
|
44
|
+
dirigent_examples/shelves/graph/parallel-branches.yaml,sha256=IFwjWxR_x7af0bEVFgUpiNTIBiBUqu6Wx8r_Y0qAFy0,1789
|
|
45
|
+
dirigent_examples/shelves/graph/parallel-sleep.yaml,sha256=1920kbdfyRjyPGRSPT--6IHuAUSvAOzg9W_W60ZHVng,2055
|
|
46
|
+
dirigent_examples/shelves/graph/skip-diamond.yaml,sha256=hOHN1BhGhz5XgQbJF2e7xeoJZaBfziJhY_SvpVIoeBo,4598
|
|
47
|
+
dirigent_examples/shelves/graph/wide-fan.yaml,sha256=kGjVwu3DdLwd_g__wfSBjGQMji4as13244n55ul3_P0,4935
|
|
48
|
+
dirigent_examples/shelves/hello-world.yaml,sha256=lh19mhyPPv2m2zhuVN2FexuZKILik9TBGwni_R_yIls,938
|
|
49
|
+
dirigent_examples/shelves/open-data/README.md,sha256=lD2jVB7tKSHC1FgQtxl5CK4bdqe00uwI23Pel-goDz0,5729
|
|
50
|
+
dirigent_examples/shelves/open-data/feeds-composition.yaml,sha256=dxWwy83QjvDcpohfl3a1YfpE-gZr1SLVB2eal3cJkl4,5235
|
|
51
|
+
dirigent_examples/shelves/open-data/gdacs-disaster-updates.yaml,sha256=eDP7okkqw3j_wwmTTEZ3NW6DTuXDiebAncihyL1IbS8,9644
|
|
52
|
+
dirigent_examples/shelves/open-data/github-releases-relay.yaml,sha256=a8a5X2NlrtzCmfnQm904usHrXAuVeHdp0zGjVhjjA2c,8505
|
|
53
|
+
dirigent_examples/shelves/open-data/hdx-dataset-watch.yaml,sha256=hhdHYRm8ZH4nHeGJi3Uk84plT2bxIvjp5zhdcOpLoX8,8362
|
|
54
|
+
dirigent_examples/shelves/open-data/kobo-submissions-to-csv.yaml,sha256=s9x-go3KE3WJD2Te3UW4UvPch_i7x96KZMgZDKNNb8k,6057
|
|
55
|
+
dirigent_examples/shelves/open-data/nominatim-geocode-facilities.yaml,sha256=KQQEaXS_xhI1pGHGzgH0AOWIj_GsVGudpso3cOWOYPg,6733
|
|
56
|
+
dirigent_examples/shelves/open-data/odk-central-submissions.yaml,sha256=6pQbNgfDCO2N7AtxtluZYdLC_WhWW4xYjfIs1QvdrxA,5761
|
|
57
|
+
dirigent_examples/shelves/open-data/open-meteo-weekly-report.yaml,sha256=T_m6jSJKrpBHfRSJ41Thz0zEAAsXyM8Rn8gZiGnM1i0,5637
|
|
58
|
+
dirigent_examples/shelves/open-data/overpass-health-facilities.yaml,sha256=pge7ZRr5FHpvYiK3KF_gP7NZnjbBIKIZJtlWUr90XiA,6105
|
|
59
|
+
dirigent_examples/shelves/open-data/usgs-earthquakes-alert.yaml,sha256=hUClDOzJV51gORbI9C2oiEoMuTgi9gpOzA952sn24LY,8423
|
|
60
|
+
dirigent_examples/shelves/open-data/who-gho-indicators-to-parquet.yaml,sha256=m-_VqIMFlgWfCogJDl7qig7ViebWRKJuHIu32RjDO2I,6652
|
|
61
|
+
dirigent_examples/shelves/open-data/wikidata-country-reference.yaml,sha256=gQ1cHEQorcmd_pz7xunvuhRZRDLd5N5tEFfo5GeKUyI,6198
|
|
62
|
+
dirigent_examples/shelves/open-data/world-bank-population-trend.yaml,sha256=wKvwfCAVLHq4GPH68pHSa2k3nwda67QrtgwFIuc-b0o,6709
|
|
63
|
+
dirigent_examples/shelves/patterns/README.md,sha256=-BVnG-0QmDlo4KWRcHQ1bFI7c3CKWZVe6ac03Qohy2Q,8899
|
|
64
|
+
dirigent_examples/shelves/patterns/concurrency-queue.yaml,sha256=foGG7XNcvOVIU8a5rXccNJHEaKku7Bv4jzjzdQdEgPE,3448
|
|
65
|
+
dirigent_examples/shelves/patterns/concurrency-replace.yaml,sha256=sK1B77EVhNhEasBBWT-chLabMCa8bRqc0bvYtYweyhs,3669
|
|
66
|
+
dirigent_examples/shelves/patterns/concurrency-skip.yaml,sha256=yPUZfCtBHjEVi_wiEA_eE-8ArYX8Oq7GWgCeIAIVMq8,4013
|
|
67
|
+
dirigent_examples/shelves/patterns/connections-referenced-vs-carried.yaml,sha256=XX-0bvwT5N3JFfIHvHCl4O4QxgxrLJvsGmgPTui-wkA,5790
|
|
68
|
+
dirigent_examples/shelves/patterns/deadline-on-a-sensor.yaml,sha256=UavLUL8qQ_rNiqu0jh907bc7fqroi8mxAMSvrSmMVhQ,4569
|
|
69
|
+
dirigent_examples/shelves/patterns/fan-out-continue.yaml,sha256=DRX5IYEw5rYAVi1tmKDrG9UMsg0eiVnDmUUnwyZauZE,3543
|
|
70
|
+
dirigent_examples/shelves/patterns/fan-out-fail-fast.yaml,sha256=wMV2mOOQnFUZ6vEBisTRnuwdQ7qwPiWin2pgTbmub4A,3098
|
|
71
|
+
dirigent_examples/shelves/patterns/fan-out-from-params.yaml,sha256=Wt5qIrNSBaU8tJKmEhs-vj1e4MSmJR9Z0fUBfF7KcJo,3292
|
|
72
|
+
dirigent_examples/shelves/patterns/fan-out-item-wise.yaml,sha256=USpuQYuZSD0hXFq3YJoC8F__QJIPs4QGv-7fhyQcxkI,4636
|
|
73
|
+
dirigent_examples/shelves/patterns/fan-out-literal-list.yaml,sha256=Ila7wIu_maMtY-Yt6lvTep7KRpajk0cHDGqGsvv1Olc,3365
|
|
74
|
+
dirigent_examples/shelves/patterns/fan-out-nested-objects.yaml,sha256=Tf9vDu45aC714gk4rVVD8PR3NPclM4dyvO10GD0j8qw,4540
|
|
75
|
+
dirigent_examples/shelves/patterns/fan-out-then-join.yaml,sha256=KF_VyM9ZGUuAmBlw-RCEhTbgQFM2NpSrqeiCCBuns9E,3391
|
|
76
|
+
dirigent_examples/shelves/patterns/log-levels.yaml,sha256=A5UeZiDT6YfCQtDizZuqjcfCYIVid-tAoxDCn3vTKFo,4526
|
|
77
|
+
dirigent_examples/shelves/patterns/outputs-inline-vs-storage.yaml,sha256=77eHtnU-GJYIvNNCwPOnOdIsY3nXUqtuhllGeUKJFRM,5508
|
|
78
|
+
dirigent_examples/shelves/patterns/params-every-type.yaml,sha256=Uh7EhSamj6OGIjK6CO75wz8knzBVdnqGW9bx1NgKOSI,10081
|
|
79
|
+
dirigent_examples/shelves/patterns/params-validation-refuses.yaml,sha256=X41GPL0q_IWIa4XvKkfpaf5EJcySzAP2EmLnBWxzj-E,5833
|
|
80
|
+
dirigent_examples/shelves/patterns/pipeline-run-child.yaml,sha256=JYYcwpfcaWBOprOr6IXek-mvOaUu5SWNFGJ6LS_yu30,3849
|
|
81
|
+
dirigent_examples/shelves/patterns/pipeline-run-fire-and-forget.yaml,sha256=n0ZIitM0m9tNk6Lepawr3ww50BSCFFGJKIBTHzGAzy0,3797
|
|
82
|
+
dirigent_examples/shelves/patterns/pipeline-run-strict.yaml,sha256=ZaFWGK_UltyToUAbp2As6VizrjROsBwH681S9abg66g,4028
|
|
83
|
+
dirigent_examples/shelves/patterns/pipeline-run-wait.yaml,sha256=Mw33ur43_dyRWrUfTFwM2lc8EyFZvDPugXXvWW1jzz4,4391
|
|
84
|
+
dirigent_examples/shelves/patterns/pipeline-run-with-params.yaml,sha256=UrzY32feIMYhaXUycHmt9QPcD9Dq7wYZwaZB8NZUALE,4895
|
|
85
|
+
dirigent_examples/shelves/patterns/poll-cadence.yaml,sha256=ZHhrCqzH342AkfHvfU8H6U0TBriYnbBn4sAIA6xk1sI,4220
|
|
86
|
+
dirigent_examples/shelves/patterns/priority-layered.yaml,sha256=zai59iLf7jhfmLororB-crTfdSkMA8507SujkBaSQ20,5059
|
|
87
|
+
dirigent_examples/shelves/patterns/references-cheat-sheet.yaml,sha256=PLwHU9V3qJGEU52KjuGC7gUh21LwvEcbTPiaDU9UsWQ,7884
|
|
88
|
+
dirigent_examples/shelves/patterns/retry-budget-exhausted.yaml,sha256=S4XPcLH4MihvNyBGchwYLOuaMzZhCeWMWyVSTM0vwXI,3567
|
|
89
|
+
dirigent_examples/shelves/patterns/retry-exponential-backoff.yaml,sha256=d79d0jI39MUa4eI29L5z8wWEZ3Gl5f692hvRHGKO6kI,3548
|
|
90
|
+
dirigent_examples/shelves/patterns/retry-only-transient.yaml,sha256=AC_s7PE_ltI43dDWtlGaCYG24lldLFj71can2A0iNGE,4322
|
|
91
|
+
dirigent_examples/shelves/patterns/retry-with-jitter.yaml,sha256=4LS7aI82M01E3XktF-jwqvQ1ZquN9R2itfXXym_E6Y0,4127
|
|
92
|
+
dirigent_examples/shelves/patterns/rule-all-done.yaml,sha256=PJsSjf0cvY9ML1Cwf1xXfRknmV-Tx7Sr-3U_n8wa8Tg,3192
|
|
93
|
+
dirigent_examples/shelves/patterns/rule-all-success.yaml,sha256=oKqUx2zZbFJ8FxhK4auwSCzf1cnA3LfpDFQcouYFOic,2982
|
|
94
|
+
dirigent_examples/shelves/patterns/rule-always.yaml,sha256=0G5gCJQBldVd108Vsae83hk9Eo6yy6KDi1ucUI1GObk,3169
|
|
95
|
+
dirigent_examples/shelves/patterns/rule-one-failed.yaml,sha256=2oKGUlgMj1FWPevOIVDuqVc-ijBFa7tzEwTFq1LUGG0,3183
|
|
96
|
+
dirigent_examples/shelves/patterns/schedule-at-once.yaml,sha256=_C-bGDpIy65gjLSu2rNcIQ9USvRfi5wHMK26ffsFp2M,4269
|
|
97
|
+
dirigent_examples/shelves/patterns/schedule-cron-timezone.yaml,sha256=fIfbwo2f3WlgscquXMKOiPco2AbEZKrazBE4a_t-CO4,4618
|
|
98
|
+
dirigent_examples/shelves/patterns/schedule-interval.yaml,sha256=5Gkvj_tCCT1x6QycW8aWF1Rw4lA_xQaejlpkHa2DbOc,4230
|
|
99
|
+
dirigent_examples/shelves/patterns/schedule-window-half-open.yaml,sha256=mNf25Peeeq3GdshL9Cv0T8NqlRhiDJARPVzh0bmYz0w,4405
|
|
100
|
+
dirigent_examples/shelves/patterns/sensor-http-ready.yaml,sha256=fh5nHZPxmOCUo_2bn6SM1h7-3mxfTqZgUQh6FwP8lII,5379
|
|
101
|
+
dirigent_examples/shelves/patterns/sensor-storage-exists.yaml,sha256=-QbF-ttW99PbgC9TVIeBfMF97O9KBkjPhOqiAnrKz9c,5638
|
|
102
|
+
dirigent_examples/shelves/patterns/step-names-and-keys.yaml,sha256=zVSUt8YL-h125jm1gYRcrx722NJJTmu2sE7YuM_-lqA,4051
|
|
103
|
+
dirigent_examples/shelves/patterns/timeout-fails-the-step.yaml,sha256=NdIEbpW_vA-UCQmE6dISKoeBV8n0Y1bq3yTgmGL5jMw,3900
|
|
104
|
+
dirigent_examples/shelves/patterns/timeout-skips-the-step.yaml,sha256=i5Qo2C_0SOGkFEDc6YrDDqOQMWja1kYcRi3KRCZeq6M,4471
|
|
105
|
+
dirigent_examples/shelves/patterns/webhook-mapping-nested-payload.yaml,sha256=Z9TJmgMt-LMv4mdlQKb-F8semhSLdREIJ7ygDSSkUs4,5029
|
|
106
|
+
dirigent_examples/shelves/patterns/webhook-signed.yaml,sha256=FXKpN0FgC59nbrXqt5k9hwv87jnxdmJUdrICAr6cZXw,5911
|
|
107
|
+
dirigent_examples/shelves/preview/s3-parquet-to-ingestion.yaml,sha256=dMZMb4-s86om2bNFB7AbXsqAh4XAZc9GHFFbq0GMhns,2865
|
|
108
|
+
dirigent_examples/shelves/python/README.md,sha256=VEWoFVeNygcsLIJmmF9M0D_yq9KlOW2-ZjXm_YrXMPE,1567
|
|
109
|
+
dirigent_examples/shelves/python/apply_and_run.py,sha256=e6eoug_RkzyS0cvB2veXb4NEwRsgox0g_lFghJo9aKY,1992
|
|
110
|
+
dirigent_examples/shelves/python/ci_gate.py,sha256=SDqf2htWpaYMVqUKvaLpmt-VXPTSYCF5Ni-fsL3qvqY,2879
|
|
111
|
+
dirigent_examples/shelves/python/connections.py,sha256=Qttid3_2lI0TMzS_KRA-ztlv4MvR0310yK9SHvP1Sao,2362
|
|
112
|
+
dirigent_examples/shelves/python/error_handling.py,sha256=Q7vTr1DLGNnDv0jIKnrSBM5Ur8jb37PSqWbK2fBVn5k,2599
|
|
113
|
+
dirigent_examples/shelves/python/follow_logs.py,sha256=HoIh7pNzS5kpr_fGql-aJQTGqnhXNsh0UEH17qVtZAs,1329
|
|
114
|
+
dirigent_examples/shelves/python/list_and_filter.py,sha256=hDp5Bg8imJLCk9YTmzeFMOP3lnhqSTBgiaDb7bavMtM,2122
|
|
115
|
+
dirigent_examples/shelves/queues/README.md,sha256=ZHU5D3mitbT7N9Q7FKNXxcZsOH8V9K8sPdop-ZRcrFI,3741
|
|
116
|
+
dirigent_examples/shelves/queues/kafka-consume-then-transform.yaml,sha256=QrhcjYiARaqpnJQFkU2kVAk1vQNzkxVvMwLC2xCy4gg,5305
|
|
117
|
+
dirigent_examples/shelves/queues/kafka-produce-then-consume.yaml,sha256=UxyljvlW5KmrBqNAL5ULNAZnmqhxKj-wjl8KuCFAb_U,5704
|
|
118
|
+
dirigent_examples/shelves/queues/rabbitmq-consume-ack-on-success.yaml,sha256=x0R-dDVoFfuE0Wjv5ZiSbJU04TfHyHXD82fq-m_urNI,4994
|
|
119
|
+
dirigent_examples/shelves/queues/report-to-kafka.yaml,sha256=AhqDg6X2ROQki_fhfHUoS8ZtpZFUpvaaacmlFJBYLdQ,3750
|
|
120
|
+
dirigent_examples/shelves/queues/report-to-rabbitmq.yaml,sha256=lRDEDDoGnVH5SI2Tp510gjOptH-yntVMgp425miyuJY,3957
|
|
121
|
+
dirigent_examples/shelves/recipes/README.md,sha256=MazJt_iDla2e0mBCQL0Eo0zFHUQgWA4QHBdCn-XjRmo,9506
|
|
122
|
+
dirigent_examples/shelves/recipes/csv-header-rules.yaml,sha256=W2YnRGjxgyxnyYd1XoPs4abOe2kyc9wKV5-oMJfd1WY,5286
|
|
123
|
+
dirigent_examples/shelves/recipes/csv-to-ndjson.yaml,sha256=n63Pttz4bvudn_e2IvKkJDeAw8wd-hbPCJBpdS6a9KU,3996
|
|
124
|
+
dirigent_examples/shelves/recipes/etl-csv-clean-validate-parquet.yaml,sha256=na0xPs8y2l80t4HkSlm2BPHzN_C9lrsSHqyiXBBy7dQ,7956
|
|
125
|
+
dirigent_examples/shelves/recipes/filter-by-predicate.yaml,sha256=_zVg5SPpBm6uxEHIjaE67_tJkFjyXegsgL-W57EjgUU,4586
|
|
126
|
+
dirigent_examples/shelves/recipes/filter-then-map-then-reduce.yaml,sha256=T2nfCj1QKXtQuNFRKgcAyautAJg64hbr7br9-Dwm45s,4379
|
|
127
|
+
dirigent_examples/shelves/recipes/http-fetch-validate-post.yaml,sha256=sjlqPZ-LXROLWDi4RmGYkkHTcnoKtI_zjw5QIvGbDe0,5652
|
|
128
|
+
dirigent_examples/shelves/recipes/http-follow-redirects.yaml,sha256=-e7XZaUACP6nkTsSPRakKAcPDC5xnj60TzEWoTCc5WY,3973
|
|
129
|
+
dirigent_examples/shelves/recipes/http-get-with-query.yaml,sha256=5oNyNfqIuEihNhHuMhhr3sm-Uj9v1s0HN0EkG53lobc,3733
|
|
130
|
+
dirigent_examples/shelves/recipes/http-headers-and-auth-connection.yaml,sha256=ZvrxpZwvQvxbaXVMfX7OaG3_TrXuLu04chpdhbka8Ts,4534
|
|
131
|
+
dirigent_examples/shelves/recipes/http-post-file-from-storage.yaml,sha256=KPU-9d_-mliGuMiSMkQUVERD-XwMuFf76JqqhYJY6cs,4372
|
|
132
|
+
dirigent_examples/shelves/recipes/http-post-json-echo.yaml,sha256=q_czmCzK3cCEJxQogF5pXPcCvR_plIKtNDNEDpKdocA,4003
|
|
133
|
+
dirigent_examples/shelves/recipes/http-post-report.yaml,sha256=0GZmG2LHtYyKKqCryd2xAs8gyEPjoPhzPKu_vPUmn_o,7726
|
|
134
|
+
dirigent_examples/shelves/recipes/http-save-body-to-storage.yaml,sha256=quoxmJQbjeqaNfnyjHfGUTNB3qL64juODr5kww9Mjuk,4006
|
|
135
|
+
dirigent_examples/shelves/recipes/http-success-status-list.yaml,sha256=PjERRIoRw4cq5u7g34Br0cyMy1DFIAKfEmeGV_baOj0,3155
|
|
136
|
+
dirigent_examples/shelves/recipes/http-timeout-override.yaml,sha256=8gIl-_XKCnJSIeHCHtc4xNlgdLJ0u_5lcfUHXZyhneM,4290
|
|
137
|
+
dirigent_examples/shelves/recipes/jq-dedupe-by-key.yaml,sha256=YMn5VSL1uuHBPdPFD99_Nmc9leChXEm5wcPYcI37-J8,3310
|
|
138
|
+
dirigent_examples/shelves/recipes/jq-defaults-and-nulls.yaml,sha256=uSryOqX0N6wFRVf983riQNk7jXDPimm3JA9HOGVF90I,4024
|
|
139
|
+
dirigent_examples/shelves/recipes/jq-group-by-and-sum.yaml,sha256=PzBzaaMfQr6D-h4LI-Tu-jZmJZTw1neB6TBA0Qj52Qk,2795
|
|
140
|
+
dirigent_examples/shelves/recipes/jq-join-two-lists.yaml,sha256=BmViZ4DXgTScPWVE9Y3YU0ZdvFX1fmScUv_BcHRotlY,2866
|
|
141
|
+
dirigent_examples/shelves/recipes/jq-long-to-wide.yaml,sha256=l8yRP4Wepf4Q2MKFCsF78-yh3QEWaSOrhcH1W5hSfDk,3108
|
|
142
|
+
dirigent_examples/shelves/recipes/jq-nested-to-flat.yaml,sha256=OHrzmohAy4c3TNB0erpqsLnlzPcDJLNs96Ps4Nu5Ln0,3676
|
|
143
|
+
dirigent_examples/shelves/recipes/jq-pivot-wide-to-long.yaml,sha256=KW4KJxMbGu4G_4bjS4T0FxxkGz55vVk_iFippnWmquA,2495
|
|
144
|
+
dirigent_examples/shelves/recipes/jq-running-totals.yaml,sha256=vpzGvuhY7hO5oPfWsiFF7W7ab8Ut8aHTmlXyD6xajkA,3292
|
|
145
|
+
dirigent_examples/shelves/recipes/jq-string-cleaning.yaml,sha256=VcEC6B1UT-SJtgTblFCK9SC5b8gZwcsGb5OULlKpiNg,3972
|
|
146
|
+
dirigent_examples/shelves/recipes/jq-top-n.yaml,sha256=O_0_rF_ju6n7TH-0VNMYMPtvFAhUnummfRuUtwTdSLw,3205
|
|
147
|
+
dirigent_examples/shelves/recipes/jq-validate-in-jq-vs-schema.yaml,sha256=tJ41Gq_kpziHA2hySeBr6gwJbL4Ypqa6OQ4_z8weMHM,5000
|
|
148
|
+
dirigent_examples/shelves/recipes/jq-window-dates.yaml,sha256=nLkt301YAUwYPeHX78SFtqEw1HoBOXNitYJkQOsv_-Y,3618
|
|
149
|
+
dirigent_examples/shelves/recipes/json-to-csv-flattening.yaml,sha256=RfC6kG_xqH-iOxI_SKHwHJQXpmC2dqUY0gOKMbvEU_I,5554
|
|
150
|
+
dirigent_examples/shelves/recipes/large-output-to-storage.yaml,sha256=tDsWzbz8R6WxWyP-OiYB60dK47z62SJBrfktBd8561E,5160
|
|
151
|
+
dirigent_examples/shelves/recipes/map-enrich-with-lookup.yaml,sha256=W1IjTqBiNtEjTUEyXNPbNlvlaTMU-Lp2dyITbylYNmw,3642
|
|
152
|
+
dirigent_examples/shelves/recipes/ndjson-to-parquet.yaml,sha256=TomIgjOLRKGjOhz-rdWcv875bASUtIVRIqGSNe9OhwE,4719
|
|
153
|
+
dirigent_examples/shelves/recipes/pagination-by-fan-out.yaml,sha256=7VIg-3h7ZIPcdjEEIeTWmVJAI6_Nd91aFoYiXMKIaCM,4539
|
|
154
|
+
dirigent_examples/shelves/recipes/parquet-round-trip-types.yaml,sha256=FOxO8nrwh5B_Gf5zqN-dA25GPRAIYpjq5FvTOf99sR0,5769
|
|
155
|
+
dirigent_examples/shelves/recipes/reconcile-two-sources.yaml,sha256=ZU_5l7lPhE2pVX8eVI2hCpbxWX-r2ds91YlyAqHtfdk,6815
|
|
156
|
+
dirigent_examples/shelves/recipes/report-built-in.yaml,sha256=fXW2qcwnaOLPmgz1DSE-Xn-ORImBsBczCDUav5_Tr4k,2845
|
|
157
|
+
dirigent_examples/shelves/recipes/report-daily-digest.yaml,sha256=rXX0b89Iiuk3JN2Jn0tBNsOTW-MJC6W4QJeJleNI9ec,6721
|
|
158
|
+
dirigent_examples/shelves/recipes/report-to-file.yaml,sha256=85lYiUdx5sTrcjmxj5VhougEaLCPyI8ZdXRFkMcjeQ0,4955
|
|
159
|
+
dirigent_examples/shelves/recipes/report-to-webhook.yaml,sha256=blcKuigi3xhljODpVvitVW7099pV6bojwuZFb0Kp2uI,4873
|
|
160
|
+
dirigent_examples/shelves/recipes/schema-carried.yaml,sha256=c2okPxO_SPjEO3aNt45lGX2ZXo8a43BJJRRfQJ1a910,4459
|
|
161
|
+
dirigent_examples/shelves/recipes/schema-formats.yaml,sha256=NZW9x_MOPCxl89ao2A5CzOFxlv4_UxkIfb8ej14qkQ4,4306
|
|
162
|
+
dirigent_examples/shelves/recipes/schema-referenced.yaml,sha256=o-tzhyMMU0lrMfsE8GrhsuU9N5imPvaHnkv1AAoX8JI,2951
|
|
163
|
+
dirigent_examples/shelves/recipes/schema-refuses-then-rule.yaml,sha256=dQ5rcMSUeahDZGo5rULlgobhbmDI5MTC1A5SN40lKU8,4707
|
|
164
|
+
dirigent_examples/shelves/recipes/storage-copy-dated-archive.yaml,sha256=mhvObMxlGDnqLKIrOuE4aov-6ZpIMV8Xot5XdDL14Ks,4093
|
|
165
|
+
dirigent_examples/shelves/recipes/storage-exists-gate.yaml,sha256=dJhgMei7oITd4P_ri0DB1GM2CnmX5XjdBXPTvoIJ6-c,4723
|
|
166
|
+
dirigent_examples/shelves/recipes/storage-manifest-of-a-fan-out.yaml,sha256=OurCz5ZzDZzBwxBDpFyHbAAwDYk2YTWCjqEdaqUWvPA,4280
|
|
167
|
+
dirigent_examples/shelves/recipes/storage-write-then-read.yaml,sha256=COYYBxxgZReLIUwc-8aumAl5BcIU9_hCnJjkWjB7JYU,4135
|
|
168
|
+
dirigent_examples/shelves/recipes/webhook-post-hmac.yaml,sha256=FIHuwBwq3SS48F71aBXd5RSbSPvT7Hq1Jw1UlpZXGpM,5021
|
|
169
|
+
dirigent_examples/shelves/recipes/webhook-post-summary.yaml,sha256=zyeawWekOD27oOQEniJRUYXG6MnfYLc48HbXmitYkgU,5306
|
|
170
|
+
dirigent_examples/shelves/s3/README.md,sha256=STADgXRQ_inp7ipOoU1w0a3zlpmxLtnk2dakDzhAGVI,1856
|
|
171
|
+
dirigent_examples/shelves/s3/report-to-s3.yaml,sha256=rYbI7RNvvyZLMU3w3k5slPuhgNOf8r75dWHMUSiVY5Q,3022
|
|
172
|
+
dirigent_examples/shelves/s3/s3-copy-and-verify.yaml,sha256=ryXlrlYHig_sm6sFtuwn0qvTUxes7dLlm1yQMkk2pLE,3469
|
|
173
|
+
dirigent_examples/shelves/s3/s3-csv-report.yaml,sha256=pIZMMplx88UHcQkdBQev5bYR3CvyzzjWkxmRpM5Z_fk,2821
|
|
174
|
+
dirigent_examples/shelves/s3/s3-parquet-report.yaml,sha256=VNzYEqrhEUmbu9AifouGYsedbwDm_EK6FqwcskCcSKA,2576
|
|
175
|
+
dirigent_examples/shelves/s3/s3-round-trip.yaml,sha256=JeDCmqkiMZcYxivSyMla3rvWVnFzg_547e4WylX1olg,4165
|
|
176
|
+
dirigent_examples/shelves/schemas/README.md,sha256=oHpbe41WpRYXkUnTzwcKv7LEdblugRKrLyDAPhWINPA,2035
|
|
177
|
+
dirigent_examples/shelves/schemas/echo-reading.json,sha256=ImOFlujVTthnvXbZr50XugkgDdUjs1jdA052IETnoQE,689
|
|
178
|
+
dirigent_examples/shelves/schemas/ou-record.json,sha256=vEa7moak6MfA7KZ6h2jRM7Zl51NlUlDqytGbWHYhS1U,458
|
|
179
|
+
dirigent_examples/shelves/schemas/station-reading.json,sha256=PkQE2Ax-FBIoMt9y5V-4kSczW5urszePKarW0shz5qU,620
|
|
180
|
+
dirigent_examples/shelves/sensors/README.md,sha256=XBw9wMyaXDtz8dERODmTofYQiMSSrofDFlOZ3iPA3YY,664
|
|
181
|
+
dirigent_examples/shelves/sensors/sensor-gate.yaml,sha256=q9xrBlDaWi-bkHae3fibWWZZU_LLMTihvSnZZELh-DA,2556
|
|
182
|
+
dirigent_examples/shelves/sensors/time-window.yaml,sha256=ukpGkqAIO2NgvXT7Z9TG__GK1_u3pSoozbMeZ8-1YqY,2321
|
|
183
|
+
dirigent_examples/shelves/sql/README.md,sha256=wKJZCQ7Q8u2iDvgy-PlRxsSni9SSJ75EL42USa2ldJ0,3076
|
|
184
|
+
dirigent_examples/shelves/sql/duckdb-parquet-to-report.yaml,sha256=vJgydIEQoHJK9SAkEUVAlS2lb0pUAsdOC5FMVN9XORI,6491
|
|
185
|
+
dirigent_examples/shelves/sql/sql-postgres-readonly.yaml,sha256=G15f9sIOSnXmmNOsPhZd3iy8vPmsvcmlIxvn9zaYjoo,5470
|
|
186
|
+
dirigent_examples/shelves/sql/sql-query-to-storage.yaml,sha256=Z9VHLNwi3cYkgc9pSmCGDGFQg_74JJtLqDqvMc7fkEs,3620
|
|
187
|
+
dirigent_examples/shelves/sql/sql-sqlite-roundtrip.yaml,sha256=odRr6-xVUzGk9Xc58l-pfKW8OVA7OCf6Tl1I_-ZQnfc,5104
|
|
188
|
+
dirigent_examples/shelves/sql/warehouse.sql,sha256=c6jxTygMGy9qjsw8HcUGUTCyW0jjVXUQRsgqdmkjGJ0,2094
|
|
189
|
+
dirigent_examples/shelves/transform/README.md,sha256=XM8eto64kJX1apZQdzGr6lB7Kp-Vu4ndHVR_-_8HKBs,2882
|
|
190
|
+
dirigent_examples/shelves/transform/csv-report.yaml,sha256=UhJW0I_VJfZEp_pEPbgrUh_o96YIXSaHb8_qGhAkXUw,2000
|
|
191
|
+
dirigent_examples/shelves/transform/jq-filter-and-map.yaml,sha256=LWaPXq9dBj-XT-Fj0f-b6oBONLIETHZv5ZuyygXx32E,3027
|
|
192
|
+
dirigent_examples/shelves/transform/jq-group-and-aggregate.yaml,sha256=gGrHuK94QmV8gm8frDGheKV5Uy3aVr2JPQwSxhX-a04,2793
|
|
193
|
+
dirigent_examples/shelves/transform/jq-join-two-sources.yaml,sha256=cou28oEhNz5lCIKBsVssqbPCEXew7TJsQKPD2HadkYw,3551
|
|
194
|
+
dirigent_examples/shelves/transform/jq-reshape.yaml,sha256=j8qam_bPgHPkU23VjHqvQISfHzSj48HtVVuToU2uzh4,3865
|
|
195
|
+
dirigent_examples/shelves/transform/jq-stream-through-storage.yaml,sha256=kQChicaouy-8eUi6FQCGEgeRW-LcGi8jINJia4LyNkY,3977
|
|
196
|
+
dirigent_examples/shelves/transform/ndjson-round-trip.yaml,sha256=4RHpdOpHS-PYWLKus_pjs8Zf5pCBs72XKqKxBK_Z8qY,1805
|
|
197
|
+
dirigent_examples/shelves/transform/parquet-round-trip.yaml,sha256=kmnU1ANJK8d1fvJEc1rES_MsrRaHZxeZ7wNxGW5efRg,2218
|
|
198
|
+
dirigent_examples/shelves/transform/std-convert-fan-out.yaml,sha256=fH5VoE_-rKEcvOpkZRCgvLgNdH3tx6boSk8J6jwNSto,4946
|
|
199
|
+
dirigent_examples/shelves/transform/xml-feed-to-ndjson.yaml,sha256=2Tn0YIKUzPUuYq7bIX499uPELE4laVbiIJcrAvqiUSk,4556
|
|
200
|
+
dirigent_examples/shelves/transform/yaml-config-to-json.yaml,sha256=MZIwQ_vdF3LnwrUHYi-pbJX4uPLICpWNVBSB6s5D74E,3519
|
|
201
|
+
dirigent_examples/shelves/triggers/README.md,sha256=hSFweBcmEJZ000PDix7GmbkugybSZmJTLgTu4R0-R34,3018
|
|
202
|
+
dirigent_examples/shelves/triggers/at-one-time.yaml,sha256=IKDYn1lKEOVtEcmCAcjqaaYbKd7ay67sWpAJka9kfIk,2606
|
|
203
|
+
dirigent_examples/shelves/triggers/cron-nightly.yaml,sha256=l6asp1Df_At3UC8FN97wfatXDyAl5O76nb9YH7ZdaDg,2825
|
|
204
|
+
dirigent_examples/shelves/triggers/cron-windowed.yaml,sha256=FVAssfexsnFjjojVG0VwFuES_LrSU0ZlPcAWfMUuBxs,3235
|
|
205
|
+
dirigent_examples/shelves/triggers/document-nightly.yaml,sha256=0YvZKoLQhf5fmyYB6FNmUs9N0IoCRq-ifpwo7QTVyAI,3644
|
|
206
|
+
dirigent_examples/shelves/triggers/interval-rolling.yaml,sha256=54m13OzlAn8PTnNCLH8e1_xz7IFX6z6U5Lh30xOdotQ,3109
|
|
207
|
+
dirigent_examples/shelves/triggers/managed-and-manual.yaml,sha256=S9uEQxw-Fav5QlQoICSVLpMPqjHT8Z4NrN5fAP_o6Kk,3889
|
|
208
|
+
dirigent_examples/shelves/triggers/webhook-trigger.yaml,sha256=bmurknf2JN7EWcWO1zEQzngaRDgdgDCrh1PHPYsuUD0,2787
|
|
209
|
+
dirigent_examples/shelves/validate/README.md,sha256=VyZkyXUWgM-j6mz2ii9UaBwAIsthWU89gwBfjuCtZEw,2222
|
|
210
|
+
dirigent_examples/shelves/validate/expects-a-shape.yaml,sha256=Gi_eHFrhbGCmpf77aey0gR6aQC-bVZbJdjAG_izf6S8,1679
|
|
211
|
+
dirigent_examples/shelves/validate/the-shape-is-wrong.yaml,sha256=XV5WR12JYfPvFBv-URnywEYy_dtEU8VAO9M1xwXl3rs,1386
|
|
212
|
+
dirigent_examples-0.15.0.dist-info/licenses/LICENSE,sha256=LKBm7Cx-WBc1zca4DjGxq99VEpAiWGnZDxIKmntn1hQ,910
|
|
213
|
+
dirigent_examples-0.15.0.dist-info/WHEEL,sha256=-i9oRNYVXXZJUIYl5zclLIg6onEb0NLibTX34uln84w,81
|
|
214
|
+
dirigent_examples-0.15.0.dist-info/entry_points.txt,sha256=g4T-0KlscS_divZMcZCRBorQj00GkWbwlBrekUGd9sw,59
|
|
215
|
+
dirigent_examples-0.15.0.dist-info/METADATA,sha256=rJ_aLmYFpL7V2ES6J6rqaWsvVYku9hxNg50pMi5zPRM,957
|
|
216
|
+
dirigent_examples-0.15.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Copyright (c) 2026 Morten Olav Hansen <morten@winterop.com>. All rights reserved.
|
|
2
|
+
|
|
3
|
+
This source code and accompanying documentation are the property of
|
|
4
|
+
Morten Olav Hansen. No license, express or implied, is granted to use, copy,
|
|
5
|
+
modify, merge, publish, distribute, sublicense, or sell copies of this
|
|
6
|
+
software or its derivatives.
|
|
7
|
+
|
|
8
|
+
The source is published for reference only. Any use beyond reading
|
|
9
|
+
requires written permission from the copyright holder.
|
|
10
|
+
|
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
12
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
13
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
|
|
14
|
+
IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES,
|
|
15
|
+
OR OTHER LIABILITY ARISING FROM THE USE OF THE SOFTWARE.
|
|
16
|
+
|
|
17
|
+
Third-party components redistributed with this software, and the licences they
|
|
18
|
+
carry, are listed in THIRD_PARTY_NOTICES.md.
|