@tea-agent/loop-agent 0.41.1-beta.0 → 0.41.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -267
- package/dist/application/dag/generate-task-dag.js +19 -75
- package/dist/application/task-lifecycle/advance.js +5 -24
- package/dist/application/task-lifecycle/observe.js +17 -171
- package/dist/application/task-lifecycle/plan-transitions.js +7 -42
- package/dist/application/task-lifecycle/recommendations.js +2 -13
- package/dist/build-stamp.json +3 -3
- package/dist/cli/command-definitions.js +0 -7
- package/dist/cli/program.js +0 -5
- package/dist/commands/client-recovery.js +0 -3
- package/dist/commands/init.js +1 -27
- package/dist/commands/task-advance.js +0 -19
- package/dist/executors/dag-pi-executor.js +231 -3784
- package/dist/executors/pi-executor.js +4 -15
- package/dist/executors/pi-extension-resolver.js +14 -2
- package/dist/executors/shell-executor.js +217 -945
- package/dist/executors/shell-write-guard.js +0 -7
- package/dist/shared/dag-failure-category.js +0 -12
- package/dist/shared/openspec-spec.js +4 -70
- package/dist/shared/operator/capabilities.js +0 -7
- package/dist/task/config-types.js +7 -34
- package/dist/task/contract/adopt.js +0 -4
- package/dist/task/contract/import-revision.js +0 -4
- package/dist/task/contract/project.js +0 -3
- package/dist/task/contract/schema.js +1 -2
- package/dist/task/frontend-project-capability.js +20 -203
- package/dist/task/runtime.js +2 -5
- package/dist/task/source-prepare/build-draft.js +3 -3
- package/dist/task/source-prepare/fragment-inventory.js +9 -15
- package/dist/task/source-prepare/prepare.js +1 -89
- package/dist/task/source-prepare/semantic-intake.js +2 -6
- package/dist/task/source-references.js +1 -22
- package/dist/worker/console/chat/chat-ui-policy.js +4 -2
- package/dist/worker/console/chat/pi-runtime.js +235 -13
- package/dist/worker/console/chat/repo-browser.js +10 -3
- package/dist/worker/console/chat/routes.js +86 -44
- package/dist/worker/console/chat/semantic-activity.js +12 -11
- package/dist/worker/console/chat/session-stats.js +96 -0
- package/dist/worker/console/chat/session-store.js +133 -70
- package/dist/worker/console/chat/shortcuts.js +1 -1
- package/dist/worker/console/chat/turn-process.js +139 -60
- package/dist/worker/console/index.js +0 -3
- package/dist/worker/console/operation-store.js +6 -226
- package/dist/worker/console/operator-actions.js +7 -169
- package/dist/worker/console/pi-plugins.js +3 -1
- package/dist/worker/console/server.js +19 -4
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-Bho4we4c.js → abnfDiagram-N423BO3Z-DQ5jlYVU.js} +1 -1
- package/dist/worker/console/static/assets/{arc-TBDkTeK0.js → arc-BeTVCzH9.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-BF_fZrn2.js → architectureDiagram-T3A2C74G-DassREBi.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-CCnPgUe2.js → blockDiagram-VBNYF7ZC-DyeNX8Ek.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-BCYZJLAT.js → c4Diagram-5PPSVZJV-BXb_zxGx.js} +1 -1
- package/dist/worker/console/static/assets/channel-B_lofstT.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-D8K6adhU.js → chunk-2GRJ4B5K-B9F9gxGC.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-DkT1Q78b.js → chunk-2Q5K7J3B-Byd5zHEQ.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-DuhvpIr7.js → chunk-5RXB4S5H-BqoxMJk9.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-BnK6dC49.js → chunk-5VM5RSS4-CT7d6YZw.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-DPz__z7r.js → chunk-6Q2QTUOP-CdiNyN0N.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-0kkppM2j.js → chunk-GF5L2VYU-BGw9bpVc.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-BB41iK5t.js → chunk-JWPE2WC7-DiDVlVB1.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-CiVrxKHU.js → chunk-KBJHAD2P-BhHf-4yK.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-C2h9Xje1.js → chunk-RYQCIY6F-B79pEgwv.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-3iOSHdbM.js → chunk-XXDRQBXY-Cb70EcUV.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-ieUI0-eY.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-ieUI0-eY.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-BN3A7tkk.js → cose-bilkent-JH36ORCC-DBHLnAf1.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-CTuBy0Or.js → cynefin-VYW2F7L2-BT_JRsOH.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-wb6tUlMN.js → cynefinDiagram-MW4NZA55-Bss-msa3.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-GP1Ivx8B.js → dagre-VZM6K2ZE-B8Gr24pt.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-ejrcK6L0.js → diagram-7IWD3JNH-BrjU70Jw.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-YFkCCvUU.js → diagram-B4RE2ZJO-Cp_JpPGd.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-B4rrvIaL.js → diagram-LBJQPF4R-BWKICEP-.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-C-YIZcUf.js → diagram-Q27KOJAE-D3z_UNR_.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-BPF5wcL1.js → diagram-UB23O5K3-_Ywm390x.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-CU5SzXjO.js → ebnfDiagram-BXEA7PRR-D9QYQQMB.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-CpL414DE.js → erDiagram-JOGREHBK-BNgXNKAr.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-MrhLzNau.js → flowDiagram-UKHOOZJN-QRLnkPCg.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-Bg4qFuUo.js → ganttDiagram-PKOTCBZU-B9fOduNi.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-ColxSXLR.js → gitGraphDiagram-DS77QQ5N-FSEdtPN2.js} +1 -1
- package/dist/worker/console/static/assets/index-Cs9JUSPs.css +1 -0
- package/dist/worker/console/static/assets/index-DtPrwu7M.js +451 -0
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-Czvtm6gc.js → infoDiagram-6WML65LV-D5Bjg9dm.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-B7Xp8HyJ.js → ishikawaDiagram-WSZJBQD7-BlNRkWvf.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-DWYZcvph.js → journeyDiagram-NVQOT4AX-BdJiw3SL.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-KTLZRUjx.js → kanban-definition-27J2QSJJ-CsDNlYht.js} +1 -1
- package/dist/worker/console/static/assets/{linear-_Exn7bfl.js → linear-8g9dbEmX.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-Cxg8kX8V.js → mermaid.core-ChyQH_ut.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-oKrlo2Bt.js → mindmap-definition-FAOFIHXS-DwYoCTYt.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-XAeteiNd.js → pegDiagram-VL7TDLO6-T_b2rS17.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-BTf1K-lp.js → pieDiagram-7S7Q4E2Y-1Cr7WMhH.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-C0IlY0Jf.js → quadrantDiagram-CIZ2JOQS-Bq4qM59o.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-BVbKtZhW.js → railroadDiagram-AXF67PYL-ytFgR1RL.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-C5e4JFcr.js → requirementDiagram-LRYGKXZP-CnUdUVYX.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-Cz30hc29.js → sankeyDiagram-W5VNT64P-_5rJqG6R.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-DS33n6d0.js → sequenceDiagram-SI44F4Z6-D5imyGbt.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-46w7v-9T.js → sizeCapture-X5ZJPWSS-DvgDn3wL.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-pbcD5SsZ.js → stateDiagram-OKZ733FA-BViu7duc.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-kNxnG4_w.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-DuivYBSj.js → swimlanes-SLNWSIFB-BcULKg2P.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-DyTzlcWH.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-Cb9VZVIl.js → timeline-definition-Z64GVDOM-DmPveIjt.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-D2-mfOgR.js → vennDiagram-T6HMQDX7-9r-iFy0R.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-DeS2aC76.js → wardleyDiagram-T6FBY63Y-D3fIXdvM.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-WGsrFjxH.js → xychartDiagram-ELKLHX3M-BCSS9SBg.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/app/useRunProgress.js +9 -2
- package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +19 -8
- package/dist/worker/console/static-src/operator-chat/dag-progress-link.js +22 -0
- package/dist/worker/console/static-src/operator-chat/open-preview-in-browser.js +15 -7
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +2 -0
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +6 -0
- package/dist/worker/console/static-src/operator-chat/useRuntimeControls.js +28 -3
- package/dist/worker/console/static-src/pages/tasks/run-panel-progress.js +106 -0
- package/dist/worker/console/static-src/shell/workspace-route.js +4 -0
- package/dist/worker/console/workspace-context.js +1 -111
- package/dist/worker/observability/read-model.js +4 -0
- package/dist/worker/observe/routes.js +4 -0
- package/dist/worker/observe/static/dag-node-purpose.js +0 -5
- package/dist/worker/observe/static/views/dag-inspector.js +2 -7
- package/dist/worker/observe/static/views/session-timeline.js +46 -15
- package/dist/workflows/dag/backend-test-result-contract.js +1 -1
- package/dist/workflows/dag/contract-validator-registrations.js +2 -1
- package/dist/workflows/dag/frontend-implementation-contract.js +162 -932
- package/dist/workflows/dag/frontend-plan-render.js +1 -2
- package/dist/workflows/dag/frontend-prewrite-gate.js +349 -255
- package/dist/workflows/dag/frontend-recovery-plan.js +10 -17
- package/dist/workflows/dag/frontend-recovery-run.js +20 -33
- package/dist/workflows/dag/frontend-repair.js +432 -1
- package/dist/workflows/dag/frontend-review-context.js +15 -261
- package/dist/workflows/dag/frontend-verification-trace.js +24 -249
- package/dist/workflows/dag/frontend-worktree-diff.js +17 -250
- package/dist/workflows/dag/init-hybrid.js +494 -685
- package/dist/workflows/dag/interrupt-request.js +0 -7
- package/dist/workflows/dag/node-execution.js +4 -732
- package/dist/workflows/dag/prompt.js +1 -34
- package/dist/workflows/dag/report.js +1 -37
- package/dist/workflows/dag/rerun-feedback.js +1 -256
- package/dist/workflows/dag/rerun-plan.js +2 -10
- package/dist/workflows/dag/rerun-run.js +0 -23
- package/dist/workflows/dag/rerun-task.js +0 -29
- package/dist/workflows/dag/retry-policy.js +104 -214
- package/dist/workflows/dag/runner.js +122 -429
- package/dist/workflows/dag/scheduler.js +16 -114
- package/dist/workflows/dag/types.js +12 -239
- package/dist/workflows/dag/validate.js +12 -28
- package/docs/init-surface.manifest.json +12 -30
- package/docs/skills/vetted-skill-registry.md +2 -4
- package/docs/templates/README.md +0 -2
- package/docs/templates/agent-dag-report.schema.json +2 -8
- package/docs/templates/agent-dag.schema.json +1 -1
- package/docs/templates/frontend-implementation-contract.schema.json +1 -4
- package/harness.json +3 -3
- package/package.json +1 -1
- package/skills/frontend-bounded-implement/SKILL.md +14 -15
- package/skills/frontend-design-review/SKILL.md +41 -22
- package/skills/frontend-implementation/SKILL.md +52 -0
- package/skills/frontend-implementation/references/code-standards.md +33 -0
- package/skills/frontend-implementation/references/design-spec.md +56 -0
- package/skills/frontend-implementation/references/node-contracts.md +31 -0
- package/skills/frontend-review/SKILL.md +15 -20
- package/skills/frontend-review/references/review-findings.md +7 -6
- package/skills/frontend-verification/SKILL.md +1 -1
- package/skills/loop-agent/references/command-reference.md +0 -1
- package/skills/loop-agent/references/hybrid-dag.md +2 -2
- package/dist/commands/dag-follow-up.js +0 -138
- package/dist/executors/pi-read-budget-policy.js +0 -239
- package/dist/worker/console/frontend-human-decision-adapter.js +0 -19
- package/dist/worker/console/frontend-split-operation-adapter.js +0 -20
- package/dist/worker/console/static/assets/channel-bnXW0U3C.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-rZpq_twR.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-rZpq_twR.js +0 -1
- package/dist/worker/console/static/assets/index-D3CC4eUz.css +0 -1
- package/dist/worker/console/static/assets/index-DLt4ZFvD.js +0 -437
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-zBMYiUyi.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-d_rms-5i.js +0 -8
- package/dist/worker/console/static-src/active-run-badge.js +0 -17
- package/dist/worker/materialize/frontend-split-task-materializer.js +0 -72
- package/dist/workflows/dag/dag-retry-schema.js +0 -138
- package/dist/workflows/dag/frontend-closeout.js +0 -221
- package/dist/workflows/dag/frontend-design-policy.js +0 -400
- package/dist/workflows/dag/frontend-human-decision.js +0 -182
- package/dist/workflows/dag/frontend-provider-capability-matrix.js +0 -159
- package/dist/workflows/dag/frontend-read-budgets.js +0 -12
- package/dist/workflows/dag/frontend-recovery-capsule.js +0 -455
- package/dist/workflows/dag/frontend-recovery-controller.js +0 -202
- package/dist/workflows/dag/frontend-recovery-lineage.js +0 -178
- package/dist/workflows/dag/frontend-review-findings.js +0 -270
- package/dist/workflows/dag/frontend-shadow-dual-write.js +0 -914
- package/dist/workflows/dag/frontend-shape-capsule-store.js +0 -191
- package/dist/workflows/dag/frontend-shape-facts.js +0 -409
- package/dist/workflows/dag/frontend-shape.js +0 -427
- package/dist/workflows/dag/frontend-source-fidelity-ledger.js +0 -108
- package/dist/workflows/dag/frontend-split-application-service.js +0 -203
- package/dist/workflows/dag/frontend-split-orchestrator.js +0 -899
- package/dist/workflows/dag/frontend-typed-event-store.js +0 -452
- package/dist/workflows/dag/frontend-typed-event-transaction.js +0 -180
- package/dist/workflows/dag/frontend-writer-admission.js +0 -285
- package/dist/workflows/dag/frontend-writer-status.js +0 -256
- package/dist/workflows/dag/recovery-lease.js +0 -80
- package/docs/templates/frontend-implementation-dag.json +0 -89
- package/docs/templates/spec-registry.schema.json +0 -45
- package/skills/frontend-bounded-implement/references/code-standards.md +0 -19
- package/skills/frontend-contract/SKILL.md +0 -23
- package/skills/frontend-contract/references/contract-protocol.md +0 -34
- package/skills/frontend-plan/SKILL.md +0 -26
- package/skills/frontend-plan/references/decision-contract.md +0 -37
- package/skills/frontend-plan/references/design-decisions.md +0 -17
- package/skills/frontend-scout/SKILL.md +0 -25
- package/skills/frontend-scout/references/design-evidence.md +0 -16
- package/skills/frontend-scout/references/scout-evidence.md +0 -23
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
"docs/templates/worker-dogfood-setup.md",
|
|
35
35
|
"docs/templates/worker-dogfood-evidence.md",
|
|
36
36
|
"docs/templates/harness.schema.json",
|
|
37
|
-
"docs/templates/spec-registry.schema.json",
|
|
38
37
|
"docs/templates/interactive-ui-round2-experiment.md",
|
|
39
38
|
"docs/templates/product-line/README.md",
|
|
40
39
|
"docs/templates/product-line/AGENTS.md",
|
|
@@ -78,16 +77,11 @@
|
|
|
78
77
|
"skills/webapp-testing/SKILL.md",
|
|
79
78
|
"skills/playwright-cli/SKILL.md",
|
|
80
79
|
"skills/playwright-cli-case-generator/SKILL.md",
|
|
81
|
-
"skills/frontend-
|
|
82
|
-
"skills/frontend-
|
|
83
|
-
"skills/frontend-
|
|
84
|
-
"skills/frontend-
|
|
85
|
-
"skills/frontend-scout/references/design-evidence.md",
|
|
86
|
-
"skills/frontend-plan/SKILL.md",
|
|
87
|
-
"skills/frontend-plan/references/decision-contract.md",
|
|
88
|
-
"skills/frontend-plan/references/design-decisions.md",
|
|
80
|
+
"skills/frontend-implementation/SKILL.md",
|
|
81
|
+
"skills/frontend-implementation/references/node-contracts.md",
|
|
82
|
+
"skills/frontend-implementation/references/design-spec.md",
|
|
83
|
+
"skills/frontend-implementation/references/code-standards.md",
|
|
89
84
|
"skills/frontend-bounded-implement/SKILL.md",
|
|
90
|
-
"skills/frontend-bounded-implement/references/code-standards.md",
|
|
91
85
|
"skills/frontend-design-review/SKILL.md",
|
|
92
86
|
"skills/frontend-design-review/references/review-checklist.md",
|
|
93
87
|
"skills/frontend-review/SKILL.md",
|
|
@@ -109,7 +103,6 @@
|
|
|
109
103
|
"docs/feature-workflow.md",
|
|
110
104
|
"docs/verification-matrix.md",
|
|
111
105
|
"docs/loop-agent-harness.md",
|
|
112
|
-
"docs/spec-registry.json",
|
|
113
106
|
"docs/harness-methodology-tdd.md",
|
|
114
107
|
"docs/harness-methodology-verification.md",
|
|
115
108
|
"docs/harness-methodology-debugging.md",
|
|
@@ -164,16 +157,11 @@
|
|
|
164
157
|
".agents/skills/webapp-testing/SKILL.md",
|
|
165
158
|
".agents/skills/playwright-cli/SKILL.md",
|
|
166
159
|
".agents/skills/playwright-cli-case-generator/SKILL.md",
|
|
167
|
-
".agents/skills/frontend-
|
|
168
|
-
".agents/skills/frontend-
|
|
169
|
-
".agents/skills/frontend-
|
|
170
|
-
".agents/skills/frontend-
|
|
171
|
-
".agents/skills/frontend-scout/references/design-evidence.md",
|
|
172
|
-
".agents/skills/frontend-plan/SKILL.md",
|
|
173
|
-
".agents/skills/frontend-plan/references/decision-contract.md",
|
|
174
|
-
".agents/skills/frontend-plan/references/design-decisions.md",
|
|
160
|
+
".agents/skills/frontend-implementation/SKILL.md",
|
|
161
|
+
".agents/skills/frontend-implementation/references/node-contracts.md",
|
|
162
|
+
".agents/skills/frontend-implementation/references/design-spec.md",
|
|
163
|
+
".agents/skills/frontend-implementation/references/code-standards.md",
|
|
175
164
|
".agents/skills/frontend-bounded-implement/SKILL.md",
|
|
176
|
-
".agents/skills/frontend-bounded-implement/references/code-standards.md",
|
|
177
165
|
".agents/skills/frontend-design-review/SKILL.md",
|
|
178
166
|
".agents/skills/frontend-design-review/references/review-checklist.md",
|
|
179
167
|
".agents/skills/frontend-review/SKILL.md",
|
|
@@ -190,7 +178,6 @@
|
|
|
190
178
|
".pi/settings.json"
|
|
191
179
|
],
|
|
192
180
|
"initSurface": {
|
|
193
|
-
"docs/spec-registry.json": "generated",
|
|
194
181
|
"README.md": "managed-block",
|
|
195
182
|
"AGENTS.md": "managed-block",
|
|
196
183
|
".gitignore": "managed-block",
|
|
@@ -255,16 +242,11 @@
|
|
|
255
242
|
".agents/skills/webapp-testing/SKILL.md": "copied",
|
|
256
243
|
".agents/skills/playwright-cli/SKILL.md": "copied",
|
|
257
244
|
".agents/skills/playwright-cli-case-generator/SKILL.md": "copied",
|
|
258
|
-
".agents/skills/frontend-
|
|
259
|
-
".agents/skills/frontend-
|
|
260
|
-
".agents/skills/frontend-
|
|
261
|
-
".agents/skills/frontend-
|
|
262
|
-
".agents/skills/frontend-scout/references/design-evidence.md": "copied",
|
|
263
|
-
".agents/skills/frontend-plan/SKILL.md": "copied",
|
|
264
|
-
".agents/skills/frontend-plan/references/decision-contract.md": "copied",
|
|
265
|
-
".agents/skills/frontend-plan/references/design-decisions.md": "copied",
|
|
245
|
+
".agents/skills/frontend-implementation/SKILL.md": "copied",
|
|
246
|
+
".agents/skills/frontend-implementation/references/node-contracts.md": "copied",
|
|
247
|
+
".agents/skills/frontend-implementation/references/design-spec.md": "copied",
|
|
248
|
+
".agents/skills/frontend-implementation/references/code-standards.md": "copied",
|
|
266
249
|
".agents/skills/frontend-bounded-implement/SKILL.md": "copied",
|
|
267
|
-
".agents/skills/frontend-bounded-implement/references/code-standards.md": "copied",
|
|
268
250
|
".agents/skills/frontend-design-review/SKILL.md": "copied",
|
|
269
251
|
".agents/skills/frontend-design-review/references/review-checklist.md": "copied",
|
|
270
252
|
".agents/skills/frontend-review/SKILL.md": "copied",
|
|
@@ -16,13 +16,11 @@ The entries below are local wrappers or existing local skills. They are not whol
|
|
|
16
16
|
| `code-review-core` | local wrapper inspired by code review practice | `skills/code-review-core/SKILL.md` | reviewer | reviewer | No external tools or network by default. |
|
|
17
17
|
| `codebase-scout` | local wrapper | `skills/codebase-scout/SKILL.md` | scout | scout | Read-only reconnaissance guidance. |
|
|
18
18
|
| `init-capability-evolution` | local wrapper | `skills/init-capability-evolution/SKILL.md` | supervisor, maintenance | optional | Used only when changes may affect target-project initialization, package surface, or init projection rules. |
|
|
19
|
-
| `frontend-
|
|
20
|
-
| `frontend-scout` | local frontend hybrid DAG scouting skill | `skills/frontend-scout/SKILL.md` | `frontend-scout-pi` only | frontend-implementation DAG only | Required target-surface and design-evidence refs are bounded and complete; discovery does not leak into Plan. |
|
|
21
|
-
| `frontend-plan` | local frontend hybrid DAG planning skill | `skills/frontend-plan/SKILL.md` | `frontend-plan-pi` and legacy Mock assessment only | frontend-implementation DAG only | Required decision/design refs carry stable trace IDs, Mock/data and dependency decisions without the full lifecycle contract. |
|
|
19
|
+
| `frontend-implementation` | local existing (frontend hybrid DAG) | `skills/frontend-implementation/SKILL.md` | frontend plan / contract / scout / mock nodes (spec-level `skillsByRole`) | frontend-implementation DAG only | Required refs node-contracts / design-spec / code-standards; injected by `init-hybrid.ts` spec generation and `src/adapters/loop-agent.ts`; projected via init-surface manifest. Not in `DEFAULT_SKILLS_BY_ROLE`. |
|
|
22
20
|
| `frontend-review` | local existing (frontend hybrid DAG) | `skills/frontend-review/SKILL.md` | reviewer (frontend review nodes, spec-level) | frontend-implementation / repair DAGs | Consumed by `init-hybrid.ts` / `frontend-repair.ts` / `shell-executor.ts`; required ref review-findings (maxChars 2800). |
|
|
23
21
|
| `frontend-verification` | local existing (frontend hybrid DAG) | `skills/frontend-verification/SKILL.md` | verifier / closeout (frontend evidence, spec-level) | frontend DAG closeout | Consumed by `shell-executor.ts` / `frontend-repair.ts` / `frontend-review-context.ts`; required ref verification-checklist. |
|
|
24
22
|
| `frontend-design-review` | local existing (frontend hybrid DAG) | `skills/frontend-design-review/SKILL.md` | design-gate reviewer (before any writer) | frontend-implementation DAG design gate | Injected by `init-hybrid.ts`; runs before the prewrite gate authorizes writers; required ref review-checklist. |
|
|
25
|
-
| `frontend-bounded-implement` | local existing (frontend hybrid DAG) | `skills/frontend-bounded-implement/SKILL.md` | implementer (writer nodes, spec-level) | frontend writers after canonical contract gate | Injected by `init-hybrid.ts`;
|
|
23
|
+
| `frontend-bounded-implement` | local existing (frontend hybrid DAG) | `skills/frontend-bounded-implement/SKILL.md` | implementer (writer nodes, spec-level) | frontend writers after canonical contract gate | Injected by `init-hybrid.ts`; writers run only after the canonical contract gate accepts and only inside the frozen writeSet (ADR 0015/0016 discipline). |
|
|
26
24
|
| `grill-with-docs` | local operator skill adapted from domain grilling + ADR/glossary discipline | `skills/grill-with-docs/SKILL.md` | explicit interactive operator only | never a default DAG role | Resolves decisions via `harness.json.governanceRoot`; required refs `context-format.md` / `adr-format.md`; respects writeSet; not in `DEFAULT_SKILLS_BY_ROLE`. |
|
|
27
25
|
| `grill-me` | local interview question engine wrapper | `skills/grill-me/SKILL.md` | interview runtime dependency (not a DAG role) | never a default DAG role | Question engine lives in `src/worker/console/interview/grill-me.ts` (Console interview / operator-actions); intentionally NOT projected by init-surface manifest — runs in this repo's Console only. |
|
|
28
26
|
| `analyze-product-requirements` | local org-internal Product Analysis V4 skill | `skills/analyze-product-requirements/SKILL.md` | source-prepare dependency (not a DAG role) | never a default DAG role | Loaded by `src/task/source-prepare/prepare.ts` during 任务源 preparation; IRON-LAW freeze semantics on `product-analysis.md`; intentionally NOT projected by init-surface manifest. |
|
package/docs/templates/README.md
CHANGED
|
@@ -38,7 +38,6 @@
|
|
|
38
38
|
|
|
39
39
|
- `frontend-task-requirement.md`、`frontend-task-constraints.md`、`frontend-design-contract.md` — 前端任务输入与设计合同。
|
|
40
40
|
- `frontend-implementation-contract.schema.json` — 前端实现合同 schema(sourceBinding v2 ledger 字段 all-or-none:任一出现则四项齐全,禁止 v1+optional 冒充 v2)。`requirements[].sourceRefs[].items` 使用合法 `$ref: #/$defs/path`(相对路径、无 `..` 逃逸、无反斜杠),模板 JSON 无非法键,运行时加载器可直接编译(AC-003)。
|
|
41
|
-
- `frontend-implementation-dag.json` — 自包含的前端实现 DAG 模板:契约 → 侦察 → 计划 → 设计策略/评审 → writer 准入 → 有界写入 → 验证 → 真实 diff 审查 → closeout。它不依赖 runtime builder 或其他模板;执行前必须将所有 `REPLACE/WITH/...` 路径和确定性命令替换为当前项目的具体值。
|
|
42
41
|
- `frontend-test-dag.json` — frontend-test DAG 模板;其 deterministic checklist 会拒绝 alternative executable instructions,仅允许 allowlisted `playwright-cli` command。Pi generator/reviser 的 runtime writeSet 仅授权下列目标项目生成路径(不是本仓库文档索引目标):
|
|
43
42
|
|
|
44
43
|
~~~text
|
|
@@ -57,7 +56,6 @@
|
|
|
57
56
|
- `knowledge-sync-dag.json`、`knowledge-graph-bootstrap-dag.json` — 知识同步与图谱初始化 DAG。
|
|
58
57
|
- `knowledge-sync-draft.schema.json` — 知识同步草稿 schema。
|
|
59
58
|
- `harness.schema.json` — `harness.json` 的 IDE JSON Schema。
|
|
60
|
-
- `spec-registry.schema.json` — 项目级 `ai_workspace/loop-agent/spec-registry.json` 的机器校验 schema。
|
|
61
59
|
|
|
62
60
|
## 子目录
|
|
63
61
|
|
|
@@ -176,8 +176,7 @@
|
|
|
176
176
|
"humanEscalationJson",
|
|
177
177
|
"humanEscalationMd",
|
|
178
178
|
"humanApproval",
|
|
179
|
-
"humanRejection"
|
|
180
|
-
"changeManifest"
|
|
179
|
+
"humanRejection"
|
|
181
180
|
],
|
|
182
181
|
"properties": {
|
|
183
182
|
"resultSummary": { "$ref": "#/$defs/dagArtifactRef" },
|
|
@@ -189,12 +188,7 @@
|
|
|
189
188
|
"humanEscalationJson": { "$ref": "#/$defs/dagArtifactRef" },
|
|
190
189
|
"humanEscalationMd": { "$ref": "#/$defs/dagArtifactRef" },
|
|
191
190
|
"humanApproval": { "$ref": "#/$defs/dagArtifactRef" },
|
|
192
|
-
"humanRejection": { "$ref": "#/$defs/dagArtifactRef" }
|
|
193
|
-
"changeManifest": { "$ref": "#/$defs/dagArtifactRef" },
|
|
194
|
-
"changeManifestChangedFiles": {
|
|
195
|
-
"type": "array",
|
|
196
|
-
"items": { "type": "string" }
|
|
197
|
-
}
|
|
191
|
+
"humanRejection": { "$ref": "#/$defs/dagArtifactRef" }
|
|
198
192
|
}
|
|
199
193
|
},
|
|
200
194
|
"repairArtifact": {
|
|
@@ -466,7 +466,7 @@
|
|
|
466
466
|
"retryCategories": {
|
|
467
467
|
"type": "array",
|
|
468
468
|
"items": {
|
|
469
|
-
"enum": ["timeout", "network", "rate-limit", "unavailable", "empty-output", "output-too-large", "protocol-invalid", "invalid-output", "writer-empty-diff", "incomplete-write-set", "writer-clean-timeout"
|
|
469
|
+
"enum": ["timeout", "network", "rate-limit", "unavailable", "empty-output", "output-too-large", "protocol-invalid", "invalid-output", "writer-empty-diff", "incomplete-write-set", "writer-clean-timeout"]
|
|
470
470
|
},
|
|
471
471
|
"default": ["timeout", "network", "rate-limit", "unavailable", "empty-output"],
|
|
472
472
|
"description": "Failure categories eligible for retry. quota/auth/write-guard are never eligible. invalid-output is allowed only on explicit structured/protocol policies; writer-empty-diff and incomplete-write-set are reserved for requireChangedFiles generation/completeness writers; writer-clean-timeout is reserved for standard bounded writers after explicit zero-write-tool-call and empty-diff evidence."
|
package/harness.json
CHANGED
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
"pi": {
|
|
84
84
|
"description": "Pi 负责规划、评审、诊断;当 DAG toolProfile=write 时也可做有界写入。模型按复杂度三档配置,支持 provider/model 字符串或带 thinking 的对象;斜杠前为 Pi provider,后为 modelId,勿只写裸 modelId。",
|
|
85
85
|
"LOW": "wizard-local/minimax-m3",
|
|
86
|
-
|
|
87
|
-
"HIGH": "wizard-local/gpt-5.
|
|
86
|
+
"MED": "wizard-local/glm-5.3",
|
|
87
|
+
"HIGH": "wizard-local/gpt-5.6-sol"
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
}
|
|
90
|
+
}
|
package/package.json
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend-bounded-implement
|
|
3
3
|
description: >-
|
|
4
|
-
Use only for frontend implementation writers after the canonical
|
|
4
|
+
Use only for frontend implementation and repair writers after the canonical
|
|
5
5
|
contract gate has authorized a bounded write set.
|
|
6
|
-
references:
|
|
7
|
-
- path: references/code-standards.md
|
|
8
|
-
required: true
|
|
9
|
-
maxChars: 2600
|
|
10
6
|
---
|
|
11
7
|
|
|
12
8
|
# Frontend Bounded Implement
|
|
13
9
|
|
|
14
|
-
Read the bounded code standards before editing. They apply only inside the
|
|
15
|
-
canonical targets and do not authorize additional discovery.
|
|
16
|
-
|
|
17
10
|
## Authoritative Inputs
|
|
18
11
|
|
|
19
12
|
- For implementation, use the run-owned
|
|
20
13
|
`contracts/frontend-implementation-contract.json`.
|
|
14
|
+
- For repair, also use `contracts/frontend-repair-assessment.json`.
|
|
21
15
|
- Treat requirement `expectedOutcome`, interaction `trigger` /
|
|
22
16
|
`expectedBehavior`, target files, UI states, Mock/API strategy, and verification
|
|
23
17
|
targets as closed decisions. Do not rediscover or reinterpret them.
|
|
@@ -31,7 +25,7 @@ canonical targets and do not authorize additional discovery.
|
|
|
31
25
|
- Start the bounded edit after confirming the contract and targets. Optional
|
|
32
26
|
context is not a reason to postpone implementation.
|
|
33
27
|
- If behavior is still ambiguous or a required target is outside `writeSet`, stop
|
|
34
|
-
|
|
28
|
+
with `IMPLEMENTATION_OUTCOME: blocked`; do not compensate with broader scouting.
|
|
35
29
|
|
|
36
30
|
## Implementation Discipline
|
|
37
31
|
|
|
@@ -45,10 +39,15 @@ canonical targets and do not authorize additional discovery.
|
|
|
45
39
|
- Run only the focused checks already frozen by the task. Leave full verification
|
|
46
40
|
to downstream deterministic nodes.
|
|
47
41
|
|
|
48
|
-
##
|
|
42
|
+
## Required Outcome
|
|
43
|
+
|
|
44
|
+
The first non-empty response line must be exactly one of:
|
|
45
|
+
|
|
46
|
+
- `IMPLEMENTATION_OUTCOME: changed` — a non-empty bounded diff was produced.
|
|
47
|
+
- `IMPLEMENTATION_OUTCOME: already-satisfied` — the contract was already met and
|
|
48
|
+
no file changed.
|
|
49
|
+
- `IMPLEMENTATION_OUTCOME: blocked` — implementation cannot proceed without
|
|
50
|
+
guessing or exceeding the write boundary.
|
|
49
51
|
|
|
50
|
-
|
|
51
|
-
attempted,
|
|
52
|
-
runtime derives implementation state from persisted write events, run delta, write
|
|
53
|
-
guard, requirement coverage, and focused checks. Do not use a mandatory
|
|
54
|
-
`IMPLEMENTATION_OUTCOME:` response-text protocol.
|
|
52
|
+
Then report changed files, requirements/interactions implemented, tests or focused
|
|
53
|
+
checks attempted, and residual risks. Never report `changed` for an empty diff.
|
|
@@ -9,26 +9,31 @@ references:
|
|
|
9
9
|
|
|
10
10
|
# Frontend Design Review
|
|
11
11
|
|
|
12
|
-
For frontend design review nodes. Read the checklist
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
paths when additional reading is necessary; never invent connector results.
|
|
12
|
+
For frontend design review nodes. Read the checklist; audit contract, scout, Mock
|
|
13
|
+
strategy, effective plan, task bounds, and traceable design evidence.
|
|
14
|
+
Knowledge base, OpenSpec, and `ai_workspace/` are parallel sources. Query the
|
|
15
|
+
knowledge-base connector when available; always search/read `openspec/schemas/**`,
|
|
16
|
+
`openspec/project-specs/**`, and `ai_workspace/**` before accepting conventions.
|
|
17
|
+
Connector format is TODO: never invent results.
|
|
19
18
|
|
|
20
|
-
##
|
|
19
|
+
## Verdict Contract
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
First non-empty line: exactly `VERDICT: pass` or `VERDICT: request-revision`.
|
|
22
|
+
Any blocker requires request-revision. An initial pass is the effective verdict;
|
|
23
|
+
there is no intermediate first-design shell gate.
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
In standard/full topology, revision and final review run only after initial
|
|
26
|
+
`VERDICT: request-revision`. Verify every Required Plan Correction against the
|
|
27
|
+
complete revision; reject remaining, incomplete, or new gaps. An initial pass uses
|
|
28
|
+
the original plan and skips both conditional nodes.
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
`
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
Small-risk topology instead removes initial review and revision, then runs
|
|
31
|
+
`frontend-final-design-review-pi` as the sole review of the original plan. Do not
|
|
32
|
+
expect initial findings or a revision there.
|
|
33
|
+
|
|
34
|
+
The deterministic gate prefers final-review output and falls back to initial review
|
|
35
|
+
only when no current-run final output exists. Existing malformed/non-pass primary
|
|
36
|
+
output fails closed.
|
|
32
37
|
|
|
33
38
|
## Blocking Conditions
|
|
34
39
|
|
|
@@ -46,15 +51,29 @@ Knowledge-base absence is advisory if relevant rules from either openspec
|
|
|
46
51
|
specification directory were read and applied. Block skipped fallback, unresolved
|
|
47
52
|
conflict, or unresolved UI decisions.
|
|
48
53
|
|
|
49
|
-
## Method And
|
|
54
|
+
## Method And Output
|
|
50
55
|
|
|
51
56
|
Map criteria to steps/files/states/checks, audit paths/evidence, classify Blocking
|
|
52
57
|
or Advisory, and never edit files.
|
|
53
58
|
|
|
54
59
|
### Spec Evidence Rules
|
|
55
60
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
Run `grep`/`find`, then explicit `read` calls for applicable specs/checklist. Only
|
|
62
|
+
successful paired reads count as “已读取规范文件”; summaries do not. List each path/
|
|
63
|
+
section in `Checked Items`; search/read both openspec specification directories
|
|
64
|
+
before accepting conventions.
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
VERDICT: pass
|
|
68
|
+
|
|
69
|
+
## Findings
|
|
70
|
+
- None blocking.
|
|
71
|
+
|
|
72
|
+
## Required Plan Corrections
|
|
73
|
+
- None.
|
|
74
|
+
|
|
75
|
+
## Checked Items
|
|
76
|
+
- ...
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Each correction names its criterion/section, gap, and exact plan change.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-implementation
|
|
3
|
+
description: >-
|
|
4
|
+
Use for frontend contract, scout, mock strategy, and plan DAG nodes.
|
|
5
|
+
references:
|
|
6
|
+
- path: references/node-contracts.md
|
|
7
|
+
required: true
|
|
8
|
+
# Compact contract index must stay under skill total budget (~10k with body + other refs).
|
|
9
|
+
# Headroom above current ~4k file; do not raise alone without checking totalMaxChars.
|
|
10
|
+
maxChars: 6000
|
|
11
|
+
- path: references/design-spec.md
|
|
12
|
+
required: true
|
|
13
|
+
maxChars: 3000
|
|
14
|
+
- path: references/code-standards.md
|
|
15
|
+
required: true
|
|
16
|
+
maxChars: 3000
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Frontend Implementation
|
|
20
|
+
|
|
21
|
+
Read all required references before running any listed frontend node.
|
|
22
|
+
|
|
23
|
+
## Source And Evidence Rules
|
|
24
|
+
|
|
25
|
+
Use task sources/references, constraints, then `task.json`. Follow `design-spec.md`:
|
|
26
|
+
query the knowledge base when available and always inspect `openspec/schemas/`,
|
|
27
|
+
`openspec/project-specs/`, and `ai_workspace/`; then use repo evidence. Cite tight paths/symbols, and never invent APIs,
|
|
28
|
+
rules, commands, or retrievals. Scout/planners locate and explicitly read applicable
|
|
29
|
+
specs; only successful paired reads count. Lockfile-only, fixture-only, or unread
|
|
30
|
+
search hits do not prove a reusable Mock service.
|
|
31
|
+
|
|
32
|
+
This broad discovery rule applies only to contract, scout, and plan phases.
|
|
33
|
+
Implementation and repair use the separate `frontend-bounded-implement` skill.
|
|
34
|
+
|
|
35
|
+
## Implementation Discipline
|
|
36
|
+
|
|
37
|
+
- Reuse confirmed specs, components, tokens, helpers, APIs, mocks, schemas, and tests.
|
|
38
|
+
- Keep real requests enabled by default; never comment them out for a mock.
|
|
39
|
+
- Prefer native Mock support; otherwise use existing browser interception for e2e or
|
|
40
|
+
a reversible request adapter/DI seam for local preview.
|
|
41
|
+
- Trace fixtures to API/schema evidence. Activation is explicit, dev/test-only,
|
|
42
|
+
production-off; Mock evidence never proves real API integration.
|
|
43
|
+
- Add dependencies only when approved. Cover applicable success/loading/empty/error/
|
|
44
|
+
permission/boundary states and justify N/A.
|
|
45
|
+
- Keep state testable. Stay in `writeSet`, preserve behavior, and update tests.
|
|
46
|
+
- Never relax lint/type/test/build config or write unauthorized generated output.
|
|
47
|
+
|
|
48
|
+
## Output And Failure Rules
|
|
49
|
+
|
|
50
|
+
- Follow `node-contracts.md`; read-only nodes never edit. Missing input blocks work
|
|
51
|
+
when proceeding would guess behavior, bounds, or verification.
|
|
52
|
+
- Preserve tokens, commands, paths, IDs, and language. Completion needs fresh shell evidence.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Frontend Code Standards
|
|
2
|
+
|
|
3
|
+
Discover rules from task constraints, `design-spec.md` source order, config, code,
|
|
4
|
+
tests, manifests, and generated types. Regardless of knowledge-base results,
|
|
5
|
+
applicable `openspec/schemas/`, `openspec/project-specs/`, and `ai_workspace/` rules are normative.
|
|
6
|
+
Preferences are not rules, and docs do not override installed APIs without an
|
|
7
|
+
explicit compatibility decision.
|
|
8
|
+
|
|
9
|
+
## Discover And Cite
|
|
10
|
+
|
|
11
|
+
- Find routing and server/client boundaries; state, forms, data/cache, and errors;
|
|
12
|
+
API/mock/UI/schema/test locations and naming; supported tests; dependency rules.
|
|
13
|
+
|
|
14
|
+
Cite representative files/config for each convention. Describe conflicts instead of
|
|
15
|
+
silently selecting one.
|
|
16
|
+
|
|
17
|
+
## Plan And Implement
|
|
18
|
+
|
|
19
|
+
- Map criteria to code and checks. Define placement, state ownership, request
|
|
20
|
+
lifecycle, validation/failures, API compatibility, mocks, and fixtures.
|
|
21
|
+
- Trace fixtures to API evidence; label gaps. Prefer native mocks, then browser
|
|
22
|
+
interception for existing e2e, then a reversible request adapter/DI preview seam.
|
|
23
|
+
- Real API stays default; mock activation is explicit, local/test-only,
|
|
24
|
+
non-production, and removable.
|
|
25
|
+
- Reuse helpers/public APIs and preserve out-of-contract behavior. Keep rendering,
|
|
26
|
+
transitions, validation, and side effects testable; cover lifecycle races/bounds
|
|
27
|
+
when relevant. Update supported tests; stay in `writeSet`.
|
|
28
|
+
|
|
29
|
+
## Prohibited
|
|
30
|
+
|
|
31
|
+
- Do not relax checks, add unapproved dependencies, comment real requests, hardcode
|
|
32
|
+
fixtures in production UI, import test mocks into production, store fixture
|
|
33
|
+
secrets, equate mock evidence with real integration, or report unrun checks as verified.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Frontend Design And Component Specification
|
|
2
|
+
|
|
3
|
+
## Required Source Sequence
|
|
4
|
+
|
|
5
|
+
Knowledge base, OpenSpec, and `ai_workspace/` are parallel specification sources:
|
|
6
|
+
|
|
7
|
+
1. Attempt the configured component/design knowledge-base query first when a
|
|
8
|
+
connector is available.
|
|
9
|
+
2. Regardless of knowledge-base success/failure/timeout/no-match, also
|
|
10
|
+
recursively search `openspec/schemas/`, `openspec/project-specs/`, and
|
|
11
|
+
`ai_workspace/` for index files and relevant content.
|
|
12
|
+
3. Treat relevant matches from both sources as the current project's
|
|
13
|
+
specification for this run.
|
|
14
|
+
4. Only then use component source, tokens, stories, tests, and pages as
|
|
15
|
+
non-normative repository fallback.
|
|
16
|
+
|
|
17
|
+
Never skip local OpenSpec or `ai_workspace/` for neighboring-code conventions,
|
|
18
|
+
even when a knowledge-base query returned results. Report source conflicts instead
|
|
19
|
+
of combining them. Explicit task requirements remain the contract.
|
|
20
|
+
|
|
21
|
+
Connector format is TODO; attempt only an available connector, otherwise record
|
|
22
|
+
`not-configured` and run the openspec fallback (never invent a connection).
|
|
23
|
+
|
|
24
|
+
## openspec Fallback Procedure
|
|
25
|
+
|
|
26
|
+
- Inspect `<repoRoot>/openspec/schemas/`, `<repoRoot>/openspec/project-specs/`,
|
|
27
|
+
and `<repoRoot>/ai_workspace/` when present; enumerate supported files recursively.
|
|
28
|
+
- Read indexes first, then search names/content using task, route, component,
|
|
29
|
+
interaction, theme, token, and state terms.
|
|
30
|
+
- Read matches in context; a filename-only hit is not a rule.
|
|
31
|
+
- Record search terms, inspected/matched paths, headings or tight line ranges,
|
|
32
|
+
applied rules, and conflicts.
|
|
33
|
+
- If both directories or relevant rules are absent, record that before using
|
|
34
|
+
repository fallback.
|
|
35
|
+
|
|
36
|
+
## Retrieval Evidence
|
|
37
|
+
|
|
38
|
+
Record source as `knowledge-base`, `openspec fallback`, `repository fallback`, or
|
|
39
|
+
`unavailable`. Knowledge-base evidence includes query, source ID/version/time, rules,
|
|
40
|
+
and conflicts. `openspec fallback` includes terms, paths/headings/lines, rules, and conflicts.
|
|
41
|
+
|
|
42
|
+
## Rules To Retrieve Or Discover
|
|
43
|
+
|
|
44
|
+
- Components, variants, props, composition, accessibility, deprecations, placement, forms, overlays, navigation, and state patterns.
|
|
45
|
+
- Tokens, typography, color, layout, breakpoints, motion, focus/keyboard/contrast, exceptions, design debt, and forbidden patterns.
|
|
46
|
+
|
|
47
|
+
## Gate Expectations
|
|
48
|
+
|
|
49
|
+
- Reuse confirmed primitives unless a new pattern is authorized.
|
|
50
|
+
- Define applicable states and responsive behavior before implementation.
|
|
51
|
+
- Cite knowledge-base or openspec spec evidence for component/token choices;
|
|
52
|
+
label weaker repo fallback.
|
|
53
|
+
- Make deviations and unresolved gaps explicit.
|
|
54
|
+
- Contract `uiComponentChoices[]` per UI purpose: `specified` needs
|
|
55
|
+
`specReference {path,section,line}`; `new` needs null ref + rationale; never
|
|
56
|
+
silently replace a spec-defined component.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Frontend Node Contracts
|
|
2
|
+
|
|
3
|
+
Pre-write nodes are read-only. Preserve IDs, labels, commands, language, required headings.
|
|
4
|
+
|
|
5
|
+
## Core nodes
|
|
6
|
+
|
|
7
|
+
- **`frontend-contract-pi`**: `Scope`, `Non-goals`, `Acceptance Criteria`, `UI States`, `Target Runtime Environment`, `Risks`, `Verification Expectations`; no guessed requirements.
|
|
8
|
+
- **`frontend-scout-pi`**: routes, components, tokens, data/API/Mock, scripts, tests, assets; fact vs inference vs gap. Search+read `openspec/schemas/`, `openspec/project-specs/`, `ai_workspace/` first. Output stack, styling, conventions, state/data, test entry points, reuse, risks.
|
|
9
|
+
- **`frontend-plan-pi` + conditional design loop**: AC → observable `expectedOutcome`; interactions → `trigger`+`expectedBehavior`; include steps, in-bound files, UI states, reuse, deps, Mock/API, frozen verify entrypoints and integration gaps. DAG freezes a protected skeleton (`schemaVersion`, `sourceBinding`, `riskLevel`, `targets.files`, `mockApi.productionDefaultOff`). Model returns a **JSON-only** editable RFC 7386 patch (`frontend-implementation-contract-plan-patch-v1`) plus one `openspec-citations` block. Runtime compiles canonical `frontend-implementation-contract-v1` and archives raw/extracted/normalized/validation candidates; unresolved optional symbols are dropped and audited. No plan prose; gate renders plan.md. IDs+paths ≠ behavior semantics. Applicable UI states need behavior/implementation/verification; non-applicable states need reasons. Active Mock needs frozen commands; `auto` without confirmed capability/command → `not-needed`; `required` without command → generation-time blocked. Only `request-revision` runs revision+final review; small-risk gets one review.
|
|
10
|
+
- `uiComponentChoices[]` (optional): `{purpose, component, decision, specReference, rationale}`; `specified` needs `specReference{path,section,line}`; `new` needs null ref+rationale.
|
|
11
|
+
- **`frontend-prewrite-gate-shell`**: sole write authorization. Resolve effective plan (revised if revision ran, else original) + review; require exact pass; retain every REQ/BR/AC id; enforce Mock policy; validate schema/source binding+writeSet containment; materialize `contracts/frontend-implementation-contract.json` from the **single** fenced contract block (multiple candidates fail closed `invalid-output`). Fallback only when conditional primary absent; malformed primary fails closed. Generation-time blocked Mock yields one blocking shell node, no writer.
|
|
12
|
+
- `verificationTarget.commandLabel` must be a **frozen command label** from `verifyEvidence.commandLabels`; others fail closed (`invalid-output`). Empty frozen set (no `run.json`) skips check.
|
|
13
|
+
- `mockApi.strategy !== "not-needed"` fails closed when `mockCommandLabels` empty (`no authorized Mock verification commands`).
|
|
14
|
+
- OpenSpec policy: `task.json.frontendOpenspec.policy` (default `cited`); candidates = `requiredReadPaths` ∪ task-source citations; effective plan must append one fenced `openspec-citations` block (one JSON `{"path","section","line"}` per line). Candidates non-empty but block missing/unparseable → `openspec-citation-block-unparseable`; candidate not cited → `openspec-not-cited`; cited path without read event → `openspec-citation-not-read` (anti-fabrication). Empty candidates skip enforcement. `scan-strict` keeps full-read semantics (`openspec-not-read`); both modes keep `candidate-missing-drift`.
|
|
15
|
+
- Component conformance: missing `uiComponentChoices` (frozen bucket non-empty + UI-visible work) → `component-choices-missing`; bad/uncited `specReference.path` → `component-spec-reference-invalid` / `component-spec-not-cited`.
|
|
16
|
+
- revisionPatch mode: revision output is an RFC 7386 merge-patch delta applied on the original canonical contract node (`planFallbackFromNodeIds[0]`); protected skeleton paths remain immutable. Legacy DAGs keep full-contract semantics. Size guard: canonical serialization >64KB → `retryable-invalid` + `contract-too-large`.
|
|
17
|
+
- **`frontend-implement-pi`**: sole regular exclusive writer; uses `frontend-bounded-implement` (not this skill). Stay in `writeSet`; real requests default-on. Atomic handler/intercept/adapter with tests. Stop on forbidden paths/guesses. First line `IMPLEMENTATION_OUTCOME: changed|already-satisfied|blocked`; runtime checks against attributed diff. Optional mock-verify when frozen; static+behavior always; behavior must prove page consumption. `not-needed` keeps real integration pending unless real backend has fresh evidence.
|
|
18
|
+
|
|
19
|
+
## Contract / trace / stages (M1–M2)
|
|
20
|
+
|
|
21
|
+
- `frontend-verify-assess-shell` runs Mock/static/behavior groups, binds `verificationTargets` to command labels+evidence, writes `frontend-verification-trace.json`+`frontend-repair-assessment.json`; browser/visual stay `not-run`.
|
|
22
|
+
- `frontend-review-context-shell` captures real diff; combines contract, effective trace, repair assessment, diff into `contracts/frontend-review-context.json`.
|
|
23
|
+
- Implement stages: (1) contract confirm (2) tests sync (3) component/UI (4) API/Mock (5) frozen checks (6) diff cleanup. Summary: Contract Ref, Changed Files, Requirements, UI States, Tests, Verification Attempts, Deviations, Residual Risks.
|
|
24
|
+
|
|
25
|
+
## Repair (M3)
|
|
26
|
+
|
|
27
|
+
Only `eligible=true` runs `frontend-repair-pi` (same writeSet; no re-spec; max 1 attempt) + `frontend-reverify-shell`. No-failure skips both. Non-repairable contract/path/dependency/credential/deploy/spec-unclear failures fail closed.
|
|
28
|
+
|
|
29
|
+
## Risk & capability (M4–M6)
|
|
30
|
+
|
|
31
|
+
Deterministic risk, no model; high-risk beats small; supervised never small. Standard/high-risk: 15 top-level nodes; small: 13 (omits revision + final review). Capability seed injects adapters; openspec specs and task sources outrank adapter guidance. A11y: static/component tools only when present; Browser a11y always not-run.
|
|
@@ -9,25 +9,17 @@ references:
|
|
|
9
9
|
|
|
10
10
|
# Frontend Review
|
|
11
11
|
|
|
12
|
-
Use for `frontend-review-pi`; read the findings guide
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
Use for `frontend-review-pi`; read the findings guide first. Required inputs are
|
|
13
|
+
original task/reference material, effective plan/design branch, implementation summary,
|
|
14
|
+
and `contracts/frontend-review-context.json`. That canonical context binds the validated
|
|
15
|
+
implementation contract, effective verification trace, repair assessment, optional
|
|
16
|
+
`frontend-lint-assessment-v1`, and run-owned diff. The diff is authoritative.
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## Verdict Contract
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
- `request_review_changes` for a defect, missing required evidence, forbidden
|
|
24
|
-
write, or unmet acceptance criterion. It must include a typed `issueCategory`,
|
|
25
|
-
at least one `evidenceRef`, and non-empty findings.
|
|
26
|
-
|
|
27
|
-
The typed terminal is the only authoritative outcome. Do not require or emit a
|
|
28
|
-
`VERDICT:` line or response-text JSON verdict. A request for review changes ends
|
|
29
|
-
this run and is handled by the recovery controller rather than a same-run repair
|
|
30
|
-
branch.
|
|
20
|
+
The first non-empty line must be exactly `VERDICT: pass` or
|
|
21
|
+
`VERDICT: request-revision`. Any Critical/Important finding, failed or missing
|
|
22
|
+
required check, forbidden write, or unmet acceptance criterion forces revision.
|
|
31
23
|
|
|
32
24
|
## Review Scope
|
|
33
25
|
|
|
@@ -35,7 +27,7 @@ branch.
|
|
|
35
27
|
- Inspect every changed file against allowed, forbidden, and approved write scope.
|
|
36
28
|
- Map criteria to behavior, applicable UI states, tests, and shell evidence.
|
|
37
29
|
- Review state/data flow, validation, async/error behavior, design, responsive/a11y,
|
|
38
|
-
dependencies, and regression risk when applicable.
|
|
30
|
+
dependencies, maintenance, and regression risk when applicable.
|
|
39
31
|
- Inspect static, behavior, and available Mock-specific artifacts directly. For Mock
|
|
40
32
|
strategies, compare the endpoint matrix, handler/fixture/adapter and consumer diff;
|
|
41
33
|
require the real request as default, contract-aligned fixtures, production isolation,
|
|
@@ -46,8 +38,11 @@ branch.
|
|
|
46
38
|
baseline-matched diagnostics on unchanged files, and none on writer-changed files.
|
|
47
39
|
Report debt, never `lint passed`; `failed`/`unavailable` blocks. Typecheck, build,
|
|
48
40
|
and test still require successful final exits.
|
|
49
|
-
-
|
|
50
|
-
|
|
41
|
+
- Component/design claims need both knowledge-base and local openspec evidence. Query
|
|
42
|
+
the connector when available and always read task-relevant files under
|
|
43
|
+
`<repoRoot>/openspec/schemas/`, `<repoRoot>/openspec/project-specs/`, and `<repoRoot>/ai_workspace/`.
|
|
44
|
+
Connector format is TODO; never invent evidence. Only successful `read` calls are
|
|
45
|
+
observable as "已读取规范文件".
|
|
51
46
|
- Treat shell exit status as authoritative. Do not edit files.
|
|
52
47
|
|
|
53
48
|
## Evidence And Output
|
|
@@ -14,23 +14,24 @@
|
|
|
14
14
|
`baseline-debt` only with a valid `frontend-lint-assessment-v1`; this is not a
|
|
15
15
|
passed lint result. A changed-file lint diagnostic, new unmatched diagnostic,
|
|
16
16
|
command drift, missing baseline, timeout, or unparseable output is Important.
|
|
17
|
-
- Treat
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
reference accurately instead.
|
|
17
|
+
- Treat knowledge base, `openspec/schemas/`, `openspec/project-specs/`, and `ai_workspace/` as
|
|
18
|
+
parallel sources. Record connector/query/source/time plus openspec search terms and
|
|
19
|
+
matched paths/headings; label fallback or unavailable accurately.
|
|
21
20
|
|
|
22
21
|
## Review Sequence
|
|
23
22
|
|
|
24
23
|
1. Establish changed-file inventory and write boundaries.
|
|
25
|
-
2. Compare
|
|
24
|
+
2. Compare original requirement with derived contract/constraints.
|
|
26
25
|
3. Map each criterion to code, states, tests, and evidence.
|
|
27
26
|
4. Inspect interactions, state/data/API behavior, failure paths, and regressions.
|
|
28
27
|
5. Check mock selection, contract-to-fixture mapping, activation/default path,
|
|
29
28
|
handler/fixture/adapter and consumer diff, verification, production imports, and
|
|
30
29
|
the real-integration gap.
|
|
31
|
-
6. Check
|
|
30
|
+
6. Check design evidence, responsive/a11y behavior, dependencies, and maintenance.
|
|
32
31
|
7. Classify findings and derive the verdict mechanically.
|
|
33
32
|
|
|
33
|
+
Skipping either directory is Important when design compliance affects acceptance.
|
|
34
|
+
|
|
34
35
|
```text
|
|
35
36
|
- [Critical|Important|Minor] path:line — Problem; impact; required correction; evidence.
|
|
36
37
|
```
|