Repository navigation
The CLI now wires integrations around messages. Each component names one message, and the CLI derives the topic and payload type from it. This is a breaking release: a record scaffolded with the older wiring stops assembling, and you need to re-scaffold it.
⚠️ Breaking changes
- The message is the only wiring. An extractor declares
values.publishesand a loader declaresvalues.subscribes, each set to a single message name. The CLI derives the channel (pubsub/<message>) and the payload type (the message name in PascalCase, e.g.orders→Orders). - The old wiring is gone, with no fallback. That covers the nested
subscribe/publishesblocks, thedataschema/external-subscription concept and thetopic/contractoverride keys. A record from before this change fails assembly with migration guidance instead of being read leniently. int createno longer takes--registry-url.--publishes/--subscribeno longer look up a registry snapshot. To find messages across systems, useintropy message list/intropy message show.- Message names must be DNS-1123 subdomains (e.g.
order-created, notOrderCreated). A bad name now fails at scaffold time instead of later in the host's topology validation.
Features
- Loaders own their subscriptions. A loader's scaffold record owns its declarative Dapr Subscription, and the topology and deployment manifests render it as-is, so a deployment routes a message the same way a local run does. A record without
defaultmeans ignore, which matches what loader code does with unrouted events. Routes that leave out the subscribed message are rejected. sys updaterefreshes changed components. Declared components whose scaffold records changed get their wiring keys rewritten. Other stored keys are kept, and the refreshed topics, ports and messages are merged into the host.- Template engine additions (for intropy-templates authors):
spec.fileseachexpansion renders a path once per list element, e.g.src/Routes/{{ pascal .route.message }}/Deserializer.cs.tmpl.- A
pascaltemplate function uses the same derivation as system assembly. - Array-of-object parameters with
minItems/maxItems, prompted one element at a time interactively, or passed as JSON via--set.
- Dashboard: the topology view shows subscription edges, the flow detail view shows routes, and the scaffold form supports list (array-of-object) parameters and message parameters.
Bug fixes
- Transactional integrations deploy as CronJobs. They sweep, drain and exit, so as Deployments they restarted into CrashLoopBackOff. Kind matching ignores case and dashes (
transactional-integration,TransactionalIntegration, …). - Fixed a regression in how template values are read.
Full changelog: v1.0.1...v2.0.0