lifeloop-cli 0.2.0

Provider-neutral lifecycle abstraction and normalizer for AI harnesses
Documentation
{
  "kind": "adapter_manifest",
  "expect": "valid",
  "description": "Codex v1-conformance manifest, native_hook and manual_skill integration",
  "data": {
    "contract_version": "lifeloop.v0.2",
    "adapter_id": "codex",
    "adapter_version": "0.1.0",
    "display_name": "Codex",
    "role": "primary_worker",
    "integration_modes": ["native_hook", "manual_skill"],
    "lifecycle_events": {
      "session.starting": { "support": "native", "modes": ["native_hook"] },
      "session.started": { "support": "native", "modes": ["native_hook"] },
      "frame.opening": { "support": "native", "modes": ["native_hook"] },
      "frame.opened": { "support": "synthesized", "modes": ["native_hook"] },
      "context.pressure_observed": { "support": "native", "modes": ["native_hook"] },
      "context.compacted": { "support": "native", "modes": ["native_hook"] },
      "frame.ending": { "support": "native", "modes": ["native_hook"] },
      "frame.ended": { "support": "native", "modes": ["native_hook"] },
      "session.ending": { "support": "unavailable" },
      "session.ended": { "support": "unavailable" },
      "supervisor.tick": { "support": "unavailable" },
      "capability.degraded": { "support": "synthesized", "modes": ["native_hook"] },
      "receipt.emitted": { "support": "synthesized", "modes": ["native_hook"] },
      "receipt.gap_detected": { "support": "unavailable" }
    },
    "placement": {
      "pre_session": { "support": "native", "max_bytes": 8192 },
      "pre_frame_leading": { "support": "native", "max_bytes": 8192 },
      "pre_frame_trailing": { "support": "unavailable" },
      "tool_result": { "support": "unavailable" },
      "manual_operator": { "support": "manual" }
    },
    "context_pressure": {
      "support": "native",
      "evidence": "Codex CLI 0.129 exposes PreCompact before context pressure handling and PostCompact after context compacts"
    },
    "receipts": {
      "native": false,
      "lifeloop_synthesized": true,
      "receipt_ledger": "unavailable"
    },
    "session_identity": {
      "harness_session_id": "native",
      "harness_run_id": "synthesized",
      "harness_task_id": "unavailable"
    },
    "failure_modes": ["transport_error", "payload_too_large"]
  }
}