Skip to content

Extension SPI Overview ​

BLOGE extensions add higher-level orchestration constructs without turning the core DSL into a hard-coded list of product features. An extension owns its syntax, semantic compiler, runtime model, nested operator bridge, and lint behavior.

Current First-Class Extensions ​

ExtensionModuleRuntime model
Sessionbloge-session-extSession, phase, round, signal, snapshot
State machinebloge-state-extState, transition, signal, timeout, checkpoint
Agentbloge-agent-extLLM loop, tools, memory, trace events, streaming chunks

Durable concerns are intentionally split into dedicated bridge modules:

Durable bridgeModule
Durable sessionsbloge-session-durable
Durable state machinesbloge-state-durable

Extension Responsibilities ​

ResponsibilityWhat it means
Syntax providerRegisters extension keywords and scopes through DslExtensionProvider
Semantic compilerLowers generic extension AST into a concrete runtime definition
Nested operator factoryLets an extension embed or be embedded inside another graph-like construct
Runtime executorOwns extension-specific lifecycle, signals, memory, or transitions
Lint contributorAdds static rules for extension-specific traps
Durable bridgePersists checkpoints and handles recovery when the extension is long-running

Why This Boundary Matters ​

The extension model keeps the base DSL small while allowing BLOGE to grow into conversational, event-driven, and agentic orchestration. The core engine still sees executable graph nodes, suspendable operators, events, checkpoints, and results.

That boundary prevents two common failures:

  • pushing every advanced workflow concept into bloge-core
  • treating extensions as separate runtimes that cannot share durability, observability, or tooling

Next Steps ​