@lincyaw/dsh 0.0.0-stage → 0.2.0-rc.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 (68) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +26 -2
  3. package/build/client.mjs +72 -0
  4. package/build/dist/client.js +1390 -0
  5. package/build/dist/client.json +274 -0
  6. package/build/ensure.mjs +39 -0
  7. package/cordis.patch.yml +26 -0
  8. package/entries/context.mjs +7 -0
  9. package/entries/events.mjs +7 -0
  10. package/entries/load.mjs +11 -0
  11. package/entries/policy.mjs +7 -0
  12. package/entries/routes.mjs +7 -0
  13. package/entries/service.mjs +7 -0
  14. package/entries/skills.mjs +7 -0
  15. package/entries/telemetry.mjs +7 -0
  16. package/entries/tools.mjs +7 -0
  17. package/entries/turns.mjs +7 -0
  18. package/entries/workbench.mjs +9 -0
  19. package/entries/workspaces.mjs +7 -0
  20. package/package.json +108 -3
  21. package/profile.patch.yml +25 -0
  22. package/src/client/RootLayout.tsx +332 -0
  23. package/src/client/agent-requests.ts +64 -0
  24. package/src/client/assistant-setup.tsx +185 -0
  25. package/src/client/author-settings.ts +57 -0
  26. package/src/client/brand.tsx +97 -0
  27. package/src/client/contract.ts +82 -0
  28. package/src/client/document-context.ts +39 -0
  29. package/src/client/dsh.d.ts +155 -0
  30. package/src/client/fallback.tsx +53 -0
  31. package/src/client/frame.css +505 -0
  32. package/src/client/index.tsx +157 -0
  33. package/src/client/launch-target.ts +89 -0
  34. package/src/client/layout.ts +230 -0
  35. package/src/client/mascot.tsx +37 -0
  36. package/src/client/messages.ts +171 -0
  37. package/src/client/navigation-shell.tsx +74 -0
  38. package/src/client/observable.ts +16 -0
  39. package/src/client/paths.ts +17 -0
  40. package/src/client/root-reload.ts +163 -0
  41. package/src/client/runtime-diagnostics.tsx +228 -0
  42. package/src/client/settings-opener.ts +26 -0
  43. package/src/client/source-links.tsx +71 -0
  44. package/src/client/speech-settings.tsx +7 -0
  45. package/src/client/styles.css +45 -0
  46. package/src/client/theme.ts +151 -0
  47. package/src/client/workbench-keys.ts +36 -0
  48. package/src/client/workspace-events.ts +114 -0
  49. package/src/node/bindings.ts +345 -0
  50. package/src/node/context.ts +166 -0
  51. package/src/node/dsh-types.ts +124 -0
  52. package/src/node/fake-collector.ts +46 -0
  53. package/src/node/fake-model.ts +80 -0
  54. package/src/node/launch.ts +176 -0
  55. package/src/node/policy.ts +56 -0
  56. package/src/node/routes.ts +56 -0
  57. package/src/node/server-routes.ts +3 -0
  58. package/src/node/service.ts +131 -0
  59. package/src/node/skills.ts +24 -0
  60. package/src/node/telemetry.ts +126 -0
  61. package/src/node/tools.ts +66 -0
  62. package/src/node/turns.ts +176 -0
  63. package/src/node/watchdog.mjs +36 -0
  64. package/src/node/workbench.ts +88 -0
  65. package/src/node/workspace-events.ts +167 -0
  66. package/src/node/workspaces.ts +10 -0
  67. package/src/workspace-events.ts +31 -0
  68. package/web.patch.yml +161 -0
@@ -0,0 +1,274 @@
1
+ {
2
+ "inputs": [
3
+ "../design/src/assets/mascot/cat.png",
4
+ "../design/src/assets/mascot/cat-light.png",
5
+ "../design/src/assets/mascot/sheet.ts",
6
+ "../design/src/assets/mascot.ts",
7
+ "../design/src/icons.ts",
8
+ "../design/src/tokens.ts",
9
+ "../design/src/assets/brand.ts",
10
+ "../design/src/index.ts",
11
+ "../workbench/src/base-controls.tsx",
12
+ "../workbench/src/mascot-preference.ts",
13
+ "../workbench/src/sortable-list.tsx",
14
+ "../workbench/src/components.tsx",
15
+ "../kernel/src/contracts/service.ts",
16
+ "../kernel/src/contracts/agent.ts",
17
+ "../kernel/src/contracts/authoring.ts",
18
+ "../kernel/src/contracts/document-reads.ts",
19
+ "../kernel/src/contracts/anchors.ts",
20
+ "../kernel/src/contracts/checks.ts",
21
+ "../kernel/src/contracts/classroom.ts",
22
+ "../kernel/src/contracts/diagnostics.ts",
23
+ "../kernel/src/contracts/execution.ts",
24
+ "../kernel/src/contracts/locale.ts",
25
+ "../kernel/src/contracts/offline.ts",
26
+ "../kernel/src/contracts/operations.ts",
27
+ "../kernel/src/contracts/plugin.ts",
28
+ "../kernel/src/contracts/presenter-panels.ts",
29
+ "../kernel/src/contracts/production.ts",
30
+ "../kernel/src/contracts/production-assets.ts",
31
+ "../kernel/src/contracts/document-audio.ts",
32
+ "../kernel/src/contracts/document-voice.ts",
33
+ "../kernel/src/contracts/voiceover-execution.ts",
34
+ "../kernel/src/errors.ts",
35
+ "../kernel/src/contracts/preview.ts",
36
+ "../kernel/src/contracts/document.ts",
37
+ "../kernel/src/contracts/server.ts",
38
+ "../kernel/src/contracts/speech.ts",
39
+ "../kernel/src/contracts/speech-settings.ts",
40
+ "../kernel/src/contracts/transcription.ts",
41
+ "../kernel/src/contracts/transcription-adoption.ts",
42
+ "../kernel/src/contracts/voice.ts",
43
+ "../kernel/src/contracts/steps.ts",
44
+ "../kernel/src/contracts/workspace.ts",
45
+ "../kernel/src/contracts/document-comments.ts",
46
+ "../kernel/src/contracts/authoring-actions.ts",
47
+ "../kernel/src/contracts/document-history.ts",
48
+ "../kernel/src/contracts/authoring-clients.ts",
49
+ "../kernel/src/contracts/projects.ts",
50
+ "../kernel/src/contracts/document-image.ts",
51
+ "../kernel/src/contracts.ts",
52
+ "../kernel/src/document-operations.ts",
53
+ "../kernel/src/document-schema.ts",
54
+ "../kernel/src/authoring.ts",
55
+ "../kernel/src/document-pages.ts",
56
+ "../kernel/src/fingerprint.ts",
57
+ "../kernel/src/document-reads.ts",
58
+ "../kernel/src/document-voices.ts",
59
+ "../kernel/src/document-colors.ts",
60
+ "../kernel/src/access.ts",
61
+ "../kernel/src/document-comments.ts",
62
+ "../kernel/src/document-caption-timings.ts",
63
+ "../kernel/src/parameters.ts",
64
+ "../kernel/src/document.ts",
65
+ "../kernel/src/document-components.ts",
66
+ "../kernel/src/document-authoring-actions.ts",
67
+ "../kernel/src/transcription-adoption.ts",
68
+ "../kernel/src/recording.ts",
69
+ "../kernel/src/ir.ts",
70
+ "../kernel/src/anchors.ts",
71
+ "../kernel/src/diagnostics.ts",
72
+ "../kernel/src/blocks.ts",
73
+ "../kernel/src/checks.ts",
74
+ "../kernel/src/events.ts",
75
+ "../kernel/src/execution.ts",
76
+ "../kernel/src/git.ts",
77
+ "../kernel/src/html.ts",
78
+ "../kernel/src/requests.ts",
79
+ "../kernel/src/step-keys.ts",
80
+ "../kernel/src/follow.ts",
81
+ "../kernel/src/logging.ts",
82
+ "../kernel/src/services.ts",
83
+ "../kernel/src/kernel.ts",
84
+ "../kernel/src/locale.ts",
85
+ "../kernel/src/lock.ts",
86
+ "../kernel/src/lower-myst.ts",
87
+ "../kernel/src/keyboard.ts",
88
+ "../kernel/src/preview-frame.ts",
89
+ "../kernel/src/preview-edit.ts",
90
+ "../kernel/src/props.ts",
91
+ "../kernel/src/reading.ts",
92
+ "../kernel/src/urls.ts",
93
+ "../kernel/src/page-source.ts",
94
+ "../kernel/src/published.ts",
95
+ "../kernel/src/slides.ts",
96
+ "../kernel/src/views.ts",
97
+ "../kernel/src/responses.ts",
98
+ "../kernel/src/speech-words.ts",
99
+ "../kernel/src/durations.ts",
100
+ "../kernel/src/steps.ts",
101
+ "../kernel/src/renderer-components.ts",
102
+ "../kernel/src/run-outputs.ts",
103
+ "../kernel/src/uri-decoding.ts",
104
+ "../kernel/src/push-stream.ts",
105
+ "../kernel/src/speech.ts",
106
+ "../kernel/src/voice.ts",
107
+ "../kernel/src/component-code.ts",
108
+ "../kernel/src/jupyter-kernel.ts",
109
+ "../kernel/src/preview-events.ts",
110
+ "../kernel/src/index.ts",
111
+ "../workbench/src/schema-form/context.ts",
112
+ "../workbench/src/schema-form/fields.tsx",
113
+ "../workbench/src/schema-form/templates.tsx",
114
+ "../workbench/src/schema-form/widgets.tsx",
115
+ "../workbench/src/schema-form/validator.ts",
116
+ "../workbench/src/schema-form/PmSchemaForm.tsx",
117
+ "../workbench/src/step-production.ts",
118
+ "../workbench/src/StepProductionEditor.tsx",
119
+ "../workbench/src/media-messages.ts",
120
+ "../workbench/src/media-time.ts",
121
+ "../workbench/src/MediaClipEditor.tsx",
122
+ "../workbench/src/shortcuts.ts",
123
+ "../workbench/src/messages.ts",
124
+ "../workbench/src/context.tsx",
125
+ "../workbench/src/places.ts",
126
+ "../workbench/src/preview.ts",
127
+ "../workbench/src/caption-timing.ts",
128
+ "../workbench/src/document-draft-store.ts",
129
+ "../workbench/src/document-editor/comment-drafts.ts",
130
+ "../workbench/src/component-property-drafts.ts",
131
+ "../workbench/src/component-properties.ts",
132
+ "../workbench/src/authoring-draft-fragment.ts",
133
+ "../workbench/src/document-editor/comment-draft-inspection.ts",
134
+ "../workbench/src/document-editor/comment-draft-actions.ts",
135
+ "../workbench/src/component-draft-inspection.ts",
136
+ "../workbench/src/component-draft-actions.ts",
137
+ "../workbench/src/workspace-client.ts",
138
+ "../workbench/src/document-drafts.ts",
139
+ "../workbench/src/document-session.ts",
140
+ "../workbench/src/recording-adoption.ts",
141
+ "../workbench/src/transcription-session.ts",
142
+ "../workbench/src/audio-recording.ts",
143
+ "../workbench/src/document-return-point.ts",
144
+ "../workbench/src/document-editor/table-identities.ts",
145
+ "../workbench/src/document-editor/selection.ts",
146
+ "../workbench/src/document-voices.ts",
147
+ "../workbench/src/document-timing-drafts.ts",
148
+ "../workbench/src/caption-timing-drafts.ts",
149
+ "../workbench/src/document-preview.ts",
150
+ "../workbench/src/diagnostics.ts",
151
+ "../workbench/src/history.ts",
152
+ "../workbench/src/jobs.ts",
153
+ "../workbench/src/voiceover-jobs.ts",
154
+ "../workbench/src/telemetry.ts",
155
+ "../workbench/src/preview-playback.ts",
156
+ "../workbench/src/production-playback.ts",
157
+ "../workbench/src/workbench.ts",
158
+ "../workbench/src/outline.ts",
159
+ "../workbench/src/panels/ExportPanel.tsx",
160
+ "../workbench/src/panels/HistoryPanel.tsx",
161
+ "../workbench/src/preview-pool.ts",
162
+ "../workbench/src/document-editor/inline.ts",
163
+ "../workbench/src/document-editor/rich-text.ts",
164
+ "../workbench/src/document-editor/projection.ts",
165
+ "../workbench/src/panels/ChangeTrail.tsx",
166
+ "../workbench/src/panels/PreviewPanel.tsx",
167
+ "../workbench/src/document-editor/blocknote-messages.ts",
168
+ "../workbench/src/document-editor/colors.ts",
169
+ "../workbench/src/document-editor/messages.ts",
170
+ "../workbench/src/document-editor/popover.tsx",
171
+ "../workbench/src/document-editor/math.tsx",
172
+ "../workbench/src/document-editor/schema.tsx",
173
+ "../workbench/src/document-editor/file-input.ts",
174
+ "../workbench/src/document-editor/clipboard.ts",
175
+ "../workbench/src/document-editor/authoring.tsx",
176
+ "../workbench/src/document-editor/comments.ts",
177
+ "../workbench/src/document-editor/DocumentComments.tsx",
178
+ "../workbench/src/document-editor/NewCommentDrafts.tsx",
179
+ "../workbench/src/document-editor/BlockNoteSurface.tsx",
180
+ "../workbench/src/document-editor/focus.ts",
181
+ "../workbench/src/document-editor/narration.ts",
182
+ "../workbench/src/document-editor/narration-schema.tsx",
183
+ "../workbench/src/document-editor/NarrationEditor.tsx",
184
+ "../workbench/src/document-editor/DocumentStepNarration.tsx",
185
+ "../workbench/src/production-messages.ts",
186
+ "../workbench/src/voice-drafts.ts",
187
+ "../workbench/src/voice-clone-messages.ts",
188
+ "../workbench/src/voice-messages.ts",
189
+ "../workbench/src/voice-snapshot.ts",
190
+ "../workbench/src/audio-recording-messages.ts",
191
+ "../workbench/src/audio-wav.ts",
192
+ "../workbench/src/audition.ts",
193
+ "../workbench/src/panels/VoiceCloneDialog.tsx",
194
+ "../workbench/src/panels/VoicePreviewDialog.tsx",
195
+ "../workbench/src/panels/VoiceScopeField.tsx",
196
+ "../workbench/src/panels/DocumentVoiceDialog.tsx",
197
+ "../workbench/src/panels/DocumentVoiceField.tsx",
198
+ "../workbench/src/panels/VoiceoverDialog.tsx",
199
+ "../workbench/src/caption-timing-messages.ts",
200
+ "../workbench/src/panels/ProductionCaptionTiming.tsx",
201
+ "../workbench/src/audio-waveform.ts",
202
+ "../workbench/src/panels/ProductionTimeline.tsx",
203
+ "../workbench/src/media-drafts.ts",
204
+ "../workbench/src/panels/ProductionMediaClips.tsx",
205
+ "../workbench/src/use-recording-adoption.ts",
206
+ "../workbench/src/panels/ProductionRecordingRange.tsx",
207
+ "../workbench/src/panels/ProductionRecording.tsx",
208
+ "../workbench/src/transcription-messages.ts",
209
+ "../workbench/src/panels/TranscriptionAdoption.tsx",
210
+ "../workbench/src/panels/ProductionTranscription.tsx",
211
+ "../workbench/src/production-voice-playback.ts",
212
+ "../workbench/src/panels/ProductionPanel.tsx",
213
+ "../workbench/src/panels/PageRenameDialog.tsx",
214
+ "../workbench/src/panels/PageDeleteDialog.tsx",
215
+ "../workbench/src/document-editor/DocumentEditor.tsx",
216
+ "../workbench/src/document-editor/block-preview-messages.ts",
217
+ "../workbench/src/document-editor/DocumentBlockFallback.tsx",
218
+ "../workbench/src/document-editor/block-playback.ts",
219
+ "../workbench/src/component-property-messages.ts",
220
+ "../workbench/src/document-editor/ComponentMaterials.tsx",
221
+ "../workbench/src/document-editor/ComponentPropertiesDialog.tsx",
222
+ "../workbench/src/document-editor/DocumentBlockPreview.tsx",
223
+ "../workbench/src/panels/SourceDocumentPanel.tsx",
224
+ "../workbench/src/panels/DocumentNarrationPanel.tsx",
225
+ "../workbench/src/panels/DocumentView.tsx",
226
+ "../workbench/src/panels/HomePanel.tsx",
227
+ "../workbench/src/approvals.tsx",
228
+ "../workbench/src/assistant-mascot.ts",
229
+ "../workbench/src/speech-settings-messages.ts",
230
+ "../workbench/src/panels/SpeechSettingsPanel.tsx",
231
+ "../workbench/src/authoring-client.ts",
232
+ "../workbench/src/index.ts",
233
+ "src/workspace-events.ts",
234
+ "src/client/workspace-events.ts",
235
+ "src/client/contract.ts",
236
+ "src/client/author-settings.ts",
237
+ "src/client/speech-settings.tsx",
238
+ "src/client/settings-opener.ts",
239
+ "src/client/messages.ts",
240
+ "src/client/brand.tsx",
241
+ "src/client/mascot.tsx",
242
+ "src/client/document-context.ts",
243
+ "src/client/observable.ts",
244
+ "src/client/runtime-diagnostics.tsx",
245
+ "src/client/fallback.tsx",
246
+ "src/client/layout.ts",
247
+ "src/client/root-reload.ts",
248
+ "src/client/launch-target.ts",
249
+ "src/client/navigation-shell.tsx",
250
+ "src/client/paths.ts",
251
+ "src/client/agent-requests.ts",
252
+ "src/client/assistant-setup.tsx",
253
+ "src/client/RootLayout.tsx",
254
+ "src/client/source-links.tsx",
255
+ "src/client/workbench-keys.ts",
256
+ "src/client/theme.ts",
257
+ "src/client/index.tsx",
258
+ "../design/src/fonts.css",
259
+ "../design/src/tokens.css",
260
+ "../design/src/components.css",
261
+ "../design/src/typography.css",
262
+ "../design/src/layout.css",
263
+ "../design/src/caption.css",
264
+ "../design/src/design.css",
265
+ "../design/src/block-preview.css",
266
+ "../workbench/src/document-editor/style.css",
267
+ "../workbench/src/step-production.css",
268
+ "../workbench/src/component-properties.css",
269
+ "../workbench/src/caption-timing.css",
270
+ "../workbench/src/styles.css",
271
+ "src/client/frame.css",
272
+ "src/client/styles.css"
273
+ ]
274
+ }
@@ -0,0 +1,39 @@
1
+ import { accessSync, constants, existsSync, readFileSync, statSync } from 'node:fs'
2
+ import { createRequire } from 'node:module'
3
+ import { join, sep } from 'node:path'
4
+ import { fileURLToPath } from 'node:url'
5
+
6
+ const PACKAGE = fileURLToPath(new URL('..', import.meta.url))
7
+ const BUNDLE = join(PACKAGE, 'build', 'dist', 'client.js')
8
+ const META = join(PACKAGE, 'build', 'dist', 'client.json')
9
+
10
+ function stale() {
11
+ if (!existsSync(BUNDLE) || !existsSync(META)) return true
12
+ const built = statSync(BUNDLE).mtimeMs
13
+ let inputs
14
+ try {
15
+ accessSync(BUNDLE, constants.R_OK)
16
+ inputs = JSON.parse(readFileSync(META, 'utf8')).inputs
17
+ } catch {
18
+ // Another local user may have built with a private umask, or left incomplete metadata.
19
+ // Replacing generated outputs repairs that state; importing the workbench must not use it.
20
+ return true
21
+ }
22
+ if (!Array.isArray(inputs)) return true
23
+ return inputs.some((input) => {
24
+ const file = join(PACKAGE, input)
25
+ return !existsSync(file) || statSync(file).mtimeMs > built
26
+ })
27
+ }
28
+
29
+ export async function ensureClient() {
30
+ if (PACKAGE.split(sep).includes('node_modules')) return
31
+ try {
32
+ createRequire(join(PACKAGE, 'package.json')).resolve('esbuild')
33
+ } catch {
34
+ return
35
+ }
36
+ if (!stale()) return
37
+ const { buildClient } = await import('./client.mjs')
38
+ await buildClient()
39
+ }
@@ -0,0 +1,26 @@
1
+ - insert:
2
+ - id: presmium-service
3
+ name: '@lincyaw/dsh/service'
4
+ config:
5
+ url: !!js process.env.PRESMIUM_SERVICE_URL
6
+ token: !!js process.env.PRESMIUM_SERVICE_TOKEN
7
+ root: !!js process.env.PRESMIUM_WORKSPACE || process.cwd()
8
+ - id: presmium-events
9
+ name: '@lincyaw/dsh/events'
10
+ - id: presmium-tools
11
+ name: '@lincyaw/dsh/tools'
12
+ - id: presmium-policy
13
+ name: '@lincyaw/dsh/policy'
14
+ - id: presmium-context
15
+ name: '@lincyaw/dsh/context'
16
+ - id: presmium-skills
17
+ name: '@lincyaw/dsh/skills'
18
+ - id: presmium-turns
19
+ name: '@lincyaw/dsh/turns'
20
+ # The operator's collector (off without a URL): every session's events, and the author's operations in the workbench.
21
+ - id: presmium-telemetry
22
+ name: '@lincyaw/dsh/telemetry'
23
+ config:
24
+ url: !!js process.env.PRESMIUM_TELEMETRY_URL
25
+ headers: !!js process.env.PRESMIUM_TELEMETRY_HEADERS
26
+ user: !!js process.env.PRESMIUM_TELEMETRY_USER
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('context.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('workspace-events.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
@@ -0,0 +1,11 @@
1
+ // DeepSeek Harness imports each row of the bundle by its package export, as plain ESM: it has no loader for
2
+ // TypeScript. Each file of this directory is the entry of one row and loads the row's source, src/node/<row>.ts,
3
+ // through jiti.
4
+ import { fileURLToPath } from 'node:url'
5
+ import { createJiti } from 'jiti'
6
+
7
+ const jiti = createJiti(import.meta.url)
8
+
9
+ export function load(file) {
10
+ return jiti.import(fileURLToPath(new URL(`../src/node/${file}`, import.meta.url)))
11
+ }
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('policy.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('routes.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('service.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('skills.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('telemetry.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('tools.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('turns.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
@@ -0,0 +1,9 @@
1
+ import { ensureClient } from '../build/ensure.mjs'
2
+ import { load } from './load.mjs'
3
+
4
+ await ensureClient()
5
+ const row = await load('workbench.ts')
6
+
7
+ export const name = row.name
8
+ export const inject = row.inject
9
+ export const apply = row.apply
@@ -0,0 +1,7 @@
1
+ import { load } from './load.mjs'
2
+
3
+ const row = await load('workspaces.ts')
4
+
5
+ export const name = row.name
6
+ export const inject = row.inject
7
+ export const apply = row.apply
package/package.json CHANGED
@@ -1,6 +1,111 @@
1
1
  {
2
2
  "name": "@lincyaw/dsh",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.2.0-rc.0",
4
+ "description": "Presmium's bundle for DeepSeek Harness: the workbench of presmium studio, its host side (Presmium's tools, approvals, document context, skills and routes) and its client side (the root layout and the workbench's panels, precompiled) (experimental)",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/Lincyaw/presmium.git",
9
+ "directory": "packages/dsh"
10
+ },
11
+ "homepage": "https://github.com/Lincyaw/presmium/tree/main/packages/dsh#readme",
12
+ "bugs": "https://github.com/Lincyaw/presmium/issues",
13
+ "keywords": [
14
+ "presmium",
15
+ "dsh",
16
+ "deepseek-harness",
17
+ "bundle"
18
+ ],
19
+ "type": "module",
20
+ "engines": {
21
+ "node": ">=22.19",
22
+ "dsh": "0.2.1-alpha.4"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "exports": {
28
+ ".": "./entries/workbench.mjs",
29
+ "./client": "./build/dist/client.js",
30
+ "./service": "./entries/service.mjs",
31
+ "./workspaces": "./entries/workspaces.mjs",
32
+ "./tools": "./entries/tools.mjs",
33
+ "./policy": "./entries/policy.mjs",
34
+ "./context": "./entries/context.mjs",
35
+ "./skills": "./entries/skills.mjs",
36
+ "./routes": "./entries/routes.mjs",
37
+ "./turns": "./entries/turns.mjs",
38
+ "./telemetry": "./entries/telemetry.mjs",
39
+ "./events": {
40
+ "types": "./src/node/workspace-events.ts",
41
+ "default": "./entries/events.mjs"
42
+ },
43
+ "./workspace-events": "./src/workspace-events.ts",
44
+ "./launch": "./src/node/launch.ts",
45
+ "./testing": "./src/node/fake-model.ts",
46
+ "./package.json": "./package.json"
47
+ },
48
+ "files": [
49
+ "entries",
50
+ "build",
51
+ "src",
52
+ "cordis.patch.yml",
53
+ "web.patch.yml",
54
+ "profile.patch.yml"
55
+ ],
56
+ "dsh": {
57
+ "manifestVersion": 1,
58
+ "bundle": {
59
+ "patch": "./cordis.patch.yml"
60
+ },
61
+ "client": {
62
+ "platform": "web",
63
+ "inject": [
64
+ "@deepseek-ai/dsh-client-locale",
65
+ "@deepseek-ai/dsh-client-ui-renderer",
66
+ "@deepseek-ai/dsh-client-ui-session",
67
+ "@deepseek-ai/dsh-client-ui-theme",
68
+ "@deepseek-ai/dsh-client-shortcuts"
69
+ ]
70
+ }
71
+ },
72
+ "presmium": {
73
+ "skills": [
74
+ "presmium-animate",
75
+ "presmium-author",
76
+ "presmium-present",
77
+ "presmium-develop"
78
+ ],
79
+ "generated": [
80
+ "build/dist"
81
+ ]
82
+ },
83
+ "dependencies": {
84
+ "eventsource": "3.0.7",
85
+ "jiti": "^2.7.0",
86
+ "ws": "8.22.0",
87
+ "zod": "4.4.3",
88
+ "@lincyaw/kernel": "1.0.0-rc.1",
89
+ "@lincyaw/mcp": "1.0.0-rc.1",
90
+ "@lincyaw/skills": "1.0.0-rc.1",
91
+ "@lincyaw/cli": "1.0.0-rc.1"
92
+ },
93
+ "peerDependencies": {
94
+ "@deepseek-ai/dsh": "0.2.1-alpha.4"
95
+ },
96
+ "devDependencies": {
97
+ "@deepseek-ai/dsh": "0.2.1-alpha.4",
98
+ "@deepseek-ai/dsh-util-workspace-path": "0.2.1-alpha.4",
99
+ "@types/react": "18.3.28",
100
+ "@types/react-dom": "18.3.7",
101
+ "@types/ws": "^8.18.2",
102
+ "esbuild": "0.25.12",
103
+ "partysocket": "1.3.0",
104
+ "react": "18.3.1",
105
+ "react-dom": "18.3.1",
106
+ "react-resizable-panels": "^4.14.5",
107
+ "@lincyaw/design": "1.0.0-rc.1",
108
+ "@lincyaw/workbench": "0.2.0-rc.0"
109
+ },
110
+ "scripts": {}
6
111
  }
@@ -0,0 +1,25 @@
1
+ - id: session-log-deepseek
2
+ disabled: true
3
+ - id: session-telemetry-otel
4
+ disabled: true
5
+ - id: plugin-package-inventory-deepseek
6
+ disabled: true
7
+
8
+ - id: skill-filesystem
9
+ config:
10
+ agentsHome: !!js process.env.DSH_AGENTS_HOME || `${process.env.DSH_HOME}/agents`
11
+
12
+ - id: sandbox-policy
13
+ config:
14
+ mode: workspace-write
15
+ workspaceRoot: !!js process.cwd()
16
+ - id: approval
17
+ config:
18
+ policy: ask
19
+
20
+ - id: system-prompt
21
+ config:
22
+ personaPrefix: >-
23
+ You are Presmium's assistant for the authors of lectures, powered by the {{model}} model. You help
24
+ write and revise lecture documents (MyST Markdown that Presmium renders as a web page, slides and a
25
+ notebook), run their code and check them, in the author's language.