release-skill 0.9.25 → 0.9.27
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/.claude-plugin/plugin.json +1 -1
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.cursor-plugin/plugin.json +1 -1
- package/.kimi-plugin/plugin.json +1 -1
- package/.qoder-plugin/plugin.json +1 -1
- package/CHANGELOG.md +50 -0
- package/INSTALL.md +2 -2
- package/INSTALL.zh-CN.md +2 -2
- package/README.md +16 -15
- package/README.zh-CN.md +18 -16
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +14 -6
- package/adapters/claude/skills/release-help/SKILL.md +7 -5
- package/adapters/claude/skills/release-prepare/SKILL.md +2 -2
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +14 -6
- package/adapters/codex/skills/release-help/SKILL.md +7 -5
- package/adapters/codex/skills/release-prepare/SKILL.md +2 -2
- package/adapters/cursor/.cursor-plugin/plugin.json +1 -1
- package/adapters/cursor/bin/release-skill.bundle.mjs +14 -6
- package/adapters/cursor/skills/release-help/SKILL.md +7 -5
- package/adapters/cursor/skills/release-prepare/SKILL.md +2 -2
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +14 -6
- package/adapters/kimi/skills/release-help/SKILL.md +7 -5
- package/adapters/kimi/skills/release-prepare/SKILL.md +2 -2
- package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
- package/adapters/qoder/bin/release-skill.bundle.mjs +14 -6
- package/adapters/qoder/skills/release-help/SKILL.md +7 -5
- package/adapters/qoder/skills/release-prepare/SKILL.md +2 -2
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +14 -6
- package/adapters/workbuddy/skills/release-help/SKILL.md +7 -5
- package/adapters/workbuddy/skills/release-prepare/SKILL.md +2 -2
- package/bin/release-skill.bundle.mjs +14 -6
- package/package.json +1 -1
- package/platform-manifest.json +4 -4
- package/skills/release-help/SKILL.md +7 -5
- package/skills/release-prepare/SKILL.md +2 -2
- package/skills-src/release-help/SKILL.md +7 -5
- package/skills-src/release-prepare/SKILL.md +2 -2
- package/src/commands/post-release-local.mjs +14 -4
|
@@ -38,15 +38,17 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
38
38
|
|
|
39
39
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
40
40
|
|
|
41
|
-
## 0.9.
|
|
41
|
+
## 0.9.27 能力与证据边界
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
冻结后,发布流程(publish、reconcile、verify、distribute)不再接受 `--unit` 参数,仅以 `plan.units` 为唯一有效范围。
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
每个单元必须声明 `previousPublicBaseline`:只有确认没有前序公开版本时,才使用 `none`;否则必须提供 `bound`,并包含 `repo/ref/commit` 信息。`none` 不绕过 publish 阶段的唯一性预检。
|
|
50
|
+
|
|
51
|
+
Hook 缓存 v2 仅复用绝对路径,或已通过真实 cwd 核验的 cwd-relative 可执行文件身份;若依赖裸 PATH、PATHEXT、Windows 环境或观察不可用,将触发冷执行并失败关闭。稳定隔离安装树仅在宿主命令退出、目录隔离且扫描期间无并发写入时记录;附加链接仅记录,不跟随;声明载荷中出现 symlink 将导致失败关闭。
|
|
50
52
|
|
|
51
53
|
## 最短路径
|
|
52
54
|
|
|
@@ -21,7 +21,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
21
21
|
|
|
22
22
|
运行项目构建/测试 hook,生成公开快照并扫描泄漏,冻结不可变发布计划。prepare 自身不调用发布 adapter,但会执行用户配置的 hook。
|
|
23
23
|
|
|
24
|
-
0.9.4
|
|
24
|
+
自 0.9.4 起,多发布单元项目可在计划冻结前显式指定本轮发布范围。重复传入 `--unit <id>` 可选择多个单元;未传入该参数时,默认选择全部单元。显式选择只跳过延期单元的单元级工作;完整配置校验、生成物新鲜度检查及顶层 Hook 仍全部执行。冻结后,`plan.units` 是唯一范围权威,publish、reconcile、verify 和 distribute 不再接受单元选择。
|
|
25
25
|
|
|
26
26
|
0.9.3 引入的 Hook cache v2 继续只复用有完整身份和输入证据的成功 Hook 结果。裸 PATH、PATHEXT、Windows、TTL、损坏记录或 Foundation 观察不可用时,缓存保持失败关闭,Hook 仍按完整路径冷执行;该机制不改变 prepare 的计划、批准和发布权威。
|
|
27
27
|
|
|
@@ -39,7 +39,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
39
39
|
|
|
40
40
|
**发布文档新鲜度门**: 配置了 `releaseDocuments` 的单元在 hook 授权门前先执行同一只读规划器:`clean` 继续;`changes` 抛 `RELEASE_DOCS_STALE`,详情列出相对路径、语种、`refreshDigest` 和精确演练/写入参数数组。prepare 只检查、不写工作树。正式 prepare 前先运行只读演练;有变化时向用户展示文件/语种/版本/`refreshDigest`,只有在用户明确授权"本地发布文档写入"后,才执行带 `--write --confirm-refresh <refreshDigest> --ack-local-document-write` 三项绑定的写入,随后运行聚焦校验,要求维护者审阅并提交刷新结果,再重新 prepare。该授权不扩展为 hook、提交、push 或 publish 授权。
|
|
41
41
|
|
|
42
|
-
**显式发布范围**:
|
|
42
|
+
**显式发布范围**: 只有用户已经指出本轮要发布哪些单元时,才逐个传入 `--unit`;不得根据失败自动排除单元。选中的单元包含 `publicSourceAuthorityReceipt` 的 coordinator 或 subject 时,必须同时包含收据声明的完整单元闭包。缺少单元时,按命令返回的精确 argv 重新选择,不自动扩选。成功后展示 `releaseScope.selectedUnitIds`、`releaseScope.deferredUnitIds` 和批准摘要。延期仅表示没有进入本轮计划,不表示通过或失败。
|
|
43
43
|
|
|
44
44
|
## 正向执行路径
|
|
45
45
|
|
|
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
|
|
|
9
9
|
// Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
|
|
10
10
|
const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
|
|
11
11
|
// Package identity injected at build time — closure-independent --version probe.
|
|
12
|
-
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.
|
|
12
|
+
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -135457,6 +135457,7 @@ function hostEnvironment(host, { kimiHome } = {}) {
|
|
|
135457
135457
|
if (host === "workbuddy") {
|
|
135458
135458
|
env.CODEBUDDY_CONFIG_DIR = join29(env.HOME, ".workbuddy");
|
|
135459
135459
|
env.WORKBUDDY_CONFIG_DIR = join29(env.HOME, ".workbuddy");
|
|
135460
|
+
env.CODEBUDDY_FORCE_LITE_WB_BUNDLE = "1";
|
|
135460
135461
|
}
|
|
135461
135462
|
if (host === "kimi" && kimiHome) env.KIMI_CODE_HOME = kimiHome;
|
|
135462
135463
|
return env;
|
|
@@ -136644,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
|
|
|
136644
136645
|
const pluginRoot = await resolveContained(managedRoot, target.plugin);
|
|
136645
136646
|
const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
|
|
136646
136647
|
if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
|
|
136647
|
-
|
|
136648
|
-
|
|
136649
|
-
|
|
136650
|
-
|
|
136648
|
+
let manifestText;
|
|
136649
|
+
let manifestLabel = "Kimi installed package manifest";
|
|
136650
|
+
try {
|
|
136651
|
+
manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
|
|
136652
|
+
} catch (error) {
|
|
136653
|
+
const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
|
|
136654
|
+
if (!missing) throw error;
|
|
136655
|
+
manifestLabel = "Kimi installed plugin manifest";
|
|
136656
|
+
manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
|
|
136657
|
+
}
|
|
136658
|
+
const packageJson = parseJson2(manifestText, manifestLabel);
|
|
136651
136659
|
const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
|
|
136652
136660
|
const revision = entry.github.installedSha;
|
|
136653
136661
|
let gitHeadExact = true;
|
|
@@ -37,15 +37,17 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
37
37
|
|
|
38
38
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
39
39
|
|
|
40
|
-
## 0.9.
|
|
40
|
+
## 0.9.27 能力与证据边界
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
冻结后,发布流程(publish、reconcile、verify、distribute)不再接受 `--unit` 参数,仅以 `plan.units` 为唯一有效范围。
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
每个单元必须声明 `previousPublicBaseline`:只有确认没有前序公开版本时,才使用 `none`;否则必须提供 `bound`,并包含 `repo/ref/commit` 信息。`none` 不绕过 publish 阶段的唯一性预检。
|
|
49
|
+
|
|
50
|
+
Hook 缓存 v2 仅复用绝对路径,或已通过真实 cwd 核验的 cwd-relative 可执行文件身份;若依赖裸 PATH、PATHEXT、Windows 环境或观察不可用,将触发冷执行并失败关闭。稳定隔离安装树仅在宿主命令退出、目录隔离且扫描期间无并发写入时记录;附加链接仅记录,不跟随;声明载荷中出现 symlink 将导致失败关闭。
|
|
49
51
|
|
|
50
52
|
## 最短路径
|
|
51
53
|
|
|
@@ -20,7 +20,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
20
20
|
|
|
21
21
|
运行项目构建/测试 hook,生成公开快照并扫描泄漏,冻结不可变发布计划。prepare 自身不调用发布 adapter,但会执行用户配置的 hook。
|
|
22
22
|
|
|
23
|
-
0.9.4
|
|
23
|
+
自 0.9.4 起,多发布单元项目可在计划冻结前显式指定本轮发布范围。重复传入 `--unit <id>` 可选择多个单元;未传入该参数时,默认选择全部单元。显式选择只跳过延期单元的单元级工作;完整配置校验、生成物新鲜度检查及顶层 Hook 仍全部执行。冻结后,`plan.units` 是唯一范围权威,publish、reconcile、verify 和 distribute 不再接受单元选择。
|
|
24
24
|
|
|
25
25
|
0.9.3 引入的 Hook cache v2 继续只复用有完整身份和输入证据的成功 Hook 结果。裸 PATH、PATHEXT、Windows、TTL、损坏记录或 Foundation 观察不可用时,缓存保持失败关闭,Hook 仍按完整路径冷执行;该机制不改变 prepare 的计划、批准和发布权威。
|
|
26
26
|
|
|
@@ -38,7 +38,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
38
38
|
|
|
39
39
|
**发布文档新鲜度门**: 配置了 `releaseDocuments` 的单元在 hook 授权门前先执行同一只读规划器:`clean` 继续;`changes` 抛 `RELEASE_DOCS_STALE`,详情列出相对路径、语种、`refreshDigest` 和精确演练/写入参数数组。prepare 只检查、不写工作树。正式 prepare 前先运行只读演练;有变化时向用户展示文件/语种/版本/`refreshDigest`,只有在用户明确授权"本地发布文档写入"后,才执行带 `--write --confirm-refresh <refreshDigest> --ack-local-document-write` 三项绑定的写入,随后运行聚焦校验,要求维护者审阅并提交刷新结果,再重新 prepare。该授权不扩展为 hook、提交、push 或 publish 授权。
|
|
40
40
|
|
|
41
|
-
**显式发布范围**:
|
|
41
|
+
**显式发布范围**: 只有用户已经指出本轮要发布哪些单元时,才逐个传入 `--unit`;不得根据失败自动排除单元。选中的单元包含 `publicSourceAuthorityReceipt` 的 coordinator 或 subject 时,必须同时包含收据声明的完整单元闭包。缺少单元时,按命令返回的精确 argv 重新选择,不自动扩选。成功后展示 `releaseScope.selectedUnitIds`、`releaseScope.deferredUnitIds` 和批准摘要。延期仅表示没有进入本轮计划,不表示通过或失败。
|
|
42
42
|
|
|
43
43
|
## 正向执行路径
|
|
44
44
|
|
|
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
|
|
|
9
9
|
// Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
|
|
10
10
|
const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
|
|
11
11
|
// Package identity injected at build time — closure-independent --version probe.
|
|
12
|
-
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.
|
|
12
|
+
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -135457,6 +135457,7 @@ function hostEnvironment(host, { kimiHome } = {}) {
|
|
|
135457
135457
|
if (host === "workbuddy") {
|
|
135458
135458
|
env.CODEBUDDY_CONFIG_DIR = join29(env.HOME, ".workbuddy");
|
|
135459
135459
|
env.WORKBUDDY_CONFIG_DIR = join29(env.HOME, ".workbuddy");
|
|
135460
|
+
env.CODEBUDDY_FORCE_LITE_WB_BUNDLE = "1";
|
|
135460
135461
|
}
|
|
135461
135462
|
if (host === "kimi" && kimiHome) env.KIMI_CODE_HOME = kimiHome;
|
|
135462
135463
|
return env;
|
|
@@ -136644,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
|
|
|
136644
136645
|
const pluginRoot = await resolveContained(managedRoot, target.plugin);
|
|
136645
136646
|
const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
|
|
136646
136647
|
if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
|
|
136647
|
-
|
|
136648
|
-
|
|
136649
|
-
|
|
136650
|
-
|
|
136648
|
+
let manifestText;
|
|
136649
|
+
let manifestLabel = "Kimi installed package manifest";
|
|
136650
|
+
try {
|
|
136651
|
+
manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
|
|
136652
|
+
} catch (error) {
|
|
136653
|
+
const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
|
|
136654
|
+
if (!missing) throw error;
|
|
136655
|
+
manifestLabel = "Kimi installed plugin manifest";
|
|
136656
|
+
manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
|
|
136657
|
+
}
|
|
136658
|
+
const packageJson = parseJson2(manifestText, manifestLabel);
|
|
136651
136659
|
const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
|
|
136652
136660
|
const revision = entry.github.installedSha;
|
|
136653
136661
|
let gitHeadExact = true;
|
|
@@ -37,15 +37,17 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
37
37
|
|
|
38
38
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
39
39
|
|
|
40
|
-
## 0.9.
|
|
40
|
+
## 0.9.27 能力与证据边界
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
冻结后,发布流程(publish、reconcile、verify、distribute)不再接受 `--unit` 参数,仅以 `plan.units` 为唯一有效范围。
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
每个单元必须声明 `previousPublicBaseline`:只有确认没有前序公开版本时,才使用 `none`;否则必须提供 `bound`,并包含 `repo/ref/commit` 信息。`none` 不绕过 publish 阶段的唯一性预检。
|
|
49
|
+
|
|
50
|
+
Hook 缓存 v2 仅复用绝对路径,或已通过真实 cwd 核验的 cwd-relative 可执行文件身份;若依赖裸 PATH、PATHEXT、Windows 环境或观察不可用,将触发冷执行并失败关闭。稳定隔离安装树仅在宿主命令退出、目录隔离且扫描期间无并发写入时记录;附加链接仅记录,不跟随;声明载荷中出现 symlink 将导致失败关闭。
|
|
49
51
|
|
|
50
52
|
## 最短路径
|
|
51
53
|
|
|
@@ -20,7 +20,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
20
20
|
|
|
21
21
|
运行项目构建/测试 hook,生成公开快照并扫描泄漏,冻结不可变发布计划。prepare 自身不调用发布 adapter,但会执行用户配置的 hook。
|
|
22
22
|
|
|
23
|
-
0.9.4
|
|
23
|
+
自 0.9.4 起,多发布单元项目可在计划冻结前显式指定本轮发布范围。重复传入 `--unit <id>` 可选择多个单元;未传入该参数时,默认选择全部单元。显式选择只跳过延期单元的单元级工作;完整配置校验、生成物新鲜度检查及顶层 Hook 仍全部执行。冻结后,`plan.units` 是唯一范围权威,publish、reconcile、verify 和 distribute 不再接受单元选择。
|
|
24
24
|
|
|
25
25
|
0.9.3 引入的 Hook cache v2 继续只复用有完整身份和输入证据的成功 Hook 结果。裸 PATH、PATHEXT、Windows、TTL、损坏记录或 Foundation 观察不可用时,缓存保持失败关闭,Hook 仍按完整路径冷执行;该机制不改变 prepare 的计划、批准和发布权威。
|
|
26
26
|
|
|
@@ -38,7 +38,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
38
38
|
|
|
39
39
|
**发布文档新鲜度门**: 配置了 `releaseDocuments` 的单元在 hook 授权门前先执行同一只读规划器:`clean` 继续;`changes` 抛 `RELEASE_DOCS_STALE`,详情列出相对路径、语种、`refreshDigest` 和精确演练/写入参数数组。prepare 只检查、不写工作树。正式 prepare 前先运行只读演练;有变化时向用户展示文件/语种/版本/`refreshDigest`,只有在用户明确授权"本地发布文档写入"后,才执行带 `--write --confirm-refresh <refreshDigest> --ack-local-document-write` 三项绑定的写入,随后运行聚焦校验,要求维护者审阅并提交刷新结果,再重新 prepare。该授权不扩展为 hook、提交、push 或 publish 授权。
|
|
40
40
|
|
|
41
|
-
**显式发布范围**:
|
|
41
|
+
**显式发布范围**: 只有用户已经指出本轮要发布哪些单元时,才逐个传入 `--unit`;不得根据失败自动排除单元。选中的单元包含 `publicSourceAuthorityReceipt` 的 coordinator 或 subject 时,必须同时包含收据声明的完整单元闭包。缺少单元时,按命令返回的精确 argv 重新选择,不自动扩选。成功后展示 `releaseScope.selectedUnitIds`、`releaseScope.deferredUnitIds` 和批准摘要。延期仅表示没有进入本轮计划,不表示通过或失败。
|
|
42
42
|
|
|
43
43
|
## 正向执行路径
|
|
44
44
|
|
|
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
|
|
|
9
9
|
// Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
|
|
10
10
|
const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
|
|
11
11
|
// Package identity injected at build time — closure-independent --version probe.
|
|
12
|
-
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.
|
|
12
|
+
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -135457,6 +135457,7 @@ function hostEnvironment(host, { kimiHome } = {}) {
|
|
|
135457
135457
|
if (host === "workbuddy") {
|
|
135458
135458
|
env.CODEBUDDY_CONFIG_DIR = join29(env.HOME, ".workbuddy");
|
|
135459
135459
|
env.WORKBUDDY_CONFIG_DIR = join29(env.HOME, ".workbuddy");
|
|
135460
|
+
env.CODEBUDDY_FORCE_LITE_WB_BUNDLE = "1";
|
|
135460
135461
|
}
|
|
135461
135462
|
if (host === "kimi" && kimiHome) env.KIMI_CODE_HOME = kimiHome;
|
|
135462
135463
|
return env;
|
|
@@ -136644,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
|
|
|
136644
136645
|
const pluginRoot = await resolveContained(managedRoot, target.plugin);
|
|
136645
136646
|
const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
|
|
136646
136647
|
if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
|
|
136647
|
-
|
|
136648
|
-
|
|
136649
|
-
|
|
136650
|
-
|
|
136648
|
+
let manifestText;
|
|
136649
|
+
let manifestLabel = "Kimi installed package manifest";
|
|
136650
|
+
try {
|
|
136651
|
+
manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
|
|
136652
|
+
} catch (error) {
|
|
136653
|
+
const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
|
|
136654
|
+
if (!missing) throw error;
|
|
136655
|
+
manifestLabel = "Kimi installed plugin manifest";
|
|
136656
|
+
manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
|
|
136657
|
+
}
|
|
136658
|
+
const packageJson = parseJson2(manifestText, manifestLabel);
|
|
136651
136659
|
const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
|
|
136652
136660
|
const revision = entry.github.installedSha;
|
|
136653
136661
|
let gitHeadExact = true;
|
|
@@ -29,15 +29,17 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
29
29
|
|
|
30
30
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
31
31
|
|
|
32
|
-
## 0.9.
|
|
32
|
+
## 0.9.27 能力与证据边界
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
冻结后,发布流程(publish、reconcile、verify、distribute)不再接受 `--unit` 参数,仅以 `plan.units` 为唯一有效范围。
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
每个单元必须声明 `previousPublicBaseline`:只有确认没有前序公开版本时,才使用 `none`;否则必须提供 `bound`,并包含 `repo/ref/commit` 信息。`none` 不绕过 publish 阶段的唯一性预检。
|
|
41
|
+
|
|
42
|
+
Hook 缓存 v2 仅复用绝对路径,或已通过真实 cwd 核验的 cwd-relative 可执行文件身份;若依赖裸 PATH、PATHEXT、Windows 环境或观察不可用,将触发冷执行并失败关闭。稳定隔离安装树仅在宿主命令退出、目录隔离且扫描期间无并发写入时记录;附加链接仅记录,不跟随;声明载荷中出现 symlink 将导致失败关闭。
|
|
41
43
|
|
|
42
44
|
## 最短路径
|
|
43
45
|
|
|
@@ -13,7 +13,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
13
13
|
|
|
14
14
|
运行项目构建/测试 hook,生成公开快照并扫描泄漏,冻结不可变发布计划。prepare 自身不调用发布 adapter,但会执行用户配置的 hook。
|
|
15
15
|
|
|
16
|
-
0.9.4
|
|
16
|
+
自 0.9.4 起,多发布单元项目可在计划冻结前显式指定本轮发布范围。重复传入 `--unit <id>` 可选择多个单元;未传入该参数时,默认选择全部单元。显式选择只跳过延期单元的单元级工作;完整配置校验、生成物新鲜度检查及顶层 Hook 仍全部执行。冻结后,`plan.units` 是唯一范围权威,publish、reconcile、verify 和 distribute 不再接受单元选择。
|
|
17
17
|
|
|
18
18
|
0.9.3 引入的 Hook cache v2 继续只复用有完整身份和输入证据的成功 Hook 结果。裸 PATH、PATHEXT、Windows、TTL、损坏记录或 Foundation 观察不可用时,缓存保持失败关闭,Hook 仍按完整路径冷执行;该机制不改变 prepare 的计划、批准和发布权威。
|
|
19
19
|
|
|
@@ -31,7 +31,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
31
31
|
|
|
32
32
|
**发布文档新鲜度门**: 配置了 `releaseDocuments` 的单元在 hook 授权门前先执行同一只读规划器:`clean` 继续;`changes` 抛 `RELEASE_DOCS_STALE`,详情列出相对路径、语种、`refreshDigest` 和精确演练/写入参数数组。prepare 只检查、不写工作树。正式 prepare 前先运行只读演练;有变化时向用户展示文件/语种/版本/`refreshDigest`,只有在用户明确授权"本地发布文档写入"后,才执行带 `--write --confirm-refresh <refreshDigest> --ack-local-document-write` 三项绑定的写入,随后运行聚焦校验,要求维护者审阅并提交刷新结果,再重新 prepare。该授权不扩展为 hook、提交、push 或 publish 授权。
|
|
33
33
|
|
|
34
|
-
**显式发布范围**:
|
|
34
|
+
**显式发布范围**: 只有用户已经指出本轮要发布哪些单元时,才逐个传入 `--unit`;不得根据失败自动排除单元。选中的单元包含 `publicSourceAuthorityReceipt` 的 coordinator 或 subject 时,必须同时包含收据声明的完整单元闭包。缺少单元时,按命令返回的精确 argv 重新选择,不自动扩选。成功后展示 `releaseScope.selectedUnitIds`、`releaseScope.deferredUnitIds` 和批准摘要。延期仅表示没有进入本轮计划,不表示通过或失败。
|
|
35
35
|
|
|
36
36
|
## 正向执行路径
|
|
37
37
|
|
|
@@ -9,9 +9,9 @@ const __bundlePkgRoot = __bundleResolve(__bundleDirname(__bundleFileURLToPath(im
|
|
|
9
9
|
// Provide a real require() for CJS packages bundled into ESM (e.g. yaml, ajv).
|
|
10
10
|
const __bundleRealRequire = __bundleCreateRequire(import.meta.url);
|
|
11
11
|
// Package identity injected at build time — closure-independent --version probe.
|
|
12
|
-
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.
|
|
12
|
+
const __bundlePkg = Object.freeze({"name":"release-skill","version":"0.9.27"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "25d576aeb1a7c01598399f326190124dbdd91b562e32ad4d9a532e3399654151";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -135457,6 +135457,7 @@ function hostEnvironment(host, { kimiHome } = {}) {
|
|
|
135457
135457
|
if (host === "workbuddy") {
|
|
135458
135458
|
env.CODEBUDDY_CONFIG_DIR = join29(env.HOME, ".workbuddy");
|
|
135459
135459
|
env.WORKBUDDY_CONFIG_DIR = join29(env.HOME, ".workbuddy");
|
|
135460
|
+
env.CODEBUDDY_FORCE_LITE_WB_BUNDLE = "1";
|
|
135460
135461
|
}
|
|
135461
135462
|
if (host === "kimi" && kimiHome) env.KIMI_CODE_HOME = kimiHome;
|
|
135462
135463
|
return env;
|
|
@@ -136644,10 +136645,17 @@ async function observeKimiTarget(target, kimiHome, run6) {
|
|
|
136644
136645
|
const pluginRoot = await resolveContained(managedRoot, target.plugin);
|
|
136645
136646
|
const declaredRoot = await resolveContained(managedRoot, relative28(managedRoot, entry.root));
|
|
136646
136647
|
if (declaredRoot !== pluginRoot) throw new Error("Kimi installed plugin root does not match its managed root");
|
|
136647
|
-
|
|
136648
|
-
|
|
136649
|
-
|
|
136650
|
-
|
|
136648
|
+
let manifestText;
|
|
136649
|
+
let manifestLabel = "Kimi installed package manifest";
|
|
136650
|
+
try {
|
|
136651
|
+
manifestText = await readFileContained(pluginRoot, "package.json", { encoding: "utf8" });
|
|
136652
|
+
} catch (error) {
|
|
136653
|
+
const missing = error?.code === "ENOENT" || error?.details?.causeCode === "ENOENT" || error?.details?.kind === "missing-resource";
|
|
136654
|
+
if (!missing) throw error;
|
|
136655
|
+
manifestLabel = "Kimi installed plugin manifest";
|
|
136656
|
+
manifestText = await readFileContained(pluginRoot, "kimi.plugin.json", { encoding: "utf8" });
|
|
136657
|
+
}
|
|
136658
|
+
const packageJson = parseJson2(manifestText, manifestLabel);
|
|
136651
136659
|
const refName = entry.github.ref?.kind === "tag" ? entry.github.ref.value : void 0;
|
|
136652
136660
|
const revision = entry.github.installedSha;
|
|
136653
136661
|
let gitHeadExact = true;
|
package/package.json
CHANGED
package/platform-manifest.json
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"platformId": "release-skill",
|
|
4
4
|
"platformName": "release-skill Plugin Platform",
|
|
5
|
-
"version": "0.9.
|
|
5
|
+
"version": "0.9.27",
|
|
6
6
|
"logicalRoot": "skills-src/",
|
|
7
|
-
"logicalRootDigest": "
|
|
8
|
-
"projectionDigest": "
|
|
9
|
-
"projectionId": "release-skill:platform:0.9.
|
|
7
|
+
"logicalRootDigest": "0fa3132f1cabb5aa580e9984ee85a1762824ffd147bc91262ad9b60ad7f3b7a1",
|
|
8
|
+
"projectionDigest": "a47de2ca6763aba458a767d21d28fdab2581dcb0cd422593529056d34d052763",
|
|
9
|
+
"projectionId": "release-skill:platform:0.9.27",
|
|
10
10
|
"manifestRequired": true,
|
|
11
11
|
"projectionSources": {
|
|
12
12
|
"skills-src-root": {
|
|
@@ -29,15 +29,17 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
29
29
|
|
|
30
30
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
31
31
|
|
|
32
|
-
## 0.9.
|
|
32
|
+
## 0.9.27 能力与证据边界
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
冻结后,发布流程(publish、reconcile、verify、distribute)不再接受 `--unit` 参数,仅以 `plan.units` 为唯一有效范围。
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
每个单元必须声明 `previousPublicBaseline`:只有确认没有前序公开版本时,才使用 `none`;否则必须提供 `bound`,并包含 `repo/ref/commit` 信息。`none` 不绕过 publish 阶段的唯一性预检。
|
|
41
|
+
|
|
42
|
+
Hook 缓存 v2 仅复用绝对路径,或已通过真实 cwd 核验的 cwd-relative 可执行文件身份;若依赖裸 PATH、PATHEXT、Windows 环境或观察不可用,将触发冷执行并失败关闭。稳定隔离安装树仅在宿主命令退出、目录隔离且扫描期间无并发写入时记录;附加链接仅记录,不跟随;声明载荷中出现 symlink 将导致失败关闭。
|
|
41
43
|
|
|
42
44
|
## 最短路径
|
|
43
45
|
|
|
@@ -13,7 +13,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
13
13
|
|
|
14
14
|
运行项目构建/测试 hook,生成公开快照并扫描泄漏,冻结不可变发布计划。prepare 自身不调用发布 adapter,但会执行用户配置的 hook。
|
|
15
15
|
|
|
16
|
-
0.9.4
|
|
16
|
+
自 0.9.4 起,多发布单元项目可在计划冻结前显式指定本轮发布范围。重复传入 `--unit <id>` 可选择多个单元;未传入该参数时,默认选择全部单元。显式选择只跳过延期单元的单元级工作;完整配置校验、生成物新鲜度检查及顶层 Hook 仍全部执行。冻结后,`plan.units` 是唯一范围权威,publish、reconcile、verify 和 distribute 不再接受单元选择。
|
|
17
17
|
|
|
18
18
|
0.9.3 引入的 Hook cache v2 继续只复用有完整身份和输入证据的成功 Hook 结果。裸 PATH、PATHEXT、Windows、TTL、损坏记录或 Foundation 观察不可用时,缓存保持失败关闭,Hook 仍按完整路径冷执行;该机制不改变 prepare 的计划、批准和发布权威。
|
|
19
19
|
|
|
@@ -31,7 +31,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
31
31
|
|
|
32
32
|
**发布文档新鲜度门**: 配置了 `releaseDocuments` 的单元在 hook 授权门前先执行同一只读规划器:`clean` 继续;`changes` 抛 `RELEASE_DOCS_STALE`,详情列出相对路径、语种、`refreshDigest` 和精确演练/写入参数数组。prepare 只检查、不写工作树。正式 prepare 前先运行只读演练;有变化时向用户展示文件/语种/版本/`refreshDigest`,只有在用户明确授权"本地发布文档写入"后,才执行带 `--write --confirm-refresh <refreshDigest> --ack-local-document-write` 三项绑定的写入,随后运行聚焦校验,要求维护者审阅并提交刷新结果,再重新 prepare。该授权不扩展为 hook、提交、push 或 publish 授权。
|
|
33
33
|
|
|
34
|
-
**显式发布范围**:
|
|
34
|
+
**显式发布范围**: 只有用户已经指出本轮要发布哪些单元时,才逐个传入 `--unit`;不得根据失败自动排除单元。选中的单元包含 `publicSourceAuthorityReceipt` 的 coordinator 或 subject 时,必须同时包含收据声明的完整单元闭包。缺少单元时,按命令返回的精确 argv 重新选择,不自动扩选。成功后展示 `releaseScope.selectedUnitIds`、`releaseScope.deferredUnitIds` 和批准摘要。延期仅表示没有进入本轮计划,不表示通过或失败。
|
|
35
35
|
|
|
36
36
|
## 正向执行路径
|
|
37
37
|
|
|
@@ -29,15 +29,17 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
29
29
|
|
|
30
30
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
31
31
|
|
|
32
|
-
## 0.9.
|
|
32
|
+
## 0.9.27 能力与证据边界
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
release-skill 0.9.27 精确依赖 Foundation 0.22.0 的公开包根 API。本版修复 Kimi 本机宿主观察:受管插件根只有 kimi.plugin.json、没有 package.json 时不再失败。本节说明当前版本的能力范围与证据边界;批准、发布和验证状态以对应计划、批准及执行记录为准,不能由本说明推断。
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
在冻结前,`prepare` 或新建 `ship` 状态时可重复传入 `--unit <id>`;未传入则默认选择全部单元。延期单元不进入发布计划,亦不获得发布状态。完整配置、生成物新鲜度检查及顶层 Hook 仍作用于全项目范围。`publicSourceAuthorityReceipt` 的 coordinator 与全部 subjects 必须共同选择。
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
冻结后,发布流程(publish、reconcile、verify、distribute)不再接受 `--unit` 参数,仅以 `plan.units` 为唯一有效范围。
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
每个单元必须声明 `previousPublicBaseline`:只有确认没有前序公开版本时,才使用 `none`;否则必须提供 `bound`,并包含 `repo/ref/commit` 信息。`none` 不绕过 publish 阶段的唯一性预检。
|
|
41
|
+
|
|
42
|
+
Hook 缓存 v2 仅复用绝对路径,或已通过真实 cwd 核验的 cwd-relative 可执行文件身份;若依赖裸 PATH、PATHEXT、Windows 环境或观察不可用,将触发冷执行并失败关闭。稳定隔离安装树仅在宿主命令退出、目录隔离且扫描期间无并发写入时记录;附加链接仅记录,不跟随;声明载荷中出现 symlink 将导致失败关闭。
|
|
41
43
|
|
|
42
44
|
## 最短路径
|
|
43
45
|
|
|
@@ -13,7 +13,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
13
13
|
|
|
14
14
|
运行项目构建/测试 hook,生成公开快照并扫描泄漏,冻结不可变发布计划。prepare 自身不调用发布 adapter,但会执行用户配置的 hook。
|
|
15
15
|
|
|
16
|
-
0.9.4
|
|
16
|
+
自 0.9.4 起,多发布单元项目可在计划冻结前显式指定本轮发布范围。重复传入 `--unit <id>` 可选择多个单元;未传入该参数时,默认选择全部单元。显式选择只跳过延期单元的单元级工作;完整配置校验、生成物新鲜度检查及顶层 Hook 仍全部执行。冻结后,`plan.units` 是唯一范围权威,publish、reconcile、verify 和 distribute 不再接受单元选择。
|
|
17
17
|
|
|
18
18
|
0.9.3 引入的 Hook cache v2 继续只复用有完整身份和输入证据的成功 Hook 结果。裸 PATH、PATHEXT、Windows、TTL、损坏记录或 Foundation 观察不可用时,缓存保持失败关闭,Hook 仍按完整路径冷执行;该机制不改变 prepare 的计划、批准和发布权威。
|
|
19
19
|
|
|
@@ -31,7 +31,7 @@ description: Freeze an immutable release plan with local configuration, document
|
|
|
31
31
|
|
|
32
32
|
**发布文档新鲜度门**: 配置了 `releaseDocuments` 的单元在 hook 授权门前先执行同一只读规划器:`clean` 继续;`changes` 抛 `RELEASE_DOCS_STALE`,详情列出相对路径、语种、`refreshDigest` 和精确演练/写入参数数组。prepare 只检查、不写工作树。正式 prepare 前先运行只读演练;有变化时向用户展示文件/语种/版本/`refreshDigest`,只有在用户明确授权"本地发布文档写入"后,才执行带 `--write --confirm-refresh <refreshDigest> --ack-local-document-write` 三项绑定的写入,随后运行聚焦校验,要求维护者审阅并提交刷新结果,再重新 prepare。该授权不扩展为 hook、提交、push 或 publish 授权。
|
|
33
33
|
|
|
34
|
-
**显式发布范围**:
|
|
34
|
+
**显式发布范围**: 只有用户已经指出本轮要发布哪些单元时,才逐个传入 `--unit`;不得根据失败自动排除单元。选中的单元包含 `publicSourceAuthorityReceipt` 的 coordinator 或 subject 时,必须同时包含收据声明的完整单元闭包。缺少单元时,按命令返回的精确 argv 重新选择,不自动扩选。成功后展示 `releaseScope.selectedUnitIds`、`releaseScope.deferredUnitIds` 和批准摘要。延期仅表示没有进入本轮计划,不表示通过或失败。
|
|
35
35
|
|
|
36
36
|
## 正向执行路径
|
|
37
37
|
|
|
@@ -601,6 +601,7 @@ function hostEnvironment(host, { kimiHome } = {}) {
|
|
|
601
601
|
if (host === 'workbuddy') {
|
|
602
602
|
env.CODEBUDDY_CONFIG_DIR = join(env.HOME, '.workbuddy');
|
|
603
603
|
env.WORKBUDDY_CONFIG_DIR = join(env.HOME, '.workbuddy');
|
|
604
|
+
env.CODEBUDDY_FORCE_LITE_WB_BUNDLE = '1';
|
|
604
605
|
}
|
|
605
606
|
if (host === 'kimi' && kimiHome) env.KIMI_CODE_HOME = kimiHome;
|
|
606
607
|
return env;
|
|
@@ -1897,10 +1898,19 @@ async function observeKimiTarget(target, kimiHome, run) {
|
|
|
1897
1898
|
const pluginRoot = await resolveContained(managedRoot, target.plugin);
|
|
1898
1899
|
const declaredRoot = await resolveContained(managedRoot, relative(managedRoot, entry.root));
|
|
1899
1900
|
if (declaredRoot !== pluginRoot) throw new Error('Kimi installed plugin root does not match its managed root');
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1901
|
+
let manifestText;
|
|
1902
|
+
let manifestLabel = 'Kimi installed package manifest';
|
|
1903
|
+
try {
|
|
1904
|
+
manifestText = await readFileContained(pluginRoot, 'package.json', { encoding: 'utf8' });
|
|
1905
|
+
} catch (error) {
|
|
1906
|
+
const missing = error?.code === 'ENOENT'
|
|
1907
|
+
|| error?.details?.causeCode === 'ENOENT'
|
|
1908
|
+
|| error?.details?.kind === 'missing-resource';
|
|
1909
|
+
if (!missing) throw error;
|
|
1910
|
+
manifestLabel = 'Kimi installed plugin manifest';
|
|
1911
|
+
manifestText = await readFileContained(pluginRoot, 'kimi.plugin.json', { encoding: 'utf8' });
|
|
1912
|
+
}
|
|
1913
|
+
const packageJson = parseJson(manifestText, manifestLabel);
|
|
1904
1914
|
const refName = entry.github.ref?.kind === 'tag' ? entry.github.ref.value : undefined;
|
|
1905
1915
|
const revision = entry.github.installedSha;
|
|
1906
1916
|
let gitHeadExact = true;
|