dsh-finops-suite
Verifieddsh-finops-suite · v0.1.0-alpha.10 · Apache-2.0
One-command install for dsh-einvoice, dsh-bankrec, dsh-ap-three-way and dsh-travel-recon.
Install
dsh plugin add dsh-finops-suite Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Readme
dsh-finops-suite
Official repository. The only official repository of this package, maintained by PerryLink. Same-name repositories under other accounts are not affiliated. Apache-2.0.
One-command install for dsh-einvoice, dsh-bankrec, dsh-ap-three-way and dsh-travel-recon.
Status: alpha / public-synthetic / partial / not counted / not GA. No customer evidence, customer data, or production-readiness claim.
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <profile> add dsh-finops-suite
⭐ If this helps, a star makes it easier for the next person to find it. Nothing is gated behind it.
Workflow: local input → plugin → local output. No model call is required.
One line
Install the four finance packages in one command and verify every member version resolves.
Best for / not for
- Best for: installing dsh-einvoice, dsh-bankrec, dsh-ap-three-way and dsh-travel-recon into one DSH profile; keeping all four members on one pinned version set; confirming no member row is missing right after install.
- Not for: installing only one package (install that member directly); expecting the suite itself to process invoices or bank statements (it has no tool surface — the members do); OCR, bank feeds, or ERP integration.
Input
- The install itself reads no business documents.
- The bundled sample reads
samples/quickstart/input/profile.json(synthetic profile dump, < 1 KB), plus this package'spackage.jsonandcordis.patch.yml. It reads no other directory and no customer data. - Each member's own input (invoices, bank statements, three-way match rows, travel claims) is documented in that member's README; the suite does not change it.
Output
- The terminal prints the member list, pinned version, and where each version was resolved from; exit code
0means 4/4 resolved. node samples/quickstart/run.mjs --jsonprints the golden JSON stored atsamples/quickstart/expected/result.json.- No files are written, no model is called, no network is used, nothing is uploaded, and source documents are untouched.
Example
Paste this into DSH:
帮我装好财务运营四件套(电子发票、银行对账、三单匹配、差旅对账),确认四个成员包都能解析,并列出各自版本。
Then run the bundled sample from the package directory (offline, no dependency install needed):
node samples/quickstart/run.mjs
Real output:
dsh-finops-suite quickstart (offline)
suite: dsh-finops-suite 0.1.0-alpha.9
profile: finops-demo (synthetic, 4/4 rows enabled)
members: 4/4 resolved
dsh-einvoice 0.2.0-alpha.11 [manifest pin] profile=enabled
dsh-bankrec 0.1.0-alpha.16 [manifest pin] profile=enabled
dsh-ap-three-way 0.1.0-alpha.11 [manifest pin] profile=enabled
dsh-travel-recon 0.1.0-alpha.13 [manifest pin] profile=enabled
network: false (no fetch, no registry call)
golden: samples/quickstart/expected/result.json matches
quickstart ok

The screenshot is the real output of the command above; the golden file and screenshot metadata are in screenshots.json.
Permissions
Read: samples/quickstart/input/profile.json, cordis.patch.yml, package.json; no other directory
Write: none (R0 — terminal output only; no $DSH_HOME writes, source files untouched)
Network: no
External systems: none
FAQ
- The install fails or a member is missing. Run
node samples/quickstart/run.mjs. If the two member lists disagree it raisesE_SUITE_PATCH_MISMATCH; align them as described in TROUBLESHOOTING.md, then reinstall. - The version does not match the suite declaration. The suite pins exact member versions; upgrading one member alone raises
E_SUITE_VERSION_MISMATCH. Removenode_modulesin that profile and reinstall the suite. - Can the suite process my invoices or bank statements? No — the suite only installs members. Use the member packages for invoice, reconciliation, three-way match, and travel work; the bundled sample uses a synthetic profile and reads no real documents.
- Does uninstalling the suite remove the members? No. Removing the suite removes only its row; member packages stay installed until you remove them.
Version
Current version: 0.1.0-alpha.9 (matches package.json).
Local verification (2026-11-02):
node --test test/suite.test.mjs # 8 passed, 0 failed
node samples/quickstart/run.mjs --check # golden matches
Install
Install and verify:
dsh plugin --profile <profile> add dsh-finops-suite
dsh --profile <profile> --dump-config | grep dsh-finops-suite
Uninstall:
dsh plugin --profile <profile> remove dsh-finops-suite
Removing the suite removes only the suite row; the member packages stay installed. Remove them individually if needed. See SUITE.md.
Install channels
npm is the recommended channel; the others are for pinning or offline use.
- npm (recommended):
dsh plugin --profile <profile> add dsh-finops-suite - git channel:
dsh plugin --profile <profile> add github:PerryLink/dsh-finops-suite - tarball:
pnpm packthendsh plugin --profile <profile> add ./dsh-finops-suite-<version>.tgz - 1024 store:
npm i -g dsh1024thendsh1024 plugin --profile <profile> add dsh-finops-suite
What it does
One-command install for dsh-einvoice, dsh-bankrec, dsh-ap-three-way and dsh-travel-recon. Runs locally on DeepSeek Harness. The table below is the exact tool surface; the examples use the real command surface.
Input and output stay local; nothing is uploaded.
Members
The suite only installs these members; it has no tool surface of its own. Versions are pinned in dependencies.
| Member | Version |
|---|---|
dsh-einvoice |
0.2.0-alpha.11 |
dsh-bankrec |
0.1.0-alpha.16 |
dsh-ap-three-way |
0.1.0-alpha.11 |
dsh-travel-recon |
0.1.0-alpha.13 |
Post-install self-check
Run the bundled sample after install to confirm all four members resolve:
node samples/quickstart/run.mjs
Each member's tool surface lives in its own repository; the suite ships no tools.
Limits
- Public/synthetic only; no customer data or customer evidence.
- Alpha/partial, not counted, no GA or production-readiness claim.
- No model or network call unless a tool explicitly says so.
- The exact per-tool boundaries are in the table and
ACCEPTANCE.csv.
Public sample
Public/synthetic fixtures live in fixtures/; ACCEPTANCE.csv records the public checks with counted=false.
Development
pnpm install --frozen-lockfile
pnpm build && pnpm lint && pnpm typecheck && pnpm test
Compatibility
| Surface | Status |
|---|---|
| Harness | dsh >=0.2.1-rc.3 <0.3.0 |
| Node | >=24.9.0 <25 |
| Platforms | All; local files only |
| Data | No network, no model call, no upload |
Permissions & data
- Runs locally; no network, no model call, no upload.
- Public/synthetic fixtures only; no customer data, no customer evidence.
- Alpha/partial; not counted, no GA or production-readiness claim.
Related work
Sibling packages and family indexes: dsh-einvoice · dsh-bankrec · dsh-ap-three-way · dsh-travel-recon
Family
DSH domain plugin family (15 packages + 2 suites)
Mainline family — 92 current install specs
License
Apache-2.0. See LICENSE, NOTICE, THIRD-PARTY-NOTICES.