@deepseek-ai/dsh-tool-cordis 0.2.1-alpha.1 → 0.2.1-alpha.2

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 (2) hide show
  1. package/lib/types/api-catalog.js +241 -92
  2. package/package.json +10 -10
@@ -274,9 +274,9 @@ export const SERVICE_API = [
274
274
  },
275
275
  {
276
276
  signature: 'async sendMessage(caller: Agent, request: SendTeamMessageRequest): Promise<SendTeamMessageResult>',
277
- description: 'Queue one durable peer message, then attempt immediate delivery.',
278
- parameters: [{ name: 'caller', description: 'exact live sending Team member.' }, { name: 'request', description: 'target name, content, and pre-queue cancellation.' }],
279
- returns: 'durable message identity and immediate-delivery observation.',
277
+ description: 'Steer one peer message into the target inbox or reject the attempt.',
278
+ parameters: [{ name: 'caller', description: 'exact live sending Team member.' }, { name: 'request', description: 'target name, content, and cancellation before acceptance.' }],
279
+ returns: 'accepted inbox identity; acceptance follows normal Agent persistence and does not await model processing.',
280
280
  },
281
281
  {
282
282
  signature: 'async createTask(caller: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskView>',
@@ -690,6 +690,11 @@ export const SERVICE_API = [
690
690
  description: 'The operator Peer every admitted request speaks for; its scope lives as long as Connection.',
691
691
  parameters: [],
692
692
  },
693
+ {
694
+ signature: 'readonly allowsRemoteAuthorities: boolean',
695
+ description: 'Whether this deployment accepts authorities beyond loopback: true only when a validated `trustedHosts` entry names a non-loopback hostname.',
696
+ parameters: [],
697
+ },
693
698
  {
694
699
  signature: 'createSharedFetchHandler(channel: \'/api\'): ConnectionFetchHandler',
695
700
  description: 'Compose exact Fetch routes and the shared-channel RPC interceptor.',
@@ -710,7 +715,7 @@ export const SERVICE_API = [
710
715
  },
711
716
  {
712
717
  signature: 'authorizeIndex(request: ConnectionIndexRequest, response: ConnectionIndexResponse): boolean',
713
- description: 'Authenticate one frontend index request, owning a token redirect or 401.',
718
+ description: 'Authenticate one frontend index request, owning a token redirect or 401. The cookie this mints is `Secure` when the mounted Web carrier serves TLS, which only that listener\'s protocol decides.',
714
719
  parameters: [{ name: 'request', description: 'root or configured-index HTTP request.' }, { name: 'response', description: 'response owned when the result is false.' }],
715
720
  returns: 'true only when the frontend may serve index.html.',
716
721
  },
@@ -722,6 +727,25 @@ export const SERVICE_API = [
722
727
  },
723
728
  ],
724
729
  },
730
+ {
731
+ key: 'cotTranslation',
732
+ summary: 'Optional reasoning translation delegates Session-bound storage to the translator.',
733
+ description: 'Optional reasoning translation delegates Session-bound storage to the translator.',
734
+ methods: [
735
+ {
736
+ signature: '@Remote async limits(signal: AbortSignal): Promise<CotTranslationSnapshot>',
737
+ description: 'Read accepted translation preferences and the current request limit without sending text.',
738
+ parameters: [{ name: 'signal', description: 'browser query cancellation or Remote contribution withdrawal.' }],
739
+ returns: 'authoritative preferences, eligible routes, and maximum UTF-16 text length per request.',
740
+ },
741
+ {
742
+ signature: '@Remote async translate(request: TranslationRequest, signal: AbortSignal): Promise<string>',
743
+ description: 'Translate one displayed fragment through the reader\'s selected provider.',
744
+ parameters: [{ name: 'request', description: 'original text and Session identity supplied by the Client; provider and explicit target language match accepted preferences, while auto uses the browser locale.' }, { name: 'signal', description: 'browser cancellation or Remote contribution withdrawal.' }],
745
+ returns: 'translated text; an uncached inactive Session joins ordinary GUI activation before retry. Failures omit the source and provider response. Cancellation stops this caller\'s wait, not shared activation.',
746
+ },
747
+ ],
748
+ },
725
749
  {
726
750
  key: 'credentials',
727
751
  summary: 'Abstract credential service over two key spaces that answer two questions.',
@@ -904,7 +928,7 @@ export const SERVICE_API = [
904
928
  },
905
929
  {
906
930
  signature: 'async prepare(request: DeepSeekLlmApiExtensionRequest): Promise<PreparedDeepSeekLlmApiExtensions>',
907
- description: 'Prepare every currently registered field from one immutable base request. Preparation failures reject before HTTP dispatch. Field values are cloned and frozen; providers retain no mutable alias to the outgoing request.',
931
+ description: 'Prepare every currently registered field from one immutable base request. A provider whose preparation throws, or whose value cannot be cloned, is omitted from this request; the first such failure per field is logged. Only cancellation rejects. Field values are cloned and frozen; providers retain no mutable alias to the outgoing request.',
908
932
  parameters: [{ name: 'request', description: 'exact serialized request facts before extension fields.' }],
909
933
  returns: 'detached fields and their idempotent joint acceptance transaction.',
910
934
  },
@@ -1397,9 +1421,9 @@ export const SERVICE_API = [
1397
1421
  returns: 'a detached config only when a default must be materialized.',
1398
1422
  },
1399
1423
  {
1400
- signature: 'async prepareCall(config: LlmCallConfig, signal?: AbortSignal): Promise<PreparedLlmCall>',
1401
- description: 'Resolve one call under its current adapter registration. The returned one-shot handle keeps that registration across header logging and dispatch, so HMR cannot combine one adapter\'s capability result with another adapter.',
1402
- parameters: [{ name: 'config', description: 'provider/model route and optional request controls.' }, { name: 'signal', description: 'optional cancellation for adapter-owned capability lookup.' }],
1424
+ signature: 'async prepareCall( config: LlmCallConfig, signal?: AbortSignal, configure?: ConfigureCall, ): Promise<PreparedLlmCall>',
1425
+ description: 'Resolve one call under its current adapter registration. The returned one-shot handle keeps that registration across header logging and dispatch, so HMR cannot combine one adapter\'s capability result with another adapter. An optional synchronous callback selects concrete controls using captured model metadata. Defaults and validation apply to its result. Callback failures and cancellation reject preparation before dispatch.',
1426
+ parameters: [{ name: 'config', description: 'provider/model route and optional concrete request controls.' }, { name: 'signal', description: 'optional cancellation for adapter-owned capability lookup.' }, { name: 'configure', description: 'pure control selection, called once before defaults and validation.' }],
1403
1427
  returns: 'a prepared config and its registration-bound stream entry point.',
1404
1428
  },
1405
1429
  {
@@ -1605,7 +1629,7 @@ export const SERVICE_API = [
1605
1629
  },
1606
1630
  {
1607
1631
  signature: '@Remote listBundles(): Promise<BundleInfo[]>',
1608
- description: 'Read the profile\'s installed bundles, the bundles this dsh installation supplies, and the selected names that are not bundles. A dependency without a bundle patch is listed, as a `not-bundle` problem, only while it is selected.',
1632
+ description: 'Read installed, installation-provided, and offline Official catalog bundles, plus selected non-bundle names. A dependency without a bundle patch is listed, as a `not-bundle` problem, only while it is selected.',
1609
1633
  parameters: [],
1610
1634
  returns: 'Package versions, manifest descriptions, the installable spec of profile dependencies, rows, optional display metadata, activation selections, whether the installation offers the bundle, and removal availability.',
1611
1635
  },
@@ -1636,7 +1660,7 @@ export const SERVICE_API = [
1636
1660
  {
1637
1661
  signature: '@Remote installBundle(spec: string, options?: InstallBundleOptions): Promise<ChangeResult>',
1638
1662
  description: 'Install a package using the same pnpm implementation as dsh plugin. GitHub repositories get a connection check bounded by githubConnectionTimeoutMs before pnpm starts; only network failures or timeouts stop installation, while pnpm owns authentication and transport fallback. A run that fails, is cancelled, or adds a package without a bundle patch restores `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.',
1639
- parameters: [{ name: 'spec', description: 'One package spec, including local paths relative to the invocation directory.' }, { name: 'options', description: 'Whether to activate the installed bundle (defaults to true), the request id a cancellation names, the pending build scripts to allow for this profile before pnpm runs, and the registry asked first.' }],
1663
+ parameters: [{ name: 'spec', description: 'One package spec, including local paths relative to the invocation directory.' }, { name: 'options', description: 'Whether to activate the installed bundle (defaults to true), the request id a cancellation names, the pending build scripts to allow, whether to save an exact dependency, and the registry asked first.' }],
1640
1664
  returns: 'Package-manager diagnostics, the registries asked, and the observed activation outcome.',
1641
1665
  },
1642
1666
  {
@@ -1939,9 +1963,9 @@ export const SERVICE_API = [
1939
1963
  returns: 'the accepted title and durable event sequence.',
1940
1964
  },
1941
1965
  {
1942
- signature: '@Remote(\'fork\') fork(request: SessionForkRequest): Promise<SessionForkValue>',
1966
+ signature: '@Remote(\'fork\') async fork(request: SessionForkRequest): Promise<SessionForkValue>',
1943
1967
  description: 'Fork one cold-readable exact event prefix into a new Session. An omitted boundary selects the latest completed-turn prefix; an open cut receives synthetic fork closers.',
1944
- parameters: [{ name: 'request', description: 'source Session and optional exact inclusive event boundary.' }],
1968
+ parameters: [{ name: 'request', description: 'source Session, optional exact inclusive event boundary, and migration preflight choice.' }],
1945
1969
  returns: 'the new Session identity.',
1946
1970
  },
1947
1971
  {
@@ -1982,9 +2006,9 @@ export const SERVICE_API = [
1982
2006
  },
1983
2007
  {
1984
2008
  signature: '@Remote(\'projections\') async projections(request: SessionProjectionsRequest, signal: AbortSignal): Promise<SessionProjectionsValue>',
1985
- description: 'Read all registered projections without activating an Agent.',
1986
- parameters: [{ name: 'request', description: 'Session whose current values are required.' }, { name: 'signal', description: 'cancellation for the Session observation.' }],
1987
- returns: 'complete baseline, or null when the Session does not exist.',
2009
+ description: 'Read exact projections, returning cached hints only when migration is required.',
2010
+ parameters: [{ name: 'request', description: 'Session whose current values are required.' }, { name: 'signal', description: 'cancellation for the Session read.' }],
2011
+ returns: 'a sequenced baseline, cached hints when migration is deferred, or null when absent.',
1988
2012
  },
1989
2013
  {
1990
2014
  signature: '@Remote({ mode: \'stream\' }) control(signal: AbortSignal): AsyncIterable<SessionControlFrame>',
@@ -2435,7 +2459,7 @@ export const SERVICE_API = [
2435
2459
  },
2436
2460
  {
2437
2461
  signature: 'register(provider: SessionTitleProvider): () => Promise<void>',
2438
- description: 'Register the sole optional title provider. Disposal aborts its pending and active work before another provider may register.',
2462
+ description: 'Register the sole optional title provider. Disposal aborts its pending and active work; a replacement may register once disposal has started, and the closing provider\'s late results never commit.',
2439
2463
  parameters: [{ name: 'provider', description: 'provider identity, cadence, and generation function.' }],
2440
2464
  returns: 'exact Cordis effect disposer, which settles after active calls quiesce.',
2441
2465
  },
@@ -2814,8 +2838,8 @@ export const SERVICE_API = [
2814
2838
  },
2815
2839
  {
2816
2840
  key: 'subagents',
2817
- summary: 'Named provider registry with one-shot runs, durable discovery, and continuable-child operations.',
2818
- description: 'Named provider registry with one-shot runs, durable discovery, and continuable-child operations.',
2841
+ summary: 'Named provider registry with managed activations, durable discovery, and local child messaging.',
2842
+ description: 'Named provider registry with managed activations, durable discovery, and local child messaging.',
2819
2843
  methods: [
2820
2844
  {
2821
2845
  signature: 'resolveMaxDepth(configured?: number | \'provider-managed\'): number | undefined',
@@ -2824,11 +2848,22 @@ export const SERVICE_API = [
2824
2848
  returns: 'The numeric limit, or undefined when the provider owns depth enforcement.',
2825
2849
  },
2826
2850
  {
2827
- signature: 'async startContinuable(spec: ContinuableStartSpec): Promise<ContinuableStart>',
2828
- description: 'Establish one durable continuable child and deliver its initial prompt. Resolves when the child\'s inbox accepts that prompt, without waiting for the turn to start or for the message to reach the Session log; any earlier failure rejects with no ids and rolls back the child entirely.',
2829
- parameters: [{ name: 'spec', description: 'provider, delegation request, and caller cancellation.' }],
2830
- returns: 'the durable child id and the accepted prompt\'s message id.',
2831
- throws: ['when continuation services are unavailable or materialization fails.'],
2851
+ signature: 'startActivation(spec: SubagentActivationSpec & { readonly childId: SessionId }): Promise<SubagentActivation & { readonly messageId: MessageId }>',
2852
+ description: 'Start a local child under its reserved identity.',
2853
+ parameters: [{ name: 'spec', description: 'local task, reserved child id, and result recipient.' }],
2854
+ returns: 'activation with its accepted initial message id.',
2855
+ },
2856
+ {
2857
+ signature: 'startActivation(spec: SubagentActivationSpec): Promise<SubagentActivation>',
2858
+ description: 'Start a local or external child.',
2859
+ parameters: [{ name: 'spec', description: 'task, backend, and result recipient.' }],
2860
+ returns: 'activation with a message id only for local children.',
2861
+ },
2862
+ {
2863
+ signature: 'async waitForChildren(parent: Agent): Promise<boolean>',
2864
+ description: 'Join progressing descendants without cancelling them. Idle descendants whose inboxes require a later wake stay resident and do not delay host completion.',
2865
+ parameters: [{ name: 'parent', description: 'the exact parent whose descendant work is observed.' }],
2866
+ returns: 'whether work was joined; hosts recheck parent idle after true.',
2832
2867
  },
2833
2868
  {
2834
2869
  signature: 'async sendMessage( sender: Agent, targetId: SessionId, content: ContentBlock[], options: SubagentSendMessageOptions, ): Promise<MessageId>',
@@ -2839,22 +2874,22 @@ export const SERVICE_API = [
2839
2874
  },
2840
2875
  {
2841
2876
  signature: 'interrupt(targetSessionId: SessionId, authority: SubagentInterruptAuthority): void',
2842
- description: 'Interrupt one live continuable child\'s current turn under a human parent address or an exact live ancestor Agent. Fire-and-return: the cancel signal is issued before this returns, but the target may keep running until it observes the signal. Unclaimed pending inbox work, the Activation, and published descendants are preserved; claimed work is not requeued. Once the interrupted driver is idle, a waking send resumes the parked FIFO queue. An absent target — including a one-shot or unknown id — is an accepted no-op, as is a manager-less composition, which cannot own a live Activation.',
2877
+ description: 'Interrupt one live child\'s current execution under a human parent address or an exact live ancestor Agent. Fire-and-return: the cancel signal is issued before this returns, but the target may keep running until it observes the signal. Unclaimed pending inbox work, the Activation, and published descendants are preserved; claimed work is not requeued. Once the interrupted Agent is idle, a waking send resumes the parked FIFO queue. External backends stop their single execution. An absent target is an accepted no-op, as is a manager-less composition, which cannot own a live Activation.',
2843
2878
  parameters: [{ name: 'targetSessionId', description: 'the durable child session id to interrupt.' }, { name: 'authority', description: 'the human parent address or exact live ancestor Agent.' }],
2844
2879
  throws: ['{SubagentError} `UNAUTHORIZED` when the authority does not own the live target.'],
2845
2880
  },
2846
2881
  {
2847
- signature: 'async drainContinuableDescendants(parents: readonly Agent[]): Promise<void>',
2848
- description: 'Close continuable admission below exact live parent Agents, stop only their visible descendant Activations synchronously, then await admitted scoped materializations and release those forests child-first. The scoped cutoff lasts until each exact parent leaves the registry; unrelated parent trees remain live.',
2882
+ signature: 'async drainDescendants(parents: readonly Agent[]): Promise<void>',
2883
+ description: 'Close subagent admission below exact live parent Agents, stop only their visible descendant Activations synchronously, then await admitted scoped materializations and release those forests child-first. The scoped cutoff lasts until each exact parent leaves the registry; unrelated parent trees remain live.',
2849
2884
  parameters: [{ name: 'parents', description: 'exact host-owned parent Agents entering teardown.' }],
2850
- returns: 'once every retained descendant Activation released its `AgentHandle`.',
2885
+ returns: 'once every retained descendant activation released its execution handle.',
2851
2886
  throws: ['an aggregate error after all branches settle when any failed.'],
2852
2887
  },
2853
2888
  {
2854
- signature: 'async drainContinuableChildren(parent: Agent, childIds: readonly SessionId[]): Promise<void>',
2855
- description: 'Release selected resident continuable direct children of one exact live parent. Other children of the same parent remain admitted and resident. Absent targets and a manager-less composition are accepted no-ops.',
2889
+ signature: 'async drainChildren(parent: Agent, childIds: readonly SessionId[]): Promise<void>',
2890
+ description: 'Release selected resident direct children of one exact live parent. Other children of the same parent remain admitted and resident. Absent targets and a manager-less composition are accepted no-ops.',
2856
2891
  parameters: [{ name: 'parent', description: 'exact live direct parent authorizing the selected release.' }, { name: 'childIds', description: 'durable direct-child ids to release when resident.' }],
2857
- returns: 'once every selected Activation released its `AgentHandle`.',
2892
+ returns: 'once every selected activation released its execution handle.',
2858
2893
  throws: ['{SubagentError} `UNAUTHORIZED` when a resident target belongs to a different parent or the supplied parent identity is stale.'],
2859
2894
  },
2860
2895
  {
@@ -2866,7 +2901,7 @@ export const SERVICE_API = [
2866
2901
  },
2867
2902
  {
2868
2903
  signature: 'listDescendants(rootSessionId: SessionId, signal?: AbortSignal): Promise<SubagentDescendantListEntry[]>',
2869
- description: 'Recursively list reachable parent catalogs in stable pre-order, preserving each catalog\'s event order. Each row carries its catalog parent and depth; one-shot and unknown-mode children remain traversal nodes. Unknown modes produce unsupported diagnostics. Unreadable child catalogs produce corrupt or unavailable diagnostics and stop only that branch. Root read failures, missing services or projections, and cancellation reject the whole listing. Each catalog is observed once and released before the next read. No Agent is loaded or resumed; Sessions absent from reachable catalogs are omitted.',
2904
+ description: 'Recursively list reachable parent catalogs in stable pre-order, preserving each catalog\'s event order. Each row carries its catalog parent and depth; external children are leaves; one-shot and unknown-mode children remain traversal nodes. Unknown modes produce unsupported diagnostics. Unreadable child catalogs produce corrupt or unavailable diagnostics and stop only that branch. Root read failures, missing services or projections, and cancellation reject the whole listing. Each catalog is observed once and released before the next read. No Agent is loaded or resumed; Sessions absent from reachable catalogs are omitted.',
2870
2905
  parameters: [{ name: 'rootSessionId', description: 'session whose catalog starts descendant discovery.' }, { name: 'signal', description: 'cancellation forwarded to and checked around each catalog read.' }],
2871
2906
  returns: 'children and branch diagnostics in parent-catalog pre-order.',
2872
2907
  throws: ['{@link SubagentError} when listing dependencies are unavailable or the caller cancels.', 'SessionQueryError when the root catalog cannot be read.'],
@@ -2887,7 +2922,7 @@ export const SERVICE_API = [
2887
2922
  },
2888
2923
  {
2889
2924
  signature: 'registerProvider(provider: SubagentProvider): () => void',
2890
- description: 'Register a provider under its name. Registration is effect-scoped and HMR safe; removing a provider blocks new starts but does not revoke runs that were already returned to their holders.',
2925
+ description: 'Register a provider under its name. Registration is effect-scoped and HMR safe; removing a provider blocks new starts but does not revoke runs that were already returned to their holders. Providers without either execution method are rejected with UNSUPPORTED_CAPABILITY before registration.',
2891
2926
  parameters: [{ name: 'provider', description: 'the trusted provider implementation.' }],
2892
2927
  returns: 'the exact Cordis effect disposer.',
2893
2928
  },
@@ -2903,12 +2938,6 @@ export const SERVICE_API = [
2903
2938
  parameters: [],
2904
2939
  returns: 'the registered names.',
2905
2940
  },
2906
- {
2907
- signature: 'async start(name: string, request: SubagentStartRequest): Promise<SubagentRun>',
2908
- description: 'Establish a published child on the named provider. Capability and semantic checks run before delegation. Provider ownership lasts until its promise fulfills; a rejection therefore has no run for the caller to dispose and emits no run lifecycle events. Post-publication turn and infrastructure failures settle through the returned run. A catalog append failure disposes the run and handles its result rejection; the caller receives the catalog error even if disposal also fails.',
2909
- parameters: [{ name: 'name', description: 'the provider to use.' }, { name: 'request', description: 'child label, prompt, parent, signal, and optional capabilities.' }],
2910
- returns: 'the published holder-owned run.',
2911
- },
2912
2941
  ],
2913
2942
  },
2914
2943
  {
@@ -2974,7 +3003,7 @@ export const SERVICE_API = [
2974
3003
  },
2975
3004
  {
2976
3005
  signature: 'suppressRuntimeContext(): () => void',
2977
- description: 'Suppress every dynamic runtime-context contribution in the calling context\'s scope without changing the services that own or enforce those facts. Multiple suppressors remain independently disposable.',
3006
+ description: 'Suppress optional dynamic runtime-context contributions in the calling context\'s scope without changing the services that own or enforce those facts. Multiple suppressors remain independently disposable.',
2978
3007
  parameters: [],
2979
3008
  returns: 'the exact Cordis effect disposer.',
2980
3009
  },
@@ -2990,6 +3019,12 @@ export const SERVICE_API = [
2990
3019
  parameters: [{ name: 'name', description: 'the `[a-z][a-z0-9_]*` reference name.' }, { name: 'provider', description: 'evaluated for each assembly.' }],
2991
3020
  returns: 'the exact Cordis effect disposer.',
2992
3021
  },
3022
+ {
3023
+ signature: 'refreshContext(assembly: PromptAssembly, context: AssembleContext = {}): PromptAssembly',
3024
+ description: 'Refresh accepted registered runtime facts for request admission. Contexts added only by the assembly waterfall retain their accepted values. Current suppression removes optional contexts, and missing required registrations are restored in registry order. Sections, tools, and interpolation variables retain the accepted assembly; their providers and waterfall do not rerun.',
3025
+ parameters: [{ name: 'assembly', description: 'accepted assembly for this scope and step.' }, { name: 'context', description: 'the same scope and current plugin-defined assembly fields.' }],
3026
+ returns: 'the accepted assembly with current runtime-context provider text.',
3027
+ },
2993
3028
  {
2994
3029
  signature: 'async assemble(context: AssembleContext = {}): Promise<PromptAssembly>',
2995
3030
  description: 'Assemble global and scoped providers, detach tool parameters, apply canonical ordering, then run the assembly waterfall. Scoped sections and variables shadow globals. The returned waterfall value is authoritative except that an effective complete section is restored afterwards as the sole prompt section.',
@@ -3005,9 +3040,9 @@ export const SERVICE_API = [
3005
3040
  methods: [
3006
3041
  {
3007
3042
  signature: '@Remote environment(agent: Agent, signal: AbortSignal): TerminalEnvironment',
3008
- description: 'Read the Session working directory and terminal limits without resolving a shell.',
3043
+ description: 'Read the Session\'s current directory and terminal limits without filesystem validation or shell lookup.',
3009
3044
  parameters: [{ name: 'agent', description: 'Session owner supplied by the Gateway.' }, { name: 'signal', description: 'request cancellation.' }],
3010
- returns: 'the Session workspace directory and terminal limits.',
3045
+ returns: 'the logged current directory and terminal limits; retained terminals keep their own process directories.',
3011
3046
  },
3012
3047
  {
3013
3048
  signature: '@Remote shells(agent: Agent, signal: AbortSignal): Promise<TerminalShell[]>',
@@ -3267,6 +3302,31 @@ export const SERVICE_API = [
3267
3302
  },
3268
3303
  ],
3269
3304
  },
3305
+ {
3306
+ key: 'translator',
3307
+ summary: 'One Host service with explicit routing, cancellation and quiescent unload.',
3308
+ description: 'One Host service with explicit routing, cancellation and quiescent unload.',
3309
+ methods: [
3310
+ {
3311
+ signature: 'async availableProviders(signal?: AbortSignal): Promise<readonly TranslationProvider[]>',
3312
+ description: 'Inspect eligible native routes without inference; saved results remain readable for unavailable routes.',
3313
+ parameters: [{ name: 'signal', description: 'optional caller cancellation, combined with service disposal.' }],
3314
+ returns: 'anonymous choices followed by eligible explicitly selected paid routes.',
3315
+ },
3316
+ {
3317
+ signature: 'resolve(request: TranslationRequest): TranslationSpec',
3318
+ description: 'Resolve provider and source-language defaults without sending text.',
3319
+ parameters: [{ name: 'request', description: 'consumer text, destination and optional routing choices.' }],
3320
+ returns: 'a complete specification; exceeding `maxTextChars` throws `TRANSLATION_TEXT_LIMIT`.',
3321
+ },
3322
+ {
3323
+ signature: 'async translate(spec: TranslationSpec, signal?: AbortSignal): Promise<string>',
3324
+ description: 'Translate one resolved specification; the selected provider receives its text.',
3325
+ parameters: [{ name: 'spec', description: 'complete routing and language choices from `resolve()`.' }, { name: 'signal', description: 'optional caller cancellation, combined with service disposal.' }],
3326
+ returns: 'translated plain text, durably retained before return when a Session is supplied. An uncached supplied Session must be active; otherwise rejects with `TRANSLATION_SESSION_INACTIVE` before dispatch. Rejects provider/storage/limit failures and preserves cancellation reasons.',
3327
+ },
3328
+ ],
3329
+ },
3270
3330
  {
3271
3331
  key: 'typert',
3272
3332
  summary: 'Registry of generated schemas, package reflection, invocations, and Remote dependency providers.',
@@ -3441,7 +3501,7 @@ export const SERVICE_API = [
3441
3501
  {
3442
3502
  key: 'webServer',
3443
3503
  summary: 'The browser HTTP carrier service.',
3444
- description: 'The browser HTTP carrier service. Activation listens immediately. Route registration order does not affect requests because configured named routes must be distinct, and the fallback handler answers anything not yet claimed during startup with 404 until its owner registers. A listen failure rejects initialization, and the boot process reports the failed fiber.',
3504
+ description: 'The browser HTTP carrier service. Activation loads any configured TLS material, then listens immediately; a material or listen failure rejects initialization, and the boot process reports the failed fiber. Route registration order does not affect requests because configured named routes must be distinct, and the fallback handler answers anything not yet claimed during startup with 404 until its owner registers.',
3445
3505
  methods: [
3446
3506
  {
3447
3507
  signature: 'register(route: WebRoute): () => void',
@@ -3500,6 +3560,38 @@ export const SERVICE_API = [
3500
3560
  },
3501
3561
  ],
3502
3562
  },
3563
+ {
3564
+ key: 'workingDirectory',
3565
+ summary: 'One owner for each Session\'s effective directory and its model-visible changes.',
3566
+ description: 'One owner for each Session\'s effective directory and its model-visible changes.',
3567
+ methods: [
3568
+ {
3569
+ signature: 'readonly defaultDirectory: string',
3570
+ description: 'Absolute deployment fallback for Sessions with no recorded original directory.',
3571
+ parameters: [],
3572
+ },
3573
+ {
3574
+ signature: 'get(session: Session): string',
3575
+ description: 'Read the committed directory without filesystem I/O.',
3576
+ parameters: [{ name: 'session', description: 'Session whose directory is requested.' }],
3577
+ returns: 'its effective absolute directory.',
3578
+ },
3579
+ {
3580
+ signature: 'ensure(agent: Agent, signal?: AbortSignal): Promise<string>',
3581
+ description: 'Validate the current directory and restore the original project when it disappeared.',
3582
+ parameters: [{ name: 'agent', description: 'live or unpublished Agent owning the Session.' }, { name: 'signal', description: 'cancellation for filesystem inspection.' }],
3583
+ returns: 'the existing directory; recovery is committed before fulfillment. A notice failure is warned without reverting the committed state.',
3584
+ throws: ['when the original project is also unavailable.'],
3585
+ },
3586
+ {
3587
+ signature: 'set(agent: Agent, path: string, signal?: AbortSignal): Promise<string>',
3588
+ description: 'Change one Session\'s directory without changing existing processes or permissions.',
3589
+ parameters: [{ name: 'agent', description: 'live or unpublished Agent owning the Session.' }, { name: 'path', description: 'absolute path or a path relative to its current directory.' }, { name: 'signal', description: 'cancellation before the durable change.' }],
3590
+ returns: 'the canonical absolute directory, committed before fulfillment. A notice failure is warned; the next request still receives the committed directory.',
3591
+ throws: ['when the requested path is not an existing directory.'],
3592
+ },
3593
+ ],
3594
+ },
3503
3595
  {
3504
3596
  key: 'workspaceChanges',
3505
3597
  summary: 'Serves the summaries and file comparisons the recorder keeps for live Sessions.',
@@ -3704,6 +3796,19 @@ export const SERVICE_API = [
3704
3796
  },
3705
3797
  ],
3706
3798
  },
3799
+ {
3800
+ key: 'worktrees',
3801
+ summary: 'Creates retained Git worktrees under the mounted filesystem and sandbox providers.',
3802
+ description: 'Creates retained Git worktrees under the mounted filesystem and sandbox providers.',
3803
+ methods: [
3804
+ {
3805
+ signature: 'async create(agent: Agent, request: CreateWorktreeRequest = {}, signal?: AbortSignal): Promise<CreatedWorktree>',
3806
+ description: 'Create a fresh branch and checkout at a pinned local revision, then enter it. Existing branches or checkout paths fail. Uncommitted files stay in the source checkout. Checkout disables configured clean, smudge, and process filters without changing Git config. Repository-local replacement refs still apply; baseCommit reports the resolved object name. The new checkout becomes current only after Git setup succeeds. Failures may retain newly allocated Git/filesystem artifacts; no branch or checkout is removed automatically.',
3807
+ parameters: [{ name: 'agent', description: 'caller whose current directory selects the source repository and file policy.' }, { name: 'request', description: 'optional new name and local revision; defaults are generated name and HEAD.' }, { name: 'signal', description: 'cancellation of lookup, creation, and working-directory publication.' }],
3808
+ returns: 'canonical checkout path, branch name, pinned commit, and source repository root.',
3809
+ },
3810
+ ],
3811
+ },
3707
3812
  ];
3708
3813
  /** Every harness event, sorted by name. */
3709
3814
  export const EVENT_API = [
@@ -4470,6 +4575,14 @@ export const TYPE_API = [
4470
4575
  name: 'AgentStatus',
4471
4576
  declaration: 'export type AgentStatus = \'idle\' | \'running\';',
4472
4577
  },
4578
+ {
4579
+ name: 'AnonymousTranslationProvider',
4580
+ declaration: 'export type AnonymousTranslationProvider = \'google\' | \'bing\';',
4581
+ },
4582
+ {
4583
+ name: 'AnonymousTranslationSpec',
4584
+ declaration: 'export interface AnonymousTranslationSpec extends TranslationSpecFields {\n readonly provider: AnonymousTranslationProvider;\n}',
4585
+ },
4473
4586
  {
4474
4587
  name: 'AnyHook',
4475
4588
  declaration: 'export type AnyHook = ModHook<unknown, unknown>;',
@@ -4544,7 +4657,7 @@ export const TYPE_API = [
4544
4657
  },
4545
4658
  {
4546
4659
  name: 'AssembledContext',
4547
- declaration: 'export interface AssembledContext {\n name: string;\n text: string;\n}',
4660
+ declaration: 'export interface AssembledContext {\n name: string;\n text: string;\n interpolate?: boolean;\n}',
4548
4661
  },
4549
4662
  {
4550
4663
  name: 'AssembledSection',
@@ -4672,7 +4785,7 @@ export const TYPE_API = [
4672
4785
  },
4673
4786
  {
4674
4787
  name: 'BundleInfo',
4675
- declaration: 'export interface BundleInfo {\n name: string;\n version?: string;\n meta?: PluginLocalizedMeta;\n description?: string;\n enabled: boolean;\n installed: boolean;\n source?: string;\n optional: boolean;\n removable: boolean;\n readOnlyReason?: ReadOnlyReason;\n error?: ManagementError;\n rows: BundleRowInfo[];\n overrides: string[];\n}',
4788
+ declaration: 'export interface BundleInfo {\n name: string;\n official: boolean;\n availability: \'installation\' | \'profile\' | \'missing\';\n installTarget?: {\n spec: string;\n version: string;\n };\n version?: string;\n meta?: PluginLocalizedMeta;\n description?: string;\n enabled: boolean;\n installed: boolean;\n source?: string;\n optional: boolean;\n removable: boolean;\n readOnlyReason?: ReadOnlyReason;\n error?: ManagementError;\n rows: BundleRowInfo[];\n overrides: string[];\n}',
4676
4789
  },
4677
4790
  {
4678
4791
  name: 'BundleRowInfo',
@@ -4774,6 +4887,10 @@ export const TYPE_API = [
4774
4887
  name: 'ComputerUseProviderName',
4775
4888
  declaration: 'export type ComputerUseProviderName = Branded<\'ComputerUseProviderName\'>;',
4776
4889
  },
4890
+ {
4891
+ name: 'ConfigureCall',
4892
+ declaration: 'export type ConfigureCall = (controls: Readonly<LlmCallControls>, model: Readonly<LlmResolvedModelInfo>) => LlmCallControls;',
4893
+ },
4777
4894
  {
4778
4895
  name: 'ConfinedArgv',
4779
4896
  declaration: 'export interface ConfinedArgv {\n argv: string[];\n enforcement: SandboxEnforcement;\n denialSignatures: readonly string[];\n runnerFailureRules: readonly RunnerFailureRule[];\n}',
@@ -4848,24 +4965,12 @@ export const TYPE_API = [
4848
4965
  },
4849
4966
  {
4850
4967
  name: 'ContinuableCreateRequest',
4851
- declaration: 'export interface ContinuableCreateRequest {\n readonly sessionId: SessionId;\n readonly parent: Agent;\n readonly signal: AbortSignal;\n}',
4968
+ declaration: 'export interface ContinuableCreateRequest {\n readonly cwd: string;\n readonly sessionId: SessionId;\n readonly parent: Agent;\n readonly signal: AbortSignal;\n}',
4852
4969
  },
4853
4970
  {
4854
4971
  name: 'ContinuableCreateSpec',
4855
4972
  declaration: 'export interface ContinuableCreateSpec {\n readonly seed?: readonly SessionEvent[];\n}',
4856
4973
  },
4857
- {
4858
- name: 'ContinuableStart',
4859
- declaration: 'export interface ContinuableStart {\n readonly childId: SessionId;\n readonly messageId: MessageId;\n}',
4860
- },
4861
- {
4862
- name: 'ContinuableStartSpec',
4863
- declaration: 'export interface ContinuableStartSpec {\n readonly provider: string;\n readonly label: string;\n readonly childId?: SessionId;\n readonly request: Omit<SubagentStartRequest, \'label\' | \'signal\' | \'outputSchema\'>;\n readonly signal: AbortSignal;\n}',
4864
- },
4865
- {
4866
- name: 'ContinuableSubagentDescriptorData',
4867
- declaration: 'export interface ContinuableSubagentDescriptorData extends SubagentDescriptorBase {\n readonly mode: \'continuable\';\n readonly label: string;\n readonly agentProvider?: string;\n readonly agentModel?: string;\n readonly agentReasoningEffort?: ReasoningEffortId;\n readonly persona?: string;\n readonly toolFilter?: ToolRestriction;\n}',
4868
- },
4869
4974
  {
4870
4975
  name: 'CordisDynamicPackageId',
4871
4976
  declaration: 'export type CordisDynamicPackageId = Branded<\'CordisDynamicPackageId\'>;',
@@ -4934,10 +5039,22 @@ export const TYPE_API = [
4934
5039
  name: 'CordisRuntimeTreeReader',
4935
5040
  declaration: 'export interface CordisRuntimeTreeReader {\n getTree(): Promise<CordisRuntimeTree>;\n}',
4936
5041
  },
5042
+ {
5043
+ name: 'CotTranslationPreferences',
5044
+ declaration: 'export interface CotTranslationPreferences {\n provider: TranslationProvider;\n targetLanguage: string;\n}',
5045
+ },
5046
+ {
5047
+ name: 'CotTranslationSnapshot',
5048
+ declaration: 'export interface CotTranslationSnapshot {\n maxTextChars: number;\n preferences: CotTranslationPreferences;\n availableProviders: readonly TranslationProvider[];\n}',
5049
+ },
4937
5050
  {
4938
5051
  name: 'CreateAgentOptions',
4939
5052
  declaration: 'export interface CreateAgentOptions {\n readonly sessionId: SessionId;\n readonly parentAgent?: Agent;\n readonly meta?: {\n readonly cwd?: string;\n readonly parentSession?: SessionId;\n readonly isSeeded?: boolean;\n readonly origin?: \'subagent\';\n readonly delegationDepth?: number;\n readonly agentPreset?: string;\n };\n readonly inheritedEventCount?: SessionLogOffset;\n readonly seed?: readonly SessionEvent[];\n readonly agentOptions?: AgentOptions;\n readonly signal?: AbortSignal;\n readonly setup?: AgentSetup;\n}',
4940
5053
  },
5054
+ {
5055
+ name: 'CreatedWorktree',
5056
+ declaration: 'export interface CreatedWorktree {\n path: string;\n branch: string;\n baseCommit: string;\n repositoryRoot: string;\n}',
5057
+ },
4941
5058
  {
4942
5059
  name: 'CreateGoalRequest',
4943
5060
  declaration: 'export interface CreateGoalRequest {\n readonly objective: string;\n readonly maxGoalRounds?: number;\n}',
@@ -4954,6 +5071,10 @@ export const TYPE_API = [
4954
5071
  name: 'CreateTeamTaskRequest',
4955
5072
  declaration: 'export interface CreateTeamTaskRequest {\n readonly subject: string;\n readonly description: string;\n readonly blockedBy?: readonly TeamTaskId[];\n readonly writeScopes?: readonly string[];\n}',
4956
5073
  },
5074
+ {
5075
+ name: 'CreateWorktreeRequest',
5076
+ declaration: 'export interface CreateWorktreeRequest {\n name?: string;\n from?: string;\n}',
5077
+ },
4957
5078
  {
4958
5079
  name: 'CredentialInfo',
4959
5080
  declaration: 'export interface CredentialInfo {\n configured: boolean;\n source?: string;\n writable: boolean;\n}',
@@ -5144,7 +5265,7 @@ export const TYPE_API = [
5144
5265
  },
5145
5266
  {
5146
5267
  name: 'EventLogOptions',
5147
- declaration: 'export interface EventLogOptions {\n exporter: SessionLogOptions[\'exporter\'];\n resourceAttributes: Attributes;\n scope: {\n name: string;\n version?: string;\n };\n processor: Omit<BatchLogRecordProcessorOptions, \'exporter\'>;\n onFailure: SessionLogOptions[\'onFailure\'];\n}',
5268
+ declaration: 'export interface EventLogOptions {\n exporter: LogExporterOptions;\n resourceAttributes: Attributes;\n scope: {\n name: string;\n version?: string;\n };\n processor: Omit<BatchLogRecordProcessorOptions, \'exporter\'>;\n onFailure: SessionLogOptions[\'onFailure\'];\n}',
5148
5269
  },
5149
5270
  {
5150
5271
  name: 'EventLogReporter',
@@ -5392,7 +5513,7 @@ export const TYPE_API = [
5392
5513
  },
5393
5514
  {
5394
5515
  name: 'InstallBundleOptions',
5395
- declaration: 'export interface InstallBundleOptions {\n enabled?: boolean;\n requestId?: PluginInstallRequestId;\n approvedBuilds?: string[];\n registry?: Registry;\n}',
5516
+ declaration: 'export interface InstallBundleOptions {\n enabled?: boolean;\n saveExact?: boolean;\n requestId?: PluginInstallRequestId;\n approvedBuilds?: string[];\n registry?: Registry;\n}',
5396
5517
  },
5397
5518
  {
5398
5519
  name: 'InstallSpecKind',
@@ -5496,7 +5617,7 @@ export const TYPE_API = [
5496
5617
  },
5497
5618
  {
5498
5619
  name: 'JobKindMap',
5499
- declaration: 'export interface JobKindMap {\n bash: \'bash\';\n subagent: \'subagent\';\n}',
5620
+ declaration: 'export interface JobKindMap {\n bash: \'bash\';\n}',
5500
5621
  },
5501
5622
  {
5502
5623
  name: 'JobListFrame',
@@ -5584,12 +5705,16 @@ export const TYPE_API = [
5584
5705
  },
5585
5706
  {
5586
5707
  name: 'LlmCallConfig',
5587
- declaration: 'export interface LlmCallConfig {\n provider: string;\n model: string;\n reasoningEffort?: ReasoningEffortId;\n temperature?: number;\n maxTokens?: number;\n stop?: string[];\n}',
5708
+ declaration: 'export interface LlmCallConfig extends LlmCallControls {\n provider: string;\n model: string;\n}',
5588
5709
  },
5589
5710
  {
5590
5711
  name: 'LlmCallConfigAdapterDefaults',
5591
5712
  declaration: 'export interface LlmCallConfigAdapterDefaults {\n reasoningEffort?: true;\n maxTokens?: true;\n}',
5592
5713
  },
5714
+ {
5715
+ name: 'LlmCallControls',
5716
+ declaration: 'export interface LlmCallControls {\n reasoningEffort?: ReasoningEffortId;\n temperature?: number;\n maxTokens?: number;\n stop?: string[];\n}',
5717
+ },
5593
5718
  {
5594
5719
  name: 'LlmConfigurableProvider',
5595
5720
  declaration: 'export interface LlmConfigurableProvider {\n provider: string;\n displayName: string;\n settingsNs: string;\n settingsPath: readonly string[];\n declared?: boolean;\n error?: string;\n}',
@@ -5640,7 +5765,7 @@ export const TYPE_API = [
5640
5765
  },
5641
5766
  {
5642
5767
  name: 'LlmRuntime',
5643
- declaration: 'export class LlmRuntime extends TypertRemoteService {\n constructor(ctx: Context);\n registerAdapter(providers: string[], adapter: LlmAdapter): AdapterRegistrationHandle;\n @Remote\n listProviders(): LlmProviderInfo[];\n registerConfigurableProviders(entries: readonly LlmConfigurableProvider[]): DirectoryRegistrationHandle;\n @Remote\n listConfigurableProviders(): LlmConfigurableProvider[];\n registerModelDiscovery(settingsNs: string, discover: (request: LlmModelDiscoveryRequest, signal?: AbortSignal) => Promise<readonly LlmDiscoveredModel[]>): () => void;\n async discoverModels(settingsNs: string, request: LlmModelDiscoveryRequest, signal?: AbortSignal): Promise<LlmDiscoveredModel[]>;\n @Remote(\'discoverModels\')\n async remoteDiscoverModels(settingsNs: string, request: LlmModelDiscoveryRequest, signal: AbortSignal): Promise<LlmDiscoveredModel[]>;\n providerRetryPolicy(provider: string): ResolvedRetryPolicy;\n imageRequestPricing(provider: string, model: string): LlmImageRequestPricing | undefined;\n fileRequestText(ref: FileAttachmentRef): string;\n async listModels(provider: string): Promise<LlmModelInfo[]>;\n async resolveModelInfo(provider: string, model: string, signal?: AbortSignal): Promise<LlmResolvedModelInfo>;\n async resolveCallConfig(config: LlmCallConfig, signal?: AbortSignal): Promise<LlmCallConfig>;\n async prepareCall(config: LlmCallConfig, signal?: AbortSignal): Promise<PreparedLlmCall>;\n stream(options: GenerateOptions) /* …truncated — full shape in source */',
5768
+ declaration: 'export class LlmRuntime extends TypertRemoteService {\n constructor(ctx: Context);\n registerAdapter(providers: string[], adapter: LlmAdapter): AdapterRegistrationHandle;\n @Remote\n listProviders(): LlmProviderInfo[];\n registerConfigurableProviders(entries: readonly LlmConfigurableProvider[]): DirectoryRegistrationHandle;\n @Remote\n listConfigurableProviders(): LlmConfigurableProvider[];\n registerModelDiscovery(settingsNs: string, discover: (request: LlmModelDiscoveryRequest, signal?: AbortSignal) => Promise<readonly LlmDiscoveredModel[]>): () => void;\n async discoverModels(settingsNs: string, request: LlmModelDiscoveryRequest, signal?: AbortSignal): Promise<LlmDiscoveredModel[]>;\n @Remote(\'discoverModels\')\n async remoteDiscoverModels(settingsNs: string, request: LlmModelDiscoveryRequest, signal: AbortSignal): Promise<LlmDiscoveredModel[]>;\n providerRetryPolicy(provider: string): ResolvedRetryPolicy;\n imageRequestPricing(provider: string, model: string): LlmImageRequestPricing | undefined;\n fileRequestText(ref: FileAttachmentRef): string;\n async listModels(provider: string): Promise<LlmModelInfo[]>;\n async resolveModelInfo(provider: string, model: string, signal?: AbortSignal): Promise<LlmResolvedModelInfo>;\n async resolveCallConfig(config: LlmCallConfig, signal?: AbortSignal): Promise<LlmCallConfig>;\n async prepareCall(config: LlmCallConfig, signal?: AbortSignal, configure?: ConfigureCall): Promise<PreparedLlmCall>;\n strea /* …truncated — full shape in source */',
5644
5769
  },
5645
5770
  {
5646
5771
  name: 'LocalAtInput',
@@ -5650,6 +5775,10 @@ export const TYPE_API = [
5650
5775
  name: 'LocalizedText',
5651
5776
  declaration: 'export type LocalizedText = string | {\n readonly en: string;\n readonly [locale: string]: string;\n};',
5652
5777
  },
5778
+ {
5779
+ name: 'LogExporterOptions',
5780
+ declaration: 'export type LogExporterOptions = Omit<OTLPExporterNodeConfigBase, \'selfObsMeterProvider\'> & {\n url: string;\n};',
5781
+ },
5653
5782
  {
5654
5783
  name: 'LspHover',
5655
5784
  declaration: 'export interface LspHover {\n readonly contents: string;\n readonly range?: LspRange;\n}',
@@ -5914,10 +6043,6 @@ export const TYPE_API = [
5914
6043
  name: 'OneShotScheduleRecord',
5915
6044
  declaration: 'export type OneShotScheduleRecord = AfterScheduleRecord | AtScheduleRecord;',
5916
6045
  },
5917
- {
5918
- name: 'OneShotSubagentDescriptorData',
5919
- declaration: 'export interface OneShotSubagentDescriptorData extends SubagentDescriptorBase {\n readonly mode: \'one-shot\';\n readonly label?: string;\n}',
5920
- },
5921
6046
  {
5922
6047
  name: 'OptionalSessionSeq',
5923
6048
  declaration: 'export type OptionalSessionSeq = SessionSeq | null;',
@@ -5934,6 +6059,14 @@ export const TYPE_API = [
5934
6059
  name: 'PackageResult',
5935
6060
  declaration: 'export interface PackageResult {\n exitCode: number;\n output: string;\n truncated: boolean;\n logPath: string;\n kind?: PluginInstallFailureKind;\n timedOut?: boolean;\n incompatible?: IncompatiblePlugin[];\n}',
5936
6061
  },
6062
+ {
6063
+ name: 'PaidTranslationProvider',
6064
+ declaration: 'export type PaidTranslationProvider = \'deepseek-account\' | \'deepseek-official\';',
6065
+ },
6066
+ {
6067
+ name: 'PaidTranslationSpec',
6068
+ declaration: 'export interface PaidTranslationSpec extends TranslationSpecFields {\n readonly provider: PaidTranslationProvider;\n readonly sessionId: SessionId;\n}',
6069
+ },
5937
6070
  {
5938
6071
  name: 'PaneOpenArgs',
5939
6072
  declaration: 'export interface PaneOpenArgs {\n id: string;\n title?: string;\n focus?: true;\n closeOnEscape?: true;\n holdToasts?: true;\n rows?: number;\n columns?: number;\n}',
@@ -6116,7 +6249,7 @@ export const TYPE_API = [
6116
6249
  },
6117
6250
  {
6118
6251
  name: 'PromptContext',
6119
- declaration: 'export interface PromptContext {\n readonly name: string;\n readonly order: number;\n readonly text: string | ((context: AssembleContext) => string);\n}',
6252
+ declaration: 'export interface PromptContext {\n readonly name: string;\n readonly order: number;\n readonly text: string | ((context: AssembleContext) => string);\n readonly interpolate?: boolean;\n readonly required?: boolean;\n}',
6120
6253
  },
6121
6254
  {
6122
6255
  name: 'PromptContextOrderName',
@@ -6316,7 +6449,7 @@ export const TYPE_API = [
6316
6449
  },
6317
6450
  {
6318
6451
  name: 'ResolvedSubagentStartRequest',
6319
- declaration: 'export interface ResolvedSubagentStartRequest extends SubagentStartRequest {\n readonly descriptor: SubagentDescriptorData;\n}',
6452
+ declaration: 'export interface ResolvedSubagentStartRequest extends SubagentStartRequest {\n readonly cwd: string;\n}',
6320
6453
  },
6321
6454
  {
6322
6455
  name: 'RestoredSessionOptions',
@@ -6480,7 +6613,7 @@ export const TYPE_API = [
6480
6613
  },
6481
6614
  {
6482
6615
  name: 'SendTeamMessageResult',
6483
- declaration: 'export interface SendTeamMessageResult {\n readonly messageId: TeamMessageId;\n readonly status: \'accepted\' | \'queued\';\n}',
6616
+ declaration: 'export interface SendTeamMessageResult {\n readonly messageId: MessageId;\n}',
6484
6617
  },
6485
6618
  {
6486
6619
  name: 'SerializedElement',
@@ -6676,7 +6809,7 @@ export const TYPE_API = [
6676
6809
  },
6677
6810
  {
6678
6811
  name: 'SessionForkRequest',
6679
- declaration: 'export interface SessionForkRequest {\n readonly sessionId: SessionId;\n readonly atSeq?: number;\n}',
6812
+ declaration: 'export interface SessionForkRequest {\n readonly sessionId: SessionId;\n readonly atSeq?: number;\n readonly allowMigration?: boolean;\n}',
6680
6813
  },
6681
6814
  {
6682
6815
  name: 'SessionForkSource',
@@ -6744,7 +6877,11 @@ export const TYPE_API = [
6744
6877
  },
6745
6878
  {
6746
6879
  name: 'SessionLogOptions',
6747
- declaration: 'export interface SessionLogOptions {\n exporter: OTLPExporterNodeConfigBase & {\n url: string;\n };\n processor?: Omit<BatchLogRecordProcessorOptions, \'exporter\'>;\n maxRequestBytes?: number;\n scope: {\n name: string;\n version?: string;\n };\n resourceAttributes: Attributes;\n onFailure: (message: string, error?: Error) => void;\n}',
6880
+ declaration: 'export interface SessionLogOptions {\n exporter: LogExporterOptions;\n processor?: SessionLogProcessorOptions;\n maxRequestBytes?: number;\n scope: {\n name: string;\n version?: string;\n };\n resourceAttributes: Attributes;\n onFailure: (message: string, error?: Error) => void;\n}',
6881
+ },
6882
+ {
6883
+ name: 'SessionLogProcessorOptions',
6884
+ declaration: 'export type SessionLogProcessorOptions = Omit<BatchLogRecordProcessorOptions, \'exporter\' | \'selfObsMeterProvider\'>;',
6748
6885
  },
6749
6886
  {
6750
6887
  name: 'SessionLogRecord',
@@ -6812,7 +6949,7 @@ export const TYPE_API = [
6812
6949
  },
6813
6950
  {
6814
6951
  name: 'SessionPersistenceSnapshot',
6815
- declaration: 'export interface SessionPersistenceSnapshot {\n readonly header: SessionHeader;\n readonly revision: SessionPersistenceRevision;\n readonly eventCount?: number;\n readonly sizeBytes?: number;\n}',
6952
+ declaration: 'export interface SessionPersistenceSnapshot {\n readonly header: SessionHeader;\n readonly formatStatus?: \'current\' | \'migration-required\';\n readonly revision: SessionPersistenceRevision;\n readonly eventCount?: number;\n readonly sizeBytes?: number;\n}',
6816
6953
  },
6817
6954
  {
6818
6955
  name: 'SessionPersistenceStatOptions',
@@ -6840,7 +6977,7 @@ export const TYPE_API = [
6840
6977
  },
6841
6978
  {
6842
6979
  name: 'SessionProjectionsValue',
6843
- declaration: 'export type SessionProjectionsValue = SessionProjectionBaseline | null;',
6980
+ declaration: 'export type SessionProjectionsValue = (SessionProjectionBaseline & {\n readonly kind: \'sequenced\';\n}) | {\n readonly kind: \'migration-required\';\n readonly values: SessionProjectionValues;\n} | null;',
6844
6981
  },
6845
6982
  {
6846
6983
  name: 'SessionProjectionUpdate',
@@ -6864,7 +7001,7 @@ export const TYPE_API = [
6864
7001
  },
6865
7002
  {
6866
7003
  name: 'SessionRecord',
6867
- declaration: 'export interface SessionRecord {\n header: SessionHeader;\n live: boolean;\n persisted: boolean;\n}',
7004
+ declaration: 'export interface SessionRecord {\n header: SessionHeader;\n live: boolean;\n persisted: boolean;\n formatStatus?: \'current\' | \'migration-required\';\n}',
6868
7005
  },
6869
7006
  {
6870
7007
  name: 'SessionReferenceCandidate',
@@ -6960,7 +7097,7 @@ export const TYPE_API = [
6960
7097
  },
6961
7098
  {
6962
7099
  name: 'SessionSummary',
6963
- declaration: 'export interface SessionSummary {\n readonly agentAvailable: boolean;\n readonly sessionId: SessionId;\n readonly updatedAt: number;\n readonly running: boolean;\n readonly blank: boolean;\n readonly parentSessionId?: SessionId;\n readonly origin?: \'subagent\';\n readonly cwd?: string;\n readonly projections?: SessionProjectionHints;\n}',
7100
+ declaration: 'export interface SessionSummary {\n readonly agentAvailable: boolean;\n readonly formatStatus?: \'current\' | \'migration-required\';\n readonly sessionId: SessionId;\n readonly updatedAt: number;\n readonly running: boolean;\n readonly blank: boolean;\n readonly parentSessionId?: SessionId;\n readonly origin?: \'subagent\';\n readonly cwd?: string;\n readonly projections?: SessionProjectionHints;\n}',
6964
7101
  },
6965
7102
  {
6966
7103
  name: 'SessionSurface',
@@ -7008,7 +7145,7 @@ export const TYPE_API = [
7008
7145
  },
7009
7146
  {
7010
7147
  name: 'SessionTitleProviderRequest',
7011
- declaration: 'export interface SessionTitleProviderRequest {\n readonly session: Session;\n readonly messages: readonly SessionTitleUserMessage[];\n readonly route?: SessionTitleModelIdentity;\n readonly signal: AbortSignal;\n}',
7148
+ declaration: 'export interface SessionTitleProviderRequest {\n readonly session: Session;\n readonly messages: readonly SessionTitleUserMessage[];\n readonly route?: SessionTitleModelIdentity;\n readonly currentTitle?: SessionTitleSnapshot;\n readonly signal: AbortSignal;\n}',
7012
7149
  },
7013
7150
  {
7014
7151
  name: 'SessionTitleProviderResult',
@@ -7314,26 +7451,30 @@ export const TYPE_API = [
7314
7451
  name: 'StreamChunk',
7315
7452
  declaration: 'export type StreamChunk = {\n type: \'block-start\';\n index: number;\n blockType: ContentBlockType;\n} | {\n type: \'text-delta\';\n index: number;\n text: string;\n} | {\n type: \'reasoning-delta\';\n index: number;\n text: string;\n} | {\n type: \'tool-call-delta\';\n index: number;\n id: ToolCallId;\n name?: string;\n argumentsDelta: string;\n} | {\n type: \'block-end\';\n index: number;\n block: ContentBlock;\n} | {\n type: \'usage\';\n usage: TokenUsage;\n} | {\n type: \'finish\';\n reason: FinishReason;\n replayState?: ReplayEnvelope;\n};',
7316
7453
  },
7454
+ {
7455
+ name: 'SubagentActivation',
7456
+ declaration: 'export interface SubagentActivation {\n readonly childId: SessionId;\n readonly messageId?: MessageId;\n readonly result: Promise<SubagentResult>;\n dispose(): Promise<void>;\n}',
7457
+ },
7458
+ {
7459
+ name: 'SubagentActivationSpec',
7460
+ declaration: 'export interface SubagentActivationSpec {\n readonly provider: string;\n readonly label: string;\n readonly childId?: SessionId;\n readonly request: Omit<SubagentStartRequest, \'label\' | \'signal\'>;\n readonly signal: AbortSignal;\n readonly delivery: \'parent\' | \'caller\';\n}',
7461
+ },
7317
7462
  {
7318
7463
  name: 'SubagentCapabilities',
7319
7464
  declaration: 'export interface SubagentCapabilities {\n readonly agentOptions: boolean;\n readonly outputSchema: boolean;\n readonly depthLimit: boolean;\n readonly toolFilter: boolean;\n readonly persona: boolean;\n}',
7320
7465
  },
7321
7466
  {
7322
7467
  name: 'SubagentCatalogEntry',
7323
- declaration: 'export type SubagentCatalogEntry = {\n readonly id: SessionId;\n readonly createdAt: number;\n} & ({\n readonly mode: \'one-shot\';\n readonly label?: string;\n} | {\n readonly mode: \'continuable\';\n readonly label: string;\n} | {\n readonly mode: \'unknown\';\n readonly label?: string;\n});',
7468
+ declaration: 'export type SubagentCatalogEntry = {\n readonly id: SessionId;\n readonly createdAt: number;\n} & ({\n readonly mode: \'one-shot\';\n readonly label?: string;\n} | {\n readonly mode: \'external\';\n readonly label?: string;\n} | {\n readonly mode: \'continuable\';\n readonly label: string;\n} | {\n readonly mode: \'unknown\';\n readonly label?: string;\n});',
7324
7469
  },
7325
7470
  {
7326
7471
  name: 'SubagentCatalogRow',
7327
- declaration: 'export type SubagentCatalogRow = {\n readonly id: SessionId;\n readonly activity: \'running\' | \'inactive\';\n} & ({\n readonly mode: \'one-shot\';\n readonly label?: string;\n} | {\n readonly mode: \'continuable\';\n readonly label: string;\n});',
7472
+ declaration: 'export type SubagentCatalogRow = {\n readonly id: SessionId;\n readonly activity: \'running\' | \'inactive\';\n} & ({\n readonly mode: \'one-shot\';\n readonly label?: string;\n} | {\n readonly mode: \'external\';\n readonly label?: string;\n} | {\n readonly mode: \'continuable\';\n readonly label: string;\n});',
7328
7473
  },
7329
7474
  {
7330
7475
  name: 'SubagentDescendantListEntry',
7331
7476
  declaration: 'export type SubagentDescendantListEntry = SubagentListEntry & {\n readonly parentId: SessionId;\n readonly depth: number;\n};',
7332
7477
  },
7333
- {
7334
- name: 'SubagentDescriptorData',
7335
- declaration: 'export type SubagentDescriptorData = OneShotSubagentDescriptorData | ContinuableSubagentDescriptorData;',
7336
- },
7337
7478
  {
7338
7479
  name: 'SubagentInterruptAuthority',
7339
7480
  declaration: 'export type SubagentInterruptAuthority = {\n readonly kind: \'user\';\n readonly parentSessionId: SessionId;\n} | {\n readonly kind: \'ancestor\';\n readonly agent: Agent;\n};',
@@ -7360,7 +7501,7 @@ export const TYPE_API = [
7360
7501
  },
7361
7502
  {
7362
7503
  name: 'SubagentProvider',
7363
- declaration: 'export interface SubagentProvider {\n readonly name: string;\n readonly capabilities: SubagentCapabilities;\n readonly inheritsParentContext: boolean;\n readonly agentRouteDefaults?: Readonly<{\n provider: string;\n model: string;\n }>;\n start(request: ResolvedSubagentStartRequest): Promise<SubagentRun>;\n prepareContinuable?(request: ContinuableCreateRequest): Promise<ContinuableCreateSpec>;\n}',
7504
+ declaration: 'export interface SubagentProvider {\n readonly name: string;\n readonly capabilities: SubagentCapabilities;\n readonly inheritsParentContext: boolean;\n readonly agentRouteDefaults?: Readonly<{\n provider: string;\n model: string;\n }>;\n start?(request: ResolvedSubagentStartRequest): Promise<SubagentRun>;\n prepareContinuable?(request: ContinuableCreateRequest): Promise<ContinuableCreateSpec>;\n}',
7364
7505
  },
7365
7506
  {
7366
7507
  name: 'SubagentResult',
@@ -7368,7 +7509,7 @@ export const TYPE_API = [
7368
7509
  },
7369
7510
  {
7370
7511
  name: 'SubagentRun',
7371
- declaration: 'export interface SubagentRun {\n readonly id: SessionId;\n readonly localAgent: Agent | undefined;\n readonly result: Promise<SubagentResult>;\n dispose(): Promise<void>;\n}',
7512
+ declaration: 'export interface SubagentRun {\n readonly id: SessionId;\n readonly result: Promise<SubagentResult>;\n dispose(): Promise<void>;\n}',
7372
7513
  },
7373
7514
  {
7374
7515
  name: 'SubagentRunEndInfo',
@@ -7384,7 +7525,7 @@ export const TYPE_API = [
7384
7525
  },
7385
7526
  {
7386
7527
  name: 'SubagentRuntime',
7387
- declaration: 'export class SubagentRuntime extends TypertRemoteService {\n static Config;\n constructor(ctx: Context, private config: Config);\n resolveMaxDepth(configured?: number | \'provider-managed\'): number | undefined;\n async startContinuable(spec: ContinuableStartSpec): Promise<ContinuableStart>;\n async sendMessage(sender: Agent, targetId: SessionId, content: ContentBlock[], options: SubagentSendMessageOptions): Promise<MessageId>;\n interrupt(targetSessionId: SessionId, authority: SubagentInterruptAuthority): void;\n async drainContinuableDescendants(parents: readonly Agent[]): Promise<void>;\n async drainContinuableChildren(parent: Agent, childIds: readonly SessionId[]): Promise<void>;\n listChildren(parentSessionId: SessionId, signal?: AbortSignal): Promise<SubagentCatalogEntry[]>;\n listDescendants(rootSessionId: SessionId, signal?: AbortSignal): Promise<SubagentDescendantListEntry[]>;\n @Remote(\'prompt\')\n async prompt(request: SubagentPromptRequest, signal: AbortSignal): Promise<SubagentPromptReceipt>;\n @Remote(\'interruptByParent\')\n interruptByParent(childSessionId: SessionId, parentSessionId: SessionId, mode: \'continuable\'): SubagentInterruptReceipt;\n registerProvider(provider: SubagentProvider): () => void;\n getProvider(name: string): SubagentProvider | undefined;\n list(): string[];\n async start(name: string, request: SubagentStartRequest): Promise<SubagentRun>;\n}',
7528
+ declaration: 'export class SubagentRuntime extends TypertRemoteService {\n static Config;\n static inject;\n constructor(ctx: Context, private config: Config);\n resolveMaxDepth(configured?: number | \'provider-managed\'): number | undefined;\n startActivation(spec: SubagentActivationSpec & {\n readonly childId: SessionId;\n }): Promise<SubagentActivation & {\n readonly messageId: MessageId;\n }>;\n startActivation(spec: SubagentActivationSpec): Promise<SubagentActivation>;\n async startActivation(spec: SubagentActivationSpec): Promise<SubagentActivation>;\n async waitForChildren(parent: Agent): Promise<boolean>;\n async sendMessage(sender: Agent, targetId: SessionId, content: ContentBlock[], options: SubagentSendMessageOptions): Promise<MessageId>;\n interrupt(targetSessionId: SessionId, authority: SubagentInterruptAuthority): void;\n async drainDescendants(parents: readonly Agent[]): Promise<void>;\n async drainChildren(parent: Agent, childIds: readonly SessionId[]): Promise<void>;\n listChildren(parentSessionId: SessionId, signal?: AbortSignal): Promise<SubagentCatalogEntry[]>;\n listDescendants(rootSessionId: SessionId, signal?: AbortSignal): Promise<SubagentDescendantListEntry[]>;\n @Remote(\'prompt\')\n async prompt(request: SubagentPromptRequest, signal: AbortSignal): Promise<SubagentPromptReceipt>;\n @Remote(\'interruptByParent\')\n interruptByParent(childSessionId: SessionId, parentSessionId: SessionId, mode: \'continuable\'): SubagentIn /* …truncated — full shape in source */',
7388
7529
  },
7389
7530
  {
7390
7531
  name: 'SubagentSendMessageOptions',
@@ -7396,7 +7537,7 @@ export const TYPE_API = [
7396
7537
  },
7397
7538
  {
7398
7539
  name: 'SubagentStartRequest',
7399
- declaration: 'export interface SubagentStartRequest {\n readonly label?: string;\n readonly prompt: ContentBlock[];\n readonly parent: Agent;\n readonly signal: AbortSignal;\n readonly agentOptions?: AgentOptions;\n readonly outputSchema?: ObjectJsonSchema;\n readonly maxDepth?: number;\n readonly toolFilter?: ToolRestriction;\n readonly persona?: string;\n}',
7540
+ declaration: 'export interface SubagentStartRequest {\n readonly cwd?: string;\n readonly label?: string;\n readonly prompt: ContentBlock[];\n readonly parent: Agent;\n readonly signal: AbortSignal;\n readonly agentOptions?: AgentOptions;\n readonly outputSchema?: ObjectJsonSchema;\n readonly maxDepth?: number;\n readonly toolFilter?: ToolRestriction;\n readonly persona?: string;\n}',
7400
7541
  },
7401
7542
  {
7402
7543
  name: 'SubagentStopReason',
@@ -7496,7 +7637,7 @@ export const TYPE_API = [
7496
7637
  },
7497
7638
  {
7498
7639
  name: 'SystemPrompt',
7499
- declaration: 'export class SystemPrompt extends Service {\n static Config: z<Config>;\n constructor(ctx: Context, config: Config);\n section(section: PromptSection): () => void;\n getSectionOrder(name: PromptSectionOrderName): number;\n getContextOrder(name: PromptContextOrderName): number;\n context(context: PromptContext): () => void;\n suppressRuntimeContext(): () => void;\n tools(provider: (context: AssembleContext) => ToolProviderResult): () => void;\n variable(name: string, provider: (context: AssembleContext) => string | undefined): () => void;\n async assemble(context: AssembleContext = {}): Promise<PromptAssembly>;\n}',
7640
+ declaration: 'export class SystemPrompt extends Service {\n static Config: z<Config>;\n constructor(ctx: Context, config: Config);\n section(section: PromptSection): () => void;\n getSectionOrder(name: PromptSectionOrderName): number;\n getContextOrder(name: PromptContextOrderName): number;\n context(context: PromptContext): () => void;\n suppressRuntimeContext(): () => void;\n tools(provider: (context: AssembleContext) => ToolProviderResult): () => void;\n variable(name: string, provider: (context: AssembleContext) => string | undefined): () => void;\n refreshContext(assembly: PromptAssembly, context: AssembleContext = {}): PromptAssembly;\n async assemble(context: AssembleContext = {}): Promise<PromptAssembly>;\n}',
7500
7641
  },
7501
7642
  {
7502
7643
  name: 'SystemPromptMessageSource',
@@ -7526,10 +7667,6 @@ export const TYPE_API = [
7526
7667
  name: 'TeamMemberView',
7527
7668
  declaration: 'export interface TeamMemberView {\n readonly id: SessionId;\n readonly name: string;\n readonly role: \'lead\' | \'teammate\';\n readonly status: \'running\' | \'inactive\' | \'provisioning\' | \'failed\';\n readonly description?: string;\n readonly provider?: string;\n readonly context?: \'fresh\' | \'fork\';\n readonly model?: string;\n readonly diagnostics: string[];\n}',
7528
7669
  },
7529
- {
7530
- name: 'TeamMessageId',
7531
- declaration: 'export type TeamMessageId = Branded<\'TeamMessageId\'>;',
7532
- },
7533
7670
  {
7534
7671
  name: 'TeamTaskAction',
7535
7672
  declaration: 'export type TeamTaskAction = \'claim\' | \'release\' | \'edit\' | \'set_dependencies\' | \'complete\' | \'reopen\' | \'reassign\' | \'delete\';',
@@ -7780,7 +7917,7 @@ export const TYPE_API = [
7780
7917
  },
7781
7918
  {
7782
7919
  name: 'ToolPresentationMode',
7783
- declaration: 'export type ToolPresentationMode = \'native\' | \'ptc\' | \'both\';',
7920
+ declaration: 'export type ToolPresentationMode = \'native\' | \'ptc\';',
7784
7921
  },
7785
7922
  {
7786
7923
  name: 'ToolProviderResult',
@@ -7842,6 +7979,18 @@ export const TYPE_API = [
7842
7979
  name: 'TranscriptionRequest',
7843
7980
  declaration: 'export interface TranscriptionRequest {\n readonly audioBase64: string;\n readonly providerId?: SpeechProviderId;\n readonly language?: string;\n}',
7844
7981
  },
7982
+ {
7983
+ name: 'TranslationProvider',
7984
+ declaration: 'export type TranslationProvider = AnonymousTranslationProvider | PaidTranslationProvider;',
7985
+ },
7986
+ {
7987
+ name: 'TranslationRequest',
7988
+ declaration: 'export interface TranslationRequest {\n readonly text: string;\n readonly targetLanguage: string;\n readonly sourceLanguage?: string;\n readonly provider?: TranslationProvider;\n readonly sessionId?: SessionId;\n}',
7989
+ },
7990
+ {
7991
+ name: 'TranslationSpec',
7992
+ declaration: 'export type TranslationSpec = AnonymousTranslationSpec | PaidTranslationSpec;',
7993
+ },
7845
7994
  {
7846
7995
  name: 'TurnCompleteInput',
7847
7996
  declaration: 'export interface TurnCompleteInput {\n turnId: string;\n answer: string;\n durationMs: number;\n isAborted: boolean;\n reason: \'answer\' | \'aborted\' | \'error\';\n agentId?: string;\n usage?: TurnUsage;\n}',
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-tool-cordis",
3
3
  "description": "Read-only runtime API inspection for Harness plugin development",
4
- "version": "0.2.1-alpha.1",
4
+ "version": "0.2.1-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -34,20 +34,20 @@
34
34
  "peerDependencies": {
35
35
  "@deepseek-ai/cordis": "~4.0.5-alpha.1",
36
36
  "@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.1",
37
- "@deepseek-ai/dsh-agent": "0.2.1-alpha.1",
38
- "@deepseek-ai/dsh-app-boot": "0.2.1-alpha.1",
39
- "@deepseek-ai/dsh-cordis-host-runner": "0.2.1-alpha.1",
40
- "@deepseek-ai/dsh-tools": "0.2.1-alpha.1"
37
+ "@deepseek-ai/dsh-agent": "0.2.1-alpha.2",
38
+ "@deepseek-ai/dsh-app-boot": "0.2.1-alpha.2",
39
+ "@deepseek-ai/dsh-cordis-host-runner": "0.2.1-alpha.2",
40
+ "@deepseek-ai/dsh-tools": "0.2.1-alpha.2"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@deepseek-ai/cordis": "~4.0.5-alpha.1",
44
44
  "@deepseek-ai/cordis-plugin-group": "~1.0.5-alpha.1",
45
45
  "@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.1",
46
- "@deepseek-ai/dsh-agent": "0.2.1-alpha.1",
47
- "@deepseek-ai/dsh-app-boot": "0.2.1-alpha.1",
48
- "@deepseek-ai/dsh-cordis-host-runner": "0.2.1-alpha.1",
49
- "@deepseek-ai/dsh-system-prompt": "0.2.1-alpha.1",
50
- "@deepseek-ai/dsh-tools": "0.2.1-alpha.1",
46
+ "@deepseek-ai/dsh-agent": "0.2.1-alpha.2",
47
+ "@deepseek-ai/dsh-app-boot": "0.2.1-alpha.2",
48
+ "@deepseek-ai/dsh-cordis-host-runner": "0.2.1-alpha.2",
49
+ "@deepseek-ai/dsh-system-prompt": "0.2.1-alpha.2",
50
+ "@deepseek-ai/dsh-tools": "0.2.1-alpha.2",
51
51
  "@deepseek-ai/schemastery": "~3.18.5-alpha.1"
52
52
  }
53
53
  }