@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,52 +0,0 @@
|
|
|
1
|
-
# 管理列表内容模板
|
|
2
|
-
|
|
3
|
-
双击 `index.html` 可离线查看;直接修改 HTML,再刷新页面即可预览。安装包中的文件是起点,日常编辑项目里的 `ui-templates/admin-list/` 工作副本;重新准备模板不会覆盖已有副本。
|
|
4
|
-
|
|
5
|
-
## 首期内容投影
|
|
6
|
-
|
|
7
|
-
同步后,新建的 Vue+antDv-next 原型会把以下内容写入自己的 `app/public/prototype-config.json`,由真实组件读取并展示:
|
|
8
|
-
|
|
9
|
-
- 页面首个 `h1` 标题,以及 `data-content-id="page-description"` 的说明。
|
|
10
|
-
- 两个区域的首个 `h2`,分别作为列表与编辑标题。
|
|
11
|
-
- 现有表头、筛选字段与编辑字段的可见标签。支持包裹式 `label`、`label for`、嵌套文字和 HTML 字符实体;`data-label` 可明确覆盖标签。
|
|
12
|
-
- 已有输入框的 placeholder;设备名称必填规则继续保留。
|
|
13
|
-
- 查询、重置、批量停用、编辑、保存、取消、上一页和下一页的可见文案。
|
|
14
|
-
|
|
15
|
-
`page-id`、`region-id`、`field-id`、`action-id` 是稳定身份,改文案时保留它们。内容绑定在生成实例时固定;之后再改模板,只影响明确使用新模板创建的候选,不会更新已有原型。
|
|
16
|
-
|
|
17
|
-
首期不是通用 HTML 到 Vue 编译器。新增或删除页面、区域、字段、操作,改字段含义、枚举值、数据模式、列顺序或行为参数时,需要主会话执行者明确适配框架代码、能力映射与验收。未知字段/操作、缺少首期必需项和删除名称必填会阻止初始化,避免内容静默消失。HTML 的 CSS 与普通 JS 只服务内容参考;生成工程采用真实框架样式和行为。
|
|
18
|
-
|
|
19
|
-
示例行、选择框和数据状态下拉用于参考预览;固定 21 条设备数据及其状态逻辑由原型演示需求定义。分类、状态文案与数据枚举的变更需要显式业务映射,不凭选项文字自动猜测。
|
|
20
|
-
|
|
21
|
-
## 同步与生成
|
|
22
|
-
|
|
23
|
-
修改 HTML 后先执行 `sync-template.cjs <模板工作目录>`;只读核对使用 `--check`。不同宿主通过 i3-ui-prototype Skill 提供的统一入口运行这些步骤。同步会重新检查身份、能力参数和索引摘要;通过后才能创建新候选。索引是派生产物,不直接编辑。
|
|
24
|
-
|
|
25
|
-
## 按本次需求启用四主题
|
|
26
|
-
|
|
27
|
-
默认 HTML 不绑定主题,旧 HTML、v1 和未绑定主题的 v2 实例保持原行为。本次用户要求“明亮、暗黑、清新、科技,默认明亮,页面内选择”时,先准备项目工作副本,在 `devices/device-list` 下找到 `OPTIONAL_FOUR_THEMES` 注释,仅去掉包住 `aside` 的注释边界,保留这段内容:
|
|
28
|
-
|
|
29
|
-
```html
|
|
30
|
-
<aside data-capability-id="theme" data-capability-parameters='{"defaultTheme":"light","presets":["light","dark","fresh","tech"]}'>
|
|
31
|
-
页面主题:明亮、暗黑、清新、科技;首次默认明亮。
|
|
32
|
-
</aside>
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
在本次 `scope.json` 的 `requirements` 中保留已有需求并追加下列结构;`source.reference` 填本次真实用户消息或需求文件的准确定位,`statement` 保留确认的需求原意:
|
|
36
|
-
|
|
37
|
-
```json
|
|
38
|
-
{
|
|
39
|
-
"id": "THEME-01",
|
|
40
|
-
"text": "页面可选择明亮、暗黑、清新、科技四主题,首次默认明亮",
|
|
41
|
-
"source": {
|
|
42
|
-
"type": "user",
|
|
43
|
-
"reference": "<本次真实需求的准确定位>",
|
|
44
|
-
"statement": "本次生成原型四主题可页面选择:明亮、暗黑、清新、科技,默认明亮"
|
|
45
|
-
},
|
|
46
|
-
"capabilities": [{"pageId":"devices","regionId":"device-list","capabilityId":"theme"}]
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
同步、只读检查工作模板,再用该工作目录和 `--scope <本次scope.json>` 创建新实例。生成结果读取固定绑定,使用真实 antDv-next `ConfigProvider`、`Select` 和语义 token;页面与抽屉内均有主题选择,浮层跟随主题。离线 HTML 仍可双击编辑,这段文字本身不模拟原生换肤。
|
|
51
|
-
|
|
52
|
-
固定验收从基础 20 项增加到 23 项;额外三项验证四主题效果、偏好持久化与隔离、可访问性,并核对第二页、筛选、选择和抽屉未保存输入保持。新模板不会更新旧实例;已有实例新增主题必须按已授权范围显式 `revise --accept-inputs`,不能只改运行配置。
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"skill_name": "i3-ui-prototype",
|
|
3
|
-
"trigger": {
|
|
4
|
-
"positive": [
|
|
5
|
-
{
|
|
6
|
-
"prompt": "选择 UI 原型模板,制作一个可操作的申请审批交互原型供评审。",
|
|
7
|
-
"top_k": 1
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"prompt": "根据业务需求生成可审查的交互原型,记录原型模板选择。",
|
|
11
|
-
"top_k": 1
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"prompt": "检查原型一致性,与已确认的原型基线比较。",
|
|
15
|
-
"top_k": 1
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"prompt": "根据评审反馈迭代交互原型,保留已确认的原型基线。",
|
|
19
|
-
"top_k": 1
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"prompt": "参考这份可编辑 HTML 内容模板,用 Vue 3 和 antDv-next 生成设备管理交互原型。",
|
|
23
|
-
"top_k": 1
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"prompt": "先分析内容模板与业务需求如何形成交互原型方案,不修改文件。",
|
|
27
|
-
"top_k": 1
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"prompt": "根据反馈修改交互原型,保留我手改的代码并检查抽屉退出动画。",
|
|
31
|
-
"top_k": 1
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"prompt": "请当前会话直接使用原型技能检查待评审候选,不启动其他智能体。",
|
|
35
|
-
"top_k": 1
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"prompt": "请主会话根据 HTML 内容参考和业务说明分析交互原型方案,保持只读。",
|
|
39
|
-
"top_k": 1
|
|
40
|
-
}
|
|
41
|
-
],
|
|
42
|
-
"negative": [
|
|
43
|
-
{
|
|
44
|
-
"prompt": "开发一个响应式前端页面,做好组件布局和无障碍交互。",
|
|
45
|
-
"owner": "i3-frontend-ui-engineering"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"prompt": "产品页面有一千条数据渲染很慢,请定位性能瓶颈并优化。",
|
|
49
|
-
"owner": "i3-performance-optimization"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"prompt": "昨天通过的测试现在失败,请复现并定位根因。",
|
|
53
|
-
"owner": "i3-debugging-and-error-recovery"
|
|
54
|
-
}
|
|
55
|
-
]
|
|
56
|
-
},
|
|
57
|
-
"evals": [
|
|
58
|
-
{
|
|
59
|
-
"id": 1001,
|
|
60
|
-
"prompt": "根据提供的业务说明制作申请审批交互原型。明确使用模板模式,比较模板并生成待评审候选。不要自行批准原型。",
|
|
61
|
-
"expected_output": "A runnable business-specific prototype with traceability and pending-review status",
|
|
62
|
-
"files": [
|
|
63
|
-
"i3-ui-prototype"
|
|
64
|
-
],
|
|
65
|
-
"expectations": [
|
|
66
|
-
"Selected template and template mode are recorded without claiming UI/UX Pro Max was used",
|
|
67
|
-
"Business fields, role visibility, status transitions and review scenarios follow the supplied brief",
|
|
68
|
-
"A runnable prototype and verification evidence are produced; absent browser evidence is marked pending",
|
|
69
|
-
"The prototype remains pending human review and no approved baseline is invented",
|
|
70
|
-
"人类可读的追问、说明、进度、报告与生成文档使用简体中文;保留代码、路径、工具参数、JSON 协议及机器状态的原始格式。"
|
|
71
|
-
]
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"id": 1002,
|
|
75
|
-
"kind": "dialogue",
|
|
76
|
-
"prompt": "请当前会话直接使用 i3-ui-prototype 技能,分析可编辑 HTML 内容模板和通用能力清单如何生成 Vue 3+antDv-next 设备列表原型。仅分析:不改文件、不安装升级、不持久化设计结果、不启动另一个智能体。",
|
|
77
|
-
"expected_output": "A read-only prototype analysis that keeps direct Skill execution valid and states the framework, content, capability and acceptance boundaries",
|
|
78
|
-
"expectations": [
|
|
79
|
-
"The current executor runs the shared preflight without redispatching to an Agent, command or meta-skill",
|
|
80
|
-
"The response preserves analysis-only scope and does not initialize, install, persist design output or update project execution state",
|
|
81
|
-
"Editable content reference, reusable capabilities and target-framework behavior are explained as separate inputs",
|
|
82
|
-
"Unavailable provider, host or browser capabilities remain explicitly unverified rather than reported as executed",
|
|
83
|
-
"The analysis deliverable is the conversation; it does not invent prototype completion or human approval",
|
|
84
|
-
"人类可读的追问、说明、进度、报告与生成文档使用简体中文;保留代码、路径、工具参数、JSON 协议及机器状态的原始格式。"
|
|
85
|
-
]
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"id": 1003,
|
|
89
|
-
"prompt": "请使用 admin-list 可编辑内容模板,创建独立的 Vue 3+antDv-next 原生组件设备列表原型,本例明确选择 template 模式。要求:固定 21 条设备,每页 10 条;筛选或翻页清空当前页选择;批量状态变更仅影响选中记录;编辑抽屉校验必填名称,模拟保存失败时保留输入,重试后更新正确行。有真实浏览器时验证当前构建的抽屉退出动效和遮罩模糊。保留已有原型,交付待人工评审候选。",
|
|
90
|
-
"expected_output": "An isolated native component prototype with fixed capability inputs, reproducible local data, current-build verification or a truthful verification gap",
|
|
91
|
-
"files": [
|
|
92
|
-
"i3-ui-prototype"
|
|
93
|
-
],
|
|
94
|
-
"expectations": [
|
|
95
|
-
"The instance uses the native framework runtime and fixed template, capability, scope and framework inputs rather than converting an existing legacy instance",
|
|
96
|
-
"Real antDv-next components implement filtering, current-page selection, pagination and the edit flow with deterministic isolated mock state",
|
|
97
|
-
"Required capability bindings remain independently checkable and are not removed or arbitrarily marked inapplicable to make checks pass",
|
|
98
|
-
"The executor distinguishes source inspection, successful build and real browser execution; unavailable checks remain unverified",
|
|
99
|
-
"Browser evidence, when present, refers to the current candidate and actual build, with drawer motion and blur verified separately from static screenshots",
|
|
100
|
-
"Template mode is explicit and does not claim UIUX use; existing prototypes remain unchanged and no human baseline approval is invented",
|
|
101
|
-
"人类可读的追问、说明、进度、报告与生成文档使用简体中文;保留代码、路径、工具参数、JSON 协议及机器状态的原始格式。"
|
|
102
|
-
]
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"id": 1004,
|
|
106
|
-
"kind": "dialogue",
|
|
107
|
-
"prompt": "请只读检查这份原型验收声明:测试后源码已改,服务仍展示上一版构建,证据只有一张截图和手动填 passed 的报告。同事建议删除分页能力并标为不适用,以便批准候选。请说明正确的后续动作;不改文件、不执行新测试、不确认基线。",
|
|
108
|
-
"expected_output": "A read-only rejection of stale evidence and unsupported exemption, with concrete required revalidation and pending human review",
|
|
109
|
-
"expectations": [
|
|
110
|
-
"The changed candidate and previous build invalidate the supplied acceptance claim",
|
|
111
|
-
"A screenshot or manually passed report is not treated as proof of current-build browser execution or drawer animation",
|
|
112
|
-
"Pagination remains required unless an explicit requirement or scope-change source justifies an exemption",
|
|
113
|
-
"The response proposes rebuilding and revalidating against fixed inputs without claiming those actions already occurred",
|
|
114
|
-
"No files are changed, no tests are pretended, and human baseline approval remains separate",
|
|
115
|
-
"人类可读的追问、说明、进度、报告与生成文档使用简体中文;保留代码、路径、工具参数、JSON 协议及机器状态的原始格式。"
|
|
116
|
-
]
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
"id": 1005,
|
|
120
|
-
"kind": "dialogue",
|
|
121
|
-
"prompt": "请在主会话中分析可编辑 admin-list HTML 参考和业务说明,形成 Vue 3+antDv-next 评审原型方案。保持只读。宿主没有原型专责角色,也没有父子 JSON 传输机制。请交付有用的分析和后续步骤,不安装工具,不执行创建阶段的检查。",
|
|
122
|
-
"expected_output": "A complete read-only main-session analysis with useful coverage and a truthful acceptance plan",
|
|
123
|
-
"expectations": [
|
|
124
|
-
"The main session directly applies the shared prototype preflight without requiring or simulating a dedicated Agent",
|
|
125
|
-
"The analysis delivers requirement and bound-capability coverage, template and framework selection, acceptance planning and concrete gaps",
|
|
126
|
-
"No initialization, installation, persisted design, project state update, build, browser run or creation-stage UIUX adoption gate occurs",
|
|
127
|
-
"No parent-child JSON, PROTOTYPE_RESULT_V1 marker or validate-result execution is made a prerequisite for the natural-language deliverable",
|
|
128
|
-
"Unavailable capabilities and fixed-parameter conflicts remain visible; analysis completion is distinct from implemented coverage and human approval",
|
|
129
|
-
"人类可读的追问、说明、进度、报告与生成文档使用简体中文;保留代码、路径、工具参数、JSON 协议及机器状态的原始格式。"
|
|
130
|
-
]
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"id": 1006,
|
|
134
|
-
"prompt": "请根据可编辑 admin-list 参考创建独立的 Vue 3+antDv-next 原生组件设备列表评审候选,明确使用 template 模式。我授权页面内四种主题:明亮、暗黑、清新、科技,首次默认明亮。请在我的 HTML 工作副本中启用并固定主题需求,切换时保留业务状态,保留全部已有原型和手改内容。不要再次询问是否需要主题。保持固定必需能力,指定浏览器工具可用时验证当前构建。",
|
|
135
|
-
"expected_output": "A main-session native review candidate with explicitly fixed four-theme inputs, preserved state and truthful current-build evidence or gaps",
|
|
136
|
-
"files": [
|
|
137
|
-
"i3-ui-prototype"
|
|
138
|
-
],
|
|
139
|
-
"expectations": [
|
|
140
|
-
"The main session uses the prototype workflow and supporting frontend and version-matched official framework knowledge for actual implementation, without requiring a dedicated persona",
|
|
141
|
-
"The authorized theme capability is bound in the user HTML working copy and fixed with its requirement source rather than left disabled or sent for repeat confirmation",
|
|
142
|
-
"The generated framework implements the four exact theme names, defaults to 明亮, and verifies that business state survives theme changes",
|
|
143
|
-
"Existing or unrequested-theme instances, user edits and approved baselines remain unchanged",
|
|
144
|
-
"Template mode does not claim UIUX use; fixed required capabilities and applicable acceptance scenarios are retained",
|
|
145
|
-
"Build, actual browser Skill and DevTools observations, supplemental regression and current delivery evidence are distinguished; unavailable checks remain incomplete",
|
|
146
|
-
"The final natural-language delivery identifies the candidate, current evidence and gaps, and leaves human review pending without requiring a parent-child result envelope",
|
|
147
|
-
"人类可读的追问、说明、进度、报告与生成文档使用简体中文;保留代码、路径、工具参数、JSON 协议及机器状态的原始格式。"
|
|
148
|
-
]
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"id": 1007,
|
|
152
|
-
"kind": "dialogue",
|
|
153
|
-
"prompt": "请比较三种请求的处理方式:只读分析原型方案;为评审修改原型抽屉交互;把已认可抽屉实现为可复用生产组件。说明各自适用的技能和证据,不执行这些请求。",
|
|
154
|
-
"expected_output": "Operation-specific support and a clear boundary between prototype work and production frontend engineering",
|
|
155
|
-
"expectations": [
|
|
156
|
-
"Read-only prototype analysis uses only material needed for coverage and selection and plans later verification without executing it",
|
|
157
|
-
"Prototype interaction revision stays within prototype workflow ownership and uses frontend, official framework and browser capabilities when the revision requires them",
|
|
158
|
-
"Professional UIUX lookup, adoption and effect verification remain distinct and apply to professional design work, with no silent downgrade to template mode",
|
|
159
|
-
"Approved production component implementation follows the frontend implementation method and the existing engineering workflow rather than creating a new review prototype",
|
|
160
|
-
"No claim of completed runtime checks or human baseline approval is made",
|
|
161
|
-
"人类可读的追问、说明、进度、报告与生成文档使用简体中文;保留代码、路径、工具参数、JSON 协议及机器状态的原始格式。"
|
|
162
|
-
]
|
|
163
|
-
}
|
|
164
|
-
]
|
|
165
|
-
}
|
package/hooks/PROTOTYPE.md
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# 原型审计 Hooks 退役与旧注册清理
|
|
2
|
-
|
|
3
|
-
<!-- i3:zh-guide:start -->
|
|
4
|
-
## 中文使用说明
|
|
5
|
-
|
|
6
|
-
按下文完整工程步骤、检查项与验证条件执行。根据任务选择适用步骤,保留证据、风险和退出条件;正文示例中的英文标签在面向用户输出时译为中文。
|
|
7
|
-
|
|
8
|
-
默认使用简体中文解释、追问及生成报告;用户明确要求其他语言时可切换。原方法正文、引用、阈值和审批条件完整保留。代码标识、路径、命令、工具参数、JSON 键/枚举与原文引用保持原样。
|
|
9
|
-
<!-- i3:zh-guide:end -->
|
|
10
|
-
|
|
11
|
-
原型审计 Hook 已移除。CodeBuddy/WorkBuddy 的新安装不注册 prototype 组,旧回调入口只返回空结果,不再采集调用、拦截写入、发起补调或阻止 Stop。原型 Skill 继续负责制作、修订和验收 UI。
|
|
12
|
-
|
|
13
|
-
安装或升级时,统一管理器精确清理本包拥有的旧 prototype 注册。清理同时覆盖该范围内共享的 Buddy 注册,保留权限、用户 Hook、原版三组、已有原型和审计历史。被手改的注册、缺归属记录或无效配置会停止清理并报告原因,不能强行覆盖。清理后的旧 installation.json 存入 `state/i3-prototype/history/retired-<digest>.json`,不删除原会话记录。
|
|
14
|
-
|
|
15
|
-
只读检查:
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
npx --yes @givolt/i3-composer-agent hooks check --host codebuddy --scope project --project .
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
已安装入口可显式清理旧注册:
|
|
22
|
-
|
|
23
|
-
```sh
|
|
24
|
-
node .codebuddy/i3-composer-agent/hooks/manage.cjs disable --host codebuddy --scope project --project . --groups prototype
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
全局改用对应全局入口和 `--scope global`;WorkBuddy 使用 `--host workbuddy`。旧 `--prototype-hooks` 和 `prototype-hooks.cjs` 只保留检查/清理兼容,不能重新 enable。只读 check 不清理设置、不扫描会话日志;输出中的 retired/cleanupRequired 描述旧配置,不代表调用或业务验收通过。清理后重载受影响宿主。
|
|
28
|
-
|
|
29
|
-
原版 `session-start`、`sdd-cache`、`simplify-ignore` 按需显式启用,原脚本和条件不变。启用必须明确指定组,不再默认指向 prototype。
|
|
30
|
-
|
|
31
|
-
正常原型流程保留实际 Skill 加载、固定业务断言、构建、业务场景和浏览器证据校验;移除对审计 Hook 会话绑定的专属前置。自动调用审计标为未验证,不伪报通过。旧 execution-* 数据与显式回放入口仅供历史兼容;合成回放不能冒充真实宿主调用或人工验收。详见 [调用记录兼容说明](../skills/i3-ui-prototype/references/execution-evidence.md)。
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
// Original scripts stay unchanged; this adapter only maps host paths and input fields.
|
|
4
|
-
const fs=require('node:fs'),path=require('node:path'),os=require('node:os'),assert=require('node:assert/strict');
|
|
5
|
-
const M=require('./manage.cjs');
|
|
6
|
-
function projectKey(project){return (path.basename(project).replace(/[^a-zA-Z0-9_-]/g,'-').slice(0,32)||'project')+'-'+M.sha(project).slice(0,16);}
|
|
7
|
-
function effective({project,product,group,home=os.homedir(),env=process.env,read=file=>M.modules().R.fileIO.read(file),load=base=>registration(base)}) {
|
|
8
|
-
const projectBase=path.join(project,'.codebuddy'),globalBase=M.modules().P.globalBase({home,env});
|
|
9
|
-
const projectText=read(path.join(projectBase,'settings.json')),local=read(path.join(projectBase,'settings.local.json'));
|
|
10
|
-
if(local){const settings=M.config(local);assert.ok(!settings.hooks&&!settings.disableAllHooks&&!settings.allowManagedHooksOnly,'Local Hook override requires review');}
|
|
11
|
-
for(const base of [projectBase,globalBase]){const settings=M.config(read(path.join(base,'settings.json')));assert.ok(!settings.disableAllHooks&&!settings.allowManagedHooksOnly,'Host policy prevents Hooks');}
|
|
12
|
-
const bases=product==='ide'&&projectText!==null?[projectBase]:[projectBase,globalBase];
|
|
13
|
-
for(const base of [...new Set(bases)]){const record=load(base);if(record?.groups[group]){assert.equal(record.product,product,'Conflicting CodeBuddy products');return record;}}
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
function projectFor(options,payload,env=process.env,real=file=>fs.realpathSync(file),callbackCwd=process.cwd(),workspace=(file,session)=>require(path.join(M.modules().scripts,'execution-evidence.cjs')).ideWorkspace(file,session)) {
|
|
17
|
-
// CLI 2.169 omits cwd on SessionStart. Use the actual startup Hook process
|
|
18
|
-
// directory only for that event; other events still require native cwd.
|
|
19
|
-
const cwd=payload.cwd||(payload.hook_event_name==='SessionStart'?callbackCwd:null);
|
|
20
|
-
assert.ok(path.isAbsolute(cwd||''),'Native Hook cwd required');
|
|
21
|
-
const ideRoot=options.product==='ide'&&payload.client==='CodeBuddyIDE'&&cwd==='/';
|
|
22
|
-
const project=real(options.scope==='project'?path.dirname(options.base):ideRoot?workspace(payload.transcript_path,payload.session_id):env.CODEBUDDY_PROJECT_DIR||env.CLAUDE_PROJECT_DIR||cwd);
|
|
23
|
-
const relative=path.relative(project,real(ideRoot?project:cwd));assert.ok(relative!=='..'&&!relative.startsWith('..'+path.sep)&&!path.isAbsolute(relative),'Hook working directory is outside the registered project');return project;
|
|
24
|
-
}
|
|
25
|
-
function invocation({group,event,project,cwd=project,base,payload},source) {
|
|
26
|
-
const value=structuredClone(payload),cache=path.join(base,'cache/i3-composer-agent/hooks',projectKey(project));
|
|
27
|
-
if(group==='sdd-cache') {
|
|
28
|
-
if(value.tool_name!=='WebFetch'||!['PreToolUse','PostToolUse'].includes(event))return null;
|
|
29
|
-
const before='${CLAUDE_PROJECT_DIR:-$PWD}/.claude/sdd-cache';assert.equal(source.split(before).length,3,'Upstream cache path changed; review the adapter');
|
|
30
|
-
source=source.replaceAll(before,'${I3_HOOK_CACHE}/sdd-cache');
|
|
31
|
-
} else if(group==='simplify-ignore') {
|
|
32
|
-
if(event==='Stop')value.tool_name='';
|
|
33
|
-
if(event!=='Stop') {
|
|
34
|
-
if(event==='PreToolUse'?value.tool_name!=='Read':!['Edit','Write'].includes(value.tool_name))return null;
|
|
35
|
-
const file=value.tool_input?.file_path||value.tool_input?.filePath;if(typeof file!=='string')return null;
|
|
36
|
-
const resolved=path.resolve(cwd,file),relative=path.relative(project,resolved);
|
|
37
|
-
if(relative==='..'||relative.startsWith('..'+path.sep)||path.isAbsolute(relative))return null;
|
|
38
|
-
value.tool_input.file_path=resolved;
|
|
39
|
-
}
|
|
40
|
-
const before='${CLAUDE_PROJECT_DIR:-.}/.claude/.simplify-ignore-cache';assert.equal(source.split(before).length,2,'Upstream simplify cache path changed; review the adapter');
|
|
41
|
-
source=source.replace(before,'${I3_HOOK_CACHE}/simplify-ignore');
|
|
42
|
-
}else assert.ok(group==='session-start'&&event==='SessionStart','Unknown upstream Hook event');
|
|
43
|
-
return {source,payload:value,cache,env:{CLAUDE_PROJECT_DIR:project,CODEBUDDY_PROJECT_DIR:project,I3_HOOK_CACHE:cache}};
|
|
44
|
-
}
|
|
45
|
-
function bundle(directory=__dirname) {
|
|
46
|
-
const files=['manage.cjs','codebuddy-upstream.cjs','session-start.sh','sdd-cache-pre.sh','sdd-cache-post.sh','simplify-ignore.sh'];
|
|
47
|
-
return M.sha(JSON.stringify(files.map(file=>{let text=fs.readFileSync(path.join(directory,file),'utf8');if(file==='session-start.sh')text=text.replace(/^SKILLS_DIR=.*$/m,'SKILLS_DIR=<native-layout>');return [file,M.sha(text)];})));
|
|
48
|
-
}
|
|
49
|
-
function registration(base) {
|
|
50
|
-
const io=M.modules().R.fileIO,raw=io.read(path.join(base,'state/i3-composer-agent/hooks.json'));if(raw===null)return null;
|
|
51
|
-
const record=JSON.parse(raw),settingsText=io.read(path.join(base,'settings.json'));
|
|
52
|
-
M.validateOwned(M.config(settingsText),record,base,record.scope);
|
|
53
|
-
for(const item of Object.values(record.groups))assert.equal(item.scriptDigest,bundle(),'Upstream Hook adapter changed; refresh registration');
|
|
54
|
-
return {...record,settingsDigest:M.sha(settingsText)};
|
|
55
|
-
}
|
|
56
|
-
function observe(base,project,group,payload,record,result) {
|
|
57
|
-
const io=M.modules().R.fileIO,file=path.join(base,'state/i3-composer-agent/hook-observations',projectKey(project),group+'.json'),unlock=io.lock(file);
|
|
58
|
-
try {
|
|
59
|
-
const before=io.read(file),old=before?JSON.parse(before):null;
|
|
60
|
-
const same=old?.settingsDigest===record.settingsDigest&&old?.scriptDigest===record.groups[group].scriptDigest;
|
|
61
|
-
const value={schemaVersion:1,group,base,project,sessionId:payload.session_id||null,event:payload.hook_event_name,at:new Date().toISOString(),
|
|
62
|
-
events:[...new Set([...(same?old.events:[]),payload.hook_event_name])],exitCode:result.status,settingsDigest:record.settingsDigest,scriptDigest:record.groups[group].scriptDigest,invocationVerified:false};
|
|
63
|
-
io.write(file,M.json(value),M.digest(before));
|
|
64
|
-
}finally{unlock();}
|
|
65
|
-
}
|
|
66
|
-
function main(argv=process.argv.slice(2),raw=fs.readFileSync(0,'utf8')) {
|
|
67
|
-
assert.ok(Buffer.byteLength(raw)<=4*1024*1024,'Hook input too large');const options={};
|
|
68
|
-
while(argv.length){const flag=argv.shift();assert.ok(flag.startsWith('--')&&argv.length,'Invalid Hook argument');assert.ok(['registration','group','base','scope','product','event'].includes(flag.slice(2)),'Unknown Hook argument');options[flag.slice(2)]=argv.shift();}
|
|
69
|
-
assert.equal(options.registration,M.OWNER,'Invalid Hook registration');assert.ok(path.isAbsolute(options.base||''),'Absolute Hook base required');assert.ok(['project','global'].includes(options.scope),'Invalid Hook scope');
|
|
70
|
-
const item=M.catalog.find(x=>x.id===options.group&&x.origin==='upstream');assert.ok(item?.events.includes(options.event),'Invalid Hook group/event');
|
|
71
|
-
const payload=JSON.parse(raw);assert.equal(payload.hook_event_name,options.event,'Hook payload event differs');const project=projectFor(options,payload);
|
|
72
|
-
const expected=options.scope==='project'?path.join(project,'.codebuddy'):M.modules().P.globalBase();assert.equal(options.base,expected,'Hook installation scope differs');
|
|
73
|
-
const record=registration(options.base);
|
|
74
|
-
if(!record?.groups[options.group])return {status:0,stdout:'{"continue":true}\n',stderr:''};
|
|
75
|
-
assert.equal(record.product,options.product,'Hook product differs');
|
|
76
|
-
if(effective({project,product:options.product,group:options.group})?.base!==options.base)return {status:0,stdout:'{"continue":true}\n',stderr:''};
|
|
77
|
-
const filename=options.group==='session-start'?'session-start.sh':options.group==='simplify-ignore'?'simplify-ignore.sh':options.event==='PreToolUse'?'sdd-cache-pre.sh':'sdd-cache-post.sh';
|
|
78
|
-
const cwd=options.product==='ide'&&payload.client==='CodeBuddyIDE'&&payload.cwd==='/'?project:payload.cwd||project;
|
|
79
|
-
const script=path.join(__dirname,filename),prepared=invocation({...options,project,cwd,payload},fs.readFileSync(script,'utf8'));
|
|
80
|
-
if(!prepared)return {status:0,stdout:'{"continue":true}\n',stderr:''};
|
|
81
|
-
if(options.group==='simplify-ignore'&&options.event!=='Stop'&&fs.existsSync(prepared.payload.tool_input.file_path)) {
|
|
82
|
-
const real=fs.realpathSync(prepared.payload.tool_input.file_path),relative=path.relative(project,real);assert.ok(relative!=='..'&&!relative.startsWith('..'+path.sep)&&!path.isAbsolute(relative),'Protected file symlink escapes the project');
|
|
83
|
-
}
|
|
84
|
-
const unlock=M.modules().R.fileIO.lock(path.join(prepared.cache,'.'+options.group+'.event'));
|
|
85
|
-
let result;try {
|
|
86
|
-
result=require('node:child_process').spawnSync(record.groups[options.group].bashPath,['-c',prepared.source,script],{cwd:project,env:{...process.env,...prepared.env},input:JSON.stringify(prepared.payload),encoding:'utf8',timeout:15000,maxBuffer:8*1024*1024});
|
|
87
|
-
if(result.error||result.status===null)throw new Error(result.error?.message||'Upstream Hook did not complete');
|
|
88
|
-
}finally{unlock();}
|
|
89
|
-
try{observe(options.base,project,options.group,payload,record,result);}catch(error){result.stderr=(result.stderr||'')+`\ni3 Hook observation unavailable: ${error.message}\n`;}
|
|
90
|
-
return result;
|
|
91
|
-
}
|
|
92
|
-
module.exports={projectKey,projectFor,effective,invocation,bundle,registration,observe,main};
|
|
93
|
-
if(require.main===module)try{const result=main();process.stdout.write(result.stdout||'');process.stderr.write(result.stderr||'');process.exitCode=result.status;}catch(error){process.stderr.write(`i3 CodeBuddy Hook unavailable: ${error.message}\n`);process.exitCode=1;}
|
package/hooks/i3-prototype.cjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
// Retired callback kept inert for settings that have not yet been upgraded.
|
|
4
|
-
// Do not read transcripts, write audit state, deny tools or block Stop.
|
|
5
|
-
function main() { return {code:0,output:{}}; }
|
|
6
|
-
module.exports={main};
|
|
7
|
-
if(require.main===module)process.stdout.write('{}\n');
|
package/hooks/manage.cjs
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
// CodeBuddy settings protocol: https://www.codebuddy.cn/docs/cli/hooks
|
|
4
|
-
// IDE override semantics: https://www.codebuddy.cn/docs/ide/Features/Hooks
|
|
5
|
-
const fs=require('node:fs'),path=require('node:path'),os=require('node:os'),crypto=require('node:crypto'),assert=require('node:assert/strict');
|
|
6
|
-
const OWNER='i3-composer-agent-codebuddy-v1';
|
|
7
|
-
const catalog=[
|
|
8
|
-
{id:'session-start',name:'Skill 发现与路由',origin:'upstream',files:['session-start.sh'],events:['SessionStart'],dependencies:['bash','jq'],condition:'明确 skill-routing=hook;原生路由使用 native,避免重复注入'},
|
|
9
|
-
{id:'sdd-cache',name:'官方文档请求缓存',origin:'upstream',files:['sdd-cache-pre.sh','sdd-cache-post.sh'],events:['PreToolUse','PostToolUse'],dependencies:['bash','jq','curl','sha256'],condition:'实际 WebFetch;仅源站 304 复用'},
|
|
10
|
-
{id:'simplify-ignore',name:'代码块简化保护',origin:'upstream',files:['simplify-ignore.sh'],events:['PreToolUse','PostToolUse','Stop'],dependencies:['bash','jq','sha1'],condition:'使用 simplify-ignore 标记;会在运行期间替换标记块并在 Stop 恢复'},
|
|
11
|
-
];
|
|
12
|
-
const digest=value=>crypto.createHash('sha256').update(JSON.stringify(value)).digest('hex');
|
|
13
|
-
const sha=bytes=>crypto.createHash('sha256').update(bytes).digest('hex');
|
|
14
|
-
const json=value=>JSON.stringify(value,null,2)+'\n';
|
|
15
|
-
function selection(value,action='check') {
|
|
16
|
-
if(action==='enable')assert.ok(value!==undefined,'Choose explicit Hook groups before enabling; no groups are enabled by default');
|
|
17
|
-
const ids=value===undefined?(['check','list'].includes(action)?catalog.map(x=>x.id):action==='disable'?['prototype']:[]):value==='all'?catalog.map(x=>x.id):value.split(',');
|
|
18
|
-
assert.ok(ids.every(id=>id==='prototype'||catalog.some(item=>item.id===id)),'Unknown Hook group; choose session-start,sdd-cache,simplify-ignore or all');
|
|
19
|
-
assert.ok(action!=='enable'||!ids.includes('prototype'),'Prototype audit Hooks are retired and cannot be enabled');
|
|
20
|
-
return [...new Set(ids)];
|
|
21
|
-
}
|
|
22
|
-
function quote(value){assert.ok(typeof value==='string'&&!/[\x00\r\n]/.test(value),'Unsafe Hook argument');return "'"+value.replaceAll("'","'\\''")+"'";}
|
|
23
|
-
function config(raw){const value=raw===null?{}:JSON.parse(raw);assert.ok(value&&typeof value==='object'&&!Array.isArray(value),'Settings must be an object');assert.ok(value.hooks===undefined||value.hooks&&typeof value.hooks==='object'&&!Array.isArray(value.hooks),'Invalid hooks configuration');for(const groups of Object.values(value.hooks||{})){assert.ok(Array.isArray(groups),'Invalid Hook groups');for(const group of groups)assert.ok(group&&Array.isArray(group.hooks),'Invalid Hook group');}return value;}
|
|
24
|
-
function modules() {
|
|
25
|
-
const roots=[path.resolve(__dirname,'..'),path.resolve(__dirname,'../..')];
|
|
26
|
-
const candidates=roots.flatMap(root=>['i3-ui-prototype',['ui','prototype'].join('-')].map(id=>path.join(root,'skills',id,'scripts')));
|
|
27
|
-
const scripts=candidates.find(dir=>fs.existsSync(path.join(dir,'prototype-hooks.cjs')));assert.ok(scripts,'Prototype audit implementation is missing; install the complete package');
|
|
28
|
-
return {scripts,R:require(path.join(scripts,'codebuddy-registration.cjs')),P:require(path.join(scripts,'prototype-hooks.cjs'))};
|
|
29
|
-
}
|
|
30
|
-
function owned(group){return group.hooks.some(h=>typeof h.command==='string'&&h.command.includes(OWNER));}
|
|
31
|
-
function validateOwned(settings,record,base,scope) {
|
|
32
|
-
if(record){assert.equal(record.owner,OWNER,'Unknown Hook ownership');assert.equal(record.schemaVersion,1,'Unsupported Hook ownership');assert.equal(record.base,base,'Hook base differs');assert.equal(record.scope,scope,'Hook scope differs');assert.ok(record.groups&&typeof record.groups==='object'&&!Array.isArray(record.groups),'Invalid owned Hook groups');
|
|
33
|
-
for(const [id,item] of Object.entries(record.groups)){const known=catalog.find(x=>x.id===id&&x.origin==='upstream');assert.ok(known&&item&&item.groups,'Unknown owned Hook group');assert.deepEqual(Object.keys(item.groups).sort(),[...known.events].sort(),'Owned Hook events changed');}
|
|
34
|
-
}
|
|
35
|
-
const found=new Set();
|
|
36
|
-
for(const [event,groups] of Object.entries(settings.hooks||{}))for(const group of groups.filter(owned)) {
|
|
37
|
-
const ids=Object.keys(record?.groups||{}).filter(id=>record.groups[id].groups[event]&&group.hooks.some(h=>h.command?.includes(`--group' '${id}'`)));
|
|
38
|
-
assert.equal(ids.length,1,'Hook ownership is missing; preserve the unknown command');const key=ids[0]+':'+event;
|
|
39
|
-
assert.ok(!found.has(key),'Duplicate owned Hook');assert.deepEqual(group,record.groups[ids[0]].groups[event],'Owned Hook was modified; preserve user changes');found.add(key);
|
|
40
|
-
}
|
|
41
|
-
for(const [id,item] of Object.entries(record?.groups||{}))for(const event of Object.keys(item.groups))assert.ok(found.has(id+':'+event),'Owned Hook registration is missing');
|
|
42
|
-
}
|
|
43
|
-
function requirements(id,deps) {
|
|
44
|
-
for(const name of catalog.find(x=>x.id===id).dependencies){if(name==='sha256')assert.ok(deps.shasum||deps.sha256sum,'Missing shasum or sha256sum');else if(name==='sha1')assert.ok(deps.shasum||deps.sha1sum,'Missing shasum or sha1sum');else assert.ok(deps[name],`Missing ${name}; install it separately before enabling ${id}`);}
|
|
45
|
-
}
|
|
46
|
-
function planUpstream(options) {
|
|
47
|
-
const {base,scope,product,action,record=null,settingsText=null,nodePath,hookDirectory,scriptDigest,dependencies={},skillRouting}=options;
|
|
48
|
-
assert.ok(['keep','enable','disable'].includes(action),'Invalid Hook action');assert.ok(['project','global'].includes(scope),'Specify project or global scope');
|
|
49
|
-
const settings=config(settingsText);validateOwned(settings,record,base,scope);
|
|
50
|
-
const chosen=selection(options.groups,action).filter(id=>id!=='prototype'),enabled=new Set(Object.keys(record?.groups||{}));
|
|
51
|
-
if(action==='enable')for(const id of chosen){if(id==='session-start')assert.equal(skillRouting,'hook','session-start requires explicit skill-routing=hook; native routing must not be duplicated');requirements(id,dependencies);enabled.add(id);}
|
|
52
|
-
if(action==='disable')for(const id of chosen)enabled.delete(id);
|
|
53
|
-
if(enabled.size){assert.ok(['ide','cli'].includes(product),'Specify CodeBuddy product ide or cli');if(record)assert.equal(product,record.product,'Disable the previous product profile before changing it');assert.match(scriptDigest,/^[a-f0-9]{64}$/);for(const p of [base,nodePath,hookDirectory])assert.ok(path.isAbsolute(p),'Absolute registration paths required');}
|
|
54
|
-
// Remove only exact owned groups after validation. All user Hook groups survive.
|
|
55
|
-
for(const event of Object.keys(settings.hooks||{}))settings.hooks[event]=settings.hooks[event].filter(g=>!owned(g));
|
|
56
|
-
const groups={};
|
|
57
|
-
for(const item of catalog.filter(x=>enabled.has(x.id))) {
|
|
58
|
-
const entry={product,scriptDigest,nodePath,bashPath:dependencies.bash||record?.groups[item.id]?.bashPath,skillRouting:item.id==='session-start'?'hook':null,groups:{}};
|
|
59
|
-
for(const event of item.events) {
|
|
60
|
-
const matcher=item.id==='sdd-cache'?'^WebFetch$':event==='PreToolUse'?'^Read$':'^(Edit|Write)$';
|
|
61
|
-
const argv=[nodePath,path.join(hookDirectory,'codebuddy-upstream.cjs'),'--registration',OWNER,'--group',item.id,'--base',base,'--scope',scope,'--product',product,'--event',event];
|
|
62
|
-
const group={...(event.endsWith('ToolUse')?{matcher}:{}),hooks:[{type:'command',command:argv.map(quote).join(' '),timeout:item.id==='sdd-cache'?15:20}]};
|
|
63
|
-
entry.groups[event]=group;settings.hooks||={};(settings.hooks[event]||=[]).push(group);
|
|
64
|
-
}
|
|
65
|
-
groups[item.id]=entry;
|
|
66
|
-
}
|
|
67
|
-
const recordAfter=enabled.size?{schemaVersion:1,owner:OWNER,base,scope,product,productVersion:options.productVersion||record?.productVersion||'unreported',groups}:null;
|
|
68
|
-
const afterText=!record&&!chosen.length||!record&&action!=='enable'?settingsText:json(settings);
|
|
69
|
-
return {afterText,recordAfter};
|
|
70
|
-
}
|
|
71
|
-
function apply(change,io=modules().R.fileIO) {
|
|
72
|
-
const unlock=io.lock?io.lock(change.changes[0].file):()=>{},written=[];
|
|
73
|
-
try {
|
|
74
|
-
for(const entry of change.changes)assert.equal(digest(io.read(entry.file)),digest(entry.before),'Hook configuration changed after planning');
|
|
75
|
-
try {for(const entry of change.changes)if(entry.before!==entry.after){io.write(entry.file,entry.after,digest(entry.before));written.push(entry);}}
|
|
76
|
-
catch(error){for(const entry of written.reverse())if(io.read(entry.file)===entry.after)io.write(entry.file,entry.before,digest(entry.after));throw error;}
|
|
77
|
-
return change.summary;
|
|
78
|
-
}finally{unlock();}
|
|
79
|
-
}
|
|
80
|
-
function executable(name,env=process.env) {
|
|
81
|
-
for(const folder of (env.PATH||'').split(path.delimiter)){const file=path.resolve(folder,name);try{if(fs.statSync(file).isFile()){fs.accessSync(file,fs.constants.X_OK);return file;}}catch{}}
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
function dependencies(){return Object.fromEntries(['bash','jq','curl','shasum','sha256sum','sha1sum'].map(name=>[name,executable(name)]));}
|
|
85
|
-
function location(options) {
|
|
86
|
-
assert.ok(['codebuddy','workbuddy'].includes(options.host||'codebuddy'),'Hook management supports CodeBuddy and WorkBuddy');assert.ok(['project','global'].includes(options.scope),'Specify project or global scope');
|
|
87
|
-
const project=fs.realpathSync(path.resolve(options.project||'.'));assert.ok(fs.statSync(project).isDirectory(),'Project must be a directory');
|
|
88
|
-
return {project,base:options.scope==='project'?path.join(project,'.codebuddy'):modules().P.globalBase(options)};
|
|
89
|
-
}
|
|
90
|
-
function unmanaged(settings) {
|
|
91
|
-
const files={ 'session-start':['session-start.sh'],'sdd-cache':['sdd-cache-pre.sh','sdd-cache-post.sh'],'simplify-ignore':['simplify-ignore.sh'] },result=[];
|
|
92
|
-
for(const [event,groups] of Object.entries(settings.hooks||{}))for(const group of groups)for(const hook of group.hooks) {
|
|
93
|
-
if(typeof hook.command!=='string'||hook.command.includes(OWNER))continue;
|
|
94
|
-
for(const [id,names] of Object.entries(files))if(names.some(name=>hook.command.includes(name)))result.push({id,event,command:hook.command});
|
|
95
|
-
}
|
|
96
|
-
return result;
|
|
97
|
-
}
|
|
98
|
-
function pendingSimplify(base) {
|
|
99
|
-
const parent=path.join(base,'cache/i3-composer-agent/hooks');if(!fs.existsSync(parent))return [];
|
|
100
|
-
return fs.readdirSync(parent,{withFileTypes:true}).filter(entry=>entry.isDirectory()&&!entry.isSymbolicLink()).flatMap(entry=>{
|
|
101
|
-
const dir=path.join(parent,entry.name,'simplify-ignore');if(!fs.existsSync(dir))return [];
|
|
102
|
-
assert.ok(!fs.lstatSync(dir).isSymbolicLink(),'Simplify cache symlink requires review');return fs.readdirSync(dir).filter(file=>file.endsWith('.bak')).map(file=>path.join(dir,file));
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
function prepare(options,runtime={}) {
|
|
106
|
-
const {P,R}=runtime.modules||modules(),{project,base}=runtime.location||location(options),io=R.fileIO,requested=options.action||'keep',ids=selection(options.groups,requested),host=options.host||'codebuddy';
|
|
107
|
-
const action=requested==='default'?'keep':requested;
|
|
108
|
-
const settingsPath=path.join(base,'settings.json'),recordPath=path.join(base,'state/i3-composer-agent/hooks.json'),prototypePath=path.join(base,'state/i3-prototype/installation.json');
|
|
109
|
-
const before=io.read(settingsPath),recordText=io.read(recordPath),record=recordText?JSON.parse(recordText):null,prototypeText=io.read(prototypePath);
|
|
110
|
-
const settings=config(before);
|
|
111
|
-
if(action==='enable') {
|
|
112
|
-
assert.ok(process.platform!=='win32','Buddy Hook quoting on Windows has not been validated');
|
|
113
|
-
assert.ok(!settings.disableAllHooks&&!settings.allowManagedHooksOnly,'Host policy prevents automatic Hooks; preserve the policy');
|
|
114
|
-
assert.equal(host,'codebuddy','WorkBuddy upstream Hook adapters are not supported');
|
|
115
|
-
for(const id of ids)assert.ok(!unmanaged(settings).some(item=>item.id===id),`Unmanaged ${id} Hook already exists; preserve it and resolve the duplicate before enabling`);
|
|
116
|
-
}
|
|
117
|
-
if(ids.includes('simplify-ignore')&&['enable','disable'].includes(action)) {
|
|
118
|
-
for(const candidate of [...new Set([base,path.join(project,'.codebuddy'),P.globalBase?P.globalBase(options):path.join(options.home||os.homedir(),'.codebuddy')])])assert.equal((runtime.pendingSimplify||pendingSimplify)(candidate).length,0,'Simplify protection is still active; finish the session and restore blocks before changing Hooks');
|
|
119
|
-
}
|
|
120
|
-
// Retire the entire prototype group, including shared Buddy registrations.
|
|
121
|
-
// The legacy planner validates exact ownership; unknown/user-modified entries stop here.
|
|
122
|
-
const prototypeChange=P.prepare({...options,project,action:'disable',hosts:[],entryPath:path.join(base,'i3-composer-agent/hooks/i3-prototype.cjs')});
|
|
123
|
-
const upstream=planUpstream({...options,base,product:record?.product||options.product,action,record,settingsText:prototypeChange.unchanged?before:prototypeChange.afterText,nodePath:process.execPath,
|
|
124
|
-
hookDirectory:path.join(base,'i3-composer-agent/hooks'),scriptDigest:runtime.scriptDigest||require('./codebuddy-upstream.cjs').bundle(),dependencies:runtime.dependencies||dependencies()});
|
|
125
|
-
const changes=[{file:settingsPath,before,after:upstream.afterText},{file:recordPath,before:recordText,after:upstream.recordAfter?json(upstream.recordAfter):null}];
|
|
126
|
-
if(prototypeText&&!prototypeChange.unchanged) {
|
|
127
|
-
const archive=path.join(base,'state/i3-prototype/history','retired-'+sha(prototypeText)+'.json'),previous=io.read(archive);
|
|
128
|
-
assert.ok(previous===null||previous===prototypeText,'Retired registration history differs; preserve it for review');
|
|
129
|
-
changes.push({file:archive,before:previous,after:prototypeText});
|
|
130
|
-
}
|
|
131
|
-
changes.push({file:prototypePath,before:prototypeText,after:prototypeChange.unchanged?prototypeText:null});
|
|
132
|
-
return {changes,summary:{host,scope:options.scope,base,product:record?.product||options.product||'auto',action,requestedAction:requested,groups:ids.filter(id=>id!=='prototype'),enabledHosts:[],
|
|
133
|
-
changed:changes.some(item=>item.before!==item.after),enabledGroups:Object.keys(upstream.recordAfter?.groups||{}),retiredGroups:['prototype'],prototypeRegistrationRemoved:!!prototypeText&&!prototypeChange.unchanged,
|
|
134
|
-
next:'Prototype audit Hooks are retired. Existing owned callbacks are removed; other Hook groups and user settings are preserved. Reload an affected host after cleanup.'}};
|
|
135
|
-
}
|
|
136
|
-
function check(options) {
|
|
137
|
-
const {P,R}=modules(),{project,base}=location(options),io=R.fileIO,ids=selection(options.groups,options.action||'check'),settingsText=io.read(path.join(base,'settings.json')),settings=config(settingsText),deps=dependencies(),items=[];
|
|
138
|
-
let record=null,error=null;try{record=require('./codebuddy-upstream.cjs').registration(base);}catch(e){error=e.message;}
|
|
139
|
-
for(const id of ids) {
|
|
140
|
-
if(id==='prototype')continue;
|
|
141
|
-
const item=catalog.find(x=>x.id===id),entry=path.join(base,'i3-composer-agent/hooks','codebuddy-upstream.cjs');
|
|
142
|
-
const missingFiles=[entry,...item.files.map(file=>path.join(base,'i3-composer-agent/hooks',file))].filter(file=>!fs.existsSync(file));
|
|
143
|
-
const row={...item,entryPath:entry,filesPresent:missingFiles.length===0,missingFiles,status:missingFiles.length?'not-installed':'files-present',invocationVerified:false,nativeValidation:'pending-user'};
|
|
144
|
-
try{requirements(id,deps);}catch(e){row.dependencyIssue=e.message;}
|
|
145
|
-
if(error){row.status='failed';row.reason=error;}
|
|
146
|
-
else if(record?.groups[id])try {
|
|
147
|
-
const U=require('./codebuddy-upstream.cjs'),selected=U.effective({project,product:record.product,group:id,home:options.home,env:options.env});row.effective=selected?.base===base;
|
|
148
|
-
row.status=!row.effective?'shadowed':record.product==='cli'?'pending-host-review':'registered';
|
|
149
|
-
const raw=io.read(path.join(base,'state/i3-composer-agent/hook-observations',U.projectKey(project),id+'.json'));
|
|
150
|
-
if(raw){const observation=JSON.parse(raw);if(observation.settingsDigest===record.settingsDigest&&observation.scriptDigest===record.groups[id].scriptDigest){row.observation=observation;row.status=row.effective?'triggered':row.status;}}
|
|
151
|
-
row.product=record.product;row.productVersion=record.productVersion;
|
|
152
|
-
}catch(e){row.status='failed';row.reason=e.message;}
|
|
153
|
-
items.push(row);
|
|
154
|
-
}
|
|
155
|
-
const retired=P.check({...options,project});
|
|
156
|
-
return {host:options.host||'codebuddy',scope:options.scope,base,readOnly:true,changed:false,status:items.some(item=>item.status==='failed')||retired.status==='failed'?'failed':'checked',hooks:items,retiredHooks:[{id:'prototype',...retired}],unmanagedHooks:unmanaged(settings),
|
|
157
|
-
next:'files-present is not enabled; registered is not triggered; triggered is not business acceptance. CLI: review /hooks; IDE: reload.'};
|
|
158
|
-
}
|
|
159
|
-
function configure(options){const change=prepare(options);return options.preview?change.summary:apply(change);}
|
|
160
|
-
function main(argv=process.argv.slice(2)) {
|
|
161
|
-
if(argv.includes('--help'))return {usage:'node manage.cjs list|check|enable|disable --host codebuddy|workbuddy --scope project|global --project <directory> [--groups <ids>|all] [--product auto|ide|cli] [--skill-routing hook] [--transcript-root <native-directory>|auto]',hooks:catalog,default:'No automatic Hook registration. Enable requires explicit upstream groups; prototype audit is retired and its old registrations are cleaned during upgrades',nativeValidation:'pending-user'};
|
|
162
|
-
const options={action:argv.shift()||'list',host:'codebuddy',project:process.cwd()};
|
|
163
|
-
assert.ok(['list','check','enable','disable','keep'].includes(options.action),'Choose list, check, enable or disable');
|
|
164
|
-
while(argv.length){const arg=argv.shift();assert.ok(arg.startsWith('--')&&argv[0]&&!argv[0].startsWith('--'),'Hook option needs a value');const key=arg.slice(2).replace(/-([a-z])/g,(_,c)=>c.toUpperCase());assert.ok(['host','scope','project','product','productVersion','transcriptRoot','groups','skillRouting'].includes(key),'Unknown Hook option');options[key]=argv.shift();}
|
|
165
|
-
if(options.skillRouting!==undefined)assert.ok(['native','hook'].includes(options.skillRouting),'skill-routing must be native or hook');
|
|
166
|
-
return ['list','check'].includes(options.action)?check(options):configure(options);
|
|
167
|
-
}
|
|
168
|
-
module.exports={OWNER,catalog,digest,sha,json,quote,config,selection,modules,validateOwned,requirements,planUpstream,apply,dependencies,location,unmanaged,pendingSimplify,prepare,check,configure,main};
|
|
169
|
-
if(require.main===module)try{const result=main();process.stdout.write(json(result));if(result.status==='failed')process.exitCode=1;}catch(error){process.stderr.write(error.message+'\n');process.exitCode=1;}
|