Skip to content

Split Soldoros doll into standalone mod package#8

Merged
hzy merged 1 commit into
mainfrom
codex/soldoros-doll-split
Apr 9, 2026
Merged

Split Soldoros doll into standalone mod package#8
hzy merged 1 commit into
mainfrom
codex/soldoros-doll-split

Conversation

@hzy
Copy link
Copy Markdown
Owner

@hzy hzy commented Apr 9, 2026

Summary

  • add a standalone workspace package for creating and registering the Soldoros doll APC
  • keep focused on support equipment generation and resolve the summon APC from prior overlays when available
  • update the built-in registry, demo pipeline, docs, and tests for the new prerequisite package and optional summon behavior

Testing

  • pnpm --filter @pvf-mods/soldoros_doll check
  • pnpm --filter @pvf-mods/soldoros_doll test
  • pnpm --filter @pvf-mods/2_3_choro_partset_skill_up check
  • pnpm --filter @pvf-mods/2_3_choro_partset_skill_up test
  • pnpm check
  • pnpm test

Copilot AI review requested due to automatic review settings April 9, 2026 06:18
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a workspace-based PVF mod pipeline system and splits the Soldoros doll APC preparation into its own standalone mod package, updating the registry/pipelines, CLI, docs, and tests to support sequential multi-mod execution with optional prerequisite behavior.

Changes:

  • Add new shared runtime/pipeline helper package @pvf/pvf-mod (session, pipeline runner, manifest writing, common EQU/.lst/path helpers).
  • Add new CLI app pvf-mod-cli to list/build/apply named or ad-hoc mod pipelines.
  • Refactor existing mods into workspace packages (including new soldoros_doll prerequisite mod) and update registry/pipelines/docs/tests accordingly.

Reviewed changes

Copilot reviewed 40 out of 43 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tsconfig.json Adds project refs for new workspaces and starts including mods/*.ts.
README.md Documents the new mod pipeline/CLI workflow and built-in pipelines/mods.
pnpm-lock.yaml Locks workspace links for new packages/apps/mods.
packages/pvf-mod/tsconfig.json Typecheck config for the new shared @pvf/pvf-mod package.
packages/pvf-mod/src/runtime.ts Implements PvfModSession, sequential mod execution, and overlay directory export.
packages/pvf-mod/src/pipeline.ts Implements registry/pipeline execution, changed-path tracking, and manifest helpers.
packages/pvf-mod/src/path.ts Adds path traversal protection helpers for outputs.
packages/pvf-mod/src/listed-path.ts Adds .lst loading/updating helpers for id->path registries.
packages/pvf-mod/src/index.ts Exports the shared mod/pipeline/runtime utilities.
packages/pvf-mod/src/index.test.ts Tests sequential overlay visibility, PVF writing, and path traversal protection.
packages/pvf-mod/src/equ.ts Adds common EQU AST helpers (sections/statements/replace helpers).
packages/pvf-mod/package.json Declares the new workspace package entrypoints and scripts.
package.json Adds workspace dependency on @pvf/pvf-mod (root).
mods/soldoros_doll/tsconfig.json Typecheck config for the new Soldoros prerequisite mod package.
mods/soldoros_doll/src/index.ts Implements Soldoros doll APC creation/repair + aicharacter.lst registration.
mods/soldoros_doll/src/index.test.ts Tests Soldoros mod behavior via the pipeline (build/apply).
mods/soldoros_doll/package.json Declares the new Soldoros mod workspace package.
mods/registry.ts Adds a central registry for built-in mod definitions.
mods/pipelines.ts Adds named pipelines (including default demo) and default pipeline id.
mods/example_wild_strawberry_hp_up/tsconfig.json Typecheck config for the example strawberry mod package.
mods/example_wild_strawberry_hp_up/src/index.ts Implements the strawberry HP recovery patch as a registered mod.
mods/example_wild_strawberry_hp_up/src/index.test.ts Tests strawberry mod via pipeline build/apply.
mods/example_wild_strawberry_hp_up/package.json Declares the example strawberry mod workspace package.
mods/2_3_choro_partset_skill_up/src/types.ts Extracts summary/types for the Choro generator mod.
mods/2_3_choro_partset_skill_up/src/transform.ts Extracts transform helpers; adds optional summon explain logic.
mods/2_3_choro_partset_skill_up/src/mod.ts Refactors core mod logic to run in a PvfModSession, optionally consuming doll APC.
mods/2_3_choro_partset_skill_up/src/index.ts Converts Choro generator into a PvfRegisteredMod export.
mods/2_3_choro_partset_skill_up/src/index.test.ts Updates tests to use pipeline runner; adds tests for missing/overlaid prerequisite handling.
mods/2_3_choro_partset_skill_up/src/data.ts Refactors data loading helpers to use PvfModSession and shared helpers.
mods/2_3_choro_partset_skill_up/src/constants.ts Centralizes Choro mod constants (paths/ids/text).
mods/2_3_choro_partset_skill_up/src/cli.ts Removes the old per-mod CLI entrypoint.
mods/2_3_choro_partset_skill_up/package.json Updates dependencies to use @pvf/pvf-mod runtime/pipeline system.
docs/mod-pipeline-architecture.md Adds maintainer-focused architecture/guardrails doc for the pipeline system.
apps/pvf-mod-cli/tsconfig.json Typecheck config for the new pipeline CLI app.
apps/pvf-mod-cli/src/index.ts Implements commander-based list/build/apply pipeline CLI + safe default outputs.
apps/pvf-mod-cli/src/index.test.ts Tests CLI list/build behavior and default output path safety.
apps/pvf-mod-cli/src/cli.ts Adds a small executable wrapper for runCli.
apps/pvf-mod-cli/package.json Declares CLI app scripts and dependencies.
apps/pvf-explorer/src/pvf.ts Switches explorer imports to workspace @pvf/pvf-core instead of relative source imports.
apps/pvf-explorer/src/fixture-store.ts Updates TextProfile import to come from @pvf/pvf-core.
apps/pvf-explorer/package.json Adds missing dependency on @pvf/pvf-core.
AGENTS.md Adds repository “agent notes” pointing to pipeline docs and guardrails.
.gitignore Ignores out/ directory produced by the new pipeline outputs.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +135 to +152
async readRenderedFile(
path: string,
textProfile: TextProfile = this.textProfile,
): Promise<string> {
const normalizedPath = normalizeArchivePath(path);
const overlay = this.#overlays.get(normalizedPath);

if (overlay) {
if (overlay.delete) {
throw new Error(`Cannot read deleted overlay file ${normalizedPath}.`);
}

if (typeof overlay.content !== "string") {
throw new Error(`Overlay ${normalizedPath} is binary and cannot be rendered as text.`);
}

return overlay.content;
}
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PvfModSession.readRenderedFile ignores the requested textProfile when the file comes from an overlay, returning the overlay string even if the caller asks for the other profile. This makes behavior inconsistent with PvfArchive.readRenderedFile and can silently return content in the wrong profile. Either enforce textProfile === this.textProfile for overlays (throw if different), or store/render overlays per profile so the parameter is honored.

Copilot uses AI. Check for mistakes.
@hzy hzy force-pushed the codex/soldoros-doll-split branch from 602bf7f to e14bb81 Compare April 9, 2026 06:32
@hzy hzy merged commit e2f02df into main Apr 9, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants