@agentproto/runtime 2.12.0 → 3.2.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/command-allowlist.d.ts +38 -1
- package/dist/command-allowlist.mjs +25 -1
- package/dist/command-allowlist.mjs.map +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.mjs.map +1 -1
- package/dist/credential-discovery.d.ts +161 -0
- package/dist/credential-discovery.mjs +305 -0
- package/dist/credential-discovery.mjs.map +1 -0
- package/dist/index.d.ts +458 -78
- package/dist/index.mjs +3536 -1523
- package/dist/index.mjs.map +1 -1
- package/dist/providers-store.d.ts +1 -0
- package/dist/resume-strategies.mjs +38 -1
- package/dist/resume-strategies.mjs.map +1 -1
- package/dist/session-presence.mjs.map +1 -1
- package/dist/tool-envelope.d.ts +1 -42
- package/dist/tool-envelope.mjs +1 -58
- package/dist/tool-envelope.mjs.map +1 -1
- package/package.json +41 -35
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { CostBudget, AuthProfile, CostBudgetScope } from '@agentproto/auth';
|
|
|
12
12
|
export { CostBudget, CostBudgetScope } from '@agentproto/auth';
|
|
13
13
|
import { R as ResolvedContextContinuityPolicy } from './context-continuity-ib9_bVYM.js';
|
|
14
14
|
import { SandboxMode } from '@agentproto/command-sandbox';
|
|
15
|
-
import { AdapterHandle, SetupField, AdapterResolver, AdapterLister, HarnessCapabilities, AdapterEntry } from '@agentproto/provider-kit';
|
|
15
|
+
import { AdapterHandle, SetupField, AdapterResolver, AdapterLister, CredsStore, HarnessCapabilities, AdapterEntry } from '@agentproto/provider-kit';
|
|
16
16
|
import { R as ResolvedAuthSpec, D as DeclaredAdapterOption, A as AdapterAuthDescriptor } from './spawn-defaults-D4W661ui.js';
|
|
17
17
|
export { a as AuthEcho, b as AuthResolutionError, C as CLAUDE_CODE_OAUTH_SOURCE, c as CredentialSource, d as DefaultsAdapterAuthConfig, e as DefaultsAdapterConfig, f as ResolveSubscriptionCredentialInput, g as ResolvedSpawnAuthMaterial, h as ResolvedSpawnDefaults, S as SpawnDefaultsConfig, i as SubscriptionCredentialResolution, j as SubscriptionSourceError, k as credentialFingerprint, n as normalizeSkillsOption, r as resolveAuthSpec, l as resolveSpawnDefaults, m as resolveSubscriptionCredential } from './spawn-defaults-D4W661ui.js';
|
|
18
18
|
import { CatalogModelsQuery, CatalogModelsResponse } from './catalog-models.js';
|
|
@@ -22,6 +22,9 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
22
22
|
import { SandboxProvider } from '@agentproto/sandbox';
|
|
23
23
|
import { BrainManager, ExportedSessionLike } from '@agentproto/workspace-brain';
|
|
24
24
|
export { BrainManager, BrainStats, IngestReport, IngestResult } from '@agentproto/workspace-brain';
|
|
25
|
+
import * as _agentproto_tool from '@agentproto/tool';
|
|
26
|
+
import { ToolContext } from '@agentproto/tool';
|
|
27
|
+
import { DriverHandle } from '@agentproto/driver';
|
|
25
28
|
export { UserPreset, UserPresetsFile, deleteUserPreset, getUserPreset, listUserPresets, loadUserPresets, saveUserPreset, userPresetsPath } from './user-presets.js';
|
|
26
29
|
import { ResolvedModel } from '@agentproto/model-catalog';
|
|
27
30
|
import { FrameSink, E2eFrameSink } from '@agentproto/acp/tunnel';
|
|
@@ -722,10 +725,18 @@ interface ActivityPolicySlice {
|
|
|
722
725
|
policyId: string;
|
|
723
726
|
/** Representative session id (fan-in group[0]). */
|
|
724
727
|
sessionId: string;
|
|
725
|
-
/**
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
728
|
+
/**
|
|
729
|
+
* The full fan-in group being watched. OPTIONAL because supervisor state
|
|
730
|
+
* persisted before fan-in (WP6) predates this field — legacy rows on disk
|
|
731
|
+
* carry only `sessionId`, and the type must not lie about that.
|
|
732
|
+
*/
|
|
733
|
+
sessionIds?: readonly string[];
|
|
734
|
+
/**
|
|
735
|
+
* Group members that have NOT yet finished their turn. OPTIONAL for the
|
|
736
|
+
* same reason as `sessionIds`: pre-fan-in persisted supervisor state omits
|
|
737
|
+
* it.
|
|
738
|
+
*/
|
|
739
|
+
pending?: readonly string[];
|
|
729
740
|
status: "watching" | "queued" | "gating" | "acting" | "nudging" | "awaiting-ack" | "done" | "blocked" | "cancelled";
|
|
730
741
|
startedAt: string;
|
|
731
742
|
endedAt?: string;
|
|
@@ -1684,7 +1695,7 @@ declare function createTaskLedger(opts: {
|
|
|
1684
1695
|
* and session_monitor MCP tool (long-poll multiplexed).
|
|
1685
1696
|
*/
|
|
1686
1697
|
|
|
1687
|
-
type SessionEventType = "session:turn-end" | "session:awaiting-input" | "session:awaiting-input-flagged" | "session:awaiting-question-answered" | "session:permission-request" | "session:permission-resolved" | "session:exited" | "session:reaped" | "session:stalled" | "session:stall-cleared" | "session:watcher-attached" | "session:watcher-detached" | "session:bg-tasks-parked" | "session:bg-tasks-cleared" | "session:resumed" | "session:spawned" | "session:command-done" | "session:model-changed" | "session:config-changed" | "session:renamed" | "session:pinned-changed" | "policy:passed" | "policy:failed" | "policy:commit-ready" | "policy:committed" | "cron:fired" | "cron:succeeded" | "cron:failed" | "activity:changed" | "task:changed" | "workflow:gate-report" | "session:harness-warning";
|
|
1698
|
+
type SessionEventType = "session:turn-end" | "session:awaiting-input" | "session:awaiting-input-flagged" | "session:awaiting-question-answered" | "session:permission-request" | "session:permission-resolved" | "session:exited" | "session:reaped" | "session:stalled" | "session:stall-cleared" | "session:watcher-attached" | "session:watcher-detached" | "session:bg-tasks-parked" | "session:bg-tasks-cleared" | "session:resumed" | "session:spawned" | "session:command-done" | "session:model-changed" | "session:config-changed" | "session:renamed" | "session:pinned-changed" | "policy:passed" | "policy:failed" | "policy:commit-ready" | "policy:committed" | "cron:fired" | "cron:succeeded" | "cron:failed" | "activity:changed" | "task:changed" | "workflow:gate-report" | "workflow:suspended" | "workflow:suspend-resumed" | "session:harness-warning";
|
|
1688
1699
|
/**
|
|
1689
1700
|
* Fixed severity vocabulary for a judge-gate finding (WP-D). Deliberately
|
|
1690
1701
|
* small and fixed so `policy_status` output is comparable across different
|
|
@@ -2343,6 +2354,31 @@ interface WorkflowApprovalResolvedEvent {
|
|
|
2343
2354
|
note?: string;
|
|
2344
2355
|
ts: string;
|
|
2345
2356
|
}
|
|
2357
|
+
/**
|
|
2358
|
+
* Emitted by the workflow runner (`workflow-runner.ts`) when a `kind:
|
|
2359
|
+
* "suspend"` step parks its run awaiting an external event — the run's
|
|
2360
|
+
* status flips to `awaiting-input` with a durable `awaitingSuspend` record
|
|
2361
|
+
* (AIP-15 conformance rule 7), and `workflow_escalation_resolve`'s suspend
|
|
2362
|
+
* form resumes it. Same bus distribution as every other lifecycle event.
|
|
2363
|
+
*/
|
|
2364
|
+
interface WorkflowSuspendedEvent {
|
|
2365
|
+
type: "workflow:suspended";
|
|
2366
|
+
runId: string;
|
|
2367
|
+
stepId: string;
|
|
2368
|
+
on: readonly string[];
|
|
2369
|
+
ts: string;
|
|
2370
|
+
}
|
|
2371
|
+
/**
|
|
2372
|
+
* Emitted by the workflow runner when a parked `kind: "suspend"` step is
|
|
2373
|
+
* resumed — live (the run continues) or after a daemon restart (the run's
|
|
2374
|
+
* execution could not resume and it is marked failed with a clear reason).
|
|
2375
|
+
*/
|
|
2376
|
+
interface WorkflowSuspendResumedEvent {
|
|
2377
|
+
type: "workflow:suspend-resumed";
|
|
2378
|
+
runId: string;
|
|
2379
|
+
stepId: string;
|
|
2380
|
+
ts: string;
|
|
2381
|
+
}
|
|
2346
2382
|
/**
|
|
2347
2383
|
* Emitted when a `kind: "agent"` step's `harness` block declared a field the
|
|
2348
2384
|
* spawn couldn't honor (today: `harness.tools` — no adapter exposes a
|
|
@@ -2357,7 +2393,7 @@ interface SessionHarnessWarningEvent {
|
|
|
2357
2393
|
label?: string;
|
|
2358
2394
|
ts: string;
|
|
2359
2395
|
}
|
|
2360
|
-
type SessionEvent = SessionTurnEndEvent | SessionAwaitingInputEvent | SessionAwaitingInputFlaggedEvent | SessionAwaitingQuestionAnsweredEvent | SessionPermissionRequestEvent | SessionPermissionResolvedEvent | SessionExitedEvent | SessionReapedEvent | SessionStalledEvent | SessionStallClearedEvent | SessionWatcherAttachedEvent | SessionWatcherDetachedEvent | SessionBgTasksParkedEvent | SessionBgTasksClearedEvent | SessionResumedEvent | SessionSpawnedEvent | SessionCommandDoneEvent | SessionModelChangedEvent | SessionConfigChangedEvent | SessionRenamedEvent | SessionPinnedEvent | PolicyPassedEvent | PolicyFailedEvent | PolicyCommitReadyEvent | PolicyCommittedEvent | CronFiredEvent | CronSucceededEvent | CronFailedEvent | ActivityChangedEvent | TaskChangedEvent | WorkflowGateReportEvent | WorkflowApprovalRequestedEvent | WorkflowApprovalResolvedEvent | SessionHarnessWarningEvent;
|
|
2396
|
+
type SessionEvent = SessionTurnEndEvent | SessionAwaitingInputEvent | SessionAwaitingInputFlaggedEvent | SessionAwaitingQuestionAnsweredEvent | SessionPermissionRequestEvent | SessionPermissionResolvedEvent | SessionExitedEvent | SessionReapedEvent | SessionStalledEvent | SessionStallClearedEvent | SessionWatcherAttachedEvent | SessionWatcherDetachedEvent | SessionBgTasksParkedEvent | SessionBgTasksClearedEvent | SessionResumedEvent | SessionSpawnedEvent | SessionCommandDoneEvent | SessionModelChangedEvent | SessionConfigChangedEvent | SessionRenamedEvent | SessionPinnedEvent | PolicyPassedEvent | PolicyFailedEvent | PolicyCommitReadyEvent | PolicyCommittedEvent | CronFiredEvent | CronSucceededEvent | CronFailedEvent | ActivityChangedEvent | TaskChangedEvent | WorkflowGateReportEvent | WorkflowApprovalRequestedEvent | WorkflowApprovalResolvedEvent | WorkflowSuspendedEvent | WorkflowSuspendResumedEvent | SessionHarnessWarningEvent;
|
|
2361
2397
|
interface SessionEventBus {
|
|
2362
2398
|
emit(ev: SessionEvent): void;
|
|
2363
2399
|
/** Subscribe to a specific event type. Returns an unsubscribe fn. */
|
|
@@ -2368,6 +2404,45 @@ interface SessionEventBus {
|
|
|
2368
2404
|
onAny(handler: (ev: SessionEvent) => void): () => void;
|
|
2369
2405
|
}
|
|
2370
2406
|
|
|
2407
|
+
/**
|
|
2408
|
+
* Runtime-side glue for the per-workspace brain: a shared registry of
|
|
2409
|
+
* {@link BrainManager}s (one per workspace bucket) plus the two bridges that
|
|
2410
|
+
* connect the pure `@agentproto/workspace-brain` engine to this daemon's real
|
|
2411
|
+
* conversation stores:
|
|
2412
|
+
*
|
|
2413
|
+
* - `readSessionForBrain` — a session id → exported transcript, via the same
|
|
2414
|
+
* ladder as `conversation-read.ts`: the provider-native store first
|
|
2415
|
+
* (`CONVERSATION_STORES`), then the universal `events.jsonl` capture
|
|
2416
|
+
* (`exportDaemonEventsSession`). `null` when neither has anything.
|
|
2417
|
+
* - `resolveWorkspace` — a session id → the workspace bucket it was recorded
|
|
2418
|
+
* under (via the persisted `conversations.jsonl` index).
|
|
2419
|
+
*
|
|
2420
|
+
* The registry itself is keyed by bucket slug and creates each `BrainManager`
|
|
2421
|
+
* lazily, so a workspace that never produces a session pays nothing until its
|
|
2422
|
+
* first exit does.
|
|
2423
|
+
*
|
|
2424
|
+
* A workspace's knowledge backends are configured per-workspace by a
|
|
2425
|
+
* `knowledge.json` file at `<bucket>/knowledge.json` (see
|
|
2426
|
+
* {@link loadKnowledgeConfigForWorkspace}). No file → the brain's default
|
|
2427
|
+
* single `files` provider (identical to pre-config behavior); an invalid
|
|
2428
|
+
* file → warn + fall back to that default; never throws either way.
|
|
2429
|
+
*/
|
|
2430
|
+
|
|
2431
|
+
/** The shared registry handed to both the subscriber and the MCP tools. */
|
|
2432
|
+
interface WorkspaceBrains {
|
|
2433
|
+
/** Get (creating lazily) the brain manager for a workspace bucket slug. */
|
|
2434
|
+
getBrain(workspace: string): BrainManager;
|
|
2435
|
+
/** Map a session id to the workspace bucket it was recorded under. */
|
|
2436
|
+
resolveWorkspace(sessionId: string): Promise<string | undefined>;
|
|
2437
|
+
/** Resolve an explicit workspace slug (or caller slug) to a safe bucket
|
|
2438
|
+
* slug — "default" when unregistered/absent (membership rule). */
|
|
2439
|
+
resolveWorkspaceSlug(workspace?: string, callerSlug?: string): string;
|
|
2440
|
+
}
|
|
2441
|
+
/** Resolve a session id to its exported transcript, native first then daemon
|
|
2442
|
+
* events — `null` (never throws) when neither store has anything readable. */
|
|
2443
|
+
declare function readSessionForBrain(sessionId: string): Promise<ExportedSessionLike | null>;
|
|
2444
|
+
declare function createWorkspaceBrains(): WorkspaceBrains;
|
|
2445
|
+
|
|
2371
2446
|
/**
|
|
2372
2447
|
* Shared types for pluggable tunnel providers.
|
|
2373
2448
|
*
|
|
@@ -2759,6 +2834,23 @@ interface SandboxProviderHandle extends AdapterHandle {
|
|
|
2759
2834
|
readonly setupFields?: readonly SetupField[];
|
|
2760
2835
|
}
|
|
2761
2836
|
|
|
2837
|
+
/**
|
|
2838
|
+
* Slug-keyed sandbox provider registry — the sandbox family's counterpart to
|
|
2839
|
+
* `remote-providers/registry.ts`. `local` resolves in-process; everything
|
|
2840
|
+
* else is a dynamic import of `@agentproto/sandbox-<slug>` (e.g.
|
|
2841
|
+
* `@agentproto/sandbox-e2b`), wrapped with this registry's own capability/
|
|
2842
|
+
* setup metadata because those packages export a bare `@agentproto/sandbox`
|
|
2843
|
+
* `SandboxProvider` (just `boot()`) rather than a self-describing
|
|
2844
|
+
* adapter-kit handle the way the tunnel family's third-party packages do.
|
|
2845
|
+
*
|
|
2846
|
+
* `modal` and `daytona` are catalog placeholders — AIP-36 day-1 provider
|
|
2847
|
+
* ids with no published `@agentproto/sandbox-<slug>` package yet, so they
|
|
2848
|
+
* always resolve to `null` (status "supported") until one ships.
|
|
2849
|
+
*/
|
|
2850
|
+
|
|
2851
|
+
/** Per-slug credentials, as stored by the creds store / setup tool. */
|
|
2852
|
+
type SandboxCreds = Record<string, string>;
|
|
2853
|
+
|
|
2762
2854
|
/**
|
|
2763
2855
|
* Sandbox family on top of `@agentproto/provider-kit` — mirrors
|
|
2764
2856
|
* `tunnel-adapters.ts`. This module is the entire bridge between the
|
|
@@ -2802,6 +2894,21 @@ interface SandboxAdapterInfo {
|
|
|
2802
2894
|
type SandboxProviderResolver = AdapterResolver<SandboxProviderHandle>;
|
|
2803
2895
|
/** List every sandbox provider with its live status + capabilities. */
|
|
2804
2896
|
type SandboxProviderLister = AdapterLister<SandboxAdapterInfo>;
|
|
2897
|
+
/** Build the sandbox-family creds store (per-slug, 0600). */
|
|
2898
|
+
declare function makeSandboxCredsStore(home?: string): CredsStore<SandboxCreds>;
|
|
2899
|
+
/**
|
|
2900
|
+
* Resolve a catalog slug to a concrete handle via the provider registry —
|
|
2901
|
+
* `local` in-process, `e2b`/`modal`/`daytona` dynamic-imported. Reads
|
|
2902
|
+
* stored creds first so `e2b` (and any future catalog entry) resolves
|
|
2903
|
+
* configured when possible; unconfigured slugs resolve to a descriptor-only
|
|
2904
|
+
* handle (listing never calls `start()`/`check()`). Throws on an unknown
|
|
2905
|
+
* slug so the kit's resolver wraps it to `null` ("supported but not
|
|
2906
|
+
* installed").
|
|
2907
|
+
*/
|
|
2908
|
+
declare function makeSandboxResolver(credsStore: CredsStore<SandboxCreds>, opts?: {
|
|
2909
|
+
/** Injectable for tests — defaults to a real dynamic `import()`. */
|
|
2910
|
+
importPackage?: (packageName: string) => Promise<Record<string, unknown>>;
|
|
2911
|
+
}): SandboxProviderResolver;
|
|
2805
2912
|
|
|
2806
2913
|
/**
|
|
2807
2914
|
* Fire-and-forget webhook notifier for session lifecycle events.
|
|
@@ -2886,6 +2993,14 @@ interface InboundMessage {
|
|
|
2886
2993
|
contactRef: string;
|
|
2887
2994
|
/** Rendered user-turn text. */
|
|
2888
2995
|
text: string;
|
|
2996
|
+
/** Human-readable name of the sender, when the ingress knows one.
|
|
2997
|
+
* Present => the routed turn is prefixed so the agent can tell senders
|
|
2998
|
+
* apart. Absent => the text is enqueued exactly as before. */
|
|
2999
|
+
displayName?: string;
|
|
3000
|
+
/** The surface the message came in on (`telegram`, `whatsapp`, `email`).
|
|
3001
|
+
* Distinct from `source`, which is a routing key, not something to show
|
|
3002
|
+
* an agent. */
|
|
3003
|
+
surface?: string;
|
|
2889
3004
|
/** Raw agentpush events, forwarded to the spawn fallback template. */
|
|
2890
3005
|
messages?: unknown[];
|
|
2891
3006
|
}
|
|
@@ -2894,6 +3009,7 @@ interface InboundMessage {
|
|
|
2894
3009
|
* method in directly. */
|
|
2895
3010
|
type InboundEnqueuePrompt = (sessionId: string, text: string, opts?: {
|
|
2896
3011
|
interrupt?: boolean;
|
|
3012
|
+
queue?: boolean;
|
|
2897
3013
|
}) => Promise<void> | void;
|
|
2898
3014
|
/** Whether `sessionId` is currently live enough to route into without a
|
|
2899
3015
|
* restart first. */
|
|
@@ -3501,6 +3617,10 @@ interface SessionAppServeInfo {
|
|
|
3501
3617
|
* window. False means the URL is the right address but the server had
|
|
3502
3618
|
* not answered yet — retry the fetch rather than re-spawning. */
|
|
3503
3619
|
ready: boolean;
|
|
3620
|
+
/** Error text from the in-box serve log when `ready` is false (e.g. the
|
|
3621
|
+
* server exited immediately because the UI root is missing). Absent when
|
|
3622
|
+
* the log holds no recognizable error or could not be read. */
|
|
3623
|
+
message?: string;
|
|
3504
3624
|
}
|
|
3505
3625
|
|
|
3506
3626
|
/**
|
|
@@ -3548,15 +3668,28 @@ type WorktreeField = boolean | {
|
|
|
3548
3668
|
interface WorktreeRequest {
|
|
3549
3669
|
slug?: string;
|
|
3550
3670
|
base?: string;
|
|
3551
|
-
/**
|
|
3552
|
-
*
|
|
3553
|
-
*
|
|
3554
|
-
*
|
|
3555
|
-
*
|
|
3556
|
-
*
|
|
3557
|
-
* `
|
|
3558
|
-
*
|
|
3559
|
-
*
|
|
3671
|
+
/** Return a real, registered session as soon as it's minted, provisioning
|
|
3672
|
+
* the worktree in the BACKGROUND instead of blocking `agent_start`'s
|
|
3673
|
+
* response on `git worktree add` + the repo's setup hooks (which can run
|
|
3674
|
+
* minutes — see `session-spawn.ts`'s async-provision branch).
|
|
3675
|
+
*
|
|
3676
|
+
* DEFAULTS TO TRUE for any spawn that provisions a worktree, UNLESS this
|
|
3677
|
+
* spawn also carries `wait` (which needs a first turn to block on — see
|
|
3678
|
+
* `worktree_async_wait_conflict` — so the presence of `wait` alone falls
|
|
3679
|
+
* back to the synchronous path rather than conflicting by default). That
|
|
3680
|
+
* default is applied by `session-spawn.ts` itself (WP-H), not by this
|
|
3681
|
+
* field or `normalizeWorktreeField` — the normalizer leaves `async`
|
|
3682
|
+
* exactly as the caller sent it (`undefined` when omitted; see its own
|
|
3683
|
+
* test), so a caller inspecting the normalized request never sees a
|
|
3684
|
+
* value it didn't write. WP-H incident: the synchronous contract this
|
|
3685
|
+
* field opts OUT of — hold the RPC open for however long setup hooks
|
|
3686
|
+
* take, routinely minutes — is exactly what let a client's own request
|
|
3687
|
+
* timeout retry into a second live agent sharing the first one's
|
|
3688
|
+
* worktree (closed on the other side too — see `session-spawn.ts`'s
|
|
3689
|
+
* `findWorktreeLabelCwdCollision`, which now refuses that retry outright
|
|
3690
|
+
* rather than merely warning). Pass `false` explicitly to keep the old
|
|
3691
|
+
* blocking ok/fail contract (this package's own `worktree_provision_failed`
|
|
3692
|
+
* test coverage exercises it deliberately synchronous). */
|
|
3560
3693
|
async?: boolean;
|
|
3561
3694
|
}
|
|
3562
3695
|
/** What the runtime hands the provisioner. `cwd` is where the session would
|
|
@@ -4605,6 +4738,16 @@ interface SessionDescriptor {
|
|
|
4605
4738
|
command: string;
|
|
4606
4739
|
pid: number | null;
|
|
4607
4740
|
status: SessionStatus;
|
|
4741
|
+
/** Unambiguous liveness signal, stamped at read time (list()/get()/
|
|
4742
|
+
* findByIdOrName) — true iff `status` is "running" or "starting", the
|
|
4743
|
+
* same test the daemon uses internally (validateAgentTurn). Ephemeral:
|
|
4744
|
+
* never persisted, always recomputed from the row's status. Exists
|
|
4745
|
+
* because `status` alone is NOT liveness: a terminal row ("killed",
|
|
4746
|
+
* "exited", "error") is a record that exists, and HTTP 200 on
|
|
4747
|
+
* GET /sessions/:id only means the record exists — consumers that
|
|
4748
|
+
* treat res.ok as liveness must read `alive` (or GET /sessions/:id/alive)
|
|
4749
|
+
* instead. */
|
|
4750
|
+
alive?: boolean;
|
|
4608
4751
|
startedAt: string;
|
|
4609
4752
|
endedAt?: string;
|
|
4610
4753
|
exitCode?: number;
|
|
@@ -4670,6 +4813,15 @@ interface SessionDescriptor {
|
|
|
4670
4813
|
* completed) turn. Reset when the next turn starts. Tool-call enrichment
|
|
4671
4814
|
* events sharing an id count only once. Ephemeral and never persisted. */
|
|
4672
4815
|
toolCallsThisTurn?: number;
|
|
4816
|
+
/** Absolute path of this session's durable structured transcript
|
|
4817
|
+
* (`events.jsonl`), resolved from the SAME base dir the transcript
|
|
4818
|
+
* writer actually writes to (`sessions.eventsDir` config > the
|
|
4819
|
+
* hardcoded `~/.agentproto/sessions`) — never re-derived by the
|
|
4820
|
+
* caller. Ephemeral, stamped at read time (list/get) and at spawn;
|
|
4821
|
+
* never persisted. Lets an external client (`agent_start`'s spawn
|
|
4822
|
+
* response, Claude desktop sandbox, wait loops) discover WHERE the
|
|
4823
|
+
* transcript lives without guessing. */
|
|
4824
|
+
eventsPath?: string;
|
|
4673
4825
|
/** Whether the underlying OS process is still alive. Computed via
|
|
4674
4826
|
* `process.kill(pid, 0)` at read time (list()/get()) — cheap,
|
|
4675
4827
|
* zero-overhead, standard POSIX check. Absent when `pid` is null
|
|
@@ -5417,6 +5569,11 @@ interface SessionDescriptor {
|
|
|
5417
5569
|
remote?: boolean;
|
|
5418
5570
|
/** Provider-assigned sandbox id (`BootedSandbox.sandboxId`), when `remote` is true. */
|
|
5419
5571
|
sandboxId?: string;
|
|
5572
|
+
/** Sandbox provider slug (`agent_start.sandbox`'s provider, e.g. `"e2b"`,
|
|
5573
|
+
* `"local"`), when `remote` is true. Identifies WHERE the box lives, not
|
|
5574
|
+
* just THAT one exists — the VS Code panel's sandbox chip names it in its
|
|
5575
|
+
* tooltip alongside `sandboxId`. */
|
|
5576
|
+
sandboxProvider?: string;
|
|
5420
5577
|
/** What session close does to the box (PR3 lifecycle) — `"kill"` (the
|
|
5421
5578
|
* default, ephemeral) or `"pause"` (keeps `sandboxId` reconnectable via
|
|
5422
5579
|
* `agent_start.sandbox.reuse`). Only set when `remote` is true. */
|
|
@@ -5430,6 +5587,16 @@ interface SessionDescriptor {
|
|
|
5430
5587
|
* serve port, and the provider-resolved public URL. See
|
|
5431
5588
|
* `sandbox-app-serve.ts`. */
|
|
5432
5589
|
appServe?: SessionAppServeInfo;
|
|
5590
|
+
/** Last PROVIDER liveness verdict for this session's box (`sandboxId`'s
|
|
5591
|
+
* ledger row, stamped by `recordSandboxLiveness` — the route / the CLI /
|
|
5592
|
+
* a reconnect-not-found). Ephemeral read-time projection of the sandbox
|
|
5593
|
+
* ledger, same convention as `processAlive`: a remote session has no
|
|
5594
|
+
* local PID, so this is the only box-death signal the descriptor can
|
|
5595
|
+
* carry. Absent when the box was never probed (or the provider can't) —
|
|
5596
|
+
* and absent is NOT "alive". */
|
|
5597
|
+
sandboxAlive?: boolean;
|
|
5598
|
+
/** ISO instant `sandboxAlive` was computed (see its doc). */
|
|
5599
|
+
sandboxCheckedAt?: string;
|
|
5433
5600
|
}
|
|
5434
5601
|
/**
|
|
5435
5602
|
* Lightweight panel projection of SessionDescriptor for the VS Code Sessions
|
|
@@ -5536,7 +5703,17 @@ interface SessionSummary {
|
|
|
5536
5703
|
sandboxTeardown?: "kill" | "pause";
|
|
5537
5704
|
sandboxPorts?: Record<number, string>;
|
|
5538
5705
|
appServe?: SessionAppServeInfo;
|
|
5539
|
-
|
|
5706
|
+
/** Read-time projection of the box's ledger liveness verdict — see
|
|
5707
|
+
* `SessionDescriptor.sandboxAlive`. */
|
|
5708
|
+
sandboxAlive?: boolean;
|
|
5709
|
+
sandboxCheckedAt?: string;
|
|
5710
|
+
}
|
|
5711
|
+
/** Bracketed-paste mode as last observed in a PTY's OUTPUT stream.
|
|
5712
|
+
* `"unknown"` means neither `\x1b[?2004h` nor `\x1b[?2004l` has been seen
|
|
5713
|
+
* yet for this session — callers must treat unknown the same as "off"
|
|
5714
|
+
* (i.e. never wrap) to avoid a regression for sessions/shells that don't
|
|
5715
|
+
* use bracketed paste at all. */
|
|
5716
|
+
type BracketedPasteMode = "on" | "off" | "unknown";
|
|
5540
5717
|
/**
|
|
5541
5718
|
* Thrown by the lazy resume path when a resumable session has already failed to
|
|
5542
5719
|
* resume `MAX_RESUME_ATTEMPTS` times in a row (`canResume` false on a row that
|
|
@@ -6187,6 +6364,11 @@ interface SessionsRegistry {
|
|
|
6187
6364
|
* Single-shot variant of attachPty().write — useful for MCP
|
|
6188
6365
|
* tools that drive a session through tool calls. */
|
|
6189
6366
|
writeTerminalInput(id: string, data: string): boolean;
|
|
6367
|
+
/** Last observed bracketed-paste mode for a PTY session, tracked from
|
|
6368
|
+
* the PTY's OUTPUT stream (see `scanBracketedPaste`). `"unknown"` for
|
|
6369
|
+
* a missing/non-PTY session or one that hasn't emitted either
|
|
6370
|
+
* `\x1b[?2004h`/`\x1b[?2004l` sequence yet. */
|
|
6371
|
+
getBracketedPasteMode(id: string): BracketedPasteMode;
|
|
6190
6372
|
/** Snapshot the recent PTY byte buffer as one Buffer. Newest
|
|
6191
6373
|
* bytes at the end; `lastBytes` caps the returned size from the
|
|
6192
6374
|
* tail. Returns null when the session is missing or not a PTY. */
|
|
@@ -6522,6 +6704,9 @@ interface SpawnAgentInput {
|
|
|
6522
6704
|
remote?: boolean;
|
|
6523
6705
|
/** Provider-assigned sandbox id, when `remote` is true. */
|
|
6524
6706
|
sandboxId?: string;
|
|
6707
|
+
/** Sandbox provider slug, when `remote` is true — see
|
|
6708
|
+
* `SessionDescriptor.sandboxProvider`. */
|
|
6709
|
+
sandboxProvider?: string;
|
|
6525
6710
|
/** What session close does to the box, when `remote` is true — see
|
|
6526
6711
|
* `SessionDescriptor.sandboxTeardown`. */
|
|
6527
6712
|
sandboxTeardown?: "kill" | "pause";
|
|
@@ -6683,6 +6868,15 @@ interface RecordCommandInput {
|
|
|
6683
6868
|
/** Id of the session that invoked this one, when the caller genuinely
|
|
6684
6869
|
* knows it — see `SessionDescriptor.callerSessionId`. */
|
|
6685
6870
|
callerSessionId?: string;
|
|
6871
|
+
/** Parent attribution + depth — same semantics as `SpawnPtyInput` /
|
|
6872
|
+
* `SpawnAgentInput` (orchestrator WP4): set when the command ran
|
|
6873
|
+
* through a scoped sub-gateway so `session_tree` shows the command
|
|
6874
|
+
* session under its invoker. */
|
|
6875
|
+
parentSessionId?: string;
|
|
6876
|
+
/** Recursion depth in the session tree — always recorded (`?? 0` when
|
|
6877
|
+
* absent) so subtree/depth logic never has to special-case a missing
|
|
6878
|
+
* value. Same semantics as `SpawnAgentInput.depth`. */
|
|
6879
|
+
depth?: number;
|
|
6686
6880
|
}
|
|
6687
6881
|
/** A pull request that a session successfully opened through a code-host
|
|
6688
6882
|
* driver. `openedAt` is assigned by the registry so callers cannot claim a
|
|
@@ -6699,27 +6893,6 @@ interface RecordOpenedPrInput {
|
|
|
6699
6893
|
url: string;
|
|
6700
6894
|
}
|
|
6701
6895
|
|
|
6702
|
-
/**
|
|
6703
|
-
* MCP tools that expose browser service adapters (Camofox, Bureau, …) to
|
|
6704
|
-
* agents connected to the daemon. Lets a remote operator start, stop, and
|
|
6705
|
-
* inspect browser service sessions through the same MCP connection it uses
|
|
6706
|
-
* for fs/exec/agent-cli.
|
|
6707
|
-
*
|
|
6708
|
-
* Five tools:
|
|
6709
|
-
* browser_adapter_list discover available browser adapter ids + metadata
|
|
6710
|
-
* start_browser ensure a browser adapter is up, register as a session
|
|
6711
|
-
* stop_browser kill a running browser session
|
|
6712
|
-
* list_browsers browse alive/recent browser sessions
|
|
6713
|
-
* browser_status descriptor + live health probe for one session
|
|
6714
|
-
*
|
|
6715
|
-
* Auth: same as every other daemon tool — gated by the gateway's auth source.
|
|
6716
|
-
*
|
|
6717
|
-
* Injection pattern: `resolveBrowserAdapter` is passed in, not imported.
|
|
6718
|
-
* This keeps the runtime package free of a hard dep on @agentproto/adapter-browser.
|
|
6719
|
-
* The types below are minimal structural shapes — equivalent to `AgentSessionLike`
|
|
6720
|
-
* in sessions.ts.
|
|
6721
|
-
*/
|
|
6722
|
-
|
|
6723
6896
|
/**
|
|
6724
6897
|
* Minimal shape of a BrowserAdapterInstance — structurally compatible with
|
|
6725
6898
|
* @agentproto/adapter-browser's BrowserAdapterInstance. Kept local so the
|
|
@@ -7064,45 +7237,6 @@ interface InboundWatcher {
|
|
|
7064
7237
|
shutdown(): void;
|
|
7065
7238
|
}
|
|
7066
7239
|
|
|
7067
|
-
/**
|
|
7068
|
-
* Runtime-side glue for the per-workspace brain: a shared registry of
|
|
7069
|
-
* {@link BrainManager}s (one per workspace bucket) plus the two bridges that
|
|
7070
|
-
* connect the pure `@agentproto/workspace-brain` engine to this daemon's real
|
|
7071
|
-
* conversation stores:
|
|
7072
|
-
*
|
|
7073
|
-
* - `readSessionForBrain` — a session id → exported transcript, via the same
|
|
7074
|
-
* ladder as `conversation-read.ts`: the provider-native store first
|
|
7075
|
-
* (`CONVERSATION_STORES`), then the universal `events.jsonl` capture
|
|
7076
|
-
* (`exportDaemonEventsSession`). `null` when neither has anything.
|
|
7077
|
-
* - `resolveWorkspace` — a session id → the workspace bucket it was recorded
|
|
7078
|
-
* under (via the persisted `conversations.jsonl` index).
|
|
7079
|
-
*
|
|
7080
|
-
* The registry itself is keyed by bucket slug and creates each `BrainManager`
|
|
7081
|
-
* lazily, so a workspace that never produces a session pays nothing until its
|
|
7082
|
-
* first exit does.
|
|
7083
|
-
*
|
|
7084
|
-
* A workspace's knowledge backends are configured per-workspace by a
|
|
7085
|
-
* `knowledge.json` file at `<bucket>/knowledge.json` (see
|
|
7086
|
-
* {@link loadKnowledgeConfigForWorkspace}). No file → the brain's default
|
|
7087
|
-
* single `files` provider (identical to pre-config behavior); an invalid
|
|
7088
|
-
* file → warn + fall back to that default; never throws either way.
|
|
7089
|
-
*/
|
|
7090
|
-
|
|
7091
|
-
/** The shared registry handed to both the subscriber and the MCP tools. */
|
|
7092
|
-
interface WorkspaceBrains {
|
|
7093
|
-
/** Get (creating lazily) the brain manager for a workspace bucket slug. */
|
|
7094
|
-
getBrain(workspace: string): BrainManager;
|
|
7095
|
-
/** Map a session id to the workspace bucket it was recorded under. */
|
|
7096
|
-
resolveWorkspace(sessionId: string): Promise<string | undefined>;
|
|
7097
|
-
/** Resolve an explicit workspace slug (or caller slug) to a safe bucket
|
|
7098
|
-
* slug — "default" when unregistered/absent (membership rule). */
|
|
7099
|
-
resolveWorkspaceSlug(workspace?: string, callerSlug?: string): string;
|
|
7100
|
-
}
|
|
7101
|
-
/** Resolve a session id to its exported transcript, native first then daemon
|
|
7102
|
-
* events — `null` (never throws) when neither store has anything readable. */
|
|
7103
|
-
declare function readSessionForBrain(sessionId: string): Promise<ExportedSessionLike | null>;
|
|
7104
|
-
declare function createWorkspaceBrains(): WorkspaceBrains;
|
|
7105
|
-
|
|
7106
7240
|
/**
|
|
7107
7241
|
* MCP tools that expose the per-workspace brain to agents.
|
|
7108
7242
|
*
|
|
@@ -7131,6 +7265,69 @@ interface RegisterBrainToolsOptions {
|
|
|
7131
7265
|
}
|
|
7132
7266
|
declare function registerBrainTools(server: McpServer, opts: RegisterBrainToolsOptions): void;
|
|
7133
7267
|
|
|
7268
|
+
declare const webSearchInputSchema: z.ZodObject<{
|
|
7269
|
+
query: z.ZodString;
|
|
7270
|
+
count: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
7271
|
+
country: z.ZodOptional<z.ZodString>;
|
|
7272
|
+
language: z.ZodOptional<z.ZodString>;
|
|
7273
|
+
freshness: z.ZodOptional<z.ZodEnum<{
|
|
7274
|
+
pd: "pd";
|
|
7275
|
+
pw: "pw";
|
|
7276
|
+
pm: "pm";
|
|
7277
|
+
py: "py";
|
|
7278
|
+
}>>;
|
|
7279
|
+
safesearch: z.ZodOptional<z.ZodEnum<{
|
|
7280
|
+
off: "off";
|
|
7281
|
+
strict: "strict";
|
|
7282
|
+
moderate: "moderate";
|
|
7283
|
+
}>>;
|
|
7284
|
+
}, z.core.$strip>;
|
|
7285
|
+
type WebSearchInput = z.infer<typeof webSearchInputSchema>;
|
|
7286
|
+
declare const webSearchOutputSchema: z.ZodObject<{
|
|
7287
|
+
provider: z.ZodEnum<{
|
|
7288
|
+
brave: "brave";
|
|
7289
|
+
serper: "serper";
|
|
7290
|
+
}>;
|
|
7291
|
+
results: z.ZodArray<z.ZodObject<{
|
|
7292
|
+
title: z.ZodString;
|
|
7293
|
+
url: z.ZodString;
|
|
7294
|
+
snippet: z.ZodOptional<z.ZodString>;
|
|
7295
|
+
position: z.ZodNumber;
|
|
7296
|
+
}, z.core.$strip>>;
|
|
7297
|
+
}, z.core.$strip>;
|
|
7298
|
+
type WebSearchOutput = z.infer<typeof webSearchOutputSchema>;
|
|
7299
|
+
type WebSearchResult = WebSearchOutput["results"][number];
|
|
7300
|
+
declare const webSearchTool: _agentproto_tool.ToolHandle<{
|
|
7301
|
+
query: string;
|
|
7302
|
+
count: number;
|
|
7303
|
+
country?: string | undefined;
|
|
7304
|
+
language?: string | undefined;
|
|
7305
|
+
freshness?: "pd" | "pw" | "pm" | "py" | undefined;
|
|
7306
|
+
safesearch?: "off" | "strict" | "moderate" | undefined;
|
|
7307
|
+
}, {
|
|
7308
|
+
provider: "brave" | "serper";
|
|
7309
|
+
results: {
|
|
7310
|
+
title: string;
|
|
7311
|
+
url: string;
|
|
7312
|
+
position: number;
|
|
7313
|
+
snippet?: string | undefined;
|
|
7314
|
+
}[];
|
|
7315
|
+
}, ToolContext>;
|
|
7316
|
+
declare function defineBraveSearchHttpDriver(): DriverHandle;
|
|
7317
|
+
declare function defineSerperHttpDriver(): DriverHandle;
|
|
7318
|
+
interface RegisterWebSearchToolsOptions {
|
|
7319
|
+
/** Injectable env (tests); default `process.env`. */
|
|
7320
|
+
env?: NodeJS.ProcessEnv;
|
|
7321
|
+
/** Injectable fetch (tests / live e2e); default `globalThis.fetch`. */
|
|
7322
|
+
fetch?: typeof fetch;
|
|
7323
|
+
}
|
|
7324
|
+
/**
|
|
7325
|
+
* Register the `web.search` MCP tool (`web_search`) when at least one
|
|
7326
|
+
* provider key is configured. With NEITHER key present, nothing is
|
|
7327
|
+
* registered — no broken tool is advertised, silently.
|
|
7328
|
+
*/
|
|
7329
|
+
declare function registerWebSearchTools(server: McpServer, opts?: RegisterWebSearchToolsOptions): void;
|
|
7330
|
+
|
|
7134
7331
|
/**
|
|
7135
7332
|
* Workshop-brain subscriber — auto-ingest a workspace's conversations when its
|
|
7136
7333
|
* sessions exit.
|
|
@@ -7544,6 +7741,189 @@ interface RegisterSandboxAttachToolOptions {
|
|
|
7544
7741
|
/** Register the `sandbox_attach` MCP tool. */
|
|
7545
7742
|
declare function registerSandboxAttachTool(server: McpServer, opts?: RegisterSandboxAttachToolOptions): void;
|
|
7546
7743
|
|
|
7744
|
+
/**
|
|
7745
|
+
* The sandbox ledger — `~/.agentproto/sandboxes.json`.
|
|
7746
|
+
*
|
|
7747
|
+
* The daemon KNOWS when it boots, pauses, reconnects to, or stops a sandbox
|
|
7748
|
+
* box (AIP-36 boot-and-drive, `session-spawn.ts`'s `bootSandboxAgentSession`
|
|
7749
|
+
* and the lifecycle teardown inside `SandboxAgentSessionProxy.close()`), but
|
|
7750
|
+
* it writes none of it down: finding a still-live sandboxId meant grepping
|
|
7751
|
+
* session descriptors for a `remote: true` stamp. This module is the
|
|
7752
|
+
* navigation half — one durable record per sandboxId:
|
|
7753
|
+
*
|
|
7754
|
+
* { sandboxId, provider, label?, state, cwd?, originSessionId?,
|
|
7755
|
+
* createdAt, updatedAt, expiresAt? }
|
|
7756
|
+
*
|
|
7757
|
+
* State machine: "booted" (fresh boot) → "connected" (reuse/attach) →
|
|
7758
|
+
* "paused" (proxy close() chose the pause teardown) | "stopped" (kill or
|
|
7759
|
+
* expiry). `expiresAt` is stamped at boot when the spec's lifecycle policy
|
|
7760
|
+
* carries a known idle window (`lifecycle.pause_after_idle` →
|
|
7761
|
+
* `SandboxLifecyclePolicy.pauseAfterIdleMs`) — the one expiry the daemon
|
|
7762
|
+
* actually knows about at boot time; a provider-side TTL the daemon never
|
|
7763
|
+
* sees is deliberately NOT guessed at here.
|
|
7764
|
+
*
|
|
7765
|
+
* Writes are ALWAYS best-effort: every helper swallows its own failures and
|
|
7766
|
+
* returns without throwing. A ledger error must never fail a spawn, a
|
|
7767
|
+
* pause, or a teardown — the ledger is an index over reality, never a
|
|
7768
|
+
* participant in it.
|
|
7769
|
+
*
|
|
7770
|
+
* Persistence style matches the daemon's other JSON stores
|
|
7771
|
+
* (`workspace-buckets.ts`, `saveWorkspacesConfig`): serialize → write to a
|
|
7772
|
+
* per-process-unique tmp file → rename over the target. A concurrent reader
|
|
7773
|
+
* never sees half a JSON object, and two in-flight writers never share a
|
|
7774
|
+
* tmp path (the pid-only suffix is not unique within one process — see the
|
|
7775
|
+
* 2026-08-14 registry-wipe write-up in `workspace-buckets.ts`).
|
|
7776
|
+
*/
|
|
7777
|
+
/** Lifecycle states a ledger row can carry. `"gone"` is stamped when the
|
|
7778
|
+
* PROVIDER answers the box no longer exists (liveness probe 404 / a
|
|
7779
|
+
* reconnect failing with the provider's not-found error) — distinct from
|
|
7780
|
+
* `"stopped"` (WE tore it down) and from `"paused"` (the last thing WE
|
|
7781
|
+
* did, which a vanished box makes a lie). */
|
|
7782
|
+
type SandboxLedgerState = "booted" | "paused" | "connected" | "stopped" | "gone";
|
|
7783
|
+
interface SandboxLedgerEntry {
|
|
7784
|
+
sandboxId: string;
|
|
7785
|
+
provider: string;
|
|
7786
|
+
state: SandboxLedgerState;
|
|
7787
|
+
createdAt: string;
|
|
7788
|
+
updatedAt: string;
|
|
7789
|
+
label?: string;
|
|
7790
|
+
cwd?: string;
|
|
7791
|
+
/** The HOST session id that first booted / last reconnected to the box. */
|
|
7792
|
+
originSessionId?: string;
|
|
7793
|
+
/** ISO instant the box is expected to idle-expire — stamped only when the
|
|
7794
|
+
* boot knew a window (`lifecycle.pause_after_idle`). */
|
|
7795
|
+
expiresAt?: string;
|
|
7796
|
+
/** Last PROVIDER liveness probe verdict (`SandboxProvider.probe`) — the
|
|
7797
|
+
* only signal that distinguishes box death from session death. Absent
|
|
7798
|
+
* when never probed (or the provider can't probe): the ledger's `state`
|
|
7799
|
+
* alone is NOT trustworthy — a dead box looks paused until probed. */
|
|
7800
|
+
sandboxAlive?: boolean;
|
|
7801
|
+
/** ISO instant `sandboxAlive` was computed. */
|
|
7802
|
+
sandboxCheckedAt?: string;
|
|
7803
|
+
}
|
|
7804
|
+
/** `~/.agentproto/sandboxes.json`. `AGENTPROTO_SANDBOX_LEDGER` overrides
|
|
7805
|
+
* the path (tests, and a caller that wants a workspace-scoped ledger). */
|
|
7806
|
+
declare const sandboxLedgerPath: () => string;
|
|
7807
|
+
/** Rows currently on disk. `[]` for a missing/corrupt file — the same
|
|
7808
|
+
* "degrade to nothing rather than throw" contract as every other store
|
|
7809
|
+
* reader in this daemon. Never throws. */
|
|
7810
|
+
declare function readSandboxLedger(path?: string): SandboxLedgerEntry[];
|
|
7811
|
+
/**
|
|
7812
|
+
* Upsert (dedup by `sandboxId`) and persist. Sync + best-effort: the
|
|
7813
|
+
* lifecycle hooks that call this run inside teardown/finally paths where
|
|
7814
|
+
* Node won't await, and a failure here is a lost index row, never a lost
|
|
7815
|
+
* box. Swallows every error.
|
|
7816
|
+
*/
|
|
7817
|
+
declare function upsertSandboxLedger(entry: SandboxLedgerEntry, path?: string): void;
|
|
7818
|
+
/** Remove a row by sandboxId. Returns whether a row was actually dropped
|
|
7819
|
+
* (read from the PRE-call disk state). Never throws. */
|
|
7820
|
+
declare function removeSandboxLedgerEntry(sandboxId: string, path?: string): boolean;
|
|
7821
|
+
/**
|
|
7822
|
+
* Stamp a boot or reconnect into the ledger — the spawn path's hook.
|
|
7823
|
+
* `state` is "booted" for a fresh boot, "connected" for a reuse/attach.
|
|
7824
|
+
* Best-effort: never throws, whatever happens.
|
|
7825
|
+
*/
|
|
7826
|
+
declare function recordSandboxBoot(opts: {
|
|
7827
|
+
sandboxId: string;
|
|
7828
|
+
provider: string;
|
|
7829
|
+
state: "booted" | "connected";
|
|
7830
|
+
label?: string;
|
|
7831
|
+
cwd?: string;
|
|
7832
|
+
originSessionId?: string;
|
|
7833
|
+
expiresAt?: string;
|
|
7834
|
+
path?: string;
|
|
7835
|
+
}): void;
|
|
7836
|
+
/** Stamp a state transition ("paused"/"stopped"/"gone") for an existing row.
|
|
7837
|
+
* Best-effort: never throws. */
|
|
7838
|
+
declare function recordSandboxState(sandboxId: string, state: "paused" | "stopped" | "gone", path?: string): void;
|
|
7839
|
+
/** Stamp a PROVIDER liveness verdict onto an existing row — `sandboxAlive`
|
|
7840
|
+
* + `sandboxCheckedAt`, and when the verdict is death ALSO flip the row to
|
|
7841
|
+
* `"gone"` (the state alone was never evidence of death; the probe is).
|
|
7842
|
+
* Best-effort: never throws. */
|
|
7843
|
+
declare function recordSandboxLiveness(sandboxId: string, alive: boolean, path?: string): void;
|
|
7844
|
+
/** Backfill `originSessionId` once the HOST registry has minted the session
|
|
7845
|
+
* id the box was spawned for (the boot hook runs before that id exists).
|
|
7846
|
+
* Best-effort: never throws. */
|
|
7847
|
+
declare function recordSandboxOrigin(sandboxId: string, originSessionId: string, path?: string): void;
|
|
7848
|
+
type ReuseResolution = {
|
|
7849
|
+
kind: "resolved";
|
|
7850
|
+
sandboxId: string;
|
|
7851
|
+
entry: SandboxLedgerEntry;
|
|
7852
|
+
} | {
|
|
7853
|
+
kind: "ambiguous";
|
|
7854
|
+
candidates: SandboxLedgerEntry[];
|
|
7855
|
+
} | {
|
|
7856
|
+
kind: "unresolved";
|
|
7857
|
+
};
|
|
7858
|
+
/**
|
|
7859
|
+
* `reuse: "<label-or-id>"` resolution against the ledger (PLAN-D1 §3).
|
|
7860
|
+
*
|
|
7861
|
+
* A reuse token that exactly matches a row's `label`, or is a PREFIX of
|
|
7862
|
+
* exactly one row's `sandboxId`, resolves to that row's sandboxId. Several
|
|
7863
|
+
* matches → `ambiguous` (the caller must disambiguate — the error it
|
|
7864
|
+
* renders lists the candidates). No match at all → `unresolved`, and the
|
|
7865
|
+
* spawn path passes the token through unchanged so the provider's own
|
|
7866
|
+
* `connect()` failure surfaces exactly as it did before this module
|
|
7867
|
+
* existed.
|
|
7868
|
+
*/
|
|
7869
|
+
declare function resolveReuseFromLedger(reuse: string, entries: readonly SandboxLedgerEntry[]): ReuseResolution;
|
|
7870
|
+
|
|
7871
|
+
/** Host session statuses after which a session can never use its box again. */
|
|
7872
|
+
declare const DEAD_SESSION_STATUSES: ReadonlySet<string>;
|
|
7873
|
+
/** One ledger row selected for gc, with the observed origin-session status. */
|
|
7874
|
+
interface SandboxGcCandidate {
|
|
7875
|
+
entry: SandboxLedgerEntry;
|
|
7876
|
+
sessionStatus: string;
|
|
7877
|
+
}
|
|
7878
|
+
/**
|
|
7879
|
+
* Select ledger entries whose origin session is error/killed/exited.
|
|
7880
|
+
* Rows already marked "stopped" are skipped (nothing left to tear down);
|
|
7881
|
+
* rows with no `originSessionId` are skipped too — their owning session
|
|
7882
|
+
* is unknown, so "orphan" cannot be established from this surface.
|
|
7883
|
+
*/
|
|
7884
|
+
declare function collectGcCandidates(entries: readonly SandboxLedgerEntry[], sessionStatuses: ReadonlyMap<string, string>): SandboxGcCandidate[];
|
|
7885
|
+
/** Provider resolution + ledger targeting for the reaper — injectable so
|
|
7886
|
+
* tests can hand a fake provider and a tmp ledger path. */
|
|
7887
|
+
interface SandboxGcReapDeps {
|
|
7888
|
+
resolveProvider: (slug: string) => Promise<SandboxGcProviderHandle | null>;
|
|
7889
|
+
ledgerPath?: string;
|
|
7890
|
+
}
|
|
7891
|
+
/** The slice of `SandboxProviderHandle` the reaper needs. */
|
|
7892
|
+
interface SandboxGcProviderHandle {
|
|
7893
|
+
provider: {
|
|
7894
|
+
connect(sandboxId: string, spec: {
|
|
7895
|
+
provider: string;
|
|
7896
|
+
config: Record<string, unknown>;
|
|
7897
|
+
}, opts: {
|
|
7898
|
+
env: Record<string, string>;
|
|
7899
|
+
}): Promise<{
|
|
7900
|
+
sandboxId: string;
|
|
7901
|
+
stop(): Promise<void>;
|
|
7902
|
+
pause?(): Promise<void>;
|
|
7903
|
+
}>;
|
|
7904
|
+
};
|
|
7905
|
+
}
|
|
7906
|
+
type SandboxGcReapResult = {
|
|
7907
|
+
ok: true;
|
|
7908
|
+
action: "paused" | "stopped";
|
|
7909
|
+
} | {
|
|
7910
|
+
ok: false;
|
|
7911
|
+
error: string;
|
|
7912
|
+
};
|
|
7913
|
+
/**
|
|
7914
|
+
* Tear one ledger entry's box down on its provider and stamp the ledger.
|
|
7915
|
+
* `pause` keeps the box (pausing when the provider supports it, falling
|
|
7916
|
+
* back to a kill otherwise); the default kills. A connect failure that
|
|
7917
|
+
* reads as "box doesn't exist anymore" still stamps the row "stopped" so
|
|
7918
|
+
* the candidate stops re-appearing; other failures leave the row alone
|
|
7919
|
+
* (transient network must not mark a live box as reaped).
|
|
7920
|
+
*/
|
|
7921
|
+
declare function reapGcEntry(entry: SandboxLedgerEntry, opts: {
|
|
7922
|
+
pause?: boolean;
|
|
7923
|
+
} & SandboxGcReapDeps): Promise<SandboxGcReapResult>;
|
|
7924
|
+
/** States that still name a box the gc might act on. */
|
|
7925
|
+
declare const GC_REAPABLE_STATES: readonly SandboxLedgerState[];
|
|
7926
|
+
|
|
7547
7927
|
/**
|
|
7548
7928
|
* Idle agent-session reaper (PR-6).
|
|
7549
7929
|
*
|
|
@@ -9221,4 +9601,4 @@ interface GatewayHandle {
|
|
|
9221
9601
|
*/
|
|
9222
9602
|
declare function createGateway(opts: CreateGatewayOptions): Promise<GatewayHandle>;
|
|
9223
9603
|
|
|
9224
|
-
export { type ActivityKind, type ActivityListFilter, type ActivityPolicyLister, type ActivityProjector, type ActivityProjectorRegistry, type ActivityProjectorSession, type ActivityRecord, type ActivitySource, type ActivityState, type ActivityWaitingOn, type ActivityWorkflowLister, AdapterAuthDescriptor, type AdapterCapabilitiesLister, type AdapterInstallResult, type AdapterListEntry, type AgentAdapterInstaller, type AgentAdapterLister, type AgentAdapterResolver, type AgentSessionLike, type AgentStreamEvent, type AnthropicReaderConfig, AnthropicRemainingQuotaReader, type AttachPolicyInput, type AttachSandboxOpts, type AttachSandboxResult, AuthMethod, BUCKETS_ROOT, type BrowserAdapterHandle, type BrowserAdapterInfo, type BrowserAdapterLister, type BrowserAdapterResolver, BuildHeartbeatAgent, CanonicalPosture, type CatalogModelsLister, CatalogModelsQuery, CatalogModelsResponse, type CatalogProviderModel, type CatalogProviderModelsQuery, type CatalogProviderModelsResponse, type CatalogProviderPricing, type ClaudeNativeRef, type CommitSpec, type CompletionPolicySupervisor, ContextProfile, type ConversationIndexRecord, type ConversationNativeRef, type CostBudgetDecision, type CrashDetectSummary, type CrashReaperRegistry, type CreateGatewayOptions, type CreateOfferInput, type CreatedOffer, DEFAULT_BUCKET, DEFAULT_ORCHESTRATOR_TOOLS, DEFAULT_WORKTREE_ISOLATION, DeclaredAdapterOption, type DeclaredAdapterPreset, type EagerResumeFailReason, type EagerResumeOutcome, type EagerResumeSkipReason, type EagerResumeSummary, EffortLevel, type GateSpec, type GatewayHandle, type HarnessPreset, type HarnessPresetValidationDeps, HarnessPresetValidationError, type HarnessPresetsFile, type HermesNativeRef, INBOUND_PROVIDERS, type IdleReapSummary, type IdleReaperRegistry, type InboundEndpoint, type InboundEndpointStore, type InboundEndpointStoreOptions, type InboundEnqueuePrompt, type InboundIsSessionAlive, type InboundMessage, type InboundProvider, type InboundRestartSession, type InboundRouteMode, type InboundRouterDeps, type InboundRouterLog, type InboundSpawnForContact, type InboundWatcher, type JudgeGateSpec, LEGACY_SESSIONS_FILE, type LocatedConversation, type LocatedConversationByPath, type McpCredentialDeps, type MigrationMarker, type NormalizeInboundResult, type OnFailSpec, type OpenPrResolver, type OrchestratorGatewayDeps, type OrchestratorInjection, type OrchestratorInjector, type OrchestratorInjectorDeps, type OrchestratorMcpServerFactory, type OrchestratorScope, type OrphanReaperRegistry, PAIRINGS_VERSION, POSTURE_NATIVE_ALIASES, POSTURE_PREAMBLES, type PairingChannelContext, type PairingChannelHandle, type PairingChannelMode, type PairingRecord, type PairingRegistry, type PairingRegistryDeps, type PendingPermission, type PermissionRespondInput, type PermissionRespondResult, type PolicyRunState, type PolicyRunStatus, Posture, type PostureResolution, type PrResolvedState, type PrStateResolver, type PresetInfo, type PricingResolver, type QuotaReadableProfile, type QuotaStoreFile, type QuotaStoreOptions, type ReconnectLogGate, type RegisterBrainToolsOptions, type RegisterBrowserInput, type RegisterPairingToolsOptions, type RegisterSessionInput, type RemainingQuota, type RemainingQuotaReader, type ResolveNativeLinkInput, ResolvedAuthSpec, ResumeDisabledError, type RouteAwareLaunchConfig, type RouteAwareLaunchConfigInput, RouteSpec, type RuntimeMeta, SESSION_ID_ENV, type SandboxAdapterInfo, type SandboxConnectionDescriptor, type SandboxProviderCapabilities, type SandboxProviderHandle, type SandboxProviderLister, type SandboxProviderResolver, type ScopeTokenRegistry, SessionConfig, type SessionCurrentPhase, type SessionDescriptor, type SessionKind, type SessionObserver, type SessionSnapshots, type SessionStatus, type SessionUsage, type SessionWaitEvent, type SessionWaitResult, type SessionsRegistry, type ShellGateSpec, type SpawnAgentInput, type SpawnSessionInput, type StallWatchdogRegistry, type StallWatchdogSummary, type StoredProfileQuota, TASK_STATUSES, type TaskCaller, type TaskChangedEvent, type TaskClaimInput, type TaskCreateInput, type TaskGateOutcome, type TaskGateRunner, type TaskLedger, type TaskLedgerRegistry, type TaskLedgerSessionSlice, type TaskListFilter, type TaskRecord, type TaskStatus, type TaskUpdateInput, type TaskVerification, type TaskVerifySupervisor, type TaskWriteResult, type TokenPricing, type TransmitterBinding, type TransmitterBindingStore, type TunnelDescriptor, type TunnelProvider, type TunnelStatus, type UsageBucket, type UsageComputeInput, type UsageRollup, type UsageSnapshotRecord, type UsageSource, WORKSPACE_SLUG_ENV, WORKTREE_ISOLATION_ENV, type WatcherDescriptor, type WatcherStartInput, type WorkspaceBrainSubscriber, type WorkspaceBrainSubscriberOptions, type WorkspaceBrains, WorkspaceFs, type WorktreeAutoReclaimer, type WorktreeDecision, type WorktreeField, type WorktreeGcClass, type WorktreeGcOutcomeView, type WorktreeGcPlanEntryView, type WorktreeGcReclaimReason, type WorktreeGcResult, type WorktreeGcRunInput, type WorktreeGcRunner, WorktreeIsolationMode, type WorktreeProvisionOutcome, type WorktreeProvisionRequest, type WorktreeProvisioner, type WorktreeRequest, type WorktreeStatusLister, type WorktreeStatusView, activityCounts, addHarnessPreset, appendConversationRecord, attachSandbox, bucketDir, bucketSessionsFile, bucketTranscriptDir, buildCatalogProviderModels, buildMcpConfigSnippet, buildRouteAwareLaunchConfig, canonicalForModeId, claudeProjectSlug, composeSessionObservers, conversationIndexPath, createActivityProjector, createFileStepCache, createGateway, createInboundEndpointStore, createOrchestratorInjector, createOrchestratorMcpServerFactory, createPairingRegistry, createPrProvenanceReconciler, createReconnectLogGate, createScopeTokenRegistry, createSupervisorTaskGateRunner, createTaskLedger, createWorkspaceBrainSubscriber, createWorkspaceBrains, daemonRegistryDir, decideWorktreeIsolation, declaredPresetToProviderPreset, deriveSessionUsage, enrichRollupWithProviderQuota, enrichWithRemainingQuota, evaluateCostBudget, filterActivities, findConversationRecord, findNativeMode, formatToolCall, formatToolResult, getDefaultHarnessPreset, getHarnessPreset, getMcpCredentialDeps, harnessPresetsPath, isAgentCliAuthConfigured, isClosedTaskStatus, isSafeBucketSlug, isTerminalActivityState, listBuckets, listHarnessPresets, listPresets, loadHarnessPresets, loadQuotaStore, loadWorktreeIsolation, locateConversationByNativePath, locateConversationBySessionId, makeBrowserAdapterLister, migrateLegacySessionsFile, migrationMarkerPath, monitorPolicyWait, monitorSessionWait, narrowOrchestratorTools, normalizeInbound, normalizeModeId, normalizeWorktreeField, parseAnthropicRateLimitHeaders, parseTaskStatus, parseWindow, parseWorktreeIsolationMode, policyToActivities, policyWatchesSession, prToActivities, projectSessionUsage, readConversationIndex, readDaemonRegistry, readProfileQuota, readRegisteredSlugs, readRuntimeMeta, readSessionForBrain, readUsageSnapshots, reapOrphanedDescendants, recordProfileQuota, registerBrainTools, registerBuiltinRoutes, registerPairingTools, registerSandboxAttachTool, removeHarnessPreset, resolveBucketSlug, resolveNativeLink, resolvePosture, rollupUsage, runCrashDetectPass, runEagerResumePass, runIdleReapPass, runStallWatchdogPass, setDefaultPreset, setMcpCredentialDeps, sweepStaleDaemonRegistry, sweepStaleRuntimeMetas, toWorktreeStatusView, turnToActivities, unlinkDaemonRegistryEntry, unlinkRuntimeMeta, updateHarnessPreset, verifyInboundSignature, workflowToActivities, writeDaemonRegistryEntry };
|
|
9604
|
+
export { type ActivityKind, type ActivityListFilter, type ActivityPolicyLister, type ActivityProjector, type ActivityProjectorRegistry, type ActivityProjectorSession, type ActivityRecord, type ActivitySource, type ActivityState, type ActivityWaitingOn, type ActivityWorkflowLister, AdapterAuthDescriptor, type AdapterCapabilitiesLister, type AdapterInstallResult, type AdapterListEntry, type AgentAdapterInstaller, type AgentAdapterLister, type AgentAdapterResolver, type AgentSessionLike, type AgentStreamEvent, type AnthropicReaderConfig, AnthropicRemainingQuotaReader, type AttachPolicyInput, type AttachSandboxOpts, type AttachSandboxResult, AuthMethod, BUCKETS_ROOT, type BrowserAdapterHandle, type BrowserAdapterInfo, type BrowserAdapterLister, type BrowserAdapterResolver, BuildHeartbeatAgent, CanonicalPosture, type CatalogModelsLister, CatalogModelsQuery, CatalogModelsResponse, type CatalogProviderModel, type CatalogProviderModelsQuery, type CatalogProviderModelsResponse, type CatalogProviderPricing, type ClaudeNativeRef, type CommitSpec, type CompletionPolicySupervisor, ContextProfile, type ConversationIndexRecord, type ConversationNativeRef, type CostBudgetDecision, type CrashDetectSummary, type CrashReaperRegistry, type CreateGatewayOptions, type CreateOfferInput, type CreatedOffer, DEAD_SESSION_STATUSES, DEFAULT_BUCKET, DEFAULT_ORCHESTRATOR_TOOLS, DEFAULT_WORKTREE_ISOLATION, DeclaredAdapterOption, type DeclaredAdapterPreset, type EagerResumeFailReason, type EagerResumeOutcome, type EagerResumeSkipReason, type EagerResumeSummary, EffortLevel, GC_REAPABLE_STATES, type GateSpec, type GatewayHandle, type HarnessPreset, type HarnessPresetValidationDeps, HarnessPresetValidationError, type HarnessPresetsFile, type HermesNativeRef, INBOUND_PROVIDERS, type IdleReapSummary, type IdleReaperRegistry, type InboundEndpoint, type InboundEndpointStore, type InboundEndpointStoreOptions, type InboundEnqueuePrompt, type InboundIsSessionAlive, type InboundMessage, type InboundProvider, type InboundRestartSession, type InboundRouteMode, type InboundRouterDeps, type InboundRouterLog, type InboundSpawnForContact, type InboundWatcher, type JudgeGateSpec, LEGACY_SESSIONS_FILE, type LocatedConversation, type LocatedConversationByPath, type McpCredentialDeps, type MigrationMarker, type NormalizeInboundResult, type OnFailSpec, type OpenPrResolver, type OrchestratorGatewayDeps, type OrchestratorInjection, type OrchestratorInjector, type OrchestratorInjectorDeps, type OrchestratorMcpServerFactory, type OrchestratorScope, type OrphanReaperRegistry, PAIRINGS_VERSION, POSTURE_NATIVE_ALIASES, POSTURE_PREAMBLES, type PairingChannelContext, type PairingChannelHandle, type PairingChannelMode, type PairingRecord, type PairingRegistry, type PairingRegistryDeps, type PendingPermission, type PermissionRespondInput, type PermissionRespondResult, type PolicyRunState, type PolicyRunStatus, Posture, type PostureResolution, type PrResolvedState, type PrStateResolver, type PresetInfo, type PricingResolver, type QuotaReadableProfile, type QuotaStoreFile, type QuotaStoreOptions, type ReconnectLogGate, type RegisterBrainToolsOptions, type RegisterBrowserInput, type RegisterPairingToolsOptions, type RegisterSessionInput, type RegisterWebSearchToolsOptions, type RemainingQuota, type RemainingQuotaReader, type ResolveNativeLinkInput, ResolvedAuthSpec, ResumeDisabledError, type ReuseResolution, type RouteAwareLaunchConfig, type RouteAwareLaunchConfigInput, RouteSpec, type RuntimeMeta, SESSION_ID_ENV, type SandboxAdapterInfo, type SandboxConnectionDescriptor, type SandboxGcCandidate, type SandboxGcProviderHandle, type SandboxGcReapDeps, type SandboxGcReapResult, type SandboxLedgerEntry, type SandboxLedgerState, type SandboxProviderCapabilities, type SandboxProviderHandle, type SandboxProviderLister, type SandboxProviderResolver, type ScopeTokenRegistry, SessionConfig, type SessionCurrentPhase, type SessionDescriptor, type SessionKind, type SessionObserver, type SessionSnapshots, type SessionStatus, type SessionUsage, type SessionWaitEvent, type SessionWaitResult, type SessionsRegistry, type ShellGateSpec, type SpawnAgentInput, type SpawnSessionInput, type StallWatchdogRegistry, type StallWatchdogSummary, type StoredProfileQuota, TASK_STATUSES, type TaskCaller, type TaskChangedEvent, type TaskClaimInput, type TaskCreateInput, type TaskGateOutcome, type TaskGateRunner, type TaskLedger, type TaskLedgerRegistry, type TaskLedgerSessionSlice, type TaskListFilter, type TaskRecord, type TaskStatus, type TaskUpdateInput, type TaskVerification, type TaskVerifySupervisor, type TaskWriteResult, type TokenPricing, type TransmitterBinding, type TransmitterBindingStore, type TunnelDescriptor, type TunnelProvider, type TunnelStatus, type UsageBucket, type UsageComputeInput, type UsageRollup, type UsageSnapshotRecord, type UsageSource, WORKSPACE_SLUG_ENV, WORKTREE_ISOLATION_ENV, type WatcherDescriptor, type WatcherStartInput, type WebSearchInput, type WebSearchOutput, type WebSearchResult, type WorkspaceBrainSubscriber, type WorkspaceBrainSubscriberOptions, type WorkspaceBrains, WorkspaceFs, type WorktreeAutoReclaimer, type WorktreeDecision, type WorktreeField, type WorktreeGcClass, type WorktreeGcOutcomeView, type WorktreeGcPlanEntryView, type WorktreeGcReclaimReason, type WorktreeGcResult, type WorktreeGcRunInput, type WorktreeGcRunner, WorktreeIsolationMode, type WorktreeProvisionOutcome, type WorktreeProvisionRequest, type WorktreeProvisioner, type WorktreeRequest, type WorktreeStatusLister, type WorktreeStatusView, activityCounts, addHarnessPreset, appendConversationRecord, attachSandbox, bucketDir, bucketSessionsFile, bucketTranscriptDir, buildCatalogProviderModels, buildMcpConfigSnippet, buildRouteAwareLaunchConfig, canonicalForModeId, claudeProjectSlug, collectGcCandidates, composeSessionObservers, conversationIndexPath, createActivityProjector, createFileStepCache, createGateway, createInboundEndpointStore, createOrchestratorInjector, createOrchestratorMcpServerFactory, createPairingRegistry, createPrProvenanceReconciler, createReconnectLogGate, createScopeTokenRegistry, createSupervisorTaskGateRunner, createTaskLedger, createWorkspaceBrainSubscriber, createWorkspaceBrains, daemonRegistryDir, decideWorktreeIsolation, declaredPresetToProviderPreset, defineBraveSearchHttpDriver, defineSerperHttpDriver, deriveSessionUsage, enrichRollupWithProviderQuota, enrichWithRemainingQuota, evaluateCostBudget, filterActivities, findConversationRecord, findNativeMode, formatToolCall, formatToolResult, getDefaultHarnessPreset, getHarnessPreset, getMcpCredentialDeps, harnessPresetsPath, isAgentCliAuthConfigured, isClosedTaskStatus, isSafeBucketSlug, isTerminalActivityState, listBuckets, listHarnessPresets, listPresets, loadHarnessPresets, loadQuotaStore, loadWorktreeIsolation, locateConversationByNativePath, locateConversationBySessionId, makeBrowserAdapterLister, makeSandboxCredsStore, makeSandboxResolver, migrateLegacySessionsFile, migrationMarkerPath, monitorPolicyWait, monitorSessionWait, narrowOrchestratorTools, normalizeInbound, normalizeModeId, normalizeWorktreeField, parseAnthropicRateLimitHeaders, parseTaskStatus, parseWindow, parseWorktreeIsolationMode, policyToActivities, policyWatchesSession, prToActivities, projectSessionUsage, readConversationIndex, readDaemonRegistry, readProfileQuota, readRegisteredSlugs, readRuntimeMeta, readSandboxLedger, readSessionForBrain, readUsageSnapshots, reapGcEntry, reapOrphanedDescendants, recordProfileQuota, recordSandboxBoot, recordSandboxLiveness, recordSandboxOrigin, recordSandboxState, registerBrainTools, registerBuiltinRoutes, registerPairingTools, registerSandboxAttachTool, registerWebSearchTools, removeHarnessPreset, removeSandboxLedgerEntry, resolveBucketSlug, resolveNativeLink, resolvePosture, resolveReuseFromLedger, rollupUsage, runCrashDetectPass, runEagerResumePass, runIdleReapPass, runStallWatchdogPass, sandboxLedgerPath, setDefaultPreset, setMcpCredentialDeps, sweepStaleDaemonRegistry, sweepStaleRuntimeMetas, toWorktreeStatusView, turnToActivities, unlinkDaemonRegistryEntry, unlinkRuntimeMeta, updateHarnessPreset, upsertSandboxLedger, verifyInboundSignature, webSearchTool, workflowToActivities, writeDaemonRegistryEntry };
|