release-skill 0.4.2 → 0.5.1

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.
Files changed (91) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codebuddy-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +2 -2
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/CHANGELOG.md +44 -0
  7. package/INSTALL.md +2 -2
  8. package/INSTALL.zh-CN.md +2 -2
  9. package/README.md +10 -7
  10. package/README.zh-CN.md +10 -7
  11. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/error-codes.json +154 -0
  14. package/adapters/claude/bin/kernel-protocol.json +60 -0
  15. package/adapters/claude/bin/registry.json +179 -0
  16. package/adapters/claude/bin/release-skill.bundle.mjs +37609 -23014
  17. package/adapters/claude/bin/rules.json +104 -0
  18. package/adapters/claude/skills/release-assess/SKILL.md +2 -0
  19. package/adapters/claude/skills/release-help/SKILL.md +3 -1
  20. package/adapters/claude/skills/release-prepare/SKILL.md +2 -2
  21. package/adapters/claude/skills/release-verify/SKILL.md +2 -0
  22. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  23. package/adapters/codex/bin/error-codes.json +154 -0
  24. package/adapters/codex/bin/kernel-protocol.json +60 -0
  25. package/adapters/codex/bin/registry.json +179 -0
  26. package/adapters/codex/bin/release-skill.bundle.mjs +37609 -23014
  27. package/adapters/codex/bin/rules.json +104 -0
  28. package/adapters/codex/skills/release-assess/SKILL.md +2 -0
  29. package/adapters/codex/skills/release-help/SKILL.md +3 -1
  30. package/adapters/codex/skills/release-prepare/SKILL.md +2 -2
  31. package/adapters/codex/skills/release-verify/SKILL.md +2 -0
  32. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  33. package/adapters/kimi/bin/error-codes.json +154 -0
  34. package/adapters/kimi/bin/kernel-protocol.json +60 -0
  35. package/adapters/kimi/bin/registry.json +179 -0
  36. package/adapters/kimi/bin/release-skill.bundle.mjs +37609 -23014
  37. package/adapters/kimi/bin/rules.json +104 -0
  38. package/adapters/kimi/skills/release-assess/SKILL.md +2 -0
  39. package/adapters/kimi/skills/release-help/SKILL.md +3 -1
  40. package/adapters/kimi/skills/release-prepare/SKILL.md +2 -2
  41. package/adapters/kimi/skills/release-verify/SKILL.md +2 -0
  42. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  43. package/adapters/workbuddy/bin/error-codes.json +154 -0
  44. package/adapters/workbuddy/bin/kernel-protocol.json +60 -0
  45. package/adapters/workbuddy/bin/registry.json +179 -0
  46. package/adapters/workbuddy/bin/release-skill.bundle.mjs +37609 -23014
  47. package/adapters/workbuddy/bin/rules.json +104 -0
  48. package/adapters/workbuddy/skills/release-assess/SKILL.md +2 -0
  49. package/adapters/workbuddy/skills/release-help/SKILL.md +3 -1
  50. package/adapters/workbuddy/skills/release-prepare/SKILL.md +2 -2
  51. package/adapters/workbuddy/skills/release-verify/SKILL.md +2 -0
  52. package/bin/error-codes.json +154 -0
  53. package/bin/kernel-protocol.json +60 -0
  54. package/bin/registry.json +179 -0
  55. package/bin/release-skill.bundle.mjs +37609 -23014
  56. package/bin/rules.json +104 -0
  57. package/package.json +3 -1
  58. package/scripts/build-bundle.mjs +159 -5
  59. package/scripts/sync-public-files.mjs +5 -0
  60. package/skills/release-assess/SKILL.md +2 -0
  61. package/skills/release-help/SKILL.md +3 -1
  62. package/skills/release-prepare/SKILL.md +2 -2
  63. package/skills/release-verify/SKILL.md +2 -0
  64. package/skills-src/release-assess/SKILL.md +2 -0
  65. package/skills-src/release-help/SKILL.md +3 -1
  66. package/skills-src/release-prepare/SKILL.md +2 -2
  67. package/skills-src/release-verify/SKILL.md +2 -0
  68. package/src/adapters/contract.mjs +10 -10
  69. package/src/adapters/plugin-marketplace.mjs +48 -4
  70. package/src/adapters/push-snapshot.mjs +12 -4
  71. package/src/artifacts/entry.mjs +4 -1
  72. package/src/artifacts/producer-registry.mjs +9 -6
  73. package/src/artifacts/project-lock.mjs +324 -214
  74. package/src/commands/assess.mjs +231 -2
  75. package/src/commands/attest.mjs +11 -0
  76. package/src/commands/hooks.mjs +6 -1
  77. package/src/commands/prepare.mjs +83 -1
  78. package/src/core/approval.mjs +5 -2
  79. package/src/core/baseline.mjs +11 -1
  80. package/src/core/digest.mjs +47 -12
  81. package/src/core/foundation-inflight.mjs +46 -0
  82. package/src/core/hook-cache.mjs +3 -0
  83. package/src/core/installation-contract.mjs +4 -2
  84. package/src/core/plan.mjs +42 -29
  85. package/src/core/run.mjs +22 -36
  86. package/src/core/skill-resource-closure.mjs +6 -4
  87. package/src/core/trusted-resource.mjs +64 -15
  88. package/src/producers/build-adapters.mjs +27 -9
  89. package/src/producers/render-public-assets.mjs +12 -7
  90. package/src/producers/sync-skills.mjs +12 -7
  91. package/src/snapshot/public-map.mjs +10 -2
@@ -16,6 +16,7 @@ import { join } from 'node:path';
16
16
  import { promisify } from 'node:util';
17
17
  import { execFile } from 'node:child_process';
18
18
  import { canonicalJson, sha256Hex } from '../core/digest.mjs';
19
+ import { digestDocument } from 'skill-family-contracts';
19
20
  import { ReleaseError, PATH_UNSAFE } from '../core/errors.mjs';
20
21
 
21
22
  const execFileAsync = promisify(execFile);
@@ -151,10 +152,12 @@ async function enumerateTreeEntries(root, dirPath, relBase) {
151
152
  * @returns {string} `sha256:<hex>` digest.
152
153
  */
153
154
  export function digestEntryManifest(entries) {
155
+ // 纯 JSON 投影(path/type/mode/size/sha256 定字段),直接委托 Foundation
156
+ // digestDocument(= sha256(contracts canonicalJson),与迁移前字节一致)。
154
157
  const canonical = entries.map(({ path, type, mode, sha256, size }) => ({
155
158
  path, type, mode, size, sha256,
156
159
  }));
157
- return `sha256:${sha256Hex(canonicalJson(canonical))}`;
160
+ return `sha256:${digestDocument(canonical)}`;
158
161
  }
159
162
 
160
163
  // ---------------------------------------------------------------------------
@@ -14,10 +14,10 @@ import { readFile, readdir, stat, mkdir, writeFile, rm } from 'node:fs/promises'
14
14
  import { join } from 'node:path';
15
15
  import { mkdtemp } from 'node:fs/promises';
16
16
  import { tmpdir } from 'node:os';
17
- import { createHash } from 'node:crypto';
18
17
  import { readFileSync } from 'node:fs';
19
18
 
20
19
  import { canonicalJson, sha256Hex } from '../core/digest.mjs';
20
+ import { digestBytes } from 'skill-family-harness-node';
21
21
  import {
22
22
  ReleaseError,
23
23
  ARTIFACT_POLICY_INVALID,
@@ -155,11 +155,14 @@ export async function createBuiltInProducerRegistry() {
155
155
  * @returns {string}
156
156
  */
157
157
  export function computeImplDigest(sourceBytes) {
158
- const h = createHash('sha256');
159
- for (const buf of sourceBytes) h.update(buf);
160
- h.update(`node:${process.version}`);
161
- h.update('locale:en-US timezone:UTC');
162
- return `sha256:${h.digest('hex')}`;
158
+ // 多段哈希(源字节 + node 版本 + 固定 locale/timezone)等价于对拼接字节
159
+ // sha256,委托 Foundation digestBytes 实现,字节逐位一致。
160
+ const bytes = Buffer.concat([
161
+ ...sourceBytes,
162
+ Buffer.from(`node:${process.version}`),
163
+ Buffer.from('locale:en-US timezone:UTC'),
164
+ ]);
165
+ return `sha256:${digestBytes(bytes)}`;
163
166
  }
164
167
 
165
168
  // ---------------------------------------------------------------------------