@givolt/i3-composer-agent 3.2.1 → 4.0.1
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-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/README.md +31 -25
- 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/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 +1 -1
- 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 +1 -1
- 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 -80
- 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 +38 -71
- package/skills/i3-enterprise-sop/references/engineering-skeleton/directory-standard.md +7 -7
- package/skills/i3-enterprise-sop/references/handoff.py +149 -120
- package/skills/i3-enterprise-sop/references/technical-baseline/baselines/enterprise-application-technical-baseline-v0-0-4.md +24 -24
- package/skills/i3-enterprise-sop/references/technical-baseline/templates/technical-baseline.md +8 -8
- package/skills/i3-enterprise-sop/references/templates/ad.md +31 -31
- package/skills/i3-enterprise-sop/references/templates/brd.md +6 -6
- package/skills/i3-enterprise-sop/references/templates/prd.md +37 -37
- package/skills/i3-enterprise-sop/references/templates/testcase.md +25 -25
- 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/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-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
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import TaskLaunch from "../tasks/TaskLaunch.js";
|
|
2
|
-
import { computed, ref, watch } from '../../runtime/state.js';
|
|
3
|
-
import { useRoute, useRouter } from "../../runtime/router.js";
|
|
4
|
-
import { Alert, Button, Result, Space } from "../../runtime/widgets.js";
|
|
5
|
-
import { useIntents } from "../intents/store.js";
|
|
6
|
-
import { useSpecs } from "../specs/store.js";
|
|
7
|
-
import { useSession } from "../shared/session.js";
|
|
8
|
-
import { currentVersion, sourceOf } from "../specs/domain.js";
|
|
9
|
-
import { usePbcs } from "./store.js";
|
|
10
|
-
import { confirmAction } from "../shell/confirmation.js";
|
|
11
|
-
import SpecHeader from "../specs/SpecHeader.js";
|
|
12
|
-
import PbcPicker from "./PbcPicker.js";
|
|
13
|
-
import PbcWizard from "./PbcWizard.js";
|
|
14
|
-
import PbcProgress from "./PbcProgress.js";
|
|
15
|
-
import { createComponent } from '../../runtime/dom.js';
|
|
16
|
-
export default createComponent({ name: 'PbcPage', propKeys: [], template: new URL('./PbcPage.html', import.meta.url).href, setup(__props, __emit) {
|
|
17
|
-
const route = useRoute(), router = useRouter(), intents = useIntents(), specs = useSpecs(), store = usePbcs(), session = useSession(), selected = ref(''), wizard = ref(route.query.create === '1'), error = ref(''), submitting = ref(false);
|
|
18
|
-
const id = computed(() => String(route.params.id)), intent = computed(() => intents.get(id.value)), spec = computed(() => specs.get(id.value)), version = computed(() => spec.value && currentVersion(spec.value)), job = computed(() => store.job(id.value)), target = computed(() => store.items.find(p => p.id === selected.value));
|
|
19
|
-
watch(id, () => { selected.value = ''; error.value = ''; wizard.value = route.query.create === '1'; });
|
|
20
|
-
const sourceError = computed(() => { try {
|
|
21
|
-
if (!intent.value || !version.value?.confirmedAt)
|
|
22
|
-
return '请先完成规格确认。';
|
|
23
|
-
if (sourceOf(intent.value).version !== version.value.source.version)
|
|
24
|
-
return '来源意图有新版本,请先重新生成并确认规格。';
|
|
25
|
-
return '';
|
|
26
|
-
}
|
|
27
|
-
catch (e) {
|
|
28
|
-
return e.message;
|
|
29
|
-
} });
|
|
30
|
-
function link() { if (!target.value || !version.value)
|
|
31
|
-
return; const p = target.value, v = version.value, binding = { specVersion: v.number, recordVersion: spec.value.recordVersion, sourceVersion: v.source.version }; confirmAction({ title: '关联至 ' + p.name + '?', content: '意图 ' + v.source.code + ' v' + v.source.version + ' / 规格 v' + v.number + ' 将登记到 ' + p.name + '。保留现有工程配置,本轮不提供改绑。', okText: '确认关联', cancelText: '继续核对', onOk: async () => { try {
|
|
32
|
-
submitting.value = true;
|
|
33
|
-
error.value = '';
|
|
34
|
-
await store.link(id.value, p.id, binding);
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
error.value = e.message;
|
|
38
|
-
}
|
|
39
|
-
finally {
|
|
40
|
-
submitting.value = false;
|
|
41
|
-
} } }); }
|
|
42
|
-
return { TaskLaunch, computed, ref, watch, useRoute, useRouter, Alert, Button, Result, Space, useIntents, useSpecs, useSession, currentVersion, sourceOf, usePbcs, confirmAction, SpecHeader, PbcPicker, PbcWizard, PbcProgress, route, router, intents, specs, store, session, selected, wizard, error, submitting, id, intent, spec, version, job, target, sourceError, link };
|
|
43
|
-
} });
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.html
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<!-- 来源:src/pbc/PbcPicker.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
|
|
2
|
-
<section aria-label="已有 PBC 选择器"><div class="pbc-picker-tools"><template data-component="Space" wrap=""><template data-component="Input" data-model-value="(keyword)" aria-label="查找已有 PBC" placeholder="搜索名称、标识或 EBC" data-on-press-enter="(search)"></template><template data-component="Button" data-on-click="(search)">查询</template><template data-component="Button" data-on-click="keyword = '';
|
|
3
|
-
search();">重置</template></template><template data-component="Space" wrap=""><template data-component="Button" data-on-click="(sort = !sort)">名称{{ (sort ? '降序' : '升序') }}</template><template data-component="ColumnSettings" data-bind-preferences="(prefs)"></template><template data-component="Button" data-on-click="(refresh)">刷新</template></template></div><template data-component="Alert" type="info" show-icon="" title="一次关联一个 PBC。此处为授权目录选择器,删除及批量删除不适用。" class="page-alert"></template><template data-component="Result" data-if="(store.scene === 'error')" status="warning" title="PBC 目录加载失败"><template data-slot="extra"><template data-component="Button" data-on-click="store.scene = 'normal';
|
|
4
|
-
refresh();">重试加载</template></template></template><template data-component="ProTable" data-else="" data-bind-table="(table)" data-bind-search="(async () => { })" data-bind-control="(false)" data-bind-table-container="(false)" data-bind-loading="(loading)" row-key="id" data-bind-row-selection="(selection)" data-bind-scroll="({ x: 'max-content' })" data-bind-pagination="({ showTotal: (n) => '共 ' + n + ' 个可见 PBC', showSizeChanger: true, pageSizeOptions: [5, 10, 20] })" data-bind-locale="({ emptyText: h(Empty, { description: '没有匹配的授权 PBC' }) })"></template><template data-component="Drawer" data-bind-open="(!!detail)" title="PBC 详情" data-bind-size="(620)" data-on-close="(detail = undefined)"><template data-if="(detail)"><h2>{{ (detail.name) }}</h2><p>{{ (detail.ebc) }} · 负责人 {{ (detail.owner) }}</p><p>工程标识:{{ (detail.slug) }}<br>域名:{{ (detail.domain) }}</p><template data-component="RecordMetadata" data-bind-record="(detail)"></template><template data-component="Alert" type="info" title="演示目录记录,未连接真实仓库或环境。"></template></template></template></section>
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { stateOf } from "./management.js";
|
|
2
|
-
import { computed, ref, watch } from '../../runtime/state.js';
|
|
3
|
-
import { h } from '../../runtime/dom.js';
|
|
4
|
-
import { Alert, Button, Drawer, Empty, Input, Result, Space } from "../../runtime/widgets.js";
|
|
5
|
-
import { ProTable, useTable } from "../../runtime/widgets.js";
|
|
6
|
-
import { usePbcs } from "./store.js";
|
|
7
|
-
import { useSession } from "../shared/session.js";
|
|
8
|
-
import { formatDate, tenantLabel } from "../shared/policy.js";
|
|
9
|
-
import { useColumns } from "../shared/columns.js";
|
|
10
|
-
import ColumnSettings from "../shared/ColumnSettings.js";
|
|
11
|
-
import RecordMetadata from "../shared/RecordMetadata.js";
|
|
12
|
-
import ListMore from "../shared/ListMore.js";
|
|
13
|
-
import { labeledSelection } from "../shared/listSelection.js";
|
|
14
|
-
import { createComponent } from '../../runtime/dom.js';
|
|
15
|
-
export default createComponent({ name: 'PbcPicker', propKeys: ["tenantId", "value"], template: new URL('./PbcPicker.html', import.meta.url).href, setup(__props, __emit) {
|
|
16
|
-
const props = __props, emit = __emit, store = usePbcs(), session = useSession(), keyword = ref(''), applied = ref(''), loading = ref(false), detail = ref(), sort = ref(false);
|
|
17
|
-
const prefs = useColumns('pbc-picker', [{ key: 'name', label: 'PBC 名称', locked: true }, { key: 'ebc', label: 'EBC 归属', defaultVisible: true }, { key: 'owner', label: '负责人', defaultVisible: true }, { key: 'createdBy', label: '创建人', defaultVisible: true }, { key: 'createdAt', label: '创建时间', defaultVisible: true }, { key: 'createdDept', label: '创建部门' }, { key: 'updatedBy', label: '修改人' }, { key: 'updatedAt', label: '修改时间' }, { key: 'tenantId', label: '所属租户' }, { key: 'actions', label: '操作', locked: true }]);
|
|
18
|
-
const table = useTable({ pageParam: { current: 1, pageSize: 5, total: 0 }, columns: [
|
|
19
|
-
{ key: 'name', title: 'PBC 名称', dataIndex: 'name', width: 180, render: (_, row) => h(Button, { type: 'link', onClick: () => detail.value = row }, () => String(row.name)) },
|
|
20
|
-
{ key: 'ebc', title: 'EBC 归属', dataIndex: 'ebc', width: 200 }, { key: 'owner', title: '负责人', dataIndex: 'owner', width: 100 },
|
|
21
|
-
{ key: 'createdBy', title: '创建人', dataIndex: 'createdBy', width: 100 }, { key: 'createdAt', title: '创建时间', dataIndex: 'createdAt', width: 180, render: (v) => formatDate(String(v)) },
|
|
22
|
-
{ key: 'createdDept', title: '创建部门', dataIndex: 'createdDept', width: 140 }, { key: 'updatedBy', title: '修改人', dataIndex: 'updatedBy', width: 100 }, { key: 'updatedAt', title: '修改时间', dataIndex: 'updatedAt', width: 180, render: (v) => formatDate(String(v)) }, { key: 'tenantId', title: '所属租户', dataIndex: 'tenantId', width: 120, render: (v) => tenantLabel(String(v)) },
|
|
23
|
-
{ key: 'actions', title: '操作', width: 95, render: (_, row) => h(ListMore, { name: String(row.name), items: [{ key: 'detail', label: '查看 PBC 详情' }], onAction: () => detail.value = row }) },
|
|
24
|
-
] });
|
|
25
|
-
const catalog = new Map(table.columns.value.map(c => [c.key, c]));
|
|
26
|
-
watch(prefs.keys, keys => table.columns.value = keys.map(k => catalog.get(k)).filter(Boolean), { immediate: true });
|
|
27
|
-
const visible = computed(() => store.scene === 'empty' ? [] : store.items.filter(p => stateOf(p) === 'active').filter(p => p.tenantId === props.tenantId && (p.name + p.slug + p.ebc).includes(applied.value.trim())).sort((a, b) => sort.value ? b.name.localeCompare(a.name, 'zh-CN') : a.name.localeCompare(b.name, 'zh-CN')));
|
|
28
|
-
watch([visible, () => table.pageParam.current, () => table.pageParam.pageSize], () => { const size = table.pageParam.pageSize || 5, max = Math.max(1, Math.ceil(visible.value.length / size)); if ((table.pageParam.current || 1) > max)
|
|
29
|
-
table.setPageParam({ current: max }); const start = ((table.pageParam.current || 1) - 1) * size; table.dataSource.value = visible.value.slice(start, start + size); table.setPageParam({ total: visible.value.length }); emit('change', ''); }, { immediate: true });
|
|
30
|
-
const selection = computed(() => ({ type: 'radio', renderCell: (_checked, p, _index, node) => labeledSelection(node, '选择 PBC ' + p.name), selectedRowKeys: props.value ? [props.value] : [], onChange: (keys) => emit('change', String(keys[0] || '')), getCheckboxProps: (p) => ({ disabled: !session.can('pbc:link', String(p.tenantId), String(p.id)), name: '选择 PBC ' + p.name }) }));
|
|
31
|
-
function search() { applied.value = keyword.value; table.setPageParam({ current: 1 }); emit('change', ''); }
|
|
32
|
-
async function refresh() { emit('change', ''); loading.value = true; await new Promise(r => setTimeout(r, 250)); loading.value = false; }
|
|
33
|
-
return { stateOf, computed, ref, watch, h, Alert, Button, Drawer, Empty, Input, Result, Space, ProTable, useTable, usePbcs, useSession, formatDate, tenantLabel, useColumns, ColumnSettings, RecordMetadata, ListMore, labeledSelection, props, emit, store, session, keyword, applied, loading, detail, sort, prefs, table, catalog, visible, selection, search, refresh };
|
|
34
|
-
} });
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.html
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!-- 来源:src/pbc/PbcProgress.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
|
|
2
|
-
<section class="panel delivery-main" aria-label="PBC 归属进度"><div class="section-heading"><div><h2>{{ (job.kind === 'create' ? '创建' : '关联') }} {{ (job.pbc.name) }}</h2><p class="muted">意图 v{{ (job.sourceVersion) }} → 规格 v{{ (job.specVersion) }} → {{ (job.pbc.name) }}</p></div><template data-component="Tag" data-bind-color="(job.status === 'done' ? 'green' : job.status === 'failed' ? 'red' : 'blue')">{{ (stateLabels[job.status]) }}</template></div><template data-component="Alert" data-if="(error)" type="error" show-icon="" data-bind-title="(error)" class="page-alert"></template><template data-component="Alert" type="info" show-icon="" title="已提交内容只读保留,刷新页面后可查看原请求。" data-bind-description="('操作编号:' + job.id + '。不在此改绑或重新创建;本版所有执行与回执均为本地模拟。')" class="page-alert"></template><ol class="creation-progress"><li data-each="(step,index) in (job.steps)" data-bind-key="(step.name)"><span class="step-index" data-bind-class="('step-' + step.state)">{{ (step.state === 'done' ? '✓' : index + 1) }}</span><div><strong>{{ (step.name) }}</strong><p class="muted">{{ (step.detail || '等待前序步骤完成') }}</p></div><template data-component="Tag" data-bind-color="(step.state === 'done' ? 'green' : step.state === 'failed' ? 'red' : step.state === 'unknown' ? 'orange' : 'default')">{{ ({ waiting: '等待中', running: '处理中', done: '已完成', failed: '未完成', unknown: '待核实' }[step.state]) }}</template></li></ol><template data-component="Space" wrap=""><template data-component="Button" data-if="(job.status === 'unknown')" type="primary" data-on-click="(reconcile)">核实原操作结果</template><template data-component="Button" data-if="(['paused', 'failed'].includes(job.status))" type="primary" data-bind-disabled="(!canResume)" data-on-click="(resume)">继续未完成步骤</template><template data-component="Button" data-on-click="(history = true)">查看执行记录</template></template><template data-if="(job.status === 'done')"><section class="summary-context"><h2>归属结果与产物引用</h2><p>{{ (job.kind === 'create' ? '已形成新的 PBC 演示记录' : '已在现有 PBC 下登记需求关联,未重建工程资源') }}。后续进入开发计划与设计,当前没有生产发布。</p><div class="artifact-grid"><button data-each="a in (artifacts)" data-bind-key="(a.name)" class="artifact-link" data-on-click="(artifact = a.name)"><strong>{{ (a.name) }}</strong><span>{{ (a.path) }}</span><small>查看模拟引用 →</small></button></div><p class="muted">GitLab 归档与提交号、真实 Roadmap 生成待正式实现。此处不是仓库完成凭据。</p></section></template><template data-component="RecordMetadata" data-bind-record="(job)"></template><template data-component="Drawer" data-bind-open="(history)" title="执行与操作记录" data-bind-size="(680)" data-on-close="(history = false)"><template data-component="Alert" type="info" title="只读执行历史,不适用删除或批量删除。"></template><ol class="intent-events"><li data-each="(event,index) in ([...job.events].reverse())" data-bind-key="(index)"><strong>{{ (event.text) }}</strong><p class="muted">{{ (event.actor) }} · {{ (formatDate(event.at)) }}</p></li></ol></template><template data-component="Drawer" data-bind-open="(!!artifact)" data-bind-title="(artifact + '(模拟)')" data-bind-size="(820)" data-on-close="(artifact = '')"><p>来源:{{ (job.spec.source.code) }} · 意图 v{{ (job.sourceVersion) }} · 规格 v{{ (job.specVersion) }}</p><p>确认人:{{ (job.spec.confirmedBy) }} · {{ (formatDate(job.spec.confirmedAt)) }}</p><template data-if="(artifact === '已确认规格引用')"><template data-component="SpecDocument" data-bind-version="(job.spec)"></template></template><template data-else-if="(artifact === '意图归档引用')"><h2>{{ (job.spec.source.title) }}</h2><p>此处保留来源意图的标识与已确认版本,原文可从意图详情的版本记录查看。</p><template data-component="Button" data-on-click="(router.push('/intents/' + job.intentId))">查看来源意图</template></template><template data-else=""><h2>后续计划入口</h2><p>需求拆分 → 契约与交互设计 → 实现与独立验证 → 人工放行生产。</p><p>正式 Roadmap 待后续交互包与 spec 定义;本轮仅展示归档引用位置。</p></template></template></section>
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { computed, ref } from '../../runtime/state.js';
|
|
2
|
-
import { Alert, Button, Drawer, Space, Tag } from "../../runtime/widgets.js";
|
|
3
|
-
import { useRouter } from "../../runtime/router.js";
|
|
4
|
-
import { usePbcs } from "./store.js";
|
|
5
|
-
import { useSession } from "../shared/session.js";
|
|
6
|
-
import { formatDate } from "../shared/policy.js";
|
|
7
|
-
import RecordMetadata from "../shared/RecordMetadata.js";
|
|
8
|
-
import SpecDocument from "../specs/SpecDocument.js";
|
|
9
|
-
import { createComponent } from '../../runtime/dom.js';
|
|
10
|
-
export default createComponent({ name: 'PbcProgress', propKeys: ["job"], template: new URL('./PbcProgress.html', import.meta.url).href, setup(__props, __emit) {
|
|
11
|
-
const props = __props, store = usePbcs(), session = useSession(), router = useRouter(), error = ref(''), artifact = ref(''), history = ref(false);
|
|
12
|
-
const stateLabels = { running: '处理中', paused: '已暂停', unknown: '结果待核实', failed: '部分步骤失败', done: '已完成(模拟)' };
|
|
13
|
-
const scope = computed(() => props.job.kind === 'link' ? props.job.pbc.id : undefined), canResume = computed(() => session.can(props.job.kind === 'create' ? 'pbc:create' : 'pbc:link', props.job.tenantId, scope.value));
|
|
14
|
-
async function resume() { try {
|
|
15
|
-
error.value = '';
|
|
16
|
-
await store.resume(props.job.intentId);
|
|
17
|
-
}
|
|
18
|
-
catch (e) {
|
|
19
|
-
error.value = e.message;
|
|
20
|
-
} }
|
|
21
|
-
function reconcile() { try {
|
|
22
|
-
error.value = '';
|
|
23
|
-
store.reconcile(props.job.intentId);
|
|
24
|
-
}
|
|
25
|
-
catch (e) {
|
|
26
|
-
error.value = e.message;
|
|
27
|
-
} }
|
|
28
|
-
const artifacts = computed(() => [{ name: '意图归档引用', path: props.job.pbc.slug + '/intent-home/' + props.job.spec.source.code + '/intent.md' }, { name: '已确认规格引用', path: props.job.pbc.slug + '/intent-home/' + props.job.spec.source.code + '/spec.md' }, { name: 'Roadmap 初稿引用', path: props.job.pbc.slug + '/intent-home/' + props.job.spec.source.code + '/roadmap.md' }]);
|
|
29
|
-
return { computed, ref, Alert, Button, Drawer, Space, Tag, useRouter, usePbcs, useSession, formatDate, RecordMetadata, SpecDocument, props, store, session, router, error, artifact, history, stateLabels, scope, canResume, resume, reconcile, artifacts };
|
|
30
|
-
} });
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.html
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
<!-- 来源:src/pbc/PbcWizard.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
|
|
2
|
-
<template data-component="Drawer" data-bind-open="(true)" title="创建 PBC" data-bind-size="(1040)" data-bind-mask="({ closable: false })" data-on-close="(close)"><template data-component="Steps" data-bind-current="(step)" size="small" class="delivery-steps" data-bind-items="([{ title: '归属与服务方案' }, { title: '工程标识与预览' }, { title: '核对并创建' }])"></template><template data-component="Alert" data-if="(error)" type="error" show-icon="" data-bind-title="(error)" class="page-alert"></template><template data-component="Alert" type="info" show-icon="" class="page-alert" data-bind-title="('复核来源:' + specVersion.source.code + ' · 意图 v' + binding.sourceVersion + ' / 规格 v' + binding.specVersion)" data-bind-description="('规格确认人:' + specVersion.confirmedBy + ';提交期间版本变化会要求重新核对。')"></template><template data-component="ProForm" data-if="(step < 2)" data-bind-form="(form)" name="pbc-create" layout="vertical" data-bind-disabled="(!allowed || submitting)"></template><template data-component="ServiceList" data-if="(step === 0)" data-bind-services="(services)" data-bind-tenant-id="(draft.tenantId)" data-bind-readonly="(!allowed)" data-on-change="(services = $event)"></template><template data-if="(step >= 1)"><section class="engineering-preview"><h2>{{ (step === 1 ? '工程预览' : '提交复核') }}</h2><p><strong>{{ (value.name) }}</strong> · {{ (value.ebc) }} · 负责人 {{ (value.owner) }}</p><p>仓库组 / 命名空间:{{ (value.slug) }}<br>应用入口:{{ (value.domain) }}</p><ul><li data-each="s in (included)" data-bind-key="(s.id)"><strong>{{ (s.title) }}</strong> · {{ (value.prefix) }}-{{ (s.name) }}<br><span class="muted">{{ (templates.find(t => t.value === s.template)?.label) }} v1.0(模拟) · {{ (value.slug) }}/{{ (s.name) }}</span></li></ul><template data-component="Alert" show-icon="" type="info" title="新建会固定当前意图、规格及工程模板版本。" description="仅演示 GitLab、工程骨架、Kubernetes / Dapr、APISIX、MaxKey 应用和审批回调六项进度;不启动生产发布。"></template></section></template><template data-slot="footer"><div class="drawer-footer"><template data-component="Button" data-bind-disabled="(!allowed || submitting)" data-on-click="(saveExit)">保存并退出</template><template data-component="Space" wrap=""><template data-component="Button" data-if="(step > 0)" data-bind-disabled="(submitting)" data-on-click="step--;
|
|
3
|
-
error = '';">上一步</template><template data-component="Button" data-if="(step < 2)" type="primary" data-bind-disabled="(!allowed)" data-on-click="(next)">下一步</template><template data-component="Button" data-else="" type="primary" data-bind-disabled="(!allowed)" data-bind-loading="(submitting)" data-on-click="(create)">确认并创建 PBC</template></template></div></template></template>
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { computed, ref, watch } from '../../runtime/state.js';
|
|
2
|
-
import { Alert, Button, Drawer, Space, Steps } from "../../runtime/widgets.js";
|
|
3
|
-
import { ProForm, useForm } from "../../runtime/widgets.js";
|
|
4
|
-
import { usePbcs } from "./store.js";
|
|
5
|
-
import { useSession } from "../shared/session.js";
|
|
6
|
-
import { clone, currentVersion } from "../specs/domain.js";
|
|
7
|
-
import { useSpecs } from "../specs/store.js";
|
|
8
|
-
import { validateDraft, templates } from "./domain.js";
|
|
9
|
-
import ServiceList from "./ServiceList.js";
|
|
10
|
-
import { confirmAction } from "../shell/confirmation.js";
|
|
11
|
-
import { createComponent } from '../../runtime/dom.js';
|
|
12
|
-
export default createComponent({ name: 'PbcWizard', propKeys: ["intentId"], template: new URL('./PbcWizard.html', import.meta.url).href, setup(__props, __emit) {
|
|
13
|
-
const props = __props, emit = __emit, store = usePbcs(), session = useSession(), error = ref(''), submitting = ref(false);
|
|
14
|
-
const draft = ref(store.draft(props.intentId)), step = ref(draft.value.step), services = ref(clone(draft.value.services)), allowed = computed(() => session.can('pbc:create', draft.value.tenantId));
|
|
15
|
-
const specSnapshot = clone(useSpecs().get(props.intentId)), specVersion = currentVersion(specSnapshot), binding = { specVersion: specVersion.number, recordVersion: specSnapshot.recordVersion, sourceVersion: specVersion.source.version };
|
|
16
|
-
const form = useForm({ name: draft.value.name, ebc: draft.value.ebc, owner: draft.value.owner, slug: draft.value.slug, prefix: draft.value.prefix, domain: draft.value.domain });
|
|
17
|
-
watch(step, n => {
|
|
18
|
-
form.fields.value = n === 0 ? [
|
|
19
|
-
{ path: 'name', label: 'PBC 名称', component: 'input', span: 24, rules: [{ required: true, whitespace: true, message: '请填写名称' }], maxlength: 60 },
|
|
20
|
-
{ path: 'ebc', label: 'EBC 业务能力', component: 'select', span: 12, xs: 24, md: 12, options: ['客户服务与工单履约', '业务运营与支撑', '企业研发与交付'].map(value => ({ label: value, value })), rules: [{ required: true, message: '请选择 EBC' }] },
|
|
21
|
-
{ path: 'owner', label: 'PBC 负责人', component: 'input', span: 12, xs: 24, md: 12, rules: [{ required: true, whitespace: true, message: '请填写负责人' }] },
|
|
22
|
-
] : n === 1 ? [
|
|
23
|
-
{ path: 'slug', label: 'PBC 标识', component: 'input', span: 24, extra: '用于仓库组与命名空间,例如 heating-triage。', rules: [{ required: true, message: '请填写标识' }] },
|
|
24
|
-
{ path: 'prefix', label: '应用标识前缀', component: 'input', span: 24, extra: '与服务标识组合形成每个服务的 Dapr appId。', rules: [{ required: true, message: '请填写前缀' }] },
|
|
25
|
-
{ path: 'domain', label: '应用域名', component: 'input', span: 24, extra: '本版仅展示路由规划,不创建真实域名或证书。', rules: [{ required: true, message: '请填写域名' }] },
|
|
26
|
-
] : [];
|
|
27
|
-
}, { immediate: true });
|
|
28
|
-
const value = computed(() => ({ ...draft.value, ...form.formData, services: services.value, step: step.value }));
|
|
29
|
-
const included = computed(() => services.value.filter(s => !s.isDeleted));
|
|
30
|
-
async function next() { try {
|
|
31
|
-
await form.formRef.value?.validate();
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
return;
|
|
35
|
-
} try {
|
|
36
|
-
validateDraft(value.value, store.items, step.value);
|
|
37
|
-
error.value = '';
|
|
38
|
-
step.value++;
|
|
39
|
-
}
|
|
40
|
-
catch (e) {
|
|
41
|
-
error.value = e.message;
|
|
42
|
-
} }
|
|
43
|
-
function saveExit() { try {
|
|
44
|
-
draft.value = store.saveDraft(value.value);
|
|
45
|
-
emit('close');
|
|
46
|
-
}
|
|
47
|
-
catch (e) {
|
|
48
|
-
error.value = e.message;
|
|
49
|
-
} }
|
|
50
|
-
function close() { confirmAction({ title: '保存向导后退出?', content: '保留字段和服务拆分方案,下次可继续。本操作不创建工程。', okText: '保存并退出', cancelText: '继续编辑', onOk: saveExit }); }
|
|
51
|
-
async function create() { try {
|
|
52
|
-
submitting.value = true;
|
|
53
|
-
error.value = '';
|
|
54
|
-
validateDraft(value.value, store.items);
|
|
55
|
-
const operation = store.create(props.intentId, value.value, binding);
|
|
56
|
-
if (store.job(props.intentId))
|
|
57
|
-
emit('close');
|
|
58
|
-
await operation;
|
|
59
|
-
}
|
|
60
|
-
catch (e) {
|
|
61
|
-
error.value = e.message;
|
|
62
|
-
}
|
|
63
|
-
finally {
|
|
64
|
-
submitting.value = false;
|
|
65
|
-
} }
|
|
66
|
-
return { computed, ref, watch, Alert, Button, Drawer, Space, Steps, ProForm, useForm, usePbcs, useSession, clone, currentVersion, useSpecs, validateDraft, templates, ServiceList, confirmAction, props, emit, store, session, error, submitting, draft, step, services, allowed, specSnapshot, specVersion, binding, form, value, included, next, saveExit, close, create };
|
|
67
|
-
} });
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.html
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!-- 来源:src/pbc/PbcWorkspace.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
|
|
2
|
-
<template data-component="Result" data-if="(!pbc)" status="403" title="PBC 工作区不存在或无权访问"><template data-slot="extra"><template data-component="Button" data-on-click="(router.push('/pbcs'))">返回 PBC 列表</template></template></template><template data-else=""><div class="page-heading"><div><template data-component="Button" type="link" class="agent-back" data-on-click="(router.push('/pbcs/' + id))">← 返回 PBC 概览</template><h1>{{ (pbc.name) }} · 交付工作区</h1><p>从已归属的需求,查看每次交付的阶段、问题与版本产物。</p></div><template data-component="Space" wrap=""><template data-component="Button" data-on-click="(router.push('/pbcs/' + id + '?tab=services'))">服务管理</template><template data-component="Button" type="primary" data-bind-disabled="(!sources.length || stateOf(pbc) !== 'active')" data-on-click="(router.push('/tasks/new?intent=' + sources[0].id))">发起交付</template></template></div><div class="task-metrics"><article><span>可见需求</span><strong>{{ (jobs.length) }}</strong></article><article><span>可见交付任务</span><strong>{{ (deliveries.length) }}</strong></article><article><span>等待或需处理</span><strong>{{ (deliveries.filter(t => !!currentReview(t) || ['failed', 'waiting', 'manual', 'paused'].includes(t.status)).length) }}</strong></article><article><span>待发布处理</span><strong>{{ (deliveries.filter(t => t.status === 'ready' && !currentReview(t) && hasPendingRelease(t)).length) }}</strong></article></div><div class="pbc-chain" aria-label="交付产物链"><button data-on-click="(tab = 'demands')">需求与规格</button><span>→</span><button data-on-click="(tab = 'tasks')">交付任务与阶段</button><span>→</span><button data-bind-disabled="(!canArtifacts)" data-on-click="(tab = 'artifacts')">版本产物</button><span>→</span><button data-bind-disabled="(!canArtifacts)" data-on-click="(router.push('/reviews?pbc=' + id))">质量与评审</button><span>→</span><button data-bind-disabled="(!canArtifacts)" data-on-click="(router.push('/releases?pbc=' + id))">门禁与发布</button><span>→</span><button data-bind-disabled="(!session.can('operation:view', pbc.tenantId, id, 'production'))" data-on-click="(router.push('/operations?pbc=' + id))">运行验收与异常</button></div><template data-component="Tabs" data-model-active-key="(tab)" data-bind-items="([{ key: 'demands', label: '需求与规格' }, { key: 'tasks', label: '交付任务' }, { key: 'artifacts', label: '版本产物', disabled: !canArtifacts }])"></template><template data-if="(tab === 'demands')"><template data-component="ManagementTable" data-bind-key="(id + 'demands')" page-key="关联需求" data-bind-rows="(sourceRows)" readonly="" context-label="来源版本" data-bind-more="(sourceMore)" data-on-action="(sourceAction)"></template><p data-if="(!jobs.length)" class="muted pbc-list-note">暂无可查看的关联需求。需求与规格权限分别由权限管理配置;新增需求先在意图工作台确认规格并归属本 PBC。</p></template><template data-if="(tab === 'tasks')"><template data-component="ManagementTable" data-bind-key="(id + 'tasks')" page-key="工作区任务" data-bind-rows="(taskRows)" readonly="" context-label="当前阶段" data-bind-more="(taskMore)" primary="进度" data-on-action="(taskAction)"></template><p class="muted pbc-list-note">此处聚合已有任务。进入任务详情可处理暂停、返工或草稿;不会另建一份交付记录。</p></template><template data-if="(tab === 'artifacts')"><template data-component="Result" data-if="(!canArtifacts)" status="403" title="没有查看产物的权限"></template><template data-else=""><div class="pbc-artifact-heading"><div><h2>按交付任务查看产物</h2><p class="muted">每份产物保留版本、生成阶段与来源引用。</p></div><template data-component="Select" data-model-value="(selected)" aria-label="产物所属交付任务" data-bind-options="(artifactTasks.map(t => ({ value: t.id, label: t.name })))" placeholder="选择交付任务"></template></div><div data-if="(chosen)" class="task-artifact-grid"><article data-each="a in (chosen.artifacts)" data-bind-key="(a.id)" class="task-artifact-card"><div><span class="task-file-icon">{{ (a.kind.toUpperCase().slice(0, 3)) }}</span><template data-component="ListMore" data-bind-name="(a.name)" data-bind-items="([{ key: 'view', label: '查看当前版本' }, { key: 'versions', label: '版本与差异' }])" data-on-action="(key => router.push('/tasks/' + chosen.id + '/artifacts/' + a.id + (key === 'versions' ? '?compare=1' : '')))"></template></div><h3>{{ (a.name) }}</h3><template data-component="Tag">v{{ (a.versions.at(-1).number) }}</template><template data-component="Tag" data-if="(a.versions.at(-1).result === 'fail')" color="red">发现问题</template><p>{{ (formatDate(a.versions.at(-1).at)) }}<br>{{ (a.versions.at(-1).by) }} · {{ (a.versions.length) }} 个版本</p><template data-component="Button" type="link" data-on-click="(router.push('/tasks/' + chosen.id + '/artifacts/' + a.id + '?version=' + a.versions.at(-1).number))">查看版本内容 →</template></article></div><p data-else="" class="muted">暂无可见产物,先查看关联需求或继续交付任务。</p><template data-component="Alert" class="page-alert" type="info" show-icon="" title="产物内容与验证结果为交互演示样例。" description="设计、代码、测试与验证不代表真实 Agent 已执行;生产发布仍待后续人工授权。"></template></template></template></template>
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { computed, ref, watch } from '../../runtime/state.js';
|
|
2
|
-
import { useRoute, useRouter } from "../../runtime/router.js";
|
|
3
|
-
import { Alert, Button, Result, Select, Space, Tabs, Tag } from "../../runtime/widgets.js";
|
|
4
|
-
import { usePbcManagement } from "./managementStore.js";
|
|
5
|
-
import { actionableReview, canReadReview, reviewStatus, stateLabels } from "../reviews/model.js";
|
|
6
|
-
import { taskReleaseLabel, hasPendingRelease } from "../releases/model.js";
|
|
7
|
-
import { useTasks } from "../tasks/store.js";
|
|
8
|
-
import { useSession } from "../shared/session.js";
|
|
9
|
-
import { stateOf } from "./management.js";
|
|
10
|
-
import { currentNode, statusLabels } from "../tasks/domain.js";
|
|
11
|
-
import { formatDate } from "../shared/policy.js";
|
|
12
|
-
import ManagementTable from "./ManagementTable.js";
|
|
13
|
-
import ListMore from "../shared/ListMore.js";
|
|
14
|
-
import { createComponent } from '../../runtime/dom.js';
|
|
15
|
-
export default createComponent({ name: 'PbcWorkspace', propKeys: [], template: new URL('./PbcWorkspace.html', import.meta.url).href, setup(__props, __emit) {
|
|
16
|
-
const route = useRoute(), router = useRouter(), store = usePbcManagement(), tasks = useTasks(), session = useSession(), id = computed(() => String(route.params.id)), pbc = computed(() => store.item(id.value)), tab = ref(String(route.query.tab || 'demands')), selected = ref('');
|
|
17
|
-
watch(() => route.query.tab, v => tab.value = String(v || 'demands'));
|
|
18
|
-
watch(tab, v => router.replace({ query: { ...route.query, tab: v } }));
|
|
19
|
-
const jobs = computed(() => store.jobsFor(id.value)), deliveries = computed(() => pbc.value ? tasks.records.filter(t => t.binding.pbcId === id.value && t.tenantId === pbc.value.tenantId) : []);
|
|
20
|
-
const sourceRows = computed(() => jobs.value.map(j => ({ ...j, id: j.intentId, name: j.spec.source.title, code: j.spec.source.code, status: j.status === 'done' ? '已归属' : j.status === 'unknown' ? '结果待核实' : '创建处理中', context: '规格 v' + j.specVersion + ' · 意图 v' + j.sourceVersion, owner: j.spec.confirmedBy || j.createdBy })));
|
|
21
|
-
const currentReview = (t) => canReadReview(session.actor, t) ? actionableReview(t) : undefined;
|
|
22
|
-
const taskRows = computed(() => deliveries.value.map(t => ({ ...t, context: currentNode(t)?.name || '尚未开始', status: taskReleaseLabel(t, session.actor) || (currentReview(t) ? stateLabels[reviewStatus(t, currentReview(t))] : statusLabels[t.status]) })));
|
|
23
|
-
const canArtifacts = computed(() => !!pbc.value && session.can('artifact:view', pbc.value.tenantId, id.value)), artifactTasks = computed(() => canArtifacts.value ? deliveries.value.filter(t => t.artifacts.length) : []);
|
|
24
|
-
watch(artifactTasks, ts => { if (!ts.some(t => t.id === selected.value))
|
|
25
|
-
selected.value = ts.find(t => t.id === 'task-example-1')?.id || ts[0]?.id || ''; }, { immediate: true });
|
|
26
|
-
const chosen = computed(() => artifactTasks.value.find(t => t.id === selected.value)), sources = computed(() => tasks.sources.filter(s => s.job?.pbc.id === id.value && !s.reason));
|
|
27
|
-
function sourceMore(r) { return [{ key: 'detail', label: '查看需求规格' }, { key: 'intent', label: '查看来源意图' }, { key: 'result', label: '查看归属/创建结果' }, { key: 'launch', label: '发起交付', disabled: !sources.value.some(s => s.id === r.id) }]; }
|
|
28
|
-
function sourceAction(key, r) { router.push(key === 'launch' ? '/tasks/new?intent=' + r.id : '/intents/' + r.id + (key === 'intent' ? '' : key === 'result' ? '/pbc' : '/spec')); }
|
|
29
|
-
function taskMore(r) { const t = deliveries.value.find(t => t.id === r.id); return [{ key: 'operations', label: '运行验收与异常', disabled: !session.can('operation:view', t.tenantId, id.value, 'production') }, { key: 'release', label: '门禁与发布记录', disabled: !canArtifacts.value }, { key: 'review', label: '质量与评审记录', disabled: !canArtifacts.value }, { key: 'detail', label: '查看阶段进度' }, { key: 'artifacts', label: '查看任务产物', disabled: !canArtifacts.value }, { key: 'edit', label: '编辑交付草稿', disabled: t.status !== 'draft' || !session.can('task:edit', t.tenantId, id.value) }]; }
|
|
30
|
-
function taskAction(key, r) { if (key === 'operations') {
|
|
31
|
-
router.push('/operations?task=' + r.id);
|
|
32
|
-
return;
|
|
33
|
-
} if (key === 'release') {
|
|
34
|
-
router.push('/releases?task=' + r.id);
|
|
35
|
-
return;
|
|
36
|
-
} if (key === 'review') {
|
|
37
|
-
router.push('/reviews?task=' + r.id);
|
|
38
|
-
return;
|
|
39
|
-
} router.push('/tasks/' + r.id + (key === 'edit' ? '/edit' : key === 'artifacts' ? '?tab=artifacts' : '')); }
|
|
40
|
-
return { computed, ref, watch, useRoute, useRouter, Alert, Button, Result, Select, Space, Tabs, Tag, usePbcManagement, actionableReview, canReadReview, reviewStatus, stateLabels, taskReleaseLabel, hasPendingRelease, useTasks, useSession, stateOf, currentNode, statusLabels, formatDate, ManagementTable, ListMore, route, router, store, tasks, session, id, pbc, tab, selected, jobs, deliveries, sourceRows, currentReview, taskRows, canArtifacts, artifactTasks, chosen, sources, sourceMore, sourceAction, taskMore, taskAction };
|
|
41
|
-
} });
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.html
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!-- 来源:src/pbc/PbcsPage.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
|
|
2
|
-
<div class="page-heading"><div><h1>PBC 与项目</h1><p>管理业务系统与服务,从同一个工作区继续需求、研发交付和产物回看。</p></div><template data-component="Button" type="primary" data-bind-disabled="(!session.can('pbc:create'))" data-on-click="(create = true)">新建 PBC</template></div><div class="task-metrics"><article><span>可见 PBC</span><strong>{{ (store.records.length) }}</strong></article><article><span>使用中</span><strong>{{ (store.records.filter(p => stateOf(p) === 'active').length) }}</strong></article><article><span>已归档</span><strong>{{ (store.records.filter(p => stateOf(p) === 'archived').length) }}</strong></article><article><span>可见服务与方案</span><strong>{{ (store.records.reduce((n, p) => n + p.services.filter(s => !s.isDeleted).length, 0)) }}</strong></article></div><div class="pbc-list-context"><template data-component="Space" wrap=""><span>所属租户</span><template data-component="Select" data-model-value="(scope)" aria-label="PBC 租户筛选" data-bind-options="([{ value: 'all', label: '全部授权范围' }, ...tenants.filter(t => store.records.some(p => p.tenantId === t.value))])"></template></template><p class="muted">PBC 持续管理业务能力;交付工作区汇集其需求、任务与产物。</p></div><template data-component="Alert" data-if="(pbcs.notice)" show-icon="" type="warning" data-bind-title="(pbcs.notice)"></template><template data-component="ManagementTable" data-bind-key="(scope)" page-key="PBC" data-bind-rows="(rows)" context-label="EBC 业务能力" data-bind-more="(more)" data-bind-can-delete="(session.can('pbc:delete'))" data-bind-scene="(pbcs.scene)" data-on-action="(action)" data-on-remove="(targets = $event)" data-on-refresh="(pbcs.scene = 'normal')"></template><p class="muted pbc-list-note">已有工程或存在引用的 PBC 保留记录。仅已归档、无工程且无服务/引用的规划记录允许删除。</p><template data-component="PbcEditor" data-if="(edit)" data-bind-record="(edit)" data-on-close="(edit = undefined)" data-on-saved="(saved)"></template><template data-component="PbcLifecycle" data-if="(lifecycle)" data-bind-record="(lifecycle)" data-on-close="(lifecycle = undefined)" data-on-saved="(saved)"></template><template data-component="PbcCreateEntry" data-if="(create)" data-bind-open="(create)" data-on-close="(create = false)"></template><template data-component="ListDeleteDialog" data-if="(targets.length)" data-model-targets="(targets)" label="PBC" data-bind-check="(store.checkRemove)" data-bind-submit="(store.removeMany)" data-on-close="(targets = [])" data-on-deleted="(targets = [])"></template>
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { computed, ref } from '../../runtime/state.js';
|
|
2
|
-
import { useRouter } from "../../runtime/router.js";
|
|
3
|
-
import { Alert, Button, Select, Space, message } from "../../runtime/widgets.js";
|
|
4
|
-
import { usePbcManagement } from "./managementStore.js";
|
|
5
|
-
import { usePbcs } from "./store.js";
|
|
6
|
-
import { useSession } from "../shared/session.js";
|
|
7
|
-
import { tenants } from "../shared/policy.js";
|
|
8
|
-
import { stateLabel, stateOf } from "./management.js";
|
|
9
|
-
import ManagementTable from "./ManagementTable.js";
|
|
10
|
-
import PbcEditor from "./PbcEditor.js";
|
|
11
|
-
import PbcLifecycle from "./PbcLifecycle.js";
|
|
12
|
-
import PbcCreateEntry from "./PbcCreateEntry.js";
|
|
13
|
-
import ListDeleteDialog from "../shared/ListDeleteDialog.js";
|
|
14
|
-
import { createComponent } from '../../runtime/dom.js';
|
|
15
|
-
export default createComponent({ name: 'PbcsPage', propKeys: [], template: new URL('./PbcsPage.html', import.meta.url).href, setup(__props, __emit) {
|
|
16
|
-
const store = usePbcManagement(), pbcs = usePbcs(), session = useSession(), router = useRouter(), scope = ref('all'), edit = ref(), lifecycle = ref(), create = ref(false), targets = ref([]);
|
|
17
|
-
const rows = computed(() => store.records.filter(p => scope.value === 'all' || p.tenantId === scope.value).map(p => ({ ...p, code: p.slug, status: stateLabel(p), context: p.ebc })));
|
|
18
|
-
const can = (action, r) => session.can(action, r.tenantId, r.id);
|
|
19
|
-
function more(r) { return [{ key: 'workspace', label: '进入交付工作区' }, { key: 'edit', label: '编辑资料', disabled: !can('pbc:edit', r) || r.status === '已归档' }, { key: 'lifecycle', label: r.status === '已归档' ? '恢复使用' : '归档 PBC', disabled: !can('pbc:archive', r) }, { key: 'audit', label: '操作记录', disabled: !can('pbc:audit', r) }, { key: 'delete', label: '删除 PBC', danger: true, disabled: !can('pbc:delete', r) }]; }
|
|
20
|
-
function action(key, r) { const p = store.item(r.id); if (!p)
|
|
21
|
-
return; if (key === 'edit')
|
|
22
|
-
edit.value = p;
|
|
23
|
-
else if (key === 'lifecycle')
|
|
24
|
-
lifecycle.value = p;
|
|
25
|
-
else if (key === 'delete')
|
|
26
|
-
targets.value = [r];
|
|
27
|
-
else
|
|
28
|
-
router.push('/pbcs/' + r.id + (key === 'workspace' ? '/workspace' : key === 'audit' ? '?tab=records' : '')); }
|
|
29
|
-
function saved() { edit.value = undefined; lifecycle.value = undefined; message.success('PBC 资料已保存'); }
|
|
30
|
-
return { computed, ref, useRouter, Alert, Button, Select, Space, message, usePbcManagement, usePbcs, useSession, tenants, stateLabel, stateOf, ManagementTable, PbcEditor, PbcLifecycle, PbcCreateEntry, ListDeleteDialog, store, pbcs, session, router, scope, edit, lifecycle, create, targets, rows, can, more, action, saved };
|
|
31
|
-
} });
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!-- 来源:src/pbc/ServiceEditor.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
|
|
2
|
-
<template data-component="Drawer" data-bind-open="(true)" data-bind-title="(readonly ? '服务详情' : service ? '编辑服务资料' : '新增服务方案')" data-bind-size="(720)" data-bind-mask="({ closable: false })" data-on-close="(close)"><template data-component="Alert" type="info" show-icon="" data-bind-title="(service?.registered ? '已登记工程 · 演示信息' : '服务方案草稿 · 尚未建工程')" data-bind-description="(service?.registered ? '服务标识、模板和来源保持固定;运行健康与部署版本尚未接入。' : '保存方案后,还需核对需求与契约,通过增量交付流程创建工程。此处不会创建仓库或上线。')" class="page-alert"></template><template data-component="Alert" data-if="(error)" type="error" show-icon="" data-bind-title="(error)" class="page-alert"></template><template data-component="Form" layout="vertical" data-bind-disabled="(!allowed)"><template data-component="FormItem" label="服务名称" required=""><template data-component="Input" data-model-value="(data.title)" aria-label="服务名称" data-bind-maxlength="(60)"></template></template><template data-component="FormItem" label="服务标识" required=""><template data-component="Input" data-model-value="(data.name)" aria-label="服务标识" data-bind-maxlength="(35)" data-bind-disabled="(!allowed || !!service?.registered)"></template></template><template data-component="FormItem" label="工程模板" required=""><template data-component="Select" data-model-value="(data.template)" aria-label="服务工程模板" data-bind-options="(templates)" data-bind-disabled="(!allowed || !!service?.registered)"></template></template><template data-component="FormItem" label="职责与边界" required=""><template data-component="Input.TextArea" data-model-value="(data.purpose)" aria-label="服务职责" data-bind-rows="(3)" data-bind-maxlength="(500)"></template></template><template data-component="FormItem" label="需求依据"><template data-component="Select" data-model-value="(data.sourceIntentId)" aria-label="服务需求依据" data-bind-options="(options)" data-bind-disabled="(!allowed || !!service?.registered)"></template></template><template data-component="FormItem" data-if="(!readonly)" label="变更原因" required=""><template data-component="Input.TextArea" data-model-value="(reason)" aria-label="服务变更原因" data-bind-rows="(2)" data-bind-maxlength="(500)"></template></template></template><p data-if="(!data.sourceIntentId)" class="muted">尚未关联需求,不能据此进入正式扩服务交付。</p><p data-if="(service)" class="muted">记录版本 {{ (service.recordVersion) }} · {{ (service.isDeleted ? '已删除' : '未删除') }}</p><template data-component="RecordMetadata" data-if="(service)" data-bind-record="(service)"></template><template data-slot="footer"><template data-component="Space"><template data-component="Button" data-on-click="(close)">{{ (readonly ? '关闭' : '取消') }}</template><template data-component="Button" data-if="(!readonly)" type="primary" data-bind-disabled="(!allowed)" data-on-click="(save)">保存服务方案</template></template></template></template>
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { computed, reactive, ref } from '../../runtime/state.js';
|
|
2
|
-
import { Alert, Button, Drawer, Form, FormItem, Input, Select, Space } from "../../runtime/widgets.js";
|
|
3
|
-
import { usePbcManagement } from "./managementStore.js";
|
|
4
|
-
import { useSession } from "../shared/session.js";
|
|
5
|
-
import { templates } from "./domain.js";
|
|
6
|
-
import { confirmAction } from "../shell/confirmation.js";
|
|
7
|
-
import RecordMetadata from "../shared/RecordMetadata.js";
|
|
8
|
-
import { createComponent } from '../../runtime/dom.js';
|
|
9
|
-
export default createComponent({ name: 'ServiceEditor', propKeys: ["pbc", "service", "readonly"], template: new URL('./ServiceEditor.html', import.meta.url).href, setup(__props, __emit) {
|
|
10
|
-
const props = __props, emit = __emit, store = usePbcManagement(), session = useSession(), version = props.pbc.recordVersion;
|
|
11
|
-
const data = reactive({ name: props.service?.name || '', title: props.service?.title || '', template: props.service?.template || 'java', purpose: props.service?.purpose || '', sourceIntentId: props.service?.sourceIntentId || '' }), initial = JSON.stringify(data), reason = ref(''), error = ref('');
|
|
12
|
-
const allowed = computed(() => !props.readonly && session.can('pbc:service', props.pbc.tenantId, props.pbc.id));
|
|
13
|
-
const options = computed(() => [{ value: '', label: '待关联需求' }, ...store.jobsFor(props.pbc.id).filter(j => j.status === 'done').map(j => ({ value: j.intentId, label: j.spec.source.title + ' · 规格 v' + j.specVersion }))]);
|
|
14
|
-
function close() { if (!props.readonly && (JSON.stringify(data) !== initial || reason.value))
|
|
15
|
-
confirmAction({ title: '放弃未保存的服务方案?', content: '已保存的服务记录保持不变。', okText: '放弃修改', cancelText: '继续编辑', onOk: () => emit('close') });
|
|
16
|
-
else
|
|
17
|
-
emit('close'); }
|
|
18
|
-
function save() { try {
|
|
19
|
-
store.serviceSave(props.pbc.id, version, props.service?.id, data, reason.value);
|
|
20
|
-
emit('saved');
|
|
21
|
-
}
|
|
22
|
-
catch (e) {
|
|
23
|
-
error.value = e.message;
|
|
24
|
-
} }
|
|
25
|
-
return { computed, reactive, ref, Alert, Button, Drawer, Form, FormItem, Input, Select, Space, usePbcManagement, useSession, templates, confirmAction, RecordMetadata, props, emit, store, session, version, data, initial, reason, error, allowed, options, close, save };
|
|
26
|
-
} });
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.html
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
<!-- 来源:src/pbc/ServiceList.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
|
|
2
|
-
<section aria-label="服务拆分方案" class="service-list"><div class="section-heading"><h2>服务拆分方案</h2><template data-component="Space" wrap=""><template data-component="ColumnSettings" data-bind-preferences="(prefs)"></template><template data-component="Button" data-on-click="(selection.clear())">刷新</template><template data-component="Button" data-bind-disabled="(!editable)" data-on-click="(add)">新增服务</template></template></div><p class="muted">模板版本固定为 v1.0(模拟),提交前可调整。工程创建后不在此删除服务。</p><div class="pbc-picker-tools"><template data-component="Space" wrap=""><template data-component="Input" data-model-value="(keyword)" aria-label="查找服务方案" placeholder="搜索服务名称或标识"></template><template data-component="Button" data-on-click="(keyword = '')">重置筛选</template></template><template data-component="Button" data-on-click="(descending = !descending)">服务标识{{ (descending ? '降序' : '升序') }}</template></div><template data-component="ListBatchBar" data-bind-count="(selection.selected.value.length)" data-bind-allowed="(editable)" data-on-remove="(remove(selection.keys.value))" data-on-clear="(selection.clear)"></template><template data-component="ProTable" data-bind-table="(table)" data-bind-search="(async () => { })" data-bind-control="(false)" data-bind-table-container="(false)" row-key="id" data-bind-row-selection="(selection.rowSelection.value)" data-bind-scroll="({ x: 'max-content' })" data-bind-pagination="({ showTotal: (n) => '共 ' + n + ' 项', showSizeChanger: true, pageSizeOptions: [5, 10, 20] })"></template><template data-component="Drawer" data-bind-open="(editor)" data-bind-title="(selectedId ? '编辑服务' : '新增服务')" data-bind-size="(520)" data-bind-mask="({ closable: false })" data-on-close="(editor = false)"><template data-component="Alert" data-if="(error)" type="error" data-bind-title="(error)" class="page-alert"></template><template data-component="ProForm" data-bind-form="(form)" name="pbc-service" layout="vertical" data-bind-disabled="(!editable)"></template><template data-slot="footer"><template data-component="Space"><template data-component="Button" data-on-click="(editor = false)">取消</template><template data-component="Button" type="primary" data-bind-disabled="(!editable)" data-on-click="(save)">保存服务</template></template></template></template><template data-component="Drawer" data-bind-open="(!!detail)" title="服务草稿详情" data-bind-size="(600)" data-on-close="(detail = undefined)"><template data-if="(detail)"><h2>{{ (detail.title) }}</h2><p>{{ (detail.name) }} · {{ (templates.find(t => t.value === detail?.template)?.label) }} · v1.0(模拟)</p><template data-component="RecordMetadata" data-bind-record="(detail)"></template></template></template></section>
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { computed, ref, watch } from '../../runtime/state.js';
|
|
2
|
-
import { h } from '../../runtime/dom.js';
|
|
3
|
-
import { Alert, Button, Drawer, Space, Input } from "../../runtime/widgets.js";
|
|
4
|
-
import { ProForm, ProTable, useForm, useTable } from "../../runtime/widgets.js";
|
|
5
|
-
import { useSession } from "../shared/session.js";
|
|
6
|
-
import { formatDate, metadata } from "../shared/policy.js";
|
|
7
|
-
import { useColumns } from "../shared/columns.js";
|
|
8
|
-
import { useListSelection } from "../shared/listSelection.js";
|
|
9
|
-
import ListMore from "../shared/ListMore.js";
|
|
10
|
-
import ListBatchBar from "../shared/ListBatchBar.js";
|
|
11
|
-
import ColumnSettings from "../shared/ColumnSettings.js";
|
|
12
|
-
import RecordMetadata from "../shared/RecordMetadata.js";
|
|
13
|
-
import { confirmAction } from "../shell/confirmation.js";
|
|
14
|
-
import { templates } from "./domain.js";
|
|
15
|
-
import { createComponent } from '../../runtime/dom.js';
|
|
16
|
-
export default createComponent({ name: 'ServiceList', propKeys: ["services", "tenantId", "readonly"], template: new URL('./ServiceList.html', import.meta.url).href, setup(__props, __emit) {
|
|
17
|
-
const props = __props, emit = __emit, session = useSession();
|
|
18
|
-
const editable = computed(() => !props.readonly && session.can('pbc:create', props.tenantId)), error = ref(''), editor = ref(false), selectedId = ref(''), detail = ref(), keyword = ref(''), descending = ref(false);
|
|
19
|
-
const form = useForm({ title: '', name: '', template: 'java' }, [
|
|
20
|
-
{ path: 'title', label: '服务名称', component: 'input', span: 24, rules: [{ required: true, whitespace: true, message: '请填写服务名称' }] },
|
|
21
|
-
{ path: 'name', label: '服务标识', component: 'input', span: 24, placeholder: '例如 workorder', rules: [{ required: true, pattern: /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, message: '以小写字母开头,使用小写字母、数字和短横线' }] },
|
|
22
|
-
{ path: 'template', label: '工程模板', component: 'select', span: 24, options: templates, rules: [{ required: true, message: '请选择模板' }] },
|
|
23
|
-
]);
|
|
24
|
-
const prefs = useColumns('pbc-services', [{ key: 'title', label: '服务名称', locked: true }, { key: 'name', label: '服务标识', defaultVisible: true }, { key: 'template', label: '模板版本', defaultVisible: true }, { key: 'createdBy', label: '创建人', defaultVisible: true }, { key: 'createdAt', label: '创建时间', defaultVisible: true }, { key: 'createdDept', label: '创建部门' }, { key: 'updatedBy', label: '修改人' }, { key: 'updatedAt', label: '修改时间' }, { key: 'actions', label: '操作', locked: true }]);
|
|
25
|
-
function more(key, s) { if (key === 'detail') {
|
|
26
|
-
detail.value = s;
|
|
27
|
-
return;
|
|
28
|
-
} if (key === 'edit') {
|
|
29
|
-
selectedId.value = s.id;
|
|
30
|
-
form.setFormData({ title: s.title, name: s.name, template: s.template });
|
|
31
|
-
editor.value = true;
|
|
32
|
-
return;
|
|
33
|
-
} remove([s.id]); }
|
|
34
|
-
const table = useTable({ pageParam: { current: 1, pageSize: 5, total: 0 }, columns: [
|
|
35
|
-
{ key: 'title', title: '服务名称', dataIndex: 'title', width: 170 }, { key: 'name', title: '服务标识', dataIndex: 'name', width: 160 },
|
|
36
|
-
{ key: 'template', title: '工程模板', width: 240, render: (_, s) => (templates.find(t => t.value === s.template)?.label || s.template) + ' · v1.0(模拟)' },
|
|
37
|
-
{ key: 'createdBy', title: '创建人', dataIndex: 'createdBy', width: 100 }, { key: 'createdAt', title: '创建时间', dataIndex: 'createdAt', width: 180, render: (v) => formatDate(String(v)) },
|
|
38
|
-
{ key: 'createdDept', title: '创建部门', dataIndex: 'createdDept', width: 140 }, { key: 'updatedBy', title: '修改人', dataIndex: 'updatedBy', width: 100 }, { key: 'updatedAt', title: '修改时间', dataIndex: 'updatedAt', width: 180, render: (v) => formatDate(String(v)) },
|
|
39
|
-
{ key: 'actions', title: '操作', width: 160, render: (_, record) => { const s = record; return h('div', { class: 'row-actions' }, [h(Button, { type: 'link', disabled: !editable.value, onClick: () => more('edit', s) }, () => '编辑'), h(ListMore, { name: s.title, items: [{ key: 'detail', label: '查看详情' }, { key: 'delete', label: '删除草稿服务', danger: true, disabled: !editable.value }], onAction: (key) => more(key, s) })]); } },
|
|
40
|
-
] });
|
|
41
|
-
const columns = new Map(table.columns.value.map(c => [c.key, c]));
|
|
42
|
-
watch(prefs.keys, keys => table.columns.value = keys.map(k => columns.get(k)).filter(Boolean), { immediate: true });
|
|
43
|
-
const visible = computed(() => props.services.filter(s => !s.isDeleted && (s.title + s.name).includes(keyword.value.trim())).sort((a, b) => descending.value ? b.name.localeCompare(a.name) : a.name.localeCompare(b.name)));
|
|
44
|
-
watch([visible, () => table.pageParam.current, () => table.pageParam.pageSize], () => { const size = table.pageParam.pageSize || 5, max = Math.max(1, Math.ceil(visible.value.length / size)); if ((table.pageParam.current || 1) > max)
|
|
45
|
-
table.setPageParam({ current: max }); const start = ((table.pageParam.current || 1) - 1) * size; table.dataSource.value = visible.value.slice(start, start + size); table.setPageParam({ total: visible.value.length }); }, { immediate: true });
|
|
46
|
-
const selection = useListSelection(table.dataSource, computed(() => JSON.stringify([session.key, table.pageParam.current, table.pageParam.pageSize, keyword.value, descending.value])), editable, s => s.title);
|
|
47
|
-
function add() { selectedId.value = ''; form.setFormData({ title: '', name: '', template: 'java' }); error.value = ''; editor.value = true; }
|
|
48
|
-
async function save() {
|
|
49
|
-
try {
|
|
50
|
-
await form.formRef.value?.validate();
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
if (!editable.value)
|
|
56
|
-
return;
|
|
57
|
-
if (form.formData.name.length > 35 || visible.value.some(s => s.id !== selectedId.value && s.name === form.formData.name)) {
|
|
58
|
-
error.value = '服务标识重复或超过 35 个字符。';
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
const at = new Date().toISOString(), old = props.services.find(s => s.id === selectedId.value), next = { ...(old || metadata(session.actor, at, props.tenantId)), ...form.formData, templateVersion: '1.0', id: old?.id || crypto.randomUUID(), recordVersion: (old?.recordVersion || 0) + 1, updatedAt: at, updatedBy: session.actor.name };
|
|
62
|
-
emit('change', old ? props.services.map(s => s.id === old.id ? next : s) : [...props.services, next]);
|
|
63
|
-
editor.value = false;
|
|
64
|
-
error.value = '';
|
|
65
|
-
}
|
|
66
|
-
function remove(ids) { if (!editable.value || !ids.length)
|
|
67
|
-
return; const rows = visible.value.filter(s => ids.includes(s.id)); confirmAction({ title: '删除 ' + rows.length + ' 个服务草稿?', content: rows.map(s => s.title + ' (' + s.name + ')').join('、') + '。仅修改本次服务方案,保存向导后持久保留。', okText: '确认删除', cancelText: '取消', onOk: () => { if (!editable.value)
|
|
68
|
-
throw Error('权限已变化'); const at = new Date().toISOString(); emit('change', props.services.map(s => ids.includes(s.id) ? { ...s, isDeleted: true, recordVersion: s.recordVersion + 1, updatedBy: session.actor.name, updatedAt: at } : s)); selection.clear(); } }); }
|
|
69
|
-
return { computed, ref, watch, h, Alert, Button, Drawer, Space, Input, ProForm, ProTable, useForm, useTable, useSession, formatDate, metadata, useColumns, useListSelection, ListMore, ListBatchBar, ColumnSettings, RecordMetadata, confirmAction, templates, props, emit, session, editable, error, editor, selectedId, detail, keyword, descending, form, prefs, more, table, columns, visible, selection, add, save, remove };
|
|
70
|
-
} });
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { actors, metadata } from "../shared/policy.js";
|
|
2
|
-
export function seedPbcs() {
|
|
3
|
-
return ['供热工单', '客户服务', '能源台账', '知识助手', '运营报表', '收费管理', '巡检管理'].map((name, n) => ({ ...metadata(actors[0], new Date(Date.UTC(2026, 8, 8, 9, 10 - n)).toISOString(), n === 6 ? 'north' : 'heating'), id: 'pbc-' + n, name, resourceKey: name, ebc: n < 2 ? '客户服务与工单履约' : '业务运营与支撑', owner: n < 2 ? '林晓' : '周晨', slug: n === 0 ? 'heating-workorder' : 'business-' + n, domain: 'business-' + n + '.example.test', state: n === 4 || n === 5 ? 'archived' : 'active', provisioned: n < 4 || n === 6, description: n === 0 ? '承载供热报修、智能分诊与主管确认派单。设备控制不在本 PBC 演示范围内。' : n === 4 || n === 5 ? '未建立工程的规划样例,可用于归档、恢复与删除评审。' : '预置 PBC 资料,用于交互评审。', services: n === 0 ? [
|
|
4
|
-
{ name: 'workorder', title: '工单管理服务', template: 'java', purpose: '管理报修与已确认派单' },
|
|
5
|
-
{ name: 'triage-agent', title: '智能分诊 Agent', template: 'agent', purpose: '查询授权资料,形成分类与班组建议' },
|
|
6
|
-
{ name: 'web', title: '供热业务工作台', template: 'web', purpose: '报修、主管确认与工单查询入口' },
|
|
7
|
-
].map(s => ({ ...s, ...metadata(actors[0], '2026-09-08T09:00:00Z', 'heating'), id: 'heating-' + s.name, templateVersion: '1.0', registered: true, sourceIntentId: 'seed-spec-heating' })) : [] }));
|
|
8
|
-
}
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/domain.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { can, metadata } from "../shared/policy.js";
|
|
2
|
-
import { currentVersion, sourceOf, clone } from "../specs/domain.js";
|
|
3
|
-
export const templates = [{ value: 'java', label: 'Java 服务 · Spring Boot' }, { value: 'agent', label: 'AI Agent · Python + Dapr' }, { value: 'web', label: '独立前端 · Vue 3' }];
|
|
4
|
-
export function assertBinding(i, s, binding) { const v = currentVersion(s); if (!binding || !v || v.number !== binding.specVersion || s.recordVersion !== binding.recordVersion || sourceOf(i).version !== binding.sourceVersion)
|
|
5
|
-
throw Error('复核期间意图或规格版本已变化,请重新打开归属页面核对。'); }
|
|
6
|
-
export const createSteps = ['创建 GitLab Group 与仓库', '生成工程骨架与文档', '配置 Kubernetes / Dapr', '登记 APISIX 路由', '登记 MaxKey 应用', '配置审批回调与产物引用'];
|
|
7
|
-
const slugPattern = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
8
|
-
export function validateDraft(d, catalog, step = 2) {
|
|
9
|
-
if (!d.name.trim() || !d.ebc.trim() || !d.owner.trim())
|
|
10
|
-
throw Error('请填写 PBC 名称、EBC 归属和负责人。');
|
|
11
|
-
const services = d.services.filter(s => !s.isDeleted);
|
|
12
|
-
if (!services.length)
|
|
13
|
-
throw Error('请至少保留一个服务。');
|
|
14
|
-
if (services.some(s => !slugPattern.test(s.name) || s.name.length > 35 || !s.title.trim() || s.templateVersion !== '1.0' || !templates.some(t => t.value === s.template)))
|
|
15
|
-
throw Error('服务须填写名称、有效标识和模板;标识使用小写字母、数字与短横线。');
|
|
16
|
-
if (new Set(services.map(s => s.name)).size !== services.length)
|
|
17
|
-
throw Error('服务标识不能重复。');
|
|
18
|
-
if (step < 1)
|
|
19
|
-
return;
|
|
20
|
-
if (!slugPattern.test(d.slug) || d.slug.length > 40 || !slugPattern.test(d.prefix) || d.prefix.length > 20)
|
|
21
|
-
throw Error('PBC 标识和应用前缀须以小写字母开头,仅含小写字母、数字和短横线;长度分别不超过 40 / 20。');
|
|
22
|
-
if (!/^(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z]{2,}$/i.test(d.domain) || d.domain.length > 253)
|
|
23
|
-
throw Error('请填写有效域名,例如 triage.example.test。');
|
|
24
|
-
if (catalog.some(p => !p.isDeleted && (p.slug === d.slug || p.domain.toLowerCase() === d.domain.toLowerCase())))
|
|
25
|
-
throw Error('PBC 标识或域名已被使用,请更换。');
|
|
26
|
-
const appIds = services.map(s => d.prefix + '-' + s.name);
|
|
27
|
-
if (appIds.some(id => id.length > 63))
|
|
28
|
-
throw Error('生成的应用标识超过 63 个字符,请缩短前缀或服务标识。');
|
|
29
|
-
if (catalog.some(p => p.services.some(s => !s.isDeleted && appIds.includes(s.id))))
|
|
30
|
-
throw Error('应用标识已被使用,请更换前缀。');
|
|
31
|
-
}
|
|
32
|
-
export function assertSource(i, s, actor, action) {
|
|
33
|
-
const v = currentVersion(s), source = sourceOf(i);
|
|
34
|
-
if (!can(actor, action, s.tenantId) || i.tenantId !== s.tenantId)
|
|
35
|
-
throw Error('没有此操作权限或超出授权租户范围。');
|
|
36
|
-
if (!v?.confirmedAt || v.source.version !== source.version || s.intentId !== i.id)
|
|
37
|
-
throw Error('请先确认与当前意图一致的规格版本。');
|
|
38
|
-
return v;
|
|
39
|
-
}
|
|
40
|
-
export function newDraft(i, actor, at) {
|
|
41
|
-
return { ...metadata(actor, at, i.tenantId), id: 'draft-' + i.id, intentId: i.id, name: '供热智能分诊', ebc: '客户服务与工单履约', owner: actor.name, slug: 'heating-triage', prefix: 'triage', domain: 'triage.example.test', step: 0, services: [
|
|
42
|
-
{ id: 'draft-service-1', name: 'workorder', title: '工单管理服务', template: 'java', templateVersion: '1.0', ...metadata(actor, at, i.tenantId) },
|
|
43
|
-
{ id: 'draft-service-2', name: 'triage-agent', title: '智能分诊 Agent', template: 'agent', templateVersion: '1.0', ...metadata(actor, at, i.tenantId) },
|
|
44
|
-
{ id: 'draft-service-3', name: 'console', title: '业务工作台', template: 'web', templateVersion: '1.0', ...metadata(actor, at, i.tenantId) },
|
|
45
|
-
] };
|
|
46
|
-
}
|
|
47
|
-
export function makeJob(i, s, actor, target, draft) {
|
|
48
|
-
const v = assertSource(i, s, actor, draft ? 'pbc:create' : 'pbc:link'), at = new Date().toISOString();
|
|
49
|
-
if (target.tenantId !== i.tenantId || !can(actor, 'pbc:view', target.tenantId, target.id) || (!draft && !can(actor, 'pbc:link', target.tenantId, target.id)))
|
|
50
|
-
throw Error('目标 PBC 不在当前意图租户或授权范围。');
|
|
51
|
-
return { ...metadata(actor, at, i.tenantId), id: crypto.randomUUID(), intentId: i.id, specVersion: v.number, sourceVersion: v.source.version, spec: clone(v), kind: draft ? 'create' : 'link', pbc: clone(target), draft: draft && clone(draft), status: 'running', steps: (draft ? createSteps : ['归档意图与规格,登记 PBC 关联']).map(name => ({ name, state: 'waiting', detail: '' })), events: [{ at, actor: actor.name, text: '提交 ' + (draft ? '创建' : '关联') + ';绑定意图 v' + v.source.version + ' / 规格 v' + v.number }] };
|
|
52
|
-
}
|
|
53
|
-
export function activeStep(job) { return job.steps.findIndex(s => s.state !== 'done'); }
|
|
54
|
-
export function queryReceipt(job) {
|
|
55
|
-
const next = clone(job), index = activeStep(next), step = next.steps[index];
|
|
56
|
-
if (!step || step.state !== 'unknown')
|
|
57
|
-
throw Error('当前没有结果待核实的步骤。');
|
|
58
|
-
step.state = step.receipt ? 'done' : 'waiting';
|
|
59
|
-
step.detail = step.receipt ? '已核实原操作已完成(模拟)' : '原操作尚未执行,可继续(模拟)';
|
|
60
|
-
next.status = next.steps.every(s => s.state === 'done') ? 'done' : 'paused';
|
|
61
|
-
return next;
|
|
62
|
-
}
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/management.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { metadata } from "../shared/policy.js";
|
|
2
|
-
import { templates } from "./domain.js";
|
|
3
|
-
export const stateOf = (p) => p.state || 'active';
|
|
4
|
-
export const stateLabel = (p) => stateOf(p) === 'archived' ? '已归档' : '使用中';
|
|
5
|
-
export function requireReason(reason) { if (!reason.trim() || reason.length > 500)
|
|
6
|
-
throw Error('请填写变更原因,最多 500 字。'); }
|
|
7
|
-
export function assertActive(p) { if (p.isDeleted || stateOf(p) === 'archived')
|
|
8
|
-
throw Error('PBC 已归档或不可用,请先恢复后操作。'); }
|
|
9
|
-
export function revisePbc(p, input, actor, at) {
|
|
10
|
-
assertActive(p);
|
|
11
|
-
if (!input.name.trim() || input.name.length > 60 || !input.ebc.trim() || input.ebc.length > 80 || !input.owner.trim() || input.owner.length > 60 || input.description.length > 1000)
|
|
12
|
-
throw Error('请填写名称、EBC 和负责人;名称/负责人最多 60 字、EBC 80 字、说明 1000 字。');
|
|
13
|
-
return { ...p, name: input.name.trim(), ebc: input.ebc.trim(), owner: input.owner.trim(), description: input.description.trim(), resourceKey: p.resourceKey || p.name, updatedBy: actor.name, updatedAt: at, recordVersion: p.recordVersion + 1 };
|
|
14
|
-
}
|
|
15
|
-
export function assertPbcRemovable(p, refs) {
|
|
16
|
-
if (stateOf(p) !== 'archived')
|
|
17
|
-
throw Error('请先归档,再核对删除条件。');
|
|
18
|
-
if (p.provisioned)
|
|
19
|
-
throw Error('已有工程资源,不能直接删除;需先完成正式退役流程。');
|
|
20
|
-
if (refs.length)
|
|
21
|
-
throw Error('存在关联需求、交付或资源引用,不能删除。');
|
|
22
|
-
if (p.services.some(s => !s.isDeleted))
|
|
23
|
-
throw Error('仍有服务或服务方案,不能删除。');
|
|
24
|
-
}
|
|
25
|
-
export function reviseService(p, old, input, actor, at) {
|
|
26
|
-
assertActive(p);
|
|
27
|
-
if (!/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(input.name) || input.name.length > 35 || !input.title.trim() || input.title.length > 60 || !templates.some(t => t.value === input.template) || !input.purpose.trim() || input.purpose.length > 500)
|
|
28
|
-
throw Error('请填写有效服务标识、名称、模板及职责说明;标识最多 35 字、名称 60 字、职责 500 字。');
|
|
29
|
-
if (p.services.some(s => !s.isDeleted && s.id !== old?.id && s.name === input.name))
|
|
30
|
-
throw Error('同一 PBC 下服务标识不能重复。');
|
|
31
|
-
if (old?.registered && (old.name !== input.name || old.template !== input.template || old.sourceIntentId !== input.sourceIntentId))
|
|
32
|
-
throw Error('已登记工程的服务标识、类型和来源不可修改。');
|
|
33
|
-
return { ...(old || { ...metadata(actor, at, p.tenantId), id: crypto.randomUUID(), templateVersion: '1.0', registered: false }), name: input.name, title: input.title.trim(), template: input.template, purpose: input.purpose.trim(), sourceIntentId: input.sourceIntentId, updatedBy: actor.name, updatedAt: at, recordVersion: old ? old.recordVersion + 1 : 1 };
|
|
34
|
-
}
|
|
35
|
-
export function assertServiceRemovable(p, s) { assertActive(p); if (s.registered)
|
|
36
|
-
throw Error('已登记工程的服务不可在此删除,需按正式退役流程处理。'); }
|