@deepseek-ai/dsh-tool-cordis 0.1.3-alpha.2 → 0.1.5-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.
package/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/extensions/tool-cordis/README.md
5
- README.md: 574a98ed7fe75e8af108906d80b2cd0c2e043fe8
6
- README.zh.md: d48d7539f8724834a2272eb7bed7e9b353f27edc
5
+ README.md: b6a3de0fec47dea42e0462101186138c256b88d2
6
+ README.zh.md: 374bc9a554d258d305bd1d80e51a5e94884b9d9c
package/README.md CHANGED
@@ -9,7 +9,7 @@ English | [中文](README.zh.md)
9
9
 
10
10
  ## Summary
11
11
 
12
- `dsh-tool-cordis` gives the model seven tools over the live Cordis runtime of the current DSH process: inspect what is loaded and what a dynamic package may use, define a package with a host half, a browser half, or both, run it, stop it, and remove it. Packages are versioned — a plugin holds immutable package versions, and the model can append a corrected package and update to it after a failure. Definitions live only in process memory and vanish on DSH restart; nothing here writes repository files, installs packages, or changes `cordis.yml`. It also adds a system-prompt section that teaches the workflow; compose it with `@deepseek-ai/dsh-cordis-host-runner`, the package that runs the sandbox and the run round trip.
12
+ `dsh-tool-cordis` lets a model inspect the live Cordis runtime and create, run, stop, update, or remove temporary dynamic packages with host code, browser code, or both. Package versions are immutable, so a failed package can be corrected by adding a new version and updating the active one. Definitions exist only in process memory and disappear when DSH restarts; the package does not write repository files, install dependencies, or change `cordis.yml`. It also teaches the model this workflow. Compose it with `@deepseek-ai/dsh-cordis-host-runner`, which provides the sandbox and run round trip.
13
13
 
14
14
  ## Table of Contents
15
15
 
package/README.zh.md CHANGED
@@ -9,7 +9,7 @@ kind: "package-reference"
9
9
 
10
10
  ## 概述
11
11
 
12
- `dsh-tool-cordis` 给模型提供七个作用于当前 DSH 进程实时 Cordis 运行时的工具:检查已加载的内容与动态包可用之物,定义包含 host 半、浏览器半或两者的包,运行它、停止它并移除它。包带版本——插件持有若干不可变的包版本,模型在失败后可以追加修正版并更新过去。定义只存在于进程内存中,DSH 重启即消失;本包不写仓库文件、不安装任何包、不改 `cordis.yml`。它还增加一个教这套工作流的系统提示词章节;把它与 `@deepseek-ai/dsh-cordis-host-runner` 一同组合,后者负责沙箱与运行往返。
12
+ `dsh-tool-cordis` 让模型检查实时 Cordis 运行时,并创建、运行、停止、更新或移除包含 host 代码、浏览器代码或两者的临时动态包。包版本不可变,因此包失败后,模型可以添加新版本并更新当前运行的版本。定义只存在于进程内存中,DSH 重启即消失;本包不写仓库文件、不安装依赖,也不改 `cordis.yml`。它还会把这套工作流教给模型。请与 `@deepseek-ai/dsh-cordis-host-runner` 一同组合,后者提供沙箱与运行往返。
13
13
 
14
14
  ## 目录
15
15
 
package/lib/index.js CHANGED
@@ -73,7 +73,7 @@ const SERVICE_API = [
73
73
  description: "caller context that structurally owns the lifecycle."
74
74
  }, {
75
75
  name: "options",
76
- description: "identities, session seed/metadata, loop options, setup, and cancellation."
76
+ description: "identities, optional live parent, session seed/metadata, loop options, setup, and cancellation."
77
77
  }],
78
78
  returns: "the published handle."
79
79
  },
@@ -85,7 +85,7 @@ const SERVICE_API = [
85
85
  description: "caller context that owns load, setup, and the live lifecycle."
86
86
  }, {
87
87
  name: "options",
88
- description: "persisted identity, loop options, setup, and cancellation."
88
+ description: "persisted identity, optional live parent, loop options, setup, and cancellation."
89
89
  }],
90
90
  returns: "the published handle."
91
91
  }
@@ -294,7 +294,7 @@ const SERVICE_API = [
294
294
  methods: [
295
295
  {
296
296
  signature: "currentInitiator(): Agent | undefined",
297
- description: "Read the Agent that initiated the inherited asynchronous driver chain. Use this optional form for logging, tracing, metrics, or host attribution that also supports agentless calls. When a parent creates a child, setup reports the causal parent while `agentCtx.agent` identifies the child.",
297
+ description: "Read the Agent that initiated the inherited asynchronous driver chain. Use this optional form for logging, tracing, metrics, or host attribution that also supports agentless calls. When a parent creates a child, setup reports the causal parent while the setup callback's Agent parameter identifies the child.",
298
298
  parameters: [],
299
299
  returns: "the inherited Agent, or `undefined` outside an initiator boundary and inside an explicit clearing boundary.",
300
300
  throws: ["when this service instance has been disposed."]
@@ -343,7 +343,7 @@ const SERVICE_API = [
343
343
  description: "Create and publish a new agent through the registered factory. Distinct from register (which records an already-constructed agent): this constructs the agent and its session. Rejects if no factory is registered or creation/setup fails. The resolved AgentHandle lets the owner tear down exactly this agent.",
344
344
  parameters: [{
345
345
  name: "options",
346
- description: "shared identity, session seed/metadata, and agent options."
346
+ description: "shared identity, optional live parent, session seed/metadata, and agent options."
347
347
  }],
348
348
  returns: "the handle after setup, rollback-covered publication, and loop start complete."
349
349
  },
@@ -352,13 +352,13 @@ const SERVICE_API = [
352
352
  description: "Load a persisted session and resume an agent on it through the registered factory. Rejects if no factory is registered; the factory rejects if session persistence is not configured or persistence/setup fails.",
353
353
  parameters: [{
354
354
  name: "options",
355
- description: "persisted identity, configuration, and optional setup."
355
+ description: "persisted identity, optional live parent, configuration, and setup."
356
356
  }],
357
357
  returns: "the handle after setup, rollback-covered publication, and loop start complete."
358
358
  },
359
359
  {
360
360
  signature: "register(agent: Agent): () => void",
361
- description: "Register a live agent. Throws if an agent with the same id is already registered. Emits `agent/created` on registration and `agent/disposed` when the calling fiber is disposed — both with the agent's scope carrier (`scopeTarget(agent, agent)`): the subject is the agent in hand, so the emits are scope-filtered regardless of which context invoked `register` (calling through `agent.ctx` scopes EFFECTS; dispatch scoping always requires passing the carrier). Returns the disposer.",
361
+ description: "Register a live agent. Throws if an agent with the same id is already registered. Emits `agent/created` on registration and `agent/disposed` when the calling fiber is disposed — both with the agent's scope carrier (`scopeTarget(agent, agent)`): the subject is the agent in hand, so the emits are scope-filtered regardless of which context invoked `register` (calling through `agent.ctx` scopes EFFECTS; dispatch scoping always requires passing the carrier). The entry is a runtime root; factory-backed creation uses `options.parentAgent` for child ownership. Returns the disposer.",
362
362
  parameters: [{
363
363
  name: "agent",
364
364
  description: "the already-constructed agent to record in the store."
@@ -373,7 +373,7 @@ const SERVICE_API = [
373
373
  description: "the prepared, unpublished agent."
374
374
  }, {
375
375
  name: "owner",
376
- description: "live agent whose scoped context created this agent, or undefined for a top-level runtime root. This is runtime ownership, not the resumed session's durable parent lineage."
376
+ description: "explicitly supplied live runtime owner, or undefined for a top-level runtime root. This is runtime ownership, not the resumed session's durable parent lineage."
377
377
  }],
378
378
  returns: "an idempotent closure that removes this exact entry and emits `agent/disposed` with listener failures contained. When called from a synchronous `agent/created` listener, removal and disposal wait until that creation dispatch unwinds."
379
379
  },
@@ -845,6 +845,15 @@ const SERVICE_API = [
845
845
  }],
846
846
  returns: "the path, or undefined for an unknown id."
847
847
  },
848
+ {
849
+ signature: "fetchBundle(request: Request): Response",
850
+ description: "Serve an advertised revisioned bundle or source map without a Web server. Unknown URLs return 404, unsupported methods return 405, and `HEAD` returns the same immutable headers without a body.",
851
+ parameters: [{
852
+ name: "request",
853
+ description: "shell-carrier request for a `/plugins` resource."
854
+ }],
855
+ returns: "the exact response also exposed by the optional Web route."
856
+ },
848
857
  {
849
858
  signature: "artifactBaseline(id: string): ClientArtifactBaseline | undefined",
850
859
  description: "Filesystem baseline captured before an entry's current bytes were read. HMR compares it with the live files when installing a watch, so a write between startup composition and watch installation cannot disappear into the watcher's initial state.",
@@ -1514,6 +1523,25 @@ const SERVICE_API = [
1514
1523
  ],
1515
1524
  returns: "the full raw content, at most `maxBytes` long."
1516
1525
  },
1526
+ {
1527
+ signature: "abstract readByteRange(target: FsTarget, range: { offset: number; length: number }, signal?: AbortSignal): Promise<Uint8Array>",
1528
+ description: "Read one byte window of the regular file as raw bytes with no decoding or binary rejection: the bytes at `[offset, offset + length)`, shorter when the file ends inside the window and empty when `offset` lies at or past its end. The window is the bound here, not the file: a backend transfers at most `length` bytes of content beyond the prefix it skips to reach `offset` and never buffers the whole file, so the caller's cap on `length` is the guard against unbounded buffering.",
1529
+ parameters: [
1530
+ {
1531
+ name: "target",
1532
+ description: "the resolved target to read."
1533
+ },
1534
+ {
1535
+ name: "range",
1536
+ description: "`offset`, the 0-based first byte, and `length`, the largest byte count; both non-negative integers."
1537
+ },
1538
+ {
1539
+ name: "signal",
1540
+ description: "aborts the read."
1541
+ }
1542
+ ],
1543
+ returns: "the window's bytes, at most `length` long."
1544
+ },
1517
1545
  {
1518
1546
  signature: "abstract listDir(target: FsTarget, signal?: AbortSignal): Promise<FsDirEntry[]>",
1519
1547
  description: "List direct children of a directory in stable name order. Returns resolved child targets plus cheap metadata only; never reads file contents.",
@@ -1588,7 +1616,7 @@ const SERVICE_API = [
1588
1616
  description: "Goal service (`ctx.goals`) backed exclusively by the owning session log.",
1589
1617
  methods: [
1590
1618
  {
1591
- signature: "get(agent: Agent): GoalView | undefined",
1619
+ signature: "@Remote('get') get(agent: Agent): GoalView | undefined",
1592
1620
  description: "Read the current goal for one exact live agent.",
1593
1621
  parameters: [{
1594
1622
  name: "agent",
@@ -2334,6 +2362,12 @@ const SERVICE_API = [
2334
2362
  parameters: [],
2335
2363
  returns: "true when the matching open operation is available."
2336
2364
  },
2365
+ {
2366
+ signature: "workspaceDesktop(): { name: string; available: boolean; fileManager: 'finder' | 'explorer' | 'directory' | null }",
2367
+ description: "Describe the serving desktop for authenticated file-action routes.",
2368
+ parameters: [],
2369
+ returns: "Host name, configured availability, and platform-specific file-manager behavior."
2370
+ },
2337
2371
  {
2338
2372
  signature: "@Remote('openWorkspacePath') async openWorkspacePath( request: SessionOpenWorkspacePathRequest, signal: AbortSignal, ): Promise<SessionOpenWorkspacePathValue>",
2339
2373
  description: "Open one path prepared by a Session-aware caller on the Host desktop.",
@@ -2439,6 +2473,20 @@ const SERVICE_API = [
2439
2473
  }
2440
2474
  ]
2441
2475
  },
2476
+ {
2477
+ key: "sessionFeedback",
2478
+ summary: "Host Remote through which a product surface records a Session-level remark.",
2479
+ description: "Host Remote through which a product surface records a Session-level remark.",
2480
+ methods: [{
2481
+ signature: "@Remote('record') record(request: SessionFeedbackRecordRequest): Promise<SessionFeedbackRecordResult>",
2482
+ description: "Record one remark on a live Session.",
2483
+ parameters: [{
2484
+ name: "request",
2485
+ description: "target Session plus the optional text and category."
2486
+ }],
2487
+ returns: "the recorded postcondition, or `session-not-found` when no live Session carries the id."
2488
+ }]
2489
+ },
2442
2490
  {
2443
2491
  key: "sessionFileReferences",
2444
2492
  summary: "Host Remote adapter over the composed file-reference provider.",
@@ -3649,11 +3697,11 @@ const SERVICE_API = [
3649
3697
  },
3650
3698
  {
3651
3699
  key: "subagentModelSelection",
3652
- summary: "Singleton settings owner read by delegation tools when an Agent is published.",
3653
- description: "Singleton settings owner read by delegation tools when an Agent is published.",
3700
+ summary: "Singleton settings owner read when delegation tools are composed for a Session.",
3701
+ description: "Singleton settings owner read when delegation tools are composed for a Session.",
3654
3702
  methods: [{
3655
3703
  signature: "current(): SubagentModelSelectionSettings",
3656
- description: "Read a detached selection preference for the next eligible Agent publication.",
3704
+ description: "Read a detached selection preference for the next eligible Session composition.",
3657
3705
  parameters: [],
3658
3706
  returns: "the enabled state and exact allowed routes."
3659
3707
  }]
@@ -3830,7 +3878,7 @@ const SERVICE_API = [
3830
3878
  },
3831
3879
  {
3832
3880
  signature: "async start(name: string, request: SubagentStartRequest): Promise<SubagentRun>",
3833
- 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.",
3881
+ 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.",
3834
3882
  parameters: [{
3835
3883
  name: "name",
3836
3884
  description: "the provider to use."
@@ -4144,7 +4192,7 @@ const SERVICE_API = [
4144
4192
  description: "Replay owner for one service-wide estimator and isolated per-session folds.",
4145
4193
  methods: [{
4146
4194
  signature: "measure(session: Session, requestHeader?: EpochHeader): TokenMeasurement",
4147
- description: "Measure current request pressure and surface through the durable tail.\n\nThe effective envelope's routed provider/model selects the request-image pricing every node is priced under: a route whose adapter declares image pricing charges each retained image its visual tokens plus its model-visible text, while other routes keep the fixed heuristic. Provider usage is reused only when the latest successful call's canonical request envelope matches `requestHeader` and its total is no lower than that call's full route-priced anchor; otherwise the complete envelope and surface are repriced.\n\n`requestHeader` replaces the latest logged envelope for pressure and node pricing; the node set always describes the current session surface. Every call clones those positional nodes, so measurement is O(surface).",
4195
+ description: "Measure current request pressure and surface through the durable tail.\n\nThe effective envelope's routed provider/model selects the request-image pricing every node is priced under: a route whose adapter declares image pricing charges each retained image its visual tokens plus its model-visible text, while other routes keep the fixed heuristic. Provider usage is reused only when the latest successful call's canonical request envelope matches `requestHeader` and its total is no lower than that call's full route-priced anchor; otherwise the complete envelope and surface are repriced. The anchor includes all surface nodes immediately before the assistant message, including inputs admitted after step/start.\n\n`requestHeader` replaces the latest logged envelope for pressure and node pricing; the node set always describes the current session surface. Every call clones those positional nodes, so measurement is O(surface).",
4148
4196
  parameters: [{
4149
4197
  name: "session",
4150
4198
  description: "session to replay through its current durable tail."
@@ -4642,6 +4690,151 @@ const SERVICE_API = [
4642
4690
  }
4643
4691
  ]
4644
4692
  },
4693
+ {
4694
+ key: "workspaceFiles",
4695
+ summary: "Host Remote file reads and workspace directory observations over the composed filesystem.",
4696
+ description: "Host Remote file reads and workspace directory observations over the composed filesystem.",
4697
+ methods: [
4698
+ {
4699
+ signature: "@Remote async read( workspaceFileScope: WorkspaceFileScope, path: string, range: WorkspaceFileRange, signal: AbortSignal, ): Promise<WorkspaceFileText>",
4700
+ description: "Read one page of lines from a UTF-8 file readable by the filesystem backend.",
4701
+ parameters: [
4702
+ {
4703
+ name: "workspaceFileScope",
4704
+ description: "header-derived workspace root for the Session identity on the wire."
4705
+ },
4706
+ {
4707
+ name: "path",
4708
+ description: "absolute path or path relative to the workspace root; files outside it are allowed."
4709
+ },
4710
+ {
4711
+ name: "range",
4712
+ description: "the line window; omitted fields take the page defaults."
4713
+ },
4714
+ {
4715
+ name: "signal",
4716
+ description: "caller cancellation."
4717
+ }
4718
+ ],
4719
+ returns: "the page, the file's version at the stat before it, and whether it reaches the last line."
4720
+ },
4721
+ {
4722
+ signature: "@Remote async readBytes( workspaceFileScope: WorkspaceFileScope, path: string, range: WorkspaceByteRange, signal: AbortSignal, ): Promise<WorkspaceFileBytes>",
4723
+ description: "Read one byte window of a regular file readable by the filesystem backend: raw bytes, no text decoding and no binary rejection.",
4724
+ parameters: [
4725
+ {
4726
+ name: "workspaceFileScope",
4727
+ description: "header-derived workspace root for the Session identity on the wire."
4728
+ },
4729
+ {
4730
+ name: "path",
4731
+ description: "absolute path or path relative to the workspace root; files outside it are allowed."
4732
+ },
4733
+ {
4734
+ name: "range",
4735
+ description: "the byte window; omitted fields take the window defaults."
4736
+ },
4737
+ {
4738
+ name: "signal",
4739
+ description: "caller cancellation."
4740
+ }
4741
+ ],
4742
+ returns: "the window in base64, the file's version and size at the stat before it, and whether it reaches the last byte."
4743
+ },
4744
+ {
4745
+ signature: "@Remote async readAll(workspaceFileScope: WorkspaceFileScope, path: string, signal: AbortSignal): Promise<WorkspaceFileBytes>",
4746
+ description: "Read a complete regular file as bytes, subject to the configured full-file cap.",
4747
+ parameters: [
4748
+ {
4749
+ name: "workspaceFileScope",
4750
+ description: "header-derived workspace root for the Session identity on the wire."
4751
+ },
4752
+ {
4753
+ name: "path",
4754
+ description: "absolute or workspace-relative file path."
4755
+ },
4756
+ {
4757
+ name: "signal",
4758
+ description: "caller cancellation."
4759
+ }
4760
+ ],
4761
+ returns: "one complete base64 window with offset zero and eof true; oversized files fail with too-large."
4762
+ },
4763
+ {
4764
+ signature: "@Remote async readRelated( workspaceFileScope: WorkspaceFileScope, path: string, relativePath: string, signal: AbortSignal, ): Promise<WorkspaceFileBytes>",
4765
+ description: "Read a complete file relative to another file's directory, including outside the workspace.",
4766
+ parameters: [
4767
+ {
4768
+ name: "workspaceFileScope",
4769
+ description: "header-derived workspace root for the Session identity on the wire."
4770
+ },
4771
+ {
4772
+ name: "path",
4773
+ description: "base file, absolute or workspace-relative."
4774
+ },
4775
+ {
4776
+ name: "relativePath",
4777
+ description: "relative filesystem path, not a URL or absolute path."
4778
+ },
4779
+ {
4780
+ name: "signal",
4781
+ description: "caller cancellation."
4782
+ }
4783
+ ],
4784
+ returns: "the complete related file using the ordinary file-size and access checks."
4785
+ },
4786
+ {
4787
+ signature: "@Remote async stat(workspaceFileScope: WorkspaceFileScope, path: string, signal: AbortSignal): Promise<WorkspaceFileStat>",
4788
+ description: "Report one regular file's identity, version, and size without its content.",
4789
+ parameters: [
4790
+ {
4791
+ name: "workspaceFileScope",
4792
+ description: "header-derived workspace root for the Session identity on the wire."
4793
+ },
4794
+ {
4795
+ name: "path",
4796
+ description: "absolute path or path relative to the workspace root; files outside it are allowed."
4797
+ },
4798
+ {
4799
+ name: "signal",
4800
+ description: "caller cancellation."
4801
+ }
4802
+ ],
4803
+ returns: "the file's absolute path, current version, and byte size."
4804
+ },
4805
+ {
4806
+ signature: "@Remote async list(workspaceFileScope: WorkspaceFileScope, path: string, signal: AbortSignal): Promise<WorkspaceDirectoryListing>",
4807
+ description: "List the direct children of one directory inside the Session's workspace.",
4808
+ parameters: [
4809
+ {
4810
+ name: "workspaceFileScope",
4811
+ description: "header-derived workspace root for the Session identity on the wire."
4812
+ },
4813
+ {
4814
+ name: "path",
4815
+ description: "workspace path, absolute or relative to the workspace root."
4816
+ },
4817
+ {
4818
+ name: "signal",
4819
+ description: "caller cancellation."
4820
+ }
4821
+ ],
4822
+ returns: "the directory's children in the backend's stable name order, bounded by the entry cap."
4823
+ },
4824
+ {
4825
+ signature: "@Remote({ mode: 'stream' }) changes(workspaceFileScope: WorkspaceFileScope, signal: AbortSignal): AsyncIterable<WorkspaceFileWatchFrame>",
4826
+ description: "Stream every `fs/observed` observation of a file inside the Session's workspace. Only instrumented filesystem operations report here; the OS is not watched.",
4827
+ parameters: [{
4828
+ name: "workspaceFileScope",
4829
+ description: "header-derived workspace root for the Session identity on the wire."
4830
+ }, {
4831
+ name: "signal",
4832
+ description: "generation cancellation."
4833
+ }],
4834
+ returns: "`ready` once the Host observation queue is active and the workspace root is resolved, then queued and live observations in emission order."
4835
+ }
4836
+ ]
4837
+ },
4645
4838
  {
4646
4839
  key: "workspaceRegistry",
4647
4840
  summary: "Durable workspace registry.",
@@ -4836,7 +5029,7 @@ const EVENT_API = [
4836
5029
  mode: "waterfall",
4837
5030
  signature: "'agent/request'(this: Scoped<Agent>, payload: { agent: Agent; turn: number; step: number; signal: AbortSignal }, next: () => Promise<LlmCallConfig>): Promise<LlmCallConfig>",
4838
5031
  summary: "Replace the frozen call configuration.",
4839
- description: "Replace the frozen call configuration. `await next()` yields the config the machine would use (agent options on the first request, the logged header afterwards); return a replacement to switch. Model-visible content must use logged channels; this waterfall cannot mutate messages.",
5032
+ description: "Replace the frozen call configuration. `await next()` yields the config the machine would use (agent options on the first request, the logged header afterwards); return a replacement to switch. On step admission, this runs after assembly and `step/start`, before the system prompt and accepted user batch are committed. Cancellation here or during subsequent `prepareCall()` resolution commits neither. The prepared call capability governs prompt admission. Model-visible content must use logged channels; this waterfall cannot mutate messages.",
4840
5033
  parameters: [{
4841
5034
  name: "payload",
4842
5035
  description: ".signal - the current turn's explicit abort signal. Scope-filtered dispatch (`@deepseek-ai/dsh-scope`): agent-scoped listeners receive only that agent."
@@ -5142,6 +5335,17 @@ const EVENT_API = [
5142
5335
  description: "the opaque tool-execution context the decider keys off."
5143
5336
  }]
5144
5337
  },
5338
+ {
5339
+ name: "goal/activation-changed",
5340
+ mode: "emit",
5341
+ signature: "'goal/activation-changed'(payload: GoalActivationChanged): void",
5342
+ summary: "Process-local goal activation changed for one session.",
5343
+ description: "Process-local goal activation changed for one session.",
5344
+ parameters: [{
5345
+ name: "payload",
5346
+ description: "session id and the exact current goal activation, or no goal after a clear."
5347
+ }]
5348
+ },
5145
5349
  {
5146
5350
  name: "goal/changed",
5147
5351
  mode: "emit",
@@ -5391,8 +5595,8 @@ const EVENT_API = [
5391
5595
  name: "tools/ptc-dispatch-log",
5392
5596
  mode: "waterfall",
5393
5597
  signature: "'tools/ptc-dispatch-log'(this: Scoped<ToolRuntime>, dispatch: PtcDispatchLog, next: () => Promise<ContentBlock[]>): Promise<ContentBlock[]>",
5394
- summary: "Allow a listener to replace content in the DURABLE LOG COPY of one `run_code` sub-dispatch outcome before the bridge appends its `tool/code-dispatch` event.",
5395
- description: "Allow a listener to replace content in the DURABLE LOG COPY of one `run_code` sub-dispatch outcome before the bridge appends its `tool/code-dispatch` event. `next()` keeps the content unchanged; a listener may return replacement blocks (e.g. the spill policy's preview + locator for an oversized text result). Only the logged copy is affected — the program already received the complete value, and the model sees neither. A throwing listener is contained: the bridge falls back to logging the original settled content. Scope-filtered dispatch (`@deepseek-ai/dsh-scope`): agent-scoped listeners receive only that agent's dispatches.",
5598
+ summary: "Allow a listener to replace content in the DURABLE LOG COPY of one `run_code` sub-dispatch outcome before the bridge appends its `tool/ptc-dispatch` event.",
5599
+ description: "Allow a listener to replace content in the DURABLE LOG COPY of one `run_code` sub-dispatch outcome before the bridge appends its `tool/ptc-dispatch` event. `next()` keeps the content unchanged; a listener may return replacement blocks (e.g. the spill policy's preview + locator for an oversized text result). Only the logged copy is affected — the program already received the complete value, and the model sees neither. A throwing listener is contained: the bridge falls back to logging the original settled content. Scope-filtered dispatch (`@deepseek-ai/dsh-scope`): agent-scoped listeners receive only that agent's dispatches.",
5396
5600
  parameters: [{
5397
5601
  name: "dispatch",
5398
5602
  description: "the parent execution, sub-call identity, and the settled content to log."
@@ -5580,7 +5784,7 @@ const TYPE_API = [
5580
5784
  },
5581
5785
  {
5582
5786
  name: "AgentSetup",
5583
- declaration: "export type AgentSetup = (agentCtx: Context) => AgentSetupCommit | Promise<AgentSetupCommit | void> | void;"
5787
+ declaration: "export type AgentSetup = (agentCtx: Context, agent: Agent) => AgentSetupCommit | Promise<AgentSetupCommit | void> | void;"
5584
5788
  },
5585
5789
  {
5586
5790
  name: "AgentSetupCommit",
@@ -5968,7 +6172,7 @@ const TYPE_API = [
5968
6172
  },
5969
6173
  {
5970
6174
  name: "CreateAgentOptions",
5971
- declaration: "export interface CreateAgentOptions {\n readonly sessionId: SessionId;\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}"
6175
+ 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}"
5972
6176
  },
5973
6177
  {
5974
6178
  name: "CreateGoalRequest",
@@ -6148,7 +6352,11 @@ const TYPE_API = [
6148
6352
  },
6149
6353
  {
6150
6354
  name: "EpochHeader",
6151
- declaration: "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n system?: string;\n tools?: ToolSchema[];\n}"
6355
+ declaration: "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n tools?: ToolSchema[];\n}"
6356
+ },
6357
+ {
6358
+ name: "FeedbackCategory",
6359
+ declaration: "export type FeedbackCategory = 'task-result' | 'instruction-following' | 'product-interaction' | 'service-stability' | 'resource-cost' | 'security-privacy-permission' | 'other';"
6152
6360
  },
6153
6361
  {
6154
6362
  name: "FiberState",
@@ -6250,6 +6458,10 @@ const TYPE_API = [
6250
6458
  name: "GoalActivation",
6251
6459
  declaration: "export type GoalActivation = 'armed' | 'disarmed';"
6252
6460
  },
6461
+ {
6462
+ name: "GoalActivationChanged",
6463
+ declaration: "export interface GoalActivationChanged {\n readonly sessionId: SessionId;\n readonly goal?: {\n readonly id: GoalId;\n readonly revision: number;\n readonly activation: GoalActivation;\n };\n}"
6464
+ },
6253
6465
  {
6254
6466
  name: "GoalBlockReason",
6255
6467
  declaration: "export interface GoalBlockReason {\n readonly code: string;\n readonly message: string;\n}"
@@ -6456,7 +6668,7 @@ const TYPE_API = [
6456
6668
  },
6457
6669
  {
6458
6670
  name: "LlmConfigurableProvider",
6459
- declaration: "export interface LlmConfigurableProvider {\n provider: string;\n displayName: string;\n settingsNs: string;\n settingsPath: readonly string[];\n declared?: boolean;\n}"
6671
+ declaration: "export interface LlmConfigurableProvider {\n provider: string;\n displayName: string;\n settingsNs: string;\n settingsPath: readonly string[];\n declared?: boolean;\n error?: string;\n}"
6460
6672
  },
6461
6673
  {
6462
6674
  name: "LlmDiscoveredModel",
@@ -6500,7 +6712,7 @@ const TYPE_API = [
6500
6712
  },
6501
6713
  {
6502
6714
  name: "LlmResolvedModelInfo",
6503
- declaration: "export interface LlmResolvedModelInfo extends LlmModelInfo {\n context?: LlmModelContext;\n defaultMaxTokens?: number;\n reasoning?: LlmModelReasoningInfo;\n}"
6715
+ declaration: "export interface LlmResolvedModelInfo extends LlmModelInfo {\n context?: LlmModelContext;\n defaultMaxTokens?: number;\n reasoning?: LlmModelReasoningInfo;\n systemPromptUpdate?: SystemPromptUpdate;\n}"
6504
6716
  },
6505
6717
  {
6506
6718
  name: "LlmRuntime",
@@ -6572,7 +6784,7 @@ const TYPE_API = [
6572
6784
  },
6573
6785
  {
6574
6786
  name: "MessageFeedbackItem",
6575
- declaration: "export interface MessageFeedbackItem {\n readonly messageId: MessageId;\n readonly rating: MessageFeedbackRating;\n readonly note?: string;\n readonly version: MessageFeedbackVersion;\n readonly createdAt: number;\n readonly updatedAt: number;\n}"
6787
+ declaration: "export interface MessageFeedbackItem {\n readonly messageId: MessageId;\n readonly rating: MessageFeedbackRating;\n readonly note?: string;\n readonly category?: FeedbackCategory;\n readonly version: MessageFeedbackVersion;\n readonly createdAt: number;\n readonly updatedAt: number;\n}"
6576
6788
  },
6577
6789
  {
6578
6790
  name: "MessageFeedbackListRequest",
@@ -6596,7 +6808,7 @@ const TYPE_API = [
6596
6808
  },
6597
6809
  {
6598
6810
  name: "MessageFeedbackPutRequest",
6599
- declaration: "export interface MessageFeedbackPutRequest {\n readonly sessionId: SessionId;\n readonly messageId: MessageId;\n readonly rating: MessageFeedbackRating;\n readonly note?: string;\n readonly ifVersion: MessageFeedbackVersion | null;\n}"
6811
+ declaration: "export interface MessageFeedbackPutRequest {\n readonly sessionId: SessionId;\n readonly messageId: MessageId;\n readonly rating: MessageFeedbackRating;\n readonly note?: string;\n readonly category?: FeedbackCategory;\n readonly ifVersion: MessageFeedbackVersion | null;\n}"
6600
6812
  },
6601
6813
  {
6602
6814
  name: "MessageFeedbackPutResult",
@@ -6712,7 +6924,7 @@ const TYPE_API = [
6712
6924
  },
6713
6925
  {
6714
6926
  name: "PreparedLlmCall",
6715
- declaration: "export interface PreparedLlmCall {\n readonly config: LlmCallConfig;\n readonly retryPolicy: ResolvedRetryPolicy;\n readonly context?: LlmModelContext;\n readonly inputModalities?: readonly ModelModality[];\n readonly adapterDefaults: LlmCallConfigAdapterDefaults;\n stream(options: GenerateOptions): AsyncIterable<StreamChunk>;\n}"
6927
+ declaration: "export interface PreparedLlmCall {\n readonly config: LlmCallConfig;\n readonly retryPolicy: ResolvedRetryPolicy;\n readonly context?: LlmModelContext;\n readonly inputModalities?: readonly ModelModality[];\n readonly systemPromptUpdate?: SystemPromptUpdate;\n readonly adapterDefaults: LlmCallConfigAdapterDefaults;\n stream(options: GenerateOptions): AsyncIterable<StreamChunk>;\n}"
6716
6928
  },
6717
6929
  {
6718
6930
  name: "PreparedReferencedMessage",
@@ -6844,7 +7056,7 @@ const TYPE_API = [
6844
7056
  },
6845
7057
  {
6846
7058
  name: "RequestContext",
6847
- declaration: "export interface RequestContext {\n provider: string;\n model: string;\n contextWindow?: number;\n}"
7059
+ declaration: "export interface RequestContext {\n provider: string;\n model: string;\n contextWindow?: number;\n systemPromptUpdate?: SystemPromptUpdate;\n}"
6848
7060
  },
6849
7061
  {
6850
7062
  name: "RequestErrorAction",
@@ -6892,7 +7104,7 @@ const TYPE_API = [
6892
7104
  },
6893
7105
  {
6894
7106
  name: "ResumeAgentOptions",
6895
- declaration: "export interface ResumeAgentOptions {\n readonly resumeSessionId: SessionId;\n readonly agentOptions?: AgentOptions;\n readonly signal?: AbortSignal;\n readonly setup?: AgentSetup;\n}"
7107
+ declaration: "export interface ResumeAgentOptions {\n readonly resumeSessionId: SessionId;\n readonly parentAgent?: Agent;\n readonly agentOptions?: AgentOptions;\n readonly signal?: AbortSignal;\n readonly setup?: AgentSetup;\n}"
6896
7108
  },
6897
7109
  {
6898
7110
  name: "RunnerFailureRule",
@@ -7040,7 +7252,7 @@ const TYPE_API = [
7040
7252
  },
7041
7253
  {
7042
7254
  name: "SessionEvent",
7043
- declaration: "export type SessionEvent<T extends SessionEventType = SessionEventType> = {\n [K in SessionEventType]: {\n type: K;\n seq: SessionSeq;\n time: number;\n data: SessionEventMap[K];\n ignorable?: true;\n } & (K extends SurfaceEventType ? {\n sourceEventSeqs?: SessionSeq[];\n surfaceOp?: SurfaceOp;\n } : object);\n}[T];"
7255
+ declaration: "export type SessionEvent<T extends SessionEventType = SessionEventType> = {\n [K in SessionEventType]: {\n type: K;\n seq: SessionSeq;\n time: number;\n data: SessionEventMap[K];\n ignorable?: true;\n } & (K extends SurfaceEventType ? SurfaceIntent<K> : {\n surfaceOp?: never;\n sourceEventSeqs?: never;\n });\n}[T];"
7044
7256
  },
7045
7257
  {
7046
7258
  name: "SessionEventEntry",
@@ -7048,7 +7260,7 @@ const TYPE_API = [
7048
7260
  },
7049
7261
  {
7050
7262
  name: "SessionEventMap",
7051
- declaration: "export interface SessionEventMap {\n 'turn/start': {\n turn: number;\n };\n 'turn/end': {\n turn: number;\n reason: TurnEndReason;\n };\n 'step/start': {\n turn: number;\n step: number;\n };\n 'step/end': {\n turn: number;\n step: number;\n };\n 'user/message': UserMessage;\n 'assistant/message': {\n turn: number;\n step: number;\n message: AssistantMessage;\n stream: AssistantStreamRecord[];\n usage?: TokenUsage;\n interrupted?: true;\n };\n 'assistant/attempt': {\n turn: number;\n step: number;\n stream: AssistantStreamRecord[];\n };\n 'tool/call': {\n turn: number;\n step: number;\n callId: ToolCallId;\n name: string;\n arguments: string;\n };\n 'tool/result': {\n turn: number;\n step: number;\n message: ToolResultMessage;\n error?: {\n name: string;\n code: string;\n };\n meta?: JsonValue;\n };\n 'request/header': {\n header: EpochHeader;\n reason: RequestHeaderReason;\n startsSeries?: true;\n };\n 'request/context': RequestContext;\n 'session/end-seed': {\n inherited?: true;\n };\n}"
7263
+ declaration: "export interface SessionEventMap {\n 'turn/start': {\n turn: number;\n };\n 'turn/end': {\n turn: number;\n reason: TurnEndReason;\n };\n 'step/start': {\n turn: number;\n step: number;\n };\n 'step/end': {\n turn: number;\n step: number;\n };\n 'user/message': UserMessage;\n 'system/message': {\n turn: number;\n step: number;\n message: SystemMessage;\n };\n 'assistant/message': {\n turn: number;\n step: number;\n message: AssistantMessage;\n stream: AssistantStreamRecord[];\n usage?: TokenUsage;\n interrupted?: true;\n };\n 'assistant/attempt': {\n turn: number;\n step: number;\n stream: AssistantStreamRecord[];\n };\n 'tool/call': {\n turn: number;\n step: number;\n callId: ToolCallId;\n name: string;\n arguments: string;\n };\n 'tool/result': {\n turn: number;\n step: number;\n message: ToolResultMessage;\n error?: {\n name: string;\n code: string;\n };\n meta?: JsonValue;\n };\n 'request/header': {\n header: EpochHeader;\n reason: RequestHeaderReason;\n startsSeries?: true;\n };\n 'request/context': RequestContext;\n 'session/end-seed': {\n inherited?: true;\n };\n}"
7052
7264
  },
7053
7265
  {
7054
7266
  name: "SessionEventMetadataFilter",
@@ -7106,6 +7318,22 @@ const TYPE_API = [
7106
7318
  name: "SessionEventWindow",
7107
7319
  declaration: "export interface SessionEventWindow {\n session: SessionHeader;\n inheritedEventCount: SessionLogOffset;\n target: SessionEvent;\n events: SessionEvent[];\n startSeq: SessionSeq;\n endSeq: SessionSeq;\n}"
7108
7320
  },
7321
+ {
7322
+ name: "SessionFeedbackRecordRequest",
7323
+ declaration: "export interface SessionFeedbackRecordRequest {\n readonly sessionId: SessionId;\n readonly text?: string;\n readonly category?: FeedbackCategory;\n}"
7324
+ },
7325
+ {
7326
+ name: "SessionFeedbackRecordResult",
7327
+ declaration: "export type SessionFeedbackRecordResult = {\n readonly ok: true;\n readonly value: SessionFeedbackRecordValue;\n} | {\n readonly ok: false;\n readonly error: SessionFeedbackSessionNotFound;\n};"
7328
+ },
7329
+ {
7330
+ name: "SessionFeedbackRecordValue",
7331
+ declaration: "export interface SessionFeedbackRecordValue {\n readonly recorded: true;\n}"
7332
+ },
7333
+ {
7334
+ name: "SessionFeedbackSessionNotFound",
7335
+ declaration: "export interface SessionFeedbackSessionNotFound {\n readonly code: 'session-not-found';\n readonly sessionId: SessionId;\n}"
7336
+ },
7109
7337
  {
7110
7338
  name: "SessionFollowFrame",
7111
7339
  declaration: "export type SessionFollowFrame = {\n readonly type: 'snapshot';\n readonly header: SessionWireHeader;\n readonly cursor: number;\n readonly records: readonly SessionHistoryRecord[];\n readonly hasMore: boolean;\n readonly projections: SessionProjectionBaseline;\n readonly assistantStream?: SessionAssistantStreamBaseline;\n} | SessionEventEntry | {\n readonly type: 'assistant-stream';\n readonly frame: SessionAssistantStreamFrame;\n};"
@@ -7200,7 +7428,7 @@ const TYPE_API = [
7200
7428
  },
7201
7429
  {
7202
7430
  name: "SessionOpenWorkspacePathRequest",
7203
- declaration: "export interface SessionOpenWorkspacePathRequest {\n readonly path: string;\n}"
7431
+ declaration: "export interface SessionOpenWorkspacePathRequest {\n readonly action?: 'reveal';\n readonly path: string;\n}"
7204
7432
  },
7205
7433
  {
7206
7434
  name: "SessionOpenWorkspacePathValue",
@@ -7444,16 +7672,12 @@ const TYPE_API = [
7444
7672
  },
7445
7673
  {
7446
7674
  name: "SessionWireEvent",
7447
- declaration: "export interface SessionWireEvent {\n readonly type: string;\n readonly seq: number;\n readonly time: number;\n readonly data: JsonValue;\n readonly ignorable?: true;\n readonly sourceEventSeqs?: number[];\n readonly surfaceOp?: SessionWireSurfaceOp;\n}"
7675
+ declaration: "export interface SessionWireEvent {\n readonly type: string;\n readonly seq: number;\n readonly time: number;\n readonly data: JsonValue;\n readonly ignorable?: true;\n readonly sourceEventSeqs?: JsonValue;\n readonly surfaceOp?: JsonValue;\n}"
7448
7676
  },
7449
7677
  {
7450
7678
  name: "SessionWireHeader",
7451
7679
  declaration: "export interface SessionWireHeader {\n readonly version: number;\n readonly id: SessionId;\n readonly createdAt: number;\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}"
7452
7680
  },
7453
- {
7454
- name: "SessionWireSurfaceOp",
7455
- declaration: "export type SessionWireSurfaceOp = 'append' | {\n readonly op: 'replace';\n readonly start: number;\n readonly end: number;\n};"
7456
- },
7457
7681
  {
7458
7682
  name: "SettingsApplies",
7459
7683
  declaration: "export type SettingsApplies = 'live' | 'restart';"
@@ -7780,11 +8004,11 @@ const TYPE_API = [
7780
8004
  },
7781
8005
  {
7782
8006
  name: "SurfaceEvent",
7783
- declaration: "export type SurfaceEvent = SessionEvent<SurfaceEventType> & {\n surfaceOp: SurfaceOp;\n};"
8007
+ declaration: "export type SurfaceEvent = SessionEvent<SurfaceEventType>;"
7784
8008
  },
7785
8009
  {
7786
8010
  name: "SurfaceEventType",
7787
- declaration: "export type SurfaceEventType = 'user/message' | 'assistant/message' | 'tool/result';"
8011
+ declaration: "export type SurfaceEventType = 'system/message' | 'user/message' | 'assistant/message' | 'tool/result';"
7788
8012
  },
7789
8013
  {
7790
8014
  name: "SurfaceIntent",
@@ -7792,12 +8016,20 @@ const TYPE_API = [
7792
8016
  },
7793
8017
  {
7794
8018
  name: "SurfaceOp",
7795
- declaration: "export type SurfaceOp = 'append' | {\n op: 'replace';\n start: SessionSeq;\n end: SessionSeq;\n};"
8019
+ declaration: "export type SurfaceOp = 'append' | {\n op: 'replace';\n startSeq: SessionSeq;\n endSeq: SessionSeq;\n};"
8020
+ },
8021
+ {
8022
+ name: "SystemMessage",
8023
+ declaration: "export interface SystemMessage extends Message {\n readonly role: 'system';\n readonly source: MessageSourceMap['plugin'];\n}"
7796
8024
  },
7797
8025
  {
7798
8026
  name: "SystemPrompt",
7799
8027
  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}"
7800
8028
  },
8029
+ {
8030
+ name: "SystemPromptUpdate",
8031
+ declaration: "export type SystemPromptUpdate = 'in-history';"
8032
+ },
7801
8033
  {
7802
8034
  name: "TableKeyOf",
7803
8035
  declaration: "export type TableKeyOf<S extends DomainSpec, N extends keyof S['tables']> = S['tables'][N] extends DomainTableSpec<infer K> ? K : never;"
@@ -8120,7 +8352,7 @@ const TYPE_API = [
8120
8352
  },
8121
8353
  {
8122
8354
  name: "TypertRemoteEventContext",
8123
- declaration: "export interface TypertRemoteEventContext {\n readonly value: Context;\n readonly subject: object;\n}"
8355
+ declaration: "export interface TypertRemoteEventContext {\n readonly value: Context;\n readonly subject: object;\n readonly agentId: string;\n}"
8124
8356
  },
8125
8357
  {
8126
8358
  name: "TypertRemoteEventDispatch",
@@ -8346,6 +8578,10 @@ const TYPE_API = [
8346
8578
  name: "WorkspaceBaseline",
8347
8579
  declaration: "export interface WorkspaceBaseline {\n readonly items: readonly WorkspaceView[];\n readonly archivedSessionIds: readonly SessionId[];\n}"
8348
8580
  },
8581
+ {
8582
+ name: "WorkspaceByteRange",
8583
+ declaration: "export interface WorkspaceByteRange {\n readonly offset?: number;\n readonly length?: number;\n}"
8584
+ },
8349
8585
  {
8350
8586
  name: "WorkspaceCreateRequest",
8351
8587
  declaration: "export interface WorkspaceCreateRequest {\n readonly path: string;\n}"
@@ -8362,6 +8598,42 @@ const TYPE_API = [
8362
8598
  name: "WorkspaceDeleteValue",
8363
8599
  declaration: "export interface WorkspaceDeleteValue {\n readonly deleted: true;\n}"
8364
8600
  },
8601
+ {
8602
+ name: "WorkspaceDirectoryEntry",
8603
+ declaration: "export interface WorkspaceDirectoryEntry {\n readonly name: string;\n readonly type: 'file' | 'directory' | 'other';\n readonly size?: number;\n}"
8604
+ },
8605
+ {
8606
+ name: "WorkspaceDirectoryListing",
8607
+ declaration: "export interface WorkspaceDirectoryListing {\n readonly path: string;\n readonly entries: readonly WorkspaceDirectoryEntry[];\n readonly truncated: boolean;\n}"
8608
+ },
8609
+ {
8610
+ name: "WorkspaceFileBytes",
8611
+ declaration: "export interface WorkspaceFileBytes extends WorkspaceFileStat {\n readonly offset: number;\n readonly data: string;\n readonly eof: boolean;\n}"
8612
+ },
8613
+ {
8614
+ name: "WorkspaceFileChange",
8615
+ declaration: "export type WorkspaceFileChange = {\n readonly absolutePath: string;\n readonly version: string;\n} | {\n readonly absolutePath: string;\n readonly absent: true;\n};"
8616
+ },
8617
+ {
8618
+ name: "WorkspaceFileRange",
8619
+ declaration: "export interface WorkspaceFileRange {\n readonly offset?: number;\n readonly limit?: number;\n}"
8620
+ },
8621
+ {
8622
+ name: "WorkspaceFileScope",
8623
+ declaration: "export interface WorkspaceFileScope {\n readonly sessionId: SessionId;\n readonly workspaceRoot: string;\n}"
8624
+ },
8625
+ {
8626
+ name: "WorkspaceFileStat",
8627
+ declaration: "export interface WorkspaceFileStat {\n readonly absolutePath: string;\n readonly version: string;\n readonly bytes?: number;\n}"
8628
+ },
8629
+ {
8630
+ name: "WorkspaceFileText",
8631
+ declaration: "export interface WorkspaceFileText extends WorkspaceFileStat {\n readonly offset: number;\n readonly text: string;\n readonly lines: number;\n readonly eof: boolean;\n}"
8632
+ },
8633
+ {
8634
+ name: "WorkspaceFileWatchFrame",
8635
+ declaration: "export type WorkspaceFileWatchFrame = {\n readonly kind: 'ready';\n} | {\n readonly kind: 'change';\n readonly change: WorkspaceFileChange;\n};"
8636
+ },
8365
8637
  {
8366
8638
  name: "WorkspaceFollowFrame",
8367
8639
  declaration: "export type WorkspaceFollowFrame = {\n readonly type: 'baseline';\n readonly value: WorkspaceBaseline;\n} | WorkspaceFollowIncrement;"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-tool-cordis",
3
3
  "description": "Self-referential cordis toolset: inspect the live runtime, mount and dispose model-written plugins",
4
- "version": "0.1.3-alpha.2",
4
+ "version": "0.1.5-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -27,24 +27,24 @@
27
27
  ],
28
28
  "license": "MIT",
29
29
  "peerDependencies": {
30
- "@deepseek-ai/dsh-cordis-host-runner": "^0.1.3-alpha.2",
31
- "@deepseek-ai/dsh-agent": "^0.1.3-alpha.2",
32
- "@deepseek-ai/dsh-llm": "^0.1.3-alpha.2",
33
- "@deepseek-ai/dsh-scope": "^0.1.3-alpha.2",
34
- "@deepseek-ai/dsh-session": "^0.1.3-alpha.2",
35
- "@deepseek-ai/dsh-system-prompt": "^0.1.3-alpha.2",
36
- "@deepseek-ai/dsh-tools": "^0.1.3-alpha.2",
30
+ "@deepseek-ai/dsh-agent": "^0.1.5-alpha.2",
31
+ "@deepseek-ai/dsh-cordis-host-runner": "^0.1.5-alpha.2",
32
+ "@deepseek-ai/dsh-llm": "^0.1.5-alpha.2",
33
+ "@deepseek-ai/dsh-scope": "^0.1.5-alpha.2",
34
+ "@deepseek-ai/dsh-session": "^0.1.5-alpha.2",
35
+ "@deepseek-ai/dsh-system-prompt": "^0.1.5-alpha.2",
36
+ "@deepseek-ai/dsh-tools": "^0.1.5-alpha.2",
37
37
  "@deepseek-ai/cordis": "^4.0.2"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
41
- "@deepseek-ai/dsh-agent": "^0.1.3-alpha.2",
42
- "@deepseek-ai/dsh-llm": "^0.1.3-alpha.2",
43
- "@deepseek-ai/dsh-scope": "^0.1.3-alpha.2",
44
- "@deepseek-ai/dsh-session": "^0.1.3-alpha.2",
45
- "@deepseek-ai/dsh-cordis-host-runner": "^0.1.3-alpha.2",
46
- "@deepseek-ai/dsh-system-prompt": "^0.1.3-alpha.2",
47
- "@deepseek-ai/dsh-tools": "^0.1.3-alpha.2",
41
+ "@deepseek-ai/dsh-agent": "^0.1.5-alpha.2",
42
+ "@deepseek-ai/dsh-cordis-host-runner": "^0.1.5-alpha.2",
43
+ "@deepseek-ai/dsh-llm": "^0.1.5-alpha.2",
44
+ "@deepseek-ai/dsh-scope": "^0.1.5-alpha.2",
45
+ "@deepseek-ai/dsh-session": "^0.1.5-alpha.2",
46
+ "@deepseek-ai/dsh-system-prompt": "^0.1.5-alpha.2",
47
+ "@deepseek-ai/dsh-tools": "^0.1.5-alpha.2",
48
48
  "@deepseek-ai/cordis": "^4.0.2"
49
49
  }
50
50
  }