coding-agent-harness 1.0.4 → 1.0.6

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 (279) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/CONTRIBUTING.md +2 -2
  3. package/LICENSE +661 -21
  4. package/LICENSE-EXCEPTION.md +37 -0
  5. package/README.md +96 -4
  6. package/README.zh-CN.md +75 -4
  7. package/SKILL.md +52 -51
  8. package/dist/build-dist.mjs +189 -0
  9. package/dist/check-dist-observation.mjs +428 -0
  10. package/dist/check-harness.mjs +489 -0
  11. package/dist/check-import-graph.mjs +511 -0
  12. package/dist/check-runtime-emit.mjs +304 -0
  13. package/dist/check-type-boundaries.mjs +139 -0
  14. package/dist/commands/dashboard-command.mjs +80 -0
  15. package/dist/commands/migration-command.mjs +152 -0
  16. package/dist/commands/preset-command.mjs +91 -0
  17. package/dist/commands/task-command.mjs +324 -0
  18. package/dist/harness.mjs +304 -0
  19. package/dist/lib/capability-registry.mjs +643 -0
  20. package/dist/lib/check-module-parallel.mjs +227 -0
  21. package/dist/lib/check-profiles.mjs +414 -0
  22. package/dist/lib/check-task-contracts.mjs +54 -0
  23. package/dist/lib/core-shared.mjs +254 -0
  24. package/dist/lib/dashboard-data.mjs +608 -0
  25. package/dist/lib/dashboard-workbench.mjs +334 -0
  26. package/dist/lib/dashboard-writer.mjs +200 -0
  27. package/dist/lib/git-status-summary.mjs +45 -0
  28. package/dist/lib/governance-index-generator.mjs +236 -0
  29. package/dist/lib/governance-sync.mjs +617 -0
  30. package/dist/lib/governance-table-boundary.mjs +161 -0
  31. package/{scripts → dist}/lib/harness-core.mjs +3 -0
  32. package/dist/lib/harness-paths.mjs +338 -0
  33. package/dist/lib/lesson-maintenance.mjs +139 -0
  34. package/dist/lib/markdown-utils.mjs +193 -0
  35. package/dist/lib/migration-planner.mjs +439 -0
  36. package/dist/lib/migration-support.mjs +317 -0
  37. package/dist/lib/phase-kind.mjs +46 -0
  38. package/dist/lib/preset-audit-contracts.mjs +40 -0
  39. package/dist/lib/preset-engine.mjs +516 -0
  40. package/dist/lib/preset-registry.mjs +831 -0
  41. package/dist/lib/preset-resource-contracts.mjs +83 -0
  42. package/dist/lib/review-confirm-git-gate.mjs +244 -0
  43. package/dist/lib/status-builder.mjs +87 -0
  44. package/{scripts → dist}/lib/status-dashboard-renderer.mjs +48 -47
  45. package/dist/lib/structure-migration.mjs +404 -0
  46. package/dist/lib/subagent-authorization-audit.mjs +198 -0
  47. package/dist/lib/task-audit-metadata.mjs +376 -0
  48. package/dist/lib/task-audit-migration.mjs +355 -0
  49. package/dist/lib/task-completion-consistency.mjs +29 -0
  50. package/dist/lib/task-index.mjs +133 -0
  51. package/dist/lib/task-lesson-candidates.mjs +239 -0
  52. package/dist/lib/task-lesson-sedimentation.mjs +300 -0
  53. package/dist/lib/task-lifecycle/create-task-helpers.mjs +84 -0
  54. package/dist/lib/task-lifecycle/phase-sync.mjs +82 -0
  55. package/dist/lib/task-lifecycle/review-confirm.mjs +93 -0
  56. package/dist/lib/task-lifecycle/review-gates.mjs +62 -0
  57. package/dist/lib/task-lifecycle/review-submission.mjs +52 -0
  58. package/dist/lib/task-lifecycle/scaffold-provenance.mjs +54 -0
  59. package/dist/lib/task-lifecycle/template-files.mjs +52 -0
  60. package/dist/lib/task-lifecycle/text-utils.mjs +26 -0
  61. package/dist/lib/task-lifecycle.mjs +611 -0
  62. package/dist/lib/task-metadata.mjs +116 -0
  63. package/dist/lib/task-review-model.mjs +474 -0
  64. package/dist/lib/task-scanner.mjs +439 -0
  65. package/dist/lib/task-tombstone-commands.mjs +125 -0
  66. package/dist/postinstall.mjs +14 -0
  67. package/dist/run-built-tests.mjs +84 -0
  68. package/docs-release/README.md +1 -0
  69. package/docs-release/architecture/overview.md +13 -13
  70. package/docs-release/architecture/overview.zh-CN.md +13 -13
  71. package/docs-release/architecture/system-explainer/01-system-overview.md +218 -0
  72. package/docs-release/architecture/system-explainer/02-module-dependency.md +257 -0
  73. package/docs-release/architecture/system-explainer/03-task-lifecycle.md +304 -0
  74. package/docs-release/architecture/system-explainer/04-check-and-governance.md +241 -0
  75. package/docs-release/architecture/system-explainer/05-data-flow.md +276 -0
  76. package/docs-release/architecture/system-explainer/06-preset-and-migration.md +300 -0
  77. package/docs-release/architecture/system-explainer/README.md +67 -0
  78. package/docs-release/architecture/system-explainer/en-US/01-system-overview.md +227 -0
  79. package/docs-release/architecture/system-explainer/en-US/02-module-dependency.md +263 -0
  80. package/docs-release/architecture/system-explainer/en-US/03-task-lifecycle.md +319 -0
  81. package/docs-release/architecture/system-explainer/en-US/04-check-and-governance.md +252 -0
  82. package/docs-release/architecture/system-explainer/en-US/05-data-flow.md +290 -0
  83. package/docs-release/architecture/system-explainer/en-US/06-preset-and-migration.md +320 -0
  84. package/docs-release/architecture/system-explainer/en-US/README.md +70 -0
  85. package/docs-release/guides/agent-installation.en-US.md +22 -15
  86. package/docs-release/guides/agent-installation.md +23 -15
  87. package/docs-release/guides/contributing.md +3 -3
  88. package/docs-release/guides/contributing.zh-CN.md +3 -3
  89. package/docs-release/guides/document-audience-and-surfaces.en-US.md +10 -10
  90. package/docs-release/guides/document-audience-and-surfaces.md +10 -10
  91. package/docs-release/guides/legacy-migration-agent-prompt.md +25 -2
  92. package/docs-release/guides/legacy-migration-agent-prompt.zh-CN.md +25 -2
  93. package/docs-release/guides/migration-playbook.en-US.md +63 -1
  94. package/docs-release/guides/migration-playbook.md +59 -1
  95. package/docs-release/guides/parent-control-repository-pattern.en-US.md +25 -25
  96. package/docs-release/guides/parent-control-repository-pattern.md +25 -25
  97. package/docs-release/guides/preset-development.md +28 -4
  98. package/docs-release/guides/repository-operating-models.en-US.md +21 -21
  99. package/docs-release/guides/repository-operating-models.md +21 -21
  100. package/docs-release/guides/task-state-machine.en-US.md +35 -18
  101. package/docs-release/guides/task-state-machine.md +35 -18
  102. package/docs-release/guides/typescript-runtime-migration-closeout.md +96 -0
  103. package/examples/minimal-project/AGENTS.md +2 -2
  104. package/examples/minimal-project/coding-agent-harness/harness.yaml +14 -0
  105. package/examples/minimal-project/coding-agent-harness/planning/tasks/demo-task/INDEX.md +60 -0
  106. package/examples/minimal-project/coding-agent-harness/planning/tasks/demo-task/progress.md +11 -0
  107. package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/review.md +1 -1
  108. package/package.json +22 -13
  109. package/presets/legacy-migration/preset.yaml +5 -5
  110. package/presets/legacy-migration/templates/execution_strategy.append.md +1 -1
  111. package/presets/lesson-sedimentation/preset.yaml +3 -3
  112. package/presets/module/preset.yaml +2 -2
  113. package/presets/module/templates/execution_strategy.append.md +1 -1
  114. package/presets/module/templates/task_plan.append.md +3 -3
  115. package/presets/standard-task/preset.yaml +2 -2
  116. package/references/adversarial-review-standard.md +2 -2
  117. package/references/agents-md-pattern.md +14 -14
  118. package/references/cadence-ledger.md +1 -1
  119. package/references/ci-cd-standard.md +1 -1
  120. package/references/delivery-operating-model-standard.md +4 -4
  121. package/references/docs-directory-standard.md +65 -159
  122. package/references/external-source-intake-standard.md +10 -10
  123. package/references/harness-ledger.md +6 -6
  124. package/references/legacy-12-phase-bootstrap.md +2 -2
  125. package/references/lessons-governance.md +15 -15
  126. package/references/long-running-task-standard.md +6 -6
  127. package/references/module-parallel-standard.md +34 -34
  128. package/references/planning-loop.md +6 -6
  129. package/references/project-onboarding-audit.md +4 -4
  130. package/references/regression-system.md +2 -2
  131. package/references/repo-governance-standard.md +4 -4
  132. package/references/review-routing-standard.md +1 -1
  133. package/references/ssot-governance.md +19 -19
  134. package/references/taskr-gap-analysis.md +5 -5
  135. package/references/walkthrough-closeout.md +14 -14
  136. package/references/worktree-parallel.md +3 -3
  137. package/skills/preset-creator/references/complex-task-skeleton/brief.md +11 -0
  138. package/skills/preset-creator/references/complex-task-skeleton/task_plan.md +1 -1
  139. package/skills/preset-creator/references/preset-package-skeleton.md +5 -5
  140. package/templates/AGENTS.md.template +31 -29
  141. package/templates/architecture/README.md +4 -4
  142. package/templates/architecture/service-catalog.md +2 -2
  143. package/templates/architecture/services/service-template.md +1 -1
  144. package/templates/dashboard/assets/app-src/00-state.js +12 -0
  145. package/templates/dashboard/assets/app-src/10-router.js +3 -0
  146. package/templates/dashboard/assets/app-src/20-overview.js +13 -3
  147. package/templates/dashboard/assets/app-src/35-task-detail.js +46 -6
  148. package/templates/dashboard/assets/app-src/40-modules.js +1 -1
  149. package/templates/dashboard/assets/app-src/55-presets.js +375 -0
  150. package/templates/dashboard/assets/app-src/60-shared.js +3 -1
  151. package/templates/dashboard/assets/app-src/90-bindings.js +131 -0
  152. package/templates/dashboard/assets/app.css +583 -0
  153. package/templates/dashboard/assets/app.css.manifest.json +1 -0
  154. package/templates/dashboard/assets/app.js +585 -11
  155. package/templates/dashboard/assets/app.manifest.json +1 -0
  156. package/templates/dashboard/assets/css-src/00-foundation.css +4 -0
  157. package/templates/dashboard/assets/css-src/40-detail-modules-migration.css +62 -0
  158. package/templates/dashboard/assets/css-src/45-presets.css +516 -0
  159. package/templates/dashboard/assets/i18n.js +144 -4
  160. package/templates/development/README.md +10 -10
  161. package/templates/development/cross-repo-debugging.md +3 -3
  162. package/templates/development/external-context/service-template.md +2 -2
  163. package/templates/development/external-source-packs/README.md +4 -4
  164. package/templates/integrations/README.md +4 -4
  165. package/templates/integrations/api-contract.md +2 -2
  166. package/templates/integrations/event-contract.md +2 -2
  167. package/templates/integrations/third-party/vendor-template.md +2 -2
  168. package/templates/integrations/webhook-contract.md +2 -2
  169. package/templates/ledger/Harness-Ledger.md +1 -1
  170. package/templates/planning/INDEX.md +88 -0
  171. package/templates/planning/brief.md +1 -1
  172. package/templates/planning/module_session_prompt.md +2 -1
  173. package/templates/planning/review.md +0 -18
  174. package/templates/planning/task_plan.md +5 -44
  175. package/templates/planning/visual_map.md +13 -9
  176. package/templates/planning/visual_map.simple.md +52 -0
  177. package/templates/planning/walkthrough.md +47 -0
  178. package/templates/reference/docs-library-standard.md +8 -8
  179. package/templates/reference/execution-workflow-standard.md +29 -2
  180. package/templates/reference/external-source-intake-standard.md +15 -15
  181. package/templates/reference/repo-governance-standard.md +1 -1
  182. package/templates/ssot/Module-Registry.md +1 -1
  183. package/templates/walkthrough/walkthrough-template.md +2 -2
  184. package/templates-zh-CN/AGENTS.md.template +31 -29
  185. package/templates-zh-CN/CLAUDE.md.template +1 -1
  186. package/templates-zh-CN/architecture/README.md +4 -4
  187. package/templates-zh-CN/architecture/service-catalog.md +2 -2
  188. package/templates-zh-CN/architecture/services/service-template.md +1 -1
  189. package/templates-zh-CN/development/README.md +10 -10
  190. package/templates-zh-CN/development/cross-repo-debugging.md +3 -3
  191. package/templates-zh-CN/development/external-context/service-template.md +2 -2
  192. package/templates-zh-CN/development/external-source-packs/README.md +4 -4
  193. package/templates-zh-CN/integrations/README.md +4 -4
  194. package/templates-zh-CN/integrations/api-contract.md +2 -2
  195. package/templates-zh-CN/integrations/event-contract.md +2 -2
  196. package/templates-zh-CN/integrations/third-party/vendor-template.md +2 -2
  197. package/templates-zh-CN/integrations/webhook-contract.md +2 -2
  198. package/templates-zh-CN/ledger/Harness-Ledger.md +1 -1
  199. package/templates-zh-CN/lessons/lesson-arch-process-change.md +1 -1
  200. package/templates-zh-CN/lessons/lesson-new-doc.md +3 -3
  201. package/templates-zh-CN/lessons/lesson-ref-change.md +4 -4
  202. package/templates-zh-CN/planning/INDEX.md +87 -0
  203. package/templates-zh-CN/planning/brief.md +1 -1
  204. package/templates-zh-CN/planning/module_session_prompt.md +12 -11
  205. package/templates-zh-CN/planning/review.md +0 -18
  206. package/templates-zh-CN/planning/task_plan.md +3 -63
  207. package/templates-zh-CN/planning/visual_map.md +14 -7
  208. package/templates-zh-CN/planning/visual_map.simple.md +48 -0
  209. package/templates-zh-CN/planning/walkthrough.md +47 -0
  210. package/templates-zh-CN/reference/adversarial-review-standard.md +2 -2
  211. package/templates-zh-CN/reference/delivery-operating-model-standard.md +3 -3
  212. package/templates-zh-CN/reference/docs-library-standard.md +28 -28
  213. package/templates-zh-CN/reference/execution-workflow-standard.md +32 -7
  214. package/templates-zh-CN/reference/external-source-intake-standard.md +16 -16
  215. package/templates-zh-CN/reference/harness-ledger-standard.md +6 -6
  216. package/templates-zh-CN/reference/regression-ssot-governance.md +2 -2
  217. package/templates-zh-CN/reference/repo-governance-standard.md +1 -1
  218. package/templates-zh-CN/reference/review-routing-standard.md +1 -1
  219. package/templates-zh-CN/reference/walkthrough-standard.md +7 -7
  220. package/templates-zh-CN/reference/worktree-standard.md +1 -1
  221. package/templates-zh-CN/regression/Cadence-Ledger.md +2 -2
  222. package/templates-zh-CN/ssot/Delivery-SSoT.md +3 -3
  223. package/templates-zh-CN/ssot/Module-Registry.md +3 -3
  224. package/templates-zh-CN/ssot/Regression-SSoT.md +2 -2
  225. package/templates-zh-CN/walkthrough/walkthrough-template.md +5 -5
  226. package/tsconfig.dist.json +16 -0
  227. package/tsconfig.json +25 -0
  228. package/tsconfig.runtime.json +24 -0
  229. package/examples/minimal-project/.harness-capabilities.json +0 -8
  230. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/progress.md +0 -11
  231. package/scripts/check-harness.mjs +0 -508
  232. package/scripts/commands/dashboard-command.mjs +0 -67
  233. package/scripts/commands/migration-command.mjs +0 -96
  234. package/scripts/commands/preset-command.mjs +0 -73
  235. package/scripts/commands/task-command.mjs +0 -327
  236. package/scripts/harness.mjs +0 -287
  237. package/scripts/lib/capability-registry.mjs +0 -591
  238. package/scripts/lib/check-module-parallel.mjs +0 -237
  239. package/scripts/lib/check-profiles.mjs +0 -418
  240. package/scripts/lib/check-task-contracts.mjs +0 -47
  241. package/scripts/lib/core-shared.mjs +0 -196
  242. package/scripts/lib/dashboard-data.mjs +0 -412
  243. package/scripts/lib/dashboard-workbench.mjs +0 -257
  244. package/scripts/lib/dashboard-writer.mjs +0 -198
  245. package/scripts/lib/git-status-summary.mjs +0 -46
  246. package/scripts/lib/governance-index-generator.mjs +0 -174
  247. package/scripts/lib/governance-sync.mjs +0 -514
  248. package/scripts/lib/governance-table-boundary.mjs +0 -175
  249. package/scripts/lib/lesson-maintenance.mjs +0 -152
  250. package/scripts/lib/markdown-utils.mjs +0 -158
  251. package/scripts/lib/migration-planner.mjs +0 -478
  252. package/scripts/lib/migration-support.mjs +0 -312
  253. package/scripts/lib/preset-audit-contracts.mjs +0 -37
  254. package/scripts/lib/preset-engine.mjs +0 -497
  255. package/scripts/lib/preset-registry.mjs +0 -627
  256. package/scripts/lib/preset-resource-contracts.mjs +0 -83
  257. package/scripts/lib/review-confirm-git-gate.mjs +0 -248
  258. package/scripts/lib/subagent-authorization-audit.mjs +0 -196
  259. package/scripts/lib/task-completion-consistency.mjs +0 -16
  260. package/scripts/lib/task-index.mjs +0 -93
  261. package/scripts/lib/task-lesson-candidates.mjs +0 -242
  262. package/scripts/lib/task-lesson-sedimentation.mjs +0 -326
  263. package/scripts/lib/task-lifecycle/review-confirm.mjs +0 -101
  264. package/scripts/lib/task-lifecycle/review-gates.mjs +0 -70
  265. package/scripts/lib/task-lifecycle/text-utils.mjs +0 -24
  266. package/scripts/lib/task-lifecycle.mjs +0 -649
  267. package/scripts/lib/task-review-model.mjs +0 -469
  268. package/scripts/lib/task-scanner.mjs +0 -576
  269. package/scripts/lib/task-tombstone-commands.mjs +0 -140
  270. package/scripts/postinstall.mjs +0 -14
  271. package/templates/walkthrough/Closeout-SSoT.md +0 -43
  272. package/templates-zh-CN/walkthrough/Closeout-SSoT.md +0 -42
  273. /package/examples/minimal-project/{docs → coding-agent-harness/governance/generated}/Harness-Ledger.md +0 -0
  274. /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/brief.md +0 -0
  275. /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/execution_strategy.md +0 -0
  276. /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/findings.md +0 -0
  277. /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/lesson_candidates.md +0 -0
  278. /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/task_plan.md +0 -0
  279. /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/visual_map.md +0 -0
@@ -294,6 +294,10 @@ button, input, select {
294
294
  animation: pulse-warn 4s infinite;
295
295
  }
296
296
 
297
+ .status-primary.snapshot {
298
+ border-color: rgba(71, 85, 105, 0.3);
299
+ }
300
+
297
301
  .status-primary.fail {
298
302
  border-color: rgba(225, 29, 72, 0.3);
299
303
  animation: pulse-fail 4s infinite;
@@ -2263,6 +2267,23 @@ button, input, select {
2263
2267
  font-size: 16px;
2264
2268
  }
2265
2269
 
2270
+ .phase-kind-group {
2271
+ display: grid;
2272
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
2273
+ grid-column: 1 / -1;
2274
+ gap: 12px;
2275
+ }
2276
+
2277
+ .phase-kind-group h3 {
2278
+ grid-column: 1 / -1;
2279
+ margin: 4px 0 0;
2280
+ color: var(--muted);
2281
+ font-size: 12px;
2282
+ font-weight: 800;
2283
+ text-transform: uppercase;
2284
+ letter-spacing: 0;
2285
+ }
2286
+
2266
2287
  .phase-step {
2267
2288
  background: var(--paper);
2268
2289
  border: 1px solid var(--line);
@@ -2273,6 +2294,22 @@ button, input, select {
2273
2294
  cursor: pointer;
2274
2295
  }
2275
2296
 
2297
+ .phase-step.init {
2298
+ border-left: 4px solid #64748b;
2299
+ }
2300
+
2301
+ .phase-step.execution {
2302
+ border-left: 4px solid var(--accent);
2303
+ }
2304
+
2305
+ .phase-step.gate {
2306
+ border-left: 4px solid #9f7aea;
2307
+ }
2308
+
2309
+ .phase-step.other {
2310
+ border-left: 4px solid var(--warn);
2311
+ }
2312
+
2276
2313
  .card-header-actions {
2277
2314
  display: flex;
2278
2315
  align-items: center;
@@ -2291,6 +2328,19 @@ button, input, select {
2291
2328
  font-weight: 800;
2292
2329
  }
2293
2330
 
2331
+ .phase-step-head {
2332
+ display: flex;
2333
+ align-items: center;
2334
+ justify-content: space-between;
2335
+ gap: 8px;
2336
+ }
2337
+
2338
+ .phase-step-head span {
2339
+ color: var(--muted);
2340
+ font-size: 12px;
2341
+ white-space: nowrap;
2342
+ }
2343
+
2294
2344
  .phase-step p {
2295
2345
  color: var(--muted);
2296
2346
  min-height: 42px;
@@ -2299,6 +2349,22 @@ button, input, select {
2299
2349
  line-height: 1.4;
2300
2350
  }
2301
2351
 
2352
+ .phase-meta {
2353
+ display: flex;
2354
+ flex-wrap: wrap;
2355
+ gap: 6px;
2356
+ margin-top: 8px;
2357
+ }
2358
+
2359
+ .phase-exit-command {
2360
+ display: block;
2361
+ margin-top: 10px;
2362
+ overflow-wrap: anywhere;
2363
+ color: var(--ink);
2364
+ font-size: 11px;
2365
+ line-height: 1.4;
2366
+ }
2367
+
2302
2368
  .detail-grid {
2303
2369
  display: grid;
2304
2370
  grid-template-columns: minmax(0, 1.8fr) minmax(280px, 360px);
@@ -2653,6 +2719,523 @@ details summary {
2653
2719
  font-size: 13px;
2654
2720
  }
2655
2721
 
2722
+ /* Preset Workbench */
2723
+ .presets-page {
2724
+ min-width: 0;
2725
+ }
2726
+
2727
+ .preset-command-center,
2728
+ .preset-collection-panel,
2729
+ .preset-detail-panel,
2730
+ .preset-layer-panel,
2731
+ .preset-context-actions,
2732
+ .preset-context-actions .side-panel {
2733
+ min-width: 0;
2734
+ }
2735
+
2736
+ .preset-count-pill {
2737
+ border: 1px solid var(--line);
2738
+ border-radius: 999px;
2739
+ background: var(--paper-2);
2740
+ color: var(--muted);
2741
+ font-size: 12px;
2742
+ font-weight: 800;
2743
+ padding: 7px 11px;
2744
+ }
2745
+
2746
+ .preset-priority-strip {
2747
+ display: grid;
2748
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2749
+ gap: 10px;
2750
+ margin: 18px 0;
2751
+ }
2752
+
2753
+ .preset-priority-step {
2754
+ display: flex;
2755
+ align-items: center;
2756
+ gap: 10px;
2757
+ border: 1px solid var(--line);
2758
+ border-radius: 8px;
2759
+ background: var(--paper-2);
2760
+ padding: 10px 12px;
2761
+ min-width: 0;
2762
+ }
2763
+
2764
+ .preset-priority-step span {
2765
+ display: inline-grid;
2766
+ place-items: center;
2767
+ width: 22px;
2768
+ height: 22px;
2769
+ border-radius: 999px;
2770
+ background: var(--accent);
2771
+ color: white;
2772
+ font-size: 12px;
2773
+ font-weight: 900;
2774
+ flex: 0 0 auto;
2775
+ }
2776
+
2777
+ .preset-priority-step strong {
2778
+ font-size: 13px;
2779
+ overflow-wrap: anywhere;
2780
+ }
2781
+
2782
+ .preset-toolbar {
2783
+ display: grid;
2784
+ grid-template-columns: minmax(220px, 1fr) auto;
2785
+ gap: 14px;
2786
+ align-items: center;
2787
+ }
2788
+
2789
+ .preset-source-tabs {
2790
+ display: flex;
2791
+ flex-wrap: wrap;
2792
+ gap: 8px;
2793
+ justify-content: flex-end;
2794
+ }
2795
+
2796
+ .preset-source-tabs button {
2797
+ display: inline-flex;
2798
+ align-items: center;
2799
+ gap: 8px;
2800
+ border: 1px solid var(--line);
2801
+ background: var(--paper);
2802
+ color: var(--ink);
2803
+ border-radius: 8px;
2804
+ padding: 9px 12px;
2805
+ font-size: 12px;
2806
+ font-weight: 800;
2807
+ }
2808
+
2809
+ .preset-source-tabs button.active {
2810
+ border-color: var(--accent);
2811
+ background: var(--paper-2);
2812
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 20%, transparent);
2813
+ }
2814
+
2815
+ .preset-workspace {
2816
+ display: grid;
2817
+ grid-template-columns: minmax(300px, 0.82fr) minmax(420px, 1.25fr) minmax(300px, 0.86fr);
2818
+ gap: 18px;
2819
+ align-items: start;
2820
+ }
2821
+
2822
+ .preset-panel-heading {
2823
+ display: flex;
2824
+ justify-content: space-between;
2825
+ gap: 12px;
2826
+ align-items: flex-start;
2827
+ margin-bottom: 14px;
2828
+ }
2829
+
2830
+ .preset-panel-heading h3 {
2831
+ margin: 0;
2832
+ font-size: 16px;
2833
+ line-height: 1.2;
2834
+ }
2835
+
2836
+ .preset-panel-heading p,
2837
+ .preset-helper,
2838
+ .preset-action-group p {
2839
+ margin: 4px 0 0;
2840
+ color: var(--muted);
2841
+ font-size: 12px;
2842
+ line-height: 1.45;
2843
+ }
2844
+
2845
+ .preset-catalog-list {
2846
+ display: grid;
2847
+ gap: 12px;
2848
+ }
2849
+
2850
+ .preset-card {
2851
+ border: 1px solid var(--line);
2852
+ border-radius: 8px;
2853
+ background: var(--paper);
2854
+ padding: 14px;
2855
+ display: grid;
2856
+ gap: 10px;
2857
+ min-width: 0;
2858
+ }
2859
+
2860
+ .preset-card.active {
2861
+ border-color: var(--accent);
2862
+ background: var(--paper-2);
2863
+ box-shadow: inset 3px 0 0 var(--accent);
2864
+ }
2865
+
2866
+ .preset-card.shadowed {
2867
+ opacity: 0.78;
2868
+ }
2869
+
2870
+ .preset-card-topline {
2871
+ display: flex;
2872
+ justify-content: space-between;
2873
+ gap: 10px;
2874
+ align-items: flex-start;
2875
+ min-width: 0;
2876
+ }
2877
+
2878
+ .preset-card-tools,
2879
+ .preset-detail-badges {
2880
+ display: flex;
2881
+ flex-wrap: wrap;
2882
+ gap: 6px;
2883
+ justify-content: flex-end;
2884
+ flex: 0 1 auto;
2885
+ }
2886
+
2887
+ .preset-card-select,
2888
+ .preset-card-body,
2889
+ .preset-layer-row {
2890
+ appearance: none;
2891
+ border: 0;
2892
+ background: transparent;
2893
+ color: inherit;
2894
+ padding: 0;
2895
+ text-align: left;
2896
+ cursor: pointer;
2897
+ min-width: 0;
2898
+ }
2899
+
2900
+ .preset-card-select {
2901
+ flex: 1 1 auto;
2902
+ }
2903
+
2904
+ .card-id {
2905
+ display: block;
2906
+ font-size: 15px;
2907
+ font-weight: 850;
2908
+ line-height: 1.25;
2909
+ overflow-wrap: anywhere;
2910
+ }
2911
+
2912
+ .preset-card-body {
2913
+ display: block;
2914
+ width: 100%;
2915
+ }
2916
+
2917
+ .preset-card-body span,
2918
+ .preset-detail-panel p {
2919
+ display: block;
2920
+ margin: 0;
2921
+ color: var(--muted);
2922
+ font-size: 13px;
2923
+ line-height: 1.55;
2924
+ overflow-wrap: anywhere;
2925
+ }
2926
+
2927
+ .preset-card-meta {
2928
+ display: flex;
2929
+ flex-wrap: wrap;
2930
+ gap: 8px;
2931
+ color: var(--muted);
2932
+ font-size: 11px;
2933
+ font-weight: 800;
2934
+ }
2935
+
2936
+ .preset-source-badge.project {
2937
+ border-color: color-mix(in srgb, var(--accent) 45%, var(--line));
2938
+ }
2939
+
2940
+ .copy-inline {
2941
+ appearance: none;
2942
+ border: 1px solid var(--line);
2943
+ background: var(--paper);
2944
+ color: var(--ink);
2945
+ border-radius: 7px;
2946
+ padding: 5px 8px;
2947
+ font-size: 11px;
2948
+ font-weight: 800;
2949
+ line-height: 1.1;
2950
+ cursor: pointer;
2951
+ white-space: nowrap;
2952
+ }
2953
+
2954
+ .copy-inline:hover,
2955
+ .preset-card-select:hover .card-id,
2956
+ .preset-card-body:hover span,
2957
+ .preset-layer-row:hover strong {
2958
+ color: var(--accent);
2959
+ }
2960
+
2961
+ .preset-detail-hero {
2962
+ display: grid;
2963
+ grid-template-columns: minmax(0, 1fr) auto;
2964
+ gap: 18px;
2965
+ align-items: start;
2966
+ padding-bottom: 16px;
2967
+ border-bottom: 1px solid var(--line);
2968
+ }
2969
+
2970
+ .preset-detail-title-row {
2971
+ display: flex;
2972
+ flex-wrap: wrap;
2973
+ gap: 10px;
2974
+ align-items: center;
2975
+ }
2976
+
2977
+ .preset-detail-title-row h3 {
2978
+ margin: 0;
2979
+ font-size: 22px;
2980
+ line-height: 1.15;
2981
+ overflow-wrap: anywhere;
2982
+ }
2983
+
2984
+ .preset-detail-list {
2985
+ display: grid;
2986
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2987
+ gap: 0;
2988
+ margin: 16px 0;
2989
+ border: 1px solid var(--line);
2990
+ border-radius: 8px;
2991
+ overflow: hidden;
2992
+ }
2993
+
2994
+ .preset-detail-list div {
2995
+ display: grid;
2996
+ gap: 4px;
2997
+ padding: 11px 12px;
2998
+ border-right: 1px solid var(--line);
2999
+ border-bottom: 1px solid var(--line);
3000
+ min-width: 0;
3001
+ }
3002
+
3003
+ .preset-detail-list div:nth-child(2n) {
3004
+ border-right: 0;
3005
+ }
3006
+
3007
+ .preset-detail-list dt {
3008
+ color: var(--muted);
3009
+ font-size: 11px;
3010
+ font-weight: 800;
3011
+ }
3012
+
3013
+ .preset-detail-list dd {
3014
+ margin: 0;
3015
+ font-size: 14px;
3016
+ font-weight: 850;
3017
+ line-height: 1.3;
3018
+ overflow-wrap: anywhere;
3019
+ }
3020
+
3021
+ .preset-path-block {
3022
+ display: grid;
3023
+ gap: 8px;
3024
+ margin-top: 14px;
3025
+ }
3026
+
3027
+ .preset-path-block > span {
3028
+ color: var(--muted);
3029
+ font-size: 11px;
3030
+ font-weight: 800;
3031
+ }
3032
+
3033
+ .preset-manifest-path {
3034
+ display: block;
3035
+ max-width: 100%;
3036
+ white-space: normal;
3037
+ overflow-wrap: anywhere;
3038
+ word-break: break-word;
3039
+ border: 1px solid var(--line);
3040
+ background: var(--paper-2);
3041
+ border-radius: 8px;
3042
+ padding: 8px;
3043
+ color: var(--muted);
3044
+ font-size: 11px;
3045
+ line-height: 1.45;
3046
+ }
3047
+
3048
+ .preset-command-list {
3049
+ display: grid;
3050
+ gap: 8px;
3051
+ margin-top: 14px;
3052
+ }
3053
+
3054
+ .preset-command-row {
3055
+ display: grid;
3056
+ grid-template-columns: minmax(0, 1fr) auto;
3057
+ gap: 8px;
3058
+ align-items: center;
3059
+ border: 1px solid var(--line);
3060
+ background: var(--paper-2);
3061
+ border-radius: 8px;
3062
+ padding: 8px;
3063
+ min-width: 0;
3064
+ }
3065
+
3066
+ .preset-command-row code {
3067
+ white-space: normal;
3068
+ overflow-wrap: anywhere;
3069
+ }
3070
+
3071
+ .preset-command-warning,
3072
+ .preset-confirm-warning {
3073
+ border: 1px solid var(--line);
3074
+ border-radius: 8px;
3075
+ background: var(--paper-2);
3076
+ color: var(--muted);
3077
+ font-size: 12px;
3078
+ line-height: 1.45;
3079
+ padding: 10px;
3080
+ }
3081
+
3082
+ .preset-confirm-warning {
3083
+ color: #b91c1c;
3084
+ }
3085
+
3086
+ .preset-layer-list {
3087
+ display: grid;
3088
+ gap: 8px;
3089
+ }
3090
+
3091
+ .preset-layer-row {
3092
+ display: grid;
3093
+ grid-template-columns: auto minmax(0, 1fr) auto;
3094
+ gap: 10px;
3095
+ align-items: center;
3096
+ border: 1px solid var(--line);
3097
+ border-radius: 8px;
3098
+ background: var(--paper);
3099
+ padding: 10px;
3100
+ }
3101
+
3102
+ .preset-layer-row.active {
3103
+ border-color: var(--accent);
3104
+ background: var(--paper-2);
3105
+ }
3106
+
3107
+ .preset-layer-rank {
3108
+ display: inline-grid;
3109
+ place-items: center;
3110
+ width: 24px;
3111
+ height: 24px;
3112
+ border-radius: 999px;
3113
+ background: var(--paper-2);
3114
+ color: var(--muted);
3115
+ font-size: 12px;
3116
+ font-weight: 900;
3117
+ }
3118
+
3119
+ .preset-layer-row strong,
3120
+ .preset-layer-row small {
3121
+ display: block;
3122
+ overflow-wrap: anywhere;
3123
+ }
3124
+
3125
+ .preset-layer-row small {
3126
+ color: var(--muted);
3127
+ font-size: 11px;
3128
+ margin-top: 2px;
3129
+ }
3130
+
3131
+ .preset-roots {
3132
+ display: grid;
3133
+ gap: 10px;
3134
+ margin-top: 14px;
3135
+ }
3136
+
3137
+ .preset-roots div {
3138
+ display: grid;
3139
+ gap: 6px;
3140
+ min-width: 0;
3141
+ }
3142
+
3143
+ .preset-roots strong {
3144
+ font-size: 12px;
3145
+ }
3146
+
3147
+ .preset-action-panel {
3148
+ display: grid;
3149
+ gap: 12px;
3150
+ }
3151
+
3152
+ .preset-action-group {
3153
+ display: grid;
3154
+ gap: 10px;
3155
+ border-top: 1px solid var(--line);
3156
+ padding-top: 14px;
3157
+ min-width: 0;
3158
+ }
3159
+
3160
+ .preset-action-group h4 {
3161
+ margin: 0;
3162
+ font-size: 13px;
3163
+ font-weight: 850;
3164
+ }
3165
+
3166
+ .preset-action-group label {
3167
+ display: grid;
3168
+ gap: 6px;
3169
+ font-size: 12px;
3170
+ font-weight: 800;
3171
+ color: var(--muted);
3172
+ }
3173
+
3174
+ .preset-action-group input,
3175
+ .preset-action-group select {
3176
+ width: 100%;
3177
+ min-width: 0;
3178
+ }
3179
+
3180
+ .preset-action-group .check-row {
3181
+ display: flex;
3182
+ align-items: center;
3183
+ gap: 8px;
3184
+ }
3185
+
3186
+ .preset-action-group .check-row input {
3187
+ width: auto;
3188
+ }
3189
+
3190
+ .preset-confirm-row {
3191
+ display: grid;
3192
+ grid-template-columns: minmax(0, 1fr) auto;
3193
+ gap: 8px;
3194
+ align-items: end;
3195
+ }
3196
+
3197
+ .preset-action-group.danger button:not(:disabled):last-child {
3198
+ border-color: #b91c1c;
3199
+ color: #b91c1c;
3200
+ }
3201
+
3202
+ @media (max-width: 1400px) {
3203
+ .preset-workspace {
3204
+ grid-template-columns: minmax(280px, 0.9fr) minmax(0, 1.1fr);
3205
+ }
3206
+
3207
+ .preset-context-actions {
3208
+ grid-column: 1 / -1;
3209
+ display: grid;
3210
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3211
+ gap: 14px;
3212
+ }
3213
+ }
3214
+
3215
+ @media (max-width: 760px) {
3216
+ .preset-toolbar,
3217
+ .preset-priority-strip,
3218
+ .preset-workspace,
3219
+ .preset-context-actions,
3220
+ .preset-detail-hero,
3221
+ .preset-detail-list,
3222
+ .preset-command-row,
3223
+ .preset-confirm-row {
3224
+ grid-template-columns: 1fr;
3225
+ }
3226
+
3227
+ .preset-source-tabs,
3228
+ .preset-card-tools,
3229
+ .preset-detail-badges {
3230
+ justify-content: flex-start;
3231
+ }
3232
+
3233
+ .preset-detail-list div,
3234
+ .preset-detail-list div:nth-child(2n) {
3235
+ border-right: 0;
3236
+ }
3237
+ }
3238
+
2656
3239
  /* Mobile Responsiveness Rules */
2657
3240
  @media (max-width: 920px) {
2658
3241
  .hero {
@@ -5,5 +5,6 @@
5
5
  "css-src/30-task-index.css",
6
6
  "css-src/35-review-workspace.css",
7
7
  "css-src/40-detail-modules-migration.css",
8
+ "css-src/45-presets.css",
8
9
  "css-src/50-responsive-overrides.css"
9
10
  ]