@agent-compose/sdk 0.8.5 → 0.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +213 -189
  2. package/dist/agent/agent-context.d.ts +3 -3
  3. package/dist/agent/agent-loop.d.ts +6 -5
  4. package/dist/agent/perf-sampler.d.ts +27 -2
  5. package/dist/agent/run-agent.d.ts +1 -1
  6. package/dist/client.d.ts +119 -54
  7. package/dist/directives.d.ts +3 -3
  8. package/dist/display.d.ts +7 -0
  9. package/dist/errors.d.ts +1 -1
  10. package/dist/generated/agentc-commands.d.ts +34 -0
  11. package/dist/index.d.ts +12 -12
  12. package/dist/index.js +771 -204
  13. package/dist/request-context/request-context.d.ts +1 -1
  14. package/dist/runtimes/_cli-agent.d.ts +185 -68
  15. package/dist/runtimes/_reported-model.d.ts +16 -0
  16. package/dist/runtimes/claude-code.d.ts +60 -1
  17. package/dist/runtimes/claude.d.ts +1 -1
  18. package/dist/runtimes/codex.d.ts +94 -6
  19. package/dist/runtimes/codex.mid-turn-hook.test.d.ts +10 -0
  20. package/dist/runtimes/model-report.test.d.ts +14 -0
  21. package/dist/runtimes/openai-desktop.js +741 -200
  22. package/dist/runtimes/opencode.d.ts +48 -11
  23. package/dist/runtimes/opencode.test.d.ts +14 -0
  24. package/dist/sandbox/baked-clis.d.ts +75 -0
  25. package/dist/sandbox/exec-stream.d.ts +1 -2
  26. package/dist/sandbox/network-policy.d.ts +23 -5
  27. package/dist/sandbox.d.ts +4 -2
  28. package/dist/step-invocation/protocol.d.ts +3 -4
  29. package/dist/step-invocation/server.d.ts +2 -2
  30. package/dist/step-invocation/types.d.ts +1 -1
  31. package/dist/types/api-conversations.d.ts +442 -29
  32. package/dist/types/api-factory.d.ts +99 -10
  33. package/dist/types/api-projects.d.ts +521 -0
  34. package/dist/types/api-runs.d.ts +83 -0
  35. package/dist/types/api-scopes.d.ts +32 -3
  36. package/dist/types/conversation-stream.d.ts +5 -0
  37. package/dist/types/execution-context.d.ts +1 -1
  38. package/dist/types/protocol.d.ts +86 -2
  39. package/dist/types/runtime.d.ts +9 -2
  40. package/dist/types/workflow-metadata.d.ts +2 -4
  41. package/dist/types/workflow-plan.d.ts +1 -3
  42. package/dist/utils/bundler.d.ts +23 -0
  43. package/dist/workflow-steps/observability.d.ts +2 -3
  44. package/dist/workflow-steps/runner.d.ts +5 -8
  45. package/dist/workflow-steps/types.d.ts +8 -10
  46. package/dist/workflow-steps/workflow.d.ts +2 -1
  47. package/dist/workflows/engine.d.ts +3 -5
  48. package/dist/workflows/invoke-child.d.ts +2 -2
  49. package/package.json +2 -2
  50. package/src/agent/agent-context.ts +168 -125
  51. package/src/agent/agent-loop.ts +7 -6
  52. package/src/agent/perf-sampler.ts +54 -3
  53. package/src/agent/run-agent.ts +1 -1
  54. package/src/client.ts +226 -71
  55. package/src/directives.ts +3 -3
  56. package/src/display.ts +12 -0
  57. package/src/errors.ts +1 -0
  58. package/src/generated/agentc-commands.ts +571 -0
  59. package/src/index.ts +57 -21
  60. package/src/pause/pause-core.ts +2 -1
  61. package/src/request-context/request-context.ts +1 -1
  62. package/src/runtimes/_cli-agent.ts +318 -122
  63. package/src/runtimes/_reported-model.ts +24 -0
  64. package/src/runtimes/claude-code.ts +195 -12
  65. package/src/runtimes/claude.ts +9 -2
  66. package/src/runtimes/codex.ts +188 -19
  67. package/src/runtimes/opencode.ts +195 -26
  68. package/src/sandbox/baked-clis.ts +86 -0
  69. package/src/sandbox/exec-stream.ts +1 -2
  70. package/src/sandbox/network-policy.ts +51 -7
  71. package/src/sandbox/providers/e2b.ts +3 -3
  72. package/src/sandbox/providers/vercel.ts +6 -6
  73. package/src/sandbox.ts +8 -2
  74. package/src/step-invocation/invoker.ts +2 -6
  75. package/src/step-invocation/protocol.ts +3 -4
  76. package/src/step-invocation/server.ts +2 -2
  77. package/src/types/api-conversations.ts +366 -23
  78. package/src/types/api-factory.ts +95 -10
  79. package/src/types/api-projects.ts +477 -0
  80. package/src/types/api-runs.ts +73 -0
  81. package/src/types/api-scopes.ts +32 -3
  82. package/src/types/conversation-stream.ts +5 -0
  83. package/src/types/execution-context.ts +1 -1
  84. package/src/types/protocol.ts +91 -2
  85. package/src/types/runtime.ts +8 -2
  86. package/src/types/sandbox-environment.ts +1 -2
  87. package/src/types/workflow-metadata.ts +2 -4
  88. package/src/types/workflow-plan.ts +1 -3
  89. package/src/utils/bundler.ts +88 -19
  90. package/src/workflow-steps/observability.ts +2 -3
  91. package/src/workflow-steps/runner.ts +5 -8
  92. package/src/workflow-steps/types.ts +8 -10
  93. package/src/workflow-steps/workflow.ts +2 -1
  94. package/src/workflows/engine.ts +3 -5
  95. package/src/workflows/invoke-child.ts +2 -2
  96. package/dist/generated/verb-synopsis.d.ts +0 -34
  97. package/dist/pause/__tests__/errors.test.d.ts +0 -1
  98. package/dist/pause/__tests__/wrappers.test.d.ts +0 -1
  99. package/dist/step-invocation/__tests__/protocol.test.d.ts +0 -1
  100. package/src/generated/verb-synopsis.ts +0 -544
package/src/index.ts CHANGED
@@ -100,12 +100,15 @@ export type {
100
100
  AgentMessageDone,
101
101
  AgentMessageError,
102
102
  AgentMessageUsage,
103
+ AgentMessageModelUsage,
104
+ AgentMessagePlanLimits,
103
105
  AgentMessageTaskNotification,
104
106
  AgentMessageTaskProgress,
105
107
  WorkflowProgressEntry,
106
108
  AgentMessageHarnessNotice,
107
109
  AgentMessageCompaction,
108
110
  AgentMessageSubagentUserMessage,
111
+ AgentMessageModelReport,
109
112
  AgentStatus,
110
113
  } from "./types/protocol.js";
111
114
 
@@ -125,12 +128,14 @@ export type {
125
128
  InlineWorkflowPayload, InvokeInlineOptions, InvokeInlineAndWaitOptions,
126
129
  ListSnapshotsOptions, TemplateRow, ListTemplatesOptions,
127
130
  CreateFactoryInput, UpdateFactoryInput,
128
- SecretOptions, SetSecretResult, SecretListEntry, SessionSecretEntry, SessionSecretInput, SessionSecretRequestCreated, SessionSecretRequestStatus, SessionSecretRequestSummary, VaultRequestKind, VaultCatalogEntry,
131
+ SecretOptions, SetSecretResult, SecretListEntry, SessionSecretEntry, SessionSecretInput, SessionSecretRequestCreated, SessionSecretRequestStatus, SessionSecretRequestSummary, VaultRequestKind, VaultKeyShape, VaultCatalogEntry,
129
132
  CreateApiKeyInput, StreamRunLogsOptions,
130
133
  TeamMember, Mention, CreateMentionsInput,
131
134
  EventSubjectType, EventRow, ReportEventInput, ListEventsOptions, ListEventsResult,
132
135
  RunLogLine, ListRunLogsOptions,
133
136
  RunListEntry, ListRunsOptions, RunDetail,
137
+ RunStartedBy, WorkflowActivityRun, WorkflowActivityHead, ListWorkflowActivityOptions, ListWorkflowRunsOptions,
138
+ WorkflowActivityPage, WorkflowRunsPage,
134
139
  FundingLane, RunFundingStamp, RunFundingUsageRow, RunFundingResponse,
135
140
  RunStepUsage, RunStepUsageResponse,
136
141
  RegisteredRuntime, RunState, RunStatus, FactoryRow, SnapshotListEntry, SnapshotListResponse,
@@ -141,9 +146,12 @@ export type {
141
146
  SendAgentMessageOptions, SendAgentMessageResponse,
142
147
  AnswerSteerOptions,
143
148
  ResumePauseOptions, ResumePauseResponse, ResumePauseSuccess, ResumePausePending, ResumePauseActor,
144
- ConversationMessagePart, ConversationRow, ConversationMessageRow,
145
- CreateChatInput, ChannelIvyState, ProjectIvyConnection,
149
+ ConversationMessagePart, ConversationRow, ConversationProject, ConversationMessageRow,
150
+ CreateChatInput, ChannelIvyState, IvyConnection, HiddenIvyConnection, IvyConnectionsView, IvyConnectionScope, ListingPage,
151
+ DriveShareItem, DriveShare, HiddenDriveShare, DriveSharesView,
152
+ WorkspaceConnection, WorkspaceConnectionAudienceEntry, WorkspaceConnectionsScopeView,
146
153
  ConversationsPage, ConversationDetail, ConversationThread,
154
+ ConversationUnreadSummary, ConversationUnreadThreads, ConversationReadInput, ConversationReadResult,
147
155
  ConversationPageContext, SendConversationMessageInput, SendConversationMessageResult,
148
156
  UnnotifiedMention,
149
157
  ConversationTurnState, ConversationPresenceSnapshot, StreamConversationOptions, AgentListRow,
@@ -151,8 +159,11 @@ export type {
151
159
  // Cloud-session developer surface (ADR-0052)
152
160
  SessionPreview, PreviewOpened, OpenPreviewInput, SessionForked, BackgroundWorkHeld,
153
161
  BackgroundWorkChildDecl, BackgroundWorkStatus,
162
+ // Session waits (owner ruling 2026-09-23: the platform senses, the session is woken)
163
+ SessionWaitKind, SessionWaitState, CreateSessionWaitInput, SessionWait, SessionWaitCheck, SessionWaitCheckResult, SessionWaitCheckReview, SessionWaitCreated, SessionWaitList,
154
164
  // Session branch proposals (ADR-0053)
155
165
  SessionFileChange, SessionChangeSet, SessionChangeStats, SessionDiffReviewBound, ReviewSuggestion,
166
+ SessionFileHold, SessionFilePlane,
156
167
  ReviewSuggestionInput, ReviewNotesPublished, ReviewGitCredential, SessionReviewDocument,
157
168
  ReviewSuggestionDecision, ReviewSuggestionDecisions,
158
169
  SessionMergeReportDetail, SessionMergeReport, SessionMergeGated, SessionDiscardReport,
@@ -160,7 +171,7 @@ export type {
160
171
  // User drive mounts (`agentc files mount` on a human's own machine)
161
172
  DriveMountSession, CreateDriveMountSessionInput,
162
173
  // Channel-attached sessions (ADR-0057)
163
- ChannelSessionStatus, ChannelSessionRow, ChannelSessionsResponse, SessionChannelMessagePosted,
174
+ ChannelSessionStatus, ChannelSessionRow, ChannelWorkerFacts, ChannelSessionsResponse,
164
175
  // Session→session messaging + branch claims
165
176
  SessionDirectMessageSent, BranchClaimInfo, BranchClaimGranted, BranchClaimsReleased, BranchClaimState,
166
177
  // Sandbox perf history (session_perf_rollups)
@@ -173,10 +184,16 @@ export type {
173
184
  DocumentCapability, TemplateCapability, ScopeGrant, ArtifactScope,
174
185
  RunContext, SetScopeGrantsInput, SetTemplateScopeInput, TemplateDetail,
175
186
  // Projects (ADR-0045 projects extension)
176
- Project, ProjectsPage, ProjectRole, ProjectMember,
177
- ProjectObject, ProjectObjectsPage, ProjectSkippedFile, ProjectPreviewFile,
187
+ Project, ProjectUpdate, ProjectsPage, ProjectRole, ProjectMember,
188
+ ProjectObject, ProjectObjectsPage, ProjectObjectCounts, ProjectSkippedFile, ProjectPreviewFile,
178
189
  ProjectAddPreview, AddProjectObjectInput, AddProjectObjectResult,
179
190
  RefreshProjectObjectResult,
191
+ ProjectStatus, ProjectStatusThread, ProjectStatusTask, ProjectStatusPerson, ProjectStatusWorker, ProjectStatusActivity,
192
+ ProjectStatusActivityKind, ProjectStatusWaitingOn, ProjectStatusWaitingCount, ProjectStatusCounts,
193
+ ThreadStatus, ThreadStatusWorker, ThreadStatusWorkerState, ThreadStatusWorkerEffort, WorkerFunding, ThreadStatusTodo, ThreadStatusDirector, ThreadStatusOutput, ThreadStatusEvent,
194
+ ThreadStatusWaitingOn, ThreadStatusAssignee, ThreadStatusTodoActivity, ChatTodoPatch, ChatTodoComment,
195
+ ChatWork, ChatWorkThread,
196
+ MeStatus, MeStatusCounts,
180
197
  // Break-glass compliance sessions (ADR-0051)
181
198
  ComplianceScopeKind, ComplianceStatus, ComplianceSession, ComplianceAccess,
182
199
  RequestComplianceSessionInput, ListComplianceSessionsOptions, ComplianceSessionsPage,
@@ -259,7 +276,9 @@ export type { GatewayModelId } from "ai";
259
276
  // CLI-agent runtimes — drive an external agentic CLI (codex / amp) inside the
260
277
  // sandbox and stream-parse its JSONL. No heavy npm deps (the CLI lives in the
261
278
  // sandbox image), so these are root-exported like claudeRuntime.
262
- export { createCodexRuntime, codexSpec } from "./runtimes/codex.js";
279
+ export {
280
+ createCodexRuntime, codexSpec, CODEX_PLATFORM_HOOKS, RTK_CODEX_HOOK_COMMAND, CODEX_MID_TURN_HOOK_COMMAND,
281
+ } from "./runtimes/codex.js";
263
282
  export type { CodexRuntimeConfig, CodexReasoningEffort } from "./runtimes/codex.js";
264
283
  export { default as codexRuntime } from "./runtimes/codex.js";
265
284
  // Reasoning-effort level a CLI runtime turn may carry (claude-code / codex).
@@ -270,27 +289,34 @@ export type { CliReasoningEffort } from "./runtimes/_cli-agent.js";
270
289
  // of truth for the guest file contract. Server-side consumers only (these
271
290
  // modules read process.env at load; never import them into a workflow VM).
272
291
  export {
273
- shellQuote, uniquePromptPath,
292
+ shellQuote, uniquePromptPath, recoverLaunchPid,
274
293
  turnLivenessProbeCommand, parseTurnProbeOutput, livenessVerdictFromReading,
275
294
  runnerBusySentinelFragment, exitEventPushCommand,
276
295
  injectAppendAndAckCommand, INJECT_ACK_EXEC_TIMEOUT_MS, wrapMidTurnUserMessage,
277
- streamInputFeederFragment, sessionEnvSourceFragment, credEnvSourceFragment,
296
+ stdinStreamInputOf, toolHookInboxFragment, MID_TURN_INBOX_ENV, MID_TURN_DELIVERED_ENV,
297
+ streamInputFeederFragment, sessionEnvSourceFragment, sessionEnvFingerprintCommand, credEnvSourceFragment,
278
298
  residentFeederFragment, residentIdleCheckFragment, residentIdleWatchdogFragment,
279
- residentResultCountCommand, deferredExitEventPushCommand,
280
- RESIDENT_IDLE_TTL_S, RESIDENT_WATCHDOG_POLL_S, RESIDENT_RESULT_LINE_PREFIX,
299
+ residentResultCountCommand, residentLastResultCommand, cliResultCountCommand,
300
+ deferredExitEventPushCommand,
301
+ RESIDENT_IDLE_TTL_S, RESIDENT_WATCHDOG_POLL_S, CLI_RESULT_LINE_AWK,
281
302
  SESSION_ENV_FILE_RELPATH,
282
303
  LAUNCH_EXEC_TIMEOUT_MS, TURN_PROBE_TIMEOUT_MS,
283
304
  INSTALL_PROBE_TIMEOUT_MS, CLI_INSTALL_TIMEOUT_MS,
284
305
  RUNNER_HEARTBEAT_INTERVAL_SECONDS, RUNNER_HEARTBEAT_STALE_MS,
306
+ RUNNER_BUSY_TASK_FRESH_MINUTES,
307
+ } from "./runtimes/_cli-agent.js";
308
+ export type {
309
+ TurnProbeReading, CliAgentSpec, MidTurnEnvelopeOptions,
310
+ MidTurnInputSpec, StdinStreamInputSpec, ToolHookInputSpec,
285
311
  } from "./runtimes/_cli-agent.js";
286
- export type { TurnProbeReading, CliAgentSpec } from "./runtimes/_cli-agent.js";
287
312
  // Guest perf sampling (the `.perf` token contract riding the durable trio).
288
313
  export {
289
314
  perfSamplerFunctionFragment, standalonePerfProbeCommand,
290
- parsePerfToken, parsePerfProbeOutput,
315
+ parsePerfToken, parsePerfProbeOutput, parseTopProcesses,
291
316
  PERF_SAMPLE_EVERY_BEATS, PERF_PROBE_WINDOW_SECONDS, PERF_TOKEN_MAX_CHARS,
317
+ PERF_TOP_PROCESSES, PERF_TOP_NAME_MAX,
292
318
  } from "./agent/perf-sampler.js";
293
- export type { GuestPerfSample } from "./agent/perf-sampler.js";
319
+ export type { GuestPerfSample, GuestTopProcess } from "./agent/perf-sampler.js";
294
320
  export { createAmpRuntime } from "./runtimes/amp.js";
295
321
  export type { AmpRuntimeConfig } from "./runtimes/amp.js";
296
322
  export { default as ampRuntime } from "./runtimes/amp.js";
@@ -310,7 +336,10 @@ export { default as droidRuntime } from "./runtimes/droid.js";
310
336
  // adapter) — the cloud-hostable counterpart of `claudeRuntime` (claude.ts,
311
337
  // which drives the Agent SDK in the calling process and so can never run a
312
338
  // server-driven cloud-session turn).
313
- export { createClaudeCodeRuntime, claudeCodeSpec, CLAUDE_CODE_ACP_ADAPTER, CLAUDE_CODE_EFFORT_LEVELS } from "./runtimes/claude-code.js";
339
+ export {
340
+ createClaudeCodeRuntime, claudeCodeSpec, CLAUDE_CODE_ACP_ADAPTER, CLAUDE_CODE_EFFORT_LEVELS,
341
+ CLAUDE_CODE_PLATFORM_SETTINGS, RTK_BASH_HOOK_COMMAND,
342
+ } from "./runtimes/claude-code.js";
314
343
  export type { ClaudeCodeRuntimeConfig } from "./runtimes/claude-code.js";
315
344
  export { default as claudeCodeRuntime } from "./runtimes/claude-code.js";
316
345
 
@@ -324,7 +353,7 @@ export type { RunEvent } from "./types/events.js";
324
353
  // Sandbox providers
325
354
  export { createSandbox, reconnectSandbox, killAllSandboxes, killSandboxById,
326
355
  getSandboxQuotas, listOwnedSandboxes, deleteSandboxSnapshot, snapshotResolves,
327
- isSandboxSourceNotFoundError,
356
+ isSandboxSourceNotFoundError, openEgressExcept,
328
357
  makeSandboxProvider, makeDesktopSandboxProvider,
329
358
  parseSseExecStream, AGENT_COMPOSE_TAG,
330
359
  SANDBOX_SIZES, SANDBOX_MACHINES, SANDBOX_VCPUS, DEFAULT_SANDBOX_SIZE, SESSION_DEFAULT_SANDBOX_SIZE,
@@ -335,7 +364,14 @@ export { createSandbox, reconnectSandbox, killAllSandboxes, killSandboxById,
335
364
  isPlatformE2bTemplateAlias,
336
365
  // ADR-0038 "Computer" — the per-member persistent desktop machine template.
337
366
  E2B_DEVBOX_TEMPLATE, E2B_DEVBOX_SPEC, E2B_DEVBOX_RECIPE_VERSION,
338
- e2bDevboxTemplateRef } from "./sandbox.js";
367
+ e2bDevboxTemplateRef,
368
+ // Harness CLI versions the E2B session image bakes (one source for the
369
+ // image recipe and the runtime specs' on-demand installs), the rtk the
370
+ // sessions' shell hooks call, and the switches that keep each CLI from
371
+ // updating itself inside a machine.
372
+ CLAUDE_CODE_VERSION, CODEX_CLI_VERSION, OPENCODE_CLI_VERSION, RTK_VERSION,
373
+ CLAUDE_CODE_NO_SELF_UPDATE_ENV, CODEX_NO_SELF_UPDATE_CONFIG_LINE, OPENCODE_NO_SELF_UPDATE_CONFIG,
374
+ } from "./sandbox.js";
339
375
  export { SandboxUnavailableError, SANDBOX_UNAVAILABLE_PREFIX } from "./sandbox-errors.js";
340
376
  export type {
341
377
  SandboxCreateOpts, SandboxNetworkPolicy, SandboxNetworkHeaderTransform,
@@ -435,12 +471,12 @@ export type { AgentOpts } from "./agent/run-agent.js";
435
471
  export { AGENT_COMPOSE_MANUAL, buildAgentContextDoc, writeAgentContext, buildAddedSessionBrief } from "./agent/agent-context.js";
436
472
  export type { AgentConnectorInfo, AddedSessionBriefParams } from "./agent/agent-context.js";
437
473
  // The complete `agentc` verb list, GENERATED from the CLI's commander
438
- // registry (cli/scripts/generate-verb-synopsis.ts) and checked in. Both
474
+ // registry (cli/scripts/generate-command-list.ts) and checked in. Both
439
475
  // agent-facing contexts ship it verbatim — the in-sandbox manual above and
440
476
  // the server's cloud-session prompt — so a verb can never drift out of what
441
477
  // agents believe the CLI can do. Never hand-edit the generated module.
442
- export { AGENTC_VERBS, AGENTC_VERB_SYNOPSIS, AGENTC_VERB_SYNOPSIS_MD } from "./generated/verb-synopsis.js";
443
- export type { AgentcVerbEntry } from "./generated/verb-synopsis.js";
478
+ export { AGENTC_COMMANDS, AGENTC_COMMAND_LIST, AGENTC_COMMAND_LIST_MD } from "./generated/agentc-commands.js";
479
+ export type { AgentcCommand } from "./generated/agentc-commands.js";
444
480
  export {
445
481
  AC_OPEN_PATH, AC_OPEN_STATE_DIR, AC_OPEN_SHIM_PATHS, AC_OPEN_SCRIPT, AC_OPEN_SHIM,
446
482
  installDesktopOpenCmd,
@@ -478,7 +514,7 @@ export {
478
514
  DRIVE_PATH_MAX_CHARS, isPlausibleDrivePath,
479
515
  serializeDisplayMarker, parseDisplayMarker, findDisplayMarker, clampPlanEntries,
480
516
  clampTableData, clampChartSeries, clampChartAxisLabel, clampAskOptions,
481
- detectAgentcInvocation, shellWords, createDisplayPromoter,
517
+ detectAgentcInvocation, shellWords, createDisplayPromoter, DISPLAY_PROMOTED_TOOL_NAMES,
482
518
  } from "./display.js";
483
519
  export type {
484
520
  DisplayMarker, DisplayPlanEntry, DisplayPlanStatus,
@@ -169,7 +169,8 @@ function scopeOf(coord: PauseCoordinate): string {
169
169
 
170
170
  // Per-scope ordinal. Module-level so it resets on a fresh subprocess (the
171
171
  // resume boundary) — which is exactly what makes the k-th pause in a scope
172
- // recompute the same id across re-entry. Mirrors `nextAgentCallIndexByStep`.
172
+ // recompute the same id across re-entry. Mirrors the per-step agent-call
173
+ // counter (`nextAgentCallInActiveStep`).
173
174
  const pauseOrdinalByScope = new Map<string, number>();
174
175
 
175
176
  function nextPauseOrdinal(scope: string): number {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * RequestContext — one typed bag carrying tenant identity + freeform
3
3
  * per-run state across the boundary between server, dispatch, runner,
4
- * workflow body, agent loop, and (future) processors.
4
+ * workflow body, agent loop, and processors.
5
5
  *
6
6
  * Two halves:
7
7
  *