@oh-story/dsh 0.1.10 → 0.1.11
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 +7 -7
- package/lib/client.js +7 -3
- package/lib/client.js.map +2 -2
- package/lib/drama/manifest.json +212 -142
- package/lib/drama/skills/short-drama/SKILL.md +14 -2
- package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
- package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
- package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
- package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
- package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
- package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
- package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
- package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
- package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
- package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
- package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
- package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
- package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
- package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
- package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
- package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
- package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
- package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
- package/lib/drama/skills/short-drama-edit/SKILL.md +43 -20
- package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
- package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +4 -2
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +3 -1
- package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +6 -2
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +12 -6
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +13 -8
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1153 -121
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +49 -9
- package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
- package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
- package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
- package/lib/drama/skills/short-drama-review/SKILL.md +2 -2
- package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
- package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
- package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +15 -0
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +13 -5
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +82 -14
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +4 -2
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +5 -3
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +12 -0
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
- package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +40 -1
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +20 -14
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +8 -7
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +1 -0
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
- package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
- package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
- package/lib/drama/skills/short-drama-write/SKILL.md +8 -3
- package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
- package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
- package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
- package/lib/index.js +71 -21
- package/lib/index.js.map +3 -3
- package/lib/oh-story/manifest.json +545 -310
- package/lib/oh-story/roles/chapter-extractor.md +11 -11
- package/lib/oh-story/roles/character-designer.md +1 -2
- package/lib/oh-story/roles/consistency-checker.md +11 -9
- package/lib/oh-story/roles/narrative-writer.md +24 -25
- package/lib/oh-story/roles/story-architect.md +9 -61
- package/lib/oh-story/roles/story-explorer.md +20 -125
- package/lib/oh-story/roles/story-researcher.md +0 -1
- package/lib/oh-story/skills/story/SKILL.md +6 -6
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-deslop/SKILL.md +24 -25
- package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +21 -4
- package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-import/SKILL.md +63 -579
- package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
- package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
- package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
- package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
- package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
- package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
- package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +95 -91
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
- package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +11 -9
- package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +101 -14
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +278 -23
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +179 -23
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +28 -50
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +12 -5
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +1 -1
- package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
- package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +21 -55
- package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +17 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +1 -1
- package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +47 -8
- package/lib/oh-story/skills/story-long-scan/SKILL.md +41 -193
- package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
- package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
- package/lib/oh-story/skills/story-long-write/SKILL.md +32 -73
- package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +18 -201
- package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +6 -10
- package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
- package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
- package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +3 -2
- package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
- package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
- package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
- package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/project-files.md +10 -6
- package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
- package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +11 -9
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +33 -44
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +18 -51
- package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +53 -67
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -251
- package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +5 -3
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +18 -56
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +96 -16
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +101 -14
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
- package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +2 -1
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +250 -50
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +278 -23
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +179 -23
- package/lib/oh-story/skills/story-review/SKILL.md +19 -273
- package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-review/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
- package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-review/references/review-quality.md +2 -1
- package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
- package/lib/oh-story/skills/story-review/references/solo.md +52 -0
- package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +11 -9
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +278 -23
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +179 -23
- package/lib/oh-story/skills/story-setup/SKILL.md +69 -458
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +21 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
- package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
- package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +18 -56
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +37 -110
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
- package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
- package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
- package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
- package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
- package/lib/oh-story/skills/story-short-analyze/references/{material-decomposition.md → stage4-6-reversal-summary.md} +303 -374
- package/lib/oh-story/skills/story-short-scan/SKILL.md +30 -64
- package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
- package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
- package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
- package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
- package/lib/oh-story/skills/story-short-write/SKILL.md +23 -34
- package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
- package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -49
- package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
- package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +19 -12
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +22 -32
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +84 -17
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
- package/lib/types/client/video-studio.d.ts.map +1 -1
- package/lib/types/native-hooks.d.ts +2 -2
- package/lib/types/native-hooks.d.ts.map +1 -1
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/types/video-project.d.ts.map +1 -1
- package/lib/types/workspace-route.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +60 -1
- package/lib/video-recap/README.en.md +348 -137
- package/lib/video-recap/README.md +340 -136
- package/lib/video-recap/manifest.json +406 -251
- package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
- package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
- package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
- package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
- package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
- package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
- package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
- package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
- package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
- package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
- package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
- package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
- package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
- package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
- package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
- package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
- package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
- package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
- package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
- package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
- package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
- package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
- package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
- package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
- package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
- package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
- package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
- package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
- package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
- package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
- package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
- package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
- package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
- package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
- package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
- package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
- package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
- package/lib/video-recap/skills/video-script/SKILL.md +16 -13
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
- package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
- package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
- package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
- package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
- package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
- package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
- package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
- package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
- package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
- package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
- package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
- package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
- package/lib/video-recap/skills/video-understanding/scripts/{agent_brief.py → briefing/builder.py} +38 -35
- package/lib/video-recap/skills/{video-script/scripts/brief_context.py → video-understanding/scripts/briefing/context.py} +4 -35
- package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
- package/lib/video-recap/skills/video-understanding/scripts/{brief_timeline.py → briefing/timeline.py} +5 -6
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
- package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
- package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
- package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
- package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
- package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
- package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
- package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
- package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
- package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
- package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
- package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
- package/package.json +1 -1
- package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -538
- package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -603
- package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
- package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
- package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
- package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +0 -399
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +0 -327
- package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +0 -348
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
- /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
- /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
- /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
# writing-workflow.md:短篇写作工作流详解
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Phase 2 设计任务的步骤与验收;Phase 4 精修清单在 workflow-revision.md。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
## Phase 2 设计任务(框架确定后执行)
|
|
8
8
|
|
|
9
|
-
### 开始前先通过 Reference Gate(逐项检查,不能跳过)
|
|
10
|
-
|
|
11
|
-
- 工作流与投稿结构 → 加载 `writing-workflow.md`(本文件)+ `submission-craft.md` ✅/❌
|
|
12
|
-
- 定题材腔调/招式 → 加载一个精确的 `genre-styles/{题材}.md` + `short-craft.md`;冷门题材改用 `genre-writing-formulas.md` ✅/❌
|
|
13
|
-
- 写反派/揭露方式 → 加载 `villain-and-reveal.md`;不适用时写明原因 ✅/❌
|
|
14
|
-
- 反转信息差验证 → 加载 `short-reversal.md` ✅/❌
|
|
15
|
-
- 伏笔回查 → 见下方「伏笔回查清单」 ✅/❌
|
|
16
|
-
- 精确路径缺失或不可读时按 SKILL.md 首屏门禁停止,不创建/修改故事产物
|
|
17
|
-
|
|
18
9
|
### 设计步骤
|
|
19
10
|
|
|
20
11
|
1. **设计信物 / 贯穿物**(可选,1-2 个):见题材包招式库「信物翻转」(如追妻火葬场的信物意义翻转)
|
|
21
12
|
- 填写:`- 第1次出现(第X节):{场景}({含义})` 重复三次,含节号定位
|
|
22
13
|
2. **设计反派**(如有):用 villain-and-reveal.md 反派模板
|
|
23
14
|
- 填写:`{身份} + {动机} + {作恶方式} + {致命弱点} + {报应}`
|
|
24
|
-
3. **确定揭露方式**:从 villain-and-reveal.md 4
|
|
15
|
+
3. **确定揭露方式**:从 villain-and-reveal.md 4 种真相揭露机制中选一种,写进 设定.md 反派设计区
|
|
25
16
|
4. **编写 小节大纲.md**:使用固定 12 列 Markdown 表格,每节 1 行,表头如下(列名和顺序不可改):
|
|
26
17
|
|
|
27
18
|
`| 结构段/五段功能 | 主事件 | 情节推进 | 情绪 | 人物/关系变化 | 因果/逻辑链 | 读者新获知什么 | 结尾承接/钩子 | 伏笔/物件 | 场景形态 | 对白作用 | 目标字数 |`
|
|
@@ -46,117 +37,14 @@
|
|
|
46
37
|
- 双层反转:第一层阶段答案后是否发生基于该答案的新行动?没有 → 两层只是连续口供,应拉开功能距离
|
|
47
38
|
- 检查:至少有 1 条读者被成功误导的假线索(不是读者猜到后等角色追上来)
|
|
48
39
|
- 检查:反转前是否铺垫了 ≥3 条指向真相的线索(线索要隐蔽,不是明示)
|
|
49
|
-
- 验证:找一个人(或自我模拟)只看 outline,能否在反转前猜到真相?猜到 =
|
|
40
|
+
- 验证:找一个人(或自我模拟)只看 outline,能否在反转前猜到真相?猜到 = 失败;回看才推得出是公平,不算失败
|
|
50
41
|
6. **伏笔回查清单**(outline 写完后、写作前检查):
|
|
51
42
|
- 列出结尾所有关键元素(物件/信息/角色/关系变化)
|
|
52
43
|
- 每个结尾元素在前文有 ≥1 次铺垫?没有 = 天降,必须补铺垫
|
|
53
|
-
-
|
|
44
|
+
- 用了贯穿道具时,三次出现完整?(第 1 次出现在铺垫段,第 2 次出现在反转段,第 3 次出现在结尾段)
|
|
54
45
|
- 铺垫节号与揭穿节号的间距 ≥ 3 节(间距太短铺垫无效)
|
|
55
46
|
|
|
56
|
-
###
|
|
57
|
-
|
|
58
|
-
`设定.md` 写入 `## Phase 2 设计校验`,至少包含:一个真实的题材 reference 路径、2-3 个核心招式、反派五字段或带原因的不适用声明、反转类型、`反转位置:第 X 节 ÷ 共 Y 节 = Z%`、`付费点:第 N 节末`。`short-reversal.md` 判为无反转时,位置改写为带原因的“不适用”。付费点同时写入 `小节大纲.md` 对应节的“结尾承接/钩子”单元格。
|
|
59
|
-
|
|
60
|
-
生成两份文件后按 `workflow-design.md` 的 Phase 2 完成门禁运行 `node scripts/check-phase2-contract.js --json {短篇目录}`。失败时只按 JSON 的 `repair_scope` 做最小修改并复验,不做无目标整稿重写。
|
|
61
|
-
|
|
62
|
-
### 写作前加载
|
|
63
|
-
|
|
64
|
-
- 必读:`short-format.md`(正文格式)+ `short-craft.md`(通用底座)
|
|
65
|
-
- 必读:`short-deslop.md`(写作时自检 AI 腔)
|
|
66
|
-
- 按题材加载 1 个:`genre-styles/{题材}.md`(核心 10 题材)或 `genre-writing-formulas.md`(冷门题材速查表)
|
|
67
|
-
- 按需加载:`villain-and-reveal.md` / `emotional-methods.md`
|
|
68
|
-
|
|
69
|
-
### 工作目录结构
|
|
70
|
-
|
|
71
|
-
工作目录结构见 [Phase 2:构思核心框架](../SKILL.md#phase-2构思核心框架)。设定.md 内容构成:核心框架 + 人设 + 反转铺垫 + 贯穿道具(含三次出现追踪表)+ 反派设计 + 对标摘要。小节大纲.md 每节 1 行,格式以 [设计任务(框架确定后执行)](workflow-design.md#设计任务框架确定后执行) 第 4 步为准。
|
|
72
|
-
|
|
73
|
-
### 操作原则
|
|
74
|
-
|
|
75
|
-
- 正文直接写入文件,不要只输出在对话里
|
|
76
|
-
- 精修时读取文件再改写,修改记录直接体现在设定.md的贯穿道具追踪中
|
|
77
|
-
- 设定.md 维护贯穿道具追踪表:
|
|
78
|
-
`| 物件 | 第1次出现(节号/含义) | 第2次出现(节号/含义) | 第3次出现(节号/含义) |`
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Phase 4 精修打磨
|
|
83
|
-
|
|
84
|
-
### 精修检查清单
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
## 精修清单
|
|
88
|
-
|
|
89
|
-
### 开头
|
|
90
|
-
- [ ] 前 3 句话能抓住人?
|
|
91
|
-
- [ ] 没有无意义的背景介绍?
|
|
92
|
-
- [ ] 包含一个开篇钩子?
|
|
93
|
-
|
|
94
|
-
### 情绪
|
|
95
|
-
- [ ] 情绪曲线是否有明确走向?
|
|
96
|
-
- [ ] 反转前的情绪铺垫够不够?
|
|
97
|
-
- [ ] 反转后的冲击够不够?
|
|
98
|
-
|
|
99
|
-
### 反转
|
|
100
|
-
- [ ] 反转是否出乎意料?
|
|
101
|
-
- [ ] 反转是否合情合理(回看有铺垫)?
|
|
102
|
-
- [ ] 反转时机是否合适?
|
|
103
|
-
|
|
104
|
-
### 节奏
|
|
105
|
-
- [ ] 有没有拖沓的部分?
|
|
106
|
-
- [ ] 每句话是否都有存在价值?
|
|
107
|
-
- [ ] 字数是否在目标范围内?
|
|
108
|
-
|
|
109
|
-
### 格式
|
|
110
|
-
- [ ] 段落以短为主、有长短交错与疏密变化(非通篇同长度)?无连续超长大段?
|
|
111
|
-
- [ ] 段间仅单换行?
|
|
112
|
-
- [ ] 对话独立成行、引号风格符合项目/平台约定?
|
|
113
|
-
- [ ] 标点节奏匹配语气/人物声线:没有通篇句号化,也没有随机堆砌问号/感叹号,或用 `……`/`——` 硬造停顿?
|
|
114
|
-
- [ ] 正文(含对话)里的 `……`、`——`、`—`、`--` 已改成动作、短句、逗号或句号?
|
|
115
|
-
- [ ] 对话标签是否避免高频、公式化重复;普通「说/道」低频使用可保留?
|
|
116
|
-
|
|
117
|
-
### 钩子
|
|
118
|
-
- [ ] 钩子是否出现在读者预期、行动方向或关系判断发生变化的位置;有没有连续提问却不局部兑现?
|
|
119
|
-
- [ ] 章末是否有未完成动作、新信息、局部兑现、关系变化、余韵或明确下一步之一?
|
|
120
|
-
|
|
121
|
-
### AI 腔
|
|
122
|
-
- [ ] 无禁止比喻:「命运的齿轮」「如潮水般」「仿佛春风」「心猛地一沉」「眼眶泛红」
|
|
123
|
-
- [ ] 重复的身体/情绪描写按功能取舍:无新增信息就删,不换部位或同义动作凑数
|
|
124
|
-
- [ ] 「像」使用频率:全文不超 10 处(含「像是」「不像」)
|
|
125
|
-
- [ ] 完整 AI 腔黑名单见 short-deslop.md
|
|
126
|
-
|
|
127
|
-
### 技法
|
|
128
|
-
- [ ] 情绪落地:按 `short-craft.md` 第 2 节检查上下文支撑,保留准确直写,清理空泛与重复说明
|
|
129
|
-
- [ ] 信物(若用):意义翻转是否完整?(查设定.md追踪表)
|
|
130
|
-
- [ ] 场景引擎:每节是否通过行动、证据、任务、对话、物件、等待或关系选择改变了至少一项状态?
|
|
131
|
-
- [ ] 开头密度:前 100 字事件 ≥ 3?
|
|
132
|
-
|
|
133
|
-
### 结尾
|
|
134
|
-
- [ ] 结尾是否有余韵?
|
|
135
|
-
- [ ] 读者会不会想转发?
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### 标点确定性收尾
|
|
139
|
-
|
|
140
|
-
精修后对 `正文.md` 先运行 `node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md`。blocking 先改正文并复扫;advisory 只作读感提示,确属问题才改,功能性写法标 `[需复核]`。
|
|
141
|
-
再运行 `node scripts/normalize-punctuation.js 正文.md`(默认 `--quote-mode keep`)清理无功能省略号、破折号、双连字符和独立分隔线;盐言「」不受影响。
|
|
142
|
-
|
|
143
|
-
### 删减原则
|
|
144
|
-
|
|
145
|
-
1. 不推动剧情的对话 → 删
|
|
146
|
-
2. 不铺垫反转的描写 → 删
|
|
147
|
-
3. 不推高情绪的心理活动 → 删
|
|
148
|
-
4. 读者能猜到的内容 → 缩短
|
|
149
|
-
5. 重复表达的情绪 → 合并
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## 常见问题与解决方案
|
|
47
|
+
### 设定.md 内容构成
|
|
154
48
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
| 开头不抓人 | 在做背景铺垫 | 直接从冲突开始 |
|
|
158
|
-
| 中间拖沓 | 信息密度太低 | 删减或合并场景 |
|
|
159
|
-
| 反转没力度 | 铺垫不够或太明显 | 增加误导线索 |
|
|
160
|
-
| 结尾无力 | 反转后拖太长 | 反转后 500 字内收尾 |
|
|
161
|
-
| 全篇平淡 | 情绪曲线太平 | 加大情绪落差 |
|
|
162
|
-
| 感觉像流水账 | 缺乏情绪描写 | 加入人物内心感受 |
|
|
49
|
+
核心框架(含平台基调、人设速写)+ 作者已定 + 题材招式 + 反转铺垫(信息差验证与伏笔回查结果)+ 贯穿道具 + 反派设计与揭露方式 + 对标摘要;写正文只读它与小节大纲,所以构思里定下的都要写进来。贯穿道具追踪表:
|
|
50
|
+
`| 物件 | 第1次出现(节号/含义) | 第2次出现(节号/含义) | 第3次出现(节号/含义) |`
|
|
@@ -41,7 +41,7 @@ LEGACY_ASSERTION_MAX_BYTES = 768 # 存量条目的读取上限;强化老条
|
|
|
41
41
|
# 是它在 prompt 里的注意力预算,不该放大。防「作者以为载入了、实际被静默
|
|
42
42
|
# 截断挤掉」靠三层:①新建条目的断言限 ASSERTION_MAX_BYTES,从源头短(强化
|
|
43
43
|
# 已有条目不受限,否则存量长断言再也无法被确认,只会派生重复条目);②写入
|
|
44
|
-
# 端按下列任务组合(与 references/author-memory.md 的映射表同包跟版)估算
|
|
44
|
+
# 端按下列任务组合(与 references/author-memory-maintenance.md 的映射表同包跟版)估算
|
|
45
45
|
# 最坏查询情形——全局条目+各 scope 维度上最重的单一切片(一次查询只带一
|
|
46
46
|
# 个 book/genre/workflow,不同书的条目不会同现;切片按 casefold 归并,与
|
|
47
47
|
# same_scope_value 同一口径,轻重按 compact 字节+列表分隔符算,与真实载荷
|
|
@@ -150,7 +150,7 @@ def is_item_id(value: object) -> bool:
|
|
|
150
150
|
isinstance(value, str)
|
|
151
151
|
and len(value) >= 3
|
|
152
152
|
and value[:2] in ID_PREFIXES
|
|
153
|
-
and value[2:].
|
|
153
|
+
and value[2:].isdecimal()
|
|
154
154
|
and int(value[2:]) >= 1
|
|
155
155
|
)
|
|
156
156
|
|
|
@@ -1414,7 +1414,7 @@ def command_query(
|
|
|
1414
1414
|
prepare_workspace(workspace, book_root)
|
|
1415
1415
|
require(
|
|
1416
1416
|
bool(kinds),
|
|
1417
|
-
"query 必须显式传 --kind
|
|
1417
|
+
"query 必须显式传 --kind(按调用方 skill 写好的 query 命令选类型,映射表见 references/author-memory-maintenance.md),不再默认返回全部类型",
|
|
1418
1418
|
)
|
|
1419
1419
|
project_state = load_state(project_store(workspace))
|
|
1420
1420
|
book_state = load_state(book_store(workspace, book_root, book)) if book_root is not None else None
|
|
@@ -6,6 +6,7 @@ const { loadStyleWhitelist, maskStyleText } = require('./style-whitelist.js');
|
|
|
6
6
|
const path = require('path');
|
|
7
7
|
|
|
8
8
|
const USAGE = `Usage: node check-ai-patterns.js [--check] [--json] [--fail-on=blocking|all] <file...>
|
|
9
|
+
node check-ai-patterns.js --list-review-classes
|
|
9
10
|
|
|
10
11
|
Detect high-risk AI-flavor prose patterns that need human rewrite:
|
|
11
12
|
- negative setup followed by positive flip in the same sentence
|
|
@@ -33,8 +34,10 @@ Detect high-risk AI-flavor prose patterns that need human rewrite:
|
|
|
33
34
|
|
|
34
35
|
Book-local .deslop-whitelist literal spans are excluded from style scanning (no regex or ancestor inheritance).
|
|
35
36
|
Each finding carries severity: blocking by default for generation/deslop cleanup (not-is-comparison / em-dash / voice-contrast / negation-parade / reverse-not-is / trailer-ending / trailer-summary). This is a local style/readability gate, not an AIGC detector score; functional human text can be marked for review instead of hard-edited for a detector.
|
|
36
|
-
或 advisory (period-stutter / long-paragraph / micro-action-tic / stock-reaction-tic / action-list-tic / abstract-summary-tic / cliche-density-tic / metaphor-density-tic / reasoning-chain-tic / system-notice-formality-tic / overcompressed-prose-tic / low-connective-density-tic / quote-emphasis-tic / formulaic-parallelism,是提示,justified 的长推理/氛围段可保留)。
|
|
37
|
+
或 advisory (period-stutter / long-paragraph / micro-action-tic / negation-pair-tic / stock-reaction-tic / action-list-tic / abstract-summary-tic / cliche-density-tic / metaphor-density-tic / reasoning-chain-tic / system-notice-formality-tic / overcompressed-prose-tic / low-connective-density-tic / quote-emphasis-tic / formulaic-parallelism,是提示,justified 的长推理/氛围段可保留)。
|
|
37
38
|
--fail-on=blocking 只在出现 blocking finding 时退出 1;默认 --fail-on=all 有任何 finding 即退出 1。
|
|
39
|
+
Each finding also carries review: mechanical(表面形态确定、就地改写即可)或 semantic(可能承担叙事功能,需读上下文判断是否保留);blocking 一律 mechanical。--list-review-classes 输出完整分类表(JSON)。
|
|
40
|
+
HTML comments (<!-- ... -->, e.g. the 去味:跳过 exemption marker) are metadata, not prose, and are never scanned.
|
|
38
41
|
|
|
39
42
|
The script reports findings only. It never rewrites text, because the safe fix is
|
|
40
43
|
contextual: usually delete the negative setup, write the positive term directly,
|
|
@@ -58,6 +61,10 @@ const LONG_PARAGRAPH_CHARS = 200;
|
|
|
58
61
|
// 单次出现是正常中文。
|
|
59
62
|
const MICRO_TIC_PATTERN = /了(?:[一两三几半])?[下阵圈道声眼口气会]/g;
|
|
60
63
|
const MICRO_TIC_MIN_HITS = 5;
|
|
64
|
+
// 「没A,也没B」「不A,也不B」否定对偶:七猫人类长篇约 0.07 处/千字,模型稿 0.4-1.5 处/千字;
|
|
65
|
+
// 写人物没做什么是英文式节奏,一章 3 处以上报一条提示。
|
|
66
|
+
const NEGATION_PAIR_PATTERN = /(?:没有|没|不)[^,。!?;,!?\n]{1,10}[,,;]\s*[^,。!?;,!?\n]{0,6}?也(?:没有|没|不)/g;
|
|
67
|
+
const NEGATION_PAIR_MIN_HITS = 3;
|
|
61
68
|
const MICRO_TIC_PER_KILO = 6;
|
|
62
69
|
|
|
63
70
|
// 套式反应细节:不是禁写身体,而是提示成片出现的“部位 + 轻微动作/状态”、
|
|
@@ -239,7 +246,7 @@ const REVERSE_NOT_IS_PREV_EXCLUDE = new Set([...COMPACT_EITHER_OR_PREV, '还', '
|
|
|
239
246
|
const TRAILER_ENDING_PATTERN = /没人知道|谁也不知道|谁也没想到|殊不知|(?:这)?才刚刚开(?:始|头)|正(?:朝着|向着)[^。!?!?\n]{0,24}(?:压|涌|袭|逼)(?:了?过去|了?过来|来)|(?<!正式)拉开(?:序幕|帷幕)|即将(?:开始|来临|降临)/g;
|
|
240
247
|
const TRAILER_ENDING_WINDOW_CHARS = 600;
|
|
241
248
|
|
|
242
|
-
//
|
|
249
|
+
// 章尾状态总结体:把细纲「结尾设定」原样写成总结句收章(「这一夜注定无人入眠」
|
|
243
250
|
// 「这一切都结束了」「新的人生才刚刚开始」「命运的齿轮」)。与 trailer-ending 共用文末窗口,
|
|
244
251
|
// 区别是它盖章过去、trailer-ending 预告将来;收的都是 banned-words 已按名禁掉的形态。
|
|
245
252
|
// 不收「(这|那)一刻…终于明白」:真人语料里那是正常的认知节拍,短篇第一人称审判句还是卖点
|
|
@@ -266,6 +273,58 @@ const QUOTE_EMPHASIS_MIN_HITS = 3;
|
|
|
266
273
|
const QUOTE_EMPHASIS_MAX_VISIBLE = 4;
|
|
267
274
|
const QUOTE_EMPHASIS_SPEECH_VERB_PATTERN = /[说道问喊答念叫回吼骂写读唱嘀咕]/;
|
|
268
275
|
|
|
276
|
+
// review 分类:下游按它分流。mechanical = 命中的表面形态本身就是问题,写作端就地改写即可;
|
|
277
|
+
// semantic = 同一形态可能承担叙事功能,要读上下文判断保留还是改(交语义审查)。blocking 只能是
|
|
278
|
+
// mechanical(blocking 的含义就是不需判断、必须清零)。新增 finding type 必须在此登记,否则运行期
|
|
279
|
+
// 直接报错退出(scripts/test-ai-patterns.sh 另从源码抽 type 与本表双向核对)。
|
|
280
|
+
// type review 理由
|
|
281
|
+
// not-is-comparison mechanical 固定句式模板「不是A,而是B」,blocking
|
|
282
|
+
// voice-contrast mechanical 固定反差模板「声音不大…却」,blocking
|
|
283
|
+
// negation-parade mechanical 固定否定排比模板,blocking
|
|
284
|
+
// reverse-not-is mechanical 固定反序对比模板「是A,不是B」,blocking
|
|
285
|
+
// trailer-ending mechanical 文末窗口固定预告短语,blocking
|
|
286
|
+
// trailer-summary mechanical 文末窗口固定总结短语,blocking
|
|
287
|
+
// em-dash mechanical 标点,blocking
|
|
288
|
+
// long-paragraph mechanical 段长阈值,断段即可
|
|
289
|
+
// period-stutter mechanical 连续短句计数,合句即可
|
|
290
|
+
// micro-action-tic mechanical 固定补语「了下/了一下」密度
|
|
291
|
+
// negation-pair-tic semantic 「没A,也没B」否定对偶,留真正要强调的
|
|
292
|
+
// cliche-density-tic mechanical 固定禁用词表密度
|
|
293
|
+
// stock-reaction-tic semantic 身体反应可能承担物理后果或情绪,要逐处做删除测试
|
|
294
|
+
// action-list-tic semantic 打斗/追逐等功能性动作编排可保留
|
|
295
|
+
// abstract-summary-tic semantic 作者总结/上帝视角,是否越位要看语境
|
|
296
|
+
// metaphor-density-tic semantic 比喻是否服务画面、删哪几个要读上下文
|
|
297
|
+
// reasoning-chain-tic semantic 替读者推理的解释链,长推理段可能是正当的
|
|
298
|
+
// system-notice-formality-tic semantic 系统/规则文本本就可以公文腔,看体裁功能
|
|
299
|
+
// overcompressed-prose-tic semantic 短段过密可能是节奏选择,禁止机械注水
|
|
300
|
+
// low-connective-density-tic semantic 同上,连接词补不补要看读感
|
|
301
|
+
// quote-emphasis-tic semantic 标语/转述载体的引号是正常写法
|
|
302
|
+
// formulaic-parallelism semantic 工整并列可能承担辩解或悬念排除
|
|
303
|
+
const REVIEW_CLASSES = Object.freeze({
|
|
304
|
+
'not-is-comparison': 'mechanical',
|
|
305
|
+
'voice-contrast': 'mechanical',
|
|
306
|
+
'negation-parade': 'mechanical',
|
|
307
|
+
'reverse-not-is': 'mechanical',
|
|
308
|
+
'trailer-ending': 'mechanical',
|
|
309
|
+
'trailer-summary': 'mechanical',
|
|
310
|
+
'em-dash': 'mechanical',
|
|
311
|
+
'long-paragraph': 'mechanical',
|
|
312
|
+
'period-stutter': 'mechanical',
|
|
313
|
+
'micro-action-tic': 'mechanical',
|
|
314
|
+
'negation-pair-tic': 'semantic',
|
|
315
|
+
'cliche-density-tic': 'mechanical',
|
|
316
|
+
'stock-reaction-tic': 'semantic',
|
|
317
|
+
'action-list-tic': 'semantic',
|
|
318
|
+
'abstract-summary-tic': 'semantic',
|
|
319
|
+
'metaphor-density-tic': 'semantic',
|
|
320
|
+
'reasoning-chain-tic': 'semantic',
|
|
321
|
+
'system-notice-formality-tic': 'semantic',
|
|
322
|
+
'overcompressed-prose-tic': 'semantic',
|
|
323
|
+
'low-connective-density-tic': 'semantic',
|
|
324
|
+
'quote-emphasis-tic': 'semantic',
|
|
325
|
+
'formulaic-parallelism': 'semantic',
|
|
326
|
+
});
|
|
327
|
+
|
|
269
328
|
const options = {
|
|
270
329
|
json: false,
|
|
271
330
|
files: [],
|
|
@@ -276,6 +335,9 @@ for (let i = 2; i < process.argv.length; i += 1) {
|
|
|
276
335
|
const arg = process.argv[i];
|
|
277
336
|
if (arg === '--check') {
|
|
278
337
|
// Accepted for symmetry with normalize-punctuation.js; detection is always check-only.
|
|
338
|
+
} else if (arg === '--list-review-classes') {
|
|
339
|
+
process.stdout.write(`${JSON.stringify(REVIEW_CLASSES, null, 2)}\n`);
|
|
340
|
+
process.exit(0);
|
|
279
341
|
} else if (arg === '--json') {
|
|
280
342
|
options.json = true;
|
|
281
343
|
} else if (arg.startsWith('--fail-on=')) {
|
|
@@ -313,7 +375,7 @@ for (const file of options.files) {
|
|
|
313
375
|
let whitelist;
|
|
314
376
|
try { whitelist = loadStyleWhitelist(fullPath); }
|
|
315
377
|
catch (error) { die(`${file}: unable to read .deslop-whitelist (${error.message})`); }
|
|
316
|
-
const findings = scanDocument(maskStyleText(input, whitelist)).map((finding) => ({ file, ...finding }));
|
|
378
|
+
const findings = scanDocument(maskStyleText(input, whitelist)).map((finding) => ({ file, ...finding, review: reviewClass(finding.type) }));
|
|
317
379
|
allFindings.push(...findings);
|
|
318
380
|
}
|
|
319
381
|
|
|
@@ -330,6 +392,15 @@ if (failed) process.exit(2);
|
|
|
330
392
|
const hasBlocking = allFindings.some((f) => f.severity === 'blocking');
|
|
331
393
|
if (options.failOn === 'blocking' ? hasBlocking : allFindings.length > 0) process.exit(1);
|
|
332
394
|
|
|
395
|
+
function reviewClass(type) {
|
|
396
|
+
const review = REVIEW_CLASSES[type];
|
|
397
|
+
if (!review) {
|
|
398
|
+
console.error(`internal error: finding type '${type}' has no review class (add it to REVIEW_CLASSES)`);
|
|
399
|
+
process.exit(2);
|
|
400
|
+
}
|
|
401
|
+
return review;
|
|
402
|
+
}
|
|
403
|
+
|
|
333
404
|
function escapeRegExp(text) {
|
|
334
405
|
return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
335
406
|
}
|
|
@@ -344,11 +415,15 @@ function die(message) {
|
|
|
344
415
|
process.exit(2);
|
|
345
416
|
}
|
|
346
417
|
|
|
347
|
-
|
|
418
|
+
// unclosedOpenings:到文末都没闭合的 `<!--` 位置("行号:列号")。未闭合的注释不是注释,
|
|
419
|
+
// 否则一个漏写的 `-->` 会把后面整章藏起来;这些位置按正文扫描,只把 `<!--` 本身抹掉。
|
|
420
|
+
function scanDocument(input, unclosedOpenings = new Set()) {
|
|
348
421
|
const lines = input.split(/\r?\n/);
|
|
349
422
|
const findings = [];
|
|
350
423
|
let fence = null;
|
|
351
424
|
let inFrontMatter = hasYamlFrontMatter(lines);
|
|
425
|
+
let commentOpen = false;
|
|
426
|
+
let commentStart = null;
|
|
352
427
|
let block = [];
|
|
353
428
|
const proseLines = [];
|
|
354
429
|
|
|
@@ -375,14 +450,25 @@ function scanDocument(input) {
|
|
|
375
450
|
continue;
|
|
376
451
|
}
|
|
377
452
|
|
|
378
|
-
if (fenceMarker) {
|
|
453
|
+
if (fenceMarker && !commentOpen) {
|
|
379
454
|
flushBlock();
|
|
380
455
|
fence = fenceMarker;
|
|
381
456
|
continue;
|
|
382
457
|
}
|
|
383
458
|
|
|
384
|
-
|
|
385
|
-
|
|
459
|
+
// HTML 注释(如 `<!-- 去味:跳过 -->` 豁免标记)是元信息不是正文:注释段等长换成空格
|
|
460
|
+
// 保列号,整行都是注释的直接跳过;注释可跨行。
|
|
461
|
+
const masked = maskHtmlComments(line, commentOpen, index, unclosedOpenings);
|
|
462
|
+
commentOpen = masked.open;
|
|
463
|
+
if (masked.openedAt !== null) commentStart = masked.openedAt;
|
|
464
|
+
if (masked.text !== line && !masked.text.trim()) continue;
|
|
465
|
+
|
|
466
|
+
block.push({ text: masked.text, lineNo: index + 1 });
|
|
467
|
+
proseLines.push({ text: masked.text, lineNo: index + 1 });
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
if (commentOpen && commentStart !== null) {
|
|
471
|
+
return scanDocument(input, new Set([...unclosedOpenings, commentStart]));
|
|
386
472
|
}
|
|
387
473
|
|
|
388
474
|
flushBlock();
|
|
@@ -432,6 +518,7 @@ function scanProsePatterns(proseLines) {
|
|
|
432
518
|
findings.push(...findQuoteEmphasisTic(proseLines));
|
|
433
519
|
findings.push(...findPeriodStutter(proseLines));
|
|
434
520
|
findings.push(...findMicroActionTic(proseLines));
|
|
521
|
+
findings.push(...findNegationPairTic(proseLines));
|
|
435
522
|
findings.push(...findStockReactionTic(proseLines));
|
|
436
523
|
findings.push(...findActionListTic(proseLines));
|
|
437
524
|
findings.push(...findAbstractSummaryTic(proseLines));
|
|
@@ -638,7 +725,7 @@ function findTrailerEnding(proseLines) {
|
|
|
638
725
|
column: summaryMatch.index + 1,
|
|
639
726
|
type: 'trailer-summary',
|
|
640
727
|
severity: 'blocking',
|
|
641
|
-
message: '
|
|
728
|
+
message: '章尾状态总结体:「这一夜注定…/这一切都结束了/新的人生才刚刚开始/命运的齿轮」是把细纲的结尾设定原样写成了总结句;结尾设定要落成最后一个具体动作、画面或台词,别替读者盖章。',
|
|
642
729
|
excerpt: compact(text.slice(summaryMatch.index, summaryMatch.index + summaryMatch[0].length)),
|
|
643
730
|
});
|
|
644
731
|
}
|
|
@@ -691,6 +778,34 @@ function findQuoteEmphasisTic(proseLines) {
|
|
|
691
778
|
}];
|
|
692
779
|
}
|
|
693
780
|
|
|
781
|
+
// 否定对偶:统计引号外叙述里「没A,也没B」式句子,全文只报一条。
|
|
782
|
+
function findNegationPairTic(proseLines) {
|
|
783
|
+
let hits = 0;
|
|
784
|
+
let firstLine = null;
|
|
785
|
+
const samples = [];
|
|
786
|
+
for (const { text, lineNo } of proseLines) {
|
|
787
|
+
const trimmed = text.trim();
|
|
788
|
+
if (!trimmed || isDivider(trimmed) || isStructural(trimmed)) continue;
|
|
789
|
+
const narrative = stripQuoted(trimmed);
|
|
790
|
+
NEGATION_PAIR_PATTERN.lastIndex = 0;
|
|
791
|
+
let match;
|
|
792
|
+
while ((match = NEGATION_PAIR_PATTERN.exec(narrative)) !== null) {
|
|
793
|
+
hits += 1;
|
|
794
|
+
if (firstLine === null) firstLine = lineNo;
|
|
795
|
+
if (samples.length < 4) samples.push(match[0]);
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
if (hits < NEGATION_PAIR_MIN_HITS) return [];
|
|
799
|
+
return [{
|
|
800
|
+
line: firstLine,
|
|
801
|
+
column: 1,
|
|
802
|
+
type: 'negation-pair-tic',
|
|
803
|
+
severity: 'advisory',
|
|
804
|
+
message: `否定对偶偏多:「没A,也没B」式叙述 ${hits} 处;写人物没做什么是英文式节奏,改成他做了什么(留一两处真正要强调的)。`,
|
|
805
|
+
excerpt: compact(samples.join(' | ')),
|
|
806
|
+
}];
|
|
807
|
+
}
|
|
808
|
+
|
|
694
809
|
// 微动作复读:统计引号外叙述里「了X量词」轻量补语的密度。次数与每千字密度双门槛,
|
|
695
810
|
// 全文只报一条(这是分布级指纹,不是逐处问题)。
|
|
696
811
|
function findMicroActionTic(proseLines) {
|
|
@@ -1242,6 +1357,38 @@ function countTerms(text, terms) {
|
|
|
1242
1357
|
return count;
|
|
1243
1358
|
}
|
|
1244
1359
|
|
|
1360
|
+
// 把行内 HTML 注释(含 `<!--`、`-->` 本身)换成等长空格;openBefore 表示上一行留下未闭合注释。
|
|
1361
|
+
// unclosedOpenings 里的 `<!--` 到文末都没闭合:只抹掉这四个字符,后面照常当正文。
|
|
1362
|
+
// openedAt 是本行最后一个开始注释的 `<!--` 位置("行号:列号"),没有则为 null。
|
|
1363
|
+
function maskHtmlComments(line, openBefore, lineIndex = 0, unclosedOpenings = new Set()) {
|
|
1364
|
+
let out = '';
|
|
1365
|
+
let open = openBefore;
|
|
1366
|
+
let cursor = 0;
|
|
1367
|
+
let openedAt = null;
|
|
1368
|
+
while (cursor < line.length) {
|
|
1369
|
+
if (open) {
|
|
1370
|
+
const close = line.indexOf('-->', cursor);
|
|
1371
|
+
const end = close === -1 ? line.length : close + 3;
|
|
1372
|
+
out += ' '.repeat(end - cursor);
|
|
1373
|
+
cursor = end;
|
|
1374
|
+
if (close !== -1) open = false;
|
|
1375
|
+
continue;
|
|
1376
|
+
}
|
|
1377
|
+
const start = line.indexOf('<!--', cursor);
|
|
1378
|
+
if (start === -1) {
|
|
1379
|
+
out += line.slice(cursor);
|
|
1380
|
+
break;
|
|
1381
|
+
}
|
|
1382
|
+
out += line.slice(cursor, start) + ' ';
|
|
1383
|
+
cursor = start + 4;
|
|
1384
|
+
const key = `${lineIndex}:${start}`;
|
|
1385
|
+
if (unclosedOpenings.has(key)) continue;
|
|
1386
|
+
open = true;
|
|
1387
|
+
openedAt = key;
|
|
1388
|
+
}
|
|
1389
|
+
return { text: out, open, openedAt };
|
|
1390
|
+
}
|
|
1391
|
+
|
|
1245
1392
|
function parseFenceMarker(trimmedLine) {
|
|
1246
1393
|
const match = /^(?:`{3,}|~{3,})/.exec(trimmedLine);
|
|
1247
1394
|
if (!match) return null;
|
|
@@ -284,10 +284,15 @@ function checkOne(proseFile, explicitOutline) {
|
|
|
284
284
|
}
|
|
285
285
|
|
|
286
286
|
const rate = ((copied * 100) / P.length).toFixed(1)
|
|
287
|
+
// 短篇没有细纲:锚句登记在 小节大纲.md 末尾,措辞按短篇说,长篇原文不变
|
|
288
|
+
const isShort = path.basename(outlineFile) === '小节大纲.md'
|
|
289
|
+
const guidance = isShort
|
|
290
|
+
? `逐条对照原文判断:确属把小节大纲叙述搬进正文就重写——大纲只锁功能与结果,句子在正文现场写;誓词、关键原话、固定专名等功能性重合可保留。每条都要有结论,不为归零机械改写。保留项由主会话登记进小节大纲.md 末尾「复沓锚句:」行下(每行一条原话,缩进写)再复检——子代理只重写正文或标 \`[需复核]\` 交回,不改小节大纲。`
|
|
291
|
+
: `逐条对照原文判断:确属把细纲叙述搬进正文就重写——细纲只锁功能与结果,句子在正文现场写;系统面板、誓词、案卷原话、固定专名等功能性重合可保留。每条都要有结论,不为归零机械改写。保留项由主会话补进细纲「复沓锚句」——子代理只重写正文或标 \`[需复核]\` 交回,不改大纲细纲。`
|
|
287
292
|
const out = [
|
|
288
|
-
`===
|
|
293
|
+
`=== ${isShort ? '小节大纲' : '细纲'}照搬检测(${path.basename(proseFile)})===`,
|
|
289
294
|
`正文 ${P.length} 字,与 ${path.basename(outlineFile)} 连续重合 >${MIN_RUN - 1} 字的片段 ${hits.length} 处,共 ${copied} 字(${rate}%)。`,
|
|
290
|
-
|
|
295
|
+
guidance,
|
|
291
296
|
]
|
|
292
297
|
hits
|
|
293
298
|
.sort((a, b) => b.len - a.len)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-studio.d.ts","sourceRoot":"","sources":["../../../src/client/video-studio.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;CACxE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACrD;
|
|
1
|
+
{"version":3,"file":"video-studio.d.ts","sourceRoot":"","sources":["../../../src/client/video-studio.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;CACxE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACrD;AA+KD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,QAAQ,EACR,OAAO,EACP,SAAS,EACT,GAAG,EACH,MAAM,EACN,WAAW,EACX,MAAM,EACN,UAAU,EACV,SAAS,EACT,KAAK,EACL,WAAW,EACX,UAAU,EACX,EAAE;IACD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;CACjC,2CA6BA"}
|
|
@@ -17,7 +17,7 @@ export interface StoryMutation {
|
|
|
17
17
|
readonly chapter?: number;
|
|
18
18
|
}
|
|
19
19
|
export declare function detectStoryMutation(name: string, args: unknown, cwd: string | undefined): StoryMutation | undefined;
|
|
20
|
-
type StoryFileSystem = Pick<FileSystem, "resolve" | "contains" | "stat" | "listDir"
|
|
20
|
+
type StoryFileSystem = Pick<FileSystem, "resolve" | "contains" | "stat" | "listDir"> & Partial<Pick<FileSystem, "readBytes">>;
|
|
21
21
|
/**
|
|
22
22
|
* DSH's explicit import-window marker, relative to the book directory (the
|
|
23
23
|
* workspace root in DSH's single-book layout). The story-import overlay has
|
|
@@ -28,7 +28,7 @@ export declare const IMPORT_MARKER = ".story/work/\u5BFC\u5165\u4E2D.md";
|
|
|
28
28
|
/**
|
|
29
29
|
* Mirrors the outline gate of upstream Oh Story's prose guard
|
|
30
30
|
* (`proseBlockReason`) for books with 大纲/ or 追踪/: creating a new
|
|
31
|
-
* `正文/第N章*.md` requires
|
|
31
|
+
* `正文/第N章*.md` requires a `大纲/细纲_第N章*.md` that is not empty, whether or not Tracking
|
|
32
32
|
* exists yet. The one bypass is an import window — an import signal while the
|
|
33
33
|
* book has no `追踪/_tracking-state.json`. Rewriting an existing chapter is not
|
|
34
34
|
* gated on its outline.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-hooks.d.ts","sourceRoot":"","sources":["../../src/native-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"native-hooks.d.ts","sourceRoot":"","sources":["../../src/native-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAA0C,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElG,OAAO,KAAK,EAAoB,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG/F,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,gBAAgB;QACxB,kFAAkF;QAClF,qBAAqB,EAAE;YAAE,IAAI,EAAE,qBAAqB,CAAA;SAAE,GAAG,aAAa,CAAC;KACxE;CACF;AAID,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAkDD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAgBnH;AAED,KAAK,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AA8D9H;;;;;GAKG;AACH,eAAO,MAAM,aAAa,sCAAuB,CAAC;AAqBlD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,eAAe,EACnB,QAAQ,EAAE,aAAa,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmB7B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,GACnC,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAuBD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,eAAe,EACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAyB7B;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,GACnC,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,MAAM,CAclG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6B3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-tool.d.ts","sourceRoot":"","sources":["../../src/role-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAOzE,OAAO,EAAwC,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhG,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"role-tool.d.ts","sourceRoot":"","sources":["../../src/role-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAOzE,OAAO,EAAwC,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhG,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAelE,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAE3F;AAMD,wBAAsB,qBAAqB,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAqErG;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAa7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-provider.d.ts","sourceRoot":"","sources":["../../src/skill-provider.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-provider.d.ts","sourceRoot":"","sources":["../../src/skill-provider.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAuNhC,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAuBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAa7D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAKhD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAK9C;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAKpD;AAuDD,wBAAgB,0BAA0B,CAAC,SAAS,SAA4B,GAAG,aAAa,CAE/F;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,SAA0B,GAAG,MAAM,CAM/G;AAED,wBAAgB,wBAAwB,CAAC,SAAS,SAA0B,GAAG,aAAa,CAE3F;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,8BAA8B,CAAC,SAAS,SAAgC,GAAG,aAAa,CAEvG;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAKnD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,6BAA6B,CAAC,SAAS,SAA+B,GAAG,aAAa,CAErG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-project.d.ts","sourceRoot":"","sources":["../../src/video-project.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;CACxE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACrD;
|
|
1
|
+
{"version":3,"file":"video-project.d.ts","sourceRoot":"","sources":["../../src/video-project.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;CACxE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACrD;AAoDD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKjE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWtD;AA0BD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,kBAAkB,EAAE,EACpC,QAAQ,GAAE;IACR,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACxB,GACL,mBAAmB,CA6DrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-route.d.ts","sourceRoot":"","sources":["../../src/workspace-route.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAqCnD,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;
|
|
1
|
+
{"version":3,"file":"workspace-route.d.ts","sourceRoot":"","sources":["../../src/workspace-route.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAqCnD,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AA8HD,MAAM,WAAW,SAAS;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE;AAE3E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAcpG;AAwGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAW7E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAoHD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ9C;AAmMD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBnE;AA2JD,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAM7F"}
|