@deepseek-ai/dsh-api-workspace-files 0.2.1-alpha.1 → 0.2.1-alpha.3

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/lib/index.js CHANGED
@@ -399,6 +399,7 @@ let WorkspaceFiles = (() => {
399
399
  scope.typert.lookups.register("workspaceFileScope", {
400
400
  parameter: "workspaceFileScope",
401
401
  wire: "workspaceFileScopeId",
402
+ resource: "session",
402
403
  hostTypeSymbol: "@deepseek-ai/dsh-api-workspace-files#WorkspaceFileScope",
403
404
  wireTypeSymbol: "@deepseek-ai/dsh-session/types#SessionId",
404
405
  resolve: async (sessionId) => {
@@ -1,8 +1,10 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
+ import { createTypertRemoteInfo } from '@deepseek-ai/dsh-typert-protocol/remote-info'
5
+
4
6
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema$value
5
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
7
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema$value ??= z.string())
6
8
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1$schema$value
7
9
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1$schema$value ??= z.string())
8
10
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_result$schema$value
@@ -11,76 +13,76 @@ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_result$schema
11
13
  }), z.object({
12
14
  'kind': z.literal("change").readonly(),
13
15
  'change': z.union([z.object({
14
- 'absolutePath': z.string().readonly(),
15
- 'version': z.string().readonly(),
16
+ 'absolutePath': z.string().readonly().describe('Absolute target path, in the same form as {@link WorkspaceFileStat.absolutePath}.'),
17
+ 'version': z.string().readonly().describe('Opaque freshness token from the current stat; never parsed.'),
16
18
  }), z.object({
17
- 'absolutePath': z.string().readonly(),
18
- 'absent': z.literal(true).readonly(),
19
+ 'absolutePath': z.string().readonly().describe('Absolute target path, in the same form as {@link WorkspaceFileStat.absolutePath}.'),
20
+ 'absent': z.literal(true).readonly().describe('The target was observed to be gone.'),
19
21
  })]).readonly(),
20
22
  })]))
21
23
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema$value
22
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
24
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema$value ??= z.string())
23
25
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1$schema$value
24
26
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1$schema$value ??= z.string())
25
27
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_result$schema$value
26
28
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_result$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_result$schema$value ??= z.object({
27
- 'path': z.string().readonly(),
29
+ 'path': z.string().readonly().describe('The listed directory as a workspace path, relative to the workspace root and empty for the root itself. A child\'s path is this value joined with {@link WorkspaceDirectoryEntry.name} by `/`.'),
28
30
  'entries': z.array(z.object({
29
- 'name': z.string().readonly(),
30
- 'type': z.union([z.literal("file"), z.literal("directory"), z.literal("other")]).readonly(),
31
- 'size': z.number().readonly().optional(),
32
- })).readonly(),
33
- 'truncated': z.boolean().readonly(),
31
+ 'name': z.string().readonly().describe('Basename inside the listed directory.'),
32
+ 'type': z.union([z.literal("file"), z.literal("directory"), z.literal("other")]).readonly().describe('What the child resolves to. A symlink reports the type of its destination, and `other` covers everything that is neither a regular file nor a directory; `read` still refuses a symlink, so `file` here is a listing fact, not a promise that the content is readable.'),
33
+ 'size': z.number().readonly().optional().describe('Byte size, present only for a regular file whose backend reports it.'),
34
+ })).readonly().describe('Direct children in the backend\'s stable name order, cut to the configured entry cap. Presentation order is the caller\'s choice.'),
35
+ 'truncated': z.boolean().readonly().describe('Whether the entry cap dropped children from {@link entries}.'),
34
36
  }))
35
37
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema$value
36
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
38
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema$value ??= z.string())
37
39
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1$schema$value
38
40
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1$schema$value ??= z.string())
39
41
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2$schema$value
40
42
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2$schema$value ??= z.object({
41
- 'offset': z.number().readonly().optional(),
42
- 'limit': z.number().readonly().optional(),
43
+ 'offset': z.number().readonly().optional().describe('First line of the page. Defaults to 1.'),
44
+ 'limit': z.number().readonly().optional().describe('Largest number of lines on the page. Defaults to, and may not exceed, the configured `maxLines`.'),
43
45
  }))
44
46
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_result$schema$value
45
47
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_result$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_result$schema$value ??= z.object({
46
- 'offset': z.number().readonly(),
47
- 'text': z.string().readonly(),
48
- 'lines': z.number().readonly(),
49
- 'eof': z.boolean().readonly(),
50
- 'absolutePath': z.string().readonly(),
51
- 'version': z.string().readonly(),
52
- 'bytes': z.number().readonly().optional(),
48
+ 'offset': z.number().readonly().describe('First line of the page, as requested.'),
49
+ 'text': z.string().readonly().describe('The page\'s lines joined by `\\n`, without a terminator after the last one. Empty for a page past the file\'s last line and for a page holding one empty line; `lines` tells them apart.'),
50
+ 'lines': z.number().readonly().describe('How many lines the page holds; `0` when `offset` lies past the file\'s last line.'),
51
+ 'eof': z.boolean().readonly().describe('Whether the page includes the file\'s last line.'),
52
+ 'absolutePath': z.string().readonly().describe('Absolute path of the file in the filesystem\'s execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address\'s workspace-relative path resolves to against that Session\'s root.'),
53
+ 'version': z.string().readonly().describe('Opaque freshness token at the time of the stat; never parsed.'),
54
+ 'bytes': z.number().readonly().optional().describe('Byte size of the complete file, when the backend reports it.'),
53
55
  }))
54
56
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema$value
55
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
57
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema$value ??= z.string())
56
58
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1$schema$value
57
59
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1$schema$value ??= z.string())
58
60
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2$schema$value
59
61
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2$schema$value ??= z.object({
60
62
  'range': z.object({
61
- 'offset': z.number().readonly().optional(),
62
- 'length': z.number().readonly().optional(),
63
- }).readonly().optional(),
64
- 'baseFile': z.string().readonly().optional(),
63
+ 'offset': z.number().readonly().optional().describe('First byte of the window. Defaults to 0.'),
64
+ 'length': z.number().readonly().optional().describe('Largest number of bytes in the window. Defaults to, and may not exceed, the configured `maxBytes`.'),
65
+ }).readonly().optional().describe('Byte window; omit to read the complete file under the configured `maxFileBytes` cap.'),
66
+ 'baseFile': z.string().readonly().optional().describe('Base file, absolute or workspace-relative; resolve the relative target from its directory.'),
65
67
  }))
66
68
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema$value
67
69
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema$value ??= z.object({
68
- 'offset': z.number().readonly(),
69
- 'data': z.instanceof(Uint8Array),
70
- 'eof': z.boolean().readonly(),
71
- 'absolutePath': z.string().readonly(),
72
- 'version': z.string().readonly(),
73
- 'bytes': z.number().readonly().optional(),
70
+ 'offset': z.number().readonly().describe('First byte of the window, as requested.'),
71
+ 'data': z.instanceof(Uint8Array).describe('Native file bytes; empty at or past EOF.'),
72
+ 'eof': z.boolean().readonly().describe('Whether the window includes the file\'s last byte.'),
73
+ 'absolutePath': z.string().readonly().describe('Absolute path of the file in the filesystem\'s execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address\'s workspace-relative path resolves to against that Session\'s root.'),
74
+ 'version': z.string().readonly().describe('Opaque freshness token at the time of the stat; never parsed.'),
75
+ 'bytes': z.number().readonly().optional().describe('Byte size of the complete file, when the backend reports it.'),
74
76
  }))
75
77
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema$value
76
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
78
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema$value ??= z.string())
77
79
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1$schema$value
78
80
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1$schema$value ??= z.string())
79
81
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_result$schema$value
80
82
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_result$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_result$schema$value ??= z.object({
81
- 'absolutePath': z.string().readonly(),
82
- 'version': z.string().readonly(),
83
- 'bytes': z.number().readonly().optional(),
83
+ 'absolutePath': z.string().readonly().describe('Absolute path of the file in the filesystem\'s execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address\'s workspace-relative path resolves to against that Session\'s root.'),
84
+ 'version': z.string().readonly().describe('Opaque freshness token at the time of the stat; never parsed.'),
85
+ 'bytes': z.number().readonly().optional().describe('Byte size of the complete file, when the backend reports it.'),
84
86
  }))
85
87
  const $resultSnapshot = (input, path) => {
86
88
  if (input === null || typeof input !== 'object' || input instanceof Uint8Array) return input
@@ -118,40 +120,83 @@ const $encode0 = (value, writeBytes, path, ancestors) => {
118
120
  return value
119
121
  }, true)
120
122
  }
123
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0_strict$schema$value
124
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0_strict$schema$value ??= z.string())
125
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1_strict$schema$value
126
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1_strict$schema$value ??= z.string())
127
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0_strict$schema$value
128
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0_strict$schema$value ??= z.string())
129
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1_strict$schema$value
130
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1_strict$schema$value ??= z.string())
131
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0_strict$schema$value
132
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0_strict$schema$value ??= z.string())
133
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1_strict$schema$value
134
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1_strict$schema$value ??= z.string())
135
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2_strict$schema$value
136
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2_strict$schema$value ??= z.strictObject({
137
+ 'offset': z.number().readonly().optional().describe('First line of the page. Defaults to 1.'),
138
+ 'limit': z.number().readonly().optional().describe('Largest number of lines on the page. Defaults to, and may not exceed, the configured `maxLines`.'),
139
+ }))
140
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0_strict$schema$value
141
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0_strict$schema$value ??= z.string())
142
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1_strict$schema$value
143
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1_strict$schema$value ??= z.string())
144
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2_strict$schema$value
145
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2_strict$schema$value ??= z.strictObject({
146
+ 'range': z.strictObject({
147
+ 'offset': z.number().readonly().optional().describe('First byte of the window. Defaults to 0.'),
148
+ 'length': z.number().readonly().optional().describe('Largest number of bytes in the window. Defaults to, and may not exceed, the configured `maxBytes`.'),
149
+ }).readonly().optional().describe('Byte window; omit to read the complete file under the configured `maxFileBytes` cap.'),
150
+ 'baseFile': z.string().readonly().optional().describe('Base file, absolute or workspace-relative; resolve the relative target from its directory.'),
151
+ }))
152
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0_strict$schema$value
153
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0_strict$schema$value ??= z.string())
154
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1_strict$schema$value
155
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1_strict$schema$value ??= z.string())
121
156
 
122
- export const TYPERT = {
157
+ const $remote = createTypertRemoteInfo({
123
158
  package: '@deepseek-ai/dsh-api-workspace-files',
124
- face: 'host',
125
- schemas: [
126
- ],
127
- invocations: [
128
- {
129
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/changes',
159
+ methods: {
160
+ 'workspaceFiles/changes': {
130
161
  service: 'workspaceFiles',
131
- namespace: 'workspaceFiles',
132
- method: 'changes',
162
+ description: 'Watch one file or a directory\'s direct entries in the Session\'s filesystem. Files use the backend\'s read authority; directories remain workspace-scoped.',
133
163
  mode: 'stream',
134
164
  invocation: { kind: 'direct' },
135
165
  parameters: [
136
166
  {
137
167
  name: 'workspaceFileScope',
138
168
  wire: 'workspaceFileScopeId',
169
+ description: 'header-derived workspace root for the Session identity on the wire.',
139
170
  source: 'lookup',
140
171
  lookup: 'workspaceFileScope',
141
172
  codec: {
142
173
  mode: 'strict',
143
174
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
144
175
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema,
176
+ jsonSchema: {"type":"string"},
177
+ },
178
+ strictCodec: {
179
+ mode: 'strict',
180
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
181
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0_strict$schema,
182
+ jsonSchema: {"type":"string"},
145
183
  },
146
184
  },
147
185
  {
148
186
  name: 'path',
149
- wire: 'path',
187
+ description: 'target path; the Host determines its type and confines directories to the workspace.',
150
188
  source: 'json',
151
189
  codec: {
152
190
  mode: 'strict',
153
191
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/changes:path',
154
192
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1$schema,
193
+ jsonSchema: {"type":"string"},
194
+ },
195
+ strictCodec: {
196
+ mode: 'strict',
197
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/changes:path',
198
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1_strict$schema,
199
+ jsonSchema: {"type":"string"},
155
200
  },
156
201
  },
157
202
  ],
@@ -160,35 +205,50 @@ export const TYPERT = {
160
205
  mode: 'strict',
161
206
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileWatchFrame',
162
207
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_result$schema,
208
+ description: '`ready` once the target watch is active, then current metadata for queued and live invalidations.',
209
+ jsonSchemaError: 'typert tool schema: selected union branches overlap or have no required discriminator',
163
210
  },
164
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":340,"column":3},
211
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":341,"column":3},
165
212
  },
166
- {
167
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/list',
213
+ 'workspaceFiles/list': {
168
214
  service: 'workspaceFiles',
169
- namespace: 'workspaceFiles',
170
- method: 'list',
215
+ description: 'List the direct children of one directory inside the Session\'s workspace.',
171
216
  invocation: { kind: 'direct' },
172
217
  parameters: [
173
218
  {
174
219
  name: 'workspaceFileScope',
175
220
  wire: 'workspaceFileScopeId',
221
+ description: 'header-derived workspace root for the Session identity on the wire.',
176
222
  source: 'lookup',
177
223
  lookup: 'workspaceFileScope',
178
224
  codec: {
179
225
  mode: 'strict',
180
226
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
181
227
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema,
228
+ jsonSchema: {"type":"string"},
229
+ },
230
+ strictCodec: {
231
+ mode: 'strict',
232
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
233
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0_strict$schema,
234
+ jsonSchema: {"type":"string"},
182
235
  },
183
236
  },
184
237
  {
185
238
  name: 'path',
186
- wire: 'path',
239
+ description: 'workspace path, absolute or relative to the workspace root.',
187
240
  source: 'json',
188
241
  codec: {
189
242
  mode: 'strict',
190
243
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/list:path',
191
244
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1$schema,
245
+ jsonSchema: {"type":"string"},
246
+ },
247
+ strictCodec: {
248
+ mode: 'strict',
249
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/list:path',
250
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1_strict$schema,
251
+ jsonSchema: {"type":"string"},
192
252
  },
193
253
  },
194
254
  ],
@@ -197,45 +257,67 @@ export const TYPERT = {
197
257
  mode: 'strict',
198
258
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceDirectoryListing',
199
259
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_result$schema,
260
+ description: 'the directory\'s children in the backend\'s stable name order, bounded by the entry cap.',
261
+ jsonSchema: {"type":"object","properties":{"path":{"type":"string","description":"The listed directory as a workspace path, relative to the workspace root and empty for the root itself. A child's path is this value joined with {@link WorkspaceDirectoryEntry.name} by `/`."},"entries":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Basename inside the listed directory."},"type":{"type":"string","enum":["file","directory","other"],"description":"What the child resolves to. A symlink reports the type of its destination, and `other` covers everything that is neither a regular file nor a directory; `read` still refuses a symlink, so `file` here is a listing fact, not a promise that the content is readable."},"size":{"type":"number","description":"Byte size, present only for a regular file whose backend reports it."}},"required":["name","type"],"additionalProperties":true},"description":"Direct children in the backend's stable name order, cut to the configured entry cap. Presentation order is the caller's choice."},"truncated":{"type":"boolean","description":"Whether the entry cap dropped children from {@link entries}."}},"required":["path","entries","truncated"],"additionalProperties":true},
200
262
  },
201
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":303,"column":9},
263
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":304,"column":9},
202
264
  },
203
- {
204
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/read',
265
+ 'workspaceFiles/read': {
205
266
  service: 'workspaceFiles',
206
- namespace: 'workspaceFiles',
207
- method: 'read',
267
+ description: 'Read one page of lines from a UTF-8 file readable by the filesystem backend.',
208
268
  invocation: { kind: 'direct' },
209
269
  parameters: [
210
270
  {
211
271
  name: 'workspaceFileScope',
212
272
  wire: 'workspaceFileScopeId',
273
+ description: 'header-derived workspace root for the Session identity on the wire.',
213
274
  source: 'lookup',
214
275
  lookup: 'workspaceFileScope',
215
276
  codec: {
216
277
  mode: 'strict',
217
278
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
218
279
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema,
280
+ jsonSchema: {"type":"string"},
281
+ },
282
+ strictCodec: {
283
+ mode: 'strict',
284
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
285
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0_strict$schema,
286
+ jsonSchema: {"type":"string"},
219
287
  },
220
288
  },
221
289
  {
222
290
  name: 'path',
223
- wire: 'path',
291
+ description: 'absolute path or path relative to the workspace root; files outside it are allowed.',
224
292
  source: 'json',
225
293
  codec: {
226
294
  mode: 'strict',
227
295
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/read:path',
228
296
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1$schema,
297
+ jsonSchema: {"type":"string"},
298
+ },
299
+ strictCodec: {
300
+ mode: 'strict',
301
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/read:path',
302
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1_strict$schema,
303
+ jsonSchema: {"type":"string"},
229
304
  },
230
305
  },
231
306
  {
232
307
  name: 'range',
233
- wire: 'range',
308
+ description: 'the line window; omitted fields take the page defaults.',
234
309
  source: 'json',
235
310
  codec: {
236
311
  mode: 'strict',
237
312
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileRange',
238
313
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2$schema,
314
+ jsonSchema: {"type":"object","properties":{"offset":{"type":"number","description":"First line of the page. Defaults to 1."},"limit":{"type":"number","description":"Largest number of lines on the page. Defaults to, and may not exceed, the configured `maxLines`."}},"required":[],"additionalProperties":true},
315
+ },
316
+ strictCodec: {
317
+ mode: 'strict',
318
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileRange',
319
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2_strict$schema,
320
+ jsonSchema: {"type":"object","properties":{"offset":{"type":"number","description":"First line of the page. Defaults to 1."},"limit":{"type":"number","description":"Largest number of lines on the page. Defaults to, and may not exceed, the configured `maxLines`."}},"required":[],"additionalProperties":false},
239
321
  },
240
322
  },
241
323
  ],
@@ -244,45 +326,67 @@ export const TYPERT = {
244
326
  mode: 'strict',
245
327
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileText',
246
328
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_result$schema,
329
+ description: 'the page, the file\'s version at the stat before it, and whether it reaches the last line.',
330
+ jsonSchema: {"type":"object","properties":{"offset":{"type":"number","description":"First line of the page, as requested."},"text":{"type":"string","description":"The page's lines joined by `\\n`, without a terminator after the last one. Empty for a page past the file's last line and for a page holding one empty line; `lines` tells them apart."},"lines":{"type":"number","description":"How many lines the page holds; `0` when `offset` lies past the file's last line."},"eof":{"type":"boolean","description":"Whether the page includes the file's last line."},"absolutePath":{"type":"string","description":"Absolute path of the file in the filesystem's execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address's workspace-relative path resolves to against that Session's root."},"version":{"type":"string","description":"Opaque freshness token at the time of the stat; never parsed."},"bytes":{"type":"number","description":"Byte size of the complete file, when the backend reports it."}},"required":["offset","text","lines","eof","absolutePath","version"],"additionalProperties":true},
247
331
  },
248
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":233,"column":9},
332
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":234,"column":9},
249
333
  },
250
- {
251
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/readBytes',
334
+ 'workspaceFiles/readBytes': {
252
335
  service: 'workspaceFiles',
253
- namespace: 'workspaceFiles',
254
- method: 'readBytes',
336
+ description: 'Read a complete regular file or one byte range without text decoding.',
255
337
  invocation: { kind: 'direct' },
256
338
  parameters: [
257
339
  {
258
340
  name: 'workspaceFileScope',
259
341
  wire: 'workspaceFileScopeId',
342
+ description: 'header-derived workspace root for the Session identity on the wire.',
260
343
  source: 'lookup',
261
344
  lookup: 'workspaceFileScope',
262
345
  codec: {
263
346
  mode: 'strict',
264
347
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
265
348
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema,
349
+ jsonSchema: {"type":"string"},
350
+ },
351
+ strictCodec: {
352
+ mode: 'strict',
353
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
354
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0_strict$schema,
355
+ jsonSchema: {"type":"string"},
266
356
  },
267
357
  },
268
358
  {
269
359
  name: 'path',
270
- wire: 'path',
360
+ description: 'target path, absolute or workspace-relative; relative to the base file\'s directory when provided.',
271
361
  source: 'json',
272
362
  codec: {
273
363
  mode: 'strict',
274
364
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/readBytes:path',
275
365
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1$schema,
366
+ jsonSchema: {"type":"string"},
367
+ },
368
+ strictCodec: {
369
+ mode: 'strict',
370
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/readBytes:path',
371
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1_strict$schema,
372
+ jsonSchema: {"type":"string"},
276
373
  },
277
374
  },
278
375
  {
279
376
  name: 'options',
280
- wire: 'options',
377
+ description: 'optional base file and range; without a range the complete-file cap applies.',
281
378
  source: 'json',
282
379
  codec: {
283
380
  mode: 'strict',
284
381
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceByteReadOptions',
285
382
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2$schema,
383
+ jsonSchema: {"type":"object","properties":{"range":{"type":"object","properties":{"offset":{"type":"number","description":"First byte of the window. Defaults to 0."},"length":{"type":"number","description":"Largest number of bytes in the window. Defaults to, and may not exceed, the configured `maxBytes`."}},"required":[],"additionalProperties":true,"description":"Byte window; omit to read the complete file under the configured `maxFileBytes` cap."},"baseFile":{"type":"string","description":"Base file, absolute or workspace-relative; resolve the relative target from its directory."}},"required":[],"additionalProperties":true},
384
+ },
385
+ strictCodec: {
386
+ mode: 'strict',
387
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceByteReadOptions',
388
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2_strict$schema,
389
+ jsonSchema: {"type":"object","properties":{"range":{"type":"object","properties":{"offset":{"type":"number","description":"First byte of the window. Defaults to 0."},"length":{"type":"number","description":"Largest number of bytes in the window. Defaults to, and may not exceed, the configured `maxBytes`."}},"required":[],"additionalProperties":false,"description":"Byte window; omit to read the complete file under the configured `maxFileBytes` cap."},"baseFile":{"type":"string","description":"Base file, absolute or workspace-relative; resolve the relative target from its directory."}},"required":[],"additionalProperties":false},
286
390
  },
287
391
  },
288
392
  ],
@@ -291,37 +395,52 @@ export const TYPERT = {
291
395
  mode: 'strict',
292
396
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileBytes',
293
397
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema,
398
+ description: 'native bytes with the file\'s version and size at the preceding stat, byte offset, and EOF marker.',
399
+ jsonSchemaError: 'typert tool schema: unsupported selected reference Uint8Array',
294
400
  decode: value => _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema().parse(value),
295
401
  encode: (value, writeBytes) => $encode0(value, writeBytes, [], new Map()),
296
402
  },
297
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":257,"column":9},
403
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":258,"column":9},
298
404
  },
299
- {
300
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/stat',
405
+ 'workspaceFiles/stat': {
301
406
  service: 'workspaceFiles',
302
- namespace: 'workspaceFiles',
303
- method: 'stat',
407
+ description: 'Report one regular file\'s identity, version, and size without its content.',
304
408
  invocation: { kind: 'direct' },
305
409
  parameters: [
306
410
  {
307
411
  name: 'workspaceFileScope',
308
412
  wire: 'workspaceFileScopeId',
413
+ description: 'header-derived workspace root for the Session identity on the wire.',
309
414
  source: 'lookup',
310
415
  lookup: 'workspaceFileScope',
311
416
  codec: {
312
417
  mode: 'strict',
313
418
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
314
419
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema,
420
+ jsonSchema: {"type":"string"},
421
+ },
422
+ strictCodec: {
423
+ mode: 'strict',
424
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
425
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0_strict$schema,
426
+ jsonSchema: {"type":"string"},
315
427
  },
316
428
  },
317
429
  {
318
430
  name: 'path',
319
- wire: 'path',
431
+ description: 'absolute path or path relative to the workspace root; files outside it are allowed.',
320
432
  source: 'json',
321
433
  codec: {
322
434
  mode: 'strict',
323
435
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/stat:path',
324
436
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1$schema,
437
+ jsonSchema: {"type":"string"},
438
+ },
439
+ strictCodec: {
440
+ mode: 'strict',
441
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/stat:path',
442
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1_strict$schema,
443
+ jsonSchema: {"type":"string"},
325
444
  },
326
445
  },
327
446
  ],
@@ -330,10 +449,20 @@ export const TYPERT = {
330
449
  mode: 'strict',
331
450
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileStat',
332
451
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_result$schema,
452
+ description: 'the file\'s absolute path, current version, and byte size.',
453
+ jsonSchema: {"type":"object","properties":{"absolutePath":{"type":"string","description":"Absolute path of the file in the filesystem's execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address's workspace-relative path resolves to against that Session's root."},"version":{"type":"string","description":"Opaque freshness token at the time of the stat; never parsed."},"bytes":{"type":"number","description":"Byte size of the complete file, when the backend reports it."}},"required":["absolutePath","version"],"additionalProperties":true},
333
454
  },
334
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":290,"column":9},
455
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":291,"column":9},
335
456
  },
457
+ },
458
+ }, z)
459
+
460
+ export const TYPERT = {
461
+ package: '@deepseek-ai/dsh-api-workspace-files',
462
+ face: 'host',
463
+ schemas: [
336
464
  ],
465
+ get invocations() { return $remote.descriptors },
337
466
  model: {
338
467
  "services": [
339
468
  {
@@ -1,16 +1,14 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
2
2
  import type {
3
+ RemoteDecoded,
3
4
  RemoteResult,
4
5
  RemoteStreamHandle,
5
- TypertRemoteContribution,
6
+ TypertRemoteInfo,
7
+ TypertRemoteMethod,
6
8
  } from '@deepseek-ai/dsh-typert-protocol'
7
9
  import type { WorkspaceByteReadOptions, WorkspaceDirectoryListing, WorkspaceFileBytes, WorkspaceFileRange, WorkspaceFileStat, WorkspaceFileText, WorkspaceFileWatchFrame } from '@deepseek-ai/dsh-api-workspace-files/types'
8
10
  import type { SessionId } from '@deepseek-ai/dsh-session/types'
9
11
 
10
- type RemoteDecoded<Value> = Value extends Uint8Array ? Uint8Array<ArrayBuffer>
11
- : Value extends string | number | boolean | null | undefined ? Value
12
- : { [Key in keyof Value]: RemoteDecoded<Value[Key]> }
13
-
14
12
  declare module '@deepseek-ai/dsh-typert-protocol' {
15
13
  interface TypertRemoteNamespace$776f726b737061636546696c6573 {
16
14
  changes: (workspaceFileScopeId: SessionId, path: string, signal?: AbortSignal) => RemoteStreamHandle<WorkspaceFileWatchFrame, never>
@@ -31,6 +29,12 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
31
29
  }
32
30
  }
33
31
 
34
- export declare const TYPERT_REMOTE: TypertRemoteContribution
32
+ export declare const TYPERT_REMOTE: TypertRemoteInfo<{
33
+ readonly 'workspaceFiles/changes': TypertRemoteMethod<{ readonly 'workspaceFileScopeId': SessionId; readonly 'path': string }, WorkspaceFileWatchFrame, 'stream'>
34
+ readonly 'workspaceFiles/list': TypertRemoteMethod<{ readonly 'workspaceFileScopeId': SessionId; readonly 'path': string }, WorkspaceDirectoryListing>
35
+ readonly 'workspaceFiles/read': TypertRemoteMethod<{ readonly 'workspaceFileScopeId': SessionId; readonly 'path': string; readonly 'range': WorkspaceFileRange }, WorkspaceFileText>
36
+ readonly 'workspaceFiles/readBytes': TypertRemoteMethod<{ readonly 'workspaceFileScopeId': SessionId; readonly 'path': string; readonly 'options': WorkspaceByteReadOptions }, WorkspaceFileBytes, 'unary', never, RemoteDecoded<WorkspaceFileBytes>>
37
+ readonly 'workspaceFiles/stat': TypertRemoteMethod<{ readonly 'workspaceFileScopeId': SessionId; readonly 'path': string }, WorkspaceFileStat>
38
+ }>
35
39
  export default TYPERT_REMOTE
36
40
  //# sourceMappingURL=typert.remote-client.d.ts.map
@@ -1,8 +1,10 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
+ import { createTypertRemoteInfo } from '@deepseek-ai/dsh-typert-protocol/remote-info'
5
+
4
6
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema$value
5
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
7
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema$value ??= z.string())
6
8
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1$schema$value
7
9
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1$schema$value ??= z.string())
8
10
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_result$schema$value
@@ -11,76 +13,76 @@ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_result$schema
11
13
  }), z.object({
12
14
  'kind': z.literal("change").readonly(),
13
15
  'change': z.union([z.object({
14
- 'absolutePath': z.string().readonly(),
15
- 'version': z.string().readonly(),
16
+ 'absolutePath': z.string().readonly().describe('Absolute target path, in the same form as {@link WorkspaceFileStat.absolutePath}.'),
17
+ 'version': z.string().readonly().describe('Opaque freshness token from the current stat; never parsed.'),
16
18
  }), z.object({
17
- 'absolutePath': z.string().readonly(),
18
- 'absent': z.literal(true).readonly(),
19
+ 'absolutePath': z.string().readonly().describe('Absolute target path, in the same form as {@link WorkspaceFileStat.absolutePath}.'),
20
+ 'absent': z.literal(true).readonly().describe('The target was observed to be gone.'),
19
21
  })]).readonly(),
20
22
  })]))
21
23
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema$value
22
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
24
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema$value ??= z.string())
23
25
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1$schema$value
24
26
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1$schema$value ??= z.string())
25
27
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_result$schema$value
26
28
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_result$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_result$schema$value ??= z.object({
27
- 'path': z.string().readonly(),
29
+ 'path': z.string().readonly().describe('The listed directory as a workspace path, relative to the workspace root and empty for the root itself. A child\'s path is this value joined with {@link WorkspaceDirectoryEntry.name} by `/`.'),
28
30
  'entries': z.array(z.object({
29
- 'name': z.string().readonly(),
30
- 'type': z.union([z.literal("file"), z.literal("directory"), z.literal("other")]).readonly(),
31
- 'size': z.number().readonly().optional(),
32
- })).readonly(),
33
- 'truncated': z.boolean().readonly(),
31
+ 'name': z.string().readonly().describe('Basename inside the listed directory.'),
32
+ 'type': z.union([z.literal("file"), z.literal("directory"), z.literal("other")]).readonly().describe('What the child resolves to. A symlink reports the type of its destination, and `other` covers everything that is neither a regular file nor a directory; `read` still refuses a symlink, so `file` here is a listing fact, not a promise that the content is readable.'),
33
+ 'size': z.number().readonly().optional().describe('Byte size, present only for a regular file whose backend reports it.'),
34
+ })).readonly().describe('Direct children in the backend\'s stable name order, cut to the configured entry cap. Presentation order is the caller\'s choice.'),
35
+ 'truncated': z.boolean().readonly().describe('Whether the entry cap dropped children from {@link entries}.'),
34
36
  }))
35
37
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema$value
36
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
38
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema$value ??= z.string())
37
39
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1$schema$value
38
40
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1$schema$value ??= z.string())
39
41
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2$schema$value
40
42
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2$schema$value ??= z.object({
41
- 'offset': z.number().readonly().optional(),
42
- 'limit': z.number().readonly().optional(),
43
+ 'offset': z.number().readonly().optional().describe('First line of the page. Defaults to 1.'),
44
+ 'limit': z.number().readonly().optional().describe('Largest number of lines on the page. Defaults to, and may not exceed, the configured `maxLines`.'),
43
45
  }))
44
46
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_result$schema$value
45
47
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_result$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_result$schema$value ??= z.object({
46
- 'offset': z.number().readonly(),
47
- 'text': z.string().readonly(),
48
- 'lines': z.number().readonly(),
49
- 'eof': z.boolean().readonly(),
50
- 'absolutePath': z.string().readonly(),
51
- 'version': z.string().readonly(),
52
- 'bytes': z.number().readonly().optional(),
48
+ 'offset': z.number().readonly().describe('First line of the page, as requested.'),
49
+ 'text': z.string().readonly().describe('The page\'s lines joined by `\\n`, without a terminator after the last one. Empty for a page past the file\'s last line and for a page holding one empty line; `lines` tells them apart.'),
50
+ 'lines': z.number().readonly().describe('How many lines the page holds; `0` when `offset` lies past the file\'s last line.'),
51
+ 'eof': z.boolean().readonly().describe('Whether the page includes the file\'s last line.'),
52
+ 'absolutePath': z.string().readonly().describe('Absolute path of the file in the filesystem\'s execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address\'s workspace-relative path resolves to against that Session\'s root.'),
53
+ 'version': z.string().readonly().describe('Opaque freshness token at the time of the stat; never parsed.'),
54
+ 'bytes': z.number().readonly().optional().describe('Byte size of the complete file, when the backend reports it.'),
53
55
  }))
54
56
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema$value
55
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
57
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema$value ??= z.string())
56
58
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1$schema$value
57
59
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1$schema$value ??= z.string())
58
60
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2$schema$value
59
61
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2$schema$value ??= z.object({
60
62
  'range': z.object({
61
- 'offset': z.number().readonly().optional(),
62
- 'length': z.number().readonly().optional(),
63
- }).readonly().optional(),
64
- 'baseFile': z.string().readonly().optional(),
63
+ 'offset': z.number().readonly().optional().describe('First byte of the window. Defaults to 0.'),
64
+ 'length': z.number().readonly().optional().describe('Largest number of bytes in the window. Defaults to, and may not exceed, the configured `maxBytes`.'),
65
+ }).readonly().optional().describe('Byte window; omit to read the complete file under the configured `maxFileBytes` cap.'),
66
+ 'baseFile': z.string().readonly().optional().describe('Base file, absolute or workspace-relative; resolve the relative target from its directory.'),
65
67
  }))
66
68
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema$value
67
69
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema$value ??= z.object({
68
- 'offset': z.number().readonly(),
69
- 'data': z.instanceof(Uint8Array),
70
- 'eof': z.boolean().readonly(),
71
- 'absolutePath': z.string().readonly(),
72
- 'version': z.string().readonly(),
73
- 'bytes': z.number().readonly().optional(),
70
+ 'offset': z.number().readonly().describe('First byte of the window, as requested.'),
71
+ 'data': z.instanceof(Uint8Array).describe('Native file bytes; empty at or past EOF.'),
72
+ 'eof': z.boolean().readonly().describe('Whether the window includes the file\'s last byte.'),
73
+ 'absolutePath': z.string().readonly().describe('Absolute path of the file in the filesystem\'s execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address\'s workspace-relative path resolves to against that Session\'s root.'),
74
+ 'version': z.string().readonly().describe('Opaque freshness token at the time of the stat; never parsed.'),
75
+ 'bytes': z.number().readonly().optional().describe('Byte size of the complete file, when the backend reports it.'),
74
76
  }))
75
77
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema$value
76
- const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
78
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema$value ??= z.string())
77
79
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1$schema$value
78
80
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1$schema$value ??= z.string())
79
81
  let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_result$schema$value
80
82
  const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_result$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_result$schema$value ??= z.object({
81
- 'absolutePath': z.string().readonly(),
82
- 'version': z.string().readonly(),
83
- 'bytes': z.number().readonly().optional(),
83
+ 'absolutePath': z.string().readonly().describe('Absolute path of the file in the filesystem\'s execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address\'s workspace-relative path resolves to against that Session\'s root.'),
84
+ 'version': z.string().readonly().describe('Opaque freshness token at the time of the stat; never parsed.'),
85
+ 'bytes': z.number().readonly().optional().describe('Byte size of the complete file, when the backend reports it.'),
84
86
  }))
85
87
  const $resultSnapshot = (input, path) => {
86
88
  if (input === null || typeof input !== 'object' || input instanceof Uint8Array) return input
@@ -118,37 +120,83 @@ const $encode0 = (value, writeBytes, path, ancestors) => {
118
120
  return value
119
121
  }, true)
120
122
  }
123
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0_strict$schema$value
124
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0_strict$schema$value ??= z.string())
125
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1_strict$schema$value
126
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1_strict$schema$value ??= z.string())
127
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0_strict$schema$value
128
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0_strict$schema$value ??= z.string())
129
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1_strict$schema$value
130
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1_strict$schema$value ??= z.string())
131
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0_strict$schema$value
132
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0_strict$schema$value ??= z.string())
133
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1_strict$schema$value
134
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1_strict$schema$value ??= z.string())
135
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2_strict$schema$value
136
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2_strict$schema$value ??= z.strictObject({
137
+ 'offset': z.number().readonly().optional().describe('First line of the page. Defaults to 1.'),
138
+ 'limit': z.number().readonly().optional().describe('Largest number of lines on the page. Defaults to, and may not exceed, the configured `maxLines`.'),
139
+ }))
140
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0_strict$schema$value
141
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0_strict$schema$value ??= z.string())
142
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1_strict$schema$value
143
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1_strict$schema$value ??= z.string())
144
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2_strict$schema$value
145
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2_strict$schema$value ??= z.strictObject({
146
+ 'range': z.strictObject({
147
+ 'offset': z.number().readonly().optional().describe('First byte of the window. Defaults to 0.'),
148
+ 'length': z.number().readonly().optional().describe('Largest number of bytes in the window. Defaults to, and may not exceed, the configured `maxBytes`.'),
149
+ }).readonly().optional().describe('Byte window; omit to read the complete file under the configured `maxFileBytes` cap.'),
150
+ 'baseFile': z.string().readonly().optional().describe('Base file, absolute or workspace-relative; resolve the relative target from its directory.'),
151
+ }))
152
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0_strict$schema$value
153
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0_strict$schema$value ??= z.string())
154
+ let _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1_strict$schema$value
155
+ const _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1_strict$schema$value ??= z.string())
121
156
 
122
- export const TYPERT_REMOTE = {
157
+ export const TYPERT_REMOTE = createTypertRemoteInfo({
123
158
  package: '@deepseek-ai/dsh-api-workspace-files',
124
- descriptors: [
125
- {
126
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/changes',
159
+ methods: {
160
+ 'workspaceFiles/changes': {
127
161
  service: 'workspaceFiles',
128
- namespace: 'workspaceFiles',
129
- method: 'changes',
162
+ description: 'Watch one file or a directory\'s direct entries in the Session\'s filesystem. Files use the backend\'s read authority; directories remain workspace-scoped.',
130
163
  mode: 'stream',
131
164
  invocation: { kind: 'direct' },
132
165
  parameters: [
133
166
  {
134
167
  name: 'workspaceFileScope',
135
168
  wire: 'workspaceFileScopeId',
169
+ description: 'header-derived workspace root for the Session identity on the wire.',
136
170
  source: 'lookup',
137
171
  lookup: 'workspaceFileScope',
138
172
  codec: {
139
173
  mode: 'strict',
140
174
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
141
175
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0$schema,
176
+ jsonSchema: {"type":"string"},
177
+ },
178
+ strictCodec: {
179
+ mode: 'strict',
180
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
181
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_0_strict$schema,
182
+ jsonSchema: {"type":"string"},
142
183
  },
143
184
  },
144
185
  {
145
186
  name: 'path',
146
- wire: 'path',
187
+ description: 'target path; the Host determines its type and confines directories to the workspace.',
147
188
  source: 'json',
148
189
  codec: {
149
190
  mode: 'strict',
150
191
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/changes:path',
151
192
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1$schema,
193
+ jsonSchema: {"type":"string"},
194
+ },
195
+ strictCodec: {
196
+ mode: 'strict',
197
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/changes:path',
198
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_parameter_1_strict$schema,
199
+ jsonSchema: {"type":"string"},
152
200
  },
153
201
  },
154
202
  ],
@@ -157,35 +205,50 @@ export const TYPERT_REMOTE = {
157
205
  mode: 'strict',
158
206
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileWatchFrame',
159
207
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_changes_result$schema,
208
+ description: '`ready` once the target watch is active, then current metadata for queued and live invalidations.',
209
+ jsonSchemaError: 'typert tool schema: selected union branches overlap or have no required discriminator',
160
210
  },
161
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":340,"column":3},
211
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":341,"column":3},
162
212
  },
163
- {
164
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/list',
213
+ 'workspaceFiles/list': {
165
214
  service: 'workspaceFiles',
166
- namespace: 'workspaceFiles',
167
- method: 'list',
215
+ description: 'List the direct children of one directory inside the Session\'s workspace.',
168
216
  invocation: { kind: 'direct' },
169
217
  parameters: [
170
218
  {
171
219
  name: 'workspaceFileScope',
172
220
  wire: 'workspaceFileScopeId',
221
+ description: 'header-derived workspace root for the Session identity on the wire.',
173
222
  source: 'lookup',
174
223
  lookup: 'workspaceFileScope',
175
224
  codec: {
176
225
  mode: 'strict',
177
226
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
178
227
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0$schema,
228
+ jsonSchema: {"type":"string"},
229
+ },
230
+ strictCodec: {
231
+ mode: 'strict',
232
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
233
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_0_strict$schema,
234
+ jsonSchema: {"type":"string"},
179
235
  },
180
236
  },
181
237
  {
182
238
  name: 'path',
183
- wire: 'path',
239
+ description: 'workspace path, absolute or relative to the workspace root.',
184
240
  source: 'json',
185
241
  codec: {
186
242
  mode: 'strict',
187
243
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/list:path',
188
244
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1$schema,
245
+ jsonSchema: {"type":"string"},
246
+ },
247
+ strictCodec: {
248
+ mode: 'strict',
249
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/list:path',
250
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_parameter_1_strict$schema,
251
+ jsonSchema: {"type":"string"},
189
252
  },
190
253
  },
191
254
  ],
@@ -194,45 +257,67 @@ export const TYPERT_REMOTE = {
194
257
  mode: 'strict',
195
258
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceDirectoryListing',
196
259
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_list_result$schema,
260
+ description: 'the directory\'s children in the backend\'s stable name order, bounded by the entry cap.',
261
+ jsonSchema: {"type":"object","properties":{"path":{"type":"string","description":"The listed directory as a workspace path, relative to the workspace root and empty for the root itself. A child's path is this value joined with {@link WorkspaceDirectoryEntry.name} by `/`."},"entries":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Basename inside the listed directory."},"type":{"type":"string","enum":["file","directory","other"],"description":"What the child resolves to. A symlink reports the type of its destination, and `other` covers everything that is neither a regular file nor a directory; `read` still refuses a symlink, so `file` here is a listing fact, not a promise that the content is readable."},"size":{"type":"number","description":"Byte size, present only for a regular file whose backend reports it."}},"required":["name","type"],"additionalProperties":true},"description":"Direct children in the backend's stable name order, cut to the configured entry cap. Presentation order is the caller's choice."},"truncated":{"type":"boolean","description":"Whether the entry cap dropped children from {@link entries}."}},"required":["path","entries","truncated"],"additionalProperties":true},
197
262
  },
198
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":303,"column":9},
263
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":304,"column":9},
199
264
  },
200
- {
201
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/read',
265
+ 'workspaceFiles/read': {
202
266
  service: 'workspaceFiles',
203
- namespace: 'workspaceFiles',
204
- method: 'read',
267
+ description: 'Read one page of lines from a UTF-8 file readable by the filesystem backend.',
205
268
  invocation: { kind: 'direct' },
206
269
  parameters: [
207
270
  {
208
271
  name: 'workspaceFileScope',
209
272
  wire: 'workspaceFileScopeId',
273
+ description: 'header-derived workspace root for the Session identity on the wire.',
210
274
  source: 'lookup',
211
275
  lookup: 'workspaceFileScope',
212
276
  codec: {
213
277
  mode: 'strict',
214
278
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
215
279
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0$schema,
280
+ jsonSchema: {"type":"string"},
281
+ },
282
+ strictCodec: {
283
+ mode: 'strict',
284
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
285
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_0_strict$schema,
286
+ jsonSchema: {"type":"string"},
216
287
  },
217
288
  },
218
289
  {
219
290
  name: 'path',
220
- wire: 'path',
291
+ description: 'absolute path or path relative to the workspace root; files outside it are allowed.',
221
292
  source: 'json',
222
293
  codec: {
223
294
  mode: 'strict',
224
295
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/read:path',
225
296
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1$schema,
297
+ jsonSchema: {"type":"string"},
298
+ },
299
+ strictCodec: {
300
+ mode: 'strict',
301
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/read:path',
302
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_1_strict$schema,
303
+ jsonSchema: {"type":"string"},
226
304
  },
227
305
  },
228
306
  {
229
307
  name: 'range',
230
- wire: 'range',
308
+ description: 'the line window; omitted fields take the page defaults.',
231
309
  source: 'json',
232
310
  codec: {
233
311
  mode: 'strict',
234
312
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileRange',
235
313
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2$schema,
314
+ jsonSchema: {"type":"object","properties":{"offset":{"type":"number","description":"First line of the page. Defaults to 1."},"limit":{"type":"number","description":"Largest number of lines on the page. Defaults to, and may not exceed, the configured `maxLines`."}},"required":[],"additionalProperties":true},
315
+ },
316
+ strictCodec: {
317
+ mode: 'strict',
318
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileRange',
319
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_parameter_2_strict$schema,
320
+ jsonSchema: {"type":"object","properties":{"offset":{"type":"number","description":"First line of the page. Defaults to 1."},"limit":{"type":"number","description":"Largest number of lines on the page. Defaults to, and may not exceed, the configured `maxLines`."}},"required":[],"additionalProperties":false},
236
321
  },
237
322
  },
238
323
  ],
@@ -241,45 +326,67 @@ export const TYPERT_REMOTE = {
241
326
  mode: 'strict',
242
327
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileText',
243
328
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_read_result$schema,
329
+ description: 'the page, the file\'s version at the stat before it, and whether it reaches the last line.',
330
+ jsonSchema: {"type":"object","properties":{"offset":{"type":"number","description":"First line of the page, as requested."},"text":{"type":"string","description":"The page's lines joined by `\\n`, without a terminator after the last one. Empty for a page past the file's last line and for a page holding one empty line; `lines` tells them apart."},"lines":{"type":"number","description":"How many lines the page holds; `0` when `offset` lies past the file's last line."},"eof":{"type":"boolean","description":"Whether the page includes the file's last line."},"absolutePath":{"type":"string","description":"Absolute path of the file in the filesystem's execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address's workspace-relative path resolves to against that Session's root."},"version":{"type":"string","description":"Opaque freshness token at the time of the stat; never parsed."},"bytes":{"type":"number","description":"Byte size of the complete file, when the backend reports it."}},"required":["offset","text","lines","eof","absolutePath","version"],"additionalProperties":true},
244
331
  },
245
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":233,"column":9},
332
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":234,"column":9},
246
333
  },
247
- {
248
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/readBytes',
334
+ 'workspaceFiles/readBytes': {
249
335
  service: 'workspaceFiles',
250
- namespace: 'workspaceFiles',
251
- method: 'readBytes',
336
+ description: 'Read a complete regular file or one byte range without text decoding.',
252
337
  invocation: { kind: 'direct' },
253
338
  parameters: [
254
339
  {
255
340
  name: 'workspaceFileScope',
256
341
  wire: 'workspaceFileScopeId',
342
+ description: 'header-derived workspace root for the Session identity on the wire.',
257
343
  source: 'lookup',
258
344
  lookup: 'workspaceFileScope',
259
345
  codec: {
260
346
  mode: 'strict',
261
347
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
262
348
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0$schema,
349
+ jsonSchema: {"type":"string"},
350
+ },
351
+ strictCodec: {
352
+ mode: 'strict',
353
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
354
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_0_strict$schema,
355
+ jsonSchema: {"type":"string"},
263
356
  },
264
357
  },
265
358
  {
266
359
  name: 'path',
267
- wire: 'path',
360
+ description: 'target path, absolute or workspace-relative; relative to the base file\'s directory when provided.',
268
361
  source: 'json',
269
362
  codec: {
270
363
  mode: 'strict',
271
364
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/readBytes:path',
272
365
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1$schema,
366
+ jsonSchema: {"type":"string"},
367
+ },
368
+ strictCodec: {
369
+ mode: 'strict',
370
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/readBytes:path',
371
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_1_strict$schema,
372
+ jsonSchema: {"type":"string"},
273
373
  },
274
374
  },
275
375
  {
276
376
  name: 'options',
277
- wire: 'options',
377
+ description: 'optional base file and range; without a range the complete-file cap applies.',
278
378
  source: 'json',
279
379
  codec: {
280
380
  mode: 'strict',
281
381
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceByteReadOptions',
282
382
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2$schema,
383
+ jsonSchema: {"type":"object","properties":{"range":{"type":"object","properties":{"offset":{"type":"number","description":"First byte of the window. Defaults to 0."},"length":{"type":"number","description":"Largest number of bytes in the window. Defaults to, and may not exceed, the configured `maxBytes`."}},"required":[],"additionalProperties":true,"description":"Byte window; omit to read the complete file under the configured `maxFileBytes` cap."},"baseFile":{"type":"string","description":"Base file, absolute or workspace-relative; resolve the relative target from its directory."}},"required":[],"additionalProperties":true},
384
+ },
385
+ strictCodec: {
386
+ mode: 'strict',
387
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceByteReadOptions',
388
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_parameter_2_strict$schema,
389
+ jsonSchema: {"type":"object","properties":{"range":{"type":"object","properties":{"offset":{"type":"number","description":"First byte of the window. Defaults to 0."},"length":{"type":"number","description":"Largest number of bytes in the window. Defaults to, and may not exceed, the configured `maxBytes`."}},"required":[],"additionalProperties":false,"description":"Byte window; omit to read the complete file under the configured `maxFileBytes` cap."},"baseFile":{"type":"string","description":"Base file, absolute or workspace-relative; resolve the relative target from its directory."}},"required":[],"additionalProperties":false},
283
390
  },
284
391
  },
285
392
  ],
@@ -288,37 +395,52 @@ export const TYPERT_REMOTE = {
288
395
  mode: 'strict',
289
396
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileBytes',
290
397
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema,
398
+ description: 'native bytes with the file\'s version and size at the preceding stat, byte offset, and EOF marker.',
399
+ jsonSchemaError: 'typert tool schema: unsupported selected reference Uint8Array',
291
400
  decode: value => _deepseek_ai_dsh_api_workspace_files_workspaceFiles_readBytes_result$schema().parse(value),
292
401
  encode: (value, writeBytes) => $encode0(value, writeBytes, [], new Map()),
293
402
  },
294
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":257,"column":9},
403
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":258,"column":9},
295
404
  },
296
- {
297
- id: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/stat',
405
+ 'workspaceFiles/stat': {
298
406
  service: 'workspaceFiles',
299
- namespace: 'workspaceFiles',
300
- method: 'stat',
407
+ description: 'Report one regular file\'s identity, version, and size without its content.',
301
408
  invocation: { kind: 'direct' },
302
409
  parameters: [
303
410
  {
304
411
  name: 'workspaceFileScope',
305
412
  wire: 'workspaceFileScopeId',
413
+ description: 'header-derived workspace root for the Session identity on the wire.',
306
414
  source: 'lookup',
307
415
  lookup: 'workspaceFileScope',
308
416
  codec: {
309
417
  mode: 'strict',
310
418
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
311
419
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0$schema,
420
+ jsonSchema: {"type":"string"},
421
+ },
422
+ strictCodec: {
423
+ mode: 'strict',
424
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
425
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_0_strict$schema,
426
+ jsonSchema: {"type":"string"},
312
427
  },
313
428
  },
314
429
  {
315
430
  name: 'path',
316
- wire: 'path',
431
+ description: 'absolute path or path relative to the workspace root; files outside it are allowed.',
317
432
  source: 'json',
318
433
  codec: {
319
434
  mode: 'strict',
320
435
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/stat:path',
321
436
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1$schema,
437
+ jsonSchema: {"type":"string"},
438
+ },
439
+ strictCodec: {
440
+ mode: 'strict',
441
+ typeSymbol: '@deepseek-ai/dsh-api-workspace-files#workspaceFiles/stat:path',
442
+ create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_parameter_1_strict$schema,
443
+ jsonSchema: {"type":"string"},
322
444
  },
323
445
  },
324
446
  ],
@@ -327,10 +449,12 @@ export const TYPERT_REMOTE = {
327
449
  mode: 'strict',
328
450
  typeSymbol: '@deepseek-ai/dsh-api-workspace-files/types#WorkspaceFileStat',
329
451
  create: _deepseek_ai_dsh_api_workspace_files_workspaceFiles_stat_result$schema,
452
+ description: 'the file\'s absolute path, current version, and byte size.',
453
+ jsonSchema: {"type":"object","properties":{"absolutePath":{"type":"string","description":"Absolute path of the file in the filesystem's execution world, symlinks resolved: `/`-separated on POSIX, drive-rooted with the platform separator on Windows. What a `dsh-resource://file/absolute/…` address carries, and what a `dsh-resource://file/session/<sessionId>/…` address's workspace-relative path resolves to against that Session's root."},"version":{"type":"string","description":"Opaque freshness token at the time of the stat; never parsed."},"bytes":{"type":"number","description":"Byte size of the complete file, when the backend reports it."}},"required":["absolutePath","version"],"additionalProperties":true},
330
454
  },
331
- sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":290,"column":9},
455
+ sourceLocation: {"file":"packages/api/workspace-files/src/index.ts","line":291,"column":9},
332
456
  },
333
- ],
334
- }
457
+ },
458
+ }, z)
335
459
 
336
460
  export default TYPERT_REMOTE
@@ -179,6 +179,7 @@ let WorkspaceFiles = (() => {
179
179
  scope.typert.lookups.register('workspaceFileScope', {
180
180
  parameter: 'workspaceFileScope',
181
181
  wire: 'workspaceFileScopeId',
182
+ resource: 'session',
182
183
  hostTypeSymbol: '@deepseek-ai/dsh-api-workspace-files#WorkspaceFileScope',
183
184
  wireTypeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
184
185
  resolve: async (sessionId) => {
package/locale/en.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "meta": {
3
+ "title": "api-workspace-files"
4
+ }
5
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "工作区文件接口",
4
+ "description": "提供工作区文件读取、目录列表和文件信息更新。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-api-workspace-files",
3
3
  "description": "Workspace file service and Client resource provider: bounded reads, directory listing, and live metadata over the workspaceFiles Remote namespace",
4
- "version": "0.2.1-alpha.1",
4
+ "version": "0.2.1-alpha.3",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -35,7 +35,8 @@
35
35
  "default": "./lib/typert.remote-client.js"
36
36
  },
37
37
  "./src/*": "./src/*",
38
- "./package.json": "./package.json"
38
+ "./package.json": "./package.json",
39
+ "./locale/*.json": "./locale/*.json"
39
40
  },
40
41
  "dsh": {
41
42
  "client": {
@@ -48,28 +49,30 @@
48
49
  },
49
50
  "license": "MIT",
50
51
  "dependencies": {
51
- "zod": "^4.4.3",
52
- "@deepseek-ai/dsh-deque": "0.2.1-alpha.1",
53
- "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.1",
54
- "@deepseek-ai/schemastery": "~3.18.5-alpha.1"
52
+ "@deepseek-ai/dsh-deque": "0.2.1-alpha.3",
53
+ "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.3",
54
+ "@deepseek-ai/schemastery": "~3.18.5-alpha.2",
55
+ "zod": "4.4.3"
55
56
  },
56
57
  "peerDependencies": {
57
- "@deepseek-ai/cordis": "~4.0.5-alpha.1"
58
+ "@deepseek-ai/cordis": "~4.0.5-alpha.2"
58
59
  },
59
60
  "devDependencies": {
60
- "@deepseek-ai/cordis": "~4.0.5-alpha.1",
61
- "@deepseek-ai/dsh-api-gateway": "0.2.1-alpha.1",
62
- "@deepseek-ai/dsh-client-connection": "0.2.1-alpha.1",
63
- "@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.1",
64
- "@deepseek-ai/dsh-client-resources": "0.2.1-alpha.1",
65
- "@deepseek-ai/dsh-fs": "0.2.1-alpha.1",
66
- "@deepseek-ai/dsh-remote-mock": "0.2.1-alpha.1",
67
- "@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.1",
68
- "@deepseek-ai/dsh-session": "0.2.1-alpha.1",
69
- "@deepseek-ai/dsh-session-persistence": "0.2.1-alpha.1",
70
- "@deepseek-ai/dsh-util-workspace-path": "0.2.1-alpha.1"
61
+ "@deepseek-ai/cordis": "~4.0.5-alpha.2",
62
+ "@deepseek-ai/dsh-api-gateway": "0.2.1-alpha.3",
63
+ "@deepseek-ai/dsh-api-remote-access": "0.2.1-alpha.3",
64
+ "@deepseek-ai/dsh-client-connection": "0.2.1-alpha.3",
65
+ "@deepseek-ai/dsh-client-resources": "0.2.1-alpha.3",
66
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.3",
67
+ "@deepseek-ai/dsh-fs": "0.2.1-alpha.3",
68
+ "@deepseek-ai/dsh-remote-mock": "0.2.1-alpha.3",
69
+ "@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.3",
70
+ "@deepseek-ai/dsh-session": "0.2.1-alpha.3",
71
+ "@deepseek-ai/dsh-session-persistence": "0.2.1-alpha.3",
72
+ "@deepseek-ai/dsh-util-workspace-path": "0.2.1-alpha.3"
71
73
  },
72
74
  "files": [
75
+ "locale/*.json",
73
76
  "lib/index.js",
74
77
  "lib/client.js",
75
78
  "lib/types/**/*.js",