Repository navigation
Releases: julia-script/effect-harness
Release list
effect-harness@0.5.0
Minor Changes
-
ac61918: Add schema-backed task graphs, coherent conversation views and committed agent events. Native observers attach and publish on the Session line, recover bounded-buffer overflow with full rebases and drain final state on successful close. Retain actual nested tool receipts for cold readonly observation after parent retirement.
Snapshots hydrate complete current state and briefly hold the native line. Buffers are bounded; total snapshot memory grows with conversation and task history. Events describe committed facts rather than every provider chunk or a replayable event archive.
-
91f1c56: Add runner-neutral scoped conformance cases for bound filesystem, directory/watch, process, spill, image and toolkit isolation services. Factories preserve service and error requirements; optional capabilities require explicit selection and unsupported capabilities fail visibly. Image checks use independent output inspection without importing native codecs into portable testing routes.
-
7b7129f: Add immutable bounded context projection with explicit legacy interpretation, ordered declarative section/tool facts, and projection-only repair of incomplete tool histories.
-
5d0dd15: Add a ready-made UTF-8 read tool with bounded bytes and lines, one-based selection, scoped file identity and visible continuation diagnostics.
-
5d0dd15: Add an optional Bun image preparation Layer with native first-frame decoding, EXIF normalization, exact resizing and encoding. Validate source JPEGs strictly with the optional sharp codec, preserve transparency or explicitly flatten white, and retain borrowed buffers until noncancellable native work completes. Older Bun runtimes return typed unavailable errors.
-
fc3e7c6: Add caller permissions, separate model tool filters, explicit inherited toolkit registration selection, and leased tool admission with typed denials. Add optional or strict success channels, media-preserving nested receipts without controls, and validated model-call controls with a deterministic complete-round reducer. Existing value-style and optional result defaults remain compatible. Provider/nested runtime admission and durable run-loop control activation require the later versioned integration.
-
5d0dd15: Add a scoped backend-local file mutation coordinator that serializes canonical path aliases and releases permits on failure and interruption.
-
60aae13: Commit immutable prepared requests before provider calls and restore their saved configuration and binding contracts after recovery. Apply current agent, settings, registry and selected-model image limits at each new request boundary, with a storage reader barrier for the new persisted preparation format.
-
cda77c8: Add ready-made file editing tools with validated disjoint replacements, repaired argument forms, byte-preserving exact edits, scoped mutation coordination and optional native rename replacement.
-
cda77c8: Add image-aware Read handlers with explicit per-invocation model policy, source allocation limits, bound image preparation and schema-backed image metadata. Preserve portable text-only Read behavior and return a documented placeholder for models without image support.
-
5d0dd15: Add detached document materialization with separate stored and effective versions, current and historical Session reads, and scoped version-aware watches. Local Conversation reads and watches use the owning HarnessRuntime service and preserve target decoder requirements. Materialized reads never persist upgrades; exact reads and transactional acquisition retain their existing behavior. Migration-only watch frames expose changes to storage version even when the decoded value is unchanged.
-
fc3e7c6: Add validated encoded document patches, economical update diffs and compact array splices. Document checkpoint predicates select bases using the final decoded candidate, ordered operations and prior persisted delta count. Splice persistence deliberately activates storage format 3 with minimum reader 3; legacy formats remain readable and older readers reject upgraded stores on reopen.
-
f154c6a: Add durable manual, threshold and finite overflow compaction with pinned summary configuration, separate status, task handles, usage accounting, and stale-range checks at queued placement. Native OpenAI and Anthropic summary requests enforce the output budget, omit tools and explicit cache directives, and run without deferred execution. These cache controls do not disable automatic remote caching. Valid incompatible compaction facts activate storage reader 8; old processes must be stopped before activation.
-
cda77c8: Add a scoped standalone TaskScheduler for registered custom tasks over Session coordination. Compile typed executable closures during registration, retain leased service contexts, atomically commit phase checkpoints and memos with domain writes, normalize terminal results, resume persisted running checkpoints, and reject stale invocation writes. Require the exact supported StorageFormat capability before creation or dispatch and reconcile commit/registry wakes without blocking on observers.
Expose explicit typed host boundaries for ownership supervision, child joins, cascading abort, restart abandonment, conversation access and hooks. The standalone scheduler does not replace the legacy Harness.run executor; those integrations remain required separately. Include a real two-phase JSONL cold-reopen example and focused runtime and type proofs.
-
d8b3b82: Activate explicitly selected deferred model execution with durable handles, absolute polling deadlines, finite expiry and retry budgets, and captured remote cancellation after the durable abort fence. Recovery polls the saved handle without repeating preparation or creating another response; an interrupted create without a saved handle remains an inspectable unknown external outcome. Deferred work requires storage reader 7; ordinary and legacy missing-selection requests remain native streaming.
Abort saves remote cancellation success, failure or timeout in the task's aborted result and settles locally within the cancellation wait budget. Runtime close joins tracked cleanup before releasing its resources and can wait for an uninterruptible custom callback. Caller-owned model and client Layers must outlive the runtime. Preserve observed usage when a native deferred publication is deterministically rejected.
-
7b7129f: Add schema-backed run membership and private durable inbox boundary helpers. The foundation selects passive writes before independently limited steering and follow-up queues, retains state across reopen, and rolls back caught helper failures. Production admission and scheduling integration follows separately; the existing scheduler remains authoritative.
-
35f0bda: Use native model streams during normal durable execution. Expose the last committed partial through the portable LiveState document, flush progress before atomic response settlement, and preserve interrupted partials during cold recovery without executing incomplete tool parameters. Record known and unknown physical attempt receipts independently of immutable request preparation. Persist finite absolute retry deadlines for typed transient provider failures and apply current retry policy only to new decisions. Streaming and retry phases require storage format 6; earlier readers refuse upgraded stores before replay. Deferred polling remains separate.
-
52d35e2: Add native programmatic tool calls from tools and registered tasks, with schema-backed receipts, owned child cleanup, durable key reattachment and once-only accounting. Nested work activates reader protection 10 before admission. Final-only progress acknowledges local report acceptance; the final invocation receipt acknowledges persistence.
-
bf68aa5: Activate durable follow-up and steering batches, passive write/reset submissions, automatic saved-handle resumption, and supervised conversation cancellation. Grouped run membership and canonical context boundaries require storage format4; older readers refuse the container before replay, while legacy single-input checkpoints remain recoverable.
-
fc3e7c6: Add scoped durable tool progress with bounded incremental UTF-8 retention, coalesced persistence, byte-rate throttling, bounded detail acknowledgements and atomic receipt settlement through the invocation's gated commit. Expose committed-state recovery and post-hook visible-text retention while preserving media, details and structured output. Legacy runtime reporting integration remains a required follow-up.
-
9ca7c2a: Execute model tool rounds as native durable child tasks, with whole-round sequential policy, parallel all-settled joins, ordered result slots and once-only controls. Settle final progress, results, receipts, usage and child outcomes atomically; retain accepted progress during cancellation and avoid repeating unsafe or committed work during recovery. New tool-round facts activate storage reader 9, so older processes must stop before activation.
-
7b7129f: Add a replaceable ImagePreparation service and scoped codec contract with owned result bytes, validated dimensions and base64 budgets, all-eight-orientation policy, first-frame transforms and explicit alpha handling. Native Bun, Node/sharp and WASM codecs follow separately.
-
5d0dd15: Add a ready-made literal UTF-8 write tool with parent directory creation, typed mutation outcomes and unsafe replay policy.
-
91f1c56: Add optional schema-backed deferred model descriptors and a native OpenAI background Responses adapter using the caller's bound transport. Expose typed start, poll and cancel operations with serializable handles, captured services and strictly increasing absolute poll deadlines. Runtime persistence, retries and cancellation fencing require later integration.
-
fc3e7c6: Provide native registered-task ownership, durable joins, completion holds, cascading cancellation, background snapshots, and rest...
effect-harness@0.4.0
Minor Changes
-
1ee6db2: Add ordered transactional conversation initializers to Session and the local Harness runtime. New roots, independent conversations, forks and configured raw Transaction creation commit their required documents and callback writes together. Failed or interrupted initialization leaves prior transaction drafts intact, including when callers catch the failure. Existing roots and reopened conversations skip initialization; notification hooks retain their post-commit behavior.
-
1ee6db2: Add opt-in direct document migrations keyed by persisted source version. Transaction acquisition and updates validate the current encoded schema before staging an atomic upgrade. Reads and historical snapshots retain exact-version behavior, and forks preserve their configured revision policy.
-
1ee6db2: Persist globally unique conversation affinity through reopen and allocate a fresh identity on forks. Expose request-scoped ProviderAffinity to custom adapters and default supported OpenAI prompt_cache_key without overriding caller options.
Persist model token usage, caller-declared pricing snapshots and opt-in tool spend with completed entries and recovery checkpoints. Add atomic conversation/session usage queries with fork deduplication, explicit unknown counters and costs, separate currencies, and legacy history reporting. Older transports may omit accounting queries; older decoders discard new usage fields on downgrade.
-
1ee6db2: Publish runner-neutral Effect storage conformance cases through effect-harness/Testing. Scoped adapter factories cover atomicity, identity, ownership, document lifecycle and fork visibility, with opt-in historical document, reopen and SQL transaction recovery checks and typed assertion failures.
-
1ee6db2: Add Harness.submission(id) to reacquire saved input submissions through the existing backend read contract. Acquisition immediately validates the ID, preserves the original conversation ID, and creates no durable records. Reopened clients can read, wait for, and withdraw the original submission.
-
1ee6db2: Add opt-in Tool.makeResult handler envelopes with independently validated structured output, model-visible content and UI details on success and failure. Preserve all channels through hooks and durable JSON recovery while keeping existing Tool.make behavior.
-
1ee6db2: Retire active task documents atomically when Transaction.putTask makes their owner terminal. Reject acquisition and replacement for terminal owners, including legacy tasks, before initialization or migration runs. Failed settlement preparation stages no partial retirement, even when caught. Detached snapshots and conversation history retain their existing read semantics; legacy terminal documents can be explicitly retired.
Patch Changes
- ca61686: Prepare all fork document copies before staging the child conversation. Catching a fork validation error inside a successful Session callback no longer commits orphan copies, while unrelated callback changes remain commit-able.
- 7c7742f: Project tool results from their post-hook model-visible content, retaining plain strings and using the canonical provider envelope for media and provider options. Preserve media, part options, and hook redactions while retaining typed details separately in durable history.
- a5a2bfc: Keep native HTTP clients, OpenAI embeddings and Anthropic generic streaming when tool-result adapters wrap inherited or non-enumerable service properties. Forwarded methods retain their captured receiver.
- d0c76ac: Preserve the complete scoped tool failure cause when it includes a defect, interruption, or infrastructure error. A declared domain failure no longer hides an accompanying cleanup defect or infrastructure failure, while domain-only failures still become tool results.
- 9ed0877: Resolve duplicate tool declarations once using native Toolkit precedence, keeping the offered definition, extension admission, and persisted recovery policy aligned with the selected handler. Prevent interrupted unsafe overrides from being replayed after restart.
- 09a8c8b: Normalize SQL COMMIT and ROLLBACK errors into uncertain StorageError failures and require reopening direct Storage after these failures.
- 336b0a5: Preserve native tool file bytes across JSON serialization so Anthropic receives decoded text documents rather than base64 strings. Literal string content retains its original meaning.