inkos-n-core 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/ai-tells.d.ts +26 -0
- package/dist/agents/ai-tells.d.ts.map +1 -0
- package/dist/agents/ai-tells.js +140 -0
- package/dist/agents/ai-tells.js.map +1 -0
- package/dist/agents/architect.d.ts +34 -0
- package/dist/agents/architect.d.ts.map +1 -0
- package/dist/agents/architect.js +906 -0
- package/dist/agents/architect.js.map +1 -0
- package/dist/agents/base.d.ts +30 -0
- package/dist/agents/base.d.ts.map +1 -0
- package/dist/agents/base.js +70 -0
- package/dist/agents/base.js.map +1 -0
- package/dist/agents/chapter-analyzer.d.ts +30 -0
- package/dist/agents/chapter-analyzer.d.ts.map +1 -0
- package/dist/agents/chapter-analyzer.js +476 -0
- package/dist/agents/chapter-analyzer.js.map +1 -0
- package/dist/agents/composer.d.ts +36 -0
- package/dist/agents/composer.d.ts.map +1 -0
- package/dist/agents/composer.js +319 -0
- package/dist/agents/composer.js.map +1 -0
- package/dist/agents/consolidator.d.ts +23 -0
- package/dist/agents/consolidator.d.ts.map +1 -0
- package/dist/agents/consolidator.js +141 -0
- package/dist/agents/consolidator.js.map +1 -0
- package/dist/agents/continuity.d.ts +39 -0
- package/dist/agents/continuity.d.ts.map +1 -0
- package/dist/agents/continuity.js +612 -0
- package/dist/agents/continuity.js.map +1 -0
- package/dist/agents/detection-insights.d.ts +9 -0
- package/dist/agents/detection-insights.d.ts.map +1 -0
- package/dist/agents/detection-insights.js +54 -0
- package/dist/agents/detection-insights.js.map +1 -0
- package/dist/agents/detector.d.ts +17 -0
- package/dist/agents/detector.d.ts.map +1 -0
- package/dist/agents/detector.js +77 -0
- package/dist/agents/detector.js.map +1 -0
- package/dist/agents/en-prompt-sections.d.ts +8 -0
- package/dist/agents/en-prompt-sections.d.ts.map +1 -0
- package/dist/agents/en-prompt-sections.js +120 -0
- package/dist/agents/en-prompt-sections.js.map +1 -0
- package/dist/agents/fanfic-canon-importer.d.ts +15 -0
- package/dist/agents/fanfic-canon-importer.d.ts.map +1 -0
- package/dist/agents/fanfic-canon-importer.js +117 -0
- package/dist/agents/fanfic-canon-importer.js.map +1 -0
- package/dist/agents/fanfic-dimensions.d.ts +14 -0
- package/dist/agents/fanfic-dimensions.d.ts.map +1 -0
- package/dist/agents/fanfic-dimensions.js +63 -0
- package/dist/agents/fanfic-dimensions.js.map +1 -0
- package/dist/agents/fanfic-prompt-sections.d.ts +5 -0
- package/dist/agents/fanfic-prompt-sections.d.ts.map +1 -0
- package/dist/agents/fanfic-prompt-sections.js +85 -0
- package/dist/agents/fanfic-prompt-sections.js.map +1 -0
- package/dist/agents/foundation-reviewer.d.ts +29 -0
- package/dist/agents/foundation-reviewer.d.ts.map +1 -0
- package/dist/agents/foundation-reviewer.js +153 -0
- package/dist/agents/foundation-reviewer.js.map +1 -0
- package/dist/agents/length-normalizer.d.ts +32 -0
- package/dist/agents/length-normalizer.d.ts.map +1 -0
- package/dist/agents/length-normalizer.js +156 -0
- package/dist/agents/length-normalizer.js.map +1 -0
- package/dist/agents/observer-prompts.d.ts +10 -0
- package/dist/agents/observer-prompts.d.ts.map +1 -0
- package/dist/agents/observer-prompts.js +113 -0
- package/dist/agents/observer-prompts.js.map +1 -0
- package/dist/agents/planner.d.ts +57 -0
- package/dist/agents/planner.d.ts.map +1 -0
- package/dist/agents/planner.js +594 -0
- package/dist/agents/planner.js.map +1 -0
- package/dist/agents/post-write-validator.d.ts +34 -0
- package/dist/agents/post-write-validator.d.ts.map +1 -0
- package/dist/agents/post-write-validator.js +696 -0
- package/dist/agents/post-write-validator.js.map +1 -0
- package/dist/agents/radar-source.d.ts +38 -0
- package/dist/agents/radar-source.d.ts.map +1 -0
- package/dist/agents/radar-source.js +92 -0
- package/dist/agents/radar-source.js.map +1 -0
- package/dist/agents/radar.d.ts +24 -0
- package/dist/agents/radar.d.ts.map +1 -0
- package/dist/agents/radar.js +85 -0
- package/dist/agents/radar.js.map +1 -0
- package/dist/agents/reviser.d.ts +32 -0
- package/dist/agents/reviser.d.ts.map +1 -0
- package/dist/agents/reviser.js +282 -0
- package/dist/agents/reviser.js.map +1 -0
- package/dist/agents/rules-reader.d.ts +27 -0
- package/dist/agents/rules-reader.d.ts.map +1 -0
- package/dist/agents/rules-reader.js +99 -0
- package/dist/agents/rules-reader.js.map +1 -0
- package/dist/agents/sensitive-words.d.ts +24 -0
- package/dist/agents/sensitive-words.d.ts.map +1 -0
- package/dist/agents/sensitive-words.js +103 -0
- package/dist/agents/sensitive-words.js.map +1 -0
- package/dist/agents/settler-delta-parser.d.ts +7 -0
- package/dist/agents/settler-delta-parser.d.ts.map +1 -0
- package/dist/agents/settler-delta-parser.js +40 -0
- package/dist/agents/settler-delta-parser.js.map +1 -0
- package/dist/agents/settler-parser.d.ts +13 -0
- package/dist/agents/settler-parser.d.ts.map +1 -0
- package/dist/agents/settler-parser.js +20 -0
- package/dist/agents/settler-parser.js.map +1 -0
- package/dist/agents/settler-prompts.d.ts +22 -0
- package/dist/agents/settler-prompts.d.ts.map +1 -0
- package/dist/agents/settler-prompts.js +193 -0
- package/dist/agents/settler-prompts.js.map +1 -0
- package/dist/agents/state-validator.d.ts +26 -0
- package/dist/agents/state-validator.d.ts.map +1 -0
- package/dist/agents/state-validator.js +229 -0
- package/dist/agents/state-validator.js.map +1 -0
- package/dist/agents/style-analyzer.d.ts +11 -0
- package/dist/agents/style-analyzer.d.ts.map +1 -0
- package/dist/agents/style-analyzer.js +81 -0
- package/dist/agents/style-analyzer.js.map +1 -0
- package/dist/agents/writer-parser.d.ts +17 -0
- package/dist/agents/writer-parser.d.ts.map +1 -0
- package/dist/agents/writer-parser.js +131 -0
- package/dist/agents/writer-parser.js.map +1 -0
- package/dist/agents/writer-prompts.d.ts +11 -0
- package/dist/agents/writer-prompts.d.ts.map +1 -0
- package/dist/agents/writer-prompts.js +549 -0
- package/dist/agents/writer-prompts.js.map +1 -0
- package/dist/agents/writer.d.ts +103 -0
- package/dist/agents/writer.d.ts.map +1 -0
- package/dist/agents/writer.js +1052 -0
- package/dist/agents/writer.js.map +1 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction/edit-controller.d.ts +55 -0
- package/dist/interaction/edit-controller.d.ts.map +1 -0
- package/dist/interaction/edit-controller.js +187 -0
- package/dist/interaction/edit-controller.js.map +1 -0
- package/dist/interaction/events.d.ts +45 -0
- package/dist/interaction/events.d.ts.map +1 -0
- package/dist/interaction/events.js +32 -0
- package/dist/interaction/events.js.map +1 -0
- package/dist/interaction/intents.d.ts +96 -0
- package/dist/interaction/intents.d.ts.map +1 -0
- package/dist/interaction/intents.js +58 -0
- package/dist/interaction/intents.js.map +1 -0
- package/dist/interaction/modes.d.ts +5 -0
- package/dist/interaction/modes.d.ts.map +1 -0
- package/dist/interaction/modes.js +7 -0
- package/dist/interaction/modes.js.map +1 -0
- package/dist/interaction/nl-router.d.ts +8 -0
- package/dist/interaction/nl-router.d.ts.map +1 -0
- package/dist/interaction/nl-router.js +218 -0
- package/dist/interaction/nl-router.js.map +1 -0
- package/dist/interaction/project-control.d.ts +85 -0
- package/dist/interaction/project-control.d.ts.map +1 -0
- package/dist/interaction/project-control.js +123 -0
- package/dist/interaction/project-control.js.map +1 -0
- package/dist/interaction/project-session-store.d.ts +7 -0
- package/dist/interaction/project-session-store.d.ts.map +1 -0
- package/dist/interaction/project-session-store.js +46 -0
- package/dist/interaction/project-session-store.js.map +1 -0
- package/dist/interaction/project-tools.d.ts +20 -0
- package/dist/interaction/project-tools.d.ts.map +1 -0
- package/dist/interaction/project-tools.js +527 -0
- package/dist/interaction/project-tools.js.map +1 -0
- package/dist/interaction/request-router.d.ts +3 -0
- package/dist/interaction/request-router.d.ts.map +1 -0
- package/dist/interaction/request-router.js +5 -0
- package/dist/interaction/request-router.js.map +1 -0
- package/dist/interaction/runtime.d.ts +54 -0
- package/dist/interaction/runtime.d.ts.map +1 -0
- package/dist/interaction/runtime.js +943 -0
- package/dist/interaction/runtime.js.map +1 -0
- package/dist/interaction/session.d.ts +352 -0
- package/dist/interaction/session.d.ts.map +1 -0
- package/dist/interaction/session.js +98 -0
- package/dist/interaction/session.js.map +1 -0
- package/dist/interaction/truth-authority.d.ts +4 -0
- package/dist/interaction/truth-authority.d.ts.map +1 -0
- package/dist/interaction/truth-authority.js +37 -0
- package/dist/interaction/truth-authority.js.map +1 -0
- package/dist/llm/provider.d.ts +87 -0
- package/dist/llm/provider.d.ts.map +1 -0
- package/dist/llm/provider.js +798 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/models/book-rules.d.ts +118 -0
- package/dist/models/book-rules.d.ts.map +1 -0
- package/dist/models/book-rules.js +55 -0
- package/dist/models/book-rules.js.map +1 -0
- package/dist/models/book.d.ts +51 -0
- package/dist/models/book.d.ts.map +1 -0
- package/dist/models/book.js +27 -0
- package/dist/models/book.js.map +1 -0
- package/dist/models/chapter.d.ts +136 -0
- package/dist/models/chapter.d.ts.map +1 -0
- package/dist/models/chapter.js +38 -0
- package/dist/models/chapter.js.map +1 -0
- package/dist/models/detection.d.ts +25 -0
- package/dist/models/detection.d.ts.map +1 -0
- package/dist/models/detection.js +2 -0
- package/dist/models/detection.js.map +1 -0
- package/dist/models/genre-profile.d.ts +45 -0
- package/dist/models/genre-profile.d.ts.map +1 -0
- package/dist/models/genre-profile.js +26 -0
- package/dist/models/genre-profile.js.map +1 -0
- package/dist/models/input-governance.d.ts +516 -0
- package/dist/models/input-governance.d.ts.map +1 -0
- package/dist/models/input-governance.js +112 -0
- package/dist/models/input-governance.js.map +1 -0
- package/dist/models/length-governance.d.ts +93 -0
- package/dist/models/length-governance.d.ts.map +1 -0
- package/dist/models/length-governance.js +34 -0
- package/dist/models/length-governance.js.map +1 -0
- package/dist/models/project.d.ts +475 -0
- package/dist/models/project.d.ts.map +1 -0
- package/dist/models/project.js +100 -0
- package/dist/models/project.js.map +1 -0
- package/dist/models/runtime-state.d.ts +588 -0
- package/dist/models/runtime-state.d.ts.map +1 -0
- package/dist/models/runtime-state.js +93 -0
- package/dist/models/runtime-state.js.map +1 -0
- package/dist/models/state.d.ts +48 -0
- package/dist/models/state.d.ts.map +1 -0
- package/dist/models/state.js +6 -0
- package/dist/models/state.js.map +1 -0
- package/dist/models/style-profile.d.ts +16 -0
- package/dist/models/style-profile.d.ts.map +1 -0
- package/dist/models/style-profile.js +2 -0
- package/dist/models/style-profile.js.map +1 -0
- package/dist/notify/dispatcher.d.ts +10 -0
- package/dist/notify/dispatcher.d.ts.map +1 -0
- package/dist/notify/dispatcher.js +55 -0
- package/dist/notify/dispatcher.js.map +1 -0
- package/dist/notify/feishu.d.ts +5 -0
- package/dist/notify/feishu.d.ts.map +1 -0
- package/dist/notify/feishu.js +26 -0
- package/dist/notify/feishu.js.map +1 -0
- package/dist/notify/telegram.d.ts +6 -0
- package/dist/notify/telegram.d.ts.map +1 -0
- package/dist/notify/telegram.js +17 -0
- package/dist/notify/telegram.js.map +1 -0
- package/dist/notify/webhook.d.ts +15 -0
- package/dist/notify/webhook.d.ts.map +1 -0
- package/dist/notify/webhook.js +28 -0
- package/dist/notify/webhook.js.map +1 -0
- package/dist/notify/wechat-work.d.ts +5 -0
- package/dist/notify/wechat-work.d.ts.map +1 -0
- package/dist/notify/wechat-work.js +15 -0
- package/dist/notify/wechat-work.js.map +1 -0
- package/dist/pipeline/agent.d.ts +15 -0
- package/dist/pipeline/agent.d.ts.map +1 -0
- package/dist/pipeline/agent.js +550 -0
- package/dist/pipeline/agent.js.map +1 -0
- package/dist/pipeline/chapter-persistence.d.ts +33 -0
- package/dist/pipeline/chapter-persistence.d.ts.map +1 -0
- package/dist/pipeline/chapter-persistence.js +35 -0
- package/dist/pipeline/chapter-persistence.js.map +1 -0
- package/dist/pipeline/chapter-review-cycle.d.ts +79 -0
- package/dist/pipeline/chapter-review-cycle.d.ts.map +1 -0
- package/dist/pipeline/chapter-review-cycle.js +97 -0
- package/dist/pipeline/chapter-review-cycle.js.map +1 -0
- package/dist/pipeline/chapter-state-recovery.d.ts +59 -0
- package/dist/pipeline/chapter-state-recovery.d.ts.map +1 -0
- package/dist/pipeline/chapter-state-recovery.js +133 -0
- package/dist/pipeline/chapter-state-recovery.js.map +1 -0
- package/dist/pipeline/chapter-truth-validation.d.ts +41 -0
- package/dist/pipeline/chapter-truth-validation.d.ts.map +1 -0
- package/dist/pipeline/chapter-truth-validation.js +67 -0
- package/dist/pipeline/chapter-truth-validation.js.map +1 -0
- package/dist/pipeline/detection-runner.d.ts +31 -0
- package/dist/pipeline/detection-runner.d.ts.map +1 -0
- package/dist/pipeline/detection-runner.js +109 -0
- package/dist/pipeline/detection-runner.js.map +1 -0
- package/dist/pipeline/persisted-governed-plan.d.ts +4 -0
- package/dist/pipeline/persisted-governed-plan.d.ts.map +1 -0
- package/dist/pipeline/persisted-governed-plan.js +85 -0
- package/dist/pipeline/persisted-governed-plan.js.map +1 -0
- package/dist/pipeline/runner.d.ts +212 -0
- package/dist/pipeline/runner.d.ts.map +1 -0
- package/dist/pipeline/runner.js +2265 -0
- package/dist/pipeline/runner.js.map +1 -0
- package/dist/pipeline/scheduler.d.ts +58 -0
- package/dist/pipeline/scheduler.d.ts.map +1 -0
- package/dist/pipeline/scheduler.js +322 -0
- package/dist/pipeline/scheduler.js.map +1 -0
- package/dist/state/manager.d.ts +48 -0
- package/dist/state/manager.d.ts.map +1 -0
- package/dist/state/manager.js +435 -0
- package/dist/state/manager.js.map +1 -0
- package/dist/state/memory-db.d.ts +77 -0
- package/dist/state/memory-db.d.ts.map +1 -0
- package/dist/state/memory-db.js +249 -0
- package/dist/state/memory-db.js.map +1 -0
- package/dist/state/runtime-state-store.d.ts +25 -0
- package/dist/state/runtime-state-store.d.ts.map +1 -0
- package/dist/state/runtime-state-store.js +108 -0
- package/dist/state/runtime-state-store.js.map +1 -0
- package/dist/state/state-bootstrap.d.ts +21 -0
- package/dist/state/state-bootstrap.d.ts.map +1 -0
- package/dist/state/state-bootstrap.js +434 -0
- package/dist/state/state-bootstrap.js.map +1 -0
- package/dist/state/state-projections.d.ts +5 -0
- package/dist/state/state-projections.d.ts.map +1 -0
- package/dist/state/state-projections.js +166 -0
- package/dist/state/state-projections.js.map +1 -0
- package/dist/state/state-reducer.d.ts +13 -0
- package/dist/state/state-reducer.d.ts.map +1 -0
- package/dist/state/state-reducer.js +194 -0
- package/dist/state/state-reducer.js.map +1 -0
- package/dist/state/state-validator.d.ts +12 -0
- package/dist/state/state-validator.d.ts.map +1 -0
- package/dist/state/state-validator.js +67 -0
- package/dist/state/state-validator.js.map +1 -0
- package/dist/utils/analytics.d.ts +39 -0
- package/dist/utils/analytics.d.ts.map +1 -0
- package/dist/utils/analytics.js +50 -0
- package/dist/utils/analytics.js.map +1 -0
- package/dist/utils/cadence-policy.d.ts +36 -0
- package/dist/utils/cadence-policy.d.ts.map +1 -0
- package/dist/utils/cadence-policy.js +38 -0
- package/dist/utils/cadence-policy.js.map +1 -0
- package/dist/utils/chapter-cadence.d.ts +34 -0
- package/dist/utils/chapter-cadence.d.ts.map +1 -0
- package/dist/utils/chapter-cadence.js +142 -0
- package/dist/utils/chapter-cadence.js.map +1 -0
- package/dist/utils/chapter-splitter.d.ts +18 -0
- package/dist/utils/chapter-splitter.d.ts.map +1 -0
- package/dist/utils/chapter-splitter.js +60 -0
- package/dist/utils/chapter-splitter.js.map +1 -0
- package/dist/utils/config-loader.d.ts +15 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +136 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/context-filter.d.ts +20 -0
- package/dist/utils/context-filter.d.ts.map +1 -0
- package/dist/utils/context-filter.js +134 -0
- package/dist/utils/context-filter.js.map +1 -0
- package/dist/utils/governed-context.d.ts +11 -0
- package/dist/utils/governed-context.d.ts.map +1 -0
- package/dist/utils/governed-context.js +42 -0
- package/dist/utils/governed-context.js.map +1 -0
- package/dist/utils/governed-working-set.d.ts +18 -0
- package/dist/utils/governed-working-set.d.ts.map +1 -0
- package/dist/utils/governed-working-set.js +296 -0
- package/dist/utils/governed-working-set.js.map +1 -0
- package/dist/utils/hook-agenda.d.ts +21 -0
- package/dist/utils/hook-agenda.d.ts.map +1 -0
- package/dist/utils/hook-agenda.js +95 -0
- package/dist/utils/hook-agenda.js.map +1 -0
- package/dist/utils/hook-arbiter.d.ts +15 -0
- package/dist/utils/hook-arbiter.d.ts.map +1 -0
- package/dist/utils/hook-arbiter.js +268 -0
- package/dist/utils/hook-arbiter.js.map +1 -0
- package/dist/utils/hook-governance.d.ts +28 -0
- package/dist/utils/hook-governance.d.ts.map +1 -0
- package/dist/utils/hook-governance.js +144 -0
- package/dist/utils/hook-governance.js.map +1 -0
- package/dist/utils/hook-health.d.ts +15 -0
- package/dist/utils/hook-health.d.ts.map +1 -0
- package/dist/utils/hook-health.js +128 -0
- package/dist/utils/hook-health.js.map +1 -0
- package/dist/utils/hook-lifecycle.d.ts +34 -0
- package/dist/utils/hook-lifecycle.d.ts.map +1 -0
- package/dist/utils/hook-lifecycle.js +125 -0
- package/dist/utils/hook-lifecycle.js.map +1 -0
- package/dist/utils/hook-policy.d.ts +74 -0
- package/dist/utils/hook-policy.d.ts.map +1 -0
- package/dist/utils/hook-policy.js +126 -0
- package/dist/utils/hook-policy.js.map +1 -0
- package/dist/utils/length-metrics.d.ts +10 -0
- package/dist/utils/length-metrics.d.ts.map +1 -0
- package/dist/utils/length-metrics.js +85 -0
- package/dist/utils/length-metrics.js.map +1 -0
- package/dist/utils/logger.d.ts +31 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +79 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/long-span-fatigue.d.ts +28 -0
- package/dist/utils/long-span-fatigue.d.ts.map +1 -0
- package/dist/utils/long-span-fatigue.js +406 -0
- package/dist/utils/long-span-fatigue.js.map +1 -0
- package/dist/utils/memory-retrieval.d.ts +25 -0
- package/dist/utils/memory-retrieval.d.ts.map +1 -0
- package/dist/utils/memory-retrieval.js +319 -0
- package/dist/utils/memory-retrieval.js.map +1 -0
- package/dist/utils/pov-filter.d.ts +30 -0
- package/dist/utils/pov-filter.d.ts.map +1 -0
- package/dist/utils/pov-filter.js +129 -0
- package/dist/utils/pov-filter.js.map +1 -0
- package/dist/utils/spot-fix-patches.d.ts +14 -0
- package/dist/utils/spot-fix-patches.d.ts.map +1 -0
- package/dist/utils/spot-fix-patches.js +75 -0
- package/dist/utils/spot-fix-patches.js.map +1 -0
- package/dist/utils/story-markdown.d.ts +13 -0
- package/dist/utils/story-markdown.d.ts.map +1 -0
- package/dist/utils/story-markdown.js +218 -0
- package/dist/utils/story-markdown.js.map +1 -0
- package/dist/utils/web-search.d.ts +23 -0
- package/dist/utils/web-search.d.ts.map +1 -0
- package/dist/utils/web-search.js +68 -0
- package/dist/utils/web-search.js.map +1 -0
- package/genres/cozy.md +43 -0
- package/genres/cultivation.md +42 -0
- package/genres/dungeon-core.md +40 -0
- package/genres/horror.md +51 -0
- package/genres/isekai.md +43 -0
- package/genres/litrpg.md +43 -0
- package/genres/other.md +24 -0
- package/genres/progression.md +41 -0
- package/genres/romantasy.md +45 -0
- package/genres/sci-fi.md +42 -0
- package/genres/system-apocalypse.md +40 -0
- package/genres/tower-climber.md +41 -0
- package/genres/urban.md +53 -0
- package/genres/xianxia.md +46 -0
- package/genres/xuanhuan.md +64 -0
- package/package.json +58 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { BookConfig } from "../models/book.js";
|
|
2
|
+
import type { ChapterMeta } from "../models/chapter.js";
|
|
3
|
+
export declare class StateManager {
|
|
4
|
+
private readonly projectRoot;
|
|
5
|
+
constructor(projectRoot: string);
|
|
6
|
+
private static defaultAuthorIntent;
|
|
7
|
+
private static defaultCurrentFocus;
|
|
8
|
+
ensureControlDocuments(bookId: string, authorIntent?: string): Promise<void>;
|
|
9
|
+
ensureControlDocumentsAt(bookDir: string, language: "zh" | "en", authorIntent?: string): Promise<void>;
|
|
10
|
+
loadControlDocuments(bookId: string): Promise<{
|
|
11
|
+
authorIntent: string;
|
|
12
|
+
currentFocus: string;
|
|
13
|
+
runtimeDir: string;
|
|
14
|
+
}>;
|
|
15
|
+
private resolveControlDocumentLanguage;
|
|
16
|
+
acquireBookLock(bookId: string): Promise<() => Promise<void>>;
|
|
17
|
+
private extractLockPid;
|
|
18
|
+
private isProcessAlive;
|
|
19
|
+
get booksDir(): string;
|
|
20
|
+
bookDir(bookId: string): string;
|
|
21
|
+
stateDir(bookId: string): string;
|
|
22
|
+
loadProjectConfig(): Promise<Record<string, unknown>>;
|
|
23
|
+
saveProjectConfig(config: Record<string, unknown>): Promise<void>;
|
|
24
|
+
loadBookConfig(bookId: string): Promise<BookConfig>;
|
|
25
|
+
saveBookConfig(bookId: string, config: BookConfig): Promise<void>;
|
|
26
|
+
saveBookConfigAt(bookDir: string, config: BookConfig): Promise<void>;
|
|
27
|
+
ensureRuntimeState(bookId: string, fallbackChapter?: number): Promise<void>;
|
|
28
|
+
listBooks(): Promise<ReadonlyArray<string>>;
|
|
29
|
+
getNextChapterNumber(bookId: string): Promise<number>;
|
|
30
|
+
getPersistedChapterCount(bookId: string): Promise<number>;
|
|
31
|
+
loadChapterIndex(bookId: string): Promise<ReadonlyArray<ChapterMeta>>;
|
|
32
|
+
saveChapterIndex(bookId: string, index: ReadonlyArray<ChapterMeta>): Promise<void>;
|
|
33
|
+
saveChapterIndexAt(bookDir: string, index: ReadonlyArray<ChapterMeta>): Promise<void>;
|
|
34
|
+
snapshotState(bookId: string, chapterNumber: number): Promise<void>;
|
|
35
|
+
snapshotStateAt(bookDir: string, chapterNumber: number): Promise<void>;
|
|
36
|
+
isCompleteBookDirectory(bookDir: string): Promise<boolean>;
|
|
37
|
+
restoreState(bookId: string, chapterNumber: number): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Roll back state to the snapshot at `targetChapter`, removing all chapters
|
|
40
|
+
* after it and their associated files (chapter markdown, snapshots, runtime).
|
|
41
|
+
* Used by review reject to undo a bad chapter and everything that followed.
|
|
42
|
+
*
|
|
43
|
+
* Returns the list of chapter numbers that were discarded.
|
|
44
|
+
*/
|
|
45
|
+
rollbackToChapter(bookId: string, targetChapter: number): Promise<ReadonlyArray<number>>;
|
|
46
|
+
private writeIfMissing;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/state/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir, readdir, rm, stat, unlink, open } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { bootstrapStructuredStateFromMarkdown, resolveDurableStoryProgress } from "./state-bootstrap.js";
|
|
4
|
+
export class StateManager {
|
|
5
|
+
projectRoot;
|
|
6
|
+
constructor(projectRoot) {
|
|
7
|
+
this.projectRoot = projectRoot;
|
|
8
|
+
}
|
|
9
|
+
static defaultAuthorIntent(language) {
|
|
10
|
+
return language === "zh"
|
|
11
|
+
? "# 作者意图\n\n(在这里描述这本书的长期创作方向。)\n"
|
|
12
|
+
: "# Author Intent\n\n(Describe the long-horizon vision for this book here.)\n";
|
|
13
|
+
}
|
|
14
|
+
static defaultCurrentFocus(language) {
|
|
15
|
+
return language === "zh"
|
|
16
|
+
? "# 当前聚焦\n\n## 当前重点\n\n(描述接下来 1-3 章最需要优先推进的内容。)\n"
|
|
17
|
+
: "# Current Focus\n\n## Active Focus\n\n(Describe what the next 1-3 chapters should prioritize.)\n";
|
|
18
|
+
}
|
|
19
|
+
async ensureControlDocuments(bookId, authorIntent) {
|
|
20
|
+
const language = await this.resolveControlDocumentLanguage(bookId);
|
|
21
|
+
await this.ensureControlDocumentsAt(this.bookDir(bookId), language, authorIntent);
|
|
22
|
+
}
|
|
23
|
+
async ensureControlDocumentsAt(bookDir, language, authorIntent) {
|
|
24
|
+
const storyDir = join(bookDir, "story");
|
|
25
|
+
const runtimeDir = join(storyDir, "runtime");
|
|
26
|
+
await mkdir(storyDir, { recursive: true });
|
|
27
|
+
await mkdir(runtimeDir, { recursive: true });
|
|
28
|
+
await this.writeIfMissing(join(storyDir, "author_intent.md"), authorIntent?.trim()
|
|
29
|
+
? authorIntent.trimEnd() + "\n"
|
|
30
|
+
: StateManager.defaultAuthorIntent(language));
|
|
31
|
+
await this.writeIfMissing(join(storyDir, "current_focus.md"), StateManager.defaultCurrentFocus(language));
|
|
32
|
+
}
|
|
33
|
+
async loadControlDocuments(bookId) {
|
|
34
|
+
await this.ensureControlDocuments(bookId);
|
|
35
|
+
const storyDir = join(this.bookDir(bookId), "story");
|
|
36
|
+
const runtimeDir = join(storyDir, "runtime");
|
|
37
|
+
const [authorIntent, currentFocus] = await Promise.all([
|
|
38
|
+
readFile(join(storyDir, "author_intent.md"), "utf-8"),
|
|
39
|
+
readFile(join(storyDir, "current_focus.md"), "utf-8"),
|
|
40
|
+
]);
|
|
41
|
+
return { authorIntent, currentFocus, runtimeDir };
|
|
42
|
+
}
|
|
43
|
+
async resolveControlDocumentLanguage(bookId) {
|
|
44
|
+
try {
|
|
45
|
+
const raw = await readFile(join(this.bookDir(bookId), "book.json"), "utf-8");
|
|
46
|
+
const parsed = JSON.parse(raw);
|
|
47
|
+
return parsed.language === "zh" ? "zh" : "en";
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return "en";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async acquireBookLock(bookId) {
|
|
54
|
+
await mkdir(this.bookDir(bookId), { recursive: true });
|
|
55
|
+
const lockPath = join(this.bookDir(bookId), ".write.lock");
|
|
56
|
+
try {
|
|
57
|
+
const handle = await open(lockPath, "wx");
|
|
58
|
+
try {
|
|
59
|
+
await handle.writeFile(`pid:${process.pid} ts:${Date.now()}`, "utf-8");
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
await handle.close().catch(() => undefined);
|
|
63
|
+
await unlink(lockPath).catch(() => undefined);
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
await handle.close();
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
const code = e?.code;
|
|
70
|
+
if (code === "EEXIST") {
|
|
71
|
+
const lockData = await readFile(lockPath, "utf-8").catch(() => "pid:unknown ts:unknown");
|
|
72
|
+
const lockPid = this.extractLockPid(lockData);
|
|
73
|
+
if (lockPid !== undefined && !this.isProcessAlive(lockPid)) {
|
|
74
|
+
await unlink(lockPath).catch(() => undefined);
|
|
75
|
+
return this.acquireBookLock(bookId);
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`Book "${bookId}" is locked by another process (${lockData}). ` +
|
|
78
|
+
`If this is stale, delete ${lockPath}`);
|
|
79
|
+
}
|
|
80
|
+
throw e;
|
|
81
|
+
}
|
|
82
|
+
return async () => {
|
|
83
|
+
try {
|
|
84
|
+
await unlink(lockPath);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// ignore
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
extractLockPid(lockData) {
|
|
92
|
+
const match = lockData.match(/pid:(\d+)/);
|
|
93
|
+
if (!match)
|
|
94
|
+
return undefined;
|
|
95
|
+
const pid = Number.parseInt(match[1] ?? "", 10);
|
|
96
|
+
return Number.isInteger(pid) && pid > 0 ? pid : undefined;
|
|
97
|
+
}
|
|
98
|
+
isProcessAlive(pid) {
|
|
99
|
+
try {
|
|
100
|
+
process.kill(pid, 0);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
const code = error?.code;
|
|
105
|
+
if (code === "ESRCH") {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
get booksDir() {
|
|
112
|
+
return join(this.projectRoot, "books");
|
|
113
|
+
}
|
|
114
|
+
bookDir(bookId) {
|
|
115
|
+
return join(this.booksDir, bookId);
|
|
116
|
+
}
|
|
117
|
+
stateDir(bookId) {
|
|
118
|
+
return join(this.bookDir(bookId), "story", "state");
|
|
119
|
+
}
|
|
120
|
+
async loadProjectConfig() {
|
|
121
|
+
const configPath = join(this.projectRoot, "inkos.json");
|
|
122
|
+
const raw = await readFile(configPath, "utf-8");
|
|
123
|
+
return JSON.parse(raw);
|
|
124
|
+
}
|
|
125
|
+
async saveProjectConfig(config) {
|
|
126
|
+
const configPath = join(this.projectRoot, "inkos.json");
|
|
127
|
+
await writeFile(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
128
|
+
}
|
|
129
|
+
async loadBookConfig(bookId) {
|
|
130
|
+
const configPath = join(this.bookDir(bookId), "book.json");
|
|
131
|
+
const raw = await readFile(configPath, "utf-8");
|
|
132
|
+
if (!raw.trim()) {
|
|
133
|
+
throw new Error(`book.json is empty for book "${bookId}"`);
|
|
134
|
+
}
|
|
135
|
+
return JSON.parse(raw);
|
|
136
|
+
}
|
|
137
|
+
async saveBookConfig(bookId, config) {
|
|
138
|
+
await this.saveBookConfigAt(this.bookDir(bookId), config);
|
|
139
|
+
}
|
|
140
|
+
async saveBookConfigAt(bookDir, config) {
|
|
141
|
+
await mkdir(bookDir, { recursive: true });
|
|
142
|
+
await writeFile(join(bookDir, "book.json"), JSON.stringify(config, null, 2), "utf-8");
|
|
143
|
+
}
|
|
144
|
+
async ensureRuntimeState(bookId, fallbackChapter = 0) {
|
|
145
|
+
await bootstrapStructuredStateFromMarkdown({
|
|
146
|
+
bookDir: this.bookDir(bookId),
|
|
147
|
+
fallbackChapter,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
async listBooks() {
|
|
151
|
+
try {
|
|
152
|
+
const entries = await readdir(this.booksDir);
|
|
153
|
+
const bookIds = [];
|
|
154
|
+
for (const entry of entries) {
|
|
155
|
+
const bookJsonPath = join(this.booksDir, entry, "book.json");
|
|
156
|
+
try {
|
|
157
|
+
await stat(bookJsonPath);
|
|
158
|
+
bookIds.push(entry);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
// not a book directory
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return bookIds;
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return [];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async getNextChapterNumber(bookId) {
|
|
171
|
+
const durableChapter = await resolveDurableStoryProgress({
|
|
172
|
+
bookDir: this.bookDir(bookId),
|
|
173
|
+
});
|
|
174
|
+
// Ensure structured state is bootstrapped (side-effect: creates missing
|
|
175
|
+
// JSON files), but do NOT trust its chapter number for progress — only
|
|
176
|
+
// the contiguous durable artifact chain is authoritative.
|
|
177
|
+
await bootstrapStructuredStateFromMarkdown({
|
|
178
|
+
bookDir: this.bookDir(bookId),
|
|
179
|
+
fallbackChapter: durableChapter,
|
|
180
|
+
});
|
|
181
|
+
return durableChapter + 1;
|
|
182
|
+
}
|
|
183
|
+
async getPersistedChapterCount(bookId) {
|
|
184
|
+
const chaptersDir = join(this.bookDir(bookId), "chapters");
|
|
185
|
+
const chapterNumbers = new Set();
|
|
186
|
+
try {
|
|
187
|
+
const files = await readdir(chaptersDir);
|
|
188
|
+
for (const file of files) {
|
|
189
|
+
const match = file.match(/^(\d+)_.*\.md$/);
|
|
190
|
+
if (!match)
|
|
191
|
+
continue;
|
|
192
|
+
chapterNumbers.add(parseInt(match[1], 10));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return 0;
|
|
197
|
+
}
|
|
198
|
+
return chapterNumbers.size;
|
|
199
|
+
}
|
|
200
|
+
async loadChapterIndex(bookId) {
|
|
201
|
+
const indexPath = join(this.bookDir(bookId), "chapters", "index.json");
|
|
202
|
+
try {
|
|
203
|
+
const raw = await readFile(indexPath, "utf-8");
|
|
204
|
+
return JSON.parse(raw);
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
return [];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async saveChapterIndex(bookId, index) {
|
|
211
|
+
await this.saveChapterIndexAt(this.bookDir(bookId), index);
|
|
212
|
+
}
|
|
213
|
+
async saveChapterIndexAt(bookDir, index) {
|
|
214
|
+
const chaptersDir = join(bookDir, "chapters");
|
|
215
|
+
await mkdir(chaptersDir, { recursive: true });
|
|
216
|
+
await writeFile(join(chaptersDir, "index.json"), JSON.stringify(index, null, 2), "utf-8");
|
|
217
|
+
}
|
|
218
|
+
async snapshotState(bookId, chapterNumber) {
|
|
219
|
+
await this.snapshotStateAt(this.bookDir(bookId), chapterNumber);
|
|
220
|
+
}
|
|
221
|
+
async snapshotStateAt(bookDir, chapterNumber) {
|
|
222
|
+
const storyDir = join(bookDir, "story");
|
|
223
|
+
const snapshotDir = join(storyDir, "snapshots", String(chapterNumber));
|
|
224
|
+
await mkdir(snapshotDir, { recursive: true });
|
|
225
|
+
const files = [
|
|
226
|
+
"current_state.md", "particle_ledger.md", "pending_hooks.md",
|
|
227
|
+
"chapter_summaries.md", "subplot_board.md", "emotional_arcs.md", "character_matrix.md",
|
|
228
|
+
];
|
|
229
|
+
await Promise.all(files.map(async (f) => {
|
|
230
|
+
try {
|
|
231
|
+
const content = await readFile(join(storyDir, f), "utf-8");
|
|
232
|
+
await writeFile(join(snapshotDir, f), content, "utf-8");
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
// file doesn't exist yet
|
|
236
|
+
}
|
|
237
|
+
}));
|
|
238
|
+
const stateDir = join(bookDir, "story", "state");
|
|
239
|
+
const snapshotStateDir = join(snapshotDir, "state");
|
|
240
|
+
try {
|
|
241
|
+
const stateFiles = await readdir(stateDir);
|
|
242
|
+
if (stateFiles.length > 0) {
|
|
243
|
+
await mkdir(snapshotStateDir, { recursive: true });
|
|
244
|
+
await Promise.all(stateFiles.map(async (fileName) => {
|
|
245
|
+
const content = await readFile(join(stateDir, fileName), "utf-8");
|
|
246
|
+
await writeFile(join(snapshotStateDir, fileName), content, "utf-8");
|
|
247
|
+
}));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// state directory missing — skip
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
async isCompleteBookDirectory(bookDir) {
|
|
255
|
+
const requiredPaths = [
|
|
256
|
+
join(bookDir, "book.json"),
|
|
257
|
+
join(bookDir, "story", "story_bible.md"),
|
|
258
|
+
join(bookDir, "story", "volume_outline.md"),
|
|
259
|
+
join(bookDir, "story", "book_rules.md"),
|
|
260
|
+
join(bookDir, "story", "current_state.md"),
|
|
261
|
+
join(bookDir, "story", "pending_hooks.md"),
|
|
262
|
+
join(bookDir, "chapters", "index.json"),
|
|
263
|
+
];
|
|
264
|
+
for (const requiredPath of requiredPaths) {
|
|
265
|
+
try {
|
|
266
|
+
await stat(requiredPath);
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return true;
|
|
273
|
+
}
|
|
274
|
+
async restoreState(bookId, chapterNumber) {
|
|
275
|
+
const storyDir = join(this.bookDir(bookId), "story");
|
|
276
|
+
const snapshotDir = join(storyDir, "snapshots", String(chapterNumber));
|
|
277
|
+
const files = [
|
|
278
|
+
"current_state.md", "particle_ledger.md", "pending_hooks.md",
|
|
279
|
+
"chapter_summaries.md", "subplot_board.md", "emotional_arcs.md", "character_matrix.md",
|
|
280
|
+
];
|
|
281
|
+
try {
|
|
282
|
+
// current_state.md and pending_hooks.md are required;
|
|
283
|
+
// particle_ledger.md is optional (numericalSystem=false genres don't have it)
|
|
284
|
+
// the rest are optional (may not exist in older snapshots)
|
|
285
|
+
const requiredFiles = ["current_state.md", "pending_hooks.md"];
|
|
286
|
+
const optionalFiles = files.filter((f) => !requiredFiles.includes(f));
|
|
287
|
+
await Promise.all(requiredFiles.map(async (f) => {
|
|
288
|
+
const content = await readFile(join(snapshotDir, f), "utf-8");
|
|
289
|
+
await writeFile(join(storyDir, f), content, "utf-8");
|
|
290
|
+
}));
|
|
291
|
+
await Promise.all(optionalFiles.map(async (f) => {
|
|
292
|
+
const targetPath = join(storyDir, f);
|
|
293
|
+
try {
|
|
294
|
+
const content = await readFile(join(snapshotDir, f), "utf-8");
|
|
295
|
+
await writeFile(targetPath, content, "utf-8");
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
await rm(targetPath, { force: true });
|
|
299
|
+
}
|
|
300
|
+
}));
|
|
301
|
+
const stateDir = this.stateDir(bookId);
|
|
302
|
+
let restoredStructuredState = false;
|
|
303
|
+
try {
|
|
304
|
+
const snapshotStateDir = join(snapshotDir, "state");
|
|
305
|
+
const stateFiles = await readdir(snapshotStateDir);
|
|
306
|
+
if (stateFiles.length > 0) {
|
|
307
|
+
restoredStructuredState = true;
|
|
308
|
+
await mkdir(stateDir, { recursive: true });
|
|
309
|
+
await Promise.all(stateFiles.map(async (fileName) => {
|
|
310
|
+
const content = await readFile(join(snapshotStateDir, fileName), "utf-8");
|
|
311
|
+
await writeFile(join(stateDir, fileName), content, "utf-8");
|
|
312
|
+
}));
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
// snapshot structured state missing — skip
|
|
317
|
+
}
|
|
318
|
+
if (!restoredStructuredState) {
|
|
319
|
+
await rm(stateDir, { recursive: true, force: true });
|
|
320
|
+
}
|
|
321
|
+
return true;
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Roll back state to the snapshot at `targetChapter`, removing all chapters
|
|
329
|
+
* after it and their associated files (chapter markdown, snapshots, runtime).
|
|
330
|
+
* Used by review reject to undo a bad chapter and everything that followed.
|
|
331
|
+
*
|
|
332
|
+
* Returns the list of chapter numbers that were discarded.
|
|
333
|
+
*/
|
|
334
|
+
async rollbackToChapter(bookId, targetChapter) {
|
|
335
|
+
const restored = await this.restoreState(bookId, targetChapter);
|
|
336
|
+
if (!restored) {
|
|
337
|
+
throw new Error(`Cannot restore snapshot for chapter ${targetChapter} in "${bookId}"`);
|
|
338
|
+
}
|
|
339
|
+
const bookDir = this.bookDir(bookId);
|
|
340
|
+
const chaptersDir = join(bookDir, "chapters");
|
|
341
|
+
const index = await this.loadChapterIndex(bookId);
|
|
342
|
+
const kept = [];
|
|
343
|
+
const discarded = [];
|
|
344
|
+
for (const entry of index) {
|
|
345
|
+
if (entry.number <= targetChapter) {
|
|
346
|
+
kept.push(entry);
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
discarded.push(entry.number);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
// Delete chapter markdown files for discarded chapters
|
|
353
|
+
try {
|
|
354
|
+
const files = await readdir(chaptersDir);
|
|
355
|
+
for (const file of files) {
|
|
356
|
+
const match = file.match(/^(\d+)_.*\.md$/);
|
|
357
|
+
if (!match)
|
|
358
|
+
continue;
|
|
359
|
+
const num = parseInt(match[1], 10);
|
|
360
|
+
if (num > targetChapter) {
|
|
361
|
+
await unlink(join(chaptersDir, file)).catch(() => { });
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
// chapters directory missing
|
|
367
|
+
}
|
|
368
|
+
// Delete snapshots for discarded chapters
|
|
369
|
+
const snapshotsDir = join(bookDir, "story", "snapshots");
|
|
370
|
+
try {
|
|
371
|
+
const snapshots = await readdir(snapshotsDir);
|
|
372
|
+
for (const snap of snapshots) {
|
|
373
|
+
const num = parseInt(snap, 10);
|
|
374
|
+
if (Number.isFinite(num) && num > targetChapter) {
|
|
375
|
+
await rm(join(snapshotsDir, snap), { recursive: true, force: true });
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
catch {
|
|
380
|
+
// snapshots directory missing
|
|
381
|
+
}
|
|
382
|
+
// Delete runtime artifacts for discarded chapters
|
|
383
|
+
const runtimeDir = join(bookDir, "story", "runtime");
|
|
384
|
+
try {
|
|
385
|
+
const runtimeFiles = await readdir(runtimeDir);
|
|
386
|
+
for (const file of runtimeFiles) {
|
|
387
|
+
const match = file.match(/^chapter-(\d+)\./);
|
|
388
|
+
if (!match)
|
|
389
|
+
continue;
|
|
390
|
+
const num = parseInt(match[1], 10);
|
|
391
|
+
if (num > targetChapter) {
|
|
392
|
+
await unlink(join(runtimeDir, file)).catch(() => { });
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
catch {
|
|
397
|
+
// runtime directory missing
|
|
398
|
+
}
|
|
399
|
+
// Also check story/drafts/ for discarded chapter files
|
|
400
|
+
const draftsDir = join(bookDir, "story", "drafts");
|
|
401
|
+
try {
|
|
402
|
+
const draftFiles = await readdir(draftsDir);
|
|
403
|
+
for (const file of draftFiles) {
|
|
404
|
+
const match = file.match(/^(\d+)_.*\.md$/);
|
|
405
|
+
if (!match)
|
|
406
|
+
continue;
|
|
407
|
+
const num = parseInt(match[1], 10);
|
|
408
|
+
if (num > targetChapter) {
|
|
409
|
+
await unlink(join(draftsDir, file)).catch(() => { });
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
catch {
|
|
414
|
+
// drafts directory missing
|
|
415
|
+
}
|
|
416
|
+
// Drop any persisted sqlite acceleration index so discarded chapters
|
|
417
|
+
// cannot leak back into retrieval after the markdown/state rollback.
|
|
418
|
+
await Promise.all([
|
|
419
|
+
rm(join(bookDir, "story", "memory.db"), { force: true }),
|
|
420
|
+
rm(join(bookDir, "story", "memory.db-shm"), { force: true }),
|
|
421
|
+
rm(join(bookDir, "story", "memory.db-wal"), { force: true }),
|
|
422
|
+
]);
|
|
423
|
+
await this.saveChapterIndex(bookId, kept);
|
|
424
|
+
return discarded;
|
|
425
|
+
}
|
|
426
|
+
async writeIfMissing(path, content) {
|
|
427
|
+
try {
|
|
428
|
+
await stat(path);
|
|
429
|
+
}
|
|
430
|
+
catch {
|
|
431
|
+
await writeFile(path, content, "utf-8");
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/state/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Temporal memory database for InkOS truth files.
|
|
3
|
+
*
|
|
4
|
+
* Uses Node.js built-in SQLite (node:sqlite, Node 22+).
|
|
5
|
+
* Stores facts with temporal validity (valid_from/valid_until chapter numbers),
|
|
6
|
+
* enabling precise queries like "what did character X know in chapter 5?"
|
|
7
|
+
*
|
|
8
|
+
* Backward compatible: existing markdown truth files are still the primary
|
|
9
|
+
* persistence layer. MemoryDB is an acceleration index built alongside them.
|
|
10
|
+
*/
|
|
11
|
+
export interface Fact {
|
|
12
|
+
readonly id?: number;
|
|
13
|
+
readonly subject: string;
|
|
14
|
+
readonly predicate: string;
|
|
15
|
+
readonly object: string;
|
|
16
|
+
readonly validFromChapter: number;
|
|
17
|
+
readonly validUntilChapter: number | null;
|
|
18
|
+
readonly sourceChapter: number;
|
|
19
|
+
}
|
|
20
|
+
export interface StoredSummary {
|
|
21
|
+
readonly chapter: number;
|
|
22
|
+
readonly title: string;
|
|
23
|
+
readonly characters: string;
|
|
24
|
+
readonly events: string;
|
|
25
|
+
readonly stateChanges: string;
|
|
26
|
+
readonly hookActivity: string;
|
|
27
|
+
readonly mood: string;
|
|
28
|
+
readonly chapterType: string;
|
|
29
|
+
}
|
|
30
|
+
export interface StoredHook {
|
|
31
|
+
readonly hookId: string;
|
|
32
|
+
readonly startChapter: number;
|
|
33
|
+
readonly type: string;
|
|
34
|
+
readonly status: string;
|
|
35
|
+
readonly lastAdvancedChapter: number;
|
|
36
|
+
readonly expectedPayoff: string;
|
|
37
|
+
readonly payoffTiming?: string;
|
|
38
|
+
readonly notes: string;
|
|
39
|
+
}
|
|
40
|
+
export declare class MemoryDB {
|
|
41
|
+
private db;
|
|
42
|
+
constructor(bookDir: string);
|
|
43
|
+
private migrate;
|
|
44
|
+
private ensureColumn;
|
|
45
|
+
/** Add a new fact. */
|
|
46
|
+
addFact(fact: Omit<Fact, "id">): number;
|
|
47
|
+
/** Invalidate a fact (set valid_until). */
|
|
48
|
+
invalidateFact(id: number, untilChapter: number): void;
|
|
49
|
+
/** Get all currently valid facts (valid_until is null). */
|
|
50
|
+
getCurrentFacts(): ReadonlyArray<Fact>;
|
|
51
|
+
/** Get facts about a specific subject that are valid at a given chapter. */
|
|
52
|
+
getFactsAt(subject: string, chapter: number): ReadonlyArray<Fact>;
|
|
53
|
+
/** Get all facts about a subject (including historical). */
|
|
54
|
+
getFactHistory(subject: string): ReadonlyArray<Fact>;
|
|
55
|
+
/** Search facts by predicate (e.g., all "location" facts). */
|
|
56
|
+
getFactsByPredicate(predicate: string): ReadonlyArray<Fact>;
|
|
57
|
+
/** Get facts relevant to a set of character names. */
|
|
58
|
+
getFactsForCharacters(names: ReadonlyArray<string>): ReadonlyArray<Fact>;
|
|
59
|
+
replaceCurrentFacts(facts: ReadonlyArray<Omit<Fact, "id">>): void;
|
|
60
|
+
resetFacts(): void;
|
|
61
|
+
/** Upsert a chapter summary. */
|
|
62
|
+
upsertSummary(summary: StoredSummary): void;
|
|
63
|
+
replaceSummaries(summaries: ReadonlyArray<StoredSummary>): void;
|
|
64
|
+
/** Get summaries for a range of chapters. */
|
|
65
|
+
getSummaries(fromChapter: number, toChapter: number): ReadonlyArray<StoredSummary>;
|
|
66
|
+
/** Get summaries matching any of the given character names. */
|
|
67
|
+
getSummariesByCharacters(names: ReadonlyArray<string>): ReadonlyArray<StoredSummary>;
|
|
68
|
+
/** Get total chapter count. */
|
|
69
|
+
getChapterCount(): number;
|
|
70
|
+
/** Get the most recent N summaries. */
|
|
71
|
+
getRecentSummaries(count: number): ReadonlyArray<StoredSummary>;
|
|
72
|
+
upsertHook(hook: StoredHook): void;
|
|
73
|
+
replaceHooks(hooks: ReadonlyArray<StoredHook>): void;
|
|
74
|
+
getActiveHooks(): ReadonlyArray<StoredHook>;
|
|
75
|
+
close(): void;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=memory-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-db.d.ts","sourceRoot":"","sources":["../../src/state/memory-db.ts"],"names":[],"mappings":"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"}
|