Actions
Every ask, teach, task, import, study, calibrate, forget, and refresh creates an Action. An Action has a durable id, typed output, and an event history you can follow. To wait for an Action, use the waits and watch described below instead of a polling loop.
Terminal statuses
Section titled “Terminal statuses”queued and running mean the work is in progress. Every other status is final, except waiting. A waiting Action is paused until you respond.
| Status | Meaning |
|---|---|
succeeded |
Has the typed output. |
declined |
A deliberate refusal. The pack understood the request but could not or would not act on it. The Action’s error message gives the reason. This is different from failed. |
failed |
Something broke. |
canceled |
Someone asked it to stop. |
waiting |
The work is paused, not finished. It needs something from you. waitingOn.requestId is the id of the batch of questions it is waiting on. waitingOn.request.questions[] holds each question with its id, the options it allows, whether free text is accepted, and its deadline. If the deadline passes, the Action declines. |
An ask that stops as waiting resumes when you answer it with ask-reply. The same Action continues. No second Action is created. No other verb has a reply command. To answer a waiting Action from another verb, start a new Action that includes what it asked for.
While work runs, the status comes with a progress line, phase (for example, “drawing up the plan”). Read it, but don’t make scripts depend on it. Its wording changes. It is absent when it would add nothing to status. An ask updates its phase as it works. If an ask’s phase has not changed for several minutes, the work is stuck.
Get an Action
Section titled “Get an Action”action_get fetches an Action by id: status, typed input and output, error, waitingOn, timestamps, its pack, and phase.
| Input | Type | Required | Meaning |
|---|---|---|---|
actionId |
string (UUID) | Yes | The Action id returned by any verb. It is also the event-stream session id. |
waitSeconds |
integer | No | Wait up to this many seconds (1 to 55) for the Action to stop running. The call returns as soon as the Action reaches a final status or waiting. If the time runs out first, it returns the current state. |
Returns the Action. Check status. Repeat the call with waitSeconds until the status is final. packName is the pack’s name. It is null if the pack can no longer be read.
“Check on that task.”
edisyl action get <action-id> [--quiet]Prints the current status and typed output. Run it again at any time to read the final answer.
| Flag | Behavior |
|---|---|
--quiet |
Print only the data: no hints, no banners. |
List Actions
Section titled “List Actions”action_list lists Actions on the packs whose work you can read, newest first. It shows what was asked, taught, worked on and forgotten, and how each one ended. Filters combine with AND.
| Input | Type | Required | Meaning |
|---|---|---|---|
packId |
string | No | Only this pack’s Actions. |
type |
string | No | One verb: ask, teach, task, import, study, forget, refresh, review, learn, calibrate, reextract, or onboard. |
status |
string | No | One state: queued, running, succeeded, declined, failed, canceled, or waiting. |
since |
date-time | No | Created at or after this instant. |
threadId |
string (UUID) | No | One conversation’s turns, oldest first. |
limit |
integer | No | Default 20, max 100. |
cursor |
date-time | No | The previous response’s nextCursor. |
Returns one row per conversation. Each row is the conversation’s root Action, in the same shape as an action_get result, and includes thread.turnCount. Use nextCursor to get the next page.
Permission: reading a pack’s work needs more access than reading the pack. A pack you can ask may not appear here.
“What did the growth-metrics pack work on this week?”
edisyl action list --pack <pack> --type task --status failed --limit 50| Flag | Behavior |
|---|---|
--pack <pack> |
Filter to one pack, by name, slug, or id. |
--type <type> |
One of ask, teach, task, learn, import, study, calibrate, review, forget, or refresh. |
--status <status> |
One of queued, running, waiting, succeeded, declined, failed, or canceled. |
--limit <n> |
1 to 100. Default 25. |
--quiet |
Print only the data: no hints, no banners. |
Read an Action’s events
Section titled “Read an Action’s events”events shows every event the work emitted, without a summary. Use it to diagnose problems. To follow progress, use get over MCP or watch in the CLI.
action_events lists an Action’s event history, oldest first.
| Input | Type | Required | Meaning |
|---|---|---|---|
actionId |
string (UUID) | Yes | The Action id. |
category |
string | No | Filter to one domain-event category, such as action or knowledge. |
limit |
integer | No | Page size. Default 20, max 500. |
cursor |
string | No | The previous response’s nextCursor, to read the next page. |
Returns the events and a nextCursor. An Action outside your organization returns not found.
“Show me the raw events for that ask.”
edisyl action events <action-id>Prints one raw line per event as it arrives, until the Action reaches a final status or waiting. It exits 0 on succeeded, declined, or waiting, and non-zero on failed or canceled.
| Flag | Behavior |
|---|---|
--interval <duration> |
Poll interval while tailing events. Default 2s. |
--timeout <duration> |
Give up following after this long. Default 30m. |
--quiet |
Print only the data: no hints, no banners. |
Cancel an Action
Section titled “Cancel an Action”cancel is a request. The job itself moves the Action to canceled, and passes the request to all work in progress. An Action that is inside a tool call finishes that call first. The returned record may still show a non-terminal status. Work that has already finished is kept. Canceling an Action with a final status has no effect.
action_cancel requests cancellation of one Action.
| Input | Type | Required | Meaning |
|---|---|---|---|
actionId |
string (UUID) | Yes | The Action to cancel. |
Returns the Action. Call action_get until its status is final.
Permission: only the Action’s creator or an administrator of its pack can cancel it. Anyone else gets not found.
“Stop that task.”
edisyl action cancel <action-id>Follow an Action
Section titled “Follow an Action”Use watch instead of a polling loop. watch describes the work as it progresses. It prints the plan once it exists, and each step when it starts and when it ends, with that step’s one-line summary. It also prints anything that is blocked, and the typed output when the Action finishes. It prints only changes. Over MCP, repeat action_get with waitSeconds.
edisyl action watch <action-id>edisyl action watch <action-id> > result.txt # the result alone- Narration goes to stderr; the result goes to stdout.
- With
-j, narration goes to stdout instead, as newline-delimited JSON progress objects.--quiethides the narration and prints only the output. - Exits
0onsucceeded,declined, orwaiting. Exits non-zero onfailedorcanceled. A decline or a wait prints its reason on stderr. A waitingaskalso prints its batch of questions and theask-replycommand that resumes it. - Interrupting
watchexits0and leaves the Action running. To stop the Action, useaction cancel.
| Flag | Behavior |
|---|---|
--interval <duration> |
Poll interval. Default 3s. |
--timeout <duration> |
Give up following after this long. Default 30m. |
--quiet |
Print only the output. |
Trace what an Action produced
Section titled “Trace what an Action produced”action trace shows an Action’s execution graph. This includes the content records it produced, the agent runs under it, semantic resolutions, retrieval count, and LLM spend. It shows the same details for each child Action. Use it to find a teach’s content record id. forget takes this id.
edisyl action trace <action-id> [--quiet]| Flag | Behavior |
|---|---|
--quiet |
Print only the data: no hints, no banners. |
Explain an answer
Section titled “Explain an answer”action explain shows why an ask answered the way it did. See Ask.
Scripting
Section titled “Scripting”task, teach, and ask all take --id-only, which prints only the Action id. These three commands and ask-reply take --wait with --timeout (default 5m) to wait in the command. For ask and ask-reply, --wait returns at the Action’s next stop. That stop may be another batch of clarifying questions. With -j, they print the server’s whole record. You can extract waitingOn.requestId and the question and option ids with jq. Every action and schedule read command takes --quiet, which hides hints and banners and prints only the data.
Was this page helpful?
Thanks for the feedback.
