@oh-story/dsh 0.1.2 → 0.1.4

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 (99) hide show
  1. package/README.md +5 -3
  2. package/lib/client.js +27 -11
  3. package/lib/client.js.map +2 -2
  4. package/lib/drama/manifest.json +141 -136
  5. package/lib/drama/skills/short-drama/SKILL.md +55 -122
  6. package/lib/drama/skills/short-drama/references/audience-reveal.md +14 -67
  7. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +24 -78
  8. package/lib/drama/skills/short-drama/references/creator-documents.md +79 -0
  9. package/lib/drama/skills/short-drama/references/creator-workflow.md +51 -77
  10. package/lib/drama/skills/short-drama/references/knowhow-index.md +2 -0
  11. package/lib/drama/skills/short-drama/references/look-development.md +2 -3
  12. package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +14 -48
  13. package/lib/drama/skills/short-drama/references/production-form-profiles.md +1 -1
  14. package/lib/drama/skills/short-drama/references/reference-roles.md +29 -135
  15. package/lib/drama/skills/short-drama/references/runtime-preflight.md +13 -19
  16. package/lib/drama/skills/short-drama-assets/SKILL.md +40 -161
  17. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +18 -25
  18. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +13 -15
  19. package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +11 -14
  20. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +5 -12
  21. package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -11
  22. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +2 -2
  23. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +10 -105
  24. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +12 -32
  25. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +41 -155
  26. package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +12 -13
  27. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +10 -12
  28. package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +39 -51
  29. package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +3 -4
  30. package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +15 -14
  31. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +11 -15
  32. package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +1 -1
  33. package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +4 -7
  34. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +23 -23
  35. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +6 -65
  36. package/lib/drama/skills/short-drama-produce/SKILL.md +26 -10
  37. package/lib/drama/skills/short-drama-review/SKILL.md +61 -123
  38. package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -15
  39. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +15 -16
  40. package/lib/drama/skills/short-drama-review/references/project-calibration.md +7 -9
  41. package/lib/drama/skills/short-drama-review/references/review-method.md +8 -9
  42. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +9 -13
  43. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +104 -4
  44. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +15 -19
  45. package/lib/drama/skills/short-drama-review/references/stage-contract.md +4 -63
  46. package/lib/drama/skills/short-drama-storyboard/SKILL.md +49 -240
  47. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +9 -34
  48. package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
  49. package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +5 -10
  50. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +8 -7
  51. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +24 -62
  52. package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +16 -25
  53. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +5 -23
  54. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -10
  55. package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +9 -13
  56. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +11 -71
  57. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +44 -219
  58. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +10 -8
  59. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +3 -5
  60. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +2 -2
  61. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +13 -23
  62. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -11
  63. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +2 -3
  64. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +34 -63
  65. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +13 -72
  66. package/lib/drama/skills/short-drama-write/SKILL.md +73 -268
  67. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +7 -0
  68. package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +17 -43
  69. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +15 -15
  70. package/lib/drama/skills/short-drama-write/references/script-craft.md +208 -21
  71. package/lib/drama/skills/short-drama-write/references/stage-contract.md +11 -70
  72. package/lib/index.js +107 -14
  73. package/lib/index.js.map +4 -4
  74. package/lib/oh-story/manifest.json +26 -26
  75. package/lib/oh-story/roles/character-designer.md +4 -4
  76. package/lib/oh-story/roles/narrative-writer.md +11 -11
  77. package/lib/oh-story/roles/story-architect.md +20 -14
  78. package/lib/oh-story/roles/story-explorer.md +8 -5
  79. package/lib/oh-story/skills/story-import/SKILL.md +5 -1
  80. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +1 -1
  81. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +1 -1
  82. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  83. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +1 -1
  84. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +1 -0
  85. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +11 -5
  86. package/lib/oh-story/skills/story-setup/SKILL.md +12 -9
  87. package/lib/types/client/file-activity.d.ts +5 -0
  88. package/lib/types/client/file-activity.d.ts.map +1 -1
  89. package/lib/types/client/index.d.ts.map +1 -1
  90. package/lib/types/index.d.ts +2 -1
  91. package/lib/types/index.d.ts.map +1 -1
  92. package/lib/types/reference-tool.d.ts +6 -0
  93. package/lib/types/reference-tool.d.ts.map +1 -0
  94. package/lib/types/role-provider.d.ts.map +1 -1
  95. package/lib/types/role-tool.d.ts +3 -1
  96. package/lib/types/role-tool.d.ts.map +1 -1
  97. package/lib/types/skill-provider.d.ts.map +1 -1
  98. package/package.json +3 -2
  99. package/lib/drama/skills/short-drama/references/lifecycle-commands.md +0 -130
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  `oh-story-dsh` 是基于 DeepSeek Harness(DSH)构建的社区小说与短剧创作插件,提供:
8
8
 
9
9
  - 13 个 Oh Story 小说 Skills 与 7 个专业 Roles;
10
- - 10 个 Drama Skills 短剧流程;
10
+ - 10 个 Drama Skills 0.6.0 短剧流程,每集按请求维护最多五份 creator-first Markdown;
11
11
  - 小说协议 hooks 与安全的 Session workspace 文件路由;
12
12
  - 文件树、创作文档编辑器和 DSH Chat 组成的三栏工作台;
13
13
  - Markdown 与 JSONL 结构化预览;
@@ -18,14 +18,14 @@
18
18
  ## 安装
19
19
 
20
20
  ```bash
21
- npx -y @deepseek-ai/dsh@0.1.1-rc.1 plugin --profile web add @oh-story/dsh@0.1.2
21
+ npx -y @deepseek-ai/dsh@0.1.1-rc.1 plugin --profile web add @oh-story/dsh@0.1.4
22
22
  npx -y @deepseek-ai/dsh@0.1.1-rc.1 web
23
23
  ```
24
24
 
25
25
  也可以直接安装 GitHub Release 中的预构建包:
26
26
 
27
27
  ```bash
28
- npx -y @deepseek-ai/dsh@0.1.1-rc.1 plugin --profile web add https://github.com/worldwonderer/oh-story-dsh/releases/download/v0.1.2/oh-story-dsh-0.1.2.tgz
28
+ npx -y @deepseek-ai/dsh@0.1.1-rc.1 plugin --profile web add https://github.com/worldwonderer/oh-story-dsh/releases/download/v0.1.4/oh-story-dsh-0.1.4.tgz
29
29
  npx -y @deepseek-ai/dsh@0.1.1-rc.1 web
30
30
  ```
31
31
 
@@ -33,6 +33,8 @@ npx -y @deepseek-ai/dsh@0.1.1-rc.1 web
33
33
 
34
34
  将作品目录添加为 DSH workspace,然后在普通 Agent 会话中使用 `/story` 或 `/short-drama`。模型、凭据、Preset、权限、会话记录、停止/继续、Todo、审批和 Composer 均使用当前 DeepSeek Harness 配置与界面。
35
35
 
36
+ Drama Skills 0.6.0 不支持把 v0.5 结构化项目原地升级为 creator-first 项目。旧项目应继续锁定 v0.5 并只读保留;迁移时请新建项目根,逐集人工确认当前工作实际需要的 `剧本.md`、`视觉设定.md`、`分镜.md`、`图片提示词.md` 或 `视频提示词.md`,不要预建空文档。
37
+
36
38
  ## License
37
39
 
38
40
  [Changelog](https://github.com/worldwonderer/oh-story-dsh/blob/main/CHANGELOG.md) · [MIT](LICENSE)
package/lib/client.js CHANGED
@@ -230,6 +230,23 @@ function workbenchModeForPath(path) {
230
230
  if (directory2 !== void 0 && STORY_DIRECTORIES.has(directory2)) return "story";
231
231
  if (directory2 !== void 0 && DRAMA_DIRECTORIES.has(directory2)) return "drama";
232
232
  }
233
+ function preferredWorkbenchFile(files, mode) {
234
+ let matching = files.filter((file) => workbenchModeForPath(file.path) === mode), preferences = mode === "story" ? [/^正文\/.*\.md$/u, /^大纲\/.*\.md$/u, /\.md$/u] : [
235
+ /^剧集\/EP0*1\/剧本\.md$/u,
236
+ /^剧集\/.*\/剧本\.md$/u,
237
+ /^剧集\/EP0*1\/screenplay\.md$/iu,
238
+ /^剧集\/.*\/screenplay\.md$/iu,
239
+ /^项目开发\/creative-brief\.md$/u,
240
+ /^输入\/.*\.md$/u,
241
+ /\.md$/u,
242
+ /^short-drama\.json$/u
243
+ ];
244
+ for (let pattern of preferences) {
245
+ let match = matching.find((file) => pattern.test(file.path));
246
+ if (match !== void 0) return match.path;
247
+ }
248
+ return matching[0]?.path;
249
+ }
233
250
  function previewMutation(activity, base) {
234
251
  if (activity.operation === "replace-file") return activity.newText;
235
252
  if (activity.operation === "replace-text") {
@@ -542,8 +559,10 @@ var plugin_default = `.oh-story-bridge-marker { display: none; }
542
559
  overflow-y: auto;
543
560
  position: relative;
544
561
  scrollbar-gutter: stable;
562
+ scroll-padding-bottom: calc(var(--dsh-composer-height, 152px) + 16px);
545
563
  }
546
564
 
565
+ /* Keep the final Chat flow above the overlapping official Composer. */
547
566
  [data-conversation-scroll]:has(> [data-slot="conversation.session"] > .oh-story-split-surface)
548
567
  > [data-slot="conversation.session"] > :not(.oh-story-split-surface) {
549
568
  grid-column: 3;
@@ -553,6 +572,11 @@ var plugin_default = `.oh-story-bridge-marker { display: none; }
553
572
  border-left: 1px solid var(--os-border);
554
573
  }
555
574
 
575
+ [data-conversation-scroll]:has(> [data-slot="conversation.session"] > .oh-story-split-surface)
576
+ [data-chat-flow] {
577
+ padding-bottom: calc(var(--dsh-composer-height, 152px) + 16px);
578
+ }
579
+
556
580
  [data-conversation-scroll]:has(> [data-slot="conversation.session"] > .oh-story-split-surface)
557
581
  > [data-composer-seat] {
558
582
  grid-column: 3;
@@ -970,14 +994,6 @@ function handleTabKey(event, values, current, select) {
970
994
  function groupForPath(path) {
971
995
  return path === "short-drama.json" ? "\u9879\u76EE" : path.split("/", 1)[0] ?? "\u5176\u4ED6";
972
996
  }
973
- function preferredFile(files, mode) {
974
- let matching = files.filter((file) => workbenchModeForPath(file.path) === mode), preferences = mode === "story" ? [/^正文\/.*\.md$/u, /^大纲\/.*\.md$/u, /\.md$/u] : [/^剧集\/EP0*1\/screenplay\.md$/iu, /^剧集\/.*\/screenplay\.md$/iu, /^项目开发\/creative-brief\.md$/u, /^输入\/.*\.md$/u, /\.md$/u, /^short-drama\.json$/u];
975
- for (let pattern of preferences) {
976
- let match = matching.find((file) => pattern.test(file.path));
977
- if (match !== void 0) return match.path;
978
- }
979
- return matching[0]?.path;
980
- }
981
997
  function endpoint(path, sessionId, file) {
982
998
  let url = new URL(`/oh-story/${path}`, globalThis.location.origin);
983
999
  return url.searchParams.set("sessionId", sessionId), file !== void 0 && url.searchParams.set("path", file), url.toString();
@@ -1121,7 +1137,7 @@ function CreativeWorkbench({
1121
1137
  }, [activityPath, selected]), (0, import_react.useEffect)(() => {
1122
1138
  modeSelection.current !== selected && (modeSelection.current = selected, setEditorMode(activityPath === selected ? "source" : previewable ? "preview" : "source"));
1123
1139
  }, [activityPath, previewable, selected]), (0, import_react.useEffect)(() => {
1124
- workspaceLoading || activityPath === void 0 && (selected !== void 0 && ((workspace?.files.some((file) => file.path === selected) ?? !1) || buffers[selected] !== void 0) && workbenchModeForPath(selected) === workbench || setSelected(workspace === void 0 ? void 0 : preferredFile(workspace.files, workbench)));
1140
+ workspaceLoading || activityPath === void 0 && (selected !== void 0 && ((workspace?.files.some((file) => file.path === selected) ?? !1) || buffers[selected] !== void 0) && workbenchModeForPath(selected) === workbench || setSelected(workspace === void 0 ? void 0 : preferredWorkbenchFile(workspace.files, workbench)));
1125
1141
  }, [activityPath, buffers, selected, workbench, workspace, workspaceLoading]), (0, import_react.useEffect)(() => {
1126
1142
  if (workspace === void 0 || workspaceLoading) return;
1127
1143
  let paths = new Set(workspace.files.map((file) => file.path));
@@ -1335,7 +1351,7 @@ function CreativeWorkbench({
1335
1351
  });
1336
1352
  }, [activityPath, workbench, workspace]), selectWorkbench = (next) => {
1337
1353
  setWorkbench(next);
1338
- let target = workspace === void 0 ? void 0 : preferredFile(workspace.files, next);
1354
+ let target = workspace === void 0 ? void 0 : preferredWorkbenchFile(workspace.files, next);
1339
1355
  target === void 0 ? setSelected(void 0) : revealPath(target);
1340
1356
  }, selectEditorMode = (next) => {
1341
1357
  next === "preview" && rememberEditorPosition(), setEditorMode(next);
@@ -1471,7 +1487,7 @@ function CreativeWorkbench({
1471
1487
  setBuffers((current) => {
1472
1488
  let next = { ...current };
1473
1489
  return delete next[selected], next;
1474
- }), setSelected(workspace === void 0 ? void 0 : preferredFile(workspace.files, workbench));
1490
+ }), setSelected(workspace === void 0 ? void 0 : preferredWorkbenchFile(workspace.files, workbench));
1475
1491
  }, children: "\u653E\u5F03\u672C\u5730\u8349\u7A3F" })
1476
1492
  ] }) : previewable && editorMode === "preview" ? markdown ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(MarkdownPreview, { content: buffer.content, label: selected }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(JsonlPreview, { content: buffer.content, label: selected }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1477
1493
  "textarea",