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

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
@@ -18,8 +18,8 @@
18
18
  en: e8c90b0ad037513c
19
19
  zh: 563454508c30d9b0
20
20
  /deepseek-ai-dsh-tool-cordis/understand-the-implementation:
21
- en: de18fe3471a4a341
22
- zh: fda07860cfe1e325
21
+ en: ff959016d633c6c0
22
+ zh: d84dfa7e9d73532f
23
23
  /deepseek-ai-dsh-tool-cordis/further-exploration:
24
24
  en: 1863373f02bcc196
25
25
  zh: 3efdbf5569411562
package/README.md CHANGED
@@ -35,7 +35,7 @@ Creator mode includes this toolset. Other compositions mount `@deepseek-ai/dsh-t
35
35
  <details>
36
36
  <summary>Implementation internals — click to expand</summary>
37
37
 
38
- Host providers combine generated Service/Event catalogs, the live Loader tree projected through the app-boot Config projector, and the requesting agent's tool registry. Client providers synchronize their manifests through the existing inspection registry and answer queries from a connected page. The host entry owns the Host provider registrations and the preset row owns the two tools, each through Cordis effects; the registry rejects a duplicate provider id, which is why the providers register once per process rather than per preset. No invariant companion is published because inspection reads its providers directly and maintains no independent runtime projection.
38
+ Host providers combine generated Service/Event catalogs, the live Loader tree projected through the app-boot Config projector, and the requesting agent's tool registry. Client providers synchronize their manifests through the existing inspection registry and answer queries from a connected page. The host entry owns the Host provider registrations and the preset row owns the two tools, each through Cordis effects; the registry rejects a duplicate provider id, which is why the providers register once per process rather than per preset.
39
39
 
40
40
  </details>
41
41
 
package/README.zh.md CHANGED
@@ -35,7 +35,7 @@ kind: "package-reference"
35
35
  <details>
36
36
  <summary>实现细节 — 点击展开</summary>
37
37
 
38
- Host provider 结合生成的 Service/Event 目录、经 app-boot Config 投影器投影的运行中 Loader 树,以及请求 agent 的工具注册表。Client provider 通过现有检查注册表同步清单,并从已连接页面回答查询。宿主入口持有 Host provider 的注册,preset 行持有两个工具,都通过 Cordis effect;注册表拒绝重复的 provider id,所以 provider 按进程注册一次而不是按 preset 注册。检查直接读取 provider,不维护独立运行时投影,因此不发布不变式配套插件。
38
+ Host provider 结合生成的 Service/Event 目录、经 app-boot Config 投影器投影的运行中 Loader 树,以及请求 agent 的工具注册表。Client provider 通过现有检查注册表同步清单,并从已连接页面回答查询。宿主入口持有 Host provider 的注册,preset 行持有两个工具,都通过 Cordis effect;注册表拒绝重复的 provider id,所以 provider 按进程注册一次而不是按 preset 注册。
39
39
 
40
40
  </details>
41
41
 
@@ -73,6 +73,12 @@ export const SERVICE_API = [
73
73
  parameters: [{ name: 'definition', description: 'Parsed configuration supplied by the declaring plugin.' }],
74
74
  returns: 'Definition disposer after activation or its diagnostic settles; the declaring plugin owns it.',
75
75
  },
76
+ {
77
+ signature: 'inspectCompositions(ctx?: Context): AgentPresetInspection[]',
78
+ description: 'Inspect retained revisions, or the exact revision an Agent joined.',
79
+ parameters: [{ name: 'ctx', description: 'optional Agent context; omission includes all retained revisions.' }],
80
+ returns: 'detached module references and isolation diagnostics; no match returns an empty list.',
81
+ },
76
82
  {
77
83
  signature: 'async list(): Promise<AgentPreset[]>',
78
84
  description: 'Read every declared preset, including activation failures.',
@@ -487,6 +493,32 @@ export const SERVICE_API = [
487
493
  },
488
494
  ],
489
495
  },
496
+ {
497
+ key: 'claudeCodeMods',
498
+ summary: 'The bridge service: loaded mods, their hooks, and the harness listeners that raise their events.',
499
+ description: 'The bridge service: loaded mods, their hooks, and the harness listeners that raise their events. Mods join through ClaudeCodeMods.add, which defineMod calls when a mod plugin mounts. The Remote methods let a Client draw each session\'s band above the prompt and press its buttons.',
500
+ methods: [
501
+ {
502
+ signature: '@Remote({ mode: \'stream\' }) watchBand(agent: Agent, signal: AbortSignal): AsyncIterable<SurfaceSnapshot>',
503
+ description: 'Watch the band above the prompt of one session: the current drawing, then every redraw, until the Client stops watching.',
504
+ parameters: [{ name: 'agent', description: 'the session\'s agent, resolved by the Gateway.' }, { name: 'signal', description: 'carrier cancellation.' }],
505
+ returns: 'the band\'s snapshots.',
506
+ },
507
+ {
508
+ signature: '@Remote pressBand(agent: Agent, generation: number, actionId: string): Promise<SurfaceSnapshot>',
509
+ description: 'Press a button of the band\'s current drawing: runs the mod\'s `onPress` and redraws.',
510
+ parameters: [{ name: 'agent', description: 'the session\'s agent, resolved by the Gateway.' }, { name: 'generation', description: 'the drawing the Client saw.' }, { name: 'actionId', description: 'the button\'s action id in that drawing.' }],
511
+ returns: 'the snapshot after the press.',
512
+ },
513
+ {
514
+ signature: 'async add(definition: ModDefinition): Promise<() => Promise<void>>',
515
+ description: 'Load one mod beneath every mod loaded before it: run its `register`, keep its hooks, and report which of its events this host never raises.',
516
+ parameters: [{ name: 'definition', description: 'the mod as its plugin defined it.' }],
517
+ returns: 'the disposer that removes the mod\'s hooks, closes its timers, and releases its registrations.',
518
+ throws: ['Error when the name is invalid or taken, or when `register` throws (Claude Code\'s `hooks module did not load` wording).'],
519
+ },
520
+ ],
521
+ },
490
522
  {
491
523
  key: 'clientModules',
492
524
  summary: 'The web plugin table service: incremental `dsh.client` scan + wire composition + bundle route + index injection rows.',
@@ -931,8 +963,8 @@ export const SERVICE_API = [
931
963
  },
932
964
  {
933
965
  key: 'fileUploads',
934
- summary: 'Host service owning upload storage and Agent-scoped staged receipts.',
935
- description: 'Host service owning upload storage and Agent-scoped staged receipts.',
966
+ summary: 'Host service owning upload storage and receipts keyed by each receiving Agent\'s exact Session.',
967
+ description: 'Host service owning upload storage and receipts keyed by each receiving Agent\'s exact Session.',
936
968
  methods: [
937
969
  {
938
970
  signature: 'registerAgentResolver(resolve: AgentResolver): () => void',
@@ -954,7 +986,7 @@ export const SERVICE_API = [
954
986
  },
955
987
  {
956
988
  signature: 'resolve(agent: Agent, receiptId: FileUploadReceiptId): FileAttachmentRef | undefined',
957
- description: 'Resolve one staged receipt inside its receiving Agent scope.',
989
+ description: 'Resolve one staged receipt for the receiving Agent\'s exact Session.',
958
990
  parameters: [{ name: 'agent', description: 'receiving Agent.' }, { name: 'receiptId', description: 'opaque receipt minted for one completed upload.' }],
959
991
  returns: 'durable file reference, or `undefined` for an unknown or foreign receipt.',
960
992
  },
@@ -1190,19 +1222,6 @@ export const SERVICE_API = [
1190
1222
  },
1191
1223
  ],
1192
1224
  },
1193
- {
1194
- key: 'invariants',
1195
- summary: 'Package-owned invariant registry with global and regex-based selection.',
1196
- description: 'Package-owned invariant registry with global and regex-based selection.',
1197
- methods: [
1198
- {
1199
- signature: 'register(packageName: string, installer: InvariantInstaller): () => void',
1200
- description: 'Register one package\'s invariant installer. The package name is reserved even when filtering disables its checks. Enabled installers run in a child fiber; failure disposes that fiber and releases the reservation.',
1201
- parameters: [{ name: 'packageName', description: 'full npm package name that owns the contribution.' }, { name: 'installer', description: 'listener or startup-check installer for the child context.' }],
1202
- returns: 'an effect-scoped disposer for the registration.',
1203
- },
1204
- ],
1205
- },
1206
1225
  {
1207
1226
  key: 'jobController',
1208
1227
  summary: 'Host service backing the generated `ctx.remote.job` namespace.',
@@ -1588,7 +1607,7 @@ export const SERVICE_API = [
1588
1607
  signature: '@Remote listBundles(): Promise<BundleInfo[]>',
1589
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.',
1590
1609
  parameters: [],
1591
- returns: 'Package versions, manifest descriptions, rows, optional display metadata, activation selections, whether the installation offers the bundle, and removal availability.',
1610
+ 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.',
1592
1611
  },
1593
1612
  {
1594
1613
  signature: '@Remote async registries(): Promise<PluginRegistries>',
@@ -1634,8 +1653,8 @@ export const SERVICE_API = [
1634
1653
  },
1635
1654
  {
1636
1655
  signature: '@Remote removeBundle(name: string): Promise<ChangeResult>',
1637
- description: 'Unload and remove a profile-owned bundle dependency through dsh plugin\'s pnpm path.',
1638
- parameters: [{ name: 'name', description: 'Installed dependency name.' }],
1656
+ description: 'Unload and remove a profile-owned bundle dependency through dsh plugin\'s pnpm path; a selected name no dependency holds is only deselected.',
1657
+ parameters: [{ name: 'name', description: 'Installed dependency or selected bundle name.' }],
1639
1658
  returns: 'Removal diagnostics and the remaining profile state.',
1640
1659
  },
1641
1660
  ],
@@ -1797,7 +1816,7 @@ export const SERVICE_API = [
1797
1816
  methods: [
1798
1817
  {
1799
1818
  signature: 'async create(sessionId: SessionId, request: ScheduleCreateRequest, signal?: AbortSignal): Promise<ScheduleRecord>',
1800
- description: 'Create a reminder bound to the caller-selected Session without activating it.\n\nThe request must supply a title; a missing, blank-after-trim, or over-long title rejects with `invalid_prompt` instead of deriving one from the prompt. The record is built from the clock reading taken before the request joins the serialized queue, so a create that waits behind a longer operation keeps its request-time anchor and may already be due when the queue reaches it.',
1819
+ description: 'Create a reminder bound to the caller-selected Session without activating it.\n\nThe request must supply a title; a missing, blank-after-trim, or over-long title rejects with `invalid_prompt` instead of deriving one from the prompt. A Session a delegated child owns rejects with `subagent_session`, because delivery can never reach it: the child is one whose delegation depth is above zero. The record is built from the clock reading taken before the request joins the serialized queue, so a create that waits behind a longer operation keeps its request-time anchor and may already be due when the queue reaches it.',
1801
1820
  parameters: [{ name: 'sessionId', description: 'Original Session receiving the reminder.' }, { name: 'request', description: 'Validated tool selector, required title, and reminder content.' }, { name: 'signal', description: 'Optional cancellation checked before persistence begins, including after FIFO waits.' }],
1802
1821
  returns: 'The durably stored schedule. Cancellation does not roll back an in-flight write.',
1803
1822
  },
@@ -1822,15 +1841,15 @@ export const SERVICE_API = [
1822
1841
  },
1823
1842
  {
1824
1843
  signature: '@Remote(\'delete\') async delete(request: ScheduleDeleteRequest, signal?: AbortSignal): Promise<ScheduleDeleteResult>',
1825
- description: 'Delete one task belonging to the selected Session, leaving queued messages intact.\n\nThe row is removed: the task no longer schedules, leaves `list` and `catalog`, and its saved delivery records go with it.',
1844
+ description: 'Delete one task belonging to the selected Session, leaving queued messages intact.\n\nThe row is removed: the task no longer schedules, leaves `list` and `catalog`, and its saved delivery records go with it. A task bound to a Session a delegated child owns stays deletable even though creation and timing edits refuse that binding, so a task stored before that rule existed remains removable.',
1826
1845
  parameters: [{ name: 'request', description: 'Session and exact task identity.' }, { name: 'signal', description: 'Optional cancellation checked before persistence begins, including after FIFO waits.' }],
1827
1846
  returns: 'Whether that Session owned a deleted task. Cancellation does not roll back an in-flight write.',
1828
1847
  },
1829
1848
  {
1830
1849
  signature: '@Remote(\'update\') async update(request: ScheduleUpdateRequest, signal?: AbortSignal): Promise<ScheduleUpdateResult>',
1831
- description: 'Update the name, instruction, and timing of an active task within the original Session binding without activating the Session or changing saved deliveries.\n\nEach supplied field replaces its stored value; an omitted field keeps it. A name or instruction change alone does not reset the committed target.',
1850
+ description: 'Update the name, instruction, and timing of an active task within the original Session binding without activating the Session or changing saved deliveries.\n\nEach supplied field replaces its stored value; an omitted field keeps it. A name or instruction change alone does not reset the committed target. A Session a delegated child owns returns the non-mutating `subagent_session` result, so an edit cannot re-arm a task bound to a Session delivery can never reach, and the Web editor can explain the refusal through the ordinary result it already renders.',
1832
1851
  parameters: [{ name: 'request', description: 'Task binding, complete observed record, and any combination of timing, name, and instruction.' }, { name: 'signal', description: 'Cancellation checked after domain readiness and FIFO waits, before persistence begins.' }],
1833
- returns: 'The committed record, unchanged record for a no-op, or a non-mutating input/lookup/conflict result. Storage and lifecycle failures reject; cancellation after a write starts does not roll it back.',
1852
+ returns: 'The committed record, unchanged record for a no-op, or a non-mutating input/lookup/conflict/refusal result. Storage and lifecycle failures reject; cancellation after a write starts does not roll it back.',
1834
1853
  },
1835
1854
  ],
1836
1855
  },
@@ -1854,7 +1873,7 @@ export const SERVICE_API = [
1854
1873
  {
1855
1874
  signature: '@Remote(\'list\') async list(_request: SessionListRequest, signal: AbortSignal): Promise<SessionListValue>',
1856
1875
  description: 'Read all visible Session rows without resuming an Agent.',
1857
- parameters: [{ name: '_request', description: 'reserved empty list request.' }, { name: 'signal', description: 'cancellation for persistence reads.' }],
1876
+ parameters: [{ name: '_request', description: 'reserved empty list request.' }, { name: 'signal', description: 'cancellation for persistence reads and summary generation.' }],
1858
1877
  returns: 'visible Session summaries ordered by activity.',
1859
1878
  },
1860
1879
  {
@@ -2323,7 +2342,7 @@ export const SERVICE_API = [
2323
2342
  },
2324
2343
  {
2325
2344
  signature: 'async flush(session: Session): Promise<boolean>',
2326
- description: 'Dispatch the awaited `session/flush` durability checkpoint for `session`, with the carrier captured at enter. THE flush entry point: the store owns the carrier, so callers (the checkpoint policy\'s per-request barrier, goal-round-driver\'s idle checkpoint, teardown drains, and consumers that flush themselves before reading storage) must come through here rather than dispatch a raw `ctx.parallel(\'session/flush\', …)` — one owner, one spelling, and the scoped-dispatch invariant can pin it.',
2345
+ description: 'Dispatch the awaited `session/flush` durability checkpoint for `session`, with the carrier captured at enter. THE flush entry point: the store owns the carrier, so callers (the checkpoint policy\'s per-request barrier, goal-round-driver\'s idle checkpoint, teardown drains, and consumers that flush themselves before reading storage) must come through here rather than dispatch a raw `ctx.parallel(\'session/flush\', …)` — one owner and one spelling.',
2327
2346
  parameters: [{ name: 'session', description: 'the session whose buffered events must reach durable storage.' }],
2328
2347
  returns: 'whether at least one durability listener participated, after every listener has settled successfully.',
2329
2348
  throws: ['the first registered listener failure after every listener settles.'],
@@ -2768,7 +2787,7 @@ export const SERVICE_API = [
2768
2787
  },
2769
2788
  {
2770
2789
  signature: 'get(name: string): DomainImpl | undefined',
2771
- description: 'Look up an open domain by name, untyped. Diagnostic surface (the package invariant cross-checks change events against live domain state); typed consumers hold the handle returned by open.',
2790
+ description: 'Look up an open domain by name, untyped. Diagnostic surface; typed consumers hold the handle returned by open.',
2772
2791
  parameters: [{ name: 'name', description: 'Domain name.' }],
2773
2792
  returns: 'the open domain runtime, or `undefined` when not open.',
2774
2793
  },
@@ -3949,7 +3968,7 @@ export const EVENT_API = [
3949
3968
  mode: 'emit',
3950
3969
  signature: '\'credentials/reference-updated\'(ref: CredentialRef): void',
3951
3970
  summary: 'Committed change to a provider-managed credential source: a `set`, an `unset`, or an external edit observed in storage.',
3952
- description: 'Committed change to a provider-managed credential source: a `set`, an `unset`, or an external edit observed in storage. Ambient process-environment changes are not observable and never emit. Listener failures are contained and logged — a sync throw and an async rejection alike — without changing the committed operation\'s outcome, except `INVARIANT`-coded failures, which rethrow after every listener ran; that rethrow reaches the emitter only from synchronous listeners, so invariant checks on this event must not be async functions.',
3971
+ description: 'Committed change to a provider-managed credential source: a `set`, an `unset`, or an external edit observed in storage. Ambient process-environment changes are not observable and never emit. Listener failures are contained and logged — a sync throw and an async rejection alike — without changing the committed operation\'s outcome.',
3953
3972
  parameters: [{ name: 'ref', description: 'the reference whose stored value changed.' }],
3954
3973
  },
3955
3974
  {
@@ -4423,6 +4442,10 @@ export const TYPE_API = [
4423
4442
  name: 'AgentPresetDocument',
4424
4443
  declaration: 'export interface AgentPresetDocument {\n readonly agentPreset: string;\n readonly content: string;\n readonly name?: string;\n readonly description?: string;\n}',
4425
4444
  },
4445
+ {
4446
+ name: 'AgentPresetInspection',
4447
+ declaration: 'export interface AgentPresetInspection {\n readonly id: string;\n readonly modules: readonly {\n readonly moduleName: string;\n readonly baseUrl?: string;\n readonly useHostBase: boolean;\n }[];\n readonly leakedServices: readonly string[];\n}',
4448
+ },
4426
4449
  {
4427
4450
  name: 'AgentPresetRoster',
4428
4451
  declaration: 'export interface AgentPresetRoster {\n readonly presets: readonly AgentPresetRow[];\n}',
@@ -4447,6 +4470,10 @@ export const TYPE_API = [
4447
4470
  name: 'AgentStatus',
4448
4471
  declaration: 'export type AgentStatus = \'idle\' | \'running\';',
4449
4472
  },
4473
+ {
4474
+ name: 'AnyHook',
4475
+ declaration: 'export type AnyHook = ModHook<unknown, unknown>;',
4476
+ },
4450
4477
  {
4451
4478
  name: 'ApiKeyRecord',
4452
4479
  declaration: 'export interface ApiKeyRecord {\n readonly kind: \'api-key\';\n readonly key?: string;\n readonly env?: Readonly<Record<string, string>>;\n}',
@@ -4479,6 +4506,10 @@ export const TYPE_API = [
4479
4506
  name: 'ArchiveSessionOptions',
4480
4507
  declaration: 'export interface ArchiveSessionOptions {\n readonly stopActivity?: boolean;\n}',
4481
4508
  },
4509
+ {
4510
+ name: 'AskOptions',
4511
+ declaration: 'export interface AskOptions {\n options?: readonly string[];\n header?: string;\n multiSelect?: true;\n}',
4512
+ },
4482
4513
  {
4483
4514
  name: 'AskUserQuestionAnswer',
4484
4515
  declaration: 'export interface AskUserQuestionAnswer {\n answers: AskUserQuestionAnswerItem[];\n}',
@@ -4623,6 +4654,10 @@ export const TYPE_API = [
4623
4654
  name: 'BashEnvVariableInfo',
4624
4655
  declaration: 'export interface BashEnvVariableInfo extends BashEnvVariable {\n contributor: string;\n key: DshEnvironmentKey;\n}',
4625
4656
  },
4657
+ {
4658
+ name: 'BoxProps',
4659
+ declaration: 'export interface BoxProps {\n readonly flexDirection?: \'row\' | \'column\' | undefined;\n readonly paddingX?: number | undefined;\n readonly paddingY?: number | undefined;\n readonly padding?: number | undefined;\n readonly gap?: number | undefined;\n readonly border?: boolean | string | undefined;\n readonly borderColor?: string | undefined;\n readonly children?: UiNode | undefined;\n}',
4660
+ },
4626
4661
  {
4627
4662
  name: 'Branded',
4628
4663
  declaration: 'export type Branded<B extends string> = string & {\n readonly [BRAND]: B;\n};',
@@ -4637,15 +4672,19 @@ export const TYPE_API = [
4637
4672
  },
4638
4673
  {
4639
4674
  name: 'BundleInfo',
4640
- declaration: 'export interface BundleInfo {\n name: string;\n version?: string;\n meta?: PluginLocalizedMeta;\n description?: string;\n enabled: boolean;\n installed: boolean;\n optional: boolean;\n removable: boolean;\n readOnlyReason?: ReadOnlyReason;\n error?: ManagementError;\n rows: BundleRowInfo[];\n overrides: string[];\n}',
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}',
4641
4676
  },
4642
4677
  {
4643
4678
  name: 'BundleRowInfo',
4644
4679
  declaration: 'export interface BundleRowInfo {\n rowId: string;\n moduleName: string;\n meta?: PluginLocalizedMeta;\n entryId?: PluginEntryId;\n}',
4645
4680
  },
4681
+ {
4682
+ name: 'ButtonProps',
4683
+ declaration: 'export interface ButtonProps {\n readonly label: string;\n readonly hotkey?: string | undefined;\n readonly disabled?: boolean | undefined;\n readonly onPress?: (() => unknown) | undefined;\n}',
4684
+ },
4646
4685
  {
4647
4686
  name: 'ChangeResult',
4648
- declaration: 'export interface ChangeResult {\n changed: boolean;\n application: \'applied\' | \'restart-required\' | \'overridden\' | \'failed\' | \'cancelled\';\n stage: \'install\' | \'enable\' | \'remove\';\n target: string;\n enabled?: boolean;\n error?: ManagementError;\n warnings?: string[];\n packageResult?: PackageResult;\n bundle?: string;\n pendingBuilds?: string[];\n approvedBuilds?: string[];\n registries?: Registry[];\n failedAt?: \'registry\' | \'spec-host\';\n}',
4687
+ declaration: 'export interface ChangeResult {\n changed: boolean;\n application: \'applied\' | \'restart-required\' | \'overridden\' | \'failed\' | \'cancelled\';\n stage: \'install\' | \'enable\' | \'remove\';\n target: string;\n enabled?: boolean;\n error?: ManagementError;\n warnings?: string[];\n packageResult?: PackageResult;\n bundle?: string;\n version?: string;\n pendingBuilds?: string[];\n approvedBuilds?: string[];\n registries?: Registry[];\n failedAt?: \'registry\' | \'spec-host\';\n}',
4649
4688
  },
4650
4689
  {
4651
4690
  name: 'ClientArtifactBaseline',
@@ -4679,6 +4718,10 @@ export const TYPE_API = [
4679
4718
  name: 'CommandId',
4680
4719
  declaration: 'export type CommandId = Branded<\'CommandId\'>;',
4681
4720
  },
4721
+ {
4722
+ name: 'CommandInfo',
4723
+ declaration: 'export interface CommandInfo {\n name: string;\n description: string;\n source: \'builtin\' | \'plugin\' | \'user\' | \'mcp\';\n plugin?: string;\n}',
4724
+ },
4682
4725
  {
4683
4726
  name: 'CommandInputDescriptor',
4684
4727
  declaration: 'export interface CommandInputDescriptor {\n readonly hint: string;\n readonly attachments?: boolean;\n}',
@@ -4691,6 +4734,18 @@ export const TYPE_API = [
4691
4734
  name: 'CommandResult',
4692
4735
  declaration: 'export type CommandResult = {\n readonly kind: \'success\';\n readonly text?: string;\n readonly sourceEventSeq?: SessionSeq;\n} | {\n readonly kind: \'error\';\n readonly text: string;\n};',
4693
4736
  },
4737
+ {
4738
+ name: 'CommandRunInput',
4739
+ declaration: 'export interface CommandRunInput {\n command: string;\n args: string;\n origin: PromptOrigin;\n}',
4740
+ },
4741
+ {
4742
+ name: 'CommandRunResult',
4743
+ declaration: 'export interface CommandRunResult {\n text?: string;\n}',
4744
+ },
4745
+ {
4746
+ name: 'CommandSpec',
4747
+ declaration: 'export interface CommandSpec {\n name: string;\n description: string;\n argumentHint?: string;\n immediate?: true;\n}',
4748
+ },
4694
4749
  {
4695
4750
  name: 'CommandSubmitAttachment',
4696
4751
  declaration: 'export type CommandSubmitAttachment = ({\n readonly type: \'image\';\n} & EncodedImageAttachment) | {\n readonly type: \'file\';\n readonly receiptId: string;\n};',
@@ -5247,6 +5302,30 @@ export const TYPE_API = [
5247
5302
  name: 'GrantRecord',
5248
5303
  declaration: 'export interface GrantRecord {\n readonly kind: \'grant\';\n readonly payload: unknown;\n}',
5249
5304
  },
5305
+ {
5306
+ name: 'HookBudget',
5307
+ declaration: 'export interface HookBudget {\n readonly ms: number;\n readonly remainingMs: number;\n}',
5308
+ },
5309
+ {
5310
+ name: 'HookFailure',
5311
+ declaration: 'export interface HookFailure {\n readonly kind: \'throw\' | \'timeout\';\n readonly message: string;\n}',
5312
+ },
5313
+ {
5314
+ name: 'HookMatcher',
5315
+ declaration: 'export type HookMatcher = Readonly<Record<string, MatcherValue>>;',
5316
+ },
5317
+ {
5318
+ name: 'HookNext',
5319
+ declaration: 'export interface HookNext<E, R> {\n (e: E): Promise<R>;\n readonly signal: AbortSignal;\n readonly origin: HookOrigin;\n readonly budget: HookBudget;\n to(e: E, tier: ModTier): Promise<R>;\n readonly error?: HookFailure;\n readonly called?: boolean;\n}',
5320
+ },
5321
+ {
5322
+ name: 'HookOrigin',
5323
+ declaration: 'export interface HookOrigin {\n readonly plugin: string;\n readonly tier: ModTier;\n}',
5324
+ },
5325
+ {
5326
+ name: 'HookRegistration',
5327
+ declaration: 'export interface HookRegistration {\n catch(handler: AnyHook): void;\n}',
5328
+ },
5250
5329
  {
5251
5330
  name: 'HostConnectionFetch',
5252
5331
  declaration: 'export interface HostConnectionFetch {\n register(route: ConnectionFetchRoute): () => Promise<void>;\n}',
@@ -5339,14 +5418,6 @@ export const TYPE_API = [
5339
5418
  name: 'InvalidTimeZoneError',
5340
5419
  declaration: 'export interface InvalidTimeZoneError {\n readonly code: \'invalid_time_zone\';\n readonly message: string;\n}',
5341
5420
  },
5342
- {
5343
- name: 'InvariantFailure',
5344
- declaration: 'export type InvariantFailure = (message: string) => never;',
5345
- },
5346
- {
5347
- name: 'InvariantInstaller',
5348
- declaration: 'export interface InvariantInstaller {\n (ctx: Context, fail: InvariantFailure): void | Promise<void>;\n readonly inject?: Inject;\n}',
5349
- },
5350
5421
  {
5351
5422
  name: 'InvocationDescriptor',
5352
5423
  declaration: 'export interface InvocationDescriptor {\n readonly id: string;\n readonly service: string;\n readonly namespace: string;\n readonly method: string;\n readonly implementation?: string;\n readonly mode?: \'stream\';\n readonly invocation: {\n readonly kind: \'direct\';\n } | {\n readonly kind: \'context\';\n readonly context: string;\n readonly wire: string;\n readonly codec: TypertCodec;\n };\n readonly scope?: {\n readonly context: string;\n readonly wire: string;\n };\n readonly parameters: readonly InvocationParameterDescriptor[];\n readonly uplink?: {\n readonly codec: TypertCodec;\n };\n readonly cancellation?: {\n readonly parameter: \'signal\';\n };\n readonly result: TypertCodec;\n readonly sourceLocation?: InvocationSourceLocation;\n}',
@@ -5627,6 +5698,10 @@ export const TYPE_API = [
5627
5698
  name: 'ManualCompactAgentContext',
5628
5699
  declaration: 'export interface ManualCompactAgentContext extends CompactionAgentContext {\n runMaintenance<T>(task: (signal: AbortSignal) => Promise<T>): Promise<T>;\n}',
5629
5700
  },
5701
+ {
5702
+ name: 'MatcherValue',
5703
+ declaration: 'export type MatcherValue = string | number | boolean | null | RegExp | readonly (string | number | boolean | null)[];',
5704
+ },
5630
5705
  {
5631
5706
  name: 'McpResourceProvider',
5632
5707
  declaration: 'export interface McpResourceProvider {\n request(request: McpResourceRequest, exec: ToolExecution): Promise<JsonValue>;\n}',
@@ -5727,6 +5802,10 @@ export const TYPE_API = [
5727
5802
  name: 'MessageSourceMap',
5728
5803
  declaration: 'export interface MessageSourceMap {\n user: {\n kind: \'user\';\n };\n model: ModelMessageSource;\n tool: ToolMessageSource;\n \'system-prompt\': SystemPromptMessageSource;\n}',
5729
5804
  },
5805
+ {
5806
+ name: 'ModDefinition',
5807
+ declaration: 'export interface ModDefinition {\n readonly name: string;\n readonly version?: string;\n readonly root?: string;\n readonly options?: PluginOptions;\n readonly register: ModRegister;\n}',
5808
+ },
5730
5809
  {
5731
5810
  name: 'ModelCatalog',
5732
5811
  declaration: 'export interface ModelCatalog {\n readonly default: ModelSelection;\n readonly routableProviders: readonly string[];\n readonly groups: readonly ModelProviderGroup[];\n readonly failures: readonly ModelCatalogFailure[];\n}',
@@ -5763,6 +5842,30 @@ export const TYPE_API = [
5763
5842
  name: 'ModelReasoningEffort',
5764
5843
  declaration: 'export interface ModelReasoningEffort {\n readonly id: string;\n readonly name: string;\n readonly description?: string;\n}',
5765
5844
  },
5845
+ {
5846
+ name: 'ModEvents',
5847
+ declaration: 'export interface ModEvents {\n \'session.start\': {\n input: SessionStartInput;\n result: SessionStartResult;\n };\n \'session.end\': {\n input: SessionEndInput;\n result: SessionEndResult;\n };\n \'prompt.submit\': {\n input: PromptSubmitInput;\n result: PromptSubmitResult;\n };\n \'turn.start\': {\n input: TurnStartInput;\n result: TurnStartResult;\n };\n \'turn.complete\': {\n input: TurnCompleteInput;\n result: TurnCompleteResult;\n };\n \'tool.call\': {\n input: ToolCallInput;\n result: ToolCallResult;\n };\n \'command.run\': {\n input: CommandRunInput;\n result: CommandRunResult;\n };\n \'ui.render\': {\n input: UiRenderInput;\n result: UiRenderResult;\n };\n}',
5848
+ },
5849
+ {
5850
+ name: 'ModHook',
5851
+ declaration: 'export type ModHook<E, R> = ($: ModsApi, e: E, next: HookNext<E, R>) => R | Promise<R>;',
5852
+ },
5853
+ {
5854
+ name: 'ModOn',
5855
+ declaration: 'export interface ModOn {\n <K extends keyof ModEvents>(event: K, hook: ModHook<ModEvents[K][\'input\'], ModEvents[K][\'result\']>): HookRegistration;\n <K extends keyof ModEvents>(event: K, matcher: HookMatcher, hook: ModHook<ModEvents[K][\'input\'], ModEvents[K][\'result\']>): HookRegistration;\n (event: string, hook: AnyHook): HookRegistration;\n (event: string, matcher: HookMatcher, hook: AnyHook): HookRegistration;\n}',
5856
+ },
5857
+ {
5858
+ name: 'ModRegister',
5859
+ declaration: 'export type ModRegister = (on: ModOn, options: PluginOptions) => unknown;',
5860
+ },
5861
+ {
5862
+ name: 'ModsApi',
5863
+ declaration: 'export interface ModsApi {\n readonly plugin: {\n readonly name: string;\n readonly root: string;\n };\n readonly ui: {\n log(text: string, options?: UiLogOptions): void;\n toast(text: string, options?: ToastOptions): void;\n status(text: string | undefined): void;\n invalidate(event: string): void;\n open(pane: PaneOpenArgs): Promise<PaneOpenResult>;\n close(pane: {\n id: string;\n }): Promise<void>;\n panes(): Promise<never[]>;\n ask(question: string, options?: readonly string[] | AskOptions): Promise<string>;\n resolve(e: UiRenderInput): UiElements;\n };\n readonly command: {\n register(command: CommandSpec): Promise<void>;\n run(input: {\n command: string;\n args?: string;\n }): Promise<CommandRunResult>;\n list(): Promise<CommandInfo[]>;\n };\n readonly tool: {\n register(tool: ToolSpec): Promise<void>;\n call(input: {\n tool: string;\n [argument: string]: unknown;\n }): Promise<ToolCallResult>;\n list(): Promise<ToolInfo[]>;\n };\n readonly prompt: {\n submit(input: PromptSubmitArgs): Promise<{\n text: string;\n }>;\n };\n readonly session: {\n id(): Promise<string>;\n cwd(): Promise<string>;\n root(): Promise<string>;\n model(): Promise<string>;\n turns(): Promise<number>;\n messages(): Promise<SessionMessage[]>;\n us /* …truncated — full shape in source */',
5864
+ },
5865
+ {
5866
+ name: 'ModTier',
5867
+ declaration: 'export type ModTier = \'prepend\' | \'user\' | \'append\' | \'builtin\' | \'core\';',
5868
+ },
5766
5869
  {
5767
5870
  name: 'NativeFileApplication',
5768
5871
  declaration: 'export interface NativeFileApplication {\n readonly id: string;\n readonly name: string;\n readonly default: boolean;\n readonly icon: string | null;\n}',
@@ -5831,6 +5934,14 @@ export const TYPE_API = [
5831
5934
  name: 'PackageResult',
5832
5935
  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}',
5833
5936
  },
5937
+ {
5938
+ name: 'PaneOpenArgs',
5939
+ 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}',
5940
+ },
5941
+ {
5942
+ name: 'PaneOpenResult',
5943
+ declaration: 'export interface PaneOpenResult {\n id: string;\n isPlaced: boolean;\n reason?: string;\n}',
5944
+ },
5834
5945
  {
5835
5946
  name: 'PeerAdmission',
5836
5947
  declaration: 'export type PeerAdmission = {\n readonly peer: PeerScope;\n} | {\n readonly rejection: 401 | 403;\n};',
@@ -5899,6 +6010,14 @@ export const TYPE_API = [
5899
6010
  name: 'PluginLocalizedMeta',
5900
6011
  declaration: 'export interface PluginLocalizedMeta {\n readonly title?: LocalizedText;\n readonly description?: LocalizedText;\n readonly icon?: string;\n readonly error?: string;\n}',
5901
6012
  },
6013
+ {
6014
+ name: 'PluginOptions',
6015
+ declaration: 'export type PluginOptions = Readonly<Record<string, PluginOptionValue>>;',
6016
+ },
6017
+ {
6018
+ name: 'PluginOptionValue',
6019
+ declaration: 'export type PluginOptionValue = string | number | boolean | readonly string[];',
6020
+ },
5902
6021
  {
5903
6022
  name: 'PluginRegistries',
5904
6023
  declaration: 'export interface PluginRegistries {\n readonly registry: Registry;\n readonly fallbackRegistries: readonly string[];\n readonly resolved: string | null;\n}',
@@ -6007,6 +6126,10 @@ export const TYPE_API = [
6007
6126
  name: 'PromptFileBinding',
6008
6127
  declaration: 'export interface PromptFileBinding extends Disposable {\n commit(): void;\n}',
6009
6128
  },
6129
+ {
6130
+ name: 'PromptOrigin',
6131
+ declaration: 'export type PromptOrigin = {\n kind: \'composer\';\n} | {\n kind: \'plugin\';\n name: string;\n};',
6132
+ },
6010
6133
  {
6011
6134
  name: 'PromptSection',
6012
6135
  declaration: 'export interface PromptSection {\n readonly name: string;\n readonly order: number;\n readonly text: string | ((context: AssembleContext) => string);\n readonly interpolate?: boolean;\n readonly complete?: boolean;\n}',
@@ -6015,6 +6138,18 @@ export const TYPE_API = [
6015
6138
  name: 'PromptSectionOrderName',
6016
6139
  declaration: 'export type PromptSectionOrderName = keyof typeof SECTION_ORDERS;',
6017
6140
  },
6141
+ {
6142
+ name: 'PromptSubmitArgs',
6143
+ declaration: 'export interface PromptSubmitArgs {\n text: string;\n asUser?: boolean;\n}',
6144
+ },
6145
+ {
6146
+ name: 'PromptSubmitInput',
6147
+ declaration: 'export interface PromptSubmitInput {\n text: string;\n context?: readonly string[];\n turnId?: string;\n wait: boolean;\n origin: PromptOrigin;\n}',
6148
+ },
6149
+ {
6150
+ name: 'PromptSubmitResult',
6151
+ declaration: 'export type PromptSubmitResult = {\n text: string;\n context?: readonly string[];\n drop?: undefined;\n} | {\n drop: string;\n text?: undefined;\n context?: undefined;\n};',
6152
+ },
6018
6153
  {
6019
6154
  name: 'ProviderRequestId',
6020
6155
  declaration: 'export type ProviderRequestId = Branded<\'ProviderRequestId\'>;',
@@ -6105,7 +6240,7 @@ export const TYPE_API = [
6105
6240
  },
6106
6241
  {
6107
6242
  name: 'Reload',
6108
- declaration: 'export interface Reload {\n filename: string;\n runtime?: Plugin.Runtime | undefined;\n}',
6243
+ declaration: 'export interface Reload {\n filename: string;\n modules: ReloadModules;\n runtime?: Plugin.Runtime | undefined;\n}',
6109
6244
  },
6110
6245
  {
6111
6246
  name: 'RemoteError',
@@ -6293,7 +6428,7 @@ export const TYPE_API = [
6293
6428
  },
6294
6429
  {
6295
6430
  name: 'ScheduleToolError',
6296
- declaration: 'export type ScheduleToolError = InvalidPromptError | InvalidSelectorError | InvalidRuleError | InvalidTimeZoneError | NotFutureError | TimeOutOfRangeError | FrequencyTooHighError | InternalScheduleError;',
6431
+ declaration: 'export type ScheduleToolError = InvalidPromptError | InvalidSelectorError | InvalidRuleError | InvalidTimeZoneError | NotFutureError | TimeOutOfRangeError | FrequencyTooHighError | SubagentSessionError | InternalScheduleError;',
6297
6432
  },
6298
6433
  {
6299
6434
  name: 'ScheduleUpdateContent',
@@ -6347,6 +6482,14 @@ export const TYPE_API = [
6347
6482
  name: 'SendTeamMessageResult',
6348
6483
  declaration: 'export interface SendTeamMessageResult {\n readonly messageId: TeamMessageId;\n readonly status: \'accepted\' | \'queued\';\n}',
6349
6484
  },
6485
+ {
6486
+ name: 'SerializedElement',
6487
+ declaration: 'export interface SerializedElement {\n readonly type: \'Box\' | \'Text\' | \'Button\';\n readonly props: Readonly<Record<string, string | number | boolean>>;\n readonly children: readonly SerializedNode[];\n readonly actionId?: string;\n}',
6488
+ },
6489
+ {
6490
+ name: 'SerializedNode',
6491
+ declaration: 'export type SerializedNode = SerializedElement | string;',
6492
+ },
6350
6493
  {
6351
6494
  name: 'ServerResponse',
6352
6495
  declaration: 'export interface ServerResponse {\n readonly type: \'server-response\';\n readonly rpcId: RpcId;\n readonly result: ConnectionRpcResult<unknown>;\n}',
@@ -6431,6 +6574,14 @@ export const TYPE_API = [
6431
6574
  name: 'SessionCreateValue',
6432
6575
  declaration: 'export interface SessionCreateValue {\n readonly sessionId: SessionId;\n readonly agentPreset?: string;\n}',
6433
6576
  },
6577
+ {
6578
+ name: 'SessionEndInput',
6579
+ declaration: 'export interface SessionEndInput {\n reason: \'clear\' | \'logout\' | \'prompt_input_exit\' | \'resume\' | \'other\';\n sessionId: string;\n}',
6580
+ },
6581
+ {
6582
+ name: 'SessionEndResult',
6583
+ declaration: 'export interface SessionEndResult {\n sessionId: string;\n}',
6584
+ },
6434
6585
  {
6435
6586
  name: 'SessionEvent',
6436
6587
  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];',
@@ -6607,6 +6758,10 @@ export const TYPE_API = [
6607
6758
  name: 'SessionLogSnapshot',
6608
6759
  declaration: 'export interface SessionLogSnapshot {\n session: SessionHeader;\n inheritedEventCount: SessionLogOffset;\n events: SessionEvent[];\n}',
6609
6760
  },
6761
+ {
6762
+ name: 'SessionMessage',
6763
+ declaration: 'export interface SessionMessage {\n role: \'user\' | \'assistant\';\n text: string;\n toolUses: ToolUseSummary[];\n}',
6764
+ },
6610
6765
  {
6611
6766
  name: 'SessionMessageProjection',
6612
6767
  declaration: 'export interface SessionMessageProjection<T extends SessionEventType = SessionEventType> {\n type: T;\n project(event: SessionEvent<T>, context: SessionMessageProjectionContext): ReadonlyMap<SessionSeq, Message>;\n}',
@@ -6787,6 +6942,14 @@ export const TYPE_API = [
6787
6942
  name: 'SessionSeqCursor',
6788
6943
  declaration: 'export type SessionSeqCursor = SessionSeq | -1;',
6789
6944
  },
6945
+ {
6946
+ name: 'SessionStartInput',
6947
+ declaration: 'export interface SessionStartInput {\n cwd: string;\n surface: string | null;\n isInteractive: boolean;\n}',
6948
+ },
6949
+ {
6950
+ name: 'SessionStartResult',
6951
+ declaration: 'export interface SessionStartResult {\n cwd: string;\n}',
6952
+ },
6790
6953
  {
6791
6954
  name: 'SessionStartSource',
6792
6955
  declaration: 'export type SessionStartSource = \'startup\' | \'resume\' | \'clear\' | \'compact\';',
@@ -6969,7 +7132,7 @@ export const TYPE_API = [
6969
7132
  },
6970
7133
  {
6971
7134
  name: 'SignInErrorCode',
6972
- declaration: 'export type SignInErrorCode = \'network\' | \'protocol\' | \'expired\' | \'storage\';',
7135
+ declaration: 'export type SignInErrorCode = \'no-response\' | \'network\' | \'protocol\' | \'expired\' | \'storage\';',
6973
7136
  },
6974
7137
  {
6975
7138
  name: 'SkillCandidate',
@@ -7227,6 +7390,10 @@ export const TYPE_API = [
7227
7390
  name: 'SubagentSendMessageOptions',
7228
7391
  declaration: 'export interface SubagentSendMessageOptions {\n readonly signal: AbortSignal;\n}',
7229
7392
  },
7393
+ {
7394
+ name: 'SubagentSessionError',
7395
+ declaration: 'export interface SubagentSessionError {\n readonly code: \'subagent_session\';\n readonly message: string;\n}',
7396
+ },
7230
7397
  {
7231
7398
  name: 'SubagentStartRequest',
7232
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}',
@@ -7319,6 +7486,10 @@ export const TYPE_API = [
7319
7486
  name: 'SurfaceOp',
7320
7487
  declaration: 'export type SurfaceOp = \'append\' | {\n op: \'replace\';\n startSeq: SessionSeq;\n endSeq: SessionSeq;\n};',
7321
7488
  },
7489
+ {
7490
+ name: 'SurfaceSnapshot',
7491
+ declaration: 'export interface SurfaceSnapshot {\n readonly generation: number;\n readonly tree: readonly SerializedNode[] | null;\n}',
7492
+ },
7322
7493
  {
7323
7494
  name: 'SystemMessage',
7324
7495
  declaration: 'export interface SystemMessage extends MessageBase {\n readonly role: \'system\';\n readonly source: MessageSourceMap[\'system-prompt\'];\n}',
@@ -7483,6 +7654,10 @@ export const TYPE_API = [
7483
7654
  name: 'TerminalWaitReason',
7484
7655
  declaration: 'export type TerminalWaitReason = \'stdin_read\' | \'inferred_idle\' | \'timeout\' | \'session_exit\';',
7485
7656
  },
7657
+ {
7658
+ name: 'TextProps',
7659
+ declaration: 'export interface TextProps {\n readonly color?: string | undefined;\n readonly bold?: boolean | undefined;\n readonly dimColor?: boolean | undefined;\n readonly italic?: boolean | undefined;\n readonly underline?: boolean | undefined;\n readonly children?: UiNode | undefined;\n}',
7660
+ },
7486
7661
  {
7487
7662
  name: 'TimedUserQuestionResult',
7488
7663
  declaration: 'export type TimedUserQuestionResult = AskUserQuestionAnswer | {\n pending: true;\n callId: ToolCallId;\n};',
@@ -7491,6 +7666,10 @@ export const TYPE_API = [
7491
7666
  name: 'TimeOutOfRangeError',
7492
7667
  declaration: 'export interface TimeOutOfRangeError {\n readonly code: \'time_out_of_range\';\n readonly message: string;\n}',
7493
7668
  },
7669
+ {
7670
+ name: 'ToastOptions',
7671
+ declaration: 'export interface ToastOptions {\n timeoutMs?: number;\n}',
7672
+ },
7494
7673
  {
7495
7674
  name: 'TokenMeasurement',
7496
7675
  declaration: 'export interface TokenMeasurement {\n readonly logRevision: SessionLogOffset;\n readonly baseline: TokenMeasurementBaseline;\n readonly surfaceDeltaTokens: number;\n readonly totalTokens: number;\n readonly surfaceTokens: number;\n readonly nodes: readonly TokenSurfaceNode[];\n}',
@@ -7519,10 +7698,18 @@ export const TYPE_API = [
7519
7698
  name: 'ToolCallId',
7520
7699
  declaration: 'export type ToolCallId = Branded<\'ToolCallId\'>;',
7521
7700
  },
7701
+ {
7702
+ name: 'ToolCallInput',
7703
+ declaration: 'export interface ToolCallInput {\n tool: string;\n tool_use_id: string;\n agentId?: string;\n [argument: string]: unknown;\n}',
7704
+ },
7522
7705
  {
7523
7706
  name: 'ToolCallKind',
7524
7707
  declaration: 'export type ToolCallKind = \'read\' | \'edit\' | \'delete\' | \'move\' | \'search\' | \'execute\' | \'fetch\' | \'other\';',
7525
7708
  },
7709
+ {
7710
+ name: 'ToolCallResult',
7711
+ declaration: 'export type ToolCallResult = {\n deny: string;\n result?: undefined;\n isError?: undefined;\n} | {\n result: unknown;\n isError?: true;\n deny?: undefined;\n};',
7712
+ },
7526
7713
  {
7527
7714
  name: 'ToolCallView',
7528
7715
  declaration: 'export type ToolCallView = GenericCallView | TerminalCallView | DiffCallView;',
@@ -7579,6 +7766,10 @@ export const TYPE_API = [
7579
7766
  name: 'ToolHistory',
7580
7767
  declaration: 'export interface ToolHistory {\n readonly tools: readonly ToolSchema[];\n readonly updates: readonly {\n readonly messageId: MessageId;\n readonly additions: readonly ToolSchema[];\n }[];\n}',
7581
7768
  },
7769
+ {
7770
+ name: 'ToolInfo',
7771
+ declaration: 'export interface ToolInfo {\n name: string;\n description: string;\n}',
7772
+ },
7582
7773
  {
7583
7774
  name: 'ToolMessageSource',
7584
7775
  declaration: 'export interface ToolMessageSource {\n kind: \'tool\';\n callId: ToolCallId;\n}',
@@ -7631,10 +7822,18 @@ export const TYPE_API = [
7631
7822
  name: 'ToolSchema',
7632
7823
  declaration: 'export interface ToolSchema {\n deferLoading?: true;\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n}',
7633
7824
  },
7825
+ {
7826
+ name: 'ToolSpec',
7827
+ declaration: 'export interface ToolSpec {\n name: string;\n description: string;\n inputSchema?: Record<string, unknown>;\n}',
7828
+ },
7634
7829
  {
7635
7830
  name: 'ToolUpdate',
7636
7831
  declaration: 'export type ToolUpdate = \'in-history\' | \'addition-only\';',
7637
7832
  },
7833
+ {
7834
+ name: 'ToolUseSummary',
7835
+ declaration: 'export interface ToolUseSummary {\n tool_use_id: string;\n tool: string;\n input: Record<string, unknown>;\n}',
7836
+ },
7638
7837
  {
7639
7838
  name: 'Transcript',
7640
7839
  declaration: 'export interface Transcript {\n readonly text: string;\n readonly audioSeconds: number;\n readonly inferenceSeconds: number;\n}',
@@ -7643,6 +7842,14 @@ export const TYPE_API = [
7643
7842
  name: 'TranscriptionRequest',
7644
7843
  declaration: 'export interface TranscriptionRequest {\n readonly audioBase64: string;\n readonly providerId?: SpeechProviderId;\n readonly language?: string;\n}',
7645
7844
  },
7845
+ {
7846
+ name: 'TurnCompleteInput',
7847
+ 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}',
7848
+ },
7849
+ {
7850
+ name: 'TurnCompleteResult',
7851
+ declaration: 'export interface TurnCompleteResult {\n text: string;\n}',
7852
+ },
7646
7853
  {
7647
7854
  name: 'TurnEndCancelCause',
7648
7855
  declaration: 'export type TurnEndCancelCause = AgentCancelCause | {\n readonly kind: \'legacy\';\n};',
@@ -7655,6 +7862,18 @@ export const TYPE_API = [
7655
7862
  name: 'TurnEndReasonMap',
7656
7863
  declaration: 'export interface TurnEndReasonMap {\n completed: {\n kind: \'completed\';\n };\n aborted: {\n kind: \'aborted\';\n reason: TurnEndCancelCause;\n };\n blocked: {\n kind: \'blocked\';\n };\n error: {\n kind: \'error\';\n error: LlmFailure;\n };\n \'max-tokens\': {\n kind: \'max-tokens\';\n };\n interrupted: {\n kind: \'interrupted\';\n };\n forked: {\n kind: \'forked\';\n };\n}',
7657
7864
  },
7865
+ {
7866
+ name: 'TurnStartInput',
7867
+ declaration: 'export interface TurnStartInput {\n text: string;\n turnId: string;\n agentId?: string;\n}',
7868
+ },
7869
+ {
7870
+ name: 'TurnStartResult',
7871
+ declaration: 'export interface TurnStartResult {\n turnId: string;\n}',
7872
+ },
7873
+ {
7874
+ name: 'TurnUsage',
7875
+ declaration: 'export interface TurnUsage {\n input_tokens: number;\n output_tokens: number;\n cache_read_input_tokens: number;\n cache_creation_input_tokens: number;\n model: string;\n}',
7876
+ },
7658
7877
  {
7659
7878
  name: 'TypertCodec',
7660
7879
  declaration: 'export type TypertCodec = {\n readonly mode: \'strict\';\n readonly typeSymbol: string;\n readonly create: () => TypertSchema;\n readonly decode?: (value: unknown) => unknown;\n readonly encode?: (value: unknown, writeBytes: (bytes: Uint8Array, path: readonly (string | number)[]) => null) => unknown;\n} | {\n readonly mode: \'src-json\';\n};',
@@ -7759,6 +7978,30 @@ export const TYPE_API = [
7759
7978
  name: 'TypertTypeModel',
7760
7979
  declaration: 'export interface TypertTypeModel {\n readonly name: string;\n readonly declaration: string;\n}',
7761
7980
  },
7981
+ {
7982
+ name: 'UiElement',
7983
+ declaration: 'export interface UiElement {\n readonly type: \'Box\' | \'Text\' | \'Button\';\n readonly props: Readonly<Record<string, unknown>>;\n}',
7984
+ },
7985
+ {
7986
+ name: 'UiElements',
7987
+ declaration: 'export interface UiElements {\n readonly Box: (props: BoxProps) => UiElement;\n readonly Text: (props: TextProps) => UiElement;\n readonly Button: (props: ButtonProps) => UiElement;\n}',
7988
+ },
7989
+ {
7990
+ name: 'UiLogOptions',
7991
+ declaration: 'export interface UiLogOptions {\n to?: \'transcript\' | \'debug\';\n}',
7992
+ },
7993
+ {
7994
+ name: 'UiNode',
7995
+ declaration: 'export type UiNode = UiElement | string | number | null | undefined | false | readonly UiNode[];',
7996
+ },
7997
+ {
7998
+ name: 'UiRenderInput',
7999
+ declaration: 'export interface UiRenderInput {\n component: \'AbovePrompt\' | \'Pane\';\n surface: string;\n requestId?: string;\n props: Readonly<Record<string, unknown>>;\n viewport: {\n readonly columns: number;\n readonly rows?: number;\n };\n}',
8000
+ },
8001
+ {
8002
+ name: 'UiRenderResult',
8003
+ declaration: 'export type UiRenderResult = UiNode;',
8004
+ },
7762
8005
  {
7763
8006
  name: 'UpdateTeamTaskRequest',
7764
8007
  declaration: 'export interface UpdateTeamTaskRequest {\n readonly taskId: TeamTaskId;\n readonly expectedRevision: number;\n readonly action: TeamTaskAction;\n readonly subject?: string;\n readonly description?: string;\n readonly blockedBy?: readonly TeamTaskId[];\n readonly writeScopes?: readonly string[];\n readonly owner?: string;\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.0-rc.2",
4
+ "version": "0.2.1-alpha.1",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -32,22 +32,22 @@
32
32
  ],
33
33
  "license": "MIT",
34
34
  "peerDependencies": {
35
- "@deepseek-ai/cordis-plugin-loader": "~1.0.5",
36
- "@deepseek-ai/dsh-agent": "0.2.0-rc.2",
37
- "@deepseek-ai/cordis": "~4.0.4",
38
- "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2",
39
- "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2",
40
- "@deepseek-ai/dsh-tools": "0.2.0-rc.2"
35
+ "@deepseek-ai/cordis": "~4.0.5-alpha.1",
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"
41
41
  },
42
42
  "devDependencies": {
43
- "@deepseek-ai/cordis": "~4.0.4",
44
- "@deepseek-ai/cordis-plugin-group": "~1.0.4",
45
- "@deepseek-ai/dsh-agent": "0.2.0-rc.2",
46
- "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2",
47
- "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2",
48
- "@deepseek-ai/cordis-plugin-loader": "~1.0.5",
49
- "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2",
50
- "@deepseek-ai/dsh-tools": "0.2.0-rc.2",
51
- "@deepseek-ai/schemastery": "~3.18.4"
43
+ "@deepseek-ai/cordis": "~4.0.5-alpha.1",
44
+ "@deepseek-ai/cordis-plugin-group": "~1.0.5-alpha.1",
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",
51
+ "@deepseek-ai/schemastery": "~3.18.5-alpha.1"
52
52
  }
53
53
  }