@givolt/i3-composer-agent 3.1.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +1 -1
- package/.claude/commands/i3-build.md +1 -0
- package/.claude/commands/i3-code-simplify.md +1 -0
- package/.claude/commands/i3-constraints.md +1 -0
- package/.claude/commands/i3-plan.md +1 -0
- package/.claude/commands/i3-review.md +1 -0
- package/.claude/commands/i3-ship.md +1 -0
- package/.claude/commands/i3-sop.md +3 -3
- package/.claude/commands/i3-spec.md +1 -0
- package/.claude/commands/i3-test.md +1 -0
- package/.claude/commands/i3-webperf.md +1 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.gemini/commands/i3-sop.toml +3 -3
- package/README.md +44 -43
- package/bin/i3-composer-agent.cjs +4 -59
- package/bin/install.cjs +6 -14
- package/bin/native-layout.cjs +11 -2
- package/bin/native-migration.cjs +68 -28
- package/bin/retired-custom-fingerprints.json +1597 -0
- package/bin/wizard.cjs +2 -13
- package/commands/i3-sop.toml +3 -3
- package/docs/antigravity-setup.md +3 -1
- package/docs/codebuddy-setup.md +19 -76
- package/docs/codex-setup.md +10 -4
- package/docs/comparison.md +1 -1
- package/docs/copilot-cli-setup.md +4 -4
- package/docs/cursor-setup.md +1 -1
- package/docs/gemini-cli-setup.md +1 -1
- package/docs/other-hosts.md +2 -2
- package/docs/windsurf-setup.md +2 -2
- package/docs/workbuddy-setup.md +9 -16
- package/evals/README.md +10 -0
- package/evals/cases/i3-code-simplification.json +8 -0
- package/evals/cases/i3-documentation-and-adrs.json +4 -0
- package/evals/cases/i3-enterprise-sop.json +70 -32
- package/evals/cases/i3-frontend-ui-engineering.json +1 -1
- package/evals/cases/i3-security-and-hardening.json +4 -0
- package/evals/cases/i3-ui-demo.json +2 -2
- package/evals/cases/i3-using-agent-skills.json +5 -5
- package/evals/plugin/simplify-fires-on-pasted-function/graders/behavior-kept-and-explained.md +7 -0
- package/evals/plugin/simplify-fires-on-pasted-function/graders/skill-fired.md +5 -0
- package/evals/plugin/simplify-fires-on-pasted-function/prompt.md +30 -0
- package/evals/plugin/simplify-stays-quiet-on-make-it-fast/graders/not-fired.md +8 -0
- package/evals/plugin/simplify-stays-quiet-on-make-it-fast/prompt.md +20 -0
- package/evals/zh-CN/cases/i3-code-simplification.json +8 -0
- package/evals/zh-CN/cases/i3-documentation-and-adrs.json +4 -0
- package/evals/zh-CN/cases/i3-enterprise-sop.json +77 -31
- package/evals/zh-CN/cases/i3-frontend-ui-engineering.json +2 -2
- package/evals/zh-CN/cases/i3-security-and-hardening.json +4 -0
- package/evals/zh-CN/cases/i3-ui-demo.json +2 -2
- package/evals/zh-CN/cases/i3-using-agent-skills.json +6 -6
- package/hooks/SDD-CACHE.md +1 -1
- package/package.json +13 -102
- package/plugin.json +15 -2
- package/references/accessibility-checklist.md +4 -4
- package/references/performance-checklist.md +5 -4
- package/references/testing-patterns.md +2 -1
- package/scripts/floor-guard-reference-test.js +32 -0
- package/scripts/lib/execution-status.js +44 -0
- package/scripts/run-evals-test.js +157 -7
- package/scripts/run-evals.js +59 -12
- package/scripts/ui-demo-test.js +2 -2
- package/scripts/validate-artifact-paths-test.js +14 -0
- package/scripts/validate-artifact-paths.js +4 -2
- package/skills/i3-api-and-interface-design/SKILL.md +3 -1
- package/skills/i3-ci-cd-and-automation/SKILL.md +7 -4
- package/skills/i3-code-simplification/SKILL.md +3 -3
- package/skills/i3-constraint-driven-development/SKILL.md +4 -4
- package/skills/i3-constraint-driven-development/references/floor-guard.md +2 -2
- package/skills/i3-context-engineering/SKILL.md +1 -1
- package/skills/i3-debugging-and-error-recovery/SKILL.md +1 -1
- package/skills/i3-deprecation-and-migration/SKILL.md +6 -1
- package/skills/i3-documentation-and-adrs/SKILL.md +3 -2
- package/skills/i3-enterprise-sop/SKILL.md +121 -94
- package/skills/i3-enterprise-sop/references/engineering-skeleton/directory-standard.md +31 -17
- package/skills/i3-enterprise-sop/references/handoff.py +235 -135
- package/skills/i3-enterprise-sop/references/read_text.py +60 -0
- package/skills/i3-enterprise-sop/references/technical-baseline/baselines/enterprise-application-technical-baseline-v0-0-4.md +47 -47
- package/skills/i3-enterprise-sop/references/technical-baseline/readme.md +9 -118
- package/skills/i3-enterprise-sop/references/technical-baseline/templates/technical-baseline.md +8 -8
- package/skills/i3-enterprise-sop/references/{ad/templates → templates}/ad.md +57 -50
- package/skills/i3-enterprise-sop/references/{brd/templates → templates}/brd.md +23 -12
- package/skills/i3-enterprise-sop/references/{prd/templates → templates}/prd.md +84 -51
- package/skills/i3-enterprise-sop/references/{testcase/templates → templates}/testcase.md +49 -39
- package/skills/i3-frontend-ui-engineering/SKILL.md +6 -10
- package/skills/i3-idea-refine/SKILL.md +4 -2
- package/skills/i3-incremental-implementation/SKILL.md +0 -4
- package/skills/i3-performance-optimization/SKILL.md +2 -2
- package/skills/i3-security-and-hardening/references/hardening-patterns.md +5 -0
- package/skills/i3-source-driven-development/SKILL.md +3 -2
- package/skills/i3-spec-driven-development/SKILL.md +1 -1
- package/skills/i3-ui-demo/SKILL.md +3 -1
- package/skills/i3-ui-demo/references/dependencies.md +1 -1
- package/skills/i3-ui-demo/references/resources.md +1 -1
- package/skills/i3-ui-demo/scripts/dependencies.cjs +0 -3
- package/skills/i3-using-agent-skills/SKILL.md +2 -2
- package/.claude/commands/i3-prototype.md +0 -23
- package/.gemini/commands/i3-prototype.toml +0 -23
- package/commands/i3-prototype.toml +0 -23
- package/docs/upstream-repository/AGENTS.md +0 -92
- package/docs/upstream-repository/CLAUDE.md +0 -60
- package/docs/upstream-repository/CONTRIBUTING.md +0 -137
- package/docs/upstream-repository/README.md +0 -8
- package/docs/upstream-repository/gitattributes.txt +0 -1
- package/docs/upstream-repository/gitignore.txt +0 -10
- package/docs/upstream-repository/manifest.json +0 -71
- package/docs/upstream-repository/opencode-skills.link +0 -1
- package/docs/upstream-repository/skill-gap.yml +0 -80
- package/docs/upstream-repository/skills-contributing.md +0 -15
- package/docs/upstream-repository/test-plugin-install.yml +0 -167
- package/evals/cases/i3-ui-prototype.json +0 -158
- package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.css +0 -3
- package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.js +0 -8
- package/evals/fixtures/i3-ui-prototype/admin-list/capability-definition.json +0 -67
- package/evals/fixtures/i3-ui-prototype/admin-list/index.html +0 -89
- package/evals/fixtures/i3-ui-prototype/admin-list/readme.md +0 -52
- package/evals/fixtures/i3-ui-prototype/admin-list/template.json +0 -8
- package/evals/fixtures/i3-ui-prototype/business-brief.md +0 -7
- package/evals/zh-CN/cases/i3-ui-prototype.json +0 -165
- package/hooks/PROTOTYPE.md +0 -31
- package/hooks/codebuddy-upstream.cjs +0 -93
- package/hooks/i3-prototype.cjs +0 -7
- package/hooks/manage.cjs +0 -169
- package/scripts/design-provider-discovery-test.js +0 -190
- package/scripts/design-provider-test.js +0 -75
- package/scripts/enterprise-template-test.js +0 -205
- package/scripts/lib/prototype-fixture.cjs +0 -17
- package/scripts/prototype-cache-test.js +0 -55
- package/scripts/prototype-generation-entry-test.js +0 -6
- package/scripts/prototype-generation-evidence-test.js +0 -10
- package/scripts/prototype-generation-native-test.js +0 -78
- package/scripts/prototype-generation-test.js +0 -99
- package/scripts/prototype-inventory-test.js +0 -43
- package/scripts/prototype-locations-test.js +0 -79
- package/scripts/prototype-project-test.js +0 -183
- package/scripts/template-adapter-test.js +0 -155
- package/scripts/ui-prototype-binding-recovery-test.js +0 -84
- package/scripts/ui-prototype-buddy-lifecycle-test.js +0 -102
- package/scripts/ui-prototype-codebuddy-hook-test.js +0 -112
- package/scripts/ui-prototype-content-test.js +0 -123
- package/scripts/ui-prototype-dependencies-test.js +0 -226
- package/scripts/ui-prototype-devtools-test.js +0 -53
- package/scripts/ui-prototype-execution-evidence-test.js +0 -62
- package/scripts/ui-prototype-execution-gates-test.js +0 -91
- package/scripts/ui-prototype-execution-policy-test.js +0 -53
- package/scripts/ui-prototype-execution-runtime-test.js +0 -27
- package/scripts/ui-prototype-ide-source-test.js +0 -73
- package/scripts/ui-prototype-native-test.js +0 -526
- package/scripts/ui-prototype-recovery-test.js +0 -81
- package/scripts/ui-prototype-registration-test.js +0 -53
- package/scripts/ui-prototype-template-test.js +0 -261
- package/scripts/ui-prototype-test.js +0 -124
- package/scripts/ui-prototype-transcript-auto-test.js +0 -67
- package/skills/i3-enterprise-sop/references/ad/assets-manifest.json +0 -86
- package/skills/i3-enterprise-sop/references/ad/prompts/01-generate.md +0 -58
- package/skills/i3-enterprise-sop/references/ad/prompts/02-review.md +0 -54
- package/skills/i3-enterprise-sop/references/ad/prompts/03-revise.md +0 -54
- package/skills/i3-enterprise-sop/references/ad/prompts/04-recheck.md +0 -54
- package/skills/i3-enterprise-sop/references/ad/readme.md +0 -70
- package/skills/i3-enterprise-sop/references/assets-manifest.json +0 -230
- package/skills/i3-enterprise-sop/references/brd/assets-manifest.json +0 -83
- package/skills/i3-enterprise-sop/references/brd/prompts/01-generate.md +0 -51
- package/skills/i3-enterprise-sop/references/brd/prompts/02-review.md +0 -47
- package/skills/i3-enterprise-sop/references/brd/prompts/03-revise.md +0 -47
- package/skills/i3-enterprise-sop/references/brd/prompts/04-recheck.md +0 -47
- package/skills/i3-enterprise-sop/references/brd/readme.md +0 -50
- package/skills/i3-enterprise-sop/references/codebuddy-project-guide.md +0 -34
- package/skills/i3-enterprise-sop/references/controlled-handoff.md +0 -41
- package/skills/i3-enterprise-sop/references/controlled_handoff.py +0 -379
- package/skills/i3-enterprise-sop/references/engineering-skeleton/adoption.md +0 -200
- package/skills/i3-enterprise-sop/references/engineering-skeleton/catalog.json +0 -17
- package/skills/i3-enterprise-sop/references/engineering-skeleton/readme.md +0 -52
- package/skills/i3-enterprise-sop/references/handoff-contract.md +0 -196
- package/skills/i3-enterprise-sop/references/lifecycle-contract.md +0 -91
- package/skills/i3-enterprise-sop/references/plan-handoff.md +0 -73
- package/skills/i3-enterprise-sop/references/prd/assets-manifest.json +0 -109
- package/skills/i3-enterprise-sop/references/prd/prompts/01-generate.md +0 -64
- package/skills/i3-enterprise-sop/references/prd/prompts/02-review.md +0 -49
- package/skills/i3-enterprise-sop/references/prd/prompts/03-revise.md +0 -48
- package/skills/i3-enterprise-sop/references/prd/prompts/04-recheck.md +0 -47
- package/skills/i3-enterprise-sop/references/prd/readme.md +0 -137
- package/skills/i3-enterprise-sop/references/prd/template-contracts.md +0 -39
- package/skills/i3-enterprise-sop/references/prd/templates/ad.md +0 -17
- package/skills/i3-enterprise-sop/references/readme.md +0 -167
- package/skills/i3-enterprise-sop/references/recovery-contract.md +0 -65
- package/skills/i3-enterprise-sop/references/review-handoff.md +0 -105
- package/skills/i3-enterprise-sop/references/selection-handoff.md +0 -55
- package/skills/i3-enterprise-sop/references/selection_handoff.py +0 -225
- package/skills/i3-enterprise-sop/references/stages.json +0 -271
- package/skills/i3-enterprise-sop/references/technical-baseline/assets-manifest.json +0 -84
- package/skills/i3-enterprise-sop/references/template-contracts.md +0 -142
- package/skills/i3-enterprise-sop/references/testcase/assets-manifest.json +0 -91
- package/skills/i3-enterprise-sop/references/testcase/prompts/01-generate.md +0 -53
- package/skills/i3-enterprise-sop/references/testcase/prompts/02-review.md +0 -51
- package/skills/i3-enterprise-sop/references/testcase/prompts/03-revise.md +0 -49
- package/skills/i3-enterprise-sop/references/testcase/prompts/04-recheck.md +0 -51
- package/skills/i3-enterprise-sop/references/testcase/readme.md +0 -61
- package/skills/i3-enterprise-sop/references/verification/check_execution.py +0 -185
- package/skills/i3-enterprise-sop/references/verification/check_native_execution.py +0 -282
- package/skills/i3-enterprise-sop/references/verification/check_reads.py +0 -348
- package/skills/i3-enterprise-sop/references/verification/readme.md +0 -149
- package/skills/i3-enterprise-sop/references/verification/review-output.schema.json +0 -155
- package/skills/i3-enterprise-sop/references/verification/review_handoff.py +0 -329
- package/skills/i3-ui-prototype/SKILL.md +0 -256
- package/skills/i3-ui-prototype/assets/capabilities/generation.json +0 -833
- package/skills/i3-ui-prototype/assets/capabilities/management.json +0 -294
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/acceptance.json +0 -51
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/component-map.json +0 -13
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/generation-component-map.json +0 -300
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/index.html +0 -11
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package-lock.json +0 -2298
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package.json +0 -22
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/public/prototype-config.json +0 -6
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/App.vue +0 -136
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/components/DeviceEditor.vue +0 -111
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/config.ts +0 -19
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/content.ts +0 -28
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/devices.ts +0 -50
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/theme.ts +0 -25
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/main.ts +0 -18
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/style.css +0 -50
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/useDevices.ts +0 -66
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/devices.test.ts +0 -44
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/theme.test.ts +0 -26
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tsconfig.json +0 -15
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/vite.config.ts +0 -4
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/profile.json +0 -174
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/readme.md +0 -61
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/index.html +0 -11
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package-lock.json +0 -2298
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package.json +0 -22
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/public/prototype-config.json +0 -21
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/App.vue +0 -62
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/PrototypeShell.vue +0 -59
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/config.ts +0 -23
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/presentation.ts +0 -29
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/theme.ts +0 -25
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/main.ts +0 -18
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/style.css +0 -26
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/presentation.test.ts +0 -23
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/theme.test.ts +0 -26
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tsconfig.json +0 -15
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/vite.config.ts +0 -4
- package/skills/i3-ui-prototype/assets/hosts/codebuddy/profile.json +0 -17
- package/skills/i3-ui-prototype/assets/optional-skills/host-targets.json +0 -739
- package/skills/i3-ui-prototype/assets/optional-skills/sources.json +0 -27
- package/skills/i3-ui-prototype/assets/templates/catalog.js +0 -149
- package/skills/i3-ui-prototype/assets/templates/catalog.json +0 -149
- package/skills/i3-ui-prototype/assets/templates/classic-admin/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/classic-admin/preset.json +0 -6
- package/skills/i3-ui-prototype/assets/templates/common/app/app.mjs +0 -89
- package/skills/i3-ui-prototype/assets/templates/common/app/config.json +0 -1
- package/skills/i3-ui-prototype/assets/templates/common/app/domain.mjs +0 -20
- package/skills/i3-ui-prototype/assets/templates/common/app/index.html +0 -17
- package/skills/i3-ui-prototype/assets/templates/common/app/serve.cjs +0 -16
- package/skills/i3-ui-prototype/assets/templates/common/app/styles.css +0 -670
- package/skills/i3-ui-prototype/assets/templates/common/app/tokens.css +0 -19
- package/skills/i3-ui-prototype/assets/templates/common/design-system/master.md +0 -20
- package/skills/i3-ui-prototype/assets/templates/common/gallery.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/common/mocks/applications.json +0 -5
- package/skills/i3-ui-prototype/assets/templates/common/requirements-map.json +0 -8
- package/skills/i3-ui-prototype/assets/templates/common/serve-gallery.cjs +0 -16
- package/skills/i3-ui-prototype/assets/templates/credits.md +0 -17
- package/skills/i3-ui-prototype/assets/templates/data-operations/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/data-operations/preset.json +0 -6
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/capability-definition.json +0 -294
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/component-inventory.json +0 -707
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/design-system.md +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/generation.json +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/index.html +0 -534
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline-build.json +0 -265
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline.js +0 -8888
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/origin.json +0 -344
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/preset.json +0 -928
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/app.js +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/empty.svg +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/reference-styles.json +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-403.svg +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-404.svg +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets-manifest.json +0 -334
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/baseline.json +0 -173
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/conversion.md +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/credits.md +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/design-tokens.json +0 -881
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/index.html +0 -28
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/@qin-ui-antdv-next-pro.txt +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/ant-design-icons.txt +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/antdv-next.txt +0 -21
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/package.json +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/browser-routes.json +0 -298
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/coverage.json +0 -180
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/integrity.json +0 -13
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/keyboard.json +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/responsive.json +0 -125
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/review.md +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/rules.log +0 -150
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/selection.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/visual-comparison.json +0 -342
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/readme.md +0 -73
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/reference.md +0 -59
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/routes.json +0 -178
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/controls.js +0 -99
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dialogs.js +0 -54
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dom.js +0 -264
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/forms.js +0 -47
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/icons.js +0 -41
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/layout.js +0 -47
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/router.js +0 -63
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/state.js +0 -90
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/table.js +0 -41
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/widgets.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.js +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.js +0 -48
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.js +0 -6
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.js +0 -13
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/data.js +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/domain.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/registry.js +0 -25
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/store.js +0 -85
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.js +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.js +0 -66
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.js +0 -66
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.js +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.js +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.js +0 -116
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.js +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.js +0 -77
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/data.js +0 -60
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/domain.js +0 -105
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/store.js +0 -212
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.js +0 -23
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.js +0 -78
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.js +0 -26
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.js +0 -7
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.js +0 -72
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.js +0 -46
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.js +0 -52
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.js +0 -19
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/data.js +0 -48
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/domain.js +0 -39
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/store.js +0 -129
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.js +0 -21
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.js +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.js +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/commands.js +0 -82
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/examples.js +0 -47
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/model.js +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/repair.js +0 -68
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/store.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/types.js +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/workbench.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.js +0 -28
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.js +0 -31
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.js +0 -43
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.js +0 -34
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.js +0 -67
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.js +0 -41
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.js +0 -31
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.js +0 -26
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.js +0 -70
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/data.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/domain.js +0 -62
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/management.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/managementStore.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/store.js +0 -132
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.js +0 -45
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.js +0 -54
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.js +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.js +0 -45
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/domain.js +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/state.js +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/store.js +0 -116
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.js +0 -45
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.js +0 -67
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.js +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.js +0 -60
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/commands.js +0 -157
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/model.js +0 -136
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/store.js +0 -76
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.js +0 -26
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.js +0 -14
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.js +0 -113
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.js +0 -62
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/commands.js +0 -97
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/model.js +0 -147
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/store.js +0 -13
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.js +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/columns.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryGuide.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryView.js +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listBatch.js +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listSelection.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/policy.js +0 -68
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/session.js +0 -44
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.js +0 -25
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.js +0 -53
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.html +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.js +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/confirmation.js +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/navigation.js +0 -19
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.js +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.js +0 -57
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/data.js +0 -20
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/domain.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/store.js +0 -151
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.js +0 -40
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.js +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.html +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.js +0 -48
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/domain.js +0 -204
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/exampleSource.js +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/registry.js +0 -135
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/store.js +0 -137
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/model.js +0 -56
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/store.js +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.js +0 -31
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.js +0 -68
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.html +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/data.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/domain.js +0 -83
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/registry.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/store.js +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/admin.css +0 -60
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/agents.css +0 -46
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/antdv.css +0 -295
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/app.css +0 -102
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/delivery.css +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/intents.css +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/native.css +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/operations.css +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pbc.css +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/permissions.css +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pro.css +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/releases.css +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reset.css +0 -246
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reviews.css +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tasks.css +0 -6
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tokens.css +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workbench.css +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workflows.css +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/admin-rules.test.js +0 -96
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/agents.test.js +0 -14
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/intent-state.test.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/list-batch.test.js +0 -44
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-fixtures.js +0 -19
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-repair.test.js +0 -14
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operations.test.js +0 -25
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-management.test.js +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-state.test.js +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permission-config.test.js +0 -23
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permissions.test.js +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/releases.test.js +0 -50
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/reviews.test.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-forms-router.test.js +0 -28
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-state.test.js +0 -42
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-stores.test.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/spec-state.test.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/tasks.test.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workbench.test.js +0 -34
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workflows.test.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/convert.mjs +0 -168
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/serve.mjs +0 -7
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/styles.mjs +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/verify.mjs +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/serve.cjs +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template-inventory.json +0 -28791
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/usability.css +0 -44
- package/skills/i3-ui-prototype/assets/templates/gallery/index.html +0 -40
- package/skills/i3-ui-prototype/assets/templates/generation-options.js +0 -42
- package/skills/i3-ui-prototype/assets/templates/index.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/modern-workspace/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/modern-workspace/preset.json +0 -6
- package/skills/i3-ui-prototype/assets/templates/presentation.html +0 -17
- package/skills/i3-ui-prototype/assets/templates/serve-gallery.cjs +0 -23
- package/skills/i3-ui-prototype/references/artifact-contract.md +0 -66
- package/skills/i3-ui-prototype/references/content-template.md +0 -81
- package/skills/i3-ui-prototype/references/enterprise-admin.md +0 -44
- package/skills/i3-ui-prototype/references/entry-contract.md +0 -71
- package/skills/i3-ui-prototype/references/execution-evidence.md +0 -51
- package/skills/i3-ui-prototype/references/expert-adapter.md +0 -76
- package/skills/i3-ui-prototype/references/framework-contract.md +0 -76
- package/skills/i3-ui-prototype/references/generation-contract.md +0 -122
- package/skills/i3-ui-prototype/references/interaction-acceptance.md +0 -169
- package/skills/i3-ui-prototype/references/legacy-native.md +0 -58
- package/skills/i3-ui-prototype/references/optional-skills.md +0 -63
- package/skills/i3-ui-prototype/references/project-layout.md +0 -92
- package/skills/i3-ui-prototype/references/template-adapters.md +0 -63
- package/skills/i3-ui-prototype/references/workflow-contract.md +0 -77
- package/skills/i3-ui-prototype/scripts/adapters/easel-html.cjs +0 -30
- package/skills/i3-ui-prototype/scripts/adapters/legacy-html.cjs +0 -28
- package/skills/i3-ui-prototype/scripts/browser-workspace.cjs +0 -72
- package/skills/i3-ui-prototype/scripts/buddy-host.cjs +0 -40
- package/skills/i3-ui-prototype/scripts/check-design-provider.cjs +0 -9
- package/skills/i3-ui-prototype/scripts/check-prototype.cjs +0 -14
- package/skills/i3-ui-prototype/scripts/codebuddy-context.cjs +0 -92
- package/skills/i3-ui-prototype/scripts/codebuddy-hook.cjs +0 -298
- package/skills/i3-ui-prototype/scripts/codebuddy-ide-source.cjs +0 -69
- package/skills/i3-ui-prototype/scripts/codebuddy-registration.cjs +0 -125
- package/skills/i3-ui-prototype/scripts/content-template.cjs +0 -98
- package/skills/i3-ui-prototype/scripts/design-provider-discovery.cjs +0 -128
- package/skills/i3-ui-prototype/scripts/enterprise-template.cjs +0 -104
- package/skills/i3-ui-prototype/scripts/execution-assertions.cjs +0 -43
- package/skills/i3-ui-prototype/scripts/execution-diagnostics.cjs +0 -91
- package/skills/i3-ui-prototype/scripts/execution-evidence.cjs +0 -177
- package/skills/i3-ui-prototype/scripts/execution-gates.cjs +0 -216
- package/skills/i3-ui-prototype/scripts/execution-policy.cjs +0 -62
- package/skills/i3-ui-prototype/scripts/execution-recovery.cjs +0 -58
- package/skills/i3-ui-prototype/scripts/execution-runtime.cjs +0 -69
- package/skills/i3-ui-prototype/scripts/generation-assets.cjs +0 -18
- package/skills/i3-ui-prototype/scripts/generation-contract.cjs +0 -214
- package/skills/i3-ui-prototype/scripts/generation-evidence.cjs +0 -50
- package/skills/i3-ui-prototype/scripts/generation-replan.cjs +0 -34
- package/skills/i3-ui-prototype/scripts/hosts/codebuddy.cjs +0 -21
- package/skills/i3-ui-prototype/scripts/init-prototype.cjs +0 -8
- package/skills/i3-ui-prototype/scripts/manage-baseline.cjs +0 -11
- package/skills/i3-ui-prototype/scripts/native-browser.cjs +0 -785
- package/skills/i3-ui-prototype/scripts/native-build.cjs +0 -91
- package/skills/i3-ui-prototype/scripts/native-command.cjs +0 -35
- package/skills/i3-ui-prototype/scripts/native-delivery.cjs +0 -104
- package/skills/i3-ui-prototype/scripts/native-devtools.cjs +0 -92
- package/skills/i3-ui-prototype/scripts/native-files.cjs +0 -44
- package/skills/i3-ui-prototype/scripts/native-pilot-lib.cjs +0 -290
- package/skills/i3-ui-prototype/scripts/native-pilot.cjs +0 -59
- package/skills/i3-ui-prototype/scripts/native-tool-name.cjs +0 -5
- package/skills/i3-ui-prototype/scripts/native-tool-result.cjs +0 -14
- package/skills/i3-ui-prototype/scripts/optional-skill-install.cjs +0 -203
- package/skills/i3-ui-prototype/scripts/project-registry.cjs +0 -126
- package/skills/i3-ui-prototype/scripts/prototype-dependencies.cjs +0 -103
- package/skills/i3-ui-prototype/scripts/prototype-hooks.cjs +0 -94
- package/skills/i3-ui-prototype/scripts/prototype-lib.cjs +0 -277
- package/skills/i3-ui-prototype/scripts/prototype-locations.cjs +0 -69
- package/skills/i3-ui-prototype/scripts/ptc-callbacks.cjs +0 -131
- package/skills/i3-ui-prototype/scripts/sync-template.cjs +0 -19
- package/skills/i3-ui-prototype/scripts/template-adapters.cjs +0 -89
- package/skills/i3-ui-prototype/scripts/template-contract.cjs +0 -407
- package/skills/i3-ui-prototype/scripts/template-inventory.cjs +0 -78
- package/skills/i3-ui-prototype/scripts/validate-result.cjs +0 -117
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const fs = require('node:fs'), path = require('node:path'), crypto = require('node:crypto'), assert = require('node:assert/strict');
|
|
3
|
-
const hash = value => crypto.createHash('sha256').update(JSON.stringify(value)).digest('hex');
|
|
4
|
-
const copy = value => JSON.parse(JSON.stringify(value));
|
|
5
|
-
function resource(snapshot, name) {
|
|
6
|
-
const file = snapshot.files.find(item => item.path === name);
|
|
7
|
-
assert.ok(file, `Template generation resource is missing: ${name}`);
|
|
8
|
-
return JSON.parse(Buffer.from(file.content, 'base64').toString('utf8'));
|
|
9
|
-
}
|
|
10
|
-
function definition() { return JSON.parse(fs.readFileSync(path.join(__dirname, '../assets/capabilities/generation.json'), 'utf8')); }
|
|
11
|
-
function source(requirement) {
|
|
12
|
-
return requirement?.source && ['type', 'reference', 'statement'].every(key => typeof requirement.source[key] === 'string' && requirement.source[key].trim());
|
|
13
|
-
}
|
|
14
|
-
function validateParameters(capability, value) {
|
|
15
|
-
assert.ok(value && typeof value === 'object' && !Array.isArray(value), 'Capability parameters must be an object');
|
|
16
|
-
for (const [key, item] of Object.entries(value)) {
|
|
17
|
-
const rule = capability.parameters[key]; assert.ok(rule, `Unsupported ${capability.id} parameter: ${key}`);
|
|
18
|
-
if (rule.enum) assert.ok(rule.enum.includes(item), `Invalid ${capability.id} parameter: ${key}`);
|
|
19
|
-
if (rule.boolean) assert.equal(typeof item, 'boolean');
|
|
20
|
-
if (rule.string) assert.ok(typeof item === 'string' && item.trim(), `Invalid string parameter: ${key}`);
|
|
21
|
-
if (rule.integer) assert.ok(Number.isInteger(item) && item >= rule.integer, `Invalid integer parameter: ${key}`);
|
|
22
|
-
if (rule.strings) assert.ok(Array.isArray(item) && item.every(value => typeof value === 'string' && value.trim()), `Invalid list parameter: ${key}`);
|
|
23
|
-
if (rule.positiveIntegers) assert.ok(Array.isArray(item) && item.length >= 2 && new Set(item).size === item.length && item.every(value => Number.isInteger(value) && value > 0), `Invalid page-size parameter: ${key}`);
|
|
24
|
-
}
|
|
25
|
-
if (capability.id === 'pagination' && Object.keys(value).length) require('./template-contract.cjs').resolvePaginationParameters(value);
|
|
26
|
-
return copy(value);
|
|
27
|
-
}
|
|
28
|
-
function reference(inventory, start) {
|
|
29
|
-
const fragments = new Map(inventory.fragments.map(fragment => [fragment.file, fragment])), visited = new Set(), nodes = [], events = [], elements = [], capabilities = new Set();
|
|
30
|
-
function visit(file) {
|
|
31
|
-
if (visited.has(file)) return; visited.add(file);
|
|
32
|
-
const fragment = fragments.get(file); assert.ok(fragment, `Reference fragment is missing: ${file}`);
|
|
33
|
-
for (const node of fragment.nodes) {
|
|
34
|
-
nodes.push(node.id);
|
|
35
|
-
for (const [event, expression] of Object.entries(node.attributes)) if (event.startsWith('data-on-')) events.push({ nodeId: node.id, event, expression });
|
|
36
|
-
const componentName = node.attributes['data-component'], component = inventory.components[componentName];
|
|
37
|
-
const nodeEvents = Object.entries(node.attributes).filter(([key]) => key.startsWith('data-on-')).map(([event, expression]) => ({ event, expression }));
|
|
38
|
-
if (nodeEvents.length || (component && component.classification.kind !== 'icon' && component.classification.capabilities.some(id => id !== 'review-tools'))) elements.push({ nodeId: node.id, fragment: file, component: componentName || null, capabilities: (component?.classification.capabilities || []).filter(id => id !== 'review-tools'), events: nodeEvents });
|
|
39
|
-
if (component) {
|
|
40
|
-
for (const capability of component.classification.capabilities) capabilities.add(capability);
|
|
41
|
-
if (component.classification.source) visit(component.classification.source);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
visit(start);
|
|
46
|
-
return { fragments: [...visited], nodes, events, elements, capabilities: [...capabilities].sort() };
|
|
47
|
-
}
|
|
48
|
-
function navigation(items, pages) {
|
|
49
|
-
if (items === undefined) return pages.map(page => ({ key: page.id, label: page.title }));
|
|
50
|
-
const seen = new Set(), groups = new Set();
|
|
51
|
-
function walk(values) {
|
|
52
|
-
assert.ok(Array.isArray(values) && values.length, 'Navigation entries must be a nonempty array');
|
|
53
|
-
return values.map(item => {
|
|
54
|
-
if (item.children) {
|
|
55
|
-
assert.ok(!item.pageId && /^[a-z][a-z0-9-]{0,63}$/.test(item.id || '') && item.title?.trim() && !groups.has(item.id), 'Invalid or duplicate navigation group'); groups.add(item.id);
|
|
56
|
-
return { key: `@${item.id}`, label: item.title, children: walk(item.children) };
|
|
57
|
-
}
|
|
58
|
-
const page = pages.find(page => page.id === item.pageId);
|
|
59
|
-
assert.ok(page && !seen.has(page.id), 'Duplicate or unknown navigation page'); seen.add(page.id);
|
|
60
|
-
return { key: page.id, label: item.title || page.title };
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
const result = walk(items); assert.equal(seen.size, pages.length, 'Navigation omits a declared page'); return result;
|
|
64
|
-
}
|
|
65
|
-
function compile(snapshot, scope, options = {}) {
|
|
66
|
-
assert.equal(scope.schemaVersion, 3, 'Generation contracts require sourced scope schemaVersion=3');
|
|
67
|
-
const meta = resource(snapshot, 'generation.json'), rules = copy(options.definition || definition());
|
|
68
|
-
assert.equal(meta.schemaVersion, 1, 'Unsupported template generation version'); assert.equal(rules.schemaVersion, 1);
|
|
69
|
-
assert.equal(meta.templateId, snapshot.id, 'Generation metadata belongs to a different template');
|
|
70
|
-
assert.equal(hash(rules), meta.definitionDigest, 'Generation catalog differs from the frozen template rule identity');
|
|
71
|
-
assert.ok(meta.frameworks.includes(options.framework || 'vue-antdv-next'), 'Unsupported template/framework choice');
|
|
72
|
-
const presentation = { ...meta.defaults, ...scope.generation?.presentation };
|
|
73
|
-
for (const key of Object.keys(presentation)) assert.ok(Object.hasOwn(meta.choices[key] || {}, presentation[key]), `Unsupported presentation choice: ${key}=${presentation[key]}`);
|
|
74
|
-
const requirements = new Map((scope.requirements || []).map(item => [item.id, item]));
|
|
75
|
-
assert.ok(requirements.size === scope.requirements.length && requirements.size && [...requirements.values()].every(item => typeof item.id === 'string' && item.id.trim() && source(item)), 'Every generation requirement needs a unique identity and source');
|
|
76
|
-
const inventory = require('./template-inventory.cjs').verifySnapshot(snapshot), bindings = [], pages = [], coverage = [], decisions = scope.generation?.decisions || [];
|
|
77
|
-
assert.ok(Array.isArray(decisions), 'Generation applicability decisions must be an array');
|
|
78
|
-
const keys = new Set();
|
|
79
|
-
for (const decision of decisions) {
|
|
80
|
-
const key = `${decision.pageId}/${decision.regionId || "*"}/${decision.capabilityId}`; assert.ok(!keys.has(key), 'Duplicate generation applicability decision'); keys.add(key);
|
|
81
|
-
assert.ok(rules.capabilities[decision.capabilityId], 'Unknown generation capability decision');
|
|
82
|
-
assert.ok(['adopted', 'not-applicable'].includes(decision.decision), 'Unsupported generation decision');
|
|
83
|
-
if (decision.decision === 'not-applicable') { assert.ok(!decision.regionId && !Object.keys(decision.parameters || {}).length, 'Capability exclusion applies to the page and has no ignored parameters'); assert.ok(!decisions.some(item => item !== decision && item.pageId === decision.pageId && item.capabilityId === decision.capabilityId), 'Conflicting capability applicability decisions'); }
|
|
84
|
-
const requirement = requirements.get(decision.requirementId);
|
|
85
|
-
assert.ok(decision.reason?.trim() && source(requirement) && (decision.pageId === 'app-shell' || requirement.pages?.includes(decision.pageId)), 'Generation decision requires a reason and matching requirement source');
|
|
86
|
-
}
|
|
87
|
-
function bind(pageId, regionId, capabilityId, parameters = {}) {
|
|
88
|
-
assert.ok(rules.capabilities[capabilityId], `Unknown pattern capability: ${capabilityId}`);
|
|
89
|
-
const id = `${pageId}/${regionId}/${capabilityId}`;
|
|
90
|
-
const defaults = parameters.mode === 'fixed' ? { minimumTestPages: 3 } : rules.capabilities[capabilityId].defaults;
|
|
91
|
-
if (!bindings.some(item => item.id === id)) bindings.push({ id, pageId, regionId, capabilityId, parameters: validateParameters(rules.capabilities[capabilityId], { ...defaults, ...parameters }) });
|
|
92
|
-
}
|
|
93
|
-
for (const capability of rules.core) bind('app-shell', 'shell', capability);
|
|
94
|
-
if (meta.shell) coverage.push({ pageId: 'app-shell', ...reference(inventory, meta.shell) });
|
|
95
|
-
assert.ok(scope.pages?.length, 'Generation pages are required');
|
|
96
|
-
for (const page of scope.pages) {
|
|
97
|
-
assert.match(page.id || '', /^[a-z][a-z0-9-]{0,63}$/); assert.ok(page.id !== 'app-shell' && page.title?.trim(), 'Business page identity/title required');
|
|
98
|
-
assert.ok(!pages.some(item => item.id === page.id), 'Duplicate generation page');
|
|
99
|
-
const selected = snapshot.index.pages.find(item => item.id === page.referencePage); assert.ok(selected, `Unknown reference page: ${page.referencePage}`);
|
|
100
|
-
assert.ok(page.regions?.length, 'Generation regions are required');
|
|
101
|
-
const regionIds = new Set();
|
|
102
|
-
for (const region of page.regions) {
|
|
103
|
-
assert.match(region.id || '', /^[a-z][a-z0-9-]{0,63}$/);
|
|
104
|
-
assert.ok(!regionIds.has(region.id), 'Duplicate generation region'); regionIds.add(region.id);
|
|
105
|
-
const pattern = region.pattern || region.mode;
|
|
106
|
-
assert.ok(meta.patterns.includes(pattern) && rules.patterns[pattern], `Unsupported page pattern: ${pattern}`);
|
|
107
|
-
const selectedCapabilities = new Set(rules.patterns[pattern].required);
|
|
108
|
-
const editPresentation = region.parameters?.edit?.presentation || (['form-page','wizard','permissions'].includes(pattern) ? 'page' : region.parameters?.dialog?.presentation || 'drawer');
|
|
109
|
-
if (selectedCapabilities.has('edit')) {
|
|
110
|
-
if (pattern === 'form-page') assert.equal(editPresentation, 'page', 'A form-page requires page presentation');
|
|
111
|
-
if (pattern === 'edit-form') assert.ok(['drawer','modal'].includes(editPresentation), 'An edit-form requires dialog presentation');
|
|
112
|
-
if (editPresentation !== 'page') selectedCapabilities.add('dialog');
|
|
113
|
-
if (region.parameters?.dialog?.presentation) assert.equal(region.parameters.dialog.presentation, editPresentation, 'Edit and dialog presentation must agree');
|
|
114
|
-
}
|
|
115
|
-
for (const key of Object.keys(region.parameters || {})) {
|
|
116
|
-
assert.ok(rules.capabilities[key], `Unsupported capability parameter group: ${key}`);
|
|
117
|
-
assert.ok(selectedCapabilities.has(key) || decisions.some(item => item.pageId === page.id && item.regionId === region.id && item.capabilityId === key && item.decision === 'adopted'), `Unused capability parameter group: ${key}`);
|
|
118
|
-
}
|
|
119
|
-
for (const capability of selectedCapabilities) {
|
|
120
|
-
const selectedDefaults = capability === 'hierarchy' ? { kind: pattern === 'tree-table' ? 'tree-table' : pattern === 'permissions' ? 'permission-tree' : 'filter-tree', selectionPolicy: pattern === 'permissions' ? 'cascade' : pattern === 'tree-table' ? 'independent' : 'single' } : capability === 'edit' ? { presentation: editPresentation } : capability === 'dialog' && selectedCapabilities.has('edit') ? { presentation: editPresentation } : {};
|
|
121
|
-
bind(page.id, region.id, capability, { ...selectedDefaults, ...region.parameters?.[capability] });
|
|
122
|
-
}
|
|
123
|
-
for (const [kind, items] of Object.entries({ field: region.fields || [], action: region.actions || [] })) {
|
|
124
|
-
assert.ok(Array.isArray(items), 'Declare sourced field/action arrays'); const elementIds = new Set();
|
|
125
|
-
for (const item of items) {
|
|
126
|
-
assert.ok(/^[a-z][a-z0-9-]{0,63}$/.test(item.id || '') && !elementIds.has(item.id), 'Invalid or duplicate field/action identity'); elementIds.add(item.id);
|
|
127
|
-
assert.ok(item.label?.trim() && source(requirements.get(item.requirementId)) && requirements.get(item.requirementId).pages?.includes(page.id), 'Business field/action requires a label and matching requirement source');
|
|
128
|
-
if (kind === 'field') assert.ok(['text','textarea','select','number','checkbox','radio','date','time','tree-select','read-only'].includes(item.kind), 'Unsupported business field kind');
|
|
129
|
-
else assert.ok(['create','read','update','delete','submit','state-change','other'].includes(item.kind) && ['page','row','selected','node'].includes(item.target) && item.outcome?.trim(), 'Business action needs kind, target and expected outcome');
|
|
130
|
-
bindings.push({ id: `${page.id}/${region.id}/${kind}/${item.id}`, pageId: page.id, regionId: region.id, capabilityId: 'interaction', kind, parameters: copy(item) });
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
pages.push({ id: page.id, title: page.title, referencePage: page.referencePage, regions: page.regions.map(region => ({ id: region.id, pattern: region.pattern || region.mode, fields: copy(region.fields || []), actions: copy(region.actions || []) })) });
|
|
135
|
-
coverage.push({ pageId: page.id, ...reference(inventory, selected.fragment) });
|
|
136
|
-
}
|
|
137
|
-
for (const decision of decisions) {
|
|
138
|
-
assert.ok(decision.pageId === 'app-shell' || pages.some(page => page.id === decision.pageId), 'Decision page is not declared');
|
|
139
|
-
const alreadyRequired = bindings.some(item => (item.pageId === decision.pageId || item.pageId === 'app-shell') && item.capabilityId === decision.capabilityId);
|
|
140
|
-
assert.ok(!(alreadyRequired && decision.decision === 'not-applicable'), 'Cannot exempt a required selected-pattern capability');
|
|
141
|
-
if (decision.decision !== 'adopted') continue;
|
|
142
|
-
if (!decision.regionId) {
|
|
143
|
-
assert.ok(alreadyRequired, 'An adopted capability needs a declared region');
|
|
144
|
-
assert.ok(!Object.keys(decision.parameters || {}).length, 'Required capability parameters belong on the selected region');
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
const page = scope.pages.find(item => item.id === decision.pageId);
|
|
148
|
-
const region = decision.pageId === 'app-shell' && decision.regionId === 'shell' ? { id: 'shell' } : page?.regions.find(item => item.id === decision.regionId);
|
|
149
|
-
assert.ok(region, 'An adopted capability needs a declared region');
|
|
150
|
-
if (bindings.some(item => item.pageId === decision.pageId && item.regionId === region.id && item.capabilityId === decision.capabilityId)) assert.ok(!Object.keys(decision.parameters || {}).length, 'Required capability parameters belong on the selected region');
|
|
151
|
-
else bind(decision.pageId, region.id, decision.capabilityId, { ...region.parameters?.[decision.capabilityId], ...decision.parameters });
|
|
152
|
-
}
|
|
153
|
-
const pendingDecisions = [];
|
|
154
|
-
for (const item of coverage) for (const capabilityId of item.capabilities) {
|
|
155
|
-
if (capabilityId === 'review-tools') continue;
|
|
156
|
-
assert.ok(rules.capabilities[capabilityId], `Unmapped reference capability: ${capabilityId}`);
|
|
157
|
-
if (!bindings.some(binding => (binding.pageId === item.pageId || binding.pageId === 'app-shell') && binding.capabilityId === capabilityId) && !decisions.some(decision => decision.pageId === item.pageId && decision.capabilityId === capabilityId)) pendingDecisions.push({ pageId: item.pageId, capabilityId });
|
|
158
|
-
}
|
|
159
|
-
// Each functional reference element is accounted for, including elements whose
|
|
160
|
-
// capability is already core. Adopting a generic capability never accounts for
|
|
161
|
-
// every example button, field or event implicitly.
|
|
162
|
-
const referenceDecisions = scope.generation?.referenceDecisions || [], accounted = new Set();
|
|
163
|
-
assert.ok(Array.isArray(referenceDecisions), 'Reference element decisions must be an array');
|
|
164
|
-
for (const decision of referenceDecisions) {
|
|
165
|
-
const requirement = requirements.get(decision.requirementId), selected = coverage.find(item => item.pageId === decision.pageId);
|
|
166
|
-
assert.ok(selected && source(requirement) && (decision.pageId === 'app-shell' || requirement.pages?.includes(decision.pageId)) && decision.reason?.trim(), 'Reference element decision requires matching requirement source and reason');
|
|
167
|
-
assert.ok(['mapped','not-applicable'].includes(decision.decision) && Array.isArray(decision.nodeIds) && decision.nodeIds.length, 'Explicit reference node IDs and disposition required');
|
|
168
|
-
for (const nodeId of decision.nodeIds) {
|
|
169
|
-
const key = `${decision.pageId}/${nodeId}`, element = selected.elements.find(item => item.nodeId === nodeId);
|
|
170
|
-
assert.ok(element && !accounted.has(key), 'Unknown or duplicate reference element disposition'); accounted.add(key);
|
|
171
|
-
if (decision.decision === 'mapped') {
|
|
172
|
-
assert.ok(Array.isArray(decision.bindingIds) && decision.bindingIds.length, 'Mapped reference elements need actual binding IDs');
|
|
173
|
-
for (const bindingId of decision.bindingIds) assert.ok(bindings.some(binding => binding.id === bindingId && (binding.pageId === decision.pageId || binding.pageId === 'app-shell')), 'Reference element binding belongs to another page or is absent');
|
|
174
|
-
const relevant = element.capabilities.length ? element.capabilities : ['interaction'];
|
|
175
|
-
assert.ok(bindings.some(binding => decision.bindingIds.includes(binding.id) && relevant.includes(binding.capabilityId)), 'Reference element mapping needs a matching semantic capability');
|
|
176
|
-
} else assert.ok(!decision.bindingIds?.length, 'Excluded reference elements cannot claim implementation');
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
const pendingReferenceElements = coverage.flatMap(item => item.elements.filter(element => !accounted.has(`${item.pageId}/${element.nodeId}`)).map(element => ({ pageId: item.pageId, ...element })));
|
|
180
|
-
function scenarioExpectation(binding, scenario) {
|
|
181
|
-
if (binding.capabilityId === 'pagination' && scenario.id === 'page-size' && binding.parameters.mode === 'fixed') return `固定容量 ${binding.parameters.fixedPageSize} 不可更改,界面说明正确;翻页、总数和选择符合固定容量约定。`;
|
|
182
|
-
if (binding.capabilityId === 'columns' && scenario.id === 'persistence-scroll' && !binding.parameters.persist) return '列配置按声明仅在本轮生效,刷新恢复默认;宽表可滚动且操作列可达。';
|
|
183
|
-
if (binding.capabilityId === 'dialog' && scenario.id === 'lifetime' && binding.parameters.presentation === 'modal') return '弹窗打开、关闭和进出动效生命周期完整,未提前卸载,符合固定弹窗呈现。';
|
|
184
|
-
return scenario.expected;
|
|
185
|
-
}
|
|
186
|
-
const scenarios = bindings.flatMap(binding => binding.kind ? [{ id: `generation/${binding.id}`, bindingId: binding.id, pageId: binding.pageId, regionId: binding.regionId, capabilityId: binding.capabilityId, steps: [`在当前构建中操作 ${binding.parameters.label},核对身份、状态和需求来源。`], expected: binding.kind === 'action' ? binding.parameters.outcome : `字段 ${binding.parameters.label} 的类型、必填、只读、校验与联动符合固定字段声明。`, parameters: copy(binding.parameters) }] : rules.capabilities[binding.capabilityId].scenarios.map(scenario => ({ ...copy(scenario), expected: scenarioExpectation(binding, scenario), id: `generation/${binding.id}/${scenario.id}`, bindingId: binding.id, pageId: binding.pageId, regionId: binding.regionId, capabilityId: binding.capabilityId, parameters: copy(binding.parameters) })));
|
|
187
|
-
for (const decision of referenceDecisions.filter(item => item.decision === 'mapped')) for (const nodeId of decision.nodeIds) {
|
|
188
|
-
const element = coverage.find(item => item.pageId === decision.pageId).elements.find(item => item.nodeId === nodeId);
|
|
189
|
-
const relevant = element.capabilities.length ? element.capabilities : ['interaction'];
|
|
190
|
-
const binding = bindings.find(item => decision.bindingIds.includes(item.id) && relevant.includes(item.capabilityId));
|
|
191
|
-
scenarios.push({ id: `generation/reference/${decision.pageId}/${hash(nodeId).slice(0,16)}`, bindingId: binding.id, pageId: decision.pageId, regionId: binding.regionId, capabilityId: binding.capabilityId, referenceNodeId: nodeId, referenceEvents: copy(element.events), requirementId: decision.requirementId, steps: ['在对应实际页面操作或检查本参考节点映射的控件,覆盖其采用的交互和状态。'], expected: `核对实际控件、对象、交互结果和状态符合需求与本次取舍:${decision.reason};不能用同能力下的另一个控件代替。`, parameters: { bindingIds: copy(decision.bindingIds) } });
|
|
192
|
-
}
|
|
193
|
-
return { schemaVersion: 1, definition: rules, template: { id: snapshot.id, version: snapshot.version, digest: snapshot.digest }, presentation, navigation: navigation(scope.generation?.navigation, pages), pages, bindings, decisions: copy(decisions), referenceCoverage: coverage, pendingDecisions, referenceDecisions: copy(referenceDecisions), pendingReferenceElements, scenarios };
|
|
194
|
-
}
|
|
195
|
-
function verify(snapshot, scope, fixed) {
|
|
196
|
-
assert.deepEqual(fixed, compile(snapshot, scope, { definition: fixed.definition }), 'Fixed generation contract differs from selected patterns, sourced decisions or customer choices');
|
|
197
|
-
return { status: 'passed', bindings: fixed.bindings.length, scenarios: fixed.scenarios.length, pendingDecisions: fixed.pendingDecisions.length, pendingReferenceElements: fixed.pendingReferenceElements.length };
|
|
198
|
-
}
|
|
199
|
-
function view(contract, options = {}) {
|
|
200
|
-
if (options.details) return contract;
|
|
201
|
-
if (options.page) assert.ok(options.page === 'app-shell' || contract.pages.some(page => page.id === options.page), 'Unknown generation page');
|
|
202
|
-
const coverage = contract.referenceCoverage.filter(item => !options.page || item.pageId === options.page);
|
|
203
|
-
if (options.fragment) assert.ok(coverage.some(item => item.fragments.includes(options.fragment)), 'Unknown reference fragment for selected page');
|
|
204
|
-
const pending = contract.pendingReferenceElements.filter(item => !options.page || item.pageId === options.page), groups = new Map();
|
|
205
|
-
for (const item of pending) { const key = `${item.pageId}/${item.fragment}`; if (!groups.has(key)) groups.set(key, { pageId: item.pageId, fragment: item.fragment, pending: 0 }); groups.get(key).pending++; }
|
|
206
|
-
const scenarios = contract.scenarios.filter(item => !options.page || item.pageId === options.page);
|
|
207
|
-
return { status: 'planned', readOnly: true, template: contract.template, presentation: contract.presentation,
|
|
208
|
-
pages: contract.pages.filter(item => !options.page || item.id === options.page), bindings: contract.bindings.filter(item => !options.page || item.pageId === options.page),
|
|
209
|
-
pendingDecisions: contract.pendingDecisions.filter(item => !options.page || item.pageId === options.page),
|
|
210
|
-
referenceReview: { pendingCount: pending.length, fragments: [...groups.values()], ...(options.fragment ? { elements: pending.filter(item => item.fragment === options.fragment) } : {}) },
|
|
211
|
-
acceptance: { scenarios: scenarios.length, ...(options.page ? { scenarioIds: scenarios.map(item => item.id) } : {}) },
|
|
212
|
-
next: 'Use --page <business-page-id|app-shell> --fragment <reference-path> for nodes; --details returns the full fixed contract.' };
|
|
213
|
-
}
|
|
214
|
-
module.exports = { compile, verify, definition, resource, view };
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
// Structural evidence validation cannot prove an actual host/MCP invocation or UI outcome.
|
|
3
|
-
const {fs,path,assert,json,inside,hash}=require('./native-files.cjs');
|
|
4
|
-
const nonempty=(value,label)=>assert.ok(typeof value==='string'&&value.trim(),`${label} required`);
|
|
5
|
-
const exact=(actual,expected,label)=>assert.deepEqual([...actual].sort(),[...expected].sort(),`${label} differs from fixed generation bindings/scenarios`);
|
|
6
|
-
function framework(){return json(path.join(__dirname,'../assets/frameworks/vue-antdv-next/generation-component-map.json'));}
|
|
7
|
-
function initialize(generation){return {schemaVersion:1,bindings:generation.bindings.map(binding=>({bindingId:binding.id,status:'pending',components:[],files:[],scenarioIds:generation.scenarios.filter(s=>s.bindingId===binding.id).map(s=>s.id)}))};}
|
|
8
|
-
function validateImplementation(directory,generation,implementation,options={}){
|
|
9
|
-
assert.equal(implementation.schemaVersion,1,'Unsupported implementation mapping');assert.ok(Array.isArray(implementation.bindings),'Implementation bindings required');
|
|
10
|
-
exact(implementation.bindings.map(item=>item.bindingId),generation.bindings.map(item=>item.id),'Implementation binding coverage');
|
|
11
|
-
const map=options.frameworkMap||framework();let pending=0;
|
|
12
|
-
for(const binding of generation.bindings){
|
|
13
|
-
const item=implementation.bindings.find(item=>item.bindingId===binding.id);
|
|
14
|
-
assert.ok(map.capabilities[binding.capabilityId]?.components?.length,`Framework capability mapping missing: ${binding.capabilityId}`);
|
|
15
|
-
assert.ok(['pending','implemented'].includes(item.status),'Unknown implementation status');
|
|
16
|
-
assert.ok(Array.isArray(item.scenarioIds),'Implementation scenario IDs required');exact(item.scenarioIds,generation.scenarios.filter(s=>s.bindingId===binding.id).map(s=>s.id),'Implementation scenario coverage');
|
|
17
|
-
if(item.status==='pending'){pending++;continue;}
|
|
18
|
-
assert.ok(Array.isArray(item.components)&&item.components.length,'Implemented binding needs components');
|
|
19
|
-
for(const component of item.components)assert.ok(map.capabilities[binding.capabilityId].components.includes(component)||/^application:[A-Za-z][\w.-]*$/.test(component),`Undeclared framework component: ${component}`);
|
|
20
|
-
assert.ok(Array.isArray(item.files)&&item.files.length,'Implemented binding needs source files');
|
|
21
|
-
for(const source of item.files){
|
|
22
|
-
assert.ok(typeof source.path==='string'&&/^(?:app\/src\/|app\/public\/|mocks\/)/.test(source.path),'Implementation must reference actual application source');
|
|
23
|
-
nonempty(source.locator,'Implementation source locator');const file=inside(directory,source.path);assert.ok(fs.statSync(file).isFile(),'Implementation source must be a file');
|
|
24
|
-
assert.ok(fs.readFileSync(file,'utf8').includes(source.locator),`Implementation locator absent from source: ${source.path}`);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if(options.complete)assert.equal(pending,0,'Implementation pending; status alone cannot pass acceptance');
|
|
28
|
-
return {status:pending?'pending':'implemented',bindings:implementation.bindings.length,pending,invocationVerified:false};
|
|
29
|
-
}
|
|
30
|
-
function validateObservations(directory,generation,report){
|
|
31
|
-
const observations=report.generationObservations;assert.ok(Array.isArray(observations),'Generation observations required');
|
|
32
|
-
exact(observations.map(item=>item.scenarioId),generation.scenarios.map(item=>item.id),'Generation observation scenario coverage');
|
|
33
|
-
for(const scenario of generation.scenarios){
|
|
34
|
-
const item=observations.find(item=>item.scenarioId===scenario.id);assert.equal(item.bindingId,scenario.bindingId,'Observation binding differs');assert.equal(item.status,'passed','Generation observation must pass');
|
|
35
|
-
assert.ok(Array.isArray(item.steps)&&item.steps.length,'Actual generation observation steps required');
|
|
36
|
-
for(const step of item.steps)for(const key of ['action','target','observed'])nonempty(step[key],`Observation step ${key}`);
|
|
37
|
-
assert.ok(Array.isArray(item.toolCallIds)&&item.toolCallIds.length,'Observation needs actual host tool call locators');for(const call of item.toolCallIds)nonempty(call,'Tool call ID');
|
|
38
|
-
assert.ok(Array.isArray(item.evidence)&&item.evidence.length,'Observation evidence files required');
|
|
39
|
-
for(const evidence of item.evidence){assert.ok(typeof evidence.path==='string'&&evidence.path.startsWith('qa/'),'Observation evidence must be inside QA');const bytes=fs.readFileSync(inside(directory,evidence.path));assert.ok(bytes.length,'Observation evidence is empty');assert.equal(hash(bytes),evidence.sha256,'Observation evidence bytes changed');}
|
|
40
|
-
}
|
|
41
|
-
return {status:'passed',scenarios:observations.length,invocationVerified:false};
|
|
42
|
-
}
|
|
43
|
-
function designSummary(generation,previous=''){
|
|
44
|
-
const start='<!-- generation-choices:start -->',end='<!-- generation-choices:end -->';
|
|
45
|
-
const block=`${start}\n客户固定选择:布局 ${generation.presentation.layout};风格 ${generation.presentation.style};密度 ${generation.presentation.density}。四主题默认明亮;覆盖外壳、组件与浮层。未决能力 ${generation.pendingDecisions.length} 项;未决参考功能节点 ${generation.pendingReferenceElements.length} 项。当前依据为 inputs/generation.json。\n${end}`;
|
|
46
|
-
const first=previous.indexOf(start),last=previous.indexOf(end);
|
|
47
|
-
assert.ok((first===-1&&last===-1)||(first>=0&&last>first&&previous.indexOf(start,first+1)===-1&&previous.indexOf(end,last+1)===-1),'Ambiguous generation design markers; preserve the existing design');
|
|
48
|
-
return first===-1?`${previous.trimEnd()}\n\n${block}\n`:`${previous.slice(0,first)}${block}${previous.slice(last+end.length)}`;
|
|
49
|
-
}
|
|
50
|
-
module.exports={framework,initialize,validateImplementation,validateObservations,designSummary};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const {fs,path,assert,json,inside,write}=require('./native-files.cjs');
|
|
3
|
-
function run(directory,options,lib){
|
|
4
|
-
const meta=json(inside(directory,'prototype.json')),old=json(inside(directory,'inputs/scope.json'));
|
|
5
|
-
assert.equal(meta.runtime.generationContract,1,'Replan requires an existing generation contract; legacy inputs are not implicitly upgraded');assert.equal(old.schemaVersion,3);
|
|
6
|
-
const scope=json(path.resolve(options.scope));assert.equal(scope.schemaVersion,3,'Replan cannot downgrade the fixed generation contract');
|
|
7
|
-
const template=json(inside(directory,'inputs/template-snapshot.json')),fixed=json(inside(directory,'inputs/generation.json'));
|
|
8
|
-
const generation=require('./generation-contract.cjs').compile(template,scope,{definition:fixed.definition}),templates=require('./template-contract.cjs');
|
|
9
|
-
const selection=require('./content-template.cjs').scopeInputs(template,scope,templates);
|
|
10
|
-
const checked=templates.checkCapabilities({...selection.fixed,scope});assert.equal(checked.status,'passed',checked.errors?.join('; '));
|
|
11
|
-
const scenarioDetails=[...checked.requiredScenarios,...generation.scenarios];const previous=json(inside(directory,'inputs/acceptance.json'));
|
|
12
|
-
const drawer=generation.bindings.some(binding=>binding.capabilityId==='dialog'&&binding.parameters.presentation==='drawer');
|
|
13
|
-
const acceptance={...previous,requiredScenarios:scenarioDetails.map(item=>typeof item==='string'?item:item.id),scenarioDetails,frameworkScenarios:['framework-responsive','framework-instance-isolation','template-content-projection',...(drawer?['framework-drawer-motion','framework-mask-blur','framework-focus-scroll']:[])]};
|
|
14
|
-
const config=json(inside(directory,'app/public/prototype-config.json')),theme=selection.fixed.bindings.find(item=>item.capabilityId==='theme');
|
|
15
|
-
const changes={
|
|
16
|
-
'inputs/scope.json':scope,'inputs/generation.json':generation,'inputs/capabilities.json':selection.fixed,'inputs/acceptance.json':acceptance,
|
|
17
|
-
'requirements-map.json':{schemaVersion:2,requirements:scope.requirements.map(r=>({...r,scenarios:scenarioDetails.filter(s=>s.bindingId.startsWith('app-shell/')||r.pages.some(page=>s.bindingId.startsWith(page+'/'))).map(s=>s.id)})),bindings:[...selection.fixed.bindings,...generation.bindings]},
|
|
18
|
-
'app/public/prototype-config.json':{...config,pages:scope.pages.map(page=>({id:page.id,title:page.title})),presentation:generation.presentation,navigation:generation.navigation,generation:{pages:generation.pages},theme:templates.resolveThemeParameters(theme.parameters)},
|
|
19
|
-
'design-system/implementation.json':require('./generation-evidence.cjs').initialize(generation),
|
|
20
|
-
'design-system/MASTER.md':require('./generation-evidence.cjs').designSummary(generation,fs.readFileSync(inside(directory,'design-system/MASTER.md'),'utf8')),
|
|
21
|
-
'mocks/contract.json':{...json(inside(directory,'mocks/contract.json')),status:'needs-business-data',requirements:scope.requirements.map(item=>item.id)},
|
|
22
|
-
'prototype.json':{...meta,business:{...meta.business,status:'needs-adaptation'}}
|
|
23
|
-
};
|
|
24
|
-
// Retain implementation locations for review, but require re-attestation after input changes.
|
|
25
|
-
const implemented=json(inside(directory,'design-system/implementation.json'));
|
|
26
|
-
for(const item of changes['design-system/implementation.json'].bindings){const prior=implemented.bindings.find(entry=>entry.bindingId===item.bindingId);if(prior){item.components=prior.components;item.files=prior.files;}}
|
|
27
|
-
const backup=new Map(Object.keys(changes).map(file=>[file,fs.readFileSync(inside(directory,file))]));
|
|
28
|
-
try{
|
|
29
|
-
for(const [file,value]of Object.entries(changes))write(directory,file,value);
|
|
30
|
-
const current=lib.manifest(directory);
|
|
31
|
-
return lib.revise(directory,{owner:options.owner,revision:options.revision,expectedRevision:current.revision,expectedDigest:current.digest,acceptInputs:true});
|
|
32
|
-
}catch(error){for(const [file,bytes]of backup)fs.writeFileSync(inside(directory,file),bytes);throw error;}
|
|
33
|
-
}
|
|
34
|
-
module.exports={run};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
const fs=require('node:fs'),path=require('node:path');
|
|
4
|
-
function format(result,event){
|
|
5
|
-
if(result.deny)return {code:0,output:{hookSpecificOutput:{hookEventName:'PreToolUse',permissionDecision:'deny',permissionDecisionReason:result.reason}}};
|
|
6
|
-
if(result.feedback)return {code:0,output:event==='Stop'?{continue:false,reason:result.reason}:{continue:true,hookSpecificOutput:{hookEventName:event,additionalContext:result.reason}}};
|
|
7
|
-
if(result.context)return {code:0,output:{continue:true,...(result.recovery?.status==='blocked'?{systemMessage:result.context}:{}),...(['SessionStart','UserPromptSubmit','PostToolUse'].includes(event)?{hookSpecificOutput:{hookEventName:event,additionalContext:result.context}}:{})}};
|
|
8
|
-
return {code:0,output:{continue:true}};
|
|
9
|
-
}
|
|
10
|
-
function main(argv=process.argv.slice(2),raw=fs.readFileSync(0,'utf8')) {
|
|
11
|
-
if(Buffer.byteLength(raw)>4*1024*1024)throw new Error('Hook input too large');
|
|
12
|
-
const options={};while(argv.length){const key=argv.shift();if(!key.startsWith('--')||!argv.length)throw new Error('Invalid Hook arguments');options[key.slice(2)]=argv.shift();}
|
|
13
|
-
const {OWNER,EVENTS}=require('../codebuddy-registration.cjs');
|
|
14
|
-
if(options.registration!==OWNER||!path.isAbsolute(options.base||'')||!EVENTS.includes(options.event)||!['auto','ide','cli'].includes(options.product))throw new Error('Invalid Hook registration');
|
|
15
|
-
const result=require('../codebuddy-hook.cjs').handle(JSON.parse(raw),options);
|
|
16
|
-
return format(result,options.event);
|
|
17
|
-
}
|
|
18
|
-
// Historical replay helpers above remain available to explicit audit tooling.
|
|
19
|
-
// The old executable callback is retired, including registrations before the wrapper.
|
|
20
|
-
if(require.main===module)process.stdout.write('{}\n');
|
|
21
|
-
module.exports={main,format};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const lib = require('./prototype-lib.cjs');
|
|
3
|
-
try {
|
|
4
|
-
const { options, positional } = lib.parseArgs(process.argv.slice(2));
|
|
5
|
-
const result = positional[0] === 'templates' ? { templates: lib.listTemplates() } : lib.initPrototype(options);
|
|
6
|
-
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
7
|
-
if (result.status === 'needs-design-provider') process.exitCode = 2;
|
|
8
|
-
} catch (error) { process.stderr.write(error.message + '\n'); process.exitCode = 1; }
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const fs = require('node:fs');
|
|
3
|
-
const lib = require('./prototype-lib.cjs');
|
|
4
|
-
try {
|
|
5
|
-
const { options, positional } = lib.parseArgs(process.argv.slice(2));
|
|
6
|
-
const [operation, directory] = positional;
|
|
7
|
-
if (!directory || !['inspect', 'manifest', 'revise', 'confirm-baseline'].includes(operation)) throw new Error('Usage: manage-baseline.cjs <inspect|manifest|revise|confirm-baseline> <directory> [--revision r002] [--confirmation file.json]');
|
|
8
|
-
const result = operation === 'manifest' ? lib.contentManifest(directory) : operation === 'inspect' ? lib.compareBaseline(directory) : operation === 'revise' ? lib.revisePrototype(directory, options.revision, options) : lib.freezeBaseline(directory, JSON.parse(fs.readFileSync(options.confirmation, 'utf8')));
|
|
9
|
-
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
10
|
-
if (result.status === 'corrupt-baseline') process.exitCode = 1;
|
|
11
|
-
} catch (error) { process.stderr.write(error.message + '\n'); process.exitCode = 1; }
|