release-skill 0.9.32 → 0.9.34

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 (118) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +2 -2
  4. package/.cursor-plugin/plugin.json +1 -1
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/.qoder-plugin/plugin.json +1 -1
  7. package/CHANGELOG.md +54 -0
  8. package/INSTALL.md +2 -2
  9. package/INSTALL.zh-CN.md +2 -2
  10. package/README.md +31 -13
  11. package/README.zh-CN.md +17 -13
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/release-skill.bundle.mjs +5855 -4045
  14. package/adapters/claude/schemas/.render-manifest.json +8 -4
  15. package/adapters/claude/schemas/release-plan.schema.json +85 -0
  16. package/adapters/claude/schemas/release-project.schema.json +18 -0
  17. package/adapters/claude/schemas/test-intake.schema.json +217 -0
  18. package/adapters/claude/skills/release-assess/SKILL.md +11 -0
  19. package/adapters/claude/skills/release-config/SKILL.md +6 -0
  20. package/adapters/claude/skills/release-help/SKILL.md +20 -4
  21. package/adapters/claude/skills/release-prepare/SKILL.md +11 -2
  22. package/adapters/claude/skills/release-setup/SKILL.md +15 -2
  23. package/adapters/claude/skills/release-verify/SKILL.md +2 -0
  24. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  25. package/adapters/codex/bin/release-skill.bundle.mjs +5855 -4045
  26. package/adapters/codex/schemas/.render-manifest.json +8 -4
  27. package/adapters/codex/schemas/release-plan.schema.json +85 -0
  28. package/adapters/codex/schemas/release-project.schema.json +18 -0
  29. package/adapters/codex/schemas/test-intake.schema.json +217 -0
  30. package/adapters/codex/skills/release-assess/SKILL.md +11 -0
  31. package/adapters/codex/skills/release-config/SKILL.md +6 -0
  32. package/adapters/codex/skills/release-help/SKILL.md +20 -4
  33. package/adapters/codex/skills/release-prepare/SKILL.md +11 -2
  34. package/adapters/codex/skills/release-setup/SKILL.md +15 -2
  35. package/adapters/codex/skills/release-verify/SKILL.md +2 -0
  36. package/adapters/cursor/.cursor-plugin/plugin.json +1 -1
  37. package/adapters/cursor/bin/release-skill.bundle.mjs +5855 -4045
  38. package/adapters/cursor/schemas/.render-manifest.json +8 -4
  39. package/adapters/cursor/schemas/release-plan.schema.json +85 -0
  40. package/adapters/cursor/schemas/release-project.schema.json +18 -0
  41. package/adapters/cursor/schemas/test-intake.schema.json +217 -0
  42. package/adapters/cursor/skills/release-assess/SKILL.md +11 -0
  43. package/adapters/cursor/skills/release-config/SKILL.md +6 -0
  44. package/adapters/cursor/skills/release-help/SKILL.md +20 -4
  45. package/adapters/cursor/skills/release-prepare/SKILL.md +11 -2
  46. package/adapters/cursor/skills/release-setup/SKILL.md +15 -2
  47. package/adapters/cursor/skills/release-verify/SKILL.md +2 -0
  48. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  49. package/adapters/kimi/bin/release-skill.bundle.mjs +5855 -4045
  50. package/adapters/kimi/schemas/.render-manifest.json +8 -4
  51. package/adapters/kimi/schemas/release-plan.schema.json +85 -0
  52. package/adapters/kimi/schemas/release-project.schema.json +18 -0
  53. package/adapters/kimi/schemas/test-intake.schema.json +217 -0
  54. package/adapters/kimi/skills/release-assess/SKILL.md +11 -0
  55. package/adapters/kimi/skills/release-config/SKILL.md +6 -0
  56. package/adapters/kimi/skills/release-help/SKILL.md +20 -4
  57. package/adapters/kimi/skills/release-prepare/SKILL.md +11 -2
  58. package/adapters/kimi/skills/release-setup/SKILL.md +15 -2
  59. package/adapters/kimi/skills/release-verify/SKILL.md +2 -0
  60. package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
  61. package/adapters/qoder/bin/release-skill.bundle.mjs +5855 -4045
  62. package/adapters/qoder/schemas/.render-manifest.json +8 -4
  63. package/adapters/qoder/schemas/release-plan.schema.json +85 -0
  64. package/adapters/qoder/schemas/release-project.schema.json +18 -0
  65. package/adapters/qoder/schemas/test-intake.schema.json +217 -0
  66. package/adapters/qoder/skills/release-assess/SKILL.md +11 -0
  67. package/adapters/qoder/skills/release-config/SKILL.md +6 -0
  68. package/adapters/qoder/skills/release-help/SKILL.md +20 -4
  69. package/adapters/qoder/skills/release-prepare/SKILL.md +11 -2
  70. package/adapters/qoder/skills/release-setup/SKILL.md +15 -2
  71. package/adapters/qoder/skills/release-verify/SKILL.md +2 -0
  72. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  73. package/adapters/workbuddy/bin/release-skill.bundle.mjs +5855 -4045
  74. package/adapters/workbuddy/schemas/.render-manifest.json +8 -4
  75. package/adapters/workbuddy/schemas/release-plan.schema.json +85 -0
  76. package/adapters/workbuddy/schemas/release-project.schema.json +18 -0
  77. package/adapters/workbuddy/schemas/test-intake.schema.json +217 -0
  78. package/adapters/workbuddy/skills/release-assess/SKILL.md +11 -0
  79. package/adapters/workbuddy/skills/release-config/SKILL.md +6 -0
  80. package/adapters/workbuddy/skills/release-help/SKILL.md +20 -4
  81. package/adapters/workbuddy/skills/release-prepare/SKILL.md +11 -2
  82. package/adapters/workbuddy/skills/release-setup/SKILL.md +15 -2
  83. package/adapters/workbuddy/skills/release-verify/SKILL.md +2 -0
  84. package/bin/release-skill-cli.mjs +37 -2
  85. package/bin/release-skill.bundle.mjs +5855 -4045
  86. package/package.json +1 -1
  87. package/platform-manifest.json +4 -4
  88. package/references/.render-manifest.json +6 -6
  89. package/references/01-state-machine.md +12 -1
  90. package/references/02-project-config.md +20 -0
  91. package/references/05-evidence-and-errors.md +30 -0
  92. package/schemas/.render-manifest.json +8 -4
  93. package/schemas/release-plan.schema.json +85 -0
  94. package/schemas/release-project.schema.json +18 -0
  95. package/schemas/test-intake.schema.json +217 -0
  96. package/skills/release-assess/SKILL.md +11 -0
  97. package/skills/release-config/SKILL.md +6 -0
  98. package/skills/release-help/SKILL.md +20 -4
  99. package/skills/release-prepare/SKILL.md +11 -2
  100. package/skills/release-setup/SKILL.md +15 -2
  101. package/skills/release-verify/SKILL.md +2 -0
  102. package/skills-src/release-assess/SKILL.md +11 -0
  103. package/skills-src/release-config/SKILL.md +6 -0
  104. package/skills-src/release-help/SKILL.md +20 -4
  105. package/skills-src/release-prepare/SKILL.md +11 -2
  106. package/skills-src/release-setup/SKILL.md +15 -2
  107. package/skills-src/release-verify/SKILL.md +2 -0
  108. package/src/commands/approve.mjs +13 -0
  109. package/src/commands/prepare.mjs +501 -5
  110. package/src/commands/publish.mjs +2 -0
  111. package/src/commands/reconcile.mjs +2 -0
  112. package/src/commands/route.mjs +32 -7
  113. package/src/commands/setup.mjs +13 -6
  114. package/src/commands/ship.mjs +168 -5
  115. package/src/core/config.mjs +5 -0
  116. package/src/core/plan.mjs +3 -1
  117. package/src/core/test-candidate.mjs +649 -0
  118. package/src/core/test-intake.mjs +645 -0
@@ -5,7 +5,7 @@ import { basename, dirname, isAbsolute, join, normalize, resolve } from 'node:pa
5
5
  import { execFile as execFileCb } from 'node:child_process';
6
6
  import { promisify } from 'node:util';
7
7
  import { parseNodeMajor, meetsMinimum, computeReadinessStatus } from '../src/core/node-version.mjs';
8
- import { EXIT_CODE_MAP, MISSING_PARAMETERS, registerPathRedactor } from '../src/core/errors.mjs';
8
+ import { EXIT_CODE_MAP, MISSING_PARAMETERS, ReleaseError, registerPathRedactor } from '../src/core/errors.mjs';
9
9
  import { redactSensitivePaths } from '../src/core/redact.mjs';
10
10
 
11
11
  // Process output errors can be emitted immediately after a large console
@@ -1362,7 +1362,11 @@ if (command === 'prepare') {
1362
1362
  const hooksAuthorized = args.includes('--acknowledge-hook-side-effects');
1363
1363
  const verificationGatesAuthorized = args.includes('--acknowledge-gate-side-effects');
1364
1364
  const hookCache = !args.includes('--no-hook-cache');
1365
- const production = args.includes('--production');
1365
+ const candidateIdx = args.indexOf('--candidate');
1366
+ const candidatePath = candidateIdx !== -1 && args[candidateIdx + 1] && !args[candidateIdx + 1].startsWith('--')
1367
+ ? args[candidateIdx + 1]
1368
+ : undefined;
1369
+ const production = args.includes('--production') || candidatePath !== undefined;
1366
1370
  const workflowIdx = args.indexOf('--workflow');
1367
1371
  const workflow = workflowIdx !== -1 && args[workflowIdx + 1] ? args[workflowIdx + 1] : 'full';
1368
1372
  // Test-selection flag (2026-08-18 investigation §4.4): reserved for a
@@ -1385,23 +1389,54 @@ if (command === 'prepare') {
1385
1389
  }
1386
1390
 
1387
1391
  try {
1392
+ if (candidateIdx !== -1 && !candidatePath) {
1393
+ throw new ReleaseError(MISSING_PARAMETERS, '--candidate requires a path value');
1394
+ }
1388
1395
  const { prepareRelease } = await import('../src/commands/prepare.mjs');
1389
1396
  const { readFile: readFileFs } = await import('node:fs/promises');
1390
1397
  const result = await prepareRelease({
1391
1398
  root,
1392
1399
  version: targetVersion,
1400
+ versionExplicit: targetVersion !== undefined,
1393
1401
  offline,
1402
+ offlineExplicit: args.includes('--offline') || args.includes('--online'),
1394
1403
  hooksAuthorized,
1395
1404
  verificationGatesAuthorized,
1396
1405
  hookCache,
1397
1406
  production,
1398
1407
  workflow,
1408
+ workflowExplicit: workflowIdx !== -1,
1399
1409
  testSelection,
1400
1410
  output,
1401
1411
  runDir,
1412
+ ...(candidatePath ? { candidatePath } : {}),
1402
1413
  ...(hasUnitSelection ? { unitIds } : {}),
1403
1414
  });
1404
1415
 
1416
+ if (result?.status === 'NEEDS_INPUT') {
1417
+ const payload = {
1418
+ command: 'prepare',
1419
+ error: 'GATE_FAILED',
1420
+ status: 'NEEDS_INPUT',
1421
+ message: result.message,
1422
+ candidatePath: result.candidatePath,
1423
+ candidateSha256: result.candidateSha256,
1424
+ subjectDigest: result.subjectDigest,
1425
+ evidenceDir: result.evidenceDir,
1426
+ requirements: result.requirements ?? [],
1427
+ gaps: result.gaps ?? [],
1428
+ nextSteps: result.nextSteps ?? [],
1429
+ exitCode: result.exitCode ?? 13,
1430
+ };
1431
+ if (hasJson) {
1432
+ console.log(JSON.stringify(payload, null, 2));
1433
+ } else {
1434
+ console.error(`Error: ${result.message}`);
1435
+ if (result.candidatePath) console.error(`Candidate: ${result.candidatePath}`);
1436
+ }
1437
+ await exitAfterFlush(result.exitCode ?? 13);
1438
+ }
1439
+
1405
1440
  // Keep stdout compact and stable. The immutable plan remains the single
1406
1441
  // authority at planPath; callers should not have to carry its full
1407
1442
  // source closure, manifests and action payloads through chat/logs.