dsh-plugin-streamnest 0.0.0-stage → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/LICENSE +27 -0
  2. package/README.en.md +106 -0
  3. package/README.md +105 -2
  4. package/assets/logo.svg +5 -0
  5. package/assets/reference-projects.json +16 -0
  6. package/assets/screenshots/deepseek-harness-installed.png +0 -0
  7. package/lib/THIRD_PARTY_LICENSES.txt +2068 -0
  8. package/lib/apps/api/src/app.module.js +52 -0
  9. package/lib/apps/api/src/app.module.js.map +1 -0
  10. package/lib/apps/api/src/common/api-error.filter.js +22 -0
  11. package/lib/apps/api/src/common/api-error.filter.js.map +1 -0
  12. package/lib/apps/api/src/common/business-error.js +21 -0
  13. package/lib/apps/api/src/common/business-error.js.map +1 -0
  14. package/lib/apps/api/src/common/network.js +89 -0
  15. package/lib/apps/api/src/common/network.js.map +1 -0
  16. package/lib/apps/api/src/common/process.js +101 -0
  17. package/lib/apps/api/src/common/process.js.map +1 -0
  18. package/lib/apps/api/src/common/validation.js +30 -0
  19. package/lib/apps/api/src/common/validation.js.map +1 -0
  20. package/lib/apps/api/src/create-application.js +65 -0
  21. package/lib/apps/api/src/create-application.js.map +1 -0
  22. package/lib/apps/api/src/main.js +9 -0
  23. package/lib/apps/api/src/main.js.map +1 -0
  24. package/lib/apps/api/src/media/arguments.js +120 -0
  25. package/lib/apps/api/src/media/arguments.js.map +1 -0
  26. package/lib/apps/api/src/media/delete-downloads.js +129 -0
  27. package/lib/apps/api/src/media/delete-downloads.js.map +1 -0
  28. package/lib/apps/api/src/media/directory-sync.js +152 -0
  29. package/lib/apps/api/src/media/directory-sync.js.map +1 -0
  30. package/lib/apps/api/src/media/dto/media.dto.js +268 -0
  31. package/lib/apps/api/src/media/dto/media.dto.js.map +1 -0
  32. package/lib/apps/api/src/media/engines/aria2-progress.js +11 -0
  33. package/lib/apps/api/src/media/engines/aria2-progress.js.map +1 -0
  34. package/lib/apps/api/src/media/engines/aria2.js +85 -0
  35. package/lib/apps/api/src/media/engines/aria2.js.map +1 -0
  36. package/lib/apps/api/src/media/engines/direct-state.js +42 -0
  37. package/lib/apps/api/src/media/engines/direct-state.js.map +1 -0
  38. package/lib/apps/api/src/media/engines/direct.js +269 -0
  39. package/lib/apps/api/src/media/engines/direct.js.map +1 -0
  40. package/lib/apps/api/src/media/engines/js-runtime.js +125 -0
  41. package/lib/apps/api/src/media/engines/js-runtime.js.map +1 -0
  42. package/lib/apps/api/src/media/engines/types.js +2 -0
  43. package/lib/apps/api/src/media/engines/types.js.map +1 -0
  44. package/lib/apps/api/src/media/formats.js +106 -0
  45. package/lib/apps/api/src/media/formats.js.map +1 -0
  46. package/lib/apps/api/src/media/media.controller.js +312 -0
  47. package/lib/apps/api/src/media/media.controller.js.map +1 -0
  48. package/lib/apps/api/src/media/media.engine.js +446 -0
  49. package/lib/apps/api/src/media/media.engine.js.map +1 -0
  50. package/lib/apps/api/src/media/media.service.js +563 -0
  51. package/lib/apps/api/src/media/media.service.js.map +1 -0
  52. package/lib/apps/api/src/media/parsing/browser-paths.js +105 -0
  53. package/lib/apps/api/src/media/parsing/browser-paths.js.map +1 -0
  54. package/lib/apps/api/src/media/parsing/browser-pool.service.js +84 -0
  55. package/lib/apps/api/src/media/parsing/browser-pool.service.js.map +1 -0
  56. package/lib/apps/api/src/media/parsing/cache.service.js +123 -0
  57. package/lib/apps/api/src/media/parsing/cache.service.js.map +1 -0
  58. package/lib/apps/api/src/media/parsing/cookie.service.js +243 -0
  59. package/lib/apps/api/src/media/parsing/cookie.service.js.map +1 -0
  60. package/lib/apps/api/src/media/parsing/platform-data.js +131 -0
  61. package/lib/apps/api/src/media/parsing/platform-data.js.map +1 -0
  62. package/lib/apps/api/src/media/parsing/platform-parser.service.js +230 -0
  63. package/lib/apps/api/src/media/parsing/platform-parser.service.js.map +1 -0
  64. package/lib/apps/api/src/media/parsing/youtube-retry.js +24 -0
  65. package/lib/apps/api/src/media/parsing/youtube-retry.js.map +1 -0
  66. package/lib/apps/api/src/media/thumbnail.service.js +189 -0
  67. package/lib/apps/api/src/media/thumbnail.service.js.map +1 -0
  68. package/lib/apps/api/src/media/wechat/api.js +251 -0
  69. package/lib/apps/api/src/media/wechat/api.js.map +1 -0
  70. package/lib/apps/api/src/media/wechat/decode.js +121 -0
  71. package/lib/apps/api/src/media/wechat/decode.js.map +1 -0
  72. package/lib/apps/api/src/media/wechat/wechat.service.js +61 -0
  73. package/lib/apps/api/src/media/wechat/wechat.service.js.map +1 -0
  74. package/lib/apps/api/src/runtime/assets.json +98 -0
  75. package/lib/apps/api/src/runtime/runtime-archive.js +44 -0
  76. package/lib/apps/api/src/runtime/runtime-archive.js.map +1 -0
  77. package/lib/apps/api/src/runtime/runtime-discovery.js +163 -0
  78. package/lib/apps/api/src/runtime/runtime-discovery.js.map +1 -0
  79. package/lib/apps/api/src/runtime/runtime-installer.js +93 -0
  80. package/lib/apps/api/src/runtime/runtime-installer.js.map +1 -0
  81. package/lib/apps/api/src/runtime/runtime-manager.js +180 -0
  82. package/lib/apps/api/src/runtime/runtime-manager.js.map +1 -0
  83. package/lib/apps/api/src/runtime/runtime-manifest.js +48 -0
  84. package/lib/apps/api/src/runtime/runtime-manifest.js.map +1 -0
  85. package/lib/apps/api/src/runtime/runtime.service.js +2 -0
  86. package/lib/apps/api/src/runtime/runtime.service.js.map +1 -0
  87. package/lib/apps/api/src/storage/legacy-vault.js +66 -0
  88. package/lib/apps/api/src/storage/legacy-vault.js.map +1 -0
  89. package/lib/apps/api/src/storage/task-record.js +87 -0
  90. package/lib/apps/api/src/storage/task-record.js.map +1 -0
  91. package/lib/apps/api/src/storage/vault.store.js +321 -0
  92. package/lib/apps/api/src/storage/vault.store.js.map +1 -0
  93. package/lib/apps/api/src/system/browser-profiles.js +117 -0
  94. package/lib/apps/api/src/system/browser-profiles.js.map +1 -0
  95. package/lib/apps/api/src/system/journal.service.js +87 -0
  96. package/lib/apps/api/src/system/journal.service.js.map +1 -0
  97. package/lib/apps/api/src/system/native.service.js +106 -0
  98. package/lib/apps/api/src/system/native.service.js.map +1 -0
  99. package/lib/apps/api/src/system/system.controller.js +162 -0
  100. package/lib/apps/api/src/system/system.controller.js.map +1 -0
  101. package/lib/apps/api/src/system/system.dto.js +127 -0
  102. package/lib/apps/api/src/system/system.dto.js.map +1 -0
  103. package/lib/apps/api/src/system/system.service.js +191 -0
  104. package/lib/apps/api/src/system/system.service.js.map +1 -0
  105. package/lib/apps/shared/src/brand.js +9 -0
  106. package/lib/apps/shared/src/brand.js.map +1 -0
  107. package/lib/apps/shared/src/browser-profiles.js +15 -0
  108. package/lib/apps/shared/src/browser-profiles.js.map +1 -0
  109. package/lib/apps/shared/src/contracts.js +13 -0
  110. package/lib/apps/shared/src/contracts.js.map +1 -0
  111. package/lib/apps/shared/src/cookies.js +23 -0
  112. package/lib/apps/shared/src/cookies.js.map +1 -0
  113. package/lib/apps/shared/src/links.js +7 -0
  114. package/lib/apps/shared/src/links.js.map +1 -0
  115. package/lib/apps/shared/src/media-files.js +17 -0
  116. package/lib/apps/shared/src/media-files.js.map +1 -0
  117. package/lib/apps/shared/src/messages.js +255 -0
  118. package/lib/apps/shared/src/messages.js.map +1 -0
  119. package/lib/apps/shared/src/parse-errors.js +69 -0
  120. package/lib/apps/shared/src/parse-errors.js.map +1 -0
  121. package/lib/apps/shared/src/preferences.js +26 -0
  122. package/lib/apps/shared/src/preferences.js.map +1 -0
  123. package/lib/apps/shared/src/system.js +7 -0
  124. package/lib/apps/shared/src/system.js.map +1 -0
  125. package/lib/apps/shared/src/task-messages.js +21 -0
  126. package/lib/apps/shared/src/task-messages.js.map +1 -0
  127. package/lib/apps/shared/src/thumbnail.js +16 -0
  128. package/lib/apps/shared/src/thumbnail.js.map +1 -0
  129. package/lib/client.js +43785 -0
  130. package/lib/index.js +1 -0
  131. package/lib/packages/harness/src/index.js +46 -0
  132. package/lib/packages/harness/src/index.js.map +1 -0
  133. package/lib/packages/harness/src/tools/business-errors.js +47 -0
  134. package/lib/packages/harness/src/tools/business-errors.js.map +1 -0
  135. package/lib/packages/harness/src/tools/permissions.js +24 -0
  136. package/lib/packages/harness/src/tools/permissions.js.map +1 -0
  137. package/lib/packages/harness/src/tools/register.js +356 -0
  138. package/lib/packages/harness/src/tools/register.js.map +1 -0
  139. package/lib/packages/harness/src/tools/schemas.js +248 -0
  140. package/lib/packages/harness/src/tools/schemas.js.map +1 -0
  141. package/lib/packages/harness/src/tools/system-schemas.js +88 -0
  142. package/lib/packages/harness/src/tools/system-schemas.js.map +1 -0
  143. package/lib/packages/harness/src/tools/system-tools.js +193 -0
  144. package/lib/packages/harness/src/tools/system-tools.js.map +1 -0
  145. package/licenses/downvid.LICENSE +22 -0
  146. package/licenses/wx_channels_download.LICENSE +35 -0
  147. package/package.json +150 -3
  148. package/packages/harness/cordis.patch.yml +3 -0
  149. package/packages/harness/locale/en.json +6 -0
  150. package/packages/harness/locale/zh.json +6 -0
@@ -0,0 +1,248 @@
1
+ import { DOWNLOAD_MODES, TASK_STATES } from '../../../../apps/shared/src/contracts.js';
2
+ const string = { type: 'string', required: true };
3
+ const number = { type: 'number', required: true };
4
+ export const MESSAGE_PROPERTIES = {
5
+ code: string,
6
+ params: { type: 'object', additionalProperties: true, properties: {}, required: true },
7
+ message: string,
8
+ };
9
+ export const MESSAGE_SCHEMA = {
10
+ type: 'object',
11
+ additionalProperties: false,
12
+ properties: MESSAGE_PROPERTIES,
13
+ };
14
+ export const MEDIA_SCHEMA = {
15
+ type: 'object',
16
+ additionalProperties: false,
17
+ properties: {
18
+ id: string,
19
+ url: string,
20
+ title: string,
21
+ uploader: string,
22
+ platform: string,
23
+ duration: number,
24
+ thumbnail: string,
25
+ parsedAt: string,
26
+ formats: {
27
+ type: 'array',
28
+ required: true,
29
+ items: {
30
+ type: 'object',
31
+ additionalProperties: false,
32
+ properties: {
33
+ id: string,
34
+ label: string,
35
+ extension: string,
36
+ height: number,
37
+ fps: number,
38
+ bytes: number,
39
+ hasAudio: { type: 'boolean', required: true },
40
+ },
41
+ },
42
+ },
43
+ audioTracks: {
44
+ type: 'array',
45
+ required: true,
46
+ items: {
47
+ type: 'object',
48
+ additionalProperties: false,
49
+ properties: {
50
+ id: string,
51
+ language: string,
52
+ label: string,
53
+ formatId: { type: 'string' },
54
+ isM3u8: { type: 'boolean' },
55
+ },
56
+ },
57
+ },
58
+ subtitles: { type: 'array', required: true, items: { type: 'string' } },
59
+ audioFormats: {
60
+ type: 'array',
61
+ items: {
62
+ type: 'object',
63
+ additionalProperties: false,
64
+ properties: {
65
+ id: string,
66
+ label: string,
67
+ extension: string,
68
+ bitrate: number,
69
+ bytes: number,
70
+ },
71
+ },
72
+ },
73
+ parser: { type: 'string' },
74
+ notice: { type: 'string' },
75
+ noticeInfo: MESSAGE_SCHEMA,
76
+ },
77
+ };
78
+ export const TASK_SCHEMA = {
79
+ type: 'object',
80
+ additionalProperties: false,
81
+ properties: {
82
+ id: string,
83
+ media: { ...MEDIA_SCHEMA, required: true },
84
+ request: {
85
+ type: 'object',
86
+ additionalProperties: false,
87
+ required: true,
88
+ properties: {
89
+ mediaId: string,
90
+ mode: { type: 'string', enum: DOWNLOAD_MODES, required: true },
91
+ formatId: { type: 'string' },
92
+ audioTrackId: { type: 'string' },
93
+ audioFormatId: { type: 'string' },
94
+ subtitleFormat: { type: 'string', enum: ['srt', 'source'] },
95
+ subtitles: { type: 'array', items: { type: 'string' } },
96
+ },
97
+ },
98
+ state: { type: 'string', enum: TASK_STATES, required: true },
99
+ progress: number,
100
+ downloadedBytes: number,
101
+ totalBytes: number,
102
+ speed: number,
103
+ eta: number,
104
+ ...MESSAGE_PROPERTIES,
105
+ createdAt: string,
106
+ updatedAt: string,
107
+ outputDirectory: string,
108
+ archived: { type: 'boolean', required: true },
109
+ downloader: { type: 'string', enum: ['native', 'aria2', 'yt-dlp'] },
110
+ artifacts: {
111
+ type: 'array',
112
+ required: true,
113
+ items: {
114
+ type: 'object',
115
+ additionalProperties: false,
116
+ properties: { name: string, bytes: number, exists: { type: 'boolean' } },
117
+ },
118
+ },
119
+ },
120
+ };
121
+ export const DIRECTORY_SYNC_SCHEMA = {
122
+ type: 'object',
123
+ additionalProperties: false,
124
+ properties: {
125
+ directory: string,
126
+ checkedAt: string,
127
+ scanned: { type: 'integer', required: true },
128
+ imported: { type: 'integer', required: true },
129
+ removed: { type: 'integer', required: true },
130
+ updated: { type: 'integer', required: true },
131
+ skipped: { type: 'integer', required: true },
132
+ backupId: { type: 'string' },
133
+ },
134
+ };
135
+ export const DELETE_DOWNLOADS_SCHEMA = {
136
+ type: 'object',
137
+ additionalProperties: false,
138
+ properties: {
139
+ requested: { type: 'integer', required: true },
140
+ deletedFiles: { type: 'integer', required: true },
141
+ missingFiles: { type: 'integer', required: true },
142
+ removedRecords: { type: 'integer', required: true },
143
+ removedTaskIds: { type: 'array', required: true, items: { type: 'string' } },
144
+ failures: {
145
+ type: 'array',
146
+ required: true,
147
+ items: {
148
+ type: 'object',
149
+ additionalProperties: false,
150
+ properties: { taskId: string, ...MESSAGE_PROPERTIES },
151
+ },
152
+ },
153
+ cancelled: { type: 'boolean', required: true },
154
+ backupId: { type: 'string' },
155
+ },
156
+ };
157
+ export const PREFERENCES_SCHEMA = {
158
+ type: 'object',
159
+ additionalProperties: false,
160
+ properties: {
161
+ downloadDirectory: string,
162
+ concurrency: { type: 'integer', required: true },
163
+ fragments: { type: 'integer', required: true },
164
+ proxy: string,
165
+ cookieBrowser: {
166
+ type: 'string',
167
+ enum: ['', 'chrome', 'edge', 'firefox', 'safari', 'brave', 'chromium'],
168
+ required: true,
169
+ },
170
+ cookiesFile: string,
171
+ cookieProfile: { type: 'string' },
172
+ filenameTemplate: { type: 'string' },
173
+ preferredQuality: { type: 'string' },
174
+ language: { type: 'string', enum: ['system', 'zh-CN', 'en-US'] },
175
+ cookieStrategy: { type: 'string', enum: ['selected', 'auto'] },
176
+ acceleration: {
177
+ type: 'object',
178
+ additionalProperties: false,
179
+ properties: {
180
+ enabled: { type: 'boolean', required: true },
181
+ maxConnections: { type: 'integer', required: true },
182
+ aria2Path: string,
183
+ },
184
+ },
185
+ binaryPaths: {
186
+ type: 'object',
187
+ additionalProperties: false,
188
+ required: true,
189
+ properties: {
190
+ 'yt-dlp': { type: 'string' },
191
+ ffmpeg: { type: 'string' },
192
+ ffprobe: { type: 'string' },
193
+ },
194
+ },
195
+ },
196
+ };
197
+ export const INSTALL_SCHEMA = {
198
+ type: 'object',
199
+ additionalProperties: false,
200
+ properties: {
201
+ state: {
202
+ type: 'string',
203
+ enum: ['idle', 'installing', 'completed', 'failed', 'cancelled'],
204
+ required: true,
205
+ },
206
+ ...MESSAGE_PROPERTIES,
207
+ downloaded: number,
208
+ total: number,
209
+ },
210
+ };
211
+ export const RUNTIME_STATUS_SCHEMA = {
212
+ type: 'object',
213
+ additionalProperties: false,
214
+ properties: {
215
+ platform: { type: 'string', required: true },
216
+ managedDir: { type: 'string', required: true },
217
+ results: {
218
+ type: 'array',
219
+ required: true,
220
+ items: {
221
+ type: 'object',
222
+ additionalProperties: false,
223
+ properties: {
224
+ kind: { type: 'string', enum: ['yt-dlp', 'ffmpeg', 'ffprobe'], required: true },
225
+ found: { type: 'boolean', required: true },
226
+ path: { type: 'string' },
227
+ version: { type: 'string' },
228
+ source: { type: 'string' },
229
+ reason: { type: 'string' },
230
+ reasonInfo: MESSAGE_SCHEMA,
231
+ managed: { type: 'boolean' },
232
+ optional: { type: 'boolean' },
233
+ requiredVersion: { type: 'string' },
234
+ stale: { type: 'boolean' },
235
+ },
236
+ },
237
+ },
238
+ },
239
+ };
240
+ export function jsonOutput(schema) {
241
+ return {
242
+ schema,
243
+ render: (_args, value) => [
244
+ { type: 'text', text: JSON.stringify(value) },
245
+ ],
246
+ };
247
+ }
248
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../../../packages/harness/src/tools/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { NATIVE_KINDS } from '../../../../apps/shared/src/system.js';
2
+ import { RUNTIME_STATUS_SCHEMA, MESSAGE_PROPERTIES } from './schemas.js';
3
+ const string = { type: 'string', required: true };
4
+ const number = { type: 'number', required: true };
5
+ const boolean = { type: 'boolean', required: true };
6
+ const strings = { type: 'array', required: true, items: { type: 'string' } };
7
+ const nullableString = { oneOf: [{ type: 'string' }, { type: 'null' }], required: true };
8
+ export const NATIVE_SCHEMA = {
9
+ type: 'object',
10
+ additionalProperties: false,
11
+ properties: {
12
+ id: string,
13
+ kind: { type: 'string', enum: NATIVE_KINDS, required: true },
14
+ purpose: string,
15
+ text: string,
16
+ status: {
17
+ type: 'string',
18
+ enum: ['pending', 'completed', 'cancelled', 'expired'],
19
+ required: true,
20
+ },
21
+ value: string,
22
+ createdAt: string,
23
+ ...MESSAGE_PROPERTIES,
24
+ },
25
+ };
26
+ export const DISK_SCHEMA = {
27
+ type: 'object',
28
+ additionalProperties: false,
29
+ properties: {
30
+ directory: string,
31
+ resolvedDirectory: string,
32
+ free: number,
33
+ total: number,
34
+ checkedAt: string,
35
+ },
36
+ };
37
+ export const DIAGNOSTICS_SCHEMA = {
38
+ type: 'object',
39
+ additionalProperties: false,
40
+ properties: {
41
+ version: string,
42
+ platform: string,
43
+ runtime: { ...RUNTIME_STATUS_SCHEMA, required: true },
44
+ acceleration: {
45
+ type: 'object',
46
+ additionalProperties: false,
47
+ required: true,
48
+ properties: { found: boolean, path: nullableString, version: string, reason: string },
49
+ },
50
+ jsRuntime: {
51
+ type: 'object',
52
+ additionalProperties: false,
53
+ required: true,
54
+ properties: {
55
+ available: boolean,
56
+ path: nullableString,
57
+ kind: {
58
+ oneOf: [{ type: 'string', enum: ['node', 'deno'] }, { type: 'null' }],
59
+ required: true,
60
+ },
61
+ name: string,
62
+ version: { type: 'string' },
63
+ },
64
+ },
65
+ cookies: {
66
+ type: 'object',
67
+ additionalProperties: false,
68
+ required: true,
69
+ properties: {
70
+ enabled: boolean,
71
+ strategy: string,
72
+ manual: boolean,
73
+ availableBrowsers: strings,
74
+ hasSnapshot: boolean,
75
+ snapshotAgeMs: { oneOf: [{ type: 'number' }, { type: 'null' }], required: true },
76
+ lastGoodBrowser: string,
77
+ },
78
+ },
79
+ disk: { ...DISK_SCHEMA, required: true },
80
+ browser: {
81
+ type: 'object',
82
+ additionalProperties: false,
83
+ required: true,
84
+ properties: { path: nullableString, installed: strings },
85
+ },
86
+ },
87
+ };
88
+ //# sourceMappingURL=system-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-schemas.js","sourceRoot":"","sources":["../../../../../packages/harness/src/tools/system-schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ import { defineTool } from '@deepseek-ai/dsh-tools';
2
+ import { NativeRequestDto, BrowserProfilesDto, OpenFileDto, ProxyTestDto, } from '../../../../apps/api/src/system/system.dto.js';
3
+ import { validateDto } from '../../../../apps/api/src/common/validation.js';
4
+ import { NATIVE_KINDS } from '../../../../apps/shared/src/system.js';
5
+ import { jsonOutput, MESSAGE_PROPERTIES } from './schemas.js';
6
+ import { DIAGNOSTICS_SCHEMA, DISK_SCHEMA, NATIVE_SCHEMA } from './system-schemas.js';
7
+ import { authorize } from './permissions.js';
8
+ export function createSystemTools(ctx, { system, native, journal }) {
9
+ return [
10
+ defineTool({
11
+ name: 'media_browser_profiles',
12
+ description: '列出指定浏览器的配置名称和账号标识供用户选择,仅读取账号元数据,不读取 Cookie 或密码。多个账号时必须请用户指定,不代替用户猜测。',
13
+ parameters: {
14
+ browser: {
15
+ type: 'string',
16
+ enum: ['chrome', 'edge', 'firefox', 'safari', 'brave', 'chromium'],
17
+ required: true,
18
+ },
19
+ },
20
+ output: jsonOutput({
21
+ type: 'object',
22
+ additionalProperties: false,
23
+ properties: {
24
+ profiles: {
25
+ type: 'array',
26
+ required: true,
27
+ items: {
28
+ type: 'object',
29
+ additionalProperties: false,
30
+ properties: {
31
+ id: { type: 'string', required: true },
32
+ name: { type: 'string', required: true },
33
+ account: { type: 'string', required: true },
34
+ label: { type: 'string', required: true },
35
+ },
36
+ },
37
+ },
38
+ ...MESSAGE_PROPERTIES,
39
+ permissionRequired: { type: 'boolean' },
40
+ metadataPath: { type: 'string' },
41
+ },
42
+ }),
43
+ isConcurrencySafe: () => true,
44
+ async execute(args, exec) {
45
+ exec.signal.throwIfAborted();
46
+ const dto = await validateDto(BrowserProfilesDto, args);
47
+ return system.browserProfiles(dto.browser);
48
+ },
49
+ }),
50
+ defineTool({
51
+ name: 'media_diagnostics',
52
+ description: '查看工具版本、aria2、Node/Deno、浏览器、Cookie 来源元数据和磁盘空间;不读取 Cookie 内容。',
53
+ parameters: { force: { type: 'boolean' } },
54
+ output: jsonOutput(DIAGNOSTICS_SCHEMA),
55
+ timeoutMs: 120_000,
56
+ execute: (args, exec) => system.diagnostics(args.force, exec.signal),
57
+ }),
58
+ defineTool({
59
+ name: 'media_disk_space',
60
+ description: '查看拾流下载目录所在磁盘的可用及总空间,单位为字节。',
61
+ parameters: {},
62
+ output: jsonOutput(DISK_SCHEMA),
63
+ isConcurrencySafe: () => true,
64
+ execute: (_args, exec) => {
65
+ exec.signal.throwIfAborted();
66
+ return system.diskSpace();
67
+ },
68
+ }),
69
+ defineTool({
70
+ name: 'media_proxy_test',
71
+ description: '测试已配置或明确指定的 HTTP(S)/SOCKS5 代理与公开网站连通性,返回延迟和状态;留空代理表示直连。',
72
+ parameters: { proxy: { type: 'string' }, url: { type: 'string' } },
73
+ output: jsonOutput({
74
+ type: 'object',
75
+ additionalProperties: false,
76
+ properties: {
77
+ connected: { type: 'boolean', required: true },
78
+ latencyMs: { type: 'number', required: true },
79
+ status: { type: 'integer', required: true },
80
+ ...MESSAGE_PROPERTIES,
81
+ },
82
+ }),
83
+ timeoutMs: 30_000,
84
+ async execute(args, exec) {
85
+ const dto = await validateDto(ProxyTestDto, args);
86
+ return system.proxyTest(dto.proxy, dto.url, exec.signal);
87
+ },
88
+ }),
89
+ defineTool({
90
+ name: 'media_native_request',
91
+ description: '请求用户在拾流页面选择本机文件/目录,或确认读取剪贴板中的媒体链接、写入指定文本。返回 pending 后用 media_native_result 查询;不会擅自读取或返回剪贴板其他内容。',
92
+ parameters: {
93
+ kind: { type: 'string', enum: NATIVE_KINDS, required: true },
94
+ purpose: { type: 'string', required: true },
95
+ text: { type: 'string' },
96
+ },
97
+ output: jsonOutput(NATIVE_SCHEMA),
98
+ async execute(args, exec) {
99
+ const dto = await validateDto(NativeRequestDto, args);
100
+ await authorize(ctx, exec, `请求用户确认原生操作:${dto.kind}。`);
101
+ return native.create(dto.kind, dto.purpose, dto.text);
102
+ },
103
+ }),
104
+ defineTool({
105
+ name: 'media_native_result',
106
+ description: '查看此前原生选择/剪贴板操作的用户确认结果。pending 时提示用户打开拾流完成,cancelled/expired 时不继续。',
107
+ parameters: { id: { type: 'string', required: true } },
108
+ output: jsonOutput(NATIVE_SCHEMA),
109
+ isConcurrencySafe: () => true,
110
+ async execute(args, exec) {
111
+ exec.signal.throwIfAborted();
112
+ return native.get(args.id);
113
+ },
114
+ }),
115
+ defineTool({
116
+ name: 'media_file_open',
117
+ description: '用本机默认程序打开已完成文件、在文件管理器定位,或打开任务/下载/运行工具/日志目录。不会读取文件内容。',
118
+ parameters: {
119
+ target: {
120
+ type: 'string',
121
+ enum: ['artifact', 'reveal', 'task-folder', 'download-directory', 'runtime', 'logs'],
122
+ required: true,
123
+ },
124
+ taskId: { type: 'string' },
125
+ index: { type: 'integer' },
126
+ },
127
+ output: jsonOutput({
128
+ type: 'object',
129
+ additionalProperties: false,
130
+ properties: {
131
+ accepted: { type: 'boolean', required: true },
132
+ target: { type: 'string', required: true },
133
+ path: { type: 'string', required: true },
134
+ },
135
+ }),
136
+ async execute(args, exec) {
137
+ const dto = await validateDto(OpenFileDto, args);
138
+ await authorize(ctx, exec, '在本机打开所选媒体文件或目录。');
139
+ return system.open(dto.target, dto.taskId, dto.index);
140
+ },
141
+ }),
142
+ defineTool({
143
+ name: 'media_logs_get',
144
+ description: '读取拾流最近最多 500 行脱敏事件日志,不含 URL、Cookie 或原始进程输出。',
145
+ parameters: { limit: { type: 'integer' } },
146
+ output: jsonOutput({
147
+ type: 'object',
148
+ additionalProperties: false,
149
+ properties: {
150
+ lines: { type: 'array', required: true, items: { type: 'string' } },
151
+ bytes: { type: 'number', required: true },
152
+ error: { type: 'string', required: true },
153
+ },
154
+ }),
155
+ execute: (args, exec) => {
156
+ exec.signal.throwIfAborted();
157
+ return journal.read(args.limit);
158
+ },
159
+ }),
160
+ defineTool({
161
+ name: 'media_logs_clear',
162
+ description: '清空当前日志,将原内容保存为本机备份;不操作媒体文件。',
163
+ parameters: {},
164
+ output: jsonOutput({
165
+ type: 'object',
166
+ additionalProperties: false,
167
+ properties: {
168
+ cleared: { type: 'boolean', required: true },
169
+ backup: { type: 'string', required: true },
170
+ },
171
+ }),
172
+ async execute(_args, exec) {
173
+ await authorize(ctx, exec, '清空拾流当前日志并保留备份。');
174
+ return journal.clear();
175
+ },
176
+ }),
177
+ defineTool({
178
+ name: 'media_error_report',
179
+ description: '生成可复制的脱敏反馈草稿,仅含错误分类和版本。不会自动提交 Issue 或发送给任何人。',
180
+ parameters: { taskId: { type: 'string' } },
181
+ output: jsonOutput({
182
+ type: 'object',
183
+ additionalProperties: false,
184
+ properties: {
185
+ title: { type: 'string', required: true },
186
+ body: { type: 'string', required: true },
187
+ },
188
+ }),
189
+ execute: (args) => system.errorReport(args.taskId),
190
+ }),
191
+ ];
192
+ }
193
+ //# sourceMappingURL=system-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-tools.js","sourceRoot":"","sources":["../../../../../packages/harness/src/tools/system-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Videdown (cshuangyy)
4
+ Copyright (c) 2026 DownVid (yxxbc)
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
@@ -0,0 +1,35 @@
1
+ "Commons Clause" License Condition v1.0
2
+
3
+ License: MIT License
4
+ Licensor: ltaoo
5
+ Software: wx_channels_download (including binaries and distributions under the names "wx_channels_download.exe", "wx_channel", "wx_video_download", and any substantially similar names)
6
+
7
+ The Software is provided to you by the Licensor under the License, as defined below, subject to the following condition.
8
+
9
+ Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software.
10
+
11
+ For the purposes of the foregoing, "Sell" means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration, a product or service whose value derives, entirely or substantially, from the functionality of the Software. Any licensee who wishes to Sell the Software must obtain a separate license from the Licensor.
12
+
13
+ ---
14
+
15
+ MIT License
16
+
17
+ Copyright (c) 2025 ltaoo
18
+
19
+ Permission is hereby granted, free of charge, to any person obtaining a copy
20
+ of this software and associated documentation files (the "Software"), to deal
21
+ in the Software without restriction, including without limitation the rights
22
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23
+ copies of the Software, and to permit persons to whom the Software is
24
+ furnished to do so, subject to the following conditions:
25
+
26
+ The above copyright notice and this permission notice shall be included in all
27
+ copies or substantial portions of the Software.
28
+
29
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
35
+ SOFTWARE.