@godv61/dsh-task-engine 0.23.8 → 0.23.9
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/.preset-test.mjs +2 -2
- package/docs/CHANGELOG.md +13 -0
- package/lib/client.js +352 -301
- package/lib/client.js.map +3 -4
- package/lib/seed-preset.d.ts +5 -5
- package/lib/seed-preset.js +5 -5
- package/package.json +1 -1
- package/scripts/verify-package.mjs +2 -2
package/lib/seed-preset.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Seed the `eng` preset into the user's `.agent-presets` root.
|
|
3
3
|
*
|
|
4
|
-
* Installing the bundle must put a pickable "
|
|
4
|
+
* Installing the bundle must put a pickable "工程化开发引操 preset in the preset
|
|
5
5
|
* picker without anyone hand-copying a composition. The preset is the shipped
|
|
6
6
|
* `standard` composition with three edits: the persona is replaced by the
|
|
7
7
|
* engineering persona, `task-engine-agent` is appended, and nothing else changes
|
|
8
|
-
*
|
|
8
|
+
* —so a session on it has every tool `standard` has, plus `dev_task`.
|
|
9
9
|
*
|
|
10
10
|
* The seed DERIVES the composition from the `standard` that is running, and
|
|
11
11
|
* RE-DERIVES it whenever that source moves. The earlier version copied once and
|
|
@@ -43,7 +43,7 @@ declare const SEEDED_PERSONA_MARKER = " text: |-\n";
|
|
|
43
43
|
* schemas are mutually exclusive: a preset written with `prefix` is rejected
|
|
44
44
|
* outright by an older persona plugin with `$.text missing required value`, and
|
|
45
45
|
* `text` is rejected by the newer one. The seed therefore cannot hardcode
|
|
46
|
-
* either name
|
|
46
|
+
* either name —it reads which one the source composition already uses, since
|
|
47
47
|
* that composition is what the running harness mounts.
|
|
48
48
|
*/
|
|
49
49
|
type PersonaField = 'text' | 'prefix';
|
|
@@ -74,7 +74,7 @@ declare function personaFieldOf(composition: string): PersonaField;
|
|
|
74
74
|
* Replace the persona row's config with the engineering persona, keeping the
|
|
75
75
|
* field name the running harness uses.
|
|
76
76
|
*
|
|
77
|
-
* The persona schema has moved (`text:`
|
|
77
|
+
* The persona schema has moved (`text:` →`prefix`/`suffix`), so this rewrites
|
|
78
78
|
* the whole `config:` block of the `persona` row rather than matching one
|
|
79
79
|
* historical phrasing, and writes whichever field
|
|
80
80
|
* {@link personaFieldOf} found in the source. A `suffix:` row is preserved when
|
|
@@ -101,7 +101,7 @@ declare function wasSeeded(composition: string): boolean;
|
|
|
101
101
|
*
|
|
102
102
|
* Failures are swallowed: a seed that cannot write must not stop the bundle's
|
|
103
103
|
* host half (its Remote controller and workbench) from loading. A preset that
|
|
104
|
-
* was deleted by the user stays deleted
|
|
104
|
+
* was deleted by the user stays deleted —re-derivation only touches a file the
|
|
105
105
|
* seed itself created.
|
|
106
106
|
*/
|
|
107
107
|
export declare function seedEngPreset(): void;
|
package/lib/seed-preset.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Seed the `eng` preset into the user's `.agent-presets` root.
|
|
3
3
|
*
|
|
4
|
-
* Installing the bundle must put a pickable "
|
|
4
|
+
* Installing the bundle must put a pickable "工程化开发引操 preset in the preset
|
|
5
5
|
* picker without anyone hand-copying a composition. The preset is the shipped
|
|
6
6
|
* `standard` composition with three edits: the persona is replaced by the
|
|
7
7
|
* engineering persona, `task-engine-agent` is appended, and nothing else changes
|
|
8
|
-
*
|
|
8
|
+
* —so a session on it has every tool `standard` has, plus `dev_task`.
|
|
9
9
|
*
|
|
10
10
|
* The seed DERIVES the composition from the `standard` that is running, and
|
|
11
11
|
* RE-DERIVES it whenever that source moves. The earlier version copied once and
|
|
@@ -57,7 +57,7 @@ function dshHome() {
|
|
|
57
57
|
* time from the installed DSH rather than from a build-time constant.
|
|
58
58
|
*
|
|
59
59
|
* `@deepseek-ai/dsh-agent-presets` also exports `SHIPPED_PRESET_ROOT`, but that
|
|
60
|
-
* is `fileURLToPath(new URL('../presets/', import.meta.url))`
|
|
60
|
+
* is `fileURLToPath(new URL('../presets/', import.meta.url))` —a constant baked
|
|
61
61
|
* into whichever copy of the package the *plugin* resolves. Under a real install
|
|
62
62
|
* that is the plugin's own dependency tree, which can sit at a different DSH
|
|
63
63
|
* version than the one running: the seed then copies an obsolete `standard`,
|
|
@@ -126,7 +126,7 @@ function personaFieldOf(composition) {
|
|
|
126
126
|
* Replace the persona row's config with the engineering persona, keeping the
|
|
127
127
|
* field name the running harness uses.
|
|
128
128
|
*
|
|
129
|
-
* The persona schema has moved (`text:`
|
|
129
|
+
* The persona schema has moved (`text:` →`prefix`/`suffix`), so this rewrites
|
|
130
130
|
* the whole `config:` block of the `persona` row rather than matching one
|
|
131
131
|
* historical phrasing, and writes whichever field
|
|
132
132
|
* {@link personaFieldOf} found in the source. A `suffix:` row is preserved when
|
|
@@ -204,7 +204,7 @@ function deriveComposition() {
|
|
|
204
204
|
*
|
|
205
205
|
* Failures are swallowed: a seed that cannot write must not stop the bundle's
|
|
206
206
|
* host half (its Remote controller and workbench) from loading. A preset that
|
|
207
|
-
* was deleted by the user stays deleted
|
|
207
|
+
* was deleted by the user stays deleted —re-derivation only touches a file the
|
|
208
208
|
* seed itself created.
|
|
209
209
|
*/
|
|
210
210
|
export function seedEngPreset() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@godv61/dsh-task-engine",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.9",
|
|
4
4
|
"description": "Preset-workflow engineering delivery engine for DeepSeek Harness: a `dev_task` tool that hard-gates stage transitions and commit scope/message, per-node skill/rule bindings with progressive disclosure, a workbench to pick a flow preset and mount skills/rules, and preset-scoped activation — the tool and skills activate only for sessions on a preset that names the agent row.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Black-box verification of the npm tarball before publishing: packs the
|
|
3
3
|
* package, extracts it into a clean temp dir, and proves the published entry
|
|
4
|
-
* points actually work
|
|
4
|
+
* points actually work —main import, browser client registration, the bundled
|
|
5
5
|
* `.p0-test.mjs`, the CLI, and the `files` whitelist.
|
|
6
6
|
*
|
|
7
7
|
* Run: `npm run verify:package`
|
|
@@ -51,7 +51,7 @@ check('tarball excludes build scripts', !listing.some(line => line.endsWith('bui
|
|
|
51
51
|
// Every `node <file>` script the manifest declares must actually ship, EXCEPT
|
|
52
52
|
// the build-time ones that `prepare` needs in the source tree only. A script
|
|
53
53
|
// whose target is absent from `files` installs fine and then dies with
|
|
54
|
-
// MODULE_NOT_FOUND
|
|
54
|
+
// MODULE_NOT_FOUND —which is exactly what verify:package and verify:dsh did
|
|
55
55
|
// until this assertion existed, because neither scripts/ path was published.
|
|
56
56
|
{
|
|
57
57
|
const manifest = JSON.parse(readFileSync(join(pkgRoot, 'package.json'), 'utf8'))
|