Framework lifecycle bindings#

Conduit does not import or pin an agent framework. An application translates the framework's public hook or event objects at its composition root and supplies that translation as a LifecycleRegistrar.

const adapter = createVoltAgentAdapter({
  installAsset: applicationAssetRegistry.install,
  applyOutcome: voltAgentOutcomeBridge,
});

const dispose = bindAdapterLifecycle({
  adapter,
  registrar: {
    register(phase, handler) {
      return applicationVoltAgentHooks.on(phase, frameworkEvent =>
        handler(toConduitEvent(phase, frameworkEvent)),
      );
    },
  },
  evaluate: event => applicationLifecyclePolicy.evaluate(event),
});

The same composition works with createStrandsAdapter; only the registrar and outcome translator change. evaluate stays application-owned, so workflow, approval, evidence, and model-routing policy never enters Conduit.

The committed matrix labels both framework references caller-bound. It proves Conduit's side of the contract but does not claim a particular framework package version. A consumer should generate evidence with its actual framework version after registering real hooks.

Source: docs/framework-bindings.md