|
@@ -29,8 +29,6 @@ Use goal tools for one long-running completion objective in the current session.
|
|
|
|
|
|
|
|
Use the workflow tool ONLY when the user explicitly asks for a workflow or for large multi-agent orchestration: you write a JavaScript script (the tool description documents the exact format) that fans work out across many subagents with phases and structured results. For one or two delegations, prefer plain subagent calls.
|
|
Use the workflow tool ONLY when the user explicitly asks for a workflow or for large multi-agent orchestration: you write a JavaScript script (the tool description documents the exact format) that fans work out across many subagents with phases and structured results. For one or two delegations, prefer plain subagent calls.
|
|
|
|
|
|
|
|
-Use the ralph tool ONLY when the direct human explicitly asks for a Ralph loop or fresh-agent iterative execution. Each Ralph round starts a fresh child with no conversation seed and uses the shared workspace as durable memory. Completion and blockers are worker reports, not independent evaluation. Use same-session goal tools for ordinary long-running objectives, and plain subagents or workflows for bounded delegation and fan-out.
|
|
|
|
|
-
|
|
|
|
|
Use subagent in the background by default. Start independent delegations together in one assistant message and continue useful work while they run. Set `run_in_background: false` only when your next action depends on that subagent's result. When a background run settles, the runtime sends you a notice containing its outcome and any final assistant message.
|
|
Use subagent in the background by default. Start independent delegations together in one assistant message and continue useful work while they run. Set `run_in_background: false` only when your next action depends on that subagent's result. When a background run settles, the runtime sends you a notice containing its outcome and any final assistant message.
|
|
|
|
|
|
|
|
## Writing code for run_code
|
|
## Writing code for run_code
|
|
@@ -280,18 +278,6 @@ class ListAgentsOutput2(TypedDict):
|
|
|
parent: NotRequired[str]
|
|
parent: NotRequired[str]
|
|
|
depth: NotRequired[float]
|
|
depth: NotRequired[float]
|
|
|
|
|
|
|
|
-class RalphArgs(TypedDict):
|
|
|
|
|
- # The immutable completion objective for every fresh Ralph round.
|
|
|
|
|
- objective: str
|
|
|
|
|
- # Optional positive safe-integer round cap, bounded by the deployment ceiling.
|
|
|
|
|
- maxRounds: NotRequired[float]
|
|
|
|
|
- # Additional keys beyond those declared are allowed.
|
|
|
|
|
-
|
|
|
|
|
-class RalphOutput(TypedDict):
|
|
|
|
|
- runId: str
|
|
|
|
|
- agentsStarted: int
|
|
|
|
|
- result: Any
|
|
|
|
|
-
|
|
|
|
|
class ReadArgs(TypedDict):
|
|
class ReadArgs(TypedDict):
|
|
|
# Path to read, resolved by the filesystem backend.
|
|
# Path to read, resolved by the filesystem backend.
|
|
|
file_path: str
|
|
file_path: str
|
|
@@ -580,8 +566,6 @@ class Tools(Protocol):
|
|
|
"""Read a background job. Stream jobs return only output since the previous read; final-output jobs return their result after settlement. Every response ends with `[status: ...]`. Reads are non-blocking unless `wait: true`, which waits up to the configured cap."""
|
|
"""Read a background job. Stream jobs return only output since the previous read; final-output jobs return their result after settlement. Every response ends with `[status: ...]`. Reads are non-blocking unless `wait: true`, which waits up to the configured cap."""
|
|
|
async def list_agents(self, args: ListAgentsArgs) -> list[ListAgentsOutput1 | ListAgentsOutput2]:
|
|
async def list_agents(self, args: ListAgentsArgs) -> list[ListAgentsOutput1 | ListAgentsOutput2]:
|
|
|
"""List your continuable background subagents by durable id and label. Use it to recall which ones you started, not to poll for completion — you are told when one finishes. Status comes from the live registry: running means the agent is working right now, idle means it is loaded but between turns (it may be waiting on agents it started), and ready means it exists only in storage — resumable, not terminal, and not a result waiting to be collected; a `send_message` steers a running child at its nearest step boundary or starts a turn for an idle or ready child, and a direct child remains a `send_message` candidate in every status. The snapshot is not a delivery promise — `send_message` performs the authoritative check and may still fail. Children that could not be read are reported as diagnostics instead of being silently dropped. Scope `descendants` walks the whole tree below you in stable pre-order, annotating each entry with its durable direct-parent session id and depth. You may use `send_message` only for depth-1 entries; deeper entries are candidates for `interrupt_agent` only."""
|
|
"""List your continuable background subagents by durable id and label. Use it to recall which ones you started, not to poll for completion — you are told when one finishes. Status comes from the live registry: running means the agent is working right now, idle means it is loaded but between turns (it may be waiting on agents it started), and ready means it exists only in storage — resumable, not terminal, and not a result waiting to be collected; a `send_message` steers a running child at its nearest step boundary or starts a turn for an idle or ready child, and a direct child remains a `send_message` candidate in every status. The snapshot is not a delivery promise — `send_message` performs the authoritative check and may still fail. Children that could not be read are reported as diagnostics instead of being silently dropped. Scope `descendants` walks the whole tree below you in stable pre-order, annotating each entry with its durable direct-parent session id and depth. You may use `send_message` only for depth-1 entries; deeper entries are candidates for `interrupt_agent` only."""
|
|
|
- async def ralph(self, args: RalphArgs) -> RalphOutput:
|
|
|
|
|
- """Run a foreground fresh-agent Ralph loop toward one immutable objective. Use only when the direct human explicitly asks for Ralph or fresh-agent iteration. Each round opens a new child with no parent conversation or prior child session; the shared workspace is long-term memory, and only a bounded structured report crosses rounds. The call returns when a worker reports completion or a concrete blocker, or at the round limit. Ordinary long-running same-session work belongs to goal tools."""
|
|
|
|
|
async def read(self, args: ReadArgs) -> ReadOutput:
|
|
async def read(self, args: ReadArgs) -> ReadOutput:
|
|
|
"""Read a UTF-8 text file and return line-numbered content."""
|
|
"""Read a UTF-8 text file and return line-numbered content."""
|
|
|
async def read_image(self, args: ReadImageArgs) -> ReadImageOutput:
|
|
async def read_image(self, args: ReadImageArgs) -> ReadImageOutput:
|