mcpField
A
agently-stage

agently-stage

github.com/agenteraDevelopment31141 installsUpdated 4d ago
Repository

About agently-stage

Agently Stage is a process-local runtime library for managing task lifetimes and adapting calls between synchronous and asynchronous code. It is intended for developers who need task coordination, replay channels, or local event dispatch without taking ownership of workflow progression.

Key features

  1. 01Manage task scopes and settlement
  2. 02Bridge synchronous and asynchronous calls
  3. 03Submit work across loops or threads
  4. 04Replay generator output with StageStream
  5. 05Provide local replay channels with Tunnel
  6. 06Dispatch process-local events

Use cases

  1. 01Coordinate task cancellation and completion
  2. 02Adapt a synchronous API for asynchronous callers
  3. 03Read submitted results across threads or loops
  4. 04Replay generated output or dispatch local events

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/agentera/agently-skills --skill agently-stage

After installing, type/agently-stagein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

agents/
openai.yaml
references/
bridges-streams-events.md
performance.md
task-lifecycle.md

Details

From the project README

Agently Stage

Agently 4.1.4.7+ requires agently-stage>=0.3.8,<0.4.0. Use Stage for process-local lifetime, call-shape bridging, replay channels, and local listener dispatch. These APIs are independently useful, while Agently also uses Stage as a private runtime mechanism.

Read by Need

  • Stage scopes/backend selection, StageHandle, settlement, cancellation, caller-loop task ownership, pressure, idle timeout, and snapshots: task-lifecycle.md.

  • Stage.as_sync/as_async, StageCallBridge, StageStream, Tunnel, EventEmitter, and compatibility names: bridges-streams-events.md.

  • TriggerFlow state/signals, workflow close, recovery, or application orchestration: use agently-triggerflow.

  • Actions, ExecutionResources, TaskWorkspace, RecordStore, services, or DevTools: use agently-runtime.

  • Performance, thread budgets, batching, replay costs and optional notification grouping: performance.md.

Boundary

Choose the smallest surface that matches the caller:

  • Direct call/await when caller and work already have the same shape.
  • async with Stage() for explicit async lifetime; with Stage() for a deliberate blocking boundary.
  • Stage.as_sync/as_async for one scalar adapter.
  • Stage.go(...) plus StageHandle for a submitted result that must be read across loops or threads.
  • Stage.create_task(...) for caller-loop work Stage creates; adopt(...) only for a task that already exists.
  • StageCallBridge for injected lifetime, managed blocking cancellation, or iterator conversion; StageStream for generator replay.
  • Tunnel for an independently writable process-local replay channel and EventEmitter for process-local listeners.

A synchronous facade blocks its calling thread. Do not bridge a call that already has the correct native shape.

Invariants

  • Body completion and settlement are different facts. Read the body with get()/async_get() and wait for retained descendants/finalizers with wait_settled()/async_wait_settled() when their completion matters.
  • Never block the caller-owned loop needed by the work. Use the matching async barrier when Stage reports a lifecycle conflict.
  • After cancellation, wait for settlement before claiming no later Stage-owned work can occur. Stage cannot preempt a non-cooperative blocking function or undo an external side effect.
  • Put concurrency, pending, worker, and idle limits at their actual pressure boundaries. Carrier-loop count is not application admission control.
  • Automatic Stage scopes remain independent even when they safely reuse a carrier.

Stage does not own workflow progression, business retry, persistence, authorization, provider cancellation acknowledgement, or external side effects. TriggerFlowExecution remains Agently's public workflow lifecycle owner; Stage objects and carrier state must not enter execution snapshots.

LocalTaskScope and the historical Stage dispatch/function type names are 0.3 compatibility surfaces. Do not teach them as new owner layers.

Comments

Markdown supported