The probe's child was a script string that wrote its report to stdout, and
the parent parsed the whole stream as one JSON value: a plugin that merely
printed a line at import could not be probed, and a package that kept a
timer alive after import ran until the timeout. The parent asserted the
parsed value as the report, and the cache read checked only `format`, so a
file holding nothing but `{ "format": 2 }` came back as a complete record.
The child is now its own module, `probe-child.ts`, run through tsx under a
source launch and bundled as `lib/probe-child.js`, and it sends one report
over an IPC channel; stdout is not read at all, and the child is killed as
soon as the report arrived. `parseChildReport` and `parseProbeRecord`
validate the report and the cached record field by field, so an
unrecognized report is a rejection and an unrecognized record is probed
again. `PluginProbe.ok` now states what it is: the main export imported and
cordis is not a second copy; `kind` and `addable[].ok` decide what can be
enabled or added.
64 lines
2.0 KiB
JSON
64 lines
2.0 KiB
JSON
{
|
|
"name": "@deepseek-ai/dsh-app-boot",
|
|
"description": "Shared boot glue for the app bins: .env loading, fail-loud Loader guards, snapshot-aware config resolution, and the Loader boot sequence",
|
|
"version": "0.1.3-alpha.1",
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
|
|
"directory": "packages/boot/app-boot"
|
|
},
|
|
"type": "module",
|
|
"main": "lib/index.js",
|
|
"types": "lib/types/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./lib/types/index.d.ts",
|
|
"default": "./lib/index.js"
|
|
},
|
|
"./src/*": "./src/*",
|
|
"./package.json": "./package.json"
|
|
},
|
|
"files": [
|
|
"lib/index.js",
|
|
"lib/probe-child.js",
|
|
"lib/types/**/*.d.ts"
|
|
],
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@deepseek-ai/dsh-atomic-write": "workspace:^",
|
|
"@deepseek-ai/dsh-package-manifest": "workspace:^",
|
|
"js-yaml": "^4.2.0",
|
|
"resolve.exports": "^2.0.3"
|
|
},
|
|
"peerDependencies": {
|
|
"@deepseek-ai/cordis-plugin-group": "workspace:^",
|
|
"@deepseek-ai/cordis-plugin-hmr": "workspace:^",
|
|
"@deepseek-ai/cordis-plugin-include": "workspace:^",
|
|
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
|
|
"@deepseek-ai/dsh-launch-environment": "workspace:^",
|
|
"@deepseek-ai/dsh-home-paths": "workspace:^",
|
|
"@deepseek-ai/dsh-system-prompt": "workspace:^",
|
|
"@deepseek-ai/cordis": "workspace:^"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"@deepseek-ai/cordis-plugin-hmr": {
|
|
"optional": true
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@deepseek-ai/cordis-plugin-group": "workspace:^",
|
|
"@deepseek-ai/cordis-plugin-hmr": "workspace:^",
|
|
"@deepseek-ai/cordis-plugin-include": "workspace:^",
|
|
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
|
|
"@deepseek-ai/cordis-plugin-timer": "workspace:^",
|
|
"@deepseek-ai/dsh-launch-environment": "workspace:^",
|
|
"@deepseek-ai/dsh-home-paths": "workspace:^",
|
|
"@deepseek-ai/dsh-system-prompt": "workspace:^",
|
|
"@types/js-yaml": "^4.0.9",
|
|
"@deepseek-ai/cordis": "workspace:^"
|
|
}
|
|
}
|