release-skill 0.9.21 → 0.9.22
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 +26 -0
- package/INSTALL.md +2 -2
- package/INSTALL.zh-CN.md +2 -2
- package/README.md +12 -14
- package/README.zh-CN.md +12 -14
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +26 -11
- package/adapters/claude/skills/release-help/SKILL.md +2 -2
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +26 -11
- package/adapters/codex/skills/release-help/SKILL.md +2 -2
- package/adapters/cursor/.cursor-plugin/plugin.json +1 -1
- package/adapters/cursor/bin/release-skill.bundle.mjs +26 -11
- package/adapters/cursor/skills/release-help/SKILL.md +2 -2
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +26 -11
- package/adapters/kimi/skills/release-help/SKILL.md +2 -2
- package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
- package/adapters/qoder/bin/release-skill.bundle.mjs +26 -11
- package/adapters/qoder/skills/release-help/SKILL.md +2 -2
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +26 -11
- package/adapters/workbuddy/skills/release-help/SKILL.md +2 -2
- package/bin/release-skill.bundle.mjs +26 -11
- package/package.json +1 -1
- package/platform-manifest.json +4 -4
- package/skills/release-help/SKILL.md +2 -2
- package/skills-src/release-help/SKILL.md +2 -2
- package/src/commands/post-release-local.mjs +24 -13
|
@@ -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.22"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "45eaf443ea0ae412317287ca2fa661303666663c304c4691330b5ea1e700881d";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -135120,10 +135120,10 @@ function isCodeBuddyResidualEnvelope(error) {
|
|
|
135120
135120
|
return envelope?.ok === false && envelope.exitStatus === 124 && envelope.processStatus === "TERMINATED" && envelope.terminationReason === "child_exit" && envelope.watchdogReason === "residual_process_group" && evidence?.childExitCode === 0 && (evidence.childSignal === null || evidence.childSignal === void 0) && evidence.residualGroupCleanupCompleted === true && evidence.forcedKill === false && evidence.outputLimitExceeded === null && Array.isArray(signals) && signals.length === 1 && signal?.signal === "SIGTERM" && signal.requestedMode === "process_group" && signal.successfulMode === "process_group";
|
|
135121
135121
|
}
|
|
135122
135122
|
function isCodeBuddyReadCommand(target, command2, args2) {
|
|
135123
|
-
return target.host === "codebuddy" && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135123
|
+
return (target.host === "codebuddy" || target.host === "workbuddy") && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135124
135124
|
}
|
|
135125
135125
|
function isCodeBuddyWriteCommand(target, command2, args2, kind) {
|
|
135126
|
-
if (target.host
|
|
135126
|
+
if (!["codebuddy", "workbuddy"].includes(target.host) || !["codebuddy", "cbc", CODEBUDDY_MACOS_PATH].includes(command2)) return false;
|
|
135127
135127
|
const expected = kind === "marketplace-update" ? ["plugin", "marketplace", "update", target.marketplace] : ["plugin", "update", `${target.plugin}@${target.marketplace}`, "--scope", "user"];
|
|
135128
135128
|
return Array.isArray(args2) && args2.length === expected.length && args2.every((value, index) => value === expected[index]);
|
|
135129
135129
|
}
|
|
@@ -135141,14 +135141,14 @@ async function runCodeBuddyRead(target, command2, args2, label, env, run6) {
|
|
|
135141
135141
|
};
|
|
135142
135142
|
}
|
|
135143
135143
|
}
|
|
135144
|
-
function exactCodeBuddyMarketplaceObservation(target, stdout) {
|
|
135144
|
+
function exactCodeBuddyMarketplaceObservation(target, stdout, { acceptedTypes = ["git"] } = {}) {
|
|
135145
135145
|
const parsed = parseJson2(stdout, `${target.host} marketplace list`);
|
|
135146
135146
|
if (!Array.isArray(parsed)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135147
135147
|
const matches = parsed.filter((entry) => entry?.name === target.marketplace);
|
|
135148
135148
|
if (matches.length !== 1) {
|
|
135149
135149
|
throw new Error(`${target.host} marketplace list did not contain exactly one ${target.marketplace}`);
|
|
135150
135150
|
}
|
|
135151
|
-
if (matches[0].type
|
|
135151
|
+
if (!acceptedTypes.includes(matches[0].type)) {
|
|
135152
135152
|
throw new Error(`${target.host} marketplace ${target.marketplace} is not a git marketplace`);
|
|
135153
135153
|
}
|
|
135154
135154
|
return { installed: true, exact: true, found: matches[0] };
|
|
@@ -135558,11 +135558,12 @@ async function observeHubMarketplace(target, command2, env, run6) {
|
|
|
135558
135558
|
if (!observed.installed) return observed;
|
|
135559
135559
|
return { ...observed, commit: await observeHubCheckout(target, observed.root, env, run6) };
|
|
135560
135560
|
}
|
|
135561
|
-
const
|
|
135561
|
+
const codeBuddyFamily = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135562
|
+
const listed = codeBuddyFamily ? (await runCodeBuddyRead(target, command2, CODEBUDDY_MARKETPLACE_LIST_ARGS, "codebuddy marketplace list", env, run6)).output : await run6(command2, [...CODEBUDDY_MARKETPLACE_LIST_ARGS], { env });
|
|
135562
135563
|
const entries = parseJson2(listed.stdout, `${target.host} marketplace list`);
|
|
135563
135564
|
if (!Array.isArray(entries)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135564
135565
|
if (!entries.some((entry) => entry?.name === target.marketplace)) return { installed: false };
|
|
135565
|
-
exactCodeBuddyMarketplaceObservation(target, listed.stdout);
|
|
135566
|
+
exactCodeBuddyMarketplaceObservation(target, listed.stdout, { acceptedTypes: ["git", "github"] });
|
|
135566
135567
|
const root = await resolveContained(env.CODEBUDDY_CONFIG_DIR, `plugins/marketplaces/${target.marketplace}`);
|
|
135567
135568
|
return { installed: true, root, commit: await observeHubCheckout(target, root, env, run6) };
|
|
135568
135569
|
}
|
|
@@ -135570,7 +135571,7 @@ async function runHubStructuredUpdate(target, detected, run6, { plan, root, veri
|
|
|
135570
135571
|
const env = hostEnvironment(target.host);
|
|
135571
135572
|
const codeBuddy = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135572
135573
|
const readPlugin = /* @__PURE__ */ __name(async () => {
|
|
135573
|
-
const output =
|
|
135574
|
+
const output = codeBuddy ? (await runCodeBuddyRead(target, detected.command, CODEBUDDY_PLUGIN_LIST_ARGS, "codebuddy plugin list", env, run6)).output : await run6(detected.command, ["plugin", "list", "--json"], { env });
|
|
135574
135575
|
const listed = parseJson2(output.stdout, `${target.host} plugin list`);
|
|
135575
135576
|
const entries = target.host === "codex" ? listed?.installed : listed;
|
|
135576
135577
|
if (Array.isArray(entries) && entries.filter((entry) => (target.host === "codex" ? entry?.pluginId : entry?.id) === `${target.plugin}@${target.marketplace}`).length > 1) throw new Error(`${target.host} plugin list returned conflicting entries`);
|
|
@@ -135672,7 +135673,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135672
135673
|
if (target.targetKind === "hub-backed") return runHubStructuredUpdate(target, detected, run6, { plan, root, verifyInstalledPayload });
|
|
135673
135674
|
if (target.host === "codebuddy" || target.host === "workbuddy") {
|
|
135674
135675
|
const env2 = hostEnvironment(target.host);
|
|
135675
|
-
const listedObservation =
|
|
135676
|
+
const listedObservation = await runCodeBuddyRead(
|
|
135677
|
+
target,
|
|
135678
|
+
detected.command,
|
|
135679
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135680
|
+
`${target.host} plugin list`,
|
|
135681
|
+
env2,
|
|
135682
|
+
run6
|
|
135683
|
+
);
|
|
135676
135684
|
const listed = listedObservation.output;
|
|
135677
135685
|
const observed = exactPluginObservation(target, listed.stdout);
|
|
135678
135686
|
if (target.sourceForm !== "bundled-family" || target.pluginRepo !== target.marketplaceRepo || target.pluginCommit !== target.marketplaceCommit) {
|
|
@@ -135755,7 +135763,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135755
135763
|
pluginRecovered = true;
|
|
135756
135764
|
}
|
|
135757
135765
|
if (!pluginRecovered) {
|
|
135758
|
-
const afterList =
|
|
135766
|
+
const afterList = await runCodeBuddyRead(
|
|
135767
|
+
target,
|
|
135768
|
+
detected.command,
|
|
135769
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135770
|
+
`${target.host} plugin list`,
|
|
135771
|
+
env2,
|
|
135772
|
+
run6
|
|
135773
|
+
);
|
|
135759
135774
|
after2 = exactPluginObservation(target, afterList.output.stdout);
|
|
135760
135775
|
}
|
|
135761
135776
|
if (!after2.exact) throw new Error(`${target.host} did not update to the frozen plugin identity`);
|
|
@@ -36,9 +36,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
36
36
|
|
|
37
37
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
38
38
|
|
|
39
|
-
## 0.9.
|
|
39
|
+
## 0.9.22 候选边界
|
|
40
40
|
|
|
41
|
-
当前 0.9.
|
|
41
|
+
当前 0.9.22 候选精确消费 Foundation 0.21.0 的公开包根 API。0.9.22 仍是源码候选,不能从本说明推断已批准、发布或验证。
|
|
42
42
|
|
|
43
43
|
冻结前,`prepare` 或新建 `ship` 状态可重复传入 `--unit <id>`;不传则选择全部单元。延期单元不进入计划,也不获得发布状态。完整配置、生成物新鲜度和顶层 Hook 仍覆盖全项目;`publicSourceAuthorityReceipt` 的 coordinator 与 subjects 必须共同选择。冻结后以 `plan.units` 为唯一范围,publish、reconcile、verify、distribute 不再接受 `--unit`。
|
|
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.22"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "45eaf443ea0ae412317287ca2fa661303666663c304c4691330b5ea1e700881d";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -135120,10 +135120,10 @@ function isCodeBuddyResidualEnvelope(error) {
|
|
|
135120
135120
|
return envelope?.ok === false && envelope.exitStatus === 124 && envelope.processStatus === "TERMINATED" && envelope.terminationReason === "child_exit" && envelope.watchdogReason === "residual_process_group" && evidence?.childExitCode === 0 && (evidence.childSignal === null || evidence.childSignal === void 0) && evidence.residualGroupCleanupCompleted === true && evidence.forcedKill === false && evidence.outputLimitExceeded === null && Array.isArray(signals) && signals.length === 1 && signal?.signal === "SIGTERM" && signal.requestedMode === "process_group" && signal.successfulMode === "process_group";
|
|
135121
135121
|
}
|
|
135122
135122
|
function isCodeBuddyReadCommand(target, command2, args2) {
|
|
135123
|
-
return target.host === "codebuddy" && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135123
|
+
return (target.host === "codebuddy" || target.host === "workbuddy") && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135124
135124
|
}
|
|
135125
135125
|
function isCodeBuddyWriteCommand(target, command2, args2, kind) {
|
|
135126
|
-
if (target.host
|
|
135126
|
+
if (!["codebuddy", "workbuddy"].includes(target.host) || !["codebuddy", "cbc", CODEBUDDY_MACOS_PATH].includes(command2)) return false;
|
|
135127
135127
|
const expected = kind === "marketplace-update" ? ["plugin", "marketplace", "update", target.marketplace] : ["plugin", "update", `${target.plugin}@${target.marketplace}`, "--scope", "user"];
|
|
135128
135128
|
return Array.isArray(args2) && args2.length === expected.length && args2.every((value, index) => value === expected[index]);
|
|
135129
135129
|
}
|
|
@@ -135141,14 +135141,14 @@ async function runCodeBuddyRead(target, command2, args2, label, env, run6) {
|
|
|
135141
135141
|
};
|
|
135142
135142
|
}
|
|
135143
135143
|
}
|
|
135144
|
-
function exactCodeBuddyMarketplaceObservation(target, stdout) {
|
|
135144
|
+
function exactCodeBuddyMarketplaceObservation(target, stdout, { acceptedTypes = ["git"] } = {}) {
|
|
135145
135145
|
const parsed = parseJson2(stdout, `${target.host} marketplace list`);
|
|
135146
135146
|
if (!Array.isArray(parsed)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135147
135147
|
const matches = parsed.filter((entry) => entry?.name === target.marketplace);
|
|
135148
135148
|
if (matches.length !== 1) {
|
|
135149
135149
|
throw new Error(`${target.host} marketplace list did not contain exactly one ${target.marketplace}`);
|
|
135150
135150
|
}
|
|
135151
|
-
if (matches[0].type
|
|
135151
|
+
if (!acceptedTypes.includes(matches[0].type)) {
|
|
135152
135152
|
throw new Error(`${target.host} marketplace ${target.marketplace} is not a git marketplace`);
|
|
135153
135153
|
}
|
|
135154
135154
|
return { installed: true, exact: true, found: matches[0] };
|
|
@@ -135558,11 +135558,12 @@ async function observeHubMarketplace(target, command2, env, run6) {
|
|
|
135558
135558
|
if (!observed.installed) return observed;
|
|
135559
135559
|
return { ...observed, commit: await observeHubCheckout(target, observed.root, env, run6) };
|
|
135560
135560
|
}
|
|
135561
|
-
const
|
|
135561
|
+
const codeBuddyFamily = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135562
|
+
const listed = codeBuddyFamily ? (await runCodeBuddyRead(target, command2, CODEBUDDY_MARKETPLACE_LIST_ARGS, "codebuddy marketplace list", env, run6)).output : await run6(command2, [...CODEBUDDY_MARKETPLACE_LIST_ARGS], { env });
|
|
135562
135563
|
const entries = parseJson2(listed.stdout, `${target.host} marketplace list`);
|
|
135563
135564
|
if (!Array.isArray(entries)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135564
135565
|
if (!entries.some((entry) => entry?.name === target.marketplace)) return { installed: false };
|
|
135565
|
-
exactCodeBuddyMarketplaceObservation(target, listed.stdout);
|
|
135566
|
+
exactCodeBuddyMarketplaceObservation(target, listed.stdout, { acceptedTypes: ["git", "github"] });
|
|
135566
135567
|
const root = await resolveContained(env.CODEBUDDY_CONFIG_DIR, `plugins/marketplaces/${target.marketplace}`);
|
|
135567
135568
|
return { installed: true, root, commit: await observeHubCheckout(target, root, env, run6) };
|
|
135568
135569
|
}
|
|
@@ -135570,7 +135571,7 @@ async function runHubStructuredUpdate(target, detected, run6, { plan, root, veri
|
|
|
135570
135571
|
const env = hostEnvironment(target.host);
|
|
135571
135572
|
const codeBuddy = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135572
135573
|
const readPlugin = /* @__PURE__ */ __name(async () => {
|
|
135573
|
-
const output =
|
|
135574
|
+
const output = codeBuddy ? (await runCodeBuddyRead(target, detected.command, CODEBUDDY_PLUGIN_LIST_ARGS, "codebuddy plugin list", env, run6)).output : await run6(detected.command, ["plugin", "list", "--json"], { env });
|
|
135574
135575
|
const listed = parseJson2(output.stdout, `${target.host} plugin list`);
|
|
135575
135576
|
const entries = target.host === "codex" ? listed?.installed : listed;
|
|
135576
135577
|
if (Array.isArray(entries) && entries.filter((entry) => (target.host === "codex" ? entry?.pluginId : entry?.id) === `${target.plugin}@${target.marketplace}`).length > 1) throw new Error(`${target.host} plugin list returned conflicting entries`);
|
|
@@ -135672,7 +135673,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135672
135673
|
if (target.targetKind === "hub-backed") return runHubStructuredUpdate(target, detected, run6, { plan, root, verifyInstalledPayload });
|
|
135673
135674
|
if (target.host === "codebuddy" || target.host === "workbuddy") {
|
|
135674
135675
|
const env2 = hostEnvironment(target.host);
|
|
135675
|
-
const listedObservation =
|
|
135676
|
+
const listedObservation = await runCodeBuddyRead(
|
|
135677
|
+
target,
|
|
135678
|
+
detected.command,
|
|
135679
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135680
|
+
`${target.host} plugin list`,
|
|
135681
|
+
env2,
|
|
135682
|
+
run6
|
|
135683
|
+
);
|
|
135676
135684
|
const listed = listedObservation.output;
|
|
135677
135685
|
const observed = exactPluginObservation(target, listed.stdout);
|
|
135678
135686
|
if (target.sourceForm !== "bundled-family" || target.pluginRepo !== target.marketplaceRepo || target.pluginCommit !== target.marketplaceCommit) {
|
|
@@ -135755,7 +135763,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135755
135763
|
pluginRecovered = true;
|
|
135756
135764
|
}
|
|
135757
135765
|
if (!pluginRecovered) {
|
|
135758
|
-
const afterList =
|
|
135766
|
+
const afterList = await runCodeBuddyRead(
|
|
135767
|
+
target,
|
|
135768
|
+
detected.command,
|
|
135769
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135770
|
+
`${target.host} plugin list`,
|
|
135771
|
+
env2,
|
|
135772
|
+
run6
|
|
135773
|
+
);
|
|
135759
135774
|
after2 = exactPluginObservation(target, afterList.output.stdout);
|
|
135760
135775
|
}
|
|
135761
135776
|
if (!after2.exact) throw new Error(`${target.host} did not update to the frozen plugin identity`);
|
|
@@ -35,9 +35,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
35
35
|
|
|
36
36
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
37
37
|
|
|
38
|
-
## 0.9.
|
|
38
|
+
## 0.9.22 候选边界
|
|
39
39
|
|
|
40
|
-
当前 0.9.
|
|
40
|
+
当前 0.9.22 候选精确消费 Foundation 0.21.0 的公开包根 API。0.9.22 仍是源码候选,不能从本说明推断已批准、发布或验证。
|
|
41
41
|
|
|
42
42
|
冻结前,`prepare` 或新建 `ship` 状态可重复传入 `--unit <id>`;不传则选择全部单元。延期单元不进入计划,也不获得发布状态。完整配置、生成物新鲜度和顶层 Hook 仍覆盖全项目;`publicSourceAuthorityReceipt` 的 coordinator 与 subjects 必须共同选择。冻结后以 `plan.units` 为唯一范围,publish、reconcile、verify、distribute 不再接受 `--unit`。
|
|
43
43
|
|
|
@@ -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.22"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "45eaf443ea0ae412317287ca2fa661303666663c304c4691330b5ea1e700881d";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -135120,10 +135120,10 @@ function isCodeBuddyResidualEnvelope(error) {
|
|
|
135120
135120
|
return envelope?.ok === false && envelope.exitStatus === 124 && envelope.processStatus === "TERMINATED" && envelope.terminationReason === "child_exit" && envelope.watchdogReason === "residual_process_group" && evidence?.childExitCode === 0 && (evidence.childSignal === null || evidence.childSignal === void 0) && evidence.residualGroupCleanupCompleted === true && evidence.forcedKill === false && evidence.outputLimitExceeded === null && Array.isArray(signals) && signals.length === 1 && signal?.signal === "SIGTERM" && signal.requestedMode === "process_group" && signal.successfulMode === "process_group";
|
|
135121
135121
|
}
|
|
135122
135122
|
function isCodeBuddyReadCommand(target, command2, args2) {
|
|
135123
|
-
return target.host === "codebuddy" && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135123
|
+
return (target.host === "codebuddy" || target.host === "workbuddy") && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135124
135124
|
}
|
|
135125
135125
|
function isCodeBuddyWriteCommand(target, command2, args2, kind) {
|
|
135126
|
-
if (target.host
|
|
135126
|
+
if (!["codebuddy", "workbuddy"].includes(target.host) || !["codebuddy", "cbc", CODEBUDDY_MACOS_PATH].includes(command2)) return false;
|
|
135127
135127
|
const expected = kind === "marketplace-update" ? ["plugin", "marketplace", "update", target.marketplace] : ["plugin", "update", `${target.plugin}@${target.marketplace}`, "--scope", "user"];
|
|
135128
135128
|
return Array.isArray(args2) && args2.length === expected.length && args2.every((value, index) => value === expected[index]);
|
|
135129
135129
|
}
|
|
@@ -135141,14 +135141,14 @@ async function runCodeBuddyRead(target, command2, args2, label, env, run6) {
|
|
|
135141
135141
|
};
|
|
135142
135142
|
}
|
|
135143
135143
|
}
|
|
135144
|
-
function exactCodeBuddyMarketplaceObservation(target, stdout) {
|
|
135144
|
+
function exactCodeBuddyMarketplaceObservation(target, stdout, { acceptedTypes = ["git"] } = {}) {
|
|
135145
135145
|
const parsed = parseJson2(stdout, `${target.host} marketplace list`);
|
|
135146
135146
|
if (!Array.isArray(parsed)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135147
135147
|
const matches = parsed.filter((entry) => entry?.name === target.marketplace);
|
|
135148
135148
|
if (matches.length !== 1) {
|
|
135149
135149
|
throw new Error(`${target.host} marketplace list did not contain exactly one ${target.marketplace}`);
|
|
135150
135150
|
}
|
|
135151
|
-
if (matches[0].type
|
|
135151
|
+
if (!acceptedTypes.includes(matches[0].type)) {
|
|
135152
135152
|
throw new Error(`${target.host} marketplace ${target.marketplace} is not a git marketplace`);
|
|
135153
135153
|
}
|
|
135154
135154
|
return { installed: true, exact: true, found: matches[0] };
|
|
@@ -135558,11 +135558,12 @@ async function observeHubMarketplace(target, command2, env, run6) {
|
|
|
135558
135558
|
if (!observed.installed) return observed;
|
|
135559
135559
|
return { ...observed, commit: await observeHubCheckout(target, observed.root, env, run6) };
|
|
135560
135560
|
}
|
|
135561
|
-
const
|
|
135561
|
+
const codeBuddyFamily = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135562
|
+
const listed = codeBuddyFamily ? (await runCodeBuddyRead(target, command2, CODEBUDDY_MARKETPLACE_LIST_ARGS, "codebuddy marketplace list", env, run6)).output : await run6(command2, [...CODEBUDDY_MARKETPLACE_LIST_ARGS], { env });
|
|
135562
135563
|
const entries = parseJson2(listed.stdout, `${target.host} marketplace list`);
|
|
135563
135564
|
if (!Array.isArray(entries)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135564
135565
|
if (!entries.some((entry) => entry?.name === target.marketplace)) return { installed: false };
|
|
135565
|
-
exactCodeBuddyMarketplaceObservation(target, listed.stdout);
|
|
135566
|
+
exactCodeBuddyMarketplaceObservation(target, listed.stdout, { acceptedTypes: ["git", "github"] });
|
|
135566
135567
|
const root = await resolveContained(env.CODEBUDDY_CONFIG_DIR, `plugins/marketplaces/${target.marketplace}`);
|
|
135567
135568
|
return { installed: true, root, commit: await observeHubCheckout(target, root, env, run6) };
|
|
135568
135569
|
}
|
|
@@ -135570,7 +135571,7 @@ async function runHubStructuredUpdate(target, detected, run6, { plan, root, veri
|
|
|
135570
135571
|
const env = hostEnvironment(target.host);
|
|
135571
135572
|
const codeBuddy = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135572
135573
|
const readPlugin = /* @__PURE__ */ __name(async () => {
|
|
135573
|
-
const output =
|
|
135574
|
+
const output = codeBuddy ? (await runCodeBuddyRead(target, detected.command, CODEBUDDY_PLUGIN_LIST_ARGS, "codebuddy plugin list", env, run6)).output : await run6(detected.command, ["plugin", "list", "--json"], { env });
|
|
135574
135575
|
const listed = parseJson2(output.stdout, `${target.host} plugin list`);
|
|
135575
135576
|
const entries = target.host === "codex" ? listed?.installed : listed;
|
|
135576
135577
|
if (Array.isArray(entries) && entries.filter((entry) => (target.host === "codex" ? entry?.pluginId : entry?.id) === `${target.plugin}@${target.marketplace}`).length > 1) throw new Error(`${target.host} plugin list returned conflicting entries`);
|
|
@@ -135672,7 +135673,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135672
135673
|
if (target.targetKind === "hub-backed") return runHubStructuredUpdate(target, detected, run6, { plan, root, verifyInstalledPayload });
|
|
135673
135674
|
if (target.host === "codebuddy" || target.host === "workbuddy") {
|
|
135674
135675
|
const env2 = hostEnvironment(target.host);
|
|
135675
|
-
const listedObservation =
|
|
135676
|
+
const listedObservation = await runCodeBuddyRead(
|
|
135677
|
+
target,
|
|
135678
|
+
detected.command,
|
|
135679
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135680
|
+
`${target.host} plugin list`,
|
|
135681
|
+
env2,
|
|
135682
|
+
run6
|
|
135683
|
+
);
|
|
135676
135684
|
const listed = listedObservation.output;
|
|
135677
135685
|
const observed = exactPluginObservation(target, listed.stdout);
|
|
135678
135686
|
if (target.sourceForm !== "bundled-family" || target.pluginRepo !== target.marketplaceRepo || target.pluginCommit !== target.marketplaceCommit) {
|
|
@@ -135755,7 +135763,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135755
135763
|
pluginRecovered = true;
|
|
135756
135764
|
}
|
|
135757
135765
|
if (!pluginRecovered) {
|
|
135758
|
-
const afterList =
|
|
135766
|
+
const afterList = await runCodeBuddyRead(
|
|
135767
|
+
target,
|
|
135768
|
+
detected.command,
|
|
135769
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135770
|
+
`${target.host} plugin list`,
|
|
135771
|
+
env2,
|
|
135772
|
+
run6
|
|
135773
|
+
);
|
|
135759
135774
|
after2 = exactPluginObservation(target, afterList.output.stdout);
|
|
135760
135775
|
}
|
|
135761
135776
|
if (!after2.exact) throw new Error(`${target.host} did not update to the frozen plugin identity`);
|
|
@@ -35,9 +35,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
35
35
|
|
|
36
36
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
37
37
|
|
|
38
|
-
## 0.9.
|
|
38
|
+
## 0.9.22 候选边界
|
|
39
39
|
|
|
40
|
-
当前 0.9.
|
|
40
|
+
当前 0.9.22 候选精确消费 Foundation 0.21.0 的公开包根 API。0.9.22 仍是源码候选,不能从本说明推断已批准、发布或验证。
|
|
41
41
|
|
|
42
42
|
冻结前,`prepare` 或新建 `ship` 状态可重复传入 `--unit <id>`;不传则选择全部单元。延期单元不进入计划,也不获得发布状态。完整配置、生成物新鲜度和顶层 Hook 仍覆盖全项目;`publicSourceAuthorityReceipt` 的 coordinator 与 subjects 必须共同选择。冻结后以 `plan.units` 为唯一范围,publish、reconcile、verify、distribute 不再接受 `--unit`。
|
|
43
43
|
|
|
@@ -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.22"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "45eaf443ea0ae412317287ca2fa661303666663c304c4691330b5ea1e700881d";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -135120,10 +135120,10 @@ function isCodeBuddyResidualEnvelope(error) {
|
|
|
135120
135120
|
return envelope?.ok === false && envelope.exitStatus === 124 && envelope.processStatus === "TERMINATED" && envelope.terminationReason === "child_exit" && envelope.watchdogReason === "residual_process_group" && evidence?.childExitCode === 0 && (evidence.childSignal === null || evidence.childSignal === void 0) && evidence.residualGroupCleanupCompleted === true && evidence.forcedKill === false && evidence.outputLimitExceeded === null && Array.isArray(signals) && signals.length === 1 && signal?.signal === "SIGTERM" && signal.requestedMode === "process_group" && signal.successfulMode === "process_group";
|
|
135121
135121
|
}
|
|
135122
135122
|
function isCodeBuddyReadCommand(target, command2, args2) {
|
|
135123
|
-
return target.host === "codebuddy" && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135123
|
+
return (target.host === "codebuddy" || target.host === "workbuddy") && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135124
135124
|
}
|
|
135125
135125
|
function isCodeBuddyWriteCommand(target, command2, args2, kind) {
|
|
135126
|
-
if (target.host
|
|
135126
|
+
if (!["codebuddy", "workbuddy"].includes(target.host) || !["codebuddy", "cbc", CODEBUDDY_MACOS_PATH].includes(command2)) return false;
|
|
135127
135127
|
const expected = kind === "marketplace-update" ? ["plugin", "marketplace", "update", target.marketplace] : ["plugin", "update", `${target.plugin}@${target.marketplace}`, "--scope", "user"];
|
|
135128
135128
|
return Array.isArray(args2) && args2.length === expected.length && args2.every((value, index) => value === expected[index]);
|
|
135129
135129
|
}
|
|
@@ -135141,14 +135141,14 @@ async function runCodeBuddyRead(target, command2, args2, label, env, run6) {
|
|
|
135141
135141
|
};
|
|
135142
135142
|
}
|
|
135143
135143
|
}
|
|
135144
|
-
function exactCodeBuddyMarketplaceObservation(target, stdout) {
|
|
135144
|
+
function exactCodeBuddyMarketplaceObservation(target, stdout, { acceptedTypes = ["git"] } = {}) {
|
|
135145
135145
|
const parsed = parseJson2(stdout, `${target.host} marketplace list`);
|
|
135146
135146
|
if (!Array.isArray(parsed)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135147
135147
|
const matches = parsed.filter((entry) => entry?.name === target.marketplace);
|
|
135148
135148
|
if (matches.length !== 1) {
|
|
135149
135149
|
throw new Error(`${target.host} marketplace list did not contain exactly one ${target.marketplace}`);
|
|
135150
135150
|
}
|
|
135151
|
-
if (matches[0].type
|
|
135151
|
+
if (!acceptedTypes.includes(matches[0].type)) {
|
|
135152
135152
|
throw new Error(`${target.host} marketplace ${target.marketplace} is not a git marketplace`);
|
|
135153
135153
|
}
|
|
135154
135154
|
return { installed: true, exact: true, found: matches[0] };
|
|
@@ -135558,11 +135558,12 @@ async function observeHubMarketplace(target, command2, env, run6) {
|
|
|
135558
135558
|
if (!observed.installed) return observed;
|
|
135559
135559
|
return { ...observed, commit: await observeHubCheckout(target, observed.root, env, run6) };
|
|
135560
135560
|
}
|
|
135561
|
-
const
|
|
135561
|
+
const codeBuddyFamily = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135562
|
+
const listed = codeBuddyFamily ? (await runCodeBuddyRead(target, command2, CODEBUDDY_MARKETPLACE_LIST_ARGS, "codebuddy marketplace list", env, run6)).output : await run6(command2, [...CODEBUDDY_MARKETPLACE_LIST_ARGS], { env });
|
|
135562
135563
|
const entries = parseJson2(listed.stdout, `${target.host} marketplace list`);
|
|
135563
135564
|
if (!Array.isArray(entries)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135564
135565
|
if (!entries.some((entry) => entry?.name === target.marketplace)) return { installed: false };
|
|
135565
|
-
exactCodeBuddyMarketplaceObservation(target, listed.stdout);
|
|
135566
|
+
exactCodeBuddyMarketplaceObservation(target, listed.stdout, { acceptedTypes: ["git", "github"] });
|
|
135566
135567
|
const root = await resolveContained(env.CODEBUDDY_CONFIG_DIR, `plugins/marketplaces/${target.marketplace}`);
|
|
135567
135568
|
return { installed: true, root, commit: await observeHubCheckout(target, root, env, run6) };
|
|
135568
135569
|
}
|
|
@@ -135570,7 +135571,7 @@ async function runHubStructuredUpdate(target, detected, run6, { plan, root, veri
|
|
|
135570
135571
|
const env = hostEnvironment(target.host);
|
|
135571
135572
|
const codeBuddy = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135572
135573
|
const readPlugin = /* @__PURE__ */ __name(async () => {
|
|
135573
|
-
const output =
|
|
135574
|
+
const output = codeBuddy ? (await runCodeBuddyRead(target, detected.command, CODEBUDDY_PLUGIN_LIST_ARGS, "codebuddy plugin list", env, run6)).output : await run6(detected.command, ["plugin", "list", "--json"], { env });
|
|
135574
135575
|
const listed = parseJson2(output.stdout, `${target.host} plugin list`);
|
|
135575
135576
|
const entries = target.host === "codex" ? listed?.installed : listed;
|
|
135576
135577
|
if (Array.isArray(entries) && entries.filter((entry) => (target.host === "codex" ? entry?.pluginId : entry?.id) === `${target.plugin}@${target.marketplace}`).length > 1) throw new Error(`${target.host} plugin list returned conflicting entries`);
|
|
@@ -135672,7 +135673,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135672
135673
|
if (target.targetKind === "hub-backed") return runHubStructuredUpdate(target, detected, run6, { plan, root, verifyInstalledPayload });
|
|
135673
135674
|
if (target.host === "codebuddy" || target.host === "workbuddy") {
|
|
135674
135675
|
const env2 = hostEnvironment(target.host);
|
|
135675
|
-
const listedObservation =
|
|
135676
|
+
const listedObservation = await runCodeBuddyRead(
|
|
135677
|
+
target,
|
|
135678
|
+
detected.command,
|
|
135679
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135680
|
+
`${target.host} plugin list`,
|
|
135681
|
+
env2,
|
|
135682
|
+
run6
|
|
135683
|
+
);
|
|
135676
135684
|
const listed = listedObservation.output;
|
|
135677
135685
|
const observed = exactPluginObservation(target, listed.stdout);
|
|
135678
135686
|
if (target.sourceForm !== "bundled-family" || target.pluginRepo !== target.marketplaceRepo || target.pluginCommit !== target.marketplaceCommit) {
|
|
@@ -135755,7 +135763,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135755
135763
|
pluginRecovered = true;
|
|
135756
135764
|
}
|
|
135757
135765
|
if (!pluginRecovered) {
|
|
135758
|
-
const afterList =
|
|
135766
|
+
const afterList = await runCodeBuddyRead(
|
|
135767
|
+
target,
|
|
135768
|
+
detected.command,
|
|
135769
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135770
|
+
`${target.host} plugin list`,
|
|
135771
|
+
env2,
|
|
135772
|
+
run6
|
|
135773
|
+
);
|
|
135759
135774
|
after2 = exactPluginObservation(target, afterList.output.stdout);
|
|
135760
135775
|
}
|
|
135761
135776
|
if (!after2.exact) throw new Error(`${target.host} did not update to the frozen plugin identity`);
|
|
@@ -28,9 +28,9 @@ description: "Discoverable entry point for release-skill: dependency and environ
|
|
|
28
28
|
|
|
29
29
|
治理诊断只运行 release-skill 自己的只读检查程序,不运行目标 Skill、业务脚本、构建、hook 或发布动作,也不把 `prepare`、`verify`、`release-finish` 当作静态治理入口。用户要求实际接入或发布时,把已有授权带到对应原业务入口;各入口继续执行原有确认、副作用和状态机合同。
|
|
30
30
|
|
|
31
|
-
## 0.9.
|
|
31
|
+
## 0.9.22 候选边界
|
|
32
32
|
|
|
33
|
-
当前 0.9.
|
|
33
|
+
当前 0.9.22 候选精确消费 Foundation 0.21.0 的公开包根 API。0.9.22 仍是源码候选,不能从本说明推断已批准、发布或验证。
|
|
34
34
|
|
|
35
35
|
冻结前,`prepare` 或新建 `ship` 状态可重复传入 `--unit <id>`;不传则选择全部单元。延期单元不进入计划,也不获得发布状态。完整配置、生成物新鲜度和顶层 Hook 仍覆盖全项目;`publicSourceAuthorityReceipt` 的 coordinator 与 subjects 必须共同选择。冻结后以 `plan.units` 为唯一范围,publish、reconcile、verify、distribute 不再接受 `--unit`。
|
|
36
36
|
|
|
@@ -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.22"});
|
|
13
13
|
// Build-time source digest for the BUNDLE_STALE freshness gate (see above).
|
|
14
|
-
const __bundleSourceDigest = "
|
|
14
|
+
const __bundleSourceDigest = "45eaf443ea0ae412317287ca2fa661303666663c304c4691330b5ea1e700881d";
|
|
15
15
|
|
|
16
16
|
var __create = Object.create;
|
|
17
17
|
var __defProp = Object.defineProperty;
|
|
@@ -135120,10 +135120,10 @@ function isCodeBuddyResidualEnvelope(error) {
|
|
|
135120
135120
|
return envelope?.ok === false && envelope.exitStatus === 124 && envelope.processStatus === "TERMINATED" && envelope.terminationReason === "child_exit" && envelope.watchdogReason === "residual_process_group" && evidence?.childExitCode === 0 && (evidence.childSignal === null || evidence.childSignal === void 0) && evidence.residualGroupCleanupCompleted === true && evidence.forcedKill === false && evidence.outputLimitExceeded === null && Array.isArray(signals) && signals.length === 1 && signal?.signal === "SIGTERM" && signal.requestedMode === "process_group" && signal.successfulMode === "process_group";
|
|
135121
135121
|
}
|
|
135122
135122
|
function isCodeBuddyReadCommand(target, command2, args2) {
|
|
135123
|
-
return target.host === "codebuddy" && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135123
|
+
return (target.host === "codebuddy" || target.host === "workbuddy") && (command2 === "codebuddy" || command2 === "cbc" || command2 === CODEBUDDY_MACOS_PATH) && Array.isArray(args2) && (args2.every((value, index) => value === CODEBUDDY_PLUGIN_LIST_ARGS[index]) && args2.length === CODEBUDDY_PLUGIN_LIST_ARGS.length || args2.every((value, index) => value === CODEBUDDY_MARKETPLACE_LIST_ARGS[index]) && args2.length === CODEBUDDY_MARKETPLACE_LIST_ARGS.length);
|
|
135124
135124
|
}
|
|
135125
135125
|
function isCodeBuddyWriteCommand(target, command2, args2, kind) {
|
|
135126
|
-
if (target.host
|
|
135126
|
+
if (!["codebuddy", "workbuddy"].includes(target.host) || !["codebuddy", "cbc", CODEBUDDY_MACOS_PATH].includes(command2)) return false;
|
|
135127
135127
|
const expected = kind === "marketplace-update" ? ["plugin", "marketplace", "update", target.marketplace] : ["plugin", "update", `${target.plugin}@${target.marketplace}`, "--scope", "user"];
|
|
135128
135128
|
return Array.isArray(args2) && args2.length === expected.length && args2.every((value, index) => value === expected[index]);
|
|
135129
135129
|
}
|
|
@@ -135141,14 +135141,14 @@ async function runCodeBuddyRead(target, command2, args2, label, env, run6) {
|
|
|
135141
135141
|
};
|
|
135142
135142
|
}
|
|
135143
135143
|
}
|
|
135144
|
-
function exactCodeBuddyMarketplaceObservation(target, stdout) {
|
|
135144
|
+
function exactCodeBuddyMarketplaceObservation(target, stdout, { acceptedTypes = ["git"] } = {}) {
|
|
135145
135145
|
const parsed = parseJson2(stdout, `${target.host} marketplace list`);
|
|
135146
135146
|
if (!Array.isArray(parsed)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135147
135147
|
const matches = parsed.filter((entry) => entry?.name === target.marketplace);
|
|
135148
135148
|
if (matches.length !== 1) {
|
|
135149
135149
|
throw new Error(`${target.host} marketplace list did not contain exactly one ${target.marketplace}`);
|
|
135150
135150
|
}
|
|
135151
|
-
if (matches[0].type
|
|
135151
|
+
if (!acceptedTypes.includes(matches[0].type)) {
|
|
135152
135152
|
throw new Error(`${target.host} marketplace ${target.marketplace} is not a git marketplace`);
|
|
135153
135153
|
}
|
|
135154
135154
|
return { installed: true, exact: true, found: matches[0] };
|
|
@@ -135558,11 +135558,12 @@ async function observeHubMarketplace(target, command2, env, run6) {
|
|
|
135558
135558
|
if (!observed.installed) return observed;
|
|
135559
135559
|
return { ...observed, commit: await observeHubCheckout(target, observed.root, env, run6) };
|
|
135560
135560
|
}
|
|
135561
|
-
const
|
|
135561
|
+
const codeBuddyFamily = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135562
|
+
const listed = codeBuddyFamily ? (await runCodeBuddyRead(target, command2, CODEBUDDY_MARKETPLACE_LIST_ARGS, "codebuddy marketplace list", env, run6)).output : await run6(command2, [...CODEBUDDY_MARKETPLACE_LIST_ARGS], { env });
|
|
135562
135563
|
const entries = parseJson2(listed.stdout, `${target.host} marketplace list`);
|
|
135563
135564
|
if (!Array.isArray(entries)) throw new Error(`${target.host} marketplace list did not return an array`);
|
|
135564
135565
|
if (!entries.some((entry) => entry?.name === target.marketplace)) return { installed: false };
|
|
135565
|
-
exactCodeBuddyMarketplaceObservation(target, listed.stdout);
|
|
135566
|
+
exactCodeBuddyMarketplaceObservation(target, listed.stdout, { acceptedTypes: ["git", "github"] });
|
|
135566
135567
|
const root = await resolveContained(env.CODEBUDDY_CONFIG_DIR, `plugins/marketplaces/${target.marketplace}`);
|
|
135567
135568
|
return { installed: true, root, commit: await observeHubCheckout(target, root, env, run6) };
|
|
135568
135569
|
}
|
|
@@ -135570,7 +135571,7 @@ async function runHubStructuredUpdate(target, detected, run6, { plan, root, veri
|
|
|
135570
135571
|
const env = hostEnvironment(target.host);
|
|
135571
135572
|
const codeBuddy = target.host === "codebuddy" || target.host === "workbuddy";
|
|
135572
135573
|
const readPlugin = /* @__PURE__ */ __name(async () => {
|
|
135573
|
-
const output =
|
|
135574
|
+
const output = codeBuddy ? (await runCodeBuddyRead(target, detected.command, CODEBUDDY_PLUGIN_LIST_ARGS, "codebuddy plugin list", env, run6)).output : await run6(detected.command, ["plugin", "list", "--json"], { env });
|
|
135574
135575
|
const listed = parseJson2(output.stdout, `${target.host} plugin list`);
|
|
135575
135576
|
const entries = target.host === "codex" ? listed?.installed : listed;
|
|
135576
135577
|
if (Array.isArray(entries) && entries.filter((entry) => (target.host === "codex" ? entry?.pluginId : entry?.id) === `${target.plugin}@${target.marketplace}`).length > 1) throw new Error(`${target.host} plugin list returned conflicting entries`);
|
|
@@ -135672,7 +135673,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135672
135673
|
if (target.targetKind === "hub-backed") return runHubStructuredUpdate(target, detected, run6, { plan, root, verifyInstalledPayload });
|
|
135673
135674
|
if (target.host === "codebuddy" || target.host === "workbuddy") {
|
|
135674
135675
|
const env2 = hostEnvironment(target.host);
|
|
135675
|
-
const listedObservation =
|
|
135676
|
+
const listedObservation = await runCodeBuddyRead(
|
|
135677
|
+
target,
|
|
135678
|
+
detected.command,
|
|
135679
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135680
|
+
`${target.host} plugin list`,
|
|
135681
|
+
env2,
|
|
135682
|
+
run6
|
|
135683
|
+
);
|
|
135676
135684
|
const listed = listedObservation.output;
|
|
135677
135685
|
const observed = exactPluginObservation(target, listed.stdout);
|
|
135678
135686
|
if (target.sourceForm !== "bundled-family" || target.pluginRepo !== target.marketplaceRepo || target.pluginCommit !== target.marketplaceCommit) {
|
|
@@ -135755,7 +135763,14 @@ async function runStructuredUpdate(target, detected, run6, {
|
|
|
135755
135763
|
pluginRecovered = true;
|
|
135756
135764
|
}
|
|
135757
135765
|
if (!pluginRecovered) {
|
|
135758
|
-
const afterList =
|
|
135766
|
+
const afterList = await runCodeBuddyRead(
|
|
135767
|
+
target,
|
|
135768
|
+
detected.command,
|
|
135769
|
+
CODEBUDDY_PLUGIN_LIST_ARGS,
|
|
135770
|
+
`${target.host} plugin list`,
|
|
135771
|
+
env2,
|
|
135772
|
+
run6
|
|
135773
|
+
);
|
|
135759
135774
|
after2 = exactPluginObservation(target, afterList.output.stdout);
|
|
135760
135775
|
}
|
|
135761
135776
|
if (!after2.exact) throw new Error(`${target.host} did not update to the frozen plugin identity`);
|