@avantf/dsh-plugin-base 0.3.1 → 0.4.0
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/README.md +29 -15
- package/dist/bootstrap.d.ts +3 -2
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +3 -2
- package/dist/compat.d.ts +2 -2
- package/dist/compat.js +5 -5
- package/dist/errors.d.ts +6 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/index.d.ts +23 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -22
- package/dist/interface.d.ts +296 -23
- package/dist/interface.d.ts.map +1 -1
- package/dist/interface.js +206 -8
- package/dist/interface_gate.d.ts +20 -6
- package/dist/interface_gate.d.ts.map +1 -1
- package/dist/interface_gate.js +37 -7
- package/dist/internal.d.ts +26 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +27 -1
- package/dist/kit/family.d.ts +2 -2
- package/dist/kit/family.js +3 -3
- package/dist/kit/index.d.ts +5 -1
- package/dist/kit/index.d.ts.map +1 -1
- package/dist/kit/index.js +5 -1
- package/dist/kit/logger.d.ts +1 -1
- package/dist/kit/logger.js +1 -1
- package/dist/kit/prompt_files.d.ts +37 -3
- package/dist/kit/prompt_files.d.ts.map +1 -1
- package/dist/kit/prompt_files.js +45 -0
- package/dist/kit/typert.d.ts +2 -2
- package/dist/kit/wellformed.d.ts +79 -0
- package/dist/kit/wellformed.d.ts.map +1 -0
- package/dist/kit/wellformed.js +155 -0
- package/dist/layout.d.ts +17 -2
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +15 -5
- package/dist/lint.d.ts.map +1 -1
- package/dist/lint.js +2 -2
- package/dist/lock.d.ts +18 -0
- package/dist/lock.d.ts.map +1 -1
- package/dist/lock.js +77 -10
- package/dist/net.d.ts +106 -3
- package/dist/net.d.ts.map +1 -1
- package/dist/net.js +128 -30
- package/dist/providers/archive.d.ts.map +1 -1
- package/dist/providers/archive.js +108 -20
- package/dist/providers/model.d.ts +26 -3
- package/dist/providers/model.d.ts.map +1 -1
- package/dist/providers/model.js +159 -32
- package/dist/providers/npm.d.ts +5 -0
- package/dist/providers/npm.d.ts.map +1 -1
- package/dist/providers/npm.js +62 -21
- package/dist/provisioner.d.ts.map +1 -1
- package/dist/provisioner.js +128 -31
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +8 -3
- package/dist/tar.d.ts +7 -0
- package/dist/tar.d.ts.map +1 -1
- package/dist/tar.js +12 -5
- package/dist/types.d.ts +11 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/zip.d.ts.map +1 -1
- package/dist/zip.js +10 -1
- package/package.json +18 -19
- package/dist/artifact.js.map +0 -1
- package/dist/bootstrap.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/compat.js.map +0 -1
- package/dist/conformance.js.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/fs.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/integrity.js.map +0 -1
- package/dist/interface.js.map +0 -1
- package/dist/interface_gate.js.map +0 -1
- package/dist/internal.js.map +0 -1
- package/dist/kit/family.js.map +0 -1
- package/dist/kit/index.js.map +0 -1
- package/dist/kit/logger.js.map +0 -1
- package/dist/kit/prompt_files.js.map +0 -1
- package/dist/kit/typert.js.map +0 -1
- package/dist/layout.js.map +0 -1
- package/dist/lint.js.map +0 -1
- package/dist/lock.js.map +0 -1
- package/dist/manifest.js.map +0 -1
- package/dist/net.js.map +0 -1
- package/dist/package-name.js.map +0 -1
- package/dist/preset.js.map +0 -1
- package/dist/providers/archive.js.map +0 -1
- package/dist/providers/model.js.map +0 -1
- package/dist/providers/npm.js.map +0 -1
- package/dist/provisioner.js.map +0 -1
- package/dist/semver.js.map +0 -1
- package/dist/state.js.map +0 -1
- package/dist/tar.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/zip.js.map +0 -1
package/README.md
CHANGED
|
@@ -20,6 +20,9 @@
|
|
|
20
20
|
|
|
21
21
|
- 已经在盘上 / PATH 上的直接用,不重复下载;
|
|
22
22
|
- 需要安装的由框架下载、校验完整性、**原子落盘**(同目录临时文件 + rename;跨进程一把族根锁);
|
|
23
|
+
- 锁被活体进程长期持有(锁文件 mtime 越过 `staleMs` 而 holder 的 pid 仍活着)时**不抢锁**:打一条用户可见的
|
|
24
|
+
`warn`(写明 holder 的 pid、已持有时长、本次已等待时长)后继续按预算等待;等不到就报 `lock/timeout`,
|
|
25
|
+
消息里带 holder 与 mtime 诊断。抢一个活写者的锁会让两个写者进同一目录,超时只是报告;
|
|
23
26
|
- 每一项给出 `present / installed / skipped / failed`,失败带稳定 `code`;
|
|
24
27
|
- 三种内置资源种类:`npm-package`、`binary-archive`、`model-cache`。新的种类 = 一个新的 provider,
|
|
25
28
|
核心不动;
|
|
@@ -41,10 +44,13 @@
|
|
|
41
44
|
|
|
42
45
|
| 工具 | 作用 |
|
|
43
46
|
| --- | --- |
|
|
44
|
-
| `PromptFiles` | "缺失或空白就写入默认、有内容则逐字读回"
|
|
45
|
-
| `createPluginLogger` | 带统一前缀、可镜像到宿主 logger 的 logger |
|
|
47
|
+
| `PromptFiles` | "缺失或空白就写入默认、有内容则逐字读回"的用户可编辑文本文件层(含崩溃残留的死临时文件清理)。可传 `namespace` 把 `<dataHome>/prompts` 里属于本插件的 `mem-*` / `mission-*` 前缀变成 base 校验的字段(不传则行为不变) |
|
|
46
48
|
| `familyHome` / `familyToolsDir` / `familyModelsDir` / `resolveDataHome` / `expandHome` | 家族根与数据根解析:**⑤ 显式 → ④ 环境变量 → ② 配置值 → 默认**,一律传**具名 slot** |
|
|
47
|
-
| `
|
|
49
|
+
| `wellFormedText` / `wellFormedDeep` | 出站文本的良构修复:孤立代理(lone surrogate)会被 `JSON.stringify` 原样写出、被严格解析器整篇拒收,这里统一换成 U+FFFD;引擎没有 `String.prototype.toWellFormed` 时走等价扫描。递归版只修字符串、数组与普通对象(含键),`Date` / 类实例等一律按同一性原样返回 |
|
|
50
|
+
|
|
51
|
+
> 世代 v3 把没有运行期消费者的构件移到了 `./internal`(如 `createPluginLogger`、Typert 符号
|
|
52
|
+
> `strictCodec` / `endpointId` / `fieldSymbol` / `resultSymbol`、compat 门禁的单个探针、`npmPackageProvider`)。
|
|
53
|
+
> 它们不再是 `.` 接口的一部分;本包自己的插件各有自己的 logger 与 Typert 镜像,不需要它们。
|
|
48
54
|
|
|
49
55
|
### 4. 接口世代
|
|
50
56
|
|
|
@@ -53,12 +59,14 @@
|
|
|
53
59
|
- `INTERFACE_VERSION`(正整数)+ `api/interface-vN.json` 快照(该代的值名与类型名,随源码在仓库里,
|
|
54
60
|
不进产物);
|
|
55
61
|
- `checkInterface(required, module)`:把"调用方构建时所对的世代"与"运行时加载到的本包报告的世代"
|
|
56
|
-
比一比,返回 `ok` / `incompatible` / `cannot-tell
|
|
57
|
-
对象读成"没报"
|
|
62
|
+
比一比,返回 `ok` / `incompatible` / `cannot-tell`。纯函数、**非对称**、读属性有守卫(取属性就抛的
|
|
63
|
+
对象读成"没报")、**永不抛**。只有加载到的世代**更旧**(成员可能缺失)才是 `incompatible`;加载到的
|
|
64
|
+
世代**更新**是 `ok` + 一句话的 `warning`(新世代不拿走有消费者的成员 —— v1→v2 是名字超集,v2→v3 是
|
|
65
|
+
剪枝,剪掉的 18 个成员经证明零消费者),相等是 `ok`;
|
|
58
66
|
- `readInterfaceRequirement(url)`:读调用方产物里烘着的那条记录 `{ baseVersion, interfaceVersion }`;
|
|
59
67
|
缺失或畸形返回 `undefined`("没烘"),不抛;
|
|
60
|
-
- 拿到 `incompatible`
|
|
61
|
-
|
|
68
|
+
- 拿到 `incompatible` 时的建议动作是**降级**(不使用本包的共享能力)而不是拒绝挂载;拿到 `ok` + `warning`
|
|
69
|
+
时照常使用、只把那条警告记下来 —— 本包只把裁决与一句话的 `reason` / `warning` 交出去,怎么处理由调用方决定。
|
|
62
70
|
|
|
63
71
|
## 怎么用
|
|
64
72
|
|
|
@@ -78,7 +86,6 @@ import type { Provisioner } from '@avantf/dsh-plugin-base'
|
|
|
78
86
|
const home = join(homedir(), '.avantf', 'env')
|
|
79
87
|
|
|
80
88
|
const provisioner: Provisioner = framework.createProvisioner({ home, logger })
|
|
81
|
-
provisioner.register(framework.npmPackageProvider())
|
|
82
89
|
provisioner.register(framework.binaryArchiveProvider())
|
|
83
90
|
provisioner.register(framework.modelCacheProvider())
|
|
84
91
|
provisioner.declare(manifest)
|
|
@@ -205,10 +212,10 @@ if (!verdict.load) {
|
|
|
205
212
|
### 取用共享工具
|
|
206
213
|
|
|
207
214
|
```ts
|
|
208
|
-
import { PromptFiles
|
|
215
|
+
import { PromptFiles } from '@avantf/dsh-plugin-base'
|
|
209
216
|
|
|
210
|
-
|
|
211
|
-
const files = new PromptFiles({ dir: join(dataHome, 'prompts'),
|
|
217
|
+
// 插件自己的 logger(base 解析之前就要用);提示词层传 `namespace` 让 base 校验前缀。
|
|
218
|
+
const files = new PromptFiles({ dir: join(dataHome, 'prompts'), namespace: 'my-plugin', logger })
|
|
212
219
|
.load([{ file: 'my-plugin-prompt.md', fallback: '内置默认正文\n' }])
|
|
213
220
|
// files[0].text —— 用户写的正文(逐字),或刚写下的默认正文
|
|
214
221
|
```
|
|
@@ -282,8 +289,16 @@ assertProviderConformance(report)
|
|
|
282
289
|
|
|
283
290
|
## 版本承诺
|
|
284
291
|
|
|
285
|
-
-
|
|
286
|
-
|
|
292
|
+
- 接口面是 `.` 上的导出(值 + 类型)加上 `./preset` / `./conformance` / `./bootstrap` 三个子路径;`./internal`
|
|
293
|
+
是内部件,从不承诺稳定(v3 起落在这里的还有那些没有运行期消费者的构件:compat 的单个探针、
|
|
294
|
+
provisioner 的常量、`npmPackageProvider`、Typert 符号、`createPluginLogger`)。
|
|
295
|
+
- **当前这一代(v3)把 `.` 收成了一个稳定子集**:`.` 只列"插件真取用、或插件作者被期望调用"的成员
|
|
296
|
+
(32 个值 + 66 个类型),其余进 `./internal`。名字面落在 `api/interface-vN.json` 快照里,随源码在仓库、
|
|
297
|
+
不进产物。这是为了把"内部件的改动"与"接口"解耦(v3 之前 `.` 是两句 `export *` 的副产品,加一个内部
|
|
298
|
+
helper 就算接口变更),不是"这个集合永远不变":新能力从明确标注为不稳定的入口引入,既有成员按弃用
|
|
299
|
+
周期退出。
|
|
300
|
+
- **v3 是第一次破坏性换代**:v2 的成员如果有消费者,v3 一个不少(剪掉的 18 个经跨树证明零消费者);
|
|
301
|
+
但 v3 不再对 v2 做结构超集。旧调用方遇到更新的 base 仍判 `ok` + `warning`,遇到更旧的 base 才降级。
|
|
287
302
|
- **接口与包版本是两条轴**:接口换代只升 `INTERFACE_VERSION` 并新增 `api/interface-vN.json`;包版本是
|
|
288
303
|
普通 semver,只表达包自身(行为变更 minor、修复 patch)。
|
|
289
304
|
- 顺序敏感的参数一律传**具名对象**(如 `resolveDataHome({ explicit, env, configured })`);可观察的文案
|
|
@@ -294,8 +309,7 @@ assertProviderConformance(report)
|
|
|
294
309
|
```bash
|
|
295
310
|
pnpm check # 类型检查 + 测试
|
|
296
311
|
pnpm build # tsc → dist/
|
|
297
|
-
pnpm pack #
|
|
298
|
-
pnpm release:check # 发布门禁:typecheck → build → test → pack
|
|
312
|
+
pnpm pack # 打包出 tarball
|
|
299
313
|
```
|
|
300
314
|
|
|
301
315
|
## 许可
|
package/dist/bootstrap.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @module bootstrap
|
|
4
4
|
*/
|
|
5
5
|
/** The bootstrap version; the resolved framework must satisfy {@link supportedRange}. */
|
|
6
|
-
export declare const VERSION = "0.
|
|
6
|
+
export declare const VERSION = "0.4.0";
|
|
7
7
|
/**
|
|
8
8
|
* The framework interval this bootstrap can launch.
|
|
9
9
|
*
|
|
@@ -13,7 +13,8 @@ export declare const VERSION = "0.3.1";
|
|
|
13
13
|
* compatibility promise — `>=0.3.0 <1.0.0` admits every 0.x base this generation of plugins can
|
|
14
14
|
* consume, and stops at the major that invented a new interface generation. The interface itself is
|
|
15
15
|
* the separate, runtime axis: a base inside this interval whose `INTERFACE_VERSION` differs is judged
|
|
16
|
-
* by the base's own gate (INTERFACE.md §1, §3)
|
|
16
|
+
* by the base's own gate (INTERFACE.md §1, §3) — an OLDER base degrades, a NEWER one is `ok` + a
|
|
17
|
+
* warning (generations are additive), and neither ever refuses the mount.
|
|
17
18
|
*/
|
|
18
19
|
export declare const supportedRange = ">=0.3.0 <1.0.0";
|
|
19
20
|
/** Sink for the warnings that replace a throw. */
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,yFAAyF;AACzF,eAAO,MAAM,OAAO,UAAU,CAAA;AAC9B
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,yFAAyF;AACzF,eAAO,MAAM,OAAO,UAAU,CAAA;AAC9B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,mBAAmB,CAAA;AAI9C,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,sEAAsE;AACtE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;IACjC,iDAAiD;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CACjC;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAC5B;AA8LD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAoC7G;AAED,oFAAoF;AACpF,wBAAsB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAaxG;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuCnG"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -7,7 +7,7 @@ import { createRequire } from 'node:module';
|
|
|
7
7
|
import { dirname, join } from 'node:path';
|
|
8
8
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
9
9
|
/** The bootstrap version; the resolved framework must satisfy {@link supportedRange}. */
|
|
10
|
-
export const VERSION = '0.
|
|
10
|
+
export const VERSION = '0.4.0';
|
|
11
11
|
/**
|
|
12
12
|
* The framework interval this bootstrap can launch.
|
|
13
13
|
*
|
|
@@ -17,7 +17,8 @@ export const VERSION = '0.3.1';
|
|
|
17
17
|
* compatibility promise — `>=0.3.0 <1.0.0` admits every 0.x base this generation of plugins can
|
|
18
18
|
* consume, and stops at the major that invented a new interface generation. The interface itself is
|
|
19
19
|
* the separate, runtime axis: a base inside this interval whose `INTERFACE_VERSION` differs is judged
|
|
20
|
-
* by the base's own gate (INTERFACE.md §1, §3)
|
|
20
|
+
* by the base's own gate (INTERFACE.md §1, §3) — an OLDER base degrades, a NEWER one is `ok` + a
|
|
21
|
+
* warning (generations are additive), and neither ever refuses the mount.
|
|
21
22
|
*/
|
|
22
23
|
export const supportedRange = '>=0.3.0 <1.0.0';
|
|
23
24
|
const PACKAGE = '@avantf/dsh-plugin-base';
|
package/dist/compat.d.ts
CHANGED
|
@@ -247,7 +247,7 @@ export declare function toolProbeDeclaration(defineTool: ToolDeclarationHelper):
|
|
|
247
247
|
*
|
|
248
248
|
* What this proves that a method-presence check cannot: the registry ACCEPTED our
|
|
249
249
|
* declaration shape and still lists it. It is the difference between "`register` is a
|
|
250
|
-
* function" and "registering what we register
|
|
250
|
+
* function" and "registering what we register missions".
|
|
251
251
|
* @param registry - `ctx.tools`.
|
|
252
252
|
* @returns the outcome; never throws.
|
|
253
253
|
*/
|
|
@@ -279,7 +279,7 @@ export declare function readRuntimeVersions(packages: readonly string[], base?:
|
|
|
279
279
|
* Read a live context into the plain evidence the rules consume.
|
|
280
280
|
*
|
|
281
281
|
* The probes are throwaway declarations shaped like the real ones: "`register` is a function" and
|
|
282
|
-
* "registering what we register
|
|
282
|
+
* "registering what we register missions" are different claims, and only the second one catches a
|
|
283
283
|
* moved contract.
|
|
284
284
|
* @param ctx - the live context (structural: only `get` is used).
|
|
285
285
|
* @param spec - what the caller declared about itself.
|
package/dist/compat.js
CHANGED
|
@@ -252,7 +252,7 @@ export function toolProbeDeclaration(defineTool) {
|
|
|
252
252
|
*
|
|
253
253
|
* What this proves that a method-presence check cannot: the registry ACCEPTED our
|
|
254
254
|
* declaration shape and still lists it. It is the difference between "`register` is a
|
|
255
|
-
* function" and "registering what we register
|
|
255
|
+
* function" and "registering what we register missions".
|
|
256
256
|
* @param registry - `ctx.tools`.
|
|
257
257
|
* @returns the outcome; never throws.
|
|
258
258
|
*/
|
|
@@ -423,7 +423,7 @@ export function readRuntimeVersions(packages, base = import.meta.url) {
|
|
|
423
423
|
* Read a live context into the plain evidence the rules consume.
|
|
424
424
|
*
|
|
425
425
|
* The probes are throwaway declarations shaped like the real ones: "`register` is a function" and
|
|
426
|
-
* "registering what we register
|
|
426
|
+
* "registering what we register missions" are different claims, and only the second one catches a
|
|
427
427
|
* moved contract.
|
|
428
428
|
* @param ctx - the live context (structural: only `get` is used).
|
|
429
429
|
* @param spec - what the caller declared about itself.
|
|
@@ -519,7 +519,7 @@ export function verdictOf(evidence) {
|
|
|
519
519
|
}
|
|
520
520
|
if (version.runtime !== version.declared) {
|
|
521
521
|
versionDiffered = true;
|
|
522
|
-
warnings.push(`this build was compiled against ${version.package} ${version.declared}, but its links now resolve to ${version.runtime} —
|
|
522
|
+
warnings.push(`this build was compiled against ${version.package} ${version.declared}, but its links now resolve to ${version.runtime} — switch to the dsh version this build declares compatible, or upgrade this package`);
|
|
523
523
|
}
|
|
524
524
|
}
|
|
525
525
|
if (evidence.events.length > 0) {
|
|
@@ -553,7 +553,7 @@ export function verdictOf(evidence) {
|
|
|
553
553
|
else {
|
|
554
554
|
lines.push({
|
|
555
555
|
level: 'error',
|
|
556
|
-
message: `${COMPAT_PREFIX} REFUSING to load — ${String(problems.length)} proven incompatibility(ies).
|
|
556
|
+
message: `${COMPAT_PREFIX} REFUSING to load — ${String(problems.length)} proven incompatibility(ies). Switch to the @deepseek-ai/dsh this build declares compatible, or upgrade this package.`,
|
|
557
557
|
});
|
|
558
558
|
}
|
|
559
559
|
// `probe-failed` covers every PROVEN break — a service or method that is gone is the same finding
|
|
@@ -735,7 +735,7 @@ export function verifyRegisteredFaces(input) {
|
|
|
735
735
|
if (missing.length > 0) {
|
|
736
736
|
input.log.warn(`${COMPAT_PREFIX} WARNING — ${String(missing.length)} of ${String(expectedKeys.length + input.toolNames.length)} `
|
|
737
737
|
+ `real registrations are not visible afterwards: ${missing.join(', ')} — the plugin is already mounted, so this is `
|
|
738
|
-
+ 'reported rather than undone;
|
|
738
|
+
+ 'reported rather than undone; switch to the dsh version this build declares compatible (or upgrade this package), restart `dsh`, and check again');
|
|
739
739
|
}
|
|
740
740
|
return { missing };
|
|
741
741
|
}
|
package/dist/errors.d.ts
CHANGED
|
@@ -10,7 +10,12 @@ export type ProvisionCode = 'invalid-option' | 'ignored-field' | 'missing-need'
|
|
|
10
10
|
/** `.layout.json` exists but could not be read (EACCES / ENOSPC / half-written). It shares the
|
|
11
11
|
* read-only CONSEQUENCE with the two above and not their meaning: "a newer layout wrote this, do
|
|
12
12
|
* not touch it" is a verdict about the home, while this is a fact about the read. */
|
|
13
|
-
| 'layout/unreadable' | 'lock/timeout' | 'publish/cross-device' | 'fetch/failed'
|
|
13
|
+
| 'layout/unreadable' | 'lock/timeout' | 'publish/cross-device' | 'fetch/failed'
|
|
14
|
+
/** A response body crossed a hard byte cap — either the declared `content-length` or the bytes
|
|
15
|
+
* actually read. Unlike a short read (which is a truncated DOWNLOAD and retries the next mirror),
|
|
16
|
+
* this is TERMINAL: every mirror serves the same oversized object, so trying another one cannot
|
|
17
|
+
* help. Providers branch on this code to decide whether to fall through. */
|
|
18
|
+
| 'fetch/too-large' | 'extract/failed' | 'verify/failed' | 'unknown-error';
|
|
14
19
|
/** An error that carries a stable `code`; a caller branches on `code`, never on message text. */
|
|
15
20
|
export declare class ProvisionError extends Error {
|
|
16
21
|
readonly code: ProvisionCode;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;cACc;AACd,MAAM,MAAM,aAAa,GAErB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,0BAA0B,GAC1B,gBAAgB,GAEhB,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,kBAAkB,GAElB,2BAA2B,GAC3B,kBAAkB,GAClB,wBAAwB,GACxB,kCAAkC,GAElC,wBAAwB,GACxB,4BAA4B;AAC9B,0DAA0D;GACxD,0BAA0B,GAE1B,qBAAqB,GACrB,yBAAyB,GACzB,gBAAgB,GAChB,iBAAiB;AACnB;;sFAEsF;GACpF,mBAAmB,GAEnB,cAAc,GACd,sBAAsB,GACtB,cAAc,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;cACc;AACd,MAAM,MAAM,aAAa,GAErB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,0BAA0B,GAC1B,gBAAgB,GAEhB,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,kBAAkB,GAElB,2BAA2B,GAC3B,kBAAkB,GAClB,wBAAwB,GACxB,kCAAkC,GAElC,wBAAwB,GACxB,4BAA4B;AAC9B,0DAA0D;GACxD,0BAA0B,GAE1B,qBAAqB,GACrB,yBAAyB,GACzB,gBAAgB,GAChB,iBAAiB;AACnB;;sFAEsF;GACpF,mBAAmB,GAEnB,cAAc,GACd,sBAAsB,GACtB,cAAc;AAChB;;;6EAG6E;GAC3E,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GAEf,eAAe,CAAA;AAEnB,iGAAiG;AACjG,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;gBAEvB,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAMlE;AAED,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQjF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,22 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plugin environment initialisation at startup.
|
|
2
|
+
* Plugin environment initialisation at startup — the `.` entry, written as an EXPLICIT list.
|
|
3
|
+
*
|
|
4
|
+
* Generation v3 (INTERFACE.md §9) replaced the two `export *` re-exports this file used to carry
|
|
5
|
+
* (`./compat.js`, `./kit/index.js`) with the list below. That is the whole point of the generation:
|
|
6
|
+
* before v3 the frozen surface was "whatever those two files happened to export", so adding an
|
|
7
|
+
* internal helper to `compat.ts` was silently an interface change. Now `.` carries the members the
|
|
8
|
+
* installed plugins actually consume plus the extension points a plugin author is expected to call,
|
|
9
|
+
* and nothing else: the zero-consumer composition pieces moved to `./internal` (see that module).
|
|
10
|
+
*
|
|
11
|
+
* The same surface is stated as a type + two name lists in `./interface.js`; `api/interface-v3.json`
|
|
12
|
+
* is its snapshot, and `test/public-surface.spec.ts` keeps the three in step. Do not add a member
|
|
13
|
+
* here without a generation decision.
|
|
14
|
+
*
|
|
3
15
|
* @module index
|
|
4
16
|
*/
|
|
5
|
-
export {
|
|
17
|
+
export { ITEM_SCHEMA_VERSION, createProvisioner } from './provisioner.js';
|
|
6
18
|
export { ProvisionError, reasonOf } from './errors.js';
|
|
7
19
|
export type { ProvisionCode } from './errors.js';
|
|
8
|
-
export { npmPackageProvider, NPM_PACKAGE_KIND } from './providers/npm.js';
|
|
9
|
-
export type { NpmPackageSpec } from './providers/npm.js';
|
|
10
20
|
export { binaryArchiveProvider, BINARY_ARCHIVE_KIND } from './providers/archive.js';
|
|
11
21
|
export type { ArchivePack, BinaryArchiveSpec } from './providers/archive.js';
|
|
12
22
|
export { modelCacheProvider, MODEL_CACHE_KIND } from './providers/model.js';
|
|
13
23
|
export type { ModelCacheLayout, ModelCacheSpec } from './providers/model.js';
|
|
14
|
-
export
|
|
15
|
-
export
|
|
24
|
+
export { BUILD_VERSIONS_FILE, COMPAT_PREFIX, compatReport, gatherEvidence, provision, readBuildVersions, readDeclaredVersions, readRuntimeVersions, registerMegaphone, schemaNamesFrom, toolProbeDeclaration, verdictOf, verifyRegisteredFaces, } from './compat.js';
|
|
25
|
+
export type { CompatContext, CompatEvidence, CompatLine, CompatLogger, CompatReportWords, CompatSpec, CompatVerdict, ProbeOutcome, ServiceContract, ServiceProbe, } from './compat.js';
|
|
26
|
+
export { expandHome, familyHome, familyModelsDir, familyToolsDir, resolveDataHome } from './kit/family.js';
|
|
27
|
+
export type { DataHomeInput } from './kit/family.js';
|
|
28
|
+
export { PromptFiles } from './kit/prompt_files.js';
|
|
29
|
+
export type { LoadedPromptText, PromptFileSpec, PromptFilesIo, PromptFilesLogger, PromptFilesOptions } from './kit/prompt_files.js';
|
|
30
|
+
export { wellFormedDeep, wellFormedText } from './kit/wellformed.js';
|
|
16
31
|
export { INTERFACE_VERSION } from './interface.js';
|
|
17
|
-
export type { BaseRuntimeV1, BaseTypeSurfaceV1 } from './interface.js';
|
|
32
|
+
export type { BaseRuntimeV1, BaseRuntimeV2, BaseRuntimeV3, BaseTypeSurfaceV1, BaseTypeSurfaceV2, BaseTypeSurfaceV3, } from './interface.js';
|
|
18
33
|
export { checkInterface, readInterfaceRequirement } from './interface_gate.js';
|
|
19
|
-
export type {
|
|
34
|
+
export type { InterfaceRequirement, InterfaceVerdict } from './interface_gate.js';
|
|
20
35
|
export type { AtStartup, AtUse, BuiltinKind, ItemPolicy, Kind, Manifest, MirrorPolicy, OnMissing, ProvisionItem, ResourceHandle, ResourceSource, ResourceState, Startup, EnsureOptions, Plan, PlanAction, PlanEntry, PlanOptions, ProvisionEvent, ProvisionReport, ProvisionReportEntry, ProvisionStatus, ReportAction, Disposable, ProgressEvent, ProvisionFs, ProvisionLock, ProvisionLogger, ProvisionPolicy, Provisioner, ProvisionerExperimental, ProvisionerOptions, PrunePolicy, PruneReport, InstallContext, InstallManifest, Provider, ProviderContext, ProviderPlan, ProbeResult, PublishMeta, Resolved, ResourceIdentity, } from './types.js';
|
|
21
|
-
export type { PluginLogger, PluginLoggerOptions, PromptFilesIo, PromptFilesLogger, PromptFilesOptions, StrictCodec, } from './kit/index.js';
|
|
22
36
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACnF,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAQ5E,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,YAAY,GACb,MAAM,aAAa,CAAA;AAYpB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC1G,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACnI,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAapE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,YAAY,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAA;AAMvB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEjF,YAAY,EAEV,SAAS,EACT,KAAK,EACL,WAAW,EACX,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,EAEb,cAAc,EACd,cAAc,EACd,aAAa,EACb,OAAO,EAEP,aAAa,EACb,IAAI,EACJ,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,YAAY,EAEZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,WAAW,EACX,WAAW,EAEX,cAAc,EACd,eAAe,EACf,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,35 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plugin environment initialisation at startup.
|
|
2
|
+
* Plugin environment initialisation at startup — the `.` entry, written as an EXPLICIT list.
|
|
3
|
+
*
|
|
4
|
+
* Generation v3 (INTERFACE.md §9) replaced the two `export *` re-exports this file used to carry
|
|
5
|
+
* (`./compat.js`, `./kit/index.js`) with the list below. That is the whole point of the generation:
|
|
6
|
+
* before v3 the frozen surface was "whatever those two files happened to export", so adding an
|
|
7
|
+
* internal helper to `compat.ts` was silently an interface change. Now `.` carries the members the
|
|
8
|
+
* installed plugins actually consume plus the extension points a plugin author is expected to call,
|
|
9
|
+
* and nothing else: the zero-consumer composition pieces moved to `./internal` (see that module).
|
|
10
|
+
*
|
|
11
|
+
* The same surface is stated as a type + two name lists in `./interface.js`; `api/interface-v3.json`
|
|
12
|
+
* is its snapshot, and `test/public-surface.spec.ts` keeps the three in step. Do not add a member
|
|
13
|
+
* here without a generation decision.
|
|
14
|
+
*
|
|
3
15
|
* @module index
|
|
4
16
|
*/
|
|
5
|
-
export {
|
|
17
|
+
export { ITEM_SCHEMA_VERSION, createProvisioner } from './provisioner.js';
|
|
6
18
|
export { ProvisionError, reasonOf } from './errors.js';
|
|
7
|
-
export { npmPackageProvider, NPM_PACKAGE_KIND } from './providers/npm.js';
|
|
8
19
|
export { binaryArchiveProvider, BINARY_ARCHIVE_KIND } from './providers/archive.js';
|
|
9
20
|
export { modelCacheProvider, MODEL_CACHE_KIND } from './providers/model.js';
|
|
10
|
-
// The compatibility gate
|
|
11
|
-
// provisioned into the framework's managed root
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
// instead of the whole `typeof import(...)` namespace, and `api/interface-v1.json` records its names
|
|
22
|
-
// as a machine-checked snapshot. `INTERFACE_VERSION` is the integer plugins bake at build time and
|
|
23
|
-
// compare against the value the base they loaded at runtime reports — it is the one value here whose
|
|
24
|
-
// job is the RUNTIME interface gate rather than a caller's API, so it belongs on `.`.
|
|
21
|
+
// The compatibility gate (rules / probes / verdict / report / post-registration check). It used to
|
|
22
|
+
// be the separate `@avantf/dsh-compat` package, provisioned into the framework's managed root; it
|
|
23
|
+
// lives in THIS package now and its composition-layer members are on `.` — a plugin that loaded the
|
|
24
|
+
// base through the inlined bootstrap already holds the gate, with no second import path. The
|
|
25
|
+
// INDIVIDUAL probes (`floorOf` / `checkServices` / `probeToolsRegistry` …) are composition pieces of
|
|
26
|
+
// `gatherEvidence` and moved to `./internal` in v3.
|
|
27
|
+
export { BUILD_VERSIONS_FILE, COMPAT_PREFIX, compatReport, gatherEvidence, provision, readBuildVersions, readDeclaredVersions, readRuntimeVersions, registerMegaphone, schemaNamesFrom, toolProbeDeclaration, verdictOf, verifyRegisteredFaces, } from './compat.js';
|
|
28
|
+
// The shared KIT: pure, DSH-free helpers (prompt files, family paths, well-formed text). They are
|
|
29
|
+
// part of THIS package on purpose — fixing or extending a shared helper must be possible with one
|
|
30
|
+
// base release, without rebuilding or republishing any plugin. Plugins therefore never inline this
|
|
31
|
+
// code: they load the base at startup and take these capabilities from it at runtime.
|
|
25
32
|
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
33
|
+
// Generation v3 moved the members with no runtime consumer off `.`: `createPluginLogger` (both trees
|
|
34
|
+
// use their own logger, which must exist before the base is resolved) and the Typert symbol kit
|
|
35
|
+
// (`strictCodec` / `endpointId` / `fieldSymbol` / `resultSymbol`), which both trees keep as local
|
|
36
|
+
// two-line mirrors because the Remote/wire faces are assembled at module load. Both live on
|
|
37
|
+
// `./internal` now.
|
|
38
|
+
export { expandHome, familyHome, familyModelsDir, familyToolsDir, resolveDataHome } from './kit/family.js';
|
|
39
|
+
export { PromptFiles } from './kit/prompt_files.js';
|
|
40
|
+
export { wellFormedDeep, wellFormedText } from './kit/wellformed.js';
|
|
41
|
+
// The INTERFACE TYPE: the named, frozen surface of this `.` entry. Plugins hold ONE of these names
|
|
42
|
+
// instead of the whole `typeof import(...)` namespace, and `api/interface-vN.json` records the current
|
|
43
|
+
// generation's names as a machine-checked snapshot. `INTERFACE_VERSION` is the integer plugins bake at
|
|
44
|
+
// build time and compare against the value the base they loaded at runtime reports — it is the one
|
|
45
|
+
// value here whose job is the RUNTIME interface gate rather than a caller's API, so it belongs on `.`.
|
|
46
|
+
//
|
|
47
|
+
// v1/v2 stay exported as their generations' type records: a caller compiled against them keeps a
|
|
48
|
+
// name. v3 is the first generation that is NOT `extends` its predecessor — it PRUNES the zero-consumer
|
|
49
|
+
// members to `./internal` (INTERFACE.md §9); the proof that this lost nothing is
|
|
50
|
+
// `VALUE_NAMES_V3 ∪ PRUNED_VALUE_NAMES === VALUE_NAMES_V2` plus the cross-tree zero-consumer check in
|
|
51
|
+
// `test/public-surface.spec.ts`.
|
|
29
52
|
export { INTERFACE_VERSION } from './interface.js';
|
|
30
53
|
// The runtime interface gate: the verdict function the plugins call with the generation they baked,
|
|
31
54
|
// and the ONE reader of a plugin's `lib/interface-version.json`. They live here rather than in each
|
|
32
|
-
// plugin so their semantics (
|
|
55
|
+
// plugin so their semantics (asymmetric, guarded, total) are fixable with one base release; the
|
|
33
56
|
// plugins keep only the consumption and the degrade decision.
|
|
34
57
|
export { checkInterface, readInterfaceRequirement } from './interface_gate.js';
|
|
35
58
|
//# sourceMappingURL=index.js.map
|