@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.
- package/README.md +5 -3
- package/lib/client.js +27 -11
- package/lib/client.js.map +2 -2
- package/lib/drama/manifest.json +141 -136
- package/lib/drama/skills/short-drama/SKILL.md +55 -122
- package/lib/drama/skills/short-drama/references/audience-reveal.md +14 -67
- package/lib/drama/skills/short-drama/references/contract-and-ownership.md +24 -78
- package/lib/drama/skills/short-drama/references/creator-documents.md +79 -0
- package/lib/drama/skills/short-drama/references/creator-workflow.md +51 -77
- package/lib/drama/skills/short-drama/references/knowhow-index.md +2 -0
- package/lib/drama/skills/short-drama/references/look-development.md +2 -3
- package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +14 -48
- package/lib/drama/skills/short-drama/references/production-form-profiles.md +1 -1
- package/lib/drama/skills/short-drama/references/reference-roles.md +29 -135
- package/lib/drama/skills/short-drama/references/runtime-preflight.md +13 -19
- package/lib/drama/skills/short-drama-assets/SKILL.md +40 -161
- package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +18 -25
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +13 -15
- package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +11 -14
- package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +5 -12
- package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -11
- package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +2 -2
- package/lib/drama/skills/short-drama-assets/references/stage-contract.md +10 -105
- package/lib/drama/skills/short-drama-assets/references/voice-direction.md +12 -32
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +41 -155
- package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +12 -13
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +10 -12
- package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +39 -51
- package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +3 -4
- package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +15 -14
- package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +11 -15
- package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +1 -1
- package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +4 -7
- package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +23 -23
- package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +6 -65
- package/lib/drama/skills/short-drama-produce/SKILL.md +26 -10
- package/lib/drama/skills/short-drama-review/SKILL.md +61 -123
- package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -15
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +15 -16
- package/lib/drama/skills/short-drama-review/references/project-calibration.md +7 -9
- package/lib/drama/skills/short-drama-review/references/review-method.md +8 -9
- package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +9 -13
- package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +104 -4
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +15 -19
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +4 -63
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +49 -240
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +9 -34
- package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
- package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +5 -10
- package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +8 -7
- package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +24 -62
- package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +16 -25
- package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +5 -23
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -10
- package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +9 -13
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +11 -71
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +44 -219
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +10 -8
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +3 -5
- package/lib/drama/skills/short-drama-video-prompts/references/generability.md +2 -2
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +13 -23
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -11
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +2 -3
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +34 -63
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +13 -72
- package/lib/drama/skills/short-drama-write/SKILL.md +73 -268
- package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +7 -0
- package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +17 -43
- package/lib/drama/skills/short-drama-write/references/screenplay-format.md +15 -15
- package/lib/drama/skills/short-drama-write/references/script-craft.md +208 -21
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +11 -70
- package/lib/index.js +107 -14
- package/lib/index.js.map +4 -4
- package/lib/oh-story/manifest.json +26 -26
- package/lib/oh-story/roles/character-designer.md +4 -4
- package/lib/oh-story/roles/narrative-writer.md +11 -11
- package/lib/oh-story/roles/story-architect.md +20 -14
- package/lib/oh-story/roles/story-explorer.md +8 -5
- package/lib/oh-story/skills/story-import/SKILL.md +5 -1
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +1 -0
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +11 -5
- package/lib/oh-story/skills/story-setup/SKILL.md +12 -9
- package/lib/types/client/file-activity.d.ts +5 -0
- package/lib/types/client/file-activity.d.ts.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/index.d.ts +2 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/reference-tool.d.ts +6 -0
- package/lib/types/reference-tool.d.ts.map +1 -0
- package/lib/types/role-provider.d.ts.map +1 -1
- package/lib/types/role-tool.d.ts +3 -1
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/package.json +3 -2
- 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.
|
|
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.
|
|
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 :
|
|
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 :
|
|
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 :
|
|
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",
|