@deepseek-ai/dsh-tool-cordis 0.1.7-alpha.2 → 0.1.7-rc.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
@@ -1,6 +1,46 @@
1
- # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
2
- # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
- # after editing either side, bring the other along and re-record with:
1
+ # Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading
2
+ # section, a hash of its English and Chinese blocks outside code blocks and generated regions.
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: 23e2d4a3d047c1442769e07be045f7da4a24a783
6
- README.zh.md: da855b7b1d4b4287a1f8d3a5ea7a1fb0c9407f2f
5
+ /:
6
+ en: 784a82be07311e99
7
+ zh: 85d917ecc6386ec9
8
+ /deepseek-ai-dsh-tool-cordis:
9
+ en: ea2c0ac7e7932a08
10
+ zh: 5562e6f26d700b64
11
+ /deepseek-ai-dsh-tool-cordis/summary:
12
+ en: 245a3cd287214bed
13
+ zh: 8687666c28a676cf
14
+ /deepseek-ai-dsh-tool-cordis/table-of-contents:
15
+ en: d152484eb41ac6b4
16
+ zh: 3a2f21ff0dc3420d
17
+ /deepseek-ai-dsh-tool-cordis/use-this-package:
18
+ en: e8c90b0ad037513c
19
+ zh: 563454508c30d9b0
20
+ /deepseek-ai-dsh-tool-cordis/understand-the-implementation:
21
+ en: de18fe3471a4a341
22
+ zh: fda07860cfe1e325
23
+ /deepseek-ai-dsh-tool-cordis/further-exploration:
24
+ en: 1863373f02bcc196
25
+ zh: 3efdbf5569411562
26
+ /deepseek-ai-dsh-tool-cordis/model-experience:
27
+ en: 215e7ba838619b7b
28
+ zh: a311da3843709f90
29
+ /deepseek-ai-dsh-tool-cordis/model-experience/runtime-inspection:
30
+ en: 72ffb7cae674c31a
31
+ zh: 85674f298a78592a
32
+ /deepseek-ai-dsh-tool-cordis/model-experience/runtime-inspection/what-the-model-sees:
33
+ en: 197fabc06c289f6e
34
+ zh: e7f1695ee2118ed6
35
+ /deepseek-ai-dsh-tool-cordis/model-experience/runtime-inspection/token-effect:
36
+ en: 5d9791798f8ce57f
37
+ zh: b47984cc13e12cfd
38
+ /deepseek-ai-dsh-tool-cordis/model-experience/runtime-inspection/kv-cache-effect:
39
+ en: f57a20cd4e76d13c
40
+ zh: 7b673116422bee87
41
+ /deepseek-ai-dsh-tool-cordis/known-limitations-and-deferred-work:
42
+ en: ffe15dd1fd333dbf
43
+ zh: b256afc74a1782cb
44
+ /deepseek-ai-dsh-tool-cordis/known-limitations-and-deferred-work/dev-note:
45
+ en: 0a1253c6f7b5e8b9
46
+ zh: 9f56528562c7c914
@@ -26,7 +26,7 @@ export const SERVICE_API = [
26
26
  },
27
27
  {
28
28
  signature: 'async saveSelection(next: ModelSelection): Promise<void>',
29
- description: 'Save the complete default model selection. A deployment without a configuration editor keeps its composition entry.',
29
+ description: 'Save the complete default model selection. A deployment without a configuration editor keeps its composition entry. Saves commit in submission order; a failed save rejects its caller without blocking later saves.',
30
30
  parameters: [{ name: 'next', description: 'resolved selection accepted by an entry point.' }],
31
31
  returns: 'fulfillment after the optional profile write settles.',
32
32
  },
@@ -81,9 +81,9 @@ export const SERVICE_API = [
81
81
  },
82
82
  {
83
83
  signature: '@Remote(\'list\') async remoteExportList(): Promise<AgentPresetRoster>',
84
- description: 'Read the selection roster and chooser policy.',
84
+ description: 'Read the selection roster.',
85
85
  parameters: [],
86
- returns: 'Current presets, default and chooser policy.',
86
+ returns: 'Current presets, each marked when it is the default.',
87
87
  },
88
88
  {
89
89
  signature: 'async resolve(id?: string): Promise<AgentPreset>',
@@ -91,6 +91,12 @@ export const SERVICE_API = [
91
91
  parameters: [{ name: 'id', description: 'Explicit preset or the current default.' }],
92
92
  returns: 'Current metadata, including failure when activation failed.',
93
93
  },
94
+ {
95
+ signature: '@Remote(\'read\') readDocument(agentPreset: string): Promise<AgentPresetDocument>',
96
+ description: 'Read one declaration\'s child plugin list as YAML, for viewing only.',
97
+ parameters: [{ name: 'agentPreset', description: 'Preset identity.' }],
98
+ returns: 'The declared composition beside its published metadata.',
99
+ },
94
100
  {
95
101
  signature: 'async mount(ctx: Context, id?: string): Promise<AgentPreset>',
96
102
  description: 'Bind an unpublished Agent to the current preset revision.',
@@ -308,12 +314,6 @@ export const SERVICE_API = [
308
314
  parameters: [{ name: 'agent', description: 'candidate exact live Agent.' }],
309
315
  returns: 'Team membership, or undefined for non-Team subagents and stale identities.',
310
316
  },
311
- {
312
- signature: '@Remote(\'view\') remoteView(agent: Agent): TeamView',
313
- description: 'Read the current roster and non-deleted task board through the generated Remote API.',
314
- parameters: [{ name: 'agent', description: 'exact live Team member used as the authority credential.' }],
315
- returns: 'detached current roster and task views.',
316
- },
317
317
  ],
318
318
  },
319
319
  {
@@ -786,21 +786,33 @@ export const SERVICE_API = [
786
786
  returns: 'a snapshot without credentials or PKCE secrets.',
787
787
  },
788
788
  {
789
- signature: 'abstract getProfile(): Promise<AccountDetails[\'profile\'] | null>',
790
- description: 'Query Platform profile independently of wallet balances.',
791
- parameters: [],
789
+ signature: 'abstract getProfile(client: AccountClientMetadata): Promise<AccountDetails[\'profile\'] | null>',
790
+ description: 'Query Platform profile independently of wallet balances. A ready result whose stable profile ID first becomes available or changes notifies watch consumers, so identity consumers re-read getPlatformSession; repeated IDs stay silent.',
791
+ parameters: [{ name: 'client', description: 'identity of the requesting UI for this call.' }],
792
792
  returns: 'profile outcome, or null if signed out or the grant changed during the query.',
793
793
  },
794
794
  {
795
- signature: 'abstract getBalance(): Promise<AccountDetails[\'balance\'] | null>',
795
+ signature: 'abstract getBalance(client: AccountClientMetadata): Promise<AccountDetails[\'balance\'] | null>',
796
796
  description: 'Query Platform recharge and bonus wallet balances independently of profile data.',
797
- parameters: [],
797
+ parameters: [{ name: 'client', description: 'identity of the requesting UI for this call.' }],
798
798
  returns: 'balance outcome, or null if signed out or the grant changed during the query.',
799
799
  },
800
800
  {
801
- signature: 'abstract startSignIn(locale: string, callbackOrigin: string, loginSource: \'web\' | \'desktop\'): Promise<AccountView>',
801
+ signature: 'abstract getUnnotifiedBonuses(client: AccountClientMetadata): Promise<AccountBonusBatch | null>',
802
+ description: 'Query the granted bonuses Platform has not yet recorded as displayed.',
803
+ parameters: [{ name: 'client', description: 'identity of the requesting UI for this call; its language selects the server-authored message.' }],
804
+ returns: 'bonuses with their account, or null if signed out or the grant changed during the query.',
805
+ },
806
+ {
807
+ signature: 'abstract ackBonusNotified(accountId: AccountUserId, orderId: AccountBonusOrderId, client: AccountClientMetadata): Promise<boolean>',
808
+ description: 'Record one displayed bonus as notified for the account it belongs to.',
809
+ parameters: [{ name: 'accountId', description: 'account the notification was read for; a different current account is never acknowledged.' }, { name: 'orderId', description: 'granted bonus order the user saw.' }, { name: 'client', description: 'identity of the requesting UI for this call.' }],
810
+ returns: 'true once Platform records the acknowledgement; false if signed out or the account changed.',
811
+ },
812
+ {
813
+ signature: 'abstract startSignIn(client: AccountClientMetadata, callbackOrigin: string, loginSource: \'web\' | \'desktop\'): Promise<AccountView>',
802
814
  description: 'Join an active attempt or start browser authorization.',
803
- parameters: [{ name: 'locale', description: 'active UI language for a new attempt; joining retains its original language.' }, { name: 'callbackOrigin', description: 'browser-accessible loopback HTTP origin, including any SSH local port.' }, { name: 'loginSource', description: 'initiating UI, used to return from a failed exchange.' }],
815
+ parameters: [{ name: 'client', description: 'identity of the requesting UI; a new attempt captures it, and joining retains the original attempt\'s identity.' }, { name: 'callbackOrigin', description: 'browser-accessible loopback HTTP origin, including any SSH local port.' }, { name: 'loginSource', description: 'initiating UI, used to return from a failed exchange.' }],
804
816
  returns: 'the initial snapshot without waiting for browser approval.',
805
817
  },
806
818
  {
@@ -810,9 +822,9 @@ export const SERVICE_API = [
810
822
  returns: 'state after cancellation or an already-started commit.',
811
823
  },
812
824
  {
813
- signature: 'abstract signOut(): Promise<AccountView>',
814
- description: 'Remove the local grant while retaining API keys and tasks; the provider revokes it in the background.',
815
- parameters: [],
825
+ signature: 'abstract signOut(client: AccountClientMetadata): Promise<AccountView>',
826
+ description: 'Remove the local grant while retaining API keys; the provider revokes it in the background.',
827
+ parameters: [{ name: 'client', description: 'identity of the requesting UI, captured for the background revocation retries.' }],
816
828
  returns: 'the signed-out state after local removal; remote failures never restore the grant.',
817
829
  },
818
830
  {
@@ -827,11 +839,17 @@ export const SERVICE_API = [
827
839
  parameters: [{ name: 'url', description: 'actual request destination or API base URL.' }],
828
840
  returns: 'stored token, or undefined for other origins or a signed-out account.',
829
841
  },
842
+ {
843
+ signature: 'abstract rejectToken(token: string): Promise<void>',
844
+ description: 'Remove an inference-rejected token only while it still matches the stored login.',
845
+ parameters: [{ name: 'token', description: 'token captured by the rejected inference request.' }],
846
+ returns: 'after matching credentials are removed and the expiry notification is emitted.',
847
+ },
830
848
  {
831
849
  signature: 'abstract getPlatformSession(): Promise<PlatformSession | null>',
832
- description: 'Read credentials for the configured Platform origin, bound to their issuing environment.',
850
+ description: 'Read credentials for the configured Platform origin, bound to their issuing environment, and pair them with the account ID from the last successful profile read; no profile request is made.',
833
851
  parameters: [],
834
- returns: 'a Host-only snapshot, or null while signed out.',
852
+ returns: 'a Host-only snapshot, or null while signed out or when the credential changed during the read.',
835
853
  },
836
854
  ],
837
855
  },
@@ -1337,7 +1355,7 @@ export const SERVICE_API = [
1337
1355
  },
1338
1356
  {
1339
1357
  signature: 'async listModels(provider: string): Promise<LlmModelInfo[]>',
1340
- description: 'Discover models advertised by one registered provider. Catalog membership is advisory and never changes routing or request validation.',
1358
+ description: 'Discover models advertised by one registered provider. Catalog membership does not constrain core routing. Catalog-driven entry points may restrict selection and submission to the advertised models.',
1341
1359
  parameters: [{ name: 'provider', description: 'registered provider route to inspect.' }],
1342
1360
  returns: 'detached model metadata in adapter-preferred order.',
1343
1361
  },
@@ -1474,7 +1492,7 @@ export const SERVICE_API = [
1474
1492
  },
1475
1493
  {
1476
1494
  signature: 'current(session: Session): string',
1477
- description: 'Resolve the preset matching the effective knob values. A still-matching last selection wins shared-bundle ties; otherwise the first configured match wins. Returns CUSTOM_PRESET when no available preset matches.',
1495
+ description: 'Resolve the preset matching the effective knob values. A still-matching last selection wins shared-bundle ties, and a still-selected Auto also matches the `never` approval policy; otherwise the first configured match wins. Returns CUSTOM_PRESET when no available preset matches.',
1478
1496
  parameters: [{ name: 'session', description: 'the session whose knob state is read.' }],
1479
1497
  returns: 'the effective preset name, or `custom` when nothing matches.',
1480
1498
  },
@@ -1523,6 +1541,18 @@ export const SERVICE_API = [
1523
1541
  summary: 'Manage profile files and apply their declared reload lifecycle.',
1524
1542
  description: 'Manage profile files and apply their declared reload lifecycle.',
1525
1543
  methods: [
1544
+ {
1545
+ signature: '@Remote listVersionExemptions(): { exemptions: Record<string, string[]>; warnings: string[] }',
1546
+ description: 'Read exact plugin-version exemptions saved in this profile.',
1547
+ parameters: [],
1548
+ returns: 'Accepted package-name@version keys with the runtime versions they may run on, and any record or file problem the reader rejected, which the caller reports instead of failing.',
1549
+ },
1550
+ {
1551
+ signature: '@Remote setVersionExemption(packageVersion: string, runtimeVersion: string, enabled: boolean, acceptRisk?: boolean): Promise<ChangeResult>',
1552
+ description: 'Grant or revoke one exact plugin/runtime exemption and reevaluate live plugins.',
1553
+ parameters: [{ name: 'packageVersion', description: 'Exact manifest package name followed by @ and its version; never an installation spec or alias.' }, { name: 'runtimeVersion', description: 'Exact current DSH version for grants; revocation may name a previous runtime.' }, { name: 'enabled', description: 'Whether to grant rather than revoke the exemption.' }, { name: 'acceptRisk', description: 'Required true for grants after the user accepts possible crashes and data loss.' }],
1554
+ returns: 'Saved and runtime outcomes. Startup-only profiles require restart.',
1555
+ },
1526
1556
  {
1527
1557
  signature: '@Remote async listPlugins(): Promise<PluginInfo[]>',
1528
1558
  description: 'Read current plugins, including why a row cannot be changed through the profile patch.',
@@ -1561,7 +1591,7 @@ export const SERVICE_API = [
1561
1591
  },
1562
1592
  {
1563
1593
  signature: '@Remote installBundle(spec: string, options?: InstallBundleOptions): Promise<ChangeResult>',
1564
- description: 'Install a package using the same pnpm implementation as dsh plugin. A run that fails, is cancelled, or adds a package without a bundle patch restores `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.',
1594
+ description: 'Install a package using the same pnpm implementation as dsh plugin. GitHub repositories get a connection check bounded by githubConnectionTimeoutMs before pnpm starts; only network failures or timeouts stop installation, while pnpm owns authentication and transport fallback. A run that fails, is cancelled, or adds a package without a bundle patch restores `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.',
1565
1595
  parameters: [{ name: 'spec', description: 'One package spec, including local paths relative to the invocation directory.' }, { name: 'options', description: 'Whether to activate the installed bundle (defaults to true), the request id a cancellation names, the pending build scripts to allow for this profile before pnpm runs, and the registry asked first.' }],
1566
1596
  returns: 'Package-manager diagnostics, the registries asked, and the observed activation outcome.',
1567
1597
  },
@@ -1575,7 +1605,7 @@ export const SERVICE_API = [
1575
1605
  signature: '@Remote async cancelInstall(requestId: PluginInstallRequestId): Promise<PluginInstallCancellation>',
1576
1606
  description: 'Stop an installation this manager owns and wait until its files are back.',
1577
1607
  parameters: [{ name: 'requestId', description: 'The id the installation was started with.' }],
1578
- returns: '`cancelled` once pnpm exited and the files are restored, `too-late` once the bundle is being applied, `not-running` for any other id.',
1608
+ returns: '`cancelled` once the Git check or pnpm exited and the files are restored, `too-late` once the bundle is being applied, `not-running` for any other id.',
1579
1609
  },
1580
1610
  {
1581
1611
  signature: '@Remote removeBundle(name: string): Promise<ChangeResult>',
@@ -1710,6 +1740,50 @@ export const SERVICE_API = [
1710
1740
  },
1711
1741
  ],
1712
1742
  },
1743
+ {
1744
+ key: 'schedule',
1745
+ summary: 'Shared management service; reads, deletion, and timing edits never activate a Session.',
1746
+ description: 'Shared management service; reads, deletion, and timing edits never activate a Session.\n\n`sessionPersistence` is a load-order requirement rather than a directly called service: a delivery commits only when `ctx.sessions.flush()` reports that a `session/flush` listener participated, and the persistence backend providing this service is the plugin that registers that listener.',
1747
+ methods: [
1748
+ {
1749
+ signature: 'async create(sessionId: SessionId, request: ScheduleCreateRequest, signal?: AbortSignal): Promise<ScheduleRecord>',
1750
+ 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.',
1751
+ 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.' }],
1752
+ returns: 'The durably stored schedule. Cancellation does not roll back an in-flight write.',
1753
+ },
1754
+ {
1755
+ signature: '@Remote(\'list\') async list(request: ScheduleListRequest): Promise<ScheduleRecord[]>',
1756
+ description: 'Read the selected Session\'s active tasks without resuming its Agent.',
1757
+ parameters: [{ name: 'request', description: 'Session whose task list is requested.' }],
1758
+ returns: 'Persisted reminders in storage order.',
1759
+ },
1760
+ {
1761
+ signature: '@Remote(\'catalog\') async catalog(): Promise<ScheduleCatalogEntry[]>',
1762
+ description: 'Read all active and inactive Host reminders with their original Session bindings. A deleted reminder has no row, so it is absent here. Does not activate Sessions or read Session history.',
1763
+ parameters: [],
1764
+ returns: 'Reminders ordered by scheduledAt ascending, then lexicographically by id.',
1765
+ },
1766
+ {
1767
+ signature: '@Remote(\'history\') async history(request: ScheduleDeliveryHistoryRequest): Promise<ScheduleDeliveryHistoryResult>',
1768
+ description: 'Read saved inbox deliveries without activating or reading the original Session. The task\'s own row supplies its binding, so its records stay readable through this lookup.',
1769
+ parameters: [{ name: 'request', description: 'Session binding, task identity, explicit limit, and optional exclusive message cursor.' }],
1770
+ returns: 'Newest-first deliveries in append order, or a task/cursor lookup failure.',
1771
+ throws: ['ScheduleInputError when limit is not a safe integer from 1 through 100.'],
1772
+ },
1773
+ {
1774
+ signature: '@Remote(\'delete\') async delete(request: ScheduleDeleteRequest, signal?: AbortSignal): Promise<ScheduleDeleteResult>',
1775
+ 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.',
1776
+ parameters: [{ name: 'request', description: 'Session and exact task identity.' }, { name: 'signal', description: 'Optional cancellation checked before persistence begins, including after FIFO waits.' }],
1777
+ returns: 'Whether that Session owned a deleted task. Cancellation does not roll back an in-flight write.',
1778
+ },
1779
+ {
1780
+ signature: '@Remote(\'update\') async update(request: ScheduleUpdateRequest, signal?: AbortSignal): Promise<ScheduleUpdateResult>',
1781
+ 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.',
1782
+ 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.' }],
1783
+ 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.',
1784
+ },
1785
+ ],
1786
+ },
1713
1787
  {
1714
1788
  key: 'sessionController',
1715
1789
  summary: 'Host service backing the generated `ctx.remote.session` namespace.',
@@ -1747,9 +1821,15 @@ export const SERVICE_API = [
1747
1821
  },
1748
1822
  {
1749
1823
  signature: '@Remote(\'selectModel\') selectModel(request: SessionSelectModelRequest): Promise<SessionSelectModelValue>',
1750
- description: 'Select one Session-local model after explicitly resuming the Session.',
1824
+ description: 'Select one Session-local model after explicitly resuming the Session; save the default in the background.',
1751
1825
  parameters: [{ name: 'request', description: 'Session identity and requested model selection.' }],
1752
- returns: 'the normalized selection installed for the Session.',
1826
+ returns: 'the normalized selection installed for the Session, without waiting for default persistence.',
1827
+ },
1828
+ {
1829
+ signature: '@Remote async initializeDefaultModel(): Promise<void>',
1830
+ description: 'Select the first available account model after login when no provider API key is configured.',
1831
+ parameters: [],
1832
+ returns: 'after saving the first available model or retaining the existing default.',
1753
1833
  },
1754
1834
  {
1755
1835
  signature: '@Remote(\'modelCatalog\') modelCatalog(): Promise<ModelCatalog>',
@@ -2481,9 +2561,9 @@ export const SERVICE_API = [
2481
2561
  returns: 'after preferences are saved.',
2482
2562
  },
2483
2563
  {
2484
- signature: '@Remote prepare(providerId: SpeechProviderId): void',
2564
+ signature: '@Remote prepare(providerId: SpeechProviderId, options?: SpeechPreparationOptions): void',
2485
2565
  description: 'Start or join one Host-owned preparation task.',
2486
- parameters: [{ name: 'providerId', description: 'selected recognizer.' }],
2566
+ parameters: [{ name: 'providerId', description: 'selected recognizer.' }, { name: 'options', description: 'task-local source selection validated by the provider.' }],
2487
2567
  },
2488
2568
  {
2489
2569
  signature: '@Remote cancelPreparation(providerId: SpeechProviderId): Promise<void>',
@@ -2535,9 +2615,9 @@ export const SERVICE_API = [
2535
2615
  returns: 'after the profile write and the live update it applies.',
2536
2616
  },
2537
2617
  {
2538
- signature: 'prepare(id: SpeechProviderId): void',
2618
+ signature: 'prepare(id: SpeechProviderId, options?: SpeechPreparationOptions): void',
2539
2619
  description: 'Start or join provider-owned preparation.',
2540
- parameters: [{ name: 'id', description: 'exact registered provider identity.' }],
2620
+ parameters: [{ name: 'id', description: 'exact registered provider identity.' }, { name: 'options', description: 'task-local source selection validated by the provider.' }],
2541
2621
  },
2542
2622
  {
2543
2623
  signature: 'async cancelPreparation(id: SpeechProviderId): Promise<void>',
@@ -2717,10 +2797,10 @@ export const SERVICE_API = [
2717
2797
  },
2718
2798
  {
2719
2799
  signature: 'listDescendants(rootSessionId: SessionId, signal?: AbortSignal): Promise<SubagentDescendantListEntry[]>',
2720
- description: 'Enumerate the root\'s complete session-backed subagent tree in stable pre-order from one live-preferred corpus, without loading or resuming an Agent. Ordinary sessions and one-shot children remain traversal nodes so continuable descendants below them are discovered; each returned entry adds its durable `parentId` and root-relative `depth`. Identity resolution, diagnostics, optional persistence, and cancellation use the registered child identity projection and complete Session corpus.',
2721
- parameters: [{ name: 'rootSessionId', description: 'session whose complete descendant tree is listed.' }, { name: 'signal', description: 'caller-owned cancellation forwarded to persistence reads and observed around every read await.' }],
2722
- returns: 'children and per-candidate diagnostics with tree position, in stable pre-order.',
2723
- throws: ['{@link SubagentError} when listing dependencies are unavailable or the caller cancels.'],
2800
+ description: 'Recursively list reachable parent catalogs in stable pre-order, preserving each catalog\'s event order. Each row carries its catalog parent and depth; one-shot and unknown-mode children remain traversal nodes. Unknown modes produce unsupported diagnostics. Unreadable child catalogs produce corrupt or unavailable diagnostics and stop only that branch. Root read failures, missing services or projections, and cancellation reject the whole listing. Each catalog is observed once and released before the next read. No Agent is loaded or resumed; Sessions absent from reachable catalogs are omitted.',
2801
+ parameters: [{ name: 'rootSessionId', description: 'session whose catalog starts descendant discovery.' }, { name: 'signal', description: 'cancellation forwarded to and checked around each catalog read.' }],
2802
+ returns: 'children and branch diagnostics in parent-catalog pre-order.',
2803
+ throws: ['{@link SubagentError} when listing dependencies are unavailable or the caller cancels.', 'SessionQueryError when the root catalog cannot be read.'],
2724
2804
  },
2725
2805
  {
2726
2806
  signature: '@Remote(\'prompt\') async prompt(request: SubagentPromptRequest, signal: AbortSignal): Promise<SubagentPromptReceipt>',
@@ -3357,9 +3437,9 @@ export const SERVICE_API = [
3357
3437
  returns: 'the Workspace and whether this call created it.',
3358
3438
  },
3359
3439
  {
3360
- signature: '@Remote(\'initializeDefault\') async initializeDefault(request: WorkspaceInitializeDefaultRequest, signal: AbortSignal): Promise<WorkspaceValue | undefined>',
3361
- description: 'Initialize or reuse the default Workspace during first-use startup.',
3362
- parameters: [{ name: 'request', description: 'initial directory name and title; never rename an existing default.' }, { name: 'signal', description: 'caller lifetime; cancels native directory lookup.' }],
3440
+ signature: '@Remote(\'initializeDefault\') async initializeDefault(signal: AbortSignal): Promise<WorkspaceValue | undefined>',
3441
+ description: 'Initialize or reuse the default Workspace during first-use startup. The directory name is fixed, so the Host never renames or relocates an existing default; its initial title is that same name, which browser consumers label in the reader\'s language.',
3442
+ parameters: [{ name: 'signal', description: 'caller lifetime; cancels native directory lookup.' }],
3363
3443
  returns: 'the durable Workspace, or undefined when first-use initialization is ineligible; creates no Session or message.',
3364
3444
  },
3365
3445
  {
@@ -3468,9 +3548,9 @@ export const SERVICE_API = [
3468
3548
  returns: 'the existing or newly durable workspace.',
3469
3549
  },
3470
3550
  {
3471
- signature: 'initializeDefault(resolveDirectory: () => Promise<{ path: string; title: string }>): Promise<Workspace | undefined>',
3551
+ signature: 'initializeDefault(resolveDirectory: () => Promise<string>): Promise<Workspace | undefined>',
3472
3552
  description: 'Initialize the default Workspace only while both the registry and Session history are empty. Repeated requests reuse its durable identity; deleting that registration permanently disables automatic creation.',
3473
- parameters: [{ name: 'resolveDirectory', description: 'resolve the absolute directory and initial title; called only for eligible creation, inside the registry mutation queue. Missing directories are created recursively before registration. After resolution, caller cancellation does not roll back creation or registration.' }],
3553
+ parameters: [{ name: 'resolveDirectory', description: 'resolve the absolute directory; called only for eligible creation, inside the registry mutation queue. Missing directories are created recursively before registration, and the initial title is the requested directory\'s own final segment — not the canonical one, so a symlink at that path does not retitle the Workspace after its target. After resolution, caller cancellation does not roll back creation or registration.' }],
3474
3554
  returns: 'the initialized Workspace, or undefined when automatic creation is ineligible.',
3475
3555
  },
3476
3556
  {
@@ -3796,6 +3876,30 @@ export const EVENT_API = [
3796
3876
  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.',
3797
3877
  parameters: [{ name: 'ref', description: 'the reference whose stored value changed.' }],
3798
3878
  },
3879
+ {
3880
+ name: 'deepseek-account/model-sign-in-required',
3881
+ mode: 'emit',
3882
+ signature: '\'deepseek-account/model-sign-in-required\'(): void',
3883
+ summary: 'An account model request requires the user to sign in.',
3884
+ description: 'An account model request requires the user to sign in.',
3885
+ parameters: [],
3886
+ },
3887
+ {
3888
+ name: 'deepseek-account/session-expired',
3889
+ mode: 'emit',
3890
+ signature: '\'deepseek-account/session-expired\'(): void',
3891
+ summary: 'Server rejection removed the current account credential; this notification is not replayed.',
3892
+ description: 'Server rejection removed the current account credential; this notification is not replayed.',
3893
+ parameters: [],
3894
+ },
3895
+ {
3896
+ name: 'deepseek-account/signed-out',
3897
+ mode: 'emit',
3898
+ signature: '\'deepseek-account/signed-out\'(): void',
3899
+ summary: 'Local grant removal has completed.',
3900
+ description: 'Local grant removal has completed.',
3901
+ parameters: [],
3902
+ },
3799
3903
  {
3800
3904
  name: 'domain/changed',
3801
3905
  mode: 'emit',
@@ -3916,6 +4020,14 @@ export const EVENT_API = [
3916
4020
  description: 'An installation moved between its Host phases. `installing` is announced once per registry the installation asks, with the attempt\'s registry and position; `cancelling` and `applying` once.',
3917
4021
  parameters: [{ name: 'progress', description: 'the installation\'s request id and phase, with the attempt while installing.' }],
3918
4022
  },
4023
+ {
4024
+ name: 'schedule/changed',
4025
+ mode: 'emit',
4026
+ signature: '\'schedule/changed\'(): void',
4027
+ summary: 'Durable task set changed; clients refetch global task and Session-active catalogs.',
4028
+ description: 'Durable task set changed; clients refetch global task and Session-active catalogs.',
4029
+ parameters: [],
4030
+ },
3919
4031
  {
3920
4032
  name: 'session-telemetry/record',
3921
4033
  mode: 'waterfall',
@@ -4151,6 +4263,22 @@ export const EVENT_API = [
4151
4263
  ];
4152
4264
  /** Shapes of every exported type the Service and Event signatures reference (transitively), sorted by name. */
4153
4265
  export const TYPE_API = [
4266
+ {
4267
+ name: 'AccountBonusBatch',
4268
+ declaration: 'export interface AccountBonusBatch {\n readonly accountId: AccountUserId;\n readonly bonuses: readonly AccountBonusNotification[];\n}',
4269
+ },
4270
+ {
4271
+ name: 'AccountBonusNotification',
4272
+ declaration: 'export interface AccountBonusNotification {\n readonly orderId: AccountBonusOrderId;\n readonly campaign: string;\n readonly amount: string;\n readonly currency: \'CNY\' | \'USD\';\n readonly grantedAt: string;\n readonly expiresAt: string;\n readonly message: string;\n}',
4273
+ },
4274
+ {
4275
+ name: 'AccountBonusOrderId',
4276
+ declaration: 'export type AccountBonusOrderId = Branded<\'AccountBonusOrderId\'>;',
4277
+ },
4278
+ {
4279
+ name: 'AccountClientMetadata',
4280
+ declaration: 'export interface AccountClientMetadata {\n readonly version: string;\n readonly locale: string;\n readonly timezoneOffsetSeconds: number;\n}',
4281
+ },
4154
4282
  {
4155
4283
  name: 'AccountDetails',
4156
4284
  declaration: 'export interface AccountDetails {\n readonly profile: {\n readonly status: \'ready\';\n readonly value: AccountProfile;\n } | {\n readonly status: \'failed\';\n };\n readonly balance: {\n readonly status: \'ready\';\n readonly value: readonly AccountWallet[];\n readonly bonusWallets: readonly AccountWallet[];\n } | {\n readonly status: \'failed\';\n };\n}',
@@ -4183,6 +4311,10 @@ export const TYPE_API = [
4183
4311
  name: 'AdmittedPromptContentPart',
4184
4312
  declaration: 'export type AdmittedPromptContentPart = {\n readonly type: \'text\';\n readonly text: string;\n} | {\n readonly type: \'image\';\n readonly attachment: ImageAttachmentRef;\n} | {\n readonly type: \'file\';\n readonly attachment: FileAttachmentRef;\n};',
4185
4313
  },
4314
+ {
4315
+ name: 'AfterScheduleRecord',
4316
+ declaration: 'export interface AfterScheduleRecord {\n readonly id: ScheduleId;\n readonly kind: \'after\';\n readonly title: string;\n readonly prompt: string;\n readonly afterSeconds: number;\n readonly scheduledAt: string;\n}',
4317
+ },
4186
4318
  {
4187
4319
  name: 'Agent',
4188
4320
  declaration: 'export interface Agent {\n readonly id: SessionId;\n}',
@@ -4211,9 +4343,13 @@ export const TYPE_API = [
4211
4343
  name: 'AgentPresetCompositionRow',
4212
4344
  declaration: 'export interface AgentPresetCompositionRow {\n readonly entryId: string | null;\n readonly moduleName: string;\n readonly enabled: CompositionRowEnablement;\n readonly condition?: string;\n readonly fiberState?: FiberState;\n}',
4213
4345
  },
4346
+ {
4347
+ name: 'AgentPresetDocument',
4348
+ declaration: 'export interface AgentPresetDocument {\n readonly agentPreset: string;\n readonly content: string;\n readonly name?: string;\n readonly description?: string;\n}',
4349
+ },
4214
4350
  {
4215
4351
  name: 'AgentPresetRoster',
4216
- declaration: 'export interface AgentPresetRoster {\n readonly presets: readonly AgentPresetRow[];\n readonly modeSelectionEnabled: boolean;\n}',
4352
+ declaration: 'export interface AgentPresetRoster {\n readonly presets: readonly AgentPresetRow[];\n}',
4217
4353
  },
4218
4354
  {
4219
4355
  name: 'AgentPresetRow',
@@ -4261,7 +4397,7 @@ export const TYPE_API = [
4261
4397
  },
4262
4398
  {
4263
4399
  name: 'ApprovalRequestEvent',
4264
- declaration: 'export interface ApprovalRequestEvent {\n readonly agent: Agent;\n readonly toolName: string;\n readonly callId?: ToolCallId;\n readonly reason?: string;\n readonly signal?: AbortSignal;\n}',
4400
+ declaration: 'export interface ApprovalRequestEvent {\n readonly agent: Agent;\n readonly toolName: string;\n readonly callId?: ToolCallId;\n readonly reason?: string;\n readonly displayReason?: {\n readonly en: string;\n readonly [locale: string]: string;\n };\n readonly signal?: AbortSignal;\n}',
4265
4401
  },
4266
4402
  {
4267
4403
  name: 'ArchiveSessionOptions',
@@ -4323,6 +4459,14 @@ export const TYPE_API = [
4323
4459
  name: 'AssistantStreamRecord',
4324
4460
  declaration: 'export type AssistantStreamRecord = {\n readonly type: \'text-chunks\';\n readonly time0: number;\n readonly index: number;\n readonly dt: readonly number[];\n readonly texts: readonly string[];\n} | {\n readonly type: \'reasoning-chunks\';\n readonly time0: number;\n readonly index: number;\n readonly dt: readonly number[];\n readonly texts: readonly string[];\n} | {\n readonly type: \'tool-call-chunks\';\n readonly time0: number;\n readonly index: number;\n readonly dt: readonly number[];\n readonly id: ToolCallId;\n readonly name?: string;\n readonly args: readonly string[];\n} | {\n readonly type: \'chunk\';\n readonly time: number;\n readonly chunk: StreamChunk;\n};',
4325
4461
  },
4462
+ {
4463
+ name: 'AtInput',
4464
+ declaration: 'export type AtInput = string | LocalAtInput;',
4465
+ },
4466
+ {
4467
+ name: 'AtScheduleRecord',
4468
+ declaration: 'export interface AtScheduleRecord {\n readonly id: ScheduleId;\n readonly kind: \'at\';\n readonly title: string;\n readonly prompt: string;\n readonly scheduledAt: string;\n}',
4469
+ },
4326
4470
  {
4327
4471
  name: 'AttachmentAdmissionPart',
4328
4472
  declaration: 'export type AttachmentAdmissionPart = PromptContentPart | {\n readonly type: \'file\';\n readonly attachment: FileAttachmentRef;\n};',
@@ -4703,6 +4847,22 @@ export const TYPE_API = [
4703
4847
  name: 'CredentialRef',
4704
4848
  declaration: 'export type CredentialRef = Branded<\'CredentialRef\'>;',
4705
4849
  },
4850
+ {
4851
+ name: 'CronInput',
4852
+ declaration: 'export interface CronInput {\n readonly expression: string;\n readonly time_zone: string;\n}',
4853
+ },
4854
+ {
4855
+ name: 'CronScheduleRecord',
4856
+ declaration: 'export interface CronScheduleRecord {\n readonly id: ScheduleId;\n readonly kind: \'cron\';\n readonly title: string;\n readonly prompt: string;\n readonly expression: string;\n readonly timeZone: string;\n readonly scheduledAt: string;\n}',
4857
+ },
4858
+ {
4859
+ name: 'DailyInput',
4860
+ declaration: 'export interface DailyInput {\n readonly time: string;\n readonly time_zone: string;\n}',
4861
+ },
4862
+ {
4863
+ name: 'DailyScheduleRecord',
4864
+ declaration: 'export interface DailyScheduleRecord {\n readonly id: ScheduleId;\n readonly kind: \'daily\';\n readonly title: string;\n readonly prompt: string;\n readonly time: string;\n readonly timeZone: string;\n readonly scheduledAt: string;\n}',
4865
+ },
4706
4866
  {
4707
4867
  name: 'DeepSeekLlmApiExtensionMap',
4708
4868
  declaration: 'export interface DeepSeekLlmApiExtensionMap {\n}',
@@ -4719,6 +4879,10 @@ export const TYPE_API = [
4719
4879
  name: 'DeepSeekLlmApiJson',
4720
4880
  declaration: 'export type DeepSeekLlmApiJson = null | boolean | number | string | DeepSeekLlmApiJson[] | {\n [key: string]: DeepSeekLlmApiJson;\n};',
4721
4881
  },
4882
+ {
4883
+ name: 'DeliveryRetentionBounds',
4884
+ declaration: 'export interface DeliveryRetentionBounds {\n readonly days: number;\n readonly records: number;\n}',
4885
+ },
4722
4886
  {
4723
4887
  name: 'DeveloperMessage',
4724
4888
  declaration: 'export interface DeveloperMessage extends MessageBase {\n readonly role: \'developer\';\n}',
@@ -4847,6 +5011,10 @@ export const TYPE_API = [
4847
5011
  name: 'EpochHeader',
4848
5012
  declaration: 'export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n tools?: ToolSchema[];\n system?: never;\n}',
4849
5013
  },
5014
+ {
5015
+ name: 'EveryScheduleRecord',
5016
+ declaration: 'export interface EveryScheduleRecord {\n readonly id: ScheduleId;\n readonly kind: \'every\';\n readonly title: string;\n readonly prompt: string;\n readonly everySeconds: number;\n readonly scheduledAt: string;\n}',
5017
+ },
4850
5018
  {
4851
5019
  name: 'FeedbackCategory',
4852
5020
  declaration: 'export type FeedbackCategory = \'task-result\' | \'instruction-following\' | \'product-interaction\' | \'service-stability\' | \'resource-cost\' | \'security-privacy-permission\' | \'other\';',
@@ -4891,6 +5059,10 @@ export const TYPE_API = [
4891
5059
  name: 'FinishReasonMap',
4892
5060
  declaration: 'export interface FinishReasonMap {\n \'stop\': {\n kind: \'stop\';\n };\n \'tool-calls\': {\n kind: \'tool-calls\';\n };\n \'max-tokens\': {\n kind: \'max-tokens\';\n };\n \'aborted\': {\n kind: \'aborted\';\n failure: LlmFailure;\n };\n \'error\': {\n kind: \'error\';\n failure: LlmFailure;\n };\n}',
4893
5061
  },
5062
+ {
5063
+ name: 'FrequencyTooHighError',
5064
+ declaration: 'export interface FrequencyTooHighError {\n readonly code: \'frequency_too_high\';\n readonly message: string;\n}',
5065
+ },
4894
5066
  {
4895
5067
  name: 'FsDirEntry',
4896
5068
  declaration: 'export interface FsDirEntry {\n name: string;\n type: \'file\' | \'directory\' | \'other\';\n target: FsTarget;\n version?: FsVersion;\n size?: number;\n}',
@@ -4937,7 +5109,7 @@ export const TYPE_API = [
4937
5109
  },
4938
5110
  {
4939
5111
  name: 'GenerateOptions',
4940
- declaration: 'export interface GenerateOptions {\n provider: string;\n model: string;\n reasoningEffort?: ReasoningEffortId;\n messages: RequestMessage[];\n system?: string;\n tools?: ToolSchema[];\n temperature?: number;\n maxTokens?: number;\n stop?: string[];\n signal?: AbortSignal;\n sessionId?: Branded<\'SessionId\'>;\n purpose?: \'compaction\' | \'session-title\';\n}',
5112
+ declaration: 'export interface GenerateOptions {\n provider: string;\n model: string;\n reasoningEffort?: ReasoningEffortId;\n messages: RequestMessage[];\n system?: string;\n tools?: ToolSchema[];\n toolHistory?: ToolHistory;\n temperature?: number;\n maxTokens?: number;\n stop?: string[];\n signal?: AbortSignal;\n sessionId?: Branded<\'SessionId\'>;\n purpose?: \'compaction\' | \'session-title\';\n}',
4941
5113
  },
4942
5114
  {
4943
5115
  name: 'GenericCallView',
@@ -5023,6 +5195,10 @@ export const TYPE_API = [
5023
5195
  name: 'ImageVariantId',
5024
5196
  declaration: 'export type ImageVariantId = Branded<\'ImageVariantId\'>;',
5025
5197
  },
5198
+ {
5199
+ name: 'IncompatiblePlugin',
5200
+ declaration: 'export interface IncompatiblePlugin {\n name: string;\n version: string;\n runtimeVersion: string;\n peers: Record<string, string>;\n}',
5201
+ },
5026
5202
  {
5027
5203
  name: 'IndexInjection',
5028
5204
  declaration: 'export type IndexInjection = {\n kind: \'global\';\n name: string;\n value: unknown;\n} | {\n kind: \'script\';\n placement: IndexInjectionPlacement;\n text: string;\n} | {\n kind: \'script-src\';\n placement: IndexInjectionPlacement;\n src: string;\n} | {\n kind: \'script-preload\';\n src: string;\n} | {\n kind: \'style\';\n text: string;\n} | {\n kind: \'html\';\n placement: IndexInjectionPlacement;\n html: string;\n};',
@@ -5059,6 +5235,26 @@ export const TYPE_API = [
5059
5235
  name: 'InstallSpecKind',
5060
5236
  declaration: 'export type InstallSpecKind = \'registry\' | \'path\' | \'git\' | \'tarball\';',
5061
5237
  },
5238
+ {
5239
+ name: 'InternalScheduleError',
5240
+ declaration: 'export interface InternalScheduleError {\n readonly code: \'internal_error\';\n readonly message: string;\n}',
5241
+ },
5242
+ {
5243
+ name: 'InvalidPromptError',
5244
+ declaration: 'export interface InvalidPromptError {\n readonly code: \'invalid_prompt\';\n readonly message: string;\n}',
5245
+ },
5246
+ {
5247
+ name: 'InvalidRuleError',
5248
+ declaration: 'export interface InvalidRuleError {\n readonly code: \'invalid_rule\';\n readonly message: string;\n}',
5249
+ },
5250
+ {
5251
+ name: 'InvalidSelectorError',
5252
+ declaration: 'export interface InvalidSelectorError {\n readonly code: \'invalid_selector\';\n readonly message: string;\n}',
5253
+ },
5254
+ {
5255
+ name: 'InvalidTimeZoneError',
5256
+ declaration: 'export interface InvalidTimeZoneError {\n readonly code: \'invalid_time_zone\';\n readonly message: string;\n}',
5257
+ },
5062
5258
  {
5063
5259
  name: 'InvariantFailure',
5064
5260
  declaration: 'export type InvariantFailure = (message: string) => never;',
@@ -5285,12 +5481,16 @@ export const TYPE_API = [
5285
5481
  },
5286
5482
  {
5287
5483
  name: 'LlmResolvedModelInfo',
5288
- declaration: 'export interface LlmResolvedModelInfo extends LlmModelInfo {\n context?: LlmModelContext;\n defaultMaxTokens?: number;\n reasoning?: LlmModelReasoningInfo;\n systemPromptUpdate?: SystemPromptUpdate;\n}',
5484
+ declaration: 'export interface LlmResolvedModelInfo extends LlmModelInfo {\n context?: LlmModelContext;\n defaultMaxTokens?: number;\n reasoning?: LlmModelReasoningInfo;\n systemPromptUpdate?: SystemPromptUpdate;\n toolUpdate?: ToolUpdate;\n}',
5289
5485
  },
5290
5486
  {
5291
5487
  name: 'LlmRuntime',
5292
5488
  declaration: 'export class LlmRuntime extends TypertRemoteService {\n constructor(ctx: Context);\n registerAdapter(providers: string[], adapter: LlmAdapter): AdapterRegistrationHandle;\n @Remote\n listProviders(): LlmProviderInfo[];\n registerConfigurableProviders(entries: readonly LlmConfigurableProvider[]): DirectoryRegistrationHandle;\n @Remote\n listConfigurableProviders(): LlmConfigurableProvider[];\n registerModelDiscovery(settingsNs: string, discover: (request: LlmModelDiscoveryRequest, signal?: AbortSignal) => Promise<readonly LlmDiscoveredModel[]>): () => void;\n async discoverModels(settingsNs: string, request: LlmModelDiscoveryRequest, signal?: AbortSignal): Promise<LlmDiscoveredModel[]>;\n @Remote(\'discoverModels\')\n async remoteDiscoverModels(settingsNs: string, request: LlmModelDiscoveryRequest, signal: AbortSignal): Promise<LlmDiscoveredModel[]>;\n providerRetryPolicy(provider: string): ResolvedRetryPolicy;\n imageRequestPricing(provider: string, model: string): LlmImageRequestPricing | undefined;\n fileRequestText(ref: FileAttachmentRef): string;\n async listModels(provider: string): Promise<LlmModelInfo[]>;\n async resolveModelInfo(provider: string, model: string, signal?: AbortSignal): Promise<LlmResolvedModelInfo>;\n async resolveCallConfig(config: LlmCallConfig, signal?: AbortSignal): Promise<LlmCallConfig>;\n async prepareCall(config: LlmCallConfig, signal?: AbortSignal): Promise<PreparedLlmCall>;\n stream(options: GenerateOptions) /* …truncated — full shape in source */',
5293
5489
  },
5490
+ {
5491
+ name: 'LocalAtInput',
5492
+ declaration: 'export interface LocalAtInput {\n readonly date: string;\n readonly time: string;\n readonly time_zone: string;\n}',
5493
+ },
5294
5494
  {
5295
5495
  name: 'LocalizedText',
5296
5496
  declaration: 'export type LocalizedText = string | {\n readonly en: string;\n readonly [locale: string]: string;\n};',
@@ -5337,7 +5537,7 @@ export const TYPE_API = [
5337
5537
  },
5338
5538
  {
5339
5539
  name: 'ManagementError',
5340
- declaration: 'export interface ManagementError {\n code: ReadOnlyReason | \'unknown-plugin\' | \'invalid-spec\' | \'ambiguous-install\' | \'not-bundle\' | \'not-removable\' | \'stop-profile\' | \'bundle-in-use\' | \'stale-approval\' | \'operation-error\';\n diagnostic?: string;\n}',
5540
+ declaration: 'export interface ManagementError {\n code: ReadOnlyReason | \'unknown-plugin\' | \'invalid-spec\' | \'ambiguous-install\' | \'not-bundle\' | \'not-removable\' | \'stop-profile\' | \'bundle-in-use\' | \'stale-approval\' | \'incompatible-version\' | \'operation-error\';\n diagnostic?: string;\n incompatible?: IncompatiblePlugin[];\n}',
5341
5541
  },
5342
5542
  {
5343
5543
  name: 'ManualCompactAgentContext',
@@ -5483,6 +5683,10 @@ export const TYPE_API = [
5483
5683
  name: 'NativeFileApplication',
5484
5684
  declaration: 'export interface NativeFileApplication {\n readonly id: string;\n readonly name: string;\n readonly default: boolean;\n readonly icon: string | null;\n}',
5485
5685
  },
5686
+ {
5687
+ name: 'NotFutureError',
5688
+ declaration: 'export interface NotFutureError {\n readonly code: \'not_future\';\n readonly message: string;\n}',
5689
+ },
5486
5690
  {
5487
5691
  name: 'ObjectJsonSchema',
5488
5692
  declaration: 'export type ObjectJsonSchema = JsonSchemaNode & {\n type: \'object\';\n};',
@@ -5515,6 +5719,10 @@ export const TYPE_API = [
5515
5719
  name: 'OfficeToPdfResult',
5516
5720
  declaration: 'export interface OfficeToPdfResult {\n readonly pdf: Uint8Array;\n readonly missingFonts: string[];\n readonly cacheKey: OfficeToPdfKey;\n readonly generation: OfficeToPdfGeneration;\n}',
5517
5721
  },
5722
+ {
5723
+ name: 'OneShotScheduleRecord',
5724
+ declaration: 'export type OneShotScheduleRecord = AfterScheduleRecord | AtScheduleRecord;',
5725
+ },
5518
5726
  {
5519
5727
  name: 'OneShotSubagentDescriptorData',
5520
5728
  declaration: 'export interface OneShotSubagentDescriptorData extends SubagentDescriptorBase {\n readonly mode: \'one-shot\';\n readonly label?: string;\n}',
@@ -5525,7 +5733,7 @@ export const TYPE_API = [
5525
5733
  },
5526
5734
  {
5527
5735
  name: 'PackageResult',
5528
- declaration: 'export interface PackageResult {\n exitCode: number;\n output: string;\n truncated: boolean;\n logPath: string;\n kind?: PluginInstallFailureKind;\n}',
5736
+ 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}',
5529
5737
  },
5530
5738
  {
5531
5739
  name: 'PeerAdmission',
@@ -5545,7 +5753,7 @@ export const TYPE_API = [
5545
5753
  },
5546
5754
  {
5547
5755
  name: 'PlatformSession',
5548
- declaration: 'export interface PlatformSession {\n readonly origin: string;\n readonly token: string;\n readonly embeddedPageDist?: string;\n readonly requestHeaders?: Readonly<Record<string, string>>;\n}',
5756
+ declaration: 'export interface PlatformSession {\n readonly origin: string;\n readonly token: string;\n readonly userId: AccountUserId | null;\n readonly embeddedPageDist?: string;\n readonly requestHeaders?: Readonly<Record<string, string>>;\n}',
5549
5757
  },
5550
5758
  {
5551
5759
  name: 'PluginChange',
@@ -5621,7 +5829,7 @@ export const TYPE_API = [
5621
5829
  },
5622
5830
  {
5623
5831
  name: 'PreparedLlmCall',
5624
- 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}',
5832
+ 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 toolUpdate?: ToolUpdate;\n readonly adapterDefaults: LlmCallConfigAdapterDefaults;\n stream(options: GenerateOptions): AsyncIterable<StreamChunk>;\n}',
5625
5833
  },
5626
5834
  {
5627
5835
  name: 'PreparedReferencedMessage',
@@ -5649,7 +5857,7 @@ export const TYPE_API = [
5649
5857
  },
5650
5858
  {
5651
5859
  name: 'PreToolDecision',
5652
- declaration: 'export type PreToolDecision = {\n kind: \'allow\';\n} | {\n kind: \'deny\';\n reason: string;\n info?: ToolErrorInfo;\n} | {\n kind: \'cancel\';\n} | {\n kind: \'ask\';\n reason?: string;\n};',
5860
+ declaration: 'export type PreToolDecision = {\n kind: \'allow\';\n} | {\n kind: \'deny\';\n reason: string;\n info?: ToolErrorInfo;\n} | {\n kind: \'cancel\';\n} | {\n kind: \'ask\';\n reason?: string;\n displayReason?: {\n readonly en: string;\n readonly [locale: string]: string;\n };\n};',
5653
5861
  },
5654
5862
  {
5655
5863
  name: 'ProductTelemetryRecord',
@@ -5783,6 +5991,10 @@ export const TYPE_API = [
5783
5991
  name: 'ReasoningEffortId',
5784
5992
  declaration: 'export type ReasoningEffortId = Branded<\'ReasoningEffortId\'>;',
5785
5993
  },
5994
+ {
5995
+ name: 'RecurringScheduleRecord',
5996
+ declaration: 'export type RecurringScheduleRecord = EveryScheduleRecord | DailyScheduleRecord | WeeklyScheduleRecord | CronScheduleRecord;',
5997
+ },
5786
5998
  {
5787
5999
  name: 'RedactedSecret',
5788
6000
  declaration: 'export interface RedactedSecret {\n path: string[];\n set: boolean;\n}',
@@ -5923,6 +6135,38 @@ export const TYPE_API = [
5923
6135
  name: 'SaveTextSpill',
5924
6136
  declaration: 'export interface SaveTextSpill {\n owner: SpillOwner;\n source: SpillSource;\n suggestedName: string;\n content: string;\n}',
5925
6137
  },
6138
+ {
6139
+ name: 'ScheduleCatalogEntry',
6140
+ declaration: 'export type ScheduleCatalogEntry = ScheduleRecord & {\n readonly sessionId: SessionId;\n readonly status: \'active\' | \'inactive\';\n readonly lastDelivery?: ScheduleDeliveryReceipt;\n};',
6141
+ },
6142
+ {
6143
+ name: 'ScheduleCreateRequest',
6144
+ declaration: 'export interface ScheduleCreateRequest {\n prompt: string;\n title: string;\n after_seconds?: number;\n at?: AtInput;\n every_seconds?: number;\n daily?: DailyInput;\n weekly?: WeeklyInput;\n cron?: CronInput;\n}',
6145
+ },
6146
+ {
6147
+ name: 'ScheduleDeleteRequest',
6148
+ declaration: 'export interface ScheduleDeleteRequest extends ScheduleListRequest {\n id: ScheduleId;\n}',
6149
+ },
6150
+ {
6151
+ name: 'ScheduleDeleteResult',
6152
+ declaration: 'export type ScheduleDeleteResult = {\n readonly id: ScheduleId;\n readonly deleted: true;\n} | {\n readonly id: ScheduleId;\n readonly deleted: false;\n readonly code: \'schedule_not_found\';\n};',
6153
+ },
6154
+ {
6155
+ name: 'ScheduleDeliveryHistoryRequest',
6156
+ declaration: 'export interface ScheduleDeliveryHistoryRequest extends ScheduleDeleteRequest {\n limit: number;\n before?: MessageId;\n}',
6157
+ },
6158
+ {
6159
+ name: 'ScheduleDeliveryHistoryResult',
6160
+ declaration: 'export type ScheduleDeliveryHistoryResult = {\n readonly id: ScheduleId;\n readonly records: ScheduleDeliveryRecord[];\n readonly earlierRecordsUnavailable: boolean;\n readonly earlierRecordsPruned: boolean;\n readonly retention: DeliveryRetentionBounds;\n readonly nextBefore?: MessageId;\n} | {\n readonly id: ScheduleId;\n readonly code: \'schedule_not_found\' | \'delivery_cursor_not_found\';\n};',
6161
+ },
6162
+ {
6163
+ name: 'ScheduleDeliveryReceipt',
6164
+ declaration: 'export interface ScheduleDeliveryReceipt {\n readonly scheduledAt: string;\n readonly deliveredAt: string;\n readonly messageId: MessageId;\n}',
6165
+ },
6166
+ {
6167
+ name: 'ScheduleDeliveryRecord',
6168
+ declaration: 'export interface ScheduleDeliveryRecord extends ScheduleDeliveryReceipt {\n readonly prompt?: string;\n}',
6169
+ },
5926
6170
  {
5927
6171
  name: 'ScheduledToolDispatch',
5928
6172
  declaration: 'export type ScheduledToolDispatch = {\n kind: \'post-result\';\n result: ToolExecutionResult;\n} | {\n kind: \'final-result\';\n result: ToolExecutionResult;\n};',
@@ -5931,6 +6175,42 @@ export const TYPE_API = [
5931
6175
  name: 'ScheduledToolPreparation',
5932
6176
  declaration: 'export type ScheduledToolPreparation = {\n kind: \'dispatch\';\n exec: ToolRunContext;\n} | {\n kind: \'post-result\';\n exec: ToolRunContext;\n result: ToolExecutionResult;\n} | {\n kind: \'final-result\';\n exec: ToolRunContext;\n result: ToolExecutionResult;\n};',
5933
6177
  },
6178
+ {
6179
+ name: 'ScheduleId',
6180
+ declaration: 'export type ScheduleId = Branded<\'ScheduleId\'>;',
6181
+ },
6182
+ {
6183
+ name: 'ScheduleListRequest',
6184
+ declaration: 'export interface ScheduleListRequest {\n sessionId: SessionId;\n}',
6185
+ },
6186
+ {
6187
+ name: 'ScheduleRecord',
6188
+ declaration: 'export type ScheduleRecord = OneShotScheduleRecord | RecurringScheduleRecord;',
6189
+ },
6190
+ {
6191
+ name: 'ScheduleTimingChange',
6192
+ declaration: 'export type ScheduleTimingChange = {\n readonly kind: \'at\';\n readonly at: AtInput;\n} | {\n readonly kind: \'every\';\n readonly every_seconds: number;\n} | {\n readonly kind: \'daily\';\n readonly daily: DailyInput;\n} | {\n readonly kind: \'weekly\';\n readonly weekly: WeeklyInput;\n} | {\n readonly kind: \'cron\';\n readonly cron: CronInput;\n};',
6193
+ },
6194
+ {
6195
+ name: 'ScheduleToolError',
6196
+ declaration: 'export type ScheduleToolError = InvalidPromptError | InvalidSelectorError | InvalidRuleError | InvalidTimeZoneError | NotFutureError | TimeOutOfRangeError | FrequencyTooHighError | InternalScheduleError;',
6197
+ },
6198
+ {
6199
+ name: 'ScheduleUpdateContent',
6200
+ declaration: 'export interface ScheduleUpdateContent {\n readonly title?: string;\n readonly prompt?: string;\n}',
6201
+ },
6202
+ {
6203
+ name: 'ScheduleUpdateMiss',
6204
+ declaration: 'export interface ScheduleUpdateMiss {\n readonly id: ScheduleId;\n readonly updated: false;\n readonly code: \'schedule_not_found\' | \'schedule_ended\' | \'schedule_conflict\';\n}',
6205
+ },
6206
+ {
6207
+ name: 'ScheduleUpdateRequest',
6208
+ declaration: 'export interface ScheduleUpdateRequest extends ScheduleDeleteRequest, ScheduleUpdateContent {\n readonly expected: ScheduleRecord;\n readonly change?: ScheduleTimingChange;\n}',
6209
+ },
6210
+ {
6211
+ name: 'ScheduleUpdateResult',
6212
+ declaration: 'export type ScheduleUpdateResult = {\n readonly id: ScheduleId;\n readonly updated: boolean;\n readonly record: ScheduleRecord;\n} | ScheduleUpdateMiss | ScheduleToolError;',
6213
+ },
5934
6214
  {
5935
6215
  name: 'Scoped',
5936
6216
  declaration: 'export type Scoped<T extends object> = object & {\n readonly [ScopedBrand]: T;\n};',
@@ -5973,7 +6253,7 @@ export const TYPE_API = [
5973
6253
  },
5974
6254
  {
5975
6255
  name: 'Session',
5976
- declaration: 'export class Session {\n get surface(): SessionSurface;\n readonly header: SessionHeader;\n readonly inheritedEventCount: SessionLogOffset;\n get id(): SessionId;\n readonly firstLiveSeq: SessionLogOffset;\n readonly firstLifecycleSeq: SessionLogOffset;\n static create(id: SessionId, seed?: readonly SessionEvent[], header?: SessionHeader, inheritedEventCount?: SessionLogOffset, projections?: readonly SessionMessageProjection[]): Session;\n static fromRestore(id: SessionId, seed: readonly SessionEvent[], header: SessionHeader, inheritedEventCount: SessionLogOffset, eventState: SessionSeedEventState, projections?: readonly SessionMessageProjection[]): Session;\n eventAt(seq: SessionSeq): SessionEvent | undefined;\n snapshotEvents(fromSeq: SessionLogOffset = SessionLogOffset(0), toSeqExclusive: SessionLogOffset = this.seq): readonly SessionEvent[];\n ownEvents(): readonly SessionEvent[];\n isOwnSeq(seq: SessionSeq): boolean;\n get seq(): SessionLogOffset;\n append<T extends SessionEventType>(type: T, data: SessionEventMap[T], ...opts: T extends SurfaceEventType ? [\n opts: SurfaceIntent<T>\n ] : [\n ]): SessionEvent<T>;\n requestHeader(): EpochHeader | undefined;\n requestContext(): RequestContext | undefined;\n deriveMessages(): Message[];\n deriveEventMessage(event: SessionEvent): Message | null;\n}',
6256
+ declaration: 'export class Session {\n get surface(): SessionSurface;\n readonly header: SessionHeader;\n readonly inheritedEventCount: SessionLogOffset;\n get id(): SessionId;\n readonly firstLiveSeq: SessionLogOffset;\n readonly firstLifecycleSeq: SessionLogOffset;\n static create(id: SessionId, seed?: readonly SessionEvent[], header?: SessionHeader, inheritedEventCount?: SessionLogOffset, projections?: readonly SessionMessageProjection[]): Session;\n static fromRestore(id: SessionId, seed: readonly SessionEvent[], header: SessionHeader, inheritedEventCount: SessionLogOffset, eventState: SessionSeedEventState, projections?: readonly SessionMessageProjection[]): Session;\n eventAt(seq: SessionSeq): SessionEvent | undefined;\n snapshotEvents(fromSeq: SessionLogOffset = SessionLogOffset(0), toSeqExclusive: SessionLogOffset = this.seq): readonly SessionEvent[];\n ownEvents(): readonly SessionEvent[];\n isOwnSeq(seq: SessionSeq): boolean;\n get seq(): SessionLogOffset;\n append<T extends SessionEventType>(type: T, data: SessionEventMap[T], ...opts: T extends SurfaceEventType ? [\n opts: SurfaceIntent<T>\n ] : [\n ]): SessionEvent<T>;\n requestHeader(): EpochHeader | undefined;\n requestContext(): RequestContext | undefined;\n toolHistory(): ToolHistory;\n deriveMessages(): Message[];\n deriveEventMessage(event: SessionEvent): Message | null;\n}',
5977
6257
  },
5978
6258
  {
5979
6259
  name: 'SessionAccess',
@@ -6665,7 +6945,11 @@ export const TYPE_API = [
6665
6945
  },
6666
6946
  {
6667
6947
  name: 'SpeechPreparation',
6668
- declaration: 'export interface SpeechPreparation {\n snapshot(): SpeechPreparationState;\n subscribe(listener: () => void): () => void;\n prepare(): void;\n cancel(): Promise<void>;\n}',
6948
+ declaration: 'export interface SpeechPreparation {\n snapshot(): SpeechPreparationState;\n subscribe(listener: () => void): () => void;\n prepare(options?: SpeechPreparationOptions): void;\n cancel(): Promise<void>;\n}',
6949
+ },
6950
+ {
6951
+ name: 'SpeechPreparationOptions',
6952
+ declaration: 'export interface SpeechPreparationOptions {\n readonly downloadSource?: string;\n}',
6669
6953
  },
6670
6954
  {
6671
6955
  name: 'SpeechPreparationState',
@@ -6689,7 +6973,7 @@ export const TYPE_API = [
6689
6973
  },
6690
6974
  {
6691
6975
  name: 'SpeechProviderInfo',
6692
- declaration: 'export interface SpeechProviderInfo {\n readonly id: SpeechProviderId;\n readonly name: string;\n readonly location: \'host-local\' | \'cloud\';\n readonly languages: readonly string[];\n readonly setupEstimate?: SpeechSetupEstimate;\n}',
6976
+ declaration: 'export interface SpeechProviderInfo {\n readonly id: SpeechProviderId;\n readonly name: string;\n readonly location: \'host-local\' | \'cloud\';\n readonly languages: readonly string[];\n readonly setupEstimate?: SpeechSetupEstimate;\n readonly downloadSources?: readonly string[];\n}',
6693
6977
  },
6694
6978
  {
6695
6979
  name: 'SpeechProviderView',
@@ -6979,10 +7263,6 @@ export const TYPE_API = [
6979
7263
  name: 'TeamTaskView',
6980
7264
  declaration: 'export interface TeamTaskView {\n readonly id: TeamTaskId;\n readonly revision: number;\n readonly subject: string;\n readonly description: string;\n readonly status: TeamTaskStatus;\n readonly blockedBy: TeamTaskId[];\n readonly writeScopes: string[];\n readonly ownerName?: string;\n readonly ready: boolean;\n readonly writeScopeWarnings: string[];\n}',
6981
7265
  },
6982
- {
6983
- name: 'TeamView',
6984
- declaration: 'export interface TeamView {\n readonly members: TeamMemberView[];\n readonly tasks: TeamTaskView[];\n}',
6985
- },
6986
7266
  {
6987
7267
  name: 'TeamWaitResult',
6988
7268
  declaration: 'export interface TeamWaitResult {\n readonly timedOut: boolean;\n}',
@@ -7091,6 +7371,10 @@ export const TYPE_API = [
7091
7371
  name: 'TerminalWaitReason',
7092
7372
  declaration: 'export type TerminalWaitReason = \'stdin_read\' | \'inferred_idle\' | \'timeout\' | \'session_exit\';',
7093
7373
  },
7374
+ {
7375
+ name: 'TimeOutOfRangeError',
7376
+ declaration: 'export interface TimeOutOfRangeError {\n readonly code: \'time_out_of_range\';\n readonly message: string;\n}',
7377
+ },
7094
7378
  {
7095
7379
  name: 'TokenMeasurement',
7096
7380
  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}',
@@ -7175,6 +7459,10 @@ export const TYPE_API = [
7175
7459
  name: 'ToolGuard',
7176
7460
  declaration: 'export type ToolGuard = (execution: Readonly<ToolExecution>) => string | undefined;',
7177
7461
  },
7462
+ {
7463
+ name: 'ToolHistory',
7464
+ declaration: 'export interface ToolHistory {\n readonly tools: readonly ToolSchema[];\n readonly updates: readonly {\n readonly messageId: MessageId;\n readonly additions: readonly ToolSchema[];\n }[];\n}',
7465
+ },
7178
7466
  {
7179
7467
  name: 'ToolMessageSource',
7180
7468
  declaration: 'export interface ToolMessageSource {\n kind: \'tool\';\n callId: ToolCallId;\n}',
@@ -7227,6 +7515,10 @@ export const TYPE_API = [
7227
7515
  name: 'ToolSchema',
7228
7516
  declaration: 'export interface ToolSchema {\n deferLoading?: true;\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n}',
7229
7517
  },
7518
+ {
7519
+ name: 'ToolUpdate',
7520
+ declaration: 'export type ToolUpdate = \'in-history\' | \'addition-only\';',
7521
+ },
7230
7522
  {
7231
7523
  name: 'Transcript',
7232
7524
  declaration: 'export interface Transcript {\n readonly text: string;\n readonly audioSeconds: number;\n readonly inferenceSeconds: number;\n}',
@@ -7479,6 +7771,14 @@ export const TYPE_API = [
7479
7771
  name: 'WebUpgradeRoute',
7480
7772
  declaration: 'export interface WebUpgradeRoute {\n path: string;\n handler: (req: IncomingMessage, socket: Duplex, head: Buffer) => void | Promise<void>;\n}',
7481
7773
  },
7774
+ {
7775
+ name: 'WeeklyInput',
7776
+ declaration: 'export interface WeeklyInput {\n readonly time: string;\n readonly time_zone: string;\n readonly weekdays: number[];\n}',
7777
+ },
7778
+ {
7779
+ name: 'WeeklyScheduleRecord',
7780
+ declaration: 'export interface WeeklyScheduleRecord {\n readonly id: ScheduleId;\n readonly kind: \'weekly\';\n readonly title: string;\n readonly prompt: string;\n readonly time: string;\n readonly timeZone: string;\n readonly weekdays: number[];\n readonly scheduledAt: string;\n}',
7781
+ },
7482
7782
  {
7483
7783
  name: 'WorkflowAgentEndInfo',
7484
7784
  declaration: 'export interface WorkflowAgentEndInfo extends WorkflowAgentInfo {\n outcome: WorkflowAgentOutcome;\n}',
@@ -7627,10 +7927,6 @@ export const TYPE_API = [
7627
7927
  name: 'WorkspaceFollowIncrement',
7628
7928
  declaration: 'export type WorkspaceFollowIncrement = {\n readonly type: \'upsert\';\n readonly workspace: WorkspaceView;\n} | {\n readonly type: \'remove\';\n readonly workspaceId: WorkspaceId;\n} | {\n readonly type: \'order\';\n readonly workspaceIds: readonly WorkspaceId[];\n} | {\n readonly type: \'archived\';\n readonly archivedSessionIds: readonly SessionId[];\n} | {\n readonly type: \'pinned\';\n readonly pinnedSessionIds: readonly SessionId[];\n};',
7629
7929
  },
7630
- {
7631
- name: 'WorkspaceInitializeDefaultRequest',
7632
- declaration: 'export interface WorkspaceInitializeDefaultRequest {\n readonly directoryName: string;\n readonly title: string;\n}',
7633
- },
7634
7930
  {
7635
7931
  name: 'WorkspaceInsertBeforeRequest',
7636
7932
  declaration: 'export interface WorkspaceInsertBeforeRequest {\n readonly workspaceId: WorkspaceId;\n readonly beforeWorkspaceId?: WorkspaceId;\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.1.7-alpha.2",
4
+ "version": "0.1.7-rc.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -34,20 +34,20 @@
34
34
  "peerDependencies": {
35
35
  "@deepseek-ai/cordis": "~4.0.4",
36
36
  "@deepseek-ai/cordis-plugin-loader": "~1.0.5",
37
- "@deepseek-ai/dsh-agent": "0.1.7-alpha.2",
38
- "@deepseek-ai/dsh-app-boot": "0.1.7-alpha.2",
39
- "@deepseek-ai/dsh-tools": "0.1.7-alpha.2",
40
- "@deepseek-ai/dsh-cordis-host-runner": "0.1.7-alpha.2"
37
+ "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
38
+ "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2",
39
+ "@deepseek-ai/dsh-cordis-host-runner": "0.1.7-rc.2",
40
+ "@deepseek-ai/dsh-tools": "0.1.7-rc.2"
41
41
  },
42
42
  "devDependencies": {
43
- "@deepseek-ai/cordis": "~4.0.4",
44
43
  "@deepseek-ai/cordis-plugin-group": "~1.0.4",
44
+ "@deepseek-ai/cordis": "~4.0.4",
45
45
  "@deepseek-ai/cordis-plugin-loader": "~1.0.5",
46
- "@deepseek-ai/dsh-agent": "0.1.7-alpha.2",
47
- "@deepseek-ai/dsh-cordis-host-runner": "0.1.7-alpha.2",
48
- "@deepseek-ai/dsh-app-boot": "0.1.7-alpha.2",
49
- "@deepseek-ai/dsh-tools": "0.1.7-alpha.2",
50
- "@deepseek-ai/dsh-system-prompt": "0.1.7-alpha.2",
51
- "@deepseek-ai/schemastery": "~3.18.4"
46
+ "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
47
+ "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2",
48
+ "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
49
+ "@deepseek-ai/dsh-tools": "0.1.7-rc.2",
50
+ "@deepseek-ai/schemastery": "~3.18.4",
51
+ "@deepseek-ai/dsh-cordis-host-runner": "0.1.7-rc.2"
52
52
  }
53
53
  }