@oh-story/dsh 0.1.3 → 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 +20 -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.3
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.3/oh-story-dsh-0.1.3.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") {
@@ -977,14 +994,6 @@ function handleTabKey(event, values, current, select) {
977
994
  function groupForPath(path) {
978
995
  return path === "short-drama.json" ? "\u9879\u76EE" : path.split("/", 1)[0] ?? "\u5176\u4ED6";
979
996
  }
980
- function preferredFile(files, mode) {
981
- 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];
982
- for (let pattern of preferences) {
983
- let match = matching.find((file) => pattern.test(file.path));
984
- if (match !== void 0) return match.path;
985
- }
986
- return matching[0]?.path;
987
- }
988
997
  function endpoint(path, sessionId, file) {
989
998
  let url = new URL(`/oh-story/${path}`, globalThis.location.origin);
990
999
  return url.searchParams.set("sessionId", sessionId), file !== void 0 && url.searchParams.set("path", file), url.toString();
@@ -1128,7 +1137,7 @@ function CreativeWorkbench({
1128
1137
  }, [activityPath, selected]), (0, import_react.useEffect)(() => {
1129
1138
  modeSelection.current !== selected && (modeSelection.current = selected, setEditorMode(activityPath === selected ? "source" : previewable ? "preview" : "source"));
1130
1139
  }, [activityPath, previewable, selected]), (0, import_react.useEffect)(() => {
1131
- 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)));
1132
1141
  }, [activityPath, buffers, selected, workbench, workspace, workspaceLoading]), (0, import_react.useEffect)(() => {
1133
1142
  if (workspace === void 0 || workspaceLoading) return;
1134
1143
  let paths = new Set(workspace.files.map((file) => file.path));
@@ -1342,7 +1351,7 @@ function CreativeWorkbench({
1342
1351
  });
1343
1352
  }, [activityPath, workbench, workspace]), selectWorkbench = (next) => {
1344
1353
  setWorkbench(next);
1345
- let target = workspace === void 0 ? void 0 : preferredFile(workspace.files, next);
1354
+ let target = workspace === void 0 ? void 0 : preferredWorkbenchFile(workspace.files, next);
1346
1355
  target === void 0 ? setSelected(void 0) : revealPath(target);
1347
1356
  }, selectEditorMode = (next) => {
1348
1357
  next === "preview" && rememberEditorPosition(), setEditorMode(next);
@@ -1478,7 +1487,7 @@ function CreativeWorkbench({
1478
1487
  setBuffers((current) => {
1479
1488
  let next = { ...current };
1480
1489
  return delete next[selected], next;
1481
- }), setSelected(workspace === void 0 ? void 0 : preferredFile(workspace.files, workbench));
1490
+ }), setSelected(workspace === void 0 ? void 0 : preferredWorkbenchFile(workspace.files, workbench));
1482
1491
  }, children: "\u653E\u5F03\u672C\u5730\u8349\u7A3F" })
1483
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)(
1484
1493
  "textarea",