Release / release (push) Successful in 6s
0.1.7-rc.2 moved four things this bundle was built on, and every one of them
failed quietly rather than loudly, so the plugin looked installed and did
nothing:
* `ctx.settings.installSection(...)` is gone. The call threw into a
`try/catch` that only logged a warning, so the settings namespace was never
registered and `configure` had nowhere to persist. An entry's exported
Config IS the form now; the namespace is the Loader entry id the bundle's
patch declares, and `ctx.settings.configure({ auto: false })` is what claims
that entry's own page.
* `settingsScope` and the `settings.plugin.item` slot are gone. The card
registered into both, so it never rendered — the tab draws the intersection
of served namespaces and registered cards, and that intersection was empty.
It now registers into `plugins.bundle.config` keyed by the bundle's package
name, over the `configForms` service, and uses the framework's own form
chrome (`SettingsFormModel` / `SettingsForm` / `SettingsValueField` /
`SettingsSecretField`) instead of the hand-rolled equivalent. A save is one
revision-fenced write.
* `ctx.shell.run(spec)` is gone. Every action that runs a command threw
`shell.run is not a function`; the seam is now
`await ctx.shell.execute(ctx.shell.resolve(request)).result()`.
* A job's `owner` is a session id, not the agent object. The wrong owner
registered a job no session could collect or cancel, and the producer's
`done` resolved `output` where the registry reads `result`, so a finished
job handed back nothing.
Two conformance gaps went with them: a Config field that is not marked
`volatile()` is invisible to every settings UI — the form projection keeps only
volatile fields, and an entry with no form is dropped from `settings.describe`
entirely — and `embeddingApiKey` was a plain field, so the key rode every
settings read back to the browser. It is `role('secret')` now: the browser is
told whether a key is stored and never receives the key.
Also declares the `@deepseek-ai/dsh-*` peerDependencies the compatibility gate
reads, so an incompatible runtime refuses this plugin at startup instead of
half-loading it.
Verified against a real 0.1.7-rc.2 boot: `settings.describe` serves the entry
with `autoGenerate: false`, the key redacted and reported only as `set: true`,
and no startup diagnostics. The host mock in the tests now has no `run` and no
`installSection`, so those seams are contract-tested rather than assumed, and
the browser tests read the installed harness's own slot catalog and package
exports — a rename fails a test instead of quietly emptying a page.
79 lines
2.0 KiB
JSON
79 lines
2.0 KiB
JSON
{
|
|
"name": "dsh-slopo",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"description": "Slopo as a DeepSeek Harness bundle — embedding-based duplicate-code review, exposed as three user-triggered skills, one config-aware tool, and a settings card.",
|
|
"main": "index.js",
|
|
"exports": {
|
|
".": {
|
|
"default": "./index.js"
|
|
},
|
|
"./client": {
|
|
"default": "./client/client.js"
|
|
},
|
|
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
"./package.json": "./package.json"
|
|
},
|
|
"files": [
|
|
"index.js",
|
|
"lib",
|
|
"client",
|
|
"skills",
|
|
"cordis.patch.yml",
|
|
"README.md",
|
|
"NOTICE.md",
|
|
"LICENSE",
|
|
"CHANGELOG.md"
|
|
],
|
|
"engines": {
|
|
"node": ">=20"
|
|
},
|
|
"scripts": {
|
|
"test": "node --test test/*.test.js",
|
|
"test:release": "bash .gitea/scripts/release.test.sh",
|
|
"release:plan": "bash .gitea/scripts/release.sh should-release \"$(bash .gitea/scripts/release.sh range)\"",
|
|
"release:notes": "bash .gitea/scripts/release.sh notes \"$(bash .gitea/scripts/release.sh range)\""
|
|
},
|
|
"peerDependencies": {
|
|
"@deepseek-ai/cordis": "^4.0.4",
|
|
"@deepseek-ai/dsh-client-ui-primitives": ">=0.1.7-rc.2",
|
|
"@deepseek-ai/dsh-settings": ">=0.1.7-rc.2",
|
|
"@deepseek-ai/dsh-skill": ">=0.1.7-rc.2",
|
|
"@deepseek-ai/dsh-tools": ">=0.1.7-rc.2",
|
|
"@deepseek-ai/schemastery": "^3.18.4",
|
|
"react": "^18.3.1"
|
|
},
|
|
"dsh": {
|
|
"bundle": {
|
|
"patch": "./cordis.patch.yml"
|
|
},
|
|
"client": {
|
|
"platform": "web",
|
|
"inject": [
|
|
"@deepseek-ai/dsh-client-locale",
|
|
"@deepseek-ai/dsh-client-ui-plugin-manager",
|
|
"@deepseek-ai/dsh-client-ui-settings"
|
|
]
|
|
},
|
|
"compatibility": {
|
|
"dshReleases": {
|
|
"0.1.7-rc.2": "compatible"
|
|
}
|
|
}
|
|
},
|
|
"keywords": [
|
|
"dsh-plugin",
|
|
"deepseek-harness",
|
|
"cordis",
|
|
"slopo",
|
|
"duplicate-code",
|
|
"code-embeddings"
|
|
],
|
|
"license": "AGPL-3.0-or-later",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://git.notexpectedyet.com/Not-Expected-Yet/dsh-slopo.git"
|
|
}
|
|
}
|