@fitlab-ai/agent-infra 0.9.13 → 0.9.15

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 (428) hide show
  1. package/README.md +10 -0
  2. package/README.zh-CN.md +10 -0
  3. package/bin/cli.ts +26 -9
  4. package/bin/internal-cli.sh +45 -0
  5. package/dist/bin/cli.js +173 -157
  6. package/dist/bin/internal-cli.js +126 -42
  7. package/dist/lib/agent-client.js +5 -0
  8. package/dist/lib/agent-clients/adapters/codex-lifecycle/capability-store.js +165 -27
  9. package/dist/lib/agent-clients/adapters/codex-lifecycle/sandbox-controller.js +3 -2
  10. package/dist/lib/defaults.json +103 -103
  11. package/dist/lib/fs/durable-write.js +37 -0
  12. package/dist/lib/fs/file-lock.js +111 -0
  13. package/dist/lib/host-control/audit.js +19 -0
  14. package/dist/lib/host-control/client.js +142 -0
  15. package/dist/lib/host-control/command.js +49 -0
  16. package/dist/lib/host-control/path.js +160 -0
  17. package/dist/lib/host-control/secure-fs.js +140 -0
  18. package/dist/lib/host-control/server.js +159 -0
  19. package/dist/lib/host-control/service.js +112 -0
  20. package/dist/lib/init.js +11 -2
  21. package/dist/lib/internal/agent-client.js +5 -2
  22. package/dist/lib/internal/cli-route-inventory.js +154 -0
  23. package/dist/lib/internal/codex-lifecycle.js +15 -12
  24. package/dist/lib/internal/codex-sandbox-controller.js +8 -2
  25. package/dist/lib/internal/demo-promotion.js +322 -0
  26. package/dist/lib/internal/demo-transcript.js +454 -0
  27. package/dist/lib/internal/git-workflow.js +10 -6
  28. package/dist/lib/internal/host-control.js +28 -0
  29. package/dist/lib/internal/manual-validation.js +322 -0
  30. package/dist/lib/internal/platform-checks.js +16 -4
  31. package/dist/lib/internal/platform-comment.js +16 -4
  32. package/dist/lib/internal/platform-context.js +4 -1
  33. package/dist/lib/internal/platform-issue.js +12 -4
  34. package/dist/lib/internal/platform-metadata.js +88 -0
  35. package/dist/lib/internal/platform-pr-review.js +16 -3
  36. package/dist/lib/internal/platform-pr.js +42 -14
  37. package/dist/lib/internal/platform-release-notes.js +6 -3
  38. package/dist/lib/internal/platform-security.js +93 -0
  39. package/dist/lib/internal/pr-review-grade.js +14 -3
  40. package/dist/lib/internal/release-workflow.js +82 -89
  41. package/dist/lib/internal/sandbox-control.js +171 -7
  42. package/dist/lib/internal/task-activity.js +13 -4
  43. package/dist/lib/internal/task-artifact.js +19 -107
  44. package/dist/lib/internal/task-context.js +4 -1
  45. package/dist/lib/internal/task-create.js +48 -14
  46. package/dist/lib/internal/task-delivery.js +4 -1
  47. package/dist/lib/internal/task-event.js +38 -35
  48. package/dist/lib/internal/task-finalization.js +4 -1
  49. package/dist/lib/internal/task-invalidation.js +4 -1
  50. package/dist/lib/internal/task-ledger.js +12 -1
  51. package/dist/lib/internal/task-lifecycle.js +4 -1
  52. package/dist/lib/internal/task-operation-registry.js +519 -0
  53. package/dist/lib/internal/task-orchestration.js +12 -0
  54. package/dist/lib/internal/task-override.js +10 -3
  55. package/dist/lib/internal/task-qualification.js +90 -0
  56. package/dist/lib/internal/task-review.js +10 -52
  57. package/dist/lib/internal/task-short-id.js +11 -1
  58. package/dist/lib/internal/task-snapshot.js +4 -1
  59. package/dist/lib/internal/task-validate.js +37 -12
  60. package/dist/lib/internal/task-verify.js +5 -1
  61. package/dist/lib/internal/task-warning.js +8 -1
  62. package/dist/lib/owned-path.js +33 -0
  63. package/dist/lib/platform/check-status.js +11 -0
  64. package/dist/lib/platform/comment-safety.js +229 -0
  65. package/dist/lib/platform/completion-backfill.js +1 -1
  66. package/dist/lib/platform/github-data.js +241 -0
  67. package/dist/lib/platform/github-provider.js +248 -26
  68. package/dist/lib/platform/issue-comments.js +146 -34
  69. package/dist/lib/platform/issues.js +1 -179
  70. package/dist/lib/platform/pr-change-report.js +6 -12
  71. package/dist/lib/platform/pr-checks.js +12 -65
  72. package/dist/lib/platform/pr-summary.js +83 -10
  73. package/dist/lib/platform/provider-contract.d.ts +67 -1
  74. package/dist/lib/platform/provider-contract.js +6 -2
  75. package/dist/lib/platform/provider-validation.js +76 -3
  76. package/dist/lib/platform/pull-requests.js +117 -275
  77. package/dist/lib/platform/repository-metadata.js +377 -0
  78. package/dist/lib/platform/security-alerts.js +155 -0
  79. package/dist/lib/platform/snapshots.js +2 -0
  80. package/dist/lib/platform/verification-sync.js +154 -162
  81. package/dist/lib/process-data/index.js +7 -0
  82. package/dist/lib/release/workflow.js +1 -1
  83. package/dist/lib/run/index.js +5 -0
  84. package/dist/lib/sandbox/commands/control-status.js +22 -0
  85. package/dist/lib/sandbox/commands/create.js +39 -8
  86. package/dist/lib/sandbox/commands/ls.js +5 -0
  87. package/dist/lib/sandbox/commands/rm.js +3 -807
  88. package/dist/lib/sandbox/commands/show.js +16 -0
  89. package/dist/lib/sandbox/control/audit.js +203 -0
  90. package/dist/lib/sandbox/control/client.js +125 -12
  91. package/dist/lib/sandbox/control/completed-reentry.js +85 -0
  92. package/dist/lib/sandbox/control/container-identity.js +28 -31
  93. package/dist/lib/sandbox/control/executor.js +233 -34
  94. package/dist/lib/sandbox/control/finalization-response.js +27 -0
  95. package/dist/lib/sandbox/control/identity-sentinel.js +107 -0
  96. package/dist/lib/sandbox/control/lifecycle.js +656 -128
  97. package/dist/lib/sandbox/control/native-file-lock.js +85 -0
  98. package/dist/lib/sandbox/control/protocol.js +55 -4
  99. package/dist/lib/sandbox/control/server.js +720 -79
  100. package/dist/lib/sandbox/control/state.js +63 -3
  101. package/dist/lib/sandbox/control/task-view.js +183 -0
  102. package/dist/lib/sandbox/control/task-workflow.js +74 -0
  103. package/dist/lib/sandbox/control/workflow-executor.js +99 -0
  104. package/dist/lib/sandbox/engines/authority.js +289 -0
  105. package/dist/lib/sandbox/engines/docker-exact-discovery.js +97 -0
  106. package/dist/lib/sandbox/index.js +7 -2
  107. package/dist/lib/sandbox/recovery.js +49 -5
  108. package/dist/lib/sandbox/removal.js +1717 -0
  109. package/dist/lib/sandbox/task-cleanup.js +217 -0
  110. package/dist/lib/sandbox/workspace-view.js +15 -15
  111. package/dist/lib/sandbox/worktree-safety.js +4 -1
  112. package/dist/lib/server/index.js +8 -0
  113. package/dist/lib/task/activity-intent.js +2 -1
  114. package/dist/lib/task/activity-log.js +30 -24
  115. package/dist/lib/task/artifact-command.js +101 -0
  116. package/dist/lib/task/artifact-lifecycle.js +71 -40
  117. package/dist/lib/task/artifact-name.js +36 -0
  118. package/dist/lib/task/artifact-operations.js +474 -0
  119. package/dist/lib/task/artifact-receipts.js +3 -15
  120. package/dist/lib/task/artifact-repair-intent.js +130 -0
  121. package/dist/lib/task/artifact-schema.js +127 -0
  122. package/dist/lib/task/capabilities.js +83 -19
  123. package/dist/lib/task/codex-orchestration.js +71 -25
  124. package/dist/lib/task/commit-identity.js +28 -0
  125. package/dist/lib/task/commit-operation.js +2 -16
  126. package/dist/lib/task/control-authority.js +375 -5
  127. package/dist/lib/task/control-recovery.js +128 -0
  128. package/dist/lib/task/create-service.js +103 -4
  129. package/dist/lib/task/create.js +80 -2
  130. package/dist/lib/task/decision-details.js +2 -46
  131. package/dist/lib/task/events.js +306 -76
  132. package/dist/lib/task/finalization-state.js +9 -0
  133. package/dist/lib/task/human-override.js +3 -6
  134. package/dist/lib/task/implementation-inputs.js +3 -3
  135. package/dist/lib/task/index.js +11 -3
  136. package/dist/lib/task/intermediate-cleanup.js +383 -0
  137. package/dist/lib/task/invalidation.js +18 -65
  138. package/dist/lib/task/ledger-intents.js +7 -22
  139. package/dist/lib/task/ledger.js +1 -3
  140. package/dist/lib/task/lifecycle.js +19 -1
  141. package/dist/lib/task/local-artifact-finalization.js +190 -290
  142. package/dist/lib/task/manual-validation-completion.js +26 -0
  143. package/dist/lib/task/manual-validation-evidence.js +130 -0
  144. package/dist/lib/task/manual-validation-receipt.js +101 -0
  145. package/dist/lib/task/manual-validation-shared.js +40 -0
  146. package/dist/lib/task/manual-validation-transaction.js +243 -0
  147. package/dist/lib/task/markdown.js +47 -0
  148. package/dist/lib/task/orchestration.js +206 -69
  149. package/dist/lib/task/qualification-audit.js +476 -0
  150. package/dist/lib/task/qualification-confirmation.js +109 -0
  151. package/dist/lib/task/qualification-intents.js +148 -0
  152. package/dist/lib/task/review-artifacts.js +23 -40
  153. package/dist/lib/task/review-command.js +25 -0
  154. package/dist/lib/task/review-finalization.js +146 -97
  155. package/dist/lib/task/review-fingerprint.js +2 -2
  156. package/dist/lib/task/sections.js +34 -54
  157. package/dist/lib/task/verification-config.js +11 -0
  158. package/dist/lib/task/verification-engine.js +170 -327
  159. package/dist/lib/task/verification.js +1 -1
  160. package/dist/lib/task/workflow-command.js +17 -0
  161. package/dist/lib/task/workflow-warning-intents.js +0 -16
  162. package/dist/lib/task/workflow-warnings.js +28 -2
  163. package/dist/lib/update.js +2 -0
  164. package/dist/lifecycle-build-manifest.json +3 -3
  165. package/lib/agent-client.ts +9 -0
  166. package/lib/agent-clients/adapters/codex-lifecycle/capability-store.ts +223 -33
  167. package/lib/agent-clients/adapters/codex-lifecycle/sandbox-controller.ts +3 -2
  168. package/lib/fs/durable-write.ts +29 -0
  169. package/lib/fs/file-lock.ts +113 -0
  170. package/lib/host-control/audit.ts +22 -0
  171. package/lib/host-control/client.ts +172 -0
  172. package/lib/host-control/command.ts +60 -0
  173. package/lib/host-control/path.ts +167 -0
  174. package/lib/host-control/secure-fs.ts +135 -0
  175. package/lib/host-control/server.ts +180 -0
  176. package/lib/host-control/service.ts +133 -0
  177. package/lib/init.ts +15 -2
  178. package/lib/internal/agent-client.ts +4 -2
  179. package/lib/internal/cli-route-inventory.ts +142 -0
  180. package/lib/internal/codex-lifecycle.ts +14 -12
  181. package/lib/internal/codex-sandbox-controller.ts +7 -2
  182. package/lib/internal/demo-promotion.ts +354 -0
  183. package/lib/internal/demo-transcript.ts +419 -0
  184. package/lib/internal/git-workflow.ts +9 -6
  185. package/lib/internal/host-control.ts +28 -0
  186. package/lib/internal/manual-validation.ts +306 -0
  187. package/lib/internal/platform-checks.ts +12 -4
  188. package/lib/internal/platform-comment.ts +12 -4
  189. package/lib/internal/platform-context.ts +3 -1
  190. package/lib/internal/platform-issue.ts +11 -4
  191. package/lib/internal/platform-metadata.ts +70 -0
  192. package/lib/internal/platform-pr-review.ts +14 -3
  193. package/lib/internal/platform-pr.ts +38 -14
  194. package/lib/internal/platform-release-notes.ts +5 -3
  195. package/lib/internal/platform-security.ts +83 -0
  196. package/lib/internal/pr-review-grade.ts +10 -3
  197. package/lib/internal/release-workflow.ts +91 -87
  198. package/lib/internal/sandbox-control.ts +181 -6
  199. package/lib/internal/task-activity.ts +12 -4
  200. package/lib/internal/task-artifact.ts +15 -79
  201. package/lib/internal/task-context.ts +3 -1
  202. package/lib/internal/task-create.ts +76 -15
  203. package/lib/internal/task-delivery.ts +3 -1
  204. package/lib/internal/task-event.ts +21 -10
  205. package/lib/internal/task-finalization.ts +3 -1
  206. package/lib/internal/task-invalidation.ts +3 -1
  207. package/lib/internal/task-ledger.ts +11 -1
  208. package/lib/internal/task-lifecycle.ts +3 -1
  209. package/lib/internal/task-operation-registry.ts +590 -0
  210. package/lib/internal/task-orchestration.ts +12 -0
  211. package/lib/internal/task-override.ts +9 -3
  212. package/lib/internal/task-qualification.ts +61 -0
  213. package/lib/internal/task-review.ts +7 -50
  214. package/lib/internal/task-short-id.ts +10 -1
  215. package/lib/internal/task-snapshot.ts +3 -1
  216. package/lib/internal/task-validate.ts +32 -12
  217. package/lib/internal/task-verify.ts +4 -1
  218. package/lib/internal/task-warning.ts +7 -1
  219. package/lib/owned-path.ts +26 -0
  220. package/lib/platform/check-status.ts +9 -0
  221. package/lib/platform/comment-safety.ts +255 -0
  222. package/lib/platform/completion-backfill.ts +1 -1
  223. package/lib/platform/github-data.ts +322 -0
  224. package/lib/platform/github-provider.ts +244 -27
  225. package/lib/platform/issue-comments.ts +159 -35
  226. package/lib/platform/issues.ts +4 -245
  227. package/lib/platform/pr-change-report.ts +6 -12
  228. package/lib/platform/pr-checks.ts +13 -77
  229. package/lib/platform/pr-summary.ts +88 -11
  230. package/lib/platform/provider-contract.ts +78 -3
  231. package/lib/platform/provider-validation.ts +85 -3
  232. package/lib/platform/pull-requests.ts +129 -348
  233. package/lib/platform/repository-metadata.ts +453 -0
  234. package/lib/platform/security-alerts.ts +191 -0
  235. package/lib/platform/snapshots.ts +53 -0
  236. package/lib/platform/verification-sync.ts +171 -177
  237. package/lib/process-data/index.ts +7 -0
  238. package/lib/release/workflow.ts +3 -3
  239. package/lib/run/index.ts +5 -0
  240. package/lib/sandbox/commands/control-status.ts +26 -0
  241. package/lib/sandbox/commands/create.ts +53 -12
  242. package/lib/sandbox/commands/ls.ts +7 -0
  243. package/lib/sandbox/commands/rm.ts +3 -996
  244. package/lib/sandbox/commands/show.ts +16 -0
  245. package/lib/sandbox/control/audit.ts +253 -0
  246. package/lib/sandbox/control/client.ts +150 -13
  247. package/lib/sandbox/control/completed-reentry.ts +98 -0
  248. package/lib/sandbox/control/container-identity.ts +27 -43
  249. package/lib/sandbox/control/executor.ts +262 -37
  250. package/lib/sandbox/control/finalization-response.ts +29 -0
  251. package/lib/sandbox/control/identity-sentinel.ts +137 -0
  252. package/lib/sandbox/control/lifecycle.ts +672 -18
  253. package/lib/sandbox/control/native-file-lock.ts +108 -0
  254. package/lib/sandbox/control/protocol.ts +80 -8
  255. package/lib/sandbox/control/server.ts +779 -82
  256. package/lib/sandbox/control/state.ts +84 -3
  257. package/lib/sandbox/control/task-view.ts +240 -0
  258. package/lib/sandbox/control/task-workflow.ts +95 -0
  259. package/lib/sandbox/control/workflow-executor.ts +102 -0
  260. package/lib/sandbox/engines/authority.ts +365 -0
  261. package/lib/sandbox/engines/docker-exact-discovery.ts +132 -0
  262. package/lib/sandbox/index.ts +9 -2
  263. package/lib/sandbox/recovery.ts +49 -6
  264. package/lib/sandbox/removal.ts +2144 -0
  265. package/lib/sandbox/task-cleanup.ts +209 -0
  266. package/lib/sandbox/workspace-view.ts +26 -18
  267. package/lib/sandbox/worktree-safety.ts +4 -1
  268. package/lib/server/index.ts +10 -0
  269. package/lib/task/activity-intent.ts +2 -2
  270. package/lib/task/activity-log.ts +27 -19
  271. package/lib/task/artifact-command.ts +104 -0
  272. package/lib/task/artifact-lifecycle.ts +66 -39
  273. package/lib/task/artifact-name.ts +55 -0
  274. package/lib/task/artifact-operations.ts +580 -0
  275. package/lib/task/artifact-receipts.ts +3 -14
  276. package/lib/task/artifact-repair-intent.ts +152 -0
  277. package/lib/task/artifact-schema.ts +163 -0
  278. package/lib/task/capabilities.ts +82 -22
  279. package/lib/task/codex-orchestration.ts +85 -24
  280. package/lib/task/commit-identity.ts +31 -0
  281. package/lib/task/commit-operation.ts +2 -16
  282. package/lib/task/control-authority.ts +513 -6
  283. package/lib/task/control-recovery.ts +174 -0
  284. package/lib/task/create-service.ts +131 -6
  285. package/lib/task/create.ts +83 -1
  286. package/lib/task/decision-details.ts +3 -71
  287. package/lib/task/events.ts +292 -75
  288. package/lib/task/finalization-state.ts +11 -0
  289. package/lib/task/human-override.ts +3 -8
  290. package/lib/task/implementation-inputs.ts +3 -3
  291. package/lib/task/index.ts +16 -3
  292. package/lib/task/intermediate-cleanup.ts +455 -0
  293. package/lib/task/invalidation.ts +18 -62
  294. package/lib/task/ledger-intents.ts +7 -24
  295. package/lib/task/ledger.ts +1 -3
  296. package/lib/task/lifecycle.ts +17 -1
  297. package/lib/task/local-artifact-finalization.ts +223 -388
  298. package/lib/task/manual-validation-completion.ts +40 -0
  299. package/lib/task/manual-validation-evidence.ts +209 -0
  300. package/lib/task/manual-validation-receipt.ts +152 -0
  301. package/lib/task/manual-validation-shared.ts +50 -0
  302. package/lib/task/manual-validation-transaction.ts +304 -0
  303. package/lib/task/markdown.ts +70 -0
  304. package/lib/task/orchestration.ts +191 -68
  305. package/lib/task/qualification-audit.ts +588 -0
  306. package/lib/task/qualification-confirmation.ts +117 -0
  307. package/lib/task/qualification-intents.ts +150 -0
  308. package/lib/task/review-artifacts.ts +21 -41
  309. package/lib/task/review-command.ts +23 -0
  310. package/lib/task/review-finalization.ts +154 -153
  311. package/lib/task/review-fingerprint.ts +2 -2
  312. package/lib/task/sections.ts +33 -52
  313. package/lib/task/verification-config.ts +12 -0
  314. package/lib/task/verification-engine.ts +165 -370
  315. package/lib/task/verification-types.ts +17 -0
  316. package/lib/task/verification.ts +1 -1
  317. package/lib/task/workflow-command.ts +18 -0
  318. package/lib/task/workflow-warning-intents.ts +0 -13
  319. package/lib/task/workflow-warnings.ts +21 -2
  320. package/lib/update.ts +6 -0
  321. package/package.json +7 -2
  322. package/templates/.agents/hooks/lifecycle-delegation.js +6 -6
  323. package/templates/.agents/rules/README.en.md +2 -0
  324. package/templates/.agents/rules/README.zh-CN.md +2 -0
  325. package/templates/.agents/rules/decision-qualification.en.md +22 -0
  326. package/templates/.agents/rules/decision-qualification.zh-CN.md +22 -0
  327. package/templates/.agents/rules/evidence-reporting.en.md +28 -0
  328. package/templates/.agents/rules/evidence-reporting.zh-CN.md +28 -0
  329. package/templates/.agents/rules/label-milestone-setup.en.md +7 -7
  330. package/templates/.agents/rules/label-milestone-setup.zh-CN.md +7 -7
  331. package/templates/.agents/rules/local-artifact-repair.en.md +5 -1
  332. package/templates/.agents/rules/local-artifact-repair.zh-CN.md +5 -1
  333. package/templates/.agents/rules/security-alerts.en.md +8 -8
  334. package/templates/.agents/rules/security-alerts.zh-CN.md +8 -8
  335. package/templates/.agents/rules/testing-discipline.en.md +2 -0
  336. package/templates/.agents/rules/testing-discipline.zh-CN.md +2 -0
  337. package/templates/.agents/scripts/package.json +3 -0
  338. package/templates/.agents/skills/analyze-task/SKILL.en.md +15 -2
  339. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +19 -2
  340. package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -12
  341. package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -12
  342. package/templates/.agents/skills/close-codescan/SKILL.en.md +2 -2
  343. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +2 -2
  344. package/templates/.agents/skills/close-dependabot/SKILL.en.md +2 -2
  345. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +2 -2
  346. package/templates/.agents/skills/code-task/SKILL.en.md +14 -1
  347. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +14 -1
  348. package/templates/.agents/skills/code-task/config/verify.en.json +5 -14
  349. package/templates/.agents/skills/code-task/config/verify.zh-CN.json +5 -14
  350. package/templates/.agents/skills/code-task/reference/code-rules.en.md +5 -4
  351. package/templates/.agents/skills/code-task/reference/code-rules.zh-CN.md +5 -4
  352. package/templates/.agents/skills/code-task/reference/dual-mode.en.md +1 -1
  353. package/templates/.agents/skills/code-task/reference/dual-mode.zh-CN.md +1 -1
  354. package/templates/.agents/skills/code-task/reference/fix-mode.en.md +3 -1
  355. package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +3 -1
  356. package/templates/.agents/skills/code-task/reference/report-template.en.md +42 -15
  357. package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +39 -12
  358. package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +37 -21
  359. package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +37 -21
  360. package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +1 -1
  361. package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +1 -1
  362. package/templates/.agents/skills/complete-manual-validation/reference/report-template.en.md +4 -0
  363. package/templates/.agents/skills/complete-manual-validation/reference/report-template.zh-CN.md +4 -0
  364. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +16 -7
  365. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +16 -7
  366. package/templates/.agents/skills/complete-task/SKILL.en.md +10 -23
  367. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +10 -23
  368. package/templates/.agents/skills/create-task/SKILL.en.md +8 -0
  369. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +7 -0
  370. package/templates/.agents/skills/import-codescan/SKILL.en.md +1 -1
  371. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +1 -1
  372. package/templates/.agents/skills/import-dependabot/SKILL.en.md +1 -1
  373. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +1 -1
  374. package/templates/.agents/skills/init-labels/SKILL.en.md +8 -8
  375. package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +8 -8
  376. package/templates/.agents/skills/init-milestones/SKILL.en.md +9 -11
  377. package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +9 -11
  378. package/templates/.agents/skills/plan-task/SKILL.en.md +14 -1
  379. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +16 -1
  380. package/templates/.agents/skills/plan-task/config/verify.en.json +4 -14
  381. package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +4 -14
  382. package/templates/.agents/skills/release/SKILL.en.md +7 -3
  383. package/templates/.agents/skills/release/SKILL.zh-CN.md +7 -3
  384. package/templates/.agents/skills/review-analysis/SKILL.en.md +14 -1
  385. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +14 -1
  386. package/templates/.agents/skills/review-analysis/config/verify.en.json +1 -18
  387. package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +1 -18
  388. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +50 -23
  389. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +45 -18
  390. package/templates/.agents/skills/review-code/SKILL.en.md +14 -1
  391. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +14 -1
  392. package/templates/.agents/skills/review-code/config/verify.en.json +1 -23
  393. package/templates/.agents/skills/review-code/config/verify.zh-CN.json +1 -23
  394. package/templates/.agents/skills/review-code/reference/report-template.en.md +49 -22
  395. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +45 -18
  396. package/templates/.agents/skills/review-plan/SKILL.en.md +14 -1
  397. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +14 -1
  398. package/templates/.agents/skills/review-plan/config/verify.en.json +1 -18
  399. package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +1 -18
  400. package/templates/.agents/skills/review-plan/reference/report-template.en.md +49 -22
  401. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +45 -18
  402. package/templates/.agents/skills/review-pr/SKILL.en.md +5 -1
  403. package/templates/.agents/skills/review-pr/SKILL.zh-CN.md +5 -1
  404. package/templates/.agents/skills/review-pr/reference/report-template.en.md +4 -3
  405. package/templates/.agents/skills/review-pr/reference/report-template.zh-CN.md +4 -3
  406. package/templates/.agents/skills/run-manual-validation/SKILL.en.md +25 -4
  407. package/templates/.agents/skills/run-manual-validation/SKILL.zh-CN.md +25 -4
  408. package/templates/.agents/skills/run-manual-validation/reference/discovery-and-execution.en.md +4 -1
  409. package/templates/.agents/skills/run-manual-validation/reference/discovery-and-execution.zh-CN.md +4 -1
  410. package/templates/.agents/skills/run-manual-validation/reference/report-template.en.md +5 -1
  411. package/templates/.agents/skills/run-manual-validation/reference/report-template.zh-CN.md +5 -1
  412. package/templates/.agents/skills/run-task/SKILL.en.md +1 -1
  413. package/templates/.agents/skills/run-task/SKILL.zh-CN.md +1 -1
  414. package/templates/.agents/skills/test/SKILL.en.md +29 -7
  415. package/templates/.agents/skills/test/SKILL.zh-CN.md +29 -7
  416. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +14 -0
  417. package/templates/.agents/templates/task.en.md +6 -0
  418. package/templates/.agents/templates/task.zh-CN.md +6 -0
  419. package/templates/.claude/commands/run-manual-validation.en.md +1 -1
  420. package/templates/.claude/commands/run-manual-validation.zh-CN.md +1 -1
  421. package/dist/lib/platform/adapters.js +0 -56
  422. package/lib/platform/adapters.ts +0 -197
  423. package/templates/.agents/scripts/security-alerts.github.sh +0 -151
  424. package/templates/.agents/scripts/security-alerts.sh +0 -31
  425. package/templates/.agents/skills/init-labels/scripts/init-labels.github.sh +0 -146
  426. package/templates/.agents/skills/init-labels/scripts/init-labels.sh +0 -32
  427. package/templates/.agents/skills/init-milestones/scripts/init-milestones.github.sh +0 -294
  428. package/templates/.agents/skills/init-milestones/scripts/init-milestones.sh +0 -6
@@ -23,11 +23,31 @@ Execute the project's full test workflow including compilation checks and unit t
23
23
 
24
24
  Confirm no compilation errors.
25
25
 
26
- ## 2. Run Unit Tests by Layer
26
+ ## 2. Run Tests by Layer
27
27
 
28
- This project uses three test layers as an optional optimization; if the test suite is small, all layers may map to the same full test command.
28
+ This project uses test layers as an optional optimization; if the test suite is small, all layers may map to the same full test command.
29
29
 
30
- ### smoke (target <5s)
30
+ ### fast smoke (reference target <10s)
31
+
32
+ ```bash
33
+ # TODO: Replace with this project's fast smoke subset command
34
+ # npm run test:smoke:fast (Node.js)
35
+ # pytest -m "not slow" (Python)
36
+ # go test -short ./... (Go)
37
+ ```
38
+
39
+ Use for code-task inner loops when the project provides a build-free fast path. It should cover the same tests as smoke while skipping redundant compilation or generation.
40
+
41
+ ### platform-smoke (cross-platform boundary)
42
+
43
+ ```bash
44
+ # TODO: Replace with this project's cross-platform integration subset command
45
+ # npm run test:platform-smoke:fast (Node.js)
46
+ ```
47
+
48
+ Use for real CLI, git, shell, or subprocess tests moved out of the unit tier while preserving their original Windows/macOS execution boundary.
49
+
50
+ ### smoke (reference target <10s)
31
51
 
32
52
  ```bash
33
53
  # TODO: Replace with this project's smoke subset command
@@ -37,11 +57,11 @@ This project uses three test layers as an optional optimization; if the test sui
37
57
  ```
38
58
 
39
59
  Use for:
40
- - code-task inner loops
41
- - save-and-run / frequent feedback
60
+ - after completing an implementation step
61
+ - save-and-run / frequent feedback when no fast path exists
42
62
  - project structure, configuration, and template contract checks
43
63
 
44
- ### core (target <15s)
64
+ ### core (reference target <95s)
45
65
 
46
66
  ```bash
47
67
  # TODO: Replace with this project's core subset command
@@ -55,7 +75,7 @@ Use for:
55
75
  - final verification before writing code.md / code-r{N}.md
56
76
  - local gate before pushing a PR
57
77
 
58
- ### full (complete test suite)
78
+ ### full (reference target <100s)
59
79
 
60
80
  ```bash
61
81
  # TODO: Replace with this project's full test command
@@ -72,6 +92,8 @@ Use for:
72
92
 
73
93
  If the project is not layered yet, smoke / core / full may all map to the same full test command; layering is a feedback-speed optimization, not a prerequisite for using the collaboration workflow.
74
94
 
95
+ Reference targets are feedback budgets, not merge gates. If coverage is collected, document whether it runs only on the main branch and whether it blocks acceptance.
96
+
75
97
  ## 3. Output Results
76
98
 
77
99
  Report test result summary:
@@ -21,11 +21,31 @@ description: >
21
21
 
22
22
  确认没有编译错误。
23
23
 
24
- ## 2. 运行单元测试(按层级选择)
24
+ ## 2. 运行测试(按层级选择)
25
25
 
26
- 三层测试是可选的反馈速度优化;如果测试套件较小,所有层级都可以映射到同一个完整测试命令。
26
+ 测试层级是可选的反馈速度优化;如果测试套件较小,所有层级都可以映射到同一个完整测试命令。
27
27
 
28
- ### smoke(目标 <5s)
28
+ ### fast smoke(参考目标 <10s)
29
+
30
+ ```bash
31
+ # TODO:替换为项目的 fast smoke 子集命令
32
+ # npm run test:smoke:fast (Node.js)
33
+ # pytest -m "not slow" (Python)
34
+ # go test -short ./... (Go)
35
+ ```
36
+
37
+ 当项目提供不重复构建的快速路径时,用于 code-task 内循环。它应覆盖与 smoke 相同的测试,同时跳过重复的编译或生成步骤。
38
+
39
+ ### platform-smoke(跨平台边界)
40
+
41
+ ```bash
42
+ # TODO:替换为项目的跨平台 integration 子集命令
43
+ # npm run test:platform-smoke:fast (Node.js)
44
+ ```
45
+
46
+ 用于承接从 unit 层迁出的真实 CLI、git、shell 或子进程测试,同时保留其原有 Windows/macOS 执行边界。
47
+
48
+ ### smoke(参考目标 <10s)
29
49
 
30
50
  ```bash
31
51
  # TODO:替换为项目的 smoke 子集命令
@@ -35,11 +55,11 @@ description: >
35
55
  ```
36
56
 
37
57
  适用场景:
38
- - code-task 内循环
39
- - 保存即跑 / 频繁反馈
58
+ - 完成一个实施步骤后
59
+ - 项目没有 fast 路径时的保存即跑 / 频繁反馈
40
60
  - 仅断言项目结构、配置、模板契约
41
61
 
42
- ### core(目标 <15s)
62
+ ### core(参考目标 <95s)
43
63
 
44
64
  ```bash
45
65
  # TODO:替换为项目的 core 子集命令
@@ -53,7 +73,7 @@ description: >
53
73
  - 写 code.md / code-r{N}.md 报告前的最终验证
54
74
  - 推送 PR 前的本地把关
55
75
 
56
- ### full(完整测试套件)
76
+ ### full(参考目标 <100s)
57
77
 
58
78
  ```bash
59
79
  # TODO:替换为项目的完整测试命令
@@ -70,6 +90,8 @@ description: >
70
90
 
71
91
  如果项目尚未分层,smoke / core / full 可以全部使用完整测试命令;分层不是使用协作工作流的前置条件。
72
92
 
93
+ 参考目标是反馈预算,不是合并门禁。如果采集覆盖率,应说明是否仅在 main 分支运行,以及是否阻塞验收。
94
+
73
95
  ## 3. 输出结果
74
96
 
75
97
  报告测试结果摘要:
@@ -1269,6 +1269,9 @@ function syncTemplates(projectRoot, templateRootOverride) {
1269
1269
  }
1270
1270
  }
1271
1271
  const version = resolveVersionFromTemplateRoot(templateRoot);
1272
+ const projectTemplateRoot = path.join(projectRoot, 'templates');
1273
+ const sourceRepositoryTemplate = fs.existsSync(projectTemplateRoot)
1274
+ && fs.realpathSync(templateRoot) === fs.realpathSync(projectTemplateRoot);
1272
1275
 
1273
1276
  const { project, org, language: lang = 'en' } = cfg;
1274
1277
  const platformType = cfg.platform?.type || DEFAULTS.platform.type;
@@ -1771,6 +1774,17 @@ function syncTemplates(projectRoot, templateRootOverride) {
1771
1774
  for (const [tgt, src] of selected) {
1772
1775
  if (expectedTargets) expectedTargets.add(tgt);
1773
1776
 
1777
+ if (sourceRepositoryTemplate && tgt === '.github/workflows/pr-label.yml') {
1778
+ report.managed.protected.push({
1779
+ target: tgt,
1780
+ reason: 'source-repository',
1781
+ baseline: trustedBaseline(managedBaselines[tgt]),
1782
+ local: fs.existsSync(path.join(projectRoot, tgt)) ? sha256(fs.readFileSync(path.join(projectRoot, tgt))) : null,
1783
+ template: sha256(renderContent(fs.readFileSync(path.join(templateRoot, src), 'utf8'), vars))
1784
+ });
1785
+ continue;
1786
+ }
1787
+
1774
1788
  if (matchesAny(tgt, merged) || matchesAny(tgt, ejected)) {
1775
1789
  report.managed.skippedMerged.push(tgt);
1776
1790
  continue;
@@ -36,10 +36,16 @@ delivery_remote_head: # Most recent successfully delivered task branch
36
36
 
37
37
  ### Constraints
38
38
 
39
+ | constraint_id | statement | status | authority | source | evidence | derived_from | approval_evidence |
40
+ | --- | --- | --- | --- | --- | --- | --- | --- |
41
+
39
42
  ### Confirmed Decisions
40
43
 
41
44
  ### Candidate and Rejected Options
42
45
 
46
+ | candidate_id | statement | status | constraint_ids | impact | evidence |
47
+ | --- | --- | --- | --- | --- | --- |
48
+
43
49
  ### Acceptance Criteria
44
50
 
45
51
  ### Open Questions
@@ -36,10 +36,16 @@ delivery_remote_head: # 最近一次成功交付到 remote 的任务分
36
36
 
37
37
  ### 约束
38
38
 
39
+ | constraint_id | statement | status | authority | source | evidence | derived_from | approval_evidence |
40
+ | --- | --- | --- | --- | --- | --- | --- | --- |
41
+
39
42
  ### 已确认决策
40
43
 
41
44
  ### 候选与否决方案
42
45
 
46
+ | candidate_id | statement | status | constraint_ids | impact | evidence |
47
+ | --- | --- | --- | --- | --- | --- |
48
+
43
49
  ### 验收标准
44
50
 
45
51
  ### 未决事项
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: "Run host-side task validation and record sanitized evidence"
3
- usage: "/run-manual-validation [--task <ref> | -t <ref>] [--scope snapshot|inplace] [--timeout <ms>] [--format text|json] -- <command...>"
3
+ usage: "/run-manual-validation [--task <ref> | -t <ref> | --branch <ref>] [--scope snapshot|inplace] [--timeout <ms>] [--format text|json] -- <command...>"
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: "运行宿主侧任务校验并记录去敏证据"
3
- usage: "/run-manual-validation [--task <ref> | -t <ref>] [--scope snapshot|inplace] [--timeout <ms>] [--format text|json] -- <command...>"
3
+ usage: "/run-manual-validation [--task <ref> | -t <ref> | --branch <ref>] [--scope snapshot|inplace] [--timeout <ms>] [--format text|json] -- <command...>"
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
@@ -1,56 +0,0 @@
1
- const adapters = new Map();
2
- function registerPlatformAdapter(adapter) {
3
- if (!adapter.type.trim())
4
- throw new Error('Platform adapter type is required');
5
- adapters.set(adapter.type, adapter);
6
- }
7
- function getPlatformAdapter(type) {
8
- return type ? adapters.get(type) ?? null : null;
9
- }
10
- function registerPlatformCapabilities(type, capabilities) {
11
- const adapter = adapters.get(type) ?? { type };
12
- adapters.set(type, { ...adapter, ...capabilities });
13
- }
14
- function hasPlatformCapability(type, capability) {
15
- const adapter = getPlatformAdapter(type);
16
- if (capability === 'change-request')
17
- return typeof adapter?.inspectChangeRequest === 'function';
18
- if (capability === 'issue-closing-change-requests')
19
- return typeof adapter?.inspectIssueClosingChangeRequests === 'function';
20
- if (capability === 'required-checks')
21
- return typeof adapter?.inspectRequiredChecks === 'function';
22
- return typeof adapter?.resolveChangeRequestGitEvidence === 'function';
23
- }
24
- function inspectPlatformIssueClosingChangeRequests(type, context) {
25
- const adapter = getPlatformAdapter(type);
26
- return adapter?.inspectIssueClosingChangeRequests?.(context) ??
27
- unsupported(type, 'issue closing change-request inspection');
28
- }
29
- function unsupported(type, capability) {
30
- return {
31
- ok: false,
32
- error: {
33
- code: 'PLATFORM_CAPABILITY_UNSUPPORTED',
34
- message: `Platform '${type || 'none'}' does not provide ${capability}`,
35
- retryable: false
36
- }
37
- };
38
- }
39
- function inspectPlatformChangeRequest(type, context) {
40
- const adapter = getPlatformAdapter(type);
41
- return adapter?.inspectChangeRequest?.(context) ?? unsupported(type, 'change-request inspection');
42
- }
43
- function inspectPlatformRequiredChecks(type, context) {
44
- const adapter = getPlatformAdapter(type);
45
- return adapter?.inspectRequiredChecks?.(context) ?? unsupported(type, 'required-checks inspection');
46
- }
47
- function resolvePlatformChangeRequestGitEvidence(type, context) {
48
- const adapter = getPlatformAdapter(type);
49
- return adapter?.resolveChangeRequestGitEvidence?.(context) ??
50
- unsupported(type, 'change-request Git evidence');
51
- }
52
- function listPlatformAdapters() {
53
- return [...adapters.keys()].sort();
54
- }
55
- export { getPlatformAdapter, hasPlatformCapability, inspectPlatformChangeRequest, inspectPlatformIssueClosingChangeRequests, inspectPlatformRequiredChecks, listPlatformAdapters, registerPlatformAdapter, registerPlatformCapabilities, resolvePlatformChangeRequestGitEvidence };
56
- //# sourceMappingURL=adapters.js.map
@@ -1,197 +0,0 @@
1
- import type { PlatformError, PlatformResult } from './types.ts';
2
- import type { ResourceIdentity } from './resource-identity.ts';
3
-
4
- type PlatformAdapterContext = {
5
- cwd: string;
6
- gitRemote?: (cwd: string) => string | null;
7
- client?: unknown;
8
- };
9
-
10
- type PlatformMergeability = {
11
- state: 'mergeable' | 'conflicting' | 'unknown';
12
- detail: string | null;
13
- };
14
-
15
- type PlatformChangeRequestSnapshot = {
16
- repository: string;
17
- number: number;
18
- nodeId: string;
19
- url: string;
20
- state: 'open' | 'closed';
21
- title: string;
22
- body: string;
23
- draft: boolean;
24
- head: { repository: string; ref: string; sha: string };
25
- base: { repository: string; ref: string; sha: string };
26
- mergedAt: string | null;
27
- mergeCommitSha: string | null;
28
- labels: string[];
29
- assignees: string[];
30
- milestone: string | null;
31
- mergeability?: PlatformMergeability;
32
- identity?: ResourceIdentity;
33
- };
34
-
35
- type PlatformCheckSnapshot = {
36
- name: string;
37
- bucket: 'pass' | 'fail' | 'pending' | 'cancel';
38
- workflow?: string | null;
39
- conclusion?: string | null;
40
- detailsUrl?: string | null;
41
- startedAt?: string | null;
42
- completedAt?: string | null;
43
- };
44
-
45
- type PlatformInspectionResult<T> = {
46
- ok: boolean;
47
- value?: T;
48
- error?: PlatformError;
49
- };
50
-
51
- type ChangeRequestInspectionContext = PlatformAdapterContext & {
52
- repository: string;
53
- number: number;
54
- };
55
-
56
- type IssueClosingChangeRequestsContext = PlatformAdapterContext & {
57
- repository: string;
58
- issueNumber: number;
59
- };
60
-
61
- type RequiredChecksInspectionContext = ChangeRequestInspectionContext & {
62
- headSha: string;
63
- };
64
-
65
- type ChangeRequestGitEvidenceContext = ChangeRequestInspectionContext & {
66
- pullRequest: PlatformChangeRequestSnapshot;
67
- };
68
-
69
- type PlatformChangeRequestGitEvidenceSpec = {
70
- remoteUrl: string;
71
- reviewedHeadRef: string;
72
- targetHeadRef: string;
73
- };
74
-
75
- type PlatformAdapter = {
76
- type: string;
77
- resolveContext(context: PlatformAdapterContext): PlatformResult;
78
- inspectChangeRequest?(
79
- context: ChangeRequestInspectionContext
80
- ): PlatformInspectionResult<PlatformChangeRequestSnapshot>;
81
- inspectIssueClosingChangeRequests?(
82
- context: IssueClosingChangeRequestsContext
83
- ): PlatformInspectionResult<PlatformChangeRequestSnapshot[]>;
84
- inspectRequiredChecks?(
85
- context: RequiredChecksInspectionContext
86
- ): PlatformInspectionResult<PlatformCheckSnapshot[]>;
87
- resolveChangeRequestGitEvidence?(
88
- context: ChangeRequestGitEvidenceContext
89
- ): PlatformInspectionResult<PlatformChangeRequestGitEvidenceSpec>;
90
- };
91
-
92
- const adapters = new Map<string, PlatformAdapter>();
93
-
94
- function registerPlatformAdapter(adapter: PlatformAdapter): void {
95
- if (!adapter.type.trim()) throw new Error('Platform adapter type is required');
96
- adapters.set(adapter.type, adapter);
97
- }
98
-
99
- function getPlatformAdapter(type: string | null): PlatformAdapter | null {
100
- return type ? adapters.get(type) ?? null : null;
101
- }
102
-
103
- function registerPlatformCapabilities(
104
- type: string,
105
- capabilities: Pick<
106
- PlatformAdapter,
107
- 'inspectChangeRequest' | 'inspectIssueClosingChangeRequests' | 'inspectRequiredChecks' | 'resolveChangeRequestGitEvidence'
108
- >
109
- ): void {
110
- const adapter = adapters.get(type) ?? { type } as PlatformAdapter;
111
- adapters.set(type, { ...adapter, ...capabilities });
112
- }
113
-
114
- function hasPlatformCapability(
115
- type: string | null,
116
- capability: 'change-request' | 'issue-closing-change-requests' | 'required-checks' | 'change-request-git-evidence'
117
- ): boolean {
118
- const adapter = getPlatformAdapter(type);
119
- if (capability === 'change-request') return typeof adapter?.inspectChangeRequest === 'function';
120
- if (capability === 'issue-closing-change-requests') return typeof adapter?.inspectIssueClosingChangeRequests === 'function';
121
- if (capability === 'required-checks') return typeof adapter?.inspectRequiredChecks === 'function';
122
- return typeof adapter?.resolveChangeRequestGitEvidence === 'function';
123
- }
124
-
125
- function inspectPlatformIssueClosingChangeRequests(
126
- type: string | null,
127
- context: IssueClosingChangeRequestsContext
128
- ): PlatformInspectionResult<PlatformChangeRequestSnapshot[]> {
129
- const adapter = getPlatformAdapter(type);
130
- return adapter?.inspectIssueClosingChangeRequests?.(context) ??
131
- unsupported(type, 'issue closing change-request inspection');
132
- }
133
-
134
- function unsupported<T>(type: string | null, capability: string): PlatformInspectionResult<T> {
135
- return {
136
- ok: false,
137
- error: {
138
- code: 'PLATFORM_CAPABILITY_UNSUPPORTED',
139
- message: `Platform '${type || 'none'}' does not provide ${capability}`,
140
- retryable: false
141
- }
142
- };
143
- }
144
-
145
- function inspectPlatformChangeRequest(
146
- type: string | null,
147
- context: ChangeRequestInspectionContext
148
- ): PlatformInspectionResult<PlatformChangeRequestSnapshot> {
149
- const adapter = getPlatformAdapter(type);
150
- return adapter?.inspectChangeRequest?.(context) ?? unsupported(type, 'change-request inspection');
151
- }
152
-
153
- function inspectPlatformRequiredChecks(
154
- type: string | null,
155
- context: RequiredChecksInspectionContext
156
- ): PlatformInspectionResult<PlatformCheckSnapshot[]> {
157
- const adapter = getPlatformAdapter(type);
158
- return adapter?.inspectRequiredChecks?.(context) ?? unsupported(type, 'required-checks inspection');
159
- }
160
-
161
- function resolvePlatformChangeRequestGitEvidence(
162
- type: string | null,
163
- context: ChangeRequestGitEvidenceContext
164
- ): PlatformInspectionResult<PlatformChangeRequestGitEvidenceSpec> {
165
- const adapter = getPlatformAdapter(type);
166
- return adapter?.resolveChangeRequestGitEvidence?.(context) ??
167
- unsupported(type, 'change-request Git evidence');
168
- }
169
-
170
- function listPlatformAdapters(): string[] {
171
- return [...adapters.keys()].sort();
172
- }
173
-
174
- export {
175
- getPlatformAdapter,
176
- hasPlatformCapability,
177
- inspectPlatformChangeRequest,
178
- inspectPlatformIssueClosingChangeRequests,
179
- inspectPlatformRequiredChecks,
180
- listPlatformAdapters,
181
- registerPlatformAdapter,
182
- registerPlatformCapabilities,
183
- resolvePlatformChangeRequestGitEvidence
184
- };
185
- export type {
186
- ChangeRequestGitEvidenceContext,
187
- ChangeRequestInspectionContext,
188
- IssueClosingChangeRequestsContext,
189
- PlatformAdapter,
190
- PlatformAdapterContext,
191
- PlatformChangeRequestGitEvidenceSpec,
192
- PlatformChangeRequestSnapshot,
193
- PlatformCheckSnapshot,
194
- PlatformInspectionResult,
195
- PlatformMergeability,
196
- RequiredChecksInspectionContext
197
- };
@@ -1,151 +0,0 @@
1
- #!/bin/sh
2
-
3
- set -e
4
-
5
- operation="${1:-}"
6
- shift || true
7
- number=""
8
- reason=""
9
- comment_file=""
10
-
11
- while [ "$#" -gt 0 ]; do
12
- case "$1" in
13
- --number)
14
- number="${2:-}"
15
- shift
16
- ;;
17
- --reason)
18
- reason="${2:-}"
19
- shift
20
- ;;
21
- --comment-file)
22
- comment_file="${2:-}"
23
- shift
24
- ;;
25
- *)
26
- echo "Unknown option: $1" >&2
27
- exit 2
28
- ;;
29
- esac
30
- shift
31
- done
32
-
33
- emit_error() {
34
- code="$1"
35
- message="$2"
36
- node - "$operation" "$code" "$message" <<'NODE'
37
- const [operation, code, message] = process.argv.slice(2);
38
- process.stdout.write(`${JSON.stringify({ status: "failed", operation, error: { code, message } })}\n`);
39
- NODE
40
- }
41
-
42
- case "$operation" in
43
- read-dependabot|dismiss-dependabot|read-codescan|dismiss-codescan) ;;
44
- *)
45
- emit_error "SECURITY_OPERATION_INVALID" "Unknown security alert operation."
46
- exit 1
47
- ;;
48
- esac
49
-
50
- case "$number" in
51
- ''|*[!0-9]*)
52
- emit_error "SECURITY_NUMBER_INVALID" "Alert number must be a positive integer."
53
- exit 1
54
- ;;
55
- esac
56
-
57
- if ! command -v gh >/dev/null 2>&1; then
58
- emit_error "PLATFORM_CLI_MISSING" "The platform CLI is not installed."
59
- exit 1
60
- fi
61
- if ! gh auth token >/dev/null 2>&1; then
62
- emit_error "PLATFORM_NOT_AUTHENTICATED" "The platform CLI is not authenticated."
63
- exit 1
64
- fi
65
- repo="$(gh repo view --json nameWithOwner --jq '.nameWithOwner')" || {
66
- emit_error "PLATFORM_REPOSITORY_UNAVAILABLE" "Unable to access the current repository."
67
- exit 1
68
- }
69
-
70
- case "$operation" in
71
- *dependabot*) endpoint="repos/$repo/dependabot/alerts/$number" ;;
72
- *codescan*) endpoint="repos/$repo/code-scanning/alerts/$number" ;;
73
- esac
74
-
75
- tmpdir="$(mktemp -d)"
76
- trap 'rm -rf "$tmpdir"' EXIT HUP INT TERM
77
-
78
- if [ "$operation" = "read-dependabot" ] || [ "$operation" = "read-codescan" ]; then
79
- if ! gh api "$endpoint" > "$tmpdir/response.json" 2> "$tmpdir/error.txt"; then
80
- emit_error "SECURITY_API_FAILED" "Unable to read the security alert."
81
- exit 2
82
- fi
83
- else
84
- if [ -z "$reason" ] || [ -z "$comment_file" ] || [ ! -f "$comment_file" ]; then
85
- emit_error "SECURITY_DISMISS_INPUT_INVALID" "Dismissal reason and comment file are required."
86
- exit 1
87
- fi
88
- if ! gh api "$endpoint" > "$tmpdir/current.json" 2> "$tmpdir/error.txt"; then
89
- emit_error "SECURITY_API_FAILED" "Unable to read the security alert before dismissal."
90
- exit 2
91
- fi
92
- state="$(node - "$tmpdir/current.json" <<'NODE'
93
- const fs = require("node:fs");
94
- try {
95
- const alert = JSON.parse(fs.readFileSync(process.argv[2], "utf8"));
96
- process.stdout.write(typeof alert.state === "string" ? alert.state : "invalid");
97
- } catch {
98
- process.stdout.write("invalid");
99
- }
100
- NODE
101
- )"
102
- case "$state" in
103
- open) ;;
104
- dismissed|fixed)
105
- node - "$operation" "$tmpdir/current.json" <<'NODE'
106
- const fs = require("node:fs");
107
- const [operation, responsePath] = process.argv.slice(2);
108
- const data = JSON.parse(fs.readFileSync(responsePath, "utf8"));
109
- process.stdout.write(`${JSON.stringify({ status: "no-op", operation, data })}\n`);
110
- NODE
111
- exit 0
112
- ;;
113
- *)
114
- emit_error "SECURITY_RESPONSE_INVALID" "The platform returned an alert without a valid state."
115
- exit 1
116
- ;;
117
- esac
118
- node - "$reason" "$comment_file" > "$tmpdir/payload.json" <<'NODE'
119
- const fs = require("node:fs");
120
- const [reason, commentFile] = process.argv.slice(2);
121
- process.stdout.write(JSON.stringify({
122
- state: "dismissed",
123
- dismissed_reason: reason,
124
- dismissed_comment: fs.readFileSync(commentFile, "utf8")
125
- }));
126
- NODE
127
- if ! gh api --method PATCH "$endpoint" --input "$tmpdir/payload.json" > "$tmpdir/response.json" 2> "$tmpdir/error.txt"; then
128
- emit_error "SECURITY_API_FAILED" "Unable to dismiss the security alert."
129
- exit 2
130
- fi
131
- fi
132
-
133
- node - "$operation" "$tmpdir/response.json" <<'NODE'
134
- const fs = require("node:fs");
135
- const [operation, responsePath] = process.argv.slice(2);
136
- const raw = fs.readFileSync(responsePath, "utf8").trim();
137
- let data = null;
138
- if (raw) {
139
- try {
140
- data = JSON.parse(raw);
141
- } catch {
142
- process.stdout.write(`${JSON.stringify({
143
- status: "failed",
144
- operation,
145
- error: { code: "SECURITY_RESPONSE_INVALID", message: "The platform returned invalid JSON." }
146
- })}\n`);
147
- process.exit(1);
148
- }
149
- }
150
- process.stdout.write(`${JSON.stringify({ status: "applied", operation, data })}\n`);
151
- NODE
@@ -1,31 +0,0 @@
1
- #!/bin/sh
2
-
3
- set -e
4
-
5
- operation="${1:-}"
6
-
7
- node - "$operation" <<'NODE'
8
- const operation = process.argv[2] || "";
9
- const known = new Set([
10
- "read-dependabot",
11
- "dismiss-dependabot",
12
- "read-codescan",
13
- "dismiss-codescan"
14
- ]);
15
- const payload = known.has(operation)
16
- ? {
17
- status: "degraded",
18
- operation,
19
- error: {
20
- code: "PLATFORM_SECURITY_UNSUPPORTED",
21
- message: "The current platform does not provide a security alert adapter."
22
- }
23
- }
24
- : {
25
- status: "failed",
26
- operation,
27
- error: { code: "SECURITY_OPERATION_INVALID", message: "Unknown security alert operation." }
28
- };
29
- process.stdout.write(`${JSON.stringify(payload)}\n`);
30
- process.exit(known.has(operation) ? 0 : 1);
31
- NODE