release-skill 0.1.10 → 0.2.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.kimi-plugin/plugin.json +1 -1
- package/CHANGELOG.md +19 -0
- package/INSTALL.md +4 -4
- package/INSTALL.zh-CN.md +4 -4
- package/README.md +17 -32
- package/README.zh-CN.md +17 -25
- package/adapters/claude/.claude-plugin/marketplace.json +1 -1
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +2721 -1843
- package/adapters/claude/schemas/.render-manifest.json +8 -8
- package/adapters/claude/schemas/approval-record.schema.json +1 -1
- package/adapters/claude/schemas/release-plan.schema.json +6 -2
- package/adapters/claude/schemas/release-project.schema.json +14 -0
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +2721 -1843
- package/adapters/codex/schemas/.render-manifest.json +8 -8
- package/adapters/codex/schemas/approval-record.schema.json +1 -1
- package/adapters/codex/schemas/release-plan.schema.json +6 -2
- package/adapters/codex/schemas/release-project.schema.json +14 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +2721 -1843
- package/adapters/kimi/schemas/.render-manifest.json +8 -8
- package/adapters/kimi/schemas/approval-record.schema.json +1 -1
- package/adapters/kimi/schemas/release-plan.schema.json +6 -2
- package/adapters/kimi/schemas/release-project.schema.json +14 -0
- package/bin/release-skill-cli.mjs +3 -0
- package/bin/release-skill.bundle.mjs +2721 -1843
- package/package.json +8 -2
- package/references/.render-manifest.json +8 -8
- package/references/01-state-machine.md +5 -5
- package/references/02-project-config.md +1 -1
- package/references/05-evidence-and-errors.md +1 -1
- package/references/06-adapter-contract.md +41 -1
- package/schemas/.render-manifest.json +8 -8
- package/schemas/approval-record.schema.json +1 -1
- package/schemas/release-plan.schema.json +6 -2
- package/schemas/release-project.schema.json +14 -0
- package/scripts/sync-public-files.mjs +462 -0
- package/src/adapters/contract.mjs +60 -0
- package/src/adapters/plugin-marketplace.mjs +289 -736
- package/src/commands/prepare.mjs +195 -182
- package/src/commands/publish.mjs +438 -122
- package/src/commands/reconcile.mjs +369 -191
- package/src/commands/verify.mjs +13 -2
- package/src/core/approval.mjs +72 -45
- package/src/core/baseline.mjs +5 -0
- package/src/core/checkpoints.mjs +143 -0
- package/src/core/evidence.mjs +30 -3
- package/src/core/hook-cache.mjs +254 -0
- package/src/core/hooks.mjs +37 -1
- package/src/core/observe-retry.mjs +223 -0
- package/src/core/plan.mjs +162 -253
- package/src/platforms/kimi.mjs +514 -0
- package/src/platforms/registry.mjs +393 -0
- package/src/producers/build-adapters.mjs +14 -22
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"source": "schemas",
|
|
3
3
|
"files": {
|
|
4
4
|
"approval-record.schema.json": {
|
|
5
|
-
"digest": "
|
|
6
|
-
"bytes":
|
|
5
|
+
"digest": "05b5a16d58372e4fdda625a472a4bb71439aa5db4e9813bf7f3d3cf2d39d144e",
|
|
6
|
+
"bytes": 3357
|
|
7
7
|
},
|
|
8
8
|
"artifact-lock.schema.json": {
|
|
9
9
|
"digest": "6a5f4c826540b849571f173118bcbd778dfaceb4133034036ae565c3e9e353e5",
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
"bytes": 2390
|
|
23
23
|
},
|
|
24
24
|
"release-plan.schema.json": {
|
|
25
|
-
"digest": "
|
|
26
|
-
"bytes":
|
|
25
|
+
"digest": "d7869cdb335618754eb787fe352c4c1775c799900f3bb926197c51359699a648",
|
|
26
|
+
"bytes": 24088
|
|
27
27
|
},
|
|
28
28
|
"release-project.schema.json": {
|
|
29
|
-
"digest": "
|
|
30
|
-
"bytes":
|
|
29
|
+
"digest": "53efe202fc5e2bf63c8d846cf4d50648991163b270536c1450c4be44e45d4b93",
|
|
30
|
+
"bytes": 25761
|
|
31
31
|
},
|
|
32
32
|
"release-run.schema.json": {
|
|
33
|
-
"digest": "
|
|
34
|
-
"bytes":
|
|
33
|
+
"digest": "f453845fd2aab02c7b0812b1f62fd1ab7fa37104b8e752914906551c0e8c2637",
|
|
34
|
+
"bytes": 8959
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": [
|
|
8
8
|
"planDigest",
|
|
9
|
-
"baseline",
|
|
10
9
|
"approvedActions",
|
|
11
10
|
"actor",
|
|
12
11
|
"approvedAt",
|
|
@@ -25,6 +24,7 @@
|
|
|
25
24
|
},
|
|
26
25
|
"baseline": {
|
|
27
26
|
"type": "object",
|
|
27
|
+
"description": "Workspace baseline captured at approval time. Optional record-layer audit data since planVersion 2 (validated structurally when present, never an approval binding); still required for v1 plans by validateApproval.",
|
|
28
28
|
"required": ["gitTreeHash"],
|
|
29
29
|
"additionalProperties": false,
|
|
30
30
|
"properties": {
|
|
@@ -15,7 +15,11 @@
|
|
|
15
15
|
"properties": {
|
|
16
16
|
"planVersion": {
|
|
17
17
|
"type": "integer",
|
|
18
|
-
"
|
|
18
|
+
"enum": [
|
|
19
|
+
1,
|
|
20
|
+
2
|
|
21
|
+
],
|
|
22
|
+
"description": "Plan format and digest-scoping version. 1: legacy (every field except the top-level digest binds; commitTimestamp must equal createdAt). 2: T1.2 digest layering (record-layer fields status/createdAt/baseline/per-action status are excluded from the plan digest; commitTimestamp is derived from the HEAD commit committer date)."
|
|
19
23
|
},
|
|
20
24
|
"status": {
|
|
21
25
|
"type": "string",
|
|
@@ -242,7 +246,7 @@
|
|
|
242
246
|
"commitTimestamp": {
|
|
243
247
|
"type": "string",
|
|
244
248
|
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+00:00$",
|
|
245
|
-
"description": "
|
|
249
|
+
"description": "Frozen release commit timestamp in canonical UTC second precision. Written verbatim to GIT_AUTHOR_DATE and GIT_COMMITTER_DATE of the frozen release commit, so it always equals the commit's %aI and %cI byte-for-byte. v1 plans: the freeze timestamp sampled exactly once during production prepare, equal to the plan's createdAt. planVersion 2 plans: derived deterministically from the baseline headCommit's committer date, so identical sources freeze identical commits (not equal to createdAt, which remains the record-layer real clock)."
|
|
246
250
|
},
|
|
247
251
|
"parentCommit": {
|
|
248
252
|
"type": "string",
|
|
@@ -651,6 +651,20 @@
|
|
|
651
651
|
"pattern": "^[A-Z_][A-Z0-9_]*$"
|
|
652
652
|
},
|
|
653
653
|
"uniqueItems": true
|
|
654
|
+
},
|
|
655
|
+
"cacheable": {
|
|
656
|
+
"type": "boolean",
|
|
657
|
+
"description": "Opt this hook into the incremental result cache: when its cacheInputs fingerprint is unchanged and the last run succeeded, prepare replays the cached outcome instead of re-executing. Absence means the hook always runs in full. cacheable=true requires a non-empty cacheInputs (enforced at runtime)."
|
|
658
|
+
},
|
|
659
|
+
"cacheInputs": {
|
|
660
|
+
"type": "array",
|
|
661
|
+
"minItems": 1,
|
|
662
|
+
"items": {
|
|
663
|
+
"type": "string",
|
|
664
|
+
"minLength": 1
|
|
665
|
+
},
|
|
666
|
+
"uniqueItems": true,
|
|
667
|
+
"description": "Root-relative globs declaring the hook's full input set (source, scripts, config, lockfiles). The cache key fingerprints the content of every matched file; a glob that matches nothing fails closed. Must cover ALL inputs or the cache can return a false hit."
|
|
654
668
|
}
|
|
655
669
|
}
|
|
656
670
|
},
|
|
@@ -205,6 +205,7 @@ Options:
|
|
|
205
205
|
--ack-local-document-write Acknowledge the explicit local release-document write (docs refresh --write)
|
|
206
206
|
--acknowledge-hook-side-effects Acknowledge unsandboxed legacy hook execution
|
|
207
207
|
--acknowledge-gate-side-effects Acknowledge unsandboxed local verification gate execution
|
|
208
|
+
--no-hook-cache Force every prepare hook to run in full; neither read nor write the hook cache
|
|
208
209
|
--json Output results as JSON
|
|
209
210
|
--version Show version and exit
|
|
210
211
|
-h, --help Show this help message and exit
|
|
@@ -476,6 +477,7 @@ if (command === 'prepare') {
|
|
|
476
477
|
|
|
477
478
|
const hooksAuthorized = args.includes('--acknowledge-hook-side-effects');
|
|
478
479
|
const verificationGatesAuthorized = args.includes('--acknowledge-gate-side-effects');
|
|
480
|
+
const hookCache = !args.includes('--no-hook-cache');
|
|
479
481
|
const production = args.includes('--production');
|
|
480
482
|
const outputIdx = args.indexOf('--output');
|
|
481
483
|
const output = outputIdx !== -1 && args[outputIdx + 1] ? resolve(args[outputIdx + 1]) : undefined;
|
|
@@ -491,6 +493,7 @@ if (command === 'prepare') {
|
|
|
491
493
|
offline,
|
|
492
494
|
hooksAuthorized,
|
|
493
495
|
verificationGatesAuthorized,
|
|
496
|
+
hookCache,
|
|
494
497
|
production,
|
|
495
498
|
output,
|
|
496
499
|
runDir,
|