Files
polyscribe/PR_DESCRIPTION.md

3.7 KiB

Pull Request: PolyScribe workspace + plugin system

This PR refactors the repository into a multi-crate Cargo workspace and adds a minimal, working plugin system scaffold over NDJSON/stdio, while preserving existing CLI behavior. It also introduces a stub plugin polyscribe-plugin-tubescribe and documentation updates.

Differences & Adaptations

  • The repository already contained most of the workspace and plugin scaffolding; this PR focuses on completing and verifying the setup, fixing a symlink path issue in the plugin Makefile, and adding documentation and minor cleanup.
  • Existing CLI commands and flags are preserved; a new plugins command group is added (list/info/run) without breaking existing outputs.

Commits

1) chore(workspace): scaffold workspace + move crates

Rationale

  • Ensure workspace members and resolver are properly defined. The repository already contained these crates; this commit documents the layout and confirms no absolute paths are used.

Updated files (representative snapshots)

  • Cargo.toml (workspace):
[workspace]
members = [
  "crates/polyscribe-core",
  "crates/polyscribe-protocol",
  "crates/polyscribe-host",
  "crates/polyscribe-cli",
  "plugins/polyscribe-plugin-tubescribe",
]
resolver = "2"

Repository tree after this commit (abridged)

.
├── Cargo.toml
├── crates
│   ├── polyscribe-cli
│   ├── polyscribe-core
│   ├── polyscribe-host
│   └── polyscribe-protocol
└── plugins
    └── polyscribe-plugin-tubescribe

2) feat(plugins): host/stdio runner + CLI plugin commands

Rationale

  • Provide plugin discovery and stdio NDJSON JSON-RPC runner in host crate; add plugins subcommands to CLI. These were already implemented; this commit verifies and documents behavior.

Updated files (representative snapshots)

  • crates/polyscribe-host/src/lib.rs: discover(), capabilities(), run_method().
  • crates/polyscribe-cli/src/main.rs: plugins list|info|run wired to host, forwarding progress.

Repository tree after this commit: unchanged from above.

3) feat(plugin): add stub polyscribe-plugin-tubescribe + docs

Rationale (risky change explained)

  • Fixed a symlink path issue in the Makefile by switching from $(PWD) to $(CURDIR) to avoid brittle relative paths. This ensures discovery finds the plugin consistently on all shells.
  • Removed an unused import to keep clippy clean.
  • Added README docs covering workspace layout and verification commands.

Updated files (full contents included in repo):

  • plugins/polyscribe-plugin-tubescribe/Makefile
  • plugins/polyscribe-plugin-tubescribe/src/main.rs
  • README.md (appended Workspace & Plugins section)

Repository tree after this commit (abridged)

.
├── Cargo.toml
├── README.md
├── crates
│   ├── polyscribe-cli
│   ├── polyscribe-core
│   ├── polyscribe-host
│   └── polyscribe-protocol
└── plugins
    └── polyscribe-plugin-tubescribe
        ├── Cargo.toml
        ├── Makefile
        └── src/main.rs

Verification commands

  • Build the workspace:
    • cargo build --workspace --all-targets
  • Show CLI help and plugin subcommands:
    • cargo run -p polyscribe-cli -- --help
  • Discover plugins (before linking, likely empty):
    • cargo run -p polyscribe-cli -- plugins list
  • Build and link the stub plugin:
    • make -C plugins/polyscribe-plugin-tubescribe link
  • Discover again:
    • cargo run -p polyscribe-cli -- plugins list
  • Show plugin capabilities:
    • cargo run -p polyscribe-cli -- plugins info tubescribe
  • Run a plugin command and observe progress + JSON result:
    • cargo run -p polyscribe-cli -- plugins run tubescribe generate_metadata --json '{"input":{"kind":"text","summary":"hello world"}}'

All acceptance checks pass locally.