@agentproto/runtime 5.8.0 → 5.9.0
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.
- package/dist/catalog-models.mjs +38 -2
- package/dist/catalog-models.mjs.map +1 -1
- package/dist/config-schema.mjs +13 -0
- package/dist/config-schema.mjs.map +1 -1
- package/dist/config.mjs +13 -0
- package/dist/config.mjs.map +1 -1
- package/dist/index.d.ts +761 -60
- package/dist/index.mjs +1225 -217
- package/dist/index.mjs.map +1 -1
- package/dist/resume-strategies.d.ts +22 -1
- package/dist/resume-strategies.mjs +2 -1
- package/dist/resume-strategies.mjs.map +1 -1
- package/dist/session-presence.mjs +13 -0
- package/dist/session-presence.mjs.map +1 -1
- package/dist/{sessions-SrISpFsH.d.ts → sessions-Cse9PhLG.d.ts} +102 -6
- package/dist/user-presets.d.ts +1 -1
- package/package.json +9 -9
|
@@ -3685,8 +3685,11 @@ interface SessionOutcome {
|
|
|
3685
3685
|
* `empty` — no assistant text and no artifacts. */
|
|
3686
3686
|
status: "produced" | "empty";
|
|
3687
3687
|
/** Level 2 only: what a judge/declaration decided the session's work
|
|
3688
|
-
* amounted to.
|
|
3689
|
-
|
|
3688
|
+
* amounted to. `blocked`/`needs-input` never close (flagged instead);
|
|
3689
|
+
* `abandoned`/`partial`/`failed` all close as not-completed
|
|
3690
|
+
* (`endedReason:"steward-abandoned"`), the verdict nuance kept here.
|
|
3691
|
+
* Absent on a plain Level 1 `"derived"` outcome. */
|
|
3692
|
+
verdict?: "done" | "abandoned" | "partial" | "failed" | "blocked" | "needs-input";
|
|
3690
3693
|
/** Level 2 only: who reached `verdict` — a session id (a judge agent) or
|
|
3691
3694
|
* the literal `"steward-rules"` for a deterministic close with no judge
|
|
3692
3695
|
* in the loop. Absent on a plain Level 1 `"derived"` outcome. */
|
|
@@ -3771,6 +3774,36 @@ interface AgentSessionLike {
|
|
|
3771
3774
|
* adapter-specific forensics. Undefined for drivers that don't
|
|
3772
3775
|
* expose a process (e.g. a future non-subprocess transport). */
|
|
3773
3776
|
pid?: number;
|
|
3777
|
+
/** Whether the driver's transport to the adapter is still usable, read
|
|
3778
|
+
* fresh at call time — mirrors `@agentproto/driver-agent-cli`'s
|
|
3779
|
+
* `AgentCliRuntimeSession.isConnected` without importing it (same
|
|
3780
|
+
* driver-decoupled structural-mirror reasoning as `setModel` below).
|
|
3781
|
+
*
|
|
3782
|
+
* The liveness axis `pid` can't cover: an ACP wrapper process commonly
|
|
3783
|
+
* survives its own JSON-RPC stream, so `processAlive` says "alive" while
|
|
3784
|
+
* every RPC rejects with "ACP connection closed". Projected onto
|
|
3785
|
+
* `SessionDescriptor.adapterConnected` at read time and read by the
|
|
3786
|
+
* crash-detect sweep.
|
|
3787
|
+
*
|
|
3788
|
+
* Optional, and `true`-by-absence on purpose: a sandbox proxy or a
|
|
3789
|
+
* print-arm session has no long-lived connection to lose, so only an
|
|
3790
|
+
* explicit `false` is evidence of death. */
|
|
3791
|
+
isConnected?(): boolean;
|
|
3792
|
+
/** Subscribe to transport death — the push half of the axis `isConnected`
|
|
3793
|
+
* polls. Fires at most once, and SYNCHRONOUSLY if the transport is
|
|
3794
|
+
* already gone when the listener is attached, which is what lets the
|
|
3795
|
+
* registry wire this up at bind time without racing a connection that
|
|
3796
|
+
* died during spawn.
|
|
3797
|
+
*
|
|
3798
|
+
* It fires on an ORDERLY teardown too (the host's own `close()` aborts
|
|
3799
|
+
* the same signal). The registry's listener is safe against that by
|
|
3800
|
+
* construction: it routes into `markCrashed`, which refuses any row that
|
|
3801
|
+
* isn't still `running` — and `kill()`/`reapIdle` both flip `status`
|
|
3802
|
+
* before they close the connection.
|
|
3803
|
+
*
|
|
3804
|
+
* Absent for session shapes with no long-lived connection (sandbox
|
|
3805
|
+
* proxy, print arm, future transports). */
|
|
3806
|
+
onDisconnect?(listener: (err: Error) => void): void;
|
|
3774
3807
|
send(message: unknown): AsyncIterable<AgentStreamEvent>;
|
|
3775
3808
|
cancel(): Promise<void>;
|
|
3776
3809
|
/** Resolve a permission request the driver parked in permission-hold mode
|
|
@@ -4394,6 +4427,26 @@ interface SessionDescriptor {
|
|
|
4394
4427
|
* every process. Ephemeral and opt-in (`session_list`/`agent_sessions_list`
|
|
4395
4428
|
* `stats`), never persisted; absent for a row with no live process. */
|
|
4396
4429
|
stats?: Omit<SessionResourceStats, "sessionId">;
|
|
4430
|
+
/** Whether the LIVE agent session's transport to its adapter is still
|
|
4431
|
+
* usable — `AgentCliRuntimeSession.isConnected()`, read at the same
|
|
4432
|
+
* points and with the same ephemeral, never-persisted contract as
|
|
4433
|
+
* {@link processAlive}.
|
|
4434
|
+
*
|
|
4435
|
+
* This is the second, independent liveness axis, and the one `pid` alone
|
|
4436
|
+
* cannot answer. An ACP adapter's wrapper process routinely OUTLIVES its
|
|
4437
|
+
* own JSON-RPC stream: the stream ends (the wrapper closed stdout, the
|
|
4438
|
+
* child it fronts died, the transport errored), `process.kill(pid, 0)`
|
|
4439
|
+
* still succeeds, and the row keeps reporting `running`/`alive` forever
|
|
4440
|
+
* while every prompt rejects with "ACP connection closed". Observed live
|
|
4441
|
+
* on 2026-09-25 (`sess_950d1251`), 40+ minutes after the connection
|
|
4442
|
+
* died, with UIs still showing "Idle · live".
|
|
4443
|
+
*
|
|
4444
|
+
* `false` ⇒ provably dead transport, and the crash-detect sweep's second
|
|
4445
|
+
* ground for marking a row crashed. Absent ⇒ no live binding to ask (a
|
|
4446
|
+
* terminal row, or one whose adapter models no long-lived connection) —
|
|
4447
|
+
* absent is NOT "disconnected", exactly as absent `processAlive` is not
|
|
4448
|
+
* "dead". */
|
|
4449
|
+
adapterConnected?: boolean;
|
|
4397
4450
|
/** Count of live supervisors currently blocked waiting on this session —
|
|
4398
4451
|
* HTTP `GET /sessions/:id/wait` long-polls and `session_monitor`
|
|
4399
4452
|
* subscriptions, both via `monitorSessionWait` (#session-visibility).
|
|
@@ -5431,6 +5484,14 @@ interface SessionSummary {
|
|
|
5431
5484
|
* `unarchiveSession`. Absent on rows archived before this field existed. */
|
|
5432
5485
|
archivedAt?: string;
|
|
5433
5486
|
keepAlive?: boolean;
|
|
5487
|
+
/** Steward wrap-up flag — a blocked/needs-input verdict that deliberately
|
|
5488
|
+
* left the session running; see `SessionDescriptor.wrapupFlag`. */
|
|
5489
|
+
wrapupFlag?: {
|
|
5490
|
+
verdict: "blocked" | "needs-input";
|
|
5491
|
+
note?: string;
|
|
5492
|
+
judgedBy?: string;
|
|
5493
|
+
at: string;
|
|
5494
|
+
};
|
|
5434
5495
|
pinned?: boolean;
|
|
5435
5496
|
pty?: boolean;
|
|
5436
5497
|
name?: string;
|
|
@@ -5519,6 +5580,20 @@ interface SessionSummary {
|
|
|
5519
5580
|
* (i.e. never wrap) to avoid a regression for sessions/shells that don't
|
|
5520
5581
|
* use bracketed paste at all. */
|
|
5521
5582
|
type BracketedPasteMode = "on" | "off" | "unknown";
|
|
5583
|
+
/**
|
|
5584
|
+
* Which death `markCrashed` is recording. Both leave the row equally dead
|
|
5585
|
+
* and equally lazy-resumable — this only picks the `lastError`/banner
|
|
5586
|
+
* wording, so whoever reads the row afterwards knows which liveness axis
|
|
5587
|
+
* actually failed.
|
|
5588
|
+
*
|
|
5589
|
+
* - `"process-gone"` — the pid probe came back dead (`processAlive:
|
|
5590
|
+
* false`). The original, and still the common, crash shape.
|
|
5591
|
+
* - `"transport-closed"` — the adapter's JSON-RPC stream is closed while
|
|
5592
|
+
* its process is (or may be) alive: `AgentSessionLike.isConnected()`
|
|
5593
|
+
* returned false. Invisible to the pid probe, which is exactly why this
|
|
5594
|
+
* ground exists.
|
|
5595
|
+
*/
|
|
5596
|
+
type SessionCrashReason = "process-gone" | "transport-closed";
|
|
5522
5597
|
/**
|
|
5523
5598
|
* Thrown by the lazy resume path when a resumable session has already failed to
|
|
5524
5599
|
* resume `MAX_RESUME_ATTEMPTS` times in a row (`canResume` false on a row that
|
|
@@ -5681,7 +5756,7 @@ type PermissionRespondResult = {
|
|
|
5681
5756
|
* SessionOutcome} / {@link SessionDescriptor.wrapupFlag} for the field
|
|
5682
5757
|
* meanings. */
|
|
5683
5758
|
interface CloseWithOutcomeInput {
|
|
5684
|
-
verdict: "done" | "abandoned" | "blocked" | "needs-input";
|
|
5759
|
+
verdict: "done" | "abandoned" | "partial" | "failed" | "blocked" | "needs-input";
|
|
5685
5760
|
/** Overrides the outcome's derived summary when given (e.g. a judge's own
|
|
5686
5761
|
* written summary) — trimmed the same way `deriveSessionOutcome` trims
|
|
5687
5762
|
* `lastAssistantText`. Omitted keeps whatever `deriveSessionOutcome`
|
|
@@ -6012,6 +6087,16 @@ interface SessionsRegistry {
|
|
|
6012
6087
|
* so `interruptedAtBoot === bootId` means "interrupted by the restart that
|
|
6013
6088
|
* preceded THIS boot" (continue-interrupted). */
|
|
6014
6089
|
readonly bootId: string;
|
|
6090
|
+
/** Absolute base dir this registry's per-session transcripts AND index
|
|
6091
|
+
* sidecars live under — the SAME dir the writers use (`sessions.eventsDir`
|
|
6092
|
+
* config > default). Exposed so `session_search`/`session_recap` (and a
|
|
6093
|
+
* daemon-startup backfill) read the sidecars this registry writes without
|
|
6094
|
+
* re-deriving the path. */
|
|
6095
|
+
readonly transcriptBaseDir: string;
|
|
6096
|
+
/** Flush any throttled index-sidecar writes immediately. Called at
|
|
6097
|
+
* shutdown; exposed so a test can assert a trailing write landed without
|
|
6098
|
+
* waiting out the throttle window. Best-effort and synchronous. */
|
|
6099
|
+
flushSessionIndexes(): void;
|
|
6015
6100
|
/** Book one automatic continue prompt against `id` (increment
|
|
6016
6101
|
* `autoContinueAttempts`, stamp `lastAutoContinueBoot = bootId`) and
|
|
6017
6102
|
* persist. Called by the continue-on-boot pass BEFORE it sends, so the
|
|
@@ -6411,8 +6496,19 @@ interface SessionsRegistry {
|
|
|
6411
6496
|
* violate — it refuses (returns false, no-op) a session that is not a
|
|
6412
6497
|
* live (`running`) agent-cli row, so it is idempotent and safe to call on
|
|
6413
6498
|
* an already-terminal or non-agent-cli row. Returns true iff a row was
|
|
6414
|
-
* actually marked crashed.
|
|
6415
|
-
|
|
6499
|
+
* actually marked crashed.
|
|
6500
|
+
*
|
|
6501
|
+
* `reason` names WHICH death was discovered, and is the only thing that
|
|
6502
|
+
* differs between the sweep's two grounds. Omitted ⇒ `"process-gone"`,
|
|
6503
|
+
* the original pid-probe wording ("adapter process gone (pid N) — session
|
|
6504
|
+
* crashed"). `"transport-closed"` is the case a pid probe cannot see: the
|
|
6505
|
+
* wrapper process is still alive but its ACP stream ended, so the row
|
|
6506
|
+
* would otherwise sit `running`/`alive` forever while every prompt
|
|
6507
|
+
* rejects with "ACP connection closed". Only the `lastError`/banner text
|
|
6508
|
+
* changes — every other effect (status, endedReason, cleared binding,
|
|
6509
|
+
* `session:exited`) is identical, because in both cases the session is
|
|
6510
|
+
* equally dead and equally resumable. */
|
|
6511
|
+
markCrashed(id: string, reason?: SessionCrashReason): boolean;
|
|
6416
6512
|
/** Flip a LIVE, mid-turn agent-cli row to `stalledSinceMs:<ts>` — the
|
|
6417
6513
|
* primitive the turn-liveness watchdog (`runStallWatchdogPass`) drives on
|
|
6418
6514
|
* a periodic sweep when a turn's adapter stream has gone silent past the
|
|
@@ -6943,4 +7039,4 @@ interface RecordOpenedPrInput {
|
|
|
6943
7039
|
url: string;
|
|
6944
7040
|
}
|
|
6945
7041
|
|
|
6946
|
-
export {
|
|
7042
|
+
export { DEFAULT_WORKTREE_ISOLATION as $, type ActivityPolicySlice as A, type SessionCrashReason as B, type CompletionPolicySupervisor as C, type UsageRollup as D, type RemainingQuotaReader as E, type UsageSnapshotRecord as F, type SessionAwaitingQuestion as G, type PolicyRunState as H, type PtyFactory as I, type WorktreeAutoReclaimer as J, type ActivityKind as K, type ActivitySource as L, type MessageUrgency as M, type ActivityState as N, type ActivityWaitingOn as O, type PrResolvedState as P, type QuotaReadableProfile as Q, type RestartPolicy as R, type SessionEvent as S, type TaskLedger as T, type UserPreset as U, type AnthropicReaderConfig as V, type WorktreeProvisioner as W, AnthropicRemainingQuotaReader as X, type AttachPolicyInput as Y, type CommandGroupStats as Z, type CommitSpec as _, type SessionEventType as a, type TaskStatus as a$, DEFAULT_WORKTREE_PROVISION_CONCURRENCY as a0, type EagerResumeFailReason as a1, type EagerResumeOutcome as a2, type EagerResumeSkipReason as a3, type GateSpec as a4, type HostInfo as a5, type JudgeGateSpec as a6, type LabeledProcessStatsReport as a7, type LabeledSessionStats as a8, MAX_MESSAGE_DATA_BYTES as a9, SESSION_ID_ENV as aA, type SessionCurrentPhase as aB, type SessionKind as aC, type SessionMessageFrom as aD, type SessionOutcome as aE, type SessionOutcomeArtifact as aF, type SessionOutcomeCompact as aG, type SessionOutcomeLink as aH, type SessionResourceStats as aI, type SessionSnapshots as aJ, type SessionStatus as aK, type ShellGateSpec as aL, type SpawnAgentInput as aM, type SpawnSessionInput as aN, type StatsDetail as aO, type StoredProfileQuota as aP, TASK_STATUSES as aQ, type TaskCaller as aR, type TaskChangedEvent as aS, type TaskClaimInput as aT, type TaskCreateInput as aU, type TaskGateOutcome as aV, type TaskGateRunner as aW, type TaskLedgerRegistry as aX, type TaskLedgerSessionSlice as aY, type TaskListFilter as aZ, type TaskRecord as a_, MESSAGE_KINDS as aa, MESSAGE_PREAMBLE as ab, MESSAGE_TAG as ac, MESSAGE_URGENCIES as ad, type MessageDeliveryVia as ae, type MessageFilter as af, type MessageRelation as ag, type MessageTreeNode as ah, type OnFailSpec as ai, type OrphanGroup as aj, type PendingPermission as ak, type PermissionRespondInput as al, type PermissionRespondResult as am, type PolicyRunStatus as an, type PricingResolver as ao, type ProcessDetail as ap, type ProcessStatsReport as aq, type ProcessStatsService as ar, type QuotaStoreFile as as, type QuotaStoreOptions as at, type RegisterBrowserInput as au, type RegisterSessionInput as av, type RemainingQuota as aw, type ResourceStats as ax, ResumeDisabledError as ay, SESSION_END_REASONS as az, type SessionEventBus as b, rollupUsage as b$, type TaskUpdateInput as b0, type TaskVerification as b1, type TaskVerifySupervisor as b2, type TaskWriteResult as b3, type TokenPricing as b4, type UsageBucket as b5, type UsageComputeInput as b6, type UsageDetail as b7, type UsageSource as b8, type UserPresetsFile as b9, isMessageAllowed as bA, isProviderLimitError as bB, isTerminalActivityState as bC, listUserPresets as bD, loadQuotaStore as bE, loadUserPresets as bF, loadWorktreeIsolation as bG, matchesMessageFilter as bH, messageFrom as bI, mintMessageId as bJ, normalizeCommand as bK, normalizeWorktreeField as bL, parseAnthropicRateLimitHeaders as bM, parseTaskStatus as bN, parseWindow as bO, parseWorktreeIsolationMode as bP, pickUsageDetail as bQ, policyToActivities as bR, policyWatchesSession as bS, prToActivities as bT, projectSessionUsage as bU, readProfileQuota as bV, recordProfileQuota as bW, renderInboxDigest as bX, renderSessionMessage as bY, renderSessionMessages as bZ, resolveRelation as b_, WORKSPACE_SLUG_ENV as ba, WORKTREE_ISOLATION_ENV as bb, WORKTREE_PROVISION_CONCURRENCY_ENV as bc, type WorktreeDecision as bd, type WorktreeProvisionOutcome as be, type WorktreeProvisionPhase as bf, type WorktreeProvisionProgress as bg, type WorktreeProvisionRequest as bh, type WorktreeRequest as bi, activityCounts as bj, compactOutcome as bk, createProcessStatsService as bl, createSessionMessage as bm, createSupervisorTaskGateRunner as bn, createTaskLedger as bo, decideWorktreeIsolation as bp, deleteUserPreset as bq, deriveSessionOutcome as br, deriveSessionUsage as bs, escapeHumanPrompt as bt, escapeMessageBody as bu, filterActivities as bv, getProcessStatsService as bw, getUserPreset as bx, isClosedTaskStatus as by, isKnownSessionEndReason as bz, type SessionsRegistry as c, sanitizeLabel as c0, saveUserPreset as c1, trackWorktreeProvision as c2, turnToActivities as c3, userPresetsPath as c4, workflowToActivities as c5, type RecentSpawnConfig as c6, deriveRecentSpawnConfigs as c7, touchUserPreset as c8, userPresetSchema as c9, type SessionDescriptor as d, type SessionEndReason as e, type ActivityListFilter as f, type ActivityRecord as g, type ActivityTurnSession as h, type ActivityPrSession as i, type ActivityWorkflowRunSlice as j, type ActivityTaskSlice as k, type AgentsMdResolution as l, type SandboxAppServeSpec as m, type WorktreeField as n, type AgentSessionLike as o, type UsageReadContext as p, type UsageReadResult as q, type MessageKind as r, type SessionMessage as s, type AgentStreamEvent as t, type SessionUsage as u, type ToolCallRecord as v, type StatsSessionDescriptor as w, type ProcRow as x, type ProvisionInFlight as y, type ProvisionTracker as z };
|
package/dist/user-presets.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'zod';
|
|
2
2
|
import './session-config-DxIIuJFY.js';
|
|
3
3
|
import './spawn-defaults-Cp9SGZex.js';
|
|
4
|
-
export {
|
|
4
|
+
export { c6 as RecentSpawnConfig, U as UserPreset, b9 as UserPresetsFile, bq as deleteUserPreset, c7 as deriveRecentSpawnConfigs, bx as getUserPreset, bD as listUserPresets, bF as loadUserPresets, c1 as saveUserPreset, c8 as touchUserPreset, c9 as userPresetSchema, c4 as userPresetsPath } from './sessions-Cse9PhLG.js';
|
|
5
5
|
import '@agentproto/auth';
|
|
6
6
|
import '@agentproto/acp';
|
|
7
7
|
import '@agentproto/command-sandbox';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentproto/runtime",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.9.0",
|
|
4
4
|
"description": "@agentproto/runtime — long-running gateway that turns an agentproto workspace into a live runtime. Composes @agentproto/mcp-server (CRUD verbs) with HTTP transport, HEARTBEAT.md autonomy loop, and append-only conversation persistence. Drop a workspace dir, point your MCP client at it, and the agent ticks on its own.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agentproto",
|
|
@@ -162,39 +162,39 @@
|
|
|
162
162
|
"ws": "^8.21.3",
|
|
163
163
|
"zod": "^4.6.5",
|
|
164
164
|
"@agentproto/a2a": "0.1.0",
|
|
165
|
-
"@agentproto/acp": "0.9.2",
|
|
166
165
|
"@agentproto/adapter-browser": "0.3.0",
|
|
166
|
+
"@agentproto/acp": "0.10.0",
|
|
167
167
|
"@agentproto/agent": "0.2.5",
|
|
168
168
|
"@agentproto/app-client": "0.4.1",
|
|
169
|
-
"@agentproto/app-kit": "1.5.0",
|
|
170
169
|
"@agentproto/apps": "0.18.0",
|
|
171
170
|
"@agentproto/auth": "1.1.2",
|
|
172
|
-
"@agentproto/command-sandbox": "0.3.0",
|
|
173
171
|
"@agentproto/driver": "0.3.0",
|
|
174
|
-
"@agentproto/
|
|
172
|
+
"@agentproto/command-sandbox": "0.3.0",
|
|
173
|
+
"@agentproto/driver-agent-cli": "2.7.1",
|
|
175
174
|
"@agentproto/driver-browser": "0.2.0",
|
|
175
|
+
"@agentproto/app-kit": "1.5.0",
|
|
176
176
|
"@agentproto/driver-http": "0.1.10",
|
|
177
177
|
"@agentproto/eval-reporters": "0.2.20",
|
|
178
178
|
"@agentproto/governance": "0.1.5",
|
|
179
179
|
"@agentproto/governance-engine": "0.1.10",
|
|
180
180
|
"@agentproto/llm-endpoint": "0.11.3",
|
|
181
181
|
"@agentproto/manifest": "0.2.3",
|
|
182
|
-
"@agentproto/mcp-server": "0.5.0",
|
|
183
|
-
"@agentproto/model-catalog": "0.11.3",
|
|
184
|
-
"@agentproto/pairing-host": "0.2.2",
|
|
185
182
|
"@agentproto/plugin-local-browser": "0.3.2",
|
|
186
183
|
"@agentproto/provider-kit": "0.4.6",
|
|
184
|
+
"@agentproto/model-catalog": "0.11.3",
|
|
187
185
|
"@agentproto/provider-presets": "0.7.0",
|
|
186
|
+
"@agentproto/mcp-server": "0.6.0",
|
|
188
187
|
"@agentproto/providers-store": "0.3.21",
|
|
189
188
|
"@agentproto/redaction": "0.2.3",
|
|
189
|
+
"@agentproto/secrets": "1.2.1",
|
|
190
190
|
"@agentproto/review": "0.4.0",
|
|
191
191
|
"@agentproto/routine": "0.3.1",
|
|
192
192
|
"@agentproto/sandbox": "0.8.1",
|
|
193
|
-
"@agentproto/secrets": "1.2.1",
|
|
194
193
|
"@agentproto/telemetry-langfuse": "0.2.18",
|
|
195
194
|
"@agentproto/tool": "0.4.0",
|
|
196
195
|
"@agentproto/workflow": "0.7.1",
|
|
197
196
|
"@agentproto/workflow-loader": "0.2.5",
|
|
197
|
+
"@agentproto/pairing-host": "0.2.3",
|
|
198
198
|
"@agentproto/workflow-runtime": "0.16.0",
|
|
199
199
|
"@agentproto/workspace-brain": "0.4.10"
|
|
200
200
|
},
|