@motrix/mdxp 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +53 -1
  2. package/README.zh-CN.md +45 -1
  3. package/dist/connection.d.ts +3 -1
  4. package/dist/connection.d.ts.map +1 -1
  5. package/dist/connection.js.map +1 -1
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/methods.d.ts +23 -21
  12. package/dist/methods.d.ts.map +1 -1
  13. package/dist/methods.js +2 -0
  14. package/dist/methods.js.map +1 -1
  15. package/dist/schemas/download-add.d.ts +7 -7
  16. package/dist/schemas/download-directories.d.ts +12 -0
  17. package/dist/schemas/download-directories.d.ts.map +1 -0
  18. package/dist/schemas/download-directories.js +15 -0
  19. package/dist/schemas/download-directories.js.map +1 -0
  20. package/dist/schemas/download.d.ts +9 -8
  21. package/dist/schemas/download.d.ts.map +1 -1
  22. package/dist/schemas/download.js +3 -0
  23. package/dist/schemas/download.js.map +1 -1
  24. package/dist/schemas/engine.d.ts +6 -6
  25. package/dist/schemas/events.d.ts +1 -1
  26. package/dist/schemas/index.d.ts +1 -0
  27. package/dist/schemas/index.d.ts.map +1 -1
  28. package/dist/schemas/index.js +1 -0
  29. package/dist/schemas/index.js.map +1 -1
  30. package/dist/schemas/initialize.d.ts +6 -4
  31. package/dist/schemas/initialize.d.ts.map +1 -1
  32. package/dist/schemas/initialize.js +4 -0
  33. package/dist/schemas/initialize.js.map +1 -1
  34. package/dist/schemas/resource.d.ts +2 -2
  35. package/dist/schemas/selection.d.ts +8 -8
  36. package/dist/schemas/task.d.ts +38 -32
  37. package/dist/schemas/task.d.ts.map +1 -1
  38. package/dist/schemas/task.js +5 -0
  39. package/dist/schemas/task.js.map +1 -1
  40. package/dist/schemas/url.d.ts +9 -9
  41. package/dist/tools.d.ts.map +1 -1
  42. package/dist/tools.js +16 -1
  43. package/dist/tools.js.map +1 -1
  44. package/dist/transports/stdio.js.map +1 -1
  45. package/dist/transports/ws.js.map +1 -1
  46. package/dist/types.d.ts +2 -1
  47. package/dist/types.d.ts.map +1 -1
  48. package/package.json +8 -8
  49. package/src/connection.ts +6 -0
  50. package/src/index.ts +5 -1
  51. package/src/methods.ts +2 -0
  52. package/src/schemas/download-directories.ts +26 -0
  53. package/src/schemas/download.ts +3 -0
  54. package/src/schemas/index.ts +1 -0
  55. package/src/schemas/initialize.ts +4 -0
  56. package/src/schemas/task.ts +8 -0
  57. package/src/tools.ts +20 -0
  58. package/src/types.ts +6 -0
package/src/connection.ts CHANGED
@@ -11,6 +11,8 @@ import type {
11
11
  DownloadAddResult,
12
12
  DownloadCancelParams,
13
13
  DownloadCancelResult,
14
+ DownloadDirectoriesParams,
15
+ DownloadDirectoriesResult,
14
16
  DownloadSubmitParams,
15
17
  DownloadSubmitResult,
16
18
  EngineStatusParams,
@@ -36,6 +38,8 @@ import type {
36
38
  TaskRemoveResult,
37
39
  TaskResumeParams,
38
40
  TaskResumeResult,
41
+ TaskRevealParams,
42
+ TaskRevealResult,
39
43
  UrlProbeParams,
40
44
  UrlProbeResult,
41
45
  UrlResolveParams,
@@ -46,6 +50,7 @@ import type {
46
50
  export interface MdxpRequestMap {
47
51
  'motrix/initialize': [InitializeParams, InitializeResult]
48
52
  'download/submit': [DownloadSubmitParams, DownloadSubmitResult]
53
+ 'download/directories': [DownloadDirectoriesParams, DownloadDirectoriesResult]
49
54
  'download/cancel': [DownloadCancelParams, DownloadCancelResult]
50
55
  'url/probe': [UrlProbeParams, UrlProbeResult]
51
56
  'url/resolve': [UrlResolveParams, UrlResolveResult]
@@ -57,6 +62,7 @@ export interface MdxpRequestMap {
57
62
  'task/pause': [TaskPauseParams, TaskPauseResult]
58
63
  'task/resume': [TaskResumeParams, TaskResumeResult]
59
64
  'task/remove': [TaskRemoveParams, TaskRemoveResult]
65
+ 'task/reveal': [TaskRevealParams, TaskRevealResult]
60
66
  'stats/get': [StatsGetParams, StatsResult]
61
67
  'engine/status': [EngineStatusParams, EngineStatusResult]
62
68
  }
package/src/index.ts CHANGED
@@ -11,7 +11,11 @@ export type {
11
11
  MessageReader,
12
12
  MessageWriter,
13
13
  } from 'vscode-jsonrpc'
14
- export { CancellationToken, CancellationTokenSource } from 'vscode-jsonrpc'
14
+ export {
15
+ CancellationToken,
16
+ CancellationTokenSource,
17
+ ResponseError,
18
+ } from 'vscode-jsonrpc'
15
19
  export type {
16
20
  MdxpConnection,
17
21
  MdxpNotificationMap,
package/src/methods.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  export const Methods = Object.freeze({
3
3
  MotrixInitialize: 'motrix/initialize',
4
4
  DownloadSubmit: 'download/submit',
5
+ DownloadDirectories: 'download/directories',
5
6
  DownloadCancel: 'download/cancel',
6
7
  UrlProbe: 'url/probe',
7
8
  UrlResolve: 'url/resolve',
@@ -13,6 +14,7 @@ export const Methods = Object.freeze({
13
14
  TaskPause: 'task/pause',
14
15
  TaskResume: 'task/resume',
15
16
  TaskRemove: 'task/remove',
17
+ TaskReveal: 'task/reveal',
16
18
  StatsGet: 'stats/get',
17
19
  EngineStatus: 'engine/status',
18
20
  } as const)
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod'
2
+
3
+ /** Native paths belong to the target Motrix host, never the browser machine. */
4
+ export const DownloadDirectoryPathSchema = z
5
+ .string()
6
+ .min(1)
7
+ .max(4096)
8
+ .refine(
9
+ (value) => !value.includes('\0'),
10
+ 'Directory paths must not contain NUL'
11
+ )
12
+
13
+ export const DownloadDirectoriesParamsSchema = z.object({}).strict()
14
+ export const DownloadDirectoriesResultSchema = z.object({
15
+ /** Null when the configured default is currently unavailable. */
16
+ defaultSaveDir: DownloadDirectoryPathSchema.nullable(),
17
+ favorites: z.array(DownloadDirectoryPathSchema).max(20),
18
+ recent: z.array(DownloadDirectoryPathSchema).max(10),
19
+ })
20
+
21
+ export type DownloadDirectoriesParams = z.infer<
22
+ typeof DownloadDirectoriesParamsSchema
23
+ >
24
+ export type DownloadDirectoriesResult = z.infer<
25
+ typeof DownloadDirectoriesResultSchema
26
+ >
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod'
2
+ import { DownloadDirectoryPathSchema } from './download-directories.js'
2
3
  import { SelectionSchema } from './selection.js'
3
4
 
4
5
  export const DownloadSubmitParamsSchema = z.object({
@@ -9,6 +10,8 @@ export const DownloadSubmitParamsSchema = z.object({
9
10
  siteHint: z.string().max(64).optional(),
10
11
  }),
11
12
  selection: SelectionSchema,
13
+ /** Only when capabilities.downloadDirectories is true; must be a listed path. */
14
+ saveDir: DownloadDirectoryPathSchema.optional(),
12
15
  meta: z.object({
13
16
  suggestedFilename: z.string().max(255),
14
17
  qualityLabel: z.string().max(64),
@@ -1,5 +1,6 @@
1
1
  export * from './download.js'
2
2
  export * from './download-add.js'
3
+ export * from './download-directories.js'
3
4
  export * from './engine.js'
4
5
  export * from './events.js'
5
6
  export * from './initialize.js'
@@ -70,6 +70,10 @@ const ServerCapabilitiesSchema = z.object({
70
70
  selectionKinds: z.array(z.enum(['direct', 'hls', 'dash', 'mux'])),
71
71
  progress: z.boolean(),
72
72
  cancellation: z.boolean(),
73
+ /** Optional on the wire for protocol 1.0 compatibility; absent is false. */
74
+ taskReveal: z.boolean().optional().default(false),
75
+ /** Enables download/directories AND download/submit.saveDir; absent is false. */
76
+ downloadDirectories: z.boolean().optional(),
73
77
  })
74
78
 
75
79
  export const InitializeResultSchema = z.object({
@@ -101,6 +101,12 @@ export const TaskRemoveParamsSchema = z.strictObject({
101
101
  deleteFiles: z.boolean().optional(),
102
102
  })
103
103
 
104
+ // ─── task/reveal ──────────────────────────────────────────────
105
+ /** Ask the host to reveal a task's output in the platform file manager. */
106
+ export const TaskRevealParamsSchema = z.strictObject({
107
+ taskId: z.string().min(1),
108
+ })
109
+
104
110
  export type MdxpTaskStatus = z.infer<typeof MdxpTaskStatusSchema>
105
111
  export type MdxpTaskType = z.infer<typeof MdxpTaskTypeSchema>
106
112
  export type MdxpTask = z.infer<typeof MdxpTaskSchema>
@@ -115,3 +121,5 @@ export type TaskResumeParams = z.infer<typeof TaskResumeParamsSchema>
115
121
  export type TaskResumeResult = OkResult
116
122
  export type TaskRemoveParams = z.infer<typeof TaskRemoveParamsSchema>
117
123
  export type TaskRemoveResult = OkResult
124
+ export type TaskRevealParams = z.infer<typeof TaskRevealParamsSchema>
125
+ export type TaskRevealResult = OkResult
package/src/tools.ts CHANGED
@@ -10,6 +10,10 @@ import {
10
10
  DownloadAddParamsSchema,
11
11
  DownloadAddResultSchema,
12
12
  } from './schemas/download-add.js'
13
+ import {
14
+ DownloadDirectoriesParamsSchema,
15
+ DownloadDirectoriesResultSchema,
16
+ } from './schemas/download-directories.js'
13
17
  import {
14
18
  EngineStatusParamsSchema,
15
19
  EngineStatusResultSchema,
@@ -32,6 +36,7 @@ import {
32
36
  TaskPauseParamsSchema,
33
37
  TaskRemoveParamsSchema,
34
38
  TaskResumeParamsSchema,
39
+ TaskRevealParamsSchema,
35
40
  } from './schemas/task.js'
36
41
 
37
42
  export interface MdxpToolDef {
@@ -77,6 +82,14 @@ export const Tools: Readonly<Record<string, MdxpToolDef>> = {
77
82
  resultSchema: SystemPingResultSchema,
78
83
  agentFacing: false,
79
84
  },
85
+ [Methods.DownloadDirectories]: {
86
+ method: Methods.DownloadDirectories,
87
+ description:
88
+ 'List available default, favorite and recent directories on the Motrix host.',
89
+ paramsSchema: DownloadDirectoriesParamsSchema,
90
+ resultSchema: DownloadDirectoriesResultSchema,
91
+ agentFacing: false,
92
+ },
80
93
  [Methods.DownloadSubmit]: {
81
94
  method: Methods.DownloadSubmit,
82
95
  description:
@@ -135,6 +148,13 @@ export const Tools: Readonly<Record<string, MdxpToolDef>> = {
135
148
  resultSchema: OkResultSchema,
136
149
  agentFacing: true,
137
150
  },
151
+ [Methods.TaskReveal]: {
152
+ method: Methods.TaskReveal,
153
+ description: "Reveal a task's output in the platform file manager.",
154
+ paramsSchema: TaskRevealParamsSchema,
155
+ resultSchema: OkResultSchema,
156
+ agentFacing: false,
157
+ },
138
158
  [Methods.StatsGet]: {
139
159
  method: Methods.StatsGet,
140
160
  description: 'Get aggregate global stats (speeds + task counts).',
package/src/types.ts CHANGED
@@ -8,6 +8,10 @@ export type {
8
8
  DownloadAddParams,
9
9
  DownloadAddResult,
10
10
  } from './schemas/download-add.js'
11
+ export type {
12
+ DownloadDirectoriesParams,
13
+ DownloadDirectoriesResult,
14
+ } from './schemas/download-directories.js'
11
15
  export type {
12
16
  EngineFeatureReport,
13
17
  EngineState,
@@ -54,6 +58,8 @@ export type {
54
58
  TaskRemoveResult,
55
59
  TaskResumeParams,
56
60
  TaskResumeResult,
61
+ TaskRevealParams,
62
+ TaskRevealResult,
57
63
  } from './schemas/task.js'
58
64
  export type {
59
65
  UrlProbeParams,